_join .= " LEFT JOIN itemsite ON itemsite_item_id = item_id WHERE itemsite_item_id > 0 "; $i->selectAdd(); $i->selectAdd("item_id,itemsite_id"); $i->orderby('item_id'); $items = $i->fetchAll('item_id','itemsite_id'); foreach ($items as $item_id => $itemsite_id){ // now see if we have any itemsrcs.. $pi = $this->fetch_poitem($itemsite_id ); if (!$pi) { continue; } $is =DB_DataObject::factory('itemsrc'); $is->itemsrc_item_id = $item_id; $vender_to_src = $is->fetchAll('itemsrc_vend_id', 'itemsrc_id'); $product_has_price = false; foreach($vender_to_src as $vend_id => $itemsrc_id) { if ($pi->pohead_vend_id != $vend_id) { // give up, the last purchase is not from this vendor.. continue; } $has_price = false; $ip = DB_DataObject::factory('itemsrcp'); $ip->itemsrcp_itemsrc_id = $itemsrc_id; if ($ip->count()) { // we have some.. foreach($ip->fetchAll() as $ip) { $has_price = 1; $product_has_price = 1; if($ip->itemsrcp_price != ''){ continue; } $ip->itemsrcp_qtybreak = 0; $ip->itemsrcp_price = $pi->poitem_unitprice; $ip->itemsrcp_curr_id = $pi->pohead_curr_id; $ip->update(); } } if ($has_price) { continue; } $ip->itemsrcp_itemsrc_id = $itemsrc_id; $ip->itemsrcp_qtybreak = 0; $ip->itemsrcp_price = $pi->poitem_unitprice; $ip->itemsrcp_curr_id = $pi->pohead_curr_id; $ip->itemsrcp_updated = date('Y-m-d'); $ip->insert(); $product_has_price = 1; } // now we have looked at all the itemsrc's and not found any pu if ($product_has_price) { // we have already filled in a price.. continue; } // at this point we do not have a itemsrc for this product.. // create one based on the pi. $is = DB_DataObject::factory('itemsrc'); $vend = DB_DataObject::factory('vendinfo'); $vend->get($pi->pohead_vend_id); $is->itemsrc_item_id = $item_id; $is->itemsrc_vend_id = $pi->pohead_vend_id; $is->itemsrc_vend_item_number = $vend->vend_number; $is->itemsrc_vend_uom = 1; $is->itemsrc_invvendoruomratio = 1; $is->itemsrc_minordqty = 0; $is->itemsrc_multordqty = 0; $is->itemsrc_leadtime = 0; $is->itemsrc_ranking = 1; $is->itemsrc_active = TRUE; $is->itemsrc_default = TRUE; $is->insert(); $ip = DB_DataObject::factory('itemsrcp'); $ip->itemsrcp_itemsrc_id = $is->itemsrc_id; $ip->itemsrcp_qtybreak = 0; $ip->itemsrcp_price = $pi->poitem_unitprice; $ip->itemsrcp_curr_id = $pi->pohead_curr_id; $ip->itemsrcp_updated = date('Y-m-d'); $ip->insert(); // then create an itemsrcp for it as weell.. } exit; } function fetch_poitem($itemsite_id){ $pi = DB_DataObject::factory('poitem'); $pi->_join .= " LEFT JOIN pohead ON poitem_pohead_id = pohead_id "; $pi->whereAdd("poitem_itemsite_id = {$itemsite_id}"); $pi->orderby("poitem_duedate DESC"); $pi->limit(1); return $pi->find(true) ? $pi : ''; } }