Merge branch '33-bulk-fixes-for-uat-handover' into 'master'

Resolve "Bulk fixes for UAT handover"

Closes #33

See merge request jankstudio/resq!33
This commit is contained in:
Kendrick Chan 2018-02-28 23:53:24 +00:00
commit 38a1fad607
9 changed files with 156 additions and 31 deletions

View file

@ -693,7 +693,8 @@ class APIController extends Controller
$jo->setSource('mobile')
->setStatus(JOStatus::PENDING)
->setDeliveryInstructions('')
->setAgentNotes('')
->setTier1Notes('')
->setTier2Notes('')
->setDeliveryAddress('Set by mobile application');
// customer

View file

@ -685,7 +685,7 @@ class CustomerController extends BaseController
'model_year_to' => $vehicle->getModelYearTo(),
'model_year' => $obj->getModelYear(),
'color' => $obj->getColor(),
//'plate_number' => $obj->getPlateNumber(),
'plate_number' => $obj->getPlateNumber(),
//'fuel_type' => $obj->getFuelType(),
//'status_condition' => $obj->getStatusCondition(),
]

View file

@ -10,6 +10,8 @@ use App\Ramcar\DiscountApply;
use App\Ramcar\TradeInType;
use App\Ramcar\InvoiceCriteria;
use App\Ramcar\InvoiceStatus;
use App\Ramcar\ModeOfPayment;
use App\Entity\JobOrder;
use App\Entity\BatteryManufacturer;
use App\Entity\Customer;
@ -134,6 +136,7 @@ class JobOrderController extends BaseController
$params['promos'] = $em->getRepository(Promo::class)->findAll();
$params['service_types'] = ServiceType::getCollection();
$params['warranty_classes'] = WarrantyClass::getCollection();
$params['modes_of_payment'] = ModeOfPayment::getCollection();
$params['statuses'] = JOStatus::getCollection();
$params['discount_apply'] = DiscountApply::getCollection();
$params['trade_in_types'] = TradeInType::getCollection();
@ -175,8 +178,7 @@ class JobOrderController extends BaseController
$point = new Point($req->request->get('coord_lng'), $req->request->get('coord_lat'));
// set and save values
$obj->setDateCreate(DateTime::createFromFormat("d M Y", $req->request->get('date_transaction')))
->setDateSchedule(DateTime::createFromFormat("d M Y h:i A", $req->request->get('date_schedule_date') . " " . $req->request->get('date_schedule_time')))
$obj->setDateSchedule(DateTime::createFromFormat("d M Y h:i A", $req->request->get('date_schedule_date') . " " . $req->request->get('date_schedule_time')))
->setCoordinates($point)
->setAdvanceOrder($req->request->get('flag_advance') ?? false)
->setCreatedBy($this->getUser())
@ -187,7 +189,8 @@ class JobOrderController extends BaseController
->setSource('web')
->setStatus(JOStatus::PENDING)
->setDeliveryInstructions($req->request->get('delivery_instructions'))
->setAgentNotes($req->request->get('agent_notes'))
->setTier1Notes($req->request->get('tier1_notes'))
->setTier2Notes($req->request->get('tier2_notes'))
->setDeliveryAddress($req->request->get('delivery_address'));
// check if reference JO is set and validate
@ -568,6 +571,7 @@ class JobOrderController extends BaseController
$params['customers'] = $em->getRepository(Customer::class)->findAll();
$params['service_types'] = ServiceType::getCollection();
$params['warranty_classes'] = WarrantyClass::getCollection();
$params['modes_of_payment'] = ModeOfPayment::getCollection();
$params['statuses'] = JOStatus::getCollection();
$params['promos'] = $em->getRepository(Promo::class)->findAll();
$params['discount_apply'] = DiscountApply::getCollection();
@ -667,7 +671,8 @@ class JobOrderController extends BaseController
->setSource('web')
->setStatus(JOStatus::RIDER_ASSIGN)
->setDeliveryInstructions($req->request->get('delivery_instructions'))
->setAgentNotes($req->request->get('agent_notes'))
->setTier1Notes($req->request->get('tier1_notes'))
->setTier2Notes($req->request->get('tier2_notes'))
->setDeliveryAddress($req->request->get('delivery_address'))
->setHub($hub);
@ -763,6 +768,7 @@ class JobOrderController extends BaseController
$params['customers'] = $em->getRepository(Customer::class)->findAll();
$params['service_types'] = ServiceType::getCollection();
$params['warranty_classes'] = WarrantyClass::getCollection();
$params['modes_of_payment'] = ModeOfPayment::getCollection();
$params['statuses'] = JOStatus::getCollection();
$params['promos'] = $em->getRepository(Promo::class)->findAll();
$params['discount_apply'] = DiscountApply::getCollection();
@ -821,7 +827,8 @@ class JobOrderController extends BaseController
->setSource('web')
->setStatus(JOStatus::ASSIGNED)
->setDeliveryInstructions($req->request->get('delivery_instructions'))
->setAgentNotes($req->request->get('agent_notes'))
->setTier1Notes($req->request->get('tier1_notes'))
->setTier2Notes($req->request->get('tier2_notes'))
->setDeliveryAddress($req->request->get('delivery_address'))
->setAssignedBy($this->getUser())
->setDateAssign(new DateTime())
@ -890,6 +897,7 @@ class JobOrderController extends BaseController
$params['customers'] = $em->getRepository(Customer::class)->findAll();
$params['service_types'] = ServiceType::getCollection();
$params['warranty_classes'] = WarrantyClass::getCollection();
$params['modes_of_payment'] = ModeOfPayment::getCollection();
$params['statuses'] = JOStatus::getCollection();
$params['promos'] = $em->getRepository(Promo::class)->findAll();
$params['discount_apply'] = DiscountApply::getCollection();
@ -936,7 +944,8 @@ class JobOrderController extends BaseController
->setSource('web')
->setStatus(JOStatus::FULFILLED)
->setDeliveryInstructions($req->request->get('delivery_instructions'))
->setAgentNotes($req->request->get('agent_notes'))
->setTier1Notes($req->request->get('tier1_notes'))
->setTier2Notes($req->request->get('tier2_notes'))
->setDeliveryAddress($req->request->get('delivery_address'));
// validate
@ -989,6 +998,7 @@ class JobOrderController extends BaseController
$params['customers'] = $em->getRepository(Customer::class)->findAll();
$params['service_types'] = ServiceType::getCollection();
$params['warranty_classes'] = WarrantyClass::getCollection();
$params['modes_of_payment'] = ModeOfPayment::getCollection();
$params['statuses'] = JOStatus::getCollection();
$params['promos'] = $em->getRepository(Promo::class)->findAll();
$params['discount_apply'] = DiscountApply::getCollection();
@ -1079,7 +1089,8 @@ class JobOrderController extends BaseController
->setSource('web')
->setStatus(JOStatus::RIDER_ASSIGN)
->setDeliveryInstructions($req->request->get('delivery_instructions'))
->setAgentNotes($req->request->get('agent_notes'))
->setTier1Notes($req->request->get('tier1_notes'))
->setTier2Notes($req->request->get('tier2_notes'))
->setDeliveryAddress($req->request->get('delivery_address'))
->setHub($hub)
->clearRider();
@ -1142,6 +1153,7 @@ class JobOrderController extends BaseController
$params['customers'] = $em->getRepository(Customer::class)->findAll();
$params['service_types'] = ServiceType::getCollection();
$params['warranty_classes'] = WarrantyClass::getCollection();
$params['modes_of_payment'] = ModeOfPayment::getCollection();
$params['statuses'] = JOStatus::getCollection();
$params['promos'] = $em->getRepository(Promo::class)->findAll();
$params['discount_apply'] = DiscountApply::getCollection();
@ -1200,7 +1212,8 @@ class JobOrderController extends BaseController
->setSource('web')
->setStatus(JOStatus::ASSIGNED)
->setDeliveryInstructions($req->request->get('delivery_instructions'))
->setAgentNotes($req->request->get('agent_notes'))
->setTier1Notes($req->request->get('tier1_notes'))
->setTier2Notes($req->request->get('tier2_notes'))
->setDeliveryAddress($req->request->get('delivery_address'))
->setAssignedBy($this->getUser())
->setDateAssign(new DateTime())
@ -1254,6 +1267,7 @@ class JobOrderController extends BaseController
$params['customers'] = $em->getRepository(Customer::class)->findAll();
$params['service_types'] = ServiceType::getCollection();
$params['warranty_classes'] = WarrantyClass::getCollection();
$params['modes_of_payment'] = ModeOfPayment::getCollection();
$params['statuses'] = JOStatus::getCollection();
$params['promos'] = $em->getRepository(Promo::class)->findAll();
$params['discount_apply'] = DiscountApply::getCollection();

