public function addStockIssueAction() { $stock_master = new Model_StockMaster(); $stock_batch = new Model_StockBatch(); $placements = new Model_Placements(); $stock_detail = new Model_StockDetail(); $warehouse_data = new Model_WarehousesData(); $form_values = array(); $temp = array(); $batch = array(); $arr_data = array('transaction_number' => "", 'stock_id' => "", 'transaction_date' => date("d/m/Y"), 'warehouse_name' => "", 'success' => $this->_request->success); $date_em = '01' . "-" . $this->_request->month . "-" . $this->_request->year; $date_in = date('d/m/Y', strtotime($date_em)); $this->view->month = $this->_request->month; $this->view->year = $this->_request->year; $this->view->data_in = $date_in; $form_values['transaction_type_id'] = 2; $form_values['adjustment_type'] = 2; //need to be dynamic $form_values['transaction_reference'] = $this->_request->transaction_reference; $form_values['activity_id'] = $this->_request->activity_id; $warehouse_id = $this->_request->r_wh_id; $form_values['comments'] = $this->_request->comments; // end $stock_id = ""; $master_id = ""; $start = 0; $end = $this->_request->getParam('counter', 10); $activity_id = 1; $type_d = $this->_request->type_d; $r_wh_id = $this->_request->r_wh_id; $form_values['type_d'] = $type_d; $form = new Form_AddStockIssue(); $form->addRows($start, $end); $form->transaction_date->setValue(date("{$date_in} h:i A")); if (!empty($this->_request->stock_master_id)) { $master_id = $this->_request->stock_master_id; } $form->hdn_activity_id->setValue($activity_id); $form->hdn_receive_warehouse_id->setValue($r_wh_id); $form->hdn_stock_master_id->setValue($master_id); $rows = $this->_em->getRepository('Warehouses')->find($warehouse_id); $this->view->warehouse_name = $rows->getWarehouseName(); $em = Zend_Registry::get('doctrine'); $em->getConnection()->beginTransaction(); try { if ($type_d == 'd' && !$this->_request->isPost()) { $s_master = new Model_StockMaster(); $s_master->form_values['sender_warehouse_id'] = $this->_identity->getWarehouseId(); $s_master->form_values['receive_warehouse_id'] = $r_wh_id; $result = $s_master->getIssueTemp(); $form->transaction_date->setValue($result[0]['transaction_date']); $form->transaction_reference->setValue($result[0]['transaction_reference']); $form->comments->setValue($result[0]['comments']); $i = 0; foreach ($result as $row) { $rows = "rows" . $i; $form->{$rows}->item_pack_size_id->setValue($row['item_pack_size_id']); $stock_batch->form_values['item_pack_size_id'] = $row['item_pack_size_id']; $stock_batch->form_values['transaction_date'] = $row['transaction_date']; $associated = $stock_batch->getRunningBatches(); if ($associated) { foreach ($associated as $row_batch) { $batch[$row_batch['pkId']] = $row_batch['number'] . '|' . number_format($row_batch['quantity']) . '|' . $row_batch['priority']; } } $stock_batch->form_values['pk_id'] = $row['stock_batch_id']; $stock_batch->form_values['trans_date'] = App_Controller_Functions::dateToDbFormat($row['transaction_date']); $placements->form_values['batch_id'] = $row['stock_batch_id']; $placements->form_values['trans_date'] = App_Controller_Functions::dateToDbFormat($row['transaction_date']); $vvmstages = $placements->getIssueAvailableVvmStages(); if (!empty($batch)) { $form->{$rows}->number->setMultiOptions($batch); if (!empty($vvmstages[0]['qty'])) { $form->{$rows}->hdn_available_quantity->setValue($vvmstages[0]['qty']); $form->{$rows}->hdn_vvm_stage->setValue($vvmstages[0]['placement_location_id'] . "|" . $vvmstages[0]['vvm_stage_id'] . "|" . $vvmstages[0]['qty']); } } unset($batch); $form->{$rows}->number->setValue($row['stock_batch_id']); $form->{$rows}->expiry_date->setValue($row['expiry_date']); $form->{$rows}->quantity->setValue(abs($row['quantity'])); $i++; } } else { if ($this->_request->isPost()) { $temp = $this->_request->getPost(); // App_Controller_Functions::pr($temp); $data = array_merge($temp, $form_values); $data['warehouse'] = $warehouse_id; // Stock Master $stock_id = $stock_master->addStockMaster1($data); $form_values['type'] = 'd'; // end $form_values['stock_master_id'] = $stock_id; $form_values['counter'] = $end; $form_values['transaction_type_id'] = 2; $data = array_merge($temp, $form_values); $detail_id = $stock_detail->addStockDetail1Validation($data); if (empty($detail_id)) { for ($i = 0; $i < $end; $i++) { $form_values = $data; $row = $form_values["rows" . $i]; if ($row['quantity'] > 0) { $stock_batch->adjustQuantityByWarehouse($row['number']); $stock_batch->autoRunningLEFOBatch($row['item_pack_size_id']); $stock_batch->form_values['pk_id'] = $row['number']; $stock_batch->form_values['status'] = Model_StockBatch::FINISHED; $stock_batch->changeStatus(); } } $stock_m = $this->_em->getRepository('StockMaster')->find($stock_id); $this->view->msg = 'Stock has been issued successfully. Your voucher number is '; $this->view->voucher = $stock_m->getTransactionNumber(); $this->view->master_id = $stock_id; $this->view->error = "B"; } else { // Open report in edit form after save // App_Controller_Functions::pr($result); $this->view->error = "P"; $this->view->msg = $detail_id; } } } $em->getConnection()->commit(); } catch (Exception $e) { $em->getConnection()->rollback(); $em->close(); } if ($type_d == 'n' && !$this->_request->isPost()) { $sips = new Model_StakeholderItemPackSizes(); $sips->form_values['stakeholder_id'] = '1'; $result = $sips->getAllProductsByStakeholderTypeVaccines(); $i = 0; $batch11 = array(); foreach ($result as $row) { $rows = "rows" . $i; $form->{$rows}->item_pack_size_id->setValue($row['item_pack_size_id']); $stock_batch->form_values['item_pack_size_id'] = $row['item_pack_size_id']; $stock_batch->form_values['transaction_date'] = date("{$date_in} h:i A"); $associated = $stock_batch->getRunningBatches(); $batch11[''] = "Select"; if ($associated) { foreach ($associated as $row_batch) { $batch11[$row_batch['pkId']] = $row_batch['number'] . '|' . number_format($row_batch['quantity']) . '|' . $row_batch['priority']; } } if (!empty($batch11)) { $form->{$rows}->number->setMultiOptions($batch11); } unset($batch11); $i++; } } $this->view->form = $form; $this->view->start = $start; $this->view->end = $end; }