Aggiunto pulsante Aggiorna prezzi in row-list documenti

This commit is contained in:
MatteoPistorello 2023-09-25 16:53:28 +02:00
parent 631c057634
commit af2be23336
12 changed files with 760 additions and 116 deletions

View File

@ -641,19 +641,15 @@ switch (post('op')) {
break; break;
case 'edit-price': case 'edit-price':
$righe = $post['righe']; $righe = (array) post('righe');
$numero_totale = 0; $numero_totale = 0;
foreach ($righe as $riga) { foreach ($righe as $riga) {
if (($riga['id']) != null) { if (($riga['id']) != null) {
$articolo = Articolo::find($riga['id']); $articolo = Articolo::find($riga['id']);
} else {
$originale = ArticoloOriginale::find(post('idarticolo'));
$articolo = Articolo::build($fattura, $originale);
$articolo->id_dettaglio_fornitore = post('id_dettaglio_fornitore') ?: null;
} }
if ($articolo['prezzo_unitario'] != $riga['price']) { if ($articolo->prezzo_unitario != $riga['price']) {
$articolo->setPrezzoUnitario($riga['price'], $articolo->idiva); $articolo->setPrezzoUnitario($riga['price'], $articolo->idiva);
$articolo->save(); $articolo->save();
++$numero_totale; ++$numero_totale;
@ -672,5 +668,85 @@ switch (post('op')) {
flash()->warning(tr('Nessun prezzo modificato!')); flash()->warning(tr('Nessun prezzo modificato!'));
} }
break;
case 'update-price':
$dir = 'entrata';
$id_anagrafica = $contratto->idanagrafica;
$prezzi_ivati = setting('Utilizza prezzi di vendita comprensivi di IVA');
$numero_totale = 0;
$id_righe = (array) post('righe');
foreach ($id_righe as $id_riga) {
$riga = Articolo::find($id_riga) ?: Riga::find($id_riga);
// CALCOLO PREZZO UNITARIO
$prezzo_unitario = 0;
$sconto = 0;
if ($riga->isArticolo()) {
// Prezzi netti clienti / listino fornitore
$prezzi = $dbo->fetchArray('SELECT minimo, massimo, sconto_percentuale, '.($prezzi_ivati ? 'prezzo_unitario_ivato' : 'prezzo_unitario').' AS prezzo_unitario
FROM mg_prezzi_articoli
WHERE id_articolo = '.prepare($riga->idarticolo).' AND dir = '.prepare($dir).' AND id_anagrafica = '.prepare($id_anagrafica));
if ($prezzi) {
foreach ($prezzi as $prezzo) {
if ($riga->qta >= $prezzo['minimo'] && $riga->qta <= $prezzo['massimo']) {
$prezzo_unitario = $prezzo['prezzo_unitario'];
$sconto = $prezzo['sconto_percentuale'];
continue;
}
if ($prezzo['minimo'] == null && $prezzo['massimo'] == null && $prezzo['prezzo_unitario'] != null) {
$prezzo_unitario = $prezzo['prezzo_unitario'];
$sconto = $prezzo['sconto_percentuale'];
continue;
}
}
}
if (empty($prezzo_unitario)) {
// Prezzi listini clienti
$listino = $dbo->fetchOne('SELECT sconto_percentuale AS sconto_percentuale_listino, '.($prezzi_ivati ? 'prezzo_unitario_ivato' : 'prezzo_unitario').' AS prezzo_unitario_listino
FROM mg_listini
LEFT JOIN mg_listini_articoli ON mg_listini.id=mg_listini_articoli.id_listino
LEFT JOIN an_anagrafiche ON mg_listini.id=an_anagrafiche.id_listino
WHERE mg_listini.data_attivazione<=NOW() AND mg_listini_articoli.data_scadenza>=NOW() AND mg_listini.attivo=1 AND id_articolo = '.prepare($riga->idarticolo).' AND dir = '.prepare($dir).' AND idanagrafica = '.prepare($id_anagrafica));
if ($listino) {
$prezzo_unitario = $listino['prezzo_unitario_listino'];
$sconto = $listino['sconto_percentuale_listino'];
}
}
$prezzo_unitario = $prezzo_unitario ?: ($prezzi_ivati ? $riga->articolo->prezzo_vendita_ivato : $riga->articolo->prezzo_vendita);
$riga->setPrezzoUnitario($prezzo_unitario, $riga->idiva);
if ($dir == 'entrata') {
$riga->costo_unitario = $riga->articolo->prezzo_acquisto;
}
}
// Aggiunta sconto combinato se è presente un piano di sconto nell'anagrafica
$piano_sconto = $dbo->fetchOne('SELECT prc_guadagno FROM an_anagrafiche INNER JOIN mg_piani_sconto ON an_anagrafiche.id_piano_sconto_vendite=mg_piani_sconto.id WHERE idanagrafica='.prepare($id_anagrafica));
if (!empty($piano_sconto)) {
$sconto = parseScontoCombinato($piano_sconto['prc_guadagno'].'+'.$sconto);
}
$riga->setSconto($sconto, 'PRC');
$riga->save();
++$numero_totale;
}
if ($numero_totale > 1) {
flash()->info(tr('_NUM_ prezzi modificati!', [
'_NUM_' => $numero_totale,
]));
} elseif ($numero_totale == 1) {
flash()->info(tr('_NUM_ prezzo modificato!', [
'_NUM_' => $numero_totale,
]));
} else {
flash()->warning(tr('Nessun prezzo modificato!'));
}
break; break;
} }

View File

@ -342,7 +342,11 @@ if (!$block_edit && sizeof($righe) > 0) {
</button> </button>
<button type="button" class="btn btn-xs btn-default disabled" id="confronta_righe" onclick="confrontaRighe(getSelectData());"> <button type="button" class="btn btn-xs btn-default disabled" id="confronta_righe" onclick="confrontaRighe(getSelectData());">
Confronta prezzi '.tr('Confronta prezzi').'
</button>
<button type="button" class="btn btn-xs btn-default disabled" id="aggiorna_righe" onclick="aggiornaRighe(getSelectData());">
'.tr('Aggiorna prezzi').'
</button> </button>
</div>'; </div>';
} }
@ -381,6 +385,34 @@ function confrontaRighe(id) {
openModal("'.tr('Confronta prezzi').'", "'.$module->fileurl('modals/confronta_righe.php').'?id_module=" + globals.id_module + "&id_record=" + globals.id_record + "&righe=" + id); openModal("'.tr('Confronta prezzi').'", "'.$module->fileurl('modals/confronta_righe.php').'?id_module=" + globals.id_module + "&id_record=" + globals.id_record + "&righe=" + id);
} }
function aggiornaRighe(id) {
swal({
title: "'.tr('Aggiornare prezzi di queste righe?').'",
html: "'.tr('Confermando verranno aggiornati i prezzi delle righe secondo i listini ed i prezzi predefiniti collegati all\'articolo e ai piani sconto collegati all\'anagrafica.').'",
type: "warning",
showCancelButton: true,
confirmButtonText: "'.tr('Sì').'"
}).then(function () {
$.ajax({
url: globals.rootdir + "/actions.php",
type: "POST",
data: {
id_module: globals.id_module,
id_record: globals.id_record,
op: "update-price",
righe: id,
},
success: function (response) {
renderMessages();
caricaRighe(null);
},
error: function() {
renderMessages();
caricaRighe(null);
}
});
}).catch(swal.noop);
}
function rimuoviRiga(id) { function rimuoviRiga(id) {
swal({ swal({
@ -401,11 +433,12 @@ function rimuoviRiga(id) {
righe: id, righe: id,
}, },
success: function (response) { success: function (response) {
content_was_modified = false; renderMessages();
location.reload(); caricaRighe(null);
}, },
error: function() { error: function() {
location.reload(); renderMessages();
caricaRighe(null);
} }
}); });
}).catch(swal.noop); }).catch(swal.noop);
@ -430,10 +463,12 @@ function duplicaRiga(id) {
righe: id, righe: id,
}, },
success: function (response) { success: function (response) {
location.reload(); renderMessages();
caricaRighe(null);
}, },
error: function() { error: function() {
location.reload(); renderMessages();
caricaRighe(null);
} }
}); });
}).catch(swal.noop); }).catch(swal.noop);
@ -470,10 +505,12 @@ $(".check").on("change", function() {
$("#elimina_righe").removeClass("disabled"); $("#elimina_righe").removeClass("disabled");
$("#duplica_righe").removeClass("disabled"); $("#duplica_righe").removeClass("disabled");
$("#confronta_righe").removeClass("disabled"); $("#confronta_righe").removeClass("disabled");
$("#aggiorna_righe").removeClass("disabled");
} else { } else {
$("#elimina_righe").addClass("disabled"); $("#elimina_righe").addClass("disabled");
$("#duplica_righe").addClass("disabled"); $("#duplica_righe").addClass("disabled");
$("#confronta_righe").addClass("disabled"); $("#confronta_righe").addClass("disabled");
$("#aggiorna_righe").addClass("disabled");
} }
}); });