View file

@ -115,7 +115,7 @@ class Customer
$this->flag_confirmed = false;
$this->flag_mobile_app = false;
$this->flag_active = false;
$this->flag_active = true;
}
public function getID()

View file

@ -8,6 +8,7 @@ use Symfony\Component\Validator\Constraints as Assert;
use CrEOF\Spatial\PHP\Types\Geometry\Point;
use DateTime;
use App\Ramcar\ModeOfPayment;
/**
* @ORM\Entity
@ -148,11 +149,17 @@ class JobOrder
*/
protected $delivery_instructions;
// agent notes
// agent tier I notes
/**
* @ORM\Column(type="text", nullable=true)
*/
protected $agent_notes;
protected $tier1_notes;
// agent tier II notes
/**
* @ORM\Column(type="text", nullable=true)
*/
protected $tier2_notes;
// delivery address
/**
@ -186,6 +193,11 @@ class JobOrder
*/
protected $ref_jo;
/**
* @ORM\Column(type="string", length=50)
*/
protected $mode_of_payment;
public function __construct()
{
$this->date_create = new DateTime();
@ -193,6 +205,7 @@ class JobOrder
$this->flag_advance = false;
$this->source = 'mobile';
$this->mode_of_payment = ModeOfPayment::CASH;
}
public function getID()
@ -420,15 +433,26 @@ class JobOrder
return $this->delivery_instructions;
}
public function setAgentNotes($agent_notes)
public function setTier1Notes($notes)
{
$this->agent_notes = $agent_notes;
$this->tier1_notes = $notes;
return $this;
}
public function getAgentNotes()
public function getTier1Notes()
{
return $this->agent_notes;
return $this->tier1_notes;
}
public function setTier2Notes($notes)
{
$this->tier2_notes = $notes;
return $this;
}
public function getTier2Notes()
{
return $this->tier2_notes;
}
public function setDeliveryAddress($delivery_address)
@ -480,4 +504,15 @@ class JobOrder
{
return $this->ref_jo;
}
public function setModeOfPayment($mode)
{
$this->mode_of_payment = $mode;
return $this;
}
public function getModeOfPayment()
{
return $this->mode_of_payment;
}
}

