3 * Table Definition for prodcat
5 require_once 'DB/DataObject.php';
7 class Pman_Xtuple_DataObjects_Prodcat extends DB_DataObject
10 /* the code below is auto generated do not remove the above tag */
12 public $__table = 'prodcat'; // table name
13 public $prodcat_id; // int4(4) not_null default_nextval%28%28prodcat_prodcat_id_seq%29%3A%3Aregclass%29 primary_key
14 public $prodcat_code; // text(-1)
15 public $prodcat_descrip; // text(-1)
18 /* the code above is auto generated do not remove the tag below */
21 function initDatabase($roo)
25 'STANDARD' => 'Standard' ,
26 'PRODUCT' => 'Standard Product',
27 'NONPRODUCT'=> 'Non Product'
30 foreach($ar as $k=>$v) {
31 $pc = DB_DataObject::Factory('prodcat');
32 if ($pc->get('prodcat_code', $k)) {
37 'prodcat_descrip' => $v
45 function beforeInsert($q,$roo)
47 $this->checkProdcatCode($roo);
50 function beforeUpdate($old, $request,$roo)
52 if($old->prodcat_code != $this->prodcat_code){
53 $this->checkProdcatCode($roo);
58 function onInsert($q,$roo)
60 $this->updateSalesaccnt($q, $roo);
63 function onUpdate($old, $q,$roo)
65 $this->updateSalesaccnt($q, $roo);
68 function toRooSingleArray($au, $q)
70 $ret = $this->toArray();
72 if(!isset($q['_with_salesaccnt'])){
76 $salesaccnt = DB_DataObject::factory('salesaccnt');
77 $salesaccnt->selectAdd("
78 CASE WHEN ( (salesaccnt_custtype_id<>-1) AND (salesaccnt_prodcat_id<>-1) ) THEN 'A'
79 WHEN ( (salesaccnt_custtype_id<>-1) AND (salesaccnt_prodcat_id=-1) ) THEN 'B'
80 WHEN ( (salesaccnt_custtype_id=-1) AND (salesaccnt_prodcat_id<>-1) ) THEN 'C'
84 $salesaccnt->whereAdd("
85 (salesaccnt_warehous_id=-1)
88 (salesaccnt_prodcat='.*')
91 (salesaccnt_prodcat_id=-1)
93 (salesaccnt_prodcat <> '')
97 (salesaccnt_prodcat_id={$ret['prodcat_id']})
102 (salesaccnt_custtype='.*')
105 (salesaccnt_custtype_id=-1)
107 (salesaccnt_custtype<>'')
113 $salesaccnt->orderBy('orderby,salesaccnt_custtype DESC, salesaccnt_prodcat DESC');
114 $salesaccnt->find(true);
116 $ret['salesaccnt_id'] = $salesaccnt->salesaccnt_id;
119 'salesaccnt_sales_accnt_id',
120 'salesaccnt_credit_accnt_id',
121 'salesaccnt_cos_accnt_id'
124 foreach ($accounts as $a){
125 $accnt = DB_DataObject::factory('accnt');
126 if(!$accnt->get($salesaccnt->$a)){
129 $ret["{$a}"] = $accnt->pid();
130 $ret["{$a}_name"] = $accnt->accnt_name;
131 $ret["{$a}_descrip"] = $accnt->accnt_descrip;
137 function checkProdcatCode($roo)
139 $this->prodcat_code = strtoupper(trim(str_replace(' ', '', $this->prodcat_code)));
141 if(empty($this->prodcat_code)){
142 $roo->jerr('Missing product categroy code');
145 $prodcat = DB_DataObject::factory('prodcat');
146 if($prodcat->get('prodcat_code', $this->prodcat_code)){
147 $roo->jerr("Product category code already exist! code : {$this->prodcat_code}");
153 function updateSalesaccnt($q, $roo)
155 if(empty($q['salesaccnt_sales_accnt_id']) || empty($q['salesaccnt_credit_accnt_id']) || empty($q['salesaccnt_cos_accnt_id'])){
156 $roo->jerr('Missing account setting for this product category');
159 $salesaccnt = DB_DataObject::factory('salesaccnt');
161 if(!empty($q['salesaccnt_id'])){
162 if(!$salesaccnt->get($q['salesaccnt_id'])){
163 $roo->jerr("Error occur on getting the salesaccnt! salesaccnt_id : {$q['salesaccnt_id']}");
166 $old = clone($salesaccnt);
169 $salesaccnt->setFrom($q);
171 if(!isset($salesaccnt->salesaccnt_prodcat)){
172 $salesaccnt->salesaccnt_prodcat = '[^a-zA-Z0-9_]';
175 if(!isset($salesaccnt->salesaccnt_prodcat_id)){
176 $salesaccnt->salesaccnt_prodcat_id = $this->pid();
179 foreach($salesaccnt->defaults() as $k=>$v) {
180 if (!isset($salesaccnt->$k)) {
181 $salesaccnt->$k = $v;
185 empty($salesaccnt->salesaccnt_id) ? $salesaccnt->insert() : $salesaccnt->update($old);