W dniu 11-06-20 16:48, Piotrek S. pisze:
W dniu 11-06-20 15:30, Piotrek S. pisze:
Witam,
Czy może mi ktoś powiedzieć, co daje ta linijka (konkretnie drugi warunek) ?
if($notexpired{$row->{'id'}} && $notexpired{$row->{'id'}} * -1 <= $balance)
Bo nie wszystkie faktury mi do tego się łapią (np. dwie faktury z tym samym terminem płatności, wystawione w tym samym dniu, tylko kwota inna)
zmienna limit w lms.ini nie jest ustawiona.
Pozdrawiam
Witam raz jeszcze,
Znalazłem chyba co jest nie tak:
Robię zapytanie do bazy (wyciągnięte ze skryptu, z dodanym warunkiem customerid = 1214):
SELECT documents.customerid AS customerid, SUM(invoicecontents.value) AS notexpired FROM invoicecontents LEFT JOIN documents ON invoicecontents.docid = documents.id WHERE documents.type = 1 AND cdate + paytime * 86400 > 1308614400 AND documents.customerid = 1214 GROUP BY documents.customerid ORDER BY documents.customerid
wynik:
customerid notexpired 1214 231.00
i teraz kolejne zapytanie:
SELECT documents.customerid AS customerid, invoicecontents.itemid, invoicecontents.value, invoicecontents.count FROM documents LEFT JOIN invoicecontents ON invoicecontents.docid = documents.id WHERE documents.customerid = 1214;
customerid itemid value count 1214 3 1.00 20.00 1214 2 20.00 1.00 1214 1 210.00 1.00
Czyli wychodzi na to, że nie liczy dobrze, bo później:
select SUM(value) balance from cash where customerid = 1214;
daje:
balance -250.00
W związku z tym warunek raczej nie będzie spełniony nigdy.
Czy się mylę, czy może trzeba zmienić zapytanie, żeby brało pod uwagę pole count i przez niego mnożyło value ? W tej chwili zwyczajnie sumuje value.
Pozdrawiam
SELECT documents.customerid AS customerid, SUM(invoicecontents.value * invoicecontents.count) AS notexpired FROM invoicecontents LEFT JOIN documents ON invoicecontents.docid = documents.id WHERE documents.type = 1 AND cdate + paytime * 86400 > 1308614400 AND documents.customerid = 1214 GROUP BY documents.customerid ORDER BY documents.customerid
Poprawiłem (linijka 255, wersji 1.41) i chyba jest ok.
Pozdrawiam