From 8a485ca14b869d7863c753e6ced888feb556912a Mon Sep 17 00:00:00 2001 From: Pek5892 Date: Fri, 5 May 2023 18:28:36 +0200 Subject: [PATCH] Aggiunta stampa liquidazione provvigioni --- modules/anagrafiche/buttons.php | 6 + modules/anagrafiche/liquida_provvigioni.php | 116 ++++++++++++++++++++ templates/provvigione/bottom.php | 32 ++++++ templates/provvigione/init.php | 72 ++++++++++++ templates/provvigione/piece.php | 29 +++++ templates/provvigione/settings.php | 27 +++++ templates/provvigione/top.php | 58 ++++++++++ 7 files changed, 340 insertions(+) create mode 100644 modules/anagrafiche/liquida_provvigioni.php create mode 100644 templates/provvigione/bottom.php create mode 100644 templates/provvigione/init.php create mode 100644 templates/provvigione/piece.php create mode 100644 templates/provvigione/settings.php create mode 100644 templates/provvigione/top.php diff --git a/modules/anagrafiche/buttons.php b/modules/anagrafiche/buttons.php index 262bd4e8f..92dbcac26 100755 --- a/modules/anagrafiche/buttons.php +++ b/modules/anagrafiche/buttons.php @@ -74,4 +74,10 @@ if (in_array($id_cliente, $tipi_anagrafica) or in_array($id_fornitore, $tipi_ana echo ' '; +} else if (in_array($id_agente, $tipi_anagrafica)) { + //Aggiunta liquidazione provvigioni per agente + echo' + + +'; } diff --git a/modules/anagrafiche/liquida_provvigioni.php b/modules/anagrafiche/liquida_provvigioni.php new file mode 100644 index 000000000..61d8534bf --- /dev/null +++ b/modules/anagrafiche/liquida_provvigioni.php @@ -0,0 +1,116 @@ +. + */ + +include_once __DIR__.'/../../core.php'; + +use Models\Module; +use Carbon\Carbon; + +$id_record = filter('id_record'); +$dir = filter('dir'); +$nome_stampa = filter('nome_stampa'); +$id_print = $dbo->fetchOne('SELECT id FROM zz_prints WHERE name='.prepare($nome_stampa))['id']; +$id_module = Module::pool('Stampe contabili')->id; + +$year = (new Carbon($_SESSION['period_end']))->format('Y'); + +// Trovo id_print della stampa +$link = Prints::getHref($nome_stampa, $id_record); + +echo ' + + +
+
'; + echo ' +
+ {[ "type": "date", "label": "'.tr('Data inizio').'", "required": "1", "name": "date_start", "value": "'.$_SESSION['period_start'].'" ]} +
+ +
+ {[ "type": "date", "label": "'.tr('Data fine').'", "required": "1", "name": "date_end", "value": "'.$_SESSION['period_end'].'" ]} +
+ +
+ {[ "type": "checkbox", "label": "'.tr('Includi emesse').'", "name": "is_emessa" ]} +
+
+ +
+
+ {[ "type": "select", "label": "'.tr('Formato').'", "name": "format", "required": "1", "values": "list=\"A4\": \"'.tr('A4').'\", \"A3\": \"'.tr('A3').'\"", "value": "'.$_SESSION['stampe_contabili']['format'].'" ]} +
+ +
+ {[ "type": "select", "label": "'.tr('Orientamento').'", "name": "orientation", "required": "1", "values": "list=\"L\": \"'.tr('Orizzontale').'\", \"P\": \"'.tr('Verticale').'\"", "value": "'.$_SESSION['stampe_contabili']['orientation'].'" ]} +
+
+ {[ "type": "checkbox", "label": "'.tr('Includi parzialmente pagate').'", "name": "is_parz_pagata" ]} +
+'; + + echo ' +
+

 

+ +
+
+
+
'; + +echo ' +'; diff --git a/templates/provvigione/bottom.php b/templates/provvigione/bottom.php new file mode 100644 index 000000000..8dd9b18f5 --- /dev/null +++ b/templates/provvigione/bottom.php @@ -0,0 +1,32 @@ +. + */ + +include_once __DIR__.'/../../core.php'; + +$totale_provvigioni = sum(array_column($records, 'provvigione')); + +echo ' + + + '.tr('Totale provvigioni', [], ['upper' => true]).': + + '.moneyFormat($totale_provvigioni, 2).' + + +'; diff --git a/templates/provvigione/init.php b/templates/provvigione/init.php new file mode 100644 index 000000000..3f0b78ff8 --- /dev/null +++ b/templates/provvigione/init.php @@ -0,0 +1,72 @@ +. + */ + +include_once __DIR__.'/../../core.php'; + +$module = Modules::get('Fatture di vendita'); +$id_module = $module['id']; + +$module_query = ' +SELECT + numero_esterno, + an_anagrafiche.ragione_sociale, + prezzo_unitario, + provvigione_percentuale, + provvigione +FROM + `co_documenti` + LEFT JOIN `an_anagrafiche` ON `co_documenti`.`idanagrafica` = `an_anagrafiche`.`idanagrafica` + LEFT JOIN `co_tipidocumento` ON `co_documenti`.`idtipodocumento` = `co_tipidocumento`.`id` + LEFT JOIN (SELECT `iddocumento`, SUM(`subtotale` - `sconto`) AS `totale_imponibile`, SUM(`iva`) AS `iva` FROM `co_righe_documenti` GROUP BY `iddocumento`) AS righe ON `co_documenti`.`id` = `righe`.`iddocumento` + LEFT JOIN `co_statidocumento` ON `co_documenti`.`idstatodocumento` = `co_statidocumento`.`id` + LEFT JOIN an_anagrafiche as agenti ON agenti.idanagrafica = co_documenti.idagente + LEFT JOIN co_righe_documenti ON co_righe_documenti.iddocumento = co_documenti.id +WHERE + 1=1 +GROUP BY + co_documenti.id, co_righe_documenti.id +HAVING + 2=2 +ORDER BY + `co_documenti`.`data` DESC'; + +if(!empty(get('date_start'))){ + $module_query = str_replace('1=1', '1=1 AND DATE_FORMAT(`data`, "%Y%m%d") >= "'.date('Ymd', strtotime(get('date_start'))).'"', $module_query); + + $date_start = get('date_start'); +} + +if(!empty(get('date_end'))){ + $module_query = str_replace('1=1', '1=1 AND DATE_FORMAT(`data`, "%Y%m%d") <= "'.date('Ymd', strtotime(get('date_end'))).'"', $module_query); + + $date_end = get('date_end'); +} + +$module_query = str_replace('1=1', '1=1 AND co_documenti.idstatodocumento IN (SELECT id FROM co_statidocumento WHERE descrizione = "Pagato")', $module_query); + +if(get('is_emessa')=='true' && get('is_parz_pagata')=='true'){ + $module_query = str_replace('1=1 AND co_documenti.idstatodocumento IN (SELECT id FROM co_statidocumento WHERE descrizione = "Pagato")', '1=1 AND co_documenti.idstatodocumento IN (SELECT id FROM co_statidocumento WHERE descrizione = "Pagato" OR descrizione = "Emessa" OR descrizione = "Parzialmente pagato")', $module_query); +} else if(get('is_emessa')=='true'){ + $module_query = str_replace('1=1 AND co_documenti.idstatodocumento IN (SELECT id FROM co_statidocumento WHERE descrizione = "Pagato")', '1=1 AND co_documenti.idstatodocumento IN (SELECT id FROM co_statidocumento WHERE descrizione = "Pagato" OR descrizione = "Emessa")', $module_query); +} else if(get('is_parz_pagata')=='true'){ + $module_query = str_replace('1=1 AND co_documenti.idstatodocumento IN (SELECT id FROM co_statidocumento WHERE descrizione = "Pagato")', '1=1 AND co_documenti.idstatodocumento IN (SELECT id FROM co_statidocumento WHERE descrizione = "Pagato" OR descrizione = "Parzialmente pagato")', $module_query); +} + +$module_query = str_replace('1=1', '1=1 AND co_documenti.idagente='.prepare($id_record), $module_query); +$records = $dbo->fetchArray($module_query); \ No newline at end of file diff --git a/templates/provvigione/piece.php b/templates/provvigione/piece.php new file mode 100644 index 000000000..536191583 --- /dev/null +++ b/templates/provvigione/piece.php @@ -0,0 +1,29 @@ +. + */ + +include_once __DIR__.'/../../core.php'; + +echo ' + + Fattura n. '.$record['numero_esterno'].' + '.$record['ragione_sociale'].' + '.moneyFormat($record['prezzo_unitario'], 2).' + '.numberFormat($record['provvigione_percentuale'], 0).' % + '.moneyFormat($record['provvigione'], 2).' + '; diff --git a/templates/provvigione/settings.php b/templates/provvigione/settings.php new file mode 100644 index 000000000..fe6e31828 --- /dev/null +++ b/templates/provvigione/settings.php @@ -0,0 +1,27 @@ +. + */ + +$format = (isset($_SESSION['stampe_contabili']['format'])) ? $_SESSION['stampe_contabili']['format'] : 'A4'; +$orientation = (isset($_SESSION['stampe_contabili']['orientation'])) ? $_SESSION['stampe_contabili']['orientation'] : 'L'; + +return [ + 'format' => $format, + 'orientation' => $orientation, + 'font-size' => '11pt', +]; diff --git a/templates/provvigione/top.php b/templates/provvigione/top.php new file mode 100644 index 000000000..56e14fdf6 --- /dev/null +++ b/templates/provvigione/top.php @@ -0,0 +1,58 @@ +. + */ + +include_once __DIR__.'/../../core.php'; +use Modules\Anagrafiche\Anagrafica; + +$agente = Anagrafica::where([ + ['idanagrafica', '=', $id_record], +])->first(); + +echo ' +

'.tr('Liquidazione provvigioni agente _ANAG_', [ + '_ANAG_' => $agente->ragione_sociale, +], ['upper' => true]).'

'; + +if(!empty($date_start) AND !empty($date_end)) { + echo ' +

'.tr('Provvigioni dal _START_ al _END_', [ + '_START_' => Translator::dateToLocale($date_start), + '_END_' => Translator::dateToLocale($date_end), + ], ['upper' => true]).' +

'; +}else{ + echo ' +
'.tr('Provvigioni').' +
'; +} + +echo ' + + + + + + + + + + + + '; +
'.tr('Documento', [], ['upper' => true]).''.tr('Anagrafica', [], ['upper' => true]).''.tr('Importo', [], ['upper' => true]).''.tr('Percentuale', [], ['upper' => true]).''.tr('Provvigione', [], ['upper' => true]).'