View file

@ -0,0 +1,18 @@
<?php
namespace App\Ramcar;
class ModeOfPayment extends NameValue
{
const CASH = 'cash';
const CREDIT_CARD = 'credit_card';
const DEBIT_CARD = 'debit_card';
const INSTALLMENT = 'installment';
const COLLECTION = [
'cash' => 'Cash',
'credit_card' => 'Credit Card',
'debit_card' => 'Debit Card',
'installment' => 'Installment',
];
}

View file

@ -14,7 +14,7 @@ class ServiceType extends NameValue
const COLLECTION = [
'battery_new' => 'Battery Replacement (New)',
'battery_warranty' => 'Battery Replacement (Under Warranty)',
'jumpstart_troubleshoot' => 'Jumpstart or Troubleshoot',
'jumpstart_troubleshoot' => 'General Service',
'tire' => 'Tire Repair',
'overheat' => 'Overheat Assistance',
'fuel' => 'Emergency Refuel',

View file

@ -32,7 +32,7 @@
</div>
</div>
</div>
<form id="row-form" class="m-form m-form--fit m-form--label-align-right" method="post" action="{{ mode == 'update' ? url('customer_update_submit', {'id': obj.getId()}) : url('customer_create_submit') }}">
<form id="row-form" class="m-form m-form--fit m-form--label-align-right" method="post" action="{{ mode == 'update' ? url('customer_update_submit', {'id': obj.getId()}) : url('customer_create_submit', {'ref':app.request.query.get('ref')|default('')}) }}">
<div class="m-portlet__body">
<div class="m-form__section m-form__section--first">
<div class="m-form__heading">
@ -384,7 +384,11 @@
text: 'Your changes have been saved!',
type: 'success',
onClose: function() {
{% if app.request.query.get('ref') == 'jo' %}
window.location.href = "{{ url('jo_in') }}";
{% else %}
window.location.href = "{{ url('customer_list') }}";
{% endif %}
}
});
}).fail(function(response) {

View file

@ -55,6 +55,12 @@
<select class="form-control m-select2" id="customer-vehicle" name="customer_vehicle"></select>
<div class="form-control-feedback hide" data-field="customer_vehicle"></div>
</div>
<div class="col-lg-6">
<label></label>
<div style="display:block; margin-top: 5px">
<a href="{{ url('customer_create', {'ref':'jo'}) }}" class="btn btn-success">Create New Customer / Vehicle</a>
</div>
</div>
</div>
</div>
<div class="m-form__section">
@ -119,22 +125,29 @@
</div>
<div class="form-group m-form__group row">
<div class="col-lg-3">
<label data-field="vmfg">Vehicle Manufacturer</label>
<label data-field="vmfg">Manufacturer</label>
<input type="text" name="vmfg" id="vmfg" class="form-control m-input" value="{{ obj.getCustomerVehicle ? obj.getCustomerVehicle.getVehicle.getManufacturer.getName }}" placeholder="Select a vehicle first" data-vehicle-field="1" disabled>
<div class="form-control-feedback hide" data-field="vmfg"></div>
</div>
<div class="col-lg-3">
<label data-field="vehicle_make">Vehicle Make</label>
<label data-field="vehicle_make">Make</label>
<input type="text" name="vehicle_make" id="vehicle-make" class="form-control m-input" value="{{ obj.getCustomerVehicle ? obj.getCustomerVehicle.getVehicle.getMake }}" placeholder="Select a vehicle first" data-vehicle-field="1" disabled>
<div class="form-control-feedback hide" data-field="vehicle_make"></div>
</div>
<div class="col-lg-3">
<label data-field="vehicle_year">Vehicle Model Year</label>
<label data-field="vehicle_year">Model Year</label>
<input type="text" name="vehicle_year" id="vehicle-year" class="form-control m-input" value="{{ obj.getCustomerVehicle ? obj.getCustomerVehicle.getModelYear }}" placeholder="Select a vehicle first" data-vehicle-field="1" disabled>
<div class="form-control-feedback hide" data-field="vehicle_year"></div>
</div>
</div>
<div class="form-group m-form__group row">
<div class="col-lg-3">
<label data-field="vehicle_color">Vehicle Color</label>
<label data-field="vehicle_plate">Plate #</label>
<input type="text" name="vehicle_plate" id="vehicle-plate" class="form-control m-input" value="{{ obj.getCustomerVehicle.getPlateNumber|default('') }}" placeholder="Select a vehicle first" data-vehicle-field="1" disabled>
<div class="form-control-feedback hide" data-field="vehicle_color"></div>
</div>
<div class="col-lg-3">
<label data-field="vehicle_color">Color</label>
<input type="text" name="vehicle_color" id="vehicle-color" class="form-control m-input" value="{{ obj.getCustomerVehicle ? obj.getCustomerVehicle.getColor }}" placeholder="Select a vehicle first" data-vehicle-field="1" disabled>
<div class="form-control-feedback hide" data-field="vehicle_color"></div>
</div>
@ -189,7 +202,7 @@
</select>
<div class="form-control-feedback hide" data-field="service_type"></div>
</div>
<div class="col-lg-6">
<div class="col-lg-3">
<label data-field="warranty_class">Warranty Class</label>
<select class="form-control m-input" id="warranty-class" name="warranty_class">
<!--<option value=""></option>-->
@ -199,11 +212,21 @@
</select>
<div class="form-control-feedback hide" data-field="warranty_class"></div>
</div>
<div class="col-lg-3">
<label data-field="mode_of_payment">Mode of Payment</label>
<select class="form-control m-input" id="mode-of-payment" name="mode_of_payment">
<!--<option value=""></option>-->
{% for key, class in modes_of_payment %}
<option value="{{ key }}"{{ obj.getModeOfPayment == key ? ' selected' }}>{{ class }}</option>
{% endfor %}
</select>
<div class="form-control-feedback hide" data-field="mode_of_payment"></div>
</div>
</div>
<div class="form-group m-form__group row">
<div class="col-lg-6">
<label>Transaction Date</label>
<input type="text" name="date_transaction" class="form-control m-input" value="{{ obj.getDateCreate|default("now")|date('d M Y') }}" disabled>
<input type="text" name="date_transaction" class="form-control m-input" value="{{ obj.getDateCreate|default("now")|date('d M Y - g:i A') }}" disabled>
<div class="form-control-feedback hide" data-field="date_transaction"></div>
</div>
<div class="col-lg-3">
@ -229,16 +252,43 @@
</div>
<div class="form-group m-form__group row">
<div class="col-lg-6">
<label data-field="delivery_instructions">Delivery Instructions</label>
<textarea name="delivery_instructions" class="form-control m-input" rows="4">{{ obj.getDeliveryInstructions }}</textarea>
<div class="form-control-feedback hide" data-field="delivery_instructions"></div>
<label data-field="tier1_notes">Tier 1 Notes</label>
<textarea name="tier1_notes" class="form-control m-input" rows="4">{{ obj.getTier1Notes }}</textarea>
<div class="form-control-feedback hide" data-field="tier1_notes"></div>
</div>
<div class="col-lg-6">
<label data-field="agent_notes">Agent Notes</label>
<textarea name="agent_notes" class="form-control m-input" rows="4">{{ obj.getAgentNotes }}</textarea>
<div class="form-control-feedback hide" data-field="agent_notes"></div>
<label data-field="tier2_notes">Tier 2 Notes</label>
<textarea name="tier2_notes" class="form-control m-input" rows="4">{{ obj.getTier2Notes }}</textarea>
<div class="form-control-feedback hide" data-field="tier2_notes"></div>
</div>
</div>
<div class="form-group m-form__group row">
<div class="col-lg-6">
<label data-field="delivery_instructions">Delivery Instructions</label>
<textarea name="delivery_instructions" class="form-control m-input" rows="4">{{ obj.getDeliveryInstructions }}</textarea>
</div>
</div>
<div class="form-group m-form__group row">
<div class="col-lg-6">
<label>Prepared By</label>
<input type="text" name="created_by" class="form-control m-input" value="{{ obj.getCreatedBy.getFullName|default('') }}" disabled>
<div class="form-control-feedback hide" data-field="date_transaction"></div>
</div>
</div>
<div class="form-group m-form__group row">
<div class="col-lg-6">
<label>Dispatched By</label>
<input type="text" name="created_by" class="form-control m-input" value="{{ obj.getProcessedBy.getFullName|default('') }}" disabled>
<div class="form-control-feedback hide" data-field="date_transaction"></div>
</div>
</div>
<div class="form-group m-form__group row">
<div class="col-lg-6">
<label>Rider Assigned By</label>
<input type="text" name="created_by" class="form-control m-input" value="{{ obj.getAssignedBy.getFullName|default('') }}" disabled>
<div class="form-control-feedback hide" data-field="date_transaction"></div>
</div>
</div>
<!--
<div class="form-group m-form__group row">
<div class="col-lg-6">
@ -395,7 +445,9 @@
<div class="col-lg-5">
<div><label>&nbsp;</label></div>
<button type="button" class="btn btn-primary" id="btn-add-to-invoice">Add</button>
<!--
<button type="button" class="btn btn-success" id="btn-recompute-invoice">Recompute</button>
-->
<button type="button" class="btn btn-danger" id="btn-reset-invoice">Reset</button>
</div>
</div>
@ -914,6 +966,7 @@ $(function() {
$("#vehicle-make").val(vdata.vehicle.make);
$("#vehicle-year").val(vdata.vehicle.model_year);
$("#vehicle-color").val(vdata.vehicle.color);
$("#vehicle-plate").val(vdata.vehicle.plate_number);
if (typeof vdata.battery !== 'undefined') {
$("#current-battery").val(vdata.battery.mfg_name + " " + vdata.battery.model_name + " " + vdata.battery.size_name + " (" + vdata.battery.prod_code + ")");