From 1a0c9d7bde4fa9cf944f96508cfa4036d82d7b8e Mon Sep 17 00:00:00 2001 From: Luca Date: Wed, 9 Jan 2019 17:12:00 +0100 Subject: [PATCH] Aggiunti pagamenti mancanti + Fix DatiPagamento import FE --- modules/fatture/edit.php | 14 ++--- plugins/exportFE/src/FatturaElettronica.php | 37 ++++++++---- plugins/importFE/rows.php | 67 +++++++++++++-------- templates/base/settings.php | 2 +- templates/fatture/header.php | 2 +- templates/info.php | 2 +- templates/ordini/body.php | 9 ++- update/2_4_5.sql | 19 ++++++ 8 files changed, 104 insertions(+), 48 deletions(-) diff --git a/modules/fatture/edit.php b/modules/fatture/edit.php index bff385852..ea1d73579 100644 --- a/modules/fatture/edit.php +++ b/modules/fatture/edit.php @@ -35,16 +35,16 @@ if ($dir == 'entrata') { fetchArray('SELECT piva, codice_fiscale, citta, indirizzo, cap, provincia, id_nazione FROM an_anagrafiche WHERE idanagrafica='.prepare($record['idanagrafica'])); + $rs2 = $dbo->fetchArray('SELECT piva, codice_fiscale, citta, indirizzo, cap, provincia, id_nazione, tipo FROM an_anagrafiche WHERE idanagrafica='.prepare($record['idanagrafica'])); $campi_mancanti = []; - - if ($rs2[0]['piva'] == '') { - array_push($campi_mancanti, 'Partita IVA'); - } - /*if ($rs2[0]['codice_fiscale'] == '') { + + if ($rs2[0]['codice_fiscale'] == '' and ($rs2[0]['tipo'] == 'Privato' or $rs2[0]['tipo'] == 'Ente pubblico')) { array_push($campi_mancanti, 'Codice fiscale'); } - */ + else if ($rs2[0]['piva'] == '') { + array_push($campi_mancanti, 'Partita IVA'); + } + if ($rs2[0]['citta'] == '') { array_push($campi_mancanti, 'Città'); } diff --git a/plugins/exportFE/src/FatturaElettronica.php b/plugins/exportFE/src/FatturaElettronica.php index 618a8f801..5e975d671 100644 --- a/plugins/exportFE/src/FatturaElettronica.php +++ b/plugins/exportFE/src/FatturaElettronica.php @@ -967,15 +967,28 @@ class FatturaElettronica if (!empty($anagrafica['codice_fiscale'])) { $result['CodiceFiscale'] = $anagrafica['codice_fiscale']; } - - $result['Anagrafica'] = [ - 'Denominazione' => $anagrafica['ragione_sociale'], - // TODO: 'Nome' => $azienda['ragione_sociale'], - // TODO: 'Cognome' => $azienda['ragione_sociale'], - // TODO: 'Titolo' => $azienda['ragione_sociale'], - // TODO: CodEORI - ]; - + + if (!empty($anagrafica['nome']) or !empty($anagrafica['cognome'])){ + + $result['Anagrafica'] = [ + //'Denominazione' => $anagrafica['ragione_sociale'], + 'Nome' => $anagrafica['nome'], + 'Cognome' => $anagrafica['cognome'], + // TODO: 'Titolo' => $anagrafica['ragione_sociale'], + // TODO: CodEORI + ]; + + + }else{ + $result['Anagrafica'] = [ + 'Denominazione' => $anagrafica['ragione_sociale'], + //'Nome' => $anagrafica['nome'], + //'Cognome' => $anagrafica['cognome'], + // TODO: 'Titolo' => $anagrafica['ragione_sociale'], + // TODO: CodEORI + ]; + } + // Informazioni specifiche azienda if ($azienda) { $result['RegimeFiscale'] = setting('Regime Fiscale'); @@ -1194,7 +1207,7 @@ class FatturaElettronica // Importo Totale Documento (2.1.1.9) // Importo totale del documento al netto dell'eventuale sconto e comprensivo di imposta a debito del cessionario / committente $fattura = Modules\Fatture\Fattura::find($documento['id']); - $result['ImportoTotaleDocumento'] = $fattura->netto; + $result['ImportoTotaleDocumento'] = abs($fattura->netto); return $result; } @@ -1477,8 +1490,8 @@ class FatturaElettronica foreach ($riepiloghi_percentuale as $riepilogo) { $iva = [ 'AliquotaIVA' => $riepilogo['percentuale'], - 'ImponibileImporto' => $riepilogo['totale'], - 'Imposta' => $riepilogo['iva'], + 'ImponibileImporto' => abs($riepilogo['totale']), + 'Imposta' => abs($riepilogo['iva']), 'EsigibilitaIVA' => $riepilogo['esigibilita'], ]; diff --git a/plugins/importFE/rows.php b/plugins/importFE/rows.php index fb75549f5..847db7183 100644 --- a/plugins/importFE/rows.php +++ b/plugins/importFE/rows.php @@ -36,37 +36,54 @@ echo '
'; -// Pagamenti -$pagamenti = $fattura_pa->getBody()['DatiPagamento']; +// Se il blocco DatiPagamento è valorizzato (opzionale) +if (!empty($fattura_pa->getBody()['DatiPagamento'])){ + + $pagamenti = $fattura_pa->getBody()['DatiPagamento']; + + $metodi = $pagamenti['DettaglioPagamento']; + $metodi = isset($metodi[0]) ? $metodi : [$metodi]; + $codice_modalita_pagamento = $metodi[0]['ModalitaPagamento']; + + echo ' +

'.tr('Pagamento').'

+ +

'.tr('La fattura importata presenta _NUM_ rate di pagamento con le seguenti scadenze', [ + '_NUM_' => count($metodi), + ]).':

+ '; + +} -$metodi = $pagamenti['DettaglioPagamento']; -$metodi = isset($metodi[0]) ? $metodi : [$metodi]; -$codice_modalita_pagamento = $metodi[0]['ModalitaPagamento']; // prc '.($pagamenti['CondizioniPagamento'] == 'TP01' ? '!' : '').'= 100 AND -$query = 'SELECT id, descrizione FROM co_pagamenti'; +$query = 'SELECT id, CONCAT (descrizione, IF((codice_modalita_pagamento_fe IS NULL), \"\", CONCAT( \" (\", codice_modalita_pagamento_fe, \")\" ) )) as descrizione FROM co_pagamenti'; if (!empty($codice_modalita_pagamento)) { - $query .= ' WHERE codice_modalita_pagamento_fe = '.prepare($codice_modalita_pagamento); + $query .= ' WHERE codice_modalita_pagamento_fe = '.prepare($codice_modalita_pagamento); } $query .= ' GROUP BY descrizione ORDER BY descrizione ASC'; - -echo ' -

'.tr('Pagamento').'

- -

'.tr('La fattura importata presenta _NUM_ rate di pagamento con le seguenti scadenze', [ - '_NUM_' => count($metodi), - ]).':

- '; - + echo ' {[ "type": "select", "label": "'.tr('Pagamento').'", "name": "pagamento", "required": 1, "values": "query='.$query.'" ]}'; diff --git a/templates/base/settings.php b/templates/base/settings.php index 7260fddc8..86ffeaba0 100644 --- a/templates/base/settings.php +++ b/templates/base/settings.php @@ -12,7 +12,7 @@ $settings = [ ], 'header-height' => 35, 'footer-height' => 5, - 'header-font-size' => 12, + 'header-font-size' => 11, ]; return $settings; diff --git a/templates/fatture/header.php b/templates/fatture/header.php index 874d1b2bb..5172bac00 100644 --- a/templates/fatture/header.php +++ b/templates/fatture/header.php @@ -54,7 +54,7 @@ echo '

'.tr('Banca di appoggio', [], ['upper' => true]).'

-

$appoggiobancario$

+

$appoggiobancario$

diff --git a/templates/info.php b/templates/info.php index b291c17d5..01d66e8da 100644 --- a/templates/info.php +++ b/templates/info.php @@ -117,7 +117,7 @@ $replaces = array_merge($replaces, [ 'rootdir' => ROOTDIR, 'directory' => Prints::get($id_print)['full_directory'], 'footer' => !empty($footer) ? $footer : '', - 'dicitura_fissa_fattura' => setting('Dicitura fissa fattura'), + 'dicitura_fissa_fattura' => setting('Dicitura fissa fattura').((!empty(setting('OSMCloud Services API Token'))) ? tr(' Documento privo di valenza fiscale dell\'art 21 dpr 633/72.'): ''), ]); unset($replace); diff --git a/templates/ordini/body.php b/templates/ordini/body.php index baa2445bd..d82a1bfd3 100644 --- a/templates/ordini/body.php +++ b/templates/ordini/body.php @@ -34,6 +34,7 @@ echo " // RIGHE PREVENTIVO CON ORDINAMENTO UNICO $righe = $dbo->fetchArray("SELECT *, IFNULL((SELECT `codice` FROM `mg_articoli` WHERE `id` = `or_righe_ordini`.`idarticolo`), '') AS codice_articolo, + IFNULL((SELECT `immagine` FROM `mg_articoli` WHERE `id` = `or_righe_ordini`.`idarticolo`), '') AS immagine_articolo, (SELECT GROUP_CONCAT(`serial` SEPARATOR ', ') FROM `mg_prodotti` WHERE `id_riga_ordine` = `or_righe_ordini`.`id`) AS seriali, (SELECT `percentuale` FROM `co_iva` WHERE `id` = `or_righe_ordini`.`idiva`) AS perc_iva FROM `or_righe_ordini` WHERE idordine=".prepare($id_record).' ORDER BY `order`'); @@ -44,7 +45,13 @@ foreach ($righe as $r) { echo ' - + '; + + if (!empty($r['immagine_articolo'])) { + //echo '
'; + } + + echo ' '.nl2br($r['descrizione']); // Codice articolo diff --git a/update/2_4_5.sql b/update/2_4_5.sql index 8e206419d..e2bc88bd5 100644 --- a/update/2_4_5.sql +++ b/update/2_4_5.sql @@ -62,3 +62,22 @@ UPDATE `zz_modules` SET `options` = '{ "main_query": [ { "type": "table", "field UPDATE `zz_modules` SET `options` = 'SELECT |select| FROM `dt_ddt` INNER JOIN `dt_tipiddt` ON `dt_ddt`.`idtipoddt` = `dt_tipiddt`.`id` WHERE 1=1 AND `dir` = ''entrata'' AND `data` >= ''|period_start|'' AND `data` <= ''|period_end|'' HAVING 2=2 ORDER BY `data` DESC, CAST(`numero_esterno` AS UNSIGNED) DESC,`dt_ddt`.created_at DESC' WHERE `zz_modules`.`name` = 'Ddt di vendita'; UPDATE `zz_modules` SET `options` = 'SELECT |select| FROM `dt_ddt` INNER JOIN `dt_tipiddt` ON `dt_ddt`.`idtipoddt` = `dt_tipiddt`.`id` WHERE 1=1 AND `dir` = ''uscita'' AND `data` >= ''|period_start|'' AND `data` <= ''|period_end|'' HAVING 2=2 ORDER BY `data` DESC, CAST(`numero_esterno` AS UNSIGNED) DESC, `dt_ddt`.created_at DESC' WHERE `zz_modules`.`id` = 'Ddt di acquisto'; + +-- Aggiunti pagamenti mancanti Assegno circolare,Contanti presso Tesoreria, Vaglia cambiario, Bollettino bancario, RID, RID utenze, RID veloce, MAV, Quietanza erario, Giroconto su conti di contabilità speciale, Domiciliazione bancaria, Domiciliazione postale, Bollettino di c/c postale, SEPA Direct Debit, SEPA Direct Debit CORE, SEPA Direct Debit B2B, Trattenuta su somme già riscosse +INSERT INTO `co_pagamenti` (`id`, `descrizione`, `giorno`, `num_giorni`, `prc`, `created_at`, `updated_at`, `idconto_vendite`, `idconto_acquisti`, `codice_modalita_pagamento_fe`) VALUES (NULL, 'Assegno circolare', '0', '1', '100', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL, NULL, 'MP03'); +INSERT INTO `co_pagamenti` (`id`, `descrizione`, `giorno`, `num_giorni`, `prc`, `created_at`, `updated_at`, `idconto_vendite`, `idconto_acquisti`, `codice_modalita_pagamento_fe`) VALUES (NULL, 'Contanti presso Tesoreria', '0', '1', '100', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL, NULL, 'MP04'); +INSERT INTO `co_pagamenti` (`id`, `descrizione`, `giorno`, `num_giorni`, `prc`, `created_at`, `updated_at`, `idconto_vendite`, `idconto_acquisti`, `codice_modalita_pagamento_fe`) VALUES (NULL, 'Vaglia cambiario', '0', '1', '100', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL, NULL, 'MP06'); +INSERT INTO `co_pagamenti` (`id`, `descrizione`, `giorno`, `num_giorni`, `prc`, `created_at`, `updated_at`, `idconto_vendite`, `idconto_acquisti`, `codice_modalita_pagamento_fe`) VALUES (NULL, 'Bollettino bancario', '0', '1', '100', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL, NULL, 'MP07'); +INSERT INTO `co_pagamenti` (`id`, `descrizione`, `giorno`, `num_giorni`, `prc`, `created_at`, `updated_at`, `idconto_vendite`, `idconto_acquisti`, `codice_modalita_pagamento_fe`) VALUES (NULL, 'RID', '0', '1', '100', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL, NULL, 'MP09'); +INSERT INTO `co_pagamenti` (`id`, `descrizione`, `giorno`, `num_giorni`, `prc`, `created_at`, `updated_at`, `idconto_vendite`, `idconto_acquisti`, `codice_modalita_pagamento_fe`) VALUES (NULL, 'RID utenze', '0', '1', '100', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL, NULL, 'MP10'); +INSERT INTO `co_pagamenti` (`id`, `descrizione`, `giorno`, `num_giorni`, `prc`, `created_at`, `updated_at`, `idconto_vendite`, `idconto_acquisti`, `codice_modalita_pagamento_fe`) VALUES (NULL, 'RID veloce', '0', '1', '100', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL, NULL, 'MP11'); +INSERT INTO `co_pagamenti` (`id`, `descrizione`, `giorno`, `num_giorni`, `prc`, `created_at`, `updated_at`, `idconto_vendite`, `idconto_acquisti`, `codice_modalita_pagamento_fe`) VALUES (NULL, 'MAV', '0', '1', '100', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL, NULL, 'MP13'); +INSERT INTO `co_pagamenti` (`id`, `descrizione`, `giorno`, `num_giorni`, `prc`, `created_at`, `updated_at`, `idconto_vendite`, `idconto_acquisti`, `codice_modalita_pagamento_fe`) VALUES (NULL, 'Quietanza erario', '0', '1', '100', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL, NULL, 'MP14'); +INSERT INTO `co_pagamenti` (`id`, `descrizione`, `giorno`, `num_giorni`, `prc`, `created_at`, `updated_at`, `idconto_vendite`, `idconto_acquisti`, `codice_modalita_pagamento_fe`) VALUES (NULL, 'Giroconto su conti di contabilità speciale', '0', '1', '100', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL, NULL, 'MP15'); +INSERT INTO `co_pagamenti` (`id`, `descrizione`, `giorno`, `num_giorni`, `prc`, `created_at`, `updated_at`, `idconto_vendite`, `idconto_acquisti`, `codice_modalita_pagamento_fe`) VALUES (NULL, 'Domiciliazione bancaria', '0', '1', '100', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL, NULL, 'MP16'); +INSERT INTO `co_pagamenti` (`id`, `descrizione`, `giorno`, `num_giorni`, `prc`, `created_at`, `updated_at`, `idconto_vendite`, `idconto_acquisti`, `codice_modalita_pagamento_fe`) VALUES (NULL, 'Domiciliazione postale', '0', '1', '100', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL, NULL, 'MP17'); +INSERT INTO `co_pagamenti` (`id`, `descrizione`, `giorno`, `num_giorni`, `prc`, `created_at`, `updated_at`, `idconto_vendite`, `idconto_acquisti`, `codice_modalita_pagamento_fe`) VALUES (NULL, 'Bollettino di c/c postale', '0', '1', '100', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL, NULL, 'MP18'); +INSERT INTO `co_pagamenti` (`id`, `descrizione`, `giorno`, `num_giorni`, `prc`, `created_at`, `updated_at`, `idconto_vendite`, `idconto_acquisti`, `codice_modalita_pagamento_fe`) VALUES (NULL, 'SEPA Direct Debit', '0', '1', '100', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL, NULL, 'MP19'); +INSERT INTO `co_pagamenti` (`id`, `descrizione`, `giorno`, `num_giorni`, `prc`, `created_at`, `updated_at`, `idconto_vendite`, `idconto_acquisti`, `codice_modalita_pagamento_fe`) VALUES (NULL, 'SEPA Direct Debit CORE', '0', '1', '100', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL, NULL, 'MP20'); +INSERT INTO `co_pagamenti` (`id`, `descrizione`, `giorno`, `num_giorni`, `prc`, `created_at`, `updated_at`, `idconto_vendite`, `idconto_acquisti`, `codice_modalita_pagamento_fe`) VALUES (NULL, 'SEPA Direct Debit B2B', '0', '1', '100', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL, NULL, 'MP21'); +INSERT INTO `co_pagamenti` (`id`, `descrizione`, `giorno`, `num_giorni`, `prc`, `created_at`, `updated_at`, `idconto_vendite`, `idconto_acquisti`, `codice_modalita_pagamento_fe`) VALUES (NULL, 'Trattenuta su somme già riscosse', '0', '1', '100', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL, NULL, 'MP22');