View File

@ -661,19 +661,15 @@ switch (filter('op')) {
break; break;
case 'edit-price': case 'edit-price':
$righe = $post['righe']; $righe = (array) post('righe');
$numero_totale = 0; $numero_totale = 0;
foreach ($righe as $riga) { foreach ($righe as $riga) {
if (($riga['id']) != null) { if (($riga['id']) != null) {
$articolo = Articolo::find($riga['id']); $articolo = Articolo::find($riga['id']);
} else {
$originale = ArticoloOriginale::find(post('idarticolo'));
$articolo = Articolo::build($fattura, $originale);
$articolo->id_dettaglio_fornitore = post('id_dettaglio_fornitore') ?: null;
} }
if ($articolo['prezzo_unitario'] != $riga['price']) { if ($articolo->prezzo_unitario != $riga['price']) {
$articolo->setPrezzoUnitario($riga['price'], $articolo->idiva); $articolo->setPrezzoUnitario($riga['price'], $articolo->idiva);
$articolo->save(); $articolo->save();
++$numero_totale; ++$numero_totale;
@ -692,6 +688,88 @@ switch (filter('op')) {
flash()->warning(tr('Nessun prezzo modificato!')); flash()->warning(tr('Nessun prezzo modificato!'));
} }
break;
case 'update-price':
$id_anagrafica = $ddt->idanagrafica;
$prezzi_ivati = setting('Utilizza prezzi di vendita comprensivi di IVA');
$numero_totale = 0;
$id_righe = (array) post('righe');
foreach ($id_righe as $id_riga) {
$riga = Articolo::find($id_riga) ?: Riga::find($id_riga);
// CALCOLO PREZZO UNITARIO
$prezzo_unitario = 0;
$sconto = 0;
if ($riga->isArticolo()) {
// Prezzi netti clienti / listino fornitore
$prezzi = $dbo->fetchArray('SELECT minimo, massimo, sconto_percentuale, '.($prezzi_ivati ? 'prezzo_unitario_ivato' : 'prezzo_unitario').' AS prezzo_unitario
FROM mg_prezzi_articoli
WHERE id_articolo = '.prepare($riga->idarticolo).' AND dir = '.prepare($dir).' AND id_anagrafica = '.prepare($id_anagrafica));
if ($prezzi) {
foreach ($prezzi as $prezzo) {
if ($riga->qta >= $prezzo['minimo'] && $riga->qta <= $prezzo['massimo']) {
$prezzo_unitario = $prezzo['prezzo_unitario'];
$sconto = $prezzo['sconto_percentuale'];
continue;
}
if ($prezzo['minimo'] == null && $prezzo['massimo'] == null && $prezzo['prezzo_unitario'] != null) {
$prezzo_unitario = $prezzo['prezzo_unitario'];
$sconto = $prezzo['sconto_percentuale'];
continue;
}
}
}
if (empty($prezzo_unitario)) {
// Prezzi listini clienti
$listino = $dbo->fetchOne('SELECT sconto_percentuale AS sconto_percentuale_listino, '.($prezzi_ivati ? 'prezzo_unitario_ivato' : 'prezzo_unitario').' AS prezzo_unitario_listino
FROM mg_listini
LEFT JOIN mg_listini_articoli ON mg_listini.id=mg_listini_articoli.id_listino
LEFT JOIN an_anagrafiche ON mg_listini.id=an_anagrafiche.id_listino
WHERE mg_listini.data_attivazione<=NOW() AND mg_listini_articoli.data_scadenza>=NOW() AND mg_listini.attivo=1 AND id_articolo = '.prepare($riga->idarticolo).' AND dir = '.prepare($dir).' AND idanagrafica = '.prepare($id_anagrafica));
if ($listino) {
$prezzo_unitario = $listino['prezzo_unitario_listino'];
$sconto = $listino['sconto_percentuale_listino'];
}
}
if ($dir == 'entrata') {
$prezzo_unitario = $prezzo_unitario ?: ($prezzi_ivati ? $riga->articolo->prezzo_vendita_ivato : $riga->articolo->prezzo_vendita);
$riga->costo_unitario = $riga->articolo->prezzo_acquisto;
} else {
$prezzo_unitario = $prezzo_unitario ?: $riga->articolo->prezzo_acquisto;
}
$riga->setPrezzoUnitario($prezzo_unitario, $riga->idiva);
}
// Aggiunta sconto combinato se è presente un piano di sconto nell'anagrafica
$join = ($dir == 'entrata' ? 'id_piano_sconto_vendite' : 'id_piano_sconto_acquisti');
$piano_sconto = $dbo->fetchOne('SELECT prc_guadagno FROM an_anagrafiche INNER JOIN mg_piani_sconto ON an_anagrafiche.'.$join.'=mg_piani_sconto.id WHERE idanagrafica='.prepare($id_anagrafica));
if (!empty($piano_sconto)) {
$sconto = parseScontoCombinato($piano_sconto['prc_guadagno'].'+'.$sconto);
}
$riga->setSconto($sconto, 'PRC');
$riga->save();
++$numero_totale;
}
if ($numero_totale > 1) {
flash()->info(tr('_NUM_ prezzi modificati!', [
'_NUM_' => $numero_totale,
]));
} elseif ($numero_totale == 1) {
flash()->info(tr('_NUM_ prezzo modificato!', [
'_NUM_' => $numero_totale,
]));
} else {
flash()->warning(tr('Nessun prezzo modificato!'));
}
break; break;
} }

View File

@ -388,11 +388,14 @@ if (!$block_edit && sizeof($righe) > 0) {
</button>'; </button>';
if ($dir == 'entrata') { if ($dir == 'entrata') {
echo ' echo '
<button type="button" class="btn btn-xs btn-default disabled" id="confronta_righe" onclick="confrontaRighe(getSelectData());"> <button type="button" class="btn btn-xs btn-default disabled" id="confronta_righe" onclick="confrontaRighe(getSelectData());">
Confronta prezzi '.tr('Confronta prezzi').'
</button>'; </button>';
} }
echo ' echo '
<button type="button" class="btn btn-xs btn-default disabled" id="aggiorna_righe" onclick="aggiornaRighe(getSelectData());">
'.tr('Aggiorna prezzi').'
</button>
</div>'; </div>';
} }
echo ' echo '
@ -430,6 +433,35 @@ function confrontaRighe(id) {
openModal("'.tr('Confronta prezzi').'", "'.$module->fileurl('modals/confronta_righe.php').'?id_module=" + globals.id_module + "&id_record=" + globals.id_record + "&righe=" + id); openModal("'.tr('Confronta prezzi').'", "'.$module->fileurl('modals/confronta_righe.php').'?id_module=" + globals.id_module + "&id_record=" + globals.id_record + "&righe=" + id);
} }
function aggiornaRighe(id) {
swal({
title: "'.tr('Aggiornare prezzi di queste righe?').'",
html: "'.tr('Confermando verranno aggiornati i prezzi delle righe secondo i listini ed i prezzi predefiniti collegati all\'articolo e ai piani sconto collegati all\'anagrafica.').'",
type: "warning",
showCancelButton: true,
confirmButtonText: "'.tr('Sì').'"
}).then(function () {
$.ajax({
url: globals.rootdir + "/actions.php",
type: "POST",
data: {
id_module: globals.id_module,
id_record: globals.id_record,
op: "update-price",
righe: id,
},
success: function (response) {
renderMessages();
caricaRighe(null);
},
error: function() {
renderMessages();
caricaRighe(null);
}
});
}).catch(swal.noop);
}
function rimuoviRiga(id) { function rimuoviRiga(id) {
swal({ swal({
title: "'.tr('Rimuovere queste righe?').'", title: "'.tr('Rimuovere queste righe?').'",
@ -449,11 +481,12 @@ function rimuoviRiga(id) {
righe: id, righe: id,
}, },
success: function (response) { success: function (response) {
content_was_modified = false; renderMessages();
location.reload(); caricaRighe(null);
}, },
error: function() { error: function() {
location.reload(); renderMessages();
caricaRighe(null);
} }
}); });
}).catch(swal.noop); }).catch(swal.noop);
@ -478,10 +511,12 @@ function duplicaRiga(id) {
righe: id, righe: id,
}, },
success: function (response) { success: function (response) {
location.reload(); renderMessages();
caricaRighe(null);
}, },
error: function() { error: function() {
location.reload(); renderMessages();
caricaRighe(null);
} }
}); });
}).catch(swal.noop); }).catch(swal.noop);
@ -534,10 +569,12 @@ $(".check").on("change", function() {
$("#elimina_righe").removeClass("disabled"); $("#elimina_righe").removeClass("disabled");
$("#duplica_righe").removeClass("disabled"); $("#duplica_righe").removeClass("disabled");
$("#confronta_righe").removeClass("disabled"); $("#confronta_righe").removeClass("disabled");
$("#aggiorna_righe").removeClass("disabled");
} else { } else {
$("#elimina_righe").addClass("disabled"); $("#elimina_righe").addClass("disabled");
$("#duplica_righe").addClass("disabled"); $("#duplica_righe").addClass("disabled");
$("#confronta_righe").addClass("disabled"); $("#confronta_righe").addClass("disabled");
$("#aggiorna_righe").removeClass("disabled");
} }
}); });

