From beeaed5c001af87a16d88607d1153a9e0d252b42 Mon Sep 17 00:00:00 2001 From: Korina Cordero Date: Fri, 12 Apr 2019 01:44:00 +0000 Subject: [PATCH] Fix query that checks if a warranty already exists. #187 --- .../GenerateWarrantyFromJobOrderCommand.php | 49 ++++++++++++------- 1 file changed, 32 insertions(+), 17 deletions(-) diff --git a/src/Command/GenerateWarrantyFromJobOrderCommand.php b/src/Command/GenerateWarrantyFromJobOrderCommand.php index ef41209e..1412c706 100644 --- a/src/Command/GenerateWarrantyFromJobOrderCommand.php +++ b/src/Command/GenerateWarrantyFromJobOrderCommand.php @@ -49,10 +49,10 @@ class GenerateWarrantyFromJobOrderCommand extends Command $qb = $this->em->getRepository(JobOrder::class)->createQueryBuilder('j'); - // get all job orders with service_type='battery_warranty' + // get all job orders with service_type='battery_replacement_new' $qb->select('j') ->where('j.service_type = :service_type') - ->setParameter('service_type', ServiceType::BATTERY_REPLACEMENT_WARRANTY); + ->setParameter('service_type', ServiceType::BATTERY_REPLACEMENT_NEW); $query = $qb->getQuery(); $result = $query->getResult(); @@ -77,10 +77,14 @@ class GenerateWarrantyFromJobOrderCommand extends Command { $warranty_period = $invoice_item->getBattery()->getWarrantyPrivate(); } - else + if ($invoice_item->getBattery()->getWarrantyCommercial() != null) { $warranty_period = $invoice_item->getBattery()->getWarrantyCommercial(); } + if ($invoice_item->getBattery()->getWarrantyTnv() != null) + { + $warranty_period = $invoice_item->getBattery()->getWarrantyTnv(); + } if ($jo->getInvoice()->getDateCreate() != null) { @@ -89,20 +93,31 @@ class GenerateWarrantyFromJobOrderCommand extends Command { continue; } - $warranty = new Warranty(); - $warranty->setWarrantyClass($jo->getWarrantyClass()) - ->setFirstName($jo->getCustomer()->getFirstName()) - ->setLastName($jo->getCustomer()->getLastName()) - ->setMobileNumber($jo->getCustomer()->getPhoneMobile()) - ->setPlateNumber($jo->getCustomerVehicle()->getPlateNumber()) - ->setDatePurchase($jo->getInvoice()->getDateCreate()) - ->setDateExpire($this->computeDateExpire($jo->getInvoice()->getDateCreate(), $warranty_period)) - ->setBatteryModel($invoice_item->getBattery()->getModel()) - ->setBatterySize($invoice_item->getBattery()->getSize()) - ->setSAPBattery($sap_battery); - $em->persist($warranty); - } - $em->flush(); + // check if warranty already exists + $cleaned_plate_number = Warranty::cleanPlateNumber($jo->getCustomerVehicle()->getPlateNumber()); + $expiry_date = $this->computeDateExpire($jo->getInvoice()->getDateCreate(), $warranty_period); + $found_warranty = $this->em->createQuery("SELECT count(w) FROM App\Entity\Warranty w + WHERE w.plate_number = :plate_number AND w.date_expire = :date_expire") + ->setParameter('plate_number', $cleaned_plate_number) + ->setParameter('date_expire', $expiry_date->format('Y-m-d')) + ->getSingleScalarResult(); + if ($found_warranty == 0) + { + $warranty = new Warranty(); + $warranty->setWarrantyClass($jo->getWarrantyClass()) + ->setFirstName($jo->getCustomer()->getFirstName()) + ->setLastName($jo->getCustomer()->getLastName()) + ->setMobileNumber($jo->getCustomer()->getPhoneMobile()) + ->setPlateNumber($cleaned_plate_number) + ->setDatePurchase($jo->getInvoice()->getDateCreate()) + ->setDateExpire($expiry_date) + ->setBatteryModel($invoice_item->getBattery()->getModel()) + ->setBatterySize($invoice_item->getBattery()->getSize()) + ->setSAPBattery($sap_battery); + $em->persist($warranty); + } + $em->flush(); + } } } }