Skip to content

Commit

Permalink
feat: Aggiunta plugin Importazione FE ciclo attivo
Browse files Browse the repository at this point in the history
  • Loading branch information
Pek5892 committed Nov 13, 2024
1 parent b176c88 commit 3dedde4
Show file tree
Hide file tree
Showing 15 changed files with 2,687 additions and 37 deletions.
45 changes: 22 additions & 23 deletions plugins/importFE/src/FatturaElettronica.php
Original file line number Diff line number Diff line change
Expand Up @@ -47,9 +47,9 @@ class FatturaElettronica
/** @var Fattura Fattura collegata */
protected $fattura;

public function __construct($name)
public function __construct($name, $directory = null, $plugin = null)
{
$this->file = static::getImportDirectory().'/'.$name;
$this->file = static::getImportDirectory($directory ?: 'Fatture di acquisto', $plugin).'/'.$name;

if (string_ends_with($name, '.p7m')) {
$file = XML::decodeP7M($this->file);
Expand Down Expand Up @@ -80,18 +80,17 @@ public function __construct($name)
}
}

public static function getImportDirectory()
public static function getImportDirectory($name = null, $plugin = null)
{
$module = Module::where('name', 'Fatture di acquisto')->first();
$module = Module::where('name', $name ?: 'Fatture di acquisto')->first();

$plugins = $module->plugins;
if (!empty($plugins)) {
$plugin = $plugins->first(fn ($value, $key) => $value->getTranslation('title') == 'Fatturazione Elettronica');
$plugin = $plugins->first(fn ($value, $key) => $value->getTranslation('title') == ($plugin ?: 'Fatturazione Elettronica'));

self::$directory = base_dir().'/'.$plugin->upload_directory;
}


return self::$directory;
}

Expand All @@ -106,24 +105,24 @@ public static function store($filename, $content)
return $filename;
}

public static function isValid($name)
public static function isValid($name, $directory = null, $plugin = null)
{
try {
new static($name);
new static($name, $directory, $plugin);

return true;
} catch (\UnexpectedValueException) {
$file = static::getImportDirectory().'/'.$name;
$file = static::getImportDirectory($directory ?: 'Fatture di acquisto').'/'.$name;
delete($file);

return false;
}
}

public static function manage($name)
public static function manage($name, $directory = null, $plugin = null)
{
try {
$manager = new FatturaOrdinaria($name);
$manager = new FatturaOrdinaria($name, $directory, $plugin);

$tipo = $manager->getBody()['DatiGenerali']['DatiGeneraliDocumento']['TipoDocumento'];
if ($tipo == 'TD06') {
Expand Down Expand Up @@ -160,11 +159,11 @@ public function getAllegati()
return array_clean($result);
}

public function saveAllegati()
public function saveAllegati($name = null)
{
$allegati = $this->getAllegati();

$id_module = Module::where('name', 'Fatture di acquisto')->first()->id;
$id_module = Module::where('name', $name ?: 'Fatture di acquisto')->first()->id;

$info = [
'category' => tr('Fattura Elettronica'),
Expand Down Expand Up @@ -201,9 +200,9 @@ public function saveAllegati()
]));
}

