From 31a61852b3c0ca6ef6e7f7250d068a79ef1786fd Mon Sep 17 00:00:00 2001 From: Fabio Lovato Date: Tue, 7 Nov 2017 19:19:52 +0100 Subject: [PATCH] =?UTF-8?q?=20-=20pagamenti:=20aggiungere=20di=20default?= =?UTF-8?q?=20"Bonifico=20bancario"=20(giorni=20scadenza=2010)=20=20-=20el?= =?UTF-8?q?iminando=20la=20fattura,=20non=20riporta=20le=20qt=C3=A0=20nei?= =?UTF-8?q?=20ddt=20=20-=20fatture:=20da=20ddt=20a=20fattura=20non=20impos?= =?UTF-8?q?ta=20il=20conto=20predefinito=20in=20fattura=20e=20sulle=20righ?= =?UTF-8?q?e=20=20-=20fatture:=20aggiungendo=20un=20preventivo=20con=20l'i?= =?UTF-8?q?mport=20di=20tutte=20le=20righe,=20non=20serve=20che=20il=20nom?= =?UTF-8?q?e=20della=20riga=20sconto=20abbia=20il=20riferimento=20del=20pr?= =?UTF-8?q?eventivo=20perch=C3=A8=20esce=20gi=C3=A0=20sotto=20in=20stampa.?= =?UTF-8?q?=20verificare=20=20-=20fatture:=20completata=20duplicazione=20r?= =?UTF-8?q?ighe=20=20-=20piano=20dei=20conti:=20popup=20dettagli,=20alline?= =?UTF-8?q?are=20i=20numeri=20a=20destra=20=20-=20migliorata=20stampa=20re?= =?UTF-8?q?gistri=20iva=20=20-=20stampa=20spesometro=20e=20stampa=20regist?= =?UTF-8?q?ri=20iva:=20aggiungere=20frase=20"Stampa=20non=20valida=20ai=20?= =?UTF-8?q?fini=20fiscali"=20in=20centro=20come=20sfondo=20o=20filigrana?= =?UTF-8?q?=20=20-=20stampe=20contabili:=20aggiungere=20paragrafo=20con=20?= =?UTF-8?q?"Le=20seguenti=20stampe=20non=20sono=20valide=20ai=20fini=20fis?= =?UTF-8?q?cali"=20=20-=20fatture=20di=20vendita:=20numero=20secondario=20?= =?UTF-8?q?chiamarlo=20"Numero=20fattura"=20=20-=20fatture:=20quando=20si?= =?UTF-8?q?=20importa=20l'intervento,=20mettere=20il=20totale=20ore=20come?= =?UTF-8?q?=20qt=C3=A0,=20e=20inserire=20il=20diritto=20di=20chiamata=20co?= =?UTF-8?q?me=20riga=20a=20parte=20=20-=20contratti:=20non=20escono=20le?= =?UTF-8?q?=20ore=20erogate=20a=20video=20nel=20consuntivo=20=20-=20contra?= =?UTF-8?q?tti:=20consuntivo,=20rinominare=20"Prezzo=20orario"=20in=20"Ore?= =?UTF-8?q?=20addebitate"=20=20-=20spesometro:=20rinominare=20in=20"Comuni?= =?UTF-8?q?cazione=20dati=20fatture=20(ex-spesometro)"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../plugins/contratti.consuntivo.php | 6 +- modules/fatture/actions.php | 89 +++++++++++++++++-- modules/fatture/add_preventivo.php | 2 +- modules/fatture/edit.php | 21 +++-- modules/partitario/dettagli_movimento.php | 18 +--- modules/stampe_contabili/edit.php | 9 +- package.json | 2 +- .../registro_iva/pdfgen.registro_iva.php | 14 +-- update/2_3.sql | 4 + 9 files changed, 119 insertions(+), 46 deletions(-) diff --git a/modules/contratti/plugins/contratti.consuntivo.php b/modules/contratti/plugins/contratti.consuntivo.php index d40d92b0b..32b05ffda 100644 --- a/modules/contratti/plugins/contratti.consuntivo.php +++ b/modules/contratti/plugins/contratti.consuntivo.php @@ -94,7 +94,7 @@ if (!empty($rsi)) { '.tr('Costo orario').' '.tr('Costo km').' '.tr('Diritto ch.').' - '.tr('Prezzo orario').' + '.tr('Costo addebitato').' '.tr('Prezzo km').' '.tr('Diritto ch.').' '; @@ -293,12 +293,12 @@ if (!empty($contratto_tot_ore)) { - + - + diff --git a/modules/fatture/actions.php b/modules/fatture/actions.php index 245d6c1bf..6128aa512 100644 --- a/modules/fatture/actions.php +++ b/modules/fatture/actions.php @@ -197,13 +197,13 @@ switch (post('op')) { } // Se delle righe sono state create da un ordine, devo riportare la quantità evasa nella tabella degli ordini al valore di prima, riaggiungendo la quantità che sto togliendo - $rs = $dbo->fetchArray('SELECT qta, descrizione, idarticolo, idordine, idiva FROM co_righe_documenti WHERE iddocumento='.prepare($iddocumento)); + $rs = $dbo->fetchArray('SELECT qta, descrizione, idarticolo, idordine, idiva FROM co_righe_documenti WHERE iddocumento='.prepare($id_record)); foreach ($rs as $r) { $dbo->query('UPDATE or_righe_ordini SET qta_evasa=qta_evasa-'.$r['qta'].' WHERE descrizione='.prepare($r['descrizione']).' AND idarticolo='.prepare($r['idarticolo']).' AND idordine='.prepare($r['idordine']).' AND idiva='.prepare($r['idiva'])); } // Se delle righe sono state create da un ddt, devo riportare la quantità evasa nella tabella dei ddt al valore di prima, riaggiungendo la quantità che sto togliendo - $rs = $dbo->fetchArray('SELECT qta, descrizione, idarticolo, idddt, idiva FROM co_righe_documenti WHERE iddocumento='.prepare($iddocumento)); + $rs = $dbo->fetchArray('SELECT qta, descrizione, idarticolo, idddt, idiva FROM co_righe_documenti WHERE iddocumento='.prepare($id_record)); foreach ($rs as $r) { $dbo->query('UPDATE dt_righe_ddt SET qta_evasa=qta_evasa-'.$r['qta'].' WHERE descrizione='.prepare($r['descrizione']).' AND idarticolo='.prepare($r['idarticolo']).' AND idddt='.prepare($r['idddt']).' AND idiva='.prepare($r['idiva'])); } @@ -246,8 +246,7 @@ switch (post('op')) { $id_record = $dbo->lastInsertedID(); // TODO: sistemare la duplicazione delle righe generiche e degli articoli, ingorando interventi, ddt, ordini, preventivi - /* - foreach ($righe as $riga) { + foreach( $righe as $riga ){ $dbo->query('INSERT INTO co_righe_documenti(iddocumento, idordine, idddt, idintervento, idarticolo, idpreventivo, idcontratto, idtecnico, idagente, idautomezzo, idiva, desc_iva, iva, iva_indetraibile, descrizione, subtotale, sconto, idritenutaacconto, ritenutaacconto, idrivalsainps, rivalsainps, um, qta, `order`) VALUES('.prepare($id_record).', 0, 0, 0, '.prepare($riga['idarticolo']).', '.prepare($riga['idpreventivo']).', '.prepare($riga['idcontratto']).', '.prepare($riga['idtecnico']).', '.prepare($riga['idagente']).', '.prepare($riga['idautomezzo']).', '.prepare($riga['idiva']).', '.prepare($riga['desc_iva']).', '.prepare($riga['iva']).', '.prepare($riga['iva_indetraibile']).', '.prepare($riga['descrizione']).', '.prepare($riga['subtotale']).', '.prepare($riga['sconto']).', '.prepare($riga['idritenutaacconto']).', '.prepare($riga['ritenutaacconto']).', '.prepare($riga['idrivalsainps']).', '.prepare($riga['rivalsainps']).', '.prepare($riga['um']).', '.prepare($riga['qta']).', (SELECT IFNULL(MAX(`order`) + 1, 0) FROM co_righe_documenti AS t WHERE iddocumento='.prepare($id_record).'))'); // Scarico/carico nuovamente l'articolo da magazzino @@ -255,7 +254,6 @@ switch (post('op')) { add_articolo_infattura($id_record, $riga['idarticolo'], $riga['descrizione'], $riga['idiva'], $riga['qta'], $riga['subtotale']); } } - */ // Ricalcolo inps, ritenuta e bollo (se la fattura non è stata pagata) if ($dir == 'entrata') { @@ -315,10 +313,80 @@ switch (post('op')) { $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']; + + // Aggiunta diritto di chiamata (se presente) come riga a parte + $query = 'SELECT SUM(prezzo_dirittochiamata) AS diritto_chiamata FROM in_interventi_tecnici WHERE idintervento='.prepare($idintervento); + $rs = $dbo->fetchArray($query); + $diritto_chiamata = $rs[0]['diritto_chiamata']; // Aggiunta riga intervento sul documento - $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', '-', 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).'))'; + $ore = get_ore_intervento( $idintervento ); + $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-$diritto_chiamata).', '.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).'))'; $dbo->query($query); + + + if( $diritto_chiamata > 0 ){ + // Calcolo iva + $query = 'SELECT * FROM co_iva WHERE id='.prepare($idiva); + $rs = $dbo->fetchArray($query); + + $iva = $diritto_chiamata / 100 * $rs[0]['percentuale']; + $iva_indetraibile = $iva / 100 * $rs[0]['indetraibile']; + $desc_iva = $rs[0]['descrizione']; + + // Calcolo rivalsa inps + $query = 'SELECT * FROM co_rivalsainps WHERE id='.prepare(get_var('Percentuale rivalsa INPS')); + $rs = $dbo->fetchArray($query); + $rivalsainps = $diritto_chiamata / 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 = $diritto_chiamata / 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).', + "Diritto di chiamata", + '.prepare($diritto_chiamata).', + '.prepare($sconto).', + '.prepare($sconto).", + 'UNT', + '-', + ".prepare($rs[0]['diritto_chiamata']).", + ".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); + } // Collego in fattura eventuali articoli collegati all'intervento $rs2 = $dbo->fetchArray('SELECT mg_articoli_interventi.*, idarticolo FROM mg_articoli_interventi INNER JOIN mg_articoli ON mg_articoli_interventi.idarticolo=mg_articoli.id WHERE idintervento='.prepare($idintervento).' AND ( idintervento NOT IN(SELECT idintervento FROM co_righe_preventivi WHERE idpreventivo IN(SELECT idpreventivo FROM co_righe_documenti WHERE iddocumento='.prepare($id_record).')) AND idintervento NOT IN(SELECT idintervento FROM co_righe_contratti WHERE idcontratto IN(SELECT idcontratto FROM co_righe_documenti WHERE iddocumento='.prepare($id_record).')) )'); @@ -760,7 +828,6 @@ switch (post('op')) { $idanagrafica = $post['idanagrafica']; $idarticolo = $post['idarticolo']; $idpagamento = $post['idpagamento']; - $idconto = $post['idconto']; $idddt = $post['idddt']; $numero = get_new_numerofattura($data); @@ -770,7 +837,13 @@ switch (post('op')) { $numero_esterno = ''; } - $tipo_documento = ($dir == 'entrata') ? 'Fattura differita di vendita' : 'Fattura differita di acquisto'; + if( $dir == 'entrata' ){ + $tipo_documento = 'Fattura differita di vendita'; + $idconto = get_var('Conto predefinito fatture di vendita'); + } else { + $tipo_documento = 'Fattura differita di acquisto'; + $idconto = get_var('Conto predefinito fatture di acquisto'); + } // Creazione nuova fattura $dbo->query('INSERT INTO co_documenti(numero, numero_esterno, data, idanagrafica, idtipodocumento, idstatodocumento, idpagamento, idconto) VALUES('.prepare($numero).', '.prepare($numero_esterno).', '.prepare($data).', '.prepare($idanagrafica).', (SELECT id FROM co_tipidocumento WHERE descrizione='.prepare($tipo_documento)."), (SELECT id FROM co_statidocumento WHERE descrizione='Bozza'), ".prepare($idpagamento).', '.prepare($idconto).')'); diff --git a/modules/fatture/add_preventivo.php b/modules/fatture/add_preventivo.php index 7dd7059a2..ce1c88b04 100644 --- a/modules/fatture/add_preventivo.php +++ b/modules/fatture/add_preventivo.php @@ -34,7 +34,7 @@ echo ' echo '
- {[ "type": "select", "label": "'.tr('Preventivo').'", "name": "idpreventivo", "required": 1, "values": "query=SELECT id, CONCAT(\'Preventivo numero \', numero, \' - \', nome) AS descrizione, (SELECT SUM(subtotale) FROM co_righe_preventivi WHERE idpreventivo=co_preventivi.id GROUP BY idpreventivo) - (SELECT SUM(sconto) FROM co_righe_preventivi WHERE idpreventivo=co_preventivi.id GROUP BY idpreventivo) AS subtot FROM co_preventivi WHERE idanagrafica='.prepare($idanagrafica).' AND id NOT IN (SELECT idpreventivo FROM co_righe_documenti WHERE NOT idpreventivo=NULL) AND idstato IN( SELECT id FROM co_statipreventivi WHERE descrizione=\'Accettato\' OR descrizione=\'In lavorazione\' OR descrizione=\'In attesa di conferma\')", "extra": "onchange=\"$data = $(this).selectData(); $(\'#descrizione\').val($data.text); $(\'#prezzo\').val($data.subtot);\"" ]} + {[ "type": "select", "label": "'.tr('Preventivo').'", "name": "idpreventivo", "required": 1, "values": "query=SELECT id, nome AS descrizione, (SELECT SUM(subtotale) FROM co_righe_preventivi WHERE idpreventivo=co_preventivi.id GROUP BY idpreventivo) - (SELECT SUM(sconto) FROM co_righe_preventivi WHERE idpreventivo=co_preventivi.id GROUP BY idpreventivo) AS subtot FROM co_preventivi WHERE idanagrafica='.prepare($idanagrafica).' AND id NOT IN (SELECT idpreventivo FROM co_righe_documenti WHERE NOT idpreventivo=NULL) AND idstato IN( SELECT id FROM co_statipreventivi WHERE descrizione=\'Accettato\' OR descrizione=\'In lavorazione\' OR descrizione=\'In attesa di conferma\')", "extra": "onchange=\"$data = $(this).selectData(); $(\'#descrizione\').val($data.text); $(\'#prezzo\').val($data.subtot);\"" ]}
diff --git a/modules/fatture/edit.php b/modules/fatture/edit.php index 9b678d391..17dadff9e 100644 --- a/modules/fatture/edit.php +++ b/modules/fatture/edit.php @@ -34,16 +34,19 @@ $_SESSION['superselect']['idanagrafica'] = $records[0]['idanagrafica'];
- + {[ "type": "span", "label": "'.tr('Numero fattura').'", "name": "numero","class": "text-center", "value": "$numero$" ]} +
'; + $label = tr('Numero secondario'); + } else { + $label = tr('Numero fattura'); + } + ?>
- {[ "type": "span", "label": "'.tr('Numero fattura').'", "name": "numero","class": "text-center", "value": "$numero$" ]} -
'; -} -?> -
- {[ "type": "text", "label": "", "name": "numero_esterno", "class": "text-center", "value": "$numero_esterno$" ]} + {[ "type": "text", "label": "", "name": "numero_esterno", "class": "text-center", "value": "$numero_esterno$" ]}
diff --git a/modules/partitario/dettagli_movimento.php b/modules/partitario/dettagli_movimento.php index 1c5f3ce7b..1fb711091 100644 --- a/modules/partitario/dettagli_movimento.php +++ b/modules/partitario/dettagli_movimento.php @@ -13,8 +13,6 @@ echo '
- - '; $totale_imponibile = 0; @@ -26,17 +24,9 @@ for ($i = 0; $i < sizeof($rs); ++$i) { '.$rs[$i]['desc_riga'].' - - - - - '; $totale_imponibile += $rs[$i]['imponibile']; @@ -45,10 +35,8 @@ for ($i = 0; $i < sizeof($rs); ++$i) { echo ' - - - - + +
'.tr('Ore residue').':'.Translator::numberToLocale(floatval($contratto_tot_ore) - floatval($totale_ore_impiegate)).''.Translator::numberToLocale(floatval($contratto_tot_ore) - floatval($totale_ore)).'
'.tr('Ore erogate').':'.Translator::numberToLocale($totale_ore_impiegate).''.Translator::numberToLocale($totale_ore).'
'.tr('Descrizione riga').' '.tr('Imponibile').''.tr('Q.tà').''.tr('Um').'
+ '.Translator::numberToLocale($rs[$i]['imponibile']).' € '.Translator::numberToLocale($rs[$i]['qta']).' - - '.$rs[$i]['um'].' -
'.tr('Totali').': '.Translator::numberToLocale($totale_imponibile).' €'.Translator::numberToLocale($totale_qta).''.tr('Totali').': '.Translator::numberToLocale($totale_imponibile).' €
diff --git a/modules/stampe_contabili/edit.php b/modules/stampe_contabili/edit.php index 32141a102..50946e536 100644 --- a/modules/stampe_contabili/edit.php +++ b/modules/stampe_contabili/edit.php @@ -3,6 +3,11 @@ include_once __DIR__.'/../../core.php'; echo ' + +
+ '.tr('ATTENZIONE', ['upper']).': '.tr('le suddette stampe contabili non sono da considerarsi valide ai fini fiscali').'. +
+
@@ -32,7 +37,7 @@ echo '
-

'.tr('Spesometro dal _START_ al _END_', [ +

'.tr('Comunicazione dati fatture (ex-spesometro) dal _START_ al _END_', [ '_START_' => Translator::dateToLocale($_SESSION['period_start']), '_END_' => Translator::dateToLocale($_SESSION['period_end']), ]).'

@@ -44,7 +49,7 @@ echo '
'.tr('Stampa').'
- '.tr('Spesometro').' + '.tr('dati fatture').'
diff --git a/package.json b/package.json index d61af024f..e848df39e 100644 --- a/package.json +++ b/package.json @@ -58,7 +58,7 @@ "select2-bootstrap-theme": "^0.1.0-beta.10", "signature_pad": "^2.1.1", "smartwizard": "^4.2.2", - "sweetalert2": "^6.6.5", + "sweetalert2": "^6.11.4", "tooltipster": "^4.2.5" }, "devDependencies": { diff --git a/templates/registro_iva/pdfgen.registro_iva.php b/templates/registro_iva/pdfgen.registro_iva.php index ceb95997e..b8110bfce 100644 --- a/templates/registro_iva/pdfgen.registro_iva.php +++ b/templates/registro_iva/pdfgen.registro_iva.php @@ -66,15 +66,15 @@ if ('entrata' == $dir) { $body .= " - + - - - - - - + + + + + + "; diff --git a/update/2_3.sql b/update/2_3.sql index d1f7d7cb7..5eb9495f5 100644 --- a/update/2_3.sql +++ b/update/2_3.sql @@ -971,3 +971,7 @@ ALTER TABLE `in_interventi` ADD `deleted` TINYINT NOT NULL DEFAULT '0' AFTER `da -- Fix nella conversione dei listini precedenti UPDATE `mg_listini` SET `prc_guadagno` = - `prc_guadagno`; + + +-- Aggiunta pagamento di default "Bonifico bancario" +INSERT INTO `co_pagamenti` (`id`, `descrizione`, `giorno`, `num_giorni`, `prc`, `created_at`, `idconto_vendite`, `idconto_acquisti`) VALUES (NULL, 'Bonifico bancario', '0', '10', '100', CURRENT_TIMESTAMP, NULL, NULL);
N° DocumentoDataCausale
Ragione sociale
AliquotaImponibileImpostaN° doc.DataCausale
Ragione sociale
AliquotaImponibileImposta