2017-08-04 16:28:16 +02:00
< ? php
include_once __DIR__ . '/../../core.php' ;
2018-12-29 14:24:27 +01:00
use Modules\Anagrafiche\Anagrafica ;
use Modules\DDT\Components\Articolo ;
use Modules\DDT\Components\Descrizione ;
use Modules\DDT\Components\Riga ;
2019-04-04 17:12:32 +02:00
use Modules\DDT\Components\Sconto ;
2018-12-29 14:24:27 +01:00
use Modules\DDT\DDT ;
use Modules\DDT\Tipo ;
2017-09-22 15:19:59 +02:00
$module = Modules :: get ( $id_module );
2017-08-04 16:28:16 +02:00
if ( $module [ 'name' ] == 'Ddt di vendita' ) {
$dir = 'entrata' ;
} else {
$dir = 'uscita' ;
}
switch ( post ( 'op' )) {
case 'add' :
$idanagrafica = post ( 'idanagrafica' );
2018-07-19 15:33:32 +02:00
$data = post ( 'data' );
2018-12-29 14:24:27 +01:00
$id_tipo = post ( 'idtipoddt' );
2017-08-04 16:28:16 +02:00
2018-12-29 14:24:27 +01:00
$anagrafica = Anagrafica :: find ( $idanagrafica );
$tipo = Tipo :: find ( $id_tipo );
2017-08-04 16:28:16 +02:00
2019-01-02 14:15:16 +01:00
$ddt = DDT :: build ( $anagrafica , $tipo , $data );
2018-12-29 14:24:27 +01:00
$id_record = $ddt -> id ;
2017-08-04 16:28:16 +02:00
2018-12-29 14:24:27 +01:00
flash () -> info ( tr ( 'Aggiunto ddt in _TYPE_ numero _NUM_!' , [
'_TYPE_' => $dir ,
2019-01-19 10:33:57 +01:00
'_NUM_' => $ddt -> numero ,
2018-12-29 14:24:27 +01:00
]));
2017-08-04 16:28:16 +02:00
break ;
case 'update' :
if ( ! empty ( $id_record )) {
$idstatoddt = post ( 'idstatoddt' );
$idpagamento = post ( 'idpagamento' );
2018-07-03 18:06:36 +02:00
2017-08-04 16:28:16 +02:00
$totale_imponibile = get_imponibile_ddt ( $id_record );
$totale_ddt = get_totale_ddt ( $id_record );
if ( $dir == 'uscita' ) {
2018-09-26 15:37:46 +02:00
$idrivalsainps = post ( 'id_rivalsa_inps' );
$idritenutaacconto = post ( 'id_ritenuta_acconto' );
2017-08-04 16:28:16 +02:00
$bollo = post ( 'bollo' );
} else {
$idrivalsainps = 0 ;
$idritenutaacconto = 0 ;
$bollo = 0 ;
}
2018-07-19 15:33:32 +02:00
$tipo_sconto = post ( 'tipo_sconto_generico' );
$sconto = post ( 'sconto_generico' );
2017-08-04 16:28:16 +02:00
// Leggo la descrizione del pagamento
$query = 'SELECT descrizione FROM co_pagamenti WHERE id=' . prepare ( $idpagamento );
$rs = $dbo -> fetchArray ( $query );
$pagamento = $rs [ 0 ][ 'descrizione' ];
// Query di aggiornamento
2018-07-03 18:06:36 +02:00
$dbo -> update ( 'dt_ddt' , [
'data' => post ( 'data' ),
'numero_esterno' => post ( 'numero_esterno' ),
'note' => post ( 'note' ),
'note_aggiuntive' => post ( 'note_aggiuntive' ),
'idstatoddt' => $idstatoddt ,
'idpagamento' => $idpagamento ,
'idconto' => post ( 'idconto' ),
'idanagrafica' => post ( 'idanagrafica' ),
'idspedizione' => post ( 'idspedizione' ),
'idcausalet' => post ( 'idcausalet' ),
2019-05-29 19:17:57 +02:00
'idsede_partenza' => post ( 'idsede_partenza' ),
'idsede_destinazione' => post ( 'idsede_destinazione' ),
2018-07-03 18:06:36 +02:00
'idvettore' => post ( 'idvettore' ),
'idporto' => post ( 'idporto' ),
'idaspettobeni' => post ( 'idaspettobeni' ),
'idrivalsainps' => $idrivalsainps ,
'idritenutaacconto' => $idritenutaacconto ,
'n_colli' => post ( 'n_colli' ),
'bollo' => 0 ,
'rivalsainps' => 0 ,
'ritenutaacconto' => 0 ,
2019-07-22 16:13:38 +02:00
'id_documento_fe' => post ( 'id_documento_fe' ),
'codice_cup' => post ( 'codice_cup' ),
'codice_cig' => post ( 'codice_cig' ),
'num_item' => post ( 'num_item' ),
2018-07-03 18:06:36 +02:00
], [ 'id' => $id_record ]);
$query = 'SELECT descrizione FROM dt_statiddt WHERE id=' . prepare ( $idstatoddt );
$rs = $dbo -> fetchArray ( $query );
2017-08-04 16:28:16 +02:00
2018-07-03 18:06:36 +02:00
// Ricalcolo inps, ritenuta e bollo (se l'ddt non è stato evaso)
if ( $dir == 'entrata' ) {
if ( $rs [ 0 ][ 'descrizione' ] != 'Pagato' ) {
ricalcola_costiagg_ddt ( $id_record );
}
} else {
if ( $rs [ 0 ][ 'descrizione' ] != 'Pagato' ) {
ricalcola_costiagg_ddt ( $id_record , $idrivalsainps , $idritenutaacconto , $bollo );
2017-08-04 16:28:16 +02:00
}
}
2018-07-03 18:06:36 +02:00
2019-05-29 19:17:57 +02:00
aggiorna_sedi_movimenti ( 'ddt' , $id_record );
2018-07-19 17:29:21 +02:00
flash () -> info ( tr ( 'Ddt modificato correttamente!' ));
2017-08-04 16:28:16 +02:00
}
break ;
case 'addarticolo' :
2018-07-19 15:33:32 +02:00
if ( post ( 'idarticolo' ) !== null ) {
2017-08-04 16:28:16 +02:00
$dir = post ( 'dir' );
$idarticolo = post ( 'idarticolo' );
$descrizione = post ( 'descrizione' );
$idiva = post ( 'idiva' );
2018-07-19 15:33:32 +02:00
$qta = post ( 'qta' );
$prezzo = post ( 'prezzo' );
2017-08-04 16:28:16 +02:00
// Calcolo dello sconto
2018-07-19 15:33:32 +02:00
$sconto_unitario = post ( 'sconto' );
$tipo_sconto = post ( 'tipo_sconto' );
2018-07-13 18:32:05 +02:00
$sconto = calcola_sconto ([
'sconto' => $sconto_unitario ,
'prezzo' => $prezzo ,
'tipo' => $tipo_sconto ,
'qta' => $qta ,
]);
2017-08-04 16:28:16 +02:00
2018-07-19 15:33:32 +02:00
add_articolo_inddt ( $id_record , $idarticolo , $descrizione , $idiva , $qta , post ( 'um' ), $prezzo * $qta , $sconto , $sconto_unitario , $tipo_sconto );
2017-08-04 16:28:16 +02:00
// Ricalcolo inps, ritenuta e bollo
ricalcola_costiagg_ddt ( $id_record );
2019-05-29 19:17:57 +02:00
aggiorna_sedi_movimenti ( 'ddt' , $id_record );
2018-07-19 17:29:21 +02:00
flash () -> info ( tr ( 'Articolo aggiunto!' ));
2017-08-04 16:28:16 +02:00
}
break ;
case 'addriga' :
// Selezione costi da intervento
$descrizione = post ( 'descrizione' );
$idiva = post ( 'idiva' );
$um = post ( 'um' );
2018-07-19 15:33:32 +02:00
$prezzo = post ( 'prezzo' );
$qta = post ( 'qta' );
2017-08-04 16:28:16 +02:00
// Calcolo dello sconto
2018-07-19 15:33:32 +02:00
$sconto_unitario = post ( 'sconto' );
$tipo_sconto = post ( 'tipo_sconto' );
2018-07-13 18:32:05 +02:00
$sconto = calcola_sconto ([
'sconto' => $sconto_unitario ,
'prezzo' => $prezzo ,
'tipo' => $tipo_sconto ,
'qta' => $qta ,
]);
2017-08-04 16:28:16 +02:00
$subtot = $prezzo * $qta ;
// Calcolo iva
$query = 'SELECT descrizione, percentuale, indetraibile FROM co_iva WHERE id=' . prepare ( $idiva );
$rs = $dbo -> fetchArray ( $query );
$iva = ( $subtot - $sconto ) / 100 * $rs [ 0 ][ 'percentuale' ];
$iva_indetraibile = $iva / 100 * $rs [ 0 ][ 'indetraibile' ];
2018-02-19 17:48:04 +01:00
$query = 'INSERT INTO dt_righe_ddt(idddt, idiva, desc_iva, iva, iva_indetraibile, descrizione, subtotale, sconto, sconto_unitario, tipo_sconto, um, qta, is_descrizione, `order`) VALUES(' . prepare ( $id_record ) . ', ' . prepare ( $idiva ) . ', ' . prepare ( $rs [ 0 ][ 'descrizione' ]) . ', ' . prepare ( $iva ) . ', ' . prepare ( $iva_indetraibile ) . ', ' . prepare ( $descrizione ) . ', ' . prepare ( $subtot ) . ', ' . prepare ( $sconto ) . ', ' . prepare ( $sconto_unitario ) . ', ' . prepare ( $tipo_sconto ) . ', ' . prepare ( $um ) . ', ' . prepare ( $qta ) . ', ' . prepare ( empty ( $qta )) . ', (SELECT IFNULL(MAX(`order`) + 1, 0) FROM dt_righe_ddt AS t WHERE idddt=' . prepare ( $id_record ) . '))' ;
$dbo -> query ( $query );
2017-08-04 16:28:16 +02:00
2018-02-19 17:48:04 +01:00
// Messaggi informativi
if ( ! empty ( $idarticolo )) {
2018-07-19 17:29:21 +02:00
flash () -> info ( tr ( 'Articolo aggiunto!' ));
2018-02-19 17:48:04 +01:00
} elseif ( ! empty ( $qta )) {
2018-07-19 17:29:21 +02:00
flash () -> info ( tr ( 'Riga aggiunta!' ));
2018-02-19 17:48:04 +01:00
} else {
2018-07-19 17:29:21 +02:00
flash () -> info ( tr ( 'Riga descrittiva aggiunta!' ));
2017-08-04 16:28:16 +02:00
}
2018-01-27 12:46:38 +01:00
2018-02-19 17:48:04 +01:00
// Ricalcolo inps, ritenuta e bollo
2019-03-29 12:46:17 +01:00
ricalcola_costiagg_ddt ( $id_record );
break ;
case 'manage_sconto' :
if ( post ( 'idriga' ) != null ) {
2019-04-04 17:12:32 +02:00
$sconto = Sconto :: find ( post ( 'idriga' ));
2018-02-19 17:48:04 +01:00
} else {
2019-04-04 17:12:32 +02:00
$sconto = Sconto :: build ( $ddt );
2018-01-18 19:03:06 +01:00
}
2018-02-19 17:48:04 +01:00
2019-03-29 12:46:17 +01:00
$sconto -> descrizione = post ( 'descrizione' );
$sconto -> id_iva = post ( 'idiva' );
$sconto -> sconto_unitario = post ( 'sconto_unitario' );
$sconto -> tipo_sconto = 'UNT' ;
$sconto -> save ();
if ( post ( 'idriga' ) != null ) {
flash () -> info ( tr ( 'Sconto/maggiorazione modificato!' ));
} else {
2019-07-11 17:20:58 +02:00
flash () -> info ( tr ( 'Sconto/maggiorazione aggiunto!' ));
2019-03-29 12:46:17 +01:00
}
// Ricalcolo inps, ritenuta e bollo
ricalcola_costiagg_ddt ( $id_record );
2018-01-18 19:03:06 +01:00
break ;
2017-08-04 16:28:16 +02:00
2019-02-14 17:49:58 +01:00
// Aggiunta di un ordine in ddt
case 'add_ordine' :
$ordine = \Modules\Ordini\Ordine :: find ( post ( 'id_ordine' ));
2017-08-04 16:28:16 +02:00
2019-02-14 17:49:58 +01:00
// Creazione della fattura al volo
if ( post ( 'create_document' ) == 'on' ) {
$tipo = Tipo :: where ( 'dir' , $dir ) -> first ();
2017-08-04 16:28:16 +02:00
2019-02-15 10:37:08 +01:00
$ddt = DDT :: build ( $ordine -> anagrafica , $tipo , post ( 'data' ));
2019-02-14 17:49:58 +01:00
$ddt -> idpagamento = $ordine -> idpagamento ;
2019-07-22 16:13:38 +02:00
$ddt -> id_documento_fe = $ordine -> id_documento_fe ;
$ddt -> codice_cup = $ordine -> codice_cup ;
$ddt -> codice_cig = $ordine -> codice_cig ;
$ddt -> num_item = $ordine -> num_item ;
2019-02-14 17:49:58 +01:00
$ddt -> save ();
2017-08-04 16:28:16 +02:00
2019-02-14 17:49:58 +01:00
$id_record = $ddt -> id ;
}
2017-08-04 16:28:16 +02:00
2019-02-14 17:49:58 +01:00
$parziale = false ;
$righe = $ordine -> getRighe ();
foreach ( $righe as $riga ) {
if ( post ( 'evadere' )[ $riga -> id ] == 'on' ) {
$qta = post ( 'qta_da_evadere' )[ $riga -> id ];
2017-08-04 16:28:16 +02:00
2019-02-14 17:49:58 +01:00
$copia = $riga -> copiaIn ( $ddt , $qta );
2019-02-15 10:37:08 +01:00
2017-09-05 17:31:58 +02:00
// Aggiornamento seriali dalla riga dell'ordine
2019-02-14 17:49:58 +01:00
if ( $copia -> isArticolo ()) {
$copia -> movimenta ( $copia -> qta );
2017-09-13 09:33:45 +02:00
2019-02-14 17:49:58 +01:00
$serials = is_array ( post ( 'serial' )[ $riga -> id ]) ? post ( 'serial' )[ $riga -> id ] : [];
2017-08-04 16:28:16 +02:00
2019-02-14 17:49:58 +01:00
$copia -> serials = $serials ;
2017-08-04 16:28:16 +02:00
}
2019-02-26 21:20:05 +01:00
$copia -> save ();
2017-08-04 16:28:16 +02:00
}
2019-02-14 17:49:58 +01:00
if ( $riga -> qta != $riga -> qta_evasa ) {
$parziale = true ;
}
2017-08-04 16:28:16 +02:00
}
2019-02-14 17:49:58 +01:00
// Impostazione del nuovo stato
$descrizione = $parziale ? 'Parzialmente evaso' : 'Evaso' ;
$stato = \Modules\Ordini\Stato :: where ( 'descrizione' , $descrizione ) -> first ();
$ordine -> stato () -> associate ( $stato );
$ordine -> save ();
2017-08-04 16:28:16 +02:00
ricalcola_costiagg_ddt ( $id_record );
2019-02-14 17:49:58 +01:00
2019-05-29 19:17:57 +02:00
aggiorna_sedi_movimenti ( 'ddt' , $id_record );
2019-02-14 17:49:58 +01:00
flash () -> info ( tr ( 'Ordine _NUM_ aggiunto!' , [
'_NUM_' => $ordine -> numero ,
]));
2017-08-04 16:28:16 +02:00
break ;
2019-02-26 20:55:00 +01:00
2017-08-04 16:28:16 +02:00
// Scollegamento articolo da ddt
case 'unlink_articolo' :
$idriga = post ( 'idriga' );
$idarticolo = post ( 'idarticolo' );
2017-09-05 17:31:58 +02:00
if ( ! rimuovi_articolo_daddt ( $idarticolo , $id_record , $idriga )) {
2018-07-19 17:29:21 +02:00
flash () -> error ( tr ( 'Alcuni serial number sono già stati utilizzati!' ));
2017-08-04 16:28:16 +02:00
2017-09-05 17:31:58 +02:00
return ;
}
2017-08-04 16:28:16 +02:00
2017-09-05 17:31:58 +02:00
// Ricalcolo inps, ritenuta e bollo
if ( $dir == 'entrata' ) {
ricalcola_costiagg_ddt ( $id_record );
} else {
ricalcola_costiagg_ddt ( $id_record , 0 , 0 , 0 );
2017-08-04 16:28:16 +02:00
}
2017-09-05 17:31:58 +02:00
2019-05-29 19:17:57 +02:00
aggiorna_sedi_movimenti ( 'ddt' , $id_record );
2018-07-19 17:29:21 +02:00
flash () -> info ( tr ( 'Articolo rimosso!' ));
2017-08-04 16:28:16 +02:00
break ;
// Scollegamento riga generica da ddt
case 'unlink_riga' :
$idriga = 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 ));
// 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 )) {
2018-06-25 11:44:06 +02:00
//Aggiorno lo stato dell'ordine
2018-07-08 18:11:17 +02:00
if ( setting ( 'Cambia automaticamente stato ordini fatturati' ) && ! empty ( $rs [ 0 ][ 'idordine' ])) {
2018-06-25 11:44:06 +02:00
$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' ]));
}
2018-06-26 09:41:43 +02:00
2017-08-04 16:28:16 +02:00
// Ricalcolo inps, ritenuta e bollo
if ( $dir == 'entrata' ) {
ricalcola_costiagg_ddt ( $id_record );
} else {
ricalcola_costiagg_ddt ( $id_record , 0 , 0 , 0 );
}
2018-07-19 17:29:21 +02:00
flash () -> info ( tr ( 'Riga rimossa!' ));
2017-08-04 16:28:16 +02:00
}
}
break ;
// Modifica riga
case 'editriga' :
2018-07-19 15:33:32 +02:00
if ( post ( 'idriga' ) !== null ) {
2017-08-04 16:28:16 +02:00
// Selezione costi da intervento
$idriga = post ( 'idriga' );
$descrizione = post ( 'descrizione' );
2018-07-19 15:33:32 +02:00
$prezzo = post ( 'prezzo' );
$qta = post ( 'qta' );
2017-08-04 16:28:16 +02:00
// Calcolo dello sconto
2018-07-19 15:33:32 +02:00
$sconto_unitario = post ( 'sconto' );
$tipo_sconto = post ( 'tipo_sconto' );
2018-07-13 18:32:05 +02:00
$sconto = calcola_sconto ([
'sconto' => $sconto_unitario ,
'prezzo' => $prezzo ,
'tipo' => $tipo_sconto ,
'qta' => $qta ,
]);
2017-08-04 16:28:16 +02:00
$idiva = post ( 'idiva' );
$um = post ( 'um' );
$subtot = $prezzo * $qta ;
// Lettura idarticolo dalla riga ddt
2018-01-23 18:05:29 +01:00
$rs = $dbo -> fetchArray ( 'SELECT * FROM dt_righe_ddt WHERE id=' . prepare ( $idriga ));
2017-08-04 16:28:16 +02:00
$idarticolo = $rs [ 0 ][ 'idarticolo' ];
$idordine = $rs [ 0 ][ 'idordine' ];
$old_qta = $rs [ 0 ][ 'qta' ];
2018-01-18 19:03:06 +01:00
$is_descrizione = $rs [ 0 ][ 'is_descrizione' ];
2017-09-05 17:31:58 +02:00
// Controllo per gestire i serial
if ( ! empty ( $idarticolo )) {
if ( ! controlla_seriali ( 'id_riga_ddt' , $idriga , $old_qta , $qta , $dir )) {
2018-07-19 17:29:21 +02:00
flash () -> error ( tr ( 'Alcuni serial number sono già stati utilizzati!' ));
2019-06-04 20:45:40 +02:00
2017-09-05 17:31:58 +02:00
return ;
}
}
2018-01-27 12:46:38 +01:00
2018-01-23 18:05:29 +01:00
// Se c'è un collegamento ad un ordine, aggiorno la quantità evasa
2018-02-19 17:48:04 +01:00
if ( ! empty ( $idordine )) {
2018-02-06 09:55:45 +01:00
$dbo -> query ( 'UPDATE or_righe_ordini SET qta_evasa=qta_evasa-' . $old_qta . ' + ' . $qta . ' WHERE descrizione=' . prepare ( $rs [ 0 ][ 'descrizione' ]) . ' AND idarticolo=' . prepare ( $rs [ 0 ][ 'idarticolo' ]) . ' AND idordine=' . prepare ( $idordine ) . ' AND idiva=' . prepare ( $rs [ 0 ][ 'idiva' ]));
2018-01-23 18:05:29 +01:00
}
2017-08-04 16:28:16 +02:00
// Calcolo iva
$query = 'SELECT * FROM co_iva WHERE id=' . prepare ( $idiva );
$rs = $dbo -> fetchArray ( $query );
$iva = ( $subtot - $sconto ) / 100 * $rs [ 0 ][ 'percentuale' ];
$iva_indetraibile = $iva / 100 * $rs [ 0 ][ 'indetraibile' ];
$desc_iva = $rs [ 0 ][ 'descrizione' ];
// Modifica riga generica sul ddt
2018-02-06 09:55:45 +01:00
if ( $is_descrizione == 0 ) {
2018-01-18 19:03:06 +01:00
$query = 'UPDATE dt_righe_ddt SET idiva=' . prepare ( $idiva ) . ', desc_iva=' . prepare ( $desc_iva ) . ', iva=' . prepare ( $iva ) . ', iva_indetraibile=' . prepare ( $iva_indetraibile ) . ', descrizione=' . prepare ( $descrizione ) . ', subtotale=' . prepare ( $subtot ) . ', sconto=' . prepare ( $sconto ) . ', sconto_unitario=' . prepare ( $sconto_unitario ) . ', tipo_sconto=' . prepare ( $tipo_sconto ) . ', um=' . prepare ( $um ) . ', qta=' . prepare ( $qta ) . ' WHERE id=' . prepare ( $idriga );
2018-02-06 09:55:45 +01:00
} else {
2018-01-18 19:03:06 +01:00
$query = 'UPDATE dt_righe_ddt SET descrizione=' . prepare ( $descrizione ) . ' WHERE id=' . prepare ( $idriga );
}
2017-08-04 16:28:16 +02:00
if ( $dbo -> query ( $query )) {
if ( ! empty ( $idarticolo )) {
// Controlli aggiuntivi sulle quantità evase degli ordini
if ( ! empty ( $idordine ) && $qta > 0 ) {
$rs = $dbo -> fetchArray ( 'SELECT qta_evasa, qta FROM or_righe_ordini WHERE idordine=' . prepare ( $idordine ) . ' AND idarticolo=' . prepare ( $idarticolo ));
$qta_ordine = $qta ;
if ( $qta > $rs [ 0 ][ 'qta_evasa' ]) {
$qta_ordine = ( $qta > $rs [ 0 ][ 'qta' ]) ? $rs [ 0 ][ 'qta' ] : $qta ;
}
$dbo -> query ( 'UPDATE or_righe_ordini SET qta_evasa = ' . prepare ( $qta_ordine ) . ' WHERE idordine=' . prepare ( $idordine ) . ' AND idarticolo=' . prepare ( $idarticolo ));
}
2017-09-05 17:31:58 +02:00
$new_qta = $qta - $old_qta ;
2017-08-04 16:28:16 +02:00
$new_qta = ( $dir == 'entrata' ) ? - $new_qta : $new_qta ;
add_movimento_magazzino ( $idarticolo , $new_qta , [ 'idddt' => $id_record ]);
}
2018-07-19 17:29:21 +02:00
flash () -> info ( tr ( 'Riga modificata!' ));
2017-08-04 16:28:16 +02:00
// Ricalcolo inps, ritenuta e bollo
if ( $dir == 'entrata' ) {
ricalcola_costiagg_ddt ( $id_record );
} else {
ricalcola_costiagg_ddt ( $id_record );
}
}
}
2019-05-29 19:17:57 +02:00
aggiorna_sedi_movimenti ( 'ddt' , $id_record );
2017-08-04 16:28:16 +02:00
break ;
// eliminazione ddt
case 'delete' :
2017-09-05 17:31:58 +02:00
// Se ci sono degli articoli collegati
$rs = $dbo -> fetchArray ( 'SELECT id, idarticolo FROM dt_righe_ddt WHERE idddt=' . prepare ( $id_record ));
foreach ( $rs as $value ) {
$non_rimovibili = seriali_non_rimuovibili ( 'id_riga_ddt' , $value [ 'id' ], $dir );
if ( ! empty ( $non_rimovibili )) {
2018-07-19 17:29:21 +02:00
flash () -> error ( tr ( 'Alcuni serial number sono già stati utilizzati!' ));
2017-08-04 16:28:16 +02:00
return ;
}
}
for ( $i = 0 ; $i < sizeof ( $rs ); ++ $i ) {
2018-11-30 16:10:15 +01:00
if ( $rs [ $i ][ 'idarticolo' ]) {
2018-10-30 10:27:44 +01:00
rimuovi_articolo_daddt ( $rs [ $i ][ 'idarticolo' ], $id_record , $rs [ $i ][ 'id' ]);
}
2017-08-04 16:28:16 +02:00
}
// Se delle righe sono state create da un ordine, devo riportare la quantità evasa nella tabella degli ordini
// al valore di prima, riaggiungendo la quantità che sto togliendo
2018-10-30 10:27:44 +01:00
$rs = $dbo -> fetchArray ( 'SELECT qta, descrizione, idarticolo, idordine, idiva FROM dt_righe_ddt WHERE idddt=' . prepare ( $id_record ) . ' AND idarticolo="0"' );
2018-06-26 09:41:43 +02:00
2017-08-04 16:28:16 +02:00
// Rimpiazzo la quantità negli ordini
for ( $i = 0 ; $i < sizeof ( $rs ); ++ $i ) {
$dbo -> query ( 'UPDATE or_righe_ordini SET qta_evasa=qta_evasa-' . $rs [ $i ][ 'qta' ] . ' WHERE descrizione=' . prepare ( $rs [ $i ][ 'descrizione' ]) . ' AND idarticolo=' . prepare ( $rs [ $i ][ 'idarticolo' ]) . ' AND idordine=' . prepare ( $rs [ $i ][ 'idordine' ]) . ' AND idiva=' . prepare ( $rs [ $i ][ 'idiva' ]));
}
$dbo -> query ( 'DELETE FROM dt_ddt WHERE id=' . prepare ( $id_record ));
$dbo -> query ( 'DELETE FROM dt_righe_ddt WHERE idddt=' . prepare ( $id_record ));
$dbo -> query ( 'DELETE FROM mg_movimenti WHERE idddt=' . prepare ( $id_record ));
2018-06-26 09:41:43 +02:00
2018-06-25 11:44:06 +02:00
//Aggiorno gli stati degli ordini
2018-07-08 18:11:17 +02:00
if ( setting ( 'Cambia automaticamente stato ordini fatturati' )) {
2018-06-25 11:44:06 +02:00
for ( $i = 0 ; $i < sizeof ( $rs ); ++ $i ) {
$dbo -> query ( 'UPDATE or_ordini SET idstatoordine=(SELECT id FROM or_statiordine WHERE descrizione="' . get_stato_ordine ( $rs [ $i ][ 'idordine' ]) . '") WHERE id = ' . prepare ( $rs [ $i ][ 'idordine' ]));
}
}
2017-08-04 16:28:16 +02:00
2018-07-19 17:29:21 +02:00
flash () -> info ( tr ( 'Ddt eliminato!' ));
2017-08-04 16:28:16 +02:00
break ;
case 'add_serial' :
2018-07-19 15:33:32 +02:00
$idriga = post ( 'idriga' );
$idarticolo = post ( 'idarticolo' );
2017-08-04 16:28:16 +02:00
2018-07-19 15:33:32 +02:00
$serials = ( array ) post ( 'serial' );
2017-09-05 17:31:58 +02:00
foreach ( $serials as $key => $value ) {
if ( empty ( $value )) {
unset ( $serials [ $key ]);
}
2017-08-04 16:28:16 +02:00
}
2017-09-05 17:31:58 +02:00
$dbo -> sync ( 'mg_prodotti' , [ 'id_riga_ddt' => $idriga , 'dir' => $dir , 'id_articolo' => $idarticolo ], [ 'serial' => $serials ]);
2017-08-04 16:28:16 +02:00
break ;
2018-10-30 10:27:44 +01:00
case 'update_position' :
2018-11-30 16:10:15 +01:00
$orders = explode ( ',' , $_POST [ 'order' ]);
2018-10-30 10:27:44 +01:00
$order = 0 ;
2017-08-04 16:28:16 +02:00
2018-11-30 16:10:15 +01:00
foreach ( $orders as $idriga ) {
2018-10-30 10:27:44 +01:00
$dbo -> query ( 'UPDATE `dt_righe_ddt` SET `order`=' . prepare ( $order ) . ' WHERE id=' . prepare ( $idriga ));
2018-11-30 16:10:15 +01:00
++ $order ;
2018-10-30 10:27:44 +01:00
}
break ;
2017-08-04 16:28:16 +02:00
}
2018-01-23 18:05:29 +01:00
// Aggiornamento stato degli ordini presenti in questa fattura in base alle quantità totali evase
2018-07-08 18:11:17 +02:00
if ( ! empty ( $id_record ) && setting ( 'Cambia automaticamente stato ordini fatturati' )) {
2018-02-06 09:55:45 +01:00
$rs = $dbo -> fetchArray ( 'SELECT idordine FROM dt_righe_ddt WHERE idddt=' . prepare ( $id_record ));
2018-01-27 12:46:38 +01:00
2018-02-06 09:55:45 +01:00
for ( $i = 0 ; $i < sizeof ( $rs ); ++ $i ) {
$dbo -> query ( 'UPDATE or_ordini SET idstatoordine=(SELECT id FROM or_statiordine WHERE descrizione="' . get_stato_ordine ( $rs [ $i ][ 'idordine' ]) . '") WHERE id = ' . prepare ( $rs [ $i ][ 'idordine' ]));
2018-01-23 18:05:29 +01:00
}
}