From f29c8b8ac94b81a93115d4e741a2920abc61be5a Mon Sep 17 00:00:00 2001 From: Luca Date: Mon, 23 Apr 2018 18:10:25 +0200 Subject: [PATCH] Bugifx #119 Ripristinati plugin "Pianificazione fatturazione" + widget "Rate contrattuali" migliorato inserimento fattura con rif. idconto e idbanca --- modules/contratti/plugins/addfattura.php | 12 +++++-- .../contratti.fatturaordiniservizio.php | 35 ++++++++++++------- .../widgets/contratti.ratecontrattuali.php | 10 +++--- update/2_4_1.sql | 8 ++++- 4 files changed, 45 insertions(+), 20 deletions(-) diff --git a/modules/contratti/plugins/addfattura.php b/modules/contratti/plugins/addfattura.php index 538cd905d..663239a11 100644 --- a/modules/contratti/plugins/addfattura.php +++ b/modules/contratti/plugins/addfattura.php @@ -19,15 +19,23 @@ echo ' // Data echo '
-
+
{[ "type": "date", "label": "'.tr('Data').'", "name": "data", "required": 1, "class": "text-center", "value": "-now-", "extra": "" ]}
'; // Tipo di documento echo ' -
+
{[ "type": "select", "label": "'.tr('Tipo di fattura').'", "name": "idtipodocumento", "required": 1, "values": "query=SELECT * FROM co_tipidocumento WHERE dir=\'entrata\'", "extra": "" ]} +
'; + + +// Sezionale +echo ' +
+ {[ "type": "select", "label": "'.tr('Sezionale').'", "name": "id_segment", "required": 1, "values": "query=SELECT id, name AS descrizione FROM zz_segments WHERE id_module='.Modules::get('Fatture di vendita')['id'].' ORDER BY name", "value":"'.$_SESSION['m'.Modules::get('Fatture di vendita')['id']]['id_segment'].'", "extra": "" ]}
+
'; // Note diff --git a/modules/contratti/plugins/contratti.fatturaordiniservizio.php b/modules/contratti/plugins/contratti.fatturaordiniservizio.php index 2725dfc61..f5bd3d9d6 100644 --- a/modules/contratti/plugins/contratti.fatturaordiniservizio.php +++ b/modules/contratti/plugins/contratti.fatturaordiniservizio.php @@ -65,7 +65,7 @@ elseif ($get['op'] == 'del_pianificazione') { // Creazione fattura pianificata elseif ($get['op'] == 'addfattura') { - include $docroot.'/modules/fatture/modutil.php'; + include_once $docroot.'/modules/fatture/modutil.php'; $idpianificazione = $get['idpianificazione']; $descrizione = post('note'); @@ -78,20 +78,31 @@ elseif ($get['op'] == 'addfattura') { $idanagrafica = $rs[0]['idanagrafica']; $dir = 'entrata'; + $idconto = get_var('Conto predefinito fatture di vendita'); $numero = get_new_numerofattura($data); + $id_segment = post('id_segment'); $numero_esterno = get_new_numerosecondariofattura($data); + + // Tipo di pagamento + banca predefinite dall'anagrafica + $query = 'SELECT id, (SELECT idbanca_vendite FROM an_anagrafiche WHERE idanagrafica = '.prepare($idanagrafica).') AS idbanca FROM co_pagamenti WHERE id = (SELECT idpagamento_vendite AS pagamento FROM an_anagrafiche WHERE idanagrafica='.prepare($idanagrafica).')'; + $rs = $dbo->fetchArray($query); + $idpagamento = $rs[0]['id']; + $idbanca = $rs[0]['idbanca']; - // Tipo di pagamento predefinito dall'anagrafica - $query = 'SELECT id FROM co_pagamenti WHERE id=(SELECT idpagamento_vendite FROM an_anagrafiche WHERE idanagrafica='.prepare($idanagrafica).')'; - $rs = $dbo->fetchArray($query); - $idpagamento = $rs[0]['id']; + // Se la fattura è di vendita e non è stato associato un pagamento predefinito al cliente leggo il pagamento dalle impostazioni + if ($dir == 'entrata' && $idpagamento == '') { + $idpagamento = get_var('Tipo di pagamento predefinito'); + } - // Se non è stato associato un pagamento predefinito al cliente leggo il pagamento dalle impostazioni - if ($idpagamento == '') { - $idpagamento = get_var('Tipo di pagamento predefinito'); - } - - $query = 'INSERT INTO co_documenti(numero, numero_esterno, idanagrafica, idtipodocumento, idpagamento, data, idstatodocumento, note, idsede) VALUES ('.prepare($numero).', '.prepare($numero_esterno).', '.prepare($idanagrafica).', '.prepare($idtipodocumento).', '.prepare($idpagamento).', '.prepare($data).", (SELECT `id` FROM `co_statidocumento` WHERE `descrizione`='Bozza'), ".prepare($note).', (SELECT idsede_fatturazione FROM an_anagrafiche WHERE idanagrafica='.prpeare($idanagrafica).') )'; + // Se non è impostata la banca dell'anagrafica, uso quella del pagamento. + if (empty($idbanca)) { + // Banca predefinita del pagamento + $query = 'SELECT id FROM co_banche WHERE id_pianodeiconti3 = (SELECT idconto_vendite FROM co_pagamenti WHERE id = '.prepare($idpagamento).')'; + $rs = $dbo->fetchArray($query); + $idbanca = $rs[0]['id']; + } + + $query = 'INSERT INTO co_documenti(numero, numero_esterno, idanagrafica, idtipodocumento, idpagamento, data, idstatodocumento, note, idsede, id_segment, idconto, idbanca) VALUES ('.prepare($numero).', '.prepare($numero_esterno).', '.prepare($idanagrafica).', '.prepare($idtipodocumento).', '.prepare($idpagamento).', '.prepare($data).", (SELECT `id` FROM `co_statidocumento` WHERE `descrizione`='Bozza'), ".prepare($note).', (SELECT idsede_fatturazione FROM an_anagrafiche WHERE idanagrafica='.prepare($idanagrafica).'), '.prepare($id_segment).', '.prepare($idconto).', '.prepare($idbanca).' )'; $dbo->query($query); $iddocumento = $dbo->lastInsertedID(); @@ -322,7 +333,7 @@ else { echo '
- {[ "type": "select", "label": "'.tr('Zone di cui pianificare la fatturazione').'", "name": "idzona[]", "value": "", "values": "query=SELECT id, descrizione FROM an_zone WHERE (id IN (SELECT idzona FROM an_sedi WHERE id IN (SELECT idsede FROM my_impianti WHERE id IN (SELECT idimpianto FROM co_ordiniservizio WHERE idcontratto='.prepare($id_record).')))) OR ( id=(SELECT idzona FROM an_anagrafiche WHERE idanagrafica=(SELECT idanagrafica FROM co_contratti WHERE id='.prepare($id_record).') AND idzona=an_zone.id) ) UNION SELECT 0, \'Altro\'", "multiple": 1, "extra": "onchange=\"$(this).find(\'option\').each( function(){ if( $(this).is(\':selected\') ){ $(\'#zona_\'+$(this).val()).removeClass(\'hide\'); }else{ $(\'#zona_\'+$(this).val()).addClass(\'hide\'); } });\"" ]} + {[ "type": "select", "label": "'.tr('Zone per le quali pianificare la fatturazione').'", "name": "idzona[]", "value": "", "values": "query=SELECT id, descrizione FROM an_zone WHERE (id IN (SELECT idzona FROM an_sedi WHERE id IN (SELECT idsede FROM my_impianti WHERE id IN (SELECT idimpianto FROM co_ordiniservizio WHERE idcontratto='.prepare($id_record).')))) OR ( id=(SELECT idzona FROM an_anagrafiche WHERE idanagrafica=(SELECT idanagrafica FROM co_contratti WHERE id='.prepare($id_record).') AND idzona=an_zone.id) ) UNION SELECT 0, \'Altro\'", "multiple": 1, "extra": "onchange=\"$(this).find(\'option\').each( function(){ if( $(this).is(\':selected\') ){ $(\'#zona_\'+$(this).val()).removeClass(\'hide\'); }else{ $(\'#zona_\'+$(this).val()).addClass(\'hide\'); } });\"" ]}
'; diff --git a/modules/contratti/widgets/contratti.ratecontrattuali.php b/modules/contratti/widgets/contratti.ratecontrattuali.php index 4fcf5b595..5864fe1dd 100644 --- a/modules/contratti/widgets/contratti.ratecontrattuali.php +++ b/modules/contratti/widgets/contratti.ratecontrattuali.php @@ -22,7 +22,8 @@ echo '
'; // Righe inserite -$qp = "SELECT *, (SELECT SUM(subtotale) FROM co_righe2_contratti WHERE idcontratto=co_ordiniservizio_pianificazionefatture.idcontratto) AS budget_contratto, DATE_FORMAT( data_scadenza, '%m-%Y') AS mese, (SELECT idanagrafica FROM co_contratti WHERE id=idcontratto) AS idcliente, (SELECT ragione_sociale FROM an_anagrafiche WHERE idanagrafica=(SELECT idanagrafica FROM co_contratti WHERE id=idcontratto)) AS ragione_sociale, (SELECT descrizione FROM an_zone WHERE id=co_ordiniservizio_pianificazionefatture.idzona) AS zona FROM co_ordiniservizio_pianificazionefatture WHERE idcontratto IN( SELECT id FROM co_contratti WHERE idstato IN(SELECT id FROM co_staticontratti WHERE pianificabile = 1) ) AND co_ordiniservizio_pianificazionefatture.iddocumento=0 ORDER BY DATE_FORMAT( data_scadenza, '%m-%Y') ASC, idcliente ASC"; +//idcontratto IN( SELECT id FROM co_contratti WHERE idstato IN(SELECT id FROM co_staticontratti WHERE pianificabile = 1) ) AND +$qp = "SELECT *, (SELECT SUM(subtotale) FROM co_righe2_contratti WHERE idcontratto=co_ordiniservizio_pianificazionefatture.idcontratto) AS budget_contratto, DATE_FORMAT( data_scadenza, '%m-%Y') AS mese, (SELECT idanagrafica FROM co_contratti WHERE id=idcontratto) AS idcliente, (SELECT ragione_sociale FROM an_anagrafiche WHERE idanagrafica=(SELECT idanagrafica FROM co_contratti WHERE id=idcontratto)) AS ragione_sociale, (SELECT descrizione FROM an_zone WHERE id=co_ordiniservizio_pianificazionefatture.idzona) AS zona FROM co_ordiniservizio_pianificazionefatture WHERE co_ordiniservizio_pianificazionefatture.iddocumento=0 ORDER BY DATE_FORMAT( data_scadenza, '%m-%Y') ASC, idcliente ASC"; $rsp = $dbo->fetchArray($qp); if (!empty($rsp)) { @@ -123,10 +124,9 @@ if (!empty($rsp)) { echo ' '; if (empty($r['idintervento'])) { - echo " - - - "; + echo ''; } echo ' diff --git a/update/2_4_1.sql b/update/2_4_1.sql index 130b952b1..89e714c6c 100644 --- a/update/2_4_1.sql +++ b/update/2_4_1.sql @@ -19,4 +19,10 @@ UPDATE `an_nazioni` SET `iso2` = 'IT' WHERE `an_nazioni`.`nome` = 'ITALIA'; ALTER TABLE `zz_group_module` ADD `name` VARCHAR(255) NOT NULL AFTER `idmodule`; UPDATE `zz_group_module` SET `name` = 'Mostra interventi ai tecnici coinvolti' WHERE `zz_group_module`.`id` = 1; -UPDATE `zz_group_module` SET `name` = 'Mostra interventi ai clienti coinvolti' WHERE `zz_group_module`.`id` = 5; \ No newline at end of file +UPDATE `zz_group_module` SET `name` = 'Mostra interventi ai clienti coinvolti' WHERE `zz_group_module`.`id` = 5; + +-- Abilito plugin Pianificazione fatturazione in contratti +UPDATE `zz_plugins` SET `enabled` = '1' WHERE `zz_plugins`.`name` = 'Pianificazione fatturazione'; + +-- Abilito widget Rate contrattuali in dashboard +UPDATE `zz_widgets` SET `enabled` = '1' WHERE `zz_widgets`.`name` = 'Rate contrattuali'; \ No newline at end of file