Fix some issues with PRINTJRN

This commit is contained in:
Dany De Bontridder 2018-01-17 21:51:19 +01:00
parent 6f25435751
commit 4b3e8d33ba
4 changed files with 192 additions and 30 deletions

View file

@ -27,8 +27,9 @@ require_once NOALYSS_INCLUDE.'/lib/database.class.php';
require_once NOALYSS_INCLUDE.'/lib/itext.class.php';
require_once NOALYSS_INCLUDE.'/lib/http_input.class.php';
require_once NOALYSS_INCLUDE.'/lib/function_javascript.php';
require_once NOALYSS_INCLUDE.'/lib/icon_action.class.php';
@html_page_start($_SESSION['g_theme']);
html_page_start($_SESSION['g_theme']);
$rep=new Database();
require_once NOALYSS_INCLUDE.'/class/user.class.php';
$User=new User($rep);

View file

@ -646,6 +646,22 @@ class Acc_Ledger extends jrn_def_sql
*
* @paramp_array the structure is set in get_rowSimple, this array is
* modified,
@verbatim
jrn.jr_id as jr_id ,
jrn.jr_id as num ,
jrn.jr_def_id as jr_def_id,
jrn.jr_montant as montant,
substr(jrn.jr_comment,1,35) as comment,
to_char(jrn.jr_date,'DD-MM-YYYY') as date,
to_char(jrn.jr_date_paid,'DD-MM-YYYY') as date_paid,
jr_pj_number,
jr_internal,
jrn.jr_grpt_id as grpt_id,
jrn.jr_pj_name as pj,
jrn_def_type,
jrn.jr_tech_per
@endverbatim
*
* @param $trunc if the data must be truncated, usefull for pdf export
* @paramp_jrn_type is the type of the ledger (ACH or VEN)
* @param $a_TVA TVA Array (default null)
@ -671,6 +687,7 @@ class Acc_Ledger extends jrn_def_sql
// init
$p_array['client']="";
$p_array['TVAC']=0;
$p_array['HTVA']=0;
$p_array['TVA']=array();
$p_array['AMOUNT_TVA']=0.0;
$p_array['dep_priv']=0;
@ -678,7 +695,87 @@ class Acc_Ledger extends jrn_def_sql
$p_array['tva_dna']=0;
$p_array['tva_np']=0;
$dep_priv=0.0;
// if using the QUANT_* tables then get there the needed info
//
if ( $this->use_quant_table($p_array['grpt_id'],$p_array['jrn_def_type']) == TRUE)
{
// Initialize amount for VAT
$nb_tva=count($a_TVA);
for ($i=0;$i<$nb_tva;$i++) {
$p_array['TVA'][$i]=array($i,
array(
$a_TVA[$i]['tva_id'],
$a_TVA[$i]['tva_label'],
0)
);
}
switch ($p_array['jrn_def_type'])
{
case "ACH":
$sql="select
sum(coalesce(qp_price,0)) as htva,
sum(coalesce(qp_vat)) as vat,
sum(coalesce(qp_nd_tva)) as nd_tva,
sum(coalesce(qp_nd_tva_recup)) as nd_tva_recup,
sum(coalesce(qp_dep_priv)) as dep_priv,
qp_vat_code as tva_code,
qp_supplier as fiche_id,
qp_vat_sided as tva_sided
from
quant_purchase
where
qp_internal=$1
group by qp_supplier,qp_vat_code,qp_vat_sided ";
break;
case "VEN":
$sql="select
sum(coalesce(qs_price,0)) as htva,
sum(coalesce(qs_vat)) as vat,
sum(0) as nd_tva,
sum(0) as nd_tva_recup,
sum(0) as dep_priv,
qs_vat_code as tva_code,
qs_client as fiche_id,
qs_vat_sided as tva_sided
from
quant_sold
where
qs_internal=$1
group by qs_client,qs_vat_code,qs_vat_sided ";
break;
default:
break;
}
$a_detail=$this->db->get_array($sql,array($p_array['jr_internal']));
$nb_detail=count($a_detail);
for ($x=0;$x<$nb_detail;$x++) {
$p_array['HTVA']=bcadd($p_array['HTVA'],$a_detail[$x]['htva']);
$p_array['tva_dna']=bcadd($p_array['tva_dna'],$a_detail[$x]['nd_tva_recup']);
$p_array['tva_dna']=bcadd($p_array['tva_dna'],$a_detail[$x]['nd_tva']);
$p_array['TVAC']=bcadd($p_array['TVAC'],$a_detail[$x]['htva']);
if ( $a_detail[$x]['tva_sided'] == 0)
$p_array['TVAC']=bcadd($p_array['TVAC'],$a_detail[$x]['vat']);
$p_array['TVAC']=bcadd($p_array['TVAC'],$a_detail[$x]['nd_tva']);
$p_array['TVAC']=bcadd($p_array['TVAC'],$a_detail[$x]['nd_tva_recup']);
$p_array['dep_priv']=bcadd($p_array['dep_priv'],$a_detail[$x]['dep_priv']);
$xdx=$a_detail[$x]['tva_code'];
// $p_array['TVA'][$xdx]=bcadd($p_array['TVA'][$xdx],$a_detail[$x]['vat']);
//--- Put VAT in the right place in the array $a_TVA
$nb_tva=count($a_TVA);
for ($j=0;$j<$nb_tva;$j++) {
if ( $xdx == $p_array['TVA'][$j][1][0]) {
$p_array['TVA'][$j][1][2]=bcadd($p_array['TVA'][$j][1][2],$a_detail[$x]['vat']);
}
}
}
$fiche=new Fiche($this->db,$a_detail[0]['fiche_id']);
$p_array['client']=($trunc==0)?$fiche->getName():mb_substr($fiche->getName(),0, 20);
return $p_array;
}
//
// Retrieve data from jrnx
// Order is important for TVA autoreversed
@ -3244,7 +3341,38 @@ class Acc_Ledger extends jrn_def_sql
{
return $this->db->get_value("select jrn_enable from jrn_def where jrn_def_id=$1",[$this->id]);
}
/**
* Check if the operation is used in the table quant*
* @param integer $p_grpt_id
* @param string $p_jrn_type ledger's type ACH, VEN,ODS or FIN
* @return boolean TRUE if existing info in quant*
* @Exceptions code 1000 if unknown ledger's type
*/
function use_quant_table($p_grpt_id,$p_jrn_type)
{
if ( $p_jrn_type == 'ACH')
{
$sql="select count(*) from jrnx join quant_purchase using (j_id) where j_grpt=$1";
}elseif ($p_jrn_type=='VEN')
{
$sql="select count(*) from jrnx join quant_sold using (j_id) where j_grpt=$1";
}elseif ($p_jrn_type=='FIN')
{
$sql="select count(*) from jrn join quant_fin using (jr_id) where jr_grpt_id=$1";
}elseif ($p_jrn_type=='ODS') return 0;
else
{
throw new Exception(_('Journal incorrect'),1000);
}
$count=$this->db->get_value($sql,[$p_grpt_id]);
if ($count > 0) return TRUE;
return FALSE;
}
}
?>

