Fix query that checks if a warranty already exists. #187

This commit is contained in:
Korina Cordero 2019-04-12 01:44:00 +00:00
parent 7e6a469871
commit beeaed5c00

View file

@ -49,10 +49,10 @@ class GenerateWarrantyFromJobOrderCommand extends Command
$qb = $this->em->getRepository(JobOrder::class)->createQueryBuilder('j'); $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') $qb->select('j')
->where('j.service_type = :service_type') ->where('j.service_type = :service_type')
->setParameter('service_type', ServiceType::BATTERY_REPLACEMENT_WARRANTY); ->setParameter('service_type', ServiceType::BATTERY_REPLACEMENT_NEW);
$query = $qb->getQuery(); $query = $qb->getQuery();
$result = $query->getResult(); $result = $query->getResult();
@ -77,10 +77,14 @@ class GenerateWarrantyFromJobOrderCommand extends Command
{ {
$warranty_period = $invoice_item->getBattery()->getWarrantyPrivate(); $warranty_period = $invoice_item->getBattery()->getWarrantyPrivate();
} }
else if ($invoice_item->getBattery()->getWarrantyCommercial() != null)
{ {
$warranty_period = $invoice_item->getBattery()->getWarrantyCommercial(); $warranty_period = $invoice_item->getBattery()->getWarrantyCommercial();
} }
if ($invoice_item->getBattery()->getWarrantyTnv() != null)
{
$warranty_period = $invoice_item->getBattery()->getWarrantyTnv();
}
if ($jo->getInvoice()->getDateCreate() != null) if ($jo->getInvoice()->getDateCreate() != null)
{ {
@ -89,20 +93,31 @@ class GenerateWarrantyFromJobOrderCommand extends Command
{ {
continue; continue;
} }
$warranty = new Warranty(); // check if warranty already exists
$warranty->setWarrantyClass($jo->getWarrantyClass()) $cleaned_plate_number = Warranty::cleanPlateNumber($jo->getCustomerVehicle()->getPlateNumber());
->setFirstName($jo->getCustomer()->getFirstName()) $expiry_date = $this->computeDateExpire($jo->getInvoice()->getDateCreate(), $warranty_period);
->setLastName($jo->getCustomer()->getLastName()) $found_warranty = $this->em->createQuery("SELECT count(w) FROM App\Entity\Warranty w
->setMobileNumber($jo->getCustomer()->getPhoneMobile()) WHERE w.plate_number = :plate_number AND w.date_expire = :date_expire")
->setPlateNumber($jo->getCustomerVehicle()->getPlateNumber()) ->setParameter('plate_number', $cleaned_plate_number)
->setDatePurchase($jo->getInvoice()->getDateCreate()) ->setParameter('date_expire', $expiry_date->format('Y-m-d'))
->setDateExpire($this->computeDateExpire($jo->getInvoice()->getDateCreate(), $warranty_period)) ->getSingleScalarResult();
->setBatteryModel($invoice_item->getBattery()->getModel()) if ($found_warranty == 0)
->setBatterySize($invoice_item->getBattery()->getSize()) {
->setSAPBattery($sap_battery); $warranty = new Warranty();
$em->persist($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();
} }
$em->flush();
} }
} }
} }