diff --git a/composer.json b/composer.json index d9989fe1c..e55c44494 100755 --- a/composer.json +++ b/composer.json @@ -107,7 +107,8 @@ "Plugins\\PianificazioneInterventi\\": ["plugins/pianificazione_interventi/custom/src/", "plugins/pianificazione_interventi/src/"], "Plugins\\PianificazioneFatturazione\\": ["plugins/pianificazione_fatturazione/custom/src/", "plugins/pianificazione_fatturazione/src/"], "Plugins\\StatisticheArticoli\\": ["plugins/statistiche_articoli/custom/src/", "plugins/statistiche_articoli/src/"], - "Plugins\\DettagliArticolo\\": ["plugins/dettagli_articolo/custom/src/", "plugins/dettagli_articolo/src/"] + "Plugins\\ListinoClienti\\": ["plugins/listino_clienti/custom/src/", "plugins/listino_clienti/src/"], + "Plugins\\ListinoFornitori\\": ["plugins/listino_fornitori/custom/src/", "plugins/listino_fornitori/src/"] }, "files": [ "lib/functions.php", diff --git a/include/bottom.php b/include/bottom.php index f47fa3f42..918715b39 100755 --- a/include/bottom.php +++ b/include/bottom.php @@ -59,7 +59,7 @@ if (Auth::check()) { '; } - $custom_css = html_entity_decode( setting('CSS Personalizzato') ); + $custom_css = html_entity_decode(setting('CSS Personalizzato')); if (!empty($custom_css)) { echo ' '; diff --git a/locale/catalog.pot b/locale/catalog.pot index 33559c28d..89f602a4b 100755 --- a/locale/catalog.pot +++ b/locale/catalog.pot @@ -2628,7 +2628,7 @@ msgid "Ritenuta d'acconto predefinita" msgstr "" #: modules/anagrafiche/edit.php:474 modules/anagrafiche/edit.php:536 -msgid "Piano di sconto/rincaro su articoli" +msgid "Piano di sconto/magg. su articoli" msgstr "" #: modules/anagrafiche/edit.php:478 @@ -2981,7 +2981,7 @@ msgid "Aggiornare il prezzo di acquisto per gli articoli selezionati?" msgstr "" #: modules/articoli/bulk.php:74 -msgid "Percentuale sconto/rincaro" +msgid "Percentuale sconto/magg." msgstr "" #: modules/articoli/buttons.php:24 modules/articoli/buttons.php:29 @@ -3107,11 +3107,11 @@ msgid "Seleziona un componente" msgstr "" #: modules/articoli/edit.php:283 -msgid "Prezzo articolo secondo i piani di sconto/rincaro" +msgid "Prezzo articolo secondo i piani di sconto/magg." msgstr "" #: modules/articoli/edit.php:294 -msgid "Piano di sconto/rincaro" +msgid "Piano di sconto/magg." msgstr "" #: modules/articoli/edit.php:295 @@ -3123,7 +3123,7 @@ msgid "Base" msgstr "" #: modules/articoli/edit.php:319 -msgid "Non ci sono piani di sconto/rincaro caricati" +msgid "Non ci sono piani di sconto/magg. caricati" msgstr "" #: modules/articoli/edit.php:387 modules/articoli/plugins/articoli.lotti.php:201 modules/contratti/edit.php:471 @@ -6067,7 +6067,7 @@ msgid "Listino eliminato!" msgstr "" #: modules/listini/add.php:32 modules/listini/edit.php:32 -msgid "Sconto/rincaro combinato" +msgid "Sconto/magg. combinato" msgstr "" #: modules/listini/add.php:32 modules/listini/edit.php:32 @@ -6081,7 +6081,7 @@ msgid "Sono ammessi i segni + e -" msgstr "" #: modules/listini/add.php:36 modules/listini/edit.php:36 -msgid "Sconto/rincaro" +msgid "Sconto/magg." msgstr "" #: modules/misure/actions.php:31 modules/misure/actions.php:58 diff --git a/locale/de_DE/de_DE.po b/locale/de_DE/de_DE.po index eef77deae..cedbaee03 100644 --- a/locale/de_DE/de_DE.po +++ b/locale/de_DE/de_DE.po @@ -2952,7 +2952,7 @@ msgid "Ritenuta d'acconto predefinita" msgstr "" #: modules/anagrafiche/edit.php:474 modules/anagrafiche/edit.php:536 -msgid "Piano di sconto/rincaro su articoli" +msgid "Piano di sconto/magg. su articoli" msgstr "" #: modules/anagrafiche/edit.php:478 @@ -3338,7 +3338,7 @@ msgid "Aggiornare il prezzo di acquisto per gli articoli selezionati?" msgstr "" #: modules/articoli/bulk.php:74 -msgid "Percentuale sconto/rincaro" +msgid "Percentuale sconto/magg." msgstr "" #: modules/articoli/buttons.php:24 modules/articoli/buttons.php:29 @@ -3474,11 +3474,11 @@ msgid "Seleziona un componente" msgstr "" #: modules/articoli/edit.php:283 -msgid "Prezzo articolo secondo i piani di sconto/rincaro" +msgid "Prezzo articolo secondo i piani di sconto/magg." msgstr "" #: modules/articoli/edit.php:294 -msgid "Piano di sconto/rincaro" +msgid "Piano di sconto/magg." msgstr "" #: modules/articoli/edit.php:295 @@ -3490,7 +3490,7 @@ msgid "Base" msgstr "" #: modules/articoli/edit.php:319 -msgid "Non ci sono piani di sconto/rincaro caricati" +msgid "Non ci sono piani di sconto/magg. caricati" msgstr "" #: modules/articoli/edit.php:387 @@ -6737,7 +6737,7 @@ msgid "Listino eliminato!" msgstr "" #: modules/listini/add.php:32 modules/listini/edit.php:32 -msgid "Sconto/rincaro combinato" +msgid "Sconto/magg. combinato" msgstr "" #: modules/listini/add.php:32 modules/listini/edit.php:32 @@ -6752,7 +6752,7 @@ msgid "Sono ammessi i segni + e -" msgstr "" #: modules/listini/add.php:36 modules/listini/edit.php:36 -msgid "Sconto/rincaro" +msgid "Sconto/magg." msgstr "" #: modules/misure/actions.php:31 modules/misure/actions.php:58 diff --git a/locale/en_GB/en_GB.po b/locale/en_GB/en_GB.po index 81501aa81..3535bc6c5 100755 --- a/locale/en_GB/en_GB.po +++ b/locale/en_GB/en_GB.po @@ -3184,7 +3184,7 @@ msgid "Ritenuta d'acconto predefinita" msgstr "Default withholding tax" #: modules/anagrafiche/edit.php:492 modules/anagrafiche/edit.php:554 -msgid "Piano di sconto/rincaro su articoli" +msgid "Piano di sconto/magg. su articoli" msgstr "Customer accounts plan" #: modules/anagrafiche/edit.php:496 @@ -3605,7 +3605,7 @@ msgid "Aggiornare il prezzo di acquisto per gli articoli selezionati?" msgstr "Update the purchase price for the selected items?" #: modules/articoli/bulk.php:83 -msgid "Percentuale sconto/rincaro" +msgid "Percentuale sconto/magg." msgstr "Taxable percentage " #: modules/articoli/bulk.php:91 @@ -3819,11 +3819,11 @@ msgid "Seleziona un componente" msgstr "Select a component" #: modules/articoli/edit.php:317 -msgid "Prezzo articolo secondo i piani di sconto/rincaro" +msgid "Prezzo articolo secondo i piani di sconto/magg." msgstr "Item price per list" #: modules/articoli/edit.php:328 -msgid "Piano di sconto/rincaro" +msgid "Piano di sconto/magg." msgstr "Supplier chart of accounts" #: modules/articoli/edit.php:329 @@ -3835,7 +3835,7 @@ msgid "Base" msgstr "Base" #: modules/articoli/edit.php:353 -msgid "Non ci sono piani di sconto/rincaro caricati" +msgid "Non ci sono piani di sconto/magg. caricati" msgstr "There are no price list loaded" #: modules/articoli/edit.php:421 modules/articoli/plugins/articoli.lotti.php:201 @@ -7912,7 +7912,7 @@ msgid "Listino eliminato!" msgstr "List eliminated!" #: modules/piano_sconto/add.php:32 modules/piano_sconto/edit.php:32 -msgid "Sconto/rincaro combinato" +msgid "Sconto/magg. combinato" msgstr "Inflation/discount" #: modules/piano_sconto/add.php:32 modules/piano_sconto/edit.php:32 @@ -7928,7 +7928,7 @@ msgid "Sono ammessi i segni + e -" msgstr "+ And - signs are allowed" #: modules/piano_sconto/add.php:36 modules/piano_sconto/edit.php:36 -msgid "Sconto/rincaro" +msgid "Sconto/magg." msgstr "Inflation/discount" #: modules/porti/actions.php:77 modules/spedizioni/actions.php:76 diff --git a/modules/anagrafiche/edit.php b/modules/anagrafiche/edit.php index d027bfd9d..6da06fea3 100755 --- a/modules/anagrafiche/edit.php +++ b/modules/anagrafiche/edit.php @@ -392,7 +392,7 @@ echo ' location.reload(); } }); - } + } '; @@ -512,7 +512,7 @@ if ($is_cliente or $is_fornitore or $is_tecnico) {
- {[ "type": "select", "label": "'.tr('Piano di sconto/rincaro su articoli').'", "name": "idlistino_vendite", "values": "query=SELECT id, nome AS descrizione FROM mg_listini ORDER BY nome ASC", "value": "$idlistino_vendite$" ]} + {[ "type": "select", "label": "'.tr('Piano di sconto/magg. su articoli').'", "name": "idlistino_vendite", "values": "query=SELECT id, nome AS descrizione FROM mg_listini ORDER BY nome ASC", "value": "$idlistino_vendite$" ]}
@@ -574,7 +574,7 @@ if ($is_cliente or $is_fornitore or $is_tecnico) {
- {[ "type": "select", "label": "'.tr('Piano di sconto/rincaro su articoli').'", "name": "idlistino_acquisti", "values": "query=SELECT id, nome AS descrizione FROM mg_listini ORDER BY nome ASC", "value": "$idlistino_acquisti$" ]} + {[ "type": "select", "label": "'.tr('Piano di sconto/magg. su articoli').'", "name": "idlistino_acquisti", "values": "query=SELECT id, nome AS descrizione FROM mg_listini ORDER BY nome ASC", "value": "$idlistino_acquisti$" ]}
'; // Collegamento con il conto diff --git a/modules/articoli/bulk.php b/modules/articoli/bulk.php index a39f620d2..0208f3a72 100644 --- a/modules/articoli/bulk.php +++ b/modules/articoli/bulk.php @@ -171,7 +171,7 @@ $operations['change-acquisto'] = [ 'text' => ' '.tr('Aggiorna prezzo di acquisto').'', 'data' => [ 'title' => tr('Aggiornare il prezzo di acquisto per gli articoli selezionati?'), - 'msg' => 'Per indicare uno sconto inserire la percentuale con il segno meno, al contrario per un rincaro inserire la percentuale senza segno.

{[ "type": "number", "label": "'.tr('Percentuale sconto/rincaro').'", "name": "percentuale", "required": 1, "icon-after": "%" ]}', + 'msg' => 'Per indicare uno sconto inserire la percentuale con il segno meno, al contrario per un rincaro inserire la percentuale senza segno.

{[ "type": "number", "label": "'.tr('Percentuale sconto/magg.').'", "name": "percentuale", "required": 1, "icon-after": "%" ]}', 'button' => tr('Procedi'), 'class' => 'btn btn-lg btn-warning', 'blank' => false, @@ -182,7 +182,7 @@ $operations['change-vendita'] = [ 'text' => ' '.tr('Aggiorna prezzo di vendita').'', 'data' => [ 'title' => tr('Aggiornare il prezzo di vendita per gli articoli selezionati?'), - 'msg' => 'Per indicare uno sconto inserire la percentuale con il segno meno, al contrario per un rincaro inserire la percentuale senza segno.

{[ "type": "number", "label": "'.tr('Percentuale sconto/rincaro').'", "name": "percentuale", "required": 1, "icon-after": "%" ]}', + 'msg' => 'Per indicare uno sconto inserire la percentuale con il segno meno, al contrario per un rincaro inserire la percentuale senza segno.

{[ "type": "number", "label": "'.tr('Percentuale sconto/magg.').'", "name": "percentuale", "required": 1, "icon-after": "%" ]}', 'button' => tr('Procedi'), 'class' => 'btn btn-lg btn-warning', 'blank' => false, diff --git a/modules/articoli/edit.php b/modules/articoli/edit.php index c34212090..c733754cb 100755 --- a/modules/articoli/edit.php +++ b/modules/articoli/edit.php @@ -311,53 +311,9 @@ echo ' echo '
+'; -
-
-

'.tr('Prezzo articolo secondo i piani di sconto/rincaro').'

-
- -
'; - - $listini = $dbo->fetchArray('SELECT * FROM mg_listini ORDER BY id ASC'); - - if (!empty($listini)) { - echo ' - - - - - '; - - // listino base - echo ' - - - - '; - - foreach ($listini as $listino) { - $prezzo_vendita = $articolo->prezzo_vendita - $articolo->prezzo_vendita * $listino['prc_guadagno'] / 100; - echo ' - - - - '; - } - - echo ' -
'.tr('Piano di sconto/rincaro').''.tr('Prezzo di vendita finale').'
'.tr('Base').''.moneyFormat($articolo->prezzo_vendita).'
'.$listino['nome'].''.moneyFormat($prezzo_vendita).'
'; - } else { - echo ' -
- '.tr('Non ci sono piani di sconto/rincaro caricati').'... '.Modules::link('Piani di sconto/rincaro', null, tr('Crea')).' -
'; - } -echo ' -
-
'; ?> - {( "name": "filelist_and_upload", "id_module": "$id_module$", "id_record": "$id_record$" )} diff --git a/modules/articoli/src/Articolo.php b/modules/articoli/src/Articolo.php index 91956dbe4..75b8c80d3 100755 --- a/modules/articoli/src/Articolo.php +++ b/modules/articoli/src/Articolo.php @@ -25,7 +25,7 @@ use Illuminate\Database\Eloquent\SoftDeletes; use Modules; use Modules\Interventi\Components\Articolo as ArticoloIntervento; use Modules\Iva\Aliquota; -use Plugins\DettagliArticolo\DettaglioFornitore; +use Plugins\ListinoFornitori\DettaglioFornitore; use Traits\RecordTrait; use Uploads; diff --git a/modules/piano_sconto/add.php b/modules/piano_sconto/add.php index 38958e3be..5a0179b9b 100755 --- a/modules/piano_sconto/add.php +++ b/modules/piano_sconto/add.php @@ -29,11 +29,11 @@ include_once __DIR__.'/../../core.php';
- {[ "type": "text", "label": "", "name": "prc_combinato", "value": "$prc_combinato$", "icon-after": "%", "class": "math-mask text-right", "help": "" ]} + {[ "type": "text", "label": "", "name": "prc_combinato", "value": "$prc_combinato$", "icon-after": "%", "class": "math-mask text-right", "help": "" ]}
- {[ "type": "number", "label": "", "name": "prc_guadagno", "required": 1, "value": "0", "icon-after": "%", "help": "" ]} + {[ "type": "number", "label": "", "name": "prc_guadagno", "required": 1, "value": "0", "icon-after": "%", "help": "" ]}
diff --git a/modules/piano_sconto/edit.php b/modules/piano_sconto/edit.php index 64514de74..1800d9300 100755 --- a/modules/piano_sconto/edit.php +++ b/modules/piano_sconto/edit.php @@ -29,11 +29,11 @@ include_once __DIR__.'/../../core.php';
- {[ "type": "text", "label": "", "name": "prc_combinato", "value": "$prc_combinato$", "icon-after": "%", "class": "math-mask text-right", "help": "", "disabled": "" ]} + {[ "type": "text", "label": "", "name": "prc_combinato", "value": "$prc_combinato$", "icon-after": "%", "class": "math-mask text-right", "help": "", "disabled": "" ]}
- {[ "type": "number", "label": "", "name": "prc_guadagno", "required": 1, "value": "$prc_guadagno$", "icon-after": "%", "help": "", "disabled": "" ]} + {[ "type": "number", "label": "", "name": "prc_guadagno", "required": 1, "value": "$prc_guadagno$", "icon-after": "%", "help": "", "disabled": "" ]}
diff --git a/plugins/dettagli_articolo/edit.php b/plugins/dettagli_articolo/edit.php deleted file mode 100755 index 16824a76e..000000000 --- a/plugins/dettagli_articolo/edit.php +++ /dev/null @@ -1,374 +0,0 @@ -. - */ - -use Carbon\Carbon; -use Plugins\DettagliArticolo\DettaglioFornitore; -use Plugins\DettagliArticolo\DettaglioPrezzo; - -include_once __DIR__.'/../../core.php'; - -$id_articolo = $id_record; -echo ' - - -'; diff --git a/plugins/dettagli_articolo/actions.php b/plugins/listino_clienti/actions.php old mode 100755 new mode 100644 similarity index 74% rename from plugins/dettagli_articolo/actions.php rename to plugins/listino_clienti/actions.php index d7651261c..f7564c73c --- a/plugins/dettagli_articolo/actions.php +++ b/plugins/listino_clienti/actions.php @@ -19,40 +19,11 @@ use Modules\Anagrafiche\Anagrafica; use Modules\Articoli\Articolo; -use Plugins\DettagliArticolo\DettaglioFornitore; -use Plugins\DettagliArticolo\DettaglioPrezzo; +use Plugins\ListinoClienti\DettaglioPrezzo; include_once __DIR__.'/../../core.php'; switch (filter('op')) { - case 'update_fornitore': - $id_articolo = filter('id_articolo'); - $articolo = Articolo::find($id_articolo); - - $id_anagrafica = filter('id_anagrafica'); - $precedente = DettaglioFornitore::where('id_articolo', $id_record) - ->where('id_fornitore', $id_anagrafica) - ->first(); - - if (empty($precedente)) { - $anagrafica = Anagrafica::find($id_anagrafica); - - $fornitore = DettaglioFornitore::build($anagrafica, $articolo); - } else { - $fornitore = $precedente->replicate(); - $precedente->delete(); - } - - $fornitore->codice_fornitore = post('codice_fornitore'); - $fornitore->descrizione = post('descrizione'); - $fornitore->qta_minima = post('qta_minima'); - $fornitore->giorni_consegna = post('giorni_consegna'); - - $fornitore->save(); - - flash()->info(tr('Informazioni salvate correttamente!')); - break; - case 'update_prezzi': // Informazioni di base $id_articolo = filter('id_articolo'); @@ -116,13 +87,4 @@ switch (filter('op')) { } break; - - case 'delete_fornitore': - $id_riga = post('id_riga'); - - $fornitore = DettaglioFornitore::find($id_riga); - $fornitore->delete(); - - flash()->info(tr('Relazione articolo-fornitore rimossa correttamente!')); - break; } diff --git a/plugins/dettagli_articolo/dettaglio_prezzi.php b/plugins/listino_clienti/dettaglio_prezzi.php similarity index 98% rename from plugins/dettagli_articolo/dettaglio_prezzi.php rename to plugins/listino_clienti/dettaglio_prezzi.php index 0c0939723..24e342888 100644 --- a/plugins/dettagli_articolo/dettaglio_prezzi.php +++ b/plugins/listino_clienti/dettaglio_prezzi.php @@ -19,7 +19,7 @@ use Modules\Anagrafiche\Anagrafica; use Modules\Articoli\Articolo; -use Plugins\DettagliArticolo\DettaglioPrezzo; +use Plugins\ListinoClienti\DettaglioPrezzo; include_once __DIR__.'/../../core.php'; @@ -64,7 +64,7 @@ echo ' } else { echo ''; } - echo ' + echo ' '.$anagrafica->ragione_sociale.' @@ -74,7 +74,7 @@ echo ' } else { echo ''; } - echo ' + echo ' @@ -244,7 +244,7 @@ function cambioImpostazioni() { let prezzi_variabili = $("#prezzi"); - if (!modifica_prezzi.get()){ + if (!modifica_prezzi.get()){ $(".info_prezzi").hide(); } else { $(".info_prezzi").show(); diff --git a/plugins/listino_clienti/edit.php b/plugins/listino_clienti/edit.php new file mode 100644 index 000000000..ee8186ab4 --- /dev/null +++ b/plugins/listino_clienti/edit.php @@ -0,0 +1,157 @@ +. + */ + +use Carbon\Carbon; +use Plugins\ListinoClienti\DettaglioPrezzo; + +include_once __DIR__.'/../../core.php'; + +$id_articolo = $id_record; +echo ' +
+
+

'.tr('Informazioni specifiche per cliente').'

+
+ +
+
+
+ {[ "type": "select", "label": "'.tr('Cliente').'", "name": "id_cliente_informazioni", "required":"1", "ajax-source": "clienti" ]} +
+ +
+ +
+
+
+
+ +

'.tr('Elenco clienti').'

'; + +$clienti = DettaglioPrezzo::where('id_articolo', $id_articolo) + ->where('dir', 'entrata') + ->get() + ->groupBy('id_anagrafica'); +if (!$clienti->isEmpty()) { + echo ' + + + + + + + + + + + + + '; + + foreach ($clienti as $id_cliente => $prezzi) { + $anagrafica = $prezzi->first()->anagrafica; + + echo ' + + + + + '; + + foreach ($prezzi as $key => $dettaglio) { + echo ' + + + + + + + + + + + + + '; + } + } + + echo ' + +
'.tr('Cliente').''.tr('Q.tà minima').''.tr('Q.tà massima').''.tr('Prezzo unitario').''.tr('Sconto').'#
+ '.Modules::link('Anagrafiche', $anagrafica->id, $anagrafica->ragione_sociale).' + + +
+ '.($dettaglio->minimo ? numberFormat($dettaglio->minimo) : '-').' + + '.($dettaglio->massimo ? numberFormat($dettaglio->massimo) : '-').' + + '.moneyFormat($dettaglio->prezzo_unitario).' +

'.Carbon::parse($dettaglio['updated_at'])->diffForHumans().'

+
+ '.numberFormat($dettaglio->sconto_percentuale).'% + '; + + if (!isset($dettaglio->minimo) && !isset($dettaglio->massimo)) { + echo ' + '.tr('Prezzo predefinito').''; + } + + echo ' +
'; +} else { + echo ' +
+ '.tr('Nessuna informazione disponibile').'... +
'; +} + +echo ' +'; diff --git a/plugins/dettagli_articolo/src/DettaglioPrezzo.php b/plugins/listino_clienti/src/DettaglioPrezzo.php similarity index 99% rename from plugins/dettagli_articolo/src/DettaglioPrezzo.php rename to plugins/listino_clienti/src/DettaglioPrezzo.php index 4b5a5ab5c..9822c40a2 100644 --- a/plugins/dettagli_articolo/src/DettaglioPrezzo.php +++ b/plugins/listino_clienti/src/DettaglioPrezzo.php @@ -17,7 +17,7 @@ * along with this program. If not, see . */ -namespace Plugins\DettagliArticolo; +namespace Plugins\ListinoClienti; use Common\SimpleModelTrait; use Illuminate\Database\Eloquent\Model; diff --git a/plugins/listino_fornitori/actions.php b/plugins/listino_fornitori/actions.php new file mode 100644 index 000000000..256974ca4 --- /dev/null +++ b/plugins/listino_fornitori/actions.php @@ -0,0 +1,67 @@ +. + */ + +use Modules\Anagrafiche\Anagrafica; +use Modules\Articoli\Articolo; +use Plugins\ListinoFornitori\DettaglioFornitore; + +include_once __DIR__.'/../../core.php'; + +switch (filter('op')) { + case 'update_fornitore': + $id_articolo = filter('id_articolo'); + $articolo = Articolo::find($id_articolo); + + $id_anagrafica = filter('id_anagrafica'); + $precedente = DettaglioFornitore::where('id_articolo', $id_record) + ->where('id_fornitore', $id_anagrafica) + ->first(); + + if (empty($precedente)) { + $anagrafica = Anagrafica::find($id_anagrafica); + + $fornitore = DettaglioFornitore::build($anagrafica, $articolo); + } else { + $fornitore = $precedente->replicate(); + $precedente->delete(); + } + + $fornitore->codice_fornitore = post('codice_fornitore'); + $fornitore->descrizione = post('descrizione'); + $fornitore->qta_minima = post('qta_minima'); + $fornitore->giorni_consegna = post('giorni_consegna'); + + $fornitore->save(); + + flash()->info(tr('Informazioni salvate correttamente!')); + break; + + case 'delete_fornitore': + $id_riga = post('id_riga'); + + $fornitore = DettaglioFornitore::find($id_riga); + $fornitore->delete(); + + flash()->info(tr('Relazione articolo-fornitore rimossa correttamente!')); + break; + + case 'update_prezzi': + require base_dir().'/plugins/listino_clienti/actions.php'; + break; +} diff --git a/plugins/dettagli_articolo/dettaglio_fornitore.php b/plugins/listino_fornitori/dettaglio_fornitore.php similarity index 98% rename from plugins/dettagli_articolo/dettaglio_fornitore.php rename to plugins/listino_fornitori/dettaglio_fornitore.php index 985909ac3..0df2dc98d 100644 --- a/plugins/dettagli_articolo/dettaglio_fornitore.php +++ b/plugins/listino_fornitori/dettaglio_fornitore.php @@ -19,7 +19,7 @@ use Modules\Anagrafiche\Anagrafica; use Modules\Articoli\Articolo; -use Plugins\DettagliArticolo\DettaglioFornitore; +use Plugins\ListinoFornitori\DettaglioFornitore; include_once __DIR__.'/../../core.php'; diff --git a/plugins/listino_fornitori/edit.php b/plugins/listino_fornitori/edit.php new file mode 100644 index 000000000..94543d740 --- /dev/null +++ b/plugins/listino_fornitori/edit.php @@ -0,0 +1,251 @@ +. + */ + +use Carbon\Carbon; +use Models\Plugin; +use Plugins\ListinoClienti\DettaglioPrezzo; +use Plugins\ListinoFornitori\DettaglioFornitore; + +include_once __DIR__.'/../../core.php'; + +$id_articolo = $id_record; +echo ' +
+
+

'.tr('Informazioni specifiche per fornitore').'

+
+ +
+
+
+ {[ "type": "select", "label": "'.tr('Fornitore').'", "name": "id_fornitore_informazioni", "required":"1", "ajax-source": "fornitori" ]} +
+ +
+
+ + + +
+
+
+
+
+ +

'.tr('Elenco fornitori').'

'; + +$dettagli_fornitori = DettaglioFornitore::where('id_articolo', $id_record)->get() + ->mapToGroups(function ($item, $key) { + return [$item->id_fornitore => $item]; + }); +$prezzi_fornitori = DettaglioPrezzo::where('id_articolo', $id_articolo) + ->where('dir', 'uscita') + ->get() + ->groupBy('id_anagrafica'); + +$fornitori_disponibili = $dettagli_fornitori->keys() + ->merge($prezzi_fornitori->keys()) + ->unique(); + +if (!$fornitori_disponibili->isEmpty()) { + echo ' + + '; + + foreach ($fornitori_disponibili as $id_fornitore) { + $dettaglio = $dettagli_fornitori[$id_fornitore] ? $dettagli_fornitori[$id_fornitore]->first() : null; + $prezzi = $prezzi_fornitori[$id_fornitore]; + + $anagrafica = $dettaglio ? $dettaglio->anagrafica : $prezzi->first()->anagrafica; + + echo ' + + + + + + + + + + id == $articolo->id_fornitore) ? 'class="success"' : '').'> + '; + + if (!empty($dettaglio)) { + echo ' + + + + + + + '; + } else { + echo ' + + + + '; + } + + echo ' + + '; + + /* + $dettaglio_predefinito = $prezzi->whereStrict('minimo', null) + ->whereStrict('massimo', null) + ->first(); + + $prezzi = $prezzi->reject(function ($item, $key) use ($dettaglio_predefinito) { + return $item->id == $dettaglio_predefinito->id; + }); + */ + if (!empty($prezzi) && !$prezzi->isEmpty()) { + echo ' + + + + + + + + '; + + foreach ($prezzi as $key => $dettaglio) { + echo ' + id == $articolo->id_fornitore) ? 'class="success"' : '').'> + + + + + + + + + + + + '; + } + } + } + + echo ' + +
'.tr('Fornitore').''.tr('Codice').''.tr('Descrizione').''.tr('Q.tà minima ordinabile').''.tr('Tempi di consegna').'#
+ '.Modules::link('Anagrafiche', $anagrafica->id, $anagrafica->ragione_sociale).' + + '.$dettaglio['codice_fornitore'].' + + '.$dettaglio['descrizione'].' + + '.numberFormat($dettaglio['qta_minima']).' '.$articolo->um.' + + '.tr('_NUM_ gg', [ + '_NUM_' => numberFormat($dettaglio['giorni_consegna'], 0), + ]).' + ---- + '; + + if (!empty($dettaglio)) { + echo ' + + + + + + + + '; + } + + echo ' +
'.tr('Q.tà minima').''.tr('Q.tà massima').''.tr('Prezzo unitario').''.tr('Sconto').'
+ '.($dettaglio->minimo ? numberFormat($dettaglio->minimo) : '-').' + + '.($dettaglio->massimo ? numberFormat($dettaglio->massimo) : '-').' + + '.moneyFormat($dettaglio->prezzo_unitario).' +

'.Carbon::parse($dettaglio['updated_at'])->diffForHumans().'

+
+ '.numberFormat($dettaglio->sconto_percentuale).'% + '; + + if (!isset($dettaglio->minimo) && !isset($dettaglio->massimo)) { + echo ' + '.tr('Prezzo predefinito').''; + } + + echo ' +
'; +} else { + echo ' +
+ '.tr('Nessuna informazione disponibile').'... +
'; +} + +echo ' +'; diff --git a/plugins/dettagli_articolo/src/DettaglioFornitore.php b/plugins/listino_fornitori/src/DettaglioFornitore.php similarity index 98% rename from plugins/dettagli_articolo/src/DettaglioFornitore.php rename to plugins/listino_fornitori/src/DettaglioFornitore.php index 3c4966a2f..b921cc10e 100644 --- a/plugins/dettagli_articolo/src/DettaglioFornitore.php +++ b/plugins/listino_fornitori/src/DettaglioFornitore.php @@ -17,7 +17,7 @@ * along with this program. If not, see . */ -namespace Plugins\DettagliArticolo; +namespace Plugins\ListinoFornitori; use Common\SimpleModelTrait; use Illuminate\Database\Eloquent\Model; diff --git a/plugins/dettagli_articolo/src/METEL.php b/plugins/listino_fornitori/src/METEL.php similarity index 97% rename from plugins/dettagli_articolo/src/METEL.php rename to plugins/listino_fornitori/src/METEL.php index 7ece571c8..605dde068 100644 --- a/plugins/dettagli_articolo/src/METEL.php +++ b/plugins/listino_fornitori/src/METEL.php @@ -17,7 +17,7 @@ * along with this program. If not, see . */ -namespace Plugins\DettagliArticolo; +namespace Plugins\ListinoFornitori; /** * Formato: https://www.metel.it/wp-content/uploads/2020/04/536_L001_1r18_listino_021.pdf. @@ -26,7 +26,7 @@ namespace Plugins\DettagliArticolo; */ class METEL { - public const HEADER = [ + const HEADER = [ 1 => 'Identificazione tracciato', 21 => 'Sigla Azienda', 24 => 'Partita IVA', diff --git a/plugins/piani_sconto_maggiorazione/edit.php b/plugins/piani_sconto_maggiorazione/edit.php new file mode 100644 index 000000000..231fcf8d5 --- /dev/null +++ b/plugins/piani_sconto_maggiorazione/edit.php @@ -0,0 +1,66 @@ +. + */ + +include_once __DIR__.'/../../core.php'; + +echo ' +
+
+

'.tr('Prezzo articolo secondo i piani di sconto/magg.').'

+
+ +
'; + + $listini = $dbo->fetchArray('SELECT * FROM mg_listini ORDER BY id ASC'); + + if (!empty($listini)) { + echo ' + + + + + '; + + // listino base + echo ' + + + + '; + + foreach ($listini as $listino) { + $prezzo_vendita = $articolo->prezzo_vendita - $articolo->prezzo_vendita * $listino['prc_guadagno'] / 100; + echo ' + + + + '; + } + + echo ' +
'.tr('Piano di sconto/magg.').''.tr('Prezzo di vendita finale').'
'.tr('Base').''.moneyFormat($articolo->prezzo_vendita).'
'.$listino['nome'].''.moneyFormat($prezzo_vendita).'
'; + } else { + echo ' +
+'.tr('Non ci sono piani di sconto/magg. caricati').'... '.Modules::link('Piani di sconto/maggiorazione', null, tr('Crea')).' +
'; + } +echo ' +
+
'; diff --git a/src/Notifications/EmailNotification.php b/src/Notifications/EmailNotification.php index 226215b64..6e2a08857 100755 --- a/src/Notifications/EmailNotification.php +++ b/src/Notifications/EmailNotification.php @@ -22,8 +22,8 @@ namespace Notifications; use Modules\Emails\Account; use Modules\Emails\Mail; use PHPMailer\PHPMailer\Exception; -use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\OAuth; +use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\SMTP; use Prints; use Uploads; diff --git a/update/2_3.sql b/update/2_3.sql index baeef95e3..74368819b 100755 --- a/update/2_3.sql +++ b/update/2_3.sql @@ -1009,7 +1009,7 @@ UPDATE `or_righe_ordini` SET `abilita_serial` = 1 WHERE `idarticolo` IN (SELECT -- Rimozione del campo descrizione_articolo (inutilizzato) da mg_movimenti ALTER TABLE `mg_movimenti` DROP `descrizione_articolo`; --- Rimozione sconto/rincaro per i preventivi +-- Rimozione sconto/magg. per i preventivi UPDATE `co_righe_preventivi` SET `sconto_unitario` = `prc_guadagno`, `tipo_sconto` = 'PRC', `sconto` = `prc_guadagno` * `qta` WHERE `prc_guadagno` != 0; ALTER TABLE `co_righe_preventivi` DROP `prc_guadagno`; diff --git a/update/2_4_18.sql b/update/2_4_18.sql index d493b6000..679f92c3c 100644 --- a/update/2_4_18.sql +++ b/update/2_4_18.sql @@ -31,8 +31,8 @@ INSERT INTO `zz_tasks` (`id`, `name`, `class`, `expression`, `last_executed_at`) DELETE FROM `zz_hooks` WHERE `class` = 'Modules\\Backups\\BackupHook'; --- Modifica dei Listini in Piani di sconto/rincaro -UPDATE `zz_modules` SET `title` = 'Piani di sconto/rincaro' WHERE `name` = 'Listini'; +-- Modifica dei Listini in Piani di sconto/magg. +UPDATE `zz_modules` SET `title` = 'Piani di sconto/magg.' WHERE `name` = 'Listini'; -- Aggiunto supporto ai prezzi per Articoli specifici per Anagrafica e range di quantità CREATE TABLE IF NOT EXISTS `mg_prezzi_articoli` ( @@ -327,4 +327,4 @@ DELETE FROM `zz_tokens` WHERE `zz_tokens`.`enabled` = 0; ALTER TABLE `mg_prezzi_articoli` ADD `sconto_percentuale` DECIMAL(15,6) NOT NULL AFTER `massimo`; -- Aggiunta impostazione per mostrare o nascondere barra plugin -INSERT INTO `zz_settings` (`id`, `nome`, `valore`, `tipo`, `editable`, `sezione`, `order`, `help`) VALUES (NULL, 'Nascondere la barra dei plugin di default', '0', 'boolean', '1', 'Generali', '2', NULL); \ No newline at end of file +INSERT INTO `zz_settings` (`id`, `nome`, `valore`, `tipo`, `editable`, `sezione`, `order`, `help`) VALUES (NULL, 'Nascondere la barra dei plugin di default', '0', 'boolean', '1', 'Generali', '2', NULL); diff --git a/update/2_4_20.sql b/update/2_4_20.sql index 7a994acbc..58c413e74 100644 --- a/update/2_4_20.sql +++ b/update/2_4_20.sql @@ -1,4 +1,4 @@ -UPDATE `zz_modules` SET `name` = 'Piani di sconto/rincaro' WHERE `name` = 'Listini'; +UPDATE `zz_modules` SET `name` = 'Piani di sconto/magg.' WHERE `name` = 'Listini'; -- Creazione modulo Listini INSERT INTO `zz_modules` (`id`, `name`, `title`, `directory`, `options`, `options2`, `icon`, `version`, `compatibility`, `order`, `parent`, `default`, `enabled`) VALUES (NULL, 'Listini', 'Listini', 'listini', 'SELECT |select| @@ -117,8 +117,8 @@ INSERT INTO `zz_views` (`id_module`, `name`, `query`, `order`, `search`, `format UPDATE `zz_views` SET `default` = 1 WHERE `zz_views`.`id_module` = (SELECT `zz_modules`.`id` FROM `zz_modules` WHERE `zz_modules`.`name` = 'Interventi') AND (`zz_views`.`name` = 'Tecnici' OR `zz_views`.`name` = 'Rif. fattura'); --- Modifica directory Piani di sconto/rincaro -UPDATE `zz_modules` SET `directory` = 'piano_sconto' WHERE `zz_modules`.`name` = 'Piani di sconto/rincaro'; +-- Modifica directory Piani di sconto/magg. +UPDATE `zz_modules` SET `directory` = 'piano_sconto' WHERE `zz_modules`.`name` = 'Piani di sconto/magg.'; -- Aggiunto flag rinnovo automatico in contratti ALTER TABLE `co_contratti` ADD `rinnovo_automatico` TINYINT(1) NOT NULL DEFAULT '0' AFTER `rinnovabile`; @@ -171,7 +171,7 @@ UPDATE `co_iva` SET `codice_natura_fe` = 'N6.9' WHERE `codice_natura_fe` = 'N6'; -- Aumento testo descrizione per righe attività (da 255 caratteri) ALTER TABLE `in_righe_interventi` CHANGE `descrizione` `descrizione` TEXT NULL; -ALTER TABLE `co_tipidocumento` CHANGE `descrizione` `descrizione` VARCHAR(125) NOT NULL; +ALTER TABLE `co_tipidocumento` CHANGE `descrizione` `descrizione` VARCHAR(125) NOT NULL; -- Aggiunta tipologia documento TD 25 INSERT INTO `co_tipidocumento` (`id`, `descrizione`, `dir`, `reversed`, `codice_tipo_documento_fe`) VALUES @@ -198,16 +198,16 @@ UPDATE `em_emails` SET `attempt` = '10', `em_emails`.`failed_at` = NOW() WHERE ` -- Aggiunto deleted_at per tipi di documento ALTER TABLE `co_tipidocumento` ADD `deleted_at` DATETIME NULL DEFAULT NULL AFTER `codice_tipo_documento_fe`; -- Aggiunti campi predefined, enabled, help per tipi di documento -ALTER TABLE `co_tipidocumento` ADD `predefined` TINYINT NOT NULL DEFAULT '0' AFTER `codice_tipo_documento_fe`; +ALTER TABLE `co_tipidocumento` ADD `predefined` TINYINT NOT NULL DEFAULT '0' AFTER `codice_tipo_documento_fe`; ALTER TABLE `co_tipidocumento` ADD `enabled` TINYINT NOT NULL DEFAULT '1' AFTER `predefined`; -ALTER TABLE `co_tipidocumento` ADD `help` VARCHAR(255) NULL AFTER `enabled`; -UPDATE `co_tipidocumento` SET `predefined` = '1' WHERE `co_tipidocumento`.`descrizione` = 'Fattura immediata di vendita'; -UPDATE `co_tipidocumento` SET `predefined` = '1' WHERE `co_tipidocumento`.`descrizione` = 'Fattura immediata di acquisto'; +ALTER TABLE `co_tipidocumento` ADD `help` VARCHAR(255) NULL AFTER `enabled`; +UPDATE `co_tipidocumento` SET `predefined` = '1' WHERE `co_tipidocumento`.`descrizione` = 'Fattura immediata di vendita'; +UPDATE `co_tipidocumento` SET `predefined` = '1' WHERE `co_tipidocumento`.`descrizione` = 'Fattura immediata di acquisto'; UPDATE `co_tipidocumento` SET `help` = 'Fattura emessa entro le ore 24 del giorno di effettuazione dell’operazione.' WHERE `co_tipidocumento`.`descrizione` = 'Fattura immediata di acquisto'; UPDATE `co_tipidocumento` SET `help` = 'Fattura emessa entro le ore 24 del giorno di effettuazione dell’operazione.' WHERE `co_tipidocumento`.`descrizione` = 'Fattura immediata di vendita'; -UPDATE `co_tipidocumento` SET `help` = "Fattura emessa entro il giorno 15 del mese successivo a quello di effettuazione dell'operazione (art. 21 comma 4 lett. a) del D.P.R. 633/1972)." WHERE `co_tipidocumento`.`descrizione` = 'Fattura differita di acquisto'; -UPDATE `co_tipidocumento` SET `help` = "Fattura emessa entro il giorno 15 del mese successivo a quello di effettuazione dell'operazione (art. 21 comma 4 lett. a) del D.P.R. 633/1972)." WHERE `co_tipidocumento`.`descrizione` = 'Fattura differita di vendita'; +UPDATE `co_tipidocumento` SET `help` = "Fattura emessa entro il giorno 15 del mese successivo a quello di effettuazione dell'operazione (art. 21 comma 4 lett. a) del D.P.R. 633/1972)." WHERE `co_tipidocumento`.`descrizione` = 'Fattura differita di acquisto'; +UPDATE `co_tipidocumento` SET `help` = "Fattura emessa entro il giorno 15 del mese successivo a quello di effettuazione dell'operazione (art. 21 comma 4 lett. a) del D.P.R. 633/1972)." WHERE `co_tipidocumento`.`descrizione` = 'Fattura differita di vendita'; -- Innesto nuovo modulo Tipi documento INSERT INTO `zz_modules` (`id`, `name`, `title`, `directory`, `options`, `options2`, `icon`, `version`, `compatibility`, `order`, `parent`, `default`, `enabled`, `use_notes`, `use_checklists`) VALUES (NULL, 'Tipi documento', 'Tipi documento', 'tipi_documento', 'SELECT |select| FROM `co_tipidocumento` WHERE 1=1 AND deleted_at IS NULL HAVING 2=2', '', 'fa fa-angle-right', '2.4.20', '2.4.20', '1', (SELECT `id` FROM `zz_modules` t WHERE t.`name` = 'Tabelle'), '1', '1', '0', '0'); diff --git a/update/2_4_24.sql b/update/2_4_24.sql index 57093ab8c..84b6f197b 100644 --- a/update/2_4_24.sql +++ b/update/2_4_24.sql @@ -140,7 +140,7 @@ INSERT INTO `zz_api_resources` (`id`, `version`, `type`, `resource`, `class`, `e ALTER TABLE `dt_ddt` ADD `id_ddt_trasporto_interno` INT(11) NULL, ADD FOREIGN KEY (`id_ddt_trasporto_interno`) REFERENCES `dt_ddt`(`id`) ON DELETE CASCADE; -- Aggiunto ragruppamento referenti per sede -UPDATE `zz_plugins` SET `options` = ' { \"main_query\": [ { \"type\": \"table\", \"fields\": \"Nome, Indirizzo, Città, CAP, Provincia, Referente\", \"query\": \"SELECT an_sedi.id, an_sedi.nomesede AS Nome, an_sedi.indirizzo AS Indirizzo, an_sedi.citta AS Città, an_sedi.cap AS CAP, an_sedi.provincia AS Provincia, GROUP_CONCAT(an_referenti.nome SEPARATOR \\\", \\\") AS Referente FROM an_sedi LEFT OUTER JOIN an_referenti ON idsede = an_sedi.id WHERE 1=1 AND an_sedi.idanagrafica=|id_parent| GROUP BY an_sedi.id HAVING 2=2 ORDER BY an_sedi.id DESC\"} ]}' WHERE `zz_plugins`.`name` = 'Sedi'; +UPDATE `zz_plugins` SET `options` = ' { \"main_query\": [ { \"type\": \"table\", \"fields\": \"Nome, Indirizzo, Città, CAP, Provincia, Referente\", \"query\": \"SELECT an_sedi.id, an_sedi.nomesede AS Nome, an_sedi.indirizzo AS Indirizzo, an_sedi.citta AS Città, an_sedi.cap AS CAP, an_sedi.provincia AS Provincia, GROUP_CONCAT(an_referenti.nome SEPARATOR \\\", \\\") AS Referente FROM an_sedi LEFT OUTER JOIN an_referenti ON idsede = an_sedi.id WHERE 1=1 AND an_sedi.idanagrafica=|id_parent| GROUP BY an_sedi.id HAVING 2=2 ORDER BY an_sedi.id DESC\"} ]}' WHERE `zz_plugins`.`name` = 'Sedi'; UPDATE `zz_group_module` SET `clause` = 'in_interventi.id IN (SELECT idintervento FROM in_interventi_tecnici WHERE idintervento=in_interventi.id AND idtecnico=|id_anagrafica| UNION SELECT id_intervento FROM in_interventi_tecnici_assegnati WHERE id_intervento=in_interventi.id AND id_tecnico=|id_anagrafica|)' WHERE `zz_group_module`.`name` = 'Mostra interventi ai tecnici coinvolti'; -- Aggiunto supporto autenticazione OAuth 2 @@ -150,3 +150,11 @@ ALTER TABLE `em_accounts` ADD `provider` varchar(255), ADD `oauth2_state` TEXT, ADD `access_token` TEXT, ADD `refresh_token` TEXT; + +-- Aggiornamento plugin Listini per Articoli +UPDATE `zz_plugins` SET `name` = 'Listino Clienti', `title` = 'Listino clienti', `directory` = 'listino_clienti' WHERE `zz_plugins`.`name` = 'Prezzi specifici articolo'; +INSERT INTO `zz_plugins` (`id`, `name`, `title`, `idmodule_from`, `idmodule_to`, `position`, `directory`, `options`) VALUES +(NULL, 'Listino Fornitori', 'Listino fornitori', (SELECT `id` FROM `zz_modules` WHERE `name`='Articoli'), (SELECT `id` FROM `zz_modules` WHERE `name`='Articoli'), 'tab', 'listino_fornitori', 'custom'), +(NULL, 'Piani di sconto/maggiorazione', 'Piani di sconto/magg.', (SELECT `id` FROM `zz_modules` WHERE `name`='Articoli'), (SELECT `id` FROM `zz_modules` WHERE `name`='Articoli'), 'tab', 'piani_sconto_maggiorazione', 'custom'); + +UPDATE `zz_modules` SET `name` = 'Piani di sconto/maggiorazione' WHERE `name` = 'Piani di sconto/magg.';