Aggiunto pulsante Aggiorna prezzi in row-list documenti
This commit is contained in:
parent
631c057634
commit
af2be23336
|
@ -641,19 +641,15 @@ switch (post('op')) {
|
|||
break;
|
||||
|
||||
case 'edit-price':
|
||||
$righe = $post['righe'];
|
||||
$righe = (array) post('righe');
|
||||
$numero_totale = 0;
|
||||
|
||||
foreach ($righe as $riga) {
|
||||
if (($riga['id']) != null) {
|
||||
$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->save();
|
||||
++$numero_totale;
|
||||
|
@ -672,5 +668,85 @@ switch (post('op')) {
|
|||
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;
|
||||
}
|
||||
|
|
|
@ -342,7 +342,11 @@ if (!$block_edit && sizeof($righe) > 0) {
|
|||
</button>
|
||||
|
||||
<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>
|
||||
</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);
|
||||
}
|
||||
|
||||
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) {
|
||||
swal({
|
||||
|
@ -401,11 +433,12 @@ function rimuoviRiga(id) {
|
|||
righe: id,
|
||||
},
|
||||
success: function (response) {
|
||||
content_was_modified = false;
|
||||
location.reload();
|
||||
renderMessages();
|
||||
caricaRighe(null);
|
||||
},
|
||||
error: function() {
|
||||
location.reload();
|
||||
renderMessages();
|
||||
caricaRighe(null);
|
||||
}
|
||||
});
|
||||
}).catch(swal.noop);
|
||||
|
@ -430,10 +463,12 @@ function duplicaRiga(id) {
|
|||
righe: id,
|
||||
},
|
||||
success: function (response) {
|
||||
location.reload();
|
||||
renderMessages();
|
||||
caricaRighe(null);
|
||||
},
|
||||
error: function() {
|
||||
location.reload();
|
||||
renderMessages();
|
||||
caricaRighe(null);
|
||||
}
|
||||
});
|
||||
}).catch(swal.noop);
|
||||
|
@ -470,10 +505,12 @@ $(".check").on("change", function() {
|
|||
$("#elimina_righe").removeClass("disabled");
|
||||
$("#duplica_righe").removeClass("disabled");
|
||||
$("#confronta_righe").removeClass("disabled");
|
||||
$("#aggiorna_righe").removeClass("disabled");
|
||||
} else {
|
||||
$("#elimina_righe").addClass("disabled");
|
||||
$("#duplica_righe").addClass("disabled");
|
||||
$("#confronta_righe").addClass("disabled");
|
||||
$("#aggiorna_righe").addClass("disabled");
|
||||
}
|
||||
});
|
||||
|
||||
|
|
|
@ -661,19 +661,15 @@ switch (filter('op')) {
|
|||
break;
|
||||
|
||||
case 'edit-price':
|
||||
$righe = $post['righe'];
|
||||
$righe = (array) post('righe');
|
||||
$numero_totale = 0;
|
||||
|
||||
foreach ($righe as $riga) {
|
||||
if (($riga['id']) != null) {
|
||||
$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->save();
|
||||
++$numero_totale;
|
||||
|
@ -692,6 +688,88 @@ switch (filter('op')) {
|
|||
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;
|
||||
}
|
||||
|
||||
|
|
|
@ -388,11 +388,14 @@ if (!$block_edit && sizeof($righe) > 0) {
|
|||
</button>';
|
||||
if ($dir == 'entrata') {
|
||||
echo '
|
||||
<button type="button" class="btn btn-xs btn-default disabled" id="confronta_righe" onclick="confrontaRighe(getSelectData());">
|
||||
Confronta prezzi
|
||||
</button>';
|
||||
<button type="button" class="btn btn-xs btn-default disabled" id="confronta_righe" onclick="confrontaRighe(getSelectData());">
|
||||
'.tr('Confronta prezzi').'
|
||||
</button>';
|
||||
}
|
||||
echo '
|
||||
<button type="button" class="btn btn-xs btn-default disabled" id="aggiorna_righe" onclick="aggiornaRighe(getSelectData());">
|
||||
'.tr('Aggiorna prezzi').'
|
||||
</button>
|
||||
</div>';
|
||||
}
|
||||
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);
|
||||
}
|
||||
|
||||
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) {
|
||||
swal({
|
||||
title: "'.tr('Rimuovere queste righe?').'",
|
||||
|
@ -449,11 +481,12 @@ function rimuoviRiga(id) {
|
|||
righe: id,
|
||||
},
|
||||
success: function (response) {
|
||||
content_was_modified = false;
|
||||
location.reload();
|
||||
renderMessages();
|
||||
caricaRighe(null);
|
||||
},
|
||||
error: function() {
|
||||
location.reload();
|
||||
renderMessages();
|
||||
caricaRighe(null);
|
||||
}
|
||||
});
|
||||
}).catch(swal.noop);
|
||||
|
@ -478,10 +511,12 @@ function duplicaRiga(id) {
|
|||
righe: id,
|
||||
},
|
||||
success: function (response) {
|
||||
location.reload();
|
||||
renderMessages();
|
||||
caricaRighe(null);
|
||||
},
|
||||
error: function() {
|
||||
location.reload();
|
||||
renderMessages();
|
||||
caricaRighe(null);
|
||||
}
|
||||
});
|
||||
}).catch(swal.noop);
|
||||
|
@ -534,10 +569,12 @@ $(".check").on("change", function() {
|
|||
$("#elimina_righe").removeClass("disabled");
|
||||
$("#duplica_righe").removeClass("disabled");
|
||||
$("#confronta_righe").removeClass("disabled");
|
||||
$("#aggiorna_righe").removeClass("disabled");
|
||||
} else {
|
||||
$("#elimina_righe").addClass("disabled");
|
||||
$("#duplica_righe").addClass("disabled");
|
||||
$("#confronta_righe").addClass("disabled");
|
||||
$("#aggiorna_righe").removeClass("disabled");
|
||||
}
|
||||
});
|
||||
|
||||
|
|
|
@ -1055,19 +1055,15 @@ switch ($op) {
|
|||
break;
|
||||
|
||||
case 'edit-price':
|
||||
$righe = $post['righe'];
|
||||
$righe = (array) post('righe');
|
||||
$numero_totale = 0;
|
||||
|
||||
foreach ($righe as $riga) {
|
||||
if (($riga['id']) != null) {
|
||||
$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->save();
|
||||
++$numero_totale;
|
||||
|
@ -1086,6 +1082,87 @@ switch ($op) {
|
|||
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;
|
||||
}
|
||||
|
||||
|
|
|
@ -507,11 +507,14 @@ if (!$block_edit && sizeof($righe) > 0) {
|
|||
</button>';
|
||||
if ($direzione == 'entrata') {
|
||||
echo '
|
||||
<button type="button" class="btn btn-xs btn-default disabled" id="confronta_righe" onclick="confrontaRighe(getSelectData());">
|
||||
Confronta prezzi
|
||||
</button>';
|
||||
<button type="button" class="btn btn-xs btn-default disabled" id="confronta_righe" onclick="confrontaRighe(getSelectData());">
|
||||
'.tr('Confronta prezzi').'
|
||||
</button>';
|
||||
}
|
||||
echo '
|
||||
<button type="button" class="btn btn-xs btn-default disabled" id="aggiorna_righe" onclick="aggiornaRighe(getSelectData());">
|
||||
'.tr('Aggiorna prezzi').'
|
||||
</button>
|
||||
</div>';
|
||||
}
|
||||
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);
|
||||
}
|
||||
|
||||
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) {
|
||||
swal({
|
||||
title: "'.tr('Rimuovere queste righe?').'",
|
||||
|
@ -568,11 +600,12 @@ function rimuoviRiga(id) {
|
|||
righe: id,
|
||||
},
|
||||
success: function (response) {
|
||||
content_was_modified = false;
|
||||
location.reload();
|
||||
renderMessages();
|
||||
caricaRighe(null);
|
||||
},
|
||||
error: function() {
|
||||
location.reload();
|
||||
renderMessages();
|
||||
caricaRighe(null);
|
||||
}
|
||||
});
|
||||
}).catch(swal.noop);
|
||||
|
@ -597,10 +630,12 @@ function duplicaRiga(id) {
|
|||
righe: id,
|
||||
},
|
||||
success: function (response) {
|
||||
location.reload();
|
||||
renderMessages();
|
||||
caricaRighe(null);
|
||||
},
|
||||
error: function() {
|
||||
location.reload();
|
||||
renderMessages();
|
||||
caricaRighe(null);
|
||||
}
|
||||
});
|
||||
}).catch(swal.noop);
|
||||
|
@ -653,10 +688,12 @@ $(".check").on("change", function() {
|
|||
$("#elimina_righe").removeClass("disabled");
|
||||
$("#duplica_righe").removeClass("disabled");
|
||||
$("#confronta_righe").removeClass("disabled");
|
||||
$("#aggiorna_righe").removeClass("disabled");
|
||||
} else {
|
||||
$("#elimina_righe").addClass("disabled");
|
||||
$("#duplica_righe").addClass("disabled");
|
||||
$("#confronta_righe").addClass("disabled");
|
||||
$("#aggiorna_righe").removeClass("disabled");
|
||||
}
|
||||
});
|
||||
|
||||
|
|
|
@ -1145,19 +1145,15 @@ switch (post('op')) {
|
|||
break;
|
||||
|
||||
case 'edit-price':
|
||||
$righe = $post['righe'];
|
||||
$righe = (array) post('righe');
|
||||
$numero_totale = 0;
|
||||
|
||||
foreach ($righe as $riga) {
|
||||
if (($riga['id']) != null) {
|
||||
$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->save();
|
||||
++$numero_totale;
|
||||
|
@ -1176,5 +1172,85 @@ switch (post('op')) {
|
|||
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;
|
||||
}
|
||||
|
|
|
@ -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());">
|
||||
<i class="fa fa-trash"></i>
|
||||
</button>';
|
||||
if ($direzione == 'entrata') {
|
||||
echo '
|
||||
<button type="button" class="btn btn-xs btn-default disabled" id="confronta_righe" onclick="confrontaRighe(getSelectData());">
|
||||
Confronta prezzi
|
||||
</button>';
|
||||
}
|
||||
echo '
|
||||
</button>
|
||||
|
||||
<button type="button" class="btn btn-xs btn-default disabled" id="confronta_righe" onclick="confrontaRighe(getSelectData());">
|
||||
'.tr('Confronta prezzi').'
|
||||
</button>
|
||||
|
||||
<button type="button" class="btn btn-xs btn-default disabled" id="aggiorna_righe" onclick="aggiornaRighe(getSelectData());">
|
||||
'.tr('Aggiorna prezzi').'
|
||||
</button>
|
||||
</div>';
|
||||
}
|
||||
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);
|
||||
}
|
||||
|
||||
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) {
|
||||
swal({
|
||||
title: "'.tr('Rimuovere queste righe?').'",
|
||||
|
@ -343,11 +373,12 @@ function rimuoviRiga(id) {
|
|||
righe: id,
|
||||
},
|
||||
success: function (response) {
|
||||
content_was_modified = false;
|
||||
location.reload();
|
||||
renderMessages();
|
||||
caricaRighe(null);
|
||||
},
|
||||
error: function() {
|
||||
location.reload();
|
||||
renderMessages();
|
||||
caricaRighe(null);
|
||||
}
|
||||
});
|
||||
}).catch(swal.noop);
|
||||
|
@ -372,10 +403,12 @@ function duplicaRiga(id) {
|
|||
righe: id,
|
||||
},
|
||||
success: function (response) {
|
||||
location.reload();
|
||||
renderMessages();
|
||||
caricaRighe(null);
|
||||
},
|
||||
error: function() {
|
||||
location.reload();
|
||||
renderMessages();
|
||||
caricaRighe(null);
|
||||
}
|
||||
});
|
||||
}).catch(swal.noop);
|
||||
|
@ -420,10 +453,12 @@ $(".check").on("change", function() {
|
|||
$("#elimina_righe").removeClass("disabled");
|
||||
$("#duplica_righe").removeClass("disabled");
|
||||
$("#confronta_righe").removeClass("disabled");
|
||||
$("#aggiorna_righe").removeClass("disabled");
|
||||
} else {
|
||||
$("#elimina_righe").addClass("disabled");
|
||||
$("#duplica_righe").addClass("disabled");
|
||||
$("#confronta_righe").addClass("disabled");
|
||||
$("#aggiorna_righe").removeClass("disabled");
|
||||
}
|
||||
});
|
||||
|
||||
|
|
|
@ -716,19 +716,15 @@ switch (post('op')) {
|
|||
break;
|
||||
|
||||
case 'edit-price':
|
||||
$righe = $post['righe'];
|
||||
$righe = (array) post('righe');
|
||||
$numero_totale = 0;
|
||||
|
||||
foreach ($righe as $riga) {
|
||||
if (($riga['id']) != null) {
|
||||
$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->save();
|
||||
++$numero_totale;
|
||||
|
@ -749,42 +745,84 @@ switch (post('op')) {
|
|||
|
||||
break;
|
||||
|
||||
// Duplica ordine
|
||||
case 'copy':
|
||||
$new = $ordine->replicate();
|
||||
$new->numero = Ordine::getNextNumero(post('data'), $ordine->tipo->dir, $ordine->id_segment);
|
||||
$new->numero_esterno = Ordine::getNextNumeroSecondario(post('data'), $ordine->tipo->dir, $ordine->id_segment);
|
||||
$new->idstatoordine = post('idstatoordine');
|
||||
$new->data = post('data');
|
||||
$new->save();
|
||||
case 'update-price':
|
||||
$id_anagrafica = $ordine->idanagrafica;
|
||||
$prezzi_ivati = setting('Utilizza prezzi di vendita comprensivi di IVA');
|
||||
$numero_totale = 0;
|
||||
$id_righe = (array) post('righe');
|
||||
|
||||
$id_record = $new->id;
|
||||
foreach ($id_righe as $id_riga) {
|
||||
$riga = Articolo::find($id_riga) ?: Riga::find($id_riga);
|
||||
|
||||
if (!empty(post('copia_righe'))) {
|
||||
$righe = $ordine->getRighe();
|
||||
foreach ($righe as $riga) {
|
||||
$new_riga = $riga->replicate();
|
||||
$new_riga->setDocument($new);
|
||||
// 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));
|
||||
|
||||
$new_riga->qta_evasa = 0;
|
||||
$new_riga->save();
|
||||
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;
|
||||
}
|
||||
|
||||
//copia allegati
|
||||
if (!empty(post('copia_allegati'))) {
|
||||
$allegati = $ordine->uploads();
|
||||
foreach ($allegati as $allegato) {
|
||||
$allegato->copia([
|
||||
'id_module' => $new->getModule()->id,
|
||||
'id_record' => $new->id,
|
||||
]);
|
||||
}
|
||||
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!'));
|
||||
}
|
||||
|
||||
flash()->info(tr('Aggiunto ordine numero _NUM_!', [
|
||||
'_NUM_' => $new->numero,
|
||||
]));
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
|
@ -434,11 +434,14 @@ if (!$block_edit && sizeof($righe) > 0) {
|
|||
</button>';
|
||||
if ($direzione == 'entrata') {
|
||||
echo '
|
||||
<button type="button" class="btn btn-xs btn-default disabled" id="confronta_righe" onclick="confrontaRighe(getSelectData());">
|
||||
Confronta prezzi
|
||||
</button>';
|
||||
<button type="button" class="btn btn-xs btn-default disabled" id="confronta_righe" onclick="confrontaRighe(getSelectData());">
|
||||
'.tr('Confronta prezzi').'
|
||||
</button>';
|
||||
}
|
||||
echo '
|
||||
<button type="button" class="btn btn-xs btn-default disabled" id="aggiorna_righe" onclick="aggiornaRighe(getSelectData());">
|
||||
'.tr('Aggiorna prezzi').'
|
||||
</button>
|
||||
</div>';
|
||||
}
|
||||
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);
|
||||
}
|
||||
|
||||
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) {
|
||||
swal({
|
||||
title: "'.tr('Rimuovere queste righe?').'",
|
||||
|
@ -495,11 +528,12 @@ function rimuoviRiga(id) {
|
|||
righe: id,
|
||||
},
|
||||
success: function (response) {
|
||||
content_was_modified = false;
|
||||
location.reload();
|
||||
renderMessages();
|
||||
caricaRighe(null);
|
||||
},
|
||||
error: function() {
|
||||
location.reload();
|
||||
renderMessages();
|
||||
caricaRighe(null);
|
||||
}
|
||||
});
|
||||
}).catch(swal.noop);
|
||||
|
@ -524,10 +558,12 @@ function duplicaRiga(id) {
|
|||
righe: id,
|
||||
},
|
||||
success: function (response) {
|
||||
location.reload();
|
||||
renderMessages();
|
||||
caricaRighe(null);
|
||||
},
|
||||
error: function() {
|
||||
location.reload();
|
||||
renderMessages();
|
||||
caricaRighe(null);
|
||||
}
|
||||
});
|
||||
}).catch(swal.noop);
|
||||
|
@ -580,10 +616,12 @@ $(".check").on("change", function() {
|
|||
$("#elimina_righe").removeClass("disabled");
|
||||
$("#duplica_righe").removeClass("disabled");
|
||||
$("#confronta_righe").removeClass("disabled");
|
||||
$("#aggiorna_righe").removeClass("disabled");
|
||||
} else {
|
||||
$("#elimina_righe").addClass("disabled");
|
||||
$("#duplica_righe").addClass("disabled");
|
||||
$("#confronta_righe").addClass("disabled");
|
||||
$("#aggiorna_righe").removeClass("disabled");
|
||||
}
|
||||
});
|
||||
|
||||
|
|
|
@ -516,19 +516,15 @@ switch (post('op')) {
|
|||
break;
|
||||
|
||||
case 'edit-price':
|
||||
$righe = $post['righe'];
|
||||
$righe = (array) post('righe');
|
||||
$numero_totale = 0;
|
||||
|
||||
foreach ($righe as $riga) {
|
||||
if (($riga['id']) != null) {
|
||||
$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->save();
|
||||
++$numero_totale;
|
||||
|
@ -548,4 +544,84 @@ switch (post('op')) {
|
|||
}
|
||||
|
||||
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;
|
||||
}
|
|
@ -453,7 +453,11 @@ if (!$block_edit && sizeof($righe) > 0) {
|
|||
</button>
|
||||
|
||||
<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>
|
||||
</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);
|
||||
}
|
||||
|
||||
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) {
|
||||
swal({
|
||||
title: "'.tr('Rimuovere queste righe?').'",
|
||||
|
@ -511,11 +545,12 @@ function rimuoviRiga(id) {
|
|||
righe: id,
|
||||
},
|
||||
success: function (response) {
|
||||
content_was_modified = false;
|
||||
location.reload();
|
||||
renderMessages();
|
||||
caricaRighe(null);
|
||||
},
|
||||
error: function() {
|
||||
location.reload();
|
||||
renderMessages();
|
||||
caricaRighe(null);
|
||||
}
|
||||
});
|
||||
}).catch(swal.noop);
|
||||
|
@ -540,10 +575,12 @@ function duplicaRiga(id) {
|
|||
righe: id,
|
||||
},
|
||||
success: function (response) {
|
||||
location.reload();
|
||||
renderMessages();
|
||||
caricaRighe(null);
|
||||
},
|
||||
error: function() {
|
||||
location.reload();
|
||||
renderMessages();
|
||||
caricaRighe(null);
|
||||
}
|
||||
});
|
||||
}).catch(swal.noop);
|
||||
|
@ -580,10 +617,12 @@ $(".check").on("change", function() {
|
|||
$("#elimina_righe").removeClass("disabled");
|
||||
$("#duplica_righe").removeClass("disabled");
|
||||
$("#confronta_righe").removeClass("disabled");
|
||||
$("#aggiorna_righe").removeClass("disabled");
|
||||
} else {
|
||||
$("#elimina_righe").addClass("disabled");
|
||||
$("#duplica_righe").addClass("disabled");
|
||||
$("#confronta_righe").addClass("disabled");
|
||||
$("#aggiorna_righe").removeClass("disabled");
|
||||
}
|
||||
});
|
||||
|
||||
|
|
Loading…
Reference in New Issue