Add error log if JO fulfillment cannot created the warranty. Fix for warranty creation issues when creating warranty from existing JO. #400
This commit is contained in:
parent
906fc76ff3
commit
24d297b48f
2 changed files with 38 additions and 11 deletions
|
|
@ -19,6 +19,8 @@ use App\Entity\SAPBattery;
|
||||||
use App\Ramcar\ServiceType;
|
use App\Ramcar\ServiceType;
|
||||||
use App\Ramcar\WarrantyStatus;
|
use App\Ramcar\WarrantyStatus;
|
||||||
|
|
||||||
|
use DoctrineExtensions\Query\Mysql\DateFormat;
|
||||||
|
|
||||||
class GenerateWarrantyFromJobOrderCommand extends Command
|
class GenerateWarrantyFromJobOrderCommand extends Command
|
||||||
{
|
{
|
||||||
protected $em;
|
protected $em;
|
||||||
|
|
@ -39,7 +41,9 @@ class GenerateWarrantyFromJobOrderCommand extends Command
|
||||||
{
|
{
|
||||||
$this->setName('warranty:generate')
|
$this->setName('warranty:generate')
|
||||||
->setDescription('Generates warranty from job order and inserts into database')
|
->setDescription('Generates warranty from job order and inserts into database')
|
||||||
->setHelp('Generate warranty from job order');
|
->setHelp('Generate warranty from job order')
|
||||||
|
->addArgument('start_date', InputArgument::REQUIRED, 'Start Date')
|
||||||
|
->addArgument('end_date', InputArgument::REQUIRED, 'End Date');
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function computeDateExpire($date_create, $warranty_period)
|
protected function computeDateExpire($date_create, $warranty_period)
|
||||||
|
|
@ -96,8 +100,9 @@ class GenerateWarrantyFromJobOrderCommand extends Command
|
||||||
|
|
||||||
protected function findWarranty($plate_number, $expiry_date)
|
protected function findWarranty($plate_number, $expiry_date)
|
||||||
{
|
{
|
||||||
$date_expire = $expiry_date->format('Y-m-d');
|
// find warranty given plate number and expiration date
|
||||||
if (!isset($this->warranties_hash[$plate_number][$date_expire]))
|
$results = $this->em->getRepository(Warranty::class)->findBy(['plate_number' => $plate_number, 'date_expire' => $expiry_date]);
|
||||||
|
if (empty($results))
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
@ -109,9 +114,19 @@ class GenerateWarrantyFromJobOrderCommand extends Command
|
||||||
{
|
{
|
||||||
$em = $this->em;
|
$em = $this->em;
|
||||||
|
|
||||||
|
$s_date = $input->getArgument('start_date');
|
||||||
|
$e_date = $input->getArgument('end_date');
|
||||||
|
|
||||||
|
$start_date = DateTime::createFromFormat('Ymd', $s_date);
|
||||||
|
$end_date = DateTime::createFromFormat('Ymd', $e_date);
|
||||||
|
$end_date->setTime(23, 59);
|
||||||
|
|
||||||
// to save on joins, go with invoice item first
|
// to save on joins, go with invoice item first
|
||||||
$query = $em->createQuery('select ii,i,jo,cv from App\Entity\InvoiceItem ii inner join ii.invoice i inner join i.job_order jo inner join jo.cus_vehicle cv join jo.customer c where ii.battery is not null and jo.service_type = :service_type');
|
$query = $em->createQuery('select ii,i,jo,cv from App\Entity\InvoiceItem ii inner join ii.invoice i inner join i.job_order jo inner join jo.cus_vehicle cv join jo.customer c where ii.battery is not null and jo.service_type = :service_type and jo.date_schedule > :date_start and jo.date_schedule < :date_end');
|
||||||
$query->setParameter('service_type', ServiceType::BATTERY_REPLACEMENT_NEW);
|
$query->setParameter('service_type', ServiceType::BATTERY_REPLACEMENT_NEW)
|
||||||
|
->setParameter('date_start', $start_date)
|
||||||
|
->setParameter('date_end', $end_date);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
$query = $em->createQuery('SELECT jo FROM App\Entity\JobOrder jo
|
$query = $em->createQuery('SELECT jo FROM App\Entity\JobOrder jo
|
||||||
WHERE jo.service_type = :service_type');
|
WHERE jo.service_type = :service_type');
|
||||||
|
|
@ -175,9 +190,16 @@ class GenerateWarrantyFromJobOrderCommand extends Command
|
||||||
// check if warranty already exists
|
// check if warranty already exists
|
||||||
$cleaned_plate_number = Warranty::cleanPlateNumber($cv->getPlateNumber());
|
$cleaned_plate_number = Warranty::cleanPlateNumber($cv->getPlateNumber());
|
||||||
|
|
||||||
$expiry_date = $this->computeDateExpire($jo->getInvoice()->getDateCreate(), $warranty_period);
|
//$expiry_date = $this->computeDateExpire($jo->getInvoice()->getDateCreate(), $warranty_period);
|
||||||
$found_warranty = $this->findWarranty($cleaned_plate_number, $expiry_date);
|
// use date_schedule as the starting point of expiry date computation
|
||||||
if (!$found_warranty)
|
$expiry_date_date_schedule = $this->computeDateExpire($jo->getDateSchedule(), $warranty_period);
|
||||||
|
$found_warranty_date_schedule = $this->findWarranty($cleaned_plate_number, $expiry_date_date_schedule);
|
||||||
|
|
||||||
|
// need to check for warranty if date schedule != date_create because first version of this command used date_create for expiry date computation
|
||||||
|
$expiry_date_date_create = $this->computeDateExpire($jo->getDateCreate(), $warranty_period);
|
||||||
|
$found_warranty_date_create = $this->findWarranty($cleaned_plate_number, $expiry_date_date_create);
|
||||||
|
|
||||||
|
if ((!$found_warranty_date_schedule) && (!$found_warranty_date_create))
|
||||||
{
|
{
|
||||||
$bty_model_id = $invoice_item->getBattery()->getModel()->getID();
|
$bty_model_id = $invoice_item->getBattery()->getModel()->getID();
|
||||||
$bty_size_id = $invoice_item->getBattery()->getSize()->getID();
|
$bty_size_id = $invoice_item->getBattery()->getSize()->getID();
|
||||||
|
|
@ -188,7 +210,7 @@ class GenerateWarrantyFromJobOrderCommand extends Command
|
||||||
|
|
||||||
$date_create = date('Y-m-d H:i:s');
|
$date_create = date('Y-m-d H:i:s');
|
||||||
|
|
||||||
$date_expire = $expiry_date->format('Y-m-d');
|
$date_expire = $expiry_date_date_schedule->format('Y-m-d');
|
||||||
|
|
||||||
$first_name = addslashes(trim($customer->getFirstName()));
|
$first_name = addslashes(trim($customer->getFirstName()));
|
||||||
$last_name = addslashes(trim($customer->getLastName()));
|
$last_name = addslashes(trim($customer->getLastName()));
|
||||||
|
|
@ -197,13 +219,16 @@ class GenerateWarrantyFromJobOrderCommand extends Command
|
||||||
$values = '(' . $bty_model_id . ',' . $bty_size_id . ',NULL,\'' . $warranty_class . '\',\''
|
$values = '(' . $bty_model_id . ',' . $bty_size_id . ',NULL,\'' . $warranty_class . '\',\''
|
||||||
. $cleaned_plate_number . '\',\'' . WarrantyStatus::ACTIVE . '\',\'' . $date_create . '\',\'' . $date_purchase
|
. $cleaned_plate_number . '\',\'' . WarrantyStatus::ACTIVE . '\',\'' . $date_create . '\',\'' . $date_purchase
|
||||||
. '\',\'' . $date_expire . '\',NULL,'
|
. '\',\'' . $date_expire . '\',NULL,'
|
||||||
. $sap_code . ',NULL,\'' . $first_name . '\',\'' . $last_name . '\',\'' . $mobile_number . '\');';
|
. $sap_code . ',NULL,\'' . $first_name . '\',\'' . $last_name . '\',\'' . $mobile_number . '\',' . 0 . ',NULL' . ');';
|
||||||
|
|
||||||
$sql_statement = 'INSERT INTO `warranty` (bty_model_id,bty_size_id,serial,warranty_class,plate_number,status,date_create,date_purchase,date_expire,date_claim,sap_bty_id,claim_id,first_name,last_name,mobile_number) VALUES ' . $values . "\n";
|
$sql_statement = 'INSERT INTO `warranty` (bty_model_id,bty_size_id,serial,warranty_class,plate_number,status,date_create,date_purchase,date_expire,date_claim,sap_bty_id,claim_id,first_name,last_name,mobile_number,flag_activated,warranty_privacy_policy) VALUES ' . $values . "\n";
|
||||||
|
|
||||||
echo $sql_statement;
|
echo $sql_statement;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
error_log('Warranty already exists for ' . $cleaned_plate_number . ' with expiration date ' .
|
||||||
|
$expiry_date_date_schedule->format('Y-m-d') . ' or ' . $expiry_date_date_create->format('Y-m-d'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -862,6 +862,8 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
|
||||||
|
|
||||||
$this->wh->createWarranty($serial, $plate_number, $first_name, $last_name, $mobile_number, $batt_list, $date_purchase, $warranty_class);
|
$this->wh->createWarranty($serial, $plate_number, $first_name, $last_name, $mobile_number, $batt_list, $date_purchase, $warranty_class);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
error_log('Invalid plate number for warranty. Plate number = ' . $obj->getCustomerVehicle()->getPlateNumber());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue