diff --git a/modules/contratti/actions.php b/modules/contratti/actions.php index 0e7326ae5..96f081f50 100644 --- a/modules/contratti/actions.php +++ b/modules/contratti/actions.php @@ -159,7 +159,7 @@ switch (post('op')) { $iva_indetraibile = $iva / 100 * $rs2[0]['indetraibile']; $desc_iva = $rs2[0]['descrizione']; - $dbo->query('INSERT INTO co_righe2_contratti(idcontratto, idiva, iva, iva_indetraibile, descrizione, subtotale, um, qta, sconto, sconto_unitario, tipo_sconto) VALUES ('.prepare($id_record).', '.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).', (SELECT IFNULL(MAX(`order`) + 1, 0) FROM co_righe2_contratti AS t WHERE idcontratto='.prepare($id_record).'))'); + $dbo->query('INSERT INTO co_righe2_contratti(idcontratto, idiva, desc_iva, iva, iva_indetraibile, descrizione, subtotale, um, qta, sconto, sconto_unitario, tipo_sconto, `order`) VALUES ('.prepare($id_record).', '.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).', (SELECT IFNULL(MAX(`order`) + 1, 0) FROM co_righe2_contratti AS t WHERE idcontratto='.prepare($id_record).'))'); $_SESSION['infos'][] = tr('Articolo aggiunto!'); @@ -229,6 +229,21 @@ switch (post('op')) { } break; + case 'update_position': + $start = filter('start'); + $end = filter('end'); + $id = filter('id'); + + if ($start > $end) { + $dbo->query('UPDATE `co_righe2_contratti` SET `order`=`order` + 1 WHERE `order`>='.prepare($end).' AND `order`<'.prepare($start).' AND `idcontratto`='.prepare($id_record)); + $dbo->query('UPDATE `co_righe2_contratti` SET `order`='.prepare($end).' WHERE id='.prepare($id)); + } elseif ($end != $start) { + $dbo->query('UPDATE `co_righe2_contratti` SET `order`=`order` - 1 WHERE `order`>'.prepare($start).' AND `order`<='.prepare($end).' AND `idcontratto`='.prepare($id_record)); + $dbo->query('UPDATE `co_righe2_contratti` SET `order`='.prepare($end).' WHERE id='.prepare($id)); + } + + break; + // eliminazione contratto case 'delete': $dbo->query('DELETE FROM co_contratti WHERE id='.prepare($id_record)); diff --git a/modules/contratti/row-list.php b/modules/contratti/row-list.php index 8a6749569..ba9ecc8c2 100644 --- a/modules/contratti/row-list.php +++ b/modules/contratti/row-list.php @@ -11,96 +11,105 @@ $totale_da_evadere = 0.00; /* ARTICOLI */ -$q_art = 'SELECT * FROM co_righe2_contratti WHERE idcontratto='.prepare($id_record); -$rs_art = $dbo->fetchArray($q_art); +$rs_art = $dbo->fetchArray('SELECT * FROM co_righe2_contratti WHERE idcontratto='.prepare($id_record).' ORDER BY `order`'); $imponibile_art = 0.0; $iva_art = 0.0; echo '
'.tr('Descrizione').' | -'.tr('Q.tà').' | -'.tr('U.m.').' | -'.tr('Costo unitario').' | -'.tr('Iva').' | -'.tr('Imponibile').' | -- | ||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
'.tr('Descrizione').' | +'.tr('Q.tà').' | +'.tr('U.m.').' | +'.tr('Costo unitario').' | +'.tr('Iva').' | +'.tr('Imponibile').' | ++ | ||||||
- '.nl2br($r['descrizione']).' - | '; +||||||||||||
+ '.nl2br($r['descrizione']).' + | '; // q.tà echo ' -- '.Translator::numberToLocale($r['qta']).' - | '; ++ '.Translator::numberToLocale($r['qta']).' + | '; // um echo ' -- '.$r['um'].' - | '; ++ '.$r['um'].' + | '; // costo unitario echo ' -- '.Translator::numberToLocale($r['subtotale'] / $r['qta']).' € - | '; ++ '.Translator::numberToLocale($r['subtotale'] / $r['qta']).' € + | '; // iva echo ' -
- '.Translator::numberToLocale($r['iva'])." € - ".$r['desc_iva'].' - | ';
+
+ '.Translator::numberToLocale($r['iva'])." € + ".$r['desc_iva'].' + | ';
// Imponibile
echo '
- - '.Translator::numberToLocale($r['subtotale']).' €'; + |
+ '.Translator::numberToLocale($r['subtotale']).' €';
if ($r['sconto_unitario'] > 0) {
echo '
- - sconto '.Translator::numberToLocale($r['sconto_unitario']).($r['tipo_sconto'] == 'PRC' ? '%' : ' €').''; + - sconto '.Translator::numberToLocale($r['sconto_unitario']).($r['tipo_sconto'] == 'PRC' ? '%' : ' €').''; } echo ' - | ';
+ ';
// Possibilità di rimuovere una riga solo se il preventivo non è stato pagato
echo '
- '; + | ';
if ($records[0]['stato'] != 'Pagato' && empty($r['sconto_globale'])) {
echo '
- ';
+ }
+
+ if (empty($r['sconto_globale'])) {
+ echo '
+
+
+ ';
}
echo '
- |
-
RAPPORTO OPERAZIONI E INTERVENTI | +'.tr('Rapporto operazioni e interventi', [], ['upper' => true]).' | ||||||
---|---|---|---|---|---|---|---|
Intervento numero: '.$records[0]['codice'].' | -Data: '.Translator::dateToLocale($records[0]['data_richiesta']).' | -Preventivo No: '.$records[0]['numero_preventivo'].' | -Contratto No: '.$records[0]['numero_contratto'].' | +'.tr('Intervento numero').': '.$records[0]['codice'].' | +'.tr('Data').': '.Translator::dateToLocale($records[0]['data_richiesta']).' | +'.tr('Preventivo No').': '.$records[0]['numero_preventivo'].' | +'.tr('Contratto No').': '.$records[0]['numero_contratto'].' |
- Cliente: '.$c_ragionesociale.' + '.tr('Cliente').': '.$c_ragionesociale.' | '; -//Codice fiscale +// Codice fiscale echo '- P.iva: '.strtoupper($c_piva).' + '.tr('P.Iva').': '.strtoupper($c_piva).' | ||||||
- Via: '.$c_indirizzo.' - - Cap: '.$c_cap.' - - Comune: '.$c_citta.' ('.strtoupper($c_provincia).') + '.tr('Via').': '.$c_indirizzo.' - + '.tr('CAP').': '.$c_cap.' - + '.tr('Comune').': '.$c_citta.' ('.strtoupper($c_provincia).') | |||||||
- Telefono: '.$c_telefono.''; + '.tr('Telefono').': '.$c_telefono.''; if (!empty($c_cellulare)) { - echo' - Cellulare: '.$c_cellulare.''; + echo' - '.tr('Cellulare').': '.$c_cellulare.''; } echo ' | |||||||
- Impianti: '.implode(', ', $impianti).' + '.tr('Impianti').': '.implode(', ', $impianti).' | |||||||
- Richiesta:
+ '.tr('Richiesta').':
'.nl2br($records[0]['richiesta']).' |
|||||||
Descrizione: | -|||||||
'.nl2br($records[0]['descrizione_intervento']).' | +
+ '.tr('Descrizione').':
+ '.nl2br($records[0]['descrizione_intervento']).' + |
+ '.tr('Materiale utilizzato', [], ['upper' => true]).' + | +|||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
- '.tr('Materiale utilizzato', [], ['upper' => true]).' - | -|||||||||||||||||||||||||||||||||||||||||||||||||
+ '.tr('Codice').' + | -|||||||||||||||||||||||||||||||||||||||||||||||||
- '.tr('Codice').' - | ++ '.tr('Descrizione').' + | -- '.tr('Descrizione').' - | ++ '.tr('Q.tà').' + | -- '.tr('Q.tà').' - | ++ '.tr('Prezzo').' + | +- '.tr('Prezzo listino').' - | - -- '.tr('Sconto').' - | - -- '.tr('Subtot. netto').' - | - '; - - $totale_articoli = []; + '; foreach ($rs2 as $r) { echo ' -|||||||||||||||||||||||||||||||||||||||||
- '.$r['codice_art'].' - | '; ++ '.$r['codice_art'].' + | '; // Descrizione echo ' -- '.$r['descrizione'].' - | '; ++ '.$r['descrizione'].' + | '; // Quantità echo ' -- '.Translator::numberToLocale($r['sumqta'], 2).' '.$r['um'].' - | '; - - // Prezzo unitario - echo ' -- '.($visualizza_costi ? Translator::numberToLocale($r['prezzo_vendita'], 2).' €' : '-').' - | '; - - // Sconto unitario - if ($r['sconto_unitario'] > 0) { - $sconto = Translator::numberToLocale($r['sconto_unitario']).($r['tipo_sconto'] == 'PRC' ? '%' : ' €'); - } else { - $sconto = '-'; - } - - echo ' -- '.($visualizza_costi ? $sconto : '-').' - | '; ++ '.Translator::numberToLocale($r['qta'], 2).' '.$r['um'].' + | '; // Netto - $netto = ($r['prezzo_vendita'] - $r['sconto']) * $r['sumqta']; - + $netto = $r['prezzo_vendita'] * $r['qta'] - $r['sconto']; echo ' -- '.($visualizza_costi ? Translator::numberToLocale($netto, 2) : '-').' - | -+ '.($visualizza_costi ? Translator::numberToLocale($netto, 2) : '-').' + | + '; } - $totale_articoli = sum($totale_articoli); - $totale[] = $totale_articoli; + echo ' + '; // Totale spesa articoli if ($visualizza_costi) { echo '||||||||||||||||||||||||||||||||||||||||
+ | '.tr('Totale materiale utilizzato', [], ['upper' => true]).': | -- '.Translator::numberToLocale($totale_articoli, 2).' € - | ++ '.Translator::numberToLocale($costi_intervento['ricambi_scontato'], 2).' € + |
+ '.tr('Spese aggiuntive', [], ['upper' => true]).' + | +|||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
- '.tr('Spese aggiuntive', [], ['upper' => true]).' - | -|||||||||||||||||||||||||||||||||||||||||||||||||
+ '.tr('Descrizione').' + | -|||||||||||||||||||||||||||||||||||||||||||||||||
- - | ++ '.tr('Q.tà').' + | -- '.tr('Descrizione').' - | ++ '.tr('Prezzo unitario').' + | -- '.tr('Q.tà').' - | ++ '.tr('Subtot.').' + | +- '.tr('Prezzo listino').' - | - -- '.tr('Sconto').' - | - -- '.tr('Subtot. netto').' - | - '; - - $totale_righe = []; + '; foreach ($rs2 as $r) { // Articolo echo '|||||||||||||||||||||||||||||||||||||||||
- | '.nl2br($r['descrizione']).' | '; // Quantità echo ' -+ | '.Translator::numberToLocale($r['qta'], 2).' | '; // Prezzo unitario - echo ' -+ | '.($visualizza_costi ? Translator::numberToLocale($r['prezzo_vendita'], 2).' €' : '-').' | '; - // Sconto unitario - if ($r['sconto_unitario'] > 0) { - $sconto = Translator::numberToLocale($r['sconto_unitario']).($r['tipo_sconto'] == 'PRC' ? '%' : ' €'); - } else { - $sconto = '-'; - } - - echo ' -- '.($visualizza_costi ? $sconto : '-').' - | '; - // Prezzo totale - $netto = ($r['prezzo_vendita'] - $r['sconto']) * $r['qta']; - + $netto = $r['prezzo_vendita'] * $r['qta'] - $r['sconto']; echo ' -+ | '.($visualizza_costi ? Translator::numberToLocale($netto, 2) : '-').' | |||||||||||||||||||||||||||||||||||||||||
+ | '.tr('Totale spese aggiuntive', [], ['upper' => true]).': | -- '.Translator::numberToLocale($totale_righe, 2).' € - | ++ '.Translator::numberToLocale($costi_intervento['altro_scontato'], 2).' € + |
- '.tr('Ore tecnici', [], ['upper' => true]).' - | -|||||||||||||||||||||||||||||||||||||||||||||||||
- '.tr('Tecnico').' - | +
+ '.tr('Ore tecnici', [], ['upper' => true]).' + | +||||||||
---|---|---|---|---|---|---|---|---|
+ '.tr('Tecnico').' + | -- '.tr('Data').' - | ++ '.tr('Data').' + | -- '.tr('Dalle').' - | ++ '.tr('Dalle').' + | -- '.tr('Alle').' - | ++ '.tr('Alle').' + | -- '.tr('Sconto').' - | -+ '.tr('I dati del ricevente verrano trattati in base al D.lgs n. 196/2003').' + | + + + + '; // Sessioni di lavoro dei tecnici $rst = $dbo->fetchArray('SELECT an_anagrafiche.*, in_interventi_tecnici.* FROM in_interventi_tecnici JOIN an_anagrafiche ON in_interventi_tecnici.idtecnico=an_anagrafiche.idanagrafica WHERE in_interventi_tecnici.idintervento='.prepare($idintervento).' ORDER BY in_interventi_tecnici.orario_inizio'); -$totale_ore = 0; -$totale_costo_ore = 0; -$totale_costo_km = 0; -$totale_sconto = 0; -$totale_sconto_km = 0; -$totale_manodopera = 0; -$totale_viaggio = 0; - -foreach ($rst as $r) { +foreach ($rst as $i => $r) { echo '
+ | '.$r['ragione_sociale'].' | '; // data echo ' -+ | '.Translator::dateToLocale($r['orario_inizio'], '-').' | '; // ora inizio echo ' -+ | '.Translator::timeToLocale($r['orario_inizio'], '-').' | '; // ora fine echo ' -+ | '.Translator::timeToLocale($r['orario_fine'], '-').' - | '; - - // Sconto - echo ' -- '.($r['sconto_unitario'] > 0 ? Translator::numberToLocale($r['sconto_unitario']).($r['tipo_sconto'] == 'PRC' ? '%' : ' €') : '-').' - | -
- - | - '.tr('Descrizione').' - | - -- '.tr('Q.tà').' - | - -- '.tr('Prezzo listino').' - | - -- '.tr('Subtot. netto').' - | -||||
- - | - '.tr('Ore tecnici').' - | - -- '.Translator::numberToLocale($totale_ore, 2).' ore | '; -if ($visualizza_costi) { - echo ' -- '.Translator::numberToLocale($totale_costo_ore, 2).' € - | - -- '.Translator::numberToLocale($totale_manodopera, 2).' € - | '; -} else { - echo ' -- | -- | '; -} - -echo ' -||
- - | - '.tr('Km / viaggio').' - | - -- '.Translator::numberToLocale($totale_km, 2).' km - | '; - - if ($visualizza_costi) { + // Spazio aggiuntivo + if ($i == 0) { echo ' -- '.Translator::numberToLocale($totale_costo_km, 2).' € - | - -- '.Translator::numberToLocale($totale_viaggio, 2).' € + | + '.tr('Si dichiara che i lavori sono stati eseguiti ed i materiali installati').' | '; } else { echo ' -- | -- | '; +'; } - echo ' - |
- '.tr('Totale intervento', [], ['upper' => true]).': - | - -- '.Translator::numberToLocale($totale_intervento, 2).' € - |
- '.tr('Imponibile', [], ['upper' => true]).': - | +
+ '.tr('Costo orario').': '.Translator::numberToLocale($costo_orario, 2).''; - | - '.Translator::numberToLocale($totale, 2).' € + if ($records[0]['tot_dirittochiamata'] != 0) { + echo ' + + '.Translator::numberToLocale($records[0]['tot_dirittochiamata'], 2).' d.c.'; + } + + echo ' + | '; + + // Costo totale manodopera + echo ' +
+ '.tr('Manodopera').': '.Translator::numberToLocale($costi_intervento['manodopera_scontato'], 2).' + | ';
+} else {
+ echo '
+ '; +} + +// Timbro e firma +$firma = !empty($records[0]['firma_file']) ? '' : ''; +echo ' + |
+ '.$firma.' + ('.tr('Timbro e firma leggibile').'.) |
||||
+ '.tr('Imponibile', [], ['upper' => true]).': + | + ++ '.Translator::numberToLocale($costi_intervento['totale_scontato'], 2).' € + | +||||||||
---|---|---|---|---|---|---|---|---|---|
+ | '.tr('Sconto incondizionato', [], ['upper' => true]).': | -- -'.Translator::numberToLocale($sconto, 2).' € - | ++ -'.Translator::numberToLocale($costi_intervento['sconto_globale'], 2).' € + | ||||||
+ | '.tr('Imponibile scontato', [], ['upper' => true]).': | -- '.Translator::numberToLocale($totale, 2).' € - | ++ '.Translator::numberToLocale($costi_intervento['totale'], 2).' € + | ||||||
+ | '.tr('Iva (_PRC_%)', [ '_PRC_' => Translator::numberToLocale($percentuale_iva, 0), ], ['upper' => true]).': | -+ | '.Translator::numberToLocale($iva, 2).' € - + | ||||||
+ | '.tr('Totale intervento', [], ['upper' => true]).': | -+ | '.Translator::numberToLocale($totale, 2).' € - - |
- '.tr('Si dichiara che i lavori sono stati eseguiti ed i materiali installati').'. - '.tr('I dati del ricevente verrano trattati in base al D.lgs n. 196/2003').'. - |
-
- '.$firma.' - ('.tr('Timbro e firma leggibile').'.) - |
-