Skip to content

Commit d647dee

Browse files
authored
Merge pull request #36 from thelia-modules/feat/return-label
feat: return label
2 parents fa7ec2a + a826437 commit d647dee

8 files changed

Lines changed: 89 additions & 16 deletions

File tree

Config/module.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
<language>en_US</language>
1414
<language>fr_FR</language>
1515
</languages>
16-
<version>2.1.6</version>
16+
<version>2.2.0</version>
1717
<authors>
1818
<author>
1919
<name>Gilles Bourgeat</name>

Form/LabelGenerationForm.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
77
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
88
use Symfony\Component\Form\Extension\Core\Type\CollectionType;
9+
use Symfony\Component\Form\Extension\Core\Type\HiddenType;
910
use Symfony\Component\Form\Extension\Core\Type\IntegerType;
1011
use Symfony\Component\Form\Extension\Core\Type\NumberType;
1112
use Symfony\Component\Form\FormEvent;
@@ -64,6 +65,13 @@ protected function buildForm()
6465
'allow_delete' => true,
6566
]
6667
)
68+
->add(
69+
'return_label',
70+
HiddenType::class,
71+
[
72+
'required' => false,
73+
]
74+
)
6775
;
6876
}
6977
}

I18n/backOffice/default/en_US.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
'General informations' => 'General informations',
3030
'Generate bordereau for label since : %date' => 'Generate bordereau for label since : %date',
3131
'Generate new label' => 'Generate new label',
32+
'Generate return label' => 'Generate return label',
3233
'Label' => 'Label',
3334
'Label cannot be created. Error is: ' => 'Label cannot be created. Error is: ',
3435
'Labels' => 'Labels',

I18n/backOffice/default/fr_FR.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
'General informations' => 'Informations générales',
3131
'Generate bordereau for label since : %date' => 'Générer un bordereau pour les étiquettes créée depuis : %date',
3232
'Generate new label' => 'Générer une étiquette',
33+
'Generate return label' => 'Générer une étiquette de retour',
3334
'Label' => 'Etiquette',
3435
'Label cannot be created. Error is: ' => 'L\'étiquette n\'a pas pu être créée. Erreur: ',
3536
'Labels' => 'Etiquettes',

Request/LabelRequest.php

Lines changed: 26 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -27,16 +27,29 @@ class LabelRequest extends AbstractLabelRequest
2727
use MethodCreateAddressFromStore;
2828
use MethodCreateAddressFromOrderAddress;
2929

