diff --git a/modules/fatture/actions.php b/modules/fatture/actions.php index 42439cb19..0929bb15c 100755 --- a/modules/fatture/actions.php +++ b/modules/fatture/actions.php @@ -71,25 +71,20 @@ switch (post('op')) { $tipo = Tipo::find(post('idtipodocumento')); $fattura->tipo()->associate($tipo); - - if (setting('Imposta data emissione in base alla prima data disponibile') == 1) { - if ($dir == 'entrata') { - if ($stato->descrizione == 'Emessa'){ - $data_fattura_precedente = $dbo->fetchOne(' - SELECT - MAX(DATA) AS datamax - FROM - co_documenti - INNER JOIN co_statidocumento ON co_statidocumento.id = co_documenti.idstatodocumento - INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento = co_tipidocumento.id - WHERE - co_statidocumento.descrizione = "Emessa" AND co_tipidocumento.dir="entrata"'); - if (Carbon::parse($data)->lessThan(Carbon::parse($data_fattura_precedente['datamax']))) { - $fattura->data = $data_fattura_precedente['datamax']; - $fattura->data_competenza = $data_fattura_precedente['datamax']; - } - } - } + $data_fattura_precedente = $dbo->fetchOne(' + SELECT + MAX(DATA) AS datamax + FROM + co_documenti + INNER JOIN co_statidocumento ON co_statidocumento.id = co_documenti.idstatodocumento + INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento = co_tipidocumento.id + INNER JOIN zz_segments ON zz_segments.id = co_documenti.id_segment + WHERE + co_statidocumento.descrizione = "Emessa" AND co_tipidocumento.dir="entrata" AND co_documenti.id_segment='.$fattura->id_segment); + + if ((setting('Data emissione fattura automatica') == 1) && ($dir == 'entrata') && ($stato->descrizione == 'Emessa') && (Carbon::parse($data)->lessThan(Carbon::parse($data_fattura_precedente['datamax']))) && (!empty($data_fattura_precedente['datamax']))){ + $fattura->data = $data_fattura_precedente['datamax']; + $fattura->data_competenza = $data_fattura_precedente['datamax']; } else { $fattura->data = post('data'); $fattura->data_competenza = post('data_competenza'); diff --git a/modules/fatture/bulk.php b/modules/fatture/bulk.php index 6a69b8662..f0eb2590f 100755 --- a/modules/fatture/bulk.php +++ b/modules/fatture/bulk.php @@ -29,6 +29,7 @@ use Util\XML; use Util\Zip; use Modules\Fatture\Stato; use Plugins\ReceiptFE\Ricevuta; +use Carbon\Carbon; $anagrafica_azienda = Anagrafica::find(setting('Azienda predefinita')); $stato_emessa = $dbo->selectOne('co_statidocumento', 'id', ['descrizione' => 'Emessa'])['id']; @@ -469,9 +470,33 @@ switch (post('op')) { ->get(); foreach ($fatture as $fattura) { + $data = $fattura->data; + $fattura = Fattura::find($fattura['id']); $stato_precedente = Stato::find($fattura->idstatodocumento); + $data_fattura_precedente = $dbo->fetchOne(' + SELECT + MAX(DATA) AS datamax + FROM + co_documenti + INNER JOIN co_statidocumento ON co_statidocumento.id = co_documenti.idstatodocumento + INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento = co_tipidocumento.id + INNER JOIN zz_segments ON zz_segments.id = co_documenti.id_segment + WHERE + co_statidocumento.descrizione = "Emessa" AND co_tipidocumento.dir="entrata" AND co_documenti.id_segment='.$fattura->id_segment); + + if ((setting('Data emissione fattura automatica') == 1) && ($dir == 'entrata') && (Carbon::parse($data)->lessThan(Carbon::parse($data_fattura_precedente['datamax']))) && (!empty($data_fattura_precedente['datamax']))){ + $fattura->data = $data_fattura_precedente['datamax']; + $fattura->data_competenza = $data_fattura_precedente['datamax']; + } + + if ($dir == 'entrata') { + $fattura->data_registrazione = post('data'); + } else { + $fattura->data_registrazione = post('data_registrazione'); + } + if ($stato_precedente->descrizione == 'Bozza' && $fattura->isFiscale()) { $fattura->stato()->associate($new_stato); $results = $fattura->save(); diff --git a/update/2_4_40.sql b/update/2_4_40.sql index 040ec071c..9985fba69 100644 --- a/update/2_4_40.sql +++ b/update/2_4_40.sql @@ -179,4 +179,4 @@ INSERT INTO `zz_settings` (`id`, `nome`, `valore`, `tipo`, `editable`, `sezione` INSERT INTO `zz_views` (`id_module`, `name`, `query`, `order`, `search`, `slow`, `format`, `html_format`, `search_inside`, `order_by`, `visible`, `summable`, `default`) VALUES ((SELECT id from zz_modules WHERE title = "Attività"), 'KM', 'sum(in_interventi_tecnici.km)', '29', '1', '0', '1', '0', NULL, NULL, '0', '1', '0'); -- Aggiunta impostazione data emissione automatica -INSERT INTO `zz_settings` (`id`, `nome`, `valore`, `tipo`, `editable`, `sezione`, `order`, `help`) VALUES (NULL, "Imposta data emissione in base alla prima data disponibile", '0', 'boolean', '1', 'Fatturazione', NULL, 'Imposta data emissione del documento in ciclo attivo, in base alla prima data disponibile in relazione ai documenti già emessi'); \ No newline at end of file +INSERT INTO `zz_settings` (`id`, `nome`, `valore`, `tipo`, `editable`, `sezione`, `order`, `help`) VALUES (NULL, "Data emissione fattura automatica", '0', 'boolean', '1', 'Fatturazione', NULL, "Impedisce l'emissione di fatture di vendita con data precedente alla data dell'ultima fattura emessa"); \ No newline at end of file