diff --git a/include/src/Components/MorphTrait.php b/include/src/Components/MorphTrait.php index 85aed26b5..7d7df8a70 100644 --- a/include/src/Components/MorphTrait.php +++ b/include/src/Components/MorphTrait.php @@ -14,7 +14,8 @@ trait MorphTrait return $this->morphedByMany($this->original_type, 'original', $this->table, 'id'); } - public function getOriginal(){ + public function getOriginal() + { return $this->original()->first(); } } diff --git a/include/src/Document.php b/include/src/Document.php index cc2a08924..284765efd 100644 --- a/include/src/Document.php +++ b/include/src/Document.php @@ -19,6 +19,29 @@ abstract class Document extends Model return $descrizioni->merge($righe)->merge($articoli)->merge($sconti)->sortBy('order'); } + /** + * Restituisce la collezione di righe e articoli con valori rilevanti per i conti, raggruppate sulla base dei documenti di provenienza. + * La chiave è la serializzazione del documento di origine, oppure null in caso non esista. + * + * @return iterable + */ + public function getRigheRaggruppate() + { + $righe = $this->getRighe(); + + $groups = $righe->groupBy(function ($item, $key) { + if (!$item->hasOriginal()) { + return null; + } + + $parent = $item->getOriginal()->parent; + + return serialize($parent); + }); + + return $groups; + } + abstract public function righe(); abstract public function articoli(); @@ -97,6 +120,16 @@ abstract class Document extends Model return $this->calcola('guadagno'); } + public function delete() + { + $righe = $this->getRighe(); + foreach ($righe as $riga) { + $riga->delete(); + } + + return parent::delete(); + } + /** * Calcola la somma degli attributi indicati come parametri. * Il metodo **non** deve essere adattato per ulteriori funzionalità: deve esclusivamente calcolare la somma richiesta in modo esplicito dagli argomenti. diff --git a/modules/contratti/actions.php b/modules/contratti/actions.php index bfd355048..ee1fdb4de 100644 --- a/modules/contratti/actions.php +++ b/modules/contratti/actions.php @@ -3,7 +3,9 @@ include_once __DIR__.'/../../core.php'; use Modules\Anagrafiche\Anagrafica; +use Modules\Articoli\Articolo as ArticoloOriginale; use Modules\Contratti\Components\Articolo; +use Modules\Contratti\Components\Descrizione; use Modules\Contratti\Components\Riga; use Modules\Contratti\Components\Sconto; use Modules\Contratti\Contratto; @@ -26,72 +28,30 @@ switch (post('op')) { case 'update': if (post('id_record') !== null) { - $idstato = post('idstato'); - $idanagrafica = post('idanagrafica'); - $idsede = post('idsede'); - $nome = post('nome'); - $idagente = post('idagente'); - $idpagamento = post('idpagamento'); - $numero = post('numero'); + $contratto->idanagrafica = post('idanagrafica'); + $contratto->idsede = post('idsede'); + $contratto->idstato = post('idstato'); + $contratto->nome = post('nome'); + $contratto->idagente = post('idagente'); + $contratto->idpagamento = post('idpagamento'); + $contratto->numero = post('numero'); + $contratto->idreferente = post('idreferente'); + $contratto->validita = post('validita'); + $contratto->data_bozza = post('data_bozza'); + $contratto->data_accettazione = post('data_accettazione'); + $contratto->data_rifiuto = post('data_rifiuto'); + $contratto->data_conclusione = post('data_conclusione'); + $contratto->rinnovabile = post('rinnovabile'); + $contratto->giorni_preavviso_rinnovo = post('giorni_preavviso_rinnovo'); + $contratto->ore_preavviso_rinnovo = post('ore_preavviso_rinnovo'); + $contratto->esclusioni = post('esclusioni'); + $contratto->descrizione = post('descrizione'); + $contratto->id_documento_fe = post('id_documento_fe'); + $contratto->num_item = post('num_item'); + $contratto->codice_cig = post('codice_cig'); + $contratto->codice_cup = post('codice_cup'); - // Se non specifico un budget me lo vado a ricalcolare - if ($budget != '') { - $budget = post('budget'); - } else { - $q = "SELECT (SELECT SUM(subtotale) FROM co_righe_contratti GROUP BY idcontratto HAVING idcontratto=co_contratti.id) AS 'budget' FROM co_contratti WHERE id=".prepare($id_record); - $rs = $dbo->fetchArray($q); - $budget = $rs[0]['budget']; - } - - $data_bozza = post('data_bozza'); - $data_accettazione = post('data_accettazione'); - $data_rifiuto = post('data_rifiuto'); - $data_conclusione = post('data_conclusione'); - $rinnovabile = post('rinnovabile'); - - $giorni_preavviso_rinnovo = post('giorni_preavviso_rinnovo'); - $ore_preavviso_rinnovo = post('ore_preavviso_rinnovo'); - $validita = post('validita'); - $idreferente = post('idreferente'); - $esclusioni = post('esclusioni'); - $descrizione = post('descrizione'); - // $ore_lavoro = post('ore_lavoro'); - - $costo_orario = post('costo_orario'); - $costo_km = post('costo_km'); - $costo_diritto_chiamata = post('costo_diritto_chiamata'); - - $id_documento_fe = post('id_documento_fe'); - $num_item = post('num_item'); - $codice_cig = post('codice_cig'); - $codice_cup = post('codice_cup'); - - $query = 'UPDATE co_contratti SET idanagrafica='.prepare($idanagrafica).', - idsede='.prepare($idsede).', - idstato='.prepare($idstato).', - nome='.prepare($nome).', - idagente='.prepare($idagente).', - idpagamento='.prepare($idpagamento).', - numero='.prepare($numero).', - budget='.prepare($budget).', - idreferente='.prepare($idreferente).', - validita='.prepare($validita).', - data_bozza='.prepare($data_bozza).', - data_accettazione='.prepare($data_accettazione).', - data_rifiuto='.prepare($data_rifiuto).', - data_conclusione='.prepare($data_conclusione).', - rinnovabile='.prepare($rinnovabile).', - giorni_preavviso_rinnovo='.prepare($giorni_preavviso_rinnovo).', - ore_preavviso_rinnovo='.prepare($ore_preavviso_rinnovo).', - esclusioni='.prepare($esclusioni).', descrizione='.prepare($descrizione).', - id_documento_fe='.prepare($id_documento_fe).', - num_item='.prepare($num_item).', - codice_cig='.prepare($codice_cig).', - codice_cup='.prepare($codice_cup).' WHERE id='.prepare($id_record); - - // costo_diritto_chiamata='.prepare($costo_diritto_chiamata).', ore_lavoro='.prepare($ore_lavoro).', costo_orario='.prepare($costo_orario).', costo_km='.prepare($costo_km).' - - $dbo->query($query); + $contratto->save(); $dbo->query('DELETE FROM my_impianti_contratti WHERE idcontratto='.prepare($id_record)); foreach ((array) post('matricolaimpianto') as $matricolaimpianto) { @@ -99,27 +59,27 @@ switch (post('op')) { } // Salvataggio costi attività unitari del contratto - foreach (post('costo_ore') as $idtipointervento => $valore) { - $rs = $dbo->fetchArray('SELECT * FROM co_contratti_tipiintervento WHERE idcontratto='.prepare($id_record).' AND idtipointervento='.prepare($idtipointervento)); + foreach (post('costo_ore') as $id_tipo => $valore) { + $rs = $dbo->fetchArray('SELECT * FROM co_contratti_tipiintervento WHERE idcontratto='.prepare($id_record).' AND idtipointervento='.prepare($id_tipo)); // Se non esiste il record lo inserisco... if (sizeof($rs) == 0) { // Se almeno un valore è diverso da 0 inserisco l'importo... - if (post('costo_ore')[$idtipointervento] != 0 || post('costo_km')[$idtipointervento] != 0 || post('costo_dirittochiamata')[$idtipointervento] != 0) { - $dbo->query('INSERT INTO co_contratti_tipiintervento(idcontratto, idtipointervento, costo_ore, costo_km, costo_dirittochiamata, costo_ore_tecnico, costo_km_tecnico, costo_dirittochiamata_tecnico) VALUES('.prepare($id_record).', '.prepare($idtipointervento).', '.prepare(post('costo_ore')[$idtipointervento]).', '.prepare(post('costo_km')[$idtipointervento]).', '.prepare(post('costo_dirittochiamata')[$idtipointervento]).', '.prepare(post('costo_ore_tecnico')[$idtipointervento]).', '.prepare(post('costo_km_tecnico')[$idtipointervento]).', '.prepare(post('costo_dirittochiamata_tecnico')[$idtipointervento]).')'); + if (post('costo_ore')[$id_tipo] != 0 || post('costo_km')[$id_tipo] != 0 || post('costo_dirittochiamata')[$id_tipo] != 0) { + $dbo->query('INSERT INTO co_contratti_tipiintervento(idcontratto, idtipointervento, costo_ore, costo_km, costo_dirittochiamata, costo_ore_tecnico, costo_km_tecnico, costo_dirittochiamata_tecnico) VALUES('.prepare($id_record).', '.prepare($id_tipo).', '.prepare(post('costo_ore')[$id_tipo]).', '.prepare(post('costo_km')[$id_tipo]).', '.prepare(post('costo_dirittochiamata')[$id_tipo]).', '.prepare(post('costo_ore_tecnico')[$id_tipo]).', '.prepare(post('costo_km_tecnico')[$id_tipo]).', '.prepare(post('costo_dirittochiamata_tecnico')[$id_tipo]).')'); } } // ...altrimenti... else { // Aggiorno il nuovo valore se è diverso da 0... - if (post('costo_ore')[$idtipointervento] != 0 || post('costo_km')[$idtipointervento] != 0 || post('costo_dirittochiamata')[$idtipointervento] != 0) { - $dbo->query('UPDATE co_contratti_tipiintervento SET costo_ore='.prepare(post('costo_ore')[$idtipointervento]).', costo_km='.prepare(post('costo_km')[$idtipointervento]).', costo_dirittochiamata='.prepare(post('costo_dirittochiamata')[$idtipointervento]).', costo_ore_tecnico='.prepare(post('costo_ore_tecnico')[$idtipointervento]).', costo_km_tecnico='.prepare(post('costo_km_tecnico')[$idtipointervento]).', costo_dirittochiamata_tecnico='.prepare(post('costo_dirittochiamata_tecnico')[$idtipointervento]).' WHERE idcontratto='.prepare($id_record).' AND idtipointervento='.prepare($idtipointervento)); + if (post('costo_ore')[$id_tipo] != 0 || post('costo_km')[$id_tipo] != 0 || post('costo_dirittochiamata')[$id_tipo] != 0) { + $dbo->query('UPDATE co_contratti_tipiintervento SET costo_ore='.prepare(post('costo_ore')[$id_tipo]).', costo_km='.prepare(post('costo_km')[$id_tipo]).', costo_dirittochiamata='.prepare(post('costo_dirittochiamata')[$id_tipo]).', costo_ore_tecnico='.prepare(post('costo_ore_tecnico')[$id_tipo]).', costo_km_tecnico='.prepare(post('costo_km_tecnico')[$id_tipo]).', costo_dirittochiamata_tecnico='.prepare(post('costo_dirittochiamata_tecnico')[$id_tipo]).' WHERE idcontratto='.prepare($id_record).' AND idtipointervento='.prepare($id_tipo)); } // ...altrimenti cancello l'eventuale riga else { - $dbo->query('DELETE FROM co_contratti_tipiintervento WHERE idcontratto='.prepare($id_record).' AND idtipointervento='.prepare($idtipointervento)); + $dbo->query('DELETE FROM co_contratti_tipiintervento WHERE idcontratto='.prepare($id_record).' AND idtipointervento='.prepare($id_tipo)); } } } @@ -150,6 +110,42 @@ switch (post('op')) { break; + case 'manage_articolo': + if (post('idriga') != null) { + $articolo = Articolo::find(post('idriga')); + } else { + $originale = ArticoloOriginale::find(post('idarticolo')); + $articolo = Articolo::build($contratto, $originale); + } + + $qta = post('qta'); + + $articolo->descrizione = post('descrizione'); + $articolo->um = post('um') ?: null; + + $articolo->id_iva = post('idiva'); + + //$articolo->prezzo_unitario_acquisto = post('prezzo_acquisto') ?: 0; + $articolo->prezzo_unitario_vendita = post('prezzo'); + $articolo->sconto_unitario = post('sconto'); + $articolo->tipo_sconto = post('tipo_sconto'); + + try { + $articolo->qta = $qta; + } catch (UnexpectedValueException $e) { + flash()->error(tr('Alcuni serial number sono già stati utilizzati!')); + } + + $articolo->save(); + + if (post('idriga') != null) { + flash()->info(tr('Articolo modificato!')); + } else { + flash()->info(tr('Articolo aggiunto!')); + } + + break; + case 'manage_sconto': if (post('idriga') != null) { $sconto = Sconto::find(post('idriga')); @@ -173,108 +169,72 @@ switch (post('op')) { break; - // Aggiungo una riga al contratto - case 'addriga': - $idiva = post('idiva'); - $idarticolo = post('idarticolo'); - $descrizione = post('descrizione'); + case 'manage_riga': + if (post('idriga') != null) { + $riga = Riga::find(post('idriga')); + } else { + $riga = Riga::build($contratto); + } $qta = post('qta'); - $prezzo = post('prezzo'); - // Calcolo dello sconto - $sconto_unitario = post('sconto'); - $tipo_sconto = post('tipo_sconto'); - $sconto = calcola_sconto([ - 'sconto' => $sconto_unitario, - 'prezzo' => $prezzo, - 'tipo' => $tipo_sconto, - 'qta' => $qta, - ]); + $riga->descrizione = post('descrizione'); + $riga->um = post('um') ?: null; - $subtot = $prezzo * $qta; + $riga->id_iva = post('idiva'); - $um = post('um'); + //$riga->prezzo_unitario_acquisto = post('prezzo_acquisto') ?: 0; + $riga->prezzo_unitario_vendita = post('prezzo'); + $riga->sconto_unitario = post('sconto'); + $riga->tipo_sconto = post('tipo_sconto'); - // Lettura iva dell'articolo - $rs2 = $dbo->fetchArray('SELECT percentuale, descrizione, indetraibile FROM co_iva WHERE id='.prepare($idiva)); - $iva = ($prezzo * $qta - $sconto) / 100 * $rs2[0]['percentuale']; - $iva_indetraibile = $iva / 100 * $rs2[0]['indetraibile']; - $desc_iva = $rs2[0]['descrizione']; + $riga->qta = $qta; - $dbo->query('INSERT INTO co_righe_contratti(idcontratto, idarticolo, idiva, desc_iva, iva, iva_indetraibile, descrizione, subtotale, um, qta, sconto, sconto_unitario, tipo_sconto, is_descrizione, `order`) VALUES ('.prepare($id_record).', '.prepare($idarticolo).', '.prepare($idiva).', '.prepare($desc_iva).', '.prepare($iva).', '.prepare($iva_indetraibile).', '.prepare($descrizione).', '.prepare($subtot).', '.prepare($um).', '.prepare($qta).', '.prepare($sconto).', '.prepare($sconto_unitario).', '.prepare($tipo_sconto).', '.prepare(empty($qta)).', (SELECT IFNULL(MAX(`order`) + 1, 0) FROM co_righe_contratti AS t WHERE idcontratto='.prepare($id_record).'))'); + $riga->save(); - // Messaggi informativi - if (!empty($idarticolo)) { - flash()->info(tr('Articolo aggiunto!')); - } elseif (!empty($qta)) { + if (post('idriga') != null) { + flash()->info(tr('Riga modificata!')); + } else { flash()->info(tr('Riga aggiunta!')); + } + + // Ricalcolo inps, ritenuta e bollo + ricalcola_costiagg_fattura($id_record); + + break; + + case 'manage_descrizione': + if (post('idriga') != null) { + $riga = Descrizione::find(post('idriga')); + } else { + $riga = Descrizione::build($contratto); + } + + $riga->descrizione = post('descrizione'); + + $riga->save(); + + if (post('idriga') != null) { + flash()->info(tr('Riga descrittiva modificata!')); } else { flash()->info(tr('Riga descrittiva aggiunta!')); } break; - case 'editriga': - $idriga = post('idriga'); - - $rs = $dbo->fetchArray("SELECT * FROM co_righe_contratti WHERE id='".$idriga."'"); - $is_descrizione = $rs[0]['is_descrizione']; - - $idarticolo = post('idarticolo'); - $descrizione = post('descrizione'); - - $qta = post('qta'); - $prezzo = post('prezzo'); - $subtot = $prezzo * $qta; - - // Calcolo dello sconto - $sconto_unitario = post('sconto'); - $tipo_sconto = post('tipo_sconto'); - $sconto = calcola_sconto([ - 'sconto' => $sconto_unitario, - 'prezzo' => $prezzo, - 'tipo' => $tipo_sconto, - 'qta' => $qta, - ]); - - $idiva = post('idiva'); - $um = post('um'); - - // Calcolo iva - $query = 'SELECT percentuale, descrizione, indetraibile FROM co_iva WHERE id='.prepare($idiva); - $rs = $dbo->fetchArray($query); - $iva = ($subtot - $sconto) / 100 * $rs[0]['percentuale']; - $iva_indetraibile = $iva / 100 * $rs[0]['indetraibile']; - $desc_iva = $rs[0]['descrizione']; - - // Modifica riga generica sul documento - if ($is_descrizione == 0) { - $query = 'UPDATE co_righe_contratti SET idarticolo='.prepare($idarticolo).', idiva='.prepare($idiva).', desc_iva='.prepare($desc_iva).', iva='.prepare($iva).', iva_indetraibile='.prepare($iva_indetraibile).', descrizione='.prepare($descrizione).', subtotale='.prepare($subtot).', sconto='.prepare($sconto).', sconto_unitario='.prepare($sconto_unitario).', tipo_sconto='.prepare($tipo_sconto).', um='.prepare($um).', qta='.prepare($qta).' WHERE id='.prepare($idriga); - } else { - $query = 'UPDATE co_righe_contratti SET descrizione='.prepare($descrizione).' WHERE id='.prepare($idriga); - } - $dbo->query($query); - - flash()->info(tr('Riga modificata!')); - - break; - // Eliminazione riga - case 'delriga': - if (post('idriga') !== null) { - $idriga = post('idriga'); + case 'delete_riga': + $id_riga = post('idriga'); + if ($id_riga !== null) { + $riga = Descrizione::find($id_riga) ?: Riga::find($id_riga); + $riga = $riga ? $riga : Articolo::find($id_riga); + $riga = $riga ? $riga : Sconto::find($id_riga); - $query = 'DELETE FROM `co_righe_contratti` WHERE idcontratto='.prepare($id_record).' AND id='.prepare($idriga); + $riga->delete(); - if ($dbo->query($query)) { - flash()->info(tr('Riga eliminata!')); - } + flash()->info(tr('Riga eliminata!')); } - // Ricalcolo il budget - $dbo->query('UPDATE co_contratti SET budget=( SELECT SUM(subtotale) FROM co_righe_contratti GROUP BY idcontratto HAVING idcontratto=co_contratti.id ) WHERE id='.prepare($id_record)); - break; // Scollegamento intervento da contratto @@ -292,16 +252,16 @@ switch (post('op')) { } break; - case 'update_position': - $orders = explode(',', $_POST['order']); - $order = 0; + case 'update_position': + $orders = explode(',', $_POST['order']); + $order = 0; - foreach ($orders as $idriga) { - $dbo->query('UPDATE `co_righe_contratti` SET `order`='.prepare($order).' WHERE id='.prepare($idriga)); - ++$order; - } + foreach ($orders as $idriga) { + $dbo->query('UPDATE `co_righe_contratti` SET `order`='.prepare($order).' WHERE id='.prepare($idriga)); + ++$order; + } - break; + break; // eliminazione contratto case 'delete': diff --git a/modules/contratti/row-add.php b/modules/contratti/row-add.php index 3c9913a42..677af3f51 100644 --- a/modules/contratti/row-add.php +++ b/modules/contratti/row-add.php @@ -9,7 +9,7 @@ $documento = Contratto::find($id_record); // Impostazioni per la gestione $options = [ - 'op' => 'addriga', + 'op' => 'manage_riga', 'action' => 'add', 'dir' => $documento->direzione, 'idanagrafica' => $documento['idanagrafica'], @@ -43,12 +43,15 @@ if ($listino[0]['prc_guadagno'] > 0) { $file = 'riga'; if (get('is_descrizione') !== null) { $file = 'descrizione'; + + $options['op'] = 'manage_descrizione'; } elseif (get('is_articolo') !== null) { $file = 'articolo'; + + $options['op'] = 'manage_articolo'; } elseif (get('is_sconto') !== null) { $file = 'sconto'; $options['op'] = 'manage_sconto'; } - echo App::load($file.'.php', $result, $options); diff --git a/modules/contratti/row-edit.php b/modules/contratti/row-edit.php index 81ea36626..a6e30b656 100644 --- a/modules/contratti/row-edit.php +++ b/modules/contratti/row-edit.php @@ -9,7 +9,7 @@ $documento = Contratto::find($id_record); // Impostazioni per la gestione $options = [ - 'op' => 'editriga', + 'op' => 'manage_riga', 'action' => 'edit', 'dir' => $documento->direzione, 'idanagrafica' => $documento['idanagrafica'], @@ -29,8 +29,12 @@ $result['prezzo'] = $riga->prezzo_unitario_vendita; $file = 'riga'; if ($riga->isDescrizione()) { $file = 'descrizione'; + + $options['op'] = 'manage_descrizione'; } elseif ($riga->isArticolo()) { $file = 'articolo'; + + $options['op'] = 'manage_articolo'; } elseif ($riga->isSconto()) { $file = 'sconto'; diff --git a/modules/contratti/row-list.php b/modules/contratti/row-list.php index d308de23e..4df347834 100644 --- a/modules/contratti/row-list.php +++ b/modules/contratti/row-list.php @@ -2,17 +2,15 @@ include_once __DIR__.'/../../core.php'; -/* -ARTICOLI + RIGHE GENERICHE -*/ -$rs = $dbo->fetchArray('SELECT *, round(sconto_unitario,'.setting('Cifre decimali per importi').') AS sconto_unitario, round(sconto,'.setting('Cifre decimali per importi').') AS sconto, round(subtotale,'.setting('Cifre decimali per importi').') AS subtotale, IFNULL((SELECT codice FROM mg_articoli WHERE id=idarticolo), "") AS codice FROM co_righe_contratti WHERE idcontratto='.prepare($id_record).' ORDER BY `order`'); +// Righe documento +$righe = $contratto->getRighe(); echo '
'.tr('Descrizione').' | -'.tr('Q.tà').' | '.tr('Q.tà').' | +'.tr('Q.tà').' | '.tr('U.m.').' | '.tr('Costo unitario').' | '.tr('Iva').' | @@ -22,79 +20,69 @@ echo '||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
'; - if (!empty($r['idarticolo'])) { - echo Modules::link('Articoli', $r['idarticolo'], $r['codice'].' - '.$r['descrizione']); + | + '.$descrizione.' + | '; + + if ($riga->isDescrizione()) { + echo ' ++ | + | + | + | '; } else { - echo nl2br($r['descrizione']); - } - - echo ' + // Q.tà + echo ' + | + '.Translator::numberToLocale($riga->qta_rimanente, 'qta').' / '.Translator::numberToLocale($riga->qta, 'qta').' | '; - // Q.tà - echo ' -'; - - if (empty($r['is_descrizione'])) { + // Unità di misura echo ' - '.Translator::numberToLocale($r['qta'] - $r['qta_evasa'], 'qta').' / '.Translator::numberToLocale($r['qta'], 'qta').''; - } - echo ' + | + '.$riga->um.' | '; - // um - echo ' -'; - if (empty($r['is_descrizione'])) { + // Costo unitario echo ' - '.$r['um']; - } - echo ' - | '; ++ '.moneyFormat($riga->prezzo_unitario_vendita); - // Costo unitario - echo ' - | ';
- if (empty($r['is_descrizione'])) {
- echo '
- '.moneyFormat($r['subtotale'] / $r['qta']);
-
- if ($r['sconto_unitario'] > 0) {
+ if ($riga->sconto_unitario > 0) {
echo '
- '.tr('sconto _TOT_ _TYPE_', [ - '_TOT_' => Translator::numberToLocale($r['sconto_unitario']), - '_TYPE_' => ($r['tipo_sconto'] == 'PRC' ? '%' : currency()), + '.tr('sconto _TOT_ _TYPE_', [ + '_TOT_' => Translator::numberToLocale($riga->sconto_unitario), + '_TYPE_' => ($riga->tipo_sconto == 'PRC' ? '%' : currency()), ]).''; } - } - echo' + + echo' | ';
- // IVA
- echo '
- ';
- if (empty($r['is_descrizione'])) {
+ // IVA
echo '
- '.moneyFormat($r['iva'])." - ".$r['desc_iva'].''; - } - echo ' + |
+ '.moneyFormat($riga->iva).' + '.$riga->aliquota->descrizione.(($riga->aliquota->esente) ? ' ('.$riga->aliquota->codice_natura_fe.')' : null).' | ';
- // Imponibile
- echo '
- '; - if (empty($r['is_descrizione'])) { + // Imponibile echo ' - '.moneyFormat($r['subtotale'] - $r['sconto']); - } - echo ' + | + '.moneyFormat($riga->imponibile_scontato).' | '; + } // Possibilità di rimuovere una riga solo se il preventivo non è stato pagato echo ' @@ -102,20 +90,14 @@ foreach ($rs as $r) { if ($record['stato'] != 'Pagato') { echo ' -
+ | '.tr('Imponibile', [], ['upper' => true]).': | - '.moneyFormat($imponibile, 2).' + '.moneyFormat($contratto->imponibile, 2).' | ||||||||||||||
+ | '.tr('Sconto', [], ['upper' => true]).': | - '.moneyFormat($sconto, 2).' + '.moneyFormat($contratto->sconto, 2).' | ||||||||||||||
+ | '.tr('Imponibile scontato', [], ['upper' => true]).': | - '.moneyFormat($imponibile_scontato, 2).' + '.moneyFormat($contratto->imponibile_scontato, 2).' | ||||||||||||||
+ | '.tr('Imponibile', [], ['upper' => true]).': | - '.moneyFormat($imponibile, 2).' + '.moneyFormat($contratto->imponibile, 2).' | ||||||||||||||
+ | '.tr('Iva', [], ['upper' => true]).': | - '.moneyFormat($iva, 2).' + '.moneyFormat($contratto->iva, 2).' | ||||||||||||||
+ | '.tr('Totale', [], ['upper' => true]).': | - '.moneyFormat($totale, 2).' + '.moneyFormat($contratto->totale, 2).' |