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';
-?>
+
-
-
+ '.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 '