Aggiunto select per aggiornare i prezzi di acquisto dell'articolo in fase di importFE

This commit is contained in:
MatteoPistorello 2021-09-28 15:51:11 +02:00
parent f928223253
commit 9f1ece8f8b
5 changed files with 79 additions and 29 deletions

View File

@ -132,6 +132,7 @@ switch (filter('op')) {
'movimentazione' => post('movimentazione'),
'crea_articoli' => post('crea_articoli'),
'is_ritenuta_pagata' => post('is_ritenuta_pagata'),
'update_info' => post('update_info'),
];
$fattura_pa = FatturaElettronica::manage($filename);

View File

@ -294,6 +294,14 @@ echo '
</div>';
// Righe
if (setting('Aggiorna info di acquisto')=='Non aggiornare'){
$update_info = 'update_not';
} elseif (setting('Aggiorna info di acquisto')=='Aggiorna prezzo di listino'){
$update_info ='update_price';
} else{
$update_info = 'update_all';
}
$righe = $fattura_pa->getRighe();
if (!empty($righe)) {
echo '
@ -413,34 +421,45 @@ if (!empty($righe)) {
<input type="hidden" name="id_riga_riferimento_vendita['.$key.']" id="id_riga_riferimento_vendita_'.$key.'" value="">
<input type="hidden" name="tipo_riga_riferimento_vendita['.$key.']" id="tipo_riga_riferimento_vendita_'.$key.'" value="">
<div class="col-md-12">
<div class="box collapsed-box" style="background:#eeeeee;">
<div class="box-header">
<div class="row">
<div class="col-md-5">
{[ "type": "select", "name": "articoli['.$key.']", "ajax-source": "articoli", "select-options": '.json_encode(['permetti_movimento_a_zero' => 1, 'dir' => 'entrata', 'idanagrafica' => $anagrafica ? $anagrafica->id : '']).', "icon-after": "add|'.Modules::get('Articoli')['id'].'|codice='.str_replace('\\', '/', htmlentities($codice_principale)).'&descrizione='.str_replace('\\', '/', str_replace('\'', '&lsquo;', htmlentities($riga['Descrizione']))).'", "value": "'.$id_articolo.'", "label": "'.tr('Articolo').'", "extra": "data-id=\''.$key.'\'" ]}
</div>
<div class="row">
<div class="col-md-6">
{[ "type": "select", "name": "articoli['.$key.']", "ajax-source": "articoli", "select-options": '.json_encode(['permetti_movimento_a_zero' => 1, 'dir' => 'entrata', 'idanagrafica' => $anagrafica ? $anagrafica->id : '']).', "icon-after": "add|'.Modules::get('Articoli')['id'].'|codice='.str_replace('\\', '/', htmlentities($codice_principale)).'&descrizione='.str_replace('\\', '/', str_replace('\'', '&lsquo;', htmlentities($riga['Descrizione']))).'", "value": "'.$id_articolo.'", "label": "'.tr('Articolo').'", "extra": "data-id=\''.$key.'\'" ]}
</div>
<div class="col-md-3">
{[ "type": "select", "name": "conto['.$key.']", "id": "conto-'.$key.'", "ajax-source": "conti-acquisti", "required": 1, "label": "'.tr('Conto acquisti').'", "value": "'.$idconto_acquisto.'" ]}
</div>
<div class="col-md-3">
{[ "type": "select", "name": "conto['.$key.']", "id": "conto-'.$key.'", "ajax-source": "conti-acquisti", "required": 1, "label": "'.tr('Conto acquisti').'", "value": "'.$idconto_acquisto.'" ]}
</div>
<div class="col-md-3">
{[ "type": "select", "name": "iva['.$key.']", "values": '.json_encode('query='.$query).', "required": 1, "label": "'.tr('Aliquota IVA').'" ]}
</div>
<div class="col-md-3">
{[ "type": "select", "name": "iva['.$key.']", "values": '.json_encode('query='.$query).', "required": 1, "label": "'.tr('Aliquota IVA').'" ]}
<div class="col-md-1 box-tools">
<br>
<button type="button" class="btn btn-box-tool" data-widget="collapse" onclick="$(this).find(\'i\').toggleClass(\'fa-plus\').toggleClass(\'fa-minus\');">
<i class="fa fa-plus"></i> '.tr('Altro').'
</button>
</div>
</div>
</div>
<div class="box-body">
<div class="row">
<div class="col-md-3">
{[ "type": "select", "name": "selezione_riferimento['.$key.']", "ajax-source": "riferimenti-fe", "select-options": '.json_encode(['id_anagrafica' => $anagrafica ? $anagrafica->id : '']).', "label": "'.tr('Riferimento acquisto').'", "icon-after": '.json_encode('<button type="button" onclick="rimuoviRiferimento(this)" class="btn btn-primary disabled" id="rimuovi_riferimento_'.$key.'"><i class="fa fa-close"></i></button>').', "help": "'.tr('Articoli contenuti in Ordini o DDT del Fornitore').'" ]}
</div>
<div class="row">
<div class="col-md-3">
{[ "type": "select", "name": "selezione_riferimento['.$key.']", "ajax-source": "riferimenti-fe", "select-options": '.json_encode(['id_anagrafica' => $anagrafica ? $anagrafica->id : '']).', "label": "'.tr('Riferimento acquisto').'", "icon-after": '.json_encode('<button type="button" onclick="rimuoviRiferimento(this)" class="btn btn-primary disabled" id="rimuovi_riferimento_'.$key.'"><i class="fa fa-close"></i></button>').', "help": "'.tr('Articoli contenuti in Ordini o DDT del Fornitore').'" ]}
<div class="col-md-3">
{[ "type": "select", "name": "selezione_riferimento_vendita['.$key.']", "ajax-source": "riferimenti-vendita-fe", "select-options": '.json_encode(['id_articolo' => $id_articolo]).', "label": "'.tr('Riferimento vendita').'", "icon-after": '.json_encode('<button type="button" onclick="rimuoviRiferimentoVendita(this)" class="btn btn-primary disabled" id="rimuovi_riferimento_vendita_'.$key.'"><i class="fa fa-close"></i></button>').', "help": "'.tr('Articoli contenuti in Ordini Cliente').'" ]}
</div>
<div class="col-md-6">
{[ "type": "select", "name": "update_info['.$key.']", "values": "list=\"update_not\":\"Non aggiornare\", \"update_price\":\"Aggiorna prezzo di listino\", \"update_all\":\"Aggiorna prezzo di acquisto + imposta fornitore predefinito\"", "label": "'.tr('Aggiorna info di acquisto').'", "value": "'.$update_info.'" ]}
</div>
</div>
<div class="col-md-3">
{[ "type": "select", "name": "selezione_riferimento_vendita['.$key.']", "ajax-source": "riferimenti-vendita-fe", "select-options": '.json_encode(['id_articolo' => $id_articolo]).', "label": "'.tr('Riferimento vendita').'", "icon-after": '.json_encode('<button type="button" onclick="rimuoviRiferimentoVendita(this)" class="btn btn-primary disabled" id="rimuovi_riferimento_vendita_'.$key.'"><i class="fa fa-close"></i></button>').', "help": "'.tr('Articoli contenuti in Ordini Cliente').'" ]}
</div>
</div>
</div>
</div>
</td>
</tr>';
}

View File

@ -362,7 +362,7 @@ class FatturaElettronica
{
$this->saveFattura($info['id_pagamento'], $info['id_segment'], $info['id_tipo'], $info['data_registrazione'], $info['ref_fattura'], $info['is_ritenuta_pagata']);
$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']);
$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']);
$this->saveAllegati();

View File

@ -110,12 +110,14 @@ class FatturaOrdinaria extends FatturaElettronica
return $this->forceArray($result);
}
public function saveRighe($articoli, $iva, $conto, $movimentazione = true, $crea_articoli = false, $tipi_riferimenti = [], $id_riferimenti = [], $tipi_riferimenti_vendita = [], $id_riferimenti_vendita = [])
public function saveRighe($articoli, $iva, $conto, $movimentazione = true, $crea_articoli = false, $tipi_riferimenti = [], $id_riferimenti = [], $tipi_riferimenti_vendita = [], $id_riferimenti_vendita = [], $update_info = [])
{
$info = $this->getRitenutaRivalsa();
$righe = $this->getRighe();
$fattura = $this->getFattura();
$anagrafica = Anagrafica::find($fattura->idanagrafica);
$direzione = 'uscita';
$id_ritenuta_acconto = $info['id_ritenuta_acconto'];
$id_rivalsa = $info['id_rivalsa'];
@ -150,8 +152,6 @@ class FatturaOrdinaria extends FatturaElettronica
$articolo->idconto_acquisto = $conto[$key];
$articolo->save();
$direzione = 'uscita';
$anagrafica = Anagrafica::find($fattura->idanagrafica);
$dettaglio_prezzo = DettaglioPrezzo::build($articolo, $anagrafica, $direzione);
$dettaglio_prezzo->setPrezzoUnitario($riga['PrezzoUnitario']);
@ -162,7 +162,7 @@ class FatturaOrdinaria extends FatturaElettronica
if (!empty($articolo)) {
$articolo->idconto_acquisto = $conto[$key];
$articolo->save();
$obj = Articolo::build($fattura, $articolo);
$obj->movimentazione($movimentazione);
@ -254,7 +254,7 @@ class FatturaOrdinaria extends FatturaElettronica
'qta' => $obj->qta,
'cumulativo' => false,
]);
if ($tipo == 'PRC') {
$tot_sconto = $sconto_calcolato * 100 / $obj->imponibile;
} else {
@ -264,14 +264,42 @@ class FatturaOrdinaria extends FatturaElettronica
$tot_sconto = $sconto_riga;
}
$sconto_unitario += $tot_sconto;
$sconto_unitario += $tot_sconto;
}
$obj->setSconto($sconto_unitario, $tipo);
$tipo = null;
$obj->setSconto($sconto_unitario, $tipo);
}
// Aggiornamento prezzo di acquisto e fornitore predefinito in base alle impostazioni
if (!empty($articolo)) {
if ($update_info[$key]=='update_price' || $update_info[$key]=='update_all') {
$dettaglio_predefinito = DettaglioPrezzo::dettaglioPredefinito($articolo->id, $anagrafica->idanagrafica, $direzione)
->first();
// Aggiungo associazione fornitore-articolo se non presente
if (empty($dettaglio_predefinito)) {
$dettaglio_predefinito = DettaglioPrezzo::build($articolo, $anagrafica, $direzione);
}
// Aggiornamento listino
$dettaglio_predefinito->sconto_percentuale = 0;
$dettaglio_predefinito->setPrezzoUnitario($obj->prezzo_unitario);
$dettaglio_predefinito->save();
// Aggiornamento fornitore predefinito
if ($update_info[$key]=='update_all') {
// Aggiornamento prezzo di acquisto e fornitore predefinito
$articolo->prezzo_acquisto = $obj->prezzo_unitario;
$articolo->id_fornitore = $anagrafica->idanagrafica;
$articolo->save();
}
}
}
$tipo = null;
$sconto_unitario = null;
$obj->save();
}
// Ricaricamento della fattura

View File

@ -131,3 +131,5 @@ ALTER TABLE `em_accounts` ADD `id_oauth2` INT(11) DEFAULT NULL,
ALTER TABLE `an_referenti` ADD `enable_newsletter` BOOLEAN DEFAULT TRUE;
ALTER TABLE `an_sedi` ADD `enable_newsletter` BOOLEAN DEFAULT TRUE;
-- Aggiunta impostazione aggiornamento prezzi e fornitore in fase di import FE
INSERT INTO `zz_settings` (`id`, `nome`, `valore`, `tipo`, `editable`, `sezione`, `order`, `help`) VALUES (NULL, 'Aggiorna info di acquisto', 'Non aggiornare', 'list[Non aggiornare,Aggiorna prezzo di listino,Aggiorna prezzo di acquisto + imposta fornitore predefinito]', '1', 'Fatturazione', '16', NULL);