Merge branch '462-resq-dropdown-for-trade-in-reason' into '465-resq-august-13-release'

Resolve "Resq - dropdown for trade-in reason"

See merge request jankstudio/resq!541
This commit is contained in:
Korina Cordero 2020-08-10 07:53:01 +00:00
commit 8d33e21647
4 changed files with 106 additions and 9 deletions

View file

@ -346,6 +346,12 @@ class JobOrder
*/ */
protected $reasons_not_waiting; protected $reasons_not_waiting;
// reason for not trading in battery
/**
* @ORM\Column(type="string", length=80, nullable=true)
*/
protected $no_trade_in_reason;
public function __construct() public function __construct()
{ {
$this->date_create = new DateTime(); $this->date_create = new DateTime();
@ -997,4 +1003,15 @@ class JobOrder
{ {
return $this->reasons_not_waiting; return $this->reasons_not_waiting;
} }
public function setNoTradeInReason($reason)
{
$this->no_trade_in_reason = $reason;
return $this;
}
public function getNoTradeInReason()
{
return $this->no_trade_in_reason;
}
} }

View file

@ -0,0 +1,20 @@
<?php
namespace App\Ramcar;
class NoTradeInReason extends NameValue
{
const NO_EXISTING_BATTERY = 'no_existing_battery';
const SELL_OTHER_SHOP = 'sell_other_shop';
const SPARE_BATTERY = 'used_as_spare_battery';
const RETURN_BATTERY_COMPANY = 'return_battery_company';
const LOW_TRADE_IN_VALUE = 'low_trade_in_value';
const COLLECTION = [
'no_existing_battery' => 'No existing battery',
'sell_other_shop' => 'Sell to other shop',
'used_as_spare_battery' => 'Used as spare battery',
'return_battery_company' => 'Need to return battery to company',
'low_trade_in_value' => 'Trade in value is low',
];
}

View file

