public function detailPurchaseOrderAction()
 {
     if ($this->getRequest()->getParam('id')) {
         $id = $this->getRequest()->getParam('id') ? $this->getRequest()->getParam('id') : '0';
         $user = $this->GetuserInfoAction();
         if ($user["level"] != 1 and $user["level"] != 2) {
             $gb = new Application_Model_DbTable_DbGlobal();
             $exist = $gb->userPurchaseOrderExist($id, $user["location_id"]);
             if ($exist == "") {
                 $this->_redirect("purchase/index/index");
             }
         }
         $orderModel = new purchase_Model_DbTable_DbPurchaseOrder();
         //get purchase info 23/8/13
         $orderItemDetail = $orderModel->purchaseInfo($id);
         $this->view->order_info = $orderItemDetail;
         //get qty on purchase order 23/8/13
         $orderDetail = $orderModel->getPurchaseID($id);
         $this->view->orderItemDetail = $orderDetail;
     }
 }
예제 #2
0
 public function rePurchaseOrder($data)
 {
     try {
         $db = $this->getAdapter();
         $db->beginTransaction();
         $db_global = new Application_Model_DbTable_DbGlobal();
         $session_user = new Zend_Session_Namespace('auth');
         $userName = $session_user->user_name;
         $GetUserId = $session_user->user_id;
         $id_order_update = $data['id'];
         print_r($id_order_update);
         // Select all qty in tb_product and tb_purchase_order_item for compare product exist or not for update qty to old qty
         $sql_recieve = new purchase_Model_DbTable_DbPurchaseOrder();
         $result = $sql_recieve->recieved_info($id_order_update);
         $sqls = "SELECT * FROM tb_setting WHERE `code`=16";
         $ro = $db_global->getGlobalDbRow($sqls);
         $RO = $ro["key_value"];
         $date = new Zend_Date();
         $recieve_no = $RO . $date->get('hh-mm-ss');
         $sql_recieve_order = "SELECT `recieve_id`,`recieve_type`,order_id,`vendor_id`,`location_id`,`disc_value`,paid,`all_total`,`balance`\n\t\t\t\t\t\t\t\tFROM tb_recieve_order WHERE order_id = {$id_order_update}";
         $result_recieve = $db_global->getGlobalDbRow($sql_recieve_order);
         //print_r($result_recieve);exit();
         if ($result_recieve) {
             $db->getProfiler()->setEnabled(true);
             $receive = array("is_active" => 0, "user_recieve" => $GetUserId);
             $this->_name = "tb_recieve_order";
             $where = $this->getAdapter()->quoteInto("recieve_id=?", $result_recieve["recieve_id"]);
             $recieve_id = $this->update($receive, $where);
             //unset($receive);
             Zend_Debug::dump($db->getProfiler()->getLastQueryProfile()->getQuery());
             Zend_Debug::dump($db->getProfiler()->getLastQueryProfile()->getQueryParams());
             $db->getProfiler()->setEnabled(false);
         }
         $db->getProfiler()->setEnabled(true);
         $info_purchase_order = array("status" => 3, "paid" => 0, "balance" => $data['all_total']);
         $this->_name = "tb_purchase_order";
         $where = $this->getAdapter()->quoteInto("order_id=?", $id_order_update);
         $this->update($info_purchase_order, $where);
         //$db_global->updateRecord($info_purchase_order,$id_order_update,"order_id","tb_purchase_order");
         Zend_Debug::dump($db->getProfiler()->getLastQueryProfile()->getQuery());
         Zend_Debug::dump($db->getProfiler()->getLastQueryProfile()->getQueryParams());
         $db->getProfiler()->setEnabled(false);
         $sql_itm = "SELECT\n\t\t\t\t(SELECT p.pro_id FROM tb_product AS p WHERE p.pro_id = po.`pro_id`) AS pro_id\n\t\t\t\t\t\n\t\t\t\t,(SELECT p.qty_onorder FROM tb_product AS p WHERE p.pro_id = po.`pro_id`) AS qty_onorder\n\t\t\n\t\t\t\t,(SELECT p.qty_onhand \tFROM tb_product AS p WHERE p.pro_id = po.`pro_id`) AS qty_onhand\n\t\t\n\t\t\t\t,(SELECT p.qty_available \tFROM tb_product AS p WHERE p.pro_id = po.`pro_id`) AS qty_available\n\t\t\t\t\t\n\t\t\t\t, SUM(po.`qty_order`) AS qty_order FROM\n\t\n\t\t\ttb_purchase_order_item AS po WHERE po.order_id = {$id_order_update} GROUP BY po.pro_id";
         $rows_order = $db_global->getGlobalDb($sql_itm);
         if ($rows_order) {
             foreach ($rows_order as $row) {
                 $row_get = $db_global->porductLocationExist($row["pro_id"], $data["old_location"]);
                 $qty_onhand = $row["qty_onhand"] - $row["qty_order"];
                 $qty_available = $row["qty_available"] - $row["qty_order"];
                 $qty = $row_get["qty"] - $row["qty_order"];
                 $qty_available_prolo = $row_get["qty_avaliable"] - $row["qty_order"];
                 if ($qty_onhand <= 0 or $qty <= 0) {
                     Application_Form_FrmMessage::message("The Main Stock or Location Stock is Not enough ");
                     exit;
                 } else {
                     $db->getProfiler()->setEnabled(true);
                     $update_product = array("qty_onhand" => $qty_onhand, "qty_available" => $qty_available, "qty_onorder" => $row["qty_onorder"] + $row["qty_order"]);
                     $this->_name = "tb_product";
                     $where = $this->getAdapter()->quoteInto("pro_id=?", $row["pro_id"]);
                     $this->update($update_product, $where);
                     unset($update_product);
                     Zend_Debug::dump($db->getProfiler()->getLastQueryProfile()->getQuery());
                     Zend_Debug::dump($db->getProfiler()->getLastQueryProfile()->getQueryParams());
                     $db->getProfiler()->setEnabled(false);
                     $db->getProfiler()->setEnabled(true);
                     $update_prolocation = array("qty" => $qty, "qty_avaliable" => $qty_available_prolo, "qty_onorder" => $row_get["qty_onorder"] + $row["qty_order"]);
                     $this->_name = "tb_prolocation";
                     $where = $this->getAdapter()->quoteInto("ProLocationID=?", $row_get["ProLocationID"]);
                     $this->update($update_prolocation, $where);
                     Zend_Debug::dump($db->getProfiler()->getLastQueryProfile()->getQuery());
                     Zend_Debug::dump($db->getProfiler()->getLastQueryProfile()->getQueryParams());
                     $db->getProfiler()->setEnabled(false);
                 }
             }
         }
         /// update
         $ids = explode(',', $data['identities']);
         foreach ($ids as $i) {
             if (@$data["pricefree_" . $i]) {
                 $is_free = 1;
             } else {
                 $is_free = 0;
             }
             // Insert New purchase order item in old order_id
             $db->getProfiler()->setEnabled(true);
             $data_history[$i] = array('order' => $id_order_update, 'pro_id' => $data['item_id_' . $i], 'type' => 1, 'customer_id' => $data['v_name'], 'status' => $data["status"], 'order_total' => $data['total' . $i], 'qty' => $data['qty' . $i], 'status' => 4, 'unit_price' => $data['price' . $i], 'sub_total' => $data['total' . $i], 'last_update_date' => new Zend_Date());
             $db->insert("tb_purchase_order_history", $data_history[$i]);
             unset($data_history[$i]);
             Zend_Debug::dump($db->getProfiler()->getLastQueryProfile()->getQuery());
             Zend_Debug::dump($db->getProfiler()->getLastQueryProfile()->getQueryParams());
             $db->getProfiler()->setEnabled(false);
         }
         $db->commit();
     } catch (Exception $e) {
         $db->rollBack();
         $e->getMessage();
     }
 }
 public function updateVendorCancellOrder($data)
 {
     try {
         $db = $this->getAdapter();
         $db->beginTransaction();
         $db_global = new Application_Model_DbTable_DbGlobal();
         $session_user = new Zend_Session_Namespace('auth');
         $userName = $session_user->user_name;
         $GetUserId = $session_user->user_id;
         //for update order by id\
         $id_order_update = $data['id'];
         //update info of order in tb_purchase order
         // 			if($data["status"]==6){
         // 			}
         $info_purchase_order = array("vendor_id" => $data['v_name'], "LocationId" => $data["LocationId"], "order" => $data['txt_order'], "date_order" => $data['order_date'], "status" => $data["status"], "remark" => $data['remark'], "user_mod" => $GetUserId, "timestamp" => new Zend_Date(), "paid" => $data['paid'], "all_total" => $data['totalAmoun'], "balance" => $data['remain']);
         $db_global->updateRecord($info_purchase_order, $id_order_update, "order_id", "tb_purchase_order");
         unset($info_purchase_order);
         // Insert recieved order
         $recieved_id = $data["recieve_id"];
         $ids = explode(',', $data['identity']);
         $sql_recieve = new purchase_Model_DbTable_DbPurchaseOrder();
         $result = $sql_recieve->recieved_info($id_order_update);
         $prifix = "SELECT * FROM tb_setting WHERE `code` =16";
         $ro = $db_global->getGlobalDbRow($prifix);
         $RO = $ro["key_value"];
         $date = new Zend_Date();
         $recieve_no = $RO . $date->get('hh-mm-ss');
         if ($result) {
             //if($data["oldStatus"]==5 or $data["oldStatus"]==4){
             if ($data["status"] == 5 or $data["status"] == 4) {
                 $data_recieved_order = array("recieve_type" => 1, "order_id" => $id_order_update, "order_no" => $data["txt_order"], "vendor_id" => $data['v_name'], "location_id" => $data["LocationId"], "date_recieve" => new Zend_Date(), "status" => $data['status'], "is_active" => 1, "paid" => $data['paid'], "all_total" => $data['totalAmoun'], "balance" => $data['remain'], "user_recieve" => $GetUserId);
                 $recieved_order = $db_global->updateRecord($data_recieved_order, $recieved_id, "recieve_id", "tb_recieve_order");
                 unset($data_recieved_order);
             } else {
                 $data_recieved_order = array("recieve_type" => 1, "order_id" => $id_order_update, "order_no" => $data["txt_order"], "vendor_id" => $data['v_name'], "location_id" => $data["LocationId"], "date_recieve" => new Zend_Date(), "status" => $data['status'], "is_active" => 0, "paid" => $data['paid'], "all_total" => $data['totalAmoun'], "balance" => $data['remain'], "user_recieve" => $GetUserId);
                 $recieved_order = $db_global->updateRecord($data_recieved_order, $recieved_id, "recieve_id", "tb_recieve_order");
                 unset($data_recieved_order);
             }
             //}
             $sqls = "DELETE FROM tb_recieve_order_item WHERE recieve_id IN ({$recieved_id})";
             $db_global->deleteRecords($sqls);
             unset($sqls);
             foreach ($ids as $i) {
                 $recieved_item[$i] = array("recieve_id" => $recieved_id, "pro_id" => $data['item_id_' . $i], "order_id" => $id_order_update, "qty_order" => $data['qty' . $i], "qty_recieve" => $data['qty' . $i], "price" => $data['price' . $i], "total_before" => $data['total' . $i], "sub_total" => $data['total' . $i]);
                 $db->insert("tb_recieve_order_item", $recieved_item[$i]);
                 unset($recieved_item[$i]);
             }
         } else {
             $sql = "SELECT * FROM tb_setting WHERE `code`=16";
             $ro = $db_global->getGlobalDbRow($sql);
             $RO = $ro["key_value"];
             $date = new Zend_Date();
             $recieve_no = $RO . $date->get('hh-mm-ss');
             if ($data["status"] == 5 or $data["status"] == 4) {
                 $data_recieved_order = array("recieve_type" => 1, "order_id" => $id_order_update, "recieve_no" => $recieve_no, "order_no" => $data["txt_order"], "vendor_id" => $data['v_name'], "location_id" => $data["LocationId"], "order_date" => new Zend_Date(), "date_recieve" => new Zend_Date(), "status" => $data['status'], "is_active" => 1, "paid" => $data['paid'], "all_total" => $data['totalAmoun'], "balance" => $data['remain'], "user_recieve" => $GetUserId);
                 $recieved_order = $db_global->addRecord($data_recieved_order, "tb_recieve_order");
                 unset($data_recieved_order);
                 foreach ($ids as $i) {
                     $recieved_item[$i] = array("recieve_id" => $recieved_order, "pro_id" => $data['item_id_' . $i], "order_id" => $id_order_update, "qty_order" => $data['qty' . $i], "qty_recieve" => $data['qty' . $i], "price" => $data['price' . $i], "total_before" => $data['total' . $i], "sub_total" => $data['total' . $i]);
                     $db->insert("tb_recieve_order_item", $recieved_item[$i]);
                     unset($recieved_item[$i]);
                 }
             }
         }
         // end update info of order in tb_purchase order
         // Delete old purchase order item before insert new purchase order item in old order_id
         $sql = "DELETE FROM tb_purchase_order_item WHERE order_id IN ({$id_order_update})";
         $db_global->deleteRecords($sql);
         unset($sql);
         $sql_history = "DELETE FROM tb_purchase_order_history WHERE `order` IN ({$id_order_update})";
         $db_global->deleteRecords($sql_history);
         unset($sql_history);
         /// update
         $ids = explode(',', $data['identity']);
         //add order in tb_inventory must update code again 9/8/13
         //print_r($ids);exit();
         foreach ($ids as $i) {
             // Insert recieved order item
             $data_item[$i] = array('order_id' => $id_order_update, 'pro_id' => $data['item_id_' . $i], 'qty_order' => $data['qty' . $i], 'price' => $data['price' . $i], 'sub_total' => $data['total' . $i], 'total_befor' => $data['total' . $i], 'remark' => $data['remark_' . $i]);
             //print_r($data_item); echo "<br />";echo "<br />";
             $db->insert("tb_purchase_order_item", $data_item[$i]);
             unset($data_item[$i]);
             $data_history[$i] = array('order' => $id_order_update, 'pro_id' => $data['item_id_' . $i], 'type' => 1, 'customer_id' => $data['v_name'], 'status' => $data["status"], 'order_total' => $data['total' . $i], 'qty' => $data['qty' . $i], 'unit_price' => $data['price' . $i], 'sub_total' => $data['total' . $i], 'date' => $data["old_history_date"], 'last_update_date' => new Zend_Date());
             //print_r($data_history);exit();
             $db->insert("tb_purchase_order_history", $data_history[$i]);
             unset($data_history[$i]);
             $locationid = $data['LocationId'];
             $itemId = $data['item_id_' . $i];
             $qtyrecord = $data['qty' . $i];
             //qty on 1 record
             // Update stock in tb_product
             $rows = $db_global->productLocationInventory($itemId, $locationid);
             //to check product location
             //print_r($rows); exit();
             if ($rows) {
                 $getrecord_id = $rows["ProLocationID"];
                 if ($data["status"] == 5 or $data["status"] == 4) {
                     $itemOnHand = array('qty_onhand' => $rows["qty_onhand"] + $qtyrecord, 'qty_available' => $rows["qty_available"] + $qtyrecord, 'last_mod_date' => new Zend_date());
                     $db_global->updateRecord($itemOnHand, $itemId, "pro_id", "tb_product");
                     unset($itemOnHand);
                 } else {
                     $itemOnHand = array('qty_onorder' => $rows["pqty_onorder"] + $qtyrecord, 'last_mod_date' => new Zend_date());
                     $db_global->updateRecord($itemOnHand, $itemId, "pro_id", "tb_product");
                     unset($itemOnHand);
                 }
                 //End update total stock
                 // Update product Location
                 if ($data["status"] == 5 or $data["status"] == 4) {
                     $updatedata = array('qty' => $rows['qty'] + $qtyrecord, 'last_mod_date' => new Zend_date());
                     $db_global->updateRecord($updatedata, $getrecord_id, "ProLocationID", "tb_prolocation");
                     unset($updatedata);
                 } else {
                     $updatedata = array('qty_onorder' => $rows['qty_onorder'] + $qtyrecord, 'last_mod_date' => new Zend_date());
                     $db_global->updateRecord($updatedata, $getrecord_id, "ProLocationID", "tb_prolocation");
                     unset($updatedata);
                 }
                 //End update stock product location						//update stock record
             } else {
                 //insert stock ;
                 $rows_pro_exit = $db_global->productLocation($itemId, $locationid);
                 // check product location exist
                 // if product exist Update qty in tb_prolocation
                 if ($rows_pro_exit) {
                     if ($data["status"] == 5 or $data["status"] == 4) {
                         $updatedata = array('qty' => $rows['qty'] + $qtyrecord, 'last_mod_date' => new Zend_date());
                         $itemid = $db_global->updateRecord($updatedata, $rows_pro_exit['ProLocationID'], "ProLocationID", "tb_prolocation");
                         unset($updatedata);
                     } else {
                         $updatedata = array('qty_onorder' => $rows['qty_onorder'] + $qtyrecord, 'last_mod_date' => new Zend_date());
                         $itemid = $db_global->updateRecord($updatedata, $rows_pro_exit['ProLocationID'], "ProLocationID", "tb_prolocation");
                         unset($updatedata);
                     }
                     // End if product exist Update qty in tb_prolocation
                 } else {
                     // If product not exist insert New product in tb_prolocation
                     $insertdata = array('pro_id' => $itemId, 'LocationId' => $locationid, 'last_usermod' => $GetUserId, 'qty' => $qtyrecord, 'last_mod_date' => new Zend_Date());
                     //update stock product location
                     $db->insert("tb_prolocation", $insertdata);
                     unset($insertdata);
                 }
                 // End If product not exist insert New product in tb_prolocation
                 $rowitem = $db_global->InventoryExist($itemId);
                 //to check product exist
                 // If productt exist update product in tb_product
                 if ($rowitem) {
                     if ($data["status"] == 5 or $data["status"] == 4) {
                         $itemOnHand = array('qty_onhand' => $rows["qty_onhand"] + $qtyrecord, 'qty_available' => $rows["qty_available"] + $qtyrecord, 'last_mod_date' => new Zend_date());
                         $itemid = $db_global->updateRecord($itemOnHand, $itemId, "pro_id", "tb_product");
                         unset($itemOnHand);
                     } else {
                         $itemOnHand = array('qty_onorder' => $rows["qty_onrder"] + $qtyrecord, 'last_mod_date' => new Zend_date());
                         $itemid = $db_global->updateRecord($itemOnHand, $itemId, "pro_id", "tb_product");
                         unset($itemOnHand);
                     }
                     //update total stock
                     // 						$itemid=$db_global->updateRecord($itemOnHand,$itemId,"pro_id","tb_product");
                     // 						unset($itemOnHand);
                     // If productt exist update product in tb_product
                 } else {
                     // If product not exist insert new product in tb_product
                     $dataInventory = array('pro_id' => $itemId, 'qty_onhand' => $qtyrecord, 'qty_available' => $qtyrecord, 'last_mod_date' => new Zend_date());
                     $db->insert("tb_product", $dataInventory);
                     unset($dataInventory);
                     //update stock product location
                 }
             }
         }
         $db->commit();
     } catch (Exception $e) {
         $db->rollBack();
         $e->getMessage();
         //echo $theCauseOfErrorOnlyDoNotRedirectToError;
         //exit();
     }
 }
 public function advanceAction()
 {
     $db = new Application_Model_DbTable_DbGlobal();
     $id = $this->getRequest()->getParam('id') ? $this->getRequest()->getParam('id') : '0';
     // 		$r = new purchase_Model_DbTable_DbPurchaseVendor();
     // 		$r->updatePurcaheToInProgress($id);
     if ($this->getRequest()->isPost()) {
         $data = $this->getRequest()->getPost();
         //print_r($data);
         if (isset($data["payment"]) == "UPDATE") {
             $update_purchase = new purchase_Model_DbTable_DbAdvance();
             $get_result = $update_purchase->updatePurchaseOrder($data);
         } elseif (isset($data["recieve_paid"])) {
             $recieve_paid = new purchase_Model_DbTable_DbAdvance();
             $result = $recieve_paid->receivePaidOrder($data);
             Application_Form_FrmMessage::message("Product have been recieved Success!!");
             Application_Form_FrmMessage::redirectUrl("/purchase/advance/advance/id/" . $id);
         } elseif (isset($data["reorder"])) {
             $reorder = new purchase_Model_DbTable_DbAdvance();
             $update_reoder = $reorder->rePurchaseOrder($data);
             Application_Form_FrmMessage::message("Product have been reoder Success!!");
         }
     }
     ///link left not yet get from DbpurchaseOrder
     // 		$session_vendor_info = new Zend_Session_Namespace('vendor_info');
     // 		$rows= $session_vendor_info->vendorinfo;
     //		print_r($rows);exit();
     $purchase = new purchase_Model_DbTable_DbPurchaseOrder();
     $rows = $purchase->purchaseInfo($id);
     $formStock = new Application_Form_purchase();
     $formpurchase_info = $formStock->productOrder($rows);
     Application_Model_Decorator::removeAllDecorator($formpurchase_info);
     // omit default zend html tag
     $this->view->form_purchase = $formpurchase_info;
     $this->view->status = $rows["status"];
     //get item of this order
     // 		$orderModel = new purchase_Model_DbTable_DbPurchaseOrder();
     // 		$orderDetail = $orderModel->getPurchaseID($id);
     // 		$this->view->rowsOrder = $orderDetail;
     $session_record_order = new Zend_Session_Namespace('record_order');
     //create in update purchase order in page indexcontroller action update
     $orderDetail = $session_record_order->orderDetail;
     $this->view->rowsOrder = $orderDetail;
     $sql = "SELECT si.order_id,CONCAT(p.item_name,' (',p.item_code,' )') AS item_name,p.qty_perunit ,p.pro_id,si.remark as pi_remark,si.qty_order,si.price,si.total_befor,si.disc_type,\n\t\tsi.disc_value,si.is_free,si.sub_total,s.discount_value,s.`remark`,s.`discount_value`,s.`paid`,s.net_total,s.`all_total`,s.`balance`\n\t\tFROM tb_purchase_order_item AS si,tb_product AS p ,tb_purchase_order AS s\n\t\t WHERE p.pro_id = si.pro_id AND si.order_id = s.order_id AND  si.order_id={$id}";
     $result = $db->getGlobalDb($sql);
     $this->view->orderItem = $result;
     // 		 if($rows['status']==4){
     // 		 	Application_Form_FrmMessage::message("You Can't Access Advance! Order Is Payment Already");
     // 		 	//$this->_redirect("/purchase/index/detail-purchase-order/id/".$id);
     // 		 }
     //for get item receive qty order
     $qty_receive = new purchase_Model_DbTable_DbPurchaseAdvance();
     $row_receive = $qty_receive->getProductReceived($id);
     //print_r($row_receive);
     $this->view->rowsreceived = $row_receive;
     // item option in select
     $items = new Application_Model_GlobalClass();
     $itemRows = $items->getProductOption();
     $this->view->itemsOption = $itemRows;
     $items = new Application_Model_GlobalClass();
     $itemRows = $items->getProductOption();
     $this->view->items = $itemRows;
     //get control
     $formControl = new Application_Form_FrmAction(null);
     $formViewControl = $formControl->AllAction(null);
     Application_Model_Decorator::removeAllDecorator($formViewControl);
     $this->view->control = $formViewControl;
     //for add product;
     $formpopup = new Application_Form_FrmPopup(null);
     $formproduct = $formpopup->popuProduct(null);
     Application_Model_Decorator::removeAllDecorator($formproduct);
     $this->view->form = $formproduct;
     //for add vendor
     $formStockAdd = $formpopup->popupVendor(null);
     Application_Model_Decorator::removeAllDecorator($formStockAdd);
     $this->view->form_vendor = $formStockAdd;
     //for add location
     $formAdd = $formpopup->popuLocation(null);
     Application_Model_Decorator::removeAllDecorator($formAdd);
     $this->view->form_addstock = $formAdd;
     // item option in select
     // 		$items = new Application_Model_GlobalClass();
     // 		$itemRows = $items->getProductOption();
     // 		$this->view->itemsOption = $itemRows;
 }
 public function updateReturnItemAction()
 {
     $session_stock = new Zend_Session_Namespace('stock');
     $id = $this->getRequest()->getParam('id') ? $this->getRequest()->getParam('id') : '0';
     if ($this->getRequest()->isPost()) {
         $data = $this->getRequest()->getPost();
         if ($data['Save']) {
             $update_return = new purchase_Model_DbTable_DbReturnItem();
             $update_return->updateReturnItem($data);
         }
     }
     $purchase = new purchase_Model_DbTable_DbPurchaseOrder();
     $rows = $purchase->purchaseInfo($id);
     $db = new Application_Model_DbTable_DbGlobal();
     $returnModel = new purchase_Model_DbTable_DbSQLReturnItem();
     $row_info = $returnModel->returnInfo($id);
     $get_form = new Application_Form_FrmReturnItem();
     $session_stock = new Zend_Session_Namespace('stock');
     $frm_return = $get_form->returnItemForm($row_info);
     Application_Model_Decorator::removeAllDecorator($frm_return);
     $this->view->form_return = $frm_return;
     //get qty of return item
     $getReturnItem = $returnModel->getReturnItem($id);
     $this->view->returnItemDetail = $getReturnItem;
     //get return item
     $getOption = new Application_Model_GlobalClass();
     $locationRows = $getOption->getLocationOption();
     $this->view->locationOption = $locationRows;
     $itemRows = $getOption->getProductOption();
     $this->view->productOption = $itemRows;
     $formControl = new Application_Form_FrmAction(null);
     $formViewControl = $formControl->AllAction(null);
     Application_Model_Decorator::removeAllDecorator($formViewControl);
     $this->view->control = $formViewControl;
     //for add product;
     $formpopup = new Application_Form_FrmPopup(null);
     $formproduct = $formpopup->popuProduct(null);
     Application_Model_Decorator::removeAllDecorator($formproduct);
     $this->view->form_add_product = $formproduct;
     //for add vendor
     $formvendor = $formpopup->popupVendor(null);
     Application_Model_Decorator::removeAllDecorator($formvendor);
     $this->view->form_vendor = $formvendor;
     //for add location
     $formAdd = $formpopup->popuLocation(null);
     Application_Model_Decorator::removeAllDecorator($formAdd);
     $this->view->form_addstock = $formAdd;
     //for link advane
     $this->view->getorder_id = $id;
 }
 public function RecievedPurchaseOrder($data)
 {
     try {
         $db = $this->getAdapter();
         $db->beginTransaction();
         $db_global = new Application_Model_DbTable_DbGlobal();
         $session_user = new Zend_Session_Namespace('auth');
         $userName = $session_user->user_name;
         $GetUserId = $session_user->user_id;
         $_order_no = $data["order_no"];
         $_order_id = $data["order_id"];
         $ids = explode(',', $data['identity']);
         //print_r($row);//exit();
         if ($data['invoice_no'] == "") {
             $date = new Zend_Date();
             $recieved_num = "RO" . $date->get('hh-mm-ss');
         } else {
             $recieved_num = $data['invoice_no'];
         }
         $sql_itm = "SELECT\n\t\t\t\t(SELECT p.pro_id FROM tb_product AS p WHERE p.pro_id = po.`pro_id`) AS pro_id\n\t\t\t\t\t\n\t\t\t\t,(SELECT p.qty_onorder FROM tb_product AS p WHERE p.pro_id = po.`pro_id`) AS qty_onorder\n\t\t\t\t\n\t\t\t\t,(SELECT p.qty_onhand \tFROM tb_product AS p WHERE p.pro_id = po.`pro_id`) AS qty_onhand\n\t\t\t\t\n\t\t\t\t,(SELECT p.qty_available \tFROM tb_product AS p WHERE p.pro_id = po.`pro_id`) AS qty_available\n\t\t\t\t\t\n\t\t\t\t, SUM(po.`qty_order`) AS qty_order FROM\n\t\t\t\t\n\t\t\t\ttb_purchase_order_item AS po WHERE po.order_id = {$_order_no} GROUP BY po.pro_id";
         $result = $db_global->getGlobalDb($sql_itm);
         if ($result) {
             foreach ($result as $row_pro) {
                 $row_get = $db_global->porductLocationExist($row_pro["pro_id"], $data["LocationId"]);
                 //print_r($row_get);
                 if ($row_get) {
                     $update_prolo_stock = array("qty_onorder" => $row_get["qty_onorder"] - $row_pro["qty_order"], "last_usermod" => $GetUserId, "last_mod_date" => new Zend_Date());
                     $update_data = $db_global->updateRecord($update_prolo_stock, $row_get["ProLocationID"], "ProLocationID", "tb_prolocation");
                     unset($update_prolo_stock);
                 }
                 $update_product_stock = array("qty_onorder" => $row_pro["qty_onorder"] - $row_pro["qty_order"], "last_mod_date" => new Zend_Date());
                 $sqls = $db_global->updateRecord($update_product_stock, $row_pro["pro_id"], "pro_id", "tb_product");
                 unset($update_product_stock);
             }
         }
         unset($result);
         try {
             $info_purchase_order = array("vendor_id" => $data['v_name'], "LocationId" => $data["LocationId"], "status" => 5, "remark" => $data['remark'], "user_mod" => $GetUserId, "timestamp" => new Zend_Date(), "paid" => $data['paid'], "all_total" => $data['totalAmoun'], "balance" => $data['remain']);
             $db_global->updateRecord($info_purchase_order, $_order_no, "order_id", "tb_purchase_order");
             unset($info_purchase_order);
         } catch (Exception $e) {
             echo $e->getMessage();
         }
         $sql_recieve = new purchase_Model_DbTable_DbPurchaseOrder();
         $result_recieve = $sql_recieve->recieved_info($_order_no);
         $recieved_id = $result_recieve["recieve_id"];
         if ($result_recieve) {
             $data_recieved_order = array("recieve_type" => 1, "vendor_id" => $data['v_name'], "location_id" => $data["LocationId"], "date_recieve" => new Zend_Date(), "status" => 5, "is_active" => 1, "paid" => $data['paid'], "all_total" => $data['totalAmoun'], "balance" => $data['remain'], "user_recieve" => $GetUserId);
             $recieved_order = $db_global->updateRecord($data_recieved_order, $result_recieve["recieve_id"], "recieve_id", "tb_recieve_order");
             unset($data_recieved_order);
             $sqls = "DELETE FROM tb_recieve_order_item WHERE recieve_id IN ({$recieved_id})";
             $db_global->deleteRecords($sqls);
             unset($sqls);
             foreach ($ids as $i) {
                 $recieved_item[$i] = array("recieve_id" => $recieved_id, "pro_id" => $data['item_id_' . $i], "order_id" => $_order_no, "qty_order" => $data['qty' . $i], "qty_recieve" => $data['qty' . $i], "price" => $data['price' . $i], "total_before" => $data['total' . $i], "sub_total" => $data['total' . $i]);
                 $db->insert("tb_recieve_order_item", $recieved_item[$i]);
                 unset($recieved_item[$i]);
             }
         } else {
             $recieve_order = array("recieve_no" => $recieved_num, "order_id" => $_order_no, "order_no" => $data['order_num'], "vendor_id" => $data["v_name"], "recieve_type" => 1, "location_id" => $data["LocationId"], "order_date" => $data["order_date"], "date_recieve" => new Zend_Date(), "status" => 5, "is_active" => 1, "paid" => $data["paid"], "all_total" => $data["remain"], "user_recieve" => $GetUserId);
             $this->_name = "tb_recieve_order";
             $recieved_order = $this->insert($recieve_order);
             unset($recieve_order);
             foreach ($ids as $i) {
                 $recieved_item[$i] = array("recieve_id" => $recieved_order, "pro_id" => $data['item_id_' . $i], "order_id" => $_order_no, "qty_order" => $data['qty' . $i], "qty_recieve" => $data['qty' . $i], "price" => $data['price' . $i], "total_before" => $data['total' . $i], "sub_total" => $data['total' . $i]);
                 $db->insert("tb_recieve_order_item", $recieved_item[$i]);
                 unset($recieved_item[$i]);
             }
         }
         $sql = "DELETE FROM tb_purchase_order_item WHERE order_id IN ({$_order_no})";
         $db_global->deleteRecords($sql);
         unset($sql);
         $sql_history = "DELETE FROM tb_purchase_order_history WHERE `order` IN ({$_order_no})";
         $db_global->deleteRecords($sql_history);
         unset($sql_history);
         foreach ($ids as $i) {
             // Insert New purchase order item in old order_id
             $data_item[$i] = array('order_id' => $_order_no, 'pro_id' => $data['item_id_' . $i], 'qty_order' => $data['qty' . $i], 'price' => $data['price' . $i], 'sub_total' => $data['total' . $i], 'total_befor' => $data['total' . $i], 'remark' => $data['remark_' . $i]);
             //print_r($data_item); echo "<br />";echo "<br />";
             $db->insert("tb_purchase_order_item", $data_item[$i]);
             unset($data_item[$i]);
             $data_history[$i] = array('order' => $_order_no, 'pro_id' => $data['item_id_' . $i], 'type' => 1, 'customer_id' => $data['v_name'], 'status' => 5, 'order_total' => $data['total' . $i], 'qty' => $data['qty' . $i], 'unit_price' => $data['price' . $i], 'sub_total' => $data['total' . $i], 'date' => $data["order_date"], 'last_update_date' => new Zend_Date());
             //print_r($data_history);exit();
             $db->insert("tb_purchase_order_history", $data_history[$i]);
             unset($data_history[$i]);
             $locationid = $data['LocationId'];
             $itemId = $data['item_id_' . $i];
             $qtyrecord = $data['qty' . $i];
             //qty on 1 record
             // Update stock in tb_product
             $rows = $db_global->productLocationInventory($itemId, $locationid);
             //to check product location
             if ($rows) {
                 $getrecord_id = $rows["ProLocationID"];
                 $itemOnHand = array('qty_onhand' => $rows["qty_onhand"] + $qtyrecord, 'qty_available' => $rows["qty_available"] + $qtyrecord, 'last_mod_date' => new Zend_date());
                 $db_global->updateRecord($itemOnHand, $itemId, "pro_id", "tb_product");
                 unset($itemOnHand);
                 $updatedata = array('qty' => $rows['qty'] + $qtyrecord, 'last_mod_date' => new Zend_date());
                 $db_global->updateRecord($updatedata, $getrecord_id, "ProLocationID", "tb_prolocation");
             } else {
                 //insert stock ;
                 $rows_pro_exit = $db_global->productLocation($itemId, $locationid);
                 // check product location exist
                 if ($rows_pro_exit) {
                     $updatedata = array('qty' => $rows['qty'] + $qtyrecord, 'last_mod_date' => new Zend_date());
                     $itemid = $db_global->updateRecord($updatedata, $rows_pro_exit['ProLocationID'], "ProLocationID", "tb_prolocation");
                     unset($updatedata);
                 } else {
                     // If product not exist insert New product in tb_prolocation
                     $insertdata = array('pro_id' => $itemId, 'LocationId' => $locationid, 'last_usermod' => $GetUserId, 'qty' => $qtyrecord, 'last_mod_date' => new Zend_Date());
                     //update stock product location
                     $db->insert("tb_prolocation", $insertdata);
                     unset($insertdata);
                 }
                 // End If product not exist insert New product in tb_prolocation
                 $rowitem = $db_global->InventoryExist($itemId);
                 //to check product exist
                 // If productt exist update product in tb_product
                 if ($rowitem) {
                     $itemOnHand = array('qty_onhand' => $rows["qty_onhand"] + $qtyrecord, 'qty_available' => $rows["qty_available"] + $qtyrecord, 'last_mod_date' => new Zend_date());
                     $itemid = $db_global->updateRecord($itemOnHand, $itemId, "pro_id", "tb_product");
                     unset($itemOnHand);
                 } else {
                     // If product not exist insert new product in tb_product
                     $dataInventory = array('pro_id' => $itemId, 'qty_onhand' => $qtyrecord, 'qty_available' => $qtyrecord, 'last_mod_date' => new Zend_date());
                     $db->insert("tb_product", $dataInventory);
                     unset($dataInventory);
                     //update stock product location
                 }
             }
         }
         $db->commit();
     } catch (Exception $e) {
         echo $e->getMessage();
         exit;
         $db->rollBack();
     }
 }