gest366/modules/documenti/modutil.php

2543 lines
104 KiB
PHP
Raw Normal View History

2021-02-24 20:40:04 +00:00
<?php
function add_storico_doc($iddocumento,$descrizione){
global $dbo;
$dbo->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; $i<sizeof($rs); $i++ ){
// X giorni esatti
if ($rs[$i]['giorno'] == 0) {
$scadenza = date('Y-m-d', strtotime($data.' +'.$rs[$i]['num_giorni'].' day'));
}
// Ultimo del mese
elseif ($rs[$i]['giorno'] < 0) {
$date = new DateTime($data);
$add = floor($rs[$i]['num_giorni'] / 30);
for ($c = 0; $c < $add; ++$c) {
$date->modify('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; $i<sizeof($rs); $i++ ){
//X giorni esatti
if( $rs[$i]['giorno']==0 )
$scadenza = date( "Y-m-d", strtotime($data." +".$rs[$i]['num_giorni']." day") );
//Ultimo del mese
else if( $rs[$i]['giorno']==-1 )
$scadenza = date( "Y-m-t", strtotime($data." +".$rs[$i]['num_giorni']." day") );
//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;
}
/**
* 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<sizeof($rs); $i++ ){
if( $rimanente_da_pagare > 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; $i<sizeof($rs); $i++ ){
$imponibile_righe_fattura = $rs[$i]['imponibile'];
$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)\",
\"".$rs[$i]['idconto']."\", \"".($imponibile_righe_fattura*$segno_mov2_ricavivendite)."\", $primanota )";
$dbo->query($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'] ;
?>
<tr>
<td><a class='btn btn-sm btn-info' href="editor.php?id_module=14&id_record=<?php echo $sale_id;?>"><i class='fa fa-search'></a></td>
<td><?php echo $customer_name;?></td>
<td><?php echo $data_transazione;?></td>
<td><?php echo $num_cod;?></td>
<td><?php echo $descrizione;?></td>
<td><?php echo $data;?></td>
<td class='text-right'><?php echo number_format($total,2);?></td>
</tr>
<?php
;
}
}
// funzioni creqazione Ordini
function get_new_numeroordine( $data ){
global $dbo;
global $dir;
$dir="uscita";
$query = "SELECT numero AS max_numeroordine FROM or_ordini WHERE DATE_FORMAT( data, '%Y' ) = '".date("Y", strtotime($data))."' AND idtipoordine IN(SELECT id FROM or_tipiordine WHERE dir='".$dir."') ORDER BY CAST(numero AS UNSIGNED) DESC LIMIT 0,1";
$rs = $dbo->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'] ;
?>
<tr>
<td><a href="editor.php?id_module=18&id_record=<?php echo $sale_id;?>"><?php echo $i +1;?></a></td>
<td><?php echo date( "d/m/Y", strtotime($rw[$i]['scadenza']));?></td>
<td><?php echo number_format($total,2);?></td>
<td><?php echo number_format($pagato,2);?></td>
</tr>
<?php
;
}
}
// documento differito
function doc_differito_crea( $id_record,$iddocumento_padre,$sta_sucessivo ){
global $dbo;
if( $id_record ){
$sta_sucessivo=get_var_tipodoc2($id_record,'differito_sta_suc');
$rs_ori = $dbo->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; $i<sizeof($rs); $i++ ){
$idriga = add_articolo_infattura( $id_record, $rs[$i]['idarticolo'], $rs[$i]['descrizione'], $rs[$i]['idiva'], $rs[$i]['qta'], $rs[$i]['subtotale'], $rs[$i]['sconto'],'0',
$rs[$i]['lotto'],
$rs[$i]['serial'],
$rs[$i]['altro'],
$rs[$i]['idconto'],
$rs[$i]['tipo_sconto'],
$rs[$i]['sconto_primo'],$rs[$i]['sconto_extra'],$rs[$i]['sconto_extra1'],'','','','');
$riv= $rs[$i]['rivalsainps'];
$dbo->query( "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; $i<sizeof($rs); $i++ ){
$idriga = add_articolo_infattura( $iddocumento, $rs[$i]['idarticolo'], $rs[$i]['descrizione'], $rs[$i]['idiva'], $rs[$i]['qta'], $rs[$i]['subtotale'], $rs[$i]['sconto'],'0',
$rs[$i]['lotto'],
$rs[$i]['serial'],
$rs[$i]['altro'],
$rs[$i]['idconto'],
$rs[$i]['tipo_sconto'],
$rs[$i]['sconto_primo'],$rs[$i]['sconto_extra'],$rs[$i]['sconto_extra1']);
$riv= $rs[$i]['rivalsainps'];
$dbo->query( "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; $i<sizeof($rs); $i++ ){
$idarticolo = $rs[$i]['idarticolo'];
$descrizione = $rs[$i]['descrizione'];
$seriale = $rs[$i]['n_seriale'];
$qta = $rs[$i]['qta'] ;
$id_myimpianto= $rs[$i]['id_impianto'];
$d_seriale=$descrizione." - N°Seriale : ".$seriale;
if ( $seriale == '') {
$dbo->query("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";
}
?>
<tr>
<td class='text-center'><?php echo $customer_name;?></td>
<td class='text-center'><?php echo $data_transazione;?></td>
<td class='text-center'><?php echo $num_progressivo;?></td>
<td class='text-center'><a class="btn btn-sm btn-<?php echo $colore_icona ?>" title="<?php echo $titolo_invio ?>" data-href="modules/documenti/add_stato_xml.php?iddocumento=<?php echo $iddocumento ?>&id_progressivo=<?php echo $id_progressivo ?>" data-toggle="modal" data-title="Stato Invio file" data-target="#bs-popup"><i class="<?php echo $icona_invio ?>"></i></a></td>
<td class='text-center'><?php echo $data_invio;?></td>
<td class='text-center'><a class="btn btn-sm btn-<?php echo $colore_icona_esito ?>" title="<?php echo $titolo_esito ?>"data-href="modules/documenti/add_esito_xml.php?iddocumento=<?php echo $iddocumento ?>&id_progressivo=<?php echo $id_progressivo ?>" data-toggle="modal" data-title="Esito Invio file" data-target="#bs-popup"><i class="<?php echo $icona_esito ?>"></i></a></td>
<td class='text-center'><?php echo $data_esito;?></td>
</tr>
<?php
;
}
}
function all_storico_transazioni_xml(){
global $dbo;
$str_slq="select * from co_documenti_progressivo where `data` >= '".$_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";
}
?>
<tr>
<td><a class='btn btn-sm btn-info' href="editor.php?id_module=14&id_record=<?php echo $id_documento;?>" title='Analizza documento'><i class='fa fa-search'></a></td>
<td class='text-left'><?php echo $rw_doc[0][numero_documento];?></td>
<td class='text-left'><?php echo $rw_ana[0][ragione_sociale];?></td>
<td class='text-center'><?php echo $customer_name;?></td>
<td class='text-center'><?php echo $data_transazione;?></td>
<td class='text-center'><?php echo $num_progressivo;?></td>
<td class='text-center'><a class="btn btn-sm btn-<?php echo $colore_icona ?>" title="<?php echo $titolo_invio ?>"><i class="<?php echo $icona_invio ?>"></i></a></td>
<td class='text-center'><?php echo $data_invio;?></td>
<td class='text-center'><a class="btn btn-sm btn-<?php echo $colore_icona_esito ?>" title="<?php echo $titolo_esito ?>"><i class="<?php echo $icona_esito ?>"></i></a></td>
<td class='text-center'><?php echo $data_esito;?></td>
</tr>
<?php
;
}
}
function lettura_file_xml_ordacq( $id_record, $path){
global $dbo;
global $dir;
$rs = $dbo->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";
}
?>
<tr>
<td class='text-left'><?php echo $data;?></td>
<td class='text-right'><?php echo $iddocumento;?></td>
<td class='text-left'><?php echo $codicecommessa;?></td>
<td class='text-left'><?php echo $CodiceCUP;?></td>
<td class='text-left'><?php echo $CodiceCIG;?></td>
</tr>
<?php
}
}
function lettura_file_xml_ddt( $id_record, $path , $idanagrafica){
global $dbo;
global $dir;
$rs = $dbo->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";
}
?>
<tr>
<td class='text-left'><?php echo $RiferimentoNumeroLinea;?></td>
<td class='text-left'><?php echo $data;?></td>
<td class='text-right'><?php echo $NumeroDDT;?></td>
<?php
if ( sizeof($rs_test_ddt) > 0 ) {
?>
<td><a class='btn btn-sm btn-info' href="editor.php?id_module=14&id_record=<?php echo $rs_test_ddt[0]['id'];?>"><i class='fa fa-search'></a></td>
<td class='text-center'><a class="btn btn-sm btn-success" data-href="modules/documenti/add_link_xml.php?iddocumento=<?php echo $id_record ?>&id_link=<?php echo $rs_test_ddt[0]['id'] ?>" data-toggle="modal" data-title="Unisci Documenti" data-target="#bs-popup"><i class="fa fa-chain"></i></a></td>
<?php
}
?>
</tr>
<?php
}
}
function lettura_file_xml_pagamenti( $id_record, $path){
global $dbo;
global $dir;
$rs = $dbo->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;
?>
<tr>
<td class='text-center'><?php echo $data_pagamento;?></td>
<td class='text-center'><?php echo $importo;?></td>
<td class='text-center'><?php echo $istitutoFinanziario;?></td>
<td class='text-center'><?php echo $iban;?></td>
</tr>
<?php
}
return $modalita_pagamento;
}
function lettura_file_xml_righe( $id_record, $path){
global $dbo;
global $dir;
$rs = $dbo->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 ;
}
?>
<tr>
<td class='text-left'><?php echo $descrizione;?> <br> <?php echo $desc_aggiuntiva;?> <br> <?php echo $desc_aggiuntiva_sconti;?></td>
<td class='text-right'><?php echo $qta;?></td>
<td class='text-right'><?php echo $importo_manuale;?></td>
<td class='text-right'><?php echo $aliva;?></td>
<td class='text-right'><?php echo $sconto;?></td>
<td class='text-right'><?php echo $rif_amministrativo;?></td>
<td class='text-right'><?php echo $TipoDato;?></td>
<td class='text-right'><?php echo $RiferimentoTesto;?></td>
</tr>
<?php
}
}
function mod_riga($idriga , $val ){
if( isset($_POST['idriga']) ){
global $dbo;
global $dir;
$rs = $dbo->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."'");
}
}
}
}
}
?>