diff --git a/modules/fatture/src/Gestori/Scadenze.php b/modules/fatture/src/Gestori/Scadenze.php index 2846263cd..fac9f9d43 100644 --- a/modules/fatture/src/Gestori/Scadenze.php +++ b/modules/fatture/src/Gestori/Scadenze.php @@ -157,7 +157,7 @@ class Scadenze $netto = $this->fattura->isNota() ? -$netto : $netto; // Calcolo delle rate - $rate = $this->fattura->pagamento->calcola($netto, $this->fattura->data); + $rate = $this->fattura->pagamento->calcola($netto, $this->fattura->data, $this->fattura->idanagrafica); $direzione = $this->fattura->tipo->dir; foreach ($rate as $rata) { diff --git a/modules/pagamenti/src/Pagamento.php b/modules/pagamenti/src/Pagamento.php index c89a07d8d..a1c3c21cb 100755 --- a/modules/pagamenti/src/Pagamento.php +++ b/modules/pagamenti/src/Pagamento.php @@ -39,7 +39,7 @@ class Pagamento extends Model return $this->hasMany(Pagamento::class, 'descrizione', 'descrizione'); } - public function calcola($importo, $data) + public function calcola($importo, $data, $id_anagrafica) { $rate = $this->rate->sortBy('num_giorni'); $number = count($rate); @@ -99,7 +99,14 @@ class Pagamento extends Model $date->setDate($date->format('Y'), $date->format('m'), $day); } - // Comversione della data in stringa standard + // Posticipo la scadenza in base alle regole pagamenti dell'anagrafica + $regola_pagamento = database()->selectOne('an_pagamenti_anagrafiche', '*', ['idanagrafica' => $id_anagrafica, 'mese' => $date->format('m')]); + if (!empty($regola_pagamento)) { + $date->modify('last day of this month'); + $date->addDay( $regola_pagamento['giorno_fisso'] ); + } + + // Conversione della data in stringa standard $scadenza = $date->format('Y-m-d'); // All'ultimo ciclo imposto come cifra da pagare il totale della fattura meno gli importi già inseriti in scadenziario per evitare di inserire cifre arrotondate "male" diff --git a/plugins/pagamenti_anagrafiche/actions.php b/plugins/pagamenti_anagrafiche/actions.php new file mode 100644 index 000000000..69cb0a9ce --- /dev/null +++ b/plugins/pagamenti_anagrafiche/actions.php @@ -0,0 +1,60 @@ +. + */ + +include_once __DIR__.'/../../core.php'; + +$operazione = filter('op'); + +switch ($operazione) { + case 'addpagamento': + if (count($dbo->selectOne('an_pagamenti_anagrafiche', 'id', ['idanagrafica' => $id_parent, 'mese' => post('mese')])) == 0) { + $dbo->insert('an_pagamenti_anagrafiche', [ + 'idanagrafica' => $id_parent, + 'mese' => post('mese'), + 'giorno_fisso' => post('giorno_fisso'), + ]); + $id_record = $dbo->lastInsertedID(); + + flash()->info(tr('Aggiunta una nuova regola pagamento!')); + } else { + flash()->warning(tr('Esiste già una regola con lo stesso mese!')); + } + + break; + + case 'updatepagamento': + $opt_out_newsletter = post('disable_newsletter'); + + $dbo->update('an_pagamenti_anagrafiche', [ + 'mese' => post('mese'), + 'giorno_fisso' => post('giorno_fisso'), + ], ['id' => $id_record]); + + flash()->info(tr('Salvataggio completato!')); + + break; + + case 'deletepagamento': + $id = filter('id'); + $dbo->query('DELETE FROM `an_pagamenti_anagrafiche` WHERE `id` = '.prepare($id).''); + + flash()->info(tr('Regola pagamento eliminata!')); + + break; +} diff --git a/plugins/pagamenti_anagrafiche/add.php b/plugins/pagamenti_anagrafiche/add.php new file mode 100644 index 000000000..e17776143 --- /dev/null +++ b/plugins/pagamenti_anagrafiche/add.php @@ -0,0 +1,77 @@ +. + */ + +include_once __DIR__.'/../../core.php'; + +$mesi = [ + '01' => 'Gennaio', + '02' => 'Febbraio', + '03' => 'Marzo', + '04' => 'Aprile', + '05' => 'Maggio', + '06' => 'Giugno', + '07' => 'Luglio', + '08' => 'Agosto', + '09' => 'Settembre', + '11' => 'Ottobre', + '11' => 'Novembre', + '12' => 'Dicembre', +]; + +foreach ($mesi as $id => $mese) { + $mesi_pagamento[] = [ + 'id' => $id, + 'text' => $mese, + ]; +} + +$giorni_pagamento = []; +for ($i = 1; $i <= 31; ++$i) { + $giorni_pagamento[] = [ + 'id' => $i, + 'text' => $i, + ]; +} + +echo ' +
'; diff --git a/plugins/pagamenti_anagrafiche/controller_before.php b/plugins/pagamenti_anagrafiche/controller_before.php new file mode 100644 index 000000000..1ed6b16f2 --- /dev/null +++ b/plugins/pagamenti_anagrafiche/controller_before.php @@ -0,0 +1,25 @@ +. + */ + +include_once __DIR__.'/../../core.php'; + +echo ' +