4 * fill in products pruchase price
8 require_once 'ProcessBase.php';
10 class Pman_Xtuple_Fifo_FillPurchasePrices extends Pman_Xtuple_Fifo_ProcessBase
12 static $cli_desc = "Fill in products pruchase price";
14 static $permitError = false;
19 // DB_DataObject::debugLevel(1);
20 // set up the failure code..
21 PEAR::setErrorHandling(PEAR_ERROR_CALLBACK, array($this, 'onPearError'));
23 $i = DB_DataObject::factory('item');
28 itemsite_item_id = item_id
33 $i->selectAdd("item_id,itemsite_id");
34 $i->orderby('item_id');
35 $items = $i->fetchAll('item_id','itemsite_id');
36 foreach ($items as $item_id => $itemsite_id){
37 // now see if we have any itemsrcs..
38 $pi = $this->fetch_poitem($itemsite_id );
43 $is =DB_DataObject::factory('itemsrc');
44 $is->itemsrc_item_id = $item_id;
45 $vender_to_src = $is->fetchAll('itemsrc_vend_id', 'itemsrc_id');
47 $product_has_price = false;
49 foreach($vender_to_src as $vend_id => $itemsrc_id) {
50 if ($pi->pohead_vend_id != $vend_id) {
51 // give up, the last purchase is not from this vendor..
57 $ip = DB_DataObject::factory('itemsrcp');
58 $ip->itemsrcp_itemsrc_id = $itemsrc_id;
61 foreach($ip->fetchAll() as $ip) {
63 $product_has_price = 1;
65 if($ip->itemsrcp_price != ''){
68 $ip->itemsrcp_qtybreak = 0;
69 $ip->itemsrcp_price = $pi->poitem_unitprice;
70 $ip->itemsrcp_curr_id = $pi->pohead_curr_id;
80 $ip->itemsrcp_itemsrc_id = $itemsrc_id;
81 $ip->itemsrcp_qtybreak = 0;
82 $ip->itemsrcp_price = $pi->poitem_unitprice;
83 $ip->itemsrcp_curr_id = $pi->pohead_curr_id;
84 $ip->itemsrcp_updated = date('Y-m-d');
87 $product_has_price = 1;
89 // now we have looked at all the itemsrc's and not found any pu
90 if ($product_has_price) {
91 // we have already filled in a price..
95 // at this point we do not have a itemsrc for this product..
96 // create one based on the pi.
98 $is = DB_DataObject::factory('itemsrc');
99 $vend = DB_DataObject::factory('vendinfo');
100 $vend->get($pi->pohead_vend_id);
101 $is->itemsrc_item_id = $item_id;
102 $is->itemsrc_vend_id = $pi->pohead_vend_id;
103 $is->itemsrc_vend_item_number = $vend->vend_number;
104 $is->itemsrc_vend_uom = 1;
105 $is->itemsrc_invvendoruomratio = 1;
106 $is->itemsrc_minordqty = 0;
107 $is->itemsrc_multordqty = 0;
108 $is->itemsrc_leadtime = 0;
109 $is->itemsrc_ranking = 1;
110 $is->itemsrc_active = TRUE;
111 $is->itemsrc_default = TRUE;
114 $ip = DB_DataObject::factory('itemsrcp');
115 $ip->itemsrcp_itemsrc_id = $is->itemsrc_id;
116 $ip->itemsrcp_qtybreak = 0;
117 $ip->itemsrcp_price = $pi->poitem_unitprice;
118 $ip->itemsrcp_curr_id = $pi->pohead_curr_id;
119 $ip->itemsrcp_updated = date('Y-m-d');
121 // then create an itemsrcp for it as weell..
128 function fetch_poitem($itemsite_id){
129 $pi = DB_DataObject::factory('poitem');
134 poitem_pohead_id = pohead_id
137 $pi->whereAdd("poitem_itemsite_id = {$itemsite_id}");
138 $pi->orderby("poitem_duedate DESC");
140 return $pi->find(true) ? $pi : '';