Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 5 additions & 3 deletions classes/controllers/LengowOrderController.php
Original file line number Diff line number Diff line change
Expand Up @@ -152,16 +152,18 @@ public function postProcess()
break;
case 'save_shipping_method':
$idOrder = (int) Tools::getValue('id_order');
$shippingMethod = Tools::getValue('method');
$shippingMethod = Tools::getValue('method', null);
$response = ['success' => false, 'message' => ''];

if (!$idOrder || !$shippingMethod) {
if (!$idOrder) {
$response['message'] = 'Missing parameters';
} else {
try {
// Allow empty string to clear the shipping method (saves NULL in DB)
$methodValue = ($shippingMethod !== null && $shippingMethod !== '') ? pSQL($shippingMethod) : null;
$result = Db::getInstance()->update(
'lengow_orders',
['method' => pSQL($shippingMethod)],
['method' => $methodValue],
'id_order = ' . $idOrder
);

Expand Down
2 changes: 2 additions & 0 deletions classes/models/LengowHook.php
Original file line number Diff line number Diff line change
Expand Up @@ -334,11 +334,13 @@ public function hookAdminOrderSide($params)
$shippingMethods = LengowMarketplace::getValidShippingMethods($marketplaceName);

$ajaxUrl = $this->context->link->getAdminLink('AdminLengowOrder', true);
$locale = new LengowTranslation();
$this->context->smarty->assign([
'id_order' => $id_order,
'shipping_methods' => $shippingMethods,
'lengowOrder' => $lengowOrder,
'ajax_url' => $ajaxUrl,
'lengow_locale' => $locale,
]);

return $this->module->display(_PS_MODULE_LENGOW_DIR_, 'views/templates/hook/order/admin_order_side.tpl');
Expand Down
11 changes: 10 additions & 1 deletion classes/models/LengowMarketplace.php
Original file line number Diff line number Diff line change
Expand Up @@ -505,7 +505,16 @@ protected function getAllParams($action, $lengowOrder, $marketplaceArguments)
$params[$arg] = $carrierName;
break;
case LengowAction::ARG_SHIPPING_METHOD:
$params[$arg] = $shippingMethod;
// Only send shipping_method when it is a required argument,
// or when it is optional but has a non-empty value set by the merchant.
// This prevents sending Amazon-imported default values (e.g. "Standard", "SecondDay")
// when the merchant has not explicitly chosen a shipping method.
$isRequired = isset($actions['args']) && in_array(LengowAction::ARG_SHIPPING_METHOD, $actions['args'], true);
if ($isRequired) {
$params[$arg] = $shippingMethod ?? '';
} elseif (!empty($shippingMethod)) {
$params[$arg] = $shippingMethod;
}
break;
case LengowAction::ARG_RETURN_CARRIER:
$idReturnCarrier = LengowOrderDetail::getOrderReturnCarrier($lengowOrder->id);
Expand Down
8 changes: 8 additions & 0 deletions translations/en.csv
Original file line number Diff line number Diff line change
Expand Up @@ -471,6 +471,14 @@ admin.order.resend_action|Resend Action
admin.order.check_resend_action|Do you really want to send the following action: %{action}?
admin.order.customer_shipping_phone|Customer shipping phone
admin.order.customer_billing_phone|Customer billing phone
admin.order.shipping_method_label|Shipping method sent by Lengow:
admin.order.shipping_method_empty|-- No shipping method selected --
admin.order.shipping_method_custom_label|Or enter a custom value (e.g. ECONOMY):
admin.order.shipping_method_custom_help|The value entered here takes priority over the dropdown selection above. Amazon accepts free text values for this field.
admin.order.shipping_method_save|Save shipping method
admin.order.shipping_method_saved|Shipping method saved successfully.
admin.order.shipping_method_error|Error:
admin.order.shipping_method_server_error|Error communicating with server
log.install.install_start|## start install for version %{version} ##
log.install.install_end|## end install for version %{version} ##
log.install.table_created|adding table %{name} in database
Expand Down
8 changes: 8 additions & 0 deletions translations/es.csv
Original file line number Diff line number Diff line change
Expand Up @@ -471,3 +471,11 @@ admin.order.resend_action|Reenvie la accion
admin.order.check_resend_action|¿Realmente desea enviar la siguiente acción: %{action} ?
admin.order.customer_shipping_phone|Teléfono de envío al cliente
admin.order.customer_billing_phone|Teléfono de facturación al cliente
admin.order.shipping_method_label|Método de envío enviado por Lengow:
admin.order.shipping_method_empty|-- Ningún método de envío seleccionado --
admin.order.shipping_method_custom_label|O introduzca un valor personalizado (ej. ECONOMY):
admin.order.shipping_method_custom_help|El valor introducido aquí tendrá prioridad sobre la selección del menú desplegable. Amazon acepta valores de texto libre para este campo.
admin.order.shipping_method_save|Guardar método de envío
admin.order.shipping_method_saved|Método de envío guardado correctamente.
admin.order.shipping_method_error|Error:
admin.order.shipping_method_server_error|Error de comunicación con el servidor
8 changes: 8 additions & 0 deletions translations/fr.csv
Original file line number Diff line number Diff line change
Expand Up @@ -471,3 +471,11 @@ admin.order.resend_action|Renvoyer l'action
admin.order.check_resend_action|Vous voulez vous vraiment renvoyer l'action %{action} ?
admin.order.customer_shipping_phone|Numéro de téléphone de livraison client
admin.order.customer_billing_phone|Numéro de téléphone de facturation client
admin.order.shipping_method_label|Méthode de livraison envoyée par Lengow :
admin.order.shipping_method_empty|-- Aucune méthode de livraison sélectionnée --
admin.order.shipping_method_custom_label|Ou saisissez une valeur personnalisée (ex : ECONOMY) :
admin.order.shipping_method_custom_help|La valeur saisie ici sera prioritaire sur la sélection du menu déroulant ci-dessus. Amazon accepte des valeurs libres pour ce champ.
admin.order.shipping_method_save|Enregistrer la méthode de livraison
admin.order.shipping_method_saved|Méthode enregistrée avec succès.
admin.order.shipping_method_error|Erreur :
admin.order.shipping_method_server_error|Erreur de communication avec le serveur
8 changes: 8 additions & 0 deletions translations/it.csv
Original file line number Diff line number Diff line change
Expand Up @@ -471,3 +471,11 @@ admin.order.resend_action|Re-invia Azione
admin.order.check_resend_action|Vuoi veramente inviare di nuovo questa azione: %{action}?
admin.order.customer_shipping_phone|Telefono per la spedizione del cliente
admin.order.customer_billing_phone|Telefono per la fatturazione del cliente
admin.order.shipping_method_label|Metodo di spedizione inviato da Lengow:
admin.order.shipping_method_empty|-- Nessun metodo di spedizione selezionato --
admin.order.shipping_method_custom_label|Oppure inserire un valore personalizzato (es. ECONOMY):
admin.order.shipping_method_custom_help|Il valore inserito qui avrà la priorità sulla selezione del menu a discesa. Amazon accetta valori di testo libero per questo campo.
admin.order.shipping_method_save|Salva metodo di spedizione
admin.order.shipping_method_saved|Metodo di spedizione salvato con successo.
admin.order.shipping_method_error|Errore:
admin.order.shipping_method_server_error|Errore di comunicazione con il server
8 changes: 8 additions & 0 deletions translations/yml/en.yml
Original file line number Diff line number Diff line change
Expand Up @@ -510,3 +510,11 @@ en:
check_resend_action: "Do you really want to send the following action: %{action}?"
customer_shipping_phone: "Customer shipping phone"
customer_billing_phone: "Customer billing phone"
shipping_method_label: "Shipping method sent by Lengow:"
shipping_method_empty: "-- No shipping method selected --"
shipping_method_custom_label: "Or enter a custom value (e.g. ECONOMY):"
shipping_method_custom_help: "The value entered here takes priority over the dropdown selection above. Amazon accepts free text values for this field."
shipping_method_save: "Save shipping method"
shipping_method_saved: "Shipping method saved successfully."
shipping_method_error: "Error:"
shipping_method_server_error: "Error communicating with server"
8 changes: 8 additions & 0 deletions translations/yml/es.yml
Original file line number Diff line number Diff line change
Expand Up @@ -510,3 +510,11 @@ es:
check_resend_action: "¿Realmente desea enviar la siguiente acción: %{action} ?"
customer_shipping_phone: "Teléfono de envío al cliente"
customer_billing_phone: "Teléfono de facturación al cliente"
shipping_method_label: "Método de envío enviado por Lengow:"
shipping_method_empty: "-- Ningún método de envío seleccionado --"
shipping_method_custom_label: "O introduzca un valor personalizado (ej. ECONOMY):"
shipping_method_custom_help: "El valor introducido aquí tendrá prioridad sobre la selección del menú desplegable. Amazon acepta valores de texto libre para este campo."
shipping_method_save: "Guardar método de envío"
shipping_method_saved: "Método de envío guardado correctamente."
shipping_method_error: "Error:"
shipping_method_server_error: "Error de comunicación con el servidor"
8 changes: 8 additions & 0 deletions translations/yml/fr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -510,3 +510,11 @@ fr:
check_resend_action: "Vous voulez vous vraiment renvoyer l'action %{action} ?"
customer_shipping_phone: "Numéro de téléphone de livraison client"
customer_billing_phone: "Numéro de téléphone de facturation client"
shipping_method_label: "Méthode de livraison envoyée par Lengow :"
shipping_method_empty: "-- Aucune méthode de livraison sélectionnée --"
shipping_method_custom_label: "Ou saisissez une valeur personnalisée (ex : ECONOMY) :"
shipping_method_custom_help: "La valeur saisie ici sera prioritaire sur la sélection du menu déroulant ci-dessus. Amazon accepte des valeurs libres pour ce champ."
shipping_method_save: "Enregistrer la méthode de livraison"
shipping_method_saved: "Méthode enregistrée avec succès."
shipping_method_error: "Erreur :"
shipping_method_server_error: "Erreur de communication avec le serveur"
8 changes: 8 additions & 0 deletions translations/yml/it.yml
Original file line number Diff line number Diff line change
Expand Up @@ -510,3 +510,11 @@ it:
check_resend_action: "Vuoi veramente inviare di nuovo questa azione: %{action}?"
customer_shipping_phone: "Telefono per la spedizione del cliente"
customer_billing_phone: "Telefono per la fatturazione del cliente"
shipping_method_label: "Metodo di spedizione inviato da Lengow:"
shipping_method_empty: "-- Nessun metodo di spedizione selezionato --"
shipping_method_custom_label: "Oppure inserire un valore personalizzato (es. ECONOMY):"
shipping_method_custom_help: "Il valore inserito qui avrà la priorità sulla selezione del menu a discesa. Amazon accetta valori di testo libero per questo campo."
shipping_method_save: "Salva metodo di spedizione"
shipping_method_saved: "Metodo di spedizione salvato con successo."
shipping_method_error: "Errore:"
shipping_method_server_error: "Errore di comunicazione con il server"
45 changes: 37 additions & 8 deletions views/templates/hook/order/admin_order_side.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -21,29 +21,58 @@
<div class="card-header"><h2>Lengow Shipping</h2></div>
<div class="card-body">
<div class="form-group">
<label for="lengow_shipping_select">Méthode de livraison envoyée par Lengow :</label>
<label for="lengow_shipping_select">{$lengow_locale->t('admin.order.shipping_method_label')|escape:'html':'UTF-8'}</label>
<select id="lengow_shipping_select" class="form-control">
<option value="">{$lengow_locale->t('admin.order.shipping_method_empty')|escape:'html':'UTF-8'}</option>
{foreach from=$shipping_methods item=method}
{if $method.method_lengow_code}
{if $method.method_lengow_code && $method.method_lengow_code !== 'null' && $method.method_lengow_code !== 'NULL'}
<option value="{$method.method_lengow_code|escape:'html':'UTF-8'}"
{if isset($lengowOrder.method) && $lengowOrder.method == $method.method_lengow_code}selected{/if}>
{if isset($lengowOrder.method) && $lengowOrder.method !== '' && $lengowOrder.method !== null && $lengowOrder.method == $method.method_lengow_code}selected{/if}>
{$method.method_lengow_code|escape:'html':'UTF-8'}
</option>
{/if}
{/foreach}
</select>
</div>
<button id="save_lengow_method" class="btn btn-primary mt-3">Enregistrer la méthode de livraison</button>
<div class="form-group mt-2">
<label for="lengow_shipping_custom">{$lengow_locale->t('admin.order.shipping_method_custom_label')|escape:'html':'UTF-8'}</label>
<input type="text" id="lengow_shipping_custom" class="form-control"
placeholder="ECONOMY"
value="{if isset($lengowOrder.method) && $lengowOrder.method !== '' && $lengowOrder.method !== null}{$lengowOrder.method|escape:'html':'UTF-8'}{/if}" />
<small class="form-text text-muted">
{$lengow_locale->t('admin.order.shipping_method_custom_help')|escape:'html':'UTF-8'}
</small>
</div>
<button id="save_lengow_method" class="btn btn-primary mt-3">{$lengow_locale->t('admin.order.shipping_method_save')|escape:'html':'UTF-8'}</button>
<div id="lengow_save_result" class="mt-2"></div>
</div>
</div>

<script>
(function() {
var i18n = {
saved: "{$lengow_locale->t('admin.order.shipping_method_saved')|escape:'javascript':'UTF-8'}",
error: "{$lengow_locale->t('admin.order.shipping_method_error')|escape:'javascript':'UTF-8'}",
serverError: "{$lengow_locale->t('admin.order.shipping_method_server_error')|escape:'javascript':'UTF-8'}"
};
document.addEventListener('DOMContentLoaded', function() {
var selectEl = document.getElementById('lengow_shipping_select');
var customEl = document.getElementById('lengow_shipping_custom');

// When a dropdown option is chosen, copy it to the text field (or clear if empty option)
selectEl.addEventListener('change', function() {
customEl.value = selectEl.value;
});

// When text field is modified, reset dropdown to empty
customEl.addEventListener('input', function() {
selectEl.value = '';
});

var btn = document.getElementById('save_lengow_method');
btn.addEventListener('click', function() {
var method = document.getElementById('lengow_shipping_select').value;
// Text field takes priority; otherwise use dropdown value
var method = customEl.value !== '' ? customEl.value : selectEl.value;
var idOrder = {$id_order|intval};
// URL générée par getAdminLink (inclut token et controller)
var url = "{$ajax_url|escape:'javascript':'UTF-8'}";
Expand All @@ -59,15 +88,15 @@
.then(function(json) {
var res = document.getElementById('lengow_save_result');
if (json.success) {
res.innerHTML = '<div class="alert alert-success">Méthode enregistrée avec succès.</div>';
res.innerHTML = '<div class="alert alert-success">' + i18n.saved + '</div>';
setTimeout(function() { res.innerHTML = ''; }, 5000);
} else {
res.innerHTML = '<div class="alert alert-danger">Erreur : ' + json.message + '</div>';
res.innerHTML = '<div class="alert alert-danger">' + i18n.error + ' ' + json.message + '</div>';
}
})
.catch(function(error) {
console.error(error);
document.getElementById('lengow_save_result').innerHTML = '<div class="alert alert-danger">Erreur de communication avec le serveur</div>';
document.getElementById('lengow_save_result').innerHTML = '<div class="alert alert-danger">' + i18n.serverError + '</div>';
});
});
});
Expand Down