diff --git a/core/components/minishop3/src/Controllers/Api/Manager/OrdersController.php b/core/components/minishop3/src/Controllers/Api/Manager/OrdersController.php index 58cec930..3b1eb51c 100644 --- a/core/components/minishop3/src/Controllers/Api/Manager/OrdersController.php +++ b/core/components/minishop3/src/Controllers/Api/Manager/OrdersController.php @@ -644,7 +644,7 @@ public function create(array $params = []): array 'comment', 'text_address' ]; foreach ($addressFields as $field) { - if (isset($params[$field])) { + if (array_key_exists($field, $params)) { $address->set($field, $params[$field]); } } @@ -1146,7 +1146,7 @@ public function updateProduct(array $params = []): array $changes = []; foreach ($allowedFields as $field) { - if (isset($params[$field])) { + if (array_key_exists($field, $params)) { $oldValue = $orderProduct->get($field); $value = $params[$field]; @@ -1160,9 +1160,11 @@ public function updateProduct(array $params = []): array $value = max(0, (float)$value); } - // Handle options (JSON) - if ($field === 'options' && is_array($value)) { - $value = json_encode($value, JSON_UNESCAPED_UNICODE); + // Handle options (JSON); null clears options (OrderView getOptionsForSave()) + if ($field === 'options') { + if (is_array($value)) { + $value = json_encode($value, JSON_UNESCAPED_UNICODE); + } } // Track changes for logging diff --git a/core/components/minishop3/src/Services/Customer/CustomerAddressManager.php b/core/components/minishop3/src/Services/Customer/CustomerAddressManager.php index e45d12c4..d9d5cb85 100644 --- a/core/components/minishop3/src/Services/Customer/CustomerAddressManager.php +++ b/core/components/minishop3/src/Services/Customer/CustomerAddressManager.php @@ -230,7 +230,12 @@ public function update(int $addressId, int $customerId, array $data): bool } // Regenerate hash if address changed - if (isset($data['city']) || isset($data['street']) || isset($data['building']) || isset($data['room'])) { + if ( + array_key_exists('city', $data) + || array_key_exists('street', $data) + || array_key_exists('building', $data) + || array_key_exists('room', $data) + ) { $address->set('hash', $this->generateHash(array_merge($address->toArray(), $data))); } diff --git a/core/components/minishop3/src/Services/ExtraFieldsService.php b/core/components/minishop3/src/Services/ExtraFieldsService.php index 01997fae..65c1f0b9 100644 --- a/core/components/minishop3/src/Services/ExtraFieldsService.php +++ b/core/components/minishop3/src/Services/ExtraFieldsService.php @@ -297,7 +297,7 @@ public function updateField(int $id, array $data): array $allowedFields = ['label', 'description', 'xtype', 'active', 'select_options']; foreach ($allowedFields as $fieldName) { - if (isset($data[$fieldName])) { + if (array_key_exists($fieldName, $data)) { $field->set($fieldName, $data[$fieldName]); } }