2021-12-01 12:27:56 +01:00
< ? php
namespace Plugins\PresentazioniBancarie ;
use Carbon\Carbon ;
use Digitick\Sepa\PaymentInformation ;
use Digitick\Sepa\TransferFile\Factory\TransferFileFacadeFactory ;
use Modules\Anagrafiche\Anagrafica ;
use Modules\Banche\Banca ;
use Modules\Scadenzario\Scadenza ;
2023-08-04 14:54:28 +02:00
use Plugins\PresentazioniBancarie\Cbi\CbiSepa ;
use Plugins\PresentazioniBancarie\Cbi\Intestazione ;
use Plugins\PresentazioniBancarie\Cbi\RiBa ;
use Plugins\PresentazioniBancarie\Cbi\Ricevuta ;
2021-12-01 12:27:56 +01:00
use Sdd\DirectDebit as DirectDebitCBI ;
use Sdd\DirectDebit\GroupHeader as HeaderCBI ;
use Sdd\DirectDebit\Payment as PaymentCBI ;
use Sdd\DirectDebit\PaymentInformation as PaymentInformationCBI ;
class Gestore
{
/**
* @ var Anagrafica | null
*/
protected static $azienda_predefinita ;
/**
* @ var Banca | null
*/
protected static $banca_predefinita_azienda ;
protected $id_riba ;
2023-03-27 16:55:00 +02:00
protected $id_bonifico ;
2021-12-01 12:27:56 +01:00
protected $id_debito_diretto ;
protected $id_credito_diretto ;
protected $riba ;
protected $debito_diretto ;
protected $credito_diretto ;
2023-03-27 16:55:00 +02:00
protected $bonifico ;
2021-12-01 12:27:56 +01:00
protected $numero_transazioni_debito_diretto = 0 ;
protected $totale_debito_diretto = 0 ;
/**
* @ var Anagrafica
*/
private $azienda ;
/**
* @ var Banca
*/
private $banca_azienda ;
public function __construct ( Anagrafica $azienda , Banca $banca_azienda )
{
$this -> azienda = $azienda ;
$this -> banca_azienda = $banca_azienda ;
$this -> id_riba = random_string ();
$this -> initRiBa ();
2023-03-27 16:55:00 +02:00
$this -> id_bonifico = random_string ();
$this -> initBonifico ();
2021-12-01 12:27:56 +01:00
$this -> id_credito_diretto = random_string ();
$this -> initCreditoDiretto ();
$this -> id_debito_diretto = random_string ();
$this -> initDebitoDiretto ();
}
/**
* Inizializzazione del formato per il sistema RiBa .
*/
public function initRiBa ()
{
$iban = $this -> banca_azienda -> iban ;
$conto = substr ( $iban , 15 , 12 );
$abi_assuntrice = substr ( $iban , 5 , 5 );
$cab_assuntrice = substr ( $iban , 10 , 5 );
$data = new Carbon ();
$supporto = $data -> format ( 'dmYHis' );
// Generazione intestazione
$intestazione = new Intestazione ();
$intestazione -> codice_sia = $this -> banca_azienda [ 'codice_sia' ];
$intestazione -> conto = $conto ;
$intestazione -> abi = $abi_assuntrice ;
$intestazione -> cab = $cab_assuntrice ;
$intestazione -> data_creazione = $data -> format ( 'dmy' );
$intestazione -> nome_supporto = $supporto ;
2023-01-16 16:02:28 +01:00
$intestazione -> citta_creditore = strtoupper ( $this -> azienda [ 'cap' ] . ' ' . $this -> azienda [ 'citta' ] . ' ' . $this -> azienda [ 'provincia' ]);
$intestazione -> ragione_sociale_creditore = strtoupper ( $this -> azienda -> ragione_sociale );
2021-12-01 12:27:56 +01:00
$intestazione -> indirizzo_creditore = strtoupper ( $this -> azienda [ 'indirizzo' ]);
2023-01-16 16:02:28 +01:00
$intestazione -> partita_iva_o_codice_fiscale_creditore = ! empty ( $this -> azienda -> partita_iva ) ? $this -> azienda -> partita_iva : $this -> azienda -> codice_fiscale ;
2021-12-01 12:27:56 +01:00
$this -> riba = new RiBa ( $intestazione );
}
2023-03-27 16:55:00 +02:00
/**
* Inizializzazione del formato per il sistema Bonifico .
*/
public function initBonifico ()
{
$iban = $this -> banca_azienda -> iban ;
$conto = substr ( $iban , 15 , 12 );
$abi_assuntrice = substr ( $iban , 5 , 5 );
$cab_assuntrice = substr ( $iban , 10 , 5 );
$descrizione_banca = $this -> banca_azienda -> nome . ' ' . $this -> banca_azienda -> filiale ;
$data = new Carbon ();
$supporto = $data -> format ( 'dmYHis' );
// Generazione intestazione
$intestazione = new Intestazione ();
$intestazione -> codice_sia = $this -> banca_azienda [ 'codice_sia' ];
$intestazione -> conto = $conto ;
$intestazione -> abi = $abi_assuntrice ;
$intestazione -> cab = $cab_assuntrice ;
$intestazione -> iban = $iban ;
$intestazione -> data_creazione = $data -> format ( 'dmy' );
$intestazione -> nome_supporto = $supporto ;
$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 -> partita_iva_o_codice_fiscale_creditore = ! empty ( $this -> azienda -> partita_iva ) ? $this -> azienda -> partita_iva : $this -> azienda -> codice_fiscale ;
2023-10-06 10:41:55 +02:00
$intestazione -> identificativo_creditore = ! empty ( $this -> azienda -> partita_iva ) ? $this -> azienda -> partita_iva : $this -> azienda -> codice_fiscale ;
2023-03-27 16:55:00 +02:00
$intestazione -> descrizione_banca = $descrizione_banca ;
$this -> bonifico = new CbiSepa ( $intestazione );
}
2021-12-01 12:27:56 +01:00
/**
* Inizializzazione del formato per il credito diretto .
*
* @ source https :// github . com / php - sepa - xml / php - sepa - xml / blob / master / doc / direct_credit . md
*/
public function initCreditoDiretto ()
{
$this -> credito_diretto = TransferFileFacadeFactory :: createCustomerCredit ( $this -> id_credito_diretto , $this -> azienda -> ragione_sociale );
}
/**
* Inizializzazione del formato per il debito diretto .
*
* @ source https :// github . com / php - sepa - xml / php - sepa - xml / blob / master / doc / direct_debit . md
*/
public function initDebitoDirettoSEPA ()
{
$this -> debito_diretto = TransferFileFacadeFactory :: createDirectDebit ( $this -> id_debito_diretto , $this -> azienda -> ragione_sociale );
}
/**
* Inizializzazione del formato per il debito diretto .
*
* @ source https :// github . com / wdog / sdd_ita / blob / master / tests / DirectDebitTest . php
*/
public function initDebitoDiretto ()
{
$this -> debito_diretto = new DirectDebitCBI ();
}
2024-02-05 17:07:33 +01:00
public function aggiungi ( Scadenza $scadenza , int $identifier , string $descrizione , ? string $codice_sequenza = null )
2021-12-01 12:27:56 +01:00
{
$documento = $scadenza -> documento ;
2022-09-01 12:52:33 +02:00
$controparte = $scadenza -> anagrafica ;
2021-12-01 12:27:56 +01:00
$banca_controparte = self :: getBancaControparte ( $scadenza );
if ( empty ( $banca_controparte )) {
return false ;
}
2022-09-01 12:52:33 +02:00
$ctgypurp = $this -> getTipo ( $scadenza )[ 'ctgypurp' ] ? : 'SUPP' ;
2021-12-01 12:27:56 +01:00
$pagamento = $documento -> pagamento ;
$direzione = $documento -> direzione ;
2022-09-01 12:52:33 +02:00
$importo = $scadenza -> da_pagare - $scadenza -> pagato ;
2021-12-01 12:27:56 +01:00
$totale = ( abs ( $scadenza -> da_pagare ) - abs ( $scadenza -> pagato ));
2023-08-04 14:54:28 +02:00
$is_credito_diretto = ( $direzione == 'uscita' && in_array ( $pagamento -> codice_modalita_pagamento_fe , [ 'MP09' , 'MP10' , 'MP11' , 'MP19' , 'MP20' , 'MP21' ])) || ( empty ( $documento ) && $importo < 0 && $ctgypurp != 'SALA' );
2021-12-01 12:27:56 +01:00
$is_debito_diretto = $direzione == 'entrata' && in_array ( $pagamento -> codice_modalita_pagamento_fe , [ 'MP09' , 'MP10' , 'MP11' , 'MP19' , 'MP20' , 'MP21' ]) && ! empty ( $this -> banca_azienda -> creditor_id ); // Mandato SEPA disponibile
$is_riba = $direzione == 'entrata' && in_array ( $pagamento -> codice_modalita_pagamento_fe , [ 'MP12' ]) && ! empty ( $this -> banca_azienda -> codice_sia );
2023-08-04 14:54:28 +02:00
$is_bonifico = $direzione == 'uscita' && in_array ( $pagamento -> codice_modalita_pagamento_fe , [ 'MP05' ]) && ! empty ( $this -> banca_azienda -> codice_sia ) || ( empty ( $documento ) && $importo < 0 && $ctgypurp == 'SALA' );
2021-12-01 12:27:56 +01:00
2023-08-04 14:54:28 +02:00
if ( in_array ( $pagamento -> codice_modalita_pagamento_fe , [ 'MP19' , 'MP21' ])) {
2021-12-01 12:27:56 +01:00
$method = 'B2B' ;
2023-08-04 14:54:28 +02:00
} elseif ( in_array ( $pagamento -> codice_modalita_pagamento_fe , [ 'MP20' ])) {
2021-12-01 12:27:56 +01:00
$method = 'CORE' ;
}
if ( $is_credito_diretto ) {
2022-09-01 12:52:33 +02:00
return $this -> aggiungiCreditoDiretto ( $identifier , $controparte , $banca_controparte , $descrizione , $totale , $scadenza -> scadenza , $ctgypurp );
2021-12-01 12:27:56 +01:00
} elseif ( $is_debito_diretto ) {
return $this -> aggiungiDebitoDiretto ( $identifier , $controparte , $banca_controparte , $descrizione , $totale , $scadenza -> scadenza , $method , $codice_sequenza );
} elseif ( $is_riba ) {
2023-08-04 14:54:28 +02:00
$totale = $totale * 100 ;
2021-12-01 12:27:56 +01:00
return $this -> aggiungiRiBa ( $identifier , $controparte , $banca_controparte , $descrizione , $totale , $scadenza -> scadenza );
2023-03-27 16:55:00 +02:00
} elseif ( $is_bonifico ) {
return $this -> aggiungiBonifico ( $identifier , $controparte , $banca_controparte , $descrizione , $totale , $scadenza -> scadenza , $ctgypurp );
2021-12-01 12:27:56 +01:00
}
return false ;
}
2024-01-15 15:30:45 +01:00
public function aggiungiRiBa ( int $identifier , Anagrafica $controparte , Banca $banca_controparte , string $descrizione , int $totale , \DateTime $data_prevista )
2021-12-01 12:27:56 +01:00
{
$data_scadenza = $data_prevista -> format ( 'dmy' );
// Dati banca cliente
$abi_cliente = substr ( $banca_controparte [ 'iban' ], 5 , 5 );
$cab_cliente = substr ( $banca_controparte [ 'iban' ], 10 , 5 );
$descrizione_banca = $banca_controparte [ 'nome' ] . ' ' . $banca_controparte [ 'filiale' ];
// Aggiunta codice CIG CUP se presenti
if ( ! empty ( $controparte [ 'cig' ])) {
$descrizione .= ' CIG:' . $controparte [ 'cig' ];
}
if ( ! empty ( $controparte [ 'cup' ])) {
$descrizione .= ' CUP:' . $controparte [ 'cup' ];
}
// Salvataggio della singola ricevuta nel RiBa
$ricevuta = new Ricevuta ();
$ricevuta -> numero_ricevuta = $identifier ;
$ricevuta -> scadenza = $data_scadenza ;
$ricevuta -> importo = $totale ;
$ricevuta -> abi_banca = $abi_cliente ;
$ricevuta -> cab_banca = $cab_cliente ;
$ricevuta -> codice_cliente = $controparte [ 'codice' ];
2023-08-04 14:54:28 +02:00
2024-01-15 15:30:45 +01:00
// controlli sulla ragione sociale
2021-12-01 12:27:56 +01:00
$ragione_sociale = utf8_decode ( $controparte [ 'ragione_sociale' ]);
// Sostituzione di alcuni simboli noti
$replaces = [
''' => " ' " ,
'"' => " ' " ,
2023-03-28 16:54:37 +02:00
'&' => '' ,
2021-12-01 12:27:56 +01:00
];
$ragione_sociale = str_replace ( array_keys ( $replaces ), array_values ( $replaces ), $ragione_sociale );
$ricevuta -> nome_debitore = strtoupper ( $ragione_sociale );
$ricevuta -> identificativo_debitore = ! empty ( $controparte -> partita_iva ) ? $controparte -> partita_iva : $controparte -> codice_fiscale ;
$ricevuta -> indirizzo_debitore = strtoupper ( $controparte [ 'indirizzo' ]);
$ricevuta -> cap_debitore = $controparte [ 'cap' ];
$ricevuta -> comune_debitore = strtoupper ( $controparte [ 'citta' ]);
$ricevuta -> provincia_debitore = $controparte [ 'provincia' ];
$ricevuta -> descrizione_banca = $descrizione_banca ;
$ricevuta -> descrizione = strtoupper ( $descrizione );
$this -> riba -> addRicevuta ( $ricevuta );
return true ;
}
2024-01-15 15:30:45 +01:00
public function aggiungiBonifico ( int $identifier , Anagrafica $controparte , Banca $banca_controparte , string $descrizione , float $totale , \DateTime $data_prevista , $ctgypurp )
2023-03-27 16:55:00 +02:00
{
$data_scadenza = $data_prevista -> format ( 'dmy' );
// Dati banca cliente
$abi_cliente = substr ( $banca_controparte [ 'iban' ], 5 , 5 );
$cab_cliente = substr ( $banca_controparte [ 'iban' ], 10 , 5 );
$descrizione_banca = $banca_controparte [ 'nome' ] . ' ' . $banca_controparte [ 'filiale' ];
// Aggiunta codice CIG CUP se presenti
if ( ! empty ( $controparte [ 'cig' ])) {
$descrizione .= ' CIG:' . $controparte [ 'cig' ];
}
if ( ! empty ( $controparte [ 'cup' ])) {
$descrizione .= ' CUP:' . $controparte [ 'cup' ];
}
2023-05-08 17:19:51 +02:00
// Unifico ricevute per anagrafica
2023-05-25 17:17:42 +02:00
$identificativo_debitore = ( ! empty ( $controparte -> partita_iva ) ? $controparte -> partita_iva : ( ! empty ( $controparte -> codice_fiscale ) ? $controparte -> codice_fiscale : $controparte -> codice ));
2023-05-08 17:19:51 +02:00
$ricevute = $this -> bonifico -> getRicevute ();
foreach ( $ricevute as $ric ) {
if ( $ric -> identificativo_debitore == $identificativo_debitore ) {
$ricevuta = $ric ;
}
2023-08-04 14:54:28 +02:00
}
2023-05-08 17:19:51 +02:00
if ( empty ( $ricevuta )) {
$ricevuta = new Ricevuta ();
$ricevuta -> numero_ricevuta = $identifier ;
$ricevuta -> scadenza = $data_scadenza ;
$ricevuta -> importo = $totale ;
$ricevuta -> abi_banca = $abi_cliente ;
$ricevuta -> cab_banca = $cab_cliente ;
$ricevuta -> iban = $banca_controparte [ 'iban' ];
$ricevuta -> codice_cliente = $controparte [ 'codice' ];
$ricevuta -> ctgypurp = $ctgypurp ;
2023-08-04 14:54:28 +02:00
2024-01-15 15:30:45 +01:00
// controlli sulla ragione sociale
2023-05-08 17:19:51 +02:00
$ragione_sociale = utf8_decode ( $controparte [ 'ragione_sociale' ]);
2023-08-04 14:54:28 +02:00
2023-05-08 17:19:51 +02:00
// Sostituzione di alcuni simboli noti
$replaces = [
''' => " ' " ,
'"' => " ' " ,
];
$ragione_sociale = str_replace ( array_keys ( $replaces ), array_values ( $replaces ), $ragione_sociale );
2023-08-04 14:54:28 +02:00
2023-05-08 17:19:51 +02:00
$ricevuta -> nome_debitore = strtoupper ( $ragione_sociale );
$ricevuta -> identificativo_debitore = $identificativo_debitore ;
$ricevuta -> indirizzo_debitore = strtoupper ( $controparte [ 'indirizzo' ]);
$ricevuta -> cap_debitore = $controparte [ 'cap' ];
$ricevuta -> comune_debitore = strtoupper ( $controparte [ 'citta' ]);
$ricevuta -> provincia_debitore = $controparte [ 'provincia' ];
$ricevuta -> descrizione_banca = $descrizione_banca ;
$ricevuta -> descrizione = strtoupper ( $descrizione );
2023-08-04 14:54:28 +02:00
2023-05-08 17:19:51 +02:00
$this -> bonifico -> addRicevuta ( $ricevuta );
} else {
$ricevuta -> importo += $totale ;
$ricevuta -> descrizione .= ' - ' . strtoupper ( $descrizione );
}
2023-03-27 16:55:00 +02:00
return true ;
}
2024-01-15 15:30:45 +01:00
public function aggiungiCreditoDiretto ( int $identifier , Anagrafica $controparte , Banca $banca_controparte , string $descrizione , $totale , \DateTime $data_prevista , $ctgypurp )
2021-12-01 12:27:56 +01:00
{
$id = 'pagamento_' . $identifier ;
// Esportazione del pagamento
2022-09-01 12:52:33 +02:00
$payment = $this -> credito_diretto -> addPaymentInfo ( $id , [
2021-12-01 12:27:56 +01:00
'id' => $identifier ,
2022-09-01 12:52:33 +02:00
'dueDate' => $data_prevista -> format ( 'Y-m-d' ),
2021-12-01 12:27:56 +01:00
'debtorName' => $this -> azienda -> ragione_sociale ,
'debtorAccountIBAN' => $this -> banca_azienda -> iban ,
'debtorAgentBIC' => $this -> banca_azienda -> bic ,
]);
$this -> credito_diretto -> addTransfer ( $id , [
2023-08-04 14:54:28 +02:00
'amount' => $totale * 100 ,
2021-12-01 12:27:56 +01:00
'creditorIban' => $banca_controparte -> iban ,
'creditorBic' => $banca_controparte -> bic ,
'creditorName' => $controparte -> ragione_sociale ,
'remittanceInformation' => $descrizione ,
]);
2022-09-01 12:52:33 +02:00
$payment -> setCategoryPurposeCode ( $ctgypurp );
2021-12-01 12:27:56 +01:00
return true ;
}
2024-01-15 15:30:45 +01:00
public function aggiungiDebitoDirettoSEPA ( int $identifier , Anagrafica $controparte , Banca $banca_controparte , string $descrizione , $totale , \DateTime $data_prevista )
2021-12-01 12:27:56 +01:00
{
$id = 'pagamento_' . $identifier ;
$this -> debito_diretto -> addPaymentInfo ( $id , [
'id' => $identifier ,
'dueDate' => $data_prevista -> format ( 'Y-m-d' ),
'creditorName' => $this -> azienda -> ragione_sociale ,
'creditorAccountIBAN' => $this -> banca_azienda -> iban ,
'creditorAgentBIC' => $this -> banca_azienda -> bic ,
'seqType' => PaymentInformation :: S_ONEOFF ,
'creditorId' => $this -> banca_azienda -> creditor_id ,
'localInstrumentCode' => 'CORE' , // default. optional.
]);
// Add a Single Transaction to the named payment
$mandato = $this -> getMandato ( $banca_controparte );
$this -> debito_diretto -> addTransfer ( $id , [
2023-08-04 14:54:28 +02:00
'amount' => $totale * 100 ,
2021-12-01 12:27:56 +01:00
'debtorName' => $controparte -> ragione_sociale ,
'debtorIban' => $banca_controparte -> iban ,
'debtorBic' => $banca_controparte -> bic ,
'debtorMandate' => $mandato [ 'id_mandato' ],
'debtorMandateSignDate' => $mandato [ 'data_firma_mandato' ],
'remittanceInformation' => $descrizione ,
]);
return true ;
}
2024-01-15 15:30:45 +01:00
public function aggiungiDebitoDiretto ( int $identifier , Anagrafica $controparte , Banca $banca_controparte , string $descrizione , $totale , \DateTime $data_prevista , $method , $codice_sequenza )
2021-12-01 12:27:56 +01:00
{
$paymentInformation = new PaymentInformationCBI ();
$paymentInformation
-> setCreditorName ( $this -> azienda -> ragione_sociale )
-> setCreditorIBAN ( $this -> banca_azienda -> iban )
-> setCreditorId ( $this -> banca_azienda -> creditor_id )
-> setPaymentInformationIdentification ( $identifier )
-> setRequestedExecutionDate ( $data_prevista -> format ( 'Y-m-d' ))
-> setLocalMethod ( $method )
-> setServiceLevel ( 'SEPA' )
2024-01-15 15:30:45 +01:00
-> setSeqType ( $codice_sequenza != '' ? $codice_sequenza : 'RCUR' );
2021-12-01 12:27:56 +01:00
$mandato = $this -> getMandato ( $banca_controparte );
$payment = new PaymentCBI ();
$payment
-> setInstrId ( $identifier )
-> setAmount ( $totale )
-> setEndToEndId ( $identifier . $this -> numero_transazioni_debito_diretto )
-> setDebtorIBAN ( $banca_controparte -> iban )
-> setDebtorName ( htmlentities ( $controparte -> ragione_sociale ))
-> setMndt ( $mandato [ 'id_mandato' ])
-> setMndtDate ( $mandato [ 'data_firma_mandato' ])
-> setRemittanceInformation ( $descrizione );
$paymentInformation -> addPayments ([ $payment ]);
$this -> debito_diretto -> addPaymentInformation ( $paymentInformation );
++ $this -> numero_transazioni_debito_diretto ;
$this -> totale_debito_diretto += $totale ;
return true ;
}
public static function getBancaControparte ( Scadenza $scadenza ) : ? Banca
{
$documento = $scadenza -> documento ;
$banca_controparte = $documento -> id_banca_controparte ? Banca :: find ( $documento -> id_banca_controparte ) : null ;
if ( empty ( $banca_controparte )) {
2022-09-01 12:52:33 +02:00
$banca_controparte = Banca :: where ( 'id_anagrafica' , $scadenza -> idanagrafica )
2021-12-01 12:27:56 +01:00
-> where ( 'predefined' , 1 )
-> first ();
}
return $banca_controparte ;
}
public static function getBancaAzienda ( Scadenza $scadenza ) : Banca
{
$documento = $scadenza -> documento ;
2022-06-07 10:09:04 +02:00
$banca = $documento -> id_banca_azienda ? Banca :: find ( $documento -> id_banca_azienda ) : '' ;
if ( empty ( $banca )) {
$banca = self :: getBancaPredefinitaAzienda ();
}
return $banca ;
2021-12-01 12:27:56 +01:00
}
public static function getBancaPredefinitaAzienda () : Banca
{
if ( ! isset ( self :: $banca_predefinita_azienda )) {
self :: $banca_predefinita_azienda = Banca :: where ( 'id_anagrafica' , self :: getAzienda () -> id )
-> where ( 'predefined' , 1 )
-> first ();
}
return self :: $banca_predefinita_azienda ;
}
public static function getAzienda () : Anagrafica
{
if ( ! isset ( self :: $azienda_predefinita )) {
self :: $azienda_predefinita = Anagrafica :: find ( setting ( 'Azienda predefinita' ));
}
return self :: $azienda_predefinita ;
}
public function esporta ( string $path ) : array
{
/**
* Salvataggio dei file nei diversi formati .
*/
$files = [];
// File per il pagamento delle vendite RiBa
try {
$content = $this -> riba -> asCBI ();
// Generazione filename
$filename = $this -> id_riba . '.txt' ;
$file = $path . '/' . $filename ;
$files [] = base_url () . '/' . $file ;
2023-03-27 16:55:00 +02:00
// Salvataggio del file
file_put_contents ( base_dir () . '/' . $file , $content );
2024-01-15 15:30:45 +01:00
} catch ( \Exception $e ) {
2023-03-27 16:55:00 +02:00
}
// File per il pagamento delle vendite Bonifico
try {
$content = $this -> bonifico -> asXML ();
// Generazione filename
$filename = $this -> id_bonifico . '.xml' ;
$file = $path . '/' . $filename ;
$files [] = base_url () . '/' . $file ;
2021-12-01 12:27:56 +01:00
// Salvataggio del file
file_put_contents ( base_dir () . '/' . $file , $content );
2024-01-15 15:30:45 +01:00
} catch ( \Exception $e ) {
2021-12-01 12:27:56 +01:00
}
// File per il pagamento degli acquisti SEPA
try {
$xml = $this -> credito_diretto -> asXML ();
// Generazione filename
$filename = $this -> id_credito_diretto . '.xml' ;
$file = $path . '/' . $filename ;
$files [] = base_url () . '/' . $file ;
// Salvataggio del file
file_put_contents ( base_dir () . '/' . $file , $xml );
2024-01-15 15:30:45 +01:00
} catch ( \Exception $e ) {
2021-12-01 12:27:56 +01:00
}
// File per il pagamento delle vendite SEPA CBI
try {
$groupHeader = new HeaderCBI ();
$groupHeader -> setControlSum ( $this -> totale_debito_diretto )
-> setInitiatingPartyName ( $this -> azienda -> ragione_sociale )
-> setOrgHeaderId ( 'ABC' ) // Codice Unico CBI
-> setOrgHeaderIssr ( 'CBI' )
-> setMessageIdentification ( $this -> id_debito_diretto )
-> setNumberOfTransactions ( $this -> numero_transazioni_debito_diretto );
$this -> debito_diretto -> setGroupHeader ( $groupHeader );
$xml = $this -> debito_diretto -> xml ();
// Generazione filename
$filename = $this -> id_debito_diretto . '.xml' ;
$file = $path . '/' . $filename ;
$files [] = base_url () . '/' . $file ;
// Salvataggio del file
file_put_contents ( base_dir () . '/' . $file , $xml );
2024-01-15 15:30:45 +01:00
} catch ( \Exception $e ) {
2021-12-01 12:27:56 +01:00
}
return $files ;
}
protected function getMandato ( Banca $banca )
{
if ( database () -> tableExists ( 'co_mandati_sepa' )) {
return database () -> fetchOne ( 'SELECT * FROM co_mandati_sepa WHERE id_banca = ' . prepare ( $banca -> id ));
2023-08-04 14:54:28 +02:00
} else {
2021-12-01 12:27:56 +01:00
return [];
}
}
2022-09-01 12:52:33 +02:00
protected function getTipo ( Scadenza $scadenza )
{
2024-03-07 17:51:41 +01:00
return database () -> fetchOne ( 'SELECT * FROM `co_tipi_scadenze` LEFT JOIN `co_tipi_scadenze_lang` ON (`co_tipi_scadenze_lang`.`id_record` = `co_tipi_scadenze`.`id` AND `co_tipi_scadenze_lang`.`id_lang` = "' . prepare ( setting ( 'Lingua' )) . '") WHERE `name` = ' . prepare ( $scadenza -> tipo ));
2022-09-01 12:52:33 +02:00
}
2021-12-01 12:27:56 +01:00
}