Correzioni Fattura elettronica
Fix importazione righe in Fattura da altri documenti.
This commit is contained in:
parent
e4c1f0d5da
commit
9df7ed0ae4
|
@ -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);
|
||||||
|
|
||||||
|
|
|
@ -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':
|
||||||
|
@ -37,7 +37,7 @@ switch (post('op')) {
|
||||||
$articolo->prezzo_acquisto = $new_prezzo_acquisto;
|
$articolo->prezzo_acquisto = $new_prezzo_acquisto;
|
||||||
$articolo->save();
|
$articolo->save();
|
||||||
|
|
||||||
if(!empty($articolo->id_fornitore)){
|
if (!empty($articolo->id_fornitore)) {
|
||||||
$prezzo_predefinito = DettaglioPrezzo::dettaglioPredefinito($articolo->id, $articolo->id_fornitore, 'uscita')->first();
|
$prezzo_predefinito = DettaglioPrezzo::dettaglioPredefinito($articolo->id, $articolo->id_fornitore, 'uscita')->first();
|
||||||
$prezzo_predefinito->setPrezzoUnitario($new_prezzo_acquisto);
|
$prezzo_predefinito->setPrezzoUnitario($new_prezzo_acquisto);
|
||||||
$prezzo_predefinito->save();
|
$prezzo_predefinito->save();
|
||||||
|
@ -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).')
|
||||||
|
|
|
@ -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">
|
||||||
|
|
|
@ -718,7 +718,7 @@ switch (post('op')) {
|
||||||
|
|
||||||
$copia = $riga->copiaIn($fattura, $qta);
|
$copia = $riga->copiaIn($fattura, $qta);
|
||||||
|
|
||||||
$copia->id_conto = ($documento->direzione=='entrata' ? ($articolo->idconto_vendita ?: $id_conto) : ($articolo->idconto_acquisto ?: $id_conto));
|
$copia->id_conto = ($documento->direzione == 'entrata' ? ($articolo->idconto_vendita ?: $id_conto) : ($articolo->idconto_acquisto ?: $id_conto));
|
||||||
$copia->calcolo_ritenuta_acconto = $calcolo_ritenuta_acconto;
|
$copia->calcolo_ritenuta_acconto = $calcolo_ritenuta_acconto;
|
||||||
$copia->id_ritenuta_acconto = $id_ritenuta_acconto;
|
$copia->id_ritenuta_acconto = $id_ritenuta_acconto;
|
||||||
$copia->id_rivalsa_inps = $id_rivalsa_inps;
|
$copia->id_rivalsa_inps = $id_rivalsa_inps;
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -128,7 +128,7 @@ switch (post('op')) {
|
||||||
]));
|
]));
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!empty(array_diff($id_records, $interventi))){
|
if (!empty(array_diff($id_records, $interventi))) {
|
||||||
flash()->warning(tr('_NUM_ interventi non sono stati fatturati.', [
|
flash()->warning(tr('_NUM_ interventi non sono stati fatturati.', [
|
||||||
'_NUM_' => sizeof(array_diff($id_records, $interventi)),
|
'_NUM_' => sizeof(array_diff($id_records, $interventi)),
|
||||||
]));
|
]));
|
||||||
|
|
|
@ -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!'));
|
||||||
|
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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 '
|
||||||
|
|
||||||
|
|
|
@ -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();
|
|
||||||
|
|
|
@ -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,
|
||||||
]));
|
]));
|
||||||
|
|
|
@ -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,
|
||||||
|
|
Loading…
Reference in New Issue