From 9f1ece8f8b4735f2dc1044729286171f57717524 Mon Sep 17 00:00:00 2001 From: MatteoPistorello Date: Tue, 28 Sep 2021 15:51:11 +0200 Subject: [PATCH] Aggiunto select per aggiornare i prezzi di acquisto dell'articolo in fase di importFE --- plugins/importFE/actions.php | 1 + plugins/importFE/generate.php | 59 ++++++++++++++------- plugins/importFE/src/FatturaElettronica.php | 2 +- plugins/importFE/src/FatturaOrdinaria.php | 44 ++++++++++++--- update/2_4_26.sql | 2 + 5 files changed, 79 insertions(+), 29 deletions(-) diff --git a/plugins/importFE/actions.php b/plugins/importFE/actions.php index bcc75a4da..41bbe370c 100755 --- a/plugins/importFE/actions.php +++ b/plugins/importFE/actions.php @@ -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); diff --git a/plugins/importFE/generate.php b/plugins/importFE/generate.php index 7f35d0d89..3e1a8996a 100755 --- a/plugins/importFE/generate.php +++ b/plugins/importFE/generate.php @@ -294,6 +294,14 @@ echo ' '; // 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)) { -
+
+
+
+
+ {[ "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('\'', '‘', htmlentities($riga['Descrizione']))).'", "value": "'.$id_articolo.'", "label": "'.tr('Articolo').'", "extra": "data-id=\''.$key.'\'" ]} +
-
-
- {[ "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('\'', '‘', htmlentities($riga['Descrizione']))).'", "value": "'.$id_articolo.'", "label": "'.tr('Articolo').'", "extra": "data-id=\''.$key.'\'" ]} -
+
+ {[ "type": "select", "name": "conto['.$key.']", "id": "conto-'.$key.'", "ajax-source": "conti-acquisti", "required": 1, "label": "'.tr('Conto acquisti').'", "value": "'.$idconto_acquisto.'" ]} +
-
- {[ "type": "select", "name": "conto['.$key.']", "id": "conto-'.$key.'", "ajax-source": "conti-acquisti", "required": 1, "label": "'.tr('Conto acquisti').'", "value": "'.$idconto_acquisto.'" ]} -
+
+ {[ "type": "select", "name": "iva['.$key.']", "values": '.json_encode('query='.$query).', "required": 1, "label": "'.tr('Aliquota IVA').'" ]} +
-
- {[ "type": "select", "name": "iva['.$key.']", "values": '.json_encode('query='.$query).', "required": 1, "label": "'.tr('Aliquota IVA').'" ]} +
+
+ +
+
+
+
+ {[ "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('').', "help": "'.tr('Articoli contenuti in Ordini o DDT del Fornitore').'" ]} +
-
-
- {[ "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('').', "help": "'.tr('Articoli contenuti in Ordini o DDT del Fornitore').'" ]} +
+ {[ "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('').', "help": "'.tr('Articoli contenuti in Ordini Cliente').'" ]} +
+ +
+ {[ "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.'" ]} +
- -
- {[ "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('').', "help": "'.tr('Articoli contenuti in Ordini Cliente').'" ]} -
-
- +
- '; } diff --git a/plugins/importFE/src/FatturaElettronica.php b/plugins/importFE/src/FatturaElettronica.php index 7aef05f95..a52384ab7 100755 --- a/plugins/importFE/src/FatturaElettronica.php +++ b/plugins/importFE/src/FatturaElettronica.php @@ -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(); diff --git a/plugins/importFE/src/FatturaOrdinaria.php b/plugins/importFE/src/FatturaOrdinaria.php index 69fc51795..236a5a92f 100755 --- a/plugins/importFE/src/FatturaOrdinaria.php +++ b/plugins/importFE/src/FatturaOrdinaria.php @@ -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 diff --git a/update/2_4_26.sql b/update/2_4_26.sql index 4c1945ccf..6954c9c69 100644 --- a/update/2_4_26.sql +++ b/update/2_4_26.sql @@ -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); \ No newline at end of file