@ -38,6 +38,7 @@ use App\Ramcar\TransactionOrigin;
use App\Ramcar\FacilitatedType; use App\Ramcar\FacilitatedType;
use App\Ramcar\JORejectionReason; use App\Ramcar\JORejectionReason;
use App\Ramcar\CustomerNotWaitReason; use App\Ramcar\CustomerNotWaitReason;
use App\Ramcar\NoTradeInReason;
use App\Service\InvoiceGeneratorInterface; use App\Service\InvoiceGeneratorInterface;
use App\Service\JobOrderHandlerInterface; use App\Service\JobOrderHandlerInterface;
@ -332,6 +333,17 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
else else
$reason = $req->request->get('no_wait_reason'); $reason = $req->request->get('no_wait_reason');
// check if trade in
$is_trade_in = $req->request->get('invoice_trade_in_type');
$no_trade_in_reason = '';
if (empty($is_trade_in))
{
$no_trade_in_reason = $req->request->get('no_trade_in_reason');
if (empty($no_trade_in_reason))
$error_array['no_trade_in_reason'] = 'No trade in reason required.';
}
// TODO: check status before saving since JO might already // TODO: check status before saving since JO might already
// have a status that needs to be retained // have a status that needs to be retained
@ -363,7 +375,8 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
->setModeOfPayment($req->request->get('mode_of_payment')) ->setModeOfPayment($req->request->get('mode_of_payment'))
->setLandmark($req->request->get('landmark')) ->setLandmark($req->request->get('landmark'))
->setWillingToWait($req->request->get('flag_will_wait', false)) ->setWillingToWait($req->request->get('flag_will_wait', false))
->setReasonsNotWait($reason); ->setReasonsNotWait($reason)
->setNoTradeInReason($no_trade_in_reason);
// check if user is null, meaning call to create came from API // check if user is null, meaning call to create came from API
if ($user != null) if ($user != null)
@ -465,6 +478,17 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
else else
$reason = $req->request->get('no_wait_reason'); $reason = $req->request->get('no_wait_reason');
// check if trade in
$is_trade_in = $req->request->get('invoice_trade_in_type');
$no_trade_in_reason = '';
if (empty($is_trade_in))
{
$no_trade_in_reason = $req->request->get('no_trade_in_reason');
if (empty($no_trade_in_reason))
$error_array['no_trade_in_reason'] = 'No trade in reason required.';
}
if (empty($error_array)) if (empty($error_array))
{ {
// get current user // get current user
@ -491,7 +515,8 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
->setModeOfPayment($req->request->get('mode_of_payment')) ->setModeOfPayment($req->request->get('mode_of_payment'))
->setLandmark($req->request->get('landmark')) ->setLandmark($req->request->get('landmark'))
->setWillingToWait($req->request->get('flag_will_wait', false)) ->setWillingToWait($req->request->get('flag_will_wait', false))
->setReasonsNotWait($reason); ->setReasonsNotWait($reason)
->setNoTradeInReason($no_trade_in_reason);
// did they change invoice? // did they change invoice?
$invoice_items = $req->request->get('invoice_items', []); $invoice_items = $req->request->get('invoice_items', []);
@ -837,6 +862,17 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
else else
$reason = $req->request->get('no_wait_reason'); $reason = $req->request->get('no_wait_reason');
// check if trade in
$is_trade_in = $req->request->get('invoice_trade_in_type');
$no_trade_in_reason = '';
if (empty($is_trade_in))
{
$no_trade_in_reason = $req->request->get('no_trade_in_reason');
if (empty($no_trade_in_reason))
$error_array['no_trade_in_reason'] = 'No trade in reason required.';
}
if (empty($error_array)) { if (empty($error_array)) {
// coordinates // coordinates
$point = new Point($req->request->get('coord_lng'), $req->request->get('coord_lat')); $point = new Point($req->request->get('coord_lng'), $req->request->get('coord_lat'));
@ -854,7 +890,8 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
->setDeliveryAddress($req->request->get('delivery_address')) ->setDeliveryAddress($req->request->get('delivery_address'))
->setLandmark($req->request->get('landmark')) ->setLandmark($req->request->get('landmark'))
->setWillingToWait($req->request->get('flag_will_wait', false)) ->setWillingToWait($req->request->get('flag_will_wait', false))
->setReasonsNotWait($reason); ->setReasonsNotWait($reason)
->setNoTradeInReason($no_trade_in_reason);
// validate // validate
$errors = $this->validator->validate($obj); $errors = $this->validator->validate($obj);
@ -1029,6 +1066,8 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
if (empty($req->request->get('landmark'))) if (empty($req->request->get('landmark')))
$error_array['landmark'] = 'Landmark is required.'; $error_array['landmark'] = 'Landmark is required.';
error_log($req->request->get('landmark'));
// check if customer is not willing to wait // check if customer is not willing to wait
$will_wait = $req->request->get('flag_will_wait'); $will_wait = $req->request->get('flag_will_wait');
if ($will_wait) if ($will_wait)
@ -1063,10 +1102,10 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
->setTier2Notes($req->request->get('tier2_notes')) ->setTier2Notes($req->request->get('tier2_notes'))
->setDeliveryAddress($req->request->get('delivery_address')) ->setDeliveryAddress($req->request->get('delivery_address'))
->setHub($hub) ->setHub($hub)
->clearRider()
->setLandmark($req->request->get('landmark')) ->setLandmark($req->request->get('landmark'))
->setWillingToWait($req->request->get('flag_will_wait', false)) ->setWillingToWait($req->request->get('flag_will_wait', false))
->setReasonsNotWait($reason); ->setReasonsNotWait($reason)
->clearRider();
if ($user != null) if ($user != null)
{ {
@ -2553,6 +2592,7 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
$params['facilitated_hubs'] = $fac_hubs; $params['facilitated_hubs'] = $fac_hubs;
$params['sources'] = TransactionOrigin::getCollection(); $params['sources'] = TransactionOrigin::getCollection();
$params['no_wait_reasons'] = CustomerNotWaitReason::getCollection(); $params['no_wait_reasons'] = CustomerNotWaitReason::getCollection();
$params['no_trade_in_reasons'] = NoTradeInReason::getCollection();
} }
protected function initFormTags(&$params) protected function initFormTags(&$params)

View file

@ -308,6 +308,7 @@
<div class="form-control-feedback hide" data-field="no_wait_reason"></div> <div class="form-control-feedback hide" data-field="no_wait_reason"></div>
</div> </div>
</div> </div>
<div class="form-group m-form__group row"> <div class="form-group m-form__group row">
<div class="col-lg-6"> <div class="col-lg-6">
<label data-field="tier1_notes">Tier 1 Notes</label> <label data-field="tier1_notes">Tier 1 Notes</label>
@ -455,6 +456,14 @@
<div class="form-control-feedback hide" data-field="promo_detail"></div> <div class="form-control-feedback hide" data-field="promo_detail"></div>
</div> </div>
</div> </div>
<div class="col-lg-6">
<div class="col-lg-12 form-group-inner">
<label>Email Address</label>
<input type="text" name="customer_email" id="customer-email" class="form-control m-input" value="{{ obj.getCustomer ? obj.getCustomer.getEmail|default('') }}" data-vehicle-field="1" >
<div class="form-control-feedback hide" data-field="customer_email"></div>
</div>
</div>
</div>
<div class="form-group m-form__group row"> <div class="form-group m-form__group row">
<div class="col-lg-6"> <div class="col-lg-6">
<label>Discount Type</label> <label>Discount Type</label>
@ -542,20 +551,31 @@
<option value="">Select a vehicle and manufacturer first</option> <option value="">Select a vehicle and manufacturer first</option>
</select> </select>
</div> </div>
<div class="col-lg-2"> <div class="col-lg-1">
<label for="invoice-trade-in-type">Trade In</label> <label for="invoice-trade-in-type">Trade In</label>
<select class="form-control m-input" id="invoice-trade-in-type"> <select class="form-control m-input" name="invoice_trade_in_type" id="invoice-trade-in-type">
<option value="">None</option> <option value="">None</option>
{% for key, type in trade_in_types %} {% for key, type in trade_in_types %}
<option value="{{ key }}">{{ type }}</option> <option value="{{ key }}">{{ type }}</option>
{% endfor %} {% endfor %}
</select> </select>
</div> </div>
<div class="col-lg-2"> <div class="col-lg-2">
<label data-field="no_trade_in_reason">No Trade In Reason</label>
<select class="form-control m-input" id="no-trade-in-reason" name="no_trade_in_reason">
<option value="">Select reason</option>
{% for key, class in no_trade_in_reasons %}
<option value="{{ key }}"{{ obj.getNoTradeInReason == key ? ' selected' }}>{{ class }}</option>
{% endfor %}
</select>
<div class="form-control-feedback hide" data-field="no_trade_in_reason"></div>
</div>
<div class="col-lg-1">
<label for="invoice-quantity">Quantity</label> <label for="invoice-quantity">Quantity</label>
<input type="text" id="invoice-quantity" class="form-control m-input text-right" value="1"> <input type="text" id="invoice-quantity" class="form-control m-input text-right" value="1">
</div> </div>
<div class="col-lg-5"> <div class="col-lg-3">
<div><label>&nbsp;</label></div> <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-primary" id="btn-add-to-invoice">Add</button>
<!-- <!--