Miglioramenti JS minori per inserimento articolo

This commit is contained in:
Dasc3er 2020-10-30 14:19:02 +01:00
parent 84afddb463
commit 21005e4e88
5 changed files with 50 additions and 71 deletions

View File

@ -49,11 +49,8 @@ if (empty($result['idarticolo'])) {
<script> <script>
$(document).ready(function (){ $(document).ready(function (){
ottieniPrezziArticolo("'.$articolo['id'].'").then(function (){ ottieniDettagliArticolo("'.$articolo['id'].'").then(function (){
verificaPrezzoArticolo(); verificaPrezzoArticolo();
});
ottieniScontiArticolo("'.$articolo['id'].'").then(function (){
verificaScontoArticolo(); verificaScontoArticolo();
}); });
}); });
@ -108,10 +105,13 @@ if ($module['name'] != 'Contratti' && $module['name'] != 'Preventivi') {
echo ' echo '
<script> <script>
var direzione = "'.$options['dir'].'"; var direzione = "'.$options['dir'].'";
globals.aggiunta_articolo = {
};
$(document).ready(function () { $(document).ready(function () {
if (direzione === "uscita") { if (direzione === "uscita") {
aggiorna_qta_minima(); aggiornaQtaMinima();
$("#qta").keyup(aggiorna_qta_minima); $("#qta").keyup(aggiornaQtaMinima);
} }
}); });
@ -149,15 +149,13 @@ $("#idarticolo").on("change", function() {
// Autoimpostazione dei campi relativi all\'articolo // Autoimpostazione dei campi relativi all\'articolo
let $data = $(this).selectData(); let $data = $(this).selectData();
ottieniPrezziArticolo($data.id).then(function() { ottieniDettagliArticolo($data.id).then(function() {
if ($("#prezzo_unitario").val().toEnglish() === 0){ if ($("#prezzo_unitario").val().toEnglish() === 0){
aggiornaPrezzoArticolo() aggiornaPrezzoArticolo();
} else { } else {
verificaPrezzoArticolo(); verificaPrezzoArticolo();
} }
});
ottieniScontiArticolo($data.id).then(function() {
if ($("#sconto").val().toEnglish() === 0){ if ($("#sconto").val().toEnglish() === 0){
aggiornaScontoArticolo(); aggiornaScontoArticolo();
} else { } else {
@ -177,7 +175,7 @@ $("#idarticolo").on("change", function() {
else { else {
$("#id_dettaglio_fornitore").val($data.id_dettaglio_fornitore); $("#id_dettaglio_fornitore").val($data.id_dettaglio_fornitore);
$("#qta_minima").val($data.qta_minima); $("#qta_minima").val($data.qta_minima);
aggiorna_qta_minima(); aggiornaQtaMinima();
} }
let id_conto = $data.idconto_'.($options['dir'] == 'entrata' ? 'vendita' : 'acquisto').'; let id_conto = $data.idconto_'.($options['dir'] == 'entrata' ? 'vendita' : 'acquisto').';
@ -199,80 +197,58 @@ $(document).on("change", "input[name^=qta], input[name^=prezzo_unitario], input[
}); });
/** /**
* Restituisce il prezzo registrato per una specifica quantità dell\'articolo. * Restituisce il dettaglio registrato per una specifica quantità dell\'articolo.
*/ */
function getPrezzoPerQuantita(qta) { function getDettaglioPerQuantita(qta) {
const data = $("#prezzo_unitario").data("prezzi"); const data = globals.aggiunta_articolo.dettagli;
if (!data) return 0; if (!data) return null;
let prezzo_predefinito = null; let dettaglio_predefinito = null;
let prezzo_selezionato = null; let dettaglio_selezionato = null;
for (const prezzo of data) { for (const dettaglio of data) {
if (prezzo.minimo == null && prezzo.massimo == null) { if (dettaglio.minimo == null && dettaglio.massimo == null) {
prezzo_predefinito = prezzo.prezzo_unitario; dettaglio_predefinito = dettaglio;
continue; continue;
} }
if (qta >= prezzo.minimo && qta <= prezzo.massimo) { if (qta >= dettaglio.minimo && qta <= dettaglio.massimo) {
prezzo_selezionato = prezzo.prezzo_unitario; dettaglio_selezionato = dettaglio;
} }
} }
if (prezzo_selezionato == null) { if (dettaglio_selezionato == null) {
prezzo_selezionato = prezzo_predefinito; dettaglio_selezionato = dettaglio_predefinito;
} }
return parseFloat(prezzo_selezionato); return dettaglio_selezionato;
}
/**
* Restituisce il prezzo registrato per una specifica quantità dell\'articolo.
*/
function getPrezzoPerQuantita(qta) {
const dettaglio = getDettaglioPerQuantita(qta);
return dettaglio ? parseFloat(dettaglio.prezzo_unitario) : 0;
} }
/** /**
* Restituisce lo sconto registrato per una specifica quantità dell\'articolo. * Restituisce lo sconto registrato per una specifica quantità dell\'articolo.
*/ */
function getScontoPerQuantita(qta) { function getScontoPerQuantita(qta) {
const data = $("#sconto").data("sconti"); const dettaglio = getDettaglioPerQuantita(qta);
if (!data) return 0;
let sconto_predefinito = null; return dettaglio ? parseFloat(dettaglio.sconto_percentuale) : 0;
let sconto_selezionato = null;
for (const prezzo of data) {
if (prezzo.minimo == null && prezzo.massimo == null) {
sconto_predefinito = prezzo.sconto;
continue;
}
if (qta >= prezzo.minimo && qta <= prezzo.massimo) {
sconto_selezionato = prezzo.sconto;
}
}
if (sconto_selezionato == null) {
sconto_selezionato = sconto_predefinito;
}
return parseFloat(sconto_selezionato);
}
/**
* Funzione per registrare localmente i prezzi definiti per l\'articolo in relazione ad una specifica anagrafica.
*/
function ottieniPrezziArticolo(id_articolo) {
return $.get(globals.rootdir + "/ajax_complete.php?module=Articoli&op=prezzi_articolo&id_anagrafica='.$options['idanagrafica'].'&id_articolo=" + id_articolo + "&dir=" + direzione, function(response) {
const data = JSON.parse(response);
$("#prezzo_unitario").data("prezzi", data);
});
} }
/** /**
* Funzione per registrare localmente gli sconti definiti per l\'articolo in relazione ad una specifica anagrafica. * Funzione per registrare localmente i dettagli definiti per l\'articolo in relazione ad una specifica anagrafica.
*/ */
function ottieniDettagliArticolo(id_articolo) {
function ottieniScontiArticolo(id_articolo) { return $.get(globals.rootdir + "/ajax_complete.php?module=Articoli&op=dettagli_articolo&id_anagrafica='.$options['idanagrafica'].'&id_articolo=" + id_articolo + "&dir=" + direzione, function(response) {
return $.get(globals.rootdir + "/ajax_complete.php?module=Articoli&op=prezzi_articolo&id_anagrafica='.$options['idanagrafica'].'&id_articolo=" + id_articolo + "&dir=" + direzione, function(response) {
const data = JSON.parse(response); const data = JSON.parse(response);
$("#sconto").data("sconti", data); globals.aggiunta_articolo.dettagli = data;
}); });
} }
@ -305,7 +281,7 @@ function verificaPrezzoArticolo() {
function verificaScontoArticolo() { function verificaScontoArticolo() {
let qta = $("#qta").val().toEnglish(); let qta = $("#qta").val().toEnglish();
let sconto_previsto = getScontoPerQuantita(qta); let sconto_previsto = getScontoPerQuantita(qta);
console.log(sconto_previsto);
let sconto_input = $("#sconto"); let sconto_input = $("#sconto");
let sconto = sconto_input.val().toEnglish(); let sconto = sconto_input.val().toEnglish();
@ -344,7 +320,7 @@ function aggiornaScontoArticolo() {
/** /**
* Funzione per l\'aggiornamento dinamico della quantità minima per l\'articolo. * Funzione per l\'aggiornamento dinamico della quantità minima per l\'articolo.
*/ */
function aggiorna_qta_minima() { function aggiornaQtaMinima() {
let qta_minima = parseFloat($("#qta_minima").val()); let qta_minima = parseFloat($("#qta_minima").val());
let qta = $("#qta").val().toEnglish(); let qta = $("#qta").val().toEnglish();

View File

@ -116,7 +116,7 @@ switch ($resource) {
* - id_articolo * - id_articolo
* - id_anagrafica * - id_anagrafica
*/ */
case 'prezzi_articolo': case 'dettagli_articolo':
$id_articolo = get('id_articolo'); $id_articolo = get('id_articolo');
$id_anagrafica = get('id_anagrafica'); $id_anagrafica = get('id_anagrafica');
$direzione = get('dir') == 'uscita' ? 'uscita' : 'entrata'; $direzione = get('dir') == 'uscita' ? 'uscita' : 'entrata';
@ -127,7 +127,8 @@ switch ($resource) {
$prezzi_ivati = setting('Utilizza prezzi di vendita comprensivi di IVA'); $prezzi_ivati = setting('Utilizza prezzi di vendita comprensivi di IVA');
$query = 'SELECT minimo, massimo, sconto, $query = 'SELECT minimo, massimo,
sconto_percentuale,
'.($prezzi_ivati ? 'prezzo_unitario_ivato' : 'prezzo_unitario').' AS prezzo_unitario '.($prezzi_ivati ? 'prezzo_unitario_ivato' : 'prezzo_unitario').' AS prezzo_unitario
FROM mg_prezzi_articoli FROM mg_prezzi_articoli
WHERE id_articolo = '.prepare($id_articolo).' AND dir = '.prepare($direzione).' |where| WHERE id_articolo = '.prepare($id_articolo).' AND dir = '.prepare($direzione).' |where|

View File

@ -75,7 +75,7 @@ switch (filter('op')) {
if (empty($dettaglio_predefinito)) { if (empty($dettaglio_predefinito)) {
$dettaglio_predefinito = DettaglioPrezzo::build($articolo, $anagrafica, $direzione); $dettaglio_predefinito = DettaglioPrezzo::build($articolo, $anagrafica, $direzione);
} }
$dettaglio_predefinito->sconto = $sconto; $dettaglio_predefinito->sconto_percentuale = $sconto;
$dettaglio_predefinito->setPrezzoUnitario($prezzo_unitario); $dettaglio_predefinito->setPrezzoUnitario($prezzo_unitario);
$dettaglio_predefinito->save(); $dettaglio_predefinito->save();
@ -102,7 +102,7 @@ switch (filter('op')) {
$dettaglio->minimo = $minimi[$key]; $dettaglio->minimo = $minimi[$key];
$dettaglio->massimo = $massimi[$key]; $dettaglio->massimo = $massimi[$key];
$dettaglio->sconto = $sconti[$key]; $dettaglio->sconto_percentuale = $sconti[$key];
$dettaglio->setPrezzoUnitario($prezzo_unitario); $dettaglio->setPrezzoUnitario($prezzo_unitario);
$dettaglio->save(); $dettaglio->save();
} }

View File

@ -123,7 +123,7 @@ if (!$clienti->isEmpty()) {
</td> </td>
<td class="text-right"> <td class="text-right">
'.numberFormat($dettaglio->sconto).'% '.numberFormat($dettaglio->sconto_percentuale).'%
</td> </td>
<td>'; <td>';
@ -309,9 +309,11 @@ if (!$fornitori_disponibili->isEmpty()) {
<td class="text-right"> <td class="text-right">
'.moneyFormat($dettaglio->prezzo_unitario).' '.moneyFormat($dettaglio->prezzo_unitario).'
</td> </td>
<td class="text-right"> <td class="text-right">
'.numberFormat($dettaglio->sconto).'% '.numberFormat($dettaglio->sconto_percentuale).'%
</td> </td>
<td>'; <td>';
if (!isset($dettaglio->minimo) && !isset($dettaglio->massimo)) { if (!isset($dettaglio->minimo) && !isset($dettaglio->massimo)) {

View File

@ -329,7 +329,7 @@ UPDATE `zz_modules` SET `options` = 'SELECT |select| FROM `co_scadenziario`\r\n
DELETE FROM `zz_tokens` WHERE `zz_tokens`.`enabled` = 0; DELETE FROM `zz_tokens` WHERE `zz_tokens`.`enabled` = 0;
-- Aggiunto colonna sconto per le coppie anagrafica articolo -- Aggiunto colonna sconto per le coppie anagrafica articolo
ALTER TABLE `mg_prezzi_articoli` ADD `sconto` DECIMAL(15,6) NOT NULL AFTER `massimo`; ALTER TABLE `mg_prezzi_articoli` ADD `sconto_percentuale` DECIMAL(15,6) NOT NULL AFTER `massimo`;
-- Aggiunta impostazione per mostrare o nascondere barra plugin -- 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); 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);