form('op', 'post') ){ case "add": if( $modules_info[$module_name]["permessi"] == 'rw' ){ $all_ok = true; $iddocumento = $html->form('iddocumento', 'post'); $data = saveDate( $_POST['data'] ); $idmastrino = get_new_idmastrino(); $descrizione = $html->form('descrizione', 'post'); //Lettura info fattura $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=\"$iddocumento\""; $rs = $dbo->fetchArray( $query ); $ragione_sociale = $rs[0]['ragione_sociale']; $data_documento = $rs[0]['data']; $totale = 0; $totale_pagato = 0; for($i=0; $iquery($query) ){ $all_ok = false; } else{ $all_ok = true; $id_record = $dbo->last_inserted_id(); } } } //Inserisco nello scadenziario il totale pagato if( $totale_pagato!=0 ){ aggiorna_scadenziario( $iddocumento, abs($totale_pagato), $data ); } //Se non va a buon fine qualcosa elimino il mastrino per non lasciare incongruenze nel db if( !$all_ok ){ array_push( $_SESSION['errors'], "Errore durante l'aggiunta del movimento!" ); $dbo->query("DELETE FROM co_movimenti WHERE idmastrino='$idmastrino'"); } else{ array_push( $_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='$iddocumento'"; $rs = $dbo->fetchArray($query); //Aggiorno lo stato della fattura if( $rs[0]['tot_pagato'] == $rs[0]['tot_da_pagare'] ){ $dbo->query("UPDATE co_documenti SET idstatodocumento=(SELECT id FROM co_statidocumento WHERE descrizione='Pagato') WHERE id='$iddocumento'"); } else{ $dbo->query("UPDATE co_documenti SET idstatodocumento=(SELECT id FROM co_statidocumento WHERE descrizione='Parzialmente pagato') WHERE id='$iddocumento'"); } //Aggiorno lo stato dei preventivi collegati alla fattura se ce ne sono $query2 = "SELECT idpreventivo FROM co_righe_documenti WHERE iddocumento='$iddocumento' AND NOT idpreventivo=0 AND idpreventivo IS NOT NULL"; $rs2 = $dbo->fetchArray($query2); for( $j=0; $jquery("UPDATE co_preventivi SET idstato=(SELECT id FROM co_statipreventivi WHERE descrizione='Pagato') WHERE id='".$rs2[$j]['idpreventivo']."'"); } //Aggiorno lo stato dei contratti collegati alla fattura se ce ne sono $query2 = "SELECT idcontratto FROM co_righe_documenti WHERE iddocumento='$iddocumento' AND NOT idcontratto=0 AND idcontratto IS NOT NULL"; $rs2 = $dbo->fetchArray($query2); for( $j=0; $jquery("UPDATE co_contratti SET idstato=(SELECT id FROM co_staticontratti WHERE descrizione='Pagato') WHERE id='".$rs2[$j]['idcontratto']."'"); } //Aggiorno lo stato degli interventi collegati alla fattura se ce ne sono $query2 = "SELECT idintervento FROM co_righe_documenti WHERE iddocumento='$iddocumento' AND NOT idintervento=0 AND idintervento IS NOT NULL"; $rs2 = $dbo->fetchArray($query2); for( $j=0; $jquery("UPDATE in_interventi SET idstatointervento=(SELECT idstatointervento FROM in_statiintervento WHERE descrizione='Fatturato') WHERE idintervento IN (SELECT idintervento FROM co_preventivi_interventi WHERE idpreventivo='".$rs2[$j]['idpreventivo']."')"); } } } break; case "editriga": if( $modules_info[$module_name]["permessi"] == 'rw' ){ $all_ok = true; $iddocumento = $html->form('iddocumento', 'post'); $data = saveDate( $_POST['data'] ); $idmastrino = $html->form('idmastrino', 'post'); $descrizione = $html->form('descrizione', 'post'); //Leggo il totale di questo mastrino $query = "SELECT totale FROM co_movimenti WHERE idmastrino='$idmastrino' AND primanota=1 AND totale>0"; $rs = $dbo->fetchArray($query); $tot_mastrino = 0.00; for( $i=0; $iquery( "DELETE FROM co_movimenti WHERE idmastrino='$idmastrino' AND primanota=1" ); //Lettura info fattura $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=\"$iddocumento\""; $rs = $dbo->fetchArray( $query ); $ragione_sociale = $rs[0]['ragione_sociale']; $dir = $rs[0]['dir']; for($i=0; $iquery($query) ){ $all_ok = false; } else{ $id_record = $dbo->last_inserted_id(); /* Devo azzerare il totale pagato nello scadenziario perché verrà ricalcolato. Se c'erano delle rate già pagate ne devo tener conto per rigenerare il totale pagato */ //Tengo conto dei valori negativi per gli acquisti e dei valori positivi per le vendite if( ($dir=='uscita' && $totale<0) || ($dir=='entrata' && $totale>0) ){ //Azzero lo scadenziario e lo ricalcolo $dbo->query("UPDATE co_scadenziario SET pagato=0, data_pagamento='0000-00-00' WHERE iddocumento='$iddocumento'"); //Ricalcolo lo scadenziario per il solo nuovo importo aggiorna_scadenziario( $iddocumento, $totale, $data ); //Se il totale pagato non è il totale da pagare rimetto la fattura in stato "Emessa" $query2 = "SELECT SUM(pagato) AS tot_pagato, SUM(da_pagare) AS tot_da_pagare FROM co_scadenziario WHERE iddocumento='$iddocumento'"; $rs2 = $dbo->fetchArray($query2); //Aggiorno lo stato della fattura a "Emessa" if( abs($rs2[0]['tot_pagato'])query("UPDATE co_documenti SET idstatodocumento=(SELECT id FROM co_statidocumento WHERE descrizione='Emessa') WHERE id='$iddocumento'"); //Aggiorno lo stato dei preventivi collegati alla fattura se ce ne sono $query3 = "SELECT idpreventivo FROM co_righe_documenti WHERE iddocumento='$iddocumento' AND NOT idpreventivo=0 AND idpreventivo IS NOT NULL"; $rs3 = $dbo->fetchArray($query3); for( $j=0; $jquery("UPDATE co_preventivi SET idstato=(SELECT id FROM co_statipreventivi WHERE descrizione='In attesa di pagamento') WHERE id='".$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 idintervento IN(SELECT idintervento FROM co_preventivi_interventi WHERE idpreventivo='".$rs3[$j]['idpreventivo']."')"); } //Aggiorno lo stato degli interventi collegati alla fattura se ce ne sono $query3 = "SELECT idintervento FROM co_righe_documenti WHERE iddocumento='$iddocumento' AND NOT idintervento=0 AND idintervento IS NOT NULL"; $rs3 = $dbo->fetchArray($query3); for( $j=0; $jquery("UPDATE in_interventi SET idstatointervento=(SELECT idstatointervento FROM in_statiintervento WHERE descrizione='Fatturato') WHERE idintervento='".$rs3[$j]['idintervento']."'"); } } } } } } //Se non va a buon fine qualcosa elimino il mastrino per non lasciare incongruenze nel db if( !$all_ok ){ array_push( $_SESSION['errors'], "Errore durante l'aggiunta del movimento!" ); $dbo->query("DELETE FROM co_movimenti WHERE idmastrino='$idmastrino'"); } else{ array_push( $_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='$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='$iddocumento'"); //Aggiorno lo stato dei preventivi collegati alla fattura se ce ne sono $query2 = "SELECT idpreventivo FROM co_righe_documenti WHERE iddocumento='$iddocumento' AND NOT idpreventivo=0 AND idpreventivo IS NOT NULL"; $rs2 = $dbo->fetchArray($query2); for( $j=0; $jquery("UPDATE co_preventivi SET idstato=(SELECT id FROM co_statipreventivi WHERE descrizione='Pagato') WHERE id='".$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 idintervento IN (SELECT idintervento FROM co_preventivi_interventi WHERE idpreventivo='".$rs2[$j]['idpreventivo']."')"); } //Aggiorno lo stato degli interventi collegati alla fattura se ce ne sono $query2 = "SELECT idintervento FROM co_righe_documenti WHERE iddocumento='$iddocumento' AND NOT idintervento=0 AND idintervento IS NOT NULL"; $rs2 = $dbo->fetchArray($query2); for( $j=0; $jquery("UPDATE in_interventi SET idstatointervento=(SELECT idstatointervento FROM in_statiintervento WHERE descrizione='Fatturato') WHERE idintervento IN (SELECT idintervento FROM co_preventivi_interventi WHERE idpreventivo='".$rs2[$j]['idpreventivo']."')"); } } } break; //eliminazione movimento prima nota case "delete": if( $modules_info[$module_name]["permessi"] == 'rw' ){ $idmastrino = $html->form('idmastrino', 'post'); if( $idmastrino != '' ){ //Leggo l'id della fattura per azzerare i valori di preventivi e interventi collegati $query = "SELECT iddocumento FROM co_movimenti WHERE idmastrino='$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='$idmastrino' AND primanota=1 AND totale>0"; $rs = $dbo->fetchArray($query); $totale_mastrino = 0.00; for( $i=0; $ifetchArray($query); for( $i=0; $i0 ){ if( abs($rs[$i]['da_pagare'])>=abs($rimanente) ){ $query2 = "SELECT pagato FROM co_scadenziario WHERE id='".$rs[$i]['id']."'"; $rs2 = $dbo->fetchArray($query2); $pagato = $rs2[0]['pagato']; ( $pagato<0 ) ? $sign=-1 : $sign=1; $new_value = ((abs($pagato)-abs($rimanente))*$sign); //Se resta ancora un po' di pagato cambio solo l'importo... if( $new_value>0 ){ $dbo->query("UPDATE co_scadenziario SET pagato='".$new_value."' WHERE id='".$rs[$i]['id']."'"); } //...se l'importo è a zero, azzero anche la data di pagamento else{ $dbo->query("UPDATE co_scadenziario SET pagato='".$new_value."', data_pagamento='0000-00-00' WHERE id='".$rs[$i]['id']."'"); } $rimanente = 0; } else{ $dbo->query("UPDATE co_scadenziario SET pagato='0' WHERE id='".$rs[$i]['id']."'"); $rimanente -= abs($rs[$i]['da_pagare']); } } } //Eliminazione prima nota $dbo->query( "DELETE FROM co_movimenti WHERE idmastrino='$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='$iddocumento'"); array_push( $_SESSION['infos'], "Movimento eliminato!" ); } } break; } ?>