Closed mgralikowski closed 2 years ago
Jest szansa na szybki accept, to tylko = null
w konstruktorze?
Ale null nie ma na celu ustawienie ZW, a jest to po prostu przyjęcie stawki automatycznie, na podstawie stawki dodawanego produktu/usługi w katalogu. Wtedy katalog produktów jest źródłem informacji o VAT, co jest bardziej wygodne w ogóle, ponieważ nie musimy powielać tej informacji każdorazowo.
Co do samych stawek to najbardziej prawidłowym podejściem jest używane identyfikatorów numerycznych, które pobierane są ze wspomnianego endpointa. Już to u siebie aplikacji właśnie obsłużyłem - użytkownik ma tę długą (warto wywalić kilka archiwalnych stawek) listę jako select, i zapisuje id np. 233
co właśnie jest stawką zw
. Stawka 23% ma id 222
, przez chwilę myślałem, że te id odzwierciedlają stawkę (że to takie "kody"), ale raczej to czysty przypadek.
Pewnie dla wygody dali możliwość alternatywną, aby szybko ustalić stawkę 23%, bez konieczności hardcodowania identyfikatora stawki. Zwykle mi te podejście wystarczało, bo pewnie w 90%< projektach taką potrzebujemy.
@mgralikowski - nie rozumiem do końca co chcesz zrobić.
Niestety nie jest możliwe wystawić faktury "zw" stąd sugestia, aby zrobić VAT nullable, ponieważ wtedy dziedziczony jest z modelu Good
Ale null nie ma na celu ustawienie ZW, a jest to po prostu przyjęcie stawki automatycznie, na podstawie stawki dodawanego produktu/usługi w katalogu.
Chcesz wystawić fakturę na podstawie towaru zdefiniowanego w magazynie, tak?
Jeśli tak, to do poprawy jest klasa InvoicesContent
, a nie Good
. Tam metoda fromGoodId
powinna przyjmować null
dla argumentów $price
i $vat
(do sprawdzenia czy to działa).
Good (czyli właśnie produkt w katalogu) stawkę powinien mieć zawsze, choćby było to ZW (nie null
).
Faktycznie, chyba złego commita puściłem.
Mam tak lokalnie:
public static function fromGoodId(GoodId $id, $count, $price, $vat = null, Discount $discount = null, $lumpcode = null)
{
return new self(
null,
$vat,
null,
$count,
$price,
$id,
$discount,
$lumpcode
);
}
i to działa, bo do tej pory tak sobie pomagałem "patchem". Zerknę na te nowe zmiany, czy ten fix dalej będzie potrzebny.
Faktycznie, chyba złego commita puściłem.
Mam tak lokalnie:
public static function fromGoodId(GoodId $id, $count, $price, $vat = null, Discount $discount = null, $lumpcode = null) { return new self( null, $vat, null, $count, $price, $id, $discount, $lumpcode ); }
i to działa, bo do tej pory tak sobie pomagałem "patchem". Zerknę na te nowe zmiany, czy ten fix dalej będzie potrzebny.
W metodzie InvoiceContent::fromGoodId
argument $vat
nie ma przypisanego typu, więc możesz przekazać zarówno null
, ZW
, czy cokolwiek innego. Żadna zmiana nie jest tu potrzebna jak sądzę.
@mgralikowski @jacekkow zamykam ten PR. Zrobiłem rebase w nowym branchu: https://github.com/dbojdo/wFirma/pull/29
Faktycznie, chyba złego commita puściłem. Mam tak lokalnie:
public static function fromGoodId(GoodId $id, $count, $price, $vat = null, Discount $discount = null, $lumpcode = null) { return new self( null, $vat, null, $count, $price, $id, $discount, $lumpcode ); }
i to działa, bo do tej pory tak sobie pomagałem "patchem". Zerknę na te nowe zmiany, czy ten fix dalej będzie potrzebny.
W metodzie
InvoiceContent::fromGoodId
argument$vat
nie ma przypisanego typu, więc możesz przekazać zarównonull
,ZW
, czy cokolwiek innego. Żadna zmiana nie jest tu potrzebna jak sądzę.
No tak, faktycznie umknęło, bo zwykle pracuje na php 8, pełnym typowaniu i strict mode. Nie mniej jednak, danie default + komentarz, wyraźnie zasygnalizuje bądź co bądź - ciekawe działanie z tym dziedziczeniem ;)
VAT to int - reprezentacja liczbowa, a co bardziej prawidłowe - po prostu ID typu stawki. Niestety nie jest możliwe wystawić faktury "zw" stąd sugestia, aby zrobić VAT nullable, ponieważ wtedy dziedziczony jest z modelu Good, więc rozwiązuje to problem , przynajmniej w moim przypadku. Docelowo pewnie by trzeba przemyśleć czy ten atrybut ogólnie jest prawidłowy, i nie powinien to być bardziej
vat_code
.