Miglioramento select degli Articoli
This commit is contained in:
parent
d018cf34b8
commit
d76ca979ba
|
@ -27,7 +27,7 @@ function start_superselect() {
|
|||
});
|
||||
}
|
||||
|
||||
function selectBackground(data, container) {
|
||||
function selectOptionRender(data, container) {
|
||||
let bg;
|
||||
|
||||
if (data._bgcolor_) {
|
||||
|
@ -210,7 +210,7 @@ function initStaticSelectInput(input) {
|
|||
escapeMarkup: function (text) {
|
||||
return text;
|
||||
},
|
||||
templateResult: selectBackground,
|
||||
templateResult: selectOptionRender,
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -230,7 +230,7 @@ function initDynamicSelectInput(input) {
|
|||
escapeMarkup: function (text) {
|
||||
return text;
|
||||
},
|
||||
templateResult: selectBackground,
|
||||
templateResult: selectOptionRender,
|
||||
ajax: {
|
||||
url: globals.rootdir + "/ajax_select.php?op=" + $input.data('source'),
|
||||
dataType: 'json',
|
||||
|
@ -250,7 +250,7 @@ function initDynamicSelectInput(input) {
|
|||
let results = data.results;
|
||||
|
||||
// Interpretazione forzata per campi optgroup
|
||||
if (results && results[0] && [0]['optgroup']) {
|
||||
if (results && results[0] && results[0]['optgroup']) {
|
||||
let groups = results.reduce(function (r, a) {
|
||||
r[a.optgroup] = r[a.optgroup] || [];
|
||||
r[a.optgroup].push(a);
|
||||
|
@ -258,7 +258,7 @@ function initDynamicSelectInput(input) {
|
|||
}, {});
|
||||
|
||||
let results_groups = [];
|
||||
for (const key in groups) {
|
||||
for ([key, results] of Object.entries(groups)) {
|
||||
results_groups.push({
|
||||
text: key,
|
||||
children: groups[key],
|
||||
|
|
|
@ -31,11 +31,14 @@ switch ($resource) {
|
|||
$sedi_non_impostate = !isset($superselect['idsede_partenza']) && !isset($superselect['idsede_destinazione']);
|
||||
$prezzi_ivati = setting('Utilizza prezzi di vendita comprensivi di IVA');
|
||||
$usare_dettaglio_fornitore = $superselect['dir'] == 'uscita';
|
||||
$usare_iva_anagrafica = $superselect['dir'] == 'entrata' && !empty($superselect['idanagrafica']);
|
||||
|
||||
$query = 'SELECT
|
||||
$query = "SELECT
|
||||
IF(`categoria`.`nome` IS NOT NULL, CONCAT(`categoria`.`nome`, IF(`sottocategoria`.`nome` IS NOT NULL, CONCAT(' (', `sottocategoria`.`nome`, ')'), '-')), '<i>".tr('Nessuna categoria')."</i>') AS optgroup,
|
||||
mg_articoli.id,
|
||||
mg_articoli.barcode,
|
||||
mg_articoli.'.($prezzi_ivati ? 'prezzo_vendita_ivato' : 'prezzo_vendita').' AS prezzo_vendita,
|
||||
|
||||
mg_articoli.".($prezzi_ivati ? 'prezzo_vendita_ivato' : 'prezzo_vendita').' AS prezzo_vendita,
|
||||
mg_articoli.prezzo_vendita_ivato AS prezzo_vendita_ivato,';
|
||||
|
||||
// Informazioni relative al fornitore specificato dal documenti di acquisto
|
||||
|
@ -57,20 +60,30 @@ switch ($resource) {
|
|||
NULL AS id_dettaglio_fornitore,';
|
||||
}
|
||||
|
||||
if ($usare_iva_anagrafica){
|
||||
$query .= '
|
||||
round(mg_articoli.qta,'.setting('Cifre decimali per quantità').') AS qta,
|
||||
IFNULL(iva_anagrafica.id, IFNULL(iva_predefinita.id, iva_articolo.id)) AS idiva_vendita,
|
||||
IFNULL(iva_anagrafica.descrizione, IFNULL(iva_predefinita.descrizione, iva_articolo.descrizione)) AS iva_vendita,';
|
||||
}else{
|
||||
$query .= '
|
||||
IFNULL(iva_predefinita.id, iva_articolo.id) AS idiva_vendita,
|
||||
IFNULL(iva_predefinita.descrizione, iva_articolo.descrizione) AS iva_vendita,';
|
||||
}
|
||||
|
||||
$query .= '
|
||||
round(mg_articoli.qta,'.setting('Cifre decimali per quantità').") AS qta,
|
||||
mg_articoli.um,
|
||||
mg_articoli.servizio,
|
||||
mg_articoli.idiva_vendita,
|
||||
|
||||
mg_articoli.idconto_vendita,
|
||||
mg_articoli.idconto_acquisto,
|
||||
categoria.`nome` AS categoria,
|
||||
sottocategoria.`nome` AS sottocategoria,
|
||||
co_iva.descrizione AS iva_vendita,
|
||||
CONCAT(conto_vendita_categoria .numero, ".", conto_vendita_sottocategoria.numero, " ", conto_vendita_sottocategoria.descrizione) AS idconto_vendita_title,
|
||||
CONCAT(conto_acquisto_categoria .numero, ".", conto_acquisto_sottocategoria.numero, " ", conto_acquisto_sottocategoria.descrizione) AS idconto_acquisto_title
|
||||
|
||||
CONCAT(conto_vendita_categoria .numero, '.', conto_vendita_sottocategoria.numero, ' ', conto_vendita_sottocategoria.descrizione) AS idconto_vendita_title,
|
||||
CONCAT(conto_acquisto_categoria .numero, '.', conto_acquisto_sottocategoria.numero, ' ', conto_acquisto_sottocategoria.descrizione) AS idconto_acquisto_title
|
||||
|
||||
FROM mg_articoli
|
||||
LEFT JOIN co_iva ON mg_articoli.idiva_vendita = co_iva.id
|
||||
LEFT JOIN `mg_categorie` AS categoria ON `categoria`.`id` = `mg_articoli`.`id_categoria`
|
||||
LEFT JOIN `mg_categorie` AS sottocategoria ON `sottocategoria`.`id` = `mg_articoli`.`id_sottocategoria`
|
||||
LEFT JOIN co_pianodeiconti3 AS conto_vendita_sottocategoria ON conto_vendita_sottocategoria.id=mg_articoli.idconto_vendita
|
||||
|
@ -78,6 +91,16 @@ switch ($resource) {
|
|||
LEFT JOIN co_pianodeiconti3 AS conto_acquisto_sottocategoria ON conto_acquisto_sottocategoria.id=mg_articoli.idconto_acquisto
|
||||
LEFT JOIN co_pianodeiconti2 AS conto_acquisto_categoria ON conto_acquisto_sottocategoria.idpianodeiconti2=conto_acquisto_categoria.id
|
||||
|
||||
LEFT JOIN co_iva AS iva_articolo ON iva_articolo.id = mg_articoli.idiva_vendita
|
||||
LEFT JOIN co_iva AS iva_predefinita ON iva_predefinita.id = (SELECT valore FROM zz_settings WHERE nome = 'Iva predefinita')";
|
||||
|
||||
if ($usare_iva_anagrafica) {
|
||||
$query .= "
|
||||
LEFT JOIN co_iva AS iva_anagrafica ON iva_anagrafica.id = (SELECT idiva_vendite FROM an_anagrafiche WHERE idanagrafica = ".prepare($superselect['idanagrafica']).')';
|
||||
}
|
||||
|
||||
$query .= '
|
||||
|
||||
LEFT JOIN mg_fornitore_articolo ON mg_fornitore_articolo.id_articolo = mg_articoli.id AND mg_fornitore_articolo.deleted_at IS NULL AND mg_fornitore_articolo.id_fornitore = '.prepare($superselect['idanagrafica']);
|
||||
|
||||
// Se c'è una sede settata, carico tutti gli articoli presenti in quella sede
|
||||
|
@ -130,90 +153,28 @@ switch ($resource) {
|
|||
$data = AJAX::selectResults($query, $where, $filter, $search_fields, $limit, $custom);
|
||||
$rs = $data['results'];
|
||||
|
||||
// Individuazione di eventuali listini
|
||||
if (!empty($superselect['dir']) && !empty($superselect['idanagrafica'])) {
|
||||
$listino = $dbo->fetchOne('SELECT prc_guadagno as percentuale FROM mg_listini WHERE id=(SELECT idlistino_'.($superselect['dir'] == 'uscita' ? 'acquisti' : 'vendite').' FROM an_anagrafiche WHERE idanagrafica='.prepare($superselect['idanagrafica']).')');
|
||||
}
|
||||
|
||||
//per le vendite leggo iva predefinita da anagrafica, se settata
|
||||
if (!empty($superselect['dir']) && $superselect['dir'] == 'entrata' && !empty($superselect['idanagrafica'])) {
|
||||
$idiva_predefinita_anagrafica = $dbo->fetchOne('SELECT idiva_vendite FROM an_anagrafiche WHERE idanagrafica = '.prepare($superselect['idanagrafica']))['idiva_vendite'];
|
||||
$iva_predefinita_anagrafica = $dbo->fetchOne('SELECT descrizione FROM co_iva WHERE id = '.prepare($idiva_predefinita_anagrafica))['descrizione'];
|
||||
}
|
||||
|
||||
// IVA da impostazioni
|
||||
$idiva_predefinita = setting('Iva predefinita');
|
||||
$iva_predefinita = $dbo->fetchOne('SELECT descrizione FROM co_iva WHERE id='.prepare($idiva_predefinita))['descrizione'];
|
||||
|
||||
$previous_category = -1;
|
||||
$previous_subcategory = -1;
|
||||
foreach ($rs as $r) {
|
||||
foreach ($rs as $k => $r) {
|
||||
// Lettura movimenti delle mie sedi
|
||||
$qta_azienda = $dbo->fetchOne("SELECT SUM(mg_movimenti.qta) AS qta, IF(mg_movimenti.idsede_azienda= 0,'Sede legale',(CONCAT_WS(' - ',an_sedi.nomesede,an_sedi.citta))) as sede FROM mg_movimenti LEFT JOIN an_sedi ON an_sedi.id = mg_movimenti.idsede_azienda WHERE mg_movimenti.idarticolo=".prepare($r['id']).' AND idsede_azienda='.prepare($superselect['idsede_partenza']).' GROUP BY idsede_azienda');
|
||||
$qta_azienda = $dbo->fetchOne("SELECT SUM(mg_movimenti.qta) AS qta FROM mg_movimenti LEFT JOIN an_sedi ON an_sedi.id = mg_movimenti.idsede_azienda WHERE mg_movimenti.idarticolo = ".prepare($r['id']).' AND idsede_azienda = '.prepare($superselect['idsede_partenza']));
|
||||
|
||||
// Lettura eventuali movimenti ad una propria sede (nel caso di movimenti fra sedi della mia azienda) per il calcolo corretto delle quantità
|
||||
if ($superselect['idsede_partenza'] != 0) {
|
||||
$qta_controparte = $dbo->fetchOne("SELECT SUM(mg_movimenti.qta) AS qta, IF(mg_movimenti.idsede_controparte= 0,'Sede legale',(CONCAT_WS(' - ',an_sedi.nomesede,an_sedi.citta))) as sede FROM mg_movimenti LEFT JOIN an_sedi ON an_sedi.id = mg_movimenti.idsede_controparte WHERE mg_movimenti.idarticolo=".prepare($r['id']).' AND idsede_controparte='.prepare($superselect['idsede_partenza']).' GROUP BY idsede_controparte');
|
||||
$qta_controparte = $dbo->fetchOne("SELECT SUM(mg_movimenti.qta) AS qta FROM mg_movimenti LEFT JOIN an_sedi ON an_sedi.id = mg_movimenti.idsede_controparte WHERE mg_movimenti.idarticolo = ".prepare($r['id']).' AND idsede_controparte = '.prepare($superselect['idsede_partenza']));
|
||||
} else {
|
||||
$qta_controparte = $dbo->fetchOne("SELECT SUM(mg_movimenti.qta) AS qta, IF(mg_movimenti.idsede_controparte= 0,'Sede legale',(CONCAT_WS(' - ',an_sedi.nomesede,an_sedi.citta))) as sede FROM ((( mg_movimenti LEFT JOIN an_sedi ON an_sedi.id = mg_movimenti.idsede_controparte ) LEFT JOIN dt_ddt ON mg_movimenti.idddt = dt_ddt.id ) LEFT JOIN co_documenti ON mg_movimenti.iddocumento = co_documenti.id ) WHERE mg_movimenti.idarticolo=".prepare($r['id']).' AND idsede_controparte='.prepare($superselect['idsede_partenza']).' AND IFNULL( dt_ddt.idanagrafica, co_documenti.idanagrafica ) = '.prepare(setting('Azienda predefinita')).' GROUP BY idsede_controparte');
|
||||
$qta_controparte = $dbo->fetchOne("SELECT SUM(mg_movimenti.qta) AS qta FROM ((( mg_movimenti LEFT JOIN an_sedi ON an_sedi.id = mg_movimenti.idsede_controparte ) LEFT JOIN dt_ddt ON mg_movimenti.idddt = dt_ddt.id ) LEFT JOIN co_documenti ON mg_movimenti.iddocumento = co_documenti.id ) WHERE mg_movimenti.idarticolo = ".prepare($r['id']).' AND idsede_controparte = '.prepare($superselect['idsede_partenza']).' AND IFNULL(dt_ddt.idanagrafica, co_documenti.idanagrafica) = '.prepare(setting('Azienda predefinita')));
|
||||
}
|
||||
|
||||
$qta = $qta_azienda['qta'] - $qta_controparte['qta'];
|
||||
|
||||
if ($previous_category != $r['categoria'] || $previous_subcategory != $r['sottocategoria']) {
|
||||
$previous_category = $r['categoria'];
|
||||
$previous_subcategory = $r['sottocategoria'];
|
||||
|
||||
$text = '<i>'.tr('Nessuna categoria').'</i>';
|
||||
if (!empty($r['categoria'])) {
|
||||
$text = $r['categoria'].' ('.(!empty($r['sottocategoria']) ? $r['sottocategoria'] : '-').')';
|
||||
}
|
||||
|
||||
$results[] = [
|
||||
'text' => $text,
|
||||
'children' => [],
|
||||
];
|
||||
}
|
||||
|
||||
// Iva dell'articolo
|
||||
if (!empty($idiva_predefinita_anagrafica)) {
|
||||
$idiva = $idiva_predefinita_anagrafica;
|
||||
$iva = $iva_predefinita_anagrafica;
|
||||
} elseif (empty($r['idiva_vendita'])) {
|
||||
$idiva = $idiva_predefinita;
|
||||
$iva = $iva_predefinita;
|
||||
} else {
|
||||
$idiva = $r['idiva_vendita'];
|
||||
$iva = $r['iva_vendita'];
|
||||
}
|
||||
|
||||
$prezzo_vendita = $r['prezzo_vendita'];
|
||||
|
||||
$results[count($results) - 1]['children'][] = [
|
||||
'id' => $r['id'],
|
||||
$rs[$k] = array_merge($r, [
|
||||
'text' => $r['codice'].' - '.$r['descrizione'].' '.(!$r['servizio'] ? '('.Translator::numberToLocale($qta).(!empty($r['um']) ? ' '.$r['um'] : '').')' : ''),
|
||||
'codice' => $r['codice'],
|
||||
'descrizione' => $r['descrizione'],
|
||||
'qta_minima' => $r['qta_minima'],
|
||||
'id_dettaglio_fornitore' => $r['id_dettaglio_fornitore'],
|
||||
'barcode' => $r['barcode'],
|
||||
'qta' => $r['qta'],
|
||||
'um' => $r['um'],
|
||||
'idiva_vendita' => $idiva,
|
||||
'iva_vendita' => $iva,
|
||||
'idconto_vendita' => $r['idconto_vendita'],
|
||||
'idconto_vendita_title' => $r['idconto_vendita_title'],
|
||||
'idconto_acquisto' => $r['idconto_acquisto'],
|
||||
'idconto_acquisto_title' => $r['idconto_acquisto_title'],
|
||||
'prezzo_acquisto' => $r['prezzo_acquisto'],
|
||||
'prezzo_vendita' => $prezzo_vendita,
|
||||
'prezzo_vendita_ivato' => $r['prezzo_vendita_ivato'],
|
||||
'disabled' => $r['qta'] <= 0 && !$superselect['permetti_movimento_a_zero'] && !$r['servizio'],
|
||||
];
|
||||
]);
|
||||
}
|
||||
|
||||
$results = [
|
||||
'results' => $results,
|
||||
'results' => $rs,
|
||||
'recordsFiltered' => $data['recordsFiltered'],
|
||||
];
|
||||
|
||||
|
|
Loading…
Reference in New Issue