$query='SELECT *, co_documenti.note, co_documenti.idpagamento, co_documenti.id AS iddocumento, co_statidocumento.descrizione AS `stato`, co_tipidocumento.descrizione AS `descrizione_tipodoc` FROM ((co_documenti LEFT OUTER JOIN co_statidocumento ON co_documenti.idstatodocumento=co_statidocumento.id) INNER JOIN an_anagrafiche ON co_documenti.idanagrafica=an_anagrafiche.idanagrafica) INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id WHERE co_documenti.id='.prepare($iddocumento);
// Se non va a buon fine qualcosa elimino il mastrino per non lasciare incongruenze nel db
if(!$all_ok){
$_SESSION['errors'][]=_("Errore durante l'aggiunta del movimento!");
$dbo->query('DELETE FROM co_movimenti WHERE idmastrino='.prepare($idmastrino));
}else{
$_SESSION['infos'][]=_('Movimento aggiunto in prima nota!');
// Verifico se la fattura è stata pagata tutta, così imposto lo stato a "Pagato"
$query='SELECT SUM(pagato) AS tot_pagato, SUM(da_pagare) AS tot_da_pagare FROM co_scadenziario GROUP BY iddocumento HAVING iddocumento='.prepare($iddocumento);
$dbo->query("UPDATE co_documenti SET idstatodocumento=(SELECT id FROM co_statidocumento WHERE descrizione='Pagato') WHERE id=".prepare($iddocumento));
}else{
$dbo->query("UPDATE co_documenti SET idstatodocumento=(SELECT id FROM co_statidocumento WHERE descrizione='Parzialmente pagato') WHERE id=".prepare($iddocumento));
}
// Aggiorno lo stato dei preventivi collegati alla fattura se ce ne sono
$query2='SELECT idpreventivo FROM co_righe_documenti WHERE iddocumento='.prepare($iddocumento).' AND NOT idpreventivo=0 AND idpreventivo IS NOT NULL';
$rs2=$dbo->fetchArray($query2);
for($j=0;$j<sizeof($rs2);++$j){
$dbo->query("UPDATE co_preventivi SET idstato=(SELECT id FROM co_statipreventivi WHERE descrizione='Pagato') WHERE id=".prepare($rs2[$j]['idpreventivo']));
}
// Aggiorno lo stato dei contratti collegati alla fattura se ce ne sono
$query2='SELECT idcontratto FROM co_righe_documenti WHERE iddocumento='.prepare($iddocumento).' AND NOT idcontratto=0 AND idcontratto IS NOT NULL';
$rs2=$dbo->fetchArray($query2);
for($j=0;$j<sizeof($rs2);++$j){
$dbo->query("UPDATE co_contratti SET idstato=(SELECT id FROM co_staticontratti WHERE descrizione='Pagato') WHERE id=".prepare($rs2[$j]['idcontratto']));
}
// Aggiorno lo stato degli interventi collegati alla fattura se ce ne sono
$query2='SELECT idintervento FROM co_righe_documenti WHERE iddocumento='.prepare($iddocumento).' AND idintervento IS NOT NULL';
$rs2=$dbo->fetchArray($query2);
for($j=0;$j<sizeof($rs2);++$j){
$dbo->query("UPDATE in_interventi SET idstatointervento=(SELECT idstatointervento FROM in_statiintervento WHERE descrizione='Fatturato') WHERE id IN (SELECT idintervento FROM co_preventivi_interventi WHERE idpreventivo=".prepare($rs2[$j]['idpreventivo']).')');
}
}
break;
case'editriga':
$all_ok=true;
$iddocumento=post('iddocumento');
$data=$post['data'];
$idmastrino=post('idmastrino');
$descrizione=post('descrizione');
// Leggo il totale di questo mastrino
$query='SELECT totale FROM co_movimenti WHERE idmastrino='.prepare($idmastrino).' AND primanota=1 AND totale>0';
$query='SELECT *, co_documenti.note, co_documenti.idpagamento, co_documenti.id AS iddocumento, co_statidocumento.descrizione AS `stato`, co_tipidocumento.descrizione AS `descrizione_tipodoc` FROM ((co_documenti LEFT OUTER JOIN co_statidocumento ON co_documenti.idstatodocumento=co_statidocumento.id) INNER JOIN an_anagrafiche ON co_documenti.idanagrafica=an_anagrafiche.idanagrafica) INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id WHERE co_documenti.id='.prepare($iddocumento);
$dbo->query("UPDATE co_documenti SET idstatodocumento=(SELECT id FROM co_statidocumento WHERE descrizione='Emessa') WHERE id=".prepare($iddocumento));
// Aggiorno lo stato dei preventivi collegati alla fattura se ce ne sono
$query3='SELECT idpreventivo FROM co_righe_documenti WHERE iddocumento='.prepare($iddocumento).' AND NOT idpreventivo=0 AND idpreventivo IS NOT NULL';
$rs3=$dbo->fetchArray($query3);
for($j=0;$j<sizeof($rs3);++$j){
$dbo->query("UPDATE co_preventivi SET idstato=(SELECT id FROM co_statipreventivi WHERE descrizione='In attesa di pagamento') WHERE id=".prepare($rs3[$j]['idpreventivo']));
// Aggiorno anche lo stato degli interventi collegati ai preventivi
$dbo->query("UPDATE in_interventi SET idstatointervento=(SELECT idstatointervento FROM in_statiintervento WHERE descrizione='Completato') WHERE id IN(SELECT idintervento FROM co_preventivi_interventi WHERE idpreventivo=".prepare($rs3[$j]['idpreventivo']).')');
}
// Aggiorno lo stato degli interventi collegati alla fattura se ce ne sono
$query3='SELECT idintervento FROM co_righe_documenti WHERE iddocumento='.prepare($iddocumento).' AND idintervento IS NOT NULL';
$rs3=$dbo->fetchArray($query3);
for($j=0;$j<sizeof($rs3);++$j){
$dbo->query("UPDATE in_interventi SET idstatointervento=(SELECT idstatointervento FROM in_statiintervento WHERE descrizione='Fatturato') WHERE id=".prepare($rs3[$j]['idintervento']));
}
}
}
}
}
}
// Se non va a buon fine qualcosa elimino il mastrino per non lasciare incongruenze nel db
if(!$all_ok){
$_SESSION['errors'][]=_("Errore durante l'aggiunta del movimento!");
$dbo->query('DELETE FROM co_movimenti WHERE idmastrino='.prepare($idmastrino));
}else{
$_SESSION['infos'][]=_('Movimento modificato in prima nota!');
// Verifico se la fattura è stata pagata, così imposto lo stato a "Pagato"
$query='SELECT SUM(pagato) AS tot_pagato, SUM(da_pagare) AS tot_da_pagare FROM co_scadenziario GROUP BY iddocumento HAVING iddocumento='.prepare($iddocumento);
$rs=$dbo->fetchArray($query);
// Aggiorno lo stato della fattura
$dbo->query("UPDATE co_documenti SET idstatodocumento=(SELECT id FROM co_statidocumento WHERE descrizione='Pagato') WHERE id=".prepare($iddocumento));
// Aggiorno lo stato dei preventivi collegati alla fattura se ce ne sono
$query2='SELECT idpreventivo FROM co_righe_documenti WHERE iddocumento='.prepare($iddocumento).' AND NOT idpreventivo=0 AND idpreventivo IS NOT NULL';
$rs2=$dbo->fetchArray($query2);
for($j=0;$j<sizeof($rs2);++$j){
$dbo->query("UPDATE co_preventivi SET idstato=(SELECT id FROM co_statipreventivi WHERE descrizione='Pagato') WHERE id=".prepare($rs2[$j]['idpreventivo']));
// Aggiorno anche lo stato degli interventi collegati ai preventivi
$dbo->query("UPDATE in_interventi SET idstatointervento=(SELECT idstatointervento FROM in_statiintervento WHERE descrizione='Fatturato') WHERE id IN (SELECT idintervento FROM co_preventivi_interventi WHERE idpreventivo=".prepare($rs2[$j]['idpreventivo']).')');
}
// Aggiorno lo stato degli interventi collegati alla fattura se ce ne sono
$query2='SELECT idintervento FROM co_righe_documenti WHERE iddocumento='.prepare($iddocumento).' AND idintervento IS NOT NULL';
$rs2=$dbo->fetchArray($query2);
for($j=0;$j<sizeof($rs2);++$j){
$dbo->query("UPDATE in_interventi SET idstatointervento=(SELECT idstatointervento FROM in_statiintervento WHERE descrizione='Fatturato') WHERE id IN (SELECT idintervento FROM co_preventivi_interventi WHERE idpreventivo=".prepare($rs2[$j]['idpreventivo']).')');
}
}
break;
// eliminazione movimento prima nota
case'delete':
$idmastrino=post('idmastrino');
if($idmastrino!=''){
// Leggo l'id della fattura per azzerare i valori di preventivi e interventi collegati
$query='SELECT iddocumento FROM co_movimenti WHERE idmastrino='.prepare($idmastrino).' AND primanota=1';
$rs=$dbo->fetchArray($query);
$iddocumento=$rs[0]['iddocumento'];
// Leggo il totale dal mastrino e lo rimuovo dal totale pagato dello scadenziario, ciclando tra le rate
$query='SELECT totale FROM co_movimenti WHERE idmastrino='.prepare($idmastrino).' AND primanota=1 AND totale>0';
$rs=$dbo->fetchArray($query);
$totale_mastrino=0.00;
for($i=0;$i<sizeof($rs);++$i){
$totale_mastrino+=$rs[0]['totale'];
}
$rimanente=$totale_mastrino;
$query='SELECT * FROM co_scadenziario WHERE iddocumento='.prepare($iddocumento).' ORDER BY scadenza DESC';
$rs=$dbo->fetchArray($query);
for($i=0;$i<sizeof($rs);++$i){
if(abs($rimanente)>0){
if(abs($rs[$i]['da_pagare'])>=abs($rimanente)){
$query2='SELECT pagato FROM co_scadenziario WHERE id='.prepare($rs[$i]['id']);
// Se resta ancora un po' di pagato cambio solo l'importo...
if($new_value>0){
$dbo->query('UPDATE co_scadenziario SET pagato='.prepare($new_value).' WHERE id='.prepare($rs[$i]['id']));
}
// ...se l'importo è a zero, azzero anche la data di pagamento
else{
$dbo->query('UPDATE co_scadenziario SET pagato='.prepare($new_value).", data_pagamento='0000-00-00' WHERE id=".prepare($rs[$i]['id']));
}
$rimanente=0;
}else{
$dbo->query("UPDATE co_scadenziario SET pagato='0' WHERE id=".prepare($rs[$i]['id']));
$rimanente-=abs($rs[$i]['da_pagare']);
}
}
}
// Eliminazione prima nota
$dbo->query('DELETE FROM co_movimenti WHERE idmastrino='.prepare($idmastrino).' AND primanota=1');
// Aggiorno lo stato della fattura a "Emessa"
$dbo->query("UPDATE co_documenti SET idstatodocumento=(SELECT id FROM co_statidocumento WHERE descrizione='Emessa') WHERE id=".prepare($iddocumento));
// Aggiorno lo stato dei preventivi collegati alla fattura se ce ne sono
$query='SELECT idpreventivo FROM co_righe_documenti WHERE iddocumento='.prepare($iddocumento).' AND NOT idpreventivo=0 AND idpreventivo IS NOT NULL';
$rs=$dbo->fetchArray($query);
for($i=0;$i<sizeof($rs);++$i){
$dbo->query("UPDATE co_preventivi SET idstato=(SELECT id FROM co_statipreventivi WHERE descrizione='In attesa di pagamento') WHERE id=".prepare($rs[$i]['idpreventivo']));
// Aggiorno anche lo stato degli interventi collegati ai preventivi
$dbo->query("UPDATE in_interventi SET idstatointervento=(SELECT idstatointervento FROM in_statiintervento WHERE descrizione='Completato') WHERE idpreventivo=".prepare($rs[$i]['idpreventivo']));
}
// Aggiorno lo stato degli interventi collegati alla fattura se ce ne sono
$query='SELECT idintervento FROM co_righe_documenti WHERE iddocumento='.prepare($iddocumento).' AND NOT idintervento IS NOT NULL';
$rs=$dbo->fetchArray($query);
for($i=0;$i<sizeof($rs);++$i){
$dbo->query("UPDATE in_interventi SET idstatointervento=(SELECT idstatointervento FROM in_statiintervento WHERE descrizione='Fatturato') WHERE id=".prepare($rs[$i]['idintervento']));