diff --git a/lib/common.php b/lib/common.php index b9322989a..6657713dc 100644 --- a/lib/common.php +++ b/lib/common.php @@ -191,8 +191,11 @@ function calcola_sconto($data) /** * Restistuisce le informazioni sull'eventuale riferimento ai documenti. * - * @param array $data - * @param string $dir + * @param $info + * @param $dir + * @param array $ignore + * + * @throws Exception * * @return array */ diff --git a/lib/functions.php b/lib/functions.php index 32d9f5213..69c4b3384 100644 --- a/lib/functions.php +++ b/lib/functions.php @@ -410,6 +410,6 @@ function operationLog($operation, array $ids = [], array $options = []) * * @return string */ -function clean($string, $permitted) { +function clean($string, $permitted = '') { return preg_replace('/[^A-Za-z0-9'.$permitted.']/', '', $string); // Removes special chars. } diff --git a/modules/fatture/src/Fattura.php b/modules/fatture/src/Fattura.php index c1d9a68b5..140b271bd 100644 --- a/modules/fatture/src/Fattura.php +++ b/modules/fatture/src/Fattura.php @@ -201,6 +201,11 @@ class Fattura extends Document return $this->belongsTo(Stato::class, 'idstatodocumento'); } + public function statoFE() + { + return $this->belongsTo(StatoFE::class, 'codice_stato_fe'); + } + public function articoli() { return $this->hasMany(Components\Articolo::class, 'iddocumento'); diff --git a/modules/fatture/src/StatoFE.php b/modules/fatture/src/StatoFE.php new file mode 100644 index 000000000..4ce50b84c --- /dev/null +++ b/modules/fatture/src/StatoFE.php @@ -0,0 +1,17 @@ +hasMany(Fattura::class, 'codice_stato_fe'); + } +} diff --git a/modules/gestione_documentale/edit.php b/modules/gestione_documentale/edit.php index e2d26bb72..47cd30a53 100644 --- a/modules/gestione_documentale/edit.php +++ b/modules/gestione_documentale/edit.php @@ -28,7 +28,7 @@ include_once __DIR__.'/../../core.php';
- {[ "type": "text", "label": "Data", "name": "data", "required": 1, "class": "datepicker text-center", "value": "", "extra": "" ]} + {[ "type": "text", "label": "Data", "name": "data", "required": 1, "class": "datepicker text-center", "value": "", "extra": "" ]}
diff --git a/modules/ritenute/actions.php b/modules/ritenute/actions.php index fc1e93dba..d05aeb010 100644 --- a/modules/ritenute/actions.php +++ b/modules/ritenute/actions.php @@ -6,11 +6,12 @@ switch (filter('op')) { case 'update': $descrizione = filter('descrizione'); $percentuale = filter('percentuale'); - $indetraibile = filter('indetraibile'); + $percentuale_imponibile = filter('percentuale_imponibile'); - if (isset($descrizione) && isset($percentuale) && isset($indetraibile)) { + + if (isset($descrizione) && isset($percentuale) && isset($percentuale_imponibile)) { if ($dbo->fetchNum('SELECT * FROM `co_ritenutaacconto` WHERE `descrizione`='.prepare($descrizione).' AND `id`!='.prepare($id_record)) == 0) { - $dbo->query('UPDATE `co_ritenutaacconto` SET `descrizione`='.prepare($descrizione).', `percentuale`='.prepare($percentuale).', `indetraibile`='.prepare($indetraibile).' WHERE `id`='.prepare($id_record)); + $dbo->query('UPDATE `co_ritenutaacconto` SET `descrizione`='.prepare($descrizione).', `percentuale`='.prepare($percentuale).', `percentuale_imponibile`='.prepare($percentuale_imponibile).' WHERE `id`='.prepare($id_record)); flash()->info(tr('Salvataggio completato!')); } else { flash()->error(tr("E' già presente una tipologia di _TYPE_ con la stessa descrizione!", [ @@ -26,11 +27,11 @@ switch (filter('op')) { case 'add': $descrizione = filter('descrizione'); $percentuale = filter('percentuale'); - $indetraibile = filter('indetraibile'); + $percentuale_imponibile = filter('percentuale_imponibile'); - if (isset($descrizione) && isset($percentuale) && isset($indetraibile)) { + if (isset($descrizione) && isset($percentuale) && isset($percentuale_imponibile)) { if ($dbo->fetchNum('SELECT * FROM `co_ritenutaacconto` WHERE `descrizione`='.prepare($descrizione)) == 0) { - $dbo->query('INSERT INTO `co_ritenutaacconto` (`descrizione`, `percentuale`, `indetraibile`) VALUES ('.prepare($descrizione).', '.prepare($percentuale).', '.prepare($indetraibile).')'); + $dbo->query('INSERT INTO `co_ritenutaacconto` (`descrizione`, `percentuale`, `percentuale_imponibile`) VALUES ('.prepare($descrizione).', '.prepare($percentuale).', '.prepare($percentuale_imponibile).')'); $id_record = $dbo->lastInsertedID(); flash()->info(tr('Aggiunta nuova tipologia di _TYPE_', [ diff --git a/modules/ritenute/edit.php b/modules/ritenute/edit.php index 437989795..b1522b703 100644 --- a/modules/ritenute/edit.php +++ b/modules/ritenute/edit.php @@ -2,7 +2,17 @@ include_once __DIR__.'/../../core.php'; -?>
+// Presenza di documenti associati +if ($record['doc_associati'] > 0) { + echo ' +
'.tr('Non puoi eliminare questa ritenuta.').' '.tr('Ci sono _NUM_ documenti associati.', [ + '_NUM_' => $record['doc_associati'], +]).'
'; +} + +?> + + @@ -25,7 +35,7 @@ include_once __DIR__.'/../../core.php';
- {[ "type": "number", "label": "", "name": "indetraibile", "value": "$indetraibile$", "icon-after": "" ]} + {[ "type": "number", "label": "", "name": "percentuale_imponibile", "value": "$percentuale_imponibile$", "help": "", "icon-after": "" ]}
@@ -33,6 +43,12 @@ include_once __DIR__.'/../../core.php';
+ - - + '.tr('Elimina').' +'; +} \ No newline at end of file diff --git a/modules/ritenute/init.php b/modules/ritenute/init.php index 5af0c8b8b..8ac6ac243 100644 --- a/modules/ritenute/init.php +++ b/modules/ritenute/init.php @@ -3,5 +3,5 @@ include_once __DIR__.'/../../core.php'; if (isset($id_record)) { - $record = $dbo->fetchOne('SELECT * FROM `co_ritenutaacconto` WHERE id='.prepare($id_record)); + $record = $dbo->fetchOne('SELECT *, (SELECT COUNT(idritenutaacconto) FROM co_documenti WHERE co_documenti.idritenutaacconto = '.prepare($id_record).') AS doc_associati FROM `co_ritenutaacconto` WHERE id='.prepare($id_record)); } diff --git a/modules/statistiche/edit.php b/modules/statistiche/edit.php index b5e44f054..38c386dc7 100644 --- a/modules/statistiche/edit.php +++ b/modules/statistiche/edit.php @@ -38,8 +38,8 @@ $d1 = new DateTime($start); $d2 = new DateTime($end); $count = $d1->diff($d2)->m + ($d1->diff($d2)->y * 12) + 1; -$fatturato = $dbo->fetchArray("SELECT SUM(co_righe_documenti.subtotale - co_righe_documenti.sconto) AS totale, YEAR(co_documenti.data) AS year, MONTH(co_documenti.data) AS month FROM co_documenti INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id INNER JOIN co_righe_documenti ON co_righe_documenti.iddocumento=co_documenti.id WHERE co_tipidocumento.dir='entrata' AND co_tipidocumento.descrizione!='Bozza' AND co_documenti.data BETWEEN ".prepare($start).' AND '.prepare($end).' GROUP BY YEAR(co_documenti.data), MONTH(co_documenti.data) ORDER BY YEAR(co_documenti.data) ASC, MONTH(co_documenti.data) ASC'); -$acquisti = $dbo->fetchArray("SELECT SUM(co_righe_documenti.subtotale - co_righe_documenti.sconto) AS totale, YEAR(co_documenti.data) AS year, MONTH(co_documenti.data) AS month FROM co_documenti INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id INNER JOIN co_righe_documenti ON co_righe_documenti.iddocumento=co_documenti.id WHERE co_tipidocumento.dir='uscita' AND co_tipidocumento.descrizione!='Bozza' AND co_documenti.data BETWEEN ".prepare($start).' AND '.prepare($end).' GROUP BY YEAR(co_documenti.data), MONTH(co_documenti.data) ORDER BY YEAR(co_documenti.data) ASC, MONTH(co_documenti.data) ASC'); +$fatturato = $dbo->fetchArray("SELECT ROUND(SUM(co_righe_documenti.subtotale - co_righe_documenti.sconto), 2) AS totale, YEAR(co_documenti.data) AS year, MONTH(co_documenti.data) AS month FROM co_documenti INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id INNER JOIN co_righe_documenti ON co_righe_documenti.iddocumento=co_documenti.id WHERE co_tipidocumento.dir='entrata' AND co_tipidocumento.descrizione!='Bozza' AND co_documenti.data BETWEEN ".prepare($start).' AND '.prepare($end).' GROUP BY YEAR(co_documenti.data), MONTH(co_documenti.data) ORDER BY YEAR(co_documenti.data) ASC, MONTH(co_documenti.data) ASC'); +$acquisti = $dbo->fetchArray("SELECT ROUND(SUM(co_righe_documenti.subtotale - co_righe_documenti.sconto), 2) AS totale, YEAR(co_documenti.data) AS year, MONTH(co_documenti.data) AS month FROM co_documenti INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id INNER JOIN co_righe_documenti ON co_righe_documenti.iddocumento=co_documenti.id WHERE co_tipidocumento.dir='uscita' AND co_tipidocumento.descrizione!='Bozza' AND co_documenti.data BETWEEN ".prepare($start).' AND '.prepare($end).' GROUP BY YEAR(co_documenti.data), MONTH(co_documenti.data) ORDER BY YEAR(co_documenti.data) ASC, MONTH(co_documenti.data) ASC'); $month = intval($d1->format('m')) - 1; for ($i = 0; $i < $count; ++$i) { @@ -85,14 +85,14 @@ $(document).ready(function() { labels: months, datasets: [ { - label: "'.tr('Fatturato').'", + label: "'.tr('Fatturato (iva esclusa)').'", backgroundColor: "#63E360", data: [ '.implode(',', array_column($fatturato, 'totale')).' ] }, { - label: "'.tr('Acquisti').'", + label: "'.tr('Acquisti (iva esclusa)').'", backgroundColor: "#EE4B4B", data: [ '.implode(',', array_column($acquisti, 'totale')).' @@ -105,6 +105,16 @@ $(document).ready(function() { legend: { position: "bottom", }, + scales: { + yAxes: [{ + ticks: { + // Include a dollar sign in the ticks + callback: function(value, index, values) { + return \'€ \' + value; + } + } + }] + }, } }); }); diff --git a/plugins/exportFE/actions.php b/plugins/exportFE/actions.php index d05be6761..c60e33d2e 100644 --- a/plugins/exportFE/actions.php +++ b/plugins/exportFE/actions.php @@ -31,7 +31,6 @@ switch (filter('op')) { if ($result) { database()->update('co_documenti', [ 'codice_stato_fe' => 'WAIT', - 'descrizione_stato_fe' => 'Fattura in elaborazione...', 'data_stato_fe' => date('Y-m-d H:i:s'), ], ['id' => $id_record]); } diff --git a/plugins/exportFE/edit.php b/plugins/exportFE/edit.php index f5dd3bf1c..8a60e9479 100644 --- a/plugins/exportFE/edit.php +++ b/plugins/exportFE/edit.php @@ -152,7 +152,7 @@ echo ' '; // Scelgo quando posso inviarla -$send = Interaction::isEnabled() && $generated && in_array( $record['codice_stato_fe'], array('GEN', 'ERVAL') ); +$send = Interaction::isEnabled() && $generated && in_array($record['codice_stato_fe'], ['GEN', 'ERVAL']); echo ' @@ -163,32 +163,34 @@ echo '

'; // Messaggio esito invio +if ($send) { + if ($record['codice_stato_fe'] == 'GEN') { + echo ' +
'.tr("La fattura è stata generata ed è pronta per l'invio").'.
+ '; + } else { + $stato_fe = database()->fetchOne('SELECT codice, descrizione, icon FROM fe_stati_documento WHERE codice='.prepare($record['codice_stato_fe'])); -if ($send){ - if ($record['codice_stato_fe'] == '') { - - } elseif ($record['codice_stato_fe'] == 'GEN') { - echo ' -
'.tr('La fattura è stata generata ed è pronta per l\'invio.').'
+ if (in_array($stato_fe['codice'], ['EC01', 'RC'])) { + $class = 'success'; + } elseif (in_array($stato_fe['codice'], ['ERVAL', 'GEN', 'MC', 'WAIT'])) { + $class = 'warning'; + } else { + $class = 'danger'; + } + + echo ' +
+ + '.$stato_fe['codice'].' - '.$stato_fe['descrizione'].' '.$record['descrizione_ricevuta_fe'].' +
+ '.Translator::timestampToLocale($record['data_stato_fe']).' +
+ '; - } else { - $stato_fe = database()->fetchOne('SELECT codice, descrizione, icon FROM fe_stati_documento WHERE codice='.prepare($record['codice_stato_fe'])); - - if (in_array($stato_fe['codice'], array('EC01', 'RC'))) { - $class = 'success'; - } elseif (in_array($stato_fe['codice'], array('ERVAL', 'GEN', 'MC', 'WAIT'))) { - $class = 'warning'; - } else { - $class = 'danger'; - } - - echo ' -
'.$record['codice_stato_fe'].' - '.$record['descrizione_stato_fe'].'
'.date('d/m/Y H:i', strtotime($record['data_stato_fe'])).'
- '; - } + } } - echo '