From ae53d4d7a93c3dd9a21d3ccf1aa8252fc64479b6 Mon Sep 17 00:00:00 2001 From: Dasc3er Date: Wed, 26 Aug 2020 17:42:43 +0200 Subject: [PATCH] Completamento gestione grafica per prezzi articoli --- assets/src/css/style.css | 8 + plugins/dettagli_articolo/actions.php | 2 +- .../dettagli_articolo/dettaglio_prezzi.php | 4 +- plugins/dettagli_articolo/edit.php | 163 +++++++++++++----- 4 files changed, 134 insertions(+), 43 deletions(-) diff --git a/assets/src/css/style.css b/assets/src/css/style.css index a36856184..32d3c9d2c 100755 --- a/assets/src/css/style.css +++ b/assets/src/css/style.css @@ -982,3 +982,11 @@ div.tip { display: none !important; } } + + .btn-group-flex { + display: flex; + } + +.btn-group-flex .btn { + flex: 1 +} diff --git a/plugins/dettagli_articolo/actions.php b/plugins/dettagli_articolo/actions.php index 96db08efc..b55462006 100755 --- a/plugins/dettagli_articolo/actions.php +++ b/plugins/dettagli_articolo/actions.php @@ -41,7 +41,7 @@ switch (filter('op')) { // Informazioni di base $id_articolo = filter('id_articolo'); $id_anagrafica = filter('id_anagrafica'); - $direzione = filter('direzione') == 'uscita' ? 'uscita' : 'entrata'; + $direzione = filter('dir') == 'uscita' ? 'uscita' : 'entrata'; $articolo = Articolo::find($id_articolo); $anagrafica = Anagrafica::find($id_anagrafica); diff --git a/plugins/dettagli_articolo/dettaglio_prezzi.php b/plugins/dettagli_articolo/dettaglio_prezzi.php index 9a52091a6..ee987717b 100644 --- a/plugins/dettagli_articolo/dettaglio_prezzi.php +++ b/plugins/dettagli_articolo/dettaglio_prezzi.php @@ -209,11 +209,11 @@ function cambioImpostazioni() { } } -input("modifica_prezzi").change(function (){ +input("modifica_prezzi").change(function () { cambioImpostazioni(); }) -input("prezzo_fisso").change(function (){ +input("prezzo_fisso").change(function () { cambioImpostazioni(); }) diff --git a/plugins/dettagli_articolo/edit.php b/plugins/dettagli_articolo/edit.php index 3c2612c2b..65a1c1f2d 100755 --- a/plugins/dettagli_articolo/edit.php +++ b/plugins/dettagli_articolo/edit.php @@ -33,7 +33,7 @@ echo '
-
@@ -56,48 +56,48 @@ if (!$clienti->isEmpty()) { '.tr('Q.tà minima').' '.tr('Q.tà massima').' '.tr('Prezzo unitario').' - # + # '; - foreach ($clienti as $id_cliente => $dettagli) { - $anagrafica = $dettagli->first()->anagrafica; + foreach ($clienti as $id_cliente => $prezzi) { + $anagrafica = $prezzi->first()->anagrafica; echo ' - + '.Modules::link('Anagrafiche', $anagrafica->id, $anagrafica->ragione_sociale).' '; /* - $dettaglio_predefinito = $dettagli->whereStrict('minimo', null) + $dettaglio_predefinito = $prezzi->whereStrict('minimo', null) ->whereStrict('massimo', null) ->first(); - $dettagli = $dettagli->reject(function ($item, $key) use ($dettaglio_predefinito) { + $prezzi = $prezzi->reject(function ($item, $key) use ($dettaglio_predefinito) { return $item->id == $dettaglio_predefinito->id; }); */ - foreach ($dettagli as $key => $dettaglio) { + foreach ($prezzi as $key => $dettaglio) { echo ' - '.numberFormat($dettaglio->minimo).' + '.($dettaglio->minimo ? numberFormat($dettaglio->minimo) : '-').' - '.numberFormat($dettaglio->massimo).' + '.($dettaglio->massimo ? numberFormat($dettaglio->massimo) : '-').' @@ -132,7 +132,6 @@ echo '

'.tr("In questa sezione è possibile definire le caratteristiche di base dell'articolo in relazione fornitore di origine, come codice e prezzo di acquisto predefinito").'. '.tr("Queste informazioni saranno utilizzate in automatico per la compilazione dell'articolo al momento dell'inserimento in un documento di acquisto relativo al fornitore indicato, sovrascrivendo le impostazioni predefinite della sezione Acquisto per l'articolo").'.

-

'.tr("Ogni fornitore, tra cui si evidenzia quello predefinito per l'articolo, può essere descritto una sola volta con le informazioni aggiuntive").'.

@@ -146,22 +145,37 @@ echo '
- +
+ - + +
- '; + -$fornitori = DettaglioFornitore::where('id_articolo', $id_record)->get(); -if (!$fornitori->isEmpty()) { +

'.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 ' -

'.tr('Elenco fornitori').'

@@ -170,54 +184,123 @@ if (!$fornitori->isEmpty()) { - - + '; - foreach ($fornitori as $fornitore) { - $anagrafica = $fornitore->anagrafica; + 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"' : '').'> + 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 (!$prezzi->isEmpty()) { + echo ' + + + + + + + + '; + + foreach ($prezzi as $key => $dettaglio) { + echo ' + + + + + + + + + + + + '; + } + } } echo '
'.tr('Descrizione').' '.tr('Q.tà minima ordinabile').' '.tr('Tempi di consegna').''.tr('Prezzo acquisto').'#
'.Modules::link('Anagrafiche', $anagrafica->id, $anagrafica->ragione_sociale).' - - '.$fornitore['codice_fornitore'].' + '.$dettaglio['codice_fornitore'].' - '.$fornitore['descrizione'].' + '.$dettaglio['descrizione'].' - '.numberFormat($fornitore['qta_minima']).' '.$fornitore->articolo->um.' + '.numberFormat($dettaglio['qta_minima']).' '.$articolo->um.' '.tr('_NUM_ gg', [ - '_NUM_' => numberFormat($fornitore['giorni_consegna'], 0), + '_NUM_' => numberFormat($dettaglio['giorni_consegna'], 0), ]).' - - '.moneyFormat($fornitore['prezzo_acquisto']).' - ---- - + '; + + if (!empty($dettaglio)) { + echo ' + + - + - + '; + } + + echo '
'.tr('Q.tà minima').''.tr('Q.tà massima').''.tr('Prezzo unitario').'
+ '.($dettaglio->minimo ? numberFormat($dettaglio->minimo) : '-').' + + '.($dettaglio->massimo ? numberFormat($dettaglio->massimo) : '-').' + + '.moneyFormat($dettaglio->prezzo_unitario).' + '; + + if (!isset($dettaglio->minimo) && !isset($dettaglio->massimo)) { + echo ' + '.tr('Prezzo predefinito').''; + } + + echo ' +