public function findAnagrafica()
public function findAnagrafica($tipo = null)
{
$info = $this->getAnagrafe();
$info = $this->getAnagrafe($tipo);

if (!empty($info['partita_iva']) && !empty($info['codice_fiscale'])) {
$anagrafica = Anagrafica::where('piva', $info['partita_iva'])
Expand Down Expand Up @@ -233,9 +232,9 @@ public function findAnagrafica()
*
* @return Anagrafica
*/
public function saveAnagrafica($type = 'Fornitore')
public function saveAnagrafica($type = null)
{
$anagrafica = $this->findAnagrafica();
$anagrafica = $this->findAnagrafica($type);

if (!empty($anagrafica)) {
return $anagrafica;
Expand Down Expand Up @@ -310,12 +309,12 @@ public function saveAnagrafica($type = 'Fornitore')
*
* @return Fattura
*/
public function saveFattura($id_pagamento, $id_sezionale, $id_tipo, $data_registrazione, $ref_fattura, $is_ritenuta_pagata = false)
public function saveFattura($id_pagamento, $id_sezionale, $id_tipo, $data_registrazione, $ref_fattura, $is_ritenuta_pagata = false, $tipo = null)
{
$dati_generali = $this->getBody()['DatiGenerali']['DatiGeneraliDocumento'];
$data = self::parseDate($dati_generali['Data']);

$fattura = $this->prepareFattura($id_tipo, $data, $data_registrazione, $id_sezionale, $ref_fattura);
$fattura = $this->prepareFattura($id_tipo, $data, $data_registrazione, $id_sezionale, $ref_fattura, $tipo);
$this->fattura = $fattura;

$numero_esterno = $dati_generali['Numero'];
Expand Down Expand Up @@ -385,9 +384,9 @@ public function getFattura()
return $this->fattura;
}

public function save($info = [])
public function save($info = [], $tipo = null)
{
$this->saveFattura($info['id_pagamento'], $info['id_segment'], $info['id_tipo'], $info['data_registrazione'], $info['ref_fattura'], $info['is_ritenuta_pagata']);
$this->saveFattura($info['id_pagamento'], $info['id_segment'], $info['id_tipo'], $info['data_registrazione'], $info['ref_fattura'], $info['is_ritenuta_pagata'], $tipo);

$this->saveRighe($info['articoli'], $info['iva'], $info['conto'], $info['movimentazione'], $info['crea_articoli'], $info['tipo_riga_riferimento'], $info['id_riga_riferimento'], $info['tipo_riga_riferimento_vendita'], $info['id_riga_riferimento_vendita'], $info['update_info'], $info['serial']);

Expand All @@ -403,9 +402,9 @@ public static function parseDate($data)
return date('Y-m-d', strtotime((string) $data));
}

protected function prepareFattura($id_tipo, $data, $data_registrazione, $id_sezionale, $ref_fattura)
protected function prepareFattura($id_tipo, $data, $data_registrazione, $id_sezionale, $ref_fattura, $tipo = null)
{
$anagrafica = $this->saveAnagrafica();
$anagrafica = $this->saveAnagrafica($tipo);

$tipo = TipoFattura::where('id', $id_tipo)->first();

Expand Down
16 changes: 10 additions & 6 deletions plugins/importFE/src/FatturaOrdinaria.php
Original file line number Diff line number Diff line change
Expand Up @@ -37,18 +37,22 @@
*/
class FatturaOrdinaria extends FatturaElettronica
{
public function __construct($name)
public function __construct($name, $directory = null, $plugin = null)
{
parent::__construct($name);
parent::__construct($name, $directory, $plugin);

if ($this->getHeader()['DatiTrasmissione']['FormatoTrasmissione'] == 'FSM10') {
throw new \UnexpectedValueException();
}
}

public function getAnagrafe()
public function getAnagrafe($tipo = null)
{
$dati = $this->getHeader()['CedentePrestatore'];
if ($tipo == 'Cliente') {
$dati = $this->getHeader()['CessionarioCommittente'];
} else {
$dati = $this->getHeader()['CedentePrestatore'];
}

$anagrafe = $dati['DatiAnagrafici'];
$rea = $dati['IscrizioneREA'];
Expand Down Expand Up @@ -510,9 +514,9 @@ public function saveRighe($articoli, $iva, $conto, $movimentazione = true, $crea
}
}

protected function prepareFattura($id_tipo, $data, $data_registrazione, $id_sezionale, $ref_fattura)
protected function prepareFattura($id_tipo, $data, $data_registrazione, $id_sezionale, $ref_fattura, $tipo = null)
{
$fattura = parent::prepareFattura($id_tipo, $data, $data_registrazione, $id_sezionale, $ref_fattura);
$fattura = parent::prepareFattura($id_tipo, $data, $data_registrazione, $id_sezionale, $ref_fattura, $tipo);
$database = database();

$righe = $this->getRighe();
Expand Down
8 changes: 6 additions & 2 deletions plugins/importFE/src/FatturaSemplificata.php
Original file line number Diff line number Diff line change
Expand Up @@ -40,9 +40,13 @@ public function __construct($name)
}
}

public function getAnagrafe()
public function getAnagrafe($tipo = null)
{
$anagrafe = $this->getHeader()['CedentePrestatore'];
if ($tipo == 'Cliente') {
$anagrafe = $this->getHeader()['CessionarioCommittente'];
} else {
$anagrafe = $this->getHeader()['CedentePrestatore'];
}

$rea = $anagrafe['IscrizioneREA'];
$sede = $anagrafe['Sede'];
Expand Down
8 changes: 4 additions & 4 deletions plugins/importFE/src/Interaction.php
Original file line number Diff line number Diff line change
Expand Up @@ -34,12 +34,12 @@ public static function isEnabled()
return parent::isEnabled() && self::verificaRisorsaAttiva('Fatturazione Elettronica');
}

public static function getInvoiceList()
public static function getInvoiceList($directory = null, $plugin = null)
{
$list = self::getRemoteList();

// Ricerca fisica
$result = self::getFileList($list);
$result = self::getFileList($list, $directory, $plugin);

// Aggiornamento cache hook
Cache::where('name', 'Fatture Elettroniche')->first()->set($result);
Expand All @@ -64,12 +64,12 @@ public static function getRemoteList()
return $list;
}

public static function getFileList($list = [])
public static function getFileList($list = [], $directory = null, $plugin = null)
{
$names = array_column($list, 'name');

// Ricerca fisica
$directory = FatturaElettronica::getImportDirectory();
$directory = FatturaElettronica::getImportDirectory($directory, $plugin);

$files = glob($directory.'/*.xml*');
foreach ($files as $id => $file) {
Expand Down
2 changes: 1 addition & 1 deletion plugins/importFE/src/Parcella.php
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ class Parcella extends FatturaOrdinaria
*
* @return Fattura
*/
public function prepareFattura($id_tipo, $data, $data_registrazione, $id_sezionale, $ref_fattura)
public function prepareFattura($id_tipo, $data, $data_registrazione, $id_sezionale, $ref_fattura, $tipo = null)
{
if (empty($ref_fattura)) {
return parent::prepareFattura($id_tipo, $data, $data_registrazione, $id_sezionale, $ref_fattura);
Expand Down
Loading

0 comments on commit 3dedde4

Please sign in to comment.