View File

@ -1055,19 +1055,15 @@ switch ($op) {
break; break;
case 'edit-price': case 'edit-price':
$righe = $post['righe']; $righe = (array) post('righe');
$numero_totale = 0; $numero_totale = 0;
foreach ($righe as $riga) { foreach ($righe as $riga) {
if (($riga['id']) != null) { if (($riga['id']) != null) {
$articolo = Articolo::find($riga['id']); $articolo = Articolo::find($riga['id']);
} else {
$originale = ArticoloOriginale::find(post('idarticolo'));
$articolo = Articolo::build($fattura, $originale);
$articolo->id_dettaglio_fornitore = post('id_dettaglio_fornitore') ?: null;
} }
if ($articolo['prezzo_unitario'] != $riga['price']) { if ($articolo->prezzo_unitario != $riga['price']) {
$articolo->setPrezzoUnitario($riga['price'], $articolo->idiva); $articolo->setPrezzoUnitario($riga['price'], $articolo->idiva);
$articolo->save(); $articolo->save();
++$numero_totale; ++$numero_totale;
@ -1086,6 +1082,87 @@ switch ($op) {
flash()->warning(tr('Nessun prezzo modificato!')); flash()->warning(tr('Nessun prezzo modificato!'));
} }
break;
case 'update-price':
$id_anagrafica = $fattura->idanagrafica;
$prezzi_ivati = setting('Utilizza prezzi di vendita comprensivi di IVA');
$numero_totale = 0;
$id_righe = (array) post('righe');
foreach ($id_righe as $id_riga) {
$riga = Articolo::find($id_riga) ?: Riga::find($id_riga);
// CALCOLO PREZZO UNITARIO
$prezzo_unitario = 0;
$sconto = 0;
if ($riga->isArticolo()) {
// Prezzi netti clienti / listino fornitore
$prezzi = $dbo->fetchArray('SELECT minimo, massimo, sconto_percentuale, '.($prezzi_ivati ? 'prezzo_unitario_ivato' : 'prezzo_unitario').' AS prezzo_unitario
FROM mg_prezzi_articoli
WHERE id_articolo = '.prepare($riga->idarticolo).' AND dir = '.prepare($dir).' AND id_anagrafica = '.prepare($id_anagrafica));
if ($prezzi) {
foreach ($prezzi as $prezzo) {
if ($riga->qta >= $prezzo['minimo'] && $riga->qta <= $prezzo['massimo']) {
$prezzo_unitario = $prezzo['prezzo_unitario'];
$sconto = $prezzo['sconto_percentuale'];
continue;
}
if ($prezzo['minimo'] == null && $prezzo['massimo'] == null && $prezzo['prezzo_unitario'] != null) {
$prezzo_unitario = $prezzo['prezzo_unitario'];
$sconto = $prezzo['sconto_percentuale'];
continue;
}
}
}
if (empty($prezzo_unitario)) {
// Prezzi listini clienti
$listino = $dbo->fetchOne('SELECT sconto_percentuale AS sconto_percentuale_listino, '.($prezzi_ivati ? 'prezzo_unitario_ivato' : 'prezzo_unitario').' AS prezzo_unitario_listino
FROM mg_listini
LEFT JOIN mg_listini_articoli ON mg_listini.id=mg_listini_articoli.id_listino
LEFT JOIN an_anagrafiche ON mg_listini.id=an_anagrafiche.id_listino
WHERE mg_listini.data_attivazione<=NOW() AND mg_listini_articoli.data_scadenza>=NOW() AND mg_listini.attivo=1 AND id_articolo = '.prepare($riga->idarticolo).' AND dir = '.prepare($dir).' AND idanagrafica = '.prepare($id_anagrafica));
if ($listino) {
$prezzo_unitario = $listino['prezzo_unitario_listino'];
$sconto = $listino['sconto_percentuale_listino'];
}
}
if ($dir == 'entrata') {
$prezzo_unitario = $prezzo_unitario ?: ($prezzi_ivati ? $riga->articolo->prezzo_vendita_ivato : $riga->articolo->prezzo_vendita);
$riga->costo_unitario = $riga->articolo->prezzo_acquisto;
} else {
$prezzo_unitario = $prezzo_unitario ?: $riga->articolo->prezzo_acquisto;
}
$riga->setPrezzoUnitario($prezzo_unitario, $riga->idiva);
}
// Aggiunta sconto combinato se è presente un piano di sconto nell'anagrafica
$join = ($dir == 'entrata' ? 'id_piano_sconto_vendite' : 'id_piano_sconto_acquisti');
$piano_sconto = $dbo->fetchOne('SELECT prc_guadagno FROM an_anagrafiche INNER JOIN mg_piani_sconto ON an_anagrafiche.'.$join.'=mg_piani_sconto.id WHERE idanagrafica='.prepare($id_anagrafica));
if (!empty($piano_sconto)) {
$sconto = parseScontoCombinato($piano_sconto['prc_guadagno'].'+'.$sconto);
}
$riga->setSconto($sconto, 'PRC');
$riga->save();
++$numero_totale;
}
if ($numero_totale > 1) {
flash()->info(tr('_NUM_ prezzi modificati!', [
'_NUM_' => $numero_totale,
]));
} elseif ($numero_totale == 1) {
flash()->info(tr('_NUM_ prezzo modificato!', [
'_NUM_' => $numero_totale,
]));
} else {
flash()->warning(tr('Nessun prezzo modificato!'));
}
break; break;
} }

View File

@ -507,11 +507,14 @@ if (!$block_edit && sizeof($righe) > 0) {
</button>'; </button>';
if ($direzione == 'entrata') { if ($direzione == 'entrata') {
echo ' echo '
<button type="button" class="btn btn-xs btn-default disabled" id="confronta_righe" onclick="confrontaRighe(getSelectData());"> <button type="button" class="btn btn-xs btn-default disabled" id="confronta_righe" onclick="confrontaRighe(getSelectData());">
Confronta prezzi '.tr('Confronta prezzi').'
</button>'; </button>';
} }
echo ' echo '
<button type="button" class="btn btn-xs btn-default disabled" id="aggiorna_righe" onclick="aggiornaRighe(getSelectData());">
'.tr('Aggiorna prezzi').'
</button>
</div>'; </div>';
} }
echo ' echo '
@ -549,6 +552,35 @@ function confrontaRighe(id) {
openModal("'.tr('Confronta prezzi').'", "'.$module->fileurl('modals/confronta_righe.php').'?id_module=" + globals.id_module + "&id_record=" + globals.id_record + "&righe=" + id); openModal("'.tr('Confronta prezzi').'", "'.$module->fileurl('modals/confronta_righe.php').'?id_module=" + globals.id_module + "&id_record=" + globals.id_record + "&righe=" + id);
} }
function aggiornaRighe(id) {
swal({
title: "'.tr('Aggiornare prezzi di queste righe?').'",
html: "'.tr('Confermando verranno aggiornati i prezzi delle righe secondo i listini ed i prezzi predefiniti collegati all\'articolo e ai piani sconto collegati all\'anagrafica.').'",
type: "warning",
showCancelButton: true,
confirmButtonText: "'.tr('Sì').'"
}).then(function () {
$.ajax({
url: globals.rootdir + "/actions.php",
type: "POST",
data: {
id_module: globals.id_module,
id_record: globals.id_record,
op: "update-price",
righe: id,
},
success: function (response) {
renderMessages();
caricaRighe(null);
},
error: function() {
renderMessages();
caricaRighe(null);
}
});
}).catch(swal.noop);
}
function rimuoviRiga(id) { function rimuoviRiga(id) {
swal({ swal({
title: "'.tr('Rimuovere queste righe?').'", title: "'.tr('Rimuovere queste righe?').'",
@ -568,11 +600,12 @@ function rimuoviRiga(id) {
righe: id, righe: id,
}, },
success: function (response) { success: function (response) {
content_was_modified = false; renderMessages();
location.reload(); caricaRighe(null);
}, },
error: function() { error: function() {
location.reload(); renderMessages();
caricaRighe(null);
} }
}); });
}).catch(swal.noop); }).catch(swal.noop);
@ -597,10 +630,12 @@ function duplicaRiga(id) {
righe: id, righe: id,
}, },
success: function (response) { success: function (response) {
location.reload(); renderMessages();
caricaRighe(null);
}, },
error: function() { error: function() {
location.reload(); renderMessages();
caricaRighe(null);
} }
}); });
}).catch(swal.noop); }).catch(swal.noop);
@ -653,10 +688,12 @@ $(".check").on("change", function() {
$("#elimina_righe").removeClass("disabled"); $("#elimina_righe").removeClass("disabled");
$("#duplica_righe").removeClass("disabled"); $("#duplica_righe").removeClass("disabled");
$("#confronta_righe").removeClass("disabled"); $("#confronta_righe").removeClass("disabled");
$("#aggiorna_righe").removeClass("disabled");
} else { } else {
$("#elimina_righe").addClass("disabled"); $("#elimina_righe").addClass("disabled");
$("#duplica_righe").addClass("disabled"); $("#duplica_righe").addClass("disabled");
$("#confronta_righe").addClass("disabled"); $("#confronta_righe").addClass("disabled");
$("#aggiorna_righe").removeClass("disabled");
} }
}); });

