From a2f6dd6a60844a9b32904c16185803353c1db008 Mon Sep 17 00:00:00 2001 From: Luca Date: Thu, 29 Mar 2018 00:51:25 +0200 Subject: [PATCH 1/2] appoggio bancario, iban e bic in stampa fattura --- modules/fatture/actions.php | 2 +- templates/info.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/fatture/actions.php b/modules/fatture/actions.php index daed6c1c5..2c1493fc9 100644 --- a/modules/fatture/actions.php +++ b/modules/fatture/actions.php @@ -38,7 +38,7 @@ switch (post('op')) { $campo = ($dir == 'entrata') ? 'idpagamento_vendite' : 'idpagamento_acquisti'; - // Tipo di pagamento predefinito dall'anagrafica + // Tipo di pagamento + banca predefinite dall'anagrafica $query = 'SELECT id, (SELECT idbanca_'.$conto.' FROM an_anagrafiche WHERE idanagrafica = '.prepare($idanagrafica).') AS idbanca FROM co_pagamenti WHERE id = (SELECT '.$campo.' AS pagamento FROM an_anagrafiche WHERE idanagrafica='.prepare($idanagrafica).')'; $rs = $dbo->fetchArray($query); $idpagamento = $rs[0]['id']; diff --git a/templates/info.php b/templates/info.php index 03d554b77..91925a6ec 100644 --- a/templates/info.php +++ b/templates/info.php @@ -14,7 +14,7 @@ if (empty($id_sede) || $id_sede == '-1') { $rsc = $dbo->fetchArray($queryc); // Lettura dati aziendali -$rsf = $dbo->fetchArray("SELECT * FROM an_anagrafiche WHERE idanagrafica = (SELECT valore FROM zz_settings WHERE nome='Azienda predefinita')"); +$rsf = $dbo->fetchArray("SELECT *, (SELECT iban FROM co_banche WHERE id IN (SELECT idbanca FROM co_documenti WHERE id = ".prepare($id_record)." ) ) AS codiceiban, (SELECT nome FROM co_banche WHERE id IN (SELECT idbanca FROM co_documenti WHERE id = ".prepare($id_record)." ) ) AS appoggiobancario, (SELECT bic FROM co_banche WHERE id IN (SELECT idbanca FROM co_documenti WHERE id = ".prepare($id_record)." ) ) AS bic FROM an_anagrafiche WHERE idanagrafica = (SELECT valore FROM zz_settings WHERE nome='Azienda predefinita')"); // Prefissi e contenuti del replace $replace = [ From 20549b081fe2eca5b1827319ea5d9182af62eeaa Mon Sep 17 00:00:00 2001 From: Bacca97 Date: Thu, 29 Mar 2018 14:48:56 +0200 Subject: [PATCH 2/2] Aggiunta scelta metodologia per il calcolo ritenuta d'acconto --- include/common/riga.php | 97 +++++++++++++++++++++++++++++++------ modules/fatture/actions.php | 57 +++++++++++++++++----- update/2_4.sql | 6 ++- 3 files changed, 130 insertions(+), 30 deletions(-) diff --git a/include/common/riga.php b/include/common/riga.php index a0256b7a8..dae39cd8e 100644 --- a/include/common/riga.php +++ b/include/common/riga.php @@ -3,34 +3,99 @@ // Descrizione echo App::internalLoad('descrizione.php', $result, $options); +$show_idrivalsainps = 0; +$show_idritenutaacconto = 0; +$show_calcolo_ritenutaacconto = 0; +$idrivalsainps = 0; +$idritenutaacconto = 0; +$calcolo_ritenutaacconto = 0; + // Informazioni aggiuntive per Fatture if ($module['name'] == 'Fatture di acquisto' || $module['name'] == 'Fatture di vendita') { + // Percentuale rivalsa INPS e Percentuale ritenuta d'acconto - if ( - $options['action'] == 'edit' && - (get_var('Percentuale rivalsa INPS') != '' || get_var("Percentuale ritenuta d'acconto") != '' || $options['dir'] == 'uscita') - ) { + if ($options['action'] == 'edit'){ + + if($options['dir'] == 'uscita'){ + $show_idrivalsainps = 1; + $show_idritenutaacconto = 1; + $show_calcolo_ritenutaacconto = 1; + } + else if (($options['dir'] == 'entrata' && ( get_var('Percentuale rivalsa INPS') != '' || get_var("Percentuale ritenuta d'acconto") != ''))) { + if( get_var('Percentuale rivalsa INPS') != '' ){ $show_idrivalsainps = 1; }else{ $show_idrivalsainps = 0; } + if( get_var("Percentuale ritenuta d'acconto") != '' ){ $show_idritenutaacconto = 1; }else{ $show_idritenutaacconto = 0; } + if( get_var("Percentuale ritenuta d'acconto") != '' ){ $show_calcolo_ritenutaacconto = 1; }else{ $show_calcolo_ritenutaacconto = 0; } + } + + $idrivalsainps = $result['idrivalsainps']; + $idritenutaacconto = $result['idritenutaacconto']; + $calcolo_ritenutaacconto = $result['calcolo_ritenutaacconto']; + + } + + else if ($options['action'] == 'add'){ + + if($options['dir'] == 'uscita'){ + $show_idrivalsainps = 1; + $show_idritenutaacconto = 1; + $show_calcolo_ritenutaacconto = 1; + + $idrivalsainps = ""; + $idritenutaacconto = ""; + $calcolo_ritenutaacconto = get_var("Metodologia calcolo ritenuta d'acconto predefinito"); + } + else if ($options['dir'] == 'entrata' && $options['op']=='addriga' && ( get_var('Percentuale rivalsa INPS') != '' || get_var("Percentuale ritenuta d'acconto") != '')) { + if( get_var('Percentuale rivalsa INPS') != '' ){ $show_idrivalsainps = 1; }else{ $show_idrivalsainps = 0; } + if( get_var("Percentuale ritenuta d'acconto") != '' ){ $show_idritenutaacconto = 1; }else{ $show_idritenutaacconto = 0; } + if( get_var("Percentuale ritenuta d'acconto") != '' ){ $show_calcolo_ritenutaacconto = 1; }else{ $show_calcolo_ritenutaacconto = 0; } + + $idrivalsainps = get_var('Percentuale rivalsa INPS'); + $idritenutaacconto = get_var("Percentuale ritenuta d'acconto"); + $calcolo_ritenutaacconto = get_var("Metodologia calcolo ritenuta d'acconto predefinito"); + } + //Caso particolare per aggiunta articolo in fatture di vendita + else if($options['dir'] == 'entrata' && $options['op']=='addarticolo' && ( get_var('Percentuale rivalsa INPS') != '' || get_var("Percentuale ritenuta d'acconto") != '')){ + if( get_var('Percentuale rivalsa INPS') != '' ){ $show_idrivalsainps = 1; }else{ $show_idrivalsainps = 0; } + if( get_var("Percentuale ritenuta d'acconto") != '' ){ $show_idritenutaacconto = 1; }else{ $show_idritenutaacconto = 0; } + if( get_var("Percentuale ritenuta d'acconto") != '' ){ $show_calcolo_ritenutaacconto = 1; }else{ $show_calcolo_ritenutaacconto = 0; } + + $idrivalsainps = ""; + $idritenutaacconto = get_var("Percentuale ritenuta d'acconto"); + $calcolo_ritenutaacconto = get_var("Metodologia calcolo ritenuta d'acconto predefinito"); + } + + } + + if($show_idrivalsainps==1 || $show_idritenutaacconto==1){ echo ' -
'; +
'; // Rivalsa INPS - if (get_var('Percentuale rivalsa INPS') != '' || $options['dir'] == 'uscita') { + if ( $show_idrivalsainps == 1 ) { echo ' -
- {[ "type": "select", "label": "'.tr('Rivalsa INPS').'", "name": "idrivalsainps", "value": "'.$result['idrivalsainps'].'", "values": "query=SELECT * FROM co_rivalsainps", "required": '.intval($options['dir'] != 'uscita').' ]} -
'; +
+ {[ "type": "select", "label": "'.tr('Rivalsa INPS').'", "name": "idrivalsainps", "value": "'.$idrivalsainps.'", "values": "query=SELECT * FROM co_rivalsainps" ]} +
'; } // Ritenuta d'acconto - if (get_var("Percentuale ritenuta d'acconto") != '' || $options['dir'] == 'uscita') { + if ( $show_idritenutaacconto == 1 ) { echo ' -
- {[ "type": "select", "label": "'.tr("Ritenuta d'acconto").'", "name": "idritenutaacconto", "value": "'.$result['idritenutaacconto'].'", "values": "query=SELECT * FROM co_ritenutaacconto", "required": '.intval($options['dir'] != 'uscita').' ]} -
'; - } - - echo ' +
+ {[ "type": "select", "label": "'.tr("Ritenuta d'acconto").'", "name": "idritenutaacconto", "value": "'.$idritenutaacconto.'", "values": "query=SELECT * FROM co_ritenutaacconto" ]}
'; + } + + //Calcola ritenuta d'acconto su + if ( $show_calcolo_ritenutaacconto == 1 ) { + echo ' +
+ {[ "type": "select", "label": "'.tr("Calcola ritenuta d'acconto su").'", "name": "calcolo_ritenutaacconto", "value": "'.$calcolo_ritenutaacconto.'", "values": "list=\"Imponibile\":\"Imponibile\", \"Imponibile + rivalsa inps\":\"Imponibile + rivalsa inps\"", "required": "1" ]} +
'; + } + + echo ' +
'; } // Conto diff --git a/modules/fatture/actions.php b/modules/fatture/actions.php index 2c1493fc9..db471bac7 100644 --- a/modules/fatture/actions.php +++ b/modules/fatture/actions.php @@ -342,9 +342,13 @@ switch (post('op')) { // Calcolo ritenuta d'acconto $query = 'SELECT * FROM co_ritenutaacconto WHERE id='.prepare(get_var("Percentuale ritenuta d'acconto")); $rs = $dbo->fetchArray($query); - $ritenutaacconto = ($subtot - $sconto + $rivalsainps) / 100 * $rs[0]['percentuale']; + if(get_var("Metodologia calcolo ritenuta d'acconto predefinito")=='Imponibile'){ + $ritenutaacconto = ($subtot - $sconto) / 100 * $rs[0]['percentuale']; + }else{ + $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($descrizione).', '.prepare($subtot).', '.prepare($sconto).', '.prepare($sconto).", 'UNT', 'ore', ".prepare($ore).', '.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, calcolo_ritenutaacconto, `order`) VALUES('.prepare($id_record).', '.prepare($idintervento).', '.prepare($idconto).', '.prepare($idiva).', '.prepare($desc_iva).', '.prepare($iva).', '.prepare($iva_indetraibile).', '.prepare($descrizione).', '.prepare($subtot).', '.prepare($sconto).', '.prepare($sconto).", 'UNT', 'ore', ".prepare($ore).', '.prepare(get_var('Percentuale rivalsa INPS')).', '.prepare($rivalsainps).', '.prepare(get_var("Percentuale ritenuta d'acconto")).', '.prepare($ritenutaacconto).', '.prepare(get_var("Metodologia calcolo ritenuta d'acconto predefinito")).', (SELECT IFNULL(MAX(`order`) + 1, 0) FROM co_righe_documenti AS t WHERE iddocumento='.prepare($id_record).'))'; $dbo->query($query); } } @@ -450,9 +454,13 @@ switch (post('op')) { // Calcolo ritenuta d'acconto $query = 'SELECT * FROM co_ritenutaacconto WHERE id='.prepare(get_var("Percentuale ritenuta d'acconto")); $rs = $dbo->fetchArray($query); - $ritenutaacconto = ($subtot - $sconto + $rivalsainps) / 100 * $rs[0]['percentuale']; + if(get_var("Metodologia calcolo ritenuta d'acconto predefinito")=='Imponibile'){ + $ritenutaacconto = ($subtot - $sconto) / 100 * $rs[0]['percentuale']; + }else{ + $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).', '.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).'))'; + $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, calcolo_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).', '.prepare(get_var("Metodologia calcolo ritenuta d'acconto predefinito")).', (SELECT IFNULL(MAX(`order`) + 1, 0) FROM co_righe_documenti AS t WHERE iddocumento='.prepare($id_record).'))'; $dbo->query($query); } } @@ -477,9 +485,13 @@ switch (post('op')) { // Calcolo ritenuta d'acconto $query = 'SELECT * FROM co_ritenutaacconto WHERE id='.prepare(get_var("Percentuale ritenuta d'acconto")); $dati = $dbo->fetchArray($query); - $ritenutaacconto = ($subtot - $sconto + $rivalsainps) / 100 * $dati[0]['percentuale']; + if(get_var("Metodologia calcolo ritenuta d'acconto predefinito")=='Imponibile'){ + $ritenutaacconto = ($subtot - $sconto) / 100 * $dati[0]['percentuale']; + }else{ + $ritenutaacconto = ($subtot - $sconto + $rivalsainps) / 100 * $dati[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('Trasferta intervento '.$codice.' del '.Translator::dateToLocale($data)).', '.prepare($subtot).', '.prepare($sconto).', '.prepare($sconto).", 'UNT', '', 1, ".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, calcolo_ritenutaacconto, `order`) VALUES('.prepare($id_record).', '.prepare($idintervento).', '.prepare($idconto).', '.prepare($idiva).', '.prepare($desc_iva).', '.prepare($iva).', '.prepare($iva_indetraibile).', '.prepare('Trasferta intervento '.$codice.' del '.Translator::dateToLocale($data)).', '.prepare($subtot).', '.prepare($sconto).', '.prepare($sconto).", 'UNT', '', 1, ".prepare(get_var('Percentuale rivalsa INPS')).', '.prepare($rivalsainps).', '.prepare(get_var("Percentuale ritenuta d'acconto")).', '.prepare($ritenutaacconto).', '.prepare(get_var("Metodologia calcolo ritenuta d'acconto predefinito")).', (SELECT IFNULL(MAX(`order`) + 1, 0) FROM co_righe_documenti AS t WHERE iddocumento='.prepare($id_record).'))'; $dbo->query($query); } @@ -503,9 +515,13 @@ switch (post('op')) { // 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']; + if(get_var("Metodologia calcolo ritenuta d'acconto predefinito")=='Imponibile'){ + $ritenutaacconto = $subtot / 100 * $rs[0]['percentuale']; + }else{ + $ritenutaacconto = ($subtot + $rivalsainps) / 100 * $rs[0]['percentuale']; + } - $query = 'INSERT INTO co_righe_documenti(iddocumento, idintervento, idconto, idiva, desc_iva, iva, iva_indetraibile, descrizione, subtotale, qta, idrivalsainps, rivalsainps, idritenutaacconto, ritenutaacconto, `order`) VALUES('.prepare($id_record).', NULL, '.prepare($idconto).', '.prepare($idiva).', '.prepare($desc_iva).', '.prepare($iva).', '.prepare($iva_indetraibile).', '.prepare('Sconto '.$descrizione).', '.prepare($subtot).', 1, '.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, qta, idrivalsainps, rivalsainps, idritenutaacconto, ritenutaacconto, calcolo_ritenutaacconto, `order`) VALUES('.prepare($id_record).', NULL, '.prepare($idconto).', '.prepare($idiva).', '.prepare($desc_iva).', '.prepare($iva).', '.prepare($iva_indetraibile).', '.prepare('Sconto '.$descrizione).', '.prepare($subtot).', 1, '.prepare(get_var('Percentuale rivalsa INPS')).', '.prepare($rivalsainps).', '.prepare(get_var("Percentuale ritenuta d'acconto")).', '.prepare($ritenutaacconto).', '.prepare(get_var("Metodologia calcolo ritenuta d'acconto predefinito")).', (SELECT IFNULL(MAX(`order`) + 1, 0) FROM co_righe_documenti AS t WHERE iddocumento='.prepare($id_record).'))'; $dbo->query($query); } @@ -570,7 +586,11 @@ switch (post('op')) { // Calcolo ritenuta d'acconto $query = 'SELECT * FROM co_ritenutaacconto WHERE id='.prepare(get_var("Percentuale ritenuta d'acconto")); $rs = $dbo->fetchArray($query); - $ritenutaacconto = ($prezzo - $sconto + $rivalsainps) / 100 * $rs[0]['percentuale']; + if(get_var("Metodologia calcolo ritenuta d'acconto predefinito")=='Imponibile'){ + $ritenutaacconto = ($subtot - $sconto) / 100 * $rs[0]['percentuale']; + }else{ + $ritenutaacconto = ($subtot - $sconto + $rivalsainps) / 100 * $rs[0]['percentuale']; + } if (!empty($post['import'])) { // Replicazione delle righe del preventivo sul documento @@ -596,6 +616,7 @@ switch (post('op')) { 'ritenutaacconto' => $ritenutaacconto, 'idrivalsainps' => get_var('Percentuale rivalsa INPS'), 'rivalsainps' => $rivalsainps, + 'calcolo_ritenutaacconto' => get_var("Metodologia calcolo ritenuta d'acconto predefinito"), ]); if (!empty($riga['idarticolo'])) { @@ -731,6 +752,7 @@ switch (post('op')) { $idiva = post('idiva'); $idconto = post('idconto'); $um = post('um'); + $calcolo_ritenutaacconto = post('calcolo_ritenutaacconto'); $qta = $post['qta']; $prezzo = $post['prezzo']; @@ -758,10 +780,14 @@ switch (post('op')) { // Calcolo ritenuta d'acconto $query = 'SELECT * FROM co_ritenutaacconto WHERE id='.prepare(post('idritenutaacconto')); $rs = $dbo->fetchArray($query); - $ritenutaacconto = (($prezzo * $qta) + $rivalsainps) / 100 * $rs[0]['percentuale']; + if($calcolo_ritenutaacconto=='Imponibile'){ + $ritenutaacconto = (($prezzo * $qta) - $sconto) / 100 * $rs[0]['percentuale']; + }else{ + $ritenutaacconto = (($prezzo * $qta) - $sconto + $rivalsainps) / 100 * $rs[0]['percentuale']; + } // Aggiunta riga generica sul documento - $query = 'INSERT INTO co_righe_documenti(iddocumento, idconto, idiva, desc_iva, iva, iva_indetraibile, descrizione, subtotale, sconto, sconto_unitario, tipo_sconto, um, qta, idrivalsainps, rivalsainps, idritenutaacconto, ritenutaacconto, is_descrizione, `order`) VALUES('.prepare($id_record).', '.prepare($idconto).', '.prepare($idiva).', '.prepare($desc_iva).', '.prepare($iva).', '.prepare($iva_indetraibile).', '.prepare($descrizione).', '.prepare($subtot).', '.prepare($sconto).', '.prepare($sconto_unitario).', '.prepare($tipo_sconto).', '.prepare($um).', '.prepare($qta).', '.prepare(post('idrivalsainps')).', '.prepare($rivalsainps).', '.prepare(post('idritenutaacconto')).', '.prepare($ritenutaacconto).', '.prepare(empty($qta)).', (SELECT IFNULL(MAX(`order`) + 1, 0) FROM co_righe_documenti AS t WHERE iddocumento='.prepare($id_record).'))'; + $query = 'INSERT INTO co_righe_documenti(iddocumento, idconto, idiva, desc_iva, iva, iva_indetraibile, descrizione, subtotale, sconto, sconto_unitario, tipo_sconto, um, qta, idrivalsainps, rivalsainps, idritenutaacconto, ritenutaacconto, calcolo_ritenutaacconto, is_descrizione, `order`) VALUES('.prepare($id_record).', '.prepare($idconto).', '.prepare($idiva).', '.prepare($desc_iva).', '.prepare($iva).', '.prepare($iva_indetraibile).', '.prepare($descrizione).', '.prepare($subtot).', '.prepare($sconto).', '.prepare($sconto_unitario).', '.prepare($tipo_sconto).', '.prepare($um).', '.prepare($qta).', '.prepare(post('idrivalsainps')).', '.prepare($rivalsainps).', '.prepare(post('idritenutaacconto')).', '.prepare($ritenutaacconto).', '.prepare(post('calcolo_ritenutaacconto')).', '.prepare(empty($qta)).', (SELECT IFNULL(MAX(`order`) + 1, 0) FROM co_righe_documenti AS t WHERE iddocumento='.prepare($id_record).'))'; $dbo->query($query); // Messaggi informativi @@ -790,6 +816,7 @@ switch (post('op')) { $idiva = post('idiva'); $idconto = post('idconto'); $um = post('um'); + $calcolo_ritenutaacconto = post('calcolo_ritenutaacconto'); $qta = $post['qta']; $prezzo = $post['prezzo']; @@ -846,11 +873,15 @@ switch (post('op')) { // Calcolo ritenuta d'acconto $query = 'SELECT * FROM co_ritenutaacconto WHERE id='.prepare(post('idritenutaacconto')); $rs = $dbo->fetchArray($query); - $ritenutaacconto = (($prezzo * $qta) - $sconto + $rivalsainps) / 100 * $rs[0]['percentuale']; + if($calcolo_ritenutaacconto=='Imponibile'){ + $ritenutaacconto = (($prezzo * $qta) - $sconto) / 100 * $rs[0]['percentuale']; + }else{ + $ritenutaacconto = (($prezzo * $qta) - $sconto + $rivalsainps) / 100 * $rs[0]['percentuale']; + } if ($is_descrizione == 0) { // Modifica riga generica sul documento - $query = 'UPDATE co_righe_documenti SET idconto='.prepare($idconto).', 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).', idritenutaacconto='.prepare(post('idritenutaacconto')).', ritenutaacconto='.prepare($ritenutaacconto).', idrivalsainps='.prepare(post('idrivalsainps')).', rivalsainps='.prepare($rivalsainps).', qta='.prepare($qta).' WHERE id='.prepare($idriga).' AND iddocumento='.prepare($iddocumento); + $query = 'UPDATE co_righe_documenti SET idconto='.prepare($idconto).', 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).', idritenutaacconto='.prepare(post('idritenutaacconto')).', ritenutaacconto='.prepare($ritenutaacconto).', idrivalsainps='.prepare(post('idrivalsainps')).', rivalsainps='.prepare($rivalsainps).', calcolo_ritenutaacconto='.prepare(post(calcolo_ritenutaacconto)).', qta='.prepare($qta).' WHERE id='.prepare($idriga).' AND iddocumento='.prepare($iddocumento); } else { // Modifica riga descrizione sul documento $query = 'UPDATE co_righe_documenti SET descrizione='.prepare($descrizione).' WHERE id='.prepare($idriga).' AND iddocumento='.prepare($iddocumento); diff --git a/update/2_4.sql b/update/2_4.sql index cc4b3c256..b3aed5079 100644 --- a/update/2_4.sql +++ b/update/2_4.sql @@ -340,4 +340,8 @@ INSERT INTO `zz_group_view` (`id_gruppo`, `id_vista`) VALUES ALTER TABLE `an_anagrafiche` ADD `idbanca_vendite` INT(11) NOT NULL AFTER `idconto_cliente`, ADD `idbanca_acquisti` INT(11) NOT NULL AFTER `idbanca_vendite`; -- Campo idbanca per fatture -ALTER TABLE `co_documenti` ADD `idbanca` INT(11) NOT NULL AFTER `idpagamento`; \ No newline at end of file +ALTER TABLE `co_documenti` ADD `idbanca` INT(11) NOT NULL AFTER `idpagamento`; + +-- Campo calcolo_ritenutaacconto per selezione tipo di calcolo ritenuta acconto +ALTER TABLE `co_righe_documenti` ADD `calcolo_ritenutaacconto` VARCHAR(255) NOT NULL AFTER `rivalsainps`; +INSERT INTO `zz_settings` (`idimpostazione`, `nome`, `valore`, `tipo`, `editable`, `sezione`) VALUES (NULL, 'Metodologia calcolo ritenuta d''acconto predefinito', '', 'list[imponibile,imponibile_rivalsaimps]', '1', 'Fatturazione'); \ No newline at end of file