Merge pull request #1735 from amitsharma322/gli-3007

Fixed: Incorrect order status update when adding extra products to an order via the back-office
This commit is contained in:
Rohit Jain
2026-08-07 12:26:46 +05:30
committed by GitHub
2 changed files with 15 additions and 8 deletions

View File

@@ -677,7 +677,7 @@ abstract class PaymentModuleCore extends Module
$orderTotals[$order->id]['excl'] -= $used['excl'];
$cart_rules[$key]['remaining'] -= $used['excl'];
}
$order->addCartRule($cart_rule['obj']->id, $cart_rule['obj']->name, $values, 0, $cart_rule['obj']->free_shipping);
if ($id_order_state != Configuration::get('PS_OS_ERROR') && $id_order_state != Configuration::get('PS_OS_CANCELED') && !in_array($cart_rule['obj']->id, $cart_rule_used)) {

View File

@@ -5881,25 +5881,28 @@ class AdminOrdersControllerCore extends AdminController
$objOrderHistory->changeIdOrderState($idOrderState, $objOrder, $useExistingPayment);
$objOrderHistory->add();
} else {
// check if new order amount is greater that old order amount and order payment is accepted
// then update order status to partial payment accepted
$currentOrderState = $objOrder->getCurrentOrderState();
$psOsPartialPaymentAccepted = Configuration::get('PS_OS_PARTIAL_PAYMENT_ACCEPTED');
if ($currentOrderState->paid == 1 && $currentOrderState->id != $psOsPartialPaymentAccepted) {
if ($currentOrderState->paid == 1) {
// calculate due amount
$dueAmount = $objOrder->total_paid_tax_incl - $objOrder->total_paid_real;
if ($dueAmount > 0) {
// now change order status to partial payment
$psOsPartialPaymentAccepted = Configuration::get('PS_OS_PARTIAL_PAYMENT_ACCEPTED');
$psOSPaymentComplete = Configuration::get('PS_OS_PAYMENT_ACCEPTED');
if ($objOrder->total_paid_real == 0) {
$targetState = Configuration::get('PS_OS_AWAITING_PAYMENT');
} elseif ($currentOrderState->id != $psOsPartialPaymentAccepted) {
$targetState = $psOsPartialPaymentAccepted;
}
$objOrderHistory = new OrderHistory();
$objOrderHistory->id_order = $objOrder->id;
$objOrderHistory->id_employee = (int) $this->context->employee->id;
$useExistingPayment = false;
if (!$objOrder->hasInvoice()) {
$useExistingPayment = true;
}
$objOrderHistory->changeIdOrderState($psOsPartialPaymentAccepted, $objOrder, $useExistingPayment);
$objOrderHistory->changeIdOrderState($targetState, $objOrder, $useExistingPayment);
$objOrderHistory->add();
}
}
@@ -7749,6 +7752,7 @@ class AdminOrdersControllerCore extends AdminController
$response['hasError'] = true;
$response['errors'][] = Tools::displayError('Error while updating service, please try again after refresing the page');
} else {
$this->sendChangedNotification($objOrder);
$response['service_panel']= $servicesBlock = $this->processRenderServicesPanel(
$objOrderDetail->id_order,
$objHotelBookingDetail->id_product,
@@ -8005,6 +8009,8 @@ class AdminOrdersControllerCore extends AdminController
}
}
}
$this->sendChangedNotification($order);
$response['service_panel'] = $this->processRenderServicesPanel(
$order->id,
$objHotelBookingDetail->id_product,
@@ -8287,6 +8293,7 @@ class AdminOrdersControllerCore extends AdminController
// Save changes of order
if ($objOrder->update()) {
$this->sendChangedNotification($objOrder);
$response['service_panel'] = $this->processRenderServicesPanel(
$objOrder->id,
$objHotelBookingDetail->id_product,