1
0
mirror of https://github.com/devcode-it/openstamanager.git synced 2025-02-16 19:40:44 +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.
*
* @deprecated
* @deprecated 2.4.11
*/
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
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_');
$scarico = (!empty($rs[0]['dir']) && $rs[0]['dir'] == 'uscita') ? tr('Rimozione articolo da _TYPE_ _NUM_') : tr('Scarico magazzino per _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_ numero _NUM_') : tr('Scarico magazzino per _TYPE_ numero _NUM_');
$movimento = ($qta > 0) ? $carico : $scarico;
}

View File

@ -259,11 +259,15 @@ switch (post('op')) {
// eliminazione contratto
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;

View File

@ -277,58 +277,24 @@ switch (post('op')) {
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
case 'unlink_riga':
$idriga = post('idriga');
case 'delete_riga':
$id_riga = post('idriga');
if ($id_record != '' && $idriga != '') {
// Se la riga è stata creata da un ordine, devo riportare la quantità evasa nella tabella degli ordini
// 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));
if (!empty($id_riga)) {
$riga = $ddt->getRighe()->find($id_riga);
// Rimpiazzo la quantità negli ordini
$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']));
// 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);
}
try {
$riga->delete();
flash()->info(tr('Riga rimossa!'));
} catch (InvalidArgumentException $e) {
flash()->error(tr('Alcuni serial number sono già stati utilizzati!'));
}
}
ricalcola_costiagg_ddt($id_record);
break;
// eliminazione ddt
@ -336,7 +302,7 @@ switch (post('op')) {
try {
$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!'));
} catch (InvalidArgumentException $e) {

View File

@ -93,7 +93,7 @@ function get_ivaindetraibile_ddt($id_ddt)
* $idarticolo integer codice dell'articolo da scollegare dal ddt
* $idddt integer codice del ddt da cui scollegare l'articolo.
*
* @deprecated
* @deprecated 2.4.11
*/
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
* $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')
{

View File

@ -144,19 +144,8 @@ if (!empty($rs)) {
<input type='hidden' name='backto' value='record-edit'>
<input type='hidden' name='id_record' value='".$id_record."'>
<input type='hidden' name='idriga' value='".$r['id']."'>
<input type='hidden' name='dir' value='".$dir."'>";
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 "
<input type='hidden' name='dir' value='".$dir."'>
<input type='hidden' name='op' value='delete_riga'>
<div class='input-group-btn'>";

View File

@ -36,8 +36,8 @@ class Articolo extends Article
$numero = $ddt->numero_esterno ?: $ddt->numero;
$data = $ddt->data;
$carico = ($tipo->dir == 'entrata') ? tr('Ripristino articolo da _TYPE_ _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_');
$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_ numero _NUM_');
$qta = ($tipo->dir == 'uscita') ? -$qta : $qta;
$movimento = ($qta < 0) ? $carico : $scarico;

View File

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

View File

@ -358,7 +358,7 @@ function ricalcola_costiagg_fattura($iddocumento)
* $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).
*
* @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 = '')
{

View File

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

View File

@ -41,8 +41,8 @@ class Articolo extends Article
$numero = $fattura->numero_esterno ?: $fattura->numero;
$data = $fattura->data;
$carico = ($tipo->dir == 'entrata') ? tr('Ripristino articolo da _TYPE_ _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_');
$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_ numero _NUM_');
$qta = ($tipo->dir == 'uscita') ? -$qta : $qta;
$movimento = ($qta < 0) ? $carico : $scarico;

View File

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

View File

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

View File

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

View File

@ -96,6 +96,8 @@ function get_ivaindetraibile_ordine($idordine)
* $idiva integer id del codice iva associato all'articolo
* $qta float quantità dell'articolo nell'ordine
* $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')
{
@ -127,6 +129,8 @@ function add_articolo_inordine($idordine, $idarticolo, $descrizione, $idiva, $qt
* $idarticolo integer codice dell'articolo da scollegare dall'ordine
* $idordine integer codice dell'ordine da cui scollegare l'articolo
* $idrigaordine integer id della riga ordine da rimuovere.
*
* @deprecated 2.4.11
*/
function rimuovi_articolo_daordine($idarticolo, $idordine, $idrigaordine)
{

View File

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

View File

@ -124,9 +124,13 @@ switch (post('op')) {
// Eliminazione preventivo
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;