Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
63.00% covered (warning)
63.00%
63 / 100
72.09% covered (warning)
72.09%
31 / 43
CRAP
0.00% covered (danger)
0.00%
0 / 1
Seriennummer
63.00% covered (warning)
63.00%
63 / 100
72.09% covered (warning)
72.09%
31 / 43
228.40
0.00% covered (danger)
0.00%
0 / 1
 __construct
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 __toString
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 addAuftragsposition
0.00% covered (danger)
0.00%
0 / 7
0.00% covered (danger)
0.00%
0 / 1
12
 addAuftragspositionSeriennummer
0.00% covered (danger)
0.00%
0 / 7
0.00% covered (danger)
0.00%
0 / 1
6
 getArtikel
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setArtikel
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 getArtikelbuchung
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setArtikelbuchung
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 getAuftragsposition
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setAuftragsposition
75.00% covered (warning)
75.00%
3 / 4
0.00% covered (danger)
0.00%
0 / 1
2.06
 getAuftragspositionen
75.00% covered (warning)
75.00%
3 / 4
0.00% covered (danger)
0.00%
0 / 1
2.06
 getAuftragspositionenSeriennummern
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getBemerkung
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setBemerkung
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 getBestellposition
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setBestellposition
75.00% covered (warning)
75.00%
3 / 4
0.00% covered (danger)
0.00%
0 / 1
2.06
 getDatumeinkauf
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setDatumeinkauf
75.00% covered (warning)
75.00%
3 / 4
0.00% covered (danger)
0.00%
0 / 1
2.06
 getDatumverkauf
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setDatumverkauf
75.00% covered (warning)
75.00%
3 / 4
0.00% covered (danger)
0.00%
0 / 1
2.06
 getFreifeld1
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setFreifeld1
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 getFreifeld2
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setFreifeld2
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 getFreifeld3
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setFreifeld3
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 getFreifeld4
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setFreifeld4
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 getGarantieeinkauf
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setGarantieeinkauf
75.00% covered (warning)
75.00%
3 / 4
0.00% covered (danger)
0.00%
0 / 1
2.06
 getGarantieverkauf
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setGarantieverkauf
75.00% covered (warning)
75.00%
3 / 4
0.00% covered (danger)
0.00%
0 / 1
2.06
 getKunde
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setKunde
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 getLager
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setLager
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 getLfdnr
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getLieferant
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setLieferant
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 getNummer
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setNummer
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 removeAuftragsposition
0.00% covered (danger)
0.00%
0 / 4
0.00% covered (danger)
0.00%
0 / 1
12
 removeAuftragspositionSeriennummer
