query("INSERT INTO zz_log_documenti( iddocumento, idutente,data_log,username,descrizione ) VALUES( \"".$iddocumento."\", \"".$_SESSION['idutente']."\",NOW(),\"".$_SESSION['username']."\",\"".$descrizione."\" )"); } function get_new_numerofattura_multi( $data , $tipodoc ){ global $dbo; global $dir; $id_gruppodoc=get_var_tipodoc($tipodoc,'id_gruppo_tipologia'); if( $id_gruppodoc=='0' ) $query = "SELECT IFNULL(MAX(numero),'0') AS max_numerofattura FROM co_documenti WHERE DATE_FORMAT( data, '%Y' ) = '".date("Y", strtotime($data))."' AND idtipodocumento IN(SELECT id FROM co_tipidocumento WHERE dir='".$dir."' and idtipodocumento='".$tipodoc."' ) ORDER BY CAST(numero AS UNSIGNED) DESC LIMIT 0,1"; else $query = "SELECT IFNULL(MAX(numero),'0') AS max_numerofattura FROM co_documenti WHERE DATE_FORMAT( data, '%Y' ) = '".date("Y", strtotime($data))."' and id_gruppo_tipologia='".$id_gruppodoc."' AND idtipodocumento IN(SELECT id FROM co_tipidocumento WHERE dir='".$dir."' ) ORDER BY CAST(numero AS UNSIGNED) DESC LIMIT 0,1"; $rs = $dbo->fetchArray($query); $numero = $rs[0]['max_numerofattura']+1; return $numero; } function get_new_numerosecondariofattura_multi( $data , $tipodoc ){ global $dbo; global $dir; global $idtipodocumento; $id_gruppodoc=get_var_tipodoc($tipodoc,'id_gruppo_tipologia'); if( $id_gruppodoc=='0' ) $query = "SELECT numero_esterno FROM co_documenti WHERE DATE_FORMAT( data, '%Y' ) = '".date("Y", strtotime($data) )."' AND idtipodocumento IN(SELECT id FROM co_tipidocumento WHERE dir='".$dir."' and idtipodocumento='".$tipodoc."' ) ORDER BY CAST(numero_esterno AS UNSIGNED) DESC LIMIT 0,1"; else $query = "SELECT numero_esterno FROM co_documenti WHERE DATE_FORMAT( data, '%Y' ) = '".date("Y", strtotime($data) )."' and id_gruppo_tipologia='".$id_gruppodoc."' AND idtipodocumento IN(SELECT id FROM co_tipidocumento WHERE dir='".$dir."' ) ORDER BY CAST(numero_esterno AS UNSIGNED) DESC LIMIT 0,1"; $rs = $dbo->fetchArray($query); $numero_secondario = $rs[0]['numero_esterno']; //Calcolo il numero secondario se stabilito dalle impostazioni e se documento di vendita $formato_numero_secondario=get_var_tipodoc($tipodoc,'var_formato_num'); if( $numero_secondario=='' ) $numero_secondario = $formato_numero_secondario; // if( $formato_numero_secondario!='' && $dir=='entrata' ) if( $formato_numero_secondario!='' ) $numero_esterno = get_next_code( $numero_secondario, 1, $formato_numero_secondario ); else $numero_esterno = ''; return $numero_esterno; } /** * Funzione per generare un nuovo numero per la fattura */ function get_new_numerofattura( $data ){ global $dbo; global $dir; $query = "SELECT IFNULL(MAX(numero),'0') AS max_numerofattura FROM co_documenti WHERE DATE_FORMAT( data, '%Y' ) = '".date("Y", strtotime($data))."' AND idtipodocumento IN(SELECT id FROM co_tipidocumento WHERE dir='".$dir."') ORDER BY CAST(numero AS UNSIGNED) DESC LIMIT 0,1"; $rs = $dbo->fetchArray($query); $numero = $rs[0]['max_numerofattura']+1; return $numero; } /** * Funzione per calcolare il numero secondario successivo utilizzando la maschera dalle impostazioni */ function get_new_numerosecondariofattura( $data ){ global $dbo; global $dir; global $idtipodocumento; //DATE_FORMAT( data, '%Y' ) = '".date("Y", strtotime($data))."' $query = "SELECT numero_esterno FROM co_documenti WHERE DATE_FORMAT( data, '%Y' ) = '".date("Y", strtotime ( '+3 month' , strtotime ( $data) ))."' AND idtipodocumento IN(SELECT id FROM co_tipidocumento WHERE dir='".$dir."') ORDER BY CAST(numero_esterno AS UNSIGNED) DESC LIMIT 0,1"; $rs = $dbo->fetchArray($query); $numero_secondario = $rs[0]['numero_esterno']; //Calcolo il numero secondario se stabilito dalle impostazioni e se documento di vendita $formato_numero_secondario = get_var("Formato numero secondario fattura"); if( $numero_secondario=='' ) $numero_secondario = $formato_numero_secondario; // if( $formato_numero_secondario!='' && $dir=='entrata' ) if( $formato_numero_secondario!='' ) $numero_esterno = get_next_code( $numero_secondario, 1, $formato_numero_secondario ); else $numero_esterno = ''; return $numero_esterno; } /** * Elimina una scadenza in base al codice documento */ function elimina_scadenza( $iddocumento ){ global $dbo; $query2 = "DELETE FROM co_scadenziario WHERE iddocumento='".$iddocumento."'"; $dbo->query($query2); } /** * Funzione per ricalcolare lo scadenziario di una determinata fattura * $iddocumento string E' l'id del documento di cui ricalcolare lo scadenziario * $pagamento string Nome del tipo di pagamento. Se è vuoto lo leggo da co_pagamenti_documenti, perché significa che devo solo aggiornare gli importi */ function aggiungi_scadenza( $iddocumento, $pagamento='' ){ global $dbo; $totale_da_pagare = 0.00; $totale_fattura = get_totale_fattura($iddocumento); $netto_fattura = get_netto_fattura($iddocumento); $imponibile_fattura = get_imponibile_fattura($iddocumento); $totale_iva = abs($totale_fattura)-abs($imponibile_fattura); //Lettura data di emissione fattura $query3 = "SELECT split_p,ritenutaacconto, data , bollo , idbanca_vendite FROM co_documenti WHERE id='".$iddocumento."'"; $rs = $dbo->fetchArray($query3); $data = $rs[0]['data']; $ritenutaacconto = $rs[0]['ritenutaacconto']; $idbanca = $rs[0]['idbanca_vendite']; $split_p = $rs[0]['split_p']; $query4 = "SELECT nome FROM co_banche WHERE id='".$idbanca."'"; $rs_banca = $dbo->fetchArray($query4); $nome_banca = $rs_banca[0]['nome']; // tolgo il bollo dalla scadenza // $netto_fattura=$netto_fattura - $rs[0]['bollo']; if ( $split_p == '1' ) $netto_fattura=abs($netto_fattura)-abs($totale_iva); //Verifico se la fattura è di acquisto o di vendita per scegliere che segno mettere nel totale $query2 = "SELECT dir FROM co_documenti INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id WHERE co_documenti.id='$iddocumento'"; $rs2 = $dbo->fetchArray($query2); $dir = $rs2[0]['dir']; /* Inserisco la nuova scadenza (anche più di una riga per pagamenti multipli */ //Se il pagamento non è specificato lo leggo dal documento if( $pagamento=='' ){ $query = "SELECT descrizione FROM co_pagamenti WHERE id=(SELECT idpagamento FROM co_documenti WHERE id='".$iddocumento."')"; $rs = $dbo->fetchArray($query); $pagamento = $rs[0]['descrizione']; } $query4 = "SELECT * FROM co_pagamenti WHERE descrizione=\"".$pagamento."\""; $rs = $dbo->fetchArray($query4); for( $i=0; $imodify('last day of next month'); } // Ultimo del mese più X giorni $giorni = -$rs[$i]['giorno'] - 1; if ($giorni > 0) { $date->modify('+'.($giorni).' day'); } else { $date->modify('last day of this month'); } $scadenza = $date->format('Y-m-d'); } // Giorno preciso del mese else { $scadenza = date('Y-m-'.$rs[$i]['giorno'], strtotime($data.' +'.$rs[$i]['num_giorni'].' day')); } //All'ultimo ciclo imposto come cifra da pagare il totale della fattura meno gli importi già inseriti in scadenziario per evitare di inserire cifre arrotondate "male" if( $i==(sizeof($rs)-1) ){ $da_pagare = number_format($netto_fattura,2,".","")-number_format($totale_da_pagare,2,".",""); } //Totale da pagare (totale x percentuale di pagamento nei casi pagamenti multipli) else{ $da_pagare = number_format($netto_fattura/100*$rs[$i]['prc'], 2, ".", ""); } $totale_da_pagare += abs($da_pagare); if( $dir=='uscita' ) $da_pagare = -$da_pagare; $dbo->query("INSERT INTO co_scadenziario(iddocumento, banca,idbanca , data_emissione, scadenza, da_pagare, pagato, tipo) VALUES('$iddocumento','$nome_banca','$idbanca', '$data', '$scadenza', '$da_pagare', '0', 'fattura')"); } //Se c'è una ritenuta d'acconto, la aggiungo allo scadenzario if( $dir == "uscita" && $ritenutaacconto > 0 ){ $dbo->query("INSERT INTO co_scadenziario(iddocumento, banca,idbanca , data_emissione, scadenza, da_pagare, pagato, tipo) VALUES('$iddocumento', '$nome_banca','$idbanca', '$data', '".date("Y-m", strtotime($data." +1 month"))."-15', '".-$ritenutaacconto."', '0', 'ritenutaacconto')"); } return true; } function aggiungi_scadenza_OLD( $iddocumento, $pagamento='' ){ global $dbo; $totale_da_pagare = 0.00; $totale_fattura = get_totale_fattura($iddocumento); $netto_fattura = get_netto_fattura($iddocumento); $imponibile_fattura = get_imponibile_fattura($iddocumento); $totale_iva = abs($totale_fattura)-abs($imponibile_fattura); //Lettura data di emissione fattura $query3 = "SELECT ritenutaacconto, data , bollo , idbanca_vendite FROM co_documenti WHERE id='".$iddocumento."'"; $rs = $dbo->fetchArray($query3); $data = $rs[0]['data']; $ritenutaacconto = $rs[0]['ritenutaacconto']; $idbanca = $rs[0]['idbanca_vendite']; $query4 = "SELECT nome FROM co_banche WHERE id='".$idbanca."'"; $rs_banca = $dbo->fetchArray($query4); $nome_banca = $rs_banca[0]['nome']; // tolgo il bollo dalla scadenza // $netto_fattura=$netto_fattura - $rs[0]['bollo']; //Verifico se la fattura è di acquisto o di vendita per scegliere che segno mettere nel totale $query2 = "SELECT dir FROM co_documenti INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id WHERE co_documenti.id='$iddocumento'"; $rs2 = $dbo->fetchArray($query2); $dir = $rs2[0]['dir']; /* Inserisco la nuova scadenza (anche più di una riga per pagamenti multipli */ //Se il pagamento non è specificato lo leggo dal documento if( $pagamento=='' ){ $query = "SELECT descrizione FROM co_pagamenti WHERE id=(SELECT idpagamento FROM co_documenti WHERE id='".$iddocumento."')"; $rs = $dbo->fetchArray($query); $pagamento = $rs[0]['descrizione']; } $query4 = "SELECT * FROM co_pagamenti WHERE descrizione=\"".$pagamento."\""; $rs = $dbo->fetchArray($query4); for( $i=0; $iquery("INSERT INTO co_scadenziario(iddocumento, banca,idbanca , data_emissione, scadenza, da_pagare, pagato, tipo) VALUES('$iddocumento','$nome_banca','$idbanca', '$data', '$scadenza', '$da_pagare', '0', 'fattura')"); } //Se c'è una ritenuta d'acconto, la aggiungo allo scadenzario if( $dir == "uscita" && $ritenutaacconto > 0 ){ $dbo->query("INSERT INTO co_scadenziario(iddocumento, banca,idbanca , data_emissione, scadenza, da_pagare, pagato, tipo) VALUES('$iddocumento', '$nome_banca','$idbanca', '$data', '".date("Y-m", strtotime($data." +1 month"))."-15', '".-$ritenutaacconto."', '0', 'ritenutaacconto')"); } return true; } /** * Funzione per aggiornare lo stato dei pagamenti nello scadenziario * $iddocumento int ID della fattura * $totale_pagato float Totale importo pagato * $data_pagamento datetime Data in cui avviene il pagamento (yyyy-mm-dd) */ function aggiorna_scadenziario( $iddocumento, $totale_pagato, $data_pagamento ){ global $dbo; //Lettura righe scadenziario $query = "SELECT * FROM co_scadenziario WHERE iddocumento='$iddocumento' AND ABS(pagato) < ABS(da_pagare) ORDER BY scadenza ASC"; $rs = $dbo->fetchArray($query); $netto_fattura = get_netto_fattura( $iddocumento ); $rimanente = $netto_fattura; $rimanente_da_pagare = abs($rs[0]['pagato']) + $totale_pagato; //Verifico se la fattura è di acquisto o di vendita per scegliere che segno mettere nel totale $query2 = "SELECT dir FROM co_documenti INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id WHERE co_documenti.id='$iddocumento'"; $rs2 = $dbo->fetchArray($query2); $dir = $rs2[0]['dir']; //Ciclo tra le rate dei pagamenti per inserire su `pagato` l'importo effettivamente pagato. //Nel caso il pagamento superi la rata, devo distribuirlo sulle rate successive for( $i=0; $i 0 ){ //...riempio il pagato della rata con il totale della rata stessa se ho ricevuto un pagamento superiore alla rata stessa if( abs($rimanente_da_pagare) >= abs($rs[$i]['da_pagare']) ){ $pagato = abs($rs[$i]['da_pagare']); $rimanente_da_pagare -= abs($rs[$i]['da_pagare']); } else{ //Se si inserisce una somma maggiore al dovuto, tengo valido il rimanente per saldare il tutto... if( abs($rimanente_da_pagare) > abs($rs[$i]['da_pagare']) ){ $pagato = abs($rs[$i]['da_pagare']); $rimanente_da_pagare -= abs($rs[$i]['da_pagare']); } //...altrimenti aggiungo l'importo pagato else{ $pagato = abs($rimanente_da_pagare); $rimanente_da_pagare -= abs($rs[$i]['da_pagare']) - abs($rs[$i]['pagato']); } } if( $dir=='uscita' ){ $rimanente_da_pagare = -$rimanente_da_pagare; } if( $pagato > 0 ){ if( $dir == 'uscita' ){ $dbo->query("UPDATE co_scadenziario SET pagato='".(-$pagato)."', data_pagamento='".$data_pagamento."' WHERE id='".$rs[$i]['id']."'"); } else { $dbo->query("UPDATE co_scadenziario SET pagato='".$pagato."', data_pagamento='".$data_pagamento."' WHERE id='".$rs[$i]['id']."'"); } } } } } /** * Elimina i movimenti collegati ad una fattura */ function elimina_movimento( $iddocumento, $anche_prima_nota=0 ){ global $dbo; $query2 = "DELETE FROM co_movimenti WHERE iddocumento='".$iddocumento."' AND primanota=$anche_prima_nota"; $dbo->query($query2); } /** * Funzione per aggiungere la fattura in prima nota * $iddocumento string E' l'id del documento da collegare alla prima nota * $dir string Direzione dell'importo (entrata, uscita) * $primanota boolean Indica se il movimento è un movimento di prima nota o un movimento normale (di default movimento normale) */ function aggiungi_movimento( $iddocumento, $dir, $primanota=0 ){ global $dbo; //Totale marca da bollo, inps, ritenuta, idagente $query = "SELECT data, bollo, ritenutaacconto, rivalsainps FROM co_documenti WHERE id='".$iddocumento."'"; $rs = $dbo->fetchArray($query); $totale_bolli = $rs[0]['bollo']; $totale_ritenutaacconto = $rs[0]['ritenutaacconto']; $totale_rivalsainps = $rs[0]['rivalsainps']; $data_documento = $rs[0]['data']; $netto_fattura = get_netto_fattura($iddocumento); $totale_fattura = get_totale_fattura($iddocumento); $imponibile_fattura = get_imponibile_fattura($iddocumento); //Leggo l'iva predefinita per calcolare l'iva aggiuntiva sulla rivalsa inps $qi = "SELECT percentuale FROM co_iva WHERE id='".get_var("Iva predefinita")."'"; $rsi = $dbo->fetchArray($qi); $iva_rivalsainps = $totale_rivalsainps/100*$rsi[0]['percentuale']; //Lettura iva indetraibile fattura $query = "SELECT SUM(iva_indetraibile) AS iva_indetraibile FROM co_righe_documenti GROUP BY iddocumento HAVING iddocumento='$iddocumento'"; $rs = $dbo->fetchArray($query); $iva_indetraibile_fattura = $rs[0]['iva_indetraibile']; //Lettura iva delle righe in fattura $query = "SELECT SUM(iva) AS iva FROM co_righe_documenti GROUP BY iddocumento HAVING iddocumento='$iddocumento'"; $rs = $dbo->fetchArray($query); $iva_fattura = $rs[0]['iva'] + $iva_rivalsainps - $iva_indetraibile_fattura; //Imposto i segni + e - in base se la fattura è di acquisto o vendita if( $dir=='uscita' ){ $segno_mov1_cliente = -1; $segno_mov2_ricavivendite = 1; $segno_mov3_iva = 1; $segno_mov4_inps = 1; $segno_mov5_ritenutaacconto = -1; $segno_mov6_bollo = 1; //Lettura conto fornitore $query = "SELECT idconto_fornitore FROM an_anagrafiche INNER JOIN co_documenti ON an_anagrafiche.idanagrafica=co_documenti.idanagrafica WHERE co_documenti.id='".$iddocumento."'"; $rs = $dbo->fetchArray($query); $idconto_controparte = $rs[0]['idconto_fornitore']; if( $idconto_controparte == '' ){ $query = "SELECT id FROM co_pianodeiconti3 WHERE descrizione='Riepilogativo fornitori'"; $rs = $dbo->fetchArray($query); $idconto_controparte = $rs[0]['idconto_fornitore']; } } else{ $segno_mov1_cliente = 1; $segno_mov2_ricavivendite = -1; $segno_mov3_iva = -1; $segno_mov4_inps = -1; $segno_mov5_ritenutaacconto = 1; $segno_mov6_bollo = -1; //Lettura conto cliente $query = "SELECT idconto_cliente FROM an_anagrafiche INNER JOIN co_documenti ON an_anagrafiche.idanagrafica=co_documenti.idanagrafica WHERE co_documenti.id='".$iddocumento."'"; $rs = $dbo->fetchArray($query); $idconto_controparte = $rs[0]['idconto_cliente']; if( $idconto_controparte == '' ){ $query = "SELECT id FROM co_pianodeiconti3 WHERE descrizione='Riepilogativo clienti'"; $rs = $dbo->fetchArray($query); $idconto_controparte = $rs[0]['idconto_cliente']; } } //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 ); $n = sizeof($rs); $data = $rs[0]['data']; $idanagrafica = $rs[0]['idanagrafica']; $ragione_sociale = $rs[0]['ragione_sociale']; $stato = $rs[0]['stato']; $idconto = $rs[0]['idconto']; //Scrivo il movimento solo se è stato selezionato un conto if( $idconto!='' ){ $idmastrino = get_new_idmastrino(); //Prendo il numero doc. esterno se c'è, altrimenti quello normale if( $rs[0]['numero_esterno']!='' ) $numero = $rs[0]['numero_esterno']; else $numero = $rs[0]['numero']; $descrizione = $rs[0]['descrizione_tipodoc']." numero $numero"; /* Il mastrino si apre con almeno 3 righe di solito (esempio fattura di vendita): 1) dare imponibile+iva al conto cliente 2) avere imponibile sul conto dei ricavi 3) avere iva sul conto dell'iva a credito (ed eventuale iva indetraibile sul rispettivo conto) aggiuntivo: 4) eventuale rivalsa inps 5) eventuale ritenuta d'acconto 6) eventuale marca da bollo */ //1) Aggiungo la riga del conto cliente $query2 = "INSERT INTO co_movimenti( idmastrino, data, data_documento, iddocumento, idanagrafica, descrizione, idconto, totale, primanota ) VALUES ( \"$idmastrino\", \"$data\", \"$data_documento\", \"$iddocumento\", \"\", \"$descrizione del ".date("d/m/Y", strtotime($data))." ($ragione_sociale)\", \"".$idconto_controparte."\", \"".(($totale_fattura+$totale_bolli)*$segno_mov1_cliente)."\", $primanota )"; $dbo->query($query2); //2) Aggiungo il totale sul conto dei ricavi/spese scelto //Lettura descrizione conto ricavi/spese $query = "SELECT descrizione FROM co_pianodeiconti3 WHERE id='$idconto'"; $rs = $dbo->fetchArray($query); $descrizione_conto = $rs[0]['descrizione']; //se non specificato l'idconto per la riga seleziono quello della fattura $query = "SELECT id, idconto AS idconto_rd, IF(idconto!=0, idconto, '".$idconto."' ) AS idconto, SUM(subtotale-sconto) AS imponibile FROM co_righe_documenti WHERE iddocumento='$iddocumento' GROUP BY idconto"; $rs = $dbo->fetchArray($query); for( $i=0; $iquery($query2); /* se idconto della riga è 0 lo allineo con l'idconto della fattura*/ if ($rs[$i]['idconto_rd'] == 0){ $queryrd = "UPDATE co_righe_documenti SET idconto = ".$rs[$i]['idconto']." WHERE id = ".$rs[$i]['id']." "; $dbo->query($queryrd); } } //3) Aggiungo il totale sul conto dell'iva //Lettura id conto iva if( $iva_fattura!=0 ){ ( $dir=='entrata' ) ? $descrizione_conto_iva="Iva su vendite" : $descrizione_conto_iva="Iva su acquisti"; $query = "SELECT id, descrizione FROM co_pianodeiconti3 WHERE descrizione='$descrizione_conto_iva'"; $rs = $dbo->fetchArray($query); $idconto_iva = $rs[0]['id']; $descrizione_conto_iva = $rs[0]['descrizione']; $query2 = "INSERT INTO co_movimenti( idmastrino, data, data_documento, iddocumento, idanagrafica, descrizione, idconto, totale, primanota ) VALUES ( \"$idmastrino\", \"$data\", \"$data_documento\", \"$iddocumento\", \"\", \"$descrizione del ".date("d/m/Y", strtotime($data))." ($ragione_sociale)\", \"$idconto_iva\", \"".($iva_fattura*$segno_mov3_iva)."\", $primanota )"; $dbo->query($query2); } //Lettura id conto iva indetraibile if( $iva_indetraibile_fattura!=0 ){ $descrizione_conto_iva2="Iva indetraibile"; $query = "SELECT id, descrizione FROM co_pianodeiconti3 WHERE descrizione='$descrizione_conto_iva2'"; $rs = $dbo->fetchArray($query); $idconto_iva2 = $rs[0]['id']; $descrizione_conto_iva2 = $rs[0]['descrizione']; $query2 = "INSERT INTO co_movimenti( idmastrino, data, data_documento, iddocumento, idanagrafica, descrizione, idconto, totale, primanota ) VALUES ( \"$idmastrino\", \"$data\", \"$data_documento\", \"$iddocumento\", \"\", \"$descrizione del ".date("d/m/Y", strtotime($data))." ($ragione_sociale)\", \"$idconto_iva2\", \"".($iva_indetraibile_fattura*$segno_mov3_iva)."\", $primanota )"; $dbo->query($query2); } //4) Aggiungo la rivalsa INPS se c'è //Lettura id conto inps if( $totale_rivalsainps!=0 ){ $query = "SELECT id, descrizione FROM co_pianodeiconti3 WHERE descrizione='Erario c/INPS'"; $rs = $dbo->fetchArray($query); $idconto_inps = $rs[0]['id']; $descrizione_conto_inps = $rs[0]['descrizione']; $query2 = "INSERT INTO co_movimenti( idmastrino, data, data_documento, iddocumento, idanagrafica, descrizione, idconto, totale, primanota ) VALUES( \"$idmastrino\", \"$data\", \"$data_documento\", \"$iddocumento\", \"\", \"$descrizione del ".date("d/m/Y", strtotime($data))." ($ragione_sociale)\", \"$idconto_inps\", \"".($totale_rivalsainps*$segno_mov4_inps)."\", $primanota )"; $dbo->query($query2); } //5) Aggiungo la ritenuta d'acconto se c'è //Lettura id conto ritenuta e la storno subito if( $totale_ritenutaacconto!=0 ){ $query = "SELECT id, descrizione FROM co_pianodeiconti3 WHERE descrizione=\"Erario c/ritenute d'acconto\""; $rs = $dbo->fetchArray($query); $idconto_ritenutaacconto = $rs[0]['id']; $descrizione_conto_ritenutaacconto = $rs[0]['descrizione']; //DARE nel conto ritenuta $query2 = "INSERT INTO co_movimenti( idmastrino, data, data_documento, iddocumento, idanagrafica, descrizione, idconto, totale, primanota ) VALUES( \"$idmastrino\", \"$data\", \"$data_documento\", \"$iddocumento\", \"\", \"$descrizione del ".date("d/m/Y", strtotime($data))." ($ragione_sociale)\", \"$idconto_ritenutaacconto\", \"".($totale_ritenutaacconto*$segno_mov5_ritenutaacconto)."\", $primanota )"; $dbo->query($query2); //AVERE nel riepilogativo clienti $query2 = "INSERT INTO co_movimenti( idmastrino, data, data_documento, iddocumento, idanagrafica, descrizione, idconto, totale, primanota ) VALUES( \"$idmastrino\", \"$data\", \"$data_documento\", \"$iddocumento\", \"\", \"$descrizione del ".date("d/m/Y", strtotime($data))." ($ragione_sociale)\", \"".$idconto_controparte."\", \"".(($totale_ritenutaacconto*$segno_mov5_ritenutaacconto)*-1)."\", $primanota )"; $dbo->query($query2); } //6) Aggiungo la marca da bollo se c'è //Lettura id conto marca da bollo if( $totale_bolli!=0 ){ $query = "SELECT id, descrizione FROM co_pianodeiconti3 WHERE descrizione=\"Rimborso spese marche da bollo\""; $rs = $dbo->fetchArray($query); $idconto_bolli = $rs[0]['id']; $descrizione_conto_bolli = $rs[0]['descrizione']; $query2 = "INSERT INTO co_movimenti( idmastrino, data, data_documento, iddocumento, idanagrafica, descrizione, idconto, totale, primanota ) VALUES( \"$idmastrino\", \"$data\", \"$data_documento\", \"$iddocumento\", \"\", \"$descrizione del ".date("d/m/Y", strtotime($data))." ($ragione_sociale)\", \"$idconto_bolli\", \"".($totale_bolli*$segno_mov6_bollo)."\", $primanota )"; $dbo->query($query2); } } } /** * Funzione per generare un nuovo codice per il mastrino */ function get_new_idmastrino(){ global $dbo; $query = "SELECT MAX(idmastrino) AS maxidmastrino FROM co_movimenti"; $rs = $dbo->fetchArray($query); return (intval($rs[0]['maxidmastrino'])+1); } /** * Calcolo imponibile fattura (totale_righe - sconto) */ function get_imponibile_fattura($iddocumento){ global $dbo; $query = "SELECT SUM(co_righe_documenti.subtotale - co_righe_documenti.sconto) AS imponibile FROM co_righe_documenti GROUP BY iddocumento HAVING iddocumento='".$iddocumento."'"; $rs = $dbo->fetchArray($query); return $rs[0]['imponibile']; } /** * Calcolo totale fattura (imponibile + iva) */ function get_totale_fattura($iddocumento){ global $dbo; //Sommo l'iva di ogni riga al totale $query = "SELECT SUM(iva) AS iva FROM co_righe_documenti GROUP BY iddocumento HAVING iddocumento='".$iddocumento."'"; $rs = $dbo->fetchArray($query); //Aggiungo la rivalsa inps se c'è $query2 = "SELECT rivalsainps FROM co_documenti WHERE id='".$iddocumento."'"; $rs2 = $dbo->fetchArray($query2); //Leggo l'iva predefinita per calcolare l'iva aggiuntiva sulla rivalsa inps $qi = "SELECT percentuale FROM co_iva WHERE id='".get_var("Iva predefinita")."'"; $rsi = $dbo->fetchArray($qi); $iva_rivalsainps = $rs2[0]['rivalsainps']/100*$rsi[0]['percentuale']; return get_imponibile_fattura($iddocumento) + $rs[0]['iva'] + $iva_rivalsainps + $rs2[0]['rivalsainps']; } /** * Calcolo netto a pagare fattura (totale - ritenute - bolli) */ function get_netto_fattura($iddocumento){ global $dbo; $query = "SELECT ritenutaacconto, bollo FROM co_documenti WHERE id='".$iddocumento."'"; $rs = $dbo->fetchArray($query); return get_totale_fattura($iddocumento)-$rs[0]['ritenutaacconto'] + $rs[0]['bollo']; } /** * Calcolo iva detraibile fattura */ function get_ivadetraibile_fattura($iddocumento){ global $dbo; $query = "SELECT SUM(iva)-SUM(iva_indetraibile) AS iva_detraibile FROM co_righe_documenti GROUP BY iddocumento HAVING iddocumento='".$iddocumento."'"; $rs = $dbo->fetchArray($query); return $rs[0]['iva_detraibile']; } /** * Calcolo iva indetraibile fattura */ function get_ivaindetraibile_fattura($iddocumento){ global $dbo; $query = "SELECT SUM(iva_indetraibile) AS iva_indetraibile FROM co_righe_documenti GROUP BY iddocumento HAVING iddocumento='".$iddocumento."'"; $rs = $dbo->fetchArray($query); return $rs[0]['iva_indetraibile']; } /** * Ricalcola i costi aggiuntivi in fattura (rivalsa inps, ritenuta d'acconto, marca da bollo) * Deve essere eseguito ogni volta che si aggiunge o toglie una riga * $iddocumento int ID della fattura * $idrivalsainps int ID della rivalsa inps da applicare. Se omesso viene utilizzata quella impostata di default * $idritenutaacconto int ID della ritenuta d'acconto da applicare. Se omesso viene utilizzata quella impostata di default * $bolli float Costi aggiuntivi delle marche da bollo. Se omesso verrà usata la cifra predefinita */ function ricalcola_costiagg_fattura( $iddocumento, $idrivalsainps='', $idritenutaacconto='', $bolli='' ){ global $dbo; global $dir; //Se ci sono righe in fattura faccio i conteggi, altrimenti azzero gli sconti e le spese aggiuntive (inps, ritenuta, marche da bollo) $query = "SELECT COUNT(id) AS righe FROM co_righe_documenti WHERE iddocumento='$iddocumento'"; $rs = $dbo->fetchArray($query); if( $rs[0]['righe']>0 ){ $totale_imponibile = get_imponibile_fattura($iddocumento); $totale_fattura = get_totale_fattura($iddocumento); //Leggo gli id dei costi aggiuntivi if( $dir=='uscita' ){ $query2 = "SELECT bollo FROM co_documenti WHERE id='$iddocumento'"; $rs2 = $dbo->fetchArray($query2); $bollo = $rs2[0]['bollo']; } $query = "SELECT SUM(rivalsainps) AS rivalsainps, SUM(ritenutaacconto) AS ritenutaacconto FROM co_righe_documenti GROUP BY iddocumento HAVING iddocumento='".$iddocumento."'"; $rs = $dbo->fetchArray($query); $rivalsainps = $rs[0]['rivalsainps']; $ritenutaacconto = $rs[0]['ritenutaacconto']; if( $dir == "entrata" ){ //Leggo l'iva predefinita per calcolare l'iva aggiuntiva sulla rivalsa inps $qi = "SELECT percentuale FROM co_iva WHERE id='".get_var("Iva predefinita")."'"; $rsi = $dbo->fetchArray($qi); $iva_rivalsainps = $rivalsainps/100*$rsi[0]['percentuale']; } else{ //Leggo l'iva predefinita per calcolare l'iva aggiuntiva sulla rivalsa inps $qi = "SELECT percentuale FROM co_iva WHERE id='".get_var("Iva predefinita")."'"; $rsi = $dbo->fetchArray($qi); $iva_rivalsainps = $rivalsainps/100*$rsi[0]['percentuale']; } //Leggo la ritenuta d'acconto se c'è $totale_fattura = get_totale_fattura($iddocumento); $query = "SELECT percentuale FROM co_ritenutaacconto WHERE id='".$idritenutaacconto."'"; $rs = $dbo->fetchArray($query); $netto_a_pagare = $totale_fattura - $ritenutaacconto; $soglia_minima_marca=get_var_tipodoc2($iddocumento,'ges_marca'); $importo_marca_bollo=get_var_tipodoc2($iddocumento,'marca_bollo'); //Leggo la marca da bollo se c'è e se il netto a pagare supera la soglia $bolli = str_replace( ",", ".", $bolli); $bolli = floatval($bolli); if( $dir=='uscita' ){ if( $bolli!=0.00 ){ $bolli = str_replace( ",", ".", $bolli ); if( abs($bolli)>0 && abs($netto_a_pagare>$soglia_minima_marca) ) $marca_da_bollo = str_replace( ",", ".", $bolli ); else $marca_da_bollo = 0.00; } } else{ $bolli = str_replace( ",", ".", $importo_marca_bollo ); if( abs($bolli)>0 && abs($netto_a_pagare)>abs($soglia_minima_marca) ) $marca_da_bollo = str_replace( ",", ".", $bolli ); else $marca_da_bollo = 0.00; //Se l'importo è negativo può essere una nota di accredito, quindi cambio segno alla marca da bollo if( $netto_a_pagare<0 ) $marca_da_bollo *= -1; } $dbo->query("UPDATE co_documenti SET ritenutaacconto='$ritenutaacconto', rivalsainps='".$rivalsainps."', iva_rivalsainps='".$iva_rivalsainps."', bollo='$marca_da_bollo' WHERE id='$iddocumento'"); } else{ $dbo->query("UPDATE co_documenti SET ritenutaacconto='0', bollo='0', rivalsainps='0', iva_rivalsainps='0' WHERE id='$iddocumento'"); } aggiorna_sconto($iddocumento); } /** * Questa funzione aggiunge un articolo in fattura. E' comoda quando si devono inserire * degli interventi con articoli collegati o preventivi che hanno interventi con articoli collegati! * $iddocumento integer id della fattura * $idarticolo integer id dell'articolo da inserire in fattura * $idiva integer id del codice iva associato all'articolo * $qta float quantità dell'articolo in fattura * $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) */ // function add_articolo_infattura( $iddocumento, $idarticolo, $descrizione, $idiva, $qta, $prezzo, $sconto, $idintervento=0, $lotto='', $serial='', $altro='' , $idconto , $idtiposconto ,$sconto_prc, $sconto_extra,$sconto_extra1){ function add_articolo_infattura( $iddocumento, $idarticolo, $descrizione, $idiva, $qta, $prezzo, $sconto, $idintervento=0, $lotto='', $serial='', $altro='' , $idconto , $idtiposconto ,$sconto_prc, $sconto_extra,$sconto_extra1 , $idmagazzino,$riga_canone,$id_matricola,$per_agente=0){ global $dbo; global $dir; global $idddt; if( $idddt=='' ) $idddt = 0; // cerco dati agente $query = "SELECT idanagrafica , id_contratto FROM co_documenti WHERE id='".$iddocumento."'"; $rs = $dbo->fetchArray($query); $idcontratto=$rs[0]['id_contratto']; $query = "SELECT idagente ,default_ritenuta_acconto , default_rivalsa_inps FROM an_anagrafiche WHERE idanagrafica='".$rs[0]['idanagrafica']."'"; $rs = $dbo->fetchArray($query); $default_ritenuta_acconto = $rs[0]['default_ritenuta_acconto']; $default_rivalsa_inps = $rs[0]['default_rivalsa_inps']; $query = "SELECT * FROM an_anagrafiche WHERE idanagrafica='".$rs[0]['idagente']."'"; $rs_agente = $dbo->fetchArray($query); $perc_agente = $rs_agente[0]['perc_agente']; $perc_netto = $rs_agente[0]['perc_netto']; $perc_iva = $rs_agente[0]['perc_iva']; if ($per_agente != '0' ) { $perc_agente=$per_agente; } //calcolo percentuali agente if($perc_netto =='1'){ $val_agente=($prezzo ) - $sconto ; $val_agente = ($val_agente * $perc_agente)/100; }else{ $val_agente = (($prezzo ) * $perc_agente)/100; } if( $perc_iva =='1'){ $rs2 = $dbo->fetchArray("SELECT * FROM co_iva WHERE id='".$idiva."'"); $agente_iva= ($val_agente/100)*$rs2[0]['percentuale']; $val_agente=$val_agente + $agente_iva ; } $esegue_movimento=get_var_tipodoc2($iddocumento,"mod_mov"); $esegue_giacenza = get_var_tipodoc2($iddocumento,"mod_mag"); $id_magazzino_e = get_var_tipodoc2($iddocumento,"id_magazzino_e"); $id_magazzino_u = get_var_tipodoc2($iddocumento,"id_magazzino_u"); $id_tipo_u = get_var_tipodoc2($iddocumento,"id_tipo_u"); // VERSIONE PRO testo verifica aggiornaemnti prezzi $agg_prezzo_e = get_var_tipodoc2($iddocumento,"agg_prezzo_e"); $agg_prezzo_u = get_var_tipodoc2($iddocumento,"agg_prezzo_u"); $esegue_giacenza_articolo = query_secca("","ges_magazzino","mg_articoli","where id ='".$idarticolo."'"); if ( $esegue_giacenza_articolo == '0' ) $esegue_giacenza="0"; if ( $idmagazzino >= '0' ) $id_magazzino_e=$idmagazzino; $dir = get_var_tipodoc2($iddocumento,"dir"); $query = "SELECT idum , um , id_conto , id_conto_u FROM mg_articoli WHERE id='".$idarticolo."'"; $rs = $dbo->fetchArray($query); $um = $rs[0]['um']; $um = query_secca("","valore","mg_unitamisura","where id ='".$rs[0]['idum']."'"); $idconto = $rs[0]['id_conto']; $idconto_u = $rs[0]['id_conto_u']; $idconto_doc=query_secca("","idconto","co_documenti","where id='".$iddocumento."'"); if ( $idconto == '0' ) $idconto=$idconto_doc; if ( $idconto_u == '0' ) $idconto_u=$idconto_doc; //Lettura iva dell'articolo $rs2 = $dbo->fetchArray("SELECT * FROM co_iva WHERE id='".$idiva."'"); $iva = ($prezzo-$sconto)/100*$rs2[0]['percentuale']; $iva_indetraibile = $iva/100*$rs2[0]['indetraibile']; $desc_iva = $rs2[0]['descrizione']; // $ritenutaacconto="0"; // $rivalsainps="0"; $idritenutaacconto="0"; $idrivalsainps="0"; if( get_var("Percentuale rivalsa INPS") != "" ){ //Calcolo rivalsa inps $idrivalsainps=get_var("Percentuale rivalsa INPS"); $query = "SELECT * FROM co_rivalsainps WHERE id='".$idrivalsainps."'"; $rs = $dbo->fetchArray($query); $rivalsainps = $prezzo * $qta / 100 * $rs[0]['percentuale']; } //Ritenuta d'acconto if( get_var("Percentuale ritenuta d'acconto")!= "" ){ $idritenutaacconto=get_var("Percentuale ritenuta d'acconto"); //Calcolo ritenuta d'acconto $query = "SELECT * FROM co_ritenutaacconto WHERE id='".$idritenutaacconto."'"; $rs = $dbo->fetchArray($query); $ritenutaacconto = (($prezzo*$qta) + $rivalsainps) / 100 * $rs[0]['percentuale']; } /* testo se rivalsa e acconto preimpostati in anagrafica */ if( $default_rivalsa_inps != "0" ){ $idrivalsainps=$default_rivalsa_inps; $query = "SELECT * FROM co_rivalsainps WHERE id='".$default_rivalsa_inps."'"; $rs = $dbo->fetchArray($query); $rivalsainps = $prezzo * $qta / 100 * $rs[0]['percentuale']; } if( $default_ritenuta_acconto != "0" ){ //Calcolo ritenuta d'acconto $idritenutaacconto=$default_ritenuta_acconto; $query = "SELECT * FROM co_ritenutaacconto WHERE id='".$default_ritenuta_acconto."'"; $rs = $dbo->fetchArray($query); $ritenutaacconto = (($prezzo*$qta) + $rivalsainps) / 100 * $rs[0]['percentuale']; } /* Fatture di vendita */ // Info matricola $qana = "SELECT * FROM my_impianti WHERE matricola='".$id_matricola."'"; $rs_matricola = $dbo->fetchArray($qana); $matricola_impianto=$rs_matricola[0]['id']; if( $dir=='entrata' ){ //Verifico se nella fattura c'è già questo articolo $rs = $dbo->fetchArray("SELECT id, idddt, qta FROM co_righe_documenti WHERE idddt=0 and id_riferimento=0 AND idarticolo='".$idarticolo."' AND iddocumento='".$iddocumento."' AND idintervento='".$idintervento."' AND lotto=\"".$lotto."\" AND serial=\"".$serial."\" AND altro=\"".$altro."\" AND sconto=\"".$sconto."\" AND id_magazzino_e=\"".$id_magazzino_e."\""); //Inserisco la riga in fattura: se nella fattura c'è già questo articolo incremento la quantità e l'iva... // aggiungo condizione: se un articolo proviene da un ddt aggiungo sempre la riga if( sizeof($rs) > 0 && $rs[0]['qta'] >= 0 && $idddt==0 ){ // $dbo->query("UPDATE co_righe_documenti SET qta=qta+".$qta.", subtotale='".$prezzo."', iva=iva+".$iva.", iva_indetraibile=iva_indetraibile+".$iva_indetraibile." WHERE id='".$rs[0]['id']."'"); $qta_new=$qta + $rs[0]['qta']; $prezzo=$prezzo * $qta_new; $dbo->query("UPDATE co_righe_documenti SET qta=qta+".$qta.", subtotale='".$prezzo."', iva=iva+".$iva.", iva_indetraibile=iva_indetraibile+".$iva_indetraibile." WHERE id='".$rs[0]['id']."'"); $idriga = $rs[0]['id']; } //...altrimenti inserisco la scorta nella fattura da zero else{ $dbo->query("INSERT INTO co_righe_documenti( id_impianto , matricola_impianto , iddocumento, idcontratto, idarticolo, idintervento, idiva, desc_iva, iva, iva_indetraibile, descrizione, subtotale, sconto, um, qta, serial, idconto,tipo_sconto,sconto_primo,sconto_extra , sconto_extra1,idrivalsainps, rivalsainps, idritenutaacconto, ritenutaacconto,importo_agente,importo_iva_agente,perc_agente,id_magazzino_e,riga_canone) VALUES ( '".$matricola_impianto."','".$id_matricola."','".$iddocumento."', '".$idcontratto."', '".$idarticolo."', '".$idintervento."', \"".$idiva."\", \"".$desc_iva."\", '".$iva."', '".$iva_indetraibile."', \"".$descrizione."\", '".$prezzo."', '".$sconto."', '".$um."', '".$qta."', \"".$serial."\", \"".$idconto."\", \"".$idtiposconto."\", \"".$sconto_prc."\",\"".$sconto_extra."\",\"".$sconto_extra1."\", \"".$idrivalsainps."\",\"".$rivalsainps."\",\"".$idritenutaacconto."\",\"".$ritenutaacconto."\",\"".$val_agente."\",\"".$agente_iva."\",\"".$perc_agente."\",\"".$id_magazzino_e."\",\"".$riga_canone."\" )"); $idriga = $dbo->last_inserted_id(); } if( $esegue_giacenza== 1 ) { if( $id_magazzino_e == 0 ) { $tabella=" mg_articoli "; $where =" WHERE id='".$idarticolo."'"; } else{ $tabella=" mg_articoli_magazzini "; $where =" WHERE idarticolo='".$idarticolo."' and idmagazzino='".$id_magazzino_e."' "; } $dbo->query( "UPDATE ".$tabella." SET qta=qta-".$qta.$where ); } // testo se devo fare movimenti su altri magazzini if( $id_magazzino_u != 0 ) { ( $id_tipo_u == '1' ) ? $sign='-' : $sign='+'; $tabella=" mg_articoli_magazzini "; $where =" WHERE idarticolo='".$idarticolo."' and idmagazzino='".$id_magazzino_u."' "; $rs_test = $dbo->fetchArray("SELECT id FROM mg_articoli_magazzini WHERE idarticolo='".$idarticolo."' AND idmagazzino='".$id_magazzino_u."'"); if( sizeof($rs_test) > 0 ){ $dbo->query( "UPDATE ".$tabella." SET qta=qta-".$old_qta.$sign.$qta.$where ); } else { $dbo->query("INSERT INTO mg_articoli_magazzini( idarticolo, idmagazzino, qta ) VALUES ( '".$idarticolo."', '".$id_magazzino_u."', '".$qta."' )"); } } if( $agg_prezzo_e == 1 ) { // aggiornaemnto prezzo di aquisto $dbo->query( "UPDATE mg_articoli SET prezzo_acquisto=".$prezzo." WHERE id='".$idarticolo."'"); } if( $agg_prezzo_u == 1 ) { // aggiornaemnto prezzo di vendita $dbo->query( "UPDATE mg_articoli SET prezzo_vendita=".$prezzo." WHERE id='".$idarticolo."'"); } if( $esegue_movimento== 1 ) add_movimento_magazzino( $idarticolo, -$qta, '', '0', '0', $iddocumento, '0' ); } /* Fatture di acquisto */ else if( $dir=='uscita' ){ //Verifico se nella fattura c'è già questo articolo $rs = $dbo->fetchArray("SELECT id, qta FROM co_righe_documenti WHERE idddt=0 AND idarticolo='".$idarticolo."' AND iddocumento='".$iddocumento."' AND idintervento='".$idintervento."' AND lotto=\"".$lotto."\" AND serial=\"".$serial."\" AND altro=\"".$altro."\" AND sconto=\"".$sconto."\""); //Inserisco la riga in fattura: se nella fattura c'è già questo articolo incremento la quantità e l'iva... // aggiungo condizione: se un articolo proviene da un ddt aggiungo sempre la riga if( sizeof($rs) > 0 && $rs[0]['qta'] >= 0 && $idddt==0 ){ $qta_new=$qta + $rs[0]['qta']; $prezzo=$prezzo * $qta_new; $dbo->query("UPDATE co_righe_documenti SET qta=qta+".$qta.", subtotale='".$prezzo."', iva=iva+".$iva.", iva_indetraibile=iva_indetraibile+".$iva_indetraibile." WHERE id='".$rs[0]['id']."'"); $idriga = $rs[0]['id']; } //...altrimenti inserisco la scorta nella fattura da zero else{ $dbo->query("INSERT INTO co_righe_documenti( iddocumento, idarticolo, idintervento, desc_iva,idiva, iva, iva_indetraibile, descrizione, subtotale, sconto, um, qta, serial,idconto,tipo_sconto,sconto_primo,sconto_extra,sconto_extra1 ) VALUES ( '".$iddocumento."', '".$idarticolo."', '".$idintervento."', \"".$desc_iva."\",\"".$idiva."\", '".$iva."', '".$iva_indetraibile."', \"".$descrizione."\", '".$prezzo."', '".$sconto."', '".$um."', '".$qta."', \"".$serial."\" , \"".$idconto_u."\", \"".$idtiposconto."\", \"".$sconto_prc."\",\"".$sconto_extra."\",\"".$sconto_extra1."\" )"); $idriga = $dbo->last_inserted_id(); } if( $esegue_giacenza== 1 ) { if( $id_magazzino_e == 0 ) { $tabella=" mg_articoli "; $where =" WHERE id='".$idarticolo."'"; } else{ $tabella=" mg_articoli_magazzini "; $where =" WHERE idarticolo='".$idarticolo."' and idmagazzino='".$id_magazzino_e."' "; } $dbo->query( "UPDATE ".$tabella." SET qta=qta+".$qta.$where ); } // testo se devo fare movimenti su altri magazzini if( $id_magazzino_u != 0 ) { ( $id_tipo_u == '1' ) ? $sign='-' : $sign='+'; $tabella=" mg_articoli_magazzini "; $where =" WHERE idarticolo='".$idarticolo."' and idmagazzino='".$id_magazzino_u."' "; $rs_test = $dbo->fetchArray("SELECT id FROM mg_articoli_magazzini WHERE idarticolo='".$idarticolo."' AND idmagazzino='".$id_magazzino_u."'"); if( sizeof($rs_test) > 0 ){ $dbo->query( "UPDATE ".$tabella." SET qta=qta-".$old_qta.$sign.$qta.$where ); } else { $dbo->query("INSERT INTO mg_articoli_magazzini( idarticolo, idmagazzino, qta ) VALUES ( '".$idarticolo."', '".$id_magazzino_u."', '".$qta."' )"); } } if( $agg_prezzo_e == 1 ) { // aggiornaemnto prezzo di aquisto $dbo->query( "UPDATE mg_articoli SET prezzo_acquisto=".$prezzo." WHERE id='".$idarticolo."'"); } if( $agg_prezzo_u == 1 ) { // aggiornaemnto prezzo di vendita $dbo->query( "UPDATE mg_articoli SET prezzo_vendita=".$prezzo." WHERE id='".$idarticolo."'"); } if( $esegue_movimento== 1 ) add_movimento_magazzino( $idarticolo, $qta, '', '0', '0', $iddocumento, '0' ); } // log anagrafiche add_storico_doc($iddocumento,"Aggiunto articolo ".$descrizione); //Inserisco il riferimento del ddt alla riga $dbo->query( "UPDATE co_righe_documenti SET idddt='".$idddt."' WHERE id='".$idriga."'" ); //Inserisco idorine alla riga // $dbo->query( "UPDATE co_righe_documenti SET ordine='".$idriga."' WHERE id='".$idriga."'" ); return $idriga; } /** * Questa funzione aggiunge un articolo in fattura. E' comoda quando si devono inserire - NON MODIFICA LA QTA SE ARTICOLO GIA PRESENTE * degli interventi con articoli collegati o preventivi che hanno interventi con articoli collegati! * $iddocumento integer id della fattura * $idarticolo integer id dell'articolo da inserire in fattura * $idiva integer id del codice iva associato all'articolo * $qta float quantità dell'articolo in fattura * $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) */ function add_articolo_infattura2( $iddocumento, $idarticolo, $descrizione, $idiva, $qta, $prezzo, $sconto, $idintervento=0, $lotto='', $serial='', $altro='' , $idconto , $idtiposconto ,$sconto_prc, $sconto_extra,$sconto_extra1 , $idmagazzino,$riga_canone , $id_matricola){ global $dbo; global $dir; global $idddt; if( $idddt=='' ) $idddt = 0; // cerco dati agente $query = "SELECT idanagrafica , id_contratto FROM co_documenti WHERE id='".$iddocumento."'"; $rs = $dbo->fetchArray($query); $idcontratto=$rs[0]['id_contratto']; $query = "SELECT idagente ,default_ritenuta_acconto , default_rivalsa_inps FROM an_anagrafiche WHERE idanagrafica='".$rs[0]['idanagrafica']."'"; $rs = $dbo->fetchArray($query); $default_ritenuta_acconto = $rs[0]['default_ritenuta_acconto']; $default_rivalsa_inps = $rs[0]['default_rivalsa_inps']; $query = "SELECT * FROM an_anagrafiche WHERE idanagrafica='".$rs[0]['idagente']."'"; $rs_agente = $dbo->fetchArray($query); $perc_agente = $rs_agente[0]['perc_agente']; $perc_netto = $rs_agente[0]['perc_netto']; $perc_iva = $rs_agente[0]['perc_iva']; //calcolo percentuali agente if($perc_netto =='1'){ $val_agente=($prezzo ) - $sconto ; $val_agente = ($val_agente * $perc_agente)/100; }else{ $val_agente = (($prezzo ) * $perc_agente)/100; } if( $perc_iva =='1'){ $rs2 = $dbo->fetchArray("SELECT * FROM co_iva WHERE id='".$idiva."'"); $agente_iva= ($val_agente/100)*$rs2[0]['percentuale']; $val_agente=$val_agente + $agente_iva ; } $esegue_movimento=get_var_tipodoc2($iddocumento,"mod_mov"); $esegue_giacenza = get_var_tipodoc2($iddocumento,"mod_mag"); $id_magazzino_e = get_var_tipodoc2($iddocumento,"id_magazzino_e"); $id_magazzino_u = get_var_tipodoc2($iddocumento,"id_magazzino_u"); $id_tipo_u = get_var_tipodoc2($iddocumento,"id_tipo_u"); if ( $idmagazzino >= '0' ) $id_magazzino_e=$idmagazzino; $dir = get_var_tipodoc2($iddocumento,"dir"); $query = "SELECT um , id_conto , id_conto_u FROM mg_articoli WHERE id='".$idarticolo."'"; $rs = $dbo->fetchArray($query); $um = $rs[0]['um']; $idconto = $rs[0]['id_conto']; $idconto_u = $rs[0]['id_conto_u']; $idconto_doc=query_secca("","idconto","co_documenti","where id='".$iddocumento."'"); if ( $idconto == '0' ) $idconto=$idconto_doc; if ( $idconto_u == '0' ) $idconto_u=$idconto_doc; //Lettura iva dell'articolo $rs2 = $dbo->fetchArray("SELECT * FROM co_iva WHERE id='".$idiva."'"); $iva = ($prezzo-$sconto)/100*$rs2[0]['percentuale']; $iva_indetraibile = $iva/100*$rs2[0]['indetraibile']; $desc_iva = $rs2[0]['descrizione']; // $ritenutaacconto="0"; // $rivalsainps="0"; $idritenutaacconto="0"; $idrivalsainps="0"; if( get_var("Percentuale rivalsa INPS") != "" ){ //Calcolo rivalsa inps $idrivalsainps=get_var("Percentuale rivalsa INPS"); $query = "SELECT * FROM co_rivalsainps WHERE id='".$idrivalsainps."'"; $rs = $dbo->fetchArray($query); $rivalsainps = $prezzo * $qta / 100 * $rs[0]['percentuale']; } //Ritenuta d'acconto if( get_var("Percentuale ritenuta d'acconto")!= "" ){ $idritenutaacconto=get_var("Percentuale ritenuta d'acconto"); //Calcolo ritenuta d'acconto $query = "SELECT * FROM co_ritenutaacconto WHERE id='".$idritenutaacconto."'"; $rs = $dbo->fetchArray($query); $ritenutaacconto = (($prezzo*$qta) + $rivalsainps) / 100 * $rs[0]['percentuale']; } if( $default_rivalsa_inps != "0" ){ $idrivalsainps=$default_rivalsa_inps; $query = "SELECT * FROM co_rivalsainps WHERE id='".$default_rivalsa_inps."'"; $rs = $dbo->fetchArray($query); $rivalsainps = $prezzo * $qta / 100 * $rs[0]['percentuale']; } if( $default_ritenuta_acconto != "0" ){ //Calcolo ritenuta d'acconto $idritenutaacconto=$default_ritenuta_acconto; $query = "SELECT * FROM co_ritenutaacconto WHERE id='".$default_ritenuta_acconto."'"; $rs = $dbo->fetchArray($query); $ritenutaacconto = (($prezzo*$qta) + $rivalsainps) / 100 * $rs[0]['percentuale']; } /* Fatture di vendita */ if( $dir=='entrata' ){ //Verifico se nella fattura c'è già questo articolo $rs = $dbo->fetchArray("SELECT id, idddt, qta FROM co_righe_documenti WHERE idddt=0 and id_riferimento=0 AND idarticolo='".$idarticolo."' AND iddocumento='".$iddocumento."' AND idintervento='".$idintervento."' AND lotto=\"".$lotto."\" AND serial=\"".$serial."\" AND altro=\"".$altro."\" AND sconto=\"".$sconto."\" AND id_magazzino_e=\"".$id_magazzino_e."\""); $dbo->query("INSERT INTO co_righe_documenti( iddocumento, idcontratto, idarticolo, idintervento, idiva, desc_iva, iva, iva_indetraibile, descrizione, subtotale, sconto, um, qta, serial, idconto,tipo_sconto,sconto_primo,sconto_extra , sconto_extra1,idrivalsainps, rivalsainps, idritenutaacconto, ritenutaacconto,importo_agente,importo_iva_agente,perc_agente,id_magazzino_e,riga_canone) VALUES ( '".$iddocumento."', '".$idcontratto."', '".$idarticolo."', '".$idintervento."', \"".$idiva."\", \"".$desc_iva."\", '".$iva."', '".$iva_indetraibile."', \"".$descrizione."\", '".$prezzo."', '".$sconto."', '".$um."', '".$qta."', \"".$serial."\", \"".$idconto."\", \"".$idtiposconto."\", \"".$sconto_prc."\",\"".$sconto_extra."\",\"".$sconto_extra1."\", \"".$idrivalsainps."\",\"".$rivalsainps."\",\"".$idritenutaacconto."\",\"".$ritenutaacconto."\",\"".$val_agente."\",\"".$agente_iva."\",\"".$perc_agente."\",\"".$id_magazzino_e."\",\"".$riga_canone."\" )"); $idriga = $dbo->last_inserted_id(); if( $esegue_giacenza== 1 ) { if( $id_magazzino_e == 0 ) { $tabella=" mg_articoli "; $where =" WHERE id='".$idarticolo."'"; } else{ $tabella=" mg_articoli_magazzini "; $where =" WHERE idarticolo='".$idarticolo."' and idmagazzino='".$id_magazzino_e."' "; } $dbo->query( "UPDATE ".$tabella." SET qta=qta-".$qta.$where ); } // testo se devo fare movimenti su altri magazzini if( $id_magazzino_u != 0 ) { ( $id_tipo_u == '1' ) ? $sign='-' : $sign='+'; $tabella=" mg_articoli_magazzini "; $where =" WHERE idarticolo='".$idarticolo."' and idmagazzino='".$id_magazzino_u."' "; $rs_test = $dbo->fetchArray("SELECT id FROM mg_articoli_magazzini WHERE idarticolo='".$idarticolo."' AND idmagazzino='".$id_magazzino_u."'"); if( sizeof($rs_test) > 0 ){ $dbo->query( "UPDATE ".$tabella." SET qta=qta-".$old_qta.$sign.$qta.$where ); } else { $dbo->query("INSERT INTO mg_articoli_magazzini( idarticolo, idmagazzino, qta ) VALUES ( '".$idarticolo."', '".$id_magazzino_u."', '".$qta."' )"); } } if( $esegue_movimento== 1 ) add_movimento_magazzino( $idarticolo, -$qta, '', '0', '0', $iddocumento, '0' ); } /* Fatture di acquisto */ else if( $dir=='uscita' ){ //Verifico se nella fattura c'è già questo articolo $rs = $dbo->fetchArray("SELECT id, qta FROM co_righe_documenti WHERE idddt=0 AND idarticolo='".$idarticolo."' AND iddocumento='".$iddocumento."' AND idintervento='".$idintervento."' AND lotto=\"".$lotto."\" AND serial=\"".$serial."\" AND altro=\"".$altro."\" AND sconto=\"".$sconto."\""); $dbo->query("INSERT INTO co_righe_documenti( iddocumento, idarticolo, idintervento, desc_iva,idiva, iva, iva_indetraibile, descrizione, subtotale, sconto, um, qta, serial,idconto,tipo_sconto,sconto_primo,sconto_extra,sconto_extra1 ) VALUES ( '".$iddocumento."', '".$idarticolo."', '".$idintervento."', \"".$desc_iva."\",\"".$idiva."\", '".$iva."', '".$iva_indetraibile."', \"".$descrizione."\", '".$prezzo."', '".$sconto."', '".$um."', '".$qta."', \"".$serial."\" , \"".$idconto_u."\", \"".$idtiposconto."\", \"".$sconto_prc."\",\"".$sconto_extra."\",\"".$sconto_extra1."\" )"); $idriga = $dbo->last_inserted_id(); if( $esegue_giacenza== 1 ) { if( $id_magazzino_e == 0 ) { $tabella=" mg_articoli "; $where =" WHERE id='".$idarticolo."'"; } else{ $tabella=" mg_articoli_magazzini "; $where =" WHERE idarticolo='".$idarticolo."' and idmagazzino='".$id_magazzino_e."' "; } $dbo->query( "UPDATE ".$tabella." SET qta=qta+".$qta.$where ); } // testo se devo fare movimenti su altri magazzini if( $id_magazzino_u != 0 ) { ( $id_tipo_u == '1' ) ? $sign='-' : $sign='+'; $tabella=" mg_articoli_magazzini "; $where =" WHERE idarticolo='".$idarticolo."' and idmagazzino='".$id_magazzino_u."' "; $rs_test = $dbo->fetchArray("SELECT id FROM mg_articoli_magazzini WHERE idarticolo='".$idarticolo."' AND idmagazzino='".$id_magazzino_u."'"); if( sizeof($rs_test) > 0 ){ $dbo->query( "UPDATE ".$tabella." SET qta=qta-".$old_qta.$sign.$qta.$where ); } else { $dbo->query("INSERT INTO mg_articoli_magazzini( idarticolo, idmagazzino, qta ) VALUES ( '".$idarticolo."', '".$id_magazzino_u."', '".$qta."' )"); } } if( $esegue_movimento== 1 ) add_movimento_magazzino( $idarticolo, $qta, '', '0', '0', $iddocumento, '0' ); } //Inserisco il riferimento del ddt alla riga $dbo->query( "UPDATE co_righe_documenti SET idddt='".$idddt."' WHERE id='".$idriga."'" ); return $idriga; } /** * Questa funzione rimuove un articolo dalla fattura data e lo riporta in magazzino nel primo lotto libero * a partire dal lotto più vecchio * $idarticolo integer codice dell'articolo da scollegare dalla fattura * $iddocumento integer codice della fattura da cui scollegare l'articlo */ function rimuovi_articolo_dafattura( $idarticolo, $iddocumento, $idrigadocumento ){ global $dbo; global $dir; $esegue_movimento=get_var_tipodoc2($iddocumento,"mod_mov"); $esegue_giacenza = get_var_tipodoc2($iddocumento,"mod_mag"); $dir = get_var_tipodoc2($iddocumento,"dir"); $id_magazzino_e = get_var_tipodoc2($iddocumento,"id_magazzino_e"); $id_magazzino_u = get_var_tipodoc2($iddocumento,"id_magazzino_u"); $id_tipo_u = get_var_tipodoc2($iddocumento,"id_tipo_u"); $idmagazzino=query_secca("","id_magazzino_e","co_righe_documenti","where id ='".$idrigadocumento."'"); $esegue_giacenza_articolo = query_secca("","ges_magazzino","mg_articoli","where id ='".$idarticolo."'"); if ( $esegue_giacenza_articolo == '0' ) $esegue_giacenza="0"; if ( $idmagazzino >= '0' ) $id_magazzino_e=$idmagazzino; //Leggo la quantità di questo articolo in fattura $query = "SELECT qta , qta_evasa , qta_da_transazione , id_riferimento , descrizione , id_riferimento_riga_ordine , idordine FROM co_righe_documenti WHERE id='".$idrigadocumento."'"; $rs = $dbo->fetchArray($query); $qta = $rs[0]['qta']; $qta_evasa = $rs[0]['qta_evasa']; $qta_da_transazione = $rs[0]['qta_da_transazione']; $id_riferimento = $rs[0]['id_riferimento']; $id_riferimento_riga_ordine = $rs[0]['id_riferimento_riga_ordine']; $idordine = $rs[0]['idordine']; $descrizione = $rs[0]['descrizione']; // log anagrafiche add_storico_doc($iddocumento,"Rimozione articolo ".$descrizione); // testo se riga associata da ordine fornitore if( $id_riferimento_riga_ordine > 0 ){ $dbo->query( "UPDATE or_righe_ordini SET qta_evasa=qta_evasa-".$qta." WHERE id=\"".$id_riferimento_riga_ordine."\"" ); // testo righe evasione dell'ordine $rs_testostato = $dbo->fetchArray("SELECT * FROM or_righe_ordini WHERE qta <> qta_evasa and idordine='".$idordine."'"); if( sizeof($rs_testostato) > 0 ){ $dbo->query( "UPDATE or_ordini SET idstatoordine = 3 where id='".$idordine."'"); } else{ $dbo->query( "UPDATE or_ordini SET idstatoordine = 2 where id='".$idordine."'"); } $rs_testostato = $dbo->fetchArray("SELECT * FROM or_righe_ordini WHERE qta_evasa > 0 and idordine='".$idordine."'"); if( sizeof($rs_testostato) > 0 ){ } else{ $dbo->query( "UPDATE or_ordini SET idstatoordine = 1 where id='".$idordine."'"); } } if( $qta > 0 ){ if( $dir=='entrata' ){ if( $esegue_giacenza== 1 ) { if( $id_magazzino_e == 0 ) { $tabella=" mg_articoli "; $where =" WHERE id='".$idarticolo."'"; } else{ $tabella=" mg_articoli_magazzini "; $where =" WHERE idarticolo='".$idarticolo."' and idmagazzino='".$id_magazzino_e."' "; } $dbo->query( "UPDATE ".$tabella." SET qta=qta+".$qta.$where ); } if( $esegue_movimento==1 ) add_movimento_magazzino( $idarticolo, $qta, '', '0', '0', $iddocumento, '0' ); } else{ if( $esegue_giacenza== 1 ) { if( $id_magazzino_e == 0 ) { $tabella=" mg_articoli "; $where =" WHERE id='".$idarticolo."'"; } else{ $tabella=" mg_articoli_magazzini "; $where =" WHERE idarticolo='".$idarticolo."' and idmagazzino='".$id_magazzino_e."' "; } $dbo->query( "UPDATE ".$tabella." SET qta=qta-".$qta.$where ); } if( $esegue_movimento==1 ) add_movimento_magazzino( $idarticolo, $qta, '', '0', '0', $iddocumento, '0' ); } // testo se devo fare movimenti su altri magazzini if( $id_magazzino_u != 0 ) { ( $id_tipo_u == '1' ) ? $sign='+' : $sign='-'; $tabella=" mg_articoli_magazzini "; $where =" WHERE idarticolo='".$idarticolo."' and idmagazzino='".$id_magazzino_u."' "; if( $id_tipo_u == "1" ){ $dbo->query( "UPDATE ".$tabella." SET qta=qta-".$qta.$where ); } else{ $dbo->query( "UPDATE ".$tabella." SET qta=qta+".$qta.$where ); } $dbo->query( $query ); } } if( $id_riferimento > 0 ) $dbo->query("UPDATE co_righe_documenti SET qta_evasa = qta_evasa-".$qta_da_transazione." WHERE id='".$id_riferimento."'"); // Elimino la riga dal documento $dbo->query('DELETE FROM `co_righe_documenti` WHERE id='.prepare($idrigadocumento).' AND iddocumento='.prepare($iddocumento)); //Elimino la riga dal documento $dbo->query("DELETE FROM `co_righe_documenti` WHERE id=\"$idrigadocumento\""); //Elimino i movimenti avvenuti nel magazzino $dbo->query("DELETE FROM `mg_movimenti` WHERE idarticolo=\"$idarticolo\" AND iddocumento=\"".$iddocumento."\""); } function storico_transazioni($iddocumento){ global $dbo; $rw = $dbo->fetchArray( "select * from co_documenti_transazioni where idpadre='".$iddocumento."'"); for($i = 0; $i < sizeof($rw); $i ++) { $sale_id=$rw[$i][idfiglio]; $data_transazione=$rw[$i][data_transazione]; $data_transazione=date("d/m/Y H:i:s", strtotime($data_transazione)); $rw_transazione = $dbo->fetchArray( "select * from co_documenti where id='".$sale_id."' "); $rw_tot = $dbo->fetchArray( "select SUM(subtotale - sconto + iva + rivalsainps - ritenutaacconto) as totale FROM co_righe_documenti where iddocumento = $sale_id "); $customer_name=username_name($_SESSION['idutente'],"username"); $descrizione=get_var_tipodoc2($sale_id,"descrizione"); $num_cod=$rw_transazione[0]['numero_documento']; $date_added=$rw_transazione[0]['data']; list($date,$hora)=explode(" ",$date_added); list($Y,$m,$d)=explode("-",$date); $data=$d."-".$m."-".$Y; $total=$rw_tot[0]['totale'] +$rw_transazione[$i]['bollo'] + $rw_transazione[$i]['iva_rivalsainps'] ; ?> fetchArray($query); $numero = $rs[0]['max_numeroordine']+1; return $numero; } function get_new_numerosecondarioordine( $data ){ global $dbo; global $dir; $query = "SELECT numero_esterno FROM or_ordini WHERE DATE_FORMAT( data, '%Y' ) = '".date("Y", strtotime ( '+3 month' , strtotime ( $data) ))."' ORDER BY CAST(numero_esterno AS UNSIGNED) DESC LIMIT 0,1"; $rs = $dbo->fetchArray($query); $numero_secondario = $rs[0]['numero_esterno']; //Calcolo il numero secondario se stabilito dalle impostazioni e se documento di vendita $formato_numero_secondario = get_var("Formato numero secondario ordine"); if( $numero_secondario=='' ) $numero_secondario = $formato_numero_secondario; if( $formato_numero_secondario!='' ) $numero_esterno = get_next_code( $numero_secondario, 1, $formato_numero_secondario ); else $numero_esterno = ''; return $numero_esterno; } function add_articolo_inordine( $idriferimento_doc, $idriga,$idordine, $idarticolo, $descrizione, $idiva, $qta, $prezzo, $sconto=0, $lotto='', $serial='', $altro='' ){ global $dbo; global $dir; $lotto=""; $serial=""; $altro=""; $query = "SELECT um FROM mg_articoli WHERE id='".$idarticolo."'"; $rs = $dbo->fetchArray($query); $um = $rs[0]['um']; //Lettura iva dell'articolo $rs2 = $dbo->fetchArray("SELECT percentuale, indetraibile FROM co_iva WHERE id='".$idiva."'"); $iva = ($prezzo-$sconto)/100*$rs2[0]['percentuale']; $iva_indetraibile = $iva/100*$rs2[0]['indetraibile']; //Verifico se nell'ordine c'è già questo articolo allo stesso prezzo unitario $rs = $dbo->fetchArray("SELECT id, qta FROM or_righe_ordini WHERE idarticolo='".$idarticolo."' AND idordine='".$idordine."' AND lotto=\"".$lotto."\" AND serial=\"".$serial."\" AND altro=\"".$altro."\" AND sconto=\"".$sconto."\""); //Inserisco la riga nell'ordine: se nell'ordine c'è già questo articolo incremento la quantità e l'iva... // if( sizeof($rs) > 0 ){ // $dbo->query("UPDATE or_righe_ordini SET qta=qta+".$qta.", subtotale=subtotale+".$prezzo.", iva=iva+".$iva.", iva_indetraibile=iva_indetraibile+".$iva_indetraibile." WHERE id='".$rs[0]['id']."'"); // } // //...altrimenti inserisco la scorta nell'ordine da zero // else{ $dbo->query("INSERT INTO or_righe_ordini( idordine, idarticolo, idiva, iva, iva_indetraibile, descrizione, subtotale, sconto, um, qta, lotto, serial, altro , idriga_doc , idriferimento_doc ) VALUES ( '".$idordine."', '".$idarticolo."', '".$idiva."', '".$iva."', '".$iva_indetraibile."', \"".$descrizione."\", '".$prezzo."', \"".$sconto."\", '".$um."', '".$qta."', \"".$lotto."\", \"".$serial."\", \"".$altro."\" , \"".$idriga."\",\"".$idriferimento_doc."\")"); // } } function scadenze($iddocumento){ global $dbo; $year=date('Y'); $month=date('m'); $rw = $dbo->fetchArray( "SELECT * , co_scadenziario.id as id_scad , co_tipidocumento.descrizione as des_doc FROM (co_scadenziario INNER JOIN (((co_documenti INNER JOIN an_anagrafiche ON co_documenti.idanagrafica=an_anagrafiche.idanagrafica) INNER JOIN co_pagamenti ON co_documenti.idpagamento=co_pagamenti.id) INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id) ON co_scadenziario.iddocumento=co_documenti.id) INNER JOIN co_statidocumento ON co_documenti.idstatodocumento=co_statidocumento.id HAVING 1=1 and co_documenti.id='".$iddocumento."' ORDER BY `scadenza` ASC"); for($i = 0; $i < sizeof($rw); $i ++) { $sale_id=$rw[$i][id_scad]; $sale_number=$rw[$i]['numero']; $idanagrafica=$rw[$i]['idanagrafica']; $customer_name=$rw[$i]['ragione_sociale']; $descrizione=$rw[$i]['des_doc']; $date_added=$rw[$i]['scadenza']; $date_pag=$rw[$i]['data_pagamento']; list($date,$hora)=explode(" ",$date_added); list($Y,$m,$d)=explode("-",$date); $data=$d."-".$m."-".$Y; $total=$rw[$i]['da_pagare'] ; $pagato=$rw[$i]['pagato'] ; ?> fetchArray("SELECT * FROM co_documenti WHERE id=\"".$id_record."\""); // assegno iddocumento differito if ( $sta_sucessivo != '0' ){ $dbo->query( "UPDATE co_documenti SET id_differito='".$id_record."' , id_statoprecedente = idstatodocumento , idstatodocumento='".$sta_sucessivo."' WHERE id='".$iddocumento_padre."'" ); } else{ $dbo->query( "UPDATE co_documenti SET id_differito='".$id_record."' WHERE id='".$iddocumento_padre."'" ); } //inserimento righe $rs = $dbo->fetchArray("SELECT * FROM co_righe_documenti WHERE iddocumento=\"".$iddocumento_padre."\""); for( $i=0; $iquery( "UPDATE co_righe_documenti SET id_riferimento='".$rs[$i]['id']."' , idritenutaacconto='".$rs[$i]['idritenutaacconto']."' , idrivalsainps='".$rs[$i]['idrivalsainps']."' , rivalsainps='".$riv."' WHERE id='".$idriga."'" ); // aggiorno qta evasa nel documento padre $dbo->query( "UPDATE co_righe_documenti SET qta_evasa='".$rs[$i]['qta']."' WHERE id=\"".$rs[$i]['id']."\"" ); } $tab_transazione=" co_documenti_transazioni "; $query="Insert into ".$tab_transazione." (idpadre,idfiglio,data_transazione,idutente) values (\"".$iddocumento_padre."\", \"".$id_record."\",NOW(), '".$_SESSION['idutente']."')"; $dbo->query($query); //Ricalcolo inps, ritenuta e bollo (se la fattura non è stata pagata) if( $dir=='entrata' ){ ricalcola_costiagg_fattura( $id_record ); } else{ ricalcola_costiagg_fattura( $id_record, $rs_ori[0]['idrivalsainps'], $rs_ori[0]['idritenutaacconto'], $rs_ori[0]['bollo'] ); } } } function doc_duplica( $id_record,$idtipodocumento,$sta_sucessivo ){ global $dbo; if( $id_record ){ $rs = $dbo->fetchArray("SELECT data FROM co_documenti WHERE id=\"".$id_record."\""); $data = $rs[0]['data']; $id_doc_padre=$id_record; // ricerca se la numerazione e' progressiva o propria $query = "SELECT mod_num , dir , idconto , idpagamento , sta_apertura FROM co_tipidocumento WHERE id='".$idtipodocumento."'"; $rs_parametri = $dbo->fetchArray($query); $numerazione_progressiva = $rs_parametri[0]['mod_num']; $dir = $rs_parametri[0]['dir']; $idconto = $rs_parametri[0]['idconto']; $idpagamento_new = $rs_parametri[0]['idpagamento']; $idstato = $rs_parametri[0]['sta_apertura']; $suffisso=get_var_tipodoc($idtipodocumento,'txt_suffisso'); $suffisso_anno=get_var_tipodoc($idtipodocumento,'suffisso_anno'); $idstato = get_var_tipodoc($idtipodocumento,'sta_apertura'); $doc_sucessivo_stato_padre = get_var_tipodoc2($id_record,'doc_sucessivo_stato_padre'); if( $numerazione_progressiva==0) $numero = get_new_numerofattura( $data ); if( $numerazione_progressiva==1) $numero=get_new_numerofattura_multi($data,$idtipodocumento); if( $dir=='entrata' ){ if( $numerazione_progressiva==0) $numero_esterno = get_new_numerosecondariofattura( $data,$idtipodocumento ); if( $numerazione_progressiva==1) $numero_esterno = get_new_numerosecondariofattura_multi( $data,$idtipodocumento ); } else{ $numero_esterno = ''; $forza_numerazione=get_var_tipodoc($idtipodocumento,'forza_numerazione'); if( $forza_numerazione =='1' ){ // forzatura numero progressivo if( $numerazione_progressiva==0) $numero_esterno = get_new_numerosecondariofattura( $data,$idtipodocumento ); if( $numerazione_progressiva==1) $numero_esterno = get_new_numerosecondariofattura_multi( $data,$idtipodocumento ); } } if( $sta_sucessivo=='0' ){ $idstatodocumento=$idstato; } else{ $idstatodocumento=$sta_sucessivo; } $numero_documento=$suffisso.$numero_esterno; if( $suffisso_anno==1) $numero_documento = $numero_documento."_".date("Y"); //lettura gruppo $id_gruppodoc=get_var_tipodoc($idtipodocumento,'id_gruppo_tipologia'); //Lettura dati fattura attuale $rs = $dbo->fetchArray("SELECT * FROM co_documenti WHERE id=\"".$id_record."\""); // creo nuova testata documento $dbo->query("INSERT INTO co_documenti( numero_documento,id_gruppo_tipologia,id_doc_padre,numero, numero_esterno, data, idanagrafica, idcausalet, idspedizione, idporto, idaspettobeni, idvettore, n_colli, idsede, idtipodocumento, idstatodocumento, idpagamento, idconto, idrivalsainps, idritenutaacconto, rivalsainps, iva_rivalsainps, ritenutaacconto, bollo, note, note_aggiuntive, buono_ordine , matricola) VALUES( \"".$numero_documento."\",\"".$id_gruppodoc."\",\"".$id_doc_padre."\",\"".$numero."\", \"".$numero_esterno."\", \"".$rs[0]['data']."\", \"".$rs[0]['idanagrafica']."\", \"".$rs[0]['idcausalet']."\", \"".$rs[0]['idspedizione']."\", \"".$rs[0]['idporto']."\", \"".$rs[0]['idaspettobeni']."\", \"".$rs[0]['idvettore']."\", \"".$rs[0]['n_colli']."\", \"".$rs[0]['idsede']."\", \"".$idtipodocumento."\" , \"".$idstatodocumento."\", \"".$rs[0]['idpagamento']."\", \"".$rs[0]['idconto']."\", \"".$rs[0]['idrivalsainps']."\", \"".$rs[0]['idritenutaacconto']."\", \"".$rs[0]['rivalsainps']."\", \"".$rs[0]['iva_rivalsainps']."\", \"".$rs[0]['ritenutaacconto']."\", \"".$rs[0]['bollo']."\", \"".$rs[0]['note']."\", \"".$rs[0]['note_aggiuntive']."\", \"".$rs[0]['buono_ordine']."\" ,\"".$rs[0]['matricola']."\" )"); $iddocumento = $dbo->last_inserted_id(); // inserisco storico transazione $tab_transazione=" co_documenti_transazioni "; $query="Insert into ".$tab_transazione." (idpadre,idfiglio,data_transazione,idutente) values (\"".$id_record."\", \"".$iddocumento."\",NOW(), '".$_SESSION['idutente']."')"; $dbo->query($query); //aggiorno lo stato documento padre if ( $doc_sucessivo_stato_padre != '0' ){ $dbo->query( "UPDATE co_documenti SET id_statoprecedente = idstatodocumento , idstatodocumento='".$doc_sucessivo_stato_padre."' WHERE id='".$id_record."'" ); } //Duplicazione righe $rs = $dbo->fetchArray("SELECT * FROM co_righe_documenti WHERE iddocumento=\"".$id_record."\""); for( $i=0; $iquery( "UPDATE co_righe_documenti SET id_riferimento='".$rs[$i]['id']."' , idritenutaacconto='".$rs[$i]['idritenutaacconto']."' , idrivalsainps='".$rs[$i]['idrivalsainps']."' , rivalsainps='".$riv."' WHERE id='".$idriga."'" ); // aggiorno qta evasa nel documento padre $dbo->query( "UPDATE co_righe_documenti SET qta_evasa='".$rs[$i]['qta']."' WHERE id=\"".$rs[$i]['id']."\"" ); } //Ricalcolo inps, ritenuta e bollo (se la fattura non è stata pagata) if( $dir=='entrata' ){ ricalcola_costiagg_fattura( $iddocumento ); } else{ ricalcola_costiagg_fattura( $iddocumento, $rs[0]['idrivalsainps'], $rs[0]['idritenutaacconto'], $rs[0]['bollo'] ); } // $id_record = $iddocumento; return $iddocumento; } } function inserisci_myimpianti( $id_record , $matricola ){ global $dbo; global $dir; $dbo->query( "DELETE FROM my_impianti_righe WHERE iddocumento='$id_record'" ); $rs = $dbo->fetchArray("SELECT id FROM my_impianti WHERE matricola=\"".$matricola."\""); $id_myimpianto= $rs[0]['id']; $rs = $dbo->fetchArray("SELECT co_righe_documenti.idarticolo , descrizione , mg_prodotti.serial as n_seriale , qta ,id_impianto FROM co_righe_documenti left join mg_prodotti on co_righe_documenti.id = mg_prodotti.id_riga_documento WHERE co_righe_documenti.iddocumento=\"".$id_record."\""); for( $i=0; $iquery("INSERT INTO my_impianti_righe( iddocumento , d_seriale,n_seriale,matricola, idarticolo, descrizione , qta ) VALUES ( '".$id_record."', '','','".$id_myimpianto."', '".$idarticolo."', \"".$descrizione."\", '".$qta."' )"); } else{ $dbo->query("INSERT INTO my_impianti_righe( iddocumento , d_seriale,n_seriale,matricola, idarticolo, descrizione , qta ) VALUES ( '".$id_record."', '".$d_seriale."','".$seriale."','".$id_myimpianto."', '".$idarticolo."', \"".$descrizione."\", '1' )"); } } } function aggiorna_sconto( $id_record){ global $dbo; global $dir; aggiorna_costo_km($id_record); if ( get_var_tipodoc2($id_record,"colli_automatico") == 1) { aggiorna_colli($id_record); } $query = "SELECT tipo_sconto_globale,sconto_globale FROM co_documenti WHERE id='".$id_record."'"; $rs = $dbo->fetchArray($query); $tipo_sconto = $rs[0]['tipo_sconto_globale']; $sconto_globale = $rs[0]['sconto_globale']; $descrizione = "Sconto incondizionato"; $str_sql="DELETE FROM co_righe_documenti WHERE descrizione ='Sconto incondizionato' AND iddocumento='".$id_record."'"; $dbo->query($str_sql); if ($sconto_globale > 0) { $rs = $dbo->fetchArray("SELECT SUM(subtotale - sconto) AS imponibile, SUM(iva) AS iva FROM co_righe_documenti WHERE iddocumento='".$id_record."'"); $subtotale = $rs[0]['imponibile']; $iva = $rs[0]['iva']; $idiva = get_var("Iva predefinita"); if ($tipo_sconto == 'Fisso') { $rs2 = $dbo->fetchArray("SELECT * FROM co_iva WHERE id='".$idiva."'"); $val_iva= ($sconto_globale/100)*$rs2[0]['percentuale']; $desc_iva= $rs2[0]['descrizione']; $subtot=-$sconto_globale; $qta=1; $val_iva=-$val_iva; $query = "INSERT INTO co_righe_documenti( iddocumento, idiva, desc_iva, iva, descrizione, subtotale, qta,idconto) VALUES( \"$id_record\", \"".$idiva."\", \"$desc_iva\", \"$val_iva\", \"$descrizione\", \"$subtot\", \"$qta\", \"".$idconto."\" )"; $dbo->query($query) ; } else { $val_sconto= ($subtotale/100)*$sconto_globale; $rs2 = $dbo->fetchArray("SELECT * FROM co_iva WHERE id='".$idiva."'"); $val_iva= ($val_sconto/100)*$rs2[0]['percentuale']; $desc_iva= $rs2[0]['descrizione']; $subtot=-$val_sconto; $qta=1; $val_iva=-$val_iva; $query = "INSERT INTO co_righe_documenti( iddocumento, idiva, desc_iva, iva, descrizione, subtotale, qta,idconto) VALUES( \"$id_record\", \"".$idiva."\", \"$desc_iva\", \"$val_iva\", \"$descrizione\", \"$subtot\", \"$qta\", \"".$idconto."\" )"; $dbo->query($query) ; } } } function aggiorna_colli( $id_record){ global $dbo; global $dir; $str_sql="select sum(co_righe_documenti.qta / qta_colli) as tot_colli FROM co_righe_documenti inner join mg_articoli on mg_articoli.id = co_righe_documenti.idarticolo WHERE iddocumento='".$id_record."' and co_righe_documenti.idarticolo <> 0"; $rs = $dbo->fetchArray($str_sql); $dbo->query("UPDATE co_documenti SET n_colli='".ceil($rs[0]['tot_colli'])."' WHERE id='$id_record'"); } function aggiorna_costo_km( $id_record){ global $dbo; global $dir; $descrizione=get_var_tipodoc2($id_record,'testo_km'); $query = "SELECT id_contratto , idanagrafica , idsede FROM co_documenti WHERE id='".$id_record."'"; $rs = $dbo->fetchArray($query); $idanagrafica=$rs[0]['idanagrafica']; $idsede=$rs[0]['idsede']; if( $rs[0]['id_contratto'] != "0" && $rs[0]['id_contratto'] != "" ){ // $descrizione = "Costo Km"; $str_sql="DELETE FROM co_righe_documenti WHERE descrizione ='".$descrizione."' AND iddocumento='".$id_record."'"; $dbo->query($str_sql); $rs = $dbo->fetchArray("SELECT id_tipocanone FROM co_contratti WHERE id='".$rs[0]['id_contratto']."'"); $id_tipocanone = $rs[0]['id_tipocanone']; $rs = $dbo->fetchArray("SELECT costo_km FROM co_contratti_tipi WHERE id='".$id_tipocanone."'"); $costo_km = $rs[0]['costo_km']; if ( $costo_km != '0') { if( $idsede != "0" ){ $query = "SELECT km FROM an_sedi WHERE id='".$idsede."'"; $rs_ana = $dbo->fetchArray($query); $km = $rs_ana[0]['km']; } else { $query = "SELECT km FROM an_anagrafiche WHERE idanagrafica='".$idanagrafica."'"; $rs_ana = $dbo->fetchArray($query); $km = $rs_ana[0]['km']; } $idiva = get_var("Iva predefinita"); $importo_km=$km * $costo_km; $rs2 = $dbo->fetchArray("SELECT * FROM co_iva WHERE id='".$idiva."'"); $val_iva= ($importo_km/100)*$rs2[0]['percentuale']; $desc_iva= $rs2[0]['descrizione']; $qta=1; $query = "INSERT INTO co_righe_documenti( iddocumento, idiva, desc_iva, iva, descrizione, subtotale, qta,idconto) VALUES( \"$id_record\", \"".$idiva."\", \"$desc_iva\", \"$val_iva\", \"$descrizione\", \"$importo_km\", \"$qta\", \"".$idconto."\" )"; $dbo->query($query) ; } } } function storico_transazioni_xml($iddocumento){ global $dbo; $rw = $dbo->fetchArray( "select * from co_documenti_progressivo where id_documento='".$iddocumento."' order by data"); for($i = 0; $i < sizeof($rw); $i ++) { $id_progressivo=$rw[$i][id]; $data_transazione=$rw[$i][data]; $data_transazione=date("d/m/Y H:i:s", strtotime($data_transazione)); $data_invio=""; $data_esito=""; if ( $rw[$i][data_invio] !="0000-00-00 00:00:00" ) $data_invio=date("d/m/Y H:i:s", strtotime($rw[$i][data_invio])); if ( $rw[$i][data_esito] !="0000-00-00 00:00:00" ) $data_esito=date("d/m/Y H:i:s", strtotime($rw[$i][data_esito])); $customer_name=username_name($rw[$i][idutente],"username"); $num_progressivo=$rw[$i][numero_esterno]; if ( $rw[$i][inviato] == '1') { $icona_invio="fa fa-cloud"; $titolo_invio="Da inviare"; $colore_icona="info"; } if ( $rw[$i][inviato] == '2') { $icona_invio="fa fa-cloud-upload"; $titolo_invio="Inviata"; $colore_icona="success"; } if ( $rw[$i][esito] == '1') { $icona_esito="fa fa-check-square"; $titolo_esito="Positivo"; $colore_icona_esito="success"; } if ( $rw[$i][esito] == '2') { $icona_esito="fa fa-exclamation-circle"; $titolo_esito="Errata"; $colore_icona_esito="danger"; } if ( $rw[$i][esito] == '3') { $icona_esito="fa fa-exclamation-triangle"; $titolo_esito="Scartata"; $colore_icona_esito="danger"; } if ( $rw[$i][esito] == '4') { $icona_esito="fa fa-hourglass-o"; $titolo_esito="In attesa"; $colore_icona_esito="info"; } ?> = '".$_SESSION['period_start']."' AND `data` <= '".$_SESSION['period_end']."'"; // cerco filtri $rw_filtri = $dbo->fetchArray( "select * from co_xml_filtri "); $id_esito = $rw_filtri[0][id_esito]; $id_invio = $rw_filtri[0][id_invio]; if( $id_esito != "0" ) $str_slq = $str_slq." and esito='".$id_esito."'"; if( $id_invio != "0" ) $str_slq = $str_slq." and inviato='".$id_invio."'"; $str_slq = $str_slq." order by data"; $rw = $dbo->fetchArray($str_slq); for($i = 0; $i < sizeof($rw); $i ++) { $id_progressivo=$rw[$i][id]; $id_documento=$rw[$i][id_documento]; $rw_doc = $dbo->fetchArray( "select * from co_documenti where id >= '".$id_documento."'"); $rw_ana = $dbo->fetchArray( "select ragione_sociale from an_anagrafiche where idanagrafica >= '".$rw_doc[0][idanagrafica]."'"); $data_transazione=$rw[$i][data]; $data_transazione=date("d/m/Y H:i:s", strtotime($data_transazione)); $data_invio=""; $data_esito=""; if ( $rw[$i][data_invio] !="0000-00-00 00:00:00" ) $data_invio=date("d/m/Y H:i:s", strtotime($rw[$i][data_invio])); if ( $rw[$i][data_esito] !="0000-00-00 00:00:00" ) $data_esito=date("d/m/Y H:i:s", strtotime($rw[$i][data_esito])); $customer_name=username_name($rw[$i][idutente],"username"); $num_progressivo=$rw[$i][numero_esterno]; if ( $rw[$i][inviato] == '1') { $icona_invio="fa fa-cloud"; $titolo_invio="Da inviare"; $colore_icona="info"; } if ( $rw[$i][inviato] == '2') { $icona_invio="fa fa-cloud-upload"; $titolo_invio="Inviata"; $colore_icona="success"; } if ( $rw[$i][esito] == '1') { $icona_esito="fa fa-check-square"; $titolo_esito="Positivo"; $colore_icona_esito="success"; } if ( $rw[$i][esito] == '2') { $icona_esito="fa fa-exclamation-circle"; $titolo_esito="Errata"; $colore_icona_esito="danger"; } if ( $rw[$i][esito] == '3') { $icona_esito="fa fa-exclamation-triangle"; $titolo_esito="Scartata"; $colore_icona_esito="danger"; } if ( $rw[$i][esito] == '4') { $icona_esito="fa fa-hourglass-o"; $titolo_esito="In attesa"; $colore_icona_esito="info"; } ?> fetchArray("SELECT * FROM zz_files WHERE module='import_xml' and nome='File elettronico' AND externalid=\"".$id_record."\""); $tmpName = $path."/files/import_xml/".$rs[0]['filename']; $extensions = array('XML', 'xml'); $fattura = new SimpleXMLElement($tmpName, null, true); foreach($fattura->FatturaElettronicaBody->DatiGenerali->DatiOrdineAcquisto as $linea){ $iddocumento = (string)$linea->IdDocumento; $codicecommessa = (string)$linea->CodiceCommessaConvenzione; $data = (string)$linea->Data; $data=date("d/m/Y", strtotime($data)); $CodiceCUP = (string)$linea->CodiceCUP; $CodiceCIG = (string)$linea->CodiceCIG; if ( $data == '01/01/1970' ) { $data="Non indicata"; } ?> fetchArray("SELECT * FROM zz_files WHERE module='import_xml' and nome='File elettronico' AND externalid=\"".$id_record."\""); $tmpName = $path."/files/import_xml/".$rs[0]['filename']; $extensions = array('XML', 'xml'); $fattura = new SimpleXMLElement($tmpName, null, true); foreach($fattura->FatturaElettronicaBody->DatiGenerali->DatiDDT as $linea){ $NumeroDDT = (string)$linea->NumeroDDT; $data = (string)$linea->DataDDT; $data=date("d/m/Y", strtotime($data)); $RiferimentoNumeroLinea=(string)$linea->RiferimentoNumeroLinea; $query = "SELECT * FROM co_documenti WHERE idanagrafica='".$idanagrafica."' and numero_documento='".$NumeroDDT."'"; $rs_test_ddt = $dbo->fetchArray($query); if ( $data == '01/01/1970' ) { $data="Non indicata"; } ?> 0 ) { ?> fetchArray("SELECT * FROM zz_files WHERE module='import_xml' and nome='File elettronico' AND externalid=\"".$id_record."\""); $tmpName = $path."/files/import_xml/".$rs[0]['filename']; $extensions = array('XML', 'xml'); $fattura = new SimpleXMLElement($tmpName, null, true); foreach($fattura->FatturaElettronicaBody->DatiPagamento->DettaglioPagamento as $linea){ $data_pagamento = (string)$linea->DataScadenzaPagamento; $importo = (string)$linea->ImportoPagamento; $data_pagamento=date("d/m/Y", strtotime($data_pagamento)); $istitutoFinanziario = (string)$linea->IstitutoFinanziario; $modalita_pagamento = (string)$linea->ModalitaPagamento; $iban = (string)$linea->IBAN; ?> fetchArray("SELECT * FROM zz_files WHERE module='import_xml' and nome='File elettronico' AND externalid=\"".$id_record."\""); $tmpName = $path."/files/import_xml/".$rs[0]['filename']; $extensions = array('XML', 'xml'); $fattura = new SimpleXMLElement($tmpName, null, true); foreach($fattura->FatturaElettronicaBody->DatiBeniServizi->DettaglioLinee as $linea){ $descrizione = (string)$linea->Descrizione; $desc_aggiuntiva= ""; $desc_aggiuntiva_sconti= ""; $importo_manuale=(string)$linea->PrezzoUnitario; $importo_manuale_sc=(string)$linea->PrezzoUnitario; $qta=(string)$linea->Quantita; $aliva = (string)$linea->AliquotaIVA; $um = (string)$linea->UnitaMisura; $codice_tipo =(string)$linea->CodiceArticolo->CodiceTipo; // tipologia codice articolo $codicevalore =(string)$linea->CodiceArticolo->CodiceValore; // valore codice tipo $rif_amministrativo =(string)$linea->RiferimentoAmministrazione; $tipo_sconto =(string)$linea->ScontoMaggiorazione->Tipo; $qta=number_format( $qta, get_var("Cifre decimali"), ",", "." ); $importo_manuale=number_format( $importo_manuale, get_var("Cifre decimali"), ",", "." ); $sconto=0; $sconto_extra=0; $sconto_extra1=0; $tipo_sconto = "0"; $valore_sconto = 0; $riga=0; $tipo_sconto =(string)$linea->ScontoMaggiorazione->Tipo; if ( $tipo_sconto == "SC" ) { // e' presente uno o + sconti $importo_fisso =(string)$linea_sc->Importo; if ( $importo_fisso != "" ) { // e' presente uno sconto fisso $tipo_sconto = "1"; $sconto= $importo_fisso; } else { $tipo_sconto = "2"; // e' presente uno sconto in percentuale // conto quanti sono foreach($linea->ScontoMaggiorazione as $linea_sc){ $riga=$riga + 1 ; } if ( $riga >= 4 ) { // sommo tutti gli conti in un unico sconto $riga=0; $sconto=0; $sconto1=0; $sconto2=0; $sconto3=0; $sconto4=0; $sconto5=0; foreach($linea->ScontoMaggiorazione as $linea_sc){ if ( $riga == 0 ) { $valore_sconto =(string)$linea_sc->Percentuale; $sconto1 = ( ($importo_manuale_sc ) * $valore_sconto)/100; $sconto=$sconto1; $desc_aggiuntiva_sconti=$desc_aggiuntiva_sconti."+ Sc:".$valore_sconto."% "; } if ( $riga == 1 ) { $valore_sconto =(string)$linea_sc->Percentuale; $sconto2 = ( ($importo_manuale_sc - $sconto1) * $valore_sconto)/100; $sconto= $sconto + $sconto2; $desc_aggiuntiva_sconti=$desc_aggiuntiva_sconti."+ Sc:".$valore_sconto."% "; } if ( $riga == 2 ) { $valore_sconto =(string)$linea_sc->Percentuale; $sconto3 = ( ($importo_manuale_sc - $sconto1 - $sconto2 ) * $valore_sconto)/100; $sconto=$sconto + $sconto3; $desc_aggiuntiva_sconti=$desc_aggiuntiva_sconti."+ Sc:".$valore_sconto."% "; } if ( $riga == 3 ) { $valore_sconto =(string)$linea_sc->Percentuale; $sconto4 = ( ($importo_manuale_sc - $sconto1 - $sconto2 - $sconto3) * $valore_sconto)/100; $sconto=$sconto + $sconto4; $desc_aggiuntiva_sconti=$desc_aggiuntiva_sconti."+ Sc:".$valore_sconto."% "; } if ( $riga == 4 ) { $valore_sconto =(string)$linea_sc->Percentuale; $sconto5 = ( ($importo_manuale_sc - $sconto1 - $sconto2 - $sconto3 - $sconto4) * $valore_sconto)/100; $sconto=$sconto + $sconto5; $desc_aggiuntiva_sconti=$desc_aggiuntiva_sconti."+ Sc:".$valore_sconto."% "; } $riga=$riga + 1 ; } } else { $riga=0; $sconto=0; $sconto1=0; $sconto2=0; $sconto3=0; $sconto4=0; $sconto5=0; foreach($linea->ScontoMaggiorazione as $linea_sc){ if ( $riga == 0 ) { $valore_sconto =(string)$linea_sc->Percentuale; $sconto1 = ( ($importo_manuale_sc ) * $valore_sconto)/100; $sconto=$sconto1; } if ( $riga == 1 ) { $sconto_extra =(string)$linea_sc->Percentuale; $sconto2 = ( ($importo_manuale_sc - $sconto1) * $sconto_extra)/100; $sconto= $sconto + $sconto2; } if ( $riga == 2 ) { $sconto_extra1 =(string)$linea_sc->Percentuale; $sconto3 = ( ($importo_manuale_sc - $sconto1 - $sconto2 ) * $sconto_extra1)/100; $sconto=$sconto + $sconto3; } $riga=$riga + 1 ; } } } } $sconto=number_format( $sconto, get_var("Cifre decimali"), ",", "." ); $TipoDato = (string)$linea->AltriDatiGestionali->TipoDato; $RiferimentoTesto = (string)$linea->AltriDatiGestionali->RiferimentoTesto; if ( $codice_tipo != "" ) { $desc_aggiuntiva="____ Tipologia codice : ".$codice_tipo." Valore : ".$codicevalore ; } ?>

fetchArray("SELECT * FROM co_righe_documenti WHERE id='".$idriga."'"); $iddocumento=$rs[0][iddocumento]; $idmagazzino = $rs[0][idmagazzino]; $descrizione = $rs[0][descrizione]; $importo_manuale = $rs[0][subtotale] / $rs[0][qta]; $prezzo = $rs[0][subtotale]; $perc_agente = $rs[0][perc_agente]; $idiva =$rs[0][idiva]; if ( $val == 'A' ) $qta = $rs[0][qta] + 1 ; if ( $val == 'S' ) $qta = $rs[0][qta] - 1 ; if ( $qta == '0' ) $qta = 1 ; $subtot = $importo_manuale*$qta; $idtiposconto = $rs[0][tipo_sconto]; $sconto = $rs[0][sconto_primo]; $sconto_extra = $rs[0][sconto_extra]; $sconto_extra1 = $rs[0][sconto_extra1]; $idmagazzino_old=query_secca("","id_magazzino_e","co_righe_documenti","where id='".$idriga."'"); $per_agente =01; // Info matricola $qana = "SELECT * FROM my_impianti WHERE matricola='".$rs[0][id_matricola]."'"; $rs_matricola = $dbo->fetchArray($qana); $matricola_impianto=$rs_matricola[0]['id']; if($idtiposconto=='2'){ $sconto_prc = $sconto; $sconto = ($importo_manuale*$sconto_prc)/100; $sconto_new = ($prezzo_new * $sconto_prc)/100; }else{ $sconto_prc = $sconto; } if($idtiposconto=='2'){ $sconto_extra = $sconto_extra; $sconto1 = (($importo_manuale - $sconto) * $sconto_extra)/100; $sconto1_new = (($importo_manuale - $sconto_new) * $sconto_extra)/100; }else{ $sconto1 = $sconto_extra; } if($idtiposconto=='2'){ $sconto_extra1 = $sconto_extra1; $sconto2 = (($importo_manuale - $sconto - $sconto1) * $sconto_extra1)/100; $sconto2_new = (($importo_manuale - $sconto_new - $sconto1_new) * $sconto_extra1)/100; }else{ $sconto2 = $sconto_extra1; } $sconto = ( $sconto + $sconto1 + $sconto2 ) *$qta; $sconto_new = ( $sconto_new + $sconto1_new + $sconto2_new ) *$qta; // impostazioni documento$esegue_movimento=get_var_tipodoc2($iddocumento,"mod_mov"); $esegue_movimento=get_var_tipodoc2($iddocumento,"mod_mov"); $esegue_giacenza = get_var_tipodoc2($iddocumento,"mod_mag"); $id_magazzino_e = get_var_tipodoc2($iddocumento,"id_magazzino_e"); $id_magazzino_u = get_var_tipodoc2($iddocumento,"id_magazzino_u"); $id_tipo_u = get_var_tipodoc2($iddocumento,"id_tipo_u"); $dir = get_var_tipodoc2($iddocumento,"dir"); $agg_prezzo_e = get_var_tipodoc2($iddocumento,"agg_prezzo_e"); $agg_prezzo_u = get_var_tipodoc2($iddocumento,"agg_prezzo_u"); $dir = get_var_tipodoc2($iddocumento,"dir"); if ( $idmagazzino >= '0' ) $id_magazzino_e=$idmagazzino; // cerco dati agente $query = "SELECT idanagrafica FROM co_documenti WHERE id='".$iddocumento."'"; $rs_ana= $dbo->fetchArray($query); $query = "SELECT idagente , default_ritenuta_acconto , default_rivalsa_inps FROM an_anagrafiche WHERE idanagrafica='".$rs_ana[0]['idanagrafica']."'"; $rs_d = $dbo->fetchArray($query); $query = "SELECT * FROM an_anagrafiche WHERE idanagrafica='".$rs_d[0]['idagente']."'"; $rs_agente = $dbo->fetchArray($query); $perc_netto = $rs_agente[0]['perc_netto']; $perc_iva = $rs_agente[0]['perc_iva']; //calcolo percentuali agente if($perc_netto =='1'){ $val_agente=($importo_manuale * $qta) - $sconto ; $val_agente = ($val_agente * $perc_agente)/100; }else{ $val_agente = (($importo_manuale * $qta) * $perc_agente)/100; } if( $perc_iva =='1'){ $rs2 = $dbo->fetchArray("SELECT * FROM co_iva WHERE id='".$idiva."'"); $agente_iva= ($val_agente/100)*$rs2[0]['percentuale']; $val_agente=$val_agente + $agente_iva ; } //Lettura idarticolo dalla riga documento $rs_tmp = $dbo->fetchArray("SELECT idarticolo, qta FROM co_righe_documenti WHERE id=\"".$idriga."\""); $idarticolo = $rs_tmp[0]['idarticolo']; $old_qta = $rs_tmp[0]['qta']; $subtot = $importo_manuale*$qta; //Calcolo iva $query = "SELECT * FROM co_iva WHERE id='".$idiva."'"; $rs_tmp = $dbo->fetchArray($query); $iva = ($subtot-$sconto)/100*$rs_tmp[0]['percentuale']; $iva_indetraibile = $iva/100*$rs_tmp[0]['indetraibile']; $desc_iva = $rs_tmp[0]['descrizione']; $idrivalsainps=$rs[0][idrivalsainps]; $idritenutaacconto=$rs[0][idritenutaacconto]; //Calcolo rivalsa inps $query = "SELECT * FROM co_rivalsainps WHERE id='".$idrivalsainps."'"; $rs_tmp = $dbo->fetchArray($query); $rivalsainps = $importo_manuale*$qta / 100 * $rs_tmp[0]['percentuale']; //Calcolo ritenuta d'acconto $query = "SELECT * FROM co_ritenutaacconto WHERE id='".$idritenutaacconto."'"; $rs_tmp = $dbo->fetchArray($query); $ritenutaacconto = (($importo_manuale*$qta) + $rivalsainps) / 100 * $rs_tmp[0]['percentuale']; $query = "UPDATE co_righe_documenti SET iva=\"".$iva."\", iva_indetraibile=\"".$iva_indetraibile."\", subtotale=\"".$subtot."\", sconto=\"".$sconto."\", qta=\"".$qta."\", ritenutaacconto=\"".$ritenutaacconto."\", rivalsainps=\"".$rivalsainps."\" , importo_agente=\"".$val_agente."\",importo_iva_agente=\"".$agente_iva."\" WHERE id=\"".$idriga."\""; if( $dbo->query($query) ){ // log anagrafiche // ricalcola_costiagg_fattura($rs[0][iddocumento]); ricalcola_costiagg_fattura($iddocumento); add_storico_doc($iddocumento,"Modificato articolo ".$descrizione." con quantità = ".$qta); //Se ho movimentato una riga collegata ad un articolo di magazzino, movimento il magazzino if( $idarticolo != '' ){ ( $dir == 'entrata' ) ? $sign='-' : $sign='+'; if( $esegue_movimento== 1 ) { //Lettura dati del movimento in magazzino per poterlo modificare $rs = $dbo->fetchArray("SELECT id, qta FROM mg_movimenti WHERE idarticolo=\"".$idarticolo."\" AND qta=\"".$sign.$old_qta."\" AND iddocumento=\"".$iddocumento."\""); $idmovimento = $rs[0]['id']; //Aggiorno il movimento del magazzino $query = "UPDATE mg_movimenti SET qta=\"".$sign.$qta."\" WHERE id=\"".$idmovimento."\""; $dbo->query( $query ); } //Aggiorno la quantità articolo (qtà_attuale - qtà_precedentemente_movimentata + nuova_qtà) if( $esegue_giacenza== 1 ) { if ( $idmagazzino_old == $id_magazzino_e ){ if( $id_magazzino_e == 0 ) { $tabella=" mg_articoli "; $where =" WHERE id='".$idarticolo."'"; } else{ $tabella=" mg_articoli_magazzini "; $where =" WHERE idarticolo='".$idarticolo."' and idmagazzino='".$id_magazzino_e."' "; } if( $dir == "entrata" ){ $query = "UPDATE ".$tabella." SET qta= qta +".$old_qta.$sign.$qta.$where; } else{ $query = "UPDATE ".$tabella." SET qta=qta -".$old_qta.$sign.$qta.$where; } $dbo->query( $query ); } else{ // ripristino giacenza prima di cambio magazzino if( $idmagazzino_old == 0 ) { $tabella=" mg_articoli "; $where =" WHERE id='".$idarticolo."'"; } else{ $tabella=" mg_articoli_magazzini "; $where =" WHERE idarticolo='".$idarticolo."' and idmagazzino='".$idmagazzino_old."' "; } if( $dir == "entrata" ){ $query = "UPDATE ".$tabella." SET qta= qta +".$old_qta.$where; } else{ $query = "UPDATE ".$tabella." SET qta=qta -".$old_qta.$where; } $dbo->query( $query ); // ricalcolo nuova giacenza su mahazzino nupvo if( $id_magazzino_e == 0 ) { $tabella=" mg_articoli "; $where =" WHERE id='".$idarticolo."'"; } else{ $tabella=" mg_articoli_magazzini "; $where =" WHERE idarticolo='".$idarticolo."' and idmagazzino='".$id_magazzino_e."' "; } if( $dir == "entrata" ){ $query = "UPDATE ".$tabella." SET qta= qta ".$sign.$qta.$where; } else{ $query = "UPDATE ".$tabella." SET qta=qta ".$sign.$qta.$where; } $dbo->query( $query ); } } // testo se devo fare movimenti su altri magazzini if( $id_magazzino_u != 0 ) { ( $id_tipo_u == '1' ) ? $sign='+' : $sign='-'; $tabella=" mg_articoli_magazzini "; $where =" WHERE idarticolo='".$idarticolo."' and idmagazzino='".$id_magazzino_u."' "; if( $id_tipo_u == "1" ){ $query = "UPDATE ".$tabella." SET qta= qta -".$old_qta.$sign.$qta.$where; } else{ $query = "UPDATE ".$tabella." SET qta=qta +".$old_qta.$sign.$qta.$where; } $dbo->query( $query ); } if( $agg_prezzo_e == 1 ) { // aggiornaemnto prezzo di aquisto $dbo->query( "UPDATE mg_articoli SET prezzo_acquisto=".$importo_manuale." WHERE id='".$idarticolo."'"); } if( $agg_prezzo_u == 1 ) { // aggiornaemnto prezzo di vendita $dbo->query( "UPDATE mg_articoli SET prezzo_vendita=".$importo_manuale." WHERE id='".$idarticolo."'"); } } } } } ?>