-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathInvoice.php
More file actions
126 lines (101 loc) · 2.55 KB
/
Invoice.php
File metadata and controls
126 lines (101 loc) · 2.55 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
<?php
declare(strict_types=1);
namespace Fbsouzas\DesignPattern\Invoices;
use DateTimeInterface;
use Fbsouzas\DesignPattern\Orders\Order;
class Invoice
{
private string $companyCNPJ;
private string $companyName;
private string $companyContact;
private string $companyAddress;
private Order $order;
private float $tax;
private string $observation;
private DateTimeInterface $generatedAt;
private string $invoiceType;
public function setCompanyCNPJ(string $companyCNPJ): void
{
$this->companyCNPJ = $companyCNPJ;
}
public function setCompanyName(string $companyName): void
{
$this->companyName = $companyName;
}
public function setCompanyContact(string $companyContact): void
{
$this->companyContact = $companyContact;
}
public function setCompanyAddress(string $companyAddress): void
{
$this->companyAddress = $companyAddress;
}
public function setOrder(Order $order): void
{
$this->order = $order;
}
public function setTax(float $tax): void
{
$this->tax = $tax;
}
public function setObservation(string $observation): void
{
$this->observation = $observation;
}
public function setGeneratedAt(DateTimeInterface $generatedAt): void
{
$this->generatedAt = $generatedAt;
}
public function setInvoiceType(string $invoiceType): void
{
$this->invoiceType = $invoiceType;
}
public function companyCNPJ(): string
{
return $this->companyCNPJ;
}
public function companyName(): string
{
return $this->companyName;
}
public function companyContact(): string
{
return $this->companyContact;
}
public function companyAddress(): string
{
return $this->companyAddress;
}
public function observation(): string
{
return $this->observation;
}
public function generatedAt(): string
{
return $this->generatedAt->format('Y-m-d H:i:s');
}
public function invoiceType(): string
{
return $this->invoiceType;
}
public function value(): float
{
return $this->order->value();
}
public function quantityOfItems(): int
{
return $this->order->quantityOfItems();
}
public function items(): array
{
return $this->order->items();
}
public function tax(): float
{
return $this->tax;
}
public function total(): float
{
return $this->order->value() + $this->tax;
}
}