CustomerTrait   D
last analyzed

Complexity

Total Complexity 105

Size/Duplication

Total Lines 1729
Duplicated Lines 0 %

Coupling/Cohesion

Components 2
Dependencies 0

Test Coverage

Coverage 60.84%

Importance

Changes 5
Bugs 1 Features 1
Metric Value
wmc 105
c 5
b 1
f 1
lcom 2
cbo 0
dl 0
loc 1729
ccs 160
cts 263
cp 0.6084
rs 4.4102

105 Methods

Rating   Name   Duplication   Size   Complexity  
A getCustomerId() 0 4 1
A setCustomerId() 0 6 1
A getCustomerExternalUid() 0 4 1
A setCustomerExternalUid() 0 6 1
A getCustomerNumber() 0 4 1
A setCustomerNumber() 0 6 1
A getDaysForPayment() 0 4 1
A setDaysForPayment() 0 6 1
A getCreated() 0 4 1
A setCreated() 0 6 1
A getPaymentType() 0 4 1
A setPaymentType() 0 6 1
A getBankName() 0 4 1
A setBankName() 0 6 1
A getBankAccountNumber() 0 4 1
A setBankAccountNumber() 0 6 1
A getBankCode() 0 4 1
A setBankCode() 0 6 1
A getBankAccountOwner() 0 4 1
A setBankAccountOwner() 0 6 1
A getBankIBAN() 0 4 1
A setBankIBAN() 0 6 1
A getBankBIC() 0 4 1
A setBankBIC() 0 6 1
A getBankAccountOwnerAddress() 0 4 1
A setBankAccountOwnerAddress() 0 6 1
A getBankAccountOwnerCity() 0 4 1
A setBankAccountOwnerCity() 0 6 1
A getBankAccountOwnerZipCode() 0 4 1
A setBankAccountOwnerZipCode() 0 6 1
A getBankAccountOwnerEmail() 0 4 1
A setBankAccountOwnerEmail() 0 6 1
A getBankAccountMandateReference() 0 4 1
A setBankAccountMandateReference() 0 6 1
A shouldShowPaymentNotice() 0 4 1
A setShowPaymentNotice() 0 6 1
A getCustomerType() 0 4 1
A setCustomerType() 0 6 1
A hasNewsletterOptIn() 0 4 1
A setNewsletterOptIn() 0 6 1
A getAffiliate() 0 4 1
A setAffiliate() 0 6 1
A setHash() 0 6 1
A getBankAccountMandateReferenceDate() 0 4 1
A setBankAccountMandateReferenceDate() 0 6 1
A getOrganization() 0 4 1
A setOrganization() 0 6 1
A getTitleAcademic() 0 4 1
A setTitleAcademic() 0 6 1
A getSalutation() 0 4 1
A setSalutation() 0 6 1
A getFirstName() 0 4 1
A setFirstName() 0 6 1
A getLastName() 0 4 1
A setLastName() 0 6 1
A getFullName() 0 4 1
A getBirthday() 0 4 1
A getHash() 0 4 1
A getAddress() 0 4 1
A setAddress() 0 6 1
A getAddress2() 0 4 1
A setAddress2() 0 6 1
A getZipCode() 0 4 1
A setZipCode() 0 6 1
A getCity() 0 4 1
A setCity() 0 6 1
A getCountryCode() 0 4 1
A setCountryCode() 0 6 1
A getSecondaryAddress() 0 4 1
A setSecondaryAddress() 0 6 1
A getState() 0 4 1
A setState() 0 6 1
A getPhone() 0 4 1
A setPhone() 0 6 1
A getFax() 0 4 1
A setFax() 0 6 1
A getEmail() 0 4 1
A setEmail() 0 6 1
A getEmailCC() 0 4 1
A setEmailCC() 0 6 1
A setBirthday() 0 6 1
A getPaymentMailAddress() 0 4 1
A setPaymentMailAddress() 0 6 1
A getVatId() 0 4 1
A setVatId() 0 6 1
A getTaxId() 0 4 1
A setTaxId() 0 6 1
A getCurrencyCode() 0 4 1
A setCurrencyCode() 0 6 1
A getComment() 0 4 1
A setComment() 0 6 1
A getLastUpdate() 0 4 1
A setLastUpdate() 0 6 1
A getTags() 0 6 1
A setTags() 0 6 1
A getLanguageCode() 0 4 1
A setLanguageCode() 0 6 1
A getChangeDataUrl() 0 4 1
A setChangeDataUrl() 0 6 1
A getDashboardUrl() 0 4 1
A setDashboardUrl() 0 6 1
A getCreditBalance() 0 4 1
A setCreditBalance() 0 6 1
A getInvoiceDeliveryMethod() 0 4 1
A setInvoiceDeliveryMethod() 0 6 1

How to fix   Complexity   

Complex Class

Complex classes like CustomerTrait often do a lot of different things. To break such a class down, we need to identify a cohesive component within that class. A common approach to find such a component is to look for fields/methods that share the same prefixes, or suffixes. You can also have a look at the cohesion graph to spot any un-connected, or weakly-connected components.

Once you have determined the fields that belong together, you can apply the Extract Class refactoring. If the component makes sense as a sub-class, Extract Subclass is also a candidate, and is often faster.

While breaking up the class, it is a good idea to analyze how other classes use CustomerTrait, and based on these observations, apply Extract Interface, too.

1
<?php
2
3
namespace Speicher210\Fastbill\Api\Model;
4
5
use JMS\Serializer\Annotation as JMS;
6
7
/**
8
 * Trait for customer data.
9
 */
