public function receiveSupplierAction()
 {
     if (!empty($this->_request->stock_id)) {
         $stock_id = $this->_request->stock_id;
     } else {
         $stock_id = "";
     }
     $red_type = '';
     if (!empty($this->_request->t)) {
         $red_type = $this->_request->t;
     }
     $this->view->type = $red_type;
     $form_values = array();
     $temp = array();
     $arr_data = array('transaction_number' => "", 'stock_id' => "", 'transaction_date' => date("d/m/Y"), 'success' => $this->_request->success);
     $stock_master = new Model_StockMaster();
     $stock_batch = new Model_StockBatch();
     $stock_detail = new Model_StockDetail();
     $warehouse_data = new Model_WarehousesData();
     $placement = new Model_Placements();
     $form = new Form_ReceiveSupplier();
     $form_manufacturer = new Form_AddManufacturer();
     $form_values['transaction_type_id'] = 1;
     $form_values['adjustment_type'] = 1;
     if (!empty($this->_request->warehouse)) {
         $warehouse_id = $this->_request->warehouse;
     }
     if ($this->_request->isPost()) {
         $em = Zend_Registry::get('doctrine');
         $em->getConnection()->beginTransaction();
         try {
             if (isset($this->_request->stockid) && !empty($this->_request->stockid)) {
                 $master_affacted = $stock_master->updateStockMasterTemp($this->_request->stockid, $this->_request->comments);
                 $detail_affacted = $stock_detail->updateStockDetailTemp($this->_request->stockid);
                 //Save Data in warehouse_data table
                 $warehouse_data->addReport($this->_request->stockid, 1);
                 $this->view->msg = 'Stock has been received successfully. Your voucher number is ';
                 $this->view->voucher = $master_affacted;
                 $this->view->master_id = $this->_request->stockid;
                 $em->getConnection()->commit();
             } elseif ($form->isValid($this->_request->getPost())) {
                 $recedit = $this->_request->getPost('rcvedit', '');
                 if ($recedit == "Yes") {
                     $d_id = $this->_request->getPost('detailid');
                     $obj_stock_detail = $em->getRepository("StockDetail")->find($d_id);
                     $form_values['stock_master_id'] = $obj_stock_detail->getStockMaster()->getPkId();
                     $form_values['stock_detail_id'] = $d_id;
                     $form_values['stock_batch_id'] = $obj_stock_detail->getStockBatch()->getPkId();
                     $form_values['rcvedit'] = "Yes";
                 } else {
                     $form_values['item_unit_id'] = $this->_request->item_unit_id;
                     $form_values['stock_master_id'] = $stock_id;
                 }
                 $temp = $form->getValues();
                 $data = array_merge($temp, $form_values);
                 $data['edit_type'] = $red_type;
                 if (empty($this->_request->transaction_number)) {
                     $stock_id = $stock_master->addStockMaster($data);
                 } else {
                     if (!empty($recedit)) {
                         $stock_id = $stock_master->addStockMaster($data);
                     }
                 }
                 $data['stock_master_id'] = $stock_id;
                 $data['type'] = $red_type;
                 $batch_id = $stock_batch->addStockBatch($data);
                 $wh_id = $this->_identity->getWarehouseId();
                 $query = "SELECT AdjustQty(" . $batch_id . "," . $wh_id . ") FROM DUAL";
                 $str_sql = $em->getConnection()->prepare($query);
                 $str_sql->execute();
                 $detail_id = $stock_detail->addStockDetail($data);
                 if ($detail_id) {
                     $stock_batch->autoRunningLEFOBatch($form->getValue('item_id'));
                 }
                 if (!empty($data['cold_chain'])) {
                     $placement->form_values['batchId'] = $batch_id;
                     $placement->form_values['quantity'] = $data['quantity'];
                     $placement->form_values['placement_location_id'] = $data['cold_chain'];
                     $placement->form_values['stock_detail_id'] = $detail_id;
                     $placement->form_values['rcvedit'] = $recedit;
                     $placement->form_values['vvm_stage'] = $data['vvm_stage'];
                     $placement->form_values['is_placed'] = 1;
                     $placement->addPlacement();
                 }
                 if ($recedit == "Yes") {
                     $date_arr = explode(' ', $data['transaction_date']);
                     list($dd, $mm, $yy) = explode("/", $date_arr[0]);
                     $item_id = $data['item_id'];
                     $wh_id = $this->_identity->getWarehouseId();
                     $user_id = $this->_userid;
                     $query = "SELECT AdjustQty(" . $batch_id . "," . $wh_id . ") FROM DUAL";
                     $str_sql = $em->getConnection()->prepare($query);
                     $str_sql->execute();
                     $query = "SELECT REPUpdateData({$mm},{$yy},{$item_id},{$wh_id},{$user_id}) FROM DUAL";
                     $str_sql = $em->getConnection()->prepare($query);
                     $str_sql->execute();
                 }
                 $em->getConnection()->commit();
                 $this->redirect("/stock/receive-supplier");
             }
         } catch (Exception $e) {
             $em->getConnection()->rollback();
             $em->close();
             App_FileLogger::info($e);
         }
         $arr_data['stock_id'] = !empty($stock_id) ? $stock_id : "";
         if (!empty($stock_id) || !empty($batch_id) || !empty($master_affacted) || !empty($detail_affacted)) {
             $arr_data['success'] = 1;
         }
         $this->view->form = $form;
         $this->view->arr_data = $arr_data;
         if ($red_type == 's') {
             $this->redirect("/stock/receive-search?success=1");
         }
     }
     if (!empty($this->form_values['transaction_type_id'])) {
         $type = $this->form_values['transaction_type_id'];
     } else {
         $type = $this->_request->type;
     }
     $stock_master->form_values = $form_values;
     $temp_stock = $stock_master->getTempStock();
     if ($temp_stock != false) {
         $arr_data = $temp_stock;
     }
     $temp_stock_list = $stock_master->getTempStocksList();
     if ($temp_stock_list != false) {
         $time_arr = explode(' ', $temp_stock_list[0]['transaction_date']);
         $time = date('H:i A', strtotime($time_arr[1] . $time_arr[2]));
         $form->transaction_number->setValue($temp_stock_list[0]['transaction_number']);
         $form->transaction_date->setValue(App_Controller_Functions::dateToUserFormat($time_arr[0]) . ' ' . $time);
         $form->hdn_transaction_date->setValue(App_Controller_Functions::dateToUserFormat($time_arr[0]) . ' ' . $time);
         $form->transaction_reference->setValue($temp_stock_list[0]['transaction_reference']);
         $form->from_warehouse_id->setValue($temp_stock_list[0]['from_warehouse_id']);
         $form->getProductsByActivity($temp_stock_list[0]['activity_id']);
         $form->activity_id->setValue($temp_stock_list[0]['activity_id']);
         $form->vvm_type_id->setValue($temp_stock_list[0]['vvm_type_id']);
         $form->activity_id->setAttribs(array('disable' => 'disable'));
         $form->from_warehouse_id->setAttribs(array('disable' => 'disable'));
         $form->transaction_reference->setAttribs(array('disable' => 'disable'));
         //$form->transaction_date->setAttribs(array('disable' => 'disable'));
         $arr_data['tempstocks'] = $temp_stock_list;
     } else {
         $form->transaction_date->setValue(date("d/m/Y h:i A"));
     }
     $this->view->form = $form;
     $this->view->form_manufacturer = $form_manufacturer;
     $this->view->arr_data = $arr_data;
     // Edit Receive Start
     if (!empty($this->_request->id)) {
         $detail_id = $this->_request->id;
         $obj_rec = $this->_em->getRepository("StockDetail")->find($detail_id);
         if ($red_type == 's') {
             $form->transaction_number->setValue($obj_rec->getStockMaster()->getTransactionNumber());
             $form->transaction_date->setValue($obj_rec->getStockMaster()->getTransactionDate()->format("d/m/Y h:i A"));
             $form->hdn_transaction_date->setValue($obj_rec->getStockMaster()->getTransactionDate()->format("d/m/Y h:i A"));
             $form->transaction_reference->setValue($obj_rec->getStockMaster()->getTransactionReference());
             $form->from_warehouse_id->setValue($obj_rec->getStockMaster()->getFromWarehouse()->getPkId());
             $stakeholder_act = $obj_rec->getStockMaster()->getStakeholderActivity();
             if (count($stakeholder_act) > 0) {
                 $form->getProductsByActivity($stakeholder_act->getPkId());
                 $form->activity_id->setValue($stakeholder_act->getPkId());
             }
             if ($obj_rec->getStockBatch()->getItemPackSize()->getItemCategory()->getPkId() == 1 || $obj_rec->getStockBatch()->getItemPackSize()->getItemCategory()->getPkId() == 4) {
                 $form->vvm_type_id->setValue($obj_rec->getStockBatch()->getVvmType()->getPkId());
             }
         }
         $form->item_id->setValue($obj_rec->getStockBatch()->getItemPackSize()->getPkId());
         $form->getManufacturerByProductId($obj_rec->getStockBatch()->getItemPackSize()->getPkId());
         $stakeholder_item_pack_size = $obj_rec->getStockBatch()->getStakeholderItemPackSize();
         if (count($stakeholder_item_pack_size) > 0) {
             $form->manufacturer_id->setValue($stakeholder_item_pack_size->getPkId());
         }
         $form->number->setValue($obj_rec->getStockBatch()->getNumber());
         $form->production_date->setValue($obj_rec->getStockBatch()->getProductionDate()->format("d/m/Y"));
         $form->expiry_date->setValue($obj_rec->getStockBatch()->getExpiryDate()->format("d/m/Y"));
         $form->unit_price->setValue($obj_rec->getStockBatch()->getUnitPrice());
         $form->quantity->setValue($obj_rec->getStockBatch()->getQuantity());
         $form->vvm_stage->setValue($obj_rec->getVvmStage());
         $form->comments->setValue($obj_rec->getStockMaster()->getComments());
         $form->from_warehouse_id->setAttrib('disable', false);
         $form->transaction_reference->setAttrib('disable', false);
         $form->activity_id->setAttrib('disable', false);
         $obj_placements = $this->_em->getRepository("Placements")->findOneBy(array("stockDetail" => $detail_id));
         if (count($obj_placements->getPlacementLocation()) > 0) {
             $form->cold_chain->setValue($obj_placements->getPlacementLocation()->getLocationId());
         }
         $this->view->rcvedit = true;
         $this->view->prod_cat = $obj_rec->getStockBatch()->getItemPackSize()->getItemCategory()->getPkId();
         $this->view->detail_id = $this->_request->id;
     }
     // Edit Receive End
     $this->view->success = $this->_request->getParam('success', 0);
 }
 public function getTempStock()
 {
     $str_sql = $this->_em->createQueryBuilder()->select('sm.transactionNumber AS transaction_number,
                     sm.transactionReference AS transaction_reference,
                     sm.transactionDate AS transaction_date,
                     sm.pkId AS pk_id,
                     ws.pkId AS from_warehouse_id,
                     ws.warehouseName AS warehouse_name
                     ')->from("StockMaster", "sm")->join("sm.fromWarehouse", "ws")->where("sm.createdBy = " . $this->_user_id)->andWhere("ws.status = 1");
     if ($this->form_values['transaction_type_id'] == 1) {
         $str_sql->andWhere("sm.toWarehouse =  " . $this->_identity->getWarehouseId());
     } else {
         $str_sql->andWhere("sm.fromWarehouse = " . $this->_identity->getWarehouseId());
     }
     $str_sql->andWhere("sm.transactionType = " . $this->form_values['transaction_type_id'])->andWhere("sm.draft = 1 ");
     //echo $str_sql->getQuery()->getSql();
     //exit;
     $row = $str_sql->getQuery()->getResult();
     if (!empty($row) && count($row) > 0) {
         $warehouses = new Model_Warehouses();
         $arr_data['warehouse_name'] = $warehouses->getWarehouseNameByWarehouseId($row[0]['from_warehouse_id']);
         $arr_data['transaction_date'] = App_Controller_Functions::dateToUserFormat($row[0]['transaction_date']);
         $arr_data['transaction_number'] = $row[0]['transaction_number'];
         $arr_data['transaction_reference'] = $row[0]['transaction_reference'];
         $arr_data['stock_id'] = $row[0]['pk_id'];
         return $arr_data;
     } else {
         return false;
     }
 }