|
1
|
|
|
<?php |
|
2
|
|
|
|
|
3
|
|
|
namespace Helix\Shopify\Customer; |
|
4
|
|
|
|
|
5
|
|
|
use Helix\Shopify\Base\AbstractEntity; |
|
6
|
|
|
use Helix\Shopify\Base\AbstractEntity\CrudTrait; |
|
7
|
|
|
use Helix\Shopify\Customer; |
|
8
|
|
|
|
|
9
|
|
|
/** |
|
10
|
|
|
* A customer's address. |
|
11
|
|
|
* |
|
12
|
|
|
* @see https://shopify.dev/docs/admin-api/rest/reference/customers/customer-address |
|
13
|
|
|
* |
|
14
|
|
|
* @see Customer::newAddress() |
|
15
|
|
|
* |
|
16
|
|
|
* @method string getAddress1 () |
|
17
|
|
|
* @method string getAddress2 () |
|
18
|
|
|
* @method string getCity () |
|
19
|
|
|
* @method string getCompany () |
|
20
|
|
|
* @method string getCountry () |
|
21
|
|
|
* @method string getCountryCode () read-only |
|
22
|
|
|
* @method string getCountryName () |
|
23
|
|
|
* @method string getCustomerId () injected |
|
24
|
|
|
* @method bool isDefault () |
|
25
|
|
|
* @method string getName () |
|
26
|
|
|
* @method string getPhone () non-unique |
|
27
|
|
|
* @method string getProvince () |
|
28
|
|
|
* @method string getProvinceCode () read-only |
|
29
|
|
|
* @method string getZip () |
|
30
|
|
|
* |
|
31
|
|
|
* @method bool hasPhone () |
|
32
|
|
|
* |
|
33
|
|
|
* @method $this setAddress1 (string $address1) |
|
34
|
|
|
* @method $this setAddress2 (string $address2) |
|
35
|
|
|
* @method $this setCity (string $city) |
|
36
|
|
|
* @method $this setCompany (string $company) |
|
37
|
|
|
* @method $this setCountry (string $country) |
|
38
|
|
|
* @method $this setCountryName (string $name) |
|
39
|
|
|
* @method $this setName (string $name) |
|
40
|
|
|
* @method $this setPhone (string $phone) |
|
41
|
|
|
* @method $this setProvince (string $province) |
|
42
|
|
|
* @method $this setZip (string $zip) |
|
43
|
|
|
*/ |
|
44
|
|
|
class Address extends AbstractEntity |
|
45
|
|
|
{ |
|
46
|
|
|
|
|
47
|
|
|
use CrudTrait; |
|
48
|
|
|
|
|
49
|
|
|
const TYPE = 'customer_address'; |
|
50
|
|
|
const DIR = 'addresses'; |
|
51
|
|
|
|
|
52
|
|
|
protected function _container() |
|
53
|
|
|
{ |
|
54
|
|
|
return $this->getCustomer(); |
|
55
|
|
|
} |
|
56
|
|
|
|
|
57
|
|
|
protected function _onDelete(): void |
|
58
|
|
|
{ |
|
59
|
|
|
parent::_onDelete(); |
|
60
|
|
|
$this->getCustomer()->_reload('addresses'); |
|
61
|
|
|
} |
|
62
|
|
|
|
|
63
|
|
|
protected function _onSave(): void |
|
64
|
|
|
{ |
|
65
|
|
|
parent::_onSave(); |
|
66
|
|
|
$customer = $this->getCustomer(); |
|
67
|
|
|
$customer->_reload('addresses'); |
|
68
|
|
|
if (!$customer->hasPhone() and $this->hasPhone()) { |
|
69
|
|
|
$customer->_reload('phone'); |
|
70
|
|
|
} |
|
71
|
|
|
} |
|
72
|
|
|
|
|
73
|
|
|
/** |
|
74
|
|
|
* @return Customer |
|
75
|
|
|
*/ |
|
76
|
|
|
public function getCustomer() |
|
77
|
|
|
{ |
|
78
|
|
|
return Customer::load($this, $this->getCustomerId()); |
|
79
|
|
|
} |
|
80
|
|
|
|
|
81
|
|
|
/** |
|
82
|
|
|
* Alias for {@link getProvince()} |
|
83
|
|
|
* |
|
84
|
|
|
* @return string |
|
85
|
|
|
*/ |
|
86
|
|
|
final public function getState() |
|
87
|
|
|
{ |
|
88
|
|
|
return $this->getProvince(); |
|
89
|
|
|
} |
|
90
|
|
|
|
|
91
|
|
|
/** |
|
92
|
|
|
* Alias for {@link getProvinceCode()} |
|
93
|
|
|
* |
|
94
|
|
|
* @return string |
|
95
|
|
|
*/ |
|
96
|
|
|
final public function getStateCode() |
|
97
|
|
|
{ |
|
98
|
|
|
return $this->getProvinceCode(); |
|
99
|
|
|
} |
|
100
|
|
|
|
|
101
|
|
|
/** |
|
102
|
|
|
* Sets the address as the default. |
|
103
|
|
|
* |
|
104
|
|
|
* @return $this |
|
105
|
|
|
*/ |
|
106
|
|
|
public function setDefault() |
|
107
|
|
|
{ |
|
108
|
|
|
assert($this->hasId()); |
|
109
|
|
|
// tell the prior default address. |
|
110
|
|
|
if ($default = $this->getCustomer()->getDefaultAddress()) { |
|
111
|
|
|
$default->data['default'] = false; |
|
112
|
|
|
$this->pool->add($default); |
|
113
|
|
|
} |
|
114
|
|
|
return $this->_set('default', true)->update(); |
|
115
|
|
|
} |
|
116
|
|
|
|
|
117
|
|
|
/** |
|
118
|
|
|
* Alias for {@link setProvince()} |
|
119
|
|
|
* |
|
120
|
|
|
* @param string $state |
|
121
|
|
|
* @return $this |
|
122
|
|
|
*/ |
|
123
|
|
|
final public function setState(string $state) |
|
124
|
|
|
{ |
|
125
|
|
|
return $this->setProvince($state); |
|
|
|
|
|
|
126
|
|
|
} |
|
127
|
|
|
|
|
128
|
|
|
} |
This check compares calls to functions or methods with their respective definitions. If the call has more arguments than are defined, it raises an issue.
If a function is defined several times with a different number of parameters, the check may pick up the wrong definition and report false positives. One codebase where this has been known to happen is Wordpress. Please note the @ignore annotation hint above.