Miglioramenti nuovi campi
This commit is contained in:
parent
ca0bfcfba6
commit
93e1e1af1f
|
@ -81,12 +81,12 @@ if ($options['dir'] == 'entrata') {
|
|||
// Prezzo di vendita unitario
|
||||
echo '
|
||||
<div class="col-md-'.$width.'">
|
||||
{[ "type": "number", "label": "'.$label.'", "name": "prezzo_unitario", "value": "'.$result['prezzo_unitario'].'", "required": 1, "icon-after": "'.currency().'", "help": "'.($options['dir'] == 'entrata' && setting('Utilizza prezzi di vendita con IVA incorporata') ? tr('Importo con IVA incorporata') : '').'" ]}
|
||||
{[ "type": "number", "label": "'.$label.'", "name": "prezzo_unitario", "value": "'.$result['prezzo_unitario_corrente'].'", "required": 1, "icon-after": "'.currency().'", "help": "'.($options['dir'] == 'entrata' && setting('Utilizza prezzi di vendita con IVA incorporata') ? tr('Importo con IVA incorporata') : '').'" ]}
|
||||
</div>';
|
||||
|
||||
// Sconto unitario
|
||||
echo '
|
||||
<div class="col-md-'.$width.'">
|
||||
{[ "type": "number", "label": "'.tr('Sconto unitario').'", "name": "sconto", "value": "'.$result['sconto_unitario'].'", "icon-after": "choice|untprc|'.$result['tipo_sconto'].'", "help": "'.tr('Il valore positivo indica uno sconto. Per applicare un rincaro inserire un valore negativo.').'" ]}
|
||||
{[ "type": "number", "label": "'.tr('Sconto unitario').'", "name": "sconto", "value": "'.($result['sconto_percentuale'] ?: $result['sconto_unitario_corrente']).'", "icon-after": "choice|untprc|'.$result['tipo_sconto'].'", "help": "'.tr('Il valore positivo indica uno sconto. Per applicare una maggiorazione inserire un valore negativo.').'" ]}
|
||||
</div>
|
||||
</div>';
|
||||
|
|
|
@ -10,9 +10,21 @@ abstract class Row extends Description
|
|||
{
|
||||
protected $casts = [
|
||||
'qta' => 'float',
|
||||
'prezzo_unitario' => 'float',
|
||||
'prezzo_unitario_ivato' => 'float',
|
||||
'iva_unitaria' => 'float',
|
||||
'sconto_percentuale' => 'float',
|
||||
'sconto_unitario' => 'float',
|
||||
'sconto_iva' => 'float',
|
||||
'sconto_unitario_ivato' => 'float',
|
||||
//'qta_evasa' => 'float',
|
||||
];
|
||||
|
||||
protected $appends = [
|
||||
'prezzo_unitario_corrente',
|
||||
'sconto_unitario_corrente',
|
||||
];
|
||||
|
||||
public static function build(Document $document, $bypass = false)
|
||||
{
|
||||
return parent::build($document, true);
|
||||
|
@ -113,12 +125,17 @@ abstract class Row extends Description
|
|||
*/
|
||||
public function getScontoAttribute()
|
||||
{
|
||||
return calcola_sconto([
|
||||
'sconto' => $this->sconto_unitario,
|
||||
'prezzo' => $this->prezzo_unitario,
|
||||
'tipo' => $this->tipo_sconto,
|
||||
'qta' => $this->qta,
|
||||
]);
|
||||
return $this->qta * $this->sconto_unitario;
|
||||
}
|
||||
|
||||
/**
|
||||
* Restituisce il tipo di sconto della riga corrente.
|
||||
*
|
||||
* @return float
|
||||
*/
|
||||
public function getTipoScontoAttribute()
|
||||
{
|
||||
return $this->sconto_percentuale ? 'PRC' : 'UNT';
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -142,7 +159,7 @@ abstract class Row extends Description
|
|||
$percentuale_iva = floatval($this->aliquota->percentuale) / 100;
|
||||
|
||||
// Gestione IVA incorporata
|
||||
if ($this->parent->direzione == 'entrata' && setting('Utilizza prezzi di vendita con IVA incorporata')) {
|
||||
if ($this->incorporaIVA()) {
|
||||
$this->attributes['prezzo_unitario_ivato'] = $value;
|
||||
|
||||
$this->attributes['iva_unitaria'] = $value * $percentuale_iva / (1 + $percentuale_iva); // Calcolo IVA
|
||||
|
@ -155,6 +172,42 @@ abstract class Row extends Description
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Imposta il prezzo unitario corrente (unitario oppure unitario ivato a seconda dell'impostazione 'Utilizza prezzi di vendita con IVA incorporata') per la riga.
|
||||
*
|
||||
* @return float
|
||||
*/
|
||||
public function getPrezzoUnitarioCorrenteAttribute()
|
||||
{
|
||||
// Gestione IVA incorporata
|
||||
if ($this->incorporaIVA()) {
|
||||
return $this->prezzo_unitario_ivato;
|
||||
} else {
|
||||
return $this->prezzo_unitario;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Imposta lo sconto unitario corrente (unitario oppure unitario ivato a seconda dell'impostazione 'Utilizza prezzi di vendita con IVA incorporata') per la riga.
|
||||
*
|
||||
* @return float
|
||||
*/
|
||||
public function getScontoUnitarioCorrenteAttribute()
|
||||
{
|
||||
// Gestione IVA incorporata
|
||||
if ($this->incorporaIVA()) {
|
||||
return $this->sconto_unitario_ivato;
|
||||
} else {
|
||||
return $this->sconto_unitario;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Imposta lo sconto secondo le informazioni indicate per valore e tipologia (UNT o PRC).
|
||||
*
|
||||
* @param $value
|
||||
* @param $type
|
||||
*/
|
||||
public function setSconto($value, $type)
|
||||
{
|
||||
$percentuale_iva = floatval($this->aliquota->percentuale) / 100;
|
||||
|
@ -163,7 +216,7 @@ abstract class Row extends Description
|
|||
$this->attributes['sconto_percentuale'] = $value;
|
||||
|
||||
$sconto = calcola_sconto([
|
||||
'sconto' => $this->sconto_unitario,
|
||||
'sconto' => $value,
|
||||
'prezzo' => $this->prezzo_unitario,
|
||||
'tipo' => 'PRC',
|
||||
'qta' => 1,
|
||||
|
@ -174,7 +227,7 @@ abstract class Row extends Description
|
|||
}
|
||||
|
||||
// Gestione IVA incorporata
|
||||
if ($this->parent->direzione == 'entrata' && setting('Utilizza prezzi di vendita con IVA incorporata')) {
|
||||
if ($this->incorporaIVA()) {
|
||||
$this->attributes['sconto_unitario_ivato'] = $sconto;
|
||||
|
||||
$this->attributes['sconto_iva'] = $sconto * $percentuale_iva / (1 + $percentuale_iva); // Calcolo IVA
|
||||
|
@ -262,6 +315,7 @@ abstract class Row extends Description
|
|||
protected function fixSconto()
|
||||
{
|
||||
$this->attributes['sconto'] = $this->sconto;
|
||||
$this->attributes['tipo_sconto'] = $this->sconto_percentuale ? 'PRC' : 'UNT';
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -275,4 +329,9 @@ abstract class Row extends Description
|
|||
|
||||
parent::customAfterDataCopiaIn($original);
|
||||
}
|
||||
|
||||
protected function incorporaIVA()
|
||||
{
|
||||
return $this->parent->direzione == 'entrata' && setting('Utilizza prezzi di vendita con IVA incorporata');
|
||||
}
|
||||
}
|
||||
|
|
|
@ -268,7 +268,6 @@ function orderValue($table, $field, $id)
|
|||
/**
|
||||
* Visualizza le informazioni relative allo sconto presente su una riga.
|
||||
*
|
||||
* @param \Common\Components\Row $riga
|
||||
* @param bool $mostra_maggiorazione
|
||||
*
|
||||
* @return string|null
|
||||
|
|
|
@ -44,7 +44,7 @@ if (get('is_descrizione') !== null) {
|
|||
$listino = $dbo->fetchOne('SELECT prc_guadagno FROM an_anagrafiche INNER JOIN mg_listini ON an_anagrafiche.idlistino_vendite=mg_listini.id WHERE idanagrafica='.prepare($documento['idanagrafica']));
|
||||
|
||||
if (!empty($listino['prc_guadagno'])) {
|
||||
$result['sconto_unitario'] = $listino['prc_guadagno'];
|
||||
$result['sconto_percentuale'] = $listino['prc_guadagno'];
|
||||
$result['tipo_sconto'] = 'PRC';
|
||||
}
|
||||
|
||||
|
|
|
@ -59,13 +59,10 @@ foreach ($righe as $riga) {
|
|||
'.moneyFormat($riga->prezzo_unitario);
|
||||
|
||||
if (abs($riga->sconto_unitario) > 0) {
|
||||
$text = $riga->sconto_unitario > 0 ? tr('sconto _TOT_ _TYPE_') : tr('maggiorazione _TOT_ _TYPE_');
|
||||
$text = discountInfo($riga);
|
||||
|
||||
echo '
|
||||
<br><small class="label label-danger">'.replace($text, [
|
||||
'_TOT_' => Translator::numberToLocale(abs($riga->sconto_unitario)),
|
||||
'_TYPE_' => ($riga->tipo_sconto == 'PRC' ? '%' : currency()),
|
||||
]).'</small>';
|
||||
<br><small class="label label-danger">'.$text.'</small>';
|
||||
}
|
||||
|
||||
echo'
|
||||
|
|
|
@ -45,7 +45,7 @@ if (get('is_descrizione') !== null) {
|
|||
$listino = $dbo->fetchOne('SELECT prc_guadagno FROM an_anagrafiche INNER JOIN mg_listini ON an_anagrafiche.idlistino_vendite=mg_listini.id WHERE idanagrafica='.prepare($documento['idanagrafica']));
|
||||
|
||||
if (!empty($listino['prc_guadagno'])) {
|
||||
$result['sconto_unitario'] = $listino['prc_guadagno'];
|
||||
$result['sconto_percentuale'] = $listino['prc_guadagno'];
|
||||
$result['tipo_sconto'] = 'PRC';
|
||||
}
|
||||
|
||||
|
|
|
@ -66,7 +66,7 @@ if (get('is_descrizione') !== null) {
|
|||
$listino = $dbo->fetchOne('SELECT prc_guadagno FROM an_anagrafiche INNER JOIN mg_listini ON an_anagrafiche.idlistino_vendite=mg_listini.id WHERE idanagrafica='.prepare($documento['idanagrafica']));
|
||||
|
||||
if (!empty($listino['prc_guadagno'])) {
|
||||
$result['sconto_unitario'] = $listino['prc_guadagno'];
|
||||
$result['sconto_percentuale'] = $listino['prc_guadagno'];
|
||||
$result['tipo_sconto'] = 'PRC';
|
||||
}
|
||||
|
||||
|
|
|
@ -191,13 +191,10 @@ foreach ($righe as $riga) {
|
|||
}
|
||||
|
||||
if (abs($riga->sconto_unitario) > 0) {
|
||||
$text = $riga->sconto_unitario > 0 ? tr('sconto _TOT_ _TYPE_') : tr('maggiorazione _TOT_ _TYPE_');
|
||||
$text = discountInfo($riga);
|
||||
|
||||
echo '
|
||||
<br><small class="label label-danger">'.replace($text, [
|
||||
'_TOT_' => Translator::numberToLocale(abs($riga->sconto_unitario)),
|
||||
'_TYPE_' => ($riga->tipo_sconto == 'PRC' ? '%' : currency()),
|
||||
]).'</small>';
|
||||
<br><small class="label label-danger">'.$text.'</small>';
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -45,7 +45,7 @@ if (get('is_descrizione') !== null) {
|
|||
$listino = $dbo->fetchOne('SELECT prc_guadagno FROM an_anagrafiche INNER JOIN mg_listini ON an_anagrafiche.idlistino_vendite=mg_listini.id WHERE idanagrafica='.prepare($documento['idanagrafica']));
|
||||
|
||||
if (!empty($listino['prc_guadagno'])) {
|
||||
$result['sconto_unitario'] = $listino['prc_guadagno'];
|
||||
$result['sconto_percentuale'] = $listino['prc_guadagno'];
|
||||
$result['tipo_sconto'] = 'PRC';
|
||||
}
|
||||
|
||||
|
|
|
@ -16,7 +16,7 @@ include_once __DIR__.'/../../core.php';
|
|||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
{[ "type": "number", "label": "<?php echo tr('Rincaro/sconto'); ?>", "name": "prc_guadagno", "required": 1, "value": "0", "icon-after": "%", "help": "<?php echo tr('Il valore positivo indica uno sconto: per applicare una percentuale di rincaro inserire un valore negativo'); ?>" ]}
|
||||
{[ "type": "number", "label": "<?php echo tr('Rincaro/sconto'); ?>", "name": "prc_guadagno", "required": 1, "value": "0", "icon-after": "%", "help": "<?php echo tr('Il valore positivo indica uno sconto: per applicare una maggiorazione inserire un valore negativo'); ?>" ]}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
|
@ -23,7 +23,7 @@ include_once __DIR__.'/../../core.php';
|
|||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
{[ "type": "number", "label": "<?php echo tr('Rincaro/sconto'); ?>", "name": "prc_guadagno", "required": 1, "value": "$prc_guadagno$", "icon-after": "%", "help": "<?php echo tr('Il valore positivo indica uno sconto').'. '.tr('Per applicare una percentuale di rincaro inserire un valore negativo').'.'; ?>", "disabled": "<?php echo intval(!empty($record['prc_combinato'])); ?>" ]}
|
||||
{[ "type": "number", "label": "<?php echo tr('Rincaro/sconto'); ?>", "name": "prc_guadagno", "required": 1, "value": "$prc_guadagno$", "icon-after": "%", "help": "<?php echo tr('Il valore positivo indica uno sconto: per applicare una maggiorazione inserire un valore negativo').'.'; ?>", "disabled": "<?php echo intval(!empty($record['prc_combinato'])); ?>" ]}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
|
@ -45,7 +45,7 @@ if (get('is_descrizione') !== null) {
|
|||
$listino = $dbo->fetchOne('SELECT prc_guadagno FROM an_anagrafiche INNER JOIN mg_listini ON an_anagrafiche.idlistino_vendite=mg_listini.id WHERE idanagrafica='.prepare($documento['idanagrafica']));
|
||||
|
||||
if (!empty($listino['prc_guadagno'])) {
|
||||
$result['sconto_unitario'] = $listino['prc_guadagno'];
|
||||
$result['sconto_percentuale'] = $listino['prc_guadagno'];
|
||||
$result['tipo_sconto'] = 'PRC';
|
||||
}
|
||||
|
||||
|
|
|
@ -44,7 +44,7 @@ if (get('is_descrizione') !== null) {
|
|||
$listino = $dbo->fetchOne('SELECT prc_guadagno FROM an_anagrafiche INNER JOIN mg_listini ON an_anagrafiche.idlistino_vendite=mg_listini.id WHERE idanagrafica='.prepare($documento['idanagrafica']));
|
||||
|
||||
if (!empty($listino['prc_guadagno'])) {
|
||||
$result['sconto_unitario'] = $listino['prc_guadagno'];
|
||||
$result['sconto_percentuale'] = $listino['prc_guadagno'];
|
||||
$result['tipo_sconto'] = 'PRC';
|
||||
}
|
||||
|
||||
|
|
|
@ -59,13 +59,10 @@ foreach ($righe as $riga) {
|
|||
'.moneyFormat($riga->prezzo_unitario);
|
||||
|
||||
if (abs($riga->sconto_unitario) > 0) {
|
||||
$text = $riga->sconto_unitario > 0 ? tr('sconto _TOT_ _TYPE_') : tr('maggiorazione _TOT_ _TYPE_');
|
||||
$text = discountInfo($riga);
|
||||
|
||||
echo '
|
||||
<br><small class="label label-danger">'.replace($text, [
|
||||
'_TOT_' => Translator::numberToLocale(abs($riga->sconto_unitario)),
|
||||
'_TYPE_' => ($riga->tipo_sconto == 'PRC' ? '%' : currency()),
|
||||
]).'</small>';
|
||||
<br><small class="label label-danger">'.$text.'</small>';
|
||||
}
|
||||
|
||||
echo'
|
||||
|
|
|
@ -1192,16 +1192,15 @@ class FatturaElettronica
|
|||
$dettaglio['PrezzoUnitario'] = $riga->prezzo_unitario ?: 0;
|
||||
|
||||
// Sconto (2.2.1.10)
|
||||
$sconto = $riga->sconto;
|
||||
$sconto_unitario = $riga->sconto_unitario;
|
||||
$sconto_unitario = (float) $riga->sconto_unitario;
|
||||
|
||||
if (!empty((float) $sconto_unitario)) {
|
||||
if (!empty($sconto_unitario)) {
|
||||
$sconto = [
|
||||
'Tipo' => $riga->sconto_unitario > 0 ? 'SC' : 'MG',
|
||||
'Tipo' => $sconto_unitario > 0 ? 'SC' : 'MG',
|
||||
];
|
||||
|
||||
if ($riga['tipo_sconto'] == 'PRC') {
|
||||
$sconto['Percentuale'] = $sconto_unitario;
|
||||
$sconto['Percentuale'] = $riga->sconto_percentuale;
|
||||
} else {
|
||||
$sconto['Importo'] = $sconto_unitario;
|
||||
}
|
||||
|
|
|
@ -130,10 +130,7 @@ foreach ($righe as $riga) {
|
|||
'.moneyFormat($riga->prezzo_unitario);
|
||||
|
||||
if ($riga->sconto > 0) {
|
||||
$text = tr('sconto _TOT_ _TYPE_', [
|
||||
'_TOT_' => Translator::numberToLocale($riga->sconto_unitario),
|
||||
'_TYPE_' => ($riga->tipo_sconto == 'PRC' ? '%' : currency()),
|
||||
]);
|
||||
$text = discountInfo($riga, false);
|
||||
|
||||
echo '
|
||||
<br><small class="text-muted">'.$text.'</small>';
|
||||
|
|
|
@ -92,10 +92,7 @@ foreach ($righe as $riga) {
|
|||
'.moneyFormat($riga->prezzo_unitario);
|
||||
|
||||
if ($riga->sconto > 0) {
|
||||
$text = tr('sconto _TOT_ _TYPE_', [
|
||||
'_TOT_' => Translator::numberToLocale($riga->sconto_unitario),
|
||||
'_TYPE_' => ($riga->tipo_sconto == 'PRC' ? '%' : currency()),
|
||||
]);
|
||||
$text = discountInfo($riga, false);
|
||||
|
||||
echo '
|
||||
<br><small class="text-muted">'.$text.'</small>';
|
||||
|
|
|
@ -106,10 +106,7 @@ foreach ($righe as $riga) {
|
|||
'.moneyFormat($riga->prezzo_unitario);
|
||||
|
||||
if ($riga->sconto > 0) {
|
||||
$text = tr('sconto _TOT_ _TYPE_', [
|
||||
'_TOT_' => Translator::numberToLocale($riga->sconto_unitario),
|
||||
'_TYPE_' => ($riga->tipo_sconto == 'PRC' ? '%' : currency()),
|
||||
]);
|
||||
$text = discountInfo($riga, false);
|
||||
|
||||
echo '
|
||||
<br><small class="text-muted">'.$text.'</small>';
|
||||
|
|
|
@ -113,10 +113,7 @@ foreach ($righe as $riga) {
|
|||
'.moneyFormat($riga->prezzo_unitario);
|
||||
|
||||
if ($riga->sconto > 0) {
|
||||
$text = tr('sconto _TOT_ _TYPE_', [
|
||||
'_TOT_' => Translator::numberToLocale($riga->sconto_unitario),
|
||||
'_TYPE_' => ($riga->tipo_sconto == 'PRC' ? '%' : currency()),
|
||||
]);
|
||||
$text = discountInfo($riga, false);
|
||||
|
||||
echo '
|
||||
<br><small class="text-muted">'.$text.'</small>';
|
||||
|
|
|
@ -116,10 +116,7 @@ foreach ($righe as $riga) {
|
|||
'.moneyFormat($riga->prezzo_unitario);
|
||||
|
||||
if ($riga->sconto > 0) {
|
||||
$text = tr('sconto _TOT_ _TYPE_', [
|
||||
'_TOT_' => Translator::numberToLocale($riga->sconto_unitario),
|
||||
'_TYPE_' => ($riga->tipo_sconto == 'PRC' ? '%' : currency()),
|
||||
]);
|
||||
$text = discountInfo($riga, false);
|
||||
|
||||
echo '
|
||||
<br><small class="text-muted">'.$text.'</small>';
|
||||
|
|
|
@ -121,4 +121,4 @@ UPDATE `or_righe_ordini` SET `qta` = IF(`qta` = 0, 1, `qta`),
|
|||
`sconto_unitario_ivato` = `sconto_unitario`;
|
||||
|
||||
-- Aggiunta supporto a prezzi ivati
|
||||
INSERT INTO `zz_settings` (`id`, `nome`, `valore`, `tipo`, `editable`, `sezione`, `created_at`, `updated_at`, `order`, `help`) VALUES (NULL, 'Utilizza prezzi di vendita con IVA incorporata', '1', 'boolean', '0', 'Fatturazione', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL, 'Abilita la gestione degli importi ivati per i documenti di vendita.');
|
||||
INSERT INTO `zz_settings` (`id`, `nome`, `valore`, `tipo`, `editable`, `sezione`, `created_at`, `updated_at`, `order`, `help`) VALUES (NULL, 'Utilizza prezzi di vendita con IVA incorporata', '0', 'boolean', '1', 'Fatturazione', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL, 'Abilita la gestione degli importi ivati per i documenti di vendita.');
|
||||
|
|
Loading…
Reference in New Issue