mirror of
https://github.com/YunoHost-Apps/noalyss_ynh.git
synced 2024-09-03 19:46:20 +02:00
241 lines
9 KiB
PHP
241 lines
9 KiB
PHP
|
<?php
|
||
|
|
||
|
/*
|
||
|
* Copyright (C) 2015 Dany De Bontridder <dany@alchimerys.be>
|
||
|
*
|
||
|
* This program is free software; you can redistribute it and/or
|
||
|
* modify it under the terms of the GNU General Public License
|
||
|
* as published by the Free Software Foundation; either version 2
|
||
|
* of the License, or (at your option) any later version.
|
||
|
*
|
||
|
* This program is distributed in the hope that it will be useful,
|
||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
|
* GNU General Public License for more details.
|
||
|
*
|
||
|
* You should have received a copy of the GNU General Public License
|
||
|
* along with this program; if not, write to the Free Software
|
||
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||
|
*/
|
||
|
require_once NOALYSS_INCLUDE.'/class_lettering.php';
|
||
|
|
||
|
/* * *
|
||
|
* @file
|
||
|
* @brief compute the ageing balance, currently this code is not used
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
class Balance_Age
|
||
|
{
|
||
|
|
||
|
private $cn;
|
||
|
|
||
|
function __construct($p_cn)
|
||
|
{
|
||
|
$this->cn=$p_cn;
|
||
|
$this->afiche=null;
|
||
|
}
|
||
|
|
||
|
function get_array_card($p_type, $p_extra="")
|
||
|
{
|
||
|
switch ($p_type)
|
||
|
{
|
||
|
case 'X':
|
||
|
$this->afiche=$this->cn->get_array("
|
||
|
with m as (select distinct qp_supplier as f_id from quant_purchase union select qs_client from quant_sold)
|
||
|
select distinct fiche.f_id as f_id ,f1.ad_value as name, f3.ad_value as first_name,f2.ad_value as quick_code
|
||
|
from fiche
|
||
|
join m on (fiche.f_id=m.f_id)
|
||
|
join fiche_detail as f1 on (fiche.f_id=f1.f_id and f1.ad_id=1)
|
||
|
join fiche_detail as f2 on (fiche.f_id=f2.f_id and f2.ad_id=23)
|
||
|
left join fiche_detail as f3 on (fiche.f_id=f3.f_id and f3.ad_id=32)
|
||
|
where
|
||
|
fiche.fd_id=$1
|
||
|
order by f1.ad_value
|
||
|
", array($p_extra));
|
||
|
break;
|
||
|
case 'U':
|
||
|
$fiche=new Fiche($this->cn, $p_extra);
|
||
|
$this->afiche[0]['f_id']=$fiche->id;
|
||
|
$this->afiche[0]['quick_code']=$fiche->get_quick_code();
|
||
|
$this->afiche[0]['name']=$fiche->strAttribut(ATTR_DEF_NAME, 0);
|
||
|
$this->afiche[0]['first_name']=$fiche->strAttribut(ATTR_DEF_FIRST_NAME, 0);
|
||
|
break;
|
||
|
case 'F':
|
||
|
$this->afiche=$this->cn->get_array("
|
||
|
select distinct qp_supplier as f_id ,f1.ad_value as name, f3.ad_value as first_name,f2.ad_value as quick_code
|
||
|
from quant_purchase join
|
||
|
fiche_detail as f1 on (qp_supplier=f1.f_id and f1.ad_id=1)
|
||
|
join fiche_detail as f2 on (qp_supplier=f2.f_id and f2.ad_id=23)
|
||
|
left join fiche_detail as f3 on (qp_supplier=f3.f_id and f3.ad_id=32)
|
||
|
order by f1.ad_value
|
||
|
");
|
||
|
break;
|
||
|
case 'C':
|
||
|
$this->afiche=$this->cn->get_array("
|
||
|
select distinct qs_client as f_id ,f1.ad_value as name, f3.ad_value as first_name,f2.ad_value as quick_code
|
||
|
from quant_sold join
|
||
|
fiche_detail as f1 on (qs_client=f1.f_id and f1.ad_id=1)
|
||
|
join fiche_detail as f2 on (qs_client=f2.f_id and f2.ad_id=23)
|
||
|
left join fiche_detail as f3 on (qs_client=f3.f_id and f3.ad_id=32)
|
||
|
order by f1.ad_value
|
||
|
");
|
||
|
break;
|
||
|
default:
|
||
|
throw new Exception('Type invalide');
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function display_card($p_date_start, $p_fiche, $p_let)
|
||
|
{
|
||
|
$this->get_array_card('U', $p_fiche);
|
||
|
$a_fiche=$this->afiche;
|
||
|
$nb_fiche=count($a_fiche);
|
||
|
require 'template/balance_aged_result.php';
|
||
|
}
|
||
|
|
||
|
function display_category($p_date_start, $p_cat, $p_let)
|
||
|
{
|
||
|
// Get all fiche from Purchase
|
||
|
|
||
|
$this->get_array_card('X', $p_cat);
|
||
|
$a_fiche=$this->afiche;
|
||
|
$nb_fiche=count($a_fiche);
|
||
|
require 'template/balance_aged_result.php';
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Display all the operation for the customer
|
||
|
* @param type $p_date_start min date of the operatin
|
||
|
* @param type $p_let 'unlet' only unlettered or 'let' for all
|
||
|
*/
|
||
|
function display_purchase($p_date_start, $p_let)
|
||
|
{
|
||
|
// Get all fiche from Purchase
|
||
|
$this->get_array_card('F');
|
||
|
$a_fiche=$this->afiche;
|
||
|
$nb_fiche=count($a_fiche);
|
||
|
require 'template/balance_aged_result.php';
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Display all the operation for the supplier
|
||
|
* @param type $p_date_start min date of the operatin
|
||
|
* @param type $p_let 'unlet' only unlettered or 'let' for all
|
||
|
*/
|
||
|
function display_sale($p_date_start, $p_let)
|
||
|
{
|
||
|
// Get all fiche from Purchase
|
||
|
$this->get_array_card('C');
|
||
|
$a_fiche=$this->afiche;
|
||
|
$nb_fiche=count($a_fiche);
|
||
|
require 'template/balance_aged_result.php';
|
||
|
}
|
||
|
|
||
|
function export_csv($p_date_start, $p_let)
|
||
|
{
|
||
|
$nb_fiche=count($this->afiche);
|
||
|
$title=sprintf('"%s";', _('QuickCode'));
|
||
|
$title.=sprintf('"%s";', _('Nom'));
|
||
|
$title.=sprintf('"%s";', _('Prénom'));
|
||
|
$title.=sprintf('"%s";', _('Date'));
|
||
|
$title.=sprintf('"%s";', _('N° pièce'));
|
||
|
$title.=sprintf('"%s";', _('Interne'));
|
||
|
$title.=sprintf('"%s";', _('Fin'));
|
||
|
$title.=sprintf('"%s";', _('<30 jours'));
|
||
|
$title.=sprintf('"%s";', _('entre 30 et 60 jours'));
|
||
|
$title.=sprintf('"%s";', _('entre 60 et 90 jours'));
|
||
|
$title.=sprintf('"%s";', _('> 90 jours'));
|
||
|
$title.=sprintf("\n\r");
|
||
|
$flag_title=false;
|
||
|
for ($i=0; $i<$nb_fiche; $i++)
|
||
|
{
|
||
|
$card=new Lettering_Card($this->cn, $this->afiche[$i]['quick_code']);
|
||
|
$card->set_parameter('start', $p_date_start);
|
||
|
$card->get_balance_ageing($p_let);
|
||
|
if (empty($card->content))
|
||
|
continue;
|
||
|
if ( ! $flag_title ) { echo $title;$flag_title=true;}
|
||
|
$nb_row=count($card->content);
|
||
|
$sum_lt_30=0;
|
||
|
$sum_gt_30_lt_60=0;
|
||
|
$sum_gt_60_lt_90=0;
|
||
|
$sum_gt_90=0;
|
||
|
$sum_fin=0;
|
||
|
for ($j=0; $j<$nb_row; $j++)
|
||
|
{
|
||
|
$show=true;
|
||
|
printf('"%s";', str_replace('"', '', $this->afiche[$i]['quick_code']));
|
||
|
printf('"%s";', str_replace('"', '', $this->afiche[$i]['name']));
|
||
|
printf('"%s";', str_replace('"', '', $this->afiche[$i]['first_name']));
|
||
|
printf('"%s";', $card->content[$j]['j_date_fmt']);
|
||
|
printf('"%s";', $card->content[$j]['jr_pj_number']);
|
||
|
printf('"%s";', $card->content[$j]['jr_internal']);
|
||
|
if ($card->content[$j]['jrn_def_type']=='FIN'||$card->content[$j]['jrn_def_type']=='ODS')
|
||
|
{
|
||
|
printf("%s;", nb($card->content[$j]['j_montant']));
|
||
|
$sum_fin=bcadd($sum_fin, $card->content[$j]['j_montant']);
|
||
|
$show=false;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
printf('0;');
|
||
|
}
|
||
|
if ($show&&$card->content[$j]['day_paid']<=30)
|
||
|
{
|
||
|
printf("%s;", nb($card->content[$j]['j_montant']));
|
||
|
$sum_lt_30=bcadd($sum_lt_30, $card->content[$j]['j_montant']);
|
||
|
$show=false;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
printf('0;');
|
||
|
}
|
||
|
|
||
|
if ($show&&$card->content[$j]['day_paid']>30&&$card->content[$j]['day_paid']<=60)
|
||
|
{
|
||
|
printf("%s;", nb($card->content[$j]['j_montant']));
|
||
|
$sum_gt_30_lt_60=bcadd($sum_gt_30_lt_60, $card->content[$j]['j_montant']);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
printf('0;');
|
||
|
}
|
||
|
|
||
|
if ($show&&$card->content[$j]['day_paid']>60&&$card->content[$j]['day_paid']<=90)
|
||
|
{
|
||
|
printf("%s;", nb($card->content[$j]['j_montant']));
|
||
|
$sum_gt_60_lt_90=bcadd($sum_gt_60_lt_90, $card->content[$j]['j_montant']);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
printf('0;');
|
||
|
}
|
||
|
if ($show&&$card->content[$j]['day_paid']>90)
|
||
|
{
|
||
|
printf("%s", nb($card->content[$j]['j_montant']));
|
||
|
$sum_gt_90=bcadd($sum_gt_90, $card->content[$j]['j_montant']);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
printf('0;');
|
||
|
}
|
||
|
printf("\n\r");
|
||
|
}
|
||
|
printf('"%s";', _('Totaux'));
|
||
|
printf('"";');
|
||
|
printf('"";');
|
||
|
printf('"";');
|
||
|
printf('"";');
|
||
|
printf('"";');
|
||
|
printf('%s;', nb($sum_fin));
|
||
|
printf('%s;', nb($sum_lt_30));
|
||
|
printf('%s;', nb($sum_gt_30_lt_60));
|
||
|
printf('%s;', nb($sum_gt_60_lt_90));
|
||
|
printf('%s', nb($sum_gt_90));
|
||
|
printf("\n\r");
|
||
|
}
|
||
|
}
|
||
|
|
||
|
}
|