Migliorie minori esportazione Ri.Ba.

This commit is contained in:
Pek5892 2023-01-16 16:02:28 +01:00
parent 382173c2b2
commit 3588ed70ca
7 changed files with 66 additions and 35 deletions

View File

@ -29,7 +29,7 @@ abstract class Elemento
/**
* @return array
*/
abstract public function toCbiFormat();
abstract public function toRibaAbiCbiFormat();
/**
* @param string $string

View File

@ -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,
];
}

View File

@ -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',
],

View File

@ -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 nellambito 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',

View File

@ -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);
}
}

View File

@ -90,7 +90,7 @@ class Ricevuta extends Elemento
*/
protected $descrizione_origine;
public function toCbiFormat()
public function toRibaAbiCbiFormat()
{
return [
$this->numero_ricevuta,

View File

@ -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);
}