Add command to migrate the imported CarFix data into CMBLegacyJobOrder. #460
This commit is contained in:
parent
832d96c171
commit
4e9c503eb2
5 changed files with 560 additions and 135 deletions
|
|
@ -9,7 +9,7 @@ use Symfony\Component\Console\Output\OutputInterface;
|
||||||
|
|
||||||
use Doctrine\ORM\EntityManagerInterface;
|
use Doctrine\ORM\EntityManagerInterface;
|
||||||
|
|
||||||
use App\Entity\CMBLegacyJobOrder;
|
use App\Entity\CMBLegacyJobOrderRow;
|
||||||
|
|
||||||
class ImportCMBLegacyJobOrderCommand extends Command
|
class ImportCMBLegacyJobOrderCommand extends Command
|
||||||
{
|
{
|
||||||
|
|
@ -114,7 +114,7 @@ class ImportCMBLegacyJobOrderCommand extends Command
|
||||||
$status, $customer_name, $customer_mobile, $reference, $odometer, $batt_model, $batt_size,
|
$status, $customer_name, $customer_mobile, $reference, $odometer, $batt_model, $batt_size,
|
||||||
$trade_in, $replaced_by, $remark, $satisfaction);
|
$trade_in, $replaced_by, $remark, $satisfaction);
|
||||||
|
|
||||||
$legacy_data = new CMBLegacyJobOrder();
|
$legacy_data = new CMBLegacyJobOrderRow();
|
||||||
$legacy_data->setData($data_entry);
|
$legacy_data->setData($data_entry);
|
||||||
|
|
||||||
$this->em->persist($legacy_data);
|
$this->em->persist($legacy_data);
|
||||||
|
|
|
||||||
|
|
@ -9,8 +9,8 @@ use Symfony\Component\Console\Output\OutputInterface;
|
||||||
|
|
||||||
use Doctrine\ORM\EntityManagerInterface;
|
use Doctrine\ORM\EntityManagerInterface;
|
||||||
|
|
||||||
|
use App\Entity\CMBLegacyJobOrderRow;
|
||||||
use App\Entity\CMBLegacyJobOrder;
|
use App\Entity\CMBLegacyJobOrder;
|
||||||
use App\Entity\JobOrder;
|
|
||||||
use App\Entity\VehicleManufacturer;
|
use App\Entity\VehicleManufacturer;
|
||||||
use App\Entity\Vehicle;
|
use App\Entity\Vehicle;
|
||||||
use App\Entity\BatteryManufacturer;
|
use App\Entity\BatteryManufacturer;
|
||||||
|
|
@ -19,8 +19,6 @@ use App\Entity\BatterySize;
|
||||||
use App\Entity\Battery;
|
use App\Entity\Battery;
|
||||||
use App\Entity\Customer;
|
use App\Entity\Customer;
|
||||||
use App\Entity\CustomerVehicle;
|
use App\Entity\CustomerVehicle;
|
||||||
use App\Entity\Invoice;
|
|
||||||
use App\Entity\InvoiceItem;
|
|
||||||
|
|
||||||
use App\Ramcar\CMBServiceType;
|
use App\Ramcar\CMBServiceType;
|
||||||
use App\Ramcar\JOStatus;
|
use App\Ramcar\JOStatus;
|
||||||
|
|
@ -31,6 +29,32 @@ use DateTime;
|
||||||
|
|
||||||
class MigrateCMBLegacyJobOrderCommand extends Command
|
class MigrateCMBLegacyJobOrderCommand extends Command
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
|
id = 'entry_num'
|
||||||
|
trans_date = 'created_date'
|
||||||
|
case_number = 'case_number'
|
||||||
|
insurer = 'insurer'
|
||||||
|
plate_number = 'vehicle_number'
|
||||||
|
car_brand and car_make = split the 'car_model'
|
||||||
|
nature_of_call = nature_of_call
|
||||||
|
trans_type = 'service_needed'
|
||||||
|
address = 'location'
|
||||||
|
address = 'state'
|
||||||
|
driver = 'driver'
|
||||||
|
truck = 'truck'
|
||||||
|
workshop_arrival_time => 'workshop_arrival_time'
|
||||||
|
status = 'status'
|
||||||
|
cust_name = 'customer_name'
|
||||||
|
cust_mobile = 'customer_phone_number'
|
||||||
|
reference = 'reference'
|
||||||
|
odometer = 'odometer'
|
||||||
|
batt_model = 'batt_model'
|
||||||
|
batt_size = 'batt_size'
|
||||||
|
is_trade_in = 'batt_trade_in'
|
||||||
|
replaced_by = 'replaced_by'
|
||||||
|
remarks = 'remark'
|
||||||
|
satisfaction => 'satisfaction'
|
||||||
|
*/
|
||||||
protected $em;
|
protected $em;
|
||||||
|
|
||||||
protected $bmanu_hash;
|
protected $bmanu_hash;
|
||||||
|
|
@ -67,21 +91,39 @@ class MigrateCMBLegacyJobOrderCommand extends Command
|
||||||
{
|
{
|
||||||
$this->setName('cmblegacyjoborderdata:migrate')
|
$this->setName('cmblegacyjoborderdata:migrate')
|
||||||
->setDescription('Retrieve database cmb legacy job orders and insert into job order.')
|
->setDescription('Retrieve database cmb legacy job orders and insert into job order.')
|
||||||
->setHelp('Creates job orders based on data from imported CSV.');
|
->setHelp('Creates job orders based on data from imported CSV.')
|
||||||
|
->addArgument('output_file', InputArgument::REQUIRED, 'Path to the output CSV file of the entries not added.');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function execute(InputInterface $input, OutputInterface $output)
|
public function execute(InputInterface $input, OutputInterface $output)
|
||||||
{
|
{
|
||||||
|
$csv_file = $input->getArgument('output_file');
|
||||||
|
|
||||||
|
// attempt to open file
|
||||||
|
try
|
||||||
|
{
|
||||||
|
$fh = fopen($csv_file, "w");
|
||||||
|
}
|
||||||
|
catch (Exception $e)
|
||||||
|
{
|
||||||
|
throw new Exception('The file "' . $csv_file . '" could be opened.');
|
||||||
|
}
|
||||||
|
|
||||||
// get all legacy job orders
|
// get all legacy job orders
|
||||||
$query = $this->em->createQuery('SELECT legacy_jo FROM App\Entity\CMBLegacyJobOrder legacy_jo');
|
$query = $this->em->createQuery('SELECT legacy_jo_row FROM App\Entity\CMBLegacyJobOrderRow legacy_jo_row');
|
||||||
$result = $query->iterate();
|
$result = $query->iterate();
|
||||||
|
|
||||||
$invalid_entries = [];
|
$invalid_entries = [];
|
||||||
|
$added_entries = 0;
|
||||||
|
$total_entries = 0;
|
||||||
|
$total_inv_entries = 0;
|
||||||
foreach ($result as $row)
|
foreach ($result as $row)
|
||||||
{
|
{
|
||||||
$entry = $row[0];
|
$entry = $row[0];
|
||||||
$jo_entry = $entry->getData();
|
$jo_entry = $entry->getData();
|
||||||
|
|
||||||
|
$total_entries++;
|
||||||
|
|
||||||
// get the entry information
|
// get the entry information
|
||||||
$entry_num = $jo_entry['entry_num'];
|
$entry_num = $jo_entry['entry_num'];
|
||||||
$date_create = $jo_entry['created_date'];
|
$date_create = $jo_entry['created_date'];
|
||||||
|
|
@ -112,12 +154,13 @@ class MigrateCMBLegacyJobOrderCommand extends Command
|
||||||
$v_status = $this->processVehicleInfo($car_model);
|
$v_status = $this->processVehicleInfo($car_model);
|
||||||
if ($v_status != null)
|
if ($v_status != null)
|
||||||
{
|
{
|
||||||
error_log($v_status . ' ' . $car_model);
|
//error_log($v_status . ' ' . $car_model);
|
||||||
$invalid_entries[] = $this->addInvalidEntry($entry_num, $date_create, $case_number, $insurer, $plate_number, $car_model,
|
$invalid_entries[] = $this->addInvalidEntry($entry_num, $date_create, $case_number, $insurer, $plate_number, $car_model,
|
||||||
$nature_of_call, $service_needed, $location, $state, $driver, $truck, $workshop_arrival_time,
|
$nature_of_call, $service_needed, $location, $state, $driver, $truck, $workshop_arrival_time,
|
||||||
$status, $customer_name, $customer_mobile, $reference, $odometer, $batt_model, $batt_size,
|
$status, $customer_name, $customer_mobile, $reference, $odometer, $batt_model, $batt_size,
|
||||||
$batt_trade_in, $replaced_by, $remark, $satisfaction, $v_status);
|
$batt_trade_in, $replaced_by, $remark, $satisfaction, $v_status);
|
||||||
|
|
||||||
|
$total_inv_entries++;
|
||||||
// move to next entry
|
// move to next entry
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
@ -126,66 +169,70 @@ class MigrateCMBLegacyJobOrderCommand extends Command
|
||||||
$batt_status = $this->processBatteryInfo($batt_model, $batt_size);
|
$batt_status = $this->processBatteryInfo($batt_model, $batt_size);
|
||||||
if ($batt_status != null)
|
if ($batt_status != null)
|
||||||
{
|
{
|
||||||
error_log($batt_status . ' ' . $batt_model . ' ' . $batt_size);
|
//error_log($batt_status . ' ' . $batt_model . ' ' . $batt_size);
|
||||||
$invalid_entries[] = $this->addInvalidEntry($entry_num, $date_create, $case_number, $insurer, $plate_number, $car_model,
|
$invalid_entries[] = $this->addInvalidEntry($entry_num, $date_create, $case_number, $insurer, $plate_number, $car_model,
|
||||||
$nature_of_call, $service_needed, $location, $state, $driver, $truck, $workshop_arrival_time,
|
$nature_of_call, $service_needed, $location, $state, $driver, $truck, $workshop_arrival_time,
|
||||||
$status, $customer_name, $customer_mobile, $reference, $odometer, $batt_model, $batt_size,
|
$status, $customer_name, $customer_mobile, $reference, $odometer, $batt_model, $batt_size,
|
||||||
$batt_trade_in, $replaced_by, $remark, $satisfaction, $batt_status);
|
$batt_trade_in, $replaced_by, $remark, $satisfaction, $batt_status);
|
||||||
|
|
||||||
|
$total_inv_entries++;
|
||||||
// move to next entry
|
// move to next entry
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
// create job order
|
// create job order
|
||||||
$new_jo = new JobOrder();
|
$cmb_legacy_jo = new CMBLegacyJobOrder();
|
||||||
|
|
||||||
// add to metadata
|
|
||||||
// case number, nature of call, workshop arrival time, reference, odometer, replaced by, satisfaction
|
|
||||||
$new_jo->addMeta('case_number', $case_number);
|
|
||||||
$new_jo->addMeta('nature_of_call', $nature_of_call);
|
|
||||||
$new_jo->addMeta('workshop_arrival_time', $workshop_arrival_time);
|
|
||||||
$new_jo->addMeta('reference', $reference);
|
|
||||||
$new_jo->addMeta('odometer', $odometer);
|
|
||||||
$new_jo->addMeta('replaced_by', $replaced_by);
|
|
||||||
$new_jo->addMeta('satisfaction', $satisfaction);
|
|
||||||
|
|
||||||
// date_create
|
// date_create
|
||||||
$created_date = DateTime::createFromFormat('d-m-Y H:i', $date_create);
|
$created_date = DateTime::createFromFormat("d-m-Y H:i", $date_create);
|
||||||
$new_jo->setDateCreate($created_date);
|
$cmb_legacy_jo->setTransDate($created_date);
|
||||||
|
|
||||||
// insurer == responsible_party
|
// parse vehicle info
|
||||||
$new_jo->setResponsibleParty($insurer);
|
// get vehicle from hash
|
||||||
|
$v_array = explode(' ', $car_model);
|
||||||
|
|
||||||
|
// manufacturer
|
||||||
|
$v_manufacturer = trim($v_array[0]);
|
||||||
|
|
||||||
|
// get model
|
||||||
|
$model_info = '';
|
||||||
|
$v_model = '';
|
||||||
|
for ($i = 1; $i < count($v_array); $i++)
|
||||||
|
{
|
||||||
|
$model_info = $model_info . ' ' . trim($v_array[$i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
$v_model = trim($model_info);
|
||||||
|
|
||||||
// delivery address = location + state
|
// delivery address = location + state
|
||||||
$delivery_address = $location . ', ' . $state;
|
$delivery_address = $location . ', ' . $state;
|
||||||
$new_jo->setDeliveryAddress($delivery_address);
|
|
||||||
|
|
||||||
// remarks == tier 1 notes
|
// check if trade in
|
||||||
$new_jo->setTier1Notes($remark);
|
$trade_in = false;
|
||||||
|
if (strtolower($batt_trade_in) == 'yes')
|
||||||
|
$trade_in = true;
|
||||||
|
|
||||||
// service_needed = service type
|
$cmb_legacy_jo->setCaseNumber($case_number)
|
||||||
// check service needed:
|
->setInsurer($insurer)
|
||||||
// Battery == Battery Sales
|
->setNatureOfCall($nature_of_call)
|
||||||
// Battery Warranty Claim == Warranty Claim
|
->setTransType($service_needed)
|
||||||
// Battery Warranty Replacement == Warranty Replacement
|
->setCarBrand(strtoupper($v_manufacturer))
|
||||||
$service = $this->normalizeName($service_needed);
|
->setCarMake(strtoupper($v_model))
|
||||||
switch ($service)
|
->setCustName($customer_name)
|
||||||
{
|
->setCustMobile($customer_mobile)
|
||||||
case 'battery':
|
->setAddress($delivery_address)
|
||||||
$new_jo->setServiceType(CMBServiceType::BATTERY_REPLACEMENT_NEW);
|
->setDriver($driver)
|
||||||
break;
|
->setTruck($truck)
|
||||||
case 'battery warranty claim':
|
->setWorkshopArrivalTime($workshop_arrival_time)
|
||||||
$new_jo->setServiceType(CMBServiceType::WARRANTY_CLAIM);
|
->setPlateNumber($plate_number)
|
||||||
break;
|
->setStatus($status)
|
||||||
case 'battery warranty replacement':
|
->setReference($reference)
|
||||||
$new_jo->setServiceType(CMBServiceType::BATTERY_REPLACEMENT_WARRANTY);
|
->setOdometer($odometer)
|
||||||
break;
|
->setBatteryModel(strtoupper($batt_model))
|
||||||
}
|
->setBatterySize(strtoupper($batt_size))
|
||||||
|
->setIsTradeIn($trade_in)
|
||||||
// status set everything to fulfilled
|
->setReplacedBy($replaced_by)
|
||||||
// store old status to metadata
|
->setSatisfaction($satisfaction);
|
||||||
$new_jo->setStatus(JOStatus::FULFILLED);
|
|
||||||
$new_jo->addMeta('status', $status);
|
|
||||||
|
|
||||||
// plate number == vehicle_number. Use as key to cv_hash
|
// plate number == vehicle_number. Use as key to cv_hash
|
||||||
// check if plate number has been added
|
// check if plate number has been added
|
||||||
|
|
@ -194,53 +241,60 @@ class MigrateCMBLegacyJobOrderCommand extends Command
|
||||||
$cust = $this->addCustomer($customer_name, $customer_mobile);
|
$cust = $this->addCustomer($customer_name, $customer_mobile);
|
||||||
$cv = $this->addCustomerVehicle($plate_number, $car_model, $cust);
|
$cv = $this->addCustomerVehicle($plate_number, $car_model, $cust);
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
// get customer vehicle from hash
|
|
||||||
$cv = $this->cv_hash[$plate_number];
|
|
||||||
$cust = $cv->getCustomer();
|
|
||||||
}
|
|
||||||
|
|
||||||
$new_jo->setCustomer($cust)
|
|
||||||
->setCustomerVehicle($cv);
|
|
||||||
|
|
||||||
// create the invoice
|
|
||||||
$invoice_item = new InvoiceItem();
|
|
||||||
$invoice = new Invoice();
|
|
||||||
|
|
||||||
// get the battery
|
|
||||||
// cannot get the battery from the hash since we have no manufacturer data
|
|
||||||
// have to find the battery using model and size
|
|
||||||
$b_model = $this->bmodel_hash[$batt_model];
|
|
||||||
$b_size = $this->bsize_hash[$batt_size];
|
|
||||||
|
|
||||||
$battery = $this->findBattery($b_model, $b_size);
|
|
||||||
if ($battery != null)
|
|
||||||
{
|
|
||||||
// assume quantity of 1
|
|
||||||
$invoice_item->setBattery($battery)
|
|
||||||
->setPrice($battery->getSellingPrice())
|
|
||||||
->setQuantity(1)
|
|
||||||
->setInvoice($invoice);
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO: invoice need to check if entry was cancelled or fulfilled
|
|
||||||
// if fulfilled, set date_paid else set date_cancel
|
|
||||||
// check if trade_in
|
|
||||||
// set InvoiceStatus to fulfilled if fulfilled, cancelled if cancelled
|
|
||||||
// compute totals
|
|
||||||
|
|
||||||
$invoice->setJobOrder($new_jo);
|
|
||||||
|
|
||||||
|
|
||||||
//$this->em->persist($new_jo);
|
|
||||||
|
|
||||||
|
$this->em->persist($cmb_legacy_jo);
|
||||||
$this->em->detach($row[0]);
|
$this->em->detach($row[0]);
|
||||||
|
|
||||||
|
$added_entries++;
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->em->flush();
|
$this->em->flush();
|
||||||
$this->em->clear();
|
$this->em->clear();
|
||||||
|
|
||||||
|
// output the entries that were not added
|
||||||
|
if (count($invalid_entries) > 0)
|
||||||
|
{
|
||||||
|
fputcsv($fh, [
|
||||||
|
'Entry Num',
|
||||||
|
'Created Date',
|
||||||
|
'Case Number',
|
||||||
|
'Insurer',
|
||||||
|
'Vehicle Number',
|
||||||
|
'Car Model',
|
||||||
|
'Nature of Call',
|
||||||
|
'Service Needed',
|
||||||
|
'Location',
|
||||||
|
'State',
|
||||||
|
'Driver',
|
||||||
|
'Truck',
|
||||||
|
'Workshop Arrival Time',
|
||||||
|
'Status',
|
||||||
|
'Customer Name',
|
||||||
|
'Customer Phone Number',
|
||||||
|
'Reference',
|
||||||
|
'Odometer',
|
||||||
|
'Batt Model',
|
||||||
|
'Batt Size',
|
||||||
|
'Batt Trade In',
|
||||||
|
'Replaced By',
|
||||||
|
'Remark',
|
||||||
|
'Satisfaction',
|
||||||
|
'Reason',
|
||||||
|
|
||||||
|
]);
|
||||||
|
|
||||||
|
foreach($invalid_entries as $row)
|
||||||
|
{
|
||||||
|
fputcsv($fh, $row);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fclose($fh);
|
||||||
|
|
||||||
|
error_log('Processed ' . $total_entries . ' entries.');
|
||||||
|
error_log('Added ' . $added_entries . ' entries.');
|
||||||
|
error_log('Did not add ' . $total_inv_entries . ' entries.');
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -383,30 +437,6 @@ class MigrateCMBLegacyJobOrderCommand extends Command
|
||||||
return $new_cv;
|
return $new_cv;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function findBattery($batt_model, $batt_size)
|
|
||||||
{
|
|
||||||
$battery = null;
|
|
||||||
$b_query = $this->em->createQuery('SELECT battery from App\Entity\Battery battery
|
|
||||||
INNER JOIN battery.model bm
|
|
||||||
INNER JOIN battery.size bs
|
|
||||||
WHERE battery.model = :bmodel
|
|
||||||
AND battery.size = :bsize');
|
|
||||||
$b_query->setParameter('bmodel', $batt_model)
|
|
||||||
->setParameter('bsize', $batt_size);
|
|
||||||
|
|
||||||
$b_results = $b_query->iterate();
|
|
||||||
|
|
||||||
foreach ($b_results as $b_result)
|
|
||||||
{
|
|
||||||
$battery = $b_result[0];
|
|
||||||
//error_log($battery->getID() . ' ' . $battery->getProductCode());
|
|
||||||
|
|
||||||
$this->em->detach($b_result[0]);
|
|
||||||
}
|
|
||||||
|
|
||||||
return $battery;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected function loadBatteryManufacturers()
|
protected function loadBatteryManufacturers()
|
||||||
{
|
{
|
||||||
$this->bmanu_hash = [];
|
$this->bmanu_hash = [];
|
||||||
|
|
|
||||||
|
|
@ -3,14 +3,15 @@
|
||||||
namespace App\Entity;
|
namespace App\Entity;
|
||||||
|
|
||||||
use Doctrine\ORM\Mapping as ORM;
|
use Doctrine\ORM\Mapping as ORM;
|
||||||
|
use DateTime;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @ORM\Entity
|
* @ORM\Entity
|
||||||
* @ORM\Table(name="legacy_cmb_job_order")
|
* @ORM\Table(name="cmb_legacy_job_order")
|
||||||
*/
|
*/
|
||||||
class CMBLegacyJobOrder
|
class CMBLegacyJobOrder
|
||||||
{
|
{
|
||||||
// unique id
|
// legacy internal id
|
||||||
/**
|
/**
|
||||||
* @ORM\Id
|
* @ORM\Id
|
||||||
* @ORM\Column(type="integer")
|
* @ORM\Column(type="integer")
|
||||||
|
|
@ -18,40 +19,377 @@ class CMBLegacyJobOrder
|
||||||
*/
|
*/
|
||||||
protected $id;
|
protected $id;
|
||||||
|
|
||||||
// data from csv file
|
|
||||||
/**
|
/**
|
||||||
* @ORM\Column(type="json")
|
* @ORM\Column(type="datetime")
|
||||||
*/
|
*/
|
||||||
protected $data;
|
protected $trans_date;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ORM\Column(type="string", length=30, nullable=true)
|
||||||
|
*/
|
||||||
|
protected $case_number;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ORM\Column(type="string", length=30, nullable=true)
|
||||||
|
*/
|
||||||
|
protected $insurer;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ORM\Column(type="string", length=20, nullable=true)
|
||||||
|
*/
|
||||||
|
protected $plate_number;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ORM\Column(type="string", length=50, nullable=true)
|
||||||
|
*/
|
||||||
|
protected $trans_type;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ORM\Column(type="string", length=20, nullable=true)
|
||||||
|
*/
|
||||||
|
protected $car_brand;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ORM\Column(type="string", length=50, nullable=true)
|
||||||
|
*/
|
||||||
|
protected $car_make;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ORM\Column(type="string", length=30, nullable=true)
|
||||||
|
*/
|
||||||
|
protected $nature_of_call;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ORM\Column(type="string", length=400, nullable=true)
|
||||||
|
*/
|
||||||
|
protected $address;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ORM\Column(type="string", length=50, nullable=true)
|
||||||
|
*/
|
||||||
|
protected $driver;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ORM\Column(type="string", length=20, nullable=true)
|
||||||
|
*/
|
||||||
|
protected $truck;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ORM\Column(type="integer", nullable=true)
|
||||||
|
*/
|
||||||
|
protected $workshop_arrival_time;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ORM\Column(type="string", length=50, nullable=true)
|
||||||
|
*/
|
||||||
|
protected $status;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ORM\Column(type="string", length=100, nullable=true)
|
||||||
|
*/
|
||||||
|
protected $cust_name;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ORM\Column(type="string", length=50, nullable=true)
|
||||||
|
*/
|
||||||
|
protected $cust_mobile;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ORM\Column(type="string", length=20, nullable=true)
|
||||||
|
*/
|
||||||
|
protected $reference;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ORM\Column(type="integer", nullable=true)
|
||||||
|
*/
|
||||||
|
protected $odometer;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ORM\Column(type="string", length=50, nullable=true)
|
||||||
|
*/
|
||||||
|
protected $batt_model;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ORM\Column(type="string", length=50, nullable=true)
|
||||||
|
*/
|
||||||
|
protected $batt_size;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ORM\Column(type="boolean", options={"default":false})
|
||||||
|
*/
|
||||||
|
protected $flag_trade_in;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ORM\Column(type="string", length=50, nullable=true)
|
||||||
|
*/
|
||||||
|
protected $replaced_by;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ORM\Column(type="string", length=4000, nullable=true)
|
||||||
|
*/
|
||||||
|
protected $remarks;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ORM\Column(type="string", length=50, nullable=true)
|
||||||
|
*/
|
||||||
|
protected $satisfaction;
|
||||||
|
|
||||||
public function __construct()
|
public function __construct()
|
||||||
{
|
{
|
||||||
$this->data = [];
|
$this->trans_date = new DateTime();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function addData($id, $value)
|
public function setID($id)
|
||||||
{
|
{
|
||||||
$this->data[$id] = $value;
|
$this->id = $id;
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function setData(array $data_array)
|
public function getID()
|
||||||
{
|
{
|
||||||
$this->data = $data_array;
|
return $this->id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setTransDate(DateTime $trans_date)
|
||||||
|
{
|
||||||
|
$this->trans_date = $trans_date;
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getDataById($id)
|
public function getTransDate()
|
||||||
{
|
{
|
||||||
// return null if we don't have it
|
return $this->trans_date;
|
||||||
if (!isset($this->data[$id]))
|
|
||||||
return null;
|
|
||||||
|
|
||||||
return $this->data[$id];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getData()
|
public function setTransType($trans_type)
|
||||||
{
|
{
|
||||||
return $this->data;
|
$this->trans_type = $trans_type;
|
||||||
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getTransType()
|
||||||
|
{
|
||||||
|
return $this->trans_type;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setCaseNumber($case_number)
|
||||||
|
{
|
||||||
|
$this->case_number = $case_number;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getCaseNumber()
|
||||||
|
{
|
||||||
|
return $this->case_number;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setInsurer($insurer)
|
||||||
|
{
|
||||||
|
$this->insurer = $insurer;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getInsurer()
|
||||||
|
{
|
||||||
|
return $this->insurer;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setNatureOfCall($nature_of_call)
|
||||||
|
{
|
||||||
|
$this->nature_of_call = $nature_of_call;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getNatureOfCall()
|
||||||
|
{
|
||||||
|
return $this->nature_of_call;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setPlateNumber($plate_number)
|
||||||
|
{
|
||||||
|
$this->plate_number = $plate_number;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getPlateNumber()
|
||||||
|
{
|
||||||
|
return $this->plate_number;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setCarBrand($car_brand)
|
||||||
|
{
|
||||||
|
$this->car_brand = $car_brand;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getCarBrand()
|
||||||
|
{
|
||||||
|
return $this->car_brand;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setCarMake($car_make)
|
||||||
|
{
|
||||||
|
$this->car_make = $car_make;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getCarMake()
|
||||||
|
{
|
||||||
|
return $this->car_make;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setAddress($address)
|
||||||
|
{
|
||||||
|
$this->address = $address;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getAddress()
|
||||||
|
{
|
||||||
|
return $this->address;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setDriver($driver)
|
||||||
|
{
|
||||||
|
$this->driver = $driver;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getDriver()
|
||||||
|
{
|
||||||
|
return $this->driver;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setTruck($truck)
|
||||||
|
{
|
||||||
|
$this->truck = $truck;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getTruck()
|
||||||
|
{
|
||||||
|
return $this->truck;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setWorkshopArrivalTime($workshop_arrival_time)
|
||||||
|
{
|
||||||
|
$this->workshop_arrival_time = $workshop_arrival_time;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getWorkshopArrivalTime()
|
||||||
|
{
|
||||||
|
return $this->workshop_arrival_time;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setStatus($status)
|
||||||
|
{
|
||||||
|
$this->status = $status;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getStatus()
|
||||||
|
{
|
||||||
|
return $this->status;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setCustName($cust_name)
|
||||||
|
{
|
||||||
|
$this->cust_name = $cust_name;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getCustName()
|
||||||
|
{
|
||||||
|
return $this->cust_name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setCustMobile($cust_mobile)
|
||||||
|
{
|
||||||
|
$this->cust_mobile = $cust_mobile;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getCustMobile()
|
||||||
|
{
|
||||||
|
return $this->cust_mobile;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setReference($reference)
|
||||||
|
{
|
||||||
|
$this->reference = $reference;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getReference()
|
||||||
|
{
|
||||||
|
return $this->reference;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setOdometer($odometer)
|
||||||
|
{
|
||||||
|
$this->odometer = $odometer;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getOdometer()
|
||||||
|
{
|
||||||
|
return $this->odometer;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setBatteryModel($batt_model)
|
||||||
|
{
|
||||||
|
$this->batt_model = $batt_model;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getBatteryModel()
|
||||||
|
{
|
||||||
|
return $this->batt_model;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setBatterySize($batt_size)
|
||||||
|
{
|
||||||
|
$this->batt_size = $batt_size;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getBatterySize()
|
||||||
|
{
|
||||||
|
return $this->batt_size;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setIsTradeIn($flag_trade_in = true)
|
||||||
|
{
|
||||||
|
$this->flag_trade_in = $flag_trade_in;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function isTradeIn()
|
||||||
|
{
|
||||||
|
return $this->flag_trade_in;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setReplacedBy($replaced_by)
|
||||||
|
{
|
||||||
|
$this->replaced_by = $replaced_by;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getReplacedBy()
|
||||||
|
{
|
||||||
|
return $this->replaced_by;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setSatisfaction($satisfaction)
|
||||||
|
{
|
||||||
|
$this->satisfaction = $satisfaction;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getSatisfaction()
|
||||||
|
{
|
||||||
|
return $this->satisfaction;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
57
src/Entity/CMBLegacyJobOrderRow.php
Normal file
57
src/Entity/CMBLegacyJobOrderRow.php
Normal file
|
|
@ -0,0 +1,57 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Entity;
|
||||||
|
|
||||||
|
use Doctrine\ORM\Mapping as ORM;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ORM\Entity
|
||||||
|
* @ORM\Table(name="cmb_legacy_job_order_row")
|
||||||
|
*/
|
||||||
|
class CMBLegacyJobOrderRow
|
||||||
|
{
|
||||||
|
// unique id
|
||||||
|
/**
|
||||||
|
* @ORM\Id
|
||||||
|
* @ORM\Column(type="integer")
|
||||||
|
* @ORM\GeneratedValue(strategy="AUTO")
|
||||||
|
*/
|
||||||
|
protected $id;
|
||||||
|
|
||||||
|
// data from csv file
|
||||||
|
/**
|
||||||
|
* @ORM\Column(type="json")
|
||||||
|
*/
|
||||||
|
protected $data;
|
||||||
|
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
$this->data = [];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function addData($id, $value)
|
||||||
|
{
|
||||||
|
$this->data[$id] = $value;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setData(array $data_array)
|
||||||
|
{
|
||||||
|
$this->data = $data_array;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getDataById($id)
|
||||||
|
{
|
||||||
|
// return null if we don't have it
|
||||||
|
if (!isset($this->data[$id]))
|
||||||
|
return null;
|
||||||
|
|
||||||
|
return $this->data[$id];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getData()
|
||||||
|
{
|
||||||
|
return $this->data;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -34,7 +34,7 @@ class Customer
|
||||||
|
|
||||||
// first name
|
// first name
|
||||||
/**
|
/**
|
||||||
* @ORM\Column(type="string", length=80)
|
* @ORM\Column(type="string", length=100)
|
||||||
* @Assert\NotBlank()
|
* @Assert\NotBlank()
|
||||||
*/
|
*/
|
||||||
protected $first_name;
|
protected $first_name;
|
||||||
|
|
@ -65,7 +65,7 @@ class Customer
|
||||||
|
|
||||||
// mobile phone
|
// mobile phone
|
||||||
/**
|
/**
|
||||||
* @ORM\Column(type="string", length=30)
|
* @ORM\Column(type="string", length=50)
|
||||||
*/
|
*/
|
||||||
protected $phone_mobile;
|
protected $phone_mobile;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue