1
0
mirror of https://github.com/devcode-it/openstamanager.git synced 2025-02-21 14:00:53 +01:00

Correzioni movimentazioni

This commit is contained in:
Thomas Zilio 2019-10-01 18:32:06 +02:00
parent df9638cf01
commit b85e87aad6
16 changed files with 83 additions and 153 deletions

View File

@ -7,7 +7,7 @@ use Modules\Articoli\Articolo;
/** /**
* Funzione per inserire i movimenti di magazzino. * Funzione per inserire i movimenti di magazzino.
* *
* @deprecated * @deprecated 2.4.11
*/ */
function add_movimento_magazzino($id_articolo, $qta, $array = [], $descrizone = '', $data = '') function add_movimento_magazzino($id_articolo, $qta, $array = [], $descrizone = '', $data = '')
{ {
@ -71,8 +71,8 @@ function add_movimento_magazzino($id_articolo, $qta, $array = [], $descrizone =
// Descrizione di default // Descrizione di default
if (empty($movimento)) { if (empty($movimento)) {
$carico = (!empty($rs[0]['dir']) && $rs[0]['dir'] == 'entrata') ? tr('Ripristino articolo da _TYPE_ _NUM_') : tr('Carico magazzino da _TYPE_ numero _NUM_'); $carico = (!empty($rs[0]['dir']) && $rs[0]['dir'] == 'entrata') ? tr('Ripristino articolo da _TYPE_ numero _NUM_') : tr('Carico magazzino da _TYPE_ numero _NUM_');
$scarico = (!empty($rs[0]['dir']) && $rs[0]['dir'] == 'uscita') ? tr('Rimozione articolo da _TYPE_ _NUM_') : tr('Scarico magazzino per _TYPE_ numero _NUM_'); $scarico = (!empty($rs[0]['dir']) && $rs[0]['dir'] == 'uscita') ? tr('Rimozione articolo da _TYPE_ numero _NUM_') : tr('Scarico magazzino per _TYPE_ numero _NUM_');
$movimento = ($qta > 0) ? $carico : $scarico; $movimento = ($qta > 0) ? $carico : $scarico;
} }

View File

@ -259,11 +259,15 @@ switch (post('op')) {
// eliminazione contratto // eliminazione contratto
case 'delete': case 'delete':
$dbo->query('DELETE FROM co_promemoria WHERE idcontratto='.prepare($id_record)); try {
$contratto->delete();
$contratto->delete(); $dbo->query('DELETE FROM co_promemoria WHERE idcontratto='.prepare($id_record));
flash()->info(tr('Contratto eliminato!')); flash()->info(tr('Contratto eliminato!'));
} catch (InvalidArgumentException $e) {
flash()->error(tr('Sono stati utilizzati alcuni serial number nel documento: impossibile procedere!'));
}
break; break;

View File

@ -277,58 +277,24 @@ switch (post('op')) {
break; break;
// Scollegamento articolo da ddt
case 'unlink_articolo':
$idriga = post('idriga');
$idarticolo = post('idarticolo');
if (!rimuovi_articolo_daddt($idarticolo, $id_record, $idriga)) {
flash()->error(tr('Alcuni serial number sono già stati utilizzati!'));
return;
}
// Ricalcolo inps, ritenuta e bollo
if ($dir == 'entrata') {
ricalcola_costiagg_ddt($id_record);
} else {
ricalcola_costiagg_ddt($id_record, 0, 0, 0);
}
flash()->info(tr('Articolo rimosso!'));
break;
// Scollegamento riga generica da ddt // Scollegamento riga generica da ddt
case 'unlink_riga': case 'delete_riga':
$idriga = post('idriga'); $id_riga = post('idriga');
if ($id_record != '' && $idriga != '') { if (!empty($id_riga)) {
// Se la riga è stata creata da un ordine, devo riportare la quantità evasa nella tabella degli ordini $riga = $ddt->getRighe()->find($id_riga);
// al valore di prima, riaggiungendo la quantità che sto togliendo
$rs = $dbo->fetchArray('SELECT qta, descrizione, idarticolo, idordine, idiva FROM dt_righe_ddt WHERE idddt='.prepare($id_record).' AND id='.prepare($idriga));
// Rimpiazzo la quantità negli ordini try {
$dbo->query('UPDATE or_righe_ordini SET qta_evasa=qta_evasa-'.$rs[0]['qta'].' WHERE descrizione='.prepare($rs[0]['descrizione']).' AND idarticolo='.prepare($rs[0]['idarticolo']).' AND idordine='.prepare($rs[0]['idordine']).' AND idiva='.prepare($rs[0]['idiva'])); $riga->delete();
// Eliminazione delle righe dal ddt
$query = 'DELETE FROM dt_righe_ddt WHERE idddt='.prepare($id_record).' AND id='.prepare($idriga);
if ($dbo->query($query)) {
//Aggiorno lo stato dell'ordine
if (setting('Cambia automaticamente stato ordini fatturati') && !empty($rs[0]['idordine'])) {
$dbo->query('UPDATE or_ordini SET idstatoordine=(SELECT id FROM or_statiordine WHERE descrizione="'.get_stato_ordine($rs[0]['idordine']).'") WHERE id = '.prepare($rs[0]['idordine']));
}
// Ricalcolo inps, ritenuta e bollo
if ($dir == 'entrata') {
ricalcola_costiagg_ddt($id_record);
} else {
ricalcola_costiagg_ddt($id_record, 0, 0, 0);
}
flash()->info(tr('Riga rimossa!')); flash()->info(tr('Riga rimossa!'));
} catch (InvalidArgumentException $e) {
flash()->error(tr('Alcuni serial number sono già stati utilizzati!'));
} }
} }
ricalcola_costiagg_ddt($id_record);
break; break;
// eliminazione ddt // eliminazione ddt
@ -336,7 +302,7 @@ switch (post('op')) {
try { try {
$ddt->delete(); $ddt->delete();
$dbo->query('DELETE FROM mg_movimenti WHERE idddt='.prepare($id_record)); $dbo->query('DELETE FROM mg_movimenti WHERE idddt = '.prepare($id_record));
flash()->info(tr('Ddt eliminato!')); flash()->info(tr('Ddt eliminato!'));
} catch (InvalidArgumentException $e) { } catch (InvalidArgumentException $e) {

View File

@ -93,7 +93,7 @@ function get_ivaindetraibile_ddt($id_ddt)
* $idarticolo integer codice dell'articolo da scollegare dal ddt * $idarticolo integer codice dell'articolo da scollegare dal ddt
* $idddt integer codice del ddt da cui scollegare l'articolo. * $idddt integer codice del ddt da cui scollegare l'articolo.
* *
* @deprecated * @deprecated 2.4.11
*/ */
function rimuovi_articolo_daddt($idarticolo, $idddt, $idrigaddt) function rimuovi_articolo_daddt($idarticolo, $idddt, $idrigaddt)
{ {
@ -246,7 +246,7 @@ function ricalcola_costiagg_ddt($idddt, $idrivalsainps = '', $idritenutaacconto
* $qta float quantità dell'articolo nell'ordine * $qta float quantità dell'articolo nell'ordine
* $prezzo float prezzo totale degli articoli (prezzounitario*qtà). * $prezzo float prezzo totale degli articoli (prezzounitario*qtà).
* *
* @deprecated * @deprecated 2.4.11
*/ */
function add_articolo_inddt($idddt, $idarticolo, $descrizione, $idiva, $qta, $idum, $prezzo, $sconto = 0, $sconto_unitario = 0, $tipo_sconto = 'UNT') function add_articolo_inddt($idddt, $idarticolo, $descrizione, $idiva, $qta, $idum, $prezzo, $sconto = 0, $sconto_unitario = 0, $tipo_sconto = 'UNT')
{ {

View File

@ -144,19 +144,8 @@ if (!empty($rs)) {
<input type='hidden' name='backto' value='record-edit'> <input type='hidden' name='backto' value='record-edit'>
<input type='hidden' name='id_record' value='".$id_record."'> <input type='hidden' name='id_record' value='".$id_record."'>
<input type='hidden' name='idriga' value='".$r['id']."'> <input type='hidden' name='idriga' value='".$r['id']."'>
<input type='hidden' name='dir' value='".$dir."'>"; <input type='hidden' name='dir' value='".$dir."'>
<input type='hidden' name='op' value='delete_riga'>
if (!empty($r['idarticolo'])) {
echo "
<input type='hidden' name='idarticolo' value='".$r['idarticolo']."'>
<input type='hidden' name='op' value='unlink_articolo'>";
} else {
echo "
<input type='hidden' name='op' value='unlink_riga'>";
}
echo "
<div class='input-group-btn'>"; <div class='input-group-btn'>";

View File

@ -36,8 +36,8 @@ class Articolo extends Article
$numero = $ddt->numero_esterno ?: $ddt->numero; $numero = $ddt->numero_esterno ?: $ddt->numero;
$data = $ddt->data; $data = $ddt->data;
$carico = ($tipo->dir == 'entrata') ? tr('Ripristino articolo da _TYPE_ _NUM_') : tr('Carico magazzino da _TYPE_ numero _NUM_'); $carico = ($tipo->dir == 'entrata') ? tr('Ripristino articolo da _TYPE_ numero _NUM_') : tr('Carico magazzino da _TYPE_ numero _NUM_');
$scarico = ($tipo->dir == 'entrata') ? tr('Scarico magazzino per _TYPE_ numero _NUM_') : tr('Rimozione articolo da _TYPE_ _NUM_'); $scarico = ($tipo->dir == 'entrata') ? tr('Scarico magazzino per _TYPE_ numero _NUM_') : tr('Rimozione articolo da _TYPE_ numero _NUM_');
$qta = ($tipo->dir == 'uscita') ? -$qta : $qta; $qta = ($tipo->dir == 'uscita') ? -$qta : $qta;
$movimento = ($qta < 0) ? $carico : $scarico; $movimento = ($qta < 0) ? $carico : $scarico;

View File

@ -536,7 +536,7 @@ switch (post('op')) {
break; break;
// Scollegamento riga generica da documento // Scollegamento riga generica da documento
case 'unlink_riga': case 'delete_riga':
$id_riga = post('idriga'); $id_riga = post('idriga');
if (!empty($id_riga)) { if (!empty($id_riga)) {

View File

@ -358,7 +358,7 @@ function ricalcola_costiagg_fattura($iddocumento)
* $prezzo float prezzo totale dell'articolo (prezzounitario*qtà) * $prezzo float prezzo totale dell'articolo (prezzounitario*qtà)
* $idintervento integer id dell'intervento da cui arriva l'articolo (per non creare casini quando si rimuoverà un articolo dalla fattura). * $idintervento integer id dell'intervento da cui arriva l'articolo (per non creare casini quando si rimuoverà un articolo dalla fattura).
* *
* @deprecated * @deprecated 2.4.11
*/ */
function add_articolo_infattura($iddocumento, $idarticolo, $descrizione, $idiva, $qta, $prezzo, $sconto = 0, $sconto_unitario = 0, $tipo_sconto = 'UNT', $idintervento = 0, $idconto = 0, $idum = 0, $idrivalsainps = '', $idritenutaacconto = '', $calcolo_ritenuta_acconto = '') function add_articolo_infattura($iddocumento, $idarticolo, $descrizione, $idiva, $qta, $prezzo, $sconto = 0, $sconto_unitario = 0, $tipo_sconto = 'UNT', $idintervento = 0, $idconto = 0, $idum = 0, $idrivalsainps = '', $idritenutaacconto = '', $calcolo_ritenuta_acconto = '')
{ {

View File

@ -37,7 +37,7 @@ foreach ($righe as $row) {
$extra = ''; $extra = '';
$delete = 'unlink_riga'; $delete = 'delete_riga';
// Articoli // Articoli
if ($row->isArticolo()) { if ($row->isArticolo()) {

View File

@ -41,8 +41,8 @@ class Articolo extends Article
$numero = $fattura->numero_esterno ?: $fattura->numero; $numero = $fattura->numero_esterno ?: $fattura->numero;
$data = $fattura->data; $data = $fattura->data;
$carico = ($tipo->dir == 'entrata') ? tr('Ripristino articolo da _TYPE_ _NUM_') : tr('Carico magazzino da _TYPE_ numero _NUM_'); $carico = ($tipo->dir == 'entrata') ? tr('Ripristino articolo da _TYPE_ numero _NUM_') : tr('Carico magazzino da _TYPE_ numero _NUM_');
$scarico = ($tipo->dir == 'entrata') ? tr('Scarico magazzino per _TYPE_ numero _NUM_') : tr('Rimozione articolo da _TYPE_ _NUM_'); $scarico = ($tipo->dir == 'entrata') ? tr('Scarico magazzino per _TYPE_ numero _NUM_') : tr('Rimozione articolo da _TYPE_ numero _NUM_');
$qta = ($tipo->dir == 'uscita') ? -$qta : $qta; $qta = ($tipo->dir == 'uscita') ? -$qta : $qta;
$movimento = ($qta < 0) ? $carico : $scarico; $movimento = ($qta < 0) ? $carico : $scarico;

View File

@ -189,32 +189,31 @@ switch (post('op')) {
// Eliminazione intervento // Eliminazione intervento
case 'delete': case 'delete':
// Elimino anche eventuali file caricati try {
Uploads::deleteLinked([ $intervento->delete();
'id_module' => $id_module,
'id_record' => $id_record,
]);
// Eliminazione associazioni tra interventi e contratti // Eliminazione associazioni tra interventi e contratti
$dbo->query('UPDATE co_promemoria SET idintervento = NULL WHERE idintervento='.prepare($id_record)); $dbo->query('UPDATE co_promemoria SET idintervento = NULL WHERE idintervento='.prepare($id_record));
// Elimino il collegamento al componente // Elimino il collegamento al componente
$dbo->query('DELETE FROM my_impianto_componenti WHERE idintervento='.prepare($id_record)); $dbo->query('DELETE FROM my_impianto_componenti WHERE idintervento='.prepare($id_record));
// Eliminazione associazione tecnici collegati all'intervento // Eliminazione associazione tecnici collegati all'intervento
$query = 'DELETE FROM in_interventi_tecnici WHERE idintervento='.prepare($id_record); $dbo->query('DELETE FROM in_interventi_tecnici WHERE idintervento='.prepare($id_record));
$dbo->query($query);
// Eliminazione associazione interventi e my_impianti // Eliminazione associazione interventi e my_impianti
$query = 'DELETE FROM my_impianti_interventi WHERE idintervento='.prepare($id_record); $dbo->query('DELETE FROM my_impianti_interventi WHERE idintervento='.prepare($id_record));
$dbo->query($query);
// Eliminazione dell'intervento // Elimino anche eventuali file caricati
$intervento->delete(); Uploads::deleteLinked([
'id_module' => $id_module,
'id_record' => $id_record,
]);
flash()->info(tr('Intervento _NUM_ eliminato!', [ flash()->info(tr('Intervento eliminato!'));
'_NUM_' => "'".$intervento->codice."'", } catch (InvalidArgumentException $e) {
])); flash()->error(tr('Sono stati utilizzati alcuni serial number nel documento: impossibile procedere!'));
}
break; break;
@ -288,9 +287,10 @@ switch (post('op')) {
' WHERE id='.prepare($idriga)); ' WHERE id='.prepare($idriga));
aggiorna_sedi_movimenti('interventi', $id_record); aggiorna_sedi_movimenti('interventi', $id_record);
break; break;
case 'unlink_riga': case 'delete_riga':
$id_riga = post('idriga'); $id_riga = post('idriga');
if (!empty($id_riga)) { if (!empty($id_riga)) {

View File

@ -158,7 +158,7 @@ if (!$righe->isEmpty()) {
<script type="text/javascript"> <script type="text/javascript">
function elimina_riga( id ){ function elimina_riga( id ){
$.post(globals.rootdir + '/actions.php', { $.post(globals.rootdir + '/actions.php', {
op: 'unlink_riga', op: 'delete_riga',
id_module: globals.id_module, id_module: globals.id_module,
id_record: globals.id_record, id_record: globals.id_record,
idriga: id idriga: id

View File

@ -224,71 +224,36 @@ switch (post('op')) {
break; break;
// Scollegamento articolo da ordine
case 'unlink_articolo':
$idarticolo = post('idarticolo');
$idriga = post('idriga');
if (!empty($idarticolo)) {
if (!rimuovi_articolo_daordine($idarticolo, $id_record, $idriga)) {
flash()->error(tr('Alcuni serial number sono già stati utilizzati!'));
return;
}
// if( $dbo->query($query) ){
// Ricalcolo inps, ritenuta e bollo
if ($dir == 'entrata') {
ricalcola_costiagg_ordine($id_record);
} else {
ricalcola_costiagg_ordine($id_record, 0, 0, 0);
}
flash()->info(tr('Articolo rimosso!'));
}
break;
// Scollegamento riga generica da ordine // Scollegamento riga generica da ordine
case 'unlink_riga': case 'delete_riga':
$idriga = post('idriga'); $id_riga = post('idriga');
if (!empty($idriga)) { if (!empty($id_riga)) {
$query = 'DELETE FROM or_righe_ordini WHERE idordine='.prepare($id_record).' AND id='.prepare($idriga); $riga = $ordine->getRighe()->find($id_riga);
$dbo->query($query); try {
$riga->delete();
// Ricalcolo inps, ritenuta e bollo flash()->info(tr('Riga rimossa!'));
if ($dir == 'entrata') { } catch (InvalidArgumentException $e) {
ricalcola_costiagg_ordine($id_record); flash()->error(tr('Alcuni serial number sono già stati utilizzati!'));
} else {
ricalcola_costiagg_ordine($id_record, 0, 0, 0);
} }
flash()->info(tr('Riga rimossa!'));
} }
ricalcola_costiagg_ordine($id_record);
break; break;
// eliminazione ordine // Eliminazione ordine
case 'delete': case 'delete':
// Se ci sono degli articoli collegati (ma non collegati a preventivi o interventi) li rimetto nel magazzino try {
$query = 'SELECT id, idarticolo FROM or_righe_ordini WHERE idordine='.prepare($id_record).' AND NOT idarticolo=0'; $ordine->delete();
$rs = $dbo->fetchArray($query);
foreach ($rs as $value) { flash()->info(tr('Ordine eliminato!'));
$non_rimovibili = seriali_non_rimuovibili('id_riga_documento', $value['id'], $dir); } catch (InvalidArgumentException $e) {
if (!empty($non_rimovibili)) { flash()->error(tr('Sono stati utilizzati alcuni serial number nel documento: impossibile procedere!'));
flash()->error(tr('Alcuni serial number sono già stati utilizzati!'));
return;
}
} }
$dbo->query('DELETE FROM or_ordini WHERE id='.prepare($id_record));
$dbo->query('DELETE FROM or_righe_ordini WHERE idordine='.prepare($id_record));
flash()->info(tr('Ordine eliminato!'));
break; break;
case 'add_serial': case 'add_serial':

View File

@ -96,6 +96,8 @@ function get_ivaindetraibile_ordine($idordine)
* $idiva integer id del codice iva associato all'articolo * $idiva integer id del codice iva associato all'articolo
* $qta float quantità dell'articolo nell'ordine * $qta float quantità dell'articolo nell'ordine
* $prezzo float prezzo totale degli articoli (prezzounitario*qtà). * $prezzo float prezzo totale degli articoli (prezzounitario*qtà).
*
* @deprecated 2.4.11
*/ */
function add_articolo_inordine($idordine, $idarticolo, $descrizione, $idiva, $qta, $idum, $prezzo, $sconto = 0, $sconto_unitario = 0, $tipo_sconto = 'UNT') function add_articolo_inordine($idordine, $idarticolo, $descrizione, $idiva, $qta, $idum, $prezzo, $sconto = 0, $sconto_unitario = 0, $tipo_sconto = 'UNT')
{ {
@ -127,6 +129,8 @@ function add_articolo_inordine($idordine, $idarticolo, $descrizione, $idiva, $qt
* $idarticolo integer codice dell'articolo da scollegare dall'ordine * $idarticolo integer codice dell'articolo da scollegare dall'ordine
* $idordine integer codice dell'ordine da cui scollegare l'articolo * $idordine integer codice dell'ordine da cui scollegare l'articolo
* $idrigaordine integer id della riga ordine da rimuovere. * $idrigaordine integer id della riga ordine da rimuovere.
*
* @deprecated 2.4.11
*/ */
function rimuovi_articolo_daordine($idarticolo, $idordine, $idrigaordine) function rimuovi_articolo_daordine($idarticolo, $idordine, $idrigaordine)
{ {

View File

@ -24,8 +24,6 @@ $rs = $dbo->fetchArray($q);
if (!empty($rs)) { if (!empty($rs)) {
foreach ($rs as $r) { foreach ($rs as $r) {
$delete = !empty($r['idarticolo']) ? 'unlink_articolo' : 'unlink_riga';
$extra = ''; $extra = '';
$mancanti = 0; $mancanti = 0;
@ -148,7 +146,7 @@ if (!empty($rs)) {
<input type='hidden' name='id_record' value='".$id_record."'> <input type='hidden' name='id_record' value='".$id_record."'>
<input type='hidden' name='idriga' value='".$r['id']."'> <input type='hidden' name='idriga' value='".$r['id']."'>
<input type='hidden' name='dir' value='".$dir."'> <input type='hidden' name='dir' value='".$dir."'>
<input type='hidden' name='op' value='".$delete."'>"; <input type='hidden' name='op' value='delete_riga'>";
if (!empty($r['idarticolo'])) { if (!empty($r['idarticolo'])) {
echo " echo "

View File

@ -124,9 +124,13 @@ switch (post('op')) {
// Eliminazione preventivo // Eliminazione preventivo
case 'delete': case 'delete':
$preventivo->delete(); try {
$preventivo->delete();
flash()->info(tr('Preventivo eliminato!')); flash()->info(tr('Preventivo eliminato!'));
} catch (InvalidArgumentException $e) {
flash()->error(tr('Sono stati utilizzati alcuni serial number nel documento: impossibile procedere!'));
}
break; break;