Raport sprzedaży asortymentu

Jak każdy program i nasza DM Plaza nie jest wolna od błędów - prosimy opiszcie je - szybciej zostaną naprawione
AJP_Kuba
Ekspert
Posty: 155
Rejestracja: 2009-06-05, 07:20
Lokalizacja: Kraków
Kontakt:

Raport sprzedaży asortymentu

Post autor: AJP_Kuba »

Ten z modułu sprzedaż (zależnie od wersji i menu, powinien być w analityce sprzedaży, bezpośrednio w module albo w rachunkach otwartych).

Problem stwierdzony przy domyślnym ustawieniu, tj. "wg faktur i paragonów", po przefiltrowaniu wg osób. Po wybraniu użytkownika (filtr "Wystawił") raport daje zaniżony wynik.

Przyczyna: większość (sprawdzałem na kilku bazach, wynik oscyluje pomiędzy 80% a 90%) faktur nie ma wypełnionego pola FAKTURA_WYSTAWIL_ID, po którym raport filtruje sprzedaż.

Informacja o tym, kto wystawiał dokument, znajduje się w:
(1) widoku listy faktur, kolumna "Wystawił"
(2) polu FAKTURA.EMPLOYEE_ID
(3) polu FAKTURA.FAKTURA_WYSTAWIL
(4) polu FAKTURA.FAKTURA_WYSTAWIL_ID

(1) to nazwisko i imię użytkownika, który fakturę tworzył
(2) to id użytkownika, który faktycznie dokument tworzył
(3) to nazwisko i imię użytkownika z pola FAKTURA_WYSTAWIL_ID lub - jeśli jest ono puste - EMPLOYEE_ID
(4) to id użytkownika określonego w polu "Wystawił" formatki dokumentu

Więc o ile w widoku faktur zawsze mamy nazwisko osoby TWORZĄCEJ fakturę, to raport jest filtrowany wg osoby WYSTAWIAJĄCEJ fakturę, a ten zapis nie jest tworzony w bazie danych, o ile nie przeklikamy osoby wystawiającej w dokumencie. I raport łączny nijak nie zgodzi się z sumami na użytkownika.
AJP_Kuba
Ekspert
Posty: 155
Rejestracja: 2009-06-05, 07:20
Lokalizacja: Kraków
Kontakt:

HotFix

Post autor: AJP_Kuba »

Rozwiązaniem jest poniższy skrypt. Powoduje zapisanie id użytkownika wystawiającego (domyślnie- tworzący) dla nowych dokumentów, oraz uzupełnia dane w już istniejących dokumentach.

Kod: Zaznacz cały

SET TERM ^;
CREATE OR ALTER TRIGGER AJP_FAKTURA_WYSTAWIL FOR FAKTURA
ACTIVE BEFORE INSERT POSITION 1
AS
BEGIN
/*RAPORT SPRZEDAZY ASORTYMENTU - FILTR WG UZYTKOWNIKA*/
 IF(NEW.FAKTURA_WYSTAWIL_ID IS NULL) THEN
  NEW.FAKTURA_WYSTAWIL_ID = NEW.EMPLOYEE_ID;
END
^
SET TERM ;^

UPDATE FAKTURA SET FAKTURA_WYSTAWIL_ID = EMPLOYEE_ID WHERE FAKTURA_WYSTAWIL_ID IS NULL;
COMMIT;
ODPOWIEDZ