mirror of
https://github.com/devcode-it/openstamanager.git
synced 2025-03-09 15:50:14 +01:00
Aggiunto sconto finale in tutti i documenti
This commit is contained in:
parent
03c1d517d0
commit
6998ace12b
@ -32,6 +32,11 @@ Il formato utilizzato è basato sulle linee guida di [Keep a Changelog](http://k
|
||||
- [2.2 (2016-11-10)](#22-2016-11-10)
|
||||
- [2.1 (2015-04-02)](#21-2015-04-02)
|
||||
|
||||
## 2.4.23
|
||||
|
||||
### Aggiunto (Added)
|
||||
- Nuovo *Sconto finale* per gli **Ordini**, **Preventivi**, **DDT** e **Contratti**, influenza il valore *Netto a pagare* del documento.
|
||||
|
||||
## 2.4.22
|
||||
|
||||
### Aggiunto (Added)
|
||||
|
@ -83,6 +83,8 @@ switch (post('op')) {
|
||||
$contratto->codice_cig = post('codice_cig');
|
||||
$contratto->codice_cup = post('codice_cup');
|
||||
|
||||
$contratto->setScontoFinale(post('sconto_finale'), post('tipo_sconto_finale'));
|
||||
|
||||
$contratto->save();
|
||||
|
||||
$dbo->query('DELETE FROM my_impianti_contratti WHERE idcontratto='.prepare($id_record));
|
||||
@ -479,6 +481,15 @@ $riga = $contratto->getRiga($type, $id_riga);
|
||||
$id_record = $contratto->id;
|
||||
}
|
||||
|
||||
if (!empty($documento->sconto_finale)) {
|
||||
$contratto->sconto_finale = $documento->sconto_finale;
|
||||
} elseif(!empty($documento->sconto_finale_percentuale)){
|
||||
$contratto->sconto_finale_percentuale = $documento->sconto_finale_percentuale;
|
||||
}
|
||||
|
||||
$contratto->save();
|
||||
|
||||
|
||||
$righe = $documento->getRighe();
|
||||
foreach ($righe as $riga) {
|
||||
if (post('evadere')[$riga->id] == 'on' and !empty(post('qta_da_evadere')[$riga->id])) {
|
||||
|
@ -113,10 +113,14 @@ if (strtotime($record['data_conclusione']) < strtotime($record['data_accettazion
|
||||
{[ "type": "number", "label": "<?php echo tr('Validità contratto'); ?>", "name": "validita", "decimals": "0", "value": "$validita$", "icon-after": "choice|period|<?php echo $record['tipo_validita']; ?>", "help": "<?php echo tr('Il campo Validità contratto viene utilizzato per il calcolo della Data di conclusione del contratto'); ?>" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-9">
|
||||
<div class="col-md-6">
|
||||
{[ "type": "select", "multiple": "1", "label": "<?php echo tr('Impianti'); ?>", "name": "matricolaimpianto[]", "values": "query=SELECT idanagrafica, id AS id, IF(nome = '', matricola, CONCAT(matricola, ' - ', nome)) AS descrizione FROM my_impianti WHERE idanagrafica='$idanagrafica$' ORDER BY descrizione", "value": "$idimpianti$", "icon-after": "add|<?php echo Modules::get('Impianti')['id']; ?>|||<?php echo (empty($block_edit)) ? '' : 'disabled'; ?>" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-3">
|
||||
{[ "type": "number", "label": "<?php echo ('Sconto finale'); ?>", "name": "sconto_finale", "value": "<?php echo $contratto->sconto_finale_percentuale ?: $contratto->sconto_finale; ?>", "icon-after": "choice|untprc|<?php echo (empty($contratto->sconto_finale) ? 'PRC' : 'UNT'); ?>", "help": "<?php echo tr('Sconto finale, utilizzabile per applicare sconti sul Netto a pagare del documento'); ?>." ]}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
|
@ -150,6 +150,8 @@ $sconto = $contratto->sconto;
|
||||
$totale_imponibile = abs($contratto->totale_imponibile);
|
||||
$iva = abs($contratto->iva);
|
||||
$totale = abs($contratto->totale);
|
||||
$sconto_finale = $contratto->getScontoFinale();
|
||||
$netto_a_pagare = $contratto->netto;
|
||||
|
||||
// Totale totale imponibile
|
||||
echo '
|
||||
@ -213,6 +215,34 @@ echo '
|
||||
<td></td>
|
||||
</tr>';
|
||||
|
||||
// SCONTO FINALE
|
||||
if (!empty($sconto_finale)) {
|
||||
echo '
|
||||
<tr>
|
||||
<td colspan="5" class="text-right">
|
||||
<b>'.tr('Sconto finale', [], ['upper' => true]).':</b>
|
||||
</td>
|
||||
<td class="text-right">
|
||||
'.moneyFormat($sconto_finale, 2).'
|
||||
</td>
|
||||
<td></td>
|
||||
</tr>';
|
||||
}
|
||||
|
||||
// NETTO A PAGARE
|
||||
if ($totale != $netto_a_pagare) {
|
||||
echo '
|
||||
<tr>
|
||||
<td colspan="5" class="text-right">
|
||||
<b>'.tr('Netto a pagare', [], ['upper' => true]).':</b>
|
||||
</td>
|
||||
<td class="text-right">
|
||||
'.moneyFormat($netto_a_pagare, 2).'
|
||||
</td>
|
||||
<td></td>
|
||||
</tr>';
|
||||
}
|
||||
|
||||
echo '
|
||||
</table>
|
||||
</div>';
|
||||
|
@ -37,4 +37,11 @@ trait RelationTrait
|
||||
{
|
||||
return $this->document();
|
||||
}
|
||||
|
||||
public function getNettoAttribute()
|
||||
{
|
||||
$result = $this->totale;
|
||||
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
|
@ -59,6 +59,7 @@ switch (post('op')) {
|
||||
break;
|
||||
|
||||
case 'update':
|
||||
if (isset($id_record)) {
|
||||
$idstatoddt = post('idstatoddt');
|
||||
$idpagamento = post('idpagamento');
|
||||
$numero_esterno = post('numero_esterno');
|
||||
@ -82,43 +83,44 @@ switch (post('op')) {
|
||||
$rs = $dbo->fetchArray($query);
|
||||
$pagamento = $rs[0]['descrizione'];
|
||||
|
||||
// Query di aggiornamento
|
||||
$dbo->update('dt_ddt', [
|
||||
'data' => post('data'),
|
||||
'numero_esterno' => $numero_esterno,
|
||||
'note' => post('note'),
|
||||
'note_aggiuntive' => post('note_aggiuntive'),
|
||||
$ddt->data = post('data');
|
||||
$ddt->numero_esterno = $numero_esterno;
|
||||
$ddt->note = post('note');
|
||||
$ddt->note_aggiuntive = post('note_aggiuntive');
|
||||
|
||||
'idstatoddt' => $idstatoddt,
|
||||
'idpagamento' => $idpagamento,
|
||||
'idconto' => post('idconto'),
|
||||
'idanagrafica' => $id_anagrafica,
|
||||
'idreferente' => post('idreferente'),
|
||||
'idspedizione' => post('idspedizione'),
|
||||
'idcausalet' => post('idcausalet'),
|
||||
'idsede_partenza' => post('idsede_partenza'),
|
||||
'idsede_destinazione' => post('idsede_destinazione'),
|
||||
'idvettore' => post('idvettore'),
|
||||
'data_ora_trasporto' => post('data_ora_trasporto') ?: null,
|
||||
'idporto' => post('idporto'),
|
||||
'idaspettobeni' => post('idaspettobeni'),
|
||||
'idrivalsainps' => $idrivalsainps,
|
||||
'idritenutaacconto' => $idritenutaacconto,
|
||||
$ddt->idstatoddt = $idstatoddt;
|
||||
$ddt->idpagamento = $idpagamento;
|
||||
$ddt->idconto = post('idconto');
|
||||
$ddt->idanagrafica = $id_anagrafica;
|
||||
$ddt->idreferente = post('idreferente');
|
||||
$ddt->idspedizione = post('idspedizione');
|
||||
$ddt->idcausalet = post('idcausalet');
|
||||
$ddt->idsede_partenza = post('idsede_partenza');
|
||||
$ddt->idsede_destinazione = post('idsede_destinazione');
|
||||
$ddt->idvettore = post('idvettore');
|
||||
$ddt->data_ora_trasporto = post('data_ora_trasporto') ?: null;
|
||||
$ddt->idporto = post('idporto');
|
||||
$ddt->idaspettobeni = post('idaspettobeni');
|
||||
$ddt->idrivalsainps = $idrivalsainps;
|
||||
$ddt->idritenutaacconto = $idritenutaacconto;
|
||||
|
||||
'n_colli' => post('n_colli'),
|
||||
'peso' => post('peso'),
|
||||
'volume' => post('volume'),
|
||||
'peso_manuale' => post('peso_manuale'),
|
||||
'volume_manuale' => post('volume_manuale'),
|
||||
'bollo' => 0,
|
||||
'rivalsainps' => 0,
|
||||
'ritenutaacconto' => 0,
|
||||
$ddt->n_colli = post('n_colli');
|
||||
$ddt->peso = post('peso');
|
||||
$ddt->volume = post('volume');
|
||||
$ddt->peso_manuale = post('peso_manuale');
|
||||
$ddt->volume_manuale = post('volume_manuale');
|
||||
$ddt->bollo = 0;
|
||||
$ddt->rivalsainps = 0;
|
||||
$ddt->ritenutaacconto = 0;
|
||||
|
||||
'id_documento_fe' => post('id_documento_fe'),
|
||||
'codice_cup' => post('codice_cup'),
|
||||
'codice_cig' => post('codice_cig'),
|
||||
'num_item' => post('num_item'),
|
||||
], ['id' => $id_record]);
|
||||
$ddt->id_documento_fe = post('id_documento_fe');
|
||||
$ddt->codice_cup = post('codice_cup');
|
||||
$ddt->codice_cig = post('codice_cig');
|
||||
$ddt->num_item = post('num_item');
|
||||
|
||||
$ddt->setScontoFinale(post('sconto_finale'), post('tipo_sconto_finale'));
|
||||
|
||||
$ddt->save();
|
||||
|
||||
$query = 'SELECT descrizione FROM dt_statiddt WHERE id='.prepare($idstatoddt);
|
||||
$rs = $dbo->fetchArray($query);
|
||||
@ -151,6 +153,8 @@ switch (post('op')) {
|
||||
}
|
||||
|
||||
flash()->info(tr('Ddt modificato correttamente!'));
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case 'manage_barcode':
|
||||
@ -328,6 +332,14 @@ switch (post('op')) {
|
||||
$id_record = $ddt->id;
|
||||
}
|
||||
|
||||
if (!empty($documento->sconto_finale)) {
|
||||
$ddt->sconto_finale = $documento->sconto_finale;
|
||||
} elseif(!empty($documento->sconto_finale_percentuale)){
|
||||
$ddt->sconto_finale_percentuale = $documento->sconto_finale_percentuale;
|
||||
}
|
||||
|
||||
$ddt->save();
|
||||
|
||||
$righe = $documento->getRighe();
|
||||
foreach ($righe as $riga) {
|
||||
if (post('evadere')[$riga->id] == 'on' and !empty(post('qta_da_evadere')[$riga->id])) {
|
||||
|
@ -263,6 +263,11 @@ if ($dir == 'entrata') {
|
||||
}
|
||||
|
||||
?>
|
||||
<div class="row">
|
||||
<div class="col-md-3">
|
||||
{[ "type": "number", "label": "<?php echo ('Sconto finale'); ?>", "name": "sconto_finale", "value": "<?php echo $ddt->sconto_finale_percentuale ?: $ddt->sconto_finale; ?>", "icon-after": "choice|untprc|<?php echo (empty($ddt->sconto_finale) ? 'PRC' : 'UNT'); ?>", "help": "<?php echo tr('Sconto finale, utilizzabile per applicare sconti sul Netto a pagare del documento'); ?>." ]}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
|
@ -198,6 +198,8 @@ $sconto = $ddt->sconto;
|
||||
$totale_imponibile = abs($ddt->totale_imponibile);
|
||||
$iva = abs($ddt->iva);
|
||||
$totale = abs($ddt->totale);
|
||||
$sconto_finale = $ddt->getScontoFinale();
|
||||
$netto_a_pagare = $ddt->netto;
|
||||
|
||||
// IMPONIBILE
|
||||
echo '
|
||||
@ -271,6 +273,34 @@ echo '
|
||||
<td></td>
|
||||
</tr>';
|
||||
|
||||
// SCONTO FINALE
|
||||
if (!empty($sconto_finale)) {
|
||||
echo '
|
||||
<tr>
|
||||
<td colspan="5" class="text-right">
|
||||
<b>'.tr('Sconto finale', [], ['upper' => true]).':</b>
|
||||
</td>
|
||||
<td class="text-right">
|
||||
'.moneyFormat($sconto_finale, 2).'
|
||||
</td>
|
||||
<td></td>
|
||||
</tr>';
|
||||
}
|
||||
|
||||
// NETTO A PAGARE
|
||||
if ($totale != $netto_a_pagare) {
|
||||
echo '
|
||||
<tr>
|
||||
<td colspan="5" class="text-right">
|
||||
<b>'.tr('Netto a pagare', [], ['upper' => true]).':</b>
|
||||
</td>
|
||||
<td class="text-right">
|
||||
'.moneyFormat($netto_a_pagare, 2).'
|
||||
</td>
|
||||
<td></td>
|
||||
</tr>';
|
||||
}
|
||||
|
||||
echo '
|
||||
</table>
|
||||
</div>';
|
||||
|
@ -37,4 +37,11 @@ trait RelationTrait
|
||||
{
|
||||
return $this->document();
|
||||
}
|
||||
|
||||
public function getNettoAttribute()
|
||||
{
|
||||
$result = $this->totale;
|
||||
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
|
@ -39,6 +39,9 @@ class DDT extends Document
|
||||
'bollo' => 'float',
|
||||
'peso' => 'float',
|
||||
'volume' => 'float',
|
||||
|
||||
'sconto_finale' => 'float',
|
||||
'sconto_finale_percentuale' => 'float',
|
||||
];
|
||||
|
||||
protected $with = [
|
||||
|
@ -704,6 +704,14 @@ switch (post('op')) {
|
||||
$id_record = $fattura->id;
|
||||
}
|
||||
|
||||
if (!empty($documento->sconto_finale)) {
|
||||
$fattura->sconto_finale = $documento->sconto_finale;
|
||||
} elseif(!empty($documento->sconto_finale_percentuale)){
|
||||
$fattura->sconto_finale_percentuale = $documento->sconto_finale_percentuale;
|
||||
}
|
||||
|
||||
$fattura->save();
|
||||
|
||||
$calcolo_ritenuta_acconto = post('calcolo_ritenuta_acconto') ?: null;
|
||||
$id_ritenuta_acconto = post('id_ritenuta_acconto') ?: null;
|
||||
$ritenuta_contributi = boolval(post('ritenuta_contributi'));
|
||||
|
@ -283,55 +283,6 @@ class Fattura extends Document
|
||||
|
||||
// Calcoli
|
||||
|
||||
/**
|
||||
* Imposta lo sconto finale sulla Fattura.
|
||||
* Nota: lo sconto finale è limitato alla Fattura, e non può derivare da ulteriori documenti.
|
||||
*
|
||||
* @param $sconto
|
||||
* @param $tipo
|
||||
*/
|
||||
public function setScontoFinale($sconto, $tipo)
|
||||
{
|
||||
if ($tipo == 'PRC') {
|
||||
$this->sconto_finale_percentuale = $sconto;
|
||||
$this->sconto_finale = 0;
|
||||
} else {
|
||||
$this->sconto_finale = $sconto;
|
||||
$this->sconto_finale_percentuale = 0;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Restituisce lo sconto finale sulla Fattura.
|
||||
* Nota: lo sconto finale è limitato alla Fattura, e non può derivare da ulteriori documenti.
|
||||
*/
|
||||
public function getScontoFinale()
|
||||
{
|
||||
$netto = $this->calcola('netto');
|
||||
|
||||
if (!empty($this->sconto_finale_percentuale)) {
|
||||
$sconto = $netto * ($this->sconto_finale_percentuale / 100);
|
||||
} else {
|
||||
$sconto = $this->sconto_finale;
|
||||
}
|
||||
|
||||
return $sconto;
|
||||
}
|
||||
|
||||
/**
|
||||
* Calcola il netto a pagare della fattura.
|
||||
* Nota: lo sconto finale è limitato alla Fattura, e non può derivare da ulteriori documenti.
|
||||
*
|
||||
* @return float
|
||||
*/
|
||||
public function getNettoAttribute()
|
||||
{
|
||||
$netto = $this->calcola('netto');
|
||||
$sconto_finale = $this->getScontoFinale();
|
||||
|
||||
return $netto - $sconto_finale;
|
||||
}
|
||||
|
||||
/**
|
||||
* Calcola la rivalsa INPS totale della fattura.
|
||||
*
|
||||
|
@ -54,6 +54,7 @@ switch (post('op')) {
|
||||
break;
|
||||
|
||||
case 'update':
|
||||
if (isset($id_record)) {
|
||||
$idstatoordine = post('idstatoordine');
|
||||
$idpagamento = post('idpagamento');
|
||||
$idsede = post('idsede');
|
||||
@ -79,37 +80,38 @@ switch (post('op')) {
|
||||
$rs = $dbo->fetchArray($query);
|
||||
$pagamento = $rs[0]['descrizione'];
|
||||
|
||||
// Query di aggiornamento
|
||||
$dbo->update('or_ordini', [
|
||||
'idanagrafica' => post('idanagrafica'),
|
||||
'idreferente' => post('idreferente'),
|
||||
'data' => post('data'),
|
||||
'numero' => post('numero'),
|
||||
'numero_esterno' => post('numero_esterno'),
|
||||
'note' => post('note'),
|
||||
'note_aggiuntive' => post('note_aggiuntive'),
|
||||
$ordine->idanagrafica = post('idanagrafica');
|
||||
$ordine->idreferente = post('idreferente');
|
||||
$ordine->data = post('data');
|
||||
$ordine->numero = post('numero');
|
||||
$ordine->numero_esterno = post('numero_esterno');
|
||||
$ordine->note = post('note');
|
||||
$ordine->note_aggiuntive = post('note_aggiuntive');
|
||||
|
||||
'idagente' => post('idagente'),
|
||||
'idstatoordine' => $idstatoordine,
|
||||
'idpagamento' => $idpagamento,
|
||||
'idsede' => $idsede,
|
||||
'idconto' => post('idconto'),
|
||||
'idrivalsainps' => $idrivalsainps,
|
||||
'idritenutaacconto' => $idritenutaacconto,
|
||||
$ordine->idagente = post('idagente');
|
||||
$ordine->idstatoordine = $idstatoordine;
|
||||
$ordine->idpagamento = $idpagamento;
|
||||
$ordine->idsede = $idsede;
|
||||
$ordine->idconto = post('idconto');
|
||||
$ordine->idrivalsainps = $idrivalsainps;
|
||||
$ordine->idritenutaacconto = $idritenutaacconto;
|
||||
|
||||
'bollo' => 0,
|
||||
'rivalsainps' => 0,
|
||||
'ritenutaacconto' => 0,
|
||||
$ordine->bollo = 0;
|
||||
$ordine->rivalsainps = 0;
|
||||
$ordine->ritenutaacconto = 0;
|
||||
|
||||
'numero_cliente' => post('numero_cliente'),
|
||||
'data_cliente' => post('data_cliente'),
|
||||
$ordine->numero_cliente = post('numero_cliente');
|
||||
$ordine->data_cliente = post('data_cliente');
|
||||
|
||||
'id_documento_fe' => post('numero_cliente'),
|
||||
'codice_commessa' => post('codice_commessa'),
|
||||
'codice_cup' => post('codice_cup'),
|
||||
'codice_cig' => post('codice_cig'),
|
||||
'num_item' => post('num_item'),
|
||||
], ['id' => $id_record]);
|
||||
$ordine->id_documento_fe = post('numero_cliente');
|
||||
$ordine->codice_commessa = post('codice_commessa');
|
||||
$ordine->codice_cup = post('codice_cup');
|
||||
$ordine->codice_cig = post('codice_cig');
|
||||
$ordine->num_item = post('num_item');
|
||||
|
||||
$ordine->setScontoFinale(post('sconto_finale'), post('tipo_sconto_finale'));
|
||||
|
||||
$ordine->save();
|
||||
|
||||
if ($dbo->query($query)) {
|
||||
$query = 'SELECT descrizione FROM or_statiordine WHERE id='.prepare($idstatoordine);
|
||||
@ -128,6 +130,7 @@ switch (post('op')) {
|
||||
|
||||
flash()->info(tr('Ordine modificato correttamente!'));
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
@ -377,6 +380,14 @@ switch (post('op')) {
|
||||
$id_record = $ordine->id;
|
||||
}
|
||||
|
||||
if (!empty($documento->sconto_finale)) {
|
||||
$ordine->sconto_finale = $documento->sconto_finale;
|
||||
} elseif(!empty($documento->sconto_finale_percentuale)){
|
||||
$ordine->sconto_finale_percentuale = $documento->sconto_finale_percentuale;
|
||||
}
|
||||
|
||||
$ordine->save();
|
||||
|
||||
$righe = $documento->getRighe();
|
||||
foreach ($righe as $riga) {
|
||||
if (post('evadere')[$riga->id] == 'on' and !empty(post('qta_da_evadere')[$riga->id])) {
|
||||
|
@ -112,22 +112,28 @@ if ($module['name'] == 'Ordini cliente') {
|
||||
</div>
|
||||
</div>';
|
||||
|
||||
if ($dir == 'entrata') {
|
||||
?>
|
||||
<div class="row">
|
||||
<?php
|
||||
if ($dir == 'entrata') {
|
||||
?>
|
||||
|
||||
<div class="col-md-6">
|
||||
{[ "type": "text", "label": "<?php echo tr('Numero ordine cliente'); ?>", "name": "numero_cliente", "required":0, "value": "<?php echo $record['numero_cliente']; ?>", "help": "<?php echo tr('<span>Obbligatorio per valorizzare CIG/CUP. È possible inserire: </span><ul><li>N. determina</li><li>RDO</li><li>Ordine MEPA</li></ul>'); ?>" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-6">
|
||||
<div class="col-md-3">
|
||||
{[ "type": "date", "label": "<?php echo tr('Data ordine cliente'); ?>", "name": "data_cliente", "value": "<?php echo $record['data_cliente']; ?>" ]}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
|
||||
<div class="col-md-3">
|
||||
{[ "type": "number", "label": "<?php echo ('Sconto finale'); ?>", "name": "sconto_finale", "value": "<?php echo $ordine->sconto_finale_percentuale ?: $ordine->sconto_finale; ?>", "icon-after": "choice|untprc|<?php echo (empty($ordine->sconto_finale) ? 'PRC' : 'UNT'); ?>", "help": "<?php echo tr('Sconto finale, utilizzabile per applicare sconti sul Netto a pagare del documento'); ?>." ]}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
{[ "type": "textarea", "label": "<?php echo tr('Note'); ?>", "name": "note", "value": "$note$" ]}
|
||||
|
@ -231,6 +231,8 @@ $sconto = $ordine->sconto;
|
||||
$totale_imponibile = abs($ordine->totale_imponibile);
|
||||
$iva = abs($ordine->iva);
|
||||
$totale = abs($ordine->totale);
|
||||
$sconto_finale = $ordine->getScontoFinale();
|
||||
$netto_a_pagare = $ordine->netto;
|
||||
|
||||
// IMPONIBILE
|
||||
echo '
|
||||
@ -294,6 +296,34 @@ echo '
|
||||
<td></td>
|
||||
</tr>';
|
||||
|
||||
// SCONTO FINALE
|
||||
if (!empty($sconto_finale)) {
|
||||
echo '
|
||||
<tr>
|
||||
<td colspan="6" class="text-right">
|
||||
<b>'.tr('Sconto finale', [], ['upper' => true]).':</b>
|
||||
</td>
|
||||
<td class="text-right">
|
||||
'.moneyFormat($sconto_finale, 2).'
|
||||
</td>
|
||||
<td></td>
|
||||
</tr>';
|
||||
}
|
||||
|
||||
// NETTO A PAGARE
|
||||
if ($totale != $netto_a_pagare) {
|
||||
echo '
|
||||
<tr>
|
||||
<td colspan="6" class="text-right">
|
||||
<b>'.tr('Netto a pagare', [], ['upper' => true]).':</b>
|
||||
</td>
|
||||
<td class="text-right">
|
||||
'.moneyFormat($netto_a_pagare, 2).'
|
||||
</td>
|
||||
<td></td>
|
||||
</tr>';
|
||||
}
|
||||
|
||||
echo '
|
||||
</table>
|
||||
</div>';
|
||||
|
@ -37,4 +37,11 @@ trait RelationTrait
|
||||
{
|
||||
return $this->document();
|
||||
}
|
||||
|
||||
public function getNettoAttribute()
|
||||
{
|
||||
$result = $this->totale;
|
||||
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
|
@ -82,6 +82,7 @@ switch (post('op')) {
|
||||
$preventivo->codice_cup = post('codice_cup');
|
||||
$preventivo->idtipointervento = post('idtipointervento');
|
||||
$preventivo->idiva = post('idiva');
|
||||
$preventivo->setScontoFinale(post('sconto_finale'), post('tipo_sconto_finale'));
|
||||
|
||||
$preventivo->save();
|
||||
|
||||
|
@ -138,6 +138,10 @@ echo '
|
||||
{[ "type": "text", "label": "<?php echo tr('Tempi di consegna'); ?>", "name": "tempi_consegna", "value": "$tempi_consegna$" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-3">
|
||||
{[ "type": "number", "label": "<?php echo ('Sconto finale'); ?>", "name": "sconto_finale", "value": "<?php echo $preventivo->sconto_finale_percentuale ?: $preventivo->sconto_finale; ?>", "icon-after": "choice|untprc|<?php echo (empty($preventivo->sconto_finale) ? 'PRC' : 'UNT'); ?>", "help": "<?php echo tr('Sconto finale, utilizzabile per applicare sconti sul Netto a pagare del documento'); ?>." ]}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="row">
|
||||
|
||||
|
@ -148,6 +148,8 @@ $sconto = $preventivo->sconto;
|
||||
$totale_imponibile = abs($preventivo->totale_imponibile);
|
||||
$iva = abs($preventivo->iva);
|
||||
$totale = abs($preventivo->totale);
|
||||
$sconto_finale = $preventivo->getScontoFinale();
|
||||
$netto_a_pagare = $preventivo->netto;
|
||||
|
||||
// Totale imponibile scontato
|
||||
echo '
|
||||
@ -211,6 +213,34 @@ echo '
|
||||
<td></td>
|
||||
</tr>';
|
||||
|
||||
// SCONTO FINALE
|
||||
if (!empty($sconto_finale)) {
|
||||
echo '
|
||||
<tr>
|
||||
<td colspan="5" class="text-right">
|
||||
<b>'.tr('Sconto finale', [], ['upper' => true]).':</b>
|
||||
</td>
|
||||
<td class="text-right">
|
||||
'.moneyFormat($sconto_finale, 2).'
|
||||
</td>
|
||||
<td></td>
|
||||
</tr>';
|
||||
}
|
||||
|
||||
// NETTO A PAGARE
|
||||
if ($totale != $netto_a_pagare) {
|
||||
echo '
|
||||
<tr>
|
||||
<td colspan="5" class="text-right">
|
||||
<b>'.tr('Netto a pagare', [], ['upper' => true]).':</b>
|
||||
</td>
|
||||
<td class="text-right">
|
||||
'.moneyFormat($netto_a_pagare, 2).'
|
||||
</td>
|
||||
<td></td>
|
||||
</tr>';
|
||||
}
|
||||
|
||||
// Margine
|
||||
$margine = $preventivo->margine;
|
||||
$margine_class = ($margine <= 0 and $preventivo->totale > 0) ? 'danger' : 'success';
|
||||
|
@ -37,4 +37,11 @@ trait RelationTrait
|
||||
{
|
||||
return $this->document();
|
||||
}
|
||||
|
||||
public function getNettoAttribute()
|
||||
{
|
||||
$result = $this->totale;
|
||||
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
|
@ -24,6 +24,11 @@ use Illuminate\Database\Eloquent\Model as Model;
|
||||
|
||||
abstract class Document extends Model implements ReferenceInterface, DocumentInterface
|
||||
{
|
||||
protected $casts = [
|
||||
'sconto_finale' => 'float',
|
||||
'sconto_finale_percentuale' => 'float',
|
||||
];
|
||||
|
||||
/**
|
||||
* Abilita la movimentazione automatica degli Articoli, finalizzata alla gestione interna del magazzino.
|
||||
*
|
||||
@ -267,4 +272,50 @@ abstract class Document extends Model implements ReferenceInterface, DocumentInt
|
||||
|
||||
return round($value, $decimals);
|
||||
}
|
||||
|
||||
/**
|
||||
* Imposta lo sconto finale.
|
||||
*
|
||||
* @param $sconto
|
||||
* @param $tipo
|
||||
*/
|
||||
public function setScontoFinale($sconto, $tipo)
|
||||
{
|
||||
if ($tipo == 'PRC') {
|
||||
$this->sconto_finale_percentuale = $sconto;
|
||||
$this->sconto_finale = 0;
|
||||
} else {
|
||||
$this->sconto_finale = $sconto;
|
||||
$this->sconto_finale_percentuale = 0;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Restituisce lo sconto finale.
|
||||
*/
|
||||
public function getScontoFinale()
|
||||
{
|
||||
$netto = $this->calcola('netto');
|
||||
|
||||
if (!empty($this->sconto_finale_percentuale)) {
|
||||
$sconto = $netto * ($this->sconto_finale_percentuale / 100);
|
||||
} else {
|
||||
$sconto = $this->sconto_finale;
|
||||
}
|
||||
|
||||
return $sconto;
|
||||
}
|
||||
|
||||
/**
|
||||
* Calcola il netto a pagare del documento.
|
||||
*
|
||||
* @return float
|
||||
*/
|
||||
public function getNettoAttribute()
|
||||
{
|
||||
$netto = $this->calcola('netto');
|
||||
$sconto_finale = $this->getScontoFinale();
|
||||
|
||||
return $netto - $sconto_finale;
|
||||
}
|
||||
}
|
||||
|
@ -104,3 +104,15 @@ UPDATE `co_contratti` SET `data_bozza`=NULL WHERE `data_bozza`=0000-00-00;
|
||||
UPDATE `co_contratti` SET `data_accettazione`=NULL WHERE `data_accettazione`=0000-00-00;
|
||||
UPDATE `co_contratti` SET `data_rifiuto`=NULL WHERE `data_rifiuto`=0000-00-00;
|
||||
UPDATE `co_contratti` SET `data_conclusione`=NULL WHERE `data_conclusione`=0000-00-00;
|
||||
|
||||
-- Aggiunto sconto finale in preventivi
|
||||
ALTER TABLE `co_preventivi` ADD `sconto_finale` DECIMAL(17,8) NOT NULL AFTER `garanzia`, ADD `sconto_finale_percentuale` DECIMAL(17,8) NOT NULL AFTER `sconto_finale`;
|
||||
|
||||
-- Aggiunto sconto finale in ordini
|
||||
ALTER TABLE `or_ordini` ADD `sconto_finale` DECIMAL(17,8) NOT NULL AFTER `numero_cliente`, ADD `sconto_finale_percentuale` DECIMAL(17,8) NOT NULL AFTER `sconto_finale`;
|
||||
|
||||
-- Aggiunto sconto finale in ddt
|
||||
ALTER TABLE `dt_ddt` ADD `sconto_finale` DECIMAL(17,8) NOT NULL AFTER `num_item`, ADD `sconto_finale_percentuale` DECIMAL(17,8) NOT NULL AFTER `sconto_finale`;
|
||||
|
||||
-- Aggiunto sconto finale in contratti
|
||||
ALTER TABLE `co_contratti` ADD `sconto_finale` DECIMAL(17,8) NOT NULL AFTER `num_item`, ADD `sconto_finale_percentuale` DECIMAL(17,8) NOT NULL AFTER `sconto_finale`;
|
Loading…
x
Reference in New Issue
Block a user