2543 lines
104 KiB
PHP
2543 lines
104 KiB
PHP
|
<?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."'");
|
||
|
}
|
||
|
}
|
||
|
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
?>
|