10
trait CustomerTrait
11
{
12
    /**
13
     * The customer ID.
14
     *
15
     * @var integer
16
     *
17
     * @JMS\Type("integer")
18
     * @JMS\SerializedName("CUSTOMER_ID")
19
     */
20
    protected $customerId;
21
22
    /**
23
     * The external customer ID.
24
     *
25
     * @var string
26
     *
27
     * @JMS\Type("string")
28
     * @JMS\SerializedName("CUSTOMER_EXT_UID")
29
     */
30
    protected $customerExternalUid;
31
32
    /**
33
     * The own customer number.
34
     *
35
     * @var string
36
     *
37
     * @JMS\Type("string")
38
     * @JMS\SerializedName("CUSTOMER_NUMBER")
39
     */
40
    protected $customerNumber;
41
42
    /**
43
     * Days until date of payment.
44
     *
45
     * @var integer
46
     *
47
     * @JMS\Type("integer")
48
     * @JMS\SerializedName("DAYS_FOR_PAYMENT")
49
     */
50
    protected $daysForPayment;
51
52
    /**
53
     * Date of creation.
54
     *
55
     * @var \DateTime
56
     *
57
     * @JMS\Type("DateTime<'Y-m-d H:i:s'>")
58
     * @JMS\SerializedName("CREATED")
59
     */
60
    protected $created;
61
62
    /**
63
     * Payment type.
64
     *
65
     * @var integer
66
     *
67
     * @JMS\Type("integer")
68
     * @JMS\SerializedName("PAYMENT_TYPE")
69
     */
70
    protected $paymentType;
71
72
    /**
73
     * The bank name.
74
     *
75
     * @var string
76
     *
77
     * @JMS\Type("string")
78
     * @JMS\SerializedName("BANK_NAME")
79
     */
80
    protected $bankName;
81
82
    /**
83
     * The bank account number.
84
     *
85
     * @var string
86
     *
87
     * @JMS\Type("string")
88
     * @JMS\SerializedName("BANK_ACCOUNT_NUMBER")
89
     */
90
    protected $bankAccountNumber;
91
92
    /**
93
     * The bank code.
94
     *
95
     * @var string
96
     *
97
     * @JMS\Type("string")
98
     * @JMS\SerializedName("BANK_CODE")
99
     */
100
    protected $bankCode;
101
102
    /**
103
     * The bank account owner.
104
     *
105
     * @var string
106
     *
107
     * @JMS\Type("string")
108
     * @JMS\SerializedName("BANK_ACCOUNT_OWNER")
109
     */
110
    protected $bankAccountOwner;
111
112
    /**
113
     * The bank IBAN.
114
     *
115
     * @var string
116
     *
117
     * @JMS\Type("string")
118
     * @JMS\SerializedName("BANK_IBAN")
119
     */
120
    protected $bankIBAN;
121
122
    /**
123
     * The bank BIC.
124
     *
125
     * @var string
126
     *
127
     * @JMS\Type("string")
128
     * @JMS\SerializedName("BANK_BIC")
129
     */
130
    protected $bankBIC;
131
132
    /**
133
     * The bank account owner address.
134
     *
135
     * @var string
136
     *
137
     * @JMS\Type("string")
138
     * @JMS\SerializedName("BANK_ACCOUNT_OWNER_ADDRESS")
139
     */
140
    protected $bankAccountOwnerAddress;
141
142
    /**
143
     * The bank account owner city.
144
     *
145
     * @var string
146
     *
147
     * @JMS\Type("string")
148
     * @JMS\SerializedName("BANK_ACCOUNT_OWNER_CITY")
149
     */
150
    protected $bankAccountOwnerCity;
151
152
    /**
153
     * The bank account owner zip code.
154
     *
155
     * @var string
156
     *
157
     * @JMS\Type("string")
158
     * @JMS\SerializedName("BANK_ACCOUNT_OWNER_ZIPCODE")
159
     */
160
    protected $bankAccountOwnerZipCode;
161
162
    /**
163
     * The bank account owner email.
164
     *
165
     * @var string
166
     *
167
     * @JMS\Type("string")
168
     * @JMS\SerializedName("BANK_ACCOUNT_OWNER_EMAIL")
169
     */
170
    protected $bankAccountOwnerEmail;
171
172
    /**
173
     * The bank account mandate reference number.
174
     *
175
     * @var string
176
     *
177
     * @JMS\Type("string")
178
     * @JMS\SerializedName("BANK_ACCOUNT_MANDATE_REFERENCE")
179
     */
180
    protected $bankAccountMandateReference;
181
182
    /**
183
     * Show payment notice.
184
     *
185
     * @var boolean
186
     *
187
     * @JMS\Type("boolean")
188
     * @JMS\SerializedName("SHOW_PAYMENT_NOTICE")
189
     */
190
    protected $showPaymentNotice;
191
192
    /**
193
     * The customer type.
194
     *
195
     * @var string
196
     *
197
     * @JMS\Type("string")
198
     * @JMS\SerializedName("CUSTOMER_TYPE")
199
     */
200
    protected $customerType;
201
202
    /**
203
     * Newsletter option: 0 = no | 1 = yes.
204
     *
205
     * @var boolean
206
     *
207
     * @JMS\Type("boolean")
208
     * @JMS\SerializedName("NEWSLETTER_OPTIN")
209
     */
210
    protected $newsletterOptIn;
211
212
    /**
213
     * Affiliate.
214
     *
215
     * @var string
216
     *
217
     * @JMS\Type("string")
218
     * @JMS\SerializedName("AFFILIATE")
219
     */
220
    protected $affiliate;
221
222
    /**
223
     * Hash.
224
     *
225
     * @var string
226
     *
227
     * @JMS\Type("string")
228
     * @JMS\SerializedName("HASH")
229
     */
230
    protected $hash;
231
232
    /**
233
     * The bank account mandate reference date.
234
     *
235
     * @var \DateTime
236
     *
237
     * @JMS\Type("DateTime<'Y-m-d H:i:s'>")
238
     * @JMS\SerializedName("BANK_ACCOUNT_MANDATE_REFERENCE_DATE")
239
     */
240
    protected $bankAccountMandateReferenceDate;
241
242
    /**
243
     * The name of the organization.
244
     *
245
     * @var string
246
     *
247
     * @JMS\Type("string")
248
     * @JMS\SerializedName("ORGANIZATION")
249
     */
250
    protected $organization;
251
252
    /**
253
     * Academic title.
254
     *
255
     * @var string
256
     *
257
     * @JMS\Type("string")
258
     * @JMS\SerializedName("TITLE_ACADEMIC")
259
     */
260
    protected $titleAcademic;
261
262
    /**
263
     * Salutation.
264
     *
265
     * @var string
266
     *
267
     * @JMS\Type("string")
268
     * @JMS\SerializedName("SALUTATION")
269
     */
270
    protected $salutation;
271
    /**
272
     * The first name of the customer.
273
     *
274
     * @var string
275
     *
276
     * @JMS\Type("string")
277
     * @JMS\SerializedName("FIRST_NAME")
278
     */
279
    protected $firstName;
280
281
    /**
282
     * The last name of the customer.
283
     *
284
     * @var string
285
     *
286
     * @JMS\Type("string")
287
     * @JMS\SerializedName("LAST_NAME")
288
     */
289
    protected $lastName;
290
291
    /**
292
     * The address of the customer.
293
     *
294
     * @var string
295
     *
296
     * @JMS\Type("string")
297
     * @JMS\SerializedName("ADDRESS")
298
     */
299
    protected $address;
300
301
    /**
302
     * The address  of the customer.
303
     *
304
     * @var string
305
     *
306
     * @JMS\Type("string")
307
     * @JMS\SerializedName("ADDRESS_2")
308
     */
309
    protected $address2;
310
311
    /**
312
     * The zipcode of the customer.
313
     *
314
     * @var string
315
     *
316
     * @JMS\Type("string")
317
     * @JMS\SerializedName("ZIPCODE")
318
     */
319
    protected $zipCode;
320
321
    /**
322
     * The city of the customer.
323
     *
324
     * @var string
325
     *
326
     * @JMS\Type("string")
327
     * @JMS\SerializedName("CITY")
328
     */
329
    protected $city;
330
331
    /**
332
     * The customer country code (ISO 3166 ALPHA-2).
333
     *
334
     * @var string
335
     *
336
     * @JMS\Type("string")
337
     * @JMS\SerializedName("COUNTRY_CODE")
338
     */
339
    protected $countryCode;
340
341
    /**
342
     * The secondary address of the customer.
343
     *
344
     * @var string
345
     *
346
     * @JMS\Type("string")
347
     * @JMS\SerializedName("SECONDARY_ADDRESS")
348
     */
349
    protected $secondaryAddress;
350
351
    /**
352
     * The state of the customer.
353
     *
354
     * @var string
355
     *
356
     * @JMS\Type("string")
357
     * @JMS\SerializedName("STATE")
358
     */
359
    protected $state;
360
361
    /**
362
     * The phone number of the customer.
363
     *
364
     * @var string
365
     *
366
     * @JMS\Type("string")
367
     * @JMS\SerializedName("PHONE")
368
     */
369
    protected $phone;
370
371
    /**
372
     * The fax number of the customer.
373
     *
374
     * @var string
375
     *
376
     * @JMS\Type("string")
377
     * @JMS\SerializedName("FAX")
378
     */
379
    protected $fax;
380
381
    /**
382
     * The email address.
383
     *
384
     * @var string
385
     *
386
     * @JMS\Type("string")
387
     * @JMS\SerializedName("EMAIL")
388
     */
389
    protected $email;
390
391
    /**
392
     * The email address cc.
393
     *
394
     * @var string
395
     *
396
     * @JMS\Type("string")
397
     * @JMS\SerializedName("EMAIL_CC")
398
     */
399
    protected $emailCC;
400
401
    /**
402
     * The birthday of the customer.
403
     *
404
     * @var \DateTime
405
     *
406
     * @JMS\Type("DateTime<'Y-m-d'>")
407
     * @JMS\SerializedName("BIRTHDAY")
408
     */
409
    protected $birthday;
410
411
    /**
412
     * The payment mail address of the customer.
413
     *
414
     * @var string
415
     *
416
     * @JMS\Type("string")
417
     * @JMS\SerializedName("PAYMENT_MAIL_ADDRESS")
418
     */
419
    protected $paymentMailAddress;
420
421
    /**
422
     * The VAT identification number of the customer.
423
     *
424
     * @var string
425
     *
426
     * @JMS\Type("string")
427
     * @JMS\SerializedName("VAT_ID")
428
     */
429
    protected $vatId;
430
431
    /**
432
     * Tax ID of the customer.
433
     *
434
     * @var string
435
     *
436
     * @JMS\Type("string")
437
     * @JMS\SerializedName("TAX_ID")
438
     */
439
    protected $taxId;
440
441
    /**
442
     * The currency code of the customer.
443
     *
444
     * @var string
445
     *
446
     * @JMS\Type("string")
447
     * @JMS\SerializedName("CURRENCY_CODE")
448
     */
449
    protected $currencyCode;
450
451
    /**
452
     * Some comments about the customer.
453
     *
454
     * @var string
455
     *
456
     * @JMS\Type("string")
457
     * @JMS\SerializedName("COMMENT")
458
     */
459
    protected $comment;
460
461
    /**
462
     * The last update date for the customer.
463
     *
464
     * @var \DateTime
465
     *
466
     * @JMS\Type("DateTime<'Y-m-d H:i:s'>")
467
     * @JMS\SerializedName("LASTUPDATE")
468
     */
469
    protected $lastUpdate;
470
471
    /**
472
     * Tags of the customer.
473
     *
474
     * @var string
475
     *
476
     * @JMS\Type("string")
477
     * @JMS\SerializedName("TAGS")
478
     */
479
    protected $tags;
480
481
    /**
482
     * The language code of the customer.
483
     *
484
     * @var string
485
     *
486
     * @JMS\Type("string")
487
     * @JMS\SerializedName("LANGUAGE_CODE")
488
     */
489
    protected $languageCode;
490
491
    /**
492
     * URL for changing Master data and invoice data.
493
     *
494
     * @var string
495
     *
496
     * @JMS\Type("string")
497
     * @JMS\SerializedName("CHANGEDATA_URL")
498
     */
499
    protected $changeDataUrl;
500
501
    /**
502
     * URL leading to Dashboard.
503
     *
504
     * @var string
505
     *
506
     * @JMS\Type("string")
507
     * @JMS\SerializedName("DASHBOARD_URL")
508
     */
509
    protected $dashboardUrl;
510
511
    /**
512
     * The credit balance of the customer.
513
     *
514
     * @var string
515
     *
516
     * @JMS\Type("string")
517
     * @JMS\SerializedName("CREDIT_BALANCE")
518
     */
519
    protected $creditBalance;
520
521
    /**
522
     * Invoice delivery method.
523
     *
524
     * @var string
525
     *
526
     * @JMS\Type("string")
527
     * @JMS\SerializedName("INVOICE_DELIVERY_METHOD")
528
     */
529
    protected $invoiceDeliveryMethod;
530
531
    /**
532
     * Get the customer ID.
533
     *
534
     * @return integer
535
     */
536
    public function getCustomerId()
537
    {
538
        return $this->customerId;
539
    }
540
541
    /**
542
     * Set the customer ID.
543
     *
544
     * @param integer $customerId The ID.
545
     * @return $this
546
     */
547 18
    public function setCustomerId($customerId)
548
    {
549 18
        $this->customerId = $customerId;
550
551 18
        return $this;
552
    }
553
554
    /**
555
     * Get the customer external ID.
556
     *
557
     * @return string
558
     */
559
    public function getCustomerExternalUid()
560
    {
561
        return $this->customerExternalUid;
562
    }
563
564
    /**
565
     * Set the customer external ID.
566
     *
567
     * @param string $customerExternalUid The external ID.
568
     * @return $this
569
     */
570 15
    public function setCustomerExternalUid($customerExternalUid)
571
    {
572 15
        $this->customerExternalUid = $customerExternalUid;
573
574 15
        return $this;
575
    }
576
577
    /**
578
     * Get the customer number.
579
     *
580
     * @return integer
581
     */
582
    public function getCustomerNumber()
583
    {
584
        return $this->customerNumber;
585
    }
586
587
    /**
588
     * Set the customer number.
589
     *
590
     * @param integer $customerNumber The number.
591
     * @return $this
592
     */
593 15
    public function setCustomerNumber($customerNumber)
594
    {
595 15
        $this->customerNumber = $customerNumber;
0 ignored issues
show
Documentation Bug introduced by
The property $customerNumber was declared of type string, but $customerNumber is of type integer. Maybe add a type cast?

This check looks for assignments to scalar types that may be of the wrong type.

To ensure the code behaves as expected, it may be a good idea to add an explicit type cast.

$answer = 42;

$correct = false;

$correct = (bool) $answer;
Loading history...
596
597 15
        return $this;
598
    }
599
600
    /**
601
     * Get the days for payment.
602
     *
603
     * @return integer
604
     */
605
    public function getDaysForPayment()
606
    {
607
        return $this->daysForPayment;
608
    }
609
610
    /**
611
     * Set the days for payment.
612
     *
613
     * @param integer $daysForPayment The number of days for payment.
614
     * @return $this
615
     */
616 15
    public function setDaysForPayment($daysForPayment)
617
    {
618 15
        $this->daysForPayment = $daysForPayment;
619
620 15
        return $this;
621
    }
622
623
    /**
624
     * Get the date and time when the user was created.
625
     *
626
     * @return \DateTime
627
     */
628
    public function getCreated()
629
    {
630
        return $this->created;
631
    }
632
633
    /**
634
     * Set the date and time when the user was created.
635
     *
636
     * @param \DateTime $created The creation date and time.
637
     * @return $this
638
     */
639 15
    public function setCreated(\DateTime $created)
640
    {
641 15
        $this->created = $created;
642
643 15
        return $this;
644
    }
645
646
    /**
647
     * Get the payment type.
648
     *
649
     * @return integer
650
     */
651
    public function getPaymentType()
652
    {
653
        return $this->paymentType;
654
    }
655
656
    /**
657
     * Set the payment type.
658
     *
659
     * @param integer $paymentType The payment type.
660
     * @return $this
661
     */
662 15
    public function setPaymentType($paymentType)
663
    {
664 15
        $this->paymentType = $paymentType;
665
666 15
        return $this;
667
    }
668
669
    /**
670
     * Get the bank name.
671
     *
672
     * @return string
673
     */
674
    public function getBankName()
675
    {
676
        return $this->bankName;
677
    }
678
679
    /**
680
     * Get the bank name.
681
     *
682
     * @param string $bankName The name of the back.
683
     * @return $this
684
     */
685 15
    public function setBankName($bankName)
686
    {
687 15
        $this->bankName = $bankName;
688
689 15
        return $this;
690
    }
691
692
    /**
693
     * Get the bank account number.
694
     *
695
     * @return string
696
     */
697
    public function getBankAccountNumber()
698
    {
699
        return $this->bankAccountNumber;
700
    }
701
702
    /**
703
     * Set the bank account number.
704
     *
705
     * @param string $bankAccountNumber
706
     * @return $this
707
     */
708 15
    public function setBankAccountNumber($bankAccountNumber)
709
    {
710 15
        $this->bankAccountNumber = $bankAccountNumber;
711
712 15
        return $this;
713
    }
714
715
    /**
716
     * Get the bank code.
717
     *
718
     * @return string
719
     */
720
    public function getBankCode()
721
    {
722
        return $this->bankCode;
723
    }
724
725
    /**
726
     * Set the bank code.
727
     *
728
     * @param string $bankCode The code.
729
     * @return $this
730
     */
731 15
    public function setBankCode($bankCode)
732
    {
733 15
        $this->bankCode = $bankCode;
734
735 15
        return $this;
736
    }
737
738
    /**
739
     * Get the bank account owner.
740
     *
741
     * @return string
742
     */
743
    public function getBankAccountOwner()
744
    {
745
        return $this->bankAccountOwner;
746
    }
747
748
    /**
749
     * Set the bank account owner.
750
     *
751
     * @param string $bankAccountOwner The owner.
752
     * @return $this
753
     */
754 15
    public function setBankAccountOwner($bankAccountOwner)
755
    {
756 15
        $this->bankAccountOwner = $bankAccountOwner;
757
758 15
        return $this;
759
    }
760
761
    /**
762
     * Get the bank IBAN.
763
     *
764
     * @return string
765
     */
766
    public function getBankIBAN()
767
    {
768
        return $this->bankIBAN;
769
    }
770
771
    /**
772
     * Set the bank IBAN.
773
     *
774
     * @param string $bankIBAN The IBAN code.
775
     * @return $this
776
     */
777 15
    public function setBankIBAN($bankIBAN)
778
    {
779 15
        $this->bankIBAN = $bankIBAN;
780
781 15
        return $this;
782
    }
783
784
    /**
785
     * Get the bank BIC.
786
     *
787
     * @return string
788
     */
789
    public function getBankBIC()
790
    {
791
        return $this->bankBIC;
792
    }
793
794
    /**
795
     * Set the bank BIC.
796
     *
797
     * @param string $bankBIC The BIC.
798
     * @return $this
799
     */
800 15
    public function setBankBIC($bankBIC)
801
    {
802 15
        $this->bankBIC = $bankBIC;
803
804 15
        return $this;
805
    }
806
807
    /**
808
     * Get the bank account owner address.
809
     *
810
     * @return string
811
     */
812
    public function getBankAccountOwnerAddress()
813
    {
814
        return $this->bankAccountOwnerAddress;
815
    }
816
817
    /**
818
     * Set the bank account owner address.
819
     *
820
     * @param string $bankAccountOwnerAddress The address.
821
     * @return $this
822
     */
823 15
    public function setBankAccountOwnerAddress($bankAccountOwnerAddress)
824
    {
825 15
        $this->bankAccountOwnerAddress = $bankAccountOwnerAddress;
826
827 15
        return $this;
828
    }
829
830
    /**
831
     * Get the bank account owner city.
832
     *
833
     * @return string
834
     */
835
    public function getBankAccountOwnerCity()
836
    {
837
        return $this->bankAccountOwnerCity;
838
    }
839
840
    /**
841
     * Set the bank account owner city.
842
     *
843
     * @param string $bankAccountOwnerCity The city.
844
     * @return $this
845
     */
846 15
    public function setBankAccountOwnerCity($bankAccountOwnerCity)
847
    {
848 15
        $this->bankAccountOwnerCity = $bankAccountOwnerCity;
849
850 15
        return $this;
851
    }
852
853
    /**
854
     * Get the bank account owner zip code.
855
     *
856
     * @return string
857
     */
858
    public function getBankAccountOwnerZipCode()
859
    {
860
        return $this->bankAccountOwnerZipCode;
861
    }
862
863
    /**
864
     * Set the bank account owner zip code.
865
     *
866
     * @param string $bankAccountOwnerZipCode The zip code.
867
     * @return $this
868
     */
869 15
    public function setBankAccountOwnerZipCode($bankAccountOwnerZipCode)
870
    {
871 15
        $this->bankAccountOwnerZipCode = $bankAccountOwnerZipCode;
872
873 15
        return $this;
874
    }
875
876
    /**
877
     * Get the bank account owner email.
878
     *
879
     * @return string
880
     */
881
    public function getBankAccountOwnerEmail()
882
    {
883
        return $this->bankAccountOwnerEmail;
884
    }
885
886
    /**
887
     * Set the bank account owner email.
888
     *
889
     * @param string $bankAccountOwnerEmail The email address.
890
     * @return $this
891
     */
892 15
    public function setBankAccountOwnerEmail($bankAccountOwnerEmail)
893
    {
894 15
        $this->bankAccountOwnerEmail = $bankAccountOwnerEmail;
895
896 15
        return $this;
897
    }
898
899
    /**
900
     * Get the bank account mandate reference.
901
     *
902
     * @return string
903
     */
904
    public function getBankAccountMandateReference()
905
    {
906
        return $this->bankAccountMandateReference;
907
    }
908
909
    /**
910
     * Set the bank account mandate reference.
911
     *
912
     * @param string $bankAccountMandateReference The mandate reference.
913
     * @return $this
914
     */
915 15
    public function setBankAccountMandateReference($bankAccountMandateReference)
916
    {
917 15
        $this->bankAccountMandateReference = $bankAccountMandateReference;
918
919 15
        return $this;
920
    }
921
922
    /**
923
     * Check if the payment notice should be shown.
924
     *
925
     * @return boolean
926
     */
927
    public function shouldShowPaymentNotice()
928
    {
929
        return $this->showPaymentNotice;
930
    }
931
932
    /**
933
     * Set if the payment notice should be shown.
934
     *
935
     * @param boolean $showPaymentNotice Flag if the payment notice should be shown.
936
     * @return $this
937
     */
938 15
    public function setShowPaymentNotice($showPaymentNotice)
939
    {
940 15
        $this->showPaymentNotice = $showPaymentNotice;
941
942 15
        return $this;
943
    }
944
945
    /**
946
     * Get the customer type.
947
     *
948
     * @return string
949
     */
950
    public function getCustomerType()
951
    {
952
        return $this->customerType;
953
    }
954
955
    /**
956
     * Set the customer type.
957
     *
958
     * @param string $customerType The type.
959
     * @return $this
960
     */
961 15
    public function setCustomerType($customerType)
962
    {
963 15
        $this->customerType = $customerType;
964
965 15
        return $this;
966
    }
967
968
    /**
969
     * Check if the customer has opted in for newsletter.
970
     *
971
     * @return boolean
972
     */
973
    public function hasNewsletterOptIn()
974
    {
975
        return $this->newsletterOptIn;
976
    }
977
978
    /**
979
     * Set the newsletter opt in.
980
     *
981
     * @param boolean $newsletterOptIn Flag if the customer opted in.
982
     * @return $this
983
     */
984 15
    public function setNewsletterOptIn($newsletterOptIn)
985
    {
986 15
        $this->newsletterOptIn = $newsletterOptIn;
987
988 15
        return $this;
989
    }
990
991
    /**
992
     * Get the affiliate.
993
     *
994
     * @return string
995
     */
996
    public function getAffiliate()
997
    {
998
        return $this->affiliate;
999
    }
1000
1001
    /**
1002
     * Set the affiliate.
1003
     *
1004
     * @param string $affiliate The affiliate.
1005
     * @return $this
1006
     */
1007 15
    public function setAffiliate($affiliate)
1008
    {
1009 15
        $this->affiliate = $affiliate;
1010
1011 15
        return $this;
1012
    }
1013
1014
    /**
1015
     * Get the hash.
1016
     *
1017
     * @return string
1018
     */
1019 6
    public function getHash()
1020
    {
1021 6
        return $this->hash;
1022
    }
1023
1024
    /**
1025
     * Set the has of the customer.
1026
     *
1027
     * @param string $hash The hash.
1028
     * @return $this
1029
     */
1030 21
    public function setHash($hash)
1031
    {
1032 21
        $this->hash = $hash;
1033
1034 21
        return $this;
1035
    }
1036
1037
    /**
1038
     * Get the bank account mandate reference date.
1039
     *
1040
     * @return \DateTime
1041
     */
1042
    public function getBankAccountMandateReferenceDate()
1043
    {
1044
        return $this->bankAccountMandateReferenceDate;
1045
    }
1046
1047
    /**
1048
     * Set the bank account mandate reference date.
1049
     *
1050
     * @param \DateTime $bankAccountMandateReferenceDate The date as string.
1051
     * @return $this
1052
     */
1053 15
    public function setBankAccountMandateReferenceDate(\DateTime $bankAccountMandateReferenceDate)
1054
    {
1055 15
        $this->bankAccountMandateReferenceDate = $bankAccountMandateReferenceDate;
1056
1057 15
        return $this;
1058
    }
1059
1060
    /**
1061
     * Get the organization.
1062
     *
1063
     * @return string
1064
     */
1065
    public function getOrganization()
1066
    {
1067
        return $this->organization;
1068
    }
1069
1070
    /**
1071
     * Set the organization.
1072
     *
1073
     * @param string $organization The organization.
1074
     * @return $this
1075
     */
1076 15
    public function setOrganization($organization)
1077
    {
1078 15
        $this->organization = $organization;
1079
1080 15
        return $this;
1081
    }
1082
1083
    /**
1084
     * Get the academic title.
1085
     *
1086
     * @return string
1087
     */
1088
    public function getTitleAcademic()
1089
    {
1090
        return $this->titleAcademic;
1091
    }
1092
1093
    /**
1094
     * Set the academic title.
1095
     *
1096
     * @param string $titleAcademic The title.
1097
     * @return $this
1098
     */
1099 15
    public function setTitleAcademic($titleAcademic)
1100
    {
1101 15
        $this->titleAcademic = $titleAcademic;
1102
1103 15
        return $this;
1104
    }
1105
1106
    /**
1107
     * Get the salutation.
1108
     *
1109
     * @return string
1110
     */
1111
    public function getSalutation()
1112
    {
1113
        return $this->salutation;
1114
    }
1115
1116
    /**
1117
     * Set the salutation.
1118
     *
1119
     * @param string $salutation The salutation.
1120
     * @return $this
1121
     */
1122 15
    public function setSalutation($salutation)
1123
    {
1124 15
        $this->salutation = $salutation;
1125
1126 15
        return $this;
1127
    }
1128
1129
    /**
1130
     * Get the first name.
1131
     *
1132
     * @return string
1133
     */
1134
    public function getFirstName()
1135
    {
1136
        return $this->firstName;
1137
    }
1138
1139
    /**
1140
     * Set the first name.
1141
     *
1142
     * @param string $firstName The name.
1143
     * @return $this
1144
     */
1145 15
    public function setFirstName($firstName)
1146
    {
1147 15
        $this->firstName = $firstName;
1148
1149 15
        return $this;
1150
    }
1151
1152
    /**
1153
     * Get the last name.
1154
     *
1155
     * @return string
1156
     */
1157
    public function getLastName()
1158
    {
1159
        return $this->lastName;
1160
    }
1161
1162
    /**
1163
     * Set the last name.
1164
     *
1165
     * @param string $lastName The last name.
1166
     * @return $this
1167
     */
1168 15
    public function setLastName($lastName)
1169
    {
1170 15
        $this->lastName = $lastName;
1171
1172 15
        return $this;
1173
    }
1174
1175
    /**
1176
     * Get the full name of the customer.
1177
     *
1178
     * @return string
1179
     */
1180
    public function getFullName()
1181
    {
1182
        return implode(' ', array($this->firstName, $this->lastName));
1183
    }
1184
1185
    /**
1186
     * Get the address.
1187
     *
1188
     * @return string
1189
     */
1190
    public function getAddress()
1191
    {
1192
        return $this->address;
1193
    }
1194
1195
    /**
1196
     * Set the address.
1197
     *
1198
     * @param string $address The address.
1199
     * @return $this
1200
     */
1201 15
    public function setAddress($address)
1202
    {
1203 15
        $this->address = $address;
1204
1205 15
        return $this;
1206
    }
1207
1208
    /**
1209
     * Get the address 2.
1210
     *
1211
     * @return string
1212
     */
1213
    public function getAddress2()
1214
    {
1215
        return $this->address2;
1216
    }
1217
1218
    /**
1219
     * Set the address 2.
1220
     *
1221
     * @param string $address2 The address.
1222
     * @return $this
1223
     */
1224 15
    public function setAddress2($address2)
1225
    {
1226 15
        $this->address2 = $address2;
1227
1228 15
        return $this;
1229
    }
1230
1231
    /**
1232
     * Get the zip code.
1233
     *
1234
     * @return string
1235
     */
1236
    public function getZipCode()
1237
    {
1238
        return $this->zipCode;
1239
    }
1240
1241
    /**
1242
     * Set the zip code.
1243
     *
1244
     * @param string $zipCode The zip code.
1245
     * @return $this
1246
     */
1247 15
    public function setZipCode($zipCode)
1248
    {
1249 15
        $this->zipCode = $zipCode;
1250
1251 15
        return $this;
1252
    }
1253
1254
    /**
1255
     * Get the city.
1256
     *
1257
     * @return string
1258
     */
1259
    public function getCity()
1260
    {
1261
        return $this->city;
1262
    }
1263
1264
    /**
1265
     * Set the city.
1266
     *
1267
     * @param string $city The city.
1268
     * @return $this
1269
     */
1270 15
    public function setCity($city)
1271
    {
1272 15
        $this->city = $city;
1273
1274 15
        return $this;
1275
    }
1276
1277
    /**
1278
     * Get the country code.
1279
     *
1280
     * @return string
1281
     */
1282
    public function getCountryCode()
1283
    {
1284
        return $this->countryCode;
1285
    }
1286
1287
    /**
1288
     * Set the customer country code (ISO 3166 ALPHA-2).
1289
     *
1290
     * @param string $countryCode The country code.
1291
     * @return $this
1292
     */
1293 15
    public function setCountryCode($countryCode)
1294
    {
1295 15
        $this->countryCode = $countryCode;
1296
1297 15
        return $this;
1298
    }
1299
1300
    /**
1301
     * Get the secondary address.
1302
     *
1303
     * @return string
1304
     */
1305
    public function getSecondaryAddress()
1306
    {
1307
        return $this->secondaryAddress;
1308
    }
1309
1310
    /**
1311
     * Set the secondary address.
1312
     *
1313
     * @param string $secondaryAddress
1314
     * @return $this
1315
     */
1316 15
    public function setSecondaryAddress($secondaryAddress)
1317
    {
1318 15
        $this->secondaryAddress = $secondaryAddress;
1319
1320 15
        return $this;
1321
    }
1322
1323
    /**
1324
     * Get the state.
1325
     *
1326
     * @return string
1327
     */
1328
    public function getState()
1329
    {
1330
        return $this->state;
1331
    }
1332
1333
    /**
1334
     * Set the state.
1335
     *
1336
     * @param string $state The state.
1337
     * @return $this
1338
     */
1339 15
    public function setState($state)
1340
    {
1341 15
        $this->state = $state;
1342
1343 15
        return $this;
1344
    }
1345
1346
    /**
1347
     * Get the phone number.
1348
     *
1349
     * @return string
1350
     */
1351
    public function getPhone()
1352
    {
1353
        return $this->phone;
1354
    }
1355
1356
    /**
1357
     * Set the phone number.
1358
     *
1359
     * @param string $phone The phone number.
1360
     * @return $this
1361
     */
1362 15
    public function setPhone($phone)
1363
    {
1364 15
        $this->phone = $phone;
1365
1366 15
        return $this;
1367
    }
1368
1369
    /**
1370
     * Get the fax.
1371
     *
1372
     * @return string
1373
     */
1374
    public function getFax()
1375
    {
1376
        return $this->fax;
1377
    }
1378
1379
    /**
1380
     * Set the fac number.
1381
     *
1382
     * @param string $fax The fax number.
1383
     * @return $this
1384
     */
1385 15
    public function setFax($fax)
1386
    {
1387 15
        $this->fax = $fax;
1388
1389 15
        return $this;
1390
    }
1391
1392
    /**
1393
     * Get the email address.
1394
     *
1395
     * @return string
1396
     */
1397
    public function getEmail()
1398
    {
1399
        return $this->email;
1400
    }
1401
1402
    /**
1403
     * Set the email address.
1404
     *
1405
     * @param string $email The email.
1406
     * @return $this
1407
     */
1408 15
    public function setEmail($email)
1409
    {
1410 15
        $this->email = $email;
1411
1412 15
        return $this;
1413
    }
1414
1415
    /**
1416
     * Get the CC email address.
1417
     *
1418
     * @return string
1419
     */
1420
    public function getEmailCC()
1421
    {
1422
        return $this->emailCC;
1423
    }
1424
1425
    /**
1426
     * Set the email CC.
1427
     *
1428
     * @param string $emailCC The email.
1429
     * @return $this
1430
     */
1431 15
    public function setEmailCC($emailCC)
1432
    {
1433 15
        $this->emailCC = $emailCC;
1434
1435 15
        return $this;
1436
    }
1437
1438
    /**
1439
     * Get the birthday.
1440
     *
1441
     * @return \DateTime
1442
     */
1443 12
    public function getBirthday()
1444
    {
1445 12
        return $this->birthday;
1446
    }
1447
1448
    /**
1449
     * Set the birthday.
1450
     *
1451
     * @param \DateTime $birthday The birthday.
1452
     * @return $this
1453
     */
1454 15
    public function setBirthday(\DateTime $birthday)
1455
    {
1456 15
        $this->birthday = $birthday;
1457
1458 15
        return $this;
1459
    }
1460
1461
    /**
1462
     * Get the payment mail address.
1463
     *
1464
     * @return string
1465
     */
1466
    public function getPaymentMailAddress()
1467
    {
1468
        return $this->paymentMailAddress;
1469
    }
1470
1471
    /**
1472
     * Set the payment mail address.
1473
     *
1474
     * @param string $paymentMailAddress The address.
1475
     * @return $this
1476
     */
1477 15
    public function setPaymentMailAddress($paymentMailAddress)
1478
    {
1479 15
        $this->paymentMailAddress = $paymentMailAddress;
1480
1481 15
        return $this;
1482
    }
1483
1484
    /**
1485
     * Get the VAT ID.
1486
     *
1487
     * @return string
1488
     */
1489
    public function getVatId()
1490
    {
1491
        return $this->vatId;
1492
    }
1493
1494
    /**
1495
     * Set the VAT ID.
1496
     *
1497
     * @param string $vatId The VAT ID.
1498
     * @return $this
1499
     */
1500 15
    public function setVatId($vatId)
1501
    {
1502 15
        $this->vatId = $vatId;
1503
1504 15
        return $this;
1505
    }
1506
1507
    /**
1508
     * Get the tax ID.
1509
     *
1510
     * @return string
1511
     */
1512
    public function getTaxId()
1513
    {
1514
        return $this->taxId;
1515
    }
1516
1517
    /**
1518
     * Set the tax ID.
1519
     *
1520
     * @param string $taxId The tax ID.
1521
     * @return $this
1522
     */
1523 15
    public function setTaxId($taxId)
1524
    {
1525 15
        $this->taxId = $taxId;
1526
1527 15
        return $this;
1528
    }
1529
1530
    /**
1531
     * Get the currency code.
1532
     *
1533
     * @return string
1534
     */
1535
    public function getCurrencyCode()
1536
    {
1537
        return $this->currencyCode;
1538
    }
1539
1540
    /**
1541
     * Set the currency code.
1542
     *
1543
     * @param string $currencyCode The currency code.
1544
     * @return $this
1545
     */
1546 15
    public function setCurrencyCode($currencyCode)
1547
    {
1548 15
        $this->currencyCode = $currencyCode;
1549
1550 15
        return $this;
1551
    }
1552
1553
    /**
1554
     * Get the comment.
1555
     *
1556
     * @return string
1557
     */
1558
    public function getComment()
1559
    {
1560
        return $this->comment;
1561
    }
1562
1563
    /**
1564
     * Set the comment for the customer.
1565
     *
1566
     * @param string $comment
1567
     * @return $this
1568
     */
1569 15
    public function setComment($comment)
1570
    {
1571 15
        $this->comment = $comment;
1572
1573 15
        return $this;
1574
    }
1575
1576
    /**
1577
     * Get the date and time the customer was last updated.
1578
     *
1579
     * @return \DateTime
1580
     */
1581
    public function getLastUpdate()
1582
    {
1583
        return $this->lastUpdate;
1584
    }
1585
1586
    /**
1587
     * Set the last update date and time.
1588
     *
1589
     * @param \DateTime $lastUpdate The last update date and time.
1590
     * @return $this
1591
     */
1592 15
    public function setLastUpdate(\DateTime $lastUpdate)
1593
    {
1594 15
        $this->lastUpdate = $lastUpdate;
1595
1596 15
        return $this;
1597
    }
1598
1599
    /**
1600
     * Get the tags of the customer.
1601
     *
1602
     * @return array
1603
     */
1604
    public function getTags()
1605
    {
1606
        $tags = explode(',', $this->tags);
1607
1608
        return array_map('trim', $tags);
1609
    }
1610
1611
    /**
1612
     * Set tags for the customer.
1613
     *
1614
     * @param array $tags The tags to set.
1615
     * @return $this
1616
     */
1617 15
    public function setTags(array $tags)
1618
    {
1619 15
        $this->tags = implode(', ', $tags);
1620
1621 15
        return $this;
1622
    }
1623
1624
    /**
1625
     * Get the language code.
1626
     *
1627
     * @return string
1628
     */
1629
    public function getLanguageCode()
1630
    {
1631
        return $this->languageCode;
1632
    }
1633
1634
    /**
1635
     * Set the language code.
1636
     *
1637
     * @param string $languageCode The language code.
1638
     * @return $this
1639
     */
1640 15
    public function setLanguageCode($languageCode)
1641
    {
1642 15
        $this->languageCode = $languageCode;
1643
1644 15
        return $this;
1645
    }
1646
1647
    /**
1648
     * Get the change data URL.
1649
     *
1650
     * @return string
1651
     */
1652
    public function getChangeDataUrl()
1653
    {
1654
        return $this->changeDataUrl;
1655
    }
1656
1657
    /**
1658
     * Set the change data URL.
1659
     *
1660
     * @param string $changeDataUrl The URL.
1661
     * @return $this
1662
     */
1663 15
    public function setChangeDataUrl($changeDataUrl)
1664
    {
1665 15
        $this->changeDataUrl = $changeDataUrl;
1666
1667 15
        return $this;
1668
    }
1669
1670
    /**
1671
     * Get the dashboard URL.
1672
     *
1673
     * @return string
1674
     */
1675
    public function getDashboardUrl()
1676
    {
1677
        return $this->dashboardUrl;
1678
    }
1679
1680
    /**
1681
     * Set the dashboard URL.
1682
     *
1683
     * @param string $dashboardUrl The URL.
1684
     * @return $this
1685
     */
1686 15
    public function setDashboardUrl($dashboardUrl)
1687
    {
1688 15
        $this->dashboardUrl = $dashboardUrl;
1689
1690 15
        return $this;
1691
    }
1692
1693
    /**
1694
     * Get the credit balance.
1695
     *
1696
     * @return string
1697
     */
1698
    public function getCreditBalance()
1699
    {
1700
        return $this->creditBalance;
1701
    }
1702
1703
    /**
1704
     * Set the credit balance.
1705
     *
1706
     * @param string $creditBalance
1707
     * @return $this
1708
     */
1709 15
    public function setCreditBalance($creditBalance)
1710
    {
1711 15
        $this->creditBalance = $creditBalance;
1712
1713 15
        return $this;
1714
    }
1715
1716
    /**
1717
     * Get the invoice delivery method.
1718
     *
1719
     * @return string
1720
     */
1721
    public function getInvoiceDeliveryMethod()
1722
    {
1723
        return $this->invoiceDeliveryMethod;
1724
    }
1725
1726
    /**
1727
     * Set the invoice delivery method.
1728
     *
1729
     * @param string $invoiceDeliveryMethod The delivery method.
1730
     * @return $this
1731
     */
1732 15
    public function setInvoiceDeliveryMethod($invoiceDeliveryMethod)
1733
    {
1734 15
        $this->invoiceDeliveryMethod = $invoiceDeliveryMethod;
1735
1736 15
        return $this;
1737
    }
1738
}
1739