View File

@ -1145,19 +1145,15 @@ switch (post('op')) {
break; break;
case 'edit-price': case 'edit-price':
$righe = $post['righe']; $righe = (array) post('righe');
$numero_totale = 0; $numero_totale = 0;
foreach ($righe as $riga) { foreach ($righe as $riga) {
if (($riga['id']) != null) { if (($riga['id']) != null) {
$articolo = Articolo::find($riga['id']); $articolo = Articolo::find($riga['id']);
} else {
$originale = ArticoloOriginale::find(post('idarticolo'));
$articolo = Articolo::build($fattura, $originale);
$articolo->id_dettaglio_fornitore = post('id_dettaglio_fornitore') ?: null;
} }
if ($articolo['prezzo_unitario'] != $riga['price']) { if ($articolo->prezzo_unitario != $riga['price']) {
$articolo->setPrezzoUnitario($riga['price'], $articolo->idiva); $articolo->setPrezzoUnitario($riga['price'], $articolo->idiva);
$articolo->save(); $articolo->save();
++$numero_totale; ++$numero_totale;
@ -1176,5 +1172,85 @@ switch (post('op')) {
flash()->warning(tr('Nessun prezzo modificato!')); flash()->warning(tr('Nessun prezzo modificato!'));
} }
break;
case 'update-price':
$dir = 'entrata';
$id_anagrafica = $intervento->idanagrafica;
$prezzi_ivati = setting('Utilizza prezzi di vendita comprensivi di IVA');
$numero_totale = 0;
$id_righe = (array) post('righe');
foreach ($id_righe as $id_riga) {
$riga = Articolo::find($id_riga) ?: Riga::find($id_riga);
// CALCOLO PREZZO UNITARIO
$prezzo_unitario = 0;
$sconto = 0;
if ($riga->isArticolo()) {
// Prezzi netti clienti / listino fornitore
$prezzi = $dbo->fetchArray('SELECT minimo, massimo, sconto_percentuale, '.($prezzi_ivati ? 'prezzo_unitario_ivato' : 'prezzo_unitario').' AS prezzo_unitario
FROM mg_prezzi_articoli
WHERE id_articolo = '.prepare($riga->idarticolo).' AND dir = '.prepare($dir).' AND id_anagrafica = '.prepare($id_anagrafica));
if ($prezzi) {
foreach ($prezzi as $prezzo) {
if ($riga->qta >= $prezzo['minimo'] && $riga->qta <= $prezzo['massimo']) {
$prezzo_unitario = $prezzo['prezzo_unitario'];
$sconto = $prezzo['sconto_percentuale'];
continue;
}
if ($prezzo['minimo'] == null && $prezzo['massimo'] == null && $prezzo['prezzo_unitario'] != null) {
$prezzo_unitario = $prezzo['prezzo_unitario'];
$sconto = $prezzo['sconto_percentuale'];
continue;
}
}
}
if (empty($prezzo_unitario)) {
// Prezzi listini clienti
$listino = $dbo->fetchOne('SELECT sconto_percentuale AS sconto_percentuale_listino, '.($prezzi_ivati ? 'prezzo_unitario_ivato' : 'prezzo_unitario').' AS prezzo_unitario_listino
FROM mg_listini
LEFT JOIN mg_listini_articoli ON mg_listini.id=mg_listini_articoli.id_listino
LEFT JOIN an_anagrafiche ON mg_listini.id=an_anagrafiche.id_listino
WHERE mg_listini.data_attivazione<=NOW() AND mg_listini_articoli.data_scadenza>=NOW() AND mg_listini.attivo=1 AND id_articolo = '.prepare($riga->idarticolo).' AND dir = '.prepare($dir).' AND idanagrafica = '.prepare($id_anagrafica));
if ($listino) {
$prezzo_unitario = $listino['prezzo_unitario_listino'];
$sconto = $listino['sconto_percentuale_listino'];
}
}
$prezzo_unitario = $prezzo_unitario ?: ($prezzi_ivati ? $riga->articolo->prezzo_vendita_ivato : $riga->articolo->prezzo_vendita);
$riga->setPrezzoUnitario($prezzo_unitario, $riga->idiva);
if ($dir == 'entrata') {
$riga->costo_unitario = $riga->articolo->prezzo_acquisto;
}
}
// Aggiunta sconto combinato se è presente un piano di sconto nell'anagrafica
$piano_sconto = $dbo->fetchOne('SELECT prc_guadagno FROM an_anagrafiche INNER JOIN mg_piani_sconto ON an_anagrafiche.id_piano_sconto_vendite=mg_piani_sconto.id WHERE idanagrafica='.prepare($id_anagrafica));
if (!empty($piano_sconto)) {
$sconto = parseScontoCombinato($piano_sconto['prc_guadagno'].'+'.$sconto);
}
$riga->setSconto($sconto, 'PRC');
$riga->save();
++$numero_totale;
}
if ($numero_totale > 1) {
flash()->info(tr('_NUM_ prezzi modificati!', [
'_NUM_' => $numero_totale,
]));
} elseif ($numero_totale == 1) {
flash()->info(tr('_NUM_ prezzo modificato!', [
'_NUM_' => $numero_totale,
]));
} else {
flash()->warning(tr('Nessun prezzo modificato!'));
}
break; break;
} }

View File

@ -279,14 +279,15 @@ if (!$block_edit && sizeof($righe) > 0) {
<button type="button" class="btn btn-xs btn-default disabled" id="elimina_righe" onclick="rimuoviRiga(getSelectData());"> <button type="button" class="btn btn-xs btn-default disabled" id="elimina_righe" onclick="rimuoviRiga(getSelectData());">
<i class="fa fa-trash"></i> <i class="fa fa-trash"></i>
</button>'; </button>
if ($direzione == 'entrata') {
echo ' <button type="button" class="btn btn-xs btn-default disabled" id="confronta_righe" onclick="confrontaRighe(getSelectData());">
<button type="button" class="btn btn-xs btn-default disabled" id="confronta_righe" onclick="confrontaRighe(getSelectData());"> '.tr('Confronta prezzi').'
Confronta prezzi </button>
</button>';
} <button type="button" class="btn btn-xs btn-default disabled" id="aggiorna_righe" onclick="aggiornaRighe(getSelectData());">
echo ' '.tr('Aggiorna prezzi').'
</button>
</div>'; </div>';
} }
echo ' echo '
@ -324,6 +325,35 @@ function confrontaRighe(id) {
openModal("'.tr('Confronta prezzi').'", "'.$module->fileurl('modals/confronta_righe.php').'?id_module=" + globals.id_module + "&id_record=" + globals.id_record + "&righe=" + id); openModal("'.tr('Confronta prezzi').'", "'.$module->fileurl('modals/confronta_righe.php').'?id_module=" + globals.id_module + "&id_record=" + globals.id_record + "&righe=" + id);
} }
function aggiornaRighe(id) {
swal({
title: "'.tr('Aggiornare prezzi di queste righe?').'",
html: "'.tr('Confermando verranno aggiornati i prezzi delle righe secondo i listini ed i prezzi predefiniti collegati all\'articolo e ai piani sconto collegati all\'anagrafica.').'",
type: "warning",
showCancelButton: true,
confirmButtonText: "'.tr('Sì').'"
}).then(function () {
$.ajax({
url: globals.rootdir + "/actions.php",
type: "POST",
data: {
id_module: globals.id_module,
id_record: globals.id_record,
op: "update-price",
righe: id,
},
success: function (response) {
renderMessages();
caricaRighe(null);
},
error: function() {
renderMessages();
caricaRighe(null);
}
});
}).catch(swal.noop);
}
function rimuoviRiga(id) { function rimuoviRiga(id) {
swal({ swal({
title: "'.tr('Rimuovere queste righe?').'", title: "'.tr('Rimuovere queste righe?').'",
@ -343,11 +373,12 @@ function rimuoviRiga(id) {
righe: id, righe: id,
}, },
success: function (response) { success: function (response) {
content_was_modified = false; renderMessages();
location.reload(); caricaRighe(null);
}, },
error: function() { error: function() {
location.reload(); renderMessages();
caricaRighe(null);
} }
}); });
}).catch(swal.noop); }).catch(swal.noop);
@ -372,10 +403,12 @@ function duplicaRiga(id) {
righe: id, righe: id,
}, },
success: function (response) { success: function (response) {
location.reload(); renderMessages();
caricaRighe(null);
}, },
error: function() { error: function() {
location.reload(); renderMessages();
caricaRighe(null);
} }
}); });
}).catch(swal.noop); }).catch(swal.noop);
@ -420,10 +453,12 @@ $(".check").on("change", function() {
$("#elimina_righe").removeClass("disabled"); $("#elimina_righe").removeClass("disabled");
$("#duplica_righe").removeClass("disabled"); $("#duplica_righe").removeClass("disabled");
$("#confronta_righe").removeClass("disabled"); $("#confronta_righe").removeClass("disabled");
$("#aggiorna_righe").removeClass("disabled");
} else { } else {
$("#elimina_righe").addClass("disabled"); $("#elimina_righe").addClass("disabled");
$("#duplica_righe").addClass("disabled"); $("#duplica_righe").addClass("disabled");
$("#confronta_righe").addClass("disabled"); $("#confronta_righe").addClass("disabled");
$("#aggiorna_righe").removeClass("disabled");
} }
}); });

