From 75b1ebd5e5457d1a150e92969cd4ff7ddb6514ed Mon Sep 17 00:00:00 2001 From: sparkyx Date: Tue, 9 May 2006 21:11:47 +0000 Subject: [PATCH] Task #5410 : Commercial --- html/line_update.php | 1 + include/class_customer.php | 136 +++++++++++++++++++++++++++++++++---- include/class_fiche.php | 85 +++++++++++++++++++++++ include/class_poste.php | 3 +- include/client.inc.php | 47 +++++++++++++ include/constant.php | 1 + include/user_common.php | 6 +- 7 files changed, 265 insertions(+), 14 deletions(-) create mode 100644 include/client.inc.php diff --git a/html/line_update.php b/html/line_update.php index 224fe1c28..3eb82db5d 100644 --- a/html/line_update.php +++ b/html/line_update.php @@ -68,6 +68,7 @@ if ( isset ($_POST["update"] ) ) { if ( pg_NumRows($Ret) == 0 || $p_parent==$old_line ) { echo ''; } else { + $Ret=ExecSql($cn,"update tmp_pcmn set pcm_val=$p_val, pcm_lib='$p_lib',pcm_val_parent=$p_parent where pcm_val=$old_line"); } } else { diff --git a/include/class_customer.php b/include/class_customer.php index d6a8674c6..361d36bb7 100644 --- a/include/class_customer.php +++ b/include/class_customer.php @@ -21,28 +21,35 @@ require_once("constant.php"); require_once("postgres.php"); require_once("class_parm_code.php"); + +require_once('class_fiche.php'); +require_once('class_poste.php'); +require_once('user_common.php'); + // Use the view vw_customer // -class Customer { +class Customer extends fiche{ var $id; // f_id var $poste; // poste comptable - var $db; // base de donnée var $name; var $street; var $country; var $cp; var $vat_number; + var $fiche_def_ref; // fiche_def_ref.frd_id // Constructor // only a db connection is needed - function Customer($p_cn) { - $this->db=$p_cn; + function Customer($p_cn,$p_id=0) { + $this->fiche_def_ref=FICHE_TYPE_CLIENT; + fiche::fiche($p_cn,$p_id) ; + } // Get all info contains in the view // thanks to the poste elt function GetFromPoste($p_poste=0) { $this->poste=($p_poste==0)?$this->poste:$p_poste; $sql="select * from vw_client where poste_comptable=".$this->poste; - $Res=ExecSql($this->db,$sql); + $Res=ExecSql($this->cn,$sql); if ( pg_NumRows($Res) == 0) return null; // There is only _one_ row by customer $row=pg_fetch_array($Res,0); @@ -58,7 +65,7 @@ class Customer { ************************************************** * Purpose : Get all the info for making a vat listing * for the vat administration - * + * TODO : optimize SQL * parm : * - periode * @@ -72,15 +79,15 @@ class Customer { // BASE ACCOUNT // for belgium - $s=new parm_code($this->db,'VENTE'); - $s->Get() + $s=new parm_code($this->cn,'VENTE'); + $s->Get(); $SOLD=$s->p_value; - $c=new parm_code($this->db,'CUSTOMER'); + $c=new parm_code($this->cn,'CUSTOMER'); $c->Get(); $CUSTOMER=$c->p_value; - $t=new parm_code($this->db,'COMPTE_TVA'); + $t=new parm_code($this->cn,'COMPTE_TVA'); $t->Get(); $TVA=$t->p_value; // Get all the sell operation @@ -95,7 +102,7 @@ where $cond_sql "; - $Res=ExecSql($this->db,$sql); + $Res=ExecSql($this->cn,$sql); // Foreach operation // where 7% or tva account are involved // and store the result in an array (a_Res) @@ -108,7 +115,7 @@ where // select the operation //---- - $Res2=ExecSql($this->db,"select j_poste,j_montant,j_debit from jrnx where j_grpt=".$row1['j_grpt']); + $Res2=ExecSql($this->cn,"select j_poste,j_montant,j_debit from jrnx where j_grpt=".$row1['j_grpt']); $a_row=array(); // Store the result in the array //--- @@ -167,6 +174,111 @@ where } return $a_Res; } + +/* function Display + ************************************************** + * Purpose : Display object instance + * + * parm : + * - + * gen : + * - + * return: + */ + function Display() + { + var_dump($this); + } +/* function Get + ************************************************** + * Purpose : Get Attribute of client + * + * parm : + * - + * gen : + * - + * return: + */ + function Get() + { + echo_debug('class_client',__LINE__,'Get'); + fiche::getAttribut(); + } +/* function GetAll + ************************************************** + * Purpose : Get array of fiche with all attribute + * + * parm : + * - none + * gen : + * - + * return: array of fiche with all attribute + */ + function GetAll($p_offset=-1) + { + return fiche::GetByDef($this->fiche_def_ref,$p_offset); + } +/* function Summary + ************************************************** + * Purpose : show the default screen + * + * parm : + * - + * gen : + * - + * return: string to display + */ + function Summary() + { + + $url=urlencode($_SERVER['REQUEST_URI']); + $script=$_SERVER['SCRIPT_NAME']; + // Creation of the nav bar + // Get the max numberRow + $all_client=$this->CountByDef($this->fiche_def_ref); + // Get offset and page variable + $offset=( isset ($_REQUEST['offset'] )) ?$_REQUEST['offset']:0; + $page=(isset($_REQUEST['page']))?$_REQUEST['page']:1; + $bar=jrn_navigation_bar($offset,$all_client,$_SESSION['g_pagesize'],$page); + + // Get The result Array + $step_client=$this->GetAll($offset); + if ( $all_client == 0 ) return ""; + $r=$bar; + $r.=" + + + + + +"; + foreach ($step_client as $client ) { + $r.=""; + $r.=""; + $r.=""; + $r.=""; + $post=new poste($this->cn,$client->strAttribut(ATTR_DEF_ACCOUNT)); + $a=$post->GetSoldeDetail(); + $r.=sprintf('',$a['solde']); + $r.="'; + + $r.=""; + + } + $r.="
Quick CodeNomAdresseSoldeAction
".$client->strAttribut(ATTR_DEF_QUICKCODE)."".$client->strAttribut(ATTR_DEF_NAME)."".$client->strAttribut(ATTR_DEF_ADRESS). + " ".$client->strAttribut(ATTR_DEF_CP). + " ".$client->strAttribut(ATTR_DEF_PAYS). + " %10.2f€"; + $r.=sprintf('D - ', + $script,$client->id,$url); + + $r.='C'; + $r.='S'; + $r.='
"; + return $r; + } + + } ?> diff --git a/include/class_fiche.php b/include/class_fiche.php index b8a42972d..9a71bbd26 100644 --- a/include/class_fiche.php +++ b/include/class_fiche.php @@ -231,6 +231,70 @@ class fiche { return ; $all[0]=new fiche($this->cn); + for ($i=0;$i<$Max;$i++) { + $row=pg_fetch_array($Ret,$i); + $t=new fiche($this->cn,$row['f_id']); + $t->getAttribut(); + $all[$i]=$t; + + } + return $all; + } +/* function GetByDef + ************************************************** + * Purpose : Return array of card from the frd family + * + * parm : + * - the fiche_def_ref.frd_id + * gen : + * - + * return: array of fiche object + */ + function CountByDef($p_frd_id) { + $sql="select * + from + fiche join fiche_Def using (fd_id) + where frd_id=".$p_frd_id; + + + $Ret=ExecSql($this->cn,$sql); + + return pg_NumRows($Ret) ; + } +/* function GetByDef + ************************************************** + * Purpose : Return array of card from the frd family + * + * parm : + * - the fiche_def_ref.frd_id + * gen : + * - + * return: array of fiche object + */ + function GetByDef($p_frd_id,$p_offset=-1) { + if ( $p_offset == -1 ) + { + $sql="select * + from + fiche join fiche_Def using (fd_id) + where frd_id=".$p_frd_id." order by f_id"; + } + else + { + $limit=$_SESSION['g_pagesize']; + $sql="select * + from + fiche join fiche_Def using (fd_id) + where frd_id=".$p_frd_id." order by f_id + limit ".$limit." offset ".$p_offset; + + } + + $Ret=ExecSql($this->cn,$sql); + if ( ($Max=pg_NumRows($Ret)) == 0 ) + return ; + $all[0]=new fiche($this->cn); + for ($i=0;$i<$Max;$i++) { $row=pg_fetch_array($Ret,$i); $t=new fiche($this->cn,$row['f_id']); @@ -248,5 +312,26 @@ class fiche { " ". $this->attribut_def.""; } +/* function strAttribut + ************************************************** + * Purpose : return the string of the given attribute + * (attr_def.ad_id) + * parm : + * - + * gen : + * - + * return: + */ + function strAttribut($p_ad_id) + { + if ( sizeof ($this->attribut) == 0 ) + return '- ERROR -'; + foreach ($this->attribut as $e) + { + if ( $e->ad_id == $p_ad_id ) + return $e->av_text; + } + return '- ERROR -'; + } } ?> \ No newline at end of file diff --git a/include/class_poste.php b/include/class_poste.php index 68a3a7248..f385b4739 100644 --- a/include/class_poste.php +++ b/include/class_poste.php @@ -123,13 +123,14 @@ function GetSolde($p_cond="") { * */ function GetSoldeDetail($p_cond="") { + if ( $p_cond != "") $p_cond.=" and "; $Res=ExecSql($this->db,"select sum(deb) as sum_deb, sum(cred) as sum_cred from ( select j_poste, case when j_debit='t' then j_montant else 0 end as deb, case when j_debit='f' then j_montant else 0 end as cred from jrnx join tmp_pcmn on j_poste=pcm_val where - j_poste like ('$this->id'::text) and + j_poste like ('$this->id'::text) $p_cond ) as m "); $Max=pg_NumRows($Res); diff --git a/include/client.inc.php b/include/client.inc.php new file mode 100644 index 000000000..cae1c90e9 --- /dev/null +++ b/include/client.inc.php @@ -0,0 +1,47 @@ +Summary(); +} +if ( $sub_action == 'detail' ) +{ + $f_id=$_REQUEST['f_id']; + $client=new Customer($cn,$f_id); + $retour=sprintf('Retour', + urldecode($_REQUEST['url'])); + $client->Display(); + echo $retour; +} + +html_page_stop(); +?> \ No newline at end of file diff --git a/include/constant.php b/include/constant.php index 772f838a2..ecba379e5 100644 --- a/include/constant.php +++ b/include/constant.php @@ -96,6 +96,7 @@ define ("ALL_FICHE_DEF_REF", 1000); // fixed value for attr_def data define ("ATTR_DEF_ACCOUNT",5); define ("ATTR_DEF_NAME",1); +//define ("ATTR_DEF_QUICKCODE",13); define ("ATTR_DEF_PRIX_ACHAT",7); define ("ATTR_DEF_PRIX_VENTE",6); define ("ATTR_DEF_TVA",2); diff --git a/include/user_common.php b/include/user_common.php index 2fad56ec9..32a7b9e15 100644 --- a/include/user_common.php +++ b/include/user_common.php @@ -575,6 +575,7 @@ return array ($count,$r); * - none * return: * none + * TODO ADD A DATE !!! */ function InsertStockGoods($p_cn,$p_j_id,$p_good,$p_quant,$p_type) { @@ -845,11 +846,14 @@ function isValid ($p_cn,$p_grpt_id) { * return: * string */ -function jrn_navigation_bar($p_offset,$p_line,$p_size,$p_page=1) +function jrn_navigation_bar($p_offset,$p_line,$p_size=0,$p_page=1) { // if the pagesize is unlimited return "" // in that case there is no nav. bar if ( $_SESSION['g_pagesize'] == -1 ) return ""; + if ( $p_size==0) { + $p_size= $_SESSION['g_pagesize']; + } // if there is no row return an empty string if ( $p_line == 0 ) return "";