0.00% covered (danger)
0.00%
0 / 11
0.00% covered (danger)
0.00%
0 / 1
20
1<?php
2
3declare(strict_types=1);
4
5namespace Satag\AmicronEntityBundle\Entity;
6
7use Doctrine\Common\Collections\ArrayCollection;
8use Doctrine\Common\Collections\Collection;
9use Doctrine\DBAL\Types\Types;
10use Doctrine\ORM\Mapping as ORM;
11use Satag\AmicronEntityBundle\Traits\BlameableEntity;
12use Satag\AmicronEntityBundle\Traits\BlameableEntityInterface;
13
14/**
15 * @see \Satag\AmicronEntityBundle\Tests\Entity\SeriennummerTest
16 */
17#[ORM\Entity]
18#[ORM\HasLifecycleCallbacks]
19#[ORM\Table(name: 'ARTSERNR')]
20#[ORM\Index(columns: ['artbuchlfdnr'], name: 'ARTSERNR_ARTBUCHLFDNR_FK')]
21#[ORM\Index(columns: ['artikellfdnr'], name: 'ARTSERNR_ARTIKELLFDNR_FK')]
22#[ORM\Index(columns: ['atrposlfdnr'], name: 'ARTSERNR_ATRPOSLFDNR_FK')]
23#[ORM\Index(columns: ['bstposlfdnr'], name: 'ARTSERNR_BSTPOSLFDNR_FK')]
24#[ORM\Index(columns: ['kundenlfdnr'], name: 'ARTSERNR_KUNDENLFDNR_FK')]
25#[ORM\Index(columns: ['lagerlfdnr'], name: 'ARTSERNR_LAGERLFDNR_FK')]
26#[ORM\Index(columns: ['lieferantenlfdnr'], name: 'ARTSERNR_LIEFERANTENLFDNR_FK')]
27class Seriennummer implements BlameableEntityInterface, \Stringable
28{
29    use BlameableEntity;
30
31    #[ORM\ManyToOne(targetEntity: Artikel::class)]
32    #[ORM\JoinColumn(name: 'artikellfdnr', referencedColumnName: 'lfdnr')]
33    private ?Artikel $artikel = null;
34
35    #[ORM\ManyToOne(targetEntity: Artikelbuchung::class)]
36    #[ORM\JoinColumn(name: 'artbuchlfdnr', referencedColumnName: 'lfdnr')]
37    private ?Artikelbuchung $artikelbuchung = null;
38
39    #[ORM\ManyToOne(targetEntity: Auftragsposition::class)]
40    #[ORM\JoinColumn(name: 'atrposlfdnr', referencedColumnName: 'lfdnr')]
41    private ?Auftragsposition $auftragsposition = null;
42
43    /**
44     * @var Collection<int, AuftragspositionSeriennummer>
45     */
46    #[ORM\OneToMany(mappedBy: 'seriennummer', targetEntity: AuftragspositionSeriennummer::class, cascade: ['persist'], orphanRemoval: true)]
47    private Collection $auftragspositionen_seriennummern;
48
49    #[ORM\Column(name: 'bemerkung', type: Types::TEXT, nullable: true)]
50    private ?string $bemerkung = null;
51
52    #[ORM\ManyToOne(targetEntity: Auftragsposition::class)]
53    #[ORM\JoinColumn(name: 'bstposlfdnr', referencedColumnName: 'lfdnr')]
54    private ?Auftragsposition $bestellposition = null;
55
56    #[ORM\Column(name: 'datumeinkauf', type: Types::DATETIME_IMMUTABLE, nullable: true)]
57    private ?\DateTimeImmutable $datumeinkauf = null;
58
59    #[ORM\Column(name: 'datumverkauf', type: Types::DATETIME_IMMUTABLE, nullable: true)]
60    private ?\DateTimeImmutable $datumverkauf = null;
61
62    #[ORM\Column(name: 'freifeld1', type: Types::STRING, length: 255, nullable: true)]
63    private ?string $freifeld1 = null;
64
65    #[ORM\Column(name: 'freifeld2', type: Types::STRING, length: 255, nullable: true)]
66    private ?string $freifeld2 = null;
67
68    #[ORM\Column(name: 'freifeld3', type: Types::STRING, length: 255, nullable: true)]
69    private ?string $freifeld3 = null;
70
71    #[ORM\Column(name: 'freifeld4', type: Types::STRING, length: 255, nullable: true)]
72    private ?string $freifeld4 = null;
73
74    #[ORM\Column(name: 'garantieeinkauf', type: Types::DATETIME_IMMUTABLE, nullable: true)]
75    private ?\DateTimeImmutable $garantieeinkauf = null;
76
77    #[ORM\Column(name: 'garantieverkauf', type: Types::DATETIME_IMMUTABLE, nullable: true)]
78    private ?\DateTimeImmutable $garantieverkauf = null;
79
80    #[ORM\ManyToOne(targetEntity: Kunde::class)]
81    #[ORM\JoinColumn(name: 'kundenlfdnr', referencedColumnName: 'lfdnr')]
82    private ?Kunde $kunde = null;
83
84    #[ORM\ManyToOne(targetEntity: Lager::class)]
85    #[ORM\JoinColumn(name: 'lagerlfdnr', referencedColumnName: 'lfdnr')]
86    private ?Lager $lager = null;
87
88    #[ORM\Column(name: 'lfdnr', type: Types::INTEGER, nullable: false)]
89    #[ORM\Id]
90    #[ORM\GeneratedValue(strategy: 'SEQUENCE')]
91    #[ORM\SequenceGenerator(sequenceName: 'GEN_LFDNR', allocationSize: 1, initialValue: 1)]
92    public private(set) ?int $lfdnr = null;
93
94    #[ORM\ManyToOne(targetEntity: Lieferant::class)]
95    #[ORM\JoinColumn(name: 'lieferantenlfdnr', referencedColumnName: 'lfdnr')]
96    private ?Lieferant $lieferant = null;
97
98    #[ORM\Column(name: 'seriennr', type: Types::STRING, length: 40, nullable: true)]
99    private ?string $nummer = null;
100
101    public function __construct(
102    ) {
103        $this->auftragspositionen_seriennummern = new ArrayCollection();
104    }
105
106    public function __toString(): string
107    {
108        return (string) $this->getNummer();
109    }
110
111    public function addAuftragsposition(Auftragsposition $auftragsposition): void
112    {
113        foreach ($this->getAuftragspositionenSeriennummern() as $auftragspositionSeriennummer) {
114            if ($auftragspositionSeriennummer->getAuftragsposition() === $auftragsposition) {
115                return;
116            }
117        }
118        $auftragspositionSeriennummer = new AuftragspositionSeriennummer();
119        $auftragspositionSeriennummer->setAuftragsposition($auftragsposition);
120        $auftragspositionSeriennummer->setSeriennummer($this);
121        $this->addAuftragspositionSeriennummer($auftragspositionSeriennummer);
122    }
123
124    public function addAuftragspositionSeriennummer(AuftragspositionSeriennummer $auftragspositionSeriennummer): void
125    {
126        if ($this->auftragspositionen_seriennummern->contains($auftragspositionSeriennummer)) {
127            return;
128        }
129
130        $this->auftragspositionen_seriennummern[] = $auftragspositionSeriennummer;
131        $auftragspositionSeriennummer->setSeriennummer($this);
132        $auftragspositionSeriennummer->getAuftragsposition()?->addAuftragspositionSeriennummer(
133            $auftragspositionSeriennummer
134        );
135    }
136
137    public function getArtikel(): ?Artikel
138    {
139        return $this->artikel;
140    }
141
142    public function setArtikel(?Artikel $artikel): self
143    {
144        $this->artikel = $artikel;
145
146        return $this;
147    }
148
149    public function getArtikelbuchung(): ?Artikelbuchung
150    {
151        return $this->artikelbuchung;
152    }
153
154    public function setArtikelbuchung(?Artikelbuchung $artbuch): self
155    {
156        $this->artikelbuchung = $artbuch;
157
158        return $this;
159    }
160
161    public function getAuftragsposition(): ?Auftragsposition
162    {
163        return $this->auftragsposition;
164    }
165
166    public function setAuftragsposition(?Auftragsposition $atrpos): self
167    {
168        $this->auftragsposition = $atrpos;
169        if ($atrpos !== null) {
170            $this->addAuftragsposition($atrpos);
171        }
172
173        return $this;
174    }
175
176    /**
177     * @return Collection<int, Auftragsposition>
178     */
179    public function getAuftragspositionen(): Collection
180    {
181        $auftragspositionen = new ArrayCollection();
182        foreach ($this->getAuftragspositionenSeriennummern() as $auftragspositionSeriennummer) {
183            $auftragspositionen->add($auftragspositionSeriennummer->getAuftragsposition());
184        }
185
186        return $auftragspositionen;
187    }
188
189    /**
190     * @return Collection<int, AuftragspositionSeriennummer>
191     */
192    public function getAuftragspositionenSeriennummern(): Collection
193    {
194        return $this->auftragspositionen_seriennummern;
195    }
196
197    public function getBemerkung(): ?string
198    {
199        return $this->bemerkung;
200    }
201
202    public function setBemerkung(?string $bemerkung): self
203    {
204        $this->bemerkung = $bemerkung;
205
206        return $this;
207    }
208
209    public function getBestellposition(): ?Auftragsposition
210    {
211        return $this->bestellposition;
212    }
213
214    public function setBestellposition(?Auftragsposition $bstpos): self
215    {
216        $this->bestellposition = $bstpos;
217        if ($bstpos !== null) {
218            $this->addAuftragsposition($bstpos);
219        }
220
221        return $this;
222    }
223
224    public function getDatumeinkauf(): ?\DateTimeImmutable
225    {
226        return $this->datumeinkauf;
227    }
228
229    public function setDatumeinkauf(\DateTimeImmutable|\DateTime|null $datumeinkauf): self
230    {
231        $this->datumeinkauf = $datumeinkauf instanceof \DateTime
232            ? \DateTimeImmutable::createFromMutable($datumeinkauf)
233            : $datumeinkauf;
234
235        return $this;
236    }
237
238    public function getDatumverkauf(): ?\DateTimeImmutable
239    {
240        return $this->datumverkauf;
241    }
242
243    public function setDatumverkauf(\DateTimeImmutable|\DateTime|null $datumverkauf): self
244    {
245        $this->datumverkauf = $datumverkauf instanceof \DateTime
246            ? \DateTimeImmutable::createFromMutable($datumverkauf)
247            : $datumverkauf;
248
249        return $this;
250    }
251
252    public function getFreifeld1(): ?string
253    {
254        return $this->freifeld1;
255    }
256
257    public function setFreifeld1(?string $freifeld1): self
258    {
259        $this->freifeld1 = $freifeld1;
260
261        return $this;
262    }
263
264    public function getFreifeld2(): ?string
265    {
266        return $this->freifeld2;
267    }
268
269    public function setFreifeld2(?string $freifeld2): self
270    {
271        $this->freifeld2 = $freifeld2;
272
273        return $this;
274    }
275
276    public function getFreifeld3(): ?string
277    {
278        return $this->freifeld3;
279    }
280
281    public function setFreifeld3(?string $freifeld3): self
282    {
283        $this->freifeld3 = $freifeld3;
284
285        return $this;
286    }
287
288    public function getFreifeld4(): ?string
289    {
290        return $this->freifeld4;
291    }
292
293    public function setFreifeld4(?string $freifeld4): self
294    {
295        $this->freifeld4 = $freifeld4;
296
297        return $this;
298    }
299
300    public function getGarantieeinkauf(): ?\DateTimeImmutable
301    {
302        return $this->garantieeinkauf;
303    }
304
305    public function setGarantieeinkauf(\DateTimeImmutable|\DateTime|null $garantieeinkauf): self
306    {
307        $this->garantieeinkauf = $garantieeinkauf instanceof \DateTime
308            ? \DateTimeImmutable::createFromMutable($garantieeinkauf)
309            : $garantieeinkauf;
310
311        return $this;
312    }
313
314    public function getGarantieverkauf(): ?\DateTimeImmutable
315    {
316        return $this->garantieverkauf;
317    }
318
319    public function setGarantieverkauf(\DateTimeImmutable|\DateTime|null $garantieverkauf): self
320    {
321        $this->garantieverkauf = $garantieverkauf instanceof \DateTime
322            ? \DateTimeImmutable::createFromMutable($garantieverkauf)
323            : $garantieverkauf;
324
325        return $this;
326    }
327
328    public function getKunde(): ?Kunde
329    {
330        return $this->kunde;
331    }
332
333    public function setKunde(?Kunde $kunde): self
334    {
335        $this->kunde = $kunde;
336
337        return $this;
338    }
339
340    public function getLager(): ?Lager
341    {
342        return $this->lager;
343    }
344
345    public function setLager(?Lager $lager): self
346    {
347        $this->lager = $lager;
348
349        return $this;
350    }
351
352    public function getLfdnr(): ?int
353    {
354        return $this->lfdnr;
355    }
356
357    public function getLieferant(): ?Lieferant
358    {
359        return $this->lieferant;
360    }
361
362    public function setLieferant(?Lieferant $lieferant): self
363    {
364        $this->lieferant = $lieferant;
365
366        return $this;
367    }
368
369    public function getNummer(): ?string
370    {
371        return $this->nummer;
372    }
373
374    public function setNummer(?string $nummer): self
375    {
376        $this->nummer = $nummer;
377
378        return $this;
379    }
380
381    public function removeAuftragsposition(Auftragsposition $auftragsposition): void
382    {
383        foreach ($this->getAuftragspositionenSeriennummern() as $auftragspositionSeriennummer) {
384            if ($auftragspositionSeriennummer->getAuftragsposition() === $auftragsposition) {
385                $this->removeAuftragspositionSeriennummer($auftragspositionSeriennummer);
386
387                return;
388            }
389        }
390    }
391
392    public function removeAuftragspositionSeriennummer(AuftragspositionSeriennummer $auftragspositionSeriennummer): void
393    {
394        if (!$this->auftragspositionen_seriennummern->contains($auftragspositionSeriennummer)) {
395            return;
396        }
397
398        if ($this->getAuftragsposition() === $auftragspositionSeriennummer->getAuftragsposition()) {
399            $this->setAuftragsposition(null);
400        } elseif ($this->getBestellposition() === $auftragspositionSeriennummer->getAuftragsposition()) {
401            $this->setBestellposition(null);
402        }
403        // need to update the owning side(s)
404        $auftragspositionSeriennummer->getAuftragsposition()?->removeAuftragspositionSeriennummer(
405            $auftragspositionSeriennummer
406        );
407        $this->auftragspositionen_seriennummern->removeElement($auftragspositionSeriennummer);
408        $auftragspositionSeriennummer->setSeriennummer(null);
409    }
410}