Пример #1
0
 public function addGatepass()
 {
     $form_values = $this->form_values;
     $gp_master = new GatepassMaster();
     if (!empty($form_values['vehicle_other'])) {
         $gp_vehicle = $this->_em->getRepository("GatepassVehicles")->findOneBy(array("vehicleType" => $form_values['vehicle_type_id'], "number" => $form_values['vehicle_other']));
         if (count($gp_vehicle) == 0) {
             $gp_vehicle = new GatepassVehicles();
             $gp_vehicle->setNumber($form_values['vehicle_other']);
             $gvehicle = $this->_em->getRepository("ListDetail")->find($form_values['vehicle_type_id']);
             $gp_vehicle->setVehicleType($gvehicle);
             $this->_em->persist($gp_vehicle);
             $this->_em->flush();
         }
         $form_values['gatepass_vehicle_id'] = $gp_vehicle->getPkId();
     }
     if (!empty($form_values['gatepass_vehicle_id'])) {
         $gatepass_vehicle_id = $this->_em->find("GatepassVehicles", $form_values['gatepass_vehicle_id']);
         $gp_master->setGatepassVehicle($gatepass_vehicle_id);
     }
     if (!empty($form_values['transaction_date'])) {
         $gp_master->setTransactionDate(new \DateTime(date("Y-m-d h:i")));
     }
     $number = substr(number_format(time() * rand(), 0, '', ''), 0, 10);
     $gp_master->setNumber($number);
     $warehouse_id = $this->_identity->getWarehouseId();
     $warehouse_id = $this->_em->find("Warehouses", $warehouse_id);
     $gp_master->setWarehouse($warehouse_id);
     $created_by = $this->_em->find('Users', $this->_user_id);
     $gp_master->setCreatedBy($created_by);
     $gp_master->setCreatedDate(App_Tools_Time::now());
     $gp_master->setModifiedBy($created_by);
     $gp_master->setModifiedDate(App_Tools_Time::now());
     $this->_em->persist($gp_master);
     $this->_em->flush();
     $gp_master_id = $gp_master->getPkId();
     $stock_detail = new Model_StockDetail();
     $count1 = 1;
     $detailId = array();
     foreach ($form_values['quantity'] as $key => $value) {
         $value1 = $value;
         if (!empty($value1)) {
             list($stm, $stcmaster) = explode('_', $key);
             $res_rec = $stock_detail->quantityDataByStcBatch($stm, $stcmaster);
             $dataArr = array();
             foreach ($res_rec as $res) {
                 $detail_pkid = $res['pkId'];
                 $detail_qty = abs($res['quantity']);
                 $dataArr[$detail_pkid] = $detail_qty;
             }
             while ($value1 > 0) {
                 $arr = $stock_detail->getClosest($dataArr, $value);
                 $qty = $value1;
                 $value1 = $value1 - $arr[1];
                 if ($value1 > 0) {
                     $detailId[$arr[0]] = (int) $arr[1];
                 } else {
                     $detailId[$arr[0]] = (int) $qty;
                 }
             }
         }
     }
     $gp_m_id = $this->_em->getRepository('GatepassMaster')->find($gp_master_id);
     foreach ($detailId as $detId => $quantity) {
         $gp_detail = new GatepassDetail();
         $stock_d_id = $this->_em->getRepository('StockDetail')->find($detId);
         $gp_detail->setStockDetail($stock_d_id);
         $gp_detail->setQuantity($quantity);
         $gp_detail->setGatepassMaster($gp_m_id);
         $created_by = $this->_em->find('Users', $this->_user_id);
         $gp_detail->setCreatedBy($created_by);
         $gp_detail->setCreatedDate(App_Tools_Time::now());
         $gp_detail->setModifiedBy($created_by);
         $gp_detail->setModifiedDate(App_Tools_Time::now());
         $this->_em->persist($gp_detail);
         $this->_em->flush();
     }
 }