Completed
Push — master ( bcdba8...408d98 )
by Jan
03:54
created

Supplier   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 79
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 13
c 1
b 0
f 0
dl 0
loc 79
rs 10
wmc 5

5 Methods

Rating   Name   Duplication   Size   Complexity  
A getShippingCosts() 0 3 1
A getDefaultCurrency() 0 3 1
A getIDString() 0 3 1
A setShippingCosts() 0 4 1
A setDefaultCurrency() 0 4 1
1
<?php
2
/**
3
 *
4
 * part-db version 0.1
5
 * Copyright (C) 2005 Christoph Lechner
6
 * http://www.cl-projects.de/
7
 *
8
 * part-db version 0.2+
9
 * Copyright (C) 2009 K. Jacobs and others (see authors.php)
10
 * http://code.google.com/p/part-db/
11
 *
12
 * Part-DB Version 0.4+
13
 * Copyright (C) 2016 - 2019 Jan Böhmer
14
 * https://github.com/jbtronics
15
 *
16
 * This program is free software; you can redistribute it and/or
17
 * modify it under the terms of the GNU General Public License
18
 * as published by the Free Software Foundation; either version 2
19
 * of the License, or (at your option) any later version.
20
 *
21
 * This program is distributed in the hope that it will be useful,
22
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
23
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
24
 * GNU General Public License for more details.
25
 *
26
 * You should have received a copy of the GNU General Public License
27
 * along with this program; if not, write to the Free Software
28
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
29
 *
30
 */
31
32
declare(strict_types=1);
33
34
/**
35
 * part-db version 0.1
36
 * Copyright (C) 2005 Christoph Lechner
37
 * http://www.cl-projects.de/.
38
 *
39
 * part-db version 0.2+
40
 * Copyright (C) 2009 K. Jacobs and others (see authors.php)
41
 * http://code.google.com/p/part-db/
42
 *
43
 * Part-DB Version 0.4+
44
 * Copyright (C) 2016 - 2019 Jan Böhmer
45
 * https://github.com/jbtronics
46
 *
47
 * This program is free software; you can redistribute it and/or
48
 * modify it under the terms of the GNU General Public License
49
 * as published by the Free Software Foundation; either version 2
50
 * of the License, or (at your option) any later version.
51
 *
52
 * This program is distributed in the hope that it will be useful,
53
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
54
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
55
 * GNU General Public License for more details.
56
 *
57
 * You should have received a copy of the GNU General Public License
58
 * along with this program; if not, write to the Free Software
59
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
60
 */
61
62
namespace App\Entity\Parts;
63
64
use App\Entity\Base\Company;
65
use App\Entity\PriceInformations\Currency;
66
use Doctrine\ORM\Mapping as ORM;
67
use Symfony\Component\Validator\Constraints as Assert;
68
69
/**
70
 * Class Supplier.
71
 *
72
 * @ORM\Entity(repositoryClass="App\Repository\StructuralDBElementRepository")
73
 * @ORM\Table("`suppliers`")
74
 */
75
class Supplier extends Company
76
{
77
    /**
78
     * @ORM\OneToMany(targetEntity="Supplier", mappedBy="parent")
79
     */
80
    protected $children;
81
82
    /**
83
     * @ORM\ManyToOne(targetEntity="Supplier", inversedBy="children")
84
     * @ORM\JoinColumn(name="parent_id", referencedColumnName="id")
85
     */
86
    protected $parent;
87
88
    /**
89
     * @ORM\OneToMany(targetEntity="App\Entity\PriceInformations\Orderdetail", mappedBy="supplier")
90
     */
91
    protected $orderdetails;
92
93
    /**
94
     * @var Currency|null The currency that should be used by default for order informations with this supplier.
95
     * Set to null, to use global base currency.
96
     * @ORM\ManyToOne(targetEntity="App\Entity\PriceInformations\Currency")
97
     * @ORM\JoinColumn(name="default_currency_id", referencedColumnName="id", nullable=true)
98
     */
99
    protected $default_currency;
100
101
    /**
102
     * @var float|null The shipping costs that have to be paid, when ordering via this supplier.
103
     * @ORM\Column(name="shipping_costs", nullable=true, type="decimal")
104
     * @Assert\PositiveOrZero()
105
     */
106
    protected $shipping_costs;
107
108
    /**
109
     * @return ?Currency
110
     */
111
    public function getDefaultCurrency()
112
    {
113
        return $this->default_currency;
114
    }
115
116
    /**
117
     * @param ?Currency $default_currency
118
     * @return Supplier
119
     */
120
    public function setDefaultCurrency(?Currency $default_currency) : Supplier
121
    {
122
        $this->default_currency = $default_currency;
123
        return $this;
124
    }
125
126
    /**
127
     * @return ?float
128
     */
129
    public function getShippingCosts() : ?float
130
    {
131
        return $this->shipping_costs;
132
    }
133
134
    /**
135
     * @param ?float $shipping_costs
136
     * @return Supplier
137
     */
138
    public function setShippingCosts(?float $shipping_costs) : Supplier
139
    {
140
        $this->shipping_costs = $shipping_costs;
141
        return $this;
142
    }
143
144
145
    /**
146
     * Returns the ID as an string, defined by the element class.
147
     * This should have a form like P000014, for a part with ID 14.
148
     *
149
     * @return string The ID as a string;
150
     */
151
    public function getIDString(): string
152
    {
153
        return 'L'.sprintf('%06d', $this->getID());
154
    }
155
}
156