View File

@ -716,19 +716,15 @@ switch (post('op')) {
break; break;
case 'edit-price': case 'edit-price':
$righe = $post['righe']; $righe = (array) post('righe');
$numero_totale = 0; $numero_totale = 0;
foreach ($righe as $riga) { foreach ($righe as $riga) {
if (($riga['id']) != null) { if (($riga['id']) != null) {
$articolo = Articolo::find($riga['id']); $articolo = Articolo::find($riga['id']);
} else {
$originale = ArticoloOriginale::find(post('idarticolo'));
$articolo = Articolo::build($fattura, $originale);
$articolo->id_dettaglio_fornitore = post('id_dettaglio_fornitore') ?: null;
} }
if ($articolo['prezzo_unitario'] != $riga['price']) { if ($articolo->prezzo_unitario != $riga['price']) {
$articolo->setPrezzoUnitario($riga['price'], $articolo->idiva); $articolo->setPrezzoUnitario($riga['price'], $articolo->idiva);
$articolo->save(); $articolo->save();
++$numero_totale; ++$numero_totale;
@ -749,42 +745,84 @@ switch (post('op')) {
break; break;
// Duplica ordine case 'update-price':
case 'copy': $id_anagrafica = $ordine->idanagrafica;
$new = $ordine->replicate(); $prezzi_ivati = setting('Utilizza prezzi di vendita comprensivi di IVA');
$new->numero = Ordine::getNextNumero(post('data'), $ordine->tipo->dir, $ordine->id_segment); $numero_totale = 0;
$new->numero_esterno = Ordine::getNextNumeroSecondario(post('data'), $ordine->tipo->dir, $ordine->id_segment); $id_righe = (array) post('righe');
$new->idstatoordine = post('idstatoordine');
$new->data = post('data');
$new->save();
$id_record = $new->id; foreach ($id_righe as $id_riga) {
$riga = Articolo::find($id_riga) ?: Riga::find($id_riga);
if (!empty(post('copia_righe'))) { // CALCOLO PREZZO UNITARIO
$righe = $ordine->getRighe(); $prezzo_unitario = 0;
foreach ($righe as $riga) { $sconto = 0;
$new_riga = $riga->replicate(); if ($riga->isArticolo()) {
$new_riga->setDocument($new); // Prezzi netti clienti / listino fornitore
$prezzi = $dbo->fetchArray('SELECT minimo, massimo, sconto_percentuale, '.($prezzi_ivati ? 'prezzo_unitario_ivato' : 'prezzo_unitario').' AS prezzo_unitario
FROM mg_prezzi_articoli
WHERE id_articolo = '.prepare($riga->idarticolo).' AND dir = '.prepare($dir).' AND id_anagrafica = '.prepare($id_anagrafica));
$new_riga->qta_evasa = 0; if ($prezzi) {
$new_riga->save(); foreach ($prezzi as $prezzo) {
if ($riga->qta >= $prezzo['minimo'] && $riga->qta <= $prezzo['massimo']) {
$prezzo_unitario = $prezzo['prezzo_unitario'];
$sconto = $prezzo['sconto_percentuale'];
continue;
}
if ($prezzo['minimo'] == null && $prezzo['massimo'] == null && $prezzo['prezzo_unitario'] != null) {
$prezzo_unitario = $prezzo['prezzo_unitario'];
$sconto = $prezzo['sconto_percentuale'];
continue;
}
}
}
if (empty($prezzo_unitario)) {
// Prezzi listini clienti
$listino = $dbo->fetchOne('SELECT sconto_percentuale AS sconto_percentuale_listino, '.($prezzi_ivati ? 'prezzo_unitario_ivato' : 'prezzo_unitario').' AS prezzo_unitario_listino
FROM mg_listini
LEFT JOIN mg_listini_articoli ON mg_listini.id=mg_listini_articoli.id_listino
LEFT JOIN an_anagrafiche ON mg_listini.id=an_anagrafiche.id_listino
WHERE mg_listini.data_attivazione<=NOW() AND mg_listini_articoli.data_scadenza>=NOW() AND mg_listini.attivo=1 AND id_articolo = '.prepare($riga->idarticolo).' AND dir = '.prepare($dir).' AND idanagrafica = '.prepare($id_anagrafica));
if ($listino) {
$prezzo_unitario = $listino['prezzo_unitario_listino'];
$sconto = $listino['sconto_percentuale_listino'];
}
}
if ($dir == 'entrata') {
$prezzo_unitario = $prezzo_unitario ?: ($prezzi_ivati ? $riga->articolo->prezzo_vendita_ivato : $riga->articolo->prezzo_vendita);
$riga->costo_unitario = $riga->articolo->prezzo_acquisto;
} else {
$prezzo_unitario = $prezzo_unitario ?: $riga->articolo->prezzo_acquisto;
}
$riga->setPrezzoUnitario($prezzo_unitario, $riga->idiva);
} }
// Aggiunta sconto combinato se è presente un piano di sconto nell'anagrafica
$join = ($dir == 'entrata' ? 'id_piano_sconto_vendite' : 'id_piano_sconto_acquisti');
$piano_sconto = $dbo->fetchOne('SELECT prc_guadagno FROM an_anagrafiche INNER JOIN mg_piani_sconto ON an_anagrafiche.'.$join.'=mg_piani_sconto.id WHERE idanagrafica='.prepare($id_anagrafica));
if (!empty($piano_sconto)) {
$sconto = parseScontoCombinato($piano_sconto['prc_guadagno'].'+'.$sconto);
}
$riga->setSconto($sconto, 'PRC');
$riga->save();
++$numero_totale;
} }
//copia allegati if ($numero_totale > 1) {
if (!empty(post('copia_allegati'))) { flash()->info(tr('_NUM_ prezzi modificati!', [
$allegati = $ordine->uploads(); '_NUM_' => $numero_totale,
foreach ($allegati as $allegato) { ]));
$allegato->copia([ } elseif ($numero_totale == 1) {
'id_module' => $new->getModule()->id, flash()->info(tr('_NUM_ prezzo modificato!', [
'id_record' => $new->id, '_NUM_' => $numero_totale,
]); ]));
} } else {
flash()->warning(tr('Nessun prezzo modificato!'));
} }
flash()->info(tr('Aggiunto ordine numero _NUM_!', [
'_NUM_' => $new->numero,
]));
break; break;
} }

View File

@ -434,11 +434,14 @@ if (!$block_edit && sizeof($righe) > 0) {
</button>'; </button>';
if ($direzione == 'entrata') { if ($direzione == 'entrata') {
echo ' echo '
<button type="button" class="btn btn-xs btn-default disabled" id="confronta_righe" onclick="confrontaRighe(getSelectData());"> <button type="button" class="btn btn-xs btn-default disabled" id="confronta_righe" onclick="confrontaRighe(getSelectData());">
Confronta prezzi '.tr('Confronta prezzi').'
</button>'; </button>';
} }
echo ' echo '
<button type="button" class="btn btn-xs btn-default disabled" id="aggiorna_righe" onclick="aggiornaRighe(getSelectData());">
'.tr('Aggiorna prezzi').'
</button>
</div>'; </div>';
} }
echo ' echo '
@ -476,6 +479,36 @@ function confrontaRighe(id) {
openModal("'.tr('Confronta prezzi').'", "'.$module->fileurl('modals/confronta_righe.php').'?id_module=" + globals.id_module + "&id_record=" + globals.id_record + "&righe=" + id); openModal("'.tr('Confronta prezzi').'", "'.$module->fileurl('modals/confronta_righe.php').'?id_module=" + globals.id_module + "&id_record=" + globals.id_record + "&righe=" + id);
} }
function aggiornaRighe(id) {
swal({
title: "'.tr('Aggiornare prezzi di queste righe?').'",
html: "'.tr('Confermando verranno aggiornati i prezzi delle righe secondo i listini ed i prezzi predefiniti collegati all\'articolo e ai piani sconto collegati all\'anagrafica.').'",
type: "warning",
showCancelButton: true,
confirmButtonText: "'.tr('Sì').'"
}).then(function () {
$.ajax({
url: globals.rootdir + "/actions.php",
type: "POST",
dataType: "json",
data: {
id_module: globals.id_module,
id_record: globals.id_record,
op: "update-price",
righe: id,
},
success: function (response) {
renderMessages();
caricaRighe(null);
},
error: function() {
renderMessages();
caricaRighe(null);
}
});
}).catch(swal.noop);
}
function rimuoviRiga(id) { function rimuoviRiga(id) {
swal({ swal({
title: "'.tr('Rimuovere queste righe?').'", title: "'.tr('Rimuovere queste righe?').'",
@ -495,11 +528,12 @@ function rimuoviRiga(id) {
righe: id, righe: id,
}, },
success: function (response) { success: function (response) {
content_was_modified = false; renderMessages();
location.reload(); caricaRighe(null);
}, },
error: function() { error: function() {
location.reload(); renderMessages();
caricaRighe(null);
} }
}); });
}).catch(swal.noop); }).catch(swal.noop);
@ -524,10 +558,12 @@ function duplicaRiga(id) {
righe: id, righe: id,
}, },
success: function (response) { success: function (response) {
location.reload(); renderMessages();
caricaRighe(null);
}, },
error: function() { error: function() {
location.reload(); renderMessages();
caricaRighe(null);
} }
}); });
}).catch(swal.noop); }).catch(swal.noop);
@ -580,10 +616,12 @@ $(".check").on("change", function() {
$("#elimina_righe").removeClass("disabled"); $("#elimina_righe").removeClass("disabled");
$("#duplica_righe").removeClass("disabled"); $("#duplica_righe").removeClass("disabled");
$("#confronta_righe").removeClass("disabled"); $("#confronta_righe").removeClass("disabled");
$("#aggiorna_righe").removeClass("disabled");
} else { } else {
$("#elimina_righe").addClass("disabled"); $("#elimina_righe").addClass("disabled");
$("#duplica_righe").addClass("disabled"); $("#duplica_righe").addClass("disabled");
$("#confronta_righe").addClass("disabled"); $("#confronta_righe").addClass("disabled");
$("#aggiorna_righe").removeClass("disabled");
} }
}); });

