Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fixed: Blank space displayed in Customer panel of order detail page in the back-office when customer has deleted #802

Merged
merged 1 commit into from
Mar 13, 2024
Merged
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
57 changes: 57 additions & 0 deletions controllers/admin/AdminCustomersController.php
Original file line number Diff line number Diff line change
@@ -866,6 +866,25 @@ public function renderView()

public function processDelete()
{
// If customer is going to be deleted permanently then if customer has orders the change this customer as an anonymous customer
if (Validate::isLoadedObject($objCustomer = $this->loadObject())) {
if ($this->delete_mode == 'real' && Order::getCustomerOrders($objCustomer->id, true)) {
$objCustomer->email = 'anonymous'.'-'.$objCustomer->id.'@'.Tools::getShopDomain();
$objCustomer->deleted = 1;
if (!$objCustomer->update()) {
$this->errors[] = Tools::displayError('Some error ocurred while deleting the Customer');
return;
}

$this->redirect_after = self::$currentIndex.'&conf=1&token='.$this->token;

return;
}
} else {
$this->errors[] = Tools::displayError('Customer not found.');
return;
}

$this->_setDeletedMode();
parent::processDelete();
}
@@ -884,6 +903,44 @@ protected function _setDeletedMode()

protected function processBulkDelete()
{
// If customer is going to be deleted permanently then if customer has orders the change this customer as an anonymous customer
if ($this->delete_mode == 'real') {
if (is_array($this->boxes) && !empty($this->boxes)) {
foreach ($this->boxes as $key => $idCustomer) {
if (Validate::isLoadedObject($objCustomer = new Customer($idCustomer))) {
// check if customer has orders for email change else customer will be deleted
if (Order::getCustomerOrders($objCustomer->id, true)) {
$objCustomer->email = 'anonymous'.'-'.$objCustomer->id.'@'.Tools::getShopDomain();
$objCustomer->deleted = 1;
if ($objCustomer->update()) {
// unset the customer which is processed
// not processed customers will be deleted with default process if no errors are there
unset($this->boxes[$key]);
} else {
$this->errors[] = Tools::displayError('Some error ocurred while deleting the Customer with id').': '.$idCustomer;
}
}
} else {
$this->errors[] = Tools::displayError('Customer id').': '.$idCustomer.' '.Tools::displayError('not found.');
}
}

// if all the customers are process above then redirect with success
if (!count($this->boxes)) {
$this->redirect_after = self::$currentIndex.'&conf=1&token='.$this->token;
return;
}
} else {
$this->errors[] = Tools::displayError('Customers not found.');
return;
}

// if errors are there then do not proceed for default process
if (count($this->errors)) {
return;
}
}

$this->_setDeletedMode();
parent::processBulkDelete();
}