/** * 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; }
/** * @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)); }