|
<< Kliknij, aby wyświetlić Spis treści >> Nawigacja: SIMPLE.ERP > Podstawowe obiekty w systemie > Raporty |
Opcja Raporty jest dostępna w Menu System z aktywnych okien w różnych obszarach ERP. Po jej wywołaniu inicjuje się okno Definiuj raport zawierające listę raportów dostępnych z okna startowego.
Wśród raportów widocznych na liście mogą być:
●Raporty systemowe nieedytowalne przez użytkownika, które są opisane zwykłą czcionką:
oBez dodatkowych oznaczeń,
oOznaczone ikoną
- dane z raportów zapisywane w szablonach WORD.
●Raporty utworzone i dodane w bazie użytkownika opisane kursywą:
oUtworzone jako kopia raportu systemowego,
oUtworzone i dodane jako nowy raport.

Rysunek 1768. Widok okna Raporty wywołanego z okna Dane osobowe
Opcja jest wyposażona w funkcje umożliwiające:
●Kopiowanie szablonów istniejących raportów systemowych w celu dostosowania ich do indywidualnych potrzeb użytkownika.
●Dodawanie do raportów systemowych zapisywanych w szablonach WORD własnych odmian raportów (szablonów) o innej szacie graficznej bazujących na tym samym zestawie danych wynikowych.
Kopiowanie szablonów istniejących raportów systemowychKopiowanie odbywa się poprzez zaznaczenie raportu na liście i wciśnięcie przycisku Kopiuj poniżej listy raportów. Polecenie wywoła okienko do wpisania nazwy, która pojawi się w kolumnie Szablon oraz wyboru typu: Prywatny/Publiczny. ![]() Rysunek 1769. Okienko definiowania nazwy i typu szablonu Kopia szablonu raportu może być modyfikowana za pomocą skryptów VBA, czy też InfoMakera stosownie do potrzeb użytkownika. Może też zostać usunięta. Metoda umożliwia modyfikację raportów systemowych, które tylko po skopiowaniu mogą być edytowane. Wymaga to jednak dużych umiejętności programistycznych. |
Dodawanie własnych szablonów do raportów systemowych zapisywanych w szablonach WORDFunkcjonalność dotyczy raportów systemowych przygotowanych do tworzenia dokumentów wynikowych w formacie WORD i PDF, które na liście raportów są oznaczone ikoną Szablon jest to dokument tekstowy odpowiednio sformatowany w pliku WORD zawierający pola tekstowe i pola z nazwami danych w ERP, z których będą pobierane informacje. Układ i format szablonu stanowi dokument, który w wyniku wykonania raportu zostanie napełniony wartościami danych z bazy. W celu dodania nowego szablonu należy najpierw przygotować taki szablon samodzielnie albo zapisać szablon systemowy na dysku pod własną nazwą i zmodyfikować go stosownie do potrzeb, a następnie dodać plik do listy szablonów w raporcie. Do wywoływania akcji zapisu, dodania, zmiany i usunięcia pliku służą przyciski po prawej stronie okna, poniżej listy szablonów w raporcie:
Zmień wskazany szablon zawartością pliku Dodaj szablon podrzędny Usuń zaznaczony szablonSzablon dodany do raportu domyślnie jest przypisywany bieżącemu użytkownikowi. Można to zmienić zaznaczając odpowiednie pole w środkowej części okna poniżej listy raportów w sekcji Zapisz statusy aktywności szablonów: ●Bieżącemu użytkownikowi – pole zaznaczone domyślnie co oznacza, że dodany szablon będzie dostępny tylko dla aktualnego użytkownika. ●Wszystkim użytkownikom – po zaznaczeniu, szablon będzie dostępny dla wszystkich użytkowników widocznych w dolnej części okna. ●Wybranym użytkownikom – zaznaczenie pola odblokuje aktywność w dolnej części okna do wyboru użytkowników, którzy będą mieli prawo dostępu do szablonu. Zapisywanie szablonu w plikuNa liście raportów należy zaznaczyć właściwy, a następnie na prawej części okna - szablon wybrany do modyfikacji po czym wcisnąć przycisk ![]() Rysunek 1770. Fragment okna Raporty - zapis pliku sazblonu Wyświetli się okno wyboru miejsca zapisu pliku i jego nazwy. Po wprowadzeniu odpowiednich wartości i wciśnięciu przycisku Zapisz, plik zostanie zapisany we wskazanej lokalizacji w formacie WORD.DOCX i wyświetli się na ekranie użytkownika. Jest to kopia szablonu systemowego gotowa do wprowadzenia niezbędnych zmian w zakresie widoku raportu wynikowego (wygląd i szata graficzna szablonu) jak i zakresu pobieranych informacji w ramach zestawu danych wynikowych. Zmodyfikowany i zapisy plik szablonu jest gotowy do dodania go do raportu. Dodawanie pliku szablonu do raportuNa liście raportów leży zaznaczyć właściwy, a następnie umieścić kursor na prawej części okna zawierającej szablony eksportu danych i wcisnąć przycisk Zamiana szablonu zawartością plikuDodany przez użytkownika plik szablonu może być zamieniony zawartością innego pliku. Akcję zamiany wywołuje przycisk Dodawanie szablonów podrzędnychIstnieje możliwość dodawania szablonów podrzędnych do wybranego. Szablony do dodania mogą być wybierane z pośród występujących w oknie Szablony eksportu danych z raportu i dodawane na jednym poziomie podrzędności. W przypadku ustawienia kursora na szablonie podrzędnym wyświetli się komunikat Nie można dodawać szablonu podrzędnego drugiego poziomu. W celu dodania szablonu podrzędnego należy ustawić kursor na wybranym szablonie głównym, wcisnąć przycisk Usuwanie szablonuPo zaznaczeniu szablonu i i wciśnięciu przycisku |
Definiowanie i dodawanie własnych dowolnych raportów do wykonania w formacie WORD i PDFW oknie Definiuj raport użytkownik może dodawać i zdefiniować własne raporty do generowania raportów wynikowych w formacie WORD i PDF z każdego obszaru ERP. Mogą to być to np. wydruki faktur, dokumentów FK jak i raportów z kartotek pracowników w obszarze Personel. Dodawanie pozycji raportuW pierwszej kolejności należy dokonać wyboru kontekstu (okna), w którym ma być zamieszczony raport. Jest to okno startowe uruchomienia opcji Definiuj raport z menu Raporty. W celu dodania raportu należy wcisnąć przycisk ![]() Rysunek 1771. Dodawanie raportu Edycja utworzonego raportuRaport tworzą dwa rodzaje procedur SQL: procedura iteracyjna i procedura raportowa oraz szablony WORD. ●Procedura iteracyjna odczytuje filtr raportu; nazwa węzła stanowi definicję formatki startowej. Procedura iteracyjna określa warunki dołączania załączników w dokumencie wynikowym. Kolejne iteracje tworzą wyniki w formacie XML. ●Procedura raportowa odczytuje wartości w XML i zawiera ścieżki sterujące wskazaniem w modelu drzewkowym tabeli, która jest węzłem. Procedura raportowa powinna: oUwzględniać listę szablonów zamieszczonych w raporcie. oZawierać kryteria wyboru szablonu jako główny. oZawierać kryteria tworzenia załączników i sposób ich numeracji. ●Szablony zawierają zestaw "tagów" - nazw pól (danych w ERP) w korespondencji seryjnej oraz znaki określające początek i koniec przetwarzania danych w grupie: «BeginGroup:....», «EndGroup:.....». Raport może zawierać jeden szablon lub jeden szablon główny i załączniki dodawane na jednym poziomie podrzędności. Załączniki są numerowane w kolejności ich dodawania. Każdy szablon może mieć wiele grup, a w każdej z grup po kilka podraportów. Poszczególne podraporty mogą być zagnieżdżone, np. Główka raportu, Lista pracowników, Stopka raportu. W Liście pracowników dodatkowo dla każdego pracownika może być lista danych, np. umów, a w umowach angaże. Stosuje się dwa modele szablonów: oDrzewiasty (relacyjny). oPłaski - wszystkie informacje na jednym poziomie. W prawidłowo zdefiniowanym raporcie wymagana jest zgodność procedur SQL i szablonów WORD. Szablony w Wordzie powinny być tak skonfigurowane aby zarówno same szablony jak i raporty na nich wykonane otwierały się poprawnie np. nie jest zalecanie tworzenie szablonów w OpenOffice. Zaleca się natomiast tworzenie ich w WORD DOCX. Procedury i filtry wykonania raportu dodaje się w oknie definiowania raportu, które uruchamia przycisk Modyfikuj położony w środkowej części okna lub dwuklik na pozycji raportu. Szablony w plikach WORD zawierające szatę graficzną i tagi (nazwy) danych, z których będą pobierane informacje do raportu są dodawane w prawej części okna Formatowanie stron w tych typach plików nie jest identyczne i w związku z tym przed dodaniem szablonu do raportu wskazane jest zapisanie szablonu w formacie doc. i docx., sprawdzenie i ewentualne poprawienie rozkładu informacji i podziału na strony oraz ponowne zapisanie go w formacie, w którym zostanie dodany do raportu, np. w docx. . Opis dodawania szablonów znajduje się powyżej w punkcie Dodawanie własnych szablonów do raportów systemowych zapisywanych w szablonach WORD. Okno definiowania raportu zawiera trzy zakładki: Szablony, Napełnianie i emisja, Kryteria wyszukiwania Zakładka Szablony ![]() Rysunek 1772. Okno definiowania raportu - zakładka Szablony Zakładka Napełnianie i emisja zawiera dwie procedury SQL: ●Do iteracji - procedura iteracyjna. ●Do danych - procedura raportowa. ![]() Rysunek 1773. Okno definiowania raportu - zakładka Napełnianie i emisja W nowo utworzonym raporcie są zamieszczone procedury wzorcowe. Użytkownik może zamieszczać własne procedury iteracyjne i raportowe wykorzystując przy tym procedury wzorcowe albo pisząc w całości własne. W nazwie procedur należy na końcu zamieścić: ●_iter - w procedurze iteracyjnej, ●_rapor - w procedurze raportowej. Zakładka Kryteria wyszukiwania Służy do budowy zestawu filtrów (kryteriów wyszukiwania), które będą w oknie uruchomienia raportu. Jako kryteria wyszukiwania w zakładce wstawia się dane dodatkowe zdefiniowane w opcji Obiekty uzupełniające wspólne->Dane dodatkowe, które w parametrze Rodzaj mają wpisany Raport. W kryteriach wyszukiwania należy użyć tych danych dodatkowych, które w definicji w zakładce Zapytanie z listą wartości mają określone kryteria wyszukiwania. Definiowanie danych dodatkowychDane dodatkowe dodaje się w oknie Edycja danych dodatkowych uruchamianym w opcji Obiekty uzupełniające wspólne->Dane dodatkowe. Po otwarciu okna należy umieścić kursor na liście danych i pod prawym przyciskiem myszy wybrać polecenie Dodaj. Zostanie dodana nowa pozycja, w poszczególnych zakładkach należy wstawić odpowiednie wartości. Zakładka Dane podstawowe ●Identyfikator - dowolny ciąg znaków. ●Typ - wybór odpowiedniego typu wartości z rozwijalnej listy. Zalecane jest aby w Typie ograniczyć się do podstawowych wartości np. tekst. ●Nazwa - tekst, który będzie opisywał pole wyboru na filtrze raportu. ●Format - określenie formatu definiowanej danej. Format jest zależny od typu danej, np. daną typu Liczba całkowita można określić jako # Numer - wyświetla tylko numery lub ####, daną typu DataCzas - [date][time] lub yyyy-mm-dd. ●Tryb walidacji - wybór odpowiedniego trybu z listy. W przypadku wyboru wartości w przedziale od do istnieje możliwość określenia przedziału wartości dopuszczalnych. ●Wartość domyślna - wybór z listy dostępnych wartości w zależności od typu wartości definiowanej danej. ●Rodzaj - przy definiowaniu danych do raportu należy wybrać z listy - Raport. ●Opis- pole tekstowe, w którym można wpisać dowolny ciąg znaków. ![]() Rysunek 1774. Fragment okna edycji danych dodatkowych - zakładka Dane podstawowe Zakładka Zapytanie z listą wartości W tej zakładce określa się kryteria wyszukiwania dla danych typu Obiekt wewnętrzny. Zakładka aktywna po wskazaniu tego typu wartości w danych podstawowych. Pozwala na wpisanie zapytania napełniającego filtr. Zapytanie w definicji danych dodatkowych do raportu (rodzaj danej - Raport) powinno mieć 3 linie. Jeżeli zostaną popełnione błędy przy definicji danej, bądź zapytanie nie zwróci wartości to w wyniku pokazują się inne wartości niż oczekiwane, np. jeżeli na filtrze uruchomienia raportu filtrów zamiast np. numerów dokumentów są banki, to należy musimy powrócić do definicji danej dodatkowej. Poniżej przykładowe zapytanie do wyszukiwania nr teczki pracownika: SELECT p.pracownik_nrewid as id, p.pracownik_idn as idn, p.imie+~' ~'+p.nazwisko as nazwa FROM kp_pracownik p Dodawanie danych dodatkowych (pól filtrów) do raportu![]() Rysunek 1775. Okno definiowania raportu - zakładka Kryteria wyszukiwania Jeżeli w bazie zdefiniowano dane dodatkowe, które powinny być umieszczone na filtrze raportu, to należy je dodać w zakładce Kryteria wyszukiwania. W nowo utworzonym raporcie jest zamieszczony przykładowy jeden parametr Czy raport zbiorczy, który można pozostawić w raporcie albo usunąć jeżeli nie dotyczy tworzonego raportu. Polecenie dodawania danych jest aktywne na otwartej zakładce pod prawym przyciskiem myszy. Po wyborze polecenia zostanie dodane aktywne pole wyboru z listą danych dodatkowych, które mogą być dodane. Kliknięcie na wybranej danej, spowoduje wyświetlenie jej w okienku. Wybór należy zaakceptować przyciskiem Zapisz. Dane są zamieszczane w kolejności ich dodawania. Układ danych dodatkowych (pól filtra w oknie uruchomienia raportu) można modyfikować w oknie edycji ustawień wywoływanym z zakładki przy pomocy przycisku ![]() Rysunek 1776. Okno edycji ustawień danych dodatkowych W oknie edycji ustawień wyświetlają się dane dodatkowe dodane w zakładce. Obok nazwy danej (tekst), znajduje się okienko edycji wartości z jej formatem (kolumna). Na oknie należy rozmieścić położenie opisu (tekstu) oraz położenie i rozmiar okienka edycji wartości danej (kolumny) przy pomocy przycisku myszy: zmiana miejsca położenia - na zasadzie przytrzymaj i upuść, zmiana rozmiaru - przytrzymaj i przeciągnij. Rozmieszczenie danych oraz wielkości pól edycji ustawione tutaj będą stanowiły parametry filtra w oknie uruchomienia raportu. W dolnej części okna edycji parametrów są zamieszczone przyciski do:
Przycisk wyboru koloru tła okna parametrów uruchomienia raportu.
Przycisk wywołuje okno parametrów uruchomienia raportu z aktualnym rozmieszczeniem parametrów ( danych dodatkowych).
Przycisk rozwijający listę obiektów zamieszczonych w oknie. Po otwarciu okna z listą obiektów, istnieje możliwość edycji ich rozmiaru i położenia po wciśnięciu przycisku Właściwości umieszczonego obok listy obiektów. Wyświetlą się parametry rozmieszczenia w oknie obiektu zaznaczonego na liście.
Przycisk zamykający okno edycji i powrót do zakładki Kryteria wyszukiwania. |
Uwagi do tworzenia szablonów eksportu danych z raportuPrzygotowanie szablonu (formularza) polega m.in. na: ●Utworzeniu szablonu raportu w pliku typu WORD w odpowiedniej szacie graficznej, np.: z zamieszczoną pieczątką lub logo firmy, w którym są wypełnione wszystkie stałe informacje i zarezerwowane pola (miejsca) do wstawiania informacji pobieranych z bazy (np. dane osób i firmy). ●Dodaniu w szablonie właściwych znaków sterujących, np. początek, koniec raportu i nazw obiektów systemowych (tagów), w których są przechowywane informacje pobierane do raportu. ●Odpowiednim określeniu parametrów wydruku, w tym czy nowe dokumenty od nowej strony i sformatowaniu akapitów, wielkości pól w tabelach, gdyż pozostawianie wartości automatycznych może przynosić niepożądane skutki. ●Dodaniu szablonu do raportu jednego lub wielu i ewentualnie szablonów podrzędnych w zależności od rodzaju raportu wynikowego. W przypadku zamieszczenia wielu szablonów, o wyborze decyduje użytkownik w oknie wykonania raportu. Przy tworzeniu raportu, w którym dodano szablony podrzędne, o wyborze konkretnego szablonu do zapisu raportu decydują ścieżki sterujące w procedurze raportowej. Do jednego raportu można dodać wiele szablonów, a do jednego szablonu - wiele szablonów podrzędnych na jednym poziomie. W przypadku gdy w raporcie jest ograniczona i określona z góry liczba stron, to: ●W szablonie powinien być wstawiony sztywny podział na strony, tj. konkretne numery stron powinny być wpisane w stopce szablonu a nie numerowane w dokumencie. ●Zaleca się aby pola określone z góry co do miejsca ich położenia i wielkości były definiowane w szablonie jako tabele. W definicjach takich tabel należy: oW opcjach tabeli odznaczyć parametr Automatycznie dopasuj rozmiar do zawartości. oOkreślić wysokość wiersza i wybrać parametr Dokładnie. oOkreślić rozmiar tabeli (preferowana szerokość), a w ramach tego rozmiaru – szerokości poszczególnych kolumn. oW poszczególnych komórkach tabel sformatować sposoby wprowadzania tekstów, w tym akapity oraz wyrównanie w pionie i w poziome. W przypadku gdy w raporcie zawartość informacji czyli ilość stron i wielkość poszczególnych obszarów nie jest z góry określona: ●Nie ma potrzeby wstawiania sztywnego podziału na strony, a sposób numerowania stron powinien być zdefiniowany. ●Wielkość poszczególnych pól w raporcie może być dynamiczna. ●W przypadku zamieszczania danych w tabelach: ●W opcjach tabel w zależności od długości informacji w poszczególnych komórkach parametr Automatycznie dopasuj rozmiar do zawartości, powinien być zaznaczony – gdy długość tekstu nie jest ograniczona i wielkość pola powinna dostosowywać się do jego zawartości, odznaczony – jeżeli długość tekstu jest z góry określona. ●Wysokość wiersza powinna być określona i wybrany parametr Co najmniej. ●Rozmiar tabeli i szerokość kolumn, podobnie jak przy stałej liczbie stron powinna być określona. Pozwoli to na zachowanie odpowiednich długości wierszy i szerokości (rozmieszczenia) poszczególnych pól w szablonie. ●Zaleca się sformatowanie sposobów wprowadzania tekstów w polach, w których będą wstawiane dane, w tym akapity oraz wyrównanie w pionie i w poziome.
|
Przykładowe szablony z nazwami danychZmienne tabeli (model drzewiasty) [teczki]«BeginGroup:teczki» TYTUL_NAZWISKO: «TYTUL_NAZWISKO» NREWID: «NREWID» NAZWISKO: «NAZWISKO» IMIE: «IMIE» NAZWISKO_IMIE: «NAZWISKO_IMIE» TYTUL: «TYTUL» STANOWISKO: «STANOWISKO» NAZWISKO_IMIONA: «NAZWISKO_IMIONA» DATA_UR: «DATA_UR» MIEJ_UR: «MIEJ_UR» PESEL: «PESEL» IMIONA_RODZ: «IMIONA_RODZ» NAZWISKO_ROD: «NAZWISKO_ROD» ADR_KODP: «ADR_KODP» ADR_MIEJ: «ADR_MIEJ» ADR_ULICA: «ADR_ULICA» ADR_NR_DOMU: «ADR_NR_DOMU» ADR_NR_MIESZK: «ADR_NR_MIESZK» ADR_GMINA: «ADR_GMINA» ADR_WOJ: «ADR_WOJ» ADR_TEL: «ADR_TEL» DZIS: «DZIS» ADR_MAIL: «ADR_MAIL» DATA_PO: «DATA_PO» DATA_KO: «DATA_KO» DATA_UM: «DATA_UM» «EndGroup:teczki»
Zmienne tabeli (model płaski)[teczki]«TableStart::teczki» TYTUL_NAZWISKO: «TYTUL_NAZWISKO» NREWID: «NREWID» NAZWISKO: «NAZWISKO» IMIE: «IMIE» NAZWISKO_IMIE: «NAZWISKO_IMIE» TYTUL: «TYTUL» STANOWISKO: «STANOWISKO» NAZWISKO_IMIONA: «NAZWISKO_IMIONA» DATA_UR: «DATA_UR» MIEJ_UR: «MIEJ_UR» PESEL: «PESEL» IMIONA_RODZ: «IMIONA_RODZ» NAZWISKO_ROD: «NAZWISKO_ROD» ADR_KODP: «ADR_KODP» ADR_MIEJ: «ADR_MIEJ» ADR_ULICA: «ADR_ULICA» ADR_NR_DOMU: «ADR_NR_DOMU» ADR_NR_MIESZK: «ADR_NR_MIESZK» ADR_GMINA: «ADR_GMINA» ADR_WOJ: «ADR_WOJ» ADR_TEL: «ADR_TEL» DZIS: «DZIS» ADR_MAIL: «ADR_MAIL» DATA_PO: «DATA_PO» DATA_KO: «DATA_KO» DATA_UM: «DATA_UM» «TableEnd:teczki» |
Przykładowe proceduryProcedura iteracyjnaUSE [msk_WARSZTAT] GO /****** Object: StoredProcedure [dbo].[up_eor_warsztaty_iter] Script Date: 2019-04-03 16:50:09 ******/ SET ANSI_NULLS ON GO
SET QUOTED_IDENTIFIER ON GO
CREATE PROCEDURE [dbo].[up_eor_warsztaty_iter] @filtry_xml xml = NULL AS BEGIN DECLARE @error_code int ,@errmess_type int --0 - nagłówek, 1 - treść ,@node varchar(max) ,@errmess varchar(256) ,@zrodlo_listy_celow int ,@tryb_druku int ,@spid int ,@grupa_idn varchar (50) ,@pracownik_nrewid int ,@data datetime ,@wyk_dla_listy int -- 0 dla podświetlonego pracownika, 1 - dla aktualnej listy osób wybranych
,@value varchar(max) ,@attribute_value varchar(max)
create table #sys_rodo_raport_result ( id numeric(10,0) identity (1,1) ,iteracja_idm varchar(20) ,iteracja_nazwa varchar(61) ,iteracja_dane xml ,osoba_id numeric(10,0) ) --SELECT --@pracownik_nrewid = T.c.value('pracownik_nrewid[1]', 'int') --FROM @filtry_xml.nodes('/umowa_raport') T(c) exec sys_xml_arg_values @xml=@filtry_xml,@node ='obk_wartosc2' ,@value=@value out,@attribute ='Nazwa',@attribute_value=@attribute_value out select @pracownik_nrewid = dbo.sys_uf_string2int (@value ,NULL)
--SELECT --@wyk_dla_listy = T.c.value('wyk_dla_listy[1]', 'int') --FROM @filtry_xml.nodes('/umowa_raport') T(c)
exec sys_xml_arg_values @xml=@filtry_xml,@node ='bl_wartosc1' ,@value=@value out,@attribute ='Nazwa',@attribute_value=@attribute_value out select @wyk_dla_listy = dbo.sys_uf_string2int (@value ,NULL)
exec sys_xml_arg_values @xml=@filtry_xml,@node ='data_wartosc3' ,@value=@value out,@attribute ='Nazwa',@attribute_value=@attribute_value out select @value = left(@value,10) select @data = isnull(cast(@value as datetime),dbo.sys_uf_castdate(getdate()))
insert into #sys_rodo_raport_result ( iteracja_idm ,iteracja_nazwa ,iteracja_dane ) select iteracja_idm =cast(kp.pracownik_nrewid as varchar (6)) ,iteracja_nazwa =left(rtrim(kp.nazwisko) + ' ' + rtrim(kp.imie), 50) ,iteracja_dane =(select kp.pracownik_id from pusta for xml path('teczki'),root('Iteracja')) from kp_pracownik kp join v_kp_dn_stanowisko vst on kp.pracownik_id=vst.pracownik_id where @data between vst.data_po_n and vst.data_ko_n
select id, iteracja_idm ,left(iteracja_nazwa,50) iteracja_nazwa , iteracja_dane = ISNULL(iteracja_dane, ( SELECT pracownik_id = cast (null as numeric(10,0)) FROM pusta for xml path('teczki'),root('Iteracja')--,type )) from #sys_rodo_raport_result order by id END GO
Procedura raportowaUSE [msk_WARSZTAT] GO /****** Object: StoredProcedure [dbo].[up_eor_warsztaty_rapo] Script Date: 2019-04-03 16:50:52 ******/ SET ANSI_NULLS ON GO
SET QUOTED_IDENTIFIER ON GO
CREATE PROCEDURE [dbo].[up_eor_warsztaty_rapo] @filtry_xml xml = NULL ,@iteracja_dane xml = null AS BEGIN DECLARE @error_code int ,@errmess_type int --0 - nagłówek, 1 - treść ,@node varchar(max) ,@errmess varchar(256) ,@osoba_id numeric(10,0) ,@pracownik_nrewid int ,@data datetime ,@value varchar(max) ,@attribute_value varchar(max) ,@pracownik_id T_id --SELECT --@pracownik_nrewid = T.c.value('pracownik_nrewid[1]', 'int') --FROM @iteracja_dane.nodes('/Iteracja/Umowy') T(c) exec sys_xml_arg_values @xml=@filtry_xml,@node ='obk_wartosc2' ,@value=@value out,@attribute ='Nazwa',@attribute_value=@attribute_value out select @pracownik_nrewid = dbo.sys_uf_string2int (@value ,NULL)
exec sys_xml_arg_values @xml=@filtry_xml,@node ='data_wartosc3' ,@value=@value out,@attribute ='Nazwa',@attribute_value=@attribute_value out select @value = left(@value,10) select @data = isnull(cast(@value as datetime),dbo.sys_uf_castdate(getdate())) SELECT @pracownik_id = T.c.value('pracownik_id[1]', 'numeric(10)') FROM @iteracja_dane.nodes('/Iteracja/teczki') T(c)
create table #sys_rodo_raport_result ( id numeric(10,0) identity (1,1) ,filtry_xml xml ,iteracja_dane xml ,raport_dane xml ,root_table varchar(128) collate database_default ) --SELECT --T.c.value('dana_pracownika_id[1]', 'numeric(10,0)') AS id_obiektu --FROM @filtry_xml.nodes('/kp_lpr_d_edit_teczka_grupa_prac/kp_lpr_d_edit_teczka_grupa_prac_row') T(c)) insert into #sys_rodo_raport_result (filtry_xml, iteracja_dane, root_table, raport_dane ) SELECT @filtry_xml, @iteracja_dane, 'teczki', ( select case when UPPER(TYTUL) like '%PROF%' then ISNULL(ltrim(rtrim(TYTUL)),'') + ' ' + NAZWISKO_IMIE when UPPER(STANOWISKO) like '%PROF%' then NAZWISKO_IMIE + ',' + 'Prof.PRz' else ISNULL(ltrim(rtrim(TYTUL)),'') + ' ' + NAZWISKO_IMIE end TYTUL_NAZWISKO, * FROM ( select TOP 1 kp.pracownik_nrewid NREWID ,kp.nazwisko NAZWISKO, kp.imie IMIE , ltrim(rtrim(kp.nazwisko)) +' '+ ltrim(rtrim(kp.imie)) NAZWISKO_IMIE
,(select '') TYTUL
,(select top 1 lower(v.kod_opis) from v_kp_dn_stanowisko v where v.data_po <= ISNULL(um.data_ko,getdate()) and v.pracownik_id = kp.pracownik_id order by v.data_po desc) STANOWISKO
, ltrim(rtrim(kp.nazwisko)) +' '+ ltrim(rtrim(kp.imie))+' '+ (select TOP 1 ltrim(rtrim(wartosc_oksp)) from v_kp_dm_ImieDrugie v where kp.pracownik_id = v.pracownik_id ) NAZWISKO_IMIONA
,(select top 1 ISNULL(convert(varchar(10),v.wartosc_d,105),'') from v_kp_dm_DatUrPrac v where v.pracownik_id = kp.pracownik_id) DATA_UR
,(select TOP 1 wartosc_oksp from v_kp_dm_MceUrodz v where kp.pracownik_id = v.pracownik_id ) MIEJ_UR
,(select TOP 1 wartosc_oksp from v_kp_dm_PeselPrac v where kp.pracownik_id = v.pracownik_id ) PESEL
,(select TOP 1 ltrim(rtrim(wartosc_oksp)) from v_kp_dm_ImieOjca v where kp.pracownik_id = v.pracownik_id ) +', '+ (select TOP 1 ltrim(rtrim(wartosc_oksp)) from v_kp_dm_ImieMatki v where kp.pracownik_id = v.pracownik_id ) IMIONA_RODZ
,(select TOP 1 wartosc_oksp from v_kp_dm_NazwRod v where kp.pracownik_id = v.pracownik_id ) NAZWISKO_ROD
,(SELECT ISNULL(vkp.wartosc_oksp, '') from v_kp_dn_adres_bzk kdp1 left outer join v_kp_dn_adr_kod_poczt__bzk vkp on vkp.p0 = kdp1.p0 where kdp1.wartosc_oksp = 1 and kdp1.pracownik_id = kp.pracownik_id and kdp1.data_po<=getdate() and kdp1.data_ko>=getdate() ) ADR_KODP
,(SELECT ISNULL(vkp.wartosc_oksp, '') from v_kp_dn_adres_bzk kdp1 left outer join v_kp_dn_adr_miejscowosc vkp on vkp.p0 = kdp1.p0 where kdp1.wartosc_oksp = 1 and kdp1.pracownik_id = kp.pracownik_id and kdp1.data_po<=getdate() and kdp1.data_ko>=getdate() ) ADR_MIEJ
,(SELECT ISNULL(vkp.wartosc_oksp, '') from v_kp_dn_adres_bzk kdp1 left outer join v_kp_dn_adr_ulica vkp on vkp.p0 = kdp1.p0 where kdp1.wartosc_oksp = 1 and kdp1.pracownik_id = kp.pracownik_id and kdp1.data_po<=getdate() and kdp1.data_ko>=getdate() ) ADR_ULICA
,(SELECT ISNULL(vkp.wartosc_oksp, '') from v_kp_dn_adres_bzk kdp1 left outer join v_kp_dn_adr_nr_domu_bzk vkp on vkp.p0 = kdp1.p0 where kdp1.wartosc_oksp = 1 and kdp1.pracownik_id = kp.pracownik_id and kdp1.data_po<=getdate() and kdp1.data_ko>=getdate() ) ADR_NR_DOMU
,(SELECT ISNULL(vkp.wartosc_oksp, '') from v_kp_dn_adres_bzk kdp1 left outer join v_kp_dn_adr_nr_mieszk__bzk vkp on vkp.p0 = kdp1.p0 where kdp1.wartosc_oksp = 1 and kdp1.pracownik_id = kp.pracownik_id and kdp1.data_po<=getdate() and kdp1.data_ko>=getdate() ) ADR_NR_MIESZK
,(SELECT ISNULL(vkp.wartosc_oksp, '') from v_kp_dn_adres_bzk kdp1 left outer join v_kp_dn_adr_gmina_dziel_bzk vkp on vkp.p0 = kdp1.p0 where kdp1.wartosc_oksp = 1 and kdp1.pracownik_id = kp.pracownik_id and kdp1.data_po<=getdate() and kdp1.data_ko>=getdate() ) ADR_GMINA
,(SELECT ISNULL(vkp.kod_opis_rozsz, '') from v_kp_dn_adres_bzk kdp1 left outer join v_kp_dn_adr_wojewodztwo vkp on vkp.p0 = kdp1.p0 where kdp1.wartosc_oksp = 1 and kdp1.pracownik_id = kp.pracownik_id and kdp1.data_po<=getdate() and kdp1.data_ko>=getdate() ) ADR_WOJ
,(SELECT ISNULL(vkp.wartosc_oksp, '') from v_kp_dn_adres_bzk kdp1 left outer join v_kp_dn_adr_nr_telefonu vkp on vkp.p0 = kdp1.p0 where kdp1.wartosc_oksp = 1 and kdp1.pracownik_id = kp.pracownik_id and kdp1.data_po<=getdate() and kdp1.data_ko>=getdate() ) ADR_TEL
,convert(varchar(10),getdate(),105) DZIS
,(SELECT kod_poczt = substring(ISNULL(vkp.wartosc_oksp, ''),1,10) from v_kp_dn_adres_bzk kdp1 left outer join v_kp_dn_poczta_elektron vkp on vkp.p0 = kdp1.p0 where kdp1.wartosc_oksp = 1 and kdp1.pracownik_id = kp.pracownik_id and kdp1.data_po<=getdate() and kdp1.data_ko>=getdate() ) ADR_MAIL
, (select top 1 nazwa from sys_urzad where kod_urzedu in (select top 1 v.wartosc_oksp from v_kp_dm_US v where v.pracownik_id = kp.pracownik_id order by v.data_po desc)) US_NAZWA
, (select top 1 kodpoczt from sys_urzad where kod_urzedu in (select top 1 v.wartosc_oksp from v_kp_dm_US v where v.pracownik_id = kp.pracownik_id order by v.data_po desc)) US_KODP
, (select top 1 miasto from sys_urzad where kod_urzedu in (select top 1 v.wartosc_oksp from v_kp_dm_US v where v.pracownik_id = kp.pracownik_id order by v.data_po desc)) US_MIASTO
,convert(varchar(10),um.data_po,105) DATA_PO ,case when year(um.data_ko)<3000 then 'do '+ convert(varchar(10),um.data_ko,105)+ ' r.' else '' end DATA_KO
,(select top 1 ISNULL(convert(varchar(10),v.wartosc_d,105),'') from v_kp_dana_kadrowa_5001 v where v.p0=um.p0 and v.pracownik_id = kp.pracownik_id ) DATA_UM
from kp_pracownik kp left outer join v_kp_dana_kadrowa_470 um on kp.pracownik_id = um.pracownik_id where @pracownik_id = um.pracownik_id order by um.data_po desc ) T FOR XML PATH(''),root('teczki')) select id,filtry_xml ,iteracja_dane ,raport_dane, root_table from #sys_rodo_raport_result order by id END GO |