diff --git a/modules/fatture/actions.php b/modules/fatture/actions.php index 90f140199..a6ccbb174 100644 --- a/modules/fatture/actions.php +++ b/modules/fatture/actions.php @@ -299,6 +299,8 @@ switch (post('op')) { $data = $rs[0]['data']; $codice = $rs[0]['codice']; + $dati = $dbo->fetchArray('SELECT (SELECT SUM(km) FROM in_interventi_tecnici GROUP BY idintervento HAVING idintervento=in_interventi.id) AS km, (SELECT costo_orario FROM in_tipiintervento WHERE idtipointervento=in_interventi.idtipointervento) AS prezzo_ore_unitario, (SELECT costo_km FROM in_tipiintervento WHERE idtipointervento=in_interventi.idtipointervento) AS prezzo_km_unitario, (SELECT costo_diritto_chiamata FROM in_tipiintervento WHERE idtipointervento=in_interventi.idtipointervento) AS prezzo_diritto_chiamata, (SELECT SUM(TIME_TO_SEC(TIMEDIFF(orario_fine, orario_inizio))) FROM in_interventi_tecnici GROUP BY idintervento HAVING in_interventi_tecnici.idintervento=in_interventi.id) AS t1, (SELECT SUM(km) FROM in_interventi_tecnici GROUP BY idintervento HAVING idintervento=in_interventi.id) AS km, (SELECT SUM(prezzo_ore_consuntivo) FROM in_interventi_tecnici GROUP BY idintervento HAVING idintervento=in_interventi.id) AS tot_ore_consuntivo, (SELECT SUM(prezzo_km_consuntivo) FROM in_interventi_tecnici GROUP BY idintervento HAVING idintervento=in_interventi.id) AS tot_km_consuntivo, (SELECT COUNT(idtecnico) FROM in_interventi_tecnici WHERE idintervento=in_interventi.id) AS n_tecnici FROM `in_interventi` WHERE in_interventi.id='.prepare($idintervento).' AND in_interventi.id NOT IN (SELECT idintervento FROM co_righe_documenti WHERE idintervento IS NOT NULL AND NOT idintervento IS NULL)'); + $costi_intervento = get_costi_intervento($idintervento); $prezzo = $costi_intervento['manodopera_scontato'] + $costi_intervento['viaggio_scontato']; @@ -345,55 +347,54 @@ switch (post('op')) { $desc_iva = $rs[0]['descrizione']; $subtot = $rsr[$i]['prezzo_vendita'] * $rsr[$i]['qta']; - $iva = ($subtot) / 100 * $rs[0]['percentuale']; + $sconto = $rsr[$i]['sconto']; + $iva = ($subtot - $sconto) / 100 * $rs[0]['percentuale']; $iva_indetraibile = $iva / 100 * $rs[0]['indetraibile']; // Calcolo rivalsa inps $query = 'SELECT * FROM co_rivalsainps WHERE id='.prepare(get_var('Percentuale rivalsa INPS')); $rs = $dbo->fetchArray($query); - $rivalsainps = ($subtot) / 100 * $rs[0]['percentuale']; + $rivalsainps = ($subtot - $sconto) / 100 * $rs[0]['percentuale']; // Calcolo ritenuta d'acconto $query = 'SELECT * FROM co_ritenutaacconto WHERE id='.prepare(get_var("Percentuale ritenuta d'acconto")); $rs = $dbo->fetchArray($query); - $ritenutaacconto = ($subtot + $rivalsainps) / 100 * $rs[0]['percentuale']; + $ritenutaacconto = ($subtot - $sconto + $rivalsainps) / 100 * $rs[0]['percentuale']; - $query = 'INSERT INTO co_righe_documenti(iddocumento, idintervento, idconto, idiva, desc_iva, iva, iva_indetraibile, descrizione, subtotale, sconto, sconto_unitario, tipo_sconto, um, qta, idrivalsainps, rivalsainps, idritenutaacconto, ritenutaacconto, `order`) VALUES('.prepare($id_record).', '.prepare($idintervento).', '.prepare($idconto).', '.prepare($idiva).', '.prepare($desc_iva).', '.prepare($iva).', '.prepare($iva_indetraibile).', '.prepare($rsr[$i]['descrizione']).', '.prepare($subtot).", 0, 0, 'UNT', ".prepare($rsr[$i]['um']).', '.prepare($rsr[$i]['qta']).', '.prepare(get_var('Percentuale rivalsa INPS')).', '.prepare($rivalsainps).', '.prepare(get_var("Percentuale ritenuta d'acconto")).', '.prepare($ritenutaacconto).', (SELECT IFNULL(MAX(`order`) + 1, 0) FROM co_righe_documenti AS t WHERE iddocumento='.prepare($id_record).'))'; + $query = 'INSERT INTO co_righe_documenti(iddocumento, idintervento, idconto, idiva, desc_iva, iva, iva_indetraibile, descrizione, subtotale, sconto, sconto_unitario, tipo_sconto, um, qta, idrivalsainps, rivalsainps, idritenutaacconto, ritenutaacconto, `order`) VALUES('.prepare($id_record).', '.prepare($idintervento).', '.prepare($idconto).', '.prepare($idiva).', '.prepare($desc_iva).', '.prepare($iva).', '.prepare($iva_indetraibile).', '.prepare($rsr[$i]['descrizione']).', '.prepare($subtot).', '.prepare($rsr[$i]['sconto']).', '.prepare($rsr[$i]['sconto_unitario']).', '.prepare($rsr[$i]['tipo_sconto']).", ".prepare($rsr[$i]['um']).', '.prepare($rsr[$i]['qta']).', '.prepare(get_var('Percentuale rivalsa INPS')).', '.prepare($rivalsainps).', '.prepare(get_var("Percentuale ritenuta d'acconto")).', '.prepare($ritenutaacconto).', (SELECT IFNULL(MAX(`order`) + 1, 0) FROM co_righe_documenti AS t WHERE iddocumento='.prepare($id_record).'))'; $dbo->query($query); } } - $rs = $dbo->fetchArray('SELECT (SELECT SUM(km) FROM in_interventi_tecnici GROUP BY idintervento HAVING idintervento=in_interventi.id) AS km, (SELECT costo_orario FROM in_tipiintervento WHERE idtipointervento=in_interventi.idtipointervento) AS prezzo_ore_unitario, (SELECT costo_km FROM in_tipiintervento WHERE idtipointervento=in_interventi.idtipointervento) AS prezzo_km_unitario, (SELECT costo_diritto_chiamata FROM in_tipiintervento WHERE idtipointervento=in_interventi.idtipointervento) AS prezzo_diritto_chiamata, (SELECT SUM(TIME_TO_SEC(TIMEDIFF(orario_fine, orario_inizio))) FROM in_interventi_tecnici GROUP BY idintervento HAVING in_interventi_tecnici.idintervento=in_interventi.id) AS t1, (SELECT SUM(km) FROM in_interventi_tecnici GROUP BY idintervento HAVING idintervento=in_interventi.id) AS km, (SELECT SUM(prezzo_ore_consuntivo) FROM in_interventi_tecnici GROUP BY idintervento HAVING idintervento=in_interventi.id) AS tot_ore_consuntivo, (SELECT SUM(prezzo_km_consuntivo) FROM in_interventi_tecnici GROUP BY idintervento HAVING idintervento=in_interventi.id) AS tot_km_consuntivo, (SELECT COUNT(idtecnico) FROM in_interventi_tecnici WHERE idintervento=in_interventi.id) AS n_tecnici FROM `in_interventi` WHERE in_interventi.id='.prepare($idintervento).' AND in_interventi.id NOT IN (SELECT idintervento FROM co_righe_documenti WHERE idintervento IS NOT NULL AND NOT idintervento IS NULL)'); - - if (!empty($rs)) { + if (!empty($dati)) { // Subtot - $prezzo_ore_consuntivo = $rs[0]['tot_ore_consuntivo']; - $prezzo_km_consuntivo = $rs[0]['tot_km_consuntivo']; - $prezzo_ore_unitario = $rs[0]['prezzo_ore_unitario']; - $prezzo_km_unitario = $rs[0]['prezzo_km_unitario']; - $prezzo_diritto_chiamata = $rs[0]['prezzo_diritto_chiamata']; - $km = $rs[0]['km']; + $prezzo_ore_consuntivo = $dati[0]['tot_ore_consuntivo']; + $prezzo_km_consuntivo = $dati[0]['tot_km_consuntivo']; + $prezzo_ore_unitario = $dati[0]['prezzo_ore_unitario']; + $prezzo_km_unitario = $dati[0]['prezzo_km_unitario']; + $prezzo_diritto_chiamata = $dati[0]['prezzo_diritto_chiamata']; + $km = $dati[0]['km']; // Aggiunta km come "Trasferta" (se c'รจ) if ($prezzo_km_consuntivo > 0) { // Calcolo iva $query = 'SELECT * FROM co_iva WHERE id='.prepare($idiva); - $rs = $dbo->fetchArray($query); - $desc_iva = $rs[0]['descrizione']; + $dati = $dbo->fetchArray($query); + $desc_iva = $dati[0]['descrizione']; $subtot = $prezzo_km_consuntivo; - $iva = ($subtot) / 100 * $rs[0]['percentuale']; - $iva_indetraibile = $iva / 100 * $rs[0]['indetraibile']; + $iva = ($subtot) / 100 * $dati[0]['percentuale']; + $iva_indetraibile = $iva / 100 * $dati[0]['indetraibile']; // Calcolo rivalsa inps $query = 'SELECT * FROM co_rivalsainps WHERE id='.prepare(get_var('Percentuale rivalsa INPS')); - $rs = $dbo->fetchArray($query); - $rivalsainps = ($subtot) / 100 * $rs[0]['percentuale']; + $dati = $dbo->fetchArray($query); + $rivalsainps = ($subtot) / 100 * $dati[0]['percentuale']; // Calcolo ritenuta d'acconto $query = 'SELECT * FROM co_ritenutaacconto WHERE id='.prepare(get_var("Percentuale ritenuta d'acconto")); - $rs = $dbo->fetchArray($query); - $ritenutaacconto = ($subtot + $rivalsainps) / 100 * $rs[0]['percentuale']; + $dati = $dbo->fetchArray($query); + $ritenutaacconto = ($subtot + $rivalsainps) / 100 * $dati[0]['percentuale']; $query = 'INSERT INTO co_righe_documenti(iddocumento, idintervento, idiva, desc_iva, iva, iva_indetraibile, descrizione, subtotale, um, qta, idrivalsainps, rivalsainps, idritenutaacconto, ritenutaacconto, `order`) VALUES('.prepare($id_record).', '.prepare($idintervento).', '.prepare($idiva).', '.prepare($desc_iva).', '.prepare($iva).', '.prepare($iva_indetraibile).', '.prepare('Trasferta intervento '.$codice.' del '.Translator::dateToLocale($data)).', '.prepare($subtot).", 'km', ".prepare($km).', '.prepare(get_var('Percentuale rivalsa INPS')).', '.prepare($rivalsainps).', '.prepare(get_var("Percentuale ritenuta d'acconto")).', '.prepare($ritenutaacconto).', (SELECT IFNULL(MAX(`order`) + 1, 0) FROM co_righe_documenti AS t WHERE iddocumento='.prepare($id_record).'))'; $dbo->query($query);