Zmiany pomiędzy wersją początkową i wersją 1 dla DeployerGuide/Customization/AdvancedReporting

Pokaż
Ignoruj:
Data i czas:
06/08/09 09:44:08 (15 years temu)
Autor:
JP (IP: 213.227.67.33)
Komentarz:

Dodano opis dla raportów

Legend:

Bez zmian
Dodane
Usunięte
Zmienione
  • DeployerGuide/Customization/AdvancedReporting

    v1 v1  
     1= [wiki:DeployerGuide Przewodnik wdrożeniowca] > Tworzenie raportów w SQL = 
     2 
     3Do tworzenia zaawansowanych raportów SQL przydatna będzie oprócz PGAdmina również dokumentacja bazy danych. 
     4Znajduje się ona w sekcji download jako plik !DokumentacjaBazyDanycheDokumenty.zip. 
     5 
     6== Instrukcja tworzenia nowego raportu == 
     71. Przechodzimy do eDokumentów, moduł Raporty > Nowy raport (min. Nazwa, Grupa) - zapisujemy, otwierają się dodatkowe zakładki[[BR]] 
     8 
     92. W zakładce Definicja wpisujemy Kwerendę SQL "SELECT * FROM events" (UWAGA! Zapytanie musi zwracać przynajmniej 1 rekord)[[BR]] 
     10 
     113. Zapisujemy, Otwieramy do edycji ponownie. Na zakładce Wybór kolumn przenosimy klikając w przyciski te pola które chcemy wyświetlić.[[BR]] 
     12 
     134. Zapisujemy raport.[[BR]] 
     14 
     155. Otwieramy raport aby obejrzeć wyniki[[BR]] 
     16 
     17 
     18== W kwerendach można stosować parametry == 
     19 
     20{{{ 
     21{USR_ID} (string) - przecinkami rozdzielona lista użytkowników do którym ma dostęp zalogowany user 
     22{LOGGED_USR_ID} (int) - usr_id aktualnie zalogowanego pracownika 
     23{DATE_FROM} (string) - np. adddat::date >= '{DATE_FROM}' 
     24{DATE_TO} (string) -np. adddat:: <= '{DATE_TO}' 
     25{CONTID} (int) - id kontatku 
     26{PRC_ID} (int) - id sprawy 
     27{CONTIDS} (string) - id wybranych kontaktów z listy kontaktów dla których ma zostać wydrukowany wybrany raport 
     28}}} 
     29 
     30będą one mapowane na formularzu "Parametry raportu" i z odpowiednich pól pobierane będą wartości. 
     31 
     32== Użyteczne konstrukcje i funkcje językowe SQL == 
     33 
     34{{{ 
     35-- Zwraca sformatowaną kwotę 
     36SELECT bmoney(100.90, 'PLN') 
     37 
     38-- Formatuje datę 
     39SELECT to_char(d.adddat, 'YYYY-MM-DD') FROM documents d;  
     40 
     41-- Pobiera rok 
     42select extract(YEAR from CURRENT_DATE); 
     43 
     44-- Formatuje kwotę z pól tekstowych np. z formularzy customowych 
     45select cast(regexp_replace(regexp_replace('301 110,43',' ',''),',', '.') as numeric(12,2)) + 12.50; 
     46 
     47-- Warunkowo koloruje pole 
     48CASE WHEN p.pr_sta = 1 THEN '<div style="color: red">Rozpoczęte</div>' WHEN p.pr_sta = 2 THEN 'W trakcie realizacji' WHEN p.pr_sta = 3 THEN 'Zakończone' END  AS status, 
     49 
     50-- Selectuje tydzień 
     51to_char(CURRENT_DATE, 'WW') = to_char (adddat, 'WW') 
     52 
     53}}} 
     54 
     55== Przykładowe użyteczne zapytania do bazy edokumenty == 
     56 
     57{{{ 
     58-- 
     59-- Pobranie danych z formularzy dynamicznych 
     60-- 
     61SELECT to_char(d.adddat, 'YY-MM-DD') AS day, 
     62-- rozmowy 
     63(SELECT count(*) /10 
     64FROM events_view e WHERE e.trmtyp = 'PHONECALL' AND emp_id IN (84,62) AND e.start_ >= d.adddat::date - 7 
     65AND e.start_ <= d.adddat) AS rozmowy_handlowe, 
     66-- spotkania 
     67(SELECT count(*)  
     68FROM events_view e WHERE e.trmtyp = 'MEETING' AND emp_id IN (84,62) AND e.start_ >= d.adddat::date - 7 
     69AND e.start_ <= d.adddat) AS spotkania, 
     70-- wartość pola featid 98 
     71f3.data__::int AS odwedok 
     72FROM documents d 
     73INNER JOIN features_text_view f3 ON d.doc_id = f3.tbl_id AND f3.featid = 98; 
     74-- cecha z listy wyboru 
     75INNER JOIN features_opt_view f3 ON d.is_del IS NOT true AND d.gostof IS NULL AND d.doc_id = f3.tbl_id AND f3.ftopid = 119 
     76 
     77-- 
     78-- Wybiera symbol teczki z numeru sprawy oo formacie ''2/03/08/UP/AW'' 
     79-- 
     80SELECT substring(symbol from '[0-9]*/[0-9]*/[0-9]*/([A-Z]*)') FROm processes; 
     81 
     82-- 
     83-- Wybiera krótką nazwę klienta jeśli jest, a jeśli jest pusta to długą 
     84-- 
     85SELECT COALESCE(c.name_2, c.name_1) FROM contacts c; 
     86 
     87-- 
     88-- Wybiera sprawy z wartościami cech (tekstowe i opcje) 
     89-- 
     90SELECT p.dscrpt, p.symbol, 'PROCESS'::text AS clsnam, prc_id AS keyval,  
     91f1.data__ AS opinia, f2.ftopnm AS reklamacja, f3.data__ AS dzialanie_korygujace, 
     92f4.data__ AS dzialanie_Klient, f5.data__ AS przyczyna 
     93FROM processes_view p  
     94LEFT JOIN features_text_view f1 ON p.prc_id = f1.tbl_id AND f1.featid = 14 
     95LEFT JOIN features_opt_view f2 ON p.prc_id = f2.tbl_id AND f2.featid = 15 
     96LEFT JOIN features_text_view f3 ON p.prc_id = f3.tbl_id AND f3.featid = 16 
     97LEFT JOIN features_text_view f4 ON p.prc_id = f4.tbl_id AND f4.featid = 17 
     98LEFT JOIN features_text_view f5 ON p.prc_id = f5.tbl_id AND f5.featid = 18 
     99WHERE p.prtpid = 1 
     100 
     101-- 
     102-- Wybiera dane do trendu - do wykresu 
     103-- 
     104SELECT extract(month from rlstrt) as m,  
     105sum((time__::numeric(12,2)/3600)::numeric(12,2)) AS sum 
     106FROM rcp_cards_view 
     107WHERE rlstrt IS NOT NULL AND is_fak = TRUE AND is_del = FALSE AND tpstid = 9 
     108AND rlstrt + interval '1 year' >= CURRENT_DATE  
     109GROUP BY extract(year from rlstrt),  
     110extract(month from rlstrt)  
     111ORDER BY extract(year from rlstrt), extract(month from rlstrt)  
     112 
     113}}} 
     114 
     115== Umożliwienie otwierania dialogów (formularzy) z wyników raportu == 
     116 
     117Tworzymy zapytanie które w kolumnach o nazwach ''clsnam'' i ''keyval'' będą zawierać odpowiednio NAZWĘ_FORMULARZA i wartość klucza podstawowego rekordu np. 
     118{{{ 
     119SELECT 
     120'PROCESS' AS clsnam, 
     121prc_id AS keyval, 
     122dscrpt FROM processes; 
     123}}} 
     124 
     125Następnie na zakładce ''Definicja'' raportu wpisujemy aliasy tych pól. 
     126 * Typ z pola: clsnam 
     127 * ID z pola: keyval 
     128 
     129Dostępne formularze i ich przykładowe klucze podstawowe: 
     130{{{ 
     131PROCESS    - prc_id   - Kartoteka sprawy 
     132CONTACT    - contid   - Kartoteka klienta 
     133DOCUMENT   - doc_id   - Formularz dowolnego typu dokumentu 
     134EVENT      - evntid   - Formularz dowolnego typu zdarzenia ?? 
     135RCP        - rcp_id   - Formularz karty pracy 
     136}}} 
     137 
     138== Wykresy == 
     139 
     140Dostępna jest możliwość drukowania wykresów, należy jednak odpowiednio sformułować zapytanie, tak aby wyniki możliwe były do wyświetlenia na wykresie: słupkowym, liniowym i kołowym (Pie). 
     141 
     142Aby wydrukować wykres kołowy jego definicja musi być tak ułożona, aby pierwsza kolumna wskazywała na opis a druga na wartość !! 
     143 
     144== Menu raportów == 
     145 
     146Wybrane raporty można udostępnić w formularzu sprawy lub klienta. W tym celu należy wybrać Ustawienia -> Menu raportów. W polu "Nazwa dialogu" wpisujemy !ExtendedContactPanel dla formularza klienta lub AProcessForm dla formularza sprawy. W selekcie wybieramy interesujący nas raport. W raporcie tym odpowiednio używamy parametru {CONTID} i {PRC_ID} aby raport użył otwartej kartoteki jako parametru. 
     147 
     148== Biblioteka raportów == 
     149 
     150Raporty z biblioteki można pobierać poprzez przeglądarkę lub klienta webdav z serwera support.  
     151 
     152Autoryzowani partnerzy mogą również współtworzyć raporty, uzyskując dostęp do biblioteki poprzez SVN. Polecany klient TortoiseSVN. 
     153 
     154Na razie repozytorium dostępne jest pod adresem ''https://edokumenty.beta:444/svn/repos/Wdrozenia'' 
     155Przykładowa konfiguracja dla tunelu z deva na lokalny port 44443. Hasła takie jak do traca. 
     156 
     157{{{ 
     158ssh -N -f -L 44443:localhost:44444 tunnel@dev.bnet.pl 
     159svn co https://localhost:44443/svn/repos/Wdrozenia 
     160}}} 
     161 
     162Każdy katalog zawierać może jeden raport, każdy raport reprezentowany musi być przez co najmniej 3 pliki. 
     163 * ''Zestawienie spotkan.report'' - nazwa opisowa  
     164 * ''Spotkania.sql'' - może zawierać również dodatkowe kwerendy ale wyraźnie oddzielone od właściwej oraz komentarze 
     165 * ''Spotkania.png'' - screenshot dla łatwiejszej orientacji 
     166 * opcjonalnie pliki HTML dla raportów z szablonami np. ''szablonAudytu.html'' 
     167 
     168 
     169== Tips & Tricks == 
     170 
     171Dla łatwiejszego tworzenia raportów można użyć narzędzia PgAdmin, wówczas dla sieci lokalnej konfiguracja pg_hba.conf powinna 
     172wyglądać dla sieci w której serwer ma adres przykładowo: 
     173 
     174{{{ 
     175[root@edokumenty ~]# ip a | grep eth0 
     176inet 10.8.16.33/24 brd 10.8.16.255 scope global eth0 
     177 
     178# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD 
     179host    oblig       all         10.8.16.255/24        trust 
     180}}} 
     181 
     182W postgresql.conf należy ustawić nasłuchiwanie na wszystkich interfejsach sieciowych.  
     183{{{ 
     184listen_addresses = '*' 
     185}}} 
     186 
     187Po skończeniu wdrożenia koniecznie przywrócić do pierwotnej postaci.