Correzioni Fattura elettronica

Fix importazione righe in Fattura da altri documenti.
This commit is contained in:
Dasc3er 2021-03-31 22:03:55 +02:00
parent e4c1f0d5da
commit 9df7ed0ae4
13 changed files with 49 additions and 32 deletions

View File

@ -103,7 +103,7 @@ Input.prototype.init = function () {
} }
// Inizializzazione per textarea // Inizializzazione per textarea
else if (this.element.hasClass('autosize') || htmlElement.hasAttribute('maxlength')) { else if (this.element.hasClass('autosize') || this.element.attr('maxlength')) {
if (this.element.hasClass('autosize')) if (this.element.hasClass('autosize'))
initCompleted = initTextareaInput(htmlElement); initCompleted = initTextareaInput(htmlElement);

View File

@ -24,8 +24,8 @@ use Modules\Articoli\Articolo;
use Modules\Preventivi\Components\Articolo as ArticoloPreventivo; use Modules\Preventivi\Components\Articolo as ArticoloPreventivo;
use Modules\Preventivi\Preventivo; use Modules\Preventivi\Preventivo;
use Modules\TipiIntervento\Tipo as TipoSessione; use Modules\TipiIntervento\Tipo as TipoSessione;
use Prints;
use Plugins\DettagliArticolo\DettaglioPrezzo; use Plugins\DettagliArticolo\DettaglioPrezzo;
use Prints;
switch (post('op')) { switch (post('op')) {
case 'change-acquisto': case 'change-acquisto':
@ -62,7 +62,6 @@ switch (post('op')) {
break; break;
case 'delete-bulk': case 'delete-bulk':
foreach ($id_records as $id) { foreach ($id_records as $id) {
$elementi = $dbo->fetchArray('SELECT `co_documenti`.`id`, `co_documenti`.`data`, `co_documenti`.`numero`, `co_documenti`.`numero_esterno`, `co_tipidocumento`.`descrizione` AS tipo_documento, `co_tipidocumento`.`dir` FROM `co_documenti` JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento` WHERE `co_documenti`.`id` IN (SELECT `iddocumento` FROM `co_righe_documenti` WHERE `idarticolo` = '.prepare($id).') $elementi = $dbo->fetchArray('SELECT `co_documenti`.`id`, `co_documenti`.`data`, `co_documenti`.`numero`, `co_documenti`.`numero_esterno`, `co_tipidocumento`.`descrizione` AS tipo_documento, `co_tipidocumento`.`dir` FROM `co_documenti` JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento` WHERE `co_documenti`.`id` IN (SELECT `iddocumento` FROM `co_righe_documenti` WHERE `idarticolo` = '.prepare($id).')

View File

@ -192,7 +192,7 @@ if ($module['name'] == 'Ddt di vendita') {
'id' => $record['idspedizione'], 'id' => $record['idspedizione'],
])['esterno']; ])['esterno'];
?> ?>
{[ "type": "select", "label": "<?php echo tr('Vettore'); ?>", "name": "idvettore", "ajax-source": "vettori", "value": "$idvettore$", "disabled": <?php echo (empty($esterno) ? 1 : 0); ?>, "required": <?php echo !empty($esterno) ?: 0; ?>, "icon-after": "add|<?php echo Modules::get('Anagrafiche')['id']; ?>|tipoanagrafica=Vettore&readonly_tipo=1|btn_idvettore|<?php echo ((!empty($esterno) and intval(!$record['flag_completato']))) ? '' : 'disabled'; ?>" ]} {[ "type": "select", "label": "<?php echo tr('Vettore'); ?>", "name": "idvettore", "ajax-source": "vettori", "value": "$idvettore$", "disabled": <?php echo empty($esterno) ? 1 : 0; ?>, "required": <?php echo !empty($esterno) ?: 0; ?>, "icon-after": "add|<?php echo Modules::get('Anagrafiche')['id']; ?>|tipoanagrafica=Vettore&readonly_tipo=1|btn_idvettore|<?php echo ((!empty($esterno) and intval(!$record['flag_completato']))) ? '' : 'disabled'; ?>" ]}
</div> </div>
<div class="col-md-3"> <div class="col-md-3">

View File

@ -202,7 +202,9 @@ trait RelationTrait
list($qta, $diff) = $this->parseQta($value); list($qta, $diff) = $this->parseQta($value);
parent::setQtaAttribute($value); parent::setQtaAttribute($value);
if ($this->fattura->isNota() && $this->hasOriginalComponent()) { // Individuazione fattura corrente (fix in caso di creazione diretta)
$fattura = $this->fattura;
if (isset($fattura) && $fattura->isNota() && $this->hasOriginalComponent()) {
$source = $this->getOriginalComponent(); $source = $this->getOriginalComponent();
// Aggiornamento della quantità evasa di origine // Aggiornamento della quantità evasa di origine

View File

@ -499,7 +499,7 @@ class Fattura extends Document
return $fe->toXML(); return $fe->toXML();
} }
$file = $this->uploads()->where('name', 'Fattura Elettronica')->first(); $file = $this->uploads()->where('name', '=', 'Fattura Elettronica')->first();
return $file->getContent(); return $file->getContent();
} }
@ -535,6 +535,18 @@ class Fattura extends Document
->first(); ->first();
} }
/**
* Restituisce la fattura elettronica registrata come allegato.
*
* @return Upload|null
*/
public function getFatturaElettronica()
{
return $this->uploads()
->where('name', '=', 'Fattura Elettronica')
->first();
}
/** /**
* Controlla se la fattura di acquisto è elettronica. * Controlla se la fattura di acquisto è elettronica.
* *
@ -542,7 +554,7 @@ class Fattura extends Document
*/ */
public function isFE() public function isFE()
{ {
$file = $this->uploads()->where('name', 'Fattura Elettronica')->first(); $file = $this->getFatturaElettronica();
return !empty($this->progressivo_invio) and file_exists($file->filepath); return !empty($this->progressivo_invio) and file_exists($file->filepath);
} }

View File

@ -25,7 +25,7 @@ use Plugins\ReceiptFE\Ricevuta;
switch (filter('op')) { switch (filter('op')) {
case 'generate': case 'generate':
if (!empty($fattura_pa)) { if (!empty($fattura_pa)) {
$file = $fattura_pa->save($upload_dir); $file = $fattura_pa->save();
flash()->info(tr('Fattura elettronica generata correttamente!')); flash()->info(tr('Fattura elettronica generata correttamente!'));

View File

@ -19,4 +19,5 @@
include_once __DIR__.'/init.php'; include_once __DIR__.'/init.php';
download($upload_dir.'/'.$fattura_pa->getFilename()); $file = $fattura->getFatturaElettronica();
download(base_dir().'/'.$file->filepath, $file->original_name);

View File

@ -82,9 +82,7 @@ echo '
</button> </button>
</form>'; </form>';
$file = $generata ? Upload::where('original', $fattura_pa->getFilename()) $file = $generata ? $fattura->getFatturaElettronica() : null;
->where('id_record', $id_record)
->first() : null;
echo ' echo '

View File

@ -19,11 +19,11 @@
include_once __DIR__.'/../../core.php'; include_once __DIR__.'/../../core.php';
use Modules\Fatture\Fattura;
use Plugins\ExportFE\FatturaElettronica; use Plugins\ExportFE\FatturaElettronica;
try { try {
$fattura = Fattura::find($id_record);
$fattura_pa = new FatturaElettronica($id_record); $fattura_pa = new FatturaElettronica($id_record);
} catch (UnexpectedValueException $e) { } catch (UnexpectedValueException $e) {
} }
$upload_dir = base_dir().'/'.FatturaElettronica::getDirectory();

View File

@ -78,15 +78,14 @@ class FatturaElettronica
} }
/** /**
* Restituisce le informazioni sull'anagrafica azienda.
*
* @return bool * @return bool
*/ */
public function isGenerated() public function isGenerated()
{ {
$documento = $this->getDocumento(); $documento = $this->getDocumento();
$file = $documento->getFatturaElettronica();
return !empty($documento['progressivo_invio']) && file_exists(base_dir().'/'.static::getDirectory().'/'.$this->getFilename()); return !empty($documento['progressivo_invio']) && file_exists(base_dir().'/'.$file->filepath);
} }
/** /**
@ -293,22 +292,26 @@ class FatturaElettronica
/** /**
* Salva il file XML. * Salva il file XML.
* *
* @param string $directory
*
* @return string Nome del file * @return string Nome del file
*/ */
public function save($directory) public function save()
{ {
$this->delete(); $this->delete();
$name = 'Fattura Elettronica'; $name = 'Fattura Elettronica';
$info = $this->getUploadData(); $data = $this->getUploadData();
// Generazione nome XML // Generazione nome XML
$filename = $this->getFilename(true); $filename = $this->getFilename(true);
// Rimozione allegato precedente
$precedente = $this->getDocumento()->getFatturaElettronica();
if (!empty($precedente)){
$precedente->delete();
}
// Registrazione come allegato // Registrazione come allegato
Uploads::upload($this->toXML(), array_merge($info, [ Uploads::upload($this->toXML(), array_merge($data, [
'name' => $name, 'name' => $name,
'original_name' => $filename, 'original_name' => $filename,
])); ]));

View File

@ -20,6 +20,7 @@
namespace Plugins\ExportFE; namespace Plugins\ExportFE;
use API\Services; use API\Services;
use Modules\Fatture\Fattura;
use UnexpectedValueException; use UnexpectedValueException;
/** /**
@ -32,12 +33,13 @@ class Interaction extends Services
public static function sendInvoice($id_record) public static function sendInvoice($id_record)
{ {
try { try {
$fattura = new FatturaElettronica($id_record); $fattura_elettronica = new FatturaElettronica($id_record);
$file = base_dir().'/'.FatturaElettronica::getDirectory().'/'.$fattura->getFilename(); $fattura = Fattura::find($id_record);
$file = $fattura->getFatturaElettronica();
$response = static::request('POST', 'invio_fattura_xml', [ $response = static::request('POST', 'invio_fattura_xml', [
'xml' => file_get_contents($file), 'xml' => $file->getContent(),
'filename' => $fattura->getFilename(), 'filename' => $fattura_elettronica->getFilename(),
]); ]);
$body = static::responseBody($response); $body = static::responseBody($response);
@ -70,8 +72,8 @@ class Interaction extends Services
public static function getInvoiceRecepits($id_record) public static function getInvoiceRecepits($id_record)
{ {
try { try {
$fattura = new FatturaElettronica($id_record); $fattura_elettronica = new FatturaElettronica($id_record);
$filename = $fattura->getFilename(); $filename = $fattura_elettronica->getFilename();
$response = static::request('POST', 'notifiche_fattura', [ $response = static::request('POST', 'notifiche_fattura', [
'name' => $filename, 'name' => $filename,