|
noalyss
Version-6.7.2
|
Manage the anticipation of expense, sales,... More...
Public Member Functions | |
| __construct ($p_init, $p_id=0) | |
| constructor | |
| delete () | |
| display () | |
| Display the result of the forecast. | |
| form_cat () | |
| create an empty object anticipation | |
| form_item () | |
| display a form for modifying or add a forecast | |
| get_info () | |
| get_parameter ($p_string) | |
| insert () | |
| load () | |
| save () | |
| set_parameter ($p_string, $p_value) | |
| update () | |
| verify () | |
Static Public Member Functions | |
| static | div () |
| static | test_me () |
| unit test | |
Data Fields | |
| $cat | |
| $item | |
Private Member Functions | |
| form_cat_mod () | |
| Display a form for modifying the name or/and the category of an existing anticipation. | |
| form_cat_new () | |
| Display a form for adding an new anticipation. | |
Private Attributes | |
| $cn | |
Static Private Attributes | |
| static | $variable = array ("id"=>"f_id","name"=>"f_name") |
Manage the anticipation of expense, sales,...
Definition at line 40 of file class_anticipation.php.
| Anticipation::__construct | ( | $ | p_init, |
| $ | p_id = 0 |
||
| ) |
constructor
| $p_init | Database object |
Definition at line 51 of file class_anticipation.php.
References cn.
{
$this->cn=$p_init;
$this->f_id=$p_id;
}
Definition at line 188 of file class_anticipation.php.
{}
Display the result of the forecast.
| $p_periode |
Definition at line 112 of file class_anticipation.php.
References $amount, $end, $fiche, $l, $per, $poste, $r, $start, $str_end, $str_start, cn, format_date(), h(), and Impress\parse_formula().
{
bcscale(4);
$forecast=new Forecast($this->cn,$this->f_id);
$forecast->load();
$str_name=h($forecast->get_parameter('name'));
$start=$forecast->get_parameter('start_date');
$end=$forecast->get_parameter('end_date');
if ( $start=='') throw new Exception (_('Période de début non valable'));
if ( $end=='') throw new Exception (_('Période de fin non valable'));
$per=new Periode($this->cn,$start);
$str_start=format_date($per->first_day());
$per=new Periode($this->cn,$end);
$str_end=format_date($per->last_day());
$r="";
$aCat=$this->cn->get_array('select fc_id,fc_desc from forecast_cat where f_id=$1 order by fc_order',array($this->f_id));
$aItem=array();
$aReal=array();
$poste=new Acc_Account_Ledger($this->cn,0);
$fiche=new Fiche($this->cn);
$aPeriode=$this->cn->get_array("select p_id,to_char(p_start,'MM.YYYY') as myear from parm_periode
where p_start >= (select p_start from parm_periode where p_id=$start)
and p_end <= (select p_end from parm_periode where p_id=$end)
order by p_start;");
$error=array();
for($j=0;$j<count($aCat);$j++)
{
$aItem[$j]=$this->cn->get_array('select fi_card,fi_account,fi_text,fi_amount,fi_debit from forecast_item where fc_id=$1 and fi_pid=0 order by fi_order ',array($aCat[$j]['fc_id']));
$aPerMonth[$j]=$this->cn->get_array('select fi_pid,fi_card,fi_account,fi_text,fi_amount,fi_debit from forecast_item where fc_id=$1 and fi_pid !=0 order by fi_order ',array($aCat[$j]['fc_id']));
/* compute the real amount for periode */
for($k=0;$k<count($aItem[$j]);$k++)
{
/* for each periode */
for ($l=0;$l<count($aPeriode);$l++)
{
if ($aItem[$j][$k]['fi_account']=='')
{
$fiche->id=$aItem[$j][$k]['fi_card'];
$amount=$fiche->get_solde_detail("j_tech_per = ".$aPeriode[$l]['p_id']);
if ($aItem[$j][$k]['fi_debit']=='C' && $amount['debit']>$amount['credit']) $amount['solde']=$amount["solde"]*(-1);
if ($aItem[$j][$k]['fi_debit']=='D' && $amount['debit']<$amount['credit']) $amount['solde']=$amount["solde"]*(-1);
}
else
{
$poste->id=$aItem[$j][$k]['fi_account'];
$aresult=Impress::parse_formula($this->cn,"OK",$poste->id,$aPeriode[$l]['p_id'],$aPeriode[$l]['p_id']);
$tmp_label=$aresult['desc'];
$amount['solde']=$aresult['montant'];
if ( $tmp_label != 'OK') $error[]="<li> ".$aItem[$j][$k]['fi_text'].$poste->id.'</li>';
}
$aReal[$j][$k][$l]=$amount['solde'];
}
}
}
ob_start();
require_once('template/forecast_result.php');
$r.=ob_get_contents();
ob_end_clean();
return $r;
}
| static Anticipation::div | ( | ) | [static] |
create an empty object anticipation
Definition at line 321 of file class_anticipation.php.
References form_cat_mod(), and form_cat_new().
{
if ($this->f_id != 0)
return $this->form_cat_mod();
else
return $this->form_cat_new();
}
| Anticipation::form_cat_mod | ( | ) | [private] |
Display a form for modifying the name or/and the category of an existing anticipation.
Definition at line 195 of file class_anticipation.php.
References $a, $array, $g_user, $name, $order, $r, cn, HtmlInput\hidden(), and Forecast_Cat\load_all().
Referenced by form_cat().
{
global $g_user;
$a=new Forecast($this->cn,$this->f_id);
$a->load();
$name=new IText('an_name');
$name->value=$a->get_parameter("name");
$str_name=$name->input();
$str_action=_('Modification');
$start_date=new IPeriod('start_date');
$start_date->type=ALL;
$start_date->cn=$this->cn;
$start_date->show_end_date=false;
$start_date->show_start_date=true;
$start_date->user=$g_user;
$start_date->filter_year=false;
$end_date=new IPeriod('end_date');
$end_date->type=ALL;
$end_date->cn=$this->cn;
$end_date->show_end_date=true;
$end_date->show_start_date=false;
$end_date->user=$g_user;
$end_date->filter_year=false;
$start_date->value=$a->f_start_date;
$end_date->value=$a->f_end_date;
$str_start_date=$start_date->input();
$str_end_date=$end_date->input();
$r=HtmlInput::hidden('f_id',$this->f_id);
$array=Forecast_Cat::load_all($this->cn,$this->f_id);
for ($i=0;$i<MAX_CAT;$i++)
{
/* category name */
$name_name=(isset($array[$i]['fc_id']))?'fr_cat'.$array[$i]['fc_id']:'fr_cat_new'.$i;
$name=new IText($name_name);
$name->value=(isset ($array[$i]['fc_desc']))?$array[$i]['fc_desc']:'';
$aCat[$i]['name']=$name->input();
/* category order */
$order_name=(isset($array[$i]['fc_id']))?'fc_order'.$array[$i]['fc_id']:'fc_order_new'.$i;
$order=new IText($order_name);
$order->value=(isset($array[$i]['fc_order']))?$array[$i]['fc_order']:$i+1;
$aCat[$i]['order']=$order->input();
}
ob_start();
require_once('template/forecast_cat.php');
$r.=ob_get_contents();
ob_end_clean();
return $r;
}
| Anticipation::form_cat_new | ( | ) | [private] |
Display a form for adding an new anticipation.
Definition at line 257 of file class_anticipation.php.
References $g_user, $name, $order, $per, $r, $year, and cn.
Referenced by form_cat().
{
global $g_user;
$r="";
$str_action=_('Nouveau');
$name=new IText('an_name');
$str_name=$name->input();
$start_date=new IPeriod('start_date');
$start_date->type=ALL;
$start_date->cn=$this->cn;
$start_date->show_end_date=false;
$start_date->show_start_date=true;
$start_date->user=$g_user;
$start_date->filter_year=false;
$end_date=new IPeriod('end_date');
$end_date->type=ALL;
$end_date->cn=$this->cn;
$end_date->show_end_date=true;
$end_date->show_start_date=false;
$end_date->user=$g_user;
$end_date->filter_year=false;
$period=$g_user->get_periode();
$per=new Periode($this->cn,$period);
$year=$per->get_exercice();
list($per_start,$per_end)=$per->get_limit($year);
$start_date->value=$per_start->p_id;
$end_date->value=$per_end->p_id;
$str_start_date=$start_date->input();
$str_end_date=$end_date->input();
$aLabel=array(_('Ventes'),_('Dépense'),_('Banque'));
$aCat=array();
for ($i=0;$i<MAX_CAT;$i++)
{
/* category name */
$name=new IText('fr_cat'.$i);
$name->value=(isset($aLabel[$i]))?$aLabel[$i]:'';
$aCat[$i]['name']=$name->input();
/* category order */
$order=new IText('fr_order'.$i);
$order->value=$i+1;
$aCat[$i]['order']=$order->input();
}
ob_start();
require_once('template/forecast_cat.php');
$r.=ob_get_contents();
ob_end_clean();
return $r;
}
display a form for modifying or add a forecast
Definition at line 332 of file class_anticipation.php.
References $amount, $array, $cat, $deb, $f, $label, $max, $periode, $r, $str_end, $str_start, $value, cn, and HtmlInput\hidden().
{
$forecast=new Forecast($this->cn,$this->f_id);
$forecast->load();
$str_name=$forecast->get_parameter('name');
$str_start=$forecast->get_parameter('start_date');
$str_end=$forecast->get_parameter('end_date');
$r="";
$str_action=_("Elements");
$cat=new Forecast_Cat($this->cn);
$array=$cat->make_array($this->f_id);
$periode=new Periode($this->cn);
$aPeriode=$this->cn->make_array("select p_id,to_char(p_start,'MM.YYYY') as label from parm_periode
where p_start >= (select p_start from parm_periode where p_id=$str_start)
and p_end <= (select p_end from parm_periode where p_id=$str_end)
order by p_start");
$aPeriode[]=array('value'=>0,'label'=>'Mensuel');
$value=$this->cn->get_array("select fi_id,fi_text,fi_account,fi_card,fc_id,fi_amount,fi_debit,fi_pid ".
" from forecast_item ".
" where fc_id in (select fc_id from forecast_cat where f_id = $1)",array($this->f_id));
$max=(count($value) < MAX_FORECAST_ITEM)?MAX_FORECAST_ITEM:count($value);
$r.=HtmlInput::hidden('nbrow',$max);
for ($i=0;$i<$max;$i++)
{
if (isset($value[$i]['fi_id']))
{
$r.=HtmlInput::hidden('fi_id'.$i,$value[$i]['fi_id']);
}
/* category*/
$category=new ISelect();
$category->name='an_cat'.$i;
$category->value=$array;
$category->selected=(isset($value[$i]["fc_id"]))?$value[$i]["fc_id"]:-1;
$aCat[$i]['cat']=$category->input();
/* amount */
$amount=new INum('an_cat_amount'.$i);
$amount->value=(isset($value[$i]["fi_amount"]))?$value[$i]["fi_amount"]:0;
$aCat[$i]['amount']=$amount->input();
/* Accounting*/
$account=new IPoste('an_cat_acc'.$i);
$account->set_attribute('ipopup','ipop_account');
// $account->set_attribute('label','an_label'.$i);
$account->set_attribute('account','an_cat_acc'.$i);
$account->set_attribute('bracket',1);
$account->set_attribute('no_overwrite',1);
$account->set_attribute('noquery',1);
$account->css_size="85%";
$account->value=(isset($value[$i]["fi_account"]))?$value[$i]["fi_account"]:"";
$aCat[$i]['account']=$account->input();
/*Quick Code */
$qc=new ICard('an_qc'.$i);
// If double click call the javascript fill_ipopcard
$qc->set_dblclick("fill_ipopcard(this);");
// This attribute is mandatory, it is the name of the IPopup
$qc->set_attribute('ipopup','ipopcard');
// name of the field to update with the name of the card
$qc->set_attribute('label','an_label'.$i);
// Type of card : all
$qc->set_attribute('typecard','all');
$qc->set_attribute('jrn',0);
$qc->extra='all';
// when value selected in the autcomplete
$qc->set_function('fill_data');
if (isset($value[$i]["fi_card"]))
{
$f=new Fiche($this->cn,$value[$i]["fi_card"]);
$qc->value=$f->strAttribut(ATTR_DEF_QUICKCODE);
;
}
$aCat[$i]['qc']=$qc->search().$qc->input();
/* Label */
$label=new IText('an_label'.$i);
$label->value=(isset($value[$i]["fi_text"]))?$value[$i]["fi_text"]:"";
$aCat[$i]['name']=$label->input();
//Deb or Cred
$deb=new ISelect('an_deb'.$i);
$deb->selected=(isset($value[$i]["fi_debit"]))?$value[$i]["fi_debit"]:-1;
$deb->value=array(array('value'=>'D','label'=>_('Débit')),
array('value'=>'C','label'=>_('Crédit'))
);
$aCat[$i]['deb']=$deb->input();
//Periode
$isPeriode=new ISelect('month'.$i);
$isPeriode->value=$aPeriode;
$isPeriode->selected=(isset($value[$i]["fi_pid"]))?$value[$i]["fi_pid"]:0;
$aCat[$i]['per']=$isPeriode->input();
}
$add_row=new IButton('add_row');
$add_row->label=_('Ajouter une ligne');
$add_row->javascript='for_add_row(\'fortable\')';
$f_add_row=$add_row->input();
ob_start();
require_once('template/forecast-detail.php');
$r.=ob_get_contents();
ob_end_clean();
return $r;
}
Definition at line 78 of file class_anticipation.php.
{
return var_export(self::$variable,true);
}
| Anticipation::get_parameter | ( | $ | p_string | ) |
Definition at line 97 of file class_anticipation.php.
References verify().
Referenced by save().
{
if ( $this->verify() != 0 ) return;
}
Definition at line 105 of file class_anticipation.php.
{}
Definition at line 88 of file class_anticipation.php.
References get_parameter(), insert(), and update().
{
/* please adapt */
if ( $this->get_parameter("id") == 0 )
$this->insert();
else
$this->update();
}
| Anticipation::set_parameter | ( | $ | p_string, |
| $ | p_value | ||
| ) |
| static Anticipation::test_me | ( | ) | [static] |
unit test
Definition at line 443 of file class_anticipation.php.
{
$cn=new Database(dossier::id());
$test=new Anticipation($cn);
}
Definition at line 82 of file class_anticipation.php.
Referenced by insert().
{
// Verify that the elt we want to add is correct
// the f_name must be unique (case insensitive)
return 0;
}
| Anticipation::$cat |
array of object categorie (forecast_cat)
Definition at line 45 of file class_anticipation.php.
Referenced by form_item().
Anticipation::$cn [private] |
Definition at line 44 of file class_anticipation.php.
Referenced by test_me().
| Anticipation::$item |
Definition at line 46 of file class_anticipation.php.
Anticipation::$variable = array ("id"=>"f_id","name"=>"f_name") [static, private] |
Definition at line 43 of file class_anticipation.php.