Пример #1
0
 /**
  * Add productProcessTime
  *
  * @param \TSProj\ProductBundle\Entity\ProductProcessTime $productProcessTime
  * @return Employee
  */
 public function addProductProcessTime(\TSProj\ProductBundle\Entity\ProductProcessTime $productProcessTime)
 {
     $this->productProcessTime[] = $productProcessTime;
     $productProcessTime->setEmployee($this);
     return $this;
 }
Пример #2
0
 /**
  * @Route("/save",name="ajax_save_product_Process_Time")
  */
 public function ajax_save_product_Process_TimeAction()
 {
     $request = $this->container->get('request');
     $message = "";
     $productid = $request->request->get('productid');
     $projectid = $request->request->get('projectid');
     $projectname = $request->request->get('projectname');
     $customername = $request->request->get('customername');
     $productstartdate = $request->request->get('productstartdate');
     $deliverdate = $request->request->get('deliverdate');
     $projectpercent = $request->request->get('projectpercent');
     $itemcount = $request->request->get('itemcount');
     $stock_id = $request->request->get('stock');
     $emp_barcode = $request->request->get('emp_barcode');
     $empname = $request->request->get('empname');
     $processBarcode = $request->request->get('process_barcode');
     $processname = $request->request->get('processname');
     $pro_barcode = $request->request->get('pro_barcode');
     $processstartdate = $request->request->get('processstartdate');
     $processenddate = $request->request->get('processenddate');
     $now = new \DateTime();
     $curr = $now->format("Y-m-d");
     $timeConsum = 0;
     $em = $this->getDoctrine()->getEntityManager();
     $qb = $em->createQueryBuilder();
     $product = $em->getRepository("TSProjProductBundle:Product")->findOneByproductBarcode($productid);
     $product_id = $product->getId();
     $process = $em->getRepository("TSProjProductBundle:Process")->findOneByprocessBarcode($processBarcode);
     if (count($process) == 1) {
         $process_id = $process->getId();
     }
     $employee = $em->getRepository("TSProjPeopleBundle:Employee")->findOneByemployeeBarcode($emp_barcode);
     if (count($employee) == 1) {
         $emp_id = $employee->getId();
     }
     $stock = $em->getRepository("TSProjProductBundle:Stock")->findOneById($stock_id);
     if ($stock) {
         $amt = $stock->getStockProductQuantity() - 1;
         $stock->setStockProductQuantity($amt);
         $product->setStock($stock);
         $em->persist($stock);
         $em->persist($product);
         $em - flush();
     } else {
         // in case scan product to calculate time consuming (not from the stock)
         $qb->select('ppt')->from('TSProjProductBundle:ProductProcessTime', 'ppt')->innerJoin('ppt.product', 'pd')->innerJoin('ppt.process', 'pc')->innerJoin('ppt.employee', 'emp')->where('pd.id = :productid')->andWhere('pc.id = :process_id')->andWhere('emp.id = :employeeid')->andWhere('ppt.endDateTime is NULL')->setParameter('productid', $product_id)->setParameter('process_id', $process_id)->setParameter('employeeid', $emp_id);
         $ProductProcessTime = $qb->getQuery()->getResult();
         if ($ProductProcessTime == null) {
             //insert new record
             $newProductProcessTime = new ProductProcessTime();
             $newProductProcessTime->setProduct($product);
             $newProductProcessTime->setProcess($process);
             $newProductProcessTime->setEmployee($employee);
             $newProductProcessTime->setStartDateTime($now);
             $newProductProcessTime->setTimeConsuming('0');
             $newProductProcessTime->setFinishedFlag('0');
             $newProductProcessTime->setLastMaintDateTime($now);
             $newProductProcessTime->setApprovalEmployee(null);
             $product->setCurrentPhase($process);
             $project = $product->getProject();
             $project->setProjectStartDate($now);
             $entityManager = $this->getDoctrine()->getManager();
             $entityManager->persist($newProductProcessTime);
             $entityManager->persist($product);
             $entityManager->persist($project);
             $entityManager->flush();
             $code = 100;
         } else {
             $cnt = count($ProductProcessTime);
             if ($cnt == 1) {
                 $ProductProcessTime = $ProductProcessTime[0];
                 $start = $ProductProcessTime->getStartDateTime();
                 $processDate = $start->format("Y-m-d");
                 if ($processDate == $curr) {
                     $ProductProcessTime->setEndDateTime($now);
                     $ProductProcessTime->setLastMaintDateTime($now);
                     //calculate Time consuming
                     $diff = $now->diff($start);
                     $timeConsum = $diff->format('%h') * 60 + $diff->format('%i');
                     //break time
                     if ($start->format('H') < 12) {
                         $timeConsum = $timeConsum - 60;
                     }
                     $ProductProcessTime->setTimeConsuming($timeConsum);
                     $em->persist($ProductProcessTime);
                     $em->flush();
                     $code = 100;
                 } else {
                     $code = 300;
                     $message = "การสแกนครั้งนี้ไม่ถูกต้อง - สแกนข้ามวัน";
                 }
             } else {
                 $code = 300;
                 $message = "การสแกนครั้งนี้ไม่ถูกต้อง กรุณาติดต่อ Admin";
             }
         }
     }
     $response = array("code" => $code, "success" => true, "message" => $message);
     return new Response(json_encode($response));
 }