Witam
Natrafiłem na problem ze skryptem lms-payments. Skrypt nie nalicza należności. Po dociekaniu okazuje się iż problem leży w głównej kwerendzie - wkleję tutaj to co się wykonuje w bazie:
SELECT tariffid, liabilityid, customerid, period, at, suspended, invoice, tariffs.description AS description, (CASE liabilityid WHEN 0 THEN tariffs.name ELSE liabilities.name END) AS name, (CASE liabilityid WHEN 0 THEN tariffs.taxid ELSE liabilities.taxid END) AS taxid, (CASE liabilityid WHEN 0 THEN tariffs.prodid ELSE liabilities.prodid END) AS prodid, (CASE liabilityid WHEN 0 THEN (CASE suspended WHEN 0 THEN ROUND(CASE discount WHEN 0 THEN tariffs.value ELSE ((100-discount)*tariffs.value)/100 END, 2) ELSE ROUND(ROUND(CASE discount WHEN 0 THEN tariffs.value ELSE ((100-discount)*tariffs.value)/100 END, 2) * 50/100, 2) END) ELSE (CASE suspended WHEN 0 THEN ROUND(CASE discount WHEN 0 THEN liabilities.value ELSE ((100-discount)*liabilities.value)/100 END, 2) ELSE ROUND(ROUND(CASE discount WHEN 0 THEN liabilities.value ELSE ((100-discount)*liabilities.value)/100 END, 2) * 50/100, 2) END) END) AS value FROM assignments LEFT JOIN tariffs ON (tariffid = tariffs.id) LEFT JOIN liabilities ON (liabilityid = liabilities.id) LEFT JOIN customers ON (customerid = customers.id) WHERE status = 3 [* do tego miejsca kwerenda zwraca wynik] AND (period = 1 OR (period = 2 AND at = 2) OR (period = 3 AND at = 6) OR (period = 4 AND at = 106) OR (period = 5 AND at = 037) OR (period = 0 AND at = 1170716400)) AND (datefrom <= 1170791060 OR datefrom = 0) AND (dateto > 1170791060 OR dateto = 0) ORDER BY customerid, invoice, value DESC
Kwerenda wszystko zwraca poprawnie do miejsca oznaczonego *, po dostawieniu kolejnych warunków, wynik jest pusty. Prawdopodobnie błąd tkwi w konfiguracji serwera ale nie wiem, jakiej opcji szukać. Poprzednio miałem PG 7.4 i pracował bez żadnych problemów. Problemy pojawiły się po migracji na 8.
uczestnicy (1)
-
Krzysztof Kardas