30-
public function __construct(Order $order, $pickupCode = null, $pickupType = null, $signedDelivery = false)
30+
public function __construct(Order $order, $pickupCode = null, $pickupType = null, $signedDelivery = false, $isReturn = false)
3131
{
3232
$orderAddress = OrderAddressQuery::create()->findOneById($order->getDeliveryOrderAddressId());
3333

3434
/**
3535
* If a pickup type was given (relay point delivery), we set the delivery code $productCode as this.
3636
* Otherwise, we check in getProductCode which delivery type is necessary given the delivery country and whether this
3737
* is a signed delivery or not, and set $productCode as what ie returns.
38+
* If this is a return label, override product code accordingly.
3839
*/
39-
if (null === $productCode = $pickupType) {
40+
$productCode = $pickupType;
41+
if ($isReturn) {
42+
$deliveryAddress = $order->getOrderAddressRelatedByDeliveryOrderAddressId();
43+
$code = $deliveryAddress->getCountry()->getIsocode();
44+
if ('250' == $code) {
45+
$productCode = Service::PRODUCT_CODE_LIST[6]; // CORE - Retour France
46+
} else {
47+
$productCode = Service::PRODUCT_CODE_LIST[9]; // CORI - Retour International/OM
48+
}
49+
$pickupCode = null;
50+
}
51+
52+
if (null === $productCode) {
4053
$productCode = $this->getProductCode($order, $signedDelivery);
4154
}
4255

@@ -53,6 +66,15 @@ public function __construct(Order $order, $pickupCode = null, $pickupType = null
5366
);
5467
}
5568

69+
$storeAddress = $this->createAddressFromStore();
70+
$customerAddress = $this->createAddressFromOrderAddress(
71+
$orderAddress,
72+
$order->getCustomer()
73+
);
74+
75+
$senderForLetter = $isReturn ? $customerAddress : $storeAddress;
76+
$addresseeForLetter = $isReturn ? $storeAddress : $customerAddress;
77+
5678
$this->setLetter(new Letter(
5779
/* We set the general delivery informations */
5880
new Service(
@@ -64,14 +86,11 @@ public function __construct(Order $order, $pickupCode = null, $pickupType = null
6486
),
6587
/* We set the sender address */
6688
new Sender(
67-
$this->createAddressFromStore()
89+
$senderForLetter
6890
),
6991
/* We set the receiver address */
7092
new Addressee(
71-
$this->createAddressFromOrderAddress(
72-
$orderAddress,
73-
$order->getCustomer()
74-
)
93+
$addresseeForLetter
7594
),
7695
new Parcel(
7796
$order->getWeight()

Service/LabelService.php

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ public function generateLabel($data, EventDispatcherInterface $dispatcher): arra
5656

5757
$weightArray = $data['weight'];
5858
$signedArray = $data['signed'];
59+
$isReturn = filter_var($data['return_label'] ?? false, FILTER_VALIDATE_BOOLEAN);
5960

6061
$results = [];
6162

@@ -92,7 +93,9 @@ public function generateLabel($data, EventDispatcherInterface $dispatcher): arra
9293
$colissimoRequest = new LabelRequest(
9394
$order,
9495
'0' == $AddressColissimoPickupPoint->getCode() ? null : $AddressColissimoPickupPoint->getCode(),
95-
$AddressColissimoPickupPoint->getType()
96+
$AddressColissimoPickupPoint->getType(),
97+
$signedDelivery,
98+
$isReturn
9699
);
97100

98101
$colissimoRequest->getLetter()->getService()->setCommercialName(
@@ -104,7 +107,7 @@ public function generateLabel($data, EventDispatcherInterface $dispatcher): arra
104107

105108
/* If this is a domicile delivery, we only use the order information to create a Labelrequest, not the relay point */
106109
if (null === $colissimoRequest) {
107-
$colissimoRequest = new LabelRequest($order, null, null, $signedDelivery);
110+
$colissimoRequest = new LabelRequest($order, null, null, $signedDelivery, $isReturn);
108111
}
109112

110113
/* We set the weight as the one indicated from the form */

Service/SOAPService.php

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,6 @@ public function callAPI(APIConfiguration $APIConfiguration, LabelRequest $reques
6464

6565
$soap = new SoapClient($APIConfiguration->getWsdl());
6666

67-
$test = $xml->asXML();
68-
6967
return new LabelResponse($soap->__doRequest(
7068
$xml->asXML(),
7169
$APIConfiguration->getWsdl(),

templates/backOffice/default/colissimo-label/hook/order-edit-js.html

Lines changed: 47 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ <h4 class="modal-title" id="exampleModalLabel">{intl l="Colissimo Labels" d="col
2525
{form_hidden_fields}
2626
<div class="modal-body">
2727

28+
<div class="js-colissimo-field-status">
2829
{form_field field="new_status"}
2930
<label>
3031
{intl d='colissimolabel.bo.default' l="Order status change after processing"}
@@ -48,14 +49,19 @@ <h4 class="modal-title" id="exampleModalLabel">{intl l="Colissimo Labels" d="col
4849
</label>
4950
</div>
5051
{/form_field}
52+
</div>
5153

5254
{loop type="colissimolabel.label-info" name="form-label-infos" order_id=$ID limit=1}
5355

5456
{form_field field="order_id" value_key=$ORDER_ID}
5557
<input type="checkbox" name="{$name}" value="{$ORDER_ID}" checked hidden>
5658
{/form_field}
5759

58-
<td class="text-center">
60+
{form_field field="return_label"}
61+
<input type="hidden" name="{$name}" id="colissimo-return-label" value="0">
62+
{/form_field}
63+
64+
<td class="text-center js-colissimo-field-signed">
5965
{form_field field="signed" value_key=$ORDER_ID}
6066
<div class="checkbox">
6167
<label for="colissimolabel-input-signedDelivery">
@@ -109,7 +115,10 @@ <h4 class="modal-title" id="exampleModalLabel">{intl l="Colissimo Labels" d="col
109115
<table class="table table-striped" id="colissimo-label-table" data-url="{url path="/admin/module/ColissimoLabel/order/{$order_id}/ajax-get-labels"}">
110116
<caption>
111117
{intl l="Labels Colissimo" d="colissimolabel.bo.default"}
112-
<button class="btn btn-primary pull-right" name="target" data-toggle="modal" data-target="#modal-colissimo-label">
118+
<button class="btn btn-default pull-right" id="colissimo-open-return" style="margin-right:10px;">
119+
{intl l="Generate return label" d="colissimolabel.bo.default"}
120+
</button>
121+
<button class="btn btn-primary pull-right" id="colissimo-open-standard" name="target">
113122
{intl l="Generate new label" d="colissimolabel.bo.default"}
114123
</button>
115124
</caption>
@@ -150,6 +159,7 @@ <h4 class="modal-title" id="exampleModalLabel">{intl l="Colissimo Labels" d="col
150159
$modalErrorAlert = $modalError.find('.alert'),
151160
$modalInputWeight = $modal.find('#colissimo-input-weight'),
152161
$modalInputSignedDelivery = $modal.find("input[name='signedDelivery']"),
162+
$returnField = $modal.find('#colissimo-return-label'),
153163
$table = $('#colissimo-label-table');
154164

155165
function print(url, number) {
@@ -191,7 +201,19 @@ <h4 class="modal-title" id="exampleModalLabel">{intl l="Colissimo Labels" d="col
191201
$modalFooter.removeClass('hide');
192202
$modalLoader.addClass('hide');
193203
$modalError.addClass('hide');
194-
$modalErrorAlert.html('')
204+
$modalErrorAlert.html('');
205+
206+
if ($returnField.val() !== '1') {
207+
$returnField.val('0');
208+
}
209+
210+
if ($returnField.val() === '1') {
211+
$modal.find('.js-colissimo-field-status').addClass('hide');
212+
$modal.find('.js-colissimo-field-signed').addClass('hide');
213+
} else {
214+
$modal.find('.js-colissimo-field-status').removeClass('hide');
215+
$modal.find('.js-colissimo-field-signed').removeClass('hide');
216+
}
195217
});
196218

197219
$modal.on('shown.bs.modal', function (event) {
@@ -204,12 +226,31 @@ <h4 class="modal-title" id="exampleModalLabel">{intl l="Colissimo Labels" d="col
204226
elem.value = val;
205227
});
206228

207-
// modal action print
229+
$modal.on('hidden.bs.modal', function(){
230+
$returnField.val('0');
231+
$modal.find('.js-colissimo-field-status').removeClass('hide');
232+
$modal.find('.js-colissimo-field-signed').removeClass('hide');
233+
});
234+
208235
$table.on('click', '.js-action-print', function(e){
209236
e.preventDefault();
210237
print($(this).attr('href'), this.dataset.number);
211238
});
212239

240+
$('#colissimo-open-return').on('click', function(e){
241+
e.preventDefault();
242+
$returnField.val('1');
243+
$modal.find('input[name="new_status"][value="nochange"]').prop('checked', true);
244+
$modalInputSignedDelivery.prop('checked', false);
245+
$modal.modal('show');
246+
});
247+
248+
$('#colissimo-open-standard').on('click', function(e){
249+
e.preventDefault();
250+
$returnField.val('0');
251+
$modal.modal('show');
252+
});
253+
213254
$modal.find('form').on('submit', function(e){
214255
e.preventDefault();
215256
$modalBody.addClass('hide');
@@ -225,6 +266,7 @@ <h4 class="modal-title" id="exampleModalLabel">{intl l="Colissimo Labels" d="col
225266

226267
request.done(function(json) {
227268
$modalLoader.addClass('hide');
269+
$returnField.val('0');
228270
if (json.error) {
229271
$modalErrorAlert.html(Array.isArray(json.error) ? json.error[0] : json.error);
230272

@@ -241,6 +283,7 @@ <h4 class="modal-title" id="exampleModalLabel">{intl l="Colissimo Labels" d="col
241283
request.fail(function(jqXHR, textStatus) {
242284
console.log('jsonfail');
243285
$modalLoader.addClass('hide');
286+
$returnField.val('0');
244287
$modalError.removeClass('hide');
245288
$modalErrorAlert.html(textStatus);
246289
});

0 commit comments

Comments
 (0)