Merge branch 'master' of https://github.com/devcode-it/openstamanager
This commit is contained in:
commit
e91e09fda3
|
@ -22,39 +22,20 @@ $qta_minima = 0;
|
||||||
$id_listino = $dbo->selectOne('an_anagrafiche', 'id_listino', ['idanagrafica' => $options['idanagrafica']])['id_listino'];
|
$id_listino = $dbo->selectOne('an_anagrafiche', 'id_listino', ['idanagrafica' => $options['idanagrafica']])['id_listino'];
|
||||||
|
|
||||||
// Articolo
|
// Articolo
|
||||||
if (empty($result['idarticolo'])) {
|
$database = database();
|
||||||
// Sede partenza
|
$articolo = $database->fetchOne('SELECT mg_articoli.id,
|
||||||
if ($module['name'] == 'Interventi') {
|
mg_fornitore_articolo.id AS id_dettaglio_fornitore,
|
||||||
echo '
|
IFNULL(mg_fornitore_articolo.codice_fornitore, mg_articoli.codice) AS codice,
|
||||||
<div class="row">
|
IFNULL(mg_fornitore_articolo.descrizione, mg_articoli.descrizione) AS descrizione,
|
||||||
<div class="col-md-4">
|
IFNULL(mg_fornitore_articolo.qta_minima, 0) AS qta_minima
|
||||||
{[ "type": "select", "label": "'.tr('Partenza merce').'", "required": "1", "id":"idsede", "name": "idsede_partenza", "ajax-source": "sedi_azienda", "value": "'.($result['idsede_partenza'] ?: $options['idsede_partenza']).'" ]}
|
FROM mg_articoli
|
||||||
</div>
|
LEFT JOIN mg_fornitore_articolo ON mg_fornitore_articolo.id_articolo = mg_articoli.id AND mg_fornitore_articolo.id = '.prepare($result['id_dettaglio_fornitore']).'
|
||||||
</div>';
|
WHERE mg_articoli.id = '.prepare($result['idarticolo']));
|
||||||
}
|
|
||||||
echo '
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-md-12">
|
|
||||||
{[ "type": "select", "label": "'.tr('Articolo').'", "name": "idarticolo", "required": 1, "value": "'.$result['idarticolo'].'", "ajax-source": "articoli", "select-options": '.json_encode($options['select-options']['articoli']).', "icon-after": "add|'.Modules::get('Articoli')['id'].'" ]}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<input type="hidden" name="id_dettaglio_fornitore" id="id_dettaglio_fornitore" value="">';
|
$qta_minima = $articolo['qta_minima'];
|
||||||
} else {
|
|
||||||
$database = database();
|
|
||||||
$articolo = $database->fetchOne('SELECT mg_articoli.id,
|
|
||||||
mg_fornitore_articolo.id AS id_dettaglio_fornitore,
|
|
||||||
IFNULL(mg_fornitore_articolo.codice_fornitore, mg_articoli.codice) AS codice,
|
|
||||||
IFNULL(mg_fornitore_articolo.descrizione, mg_articoli.descrizione) AS descrizione,
|
|
||||||
IFNULL(mg_fornitore_articolo.qta_minima, 0) AS qta_minima
|
|
||||||
FROM mg_articoli
|
|
||||||
LEFT JOIN mg_fornitore_articolo ON mg_fornitore_articolo.id_articolo = mg_articoli.id AND mg_fornitore_articolo.id = '.prepare($result['id_dettaglio_fornitore']).'
|
|
||||||
WHERE mg_articoli.id = '.prepare($result['idarticolo']));
|
|
||||||
|
|
||||||
$qta_minima = $articolo['qta_minima'];
|
|
||||||
|
|
||||||
echo '
|
echo '
|
||||||
{[ "type": "select", "disabled":"1", "label": "'.tr('Articolo').'", "name": "idarticolo", "value": "'.$result['idarticolo'].'", "ajax-source": "articoli", "select-options": '.json_encode($options['select-options']['articoli']).', "icon-after": "add|'.Modules::get('Articoli')['id'].'" ]}
|
{[ "type": "select", "disabled":"1", "label": "'.tr('Articolo').'", "name": "idarticolo", "value": "'.$result['idarticolo'].'", "ajax-source": "articoli", "select-options": '.json_encode($options['select-options']['articoli']).' ]}
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
$(document).ready(function (){
|
$(document).ready(function (){
|
||||||
|
@ -64,10 +45,8 @@ if (empty($result['idarticolo'])) {
|
||||||
verificaMinimoVendita();
|
verificaMinimoVendita();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
</script>';
|
</script>
|
||||||
}
|
|
||||||
|
|
||||||
echo '
|
|
||||||
<input type="hidden" name="qta_minima" id="qta_minima" value="'.$qta_minima.'">
|
<input type="hidden" name="qta_minima" id="qta_minima" value="'.$qta_minima.'">
|
||||||
<input type="hidden" name="provvigione_default" id="provvigione_default" value="'.$result['provvigione_default'].'">
|
<input type="hidden" name="provvigione_default" id="provvigione_default" value="'.$result['provvigione_default'].'">
|
||||||
<input type="hidden" name="tipo_provvigione_default" id="provvigione_default" value="'.$result['tipo_provvigione_default'].'">
|
<input type="hidden" name="tipo_provvigione_default" id="provvigione_default" value="'.$result['tipo_provvigione_default'].'">
|
||||||
|
|
|
@ -1,367 +0,0 @@
|
||||||
<?php
|
|
||||||
/*
|
|
||||||
* OpenSTAManager: il software gestionale open source per l'assistenza tecnica e la fatturazione
|
|
||||||
* Copyright (C) DevCode s.r.l.
|
|
||||||
*
|
|
||||||
* This program is free software: you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation, either version 3 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
include_once __DIR__.'/../../core.php';
|
|
||||||
|
|
||||||
$incorpora_iva = setting('Utilizza prezzi di vendita comprensivi di IVA');
|
|
||||||
$intestazione_prezzo = ($options['dir'] == 'uscita' ? tr('Prezzo di acquisto') : ($incorpora_iva ? tr('Prezzo vendita ivato') : tr('Prezzo vendita imponibile')));
|
|
||||||
|
|
||||||
// Articolo
|
|
||||||
echo '
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-md-offset-4 col-md-4">
|
|
||||||
{[ "type": "text", "label": "", "name": "barcode", "value": "", "icon-before": "<i class=\"fa fa-barcode\"></i>" ]}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="alert alert-info hidden" id="articolo-missing">
|
|
||||||
<i class="fa fa-exclamation-circle"></i> '.tr('Nessuna corrispondenza trovata!').'
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="alert alert-warning hidden" id="articolo-qta">
|
|
||||||
<i class="fa fa-warning"></i> '.tr('Articolo con quantità non sufficiente!').'
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-md-12">
|
|
||||||
<table class="table table-stripped hide" id="articoli_barcode">
|
|
||||||
<tr>
|
|
||||||
<th>'.tr('Articolo').'</th>
|
|
||||||
<th width="25%" class="text-center">'.$intestazione_prezzo.'</th>
|
|
||||||
<th width="20%" class="text-center">'.tr('Sconto').'</th>
|
|
||||||
<th width="10%" class="text-center">'.tr('Q.tà').'</th>
|
|
||||||
<th width="5%" class="text-center">#</th>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<input type="hidden" name="permetti_movimenti_sotto_zero" id="permetti_movimenti_sotto_zero" value="'.setting('Permetti selezione articoli con quantità minore o uguale a zero in Documenti di Vendita').'">';
|
|
||||||
|
|
||||||
echo '
|
|
||||||
<script>
|
|
||||||
var direzione = "'.$options['dir'].'";
|
|
||||||
|
|
||||||
$(document).ready(function(){
|
|
||||||
init();
|
|
||||||
|
|
||||||
setTimeout(function(){
|
|
||||||
$("#barcode").focus();
|
|
||||||
}, 300);
|
|
||||||
|
|
||||||
$(".modal-body button").attr("disabled", true);
|
|
||||||
});
|
|
||||||
|
|
||||||
// Gestione dell\'invio da tastiera
|
|
||||||
$(document).keypress(function(event){
|
|
||||||
let key = window.event ? event.keyCode : event.which; // IE vs Netscape/Firefox/Opera
|
|
||||||
if (key == "13") {
|
|
||||||
event.preventDefault();
|
|
||||||
$("#barcode").blur()
|
|
||||||
.focus();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
$("#barcode").off("keyup").on("keyup", function (event) {
|
|
||||||
let key = window.event ? event.keyCode : event.which; // IE vs Netscape/Firefox/Opera
|
|
||||||
$("#articolo-missing").addClass("hidden");
|
|
||||||
$("#articolo-qta").addClass("hidden");
|
|
||||||
|
|
||||||
if (key !== 13) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
$("#barcode").attr("disabled", true);
|
|
||||||
var barcode = $("#barcode").val();
|
|
||||||
if (!barcode){
|
|
||||||
barcodeReset();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
$.getJSON(globals.rootdir + "/ajax_select.php?op=articoli_barcode&search=" + barcode + "&id_anagrafica='.$options['idanagrafica'].'", function(response) {
|
|
||||||
let result = response.results[0];
|
|
||||||
if(!result){
|
|
||||||
$("#articolo-missing").removeClass("hidden");
|
|
||||||
barcodeReset();
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
let qta_input = $("#riga_barcode_" + result.id).find("[name^=qta]");
|
|
||||||
let permetti_movimenti_sotto_zero = $("#permetti_movimenti_sotto_zero").val();
|
|
||||||
if (result.qta <= 0 && permetti_movimenti_sotto_zero == 0 && direzione === "entrata") {
|
|
||||||
$("#articolo-qta").removeClass("hidden");
|
|
||||||
barcodeReset();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Controllo se è già presente l\'articolo, in tal caso incremento la quantità, altrimenti inserisco la riga nuova
|
|
||||||
if (qta_input.length) {
|
|
||||||
let qta = qta_input.val().toEnglish();
|
|
||||||
let nuova_qta = qta + 1;
|
|
||||||
|
|
||||||
if (result.qta < nuova_qta) {
|
|
||||||
$("#articolo-qta").removeClass("hidden");
|
|
||||||
barcodeReset();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
qta_input.val(nuova_qta).trigger("change");
|
|
||||||
} else {
|
|
||||||
let prezzo_unitario = (direzione === "uscita") ? result.prezzo_acquisto : result.prezzo_vendita;
|
|
||||||
prezzo_acquisto = parseFloat(result.prezzo_acquisto, 10).toLocale();
|
|
||||||
prezzo_vendita = parseFloat(result.prezzo_vendita, 10).toLocale();
|
|
||||||
|
|
||||||
let info_prezzi;
|
|
||||||
if(direzione === "entrata") {
|
|
||||||
info_prezzi = "Acquisto: " + (prezzo_acquisto) + " €";
|
|
||||||
}else{
|
|
||||||
info_prezzi = "Vendita: " + (prezzo_vendita) + " €";
|
|
||||||
}
|
|
||||||
|
|
||||||
$("#articoli_barcode").removeClass("hide");
|
|
||||||
cleanup_inputs();
|
|
||||||
|
|
||||||
var text = replaceAll($("#barcode-template").html(), "-id-", result.id);
|
|
||||||
text = text.replace("|prezzo_unitario|", prezzo_unitario)
|
|
||||||
.replace("|info_prezzi|", info_prezzi)
|
|
||||||
.replace("|descrizione|", result.descrizione)
|
|
||||||
.replace("|codice|", result.codice)
|
|
||||||
.replace("|qta|", 1)
|
|
||||||
.replace("|sconto_unitario|", 0)
|
|
||||||
.replace("|tipo_sconto|", "")
|
|
||||||
.replace("|id_dettaglio_fornitore|", result.id_dettaglio_fornitore ? result.id_dettaglio_fornitore : "")
|
|
||||||
|
|
||||||
$("#articoli_barcode tr:last").after(text);
|
|
||||||
restart_inputs();
|
|
||||||
|
|
||||||
$(".modal-body button").attr("disabled", false);
|
|
||||||
|
|
||||||
// Gestione dinamica dei prezzi
|
|
||||||
let tr = $("#riga_barcode_" + result.id);
|
|
||||||
ottieniDettagliArticolo(result.id, tr).then(function() {
|
|
||||||
if ($(tr).find("input[name^=prezzo_unitario]").val().toEnglish() === 0){
|
|
||||||
aggiornaPrezzoArticolo(tr);
|
|
||||||
} else {
|
|
||||||
verificaPrezzoArticolo(tr);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($(tr).find("input[name^=sconto]").val().toEnglish() === 0){
|
|
||||||
aggiornaScontoArticolo();
|
|
||||||
} else {
|
|
||||||
verificaScontoArticolo();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
barcodeReset();
|
|
||||||
$("#barcode").val("");
|
|
||||||
}, function(){
|
|
||||||
$("#articolo-missing").removeClass("hidden");
|
|
||||||
barcodeReset();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
$(document).on("change", "input[name^=qta], input[name^=prezzo_unitario]", function() {
|
|
||||||
let tr = $(this).closest("tr");
|
|
||||||
verificaPrezzoArticolo(tr);
|
|
||||||
});
|
|
||||||
|
|
||||||
function barcodeReset() {
|
|
||||||
setTimeout(function(){
|
|
||||||
$("#barcode")
|
|
||||||
.attr("disabled",false)
|
|
||||||
.focus();
|
|
||||||
},200);
|
|
||||||
}
|
|
||||||
|
|
||||||
function rimuoviRigaBarcode(id) {
|
|
||||||
if (confirm("'.tr('Eliminare questo articolo?').'")) {
|
|
||||||
$("#riga_barcode_" + id).remove();
|
|
||||||
|
|
||||||
// Disabilito il pulsante di aggiunta se non ci sono articoli inseriti
|
|
||||||
if ($(".inputmask-decimal").length === 0) {
|
|
||||||
$(".modal-body button").attr("disabled", true);
|
|
||||||
$("#articoli_barcode").addClass("hide");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Restituisce il prezzo registrato per una specifica quantità dell\'articolo.
|
|
||||||
*/
|
|
||||||
function getDettaglioPerQuantita(qta, tr) {
|
|
||||||
const data = $(tr).data("dettagli");
|
|
||||||
if (!data) return null;
|
|
||||||
|
|
||||||
let dettaglio_predefinito = null;
|
|
||||||
let dettaglio_selezionato = null;
|
|
||||||
for (const dettaglio of data) {
|
|
||||||
if (dettaglio.minimo == null && dettaglio.massimo == null) {
|
|
||||||
dettaglio_predefinito = dettaglio;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (qta >= dettaglio.minimo && qta <= dettaglio.massimo) {
|
|
||||||
dettaglio_selezionato = dettaglio;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (dettaglio_selezionato == null) {
|
|
||||||
dettaglio_selezionato = dettaglio_predefinito;
|
|
||||||
}
|
|
||||||
|
|
||||||
return dettaglio_selezionato;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Restituisce il prezzo registrato per una specifica quantità dell\'articolo.
|
|
||||||
*/
|
|
||||||
function getPrezzoPerQuantita(qta, tr) {
|
|
||||||
const dettaglio = getDettaglioPerQuantita(qta, tr);
|
|
||||||
|
|
||||||
return dettaglio ? parseFloat(dettaglio.prezzo_unitario) : 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Restituisce lo sconto registrato per una specifica quantità dell\'articolo.
|
|
||||||
*/
|
|
||||||
function getScontoPerQuantita(qta, tr) {
|
|
||||||
const dettaglio = getDettaglioPerQuantita(qta, tr);
|
|
||||||
|
|
||||||
return dettaglio ? parseFloat(dettaglio.sconto_percentuale) : 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Funzione per registrare localmente i dettagli definiti per l\'articolo in relazione ad una specifica anagrafica.
|
|
||||||
*/
|
|
||||||
function ottieniDettagliArticolo(id_articolo, tr) {
|
|
||||||
return $.get(globals.rootdir + "/ajax_complete.php?module=Articoli&op=dettagli_articolo&id_anagrafica='.$options['idanagrafica'].'&id_articolo=" + id_articolo + "&dir=" + direzione, function(response) {
|
|
||||||
const data = JSON.parse(response);
|
|
||||||
|
|
||||||
$(tr).data("dettagli", data);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Funzione per verificare se il prezzo unitario corrisponde a quello registrato per l\'articolo, e proporre in automatico una correzione.
|
|
||||||
*/
|
|
||||||
function verificaPrezzoArticolo(tr) {
|
|
||||||
let qta = $(tr).find("input[name^=qta]").val().toEnglish();
|
|
||||||
let prezzo_previsto = getPrezzoPerQuantita(qta, tr);
|
|
||||||
|
|
||||||
let prezzo_unitario_input = $(tr).find("input[name^=prezzo_unitario]");
|
|
||||||
let prezzo_unitario = prezzo_unitario_input.val().toEnglish();
|
|
||||||
|
|
||||||
let div = prezzo_unitario_input.closest("div").parent().find("div[id*=errors]");
|
|
||||||
|
|
||||||
if (prezzo_previsto === prezzo_unitario || prezzo_previsto === 0) {
|
|
||||||
div.css("padding-top", "0");
|
|
||||||
div.html("");
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.css("padding-top", "5px");
|
|
||||||
div.html(`<small class="label label-info" >'.tr('Prezzo suggerito').': ` + prezzo_previsto.toLocale() + " " + globals.currency + `<button type="button" class="btn btn-xs btn-info pull-right" onclick="aggiornaPrezzoArticolo(this)"><i class="fa fa-refresh"></i> '.tr('Aggiorna').'</button></small>`);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Funzione per aggiornare il prezzo unitario sulla base dei valori automatici.
|
|
||||||
*/
|
|
||||||
function aggiornaPrezzoArticolo(button) {
|
|
||||||
let tr = $(button).closest("tr");
|
|
||||||
let qta = tr.find("input[name^=qta]").val().toEnglish();
|
|
||||||
let prezzo_previsto = getPrezzoPerQuantita(qta, tr);
|
|
||||||
|
|
||||||
tr.find("input[name^=prezzo_unitario]").val(prezzo_previsto).trigger("change");
|
|
||||||
|
|
||||||
// Aggiornamento automatico di guadagno e margine
|
|
||||||
if (direzione === "entrata") {
|
|
||||||
aggiorna_guadagno();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Funzione per verificare se lo sconto unitario corrisponde a quello registrato per l\'articolo, e proporre in automatico una correzione.
|
|
||||||
*/
|
|
||||||
function verificaScontoArticolo(tr) {
|
|
||||||
let qta = $(tr).find("input[name^=qta]").val().toEnglish();
|
|
||||||
let sconto_previsto = getScontoPerQuantita(qta, tr);
|
|
||||||
|
|
||||||
let sconto_input = $(tr).find("input[name^=sconto]");
|
|
||||||
let sconto = sconto_input.val().toEnglish();
|
|
||||||
|
|
||||||
let div = sconto_input.parent().next();
|
|
||||||
if (sconto_previsto === 0 || sconto_previsto === sconto || $(tr).find("input[name^=tipo_sconto]").val() === "UNT") {
|
|
||||||
div.css("padding-top", "0");
|
|
||||||
div.html("");
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.css("padding-top", "5px");
|
|
||||||
div.html(`<small class="label label-info" >'.tr('Sconto suggerito').': ` + sconto_previsto.toLocale() + `%<button type="button" class="btn btn-xs btn-info pull-right" onclick="aggiornaScontoArticolo(this)"><i class="fa fa-refresh"></i> '.tr('Aggiorna').'</button></small>`);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Funzione per aggiornare lo sconto unitario sulla base dei valori automatici.
|
|
||||||
*/
|
|
||||||
function aggiornaScontoArticolo(button) {
|
|
||||||
let tr = $(button).closest("tr");
|
|
||||||
let qta = tr.find("input[name^=qta]").val().toEnglish();
|
|
||||||
let sconto_previsto = getScontoPerQuantita(qta, tr);
|
|
||||||
|
|
||||||
$("#sconto").val(sconto_previsto).trigger("change");
|
|
||||||
|
|
||||||
// Aggiornamento automatico di guadagno e margine
|
|
||||||
if (direzione === "entrata") {
|
|
||||||
aggiorna_guadagno();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<table class="hidden">
|
|
||||||
<tbody id="barcode-template">
|
|
||||||
<tr id="riga_barcode_-id-">
|
|
||||||
<td>
|
|
||||||
|codice| - |descrizione|
|
|
||||||
<br><small>|info_prezzi|</small>
|
|
||||||
<input type="hidden" name="id_dettaglio_fornitore[-id-]" value="|id_dettaglio_fornitore|">
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
{[ "type": "number", "name": "prezzo_unitario[-id-]", "value": "|prezzo_unitario|", "required": 0, "icon-after": "'.currency().'" ]}
|
|
||||||
</td>
|
|
||||||
|
|
||||||
<td>
|
|
||||||
{[ "type": "number", "name": "sconto[-id-]", "value": "|sconto_unitario|", "icon-after": "choice|untprc||tipo_sconto|", "help": "'.tr('Il valore positivo indica uno sconto. Per applicare una maggiorazione inserire un valore negativo.').'" ]}
|
|
||||||
</td>
|
|
||||||
|
|
||||||
<td>
|
|
||||||
{[ "type": "number", "name": "qta[-id-]", "required": 0, "value": "|qta|", "decimals": "qta" ]}
|
|
||||||
</td>
|
|
||||||
|
|
||||||
<td width="5%" class="text-center">
|
|
||||||
<button type="button" class="btn btn-xs btn-danger" onclick="rimuoviRigaBarcode(\'-id-\')">
|
|
||||||
<i class="fa fa-trash"></i>
|
|
||||||
</button>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>';
|
|
|
@ -563,7 +563,6 @@ switch (filter('op')) {
|
||||||
$id_articolo = post('id_articolo');
|
$id_articolo = post('id_articolo');
|
||||||
$barcode = post('barcode');
|
$barcode = post('barcode');
|
||||||
|
|
||||||
|
|
||||||
if (!empty($barcode)) {
|
if (!empty($barcode)) {
|
||||||
$id_articolo = $dbo->selectOne('mg_articoli', 'id', ['deleted_at' => null, 'barcode' => $barcode])['id'];
|
$id_articolo = $dbo->selectOne('mg_articoli', 'id', ['deleted_at' => null, 'barcode' => $barcode])['id'];
|
||||||
}
|
}
|
||||||
|
|
|
@ -935,7 +935,6 @@ switch (post('op')) {
|
||||||
$id_articolo = post('id_articolo');
|
$id_articolo = post('id_articolo');
|
||||||
$barcode = post('barcode');
|
$barcode = post('barcode');
|
||||||
|
|
||||||
|
|
||||||
if (!empty($barcode)) {
|
if (!empty($barcode)) {
|
||||||
$id_articolo = $dbo->selectOne('mg_articoli', 'id', ['deleted_at' => null, 'barcode' => $barcode])['id'];
|
$id_articolo = $dbo->selectOne('mg_articoli', 'id', ['deleted_at' => null, 'barcode' => $barcode])['id'];
|
||||||
}
|
}
|
||||||
|
@ -958,10 +957,10 @@ switch (post('op')) {
|
||||||
$articolo->qta = 1;
|
$articolo->qta = 1;
|
||||||
$articolo->costo_unitario = $originale->prezzo_acquisto;
|
$articolo->costo_unitario = $originale->prezzo_acquisto;
|
||||||
|
|
||||||
$id_conto = ($fattura->direzione == 'entrata') ? setting('Conto predefinito fatture di vendita') : setting('Conto predefinito fatture di acquisto');
|
$id_conto = ($dir == 'entrata') ? setting('Conto predefinito fatture di vendita') : setting('Conto predefinito fatture di acquisto');
|
||||||
if ($fattura->direzione == 'entrata' && !empty($originale->idconto_vendita)) {
|
if ($dir == 'entrata' && !empty($originale->idconto_vendita)) {
|
||||||
$id_conto = $originale->idconto_vendita;
|
$id_conto = $originale->idconto_vendita;
|
||||||
} elseif ($fattura->direzione == 'uscita' && !empty($originale->idconto_acquisto)) {
|
} elseif ($dir == 'uscita' && !empty($originale->idconto_acquisto)) {
|
||||||
$id_conto = $originale->idconto_acquisto;
|
$id_conto = $originale->idconto_acquisto;
|
||||||
}
|
}
|
||||||
$articolo->idconto = $id_conto;
|
$articolo->idconto = $id_conto;
|
||||||
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
// File e cartelle deprecate
|
||||||
|
$files = [
|
||||||
|
'include/common/barcode.php',
|
||||||
|
];
|
||||||
|
|
||||||
|
foreach ($files as $key => $value) {
|
||||||
|
$files[$key] = realpath(base_dir().'/'.$value);
|
||||||
|
}
|
||||||
|
|
||||||
|
delete($files);
|
||||||
|
?>
|
Loading…
Reference in New Issue