View file

@ -59,7 +59,10 @@ class Print_Ledger_Simple extends PDF
}
$this->rap_htva=$this->previous['price'];
$this->rap_tvac=$this->previous['price']+$this->previous['vat'];
$this->rap_tvac=bcadd($this->previous['price'],$this->previous['vat']);
$this->rap_tvac=bcadd($this->rap_tvac,$this->previous['tva_nd']);
$this->rap_tvac=bcsub($this->rap_tvac,$this->previous['tva_np']);
$this->rap_tvac=bcsub($this->rap_tvac,$this->previous['reversed']);
$this->rap_priv=$this->previous['priv'];
$this->rap_nd=$this->previous['tva_nd'];
$this->rap_tva_np=$this->previous['tva_np'];
@ -237,16 +240,7 @@ class Print_Ledger_Simple extends PDF
/* get other amount (without vat, total vat included, private, ND */
$other=$this->ledger->get_other_amount($a_jrn[$i]['jr_grpt_id']);
$this->tp_htva=bcadd($this->tp_htva,$other['price']);
$this->tp_tvac=bcadd($this->tp_tvac,$other['price']+$other['vat']);
$this->tp_tva_np=bcadd($this->tp_tva_np,$other['tva_np']);
$this->tp_priv=bcadd($this->tp_priv,$other['priv']);
$this->tp_nd=bcadd($this->tp_nd,$other['tva_nd']);
$this->rap_htva=bcadd($this->rap_htva,$other['price']);
$this->rap_tvac=bcadd($this->rap_tvac,bcadd($other['price'], bcsub($other['vat'],$other['tva_np'])));
$this->rap_priv=bcadd($this->rap_priv,$other['priv']);
$this->rap_nd=bcadd($this->rap_nd,$other['tva_nd']);
$this->rap_tva_np=bcadd($this->rap_tva_np,$other['tva_np']);
$this->write_cell(15,5,nbm($other['price']),0,0,'R');
@ -267,6 +261,26 @@ class Print_Ledger_Simple extends PDF
$l_tvac=bcadd($l_tvac,$other['tva_nd']);
$this->write_cell(15,5,nbm($l_tvac),0,0,'R');
$this->line_new(5);
// Total page
$this->tp_htva=bcadd($this->tp_htva,$other['price']);
$this->tp_tvac=bcadd($this->tp_tvac,$other['price']);
$this->tp_tvac=bcadd($this->tp_tvac,$other['vat']);
$this->tp_tvac=bcadd($this->tp_tvac,$other['tva_nd']);
$this->tp_tvac=bcsub($this->tp_tvac,$other['tva_np']);
$this->tp_tva_np=bcadd($this->tp_tva_np,$other['tva_np']);
$this->tp_priv=bcadd($this->tp_priv,$other['priv']);
$this->tp_nd=bcadd($this->tp_nd,$other['tva_nd']);
// Total report
$this->rap_htva=bcadd($this->rap_htva,$other['price']);
$this->rap_tvac=bcadd($this->rap_tvac,$other['price']);
$this->rap_tvac=bcadd($this->rap_tvac,$other['vat']);
$this->rap_tvac=bcsub($this->rap_tvac,$other['tva_np']);
$this->rap_tvac=bcadd($this->rap_tvac,$other['tva_nd']);
$this->rap_priv=bcadd($this->rap_priv,$other['priv']);
$this->rap_nd=bcadd($this->rap_nd,$other['tva_nd']);
$this->rap_tva_np=bcadd($this->rap_tva_np,$other['tva_np']);
}
}

