PluginProbe
FluentCart A New Era of eCommerce – Faster, Lighter, and Simpler / 1.7.1
FluentCart A New Era of eCommerce – Faster, Lighter, and Simpler v1.7.1
1.7.1 1.7.0 1.6.6 1.6.5 1.6.4 1.6.3 1.6.2 1.6.1 1.6.0 1.5.4 1.5.5 1.5.3 1.5.2 1.5.1 1.5.0 1.4.2 1.4.1 1.4.0 1.3.28 1.3.27 1.3.26 1.3.25 1.3.23 1.3.22 1.3.21 All 51 releases
← All changes | app/Services/OrderService.php +13 -1 1.6.4 → 1.7.1 View file →
@@ -16,8 +16,9 @@
16 16 use FluentCart\App\Models\ProductVariation;
17 17 use FluentCart\App\Models\Subscription;
18 18 use FluentCart\App\Modules\Subscriptions\Services\SystemChargeService;
19 19 use FluentCart\App\Services\Payments\PaymentHelper;
20 +use FluentCart\App\Services\Renderer\CheckoutFieldsSchema;
20 21 use FluentCart\Framework\Support\Arr;
21 22
22 23 class OrderService
23 24 {
@@ -81,13 +82,24 @@
81 82 private static function finalizeAddress($address, $type): array
82 83 {
83 84 $fullName = Arr::get($address, 'full_name', '');
84 85 $name = Arr::get($address, 'name', '');
86 + $explicitFirstName = trim((string) Arr::get($address, 'first_name', ''));
87 + $explicitLastName = trim((string) Arr::get($address, 'last_name', ''));
85 88 $address['full_name'] = $fullName ?? $name;
86 89 $address['first_name'] = AddressHelper::guessFirstNameAndLastName($address['full_name']);
87 90 $address['type'] = $type;
88 91 $name = $fullName ?? $name;
89 - $address = array_merge($address, AddressHelper::guessFirstNameAndLastName($name));
92 +
93 + // In First/Last mode the customer typed both names, so keep them as
94 + // typed. Guessing from the joined name would turn "Alex" + "de Silva"
95 + // into "Alex de" + "Silva". Full-name-only addresses are still guessed.
96 + if (!CheckoutFieldsSchema::isFullNameRequired() && $explicitFirstName !== '') {
97 + $address['first_name'] = $explicitFirstName;
98 + $address['last_name'] = $explicitLastName;
99 + } else {
100 + $address = array_merge($address, AddressHelper::guessFirstNameAndLastName($name));
101 + }
90 102 $address['name'] = Arr::get($address, 'first_name', '') . ' ' . Arr::get($address, 'last_name', '');
91 103 return $address;
92 104 }
93 105