View File

@ -516,19 +516,15 @@ switch (post('op')) {
break; break;
case 'edit-price': case 'edit-price':
$righe = $post['righe']; $righe = (array) post('righe');
$numero_totale = 0; $numero_totale = 0;
foreach ($righe as $riga) { foreach ($righe as $riga) {
if (($riga['id']) != null) { if (($riga['id']) != null) {
$articolo = Articolo::find($riga['id']); $articolo = Articolo::find($riga['id']);
} else {
$originale = ArticoloOriginale::find(post('idarticolo'));
$articolo = Articolo::build($fattura, $originale);
$articolo->id_dettaglio_fornitore = post('id_dettaglio_fornitore') ?: null;
} }
if ($articolo['prezzo_unitario'] != $riga['price']) { if ($articolo->prezzo_unitario != $riga['price']) {
$articolo->setPrezzoUnitario($riga['price'], $articolo->idiva); $articolo->setPrezzoUnitario($riga['price'], $articolo->idiva);
$articolo->save(); $articolo->save();
++$numero_totale; ++$numero_totale;
@ -548,4 +544,84 @@ switch (post('op')) {
} }
break; break;
}
case 'update-price':
$dir = 'entrata';
$id_anagrafica = $preventivo->idanagrafica;
$prezzi_ivati = setting('Utilizza prezzi di vendita comprensivi di IVA');
$numero_totale = 0;
$id_righe = (array) post('righe');
foreach ($id_righe as $id_riga) {
$riga = Articolo::find($id_riga) ?: Riga::find($id_riga);
// CALCOLO PREZZO UNITARIO
$prezzo_unitario = 0;
$sconto = 0;
if ($riga->isArticolo()) {
// Prezzi netti clienti / listino fornitore
$prezzi = $dbo->fetchArray('SELECT minimo, massimo, sconto_percentuale, '.($prezzi_ivati ? 'prezzo_unitario_ivato' : 'prezzo_unitario').' AS prezzo_unitario
FROM mg_prezzi_articoli
WHERE id_articolo = '.prepare($riga->idarticolo).' AND dir = '.prepare($dir).' AND id_anagrafica = '.prepare($id_anagrafica));
if ($prezzi) {
foreach ($prezzi as $prezzo) {
if ($riga->qta >= $prezzo['minimo'] && $riga->qta <= $prezzo['massimo']) {
$prezzo_unitario = $prezzo['prezzo_unitario'];
$sconto = $prezzo['sconto_percentuale'];
continue;
}
if ($prezzo['minimo'] == null && $prezzo['massimo'] == null && $prezzo['prezzo_unitario'] != null) {
$prezzo_unitario = $prezzo['prezzo_unitario'];
$sconto = $prezzo['sconto_percentuale'];
continue;
}
}
}
if (empty($prezzo_unitario)) {
// Prezzi listini clienti
$listino = $dbo->fetchOne('SELECT sconto_percentuale AS sconto_percentuale_listino, '.($prezzi_ivati ? 'prezzo_unitario_ivato' : 'prezzo_unitario').' AS prezzo_unitario_listino
FROM mg_listini
LEFT JOIN mg_listini_articoli ON mg_listini.id=mg_listini_articoli.id_listino
LEFT JOIN an_anagrafiche ON mg_listini.id=an_anagrafiche.id_listino
WHERE mg_listini.data_attivazione<=NOW() AND mg_listini_articoli.data_scadenza>=NOW() AND mg_listini.attivo=1 AND id_articolo = '.prepare($riga->idarticolo).' AND dir = '.prepare($dir).' AND idanagrafica = '.prepare($id_anagrafica));
if ($listino) {
$prezzo_unitario = $listino['prezzo_unitario_listino'];
$sconto = $listino['sconto_percentuale_listino'];
}
}
$prezzo_unitario = $prezzo_unitario ?: ($prezzi_ivati ? $riga->articolo->prezzo_vendita_ivato : $riga->articolo->prezzo_vendita);
$riga->setPrezzoUnitario($prezzo_unitario, $riga->idiva);
if ($dir == 'entrata') {
$riga->costo_unitario = $riga->articolo->prezzo_acquisto;
}
}
// Aggiunta sconto combinato se è presente un piano di sconto nell'anagrafica
$piano_sconto = $dbo->fetchOne('SELECT prc_guadagno FROM an_anagrafiche INNER JOIN mg_piani_sconto ON an_anagrafiche.id_piano_sconto_vendite=mg_piani_sconto.id WHERE idanagrafica='.prepare($id_anagrafica));
if (!empty($piano_sconto)) {
$sconto = parseScontoCombinato($piano_sconto['prc_guadagno'].'+'.$sconto);
}
$riga->setSconto($sconto, 'PRC');
$riga->save();
++$numero_totale;
}
if ($numero_totale > 1) {
flash()->info(tr('_NUM_ prezzi modificati!', [
'_NUM_' => $numero_totale,
]));
} elseif ($numero_totale == 1) {
flash()->info(tr('_NUM_ prezzo modificato!', [
'_NUM_' => $numero_totale,
]));
} else {
flash()->warning(tr('Nessun prezzo modificato!'));
}
break;
}

View File

@ -453,7 +453,11 @@ if (!$block_edit && sizeof($righe) > 0) {
</button> </button>
<button type="button" class="btn btn-xs btn-default disabled" id="confronta_righe" onclick="confrontaRighe(getSelectData());"> <button type="button" class="btn btn-xs btn-default disabled" id="confronta_righe" onclick="confrontaRighe(getSelectData());">
Confronta prezzi '.tr('Confronta prezzi').'
</button>
<button type="button" class="btn btn-xs btn-default disabled" id="aggiorna_righe" onclick="aggiornaRighe(getSelectData());">
'.tr('Aggiorna prezzi').'
</button> </button>
</div>'; </div>';
} }
@ -492,6 +496,36 @@ function confrontaRighe(id) {
openModal("'.tr('Confronta prezzi').'", "'.$module->fileurl('modals/confronta_righe.php').'?id_module=" + globals.id_module + "&id_record=" + globals.id_record + "&righe=" + id); openModal("'.tr('Confronta prezzi').'", "'.$module->fileurl('modals/confronta_righe.php').'?id_module=" + globals.id_module + "&id_record=" + globals.id_record + "&righe=" + id);
} }
function aggiornaRighe(id) {
swal({
title: "'.tr('Aggiornare prezzi di queste righe?').'",
html: "'.tr('Confermando verranno aggiornati i prezzi delle righe secondo i listini ed i prezzi predefiniti collegati all\'articolo e ai piani sconto collegati all\'anagrafica.').'",
type: "warning",
showCancelButton: true,
confirmButtonText: "'.tr('Sì').'"
}).then(function () {
$.ajax({
url: globals.rootdir + "/actions.php",
type: "POST",
dataType: "json",
data: {
id_module: globals.id_module,
id_record: globals.id_record,
op: "update-price",
righe: id,
},
success: function (response) {
renderMessages();
caricaRighe(null);
},
error: function() {
renderMessages();
caricaRighe(null);
}
});
}).catch(swal.noop);
}
function rimuoviRiga(id) { function rimuoviRiga(id) {
swal({ swal({
title: "'.tr('Rimuovere queste righe?').'", title: "'.tr('Rimuovere queste righe?').'",
@ -511,11 +545,12 @@ function rimuoviRiga(id) {
righe: id, righe: id,
}, },
success: function (response) { success: function (response) {
content_was_modified = false; renderMessages();
location.reload(); caricaRighe(null);
}, },
error: function() { error: function() {
location.reload(); renderMessages();
caricaRighe(null);
} }
}); });
}).catch(swal.noop); }).catch(swal.noop);
@ -540,10 +575,12 @@ function duplicaRiga(id) {
righe: id, righe: id,
}, },
success: function (response) { success: function (response) {
location.reload(); renderMessages();
caricaRighe(null);
}, },
error: function() { error: function() {
location.reload(); renderMessages();
caricaRighe(null);
} }
}); });
}).catch(swal.noop); }).catch(swal.noop);
@ -580,10 +617,12 @@ $(".check").on("change", function() {
$("#elimina_righe").removeClass("disabled"); $("#elimina_righe").removeClass("disabled");
$("#duplica_righe").removeClass("disabled"); $("#duplica_righe").removeClass("disabled");
$("#confronta_righe").removeClass("disabled"); $("#confronta_righe").removeClass("disabled");
$("#aggiorna_righe").removeClass("disabled");
} else { } else {
$("#elimina_righe").addClass("disabled"); $("#elimina_righe").addClass("disabled");
$("#duplica_righe").addClass("disabled"); $("#duplica_righe").addClass("disabled");
$("#confronta_righe").addClass("disabled"); $("#confronta_righe").addClass("disabled");
$("#aggiorna_righe").removeClass("disabled");
} }
}); });