View file

@ -40,42 +40,60 @@ $tot['dna']=0;
$tot['tva_nd']=0;
$tot['tvac']=0;
$tot['tva']=array();
bcscale(2);
bcscale(4);
foreach ($Row as $line) {
$i++;
/*
* Get date of reconcile operation
*/
$ret_reconcile=$cn->execute('reconcile_date',array($line['jr_id']));
if ($line["jr_pj_number"]=="A17.1392") { var_dump($line); echo "1-".$line['HTVA'];}
$class = ($i % 2 == 0) ? ' class="even" ' : ' class="odd" ';
echo "<tr $class>";
// Receipt number
echo "<TD>" . h($line['jr_pj_number']) . "</TD>";
// Date
echo "<TD>" . smaller_date($line['date']) . "</TD>";
echo "<TD>" . smaller_date($line['date_paid']) . "</TD>";
// Internal with detail
echo "<TD>" . HtmlInput::detail_op($line['jr_id'], $line['jr_internal']) . "</TD>";
// find the tiers (normally in $Row !
$tiers = $Jrn->get_tiers($line['jrn_def_type'], $line['jr_id']);
if ($line["jr_pj_number"]=="A17.1392") { echo "2-".$line['HTVA'];}
echo td($tiers);
// Label
echo "<TD>" . h($line['comment']) . "</TD>";
$dep_priv=($line['dep_priv']==0)?"":nbm($line['dep_priv']);
// Private expense
$dep_priv=($line['dep_priv']==0)?"":nbm(round($line['dep_priv'],2),2);
$tot['dep_priv']=bcadd($tot['dep_priv'], floatval($line['dep_priv']));
$dna=($line['dna']==0)?"":nbm($line['dna']);
$tot['dna']=bcadd($tot['dna'],floatval($line['dna']));
if ($line["jr_pj_number"]=="A17.1392") { echo "3-".$line['HTVA'];}
echo "<TD class=\"num\">" . nbm($line['HTVA']) . "</TD>";
$tot['htva']=bcadd($tot['htva'], floatval($line['HTVA']));
// No deductible
$dna=($line['dna']==0)?"":nbm(round($line['dna'],2),2);
$tot['dna']=bcadd($tot['dna'],round(floatval($line['dna'])),2);
// HTVA amount
echo "<TD class=\"num\">" . nbm(round($line['HTVA'],2),2) . "</TD>";
$tot['htva']=bcadd($tot['htva'], round(floatval($line['HTVA']),2));
echo "<TD class=\"num\">" .$dep_priv . "</TD>";
echo "<TD class=\"num\">" . $dna . "</TD>";
//--------------------------------------------------------------------------
// If VAT then display it
//--------------------------------------------------------------------------
if ($own->MY_TVA_USE == 'Y' )
{
$tva_dna=($line['tva_dna']==0)?"":nbm($line['tva_dna']);
$tot['tva_nd']=bcadd($tot['tva_nd'], floatval($line['tva_dna']));
$tva_dna=($line['tva_dna']==0)?"":nbm(round($line['tva_dna']),2);
$tot['tva_nd']=bcadd($tot['tva_nd'], round(floatval($line['tva_dna']),2));
echo "<TD class=\"num\">" . $tva_dna. "</TD>";
$a_tva_amount=array();
foreach ($line['TVA'] as $lineTVA)
{
{
foreach ($a_Tva as $idx=>$line_tva)
{
@ -89,16 +107,17 @@ foreach ($Row as $line) {
foreach ($a_Tva as $line_tva)
{
$a=$line_tva['tva_id'];
if ( isset($a_tva_amount[$a])) {
echo '<td class="num">'.nb($a_tva_amount[$a]).'</td>';
$tot['tva'][$a]=(isset($tot['tva'][$a]))?bcadd($tot['tva'][$a],floatval($a_tva_amount[$a])):floatval($a_tva_amount[$a]);
if ( isset($a_tva_amount[$a]) && $a_tva_amount[$a] != 0) {
echo '<td class="num">'.nb(round($a_tva_amount[$a],2)).'</td>';
$tot['tva'][$a]=(isset($tot['tva'][$a]))?bcadd($tot['tva'][$a],round(floatval($a_tva_amount[$a]),2)):round(floatval($a_tva_amount[$a]),2);
}
else
printf("<td class=\"num\"></td>");
}
}
echo '<td class="num">'.$line['TVAC'].'</td>';
$tot['tvac']=bcadd($tot['tvac'], floatval($line['TVAC']));
echo '<td class="num">'.round($line['TVAC'],2).'</td>';
$tot['tvac']=bcadd($tot['tvac'], round(floatval($line['TVAC']),2));
/*
* If reconcile print them
*/