diff --git a/assets/src/js/functions/input.js b/assets/src/js/functions/input.js index 0a5af7b60..66940b5df 100644 --- a/assets/src/js/functions/input.js +++ b/assets/src/js/functions/input.js @@ -86,7 +86,15 @@ Input.prototype.getData = function () { } Input.prototype.get = function () { - return this.element.val(); + let value = this.element.val(); + + // Conversione del valore per le checkbox + let group = this.element.closest(".form-group"); + if (group.find("input[type=checkbox]").length){ + value = parseInt(value); + } + + return value; } Input.prototype.set = function (value) { diff --git a/plugins/dettagli_articolo/actions.php b/plugins/dettagli_articolo/actions.php index 08ed35071..96db08efc 100755 --- a/plugins/dettagli_articolo/actions.php +++ b/plugins/dettagli_articolo/actions.php @@ -3,6 +3,7 @@ use Modules\Anagrafiche\Anagrafica; use Modules\Articoli\Articolo; use Plugins\DettagliArticolo\DettaglioFornitore; +use Plugins\DettagliArticolo\DettaglioPrezzo; include_once __DIR__.'/../../core.php'; @@ -36,6 +37,61 @@ switch (filter('op')) { flash()->info(tr('Informazioni salvate correttamente!')); break; + case 'update_prezzi': + // Informazioni di base + $id_articolo = filter('id_articolo'); + $id_anagrafica = filter('id_anagrafica'); + $direzione = filter('direzione') == 'uscita' ? 'uscita' : 'entrata'; + + $articolo = Articolo::find($id_articolo); + $anagrafica = Anagrafica::find($id_anagrafica); + + $modifica_prezzi = filter('modifica_prezzi'); + if (empty($modifica_prezzi)) { + return; + } + + // Salvataggio del prezzo predefinito + $prezzo_unitario = filter('prezzo_unitario_fisso'); + $dettaglio_predefinito = DettaglioPrezzo::dettaglioPredefinito($id_articolo, $id_anagrafica, $direzione) + ->first(); + if (empty($dettaglio_predefinito)) { + $dettaglio_predefinito = DettaglioPrezzo::build($articolo, $anagrafica, $direzione); + } + $dettaglio_predefinito->setPrezzoUnitario($prezzo_unitario); + $dettaglio_predefinito->save(); + + // Salvataggio dei prezzi variabili + $prezzo_fisso = filter('prezzo_fisso'); + $dettagli = DettaglioPrezzo::dettagli($id_articolo, $id_anagrafica, $direzione); + if (empty($prezzo_fisso)) { + $prezzi_unitari = (array) filter('prezzo_unitario'); + $minimi = filter('minimo'); + $massimi = filter('massimo'); + + // Rimozione dei prezzi cancellati + $registrati = filter('dettaglio'); + $dettagli = $dettagli->whereNotIn('id', $registrati)->delete(); + + // Aggiornamento e creazione dei prezzi registrati + foreach ($prezzi_unitari as $key => $prezzo_unitario) { + if (isset($registrati[$key])) { + $dettaglio = DettaglioPrezzo::find($registrati[$key]); + } else { + $dettaglio = DettaglioPrezzo::build($articolo, $anagrafica, $direzione); + } + + $dettaglio->minimo = $minimi[$key]; + $dettaglio->massimo = $massimi[$key]; + $dettaglio->setPrezzoUnitario($prezzo_unitario); + $dettaglio->save(); + } + } else { + $dettagli->delete(); + } + + break; + case 'delete_fornitore': $id_riga = post('id_riga'); diff --git a/plugins/dettagli_articolo/edit_fornitore.php b/plugins/dettagli_articolo/dettaglio_fornitore.php old mode 100755 new mode 100644 similarity index 100% rename from plugins/dettagli_articolo/edit_fornitore.php rename to plugins/dettagli_articolo/dettaglio_fornitore.php diff --git a/plugins/dettagli_articolo/dettaglio_prezzi.php b/plugins/dettagli_articolo/dettaglio_prezzi.php new file mode 100644 index 000000000..9a52091a6 --- /dev/null +++ b/plugins/dettagli_articolo/dettaglio_prezzi.php @@ -0,0 +1,221 @@ +prezzo_vendita_ivato : $articolo->prezzo_vendita; + +// Individuazione dei prezzi registrati +$dettagli = DettaglioPrezzo::dettagli($id_articolo, $id_anagrafica, $direzione) + ->get(); + +$dettaglio_predefinito = DettaglioPrezzo::dettaglioPredefinito($id_articolo, $id_anagrafica, $direzione) + ->first(); +$prezzo_dettaglio_predefinito = $prezzo_predefinito; +if (!empty($dettaglio_predefinito)) { + $prezzo_dettaglio_predefinito = $prezzi_ivati ? $dettaglio_predefinito->prezzo_unitario_ivato : $dettaglio_predefinito->prezzo_unitario; +} + +echo ' +
'.tr('Informazioni relative al fornitore _NAME_', [ + '_NAME_' => $anagrafica->ragione_sociale, +]).'.
+ + + ++ {[ "type": "number", "name": "minimo[-id-]", "min-value": 0 ]} + | + ++ {[ "type": "number", "name": "massimo[-id-]", "min-value": 0 ]} + | + ++ {[ "type": "number", "name": "prezzo_unitario[-id-]", "icon-after": "'.currency().'" ]} + | + ++ + | +
'.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").'.
+'.tr("In questa sezione è possibile definire dei dettagli aggiuntivi per l'articolo in relazione ad una specifica anagrafica del gestionale").'.
+'.tr("Per i Clienti è possibile definire un prezzo personalizzato per la vendita dell'articolo, fisso oppure in relazione a una specifica quantità").'. '.tr("Per i Fornitori sono disponibili maggiori informazioni relative a codice, descrizione e quantità minime richieste per l'acquisto").'.
+'.tr("Queste informazioni sono integrate con il resto del gestionale per garantire una maggiore flessibilità all'utente finale").'
-