493 lines
19 KiB
PHP
493 lines
19 KiB
PHP
|
<?php
|
||
|
|
||
|
|
||
|
function add_storico($idcontratto,$descrizione){
|
||
|
global $dbo;
|
||
|
$dbo->query("INSERT INTO zz_log_contratti( idcontratto, idutente,data_log,username,descrizione ) VALUES( \"".$idcontratto."\", \"".$_SESSION['idutente']."\",NOW(),\"".$_SESSION['username']."\",\"".$descrizione."\" )");
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
function doc_crea_dacontratto( $id_record,$idtipodocumento,$sta_sucessivo ){
|
||
|
global $dbo;
|
||
|
if( $id_record ){
|
||
|
$rs = $dbo->fetchArray("SELECT * FROM co_contratti WHERE id=\"".$id_record."\"");
|
||
|
$data = $rs[0]['data_accettazione'];
|
||
|
$id_contratto=$id_record;
|
||
|
// ricerca se la numerazione e' progressiva o propria
|
||
|
$numerazione_progressiva=get_var_tipodoc($idtipodocumento,'mod_num');
|
||
|
$dir=get_var_tipodoc($idtipodocumento,'dir');
|
||
|
$idconto=get_var_tipodoc($idtipodocumento,'idconto');
|
||
|
$idpagamento_new=get_var_tipodoc($idtipodocumento,'idpagamento');
|
||
|
$dir=get_var_tipodoc($idtipodocumento,'dir');
|
||
|
$id_gruppodoc=get_var_tipodoc($idtipodocumento,'id_gruppo_tipologia');
|
||
|
$suffisso=get_var_tipodoc($idtipodocumento,'txt_suffisso');
|
||
|
$suffisso_anno=get_var_tipodoc($idtipodocumento,'suffisso_anno');
|
||
|
$idstato = get_var_tipodoc($idtipodocumento,'sta_apertura');
|
||
|
|
||
|
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 = '';
|
||
|
}
|
||
|
|
||
|
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");
|
||
|
|
||
|
|
||
|
|
||
|
$dbo->query("INSERT INTO co_documenti( numero_documento,id_gruppo_tipologia,id_contratto_doc,numero, numero_esterno, data, idanagrafica, idtipodocumento, idstatodocumento, idpagamento )
|
||
|
VALUES( \"".$numero_documento."\",\"".$id_gruppodoc."\",\"".$id_contratto."\",\"".$numero."\", \"".$numero_esterno."\", \"".$rs[0]['data_accettazione']."\", \"".$rs[0]['idanagrafica']."\", \"".$idtipodocumento."\" , '2', \"".$rs[0]['idpagamento']."\" )");
|
||
|
$iddocumento = $dbo->last_inserted_id();
|
||
|
// asegno iddocumento al contratto
|
||
|
$dbo->query( "UPDATE co_contratti SET id_documento='.$iddocumento.' WHERE id='".$id_contratto."'" );
|
||
|
//Inseriemnto posizione nel documento
|
||
|
|
||
|
$rs_contratto = $dbo->fetchArray("SELECT id_tipocanone , nome FROM co_contratti WHERE id=\"".$id_contratto."\"");
|
||
|
$id_tipocontratto=$rs_contratto[0]['id_tipocanone'];
|
||
|
$descrizione=$rs_contratto[0]['nome'];
|
||
|
$rs = $dbo->fetchArray("SELECT costo_annuale FROM co_contratti_tipi WHERE id='".$id_tipocontratto."'");
|
||
|
$subtot=$rs[0]['costo_annuale'];
|
||
|
//Calcolo iva
|
||
|
$idiva=get_var("Iva predefinita");
|
||
|
$query = "SELECT * FROM co_iva WHERE id='".$idiva."'";
|
||
|
$rs = $dbo->fetchArray($query);
|
||
|
$iva = ($subtot)/100*$rs[0]['percentuale'];
|
||
|
$iva_indetraibile = $iva/100*$rs[0]['indetraibile'];
|
||
|
$desc_iva = $rs[0]['descrizione'];
|
||
|
$sconto=0;
|
||
|
$qta=1;
|
||
|
|
||
|
$query = "INSERT INTO co_righe_documenti( iddocumento, idiva, desc_iva, iva, iva_indetraibile, descrizione, subtotale, sconto, um, qta, idconto)
|
||
|
VALUES( \"$iddocumento\", \"".$idiva."\", \"$desc_iva\", \"$iva\", \"$iva_indetraibile\", \"$descrizione\", \"$subtot\", \"$sconto\", \"$um\", \"$qta\",
|
||
|
\"".$idconto."\" )";
|
||
|
if( $dbo->query($query) ){
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
// $id_record = $iddocumento;
|
||
|
// return $iddocumento;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
function get_new_numerosecondariofattura( $data ){
|
||
|
global $dbo;
|
||
|
global $dir;
|
||
|
global $idtipodocumento;
|
||
|
$dir="entrata";
|
||
|
//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' )
|
||
|
$numero_esterno = get_next_code( $numero_secondario, 1, $formato_numero_secondario );
|
||
|
else
|
||
|
$numero_esterno = '';
|
||
|
|
||
|
return $numero_esterno;
|
||
|
}
|
||
|
|
||
|
|
||
|
function get_new_numerosecondariofattura_multi( $data , $tipodoc ){
|
||
|
global $dbo;
|
||
|
global $dir;
|
||
|
global $idtipodocumento;
|
||
|
$dir="entrata";
|
||
|
$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' )
|
||
|
$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;
|
||
|
$dir="entrata";
|
||
|
$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;
|
||
|
}
|
||
|
|
||
|
function get_new_numerofattura_multi( $data , $tipodoc ){
|
||
|
global $dbo;
|
||
|
global $dir;
|
||
|
$dir="entrata";
|
||
|
|
||
|
$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;
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
/**
|
||
|
* Questa funzione aggiunge un articolo nell'ordine. E' comoda quando si devono inserire
|
||
|
* degli interventi con articoli collegati o preventivi che hanno interventi con articoli collegati!
|
||
|
* $idpreventivo integer id del preventivo
|
||
|
* $idarticolo integer id dell'articolo da inserire nel preventivo
|
||
|
* $idiva integer id del codice iva associato all'articolo
|
||
|
* $qta float quantità dell'articolo nell'ordine
|
||
|
* $prezzo float prezzo totale degli articoli (prezzounitario*qtà)
|
||
|
*/
|
||
|
function add_articolo_inpreventivo( $idpreventivo, $idarticolo, $descrizione, $idiva, $qta, $prezzo, $lotto='', $serial='', $altro='' ){
|
||
|
global $dbo;
|
||
|
global $dir;
|
||
|
|
||
|
|
||
|
//Lettura unità di misura dell'articolo
|
||
|
$query = "SELECT valore FROM mg_unitamisura WHERE id=(SELECT idum FROM mg_articoli WHERE id='".$idarticolo."')";
|
||
|
$rs = $dbo->fetchArray($query);
|
||
|
$um = $rs[0]['valore'];
|
||
|
|
||
|
/*
|
||
|
Ordine cliente
|
||
|
*/
|
||
|
if( $dir=='entrata' ){
|
||
|
//Lettura iva dell'articolo
|
||
|
$rs2 = $dbo->fetchArray("SELECT percentuale, indetraibile FROM co_iva WHERE id='".$idiva."'");
|
||
|
$iva = $prezzo/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 co_righe_preventivi WHERE idarticolo='".$idarticolo."' AND idpreventivo='".$idpreventivo."' AND lotto=\"".$lotto."\" AND serial=\"".$serial."\" AND altro=\"".$altro."\"");
|
||
|
|
||
|
|
||
|
//Inserisco la riga nell'ordine: se nell'ordine c'è già questo articolo incremento la quantità...
|
||
|
if( sizeof($rs) > 0 ){
|
||
|
$dbo->query("UPDATE co_righe_preventivi SET qta=qta+".$qta.", subtotale=subtotale+".$prezzo." WHERE id='".$rs[0]['id']."'");
|
||
|
}
|
||
|
|
||
|
//...altrimenti inserisco la scorta nell'ordine da zero
|
||
|
else{
|
||
|
$dbo->query("INSERT INTO co_righe_preventivi( idpreventivo, idarticolo, idiva, iva, iva_indetraibile, descrizione, subtotale, um, qta, lotto, serial, altro ) VALUES ( '".$idpreventivo."', '".$idarticolo."', '".$idiva."', '".$iva."', '".$iva_indetraibile."', \"".$descrizione."\", '".$prezzo."', '".$um."', '".$qta."', \"".$lotto."\", \"".$serial."\", \"".$altro."\" )");
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
/*
|
||
|
Ordine fornitore
|
||
|
*/
|
||
|
else if( $dir=='uscita' ){
|
||
|
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
* Questa funzione rimuove un articolo dal ddt data e lo riporta in magazzino
|
||
|
* $idarticolo integer codice dell'articolo da scollegare dall'ordine
|
||
|
* $idordine integer codice dell'ordine da cui scollegare l'articolo
|
||
|
*/
|
||
|
function rimuovi_articolo_dapreventivo( $idarticolo, $idpreventivo, $idriga ){
|
||
|
global $dbo;
|
||
|
global $dir;
|
||
|
|
||
|
//Leggo la quantità di questo articolo nell'ordine
|
||
|
$query = "SELECT qta, subtotale FROM co_righe_preventivi WHERE id='".$idriga."'";
|
||
|
$rs = $dbo->fetchArray($query);
|
||
|
$qta = floatval( $rs[0]['qta'] );
|
||
|
$subtotale = $rs[0]['subtotale'];
|
||
|
|
||
|
|
||
|
//Elimino la riga dall'ordine
|
||
|
$dbo->query("DELETE FROM co_righe_preventivi WHERE id=\"$idriga\"");
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
* Ricalcola i costi aggiuntivi in ordine (rivalsa inps, ritenuta d'acconto, marca da bollo)
|
||
|
* Deve essere eseguito ogni volta che si aggiunge o toglie una riga
|
||
|
* $idordine int ID del ordine
|
||
|
* $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_preventivo( $idpreventivo, $idrivalsainps='', $idritenutaacconto='', $bolli='' ){
|
||
|
global $dbo;
|
||
|
global $dir;
|
||
|
|
||
|
//Se ci sono righe nel ordine 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_preventivi WHERE idpreventivo='$idpreventivo'";
|
||
|
$rs = $dbo->fetchArray($query);
|
||
|
if( $rs[0]['righe']>0 ){
|
||
|
$totale_imponibile = get_imponibile_preventivo($idpreventivo);
|
||
|
$totale_preventivo = get_totale_preventivo($idpreventivo);
|
||
|
|
||
|
|
||
|
|
||
|
//Leggo la rivalsa inps se c'è (per i ordine di vendita lo leggo dalle impostazioni)
|
||
|
if( $dir=='entrata' ){
|
||
|
if( $idrivalsainps!='0' )
|
||
|
$idrivalsainps = get_var("Percentuale rivalsa INPS");
|
||
|
}
|
||
|
|
||
|
$query = "SELECT percentuale FROM co_rivalsainps WHERE id='".$idrivalsainps."'";
|
||
|
$rs = $dbo->fetchArray($query);
|
||
|
$rivalsainps = $totale_imponibile/100*$rs[0]['percentuale'];
|
||
|
|
||
|
//Aggiorno la rivalsa inps
|
||
|
//$dbo->query("UPDATE or_ordini SET rivalsainps='$rivalsainps' WHERE id='$idordine'");
|
||
|
|
||
|
|
||
|
//Leggo la ritenuta d'acconto se c'è
|
||
|
$totale_ordine = get_totale_ordine($idordine);
|
||
|
|
||
|
//Leggo la rivalsa inps se c'è (per i ordine di vendita lo leggo dalle impostazioni)
|
||
|
if( $idritenutaacconto!='0' ){
|
||
|
if( $dir=='entrata' ){
|
||
|
$idritenutaacconto = get_var("Percentuale ritenuta d'acconto");
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
$query = "SELECT percentuale FROM co_ritenutaacconto WHERE id='".$idritenutaacconto."'";
|
||
|
$rs = $dbo->fetchArray($query);
|
||
|
$ritenutaacconto = $totale_preventivo/100*$rs[0]['percentuale'];
|
||
|
$netto_a_pagare = $totale_preventivo-$ritenutaacconto;
|
||
|
|
||
|
//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' ){
|
||
|
|
||
|
}
|
||
|
else{
|
||
|
$bolli = str_replace( ",", ".", get_var("Importo marca da bollo") );
|
||
|
if( abs($bolli)>0 && abs($netto_a_pagare)>abs(get_var("Soglia minima per l'applicazione della marca da bollo")) )
|
||
|
$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 or_ordini SET ritenutaacconto='$ritenutaacconto', bollo='$marca_da_bollo' WHERE id='$idordine'");
|
||
|
}
|
||
|
else{
|
||
|
//$dbo->query("UPDATE or_ordini SET ritenutaacconto='0', bollo='0', sconto='0', rivalsainps='0' WHERE id='$idordine'");
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
/**
|
||
|
* Restituisce lo stato dell'ordine in base alle righe
|
||
|
*/
|
||
|
function get_stato_preventivo( $idpreventivo ){
|
||
|
global $dbo;
|
||
|
|
||
|
$rs = $dbo->fetchArray("SELECT SUM(qta) AS qta, SUM(qta_evasa) AS qta_evasa FROM co_righe_preventivi GROUP BY idpreventivo HAVING idpreventivo='".$idpreventivo."'");
|
||
|
|
||
|
if( $rs[0]['qta_evasa'] > 0 ){
|
||
|
if( $rs[0]['qta'] > $rs[0]['qta_evasa'] )
|
||
|
return "Parzialmente evaso";
|
||
|
|
||
|
else if( $rs[0]['qta'] == $rs[0]['qta_evasa'] )
|
||
|
return "Evaso";
|
||
|
}
|
||
|
|
||
|
else
|
||
|
return "Non evaso";
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
* Aggiorna il budget del preventivo leggendo tutte le righe inserite
|
||
|
*/
|
||
|
function update_budget_preventivo( $idpreventivo ){
|
||
|
global $dbo;
|
||
|
|
||
|
//Totale articoli
|
||
|
$rs = $dbo->fetchArray("SELECT SUM(subtotale) AS totale FROM co_righe_preventivi GROUP BY idpreventivo HAVING idpreventivo=\"".$idpreventivo."\"");
|
||
|
$totale_articoli = $rs[0]['totale'];
|
||
|
|
||
|
//Totale costo ore, km e diritto di chiamata
|
||
|
$rs = $dbo->fetchArray("SELECT SUM(costo_orario*ore_lavoro + costo_diritto_chiamata) AS totale FROM co_preventivi GROUP BY id HAVING id=\"".$idpreventivo."\"");
|
||
|
$totale_lavoro = $rs[0]['totale'];
|
||
|
|
||
|
//Aggiorno il budget su co_preventivi
|
||
|
$dbo->query("UPDATE co_preventivi SET budget=\"".($totale_articoli + $totale_lavoro)."\" WHERE id=\"".$idpreventivo."\"");
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
* 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;
|
||
|
$dir='entrata';
|
||
|
//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;
|
||
|
|
||
|
//Leggo la marca da bollo se c'è e se il netto a pagare supera la soglia
|
||
|
$bolli = str_replace( ",", ".", $bolli);
|
||
|
$bolli = floatval($bolli);
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
//gestione marca da bollo
|
||
|
$query = "SELECT marca_bollo , ges_marca FROM co_tipidocumento LEFT JOIN co_documenti ON co_tipidocumento.id=co_documenti.idtipodocumento WHERE co_documenti.id='".$iddocumento."'";
|
||
|
$rs_marca = $dbo->fetchArray($query);
|
||
|
$val_bollo=$rs_marca[0]['marca_bollo'];
|
||
|
$ges_bollo=$rs_marca[0]['ges_marca'];
|
||
|
|
||
|
if( $dir=='uscita' ){
|
||
|
if( $bolli!=0.00 ){
|
||
|
$bolli = str_replace( ",", ".", $bolli );
|
||
|
if( abs($bolli)>0 && abs($netto_a_pagare>$ges_bollo) )
|
||
|
|
||
|
$marca_da_bollo = str_replace( ",", ".", $bolli );
|
||
|
else
|
||
|
$marca_da_bollo = 0.00;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else{
|
||
|
$bolli = str_replace( ",", ".", $val_bollo );
|
||
|
if( abs($bolli)>0 && abs($netto_a_pagare)>abs($ges_bollo) )
|
||
|
|
||
|
$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'");
|
||
|
}
|
||
|
}
|
||
|
?>
|
||
|
|
||
|
|
||
|
|