Task #1060 - Historique TVA autoliquidation

This commit is contained in:
Dany De Bontridder 2014-12-03 21:21:08 +01:00
parent 2160f1889d
commit 6fab9d2331
2 changed files with 49 additions and 40 deletions

View file

@ -2705,7 +2705,7 @@ class Acc_Ledger extends jrn_def_sql
(
select sum(qp_price)+sum(vat)+sum(qp_nd_tva)+sum(qp_nd_tva_recup)
from
(select qp_internal,qp_price,qp_nd_tva,qp_nd_tva_recup,case when qp_vat_sided<>0 then 0 else qp_vat end as vat from quant_purchase where qp_internal=X.jr_internal) as invoice_purchase
(select qp_internal,qp_price,qp_nd_tva,qp_nd_tva_recup,qp_vat-qp_vat_sided as vat from quant_purchase where qp_internal=X.jr_internal) as invoice_purchase
)
else null
end as total_invoice,
@ -3138,6 +3138,7 @@ class Acc_Ledger extends jrn_def_sql
$sql = "select coalesce(sum(qp_price),0) as price" .
" ,coalesce(sum(qp_vat),0) as vat " .
',coalesce(sum(qp_dep_priv),0) as priv' .
',coalesce(sum(qp_vat_sided),0) as reversed' .
',coalesce(sum(qp_nd_tva_recup),0)+coalesce(sum(qp_nd_tva),0) as tva_nd' .
' from quant_purchase join jrnx using(j_id) ' .
' where j_tech_per >= $1 and j_tech_per < $2';
@ -3157,6 +3158,7 @@ class Acc_Ledger extends jrn_def_sql
" ,coalesce(sum(qs_vat),0) as vat " .
',0 as priv' .
',0 as tva_nd' .
',coalesce(sum(qs_vat_sided),0) as reversed' .
' from quant_sold join jrnx using(j_id) ' .
' where j_tech_per >= $1 and j_tech_per < $2';
$array = $this->db->get_array($sql, array($min->p_id, $p_to));

View file

