Merge branch '385-resq-jo-report-changes' into 'master'

Resolve "Resq - JO report changes"

Closes #385

See merge request jankstudio/resq!428
This commit is contained in:
Kendrick Chan 2020-04-22 11:41:34 +00:00
commit 38e0b8a204

View file

@ -746,27 +746,45 @@ class ReportController extends Controller
// csv output
$csv_handle = fopen('php://output', 'w+');
fputcsv($csv_handle, [
'Job Order ID',
'Dispatcher',
'Coordinate Latitude',
'Coordinate Longitude',
'Date and Time Hub Assigned for JO',
'Date Hub Assigned for JO',
'Time Hub Assigned for JO',
'Date and Time Rider Assigned for JO',
'Date Rider Assigned for JO',
'Time Rider Assigned for JO',
'Date and Time Created for Invoice',
'Date and Time Created for JO',
'Date Created for JO',
'Time Created for JO',
'Outlet Name',
'Rider Name',
'Month',
'Scheduled Date and Time',
'Scheduled Date',
'Scheduled Time',
'Distributor', // hub
'Battery Facilitated By', // facilitated_hub
'Job Order Number',
'Service Type',
'Customer Name',
'Customer Mobile Number',
'Plate Number',
'SKU',
'Serial Number',
'Invoice/DR No.',
'Existing Battery',
'Rider Name',
'DPA',
'Created Date and Time',
'Date Created',
'Time Created',
'Date and Time Dispatched',
'Date Dispatched',
'Time Dispatched',
'Date and Time Arrived',
'Date Arrived',
'Time Arrived',
'Created vs Arrival',
'Customer Latitude',
'Customer Longitude',
'Hub Latitude',
'Hub Longitude',
'Facilitated Hub Latitude',
'Facilitated Hub Longitude',
'Dispatcher',
'Agent (Created)',
'Date Create (Invoice)',
'Source',
'Status',
'SKU',
'Flag Advance',
]);
foreach ($data as $row)
{
@ -1307,9 +1325,40 @@ class ReportController extends Controller
if ($dispatcher != null)
$dispatcher_name = $dispatcher->getFullName();
// get agent if any
$agent_name = '';
$agent = $jo->getCreatedBy();
if ($agent != null)
$agent_name = $agent->getFullName();
// get customer coordinates
$coord_long = $jo->getCoordinates()->getLongitude();
$coord_lat = $jo->getCoordinates()->getLatitude();
// get hub and hub coordinates, if any
$hub_name = '';
$hub_coord_long = '';
$hub_coord_lat = '';
$hub = $jo->getHub();
if ($hub != null)
{
$hub_name = $hub->getName();
$hub_coord_long = $hub->getCoordinates()->getLongitude();
$hub_coord_lat = $hub->getCoordinates()->getLatitude();
}
// get facilitated hub coordinates if any
$fac_hub_name = '';
$fac_hub_coord_long = '';
$fac_hub_coord_lat = '';
$fac_hub = $jo->getFacilitatedBy();
if ($fac_hub != null)
{
$fac_hub_name = $fac_hub->getName();
$fac_hub_coord_long = $fac_hub->getCoordinates()->getLongitude();
$fac_hub_coord_lat = $fac_hub->getCoordinates()->getLatitude();
}
// find date and time when JO was assigned a hub
$datetime_hub_assign_jo = '';
$date_hub_assign_jo = '';
@ -1322,13 +1371,14 @@ class ReportController extends Controller
// right now, this gets the last time hub was assigned.
foreach ($hub_assign_events as $hub_assign_event)
{
$datetime_hub_assign_jo = $hub_assign_event->getDateHappen()->format('m-d-Y H:i');
$date_hub_assign_jo = $hub_assign_event->getDateHappen()->format('m-d-Y');
$datetime_hub_assign_jo = $hub_assign_event->getDateHappen()->format('d-M-Y H:i');
$date_hub_assign_jo = $hub_assign_event->getDateHappen()->format('d-M-Y');
$time_hub_assign_jo = $hub_assign_event->getDateHappen()->format('H:i');
}
}
// find date and time when JO was assigned a rider
/*
$datetime_rider_assign_jo = '';
$date_rider_assign_jo = '';
$time_rider_assign_jo = '';
@ -1340,20 +1390,50 @@ class ReportController extends Controller
{
// TODO: what happens if JO was reassigned a rider multiple times?
// right now, this gets the last time rider was assigned.
$datetime_rider_assign_jo = $rider_assign_event->getDateHappen()->format('m-d-Y H:i');
$date_rider_assign_jo = $rider_assign_event->getDateHappen()->format('m-d-Y');
$datetime_rider_assign_jo = $rider_assign_event->getDateHappen()->format('d-M-Y H:i');
$date_rider_assign_jo = $rider_assign_event->getDateHappen()->format('d-M-Y');
$time_rider_assign_jo = $rider_assign_event->getDateHappen()->format('H:i');
}
} */
// find date and time when rider arrived at customer
$datetime_rider_arrive_jo = '';
$date_rider_arrive_jo = '';
$time_rider_arrive_jo = '';
$rider_arrive_event_type = JOEventType::RIDER_ARRIVE;
$dt_rider_arrive = null;
$rider_arrive_events = $em->getRepository(JOEvent::class)->findBy(['job_order' => $jo, 'type_id'=> $rider_arrive_event_type], ['date_happen' => 'DESC']);
if ($rider_arrive_events != null)
{
foreach ($rider_arrive_events as $rider_arrive_event)
{
$dt_rider_arrive = $rider_arrive_event->getDateHappen();
$datetime_rider_arrive_jo = $rider_arrive_event->getDateHappen()->format('d-M-Y H:i');
$date_rider_arrive_jo = $rider_arrive_event->getDateHappen()->format('d-M-Y');
$time_rider_arrive_jo = $rider_arrive_event->getDateHappen()->format('H:i');
}
}
// get invoice date create and item sku if any
// compute time difference between jo creation and rider arrival
$time_diff_create_arrive = '';
if ($dt_rider_arrive != null)
{
$jo_create_time = $jo->getDateCreate();
// get time difference
$interval = $dt_rider_arrive->diff($jo_create_time);
$time_diff_create_arrive = $interval->format('%h:%i');
}
// get invoice date create and item sku and serial if any
$datetime_create_invoice = '';
$sku = '';
$serial = '';
$invoice = $jo->getInvoice();
if ($invoice != null)
{
$invoice_create = $invoice->getDateCreate();
$datetime_create_invoice = $invoice_create->format('m-d-Y H:i');
$datetime_create_invoice = $invoice_create->format('d-M-Y H:i');
// get item sku
$invoice_items = $invoice->getItems();
@ -1361,7 +1441,10 @@ class ReportController extends Controller
{
$battery = $item->getBattery();
if ($battery != null)
{
$sku = $battery->getModel()->getName() . ' ' . $battery->getSize()->getName();
$serial = $battery->getSAPCode();
}
}
}
@ -1371,15 +1454,31 @@ class ReportController extends Controller
$time_create_jo = '';
$jo_create = $jo->getDateCreate();
$datetime_create_jo = $jo_create->format('m-d-Y H:i');
$date_create_jo = $jo_create->format('m-d-Y');
$datetime_create_jo = $jo_create->format('d-M-Y H:i');
$date_create_jo = $jo_create->format('d-M-Y');
$time_create_jo = $jo_create->format('H:i');
// get hub if any
$hub_name = '';
$hub = $jo->getHub();
if ($hub != null)
$hub_name = $hub->getName();
// get jo date schedule if any
$datetime_sked_jo = '';
$date_sked_jo = '';
$time_sked_jo = '';
$jo_date_scheduled = $jo->getDateSchedule();
if (empty($jo_date_scheduled))
{
// set to same date and time as date create of JO
$datetime_sked_jo = $datetime_create_jo;
$date_sked_jo = $date_create_jo;
$time_sked_jo = $time_create_jo;
}
else
{
$datetime_sked_jo = $jo_date_scheduled->format('d-M-Y H:i');
$date_sked_jo = $jo_date_scheduled->format('d-M-Y');
$time_sked_jo = $jo_date_scheduled->format('H:i');
}
// get month from date_create
$month = $jo_create->format('M');
// get rider if any
$rider_name = '';
@ -1387,27 +1486,82 @@ class ReportController extends Controller
if ($rider != null)
$rider_name = $rider->getFullName();
// get customer information
$cust_name = '';
$cust_mobile_number = '';
$plate_number = '';
$dpa = 'No';
$existing_batt = '';
$customer = $jo->getCustomer();
if ($customer != null)
{
$cust_name = $customer->getNameDisplay();
if ($customer->isDpaConsent())
$dpa = 'Yes';
// get mobile number from mobile session
// find latest generated mobile session for customer
$mobile_sessions = $em->getRepository(MobileSession::class)->findBy(['customer' => $customer], ['date_generated' => 'DESC']);
if ($mobile_sessions != null)
{
foreach($mobile_sessions as $mobile_session)
{
$cust_mobile_number = $mobile_session->getPhoneNumber();
}
}
}
// get customer vehicle
$cust_vehicle = $jo->getCustomerVehicle();
if ($cust_vehicle != null)
{
$plate_number = $cust_vehicle->getPlateNumber();
$curr_batt = $cust_vehicle->getCurrentBattery();
if ($curr_batt != null)
$existing_batt = $curr_batt->getModel()->getName() . ' ' . $curr_batt->getSize()->getName();
}
$result[] = [
$month,
$datetime_sked_jo,
$date_sked_jo,
$time_sked_jo,
$hub_name,
$fac_hub_name,
$jo->getID(),
$dispatcher_name,
$coord_lat,
$coord_long,
$datetime_hub_assign_jo,
$date_hub_assign_jo,
$time_hub_assign_jo,
$datetime_rider_assign_jo,
$date_rider_assign_jo,
$time_rider_assign_jo,
$datetime_create_invoice,
$jo->getServiceType(),
$cust_name,
$cust_mobile_number,
$plate_number,
$sku,
$serial,
$jo->getORName(),
$existing_batt,
$rider_name,
$dpa,
$datetime_create_jo,
$date_create_jo,
$time_create_jo,
$hub_name,
$rider_name,
$jo->getServiceType(),
$datetime_hub_assign_jo,
$date_hub_assign_jo,
$time_hub_assign_jo,
$datetime_rider_arrive_jo,
$date_rider_arrive_jo,
$time_rider_arrive_jo,
$time_diff_create_arrive,
$coord_lat,
$coord_long,
$hub_coord_lat,
$hub_coord_long,
$fac_hub_coord_lat,
$fac_hub_coord_long,
$dispatcher_name,
$agent_name,
$datetime_create_invoice,
$jo->getSource(),
$jo->getStatus(),
$sku,
$jo->isAdvanceOrder() ? 'Yes' : 'No'
];
}