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;
 }