@ -274,20 +274,19 @@ class Acc_Ledger_Purchase extends Acc_Ledger
* @param Fiche $p_fiche Concerned Card (purchase items)
* @param type $p_tva_bot 0 TVA on one side, 1 TVA on both side
*/
private function compute_no_deductible(Acc_Compute $p_nd_amount, Fiche $p_fiche, $p_tva_both)
private function compute_no_deductible(Acc_Compute $p_nd_amount, Fiche $p_fiche)
{
if (!$p_fiche->empty_attribute(ATTR_DEF_DEPENSE_NON_DEDUCTIBLE))
{
$p_nd_amount->amount_nd_rate = $p_fiche->strAttribut(ATTR_DEF_DEPENSE_NON_DEDUCTIBLE);
$p_nd_amount->compute_nd();
}
if (!$p_fiche->empty_attribute(ATTR_DEF_TVA_NON_DEDUCTIBLE) && $p_tva_both == 0)
if (!$p_fiche->empty_attribute(ATTR_DEF_TVA_NON_DEDUCTIBLE) )
{
$p_nd_amount->nd_vat_rate = $p_fiche->strAttribut(ATTR_DEF_TVA_NON_DEDUCTIBLE);
$p_nd_amount->compute_nd_vat();
}
if (!$p_fiche->empty_attribute(ATTR_DEF_TVA_NON_DEDUCTIBLE_RECUP) && $p_tva_both == 0)
if (!$p_fiche->empty_attribute(ATTR_DEF_TVA_NON_DEDUCTIBLE_RECUP) )
{
$p_nd_amount->nd_ded_vat_rate = $p_fiche->strAttribut(ATTR_DEF_TVA_NON_DEDUCTIBLE_RECUP);
$p_nd_amount->compute_ndded_vat();
@ -528,6 +527,7 @@ class Acc_Ledger_Purchase extends Acc_Ledger
$tot_perso=0;
$tot_tva_nd=0;
$tot_tva_ndded=0;
$tot_tva_reversed=0;
$tva=array();
/* Save all the items without vat and no deductible vat and expense*/
for ($i=0;$i< $nb_item;$i++)
@ -538,7 +538,7 @@ class Acc_Ledger_Purchase extends Acc_Ledger
/* First we save all the items without vat */
$fiche=new Fiche($this->db);
$fiche->get_by_qcode(${"e_march".$i});
$tva_both=0;
$tva_both=0;
/* tva */
if ($g_parameter->MY_TVA_USE=='Y')
{
@ -546,7 +546,7 @@ class Acc_Ledger_Purchase extends Acc_Ledger
$oTva=new Acc_Tva($this->db);
$oTva->set_parameter('id',$idx_tva);
$oTva->load();
$tva_both=$oTva->get_parameter("both_side");
$tva_both=$oTva->get_parameter("both_side");
}
/* -- Create acc_operation -- */
$acc_operation=new Acc_Operation($this->db);
@ -565,7 +565,7 @@ class Acc_Ledger_Purchase extends Acc_Ledger
$acc_amount->check=false;
$acc_amount->set_parameter('amount',$amount);
// Compute VAT or take the given one
if ( $g_parameter->MY_TVA_USE=='Y')
{
$acc_amount->set_parameter('amount_vat_rate',$oTva->get_parameter('rate'));
@ -579,14 +579,17 @@ class Acc_Ledger_Purchase extends Acc_Ledger
$acc_amount->amount_vat= ${'e_march'.$i.'_tva_amount'};
}
if ($tva_both==0) $tot_tva=bcadd($tot_tva,$acc_amount->amount_vat);
$tot_tva=bcadd($tot_tva,$acc_amount->amount_vat);
}
/* compute ND */
$this->compute_no_deductible($acc_amount, $fiche, $tva_both);
$save_amount_vat=$acc_amount->amount_vat;
$this->compute_no_deductible($acc_amount, $fiche);
$acc_amount->correct();
// TVA which avoid
$acc_amount->amount_to_reverse=($tva_both == 1 ) ? $save_amount_vat :0 ;
$tot_tva_reversed=bcadd($tot_tva_reversed,$acc_amount->amount_to_reverse);
@ -658,7 +661,6 @@ class Acc_Ledger_Purchase extends Acc_Ledger
//-----
if ( $g_parameter->MY_TVA_USE=='Y')
{
if ( $tva_both==1) $n_both=$acc_amount->amount_vat;
$r=$this->db->exec_sql("select insert_quant_purchase ".
"(null".
@ -672,7 +674,7 @@ class Acc_Ledger_Purchase extends Acc_Ledger
",".$acc_amount->nd_vat. /* 9 */
",".$acc_amount->nd_ded_vat. /* 10 */
",".$acc_amount->amount_perso. /* 11 */
",'".$e_client."',".$n_both.")"); /* 12 */
",'".$e_client."',". $acc_amount->amount_to_reverse.")"); /* 12 */
}
else
@ -689,7 +691,7 @@ class Acc_Ledger_Purchase extends Acc_Ledger
",0".
",".$acc_amount->nd_ded_vat.
",".$acc_amount->amount_perso.
",'".$e_client."',".$n_both.")");
",'".$e_client."',".$acc_amount->amount_to_reverse.")");
}
@ -700,7 +702,7 @@ class Acc_Ledger_Purchase extends Acc_Ledger
$acc_operation=new Acc_Operation($this->db);
$acc_operation->date=$e_date;
$acc_operation->poste=$poste;
$acc_operation->amount=$cust_amount;
$acc_operation->amount=$cust_amount-$tot_tva_reversed;
$acc_operation->grpt=$seq;
$acc_operation->jrn=$p_jrn;
$acc_operation->type='c';
@ -740,16 +742,17 @@ class Acc_Ledger_Purchase extends Acc_Ledger
{
$poste_vat=$oTva->get_side('c');
$cust_amount=bcadd($tot_amount,$tot_tva);
$cust_amount=bcsub($tot_amount,$tot_tva_reversed);
$acc_operation=new Acc_Operation($this->db);
$acc_operation->date=$e_date;
$acc_operation->poste=$poste_vat;
$acc_operation->amount=$value;
$acc_operation->amount=$tot_tva_reversed;
$acc_operation->grpt=$seq;
$acc_operation->jrn=$p_jrn;
$acc_operation->type='c';
$acc_operation->periode=$tperiode;
$acc_operation->insert_jrnx();
if ( $value < 0 ) $tot_debit=bcadd($tot_debit,abs($value));
if ( $value < 0 ) $tot_debit=bcadd($tot_debit,abs($value));
}
}
@ -1427,23 +1430,19 @@ class Acc_Ledger_Purchase extends Acc_Ledger
else
$fiche_name=$fiche->strAttribut (ATTR_DEF_NAME);
$amount=bcmul(${"e_march".$i."_price"},${'e_quant'.$i});
if ( $g_parameter->MY_TVA_USE=='Y')
{
$idx_tva=${"e_march".$i."_tva_id"};
$oTva=new Acc_Tva($this->db);
$oTva->set_parameter('id',$idx_tva);
$oTva->load();
}
$amount=bcmul(${"e_march".$i."_price"},${'e_quant'.$i});
$op=new Acc_Compute();
if ( $g_parameter->MY_TVA_USE=='Y')
{
$op=new Acc_Compute();
$op->set_parameter("amount",$amount);
$op->set_parameter('amount_vat_rate',$oTva->get_parameter('rate'));
$op->compute_vat();
$tva_computed=$op->get_parameter('amount_vat');
$op->set_parameter("amount",$amount);
$op->set_parameter('amount_vat_rate',$oTva->get_parameter('rate'));
$op->compute_vat();
$tva_computed=$op->get_parameter('amount_vat');
//----- if tva_amount is not given we compute the vat ----
if ( strlen (trim (${'e_march'.$i.'_tva_amount'})) == 0)
{
@ -1456,8 +1455,9 @@ class Acc_Ledger_Purchase extends Acc_Ledger
$tva[$idx_tva]+=$tva_item;
else
$tva[$idx_tva]=$tva_item;
$tot_tva=round(bcadd($tva_item,$tot_tva),2);
$tot_row=bcadd($tot_row,$tva_item);
}
$tot_amount=round(bcadd($tot_amount,$amount),2);
$tot_row=bcadd($tot_row,$amount);
@ -1474,32 +1474,39 @@ class Acc_Ledger_Purchase extends Acc_Ledger
$r.='<td class="num">';
$r.=nbm(${"e_quant".$i});
$r.='</td>';
$both_side=0;
if ($g_parameter->MY_TVA_USE == 'Y')
{
$r.='<td class="num">';
$r.=$oTva->get_parameter('label');
$both_side=$oTva->get_parameter("both_side");
if ( $both_side == 0) {
$tot_row=bcadd($tot_row,$tva_item);
$tot_tva=round(bcadd($tva_item,$tot_tva),2);
}
$r.='</td>';
/* warning if tva_computed and given are not the
same */
bcscale(2);
bcscale(2);
$css_void_tva=($both_side == 1)?'style="text-decoration:line-through"':'';
if ( bcsub($tva_item,$tva_computed) != 0)
{
$r.='<td style="background-color:red" class="num">';
$r.='<td style="background-color:red" class="num" '.$css_void_tva.'>';
$r.=HtmlInput::infobulle(28);
$r.='<a href="#" class="error" style="display:inline" title="'. _("Attention Différence entre TVA calculée et donnée").'">'
$r.='<a href="#" class="error" style="display:inline" title="'. _("Attention Différence entre TVA calculée et donnée").'">'
.nbm($tva_item).'<a>';
}
else{
$r.='<td class="num">';
$r.=nbm($tva_item);
}
else{
$r.='<td class="num" '.$css_void_tva.'>';
$r.=nbm($tva_item);
}
$r.='</td>';
$r.='<td class="num">';
$r.=nbm(round($amount,2));
$r.='</td>';
$r.='<td class="num">';
$r.=nbm(round($amount,2));
$r.='</td>';
}
$r.='<td class="num">';
$r.='<td class="num">';
$r.=nbm(round($tot_row,2));
$r.='</td>';
// encode the pa