From 3588ed70ca1f168ab49be79e200ac969cc213be2 Mon Sep 17 00:00:00 2001 From: Pek5892 Date: Mon, 16 Jan 2023 16:02:28 +0100 Subject: [PATCH] Migliorie minori esportazione Ri.Ba. --- .../src/Cbi/Elemento.php | 2 +- .../src/Cbi/Intestazione.php | 35 ++++++++++------- .../src/Cbi/Records/Record20.php | 10 ++--- .../src/Cbi/Records/RecordIB.php | 7 ++-- .../presentazioni_bancarie/src/Cbi/RiBa.php | 39 +++++++++++++++---- .../src/Cbi/Ricevuta.php | 2 +- .../presentazioni_bancarie/src/Gestore.php | 6 +-- 7 files changed, 66 insertions(+), 35 deletions(-) diff --git a/plugins/presentazioni_bancarie/src/Cbi/Elemento.php b/plugins/presentazioni_bancarie/src/Cbi/Elemento.php index a999689eb..a296d34d1 100644 --- a/plugins/presentazioni_bancarie/src/Cbi/Elemento.php +++ b/plugins/presentazioni_bancarie/src/Cbi/Elemento.php @@ -29,7 +29,7 @@ abstract class Elemento /** * @return array */ - abstract public function toCbiFormat(); + abstract public function toRibaAbiCbiFormat(); /** * @param string $string diff --git a/plugins/presentazioni_bancarie/src/Cbi/Intestazione.php b/plugins/presentazioni_bancarie/src/Cbi/Intestazione.php index 65dfe03e9..abe035c9e 100644 --- a/plugins/presentazioni_bancarie/src/Cbi/Intestazione.php +++ b/plugins/presentazioni_bancarie/src/Cbi/Intestazione.php @@ -6,15 +6,16 @@ namespace Plugins\PresentazioniBancarie\Cbi; * Classe per gestire l'intestazione del RiBa. * * @property int $abi + * @property int $soggetto_veicolatore * @property int $cab * @property string $conto * @property string $data_creazione * @property string $nome_supporto * @property string $codice_divisa - * @property string $ragione_soc1_creditore - * @property string $ragione_soc2_creditore + * @property string $ragione_sociale_creditore * @property string $indirizzo_creditore - * @property string $cap_citta_prov_creditore + * @property string $citta_creditore + * @property string $partita_iva_o_codice_fiscale_creditore * @property string $identificativo_creditore * @property string $codice_sia * @property bool $eol @@ -27,6 +28,13 @@ class Intestazione extends Elemento * @var int Valore numerico di 5 cifre */ protected $abi; + + /** + * Codice ABI del soggetto veicolatore. + * + * @var int Valore numerico di 5 cifre + */ + protected $soggetto_veicolatore; /** * Codice CAB della banca del creditore. * @@ -54,11 +62,7 @@ class Intestazione extends Elemento /** * @var string Valore alfanumerico di 24 cifre */ - protected $ragione_soc1_creditore; - /** - * @var string Valore alfanumerico di 24 cifre - */ - protected $ragione_soc2_creditore; + protected $ragione_sociale_creditore; /** * @var string Valore alfanumerico di 24 cifre */ @@ -66,7 +70,11 @@ class Intestazione extends Elemento /** * @var string Valore alfanumerico di 24 cifre */ - protected $cap_citta_prov_creditore; + protected $citta_creditore; + /** + * @var string Valore alfanumerico di 24 cifre + */ + protected $partita_iva_o_codice_fiscale_creditore; /** * @var string Valore alfanumerico di 16 cifre, opzionale (default "") */ @@ -80,7 +88,7 @@ class Intestazione extends Elemento */ protected $eol = true; - public function toCbiFormat() + public function toRibaAbiCbiFormat() { return [ $this->abi, @@ -89,12 +97,13 @@ class Intestazione extends Elemento $this->data_creazione, $this->nome_supporto, $this->codice_divisa, - $this->ragione_soc1_creditore, - $this->ragione_soc2_creditore, + $this->ragione_sociale_creditore, $this->indirizzo_creditore, - $this->cap_citta_prov_creditore, + $this->citta_creditore, + $this->partita_iva_o_codice_fiscale_creditore, $this->identificativo_creditore, $this->codice_sia, + $this->soggetto_veicolatore, $this->eol, ]; } diff --git a/plugins/presentazioni_bancarie/src/Cbi/Records/Record20.php b/plugins/presentazioni_bancarie/src/Cbi/Records/Record20.php index 360bf8dde..2c3cc002a 100644 --- a/plugins/presentazioni_bancarie/src/Cbi/Records/Record20.php +++ b/plugins/presentazioni_bancarie/src/Cbi/Records/Record20.php @@ -6,10 +6,10 @@ namespace Plugins\PresentazioniBancarie\Cbi\Records; * Classe dedicata alla gestione dei dati per il record 20 del formato CBI. * * @property string numero_progressivo Numero progressivo della ricevuta, uguale a quello indicato per il record 14 della disposizione. - * @property string descrizione_creditore_1 Descrizione del creditore (24 caratteri alfanumerici). - * @property string descrizione_creditore_2 Descrizione del creditore (24 caratteri alfanumerici). - * @property string descrizione_creditore_3 Descrizione del creditore (24 caratteri alfanumerici). - * @property string descrizione_creditore_4 Descrizione del creditore (24 caratteri alfanumerici). + * @property string descrizione_creditore_1 Descrizione del creditore (24 caratteri alfanumerici): ragione sociale + * @property string descrizione_creditore_2 Descrizione del creditore (24 caratteri alfanumerici): indirizzo + * @property string descrizione_creditore_3 Descrizione del creditore (24 caratteri alfanumerici): citta + * @property string descrizione_creditore_4 Descrizione del creditore (24 caratteri alfanumerici): codice fiscale o partita iva -> allineamento a dx (vedi http://www.m8k.org/tracciatocbinet) */ class Record20 extends BaseRecord { @@ -35,7 +35,7 @@ class Record20 extends BaseRecord 'tipo' => 'string', ], 'descrizione_creditore_4' => [ - 'inizio' => 83, + 'inizio' => 91, 'dimensione' => 24, 'tipo' => 'string', ], diff --git a/plugins/presentazioni_bancarie/src/Cbi/Records/RecordIB.php b/plugins/presentazioni_bancarie/src/Cbi/Records/RecordIB.php index 41cc94939..216209e6e 100644 --- a/plugins/presentazioni_bancarie/src/Cbi/Records/RecordIB.php +++ b/plugins/presentazioni_bancarie/src/Cbi/Records/RecordIB.php @@ -12,7 +12,7 @@ namespace Plugins\PresentazioniBancarie\Cbi\Records; * @property string campo_a_disposizione Campo a disposizione dell'Azienda codice_sia_mittente. * @property string tipo_flusso Assume il valore: "1" = operazioni generate nell’ambito di attività Market Place. * @property string qualificatore_flusso Assume il valore fisso "$". - * @property string soggetto_veicolare Se i due campi tipo_flusso e qualificatore_flusso sono valorizzati con i valori previsti, deve essere indicato il codice ABI della Banca Gateway MP. + * @property string soggetto_veicolatore Se i due campi tipo_flusso e qualificatore_flusso sono valorizzati con i valori previsti, deve essere indicato il codice ABI della Banca Gateway MP. * @property string codice_divisa Assume il valore fisso "E" (Euro). * @property string centro_applicativo Questo campo è di interesse soltanto della tratta tra Centri Applicativi. Codice ABI del Centro Applicativo destinatario del supporto. */ @@ -52,10 +52,9 @@ class RecordIB extends BaseRecord 'qualificatore_flusso' => [ 'inizio' => 106, 'dimensione' => 1, - 'tipo' => 'constant', - 'valore' => '$', + 'tipo' => 'string', ], - 'soggetto_veicolare' => [ + 'soggetto_veicolatore' => [ 'inizio' => 107, 'dimensione' => 5, 'tipo' => 'string', diff --git a/plugins/presentazioni_bancarie/src/Cbi/RiBa.php b/plugins/presentazioni_bancarie/src/Cbi/RiBa.php index 48ca16794..6d7a0df6b 100644 --- a/plugins/presentazioni_bancarie/src/Cbi/RiBa.php +++ b/plugins/presentazioni_bancarie/src/Cbi/RiBa.php @@ -93,8 +93,11 @@ class RiBa $ib->nome_supporto = $intestazione->nome_supporto; $ib->data_creazione = $intestazione->data_creazione; - $ib->tipo_flusso = 1; - $ib->soggetto_veicolare = $intestazione->abi; + if ( $intestazione->soggetto_veicolatore != "" ) { + $ib->tipo_flusso = 1; + $ib->qualificatore_flusso = '$'; + } + $ib->soggetto_veicolatore = $intestazione->soggetto_veicolatore; $contenuto .= $ib->toCBI().$eol; // Iterazione tra le ricevute interne al RiBa @@ -123,10 +126,10 @@ class RiBa // Record 20 $r20 = new Record20(); $r20->numero_progressivo = $progressivo; - $r20->descrizione_creditore_1 = $intestazione->ragione_soc1_creditore; - $r20->descrizione_creditore_2 = $intestazione->ragione_soc2_creditore; - $r20->descrizione_creditore_3 = $intestazione->indirizzo_creditore; - $r20->descrizione_creditore_4 = $intestazione->cap_citta_prov_creditore; + $r20->descrizione_creditore_1 = $intestazione->ragione_sociale_creditore; + $r20->descrizione_creditore_2 = $intestazione->indirizzo_creditore; + $r20->descrizione_creditore_3 = $intestazione->citta_creditore; + $r20->descrizione_creditore_4 = $intestazione->partita_iva_o_codice_fiscale_creditore; $contenuto .= $r20->toCBI().$eol; // Record 30 @@ -159,9 +162,9 @@ class RiBa $r51 = new Record51(); $r51->numero_progressivo = $progressivo; $r51->numero_ricevuta = $ricevuta->numero_ricevuta; - $r51->denominazione_creditore = $intestazione->ragione_soc1_creditore; + $r51->denominazione_creditore = $intestazione->ragione_sociale_creditore; $contenuto .= $r51->toCBI().$eol; - + // Record 70 $r70 = new Record70(); $r70->numero_progressivo = $progressivo; @@ -183,4 +186,24 @@ class RiBa return $contenuto; } + + public function asRibaAbiCbi() + { + $formato_intestazione = $this->intestazione->toRibaAbiCbiFormat(); + + // Trasformazione delle ricevute nel formato relativo + $formato_ricevute = []; + foreach ($this->ricevute as $ricevuta) { + $formato_ricevute[] = $ricevuta->toRibaAbiCbiFormat(); + } + + // Eccezione in caso di assenza di ricevute interne + if (empty($formato_ricevute)) { + throw new InvalidArgumentException(); + } + + $cbi = new RibaAbiCbi(); + + return $cbi->creaFile($formato_intestazione, $formato_ricevute); + } } diff --git a/plugins/presentazioni_bancarie/src/Cbi/Ricevuta.php b/plugins/presentazioni_bancarie/src/Cbi/Ricevuta.php index ace0933a9..a3a4907d3 100644 --- a/plugins/presentazioni_bancarie/src/Cbi/Ricevuta.php +++ b/plugins/presentazioni_bancarie/src/Cbi/Ricevuta.php @@ -90,7 +90,7 @@ class Ricevuta extends Elemento */ protected $descrizione_origine; - public function toCbiFormat() + public function toRibaAbiCbiFormat() { return [ $this->numero_ricevuta, diff --git a/plugins/presentazioni_bancarie/src/Gestore.php b/plugins/presentazioni_bancarie/src/Gestore.php index 8f491e866..dcd50aa9f 100644 --- a/plugins/presentazioni_bancarie/src/Gestore.php +++ b/plugins/presentazioni_bancarie/src/Gestore.php @@ -87,10 +87,10 @@ class Gestore $intestazione->cab = $cab_assuntrice; $intestazione->data_creazione = $data->format('dmy'); $intestazione->nome_supporto = $supporto; - $intestazione->cap_citta_prov_creditore = strtoupper($this->azienda['cap'].' '.$this->azienda['citta'].' '.$this->azienda['provincia']); - $intestazione->ragione_soc1_creditore = strtoupper($this->azienda->ragione_sociale); + $intestazione->citta_creditore = strtoupper($this->azienda['cap'].' '.$this->azienda['citta'].' '.$this->azienda['provincia']); + $intestazione->ragione_sociale_creditore = strtoupper($this->azienda->ragione_sociale); $intestazione->indirizzo_creditore = strtoupper($this->azienda['indirizzo']); - $intestazione->identificativo_creditore = !empty($this->azienda->partita_iva) ? $this->azienda->partita_iva : $this->azienda->codice_fiscale; + $intestazione->partita_iva_o_codice_fiscale_creditore = !empty($this->azienda->partita_iva) ? $this->azienda->partita_iva : $this->azienda->codice_fiscale; $this->riba = new RiBa($intestazione); }