$dbo->query('INSERT INTO dt_ddt( numero, numero_esterno, data, idanagrafica, idtipoddt, idstatoddt, idpagamento, idconto) VALUES('.prepare($numero).', '.prepare($numero_esterno).', '.prepare($data).', '.prepare($idanagrafica).', (SELECT id FROM dt_tipiddt WHERE dir='.prepare($dir)."), (SELECT id FROM dt_statiddt WHERE descrizione='Bozza'), ".prepare($idpagamento).', '.prepare($idconto).')');
$id_record=$dbo->lastInsertedID();
// Lettura di tutte le righe della tabella in arrivo
$_SESSION['errors'][]=_('Alcuni serial number sono già stati utilizzati!');
return;
}
// Ricalcolo inps, ritenuta e bollo
if($post['dir']=='entrata'){
ricalcola_costiagg_ddt($id_record);
}else{
ricalcola_costiagg_ddt($id_record,0,0,0);
}
$_SESSION['infos'][]=_('Articolo rimosso!');
}
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($new_qta>$dbo->fetchArray("SELECT COUNT(*) AS rimovibili FROM dt_righe_ddt WHERE serial NOT IN (SELECT serial FROM vw_serials WHERE dir = 'entrata') AND idgruppo=".prepare($idgruppo).' AND idddt='.prepare($idddt))[0]['rimovibili']){
$_SESSION['errors'][]=_('Alcuni serial number sono già stati utilizzati!');
return;
}else{
$deletes=$dbo->fetchArray('SELECT id FROM dt_righe_ddt AS t WHERE idgruppo = '.prepare($idgruppo).' AND idddt='.prepare($idddt)." AND serial NOT IN (SELECT serial FROM vw_serials WHERE dir = 'entrata') ORDER BY serial ASC LIMIT ".$new_qta);
}
}else{
$deletes=$dbo->fetchArray('SELECT id FROM dt_righe_ddt AS t WHERE idgruppo = '.prepare($idgruppo).' AND idddt='.prepare($idddt).' ORDER BY serial ASC LIMIT '.$new_qta);
}
foreach((array)$deletesas$delete){
$dbo->query('DELETE FROM dt_righe_ddt WHERE id = '.prepare($delete['id']));
}
}
}
// 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));
$dbo->query('UPDATE or_righe_ordini SET qta_evasa = '.prepare($qta_ordine).' WHERE idordine='.prepare($idordine).' AND idarticolo='.prepare($idarticolo));
$non_rimovibili=$dbo->fetchArray("SELECT COUNT(*) AS non_rimovibili FROM dt_righe_ddt WHERE serial IN (SELECT serial FROM vw_serials WHERE dir = 'entrata') AND idddt=".prepare($id_record))[0]['non_rimovibili'];
if($non_rimovibili!=0){
$_SESSION['errors'][]=_('Alcuni serial number sono già stati utilizzati!');
return;
}
}
// Se ci sono degli articoli collegati
$query='SELECT id, idarticolo FROM dt_righe_ddt WHERE idddt='.prepare($id_record);
// 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
$rs=$dbo->fetchArray('SELECT qta, descrizione, idarticolo, idordine, idiva FROM dt_righe_ddt WHERE idddt='.prepare($id_record));
// 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));
$_SESSION['infos'][]=_('Ddt eliminato!');
break;
case'add_serial':
$idgruppo=$post['idgruppo'];
$serial=$post['serial'];
$q='SELECT * FROM dt_righe_ddt WHERE idddt='.prepare($id_record).' AND idgruppo='.prepare($idgruppo).' ORDER BY id';
$rs=$dbo->fetchArray($q);
foreach($rsas$i=>$r){
$dbo->query('UPDATE dt_righe_ddt SET serial='.prepare($serial[$i]).' WHERE id='.prepare($r['id']));
}
break;
case'update_position':
$start=filter('start');
$end=filter('end');
$id=filter('id');
if($start>$end){
$dbo->query('UPDATE `dt_righe_ddt` SET `order`=`order` + 1 WHERE `order`>='.prepare($end).' AND `order`<'.prepare($start).' AND `idddt`='.prepare($id_record));
$dbo->query('UPDATE `dt_righe_ddt` SET `order`='.prepare($end).' WHERE id='.prepare($id));
}elseif($end!=$start){
$dbo->query('UPDATE `dt_righe_ddt` SET `order`=`order` - 1 WHERE `order`>'.prepare($start).' AND `order`<='.prepare($end).' AND `idddt`='.prepare($id_record));
$dbo->query('UPDATE `dt_righe_ddt` SET `order`='.prepare($end).' WHERE id='.prepare($id));