MGAMA - procedūros

Aprašant būsenas naudojamos įvairios procedūros. Toliau pateikiami detalesni jų paaiškinimai:

Pavadinimas Aprašymas
RGI_MGAMA_PERS_AT Personalo atostogų prašymų tvirtinimas
RGI_MGAMA_PERS_KOMAND Komandiruočių prašymų tvirtinimas
PERS_DOC Komandiruočių įsakymų formavimas (Fox-inė programa)
RGI_MGAMA_PERS_TV Personalo dokumentų tvirtinimas
RGI_MGAMA_DVS_TV DVS dokumentų tvirtinimas
RGI_MGAMA_PIRK_TV Pirkimo dokumentų tvirtinimas
RGI_MGAMA_PERS_PRI Priėmimo operacijos tvirtinimas
VD_TVIRT Vidinės apskaitos dokumentų tvirtinimas (Fox-inė programa)
Pavadinimas Aprašymas
RGI_MGAMA_PIRK_TV_CUSTOM Pirkimo dokumentų tvirtinimas, atsižvelgiant į dokumento sumą
PIRK_BUS_CUSTOM Būsenos parinkimas (Fox-inė programa)
RGI_MGAMA_CREATE_ATOSTOG_PRASYMAS_CUSTOM Perima valdymą teikiant atostogų prašymą: tikrinama ar nurodytas pavaduojantis asmuo, ir atostogų tipas
RGI_MGAMA_GET_PERS_KAL_INFO_CUSTOM Kalendoriaus įvykio detalizacija: rodant personalo operacijos informaciją, papildomai rodomas vadovo vardas, pavardė, prisegti dokumentai, tvirtinimo informacija
RGI_MGAMA_GET_PERS_KAL_CUSTOM_PRIES Procedūra prieš kalendoriaus standartinių duomenų suformavimą: visų darbuotojų informacijos rodymas kalendoriuje
RGI_MGAMA_GET_PERS_KAL_CUSTOM_PO Procedūra po kalendoriaus standartinių duomenų suformavimo: kalendoriuje rodoma mažiau informacijos, nerodomas padalinys ir pareigos
RGI_MGAMA_GET_PERS_KAL_CUSTOM_PO Procedūra po kalendoriaus standartinių duomenų suformavimo: kalendoriuje rodoma informacija iš DVS operacijų (Nuotolinis darbas).
MGAMA_CUSTOM_PARD XML formavimo procedūra: pardavimo rezervavimo tvirtinimo procesas

Šabloninės procedūros

RGI_MGAMA_PERS_AT - Personalo atostogų prašymų tvirtinimas

Parametrai:

Parametras Reikšmė Naudojimas
@inf parametras nustato kas bus informuojamas apie būsenos pasikeitimą:
1 - informuoti užsakovą (atostogų operacijai priskirtą personalo kodą) ,
2 - informuoti visus operacijose tvirtinime dalyvavusius asmenis
@inf=1
@vad papildomai suformuoti būsenos tvirtinimą etato padalinyje aprašytam vadovui @vad=1
@rusis tvirtinant būseną pakeisti personalo operacijos rūšį:
1-dokumentas, 2-prašymas
@rusis=1
@atsaukti leisti atšaukti būseną pačiam prašymą pateikusiam darbuotojui @atsaukti=1
@istorija prie tvirtinimo operacijos rodyti istoriją:
1 - rodyti (pagal nutylėjimą), 0 - nerodyti
@istorija=1
@at_fil filtravimo sąlyga formuojant tuo pačiu metu atostogaujančius asmenis @at_fil='kodas_is=K16_KODAS_IS' -- Tik dirbantys tame pačiame padalinyje
@at_fil='kodas_0a=K16_KODAS_0A' -- Tik užimantys tą patį etato kodą
@at_fil='kodas_5a=K16_KODAS_5A' -- Tik tiems kam atitinka specialybė
@at_fil='vadovas=K12_KODAS_4A' -- Tik tiems, kam nurodytas tas pats tiesioginis vadovas
@at_fil='1=0' -- Visai neformuoti kartu atostogaujančių asmenų sąrašo
@at_fil='kodas_is=K16_KODAS_IS and kodas_0a=K16_KODAS_0A and kodas_5a=K16_KODAS_5A' -- Tik dirbantys tame pačiame etate, specialybėje ir padalinyje
@vad_pap nurodžius šį parametrą tvirtinimą atlieka papildomas vadovas Papildomo vadovo įvedimui sąraše "Etatai padalinyje" sukuriamas papildomas laukas. Šiame parametre nurodomas to papildomo lauko numeris. Pvz., @vad_pap=1
@vad_pap_b nurodoma į kurią būseną peršokti, kai papildomas vadovas nėra nurodytas.
Nenurodžius šio parametro, bus peršokama į sekančią būseną.
Pvz., @vad_pap_b=3
@auto_b nurodoma į kurią būseną peršokti, kai prašymą pateikia tas pats žmogus, kuris yra ir tvirtintojas Pvz., @auto_b=14
@data_op nurodžius šį parametrą, po patvirtinimo bus pakeista operacijos data
0-nekeičiame, 1-būsenos tvirtinimo diena, 2-periodo pradžia.
@data_op=2
@auto_tv parametre nurodomas būsenos kodas, į kurią bus automatiškai peršokama, jei operacijos tvirtinimą atlieka asmuo, kuris kartą jau patvirtino operaciją @auto_tv=5
@vart_sar nurodžius parametrą, tvirtinimą atlieka vartotojai iš nurodyto sąrašo priskirti tvirtinamai operacijai.
Sąrašai sudaromi funkcija mgama_vart_forma().
@vart_sar='MG_K42_OD_TV'
@inf_sar nurodžius parametrą, apie pasikeitusią būseną bus informuoti vartotojai iš nurodyto sąrašo priskirti tvirtinamai operacijai.
Sąrašai sudaromi funkcija mgama_vart_forma().
@inf_sar='MG_K42_OD_IN'
@pad_pap nurodžius parametrą, tvirtinimą atlieka padalinių vadovai. Padalinių sąraše sukuriamas papildomas laukas (per "akinukus"), kuriame iš vartotojų sąrašo parenkamas padalinio vadovas.
Šiame parametre nurodomas to papildomo lauko numeris.
@pad_pap=12
@bukle atmetimo atveju galima pakeisti operacijos būklę į "Anuliuota", kurios nėra rodomos kalendoriuje @bukle=1
@inf_vart nurodomas vartotojas ar vartotojų grupė, kuriuos reikia informuoti apie pasikeitusią būseną @inf_vart='VADOVAI'

Papildomo vadovo įvedimui sąraše "Etatai padalinyje" sukuriamas papildomas laukas.

Servisas ->Personalas -> Etatai padalinyje

mgamat_23

Procedūros naudojimo pavyzdžiai aprašyti:

RGI_MGAMA_PERS_KOMAND - Komandiruočių prašymų tvirtinimas

Parametrai:

Parametras Reikšmė Naudojimas
@vart formuoti tvirtinimą darbuotojui @vart=1
@vad formuoti tvirtinimą vadovui, priskirtam pagal operacijos etatą padalinyje @vad=1
@rusis tvirtinant būseną pakeisti personalo operacijos rūšį:
1-dokumentas, 2-prašymas
@rusis=1
@atsaukti leisti atšaukti būseną pačiam prašymą pateikusiam darbuotojui @atsaukti=1
@inf parametras nustato kas bus informuojamas apie būsenos pasikeitimą:
1 - informuoti užsakovą (komandiruočių operacijai priskirtą personalo kodą) ,
2 - informuoti visus operacijose tvirtinime dalyvavusius asmenis
@inf=1
@istorija prie tvirtinimo operacijos rodyti istoriją:
1 - rodyti (pagal nutylėjimą), 0 - nerodyti
@istorija=1
@data_op nurodžius šį parametrą, po patvirtinimo bus pakeista operacijos data
0-nekeičiame, 1-būsenos tvirtinimo diena, 2-periodo pradžia.
@data_op=2
@auto_tv parametre nurodomas būsenos kodas, į kurią bus automatiškai peršokama, jei operacijos tvirtinimą atlieka asmuo, kuris kartą jau patvirtino operaciją @auto_tv=5
@pad_pap nurodžius parametrą, tvirtinimą atlieka padalinių vadovai. Padalinių sąraše sukuriamas papildomas laukas (per "akinukus"), kuriame iš vartotojų sąrašo parenkamas padalinio vadovas.
Šiame parametre nurodomas to papildomo lauko numeris.
@pad_pap=12
@auto_b nurodoma į kurią būseną peršokti, kai prašymą pateikia tas pats žmogus, kuris yra ir tvirtintojas Pvz., @auto_b=14
@vart_sar nurodžius parametrą, tvirtinimą atlieka vartotojai iš nurodyto sąrašo priskirti tvirtinamai operacijai.
Sąrašai sudaromi funkcija mgama_vart_forma().
@vart_sar='MG_K42_OD_TV'
@inf_sar nurodžius parametrą, apie pasikeitusią būseną bus informuoti vartotojai iš nurodyto sąrašo priskirti tvirtinamai operacijai.
Sąrašai sudaromi funkcija mgama_vart_forma().
@inf_sar='MG_K42_OD_IN'
@bukle atmetimo atveju galima pakeisti operacijos būklę į "Anuliuota", kurios nėra rodomos kalendoriuje @bukle=1
@inf_vart nurodomas vartotojas ar vartotojų grupė, kuriuos reikia informuoti apie pasikeitusią būseną @inf_vart='VADOVAI'

Procedūros naudojimo pavyzdys aprašytas:

PERS_DOC(_thisform, lcWordSabl, llDocToPDF) - Komandiruočių įsakymų formavimas

Fox-inė programa, skirta PDF dokumentų formavimui pagal pateiktą Word šabloną

Parametrai:

Parametras Reikšmė
thisform perdavus vykdoma SQL procedūra (privaloma)
lcWordSabl Word šablono failo vardas
llDocToPDF Ar konvertuoti DOCX į PDF? (pagal nutylėjimą paliekamas originalus Word dokumentas)

Programos naudojimo pavyzdys aprašytas Komadiruočių įsakymų formavimas ir tvirtinimas.

RGI_MGAMA_PERS_TV - Personalo dokumentų tvirtinimas

Parametrai:

Parametras Reikšmė Naudojimas
@vart formuoti tvirtinimą darbuotojui @vart=1
@vad formuoti tvirtinimą vadovui, priskirtam pagal operacijos etatą padalinyje @vad=1
@rusis tvirtinant būseną pakeisti personalo operacijos rūšį:
1-dokumentas, 2-prašymas
@rusis=1
@istorija prie tvirtinimo operacijos rodyti istoriją:
1 - rodyti (pagal nutylėjimą), 0 - nerodyti
@istorija=1
@inf parametras nustato kas bus informuojamas apie būsenos pasikeitimą:
1 - informuoti užsakovą (operacijai priskirtą personalo kodą) ,
2 - informuoti visus operacijose tvirtinime dalyvavusius asmenis
@inf=1
@auto_tv parametre nurodomas būsenos kodas, į kurią bus automatiškai peršokama, jei operacijos tvirtinimą atlieka asmuo, kuris kartą jau patvirtino operaciją @auto_tv=5
@pad_pap nurodžius parametrą, tvirtinimą atlieka padalinių vadovai. Padalinių sąraše sukuriamas papildomas laukas (per "akinukus"), kuriame iš vartotojų sąrašo parenkamas padalinio vadovas.
Šiame parametre nurodomas to papildomo lauko numeris.
@pad_pap=12
@auto_b nurodoma į kurią būseną peršokti, kai prašymą pateikia tas pats žmogus, kuris yra ir tvirtintojas Pvz., @auto_b=14
@vart_sar nurodžius parametrą, tvirtinimą atlieka vartotojai iš nurodyto sąrašo priskirti tvirtinamai operacijai.
Sąrašai sudaromi funkcija mgama_vart_forma().
@vart_sar='MG_K42_OD_TV'
@inf_sar nurodžius parametrą, apie pasikeitusią būseną bus informuoti vartotojai iš nurodyto sąrašo priskirti tvirtinamai operacijai.
Sąrašai sudaromi funkcija mgama_vart_forma().
@inf_sar='MG_K42_OD_IN'
@bukle atmetimo atveju galima pakeisti operacijos būklę į "Anuliuota", kurios nėra rodomos kalendoriuje @bukle=1
@inf_vart nurodomas vartotojas ar vartotojų grupė, kuriuos reikia informuoti apie pasikeitusią būseną @inf_vart='VADOVAI'

Procedūra gali būti naudojama bet kokių personalo operacijų tvirtinimui.

Procedūros naudojimo pavyzdys aprašytas:

RGI_MGAMA_DVS_TV - DVS dokumentų tvirtinimas

Parametrai:

Parametras Reikšmė Naudojimas
@vart leidimas savininkui - tvirtinimo operacija suformuojama operacijoje nurodytam vartotojui @vart=1
@rusis leidimai iš rūšies aprašymo - tvirtinimo operacijos suformuojamos visiems vartotojams, turintiems teisę dirbti su tos rūšies dokumentais (naudoti nerekomenduojame) @rusis=1
@visi leidimai visiems sistemos vartotojams - tvirtinimo operacijos suformuojamos visiems SQL vartotojams @visi=1
@istorija prie tvirtinimo operacijos rodyti istoriją:
1 - rodyti , 0 - nerodyti (pagal nutylėjimą)
@istorija=0
@aktyvi operacijos tvirtinimas niekada nesibaigs, t.y. bus sukuriama tvirtinimo operacija neegzistuojančiam vartotojui sutartiniu žymėjimu ~. @aktyvi=1
@inf parametras nustato kas bus informuojamas apie būsenos pasikeitimą:
1 - informuoti operacijos savininką ,
2 - informuoti visus operacijose tvirtinime dalyvavusius asmenis
@inf=1
@atsaukti leisti atšaukti būseną pačiam prašymą pateikusiam darbuotojui @atsaukti=1
@vad papildomai suformuoti būsenos tvirtinimą etato padalinyje aprašytam vadovui @vad=1
@vad_pap nurodžius šį parametrą tvirtinimą atlieka papildomas vadovas Šiame parametre nurodomas etato padalinyje esančio papildomo lauko numeris, kuriame yra nurodytas papildomas vadovas. Pvz., @vad_pap=5
@vad_pap_b nurodoma, į kurią būseną peršokti, kai papildomas vadovas nėra nurodytas.
Nenurodžius šio parametro bus peršokama į sekančią būseną.
Pvz., @vad_pap_b=3
@pad_pap nurodžius parametrą, tvirtinimą atlieka padalinių vadovai. Padalinių sąraše sukuriamas papildomas laukas (per "akinukus"), kuriame iš vartotojų sąrašo parenkamas padalinio vadovas.
Šiame parametre nurodomas to papildomo lauko numeris.
@pad_pap=12
@forma Pagal nutylėjimą parametro reikšmė lygi 1. Tvirtinimui užpildytos formos laukų informacija pateikiama išvardinant laukus su parinktomis reikšmėmis.
Jeigu reikšmė lygi 0, sisteminių formų atveju tvirtinime informacija rodoma aprašymo lauke.
@forma=1
@auto_tv parametre nurodomas būsenos kodas, į kurią bus automatiškai peršokama, jei operacijos tvirtinimą atlieka asmuo, kuris kartą jau patvirtino operaciją @auto_tv=5
@bukle nurodžius šį parametrą, po tvirtinimo bus pakeista DVS operacijos būklė:
1- Aktyvi, 2- Archyvuota, 3- Anuliuota
@bukle=1
@action_modul nurodžius šį parametrą, po patvirtinimo bus sukuriama atitinkama operacija.
Galimos reikšmės:
- nurodžius @action_modul='--' , atliekamas veiksmas, kuris aprašytas pačioje formoje,
- nurodžius @action_modul='6A', bus suformuota personalo operacija.
- nurodžius @action_modul='4A', bus pakoreguota personalo kortelė.
Parametras naudojamas tik per MGAMA Dokumentus vykdomose DVS operacijose.
@action_modul='--'
@auto_b nurodoma į kurią būseną peršokti, kai prašymą pateikia tas pats žmogus, kuris yra ir tvirtintojas Pvz., @auto_b=14
@vart_sar nurodžius parametrą, tvirtinimą atlieka vartotojai iš nurodyto sąrašo priskirti tvirtinamai operacijai.
Sąrašai sudaromi funkcija mgama_vart_forma().
@vart_sar='MG_K42_OD_TV'
@inf_sar nurodžius parametrą, apie pasikeitusią būseną bus informuoti vartotojai iš nurodyto sąrašo priskirti tvirtinamai operacijai.
Sąrašai sudaromi funkcija mgama_vart_forma().
@inf_sar='MG_K42_OD_IN'
@inf_vart nurodomas vartotojas ar vartotojų grupė, kuriuos reikia informuoti apie pasikeitusią būseną @inf_vart='VADOVAI'
@inf_pers apie pasikeitusią būseną informuojamas vartotojas, atitinkantis DVS operacijoje nurodytą personalo kodą @inf_pers=1
@vart_pers patvirtinti turi vartotojas, atitinkantis DVS operacijoje nurodytą personalo kodą @vart_pers=1
@auto_galioja nurodomas terminas dienomis, kada reikia automatiškai tvirtinti būseną atsižvelgiant į galiojimo terminą (dienų skaičius iki galiojimo pabaigos) @auto_galioja=30
@pers_pgr_b būsenoje, kurioje nurodytas šis parametras, gali būti tik viena aktyvi operacija pagal personalo kodą ir DVS rūšį. Parametre nurodoma būsena į kurią pakeisti visas kitas aktyvias operacijas. @pers_pgr_b=98

Procedūros naudojimo pavyzdžiai aprašyti:

RGI_MGAMA_PIRK_TV - Pirkimo dokumentų tvirtinimas

Parametrai:

Parametras Reikšmė Naudojimas
@inf parametras nustato kas bus informuojamas apie būsenos pasikeitimą:
1 - informuoti operacijos savininką (vartotoją, kuris sukūrė operaciją) ,
2 - informuoti visus operacijose tvirtinime dalyvavusius asmenis
@inf=1
@istorija prie tvirtinimo operacijos rodyti istoriją:
1 - rodyti (pagal nutylėjimą), 0 - nerodyti
@istorija=1
@pad_pap nurodžius parametrą, tvirtinimą atlieka padalinių vadovai.
Padalinių sąraše sukuriamas papildomas laukas (per "akinukus"), kuriame iš vartotojų sąrašo parenkamas padalinio vadovas.
Šiame parametre nurodomas to papildomo lauko numeris.
@pad_pap=12
@suPvm nurodo ar tvirtinimo informacijoje rodoma suma yra su PVM, ar be PVM @suPvm=1
@det nurodo ar tvirtinimui pateikiama detali informacija ar tik bendra dokumento suma @det = 1
@dok1 nurodo ar tvirtinimo informacijoje rodomas prie pirkimo prisegtas dokumentas (Rivile GAMA mygtukas "Dokumentas"). @dok1= 1
@dok2 nurodo ar tvirtinimo informacijoje rodomi prie pirkimo prisegti dokumentai (Rivile GAMA mygtukas "Dokumentai"). @dok2= 1
@men Tvirtina menedžeris
nurodžius 1 – bus imamas vartotojas, kuriam vartotojo kortelėje priskirtas menedžerio kodas
@men= 1
@apr_nr Nurodo kelintas aprašymo laukas naudojamas tvirtinimo metu įrašyto komentaro išsaugojimui.
0- bus pildomas eilės tvarka sekantis ne tuščias. Nenurodžius - nepildomas.
@apr_nr= 3
@auto_tv parametre nurodomas būsenos kodas, į kurią bus automatiškai peršokama, jei operacijos tvirtinimą atlieka asmuo, kuris kartą jau patvirtino operaciją @auto_tv=5
@vart_sar nurodžius parametrą, tvirtinimą atlieka vartotojai iš nurodyto sąrašo priskirti tvirtinamai operacijai.
Sąrašai sudaromi funkcija mgama_vart_forma().
@vart_sar='MG_K42_OD_TV'
@inf_sar nurodžius parametrą, apie pasikeitusią būseną bus informuoti vartotojai iš nurodyto sąrašo priskirti tvirtinamai operacijai.
Sąrašai sudaromi funkcija mgama_vart_forma().
@inf_sar='MG_K42_OD_IN'
@inf_vart nurodomas vartotojas ar vartotojų grupė, kuriuos reikia informuoti apie pasikeitusią būseną @inf_vart='VADOVAI'

Menedžerio priskyrimas vartotojo kortelėje:

mgamavid_04

Procedūros naudojimo pavyzdžiai aprašyti:

RGI_MGAMA_PERS_PRI - Priėmimo operacijos tvirtinimas

Parametrai:

Parametras Reikšmė Naudojimas
@pastaba_lauke galima nurodyti į kokį personalo kortelės lauką įrašyti tvirtinimo metu nurodytą pastabą. @pastaba_lauke=''
@auto_tv parametre nurodomas būsenos kodas, į kurią bus automatiškai peršokama, jei operacijos tvirtinimą atlieka asmuo, kuris kartą jau patvirtino operaciją @auto_tv=5
@pad_pap nurodžius parametrą, tvirtinimą atlieka padalinių vadovai. Padalinių sąraše sukuriamas papildomas laukas (per "akinukus"), kuriame iš vartotojų sąrašo parenkamas padalinio vadovas.
Šiame parametre nurodomas to papildomo lauko numeris.
@pad_pap=12
@vart_sar nurodžius parametrą, tvirtinimą atlieka vartotojai iš nurodyto sąrašo priskirti tvirtinamai operacijai.
Sąrašai sudaromi funkcija mgama_vart_forma().
@vart_sar='MG_K42_OD_TV'
@inf_sar nurodžius parametrą, apie pasikeitusią būseną bus informuoti vartotojai iš nurodyto sąrašo priskirti tvirtinamai operacijai.
Sąrašai sudaromi funkcija mgama_vart_forma().
@inf_sar='MG_K42_OD_IN'
@bukle atmetimo atveju galima pakeisti operacijos būklę į "Anuliuota", kurios nėra rodomos kalendoriuje @bukle=1

Procedūros naudojimo pavyzdys aprašytas Priėmimo į darbą procesas.

Pavyzdyje IT administratorius pastabų lauke įrašo naujam darbuotojui sukurtą el. pašto adresą, ir būsenos tvirtinimo metu šis adresas išsaugomas personalo kortelėje lauke "El. paštas":

RGI_MGAMA_PERS_PRI @pastaba_lauke='K14_E_MAIL'    

Parametre nurodžius kitą personalo kortelės lauką, pastaboje įrašyta reikšmė bus išsaugoma tame nurodytame lauke.
Galimi variantai: K14_KODAS_RS, K14_E_MAIL, K16_APRASYMAS1, K16_APRASYMAS2, ... ,K16_APRASYMAS6, K16_PASTABOS.

VD_TVIRT - Vidinės apskaitos dokumentų tvirtinimas

Pateikiamas Fox-inės programos pavyzdys, kurią galima naudoti, jeigu ji iškviečiama tik iš Rivile GAMA programos. Iš MGAMA aplikacijos gali būti vykdomos tik SQL procedūros.

LPARAMETERS _thisform
IF m.BUSENOS_MODULIS#"VD"
    RETURN .T.
ENDIF
IF m.BUSENOS_PROGRAMA#"I"
    RETURN .T.
ENDIF
PRIVATE pcModul, pcKodas_op, pcKodas_be, pcXml, pcApr1, pcApr2, pcApr3
m.pcModul=m.BUSENOS_MODULIS
m.pcKodas_op=m.BUSENOS_OP_NR
*m.pcKodas_be=m.BUSENOS_KODAS_SENAS
m.pcKodas_be=m.BUSENOS_KODAS_NAUJAS

=f_select("SELECT * FROM dbo.I09_VIH inner join dbo.I10_VID on i09_kodas_vd=i10_kodas_vd where I09_KODAS_VD=?m.pcKodas_op order by i10_eil_nr","I09_tmp")

m.pcApr1=RTRIM(I09_tmp.I09_KODAS_IS2)+" "+ALLTRIM(I09_tmp.I09_A_EIL1)
m.pcApr2="Vidinis "+GETWORDNUM("važtaraštis,užsakymas,pasiūlymas",I09_tmp.I09_TIPAS,",")
m.pcApr3=DTOC(TTOD(I09_tmp.I09_IS_DATA))

m.pcXml=;
"<schema><type>inline</type><key>Padalinys siuntėjas</key><value>"+xml_encode(RTRIM(I09_tmp.I09_KODAS_IS1)+" "+ALLTRIM(I09_tmp.I09_EIL1))+"</value></schema>"+CHR(13)+CHR(10)+;
"<schema><type>inline</type><key>Padalinys gavėjas</key><value>"+xml_encode(RTRIM(I09_tmp.I09_KODAS_IS2)+" "+ALLTRIM(I09_tmp.I09_A_EIL1))+"</value></schema>"+CHR(13)+CHR(10)+;
"<schema><type>inline</type><key>Dokumento data</key><value>"+xml_encode(DTOC(TTOD(I09_tmp.I09_IS_DATA)))+"</value></schema>"+CHR(13)+CHR(10)+;
"<schema><type>inline</type><key>Dokumento Nr.</key><value>"+xml_encode(RTRIM(I09_tmp.I09_DOK_NR))+"</value></schema>"+CHR(13)+CHR(10)+;
"<schema><type>block</type><key>Pastabos</key><value>"+xml_encode(RTRIM(I09_tmp.I09_PAV))+"</value></schema>"+CHR(13)+CHR(10)+;
"<schema><type>space</type></schema>"+CHR(13)+CHR(10)+;
"<schema><type>list</type><key>Produktai</key><data>"+CHR(13)+CHR(10)
SELECT I09_tmp
GO TOP
SCAN
    m.pcXml=m.pcXml+"<schema><type>inline</type><key>"+xml_encode(ALLTRIM(I09_tmp.i10_pav))+"</key><value>"+xml_encode(alltrim(say_lik(I09_tmp.i10_kiekis1,I09_tmp.i10_frakcija1))+" ("+alltrim(I09_tmp.i10_kodas_us1)+")")+"</value></schema>"+CHR(13)+CHR(10)
ENDSCAN
m.pcXml=m.pcXml+"</data></schema>"+CHR(13)+CHR(10)
USE IN I09_tmp

=f_select("update dbo.L21_BUSP set L21_APRASYMAS1=?m.pcApr1,L21_APRASYMAS2=?m.pcApr2,L21_APRASYMAS3=?m.pcApr3,L21_XML=?m.pcXml where L21_KODAS_BE=?m.pcKodas_be and L21_KODAS=?m.pcKodas_op and L21_MODUL=?m.pcModul and L21_PERKELTA=1")

RETURN .T.

Funkcijos naudojimo pavyzdys aprašytas MGAMA - Vidinės apskaitos dokumentų tvirtinimas.

Klientų ("custom") procedūros

Visose klientų ("custom") procedūrose yra privalomi šie parametrai:

Parametras Reikšmė
@modul char(2) operacijos modulis (pvz.: PO)
@op char(12) operacijos numeris (pvz.: 000000000123)
@user char(12) GAMA vartotojo kodas (pvz.: MASTER)
@veiksmas char(1) veiksmas:
I – INIT,
P – patvirtinimas,
A – atmetimas,
O – metodas po būsenos patvirtinimo,
U – kai atidaroma tvirtinimo operacijos forma MGAMA sistemoje,
T – kviečiama atnaujinant leidimus.
@kodas_be char(12) esamos būsenos kodas (pvz.: 000000000001)
@pastaba varchar(150) atšaukimo priežastis (pvz.: Komentaras)

RGI_MGAMA_PIRK_TV_CUSTOM - Pirkimo dokumentų tvirtinimas, atsižvelgiant į dokumento sumą

Esminis pavyzdžio ypatumas – iki tam tikros sumo dokumentas patvirtinamas automatiškai, iki kitos, didesnės sumos, tvirtina padalinio vadovas (menedžeris), o viršijus tą suma, dar turi patvirtinti įmonės vadovas.

Visas kitas funkcionalumas analogiškas procedūrai RGI_MGAMA_PIRK_TV.

Procedūros naudojimo pavyzdys aprašytas: Pirkimo dokumentų tvirtinimo procesas, atsižvelgiantis į dokumento sumą.

CREATE PROCEDURE dbo.RGI_MGAMA_PIRK_TV_CUSTOM
    @modul char(2) = null,          -- operacijos modulis
    @op char(12) = null,            -- operacijos numeris
    @user char(12) = null,          -- vartotojo kodas
    @veiksmas char(1) = null,       -- veiksmas: P-patvirtinti, A-atmesti, I-init
    @kodas_be char(12) = null,      -- esamos būsenos kodas
    @pastaba varchar(150) = null,   -- atšaukimo priežastis
    @inf numeric(1,0)=0,        -- informuoti apie būsenos pasikeitimą (1-užsakovą,2-visus dalyvavusius tvirtinime)
    @men numeric(1,0)=0,            -- tvirtina menedžeris
    @op_tip numeric(2,0)=null,      -- operacijos tipas, kuriam galioja tvirtinimas
    @suma_min numeric(12,2)=null,   -- minimali suma, nuo kurios automatiškai patvirtinti
    @busena numeric(3,0)=null,       -- minimalios sumos tvirtinimo būsena
    @istorija numeric(1,0)=1,   -- rodyti tvirtinimo istoriją kiekvienoje tvirtinimo operacijoje
    @det numeric(1,0) = 0,      -- detalizuoti pirkimo dokumentą
    @pad_pap numeric(4,0) = 0,  -- tvirtina padalinio vadovas, kuris nurodomas padalinio aprašymo akinukuose
    @suPvm numeric(1,0) = 0,    -- sumos su PVM
    @dok1 numeric(1,0) = null,  -- Dokumentas. Pagal nutylėjimą rodoma, nebent yra padalinio vadovas. Galima nurodyti griežtai: 0 - nerodyti, 1 - rodyti
    @dok2 numeric(1,0) = null,  -- Dokumentai. Pagal nutylėjimą rodoma, nebent yra padalinio vadovas. Galima nurodyti griežtai: 0 - nerodyti, 1 - rodyti
    @apr_nr numeric(1,0) = null, -- Kelintas aprašymo laukas naudojamas (0-bus pildomas eilės tvarka sekantis ne tuščias). Nenurodžius - nepildomas
    @auto_tv numeric(4,0)=null      -- į kokią būseną peršokti, kai jau asmuo buvo patvirtinęs operaciją
AS
BEGIN
    -- Patikriname sumą ir jei reikia peršokame į kitą būseną
    if  @veiksmas='P' and @suma_min is not null and @busena is not null and exists(select * from I06_PARH where I06_KODAS_PO=@op and I06_SUMA<@suma_min and I06_OP_TIP=isnull(@op_tip,I06_OP_TIP))
        begin
            select @busena as busena into #tmp_MGAMA_CUSTOM_PIRK_TV
            execute('update #RGI_MGAMA_BUSENA set BUSENOS_NAUJA=busena from #tmp_MGAMA_CUSTOM_PIRK_TV')
        end

    -- Suformuojame standartines tvirtinimo operacijas ir užpildome turiniu (aprašymai ir XML) --
    declare @ret int
    exec @ret=dbo.RGI_MGAMA_PIRK_TV @modul=@modul, @op=@op, @user=@user, @veiksmas=@veiksmas, @kodas_be=@kodas_be, @pastaba=@pastaba, 
                @inf=@inf,
                @men=@men,
                @istorija=@istorija,
                @det=@det,
                @pad_pap=@pad_pap,
                @suPvm=@suPvm,
                @dok1=@dok1,
                @dok2=@dok2,
                @apr_nr=@apr_nr,
                @auto_tv=@auto_tv

    return @ret
END

Parametrai:

Parametras Reikšmė Naudojimas
@op_tip operacijos tipas, kurį tikrinti. Nebūtina perduoti, jei tai nėra pati pirmoji būsena @op_tip=1
@suma_min minimali suma, iki kurios automatiškai patvirtinti @suma_min=200
@busena minimalios sumos tvirtinimo būsena @busena=27
@op_tip@inf parametras nustato kas bus informuojamas apie būsenos pasikeitimą:
1 - informuoti operacijos savininką (vartotoją, kuris sukūrė operaciją) ,
2 - informuoti visus operacijose tvirtinime dalyvavusius asmenis
@inf=1
@istorija prie tvirtinimo operacijos rodyti istoriją:
1 - rodyti (pagal nutylėjimą), 0 - nerodyti
@istorija=1
@pad_pap nurodžius parametrą, tvirtinimą atlieka padalinių vadovai.
Padalinių sąraše sukuriamas papildomas laukas (per "akinukus"), kuriame iš vartotojų sąrašo parenkamas padalinio vadovas.
Šiame parametre nurodomas to papildomo lauko numeris.
@pad_pap=12
@suPvm nurodo ar tvirtinimo informacijoje rodoma suma yra su PVM, ar be PVM @suPvm=1
@det nurodo ar tvirtinimui pateikiama detali informacija ar tik bendra dokumento suma @det = 1
@dok1 nurodo ar tvirtinimo informacijoje rodomas prie pirkimo prisegtas dokumentas (Rivile GAMA mygtukas "Dokumentas"). @dok1= 1
@dok2 nurodo ar tvirtinimo informacijoje rodomi prie pirkimo prisegti dokumentai (Rivile GAMA mygtukas "Dokumentai"). @dok2= 1
@men Tvirtina menedžeris
nurodžius 1 – bus imamas vartotojas, kuriam vartotojo kortelėje priskirtas menedžerio kodas
@men= 1
@apr_nr Nurodo kelintas aprašymo laukas naudojamas tvirtinimo metu įrašyto komentaro išsaugojimui.
0- bus pildomas eilės tvarka sekantis ne tuščias. Nenurodžius - nepildomas.
@apr_nr= 3
@auto_tv parametre nurodomas būsenos kodas, į kurią bus automatiškai peršokama, jei operacijos tvirtinimą atlieka asmuo, kuris kartą jau patvirtino operaciją @auto_tv=5

Menedžerio priskyrimas vartotojo kortelėje:

mgamavid_04

Naudojama MGAMA vidinė SQL procedūra RGI_MGAMA_BUSENA_LEISTI. Jos parametrai:

Parametras Reikšmė
@modul char(2) = null operacijos modulis
@op char(12) = null operacijos numeris
@user char(12) = null vartotojo kodas
@veiksmas char(1) = 'I' veiksmas. Tinka tik I-init
@kodas_be char(12) = null esamos būsenos kodas
@pastaba varchar(150) = null atšaukimo priežastis
@vart char(12) = null konkretus vienas vartotojo kodas, kuriam suteikiamas leidimas
@tmp_lent numeric(1,0) = 0 ar vartotojų sąrašas pateiktas lentelėje #mgama_busena_leisti (kodas_rs char(12)).
0 – nurodomas @vart parametas, 1 – naudojama temp lentelė
@rewrite numeric(1,0) = 0 1 - perrašyti visus būsenos vartotojus, 0 - papildyti vartotojus naujais
@apr1 varchar(250) = null tvirtinimo operacijos aprašymo 1 laukas
@apr2 varchar(250) = null tvirtinimo operacijos aprašymo 2 laukas
@apr3 varchar(250) = null tvirtinimo operacijos aprašymo 3 laukas
@xml text = '' tvirtinimo operacijos XML laukas
@email_poz numeric(1,0) = null ar siųsti tvirtinimo operaciją email
@email_sabl numeric(3,0) = null jei siunčiamas email, tuomet kurį šabloną naudoti (1,2,3,4)
@perkelta numeric(1,0) = 1 tvirtinimo operacijos perkėlimo požymis. Galimos reikšmės: 1 – Nauja, 4 - Anuliuota

Privalomi parametrai paryškinti.

PIRK_BUS_CUSTOM - Būsenos parinkimas

pirk_bus_custom.zip

Fox-inė programa, skirta būsenos parinkimui, priklausomai nuo dokumento tipo ir sumos.

LPARAMETERS _thisform, lnSuma, lnBusena, lnBusena2, lnOpTip

IF TYPE("m.lnSuma")#"N" OR TYPE("m.lnBusena")#"N"
    RETURN .F.
ENDIF

IF TYPE("lnOpTip")#"N"
    m.lnOpTip=Wi06k.i06_op_tip
ENDIF

IF Wi06k.i06_suma<lnSuma AND Wi06k.i06_op_tip=m.lnOpTip
    m.BUSENOS_NAUJA=m.lnBusena
ENDIF

IF Wi06k.i06_suma>=lnSuma AND Wi06k.i06_op_tip=m.lnOpTip
    m.BUSENOS_NAUJA=m.lnBusena2
ENDIF

RETURN f_busena_sql(_thisform)

Funkcijos parametrai :

Parametras Reikšmė
_thisform Thisform (visada)
lnSuma Suma, iki kurios dokumentas patvirtinamas automatiškai, t.y. iki kurios reikia peršokti į trečiame parametre nurodytą būseną
lnBusena Būsena, į kurią reikia peršokti, jei dokumento suma mažesnė už antrame parametre nurodytą reikšmę
lnBusena2 Būsena, į kurią reikia peršokti, jei dokumento suma ne mažesnė už antrame parametre nurodytą reikšmę
lnOpTip Operacijos tipas, kurį reikia tikrinti (1- pirkimo važtaraštis)

RGI_MGAMA_CREATE_ATOSTOG_PRASYMAS_CUSTOM - Perima valdymą teikiant atostogų prašymą

Procedūroje pateikiamas pavyzdys kaip aprašyti papildomus tikrinimus, kurie veiktų pateikiant atostogų prašymą.

Pavyzdžiui:

  • tikrinama ar nurodytas pavaduojantis asmuo,
  • tikrinamas atostogų tipas (pvz., negalima rinktis atostogų tipo, kuriame nurodyta, kad atostoginiai išmokami prieš 3 dienas iki atostogų pradžios, jeigu realiai ki atostogų pradžios belikę mažiau nei 5 dienos).
CREATE PROCEDURE dbo.RGI_MGAMA_CREATE_ATOSTOG_PRASYMAS_CUSTOM
AS
BEGIN

-----------------------------------------------
-------------- Standartinė dalis: -------------

declare @user char(12)              -- vartotojas prašantis atostogų
    , @begDate datetime             -- atostogų pradžia
    , @endDate datetime             -- atostogų pabaiga
    , @atostTipas char(12)          -- atostogų tipo kodas
    , @pastabos varchar(500)        -- nurodytos pastabos
    , @pavaduojantis varchar(120)   -- pavaduojantis asmuo
    , @kodas_6a_f char(12)          -- priėmimo operacijos kodas

IF 1=0 -- Parametrų kursorius (jis ateina iš pagrindinės procedūros RGI_MGAMA_CREATE_ATOSTOG_PRASYMAS)
    CREATE TABLE #RGI_MGAMA_CREATE_ATOSTOG_PRASYMAS_CUSTOM (
        [user] char(12)
        , begDate datetime
        , endDate datetime
        , atostTipas char(12)
        , pastabos varchar(500)
        , pavaduojantis varchar(120)
        , kodas_6a_f char(12))

-- Išsisaugome reikšmes į kintamuosius
select top 1 @user=[user], @begDate=begDate, @endDate=endDate, @atostTipas=atostTipas, @pastabos=pastabos, @pavaduojantis=pavaduojantis, @kodas_6a_f=kodas_6a_f from #RGI_MGAMA_CREATE_ATOSTOG_PRASYMAS_CUSTOM order by [user] asc

if 1=0 -- Klaidų pranešimai
    CREATE TABLE #A12345 (
        TAG VARCHAR(50) NOT NULL DEFAULT ' ',
        Err_Code INT NOT NULL DEFAULT 0,
        err_proc int not null default 2,
        expr1 varchar(50) null default null,
        expr2 varchar(250) null default null,
        expr3 varchar(250) null default null)

-----------------------------------------------
------------ Papildomi tikrinimai: ------------

-- Privalomas pavaduojantis asmuo
if isnull(@pavaduojantis,'')=''
    begin
        insert into #A12345(tag, err_code, expr2, expr3)
        values ('@pavaduojantis', 0, 'Nenurodytas pavaduojantis asmuo','Responsible person not defined')
        return 0
    end

-- Kai atostogų tipas KASMET_AVANS - leisti pateikti prašymą ne anksčiau nei 5 dienos iki atostogų pradžios
if @atostTipas='KASMET_AVANS' and datediff(day,getdate(),@begDate)<5
    begin
        insert into #A12345(tag, err_code, expr2, expr3)
        values ('@atostTipas', 0, 'Pasirinkto atostogų tipo prašymą teikti galima, kai iki atostogų pradžios likę daugiau kaip 5 dienos','Vacation can be requested at least 5 days in advance by this vacation type')
        return 0
    end

return 0

END

RGI_MGAMA_GET_PERS_KAL_INFO_CUSTOM - Kalendoriaus įvykio detalizacija

Procedūroje pateikiamas pavyzdys kaip kalendoriuje atsistojus ant atitinkamo laikotarpio parodyti su juo susijusią papildomą informaciją.

Pavyzdžiui:

  • rodant personalo operacijos informaciją - papildomai parodyti vadovo vardą,
  • rodyti tik prie personalo operacijos prisegtus dokumentus,
  • rodyti personalo operacijos tvirtinimo informaciją.
CREATE PROCEDURE dbo.RGI_MGAMA_GET_PERS_KAL_INFO_CUSTOM
    @user char(12) = null,      -- Vartotojas
    @id varchar(50) = null,     -- Informacijos rodymo id
    @lang char(2) = null        -- Interfeiso kalba
AS
BEGIN
-----------------------------------------------
-------------- Standartinė dalis: -------------
    declare @zx char(1), @modul char(2), @op char(12)
    select @zx='', @modul=isnull(upper(left(@id,2)),'  '), @op=isnull(upper(right(left(@id,14),12)),'')

    -- Rezultato kursorius
    if dbo.f_is_table('#RGI_MGAMA_GET_PERS_KAL_INFO') = 0
        select cast(null as int) as eil,
            cast(null as varchar(150)) as [key],
            cast(null as varchar(150)) as [value],
            cast(null as varchar(20)) as [type],
            cast(null as varchar(20)) as ,
            cast(null as varchar(20)) as [group],
            cast(null as varchar(100)) as [id],
            cast(null as XML) as [data]
        into #RGI_MGAMA_GET_PERS_KAL_INFO where 1=0

-----------------------------------------------
------------ Papildomi informacija: -----------

-- Rodant personalo operacijos informaciją - papildomai parodyti vadovo vardą
    if @modul='6A'
        begin
            insert into #RGI_MGAMA_GET_PERS_KAL_INFO ([group], eil, [key], [value], [type])
            select 'schema' as [group],
                    3 as eil,
                    'Vadovas' as [key],
                    rtrim(rtrim(K14_VARDAS)+' '+rtrim(K14_PAV)) as [value],
                    'inline' as [type]
            from K16_OPH
                inner join K12_ETP on K12_KODAS_IS=K16_KODAS_IS and K12_KODAS_0A=K16_KODAS_0A and K12_KODAS_5A=K16_KODAS_5A
                inner join K14_ASM on K14_KODAS_4A=K12_KODAS_4A
            where K16_KODAS_6A=@op
        end

    -- Rodyti tik prie personalo operacijos prisegtus dokumentus
    if @modul='6A'
        begin
            insert into #RGI_MGAMA_GET_PERS_KAL_INFO ([group], [id], [value], [type])
            select 'file' as [group], 'K00'+K00_KODAS_D3 as [Id], rtrim(case when K00_PAV = '' then (case when @lang='en' then 'Document' else 'Dokumentas' end)+'-'+K00_KODAS_D3 else K00_PAV end) + case when K00_PLET = '/' then '' else rtrim(K00_PLET) end failas, [type] = 'file'
            from dbo.K00_DOKF where K00_MODUL = @modul and K00_MODUL_NR = @op and K00_TIPAS in (1,4)
            union all
            select 'file' as [group], 'B00'+B00_KODAS_IM as [Id], failas = rtrim(B00_PAV) + case when B00_OP_NR = '/' then '' else rtrim(rtrim(B00_OP_NR)) end, [type] = 'file'
            from dbo.B00_IMP inner join dbo.I39_IMPO on I39_MODUL = B00_MODUL and I39_MODUL_NR = @op and I39_TIPAS = 3
            where B00_MODUL = @modul and I39_KODAS_IM = B00_KODAS_IM and B00_OP_NR <> '/' and B00_PDF is not null
        end

    -- Rodyti personalo operacijos tvirtinimo informaciją
    if @modul='6A'
        begin
            insert into #RGI_MGAMA_GET_PERS_KAL_INFO ([group], [key], [value])
            select 'config' as [group], 'SHOW_HISTORY' as [key], 'true' as [value]
        end

    return 0
END

RGI_MGAMA_GET_PERS_KAL_CUSTOM_PRIES - Procedūra prieš kalendoriaus standartinių duomenų suformavimo

Standartiškai kalendoriuje rodoma paties darbuotojo ir darbuotojų, kuriems jis yra tiesioginis vadovas, informacija. Galima praplėsti tokias galimybes.

Pavyzdžiui, aprašoma, kad vartotojų grupei ADMINISTR rodytų visų darbuotojų informaciją (aktyvių priėmimo sutarčių).

CREATE PROCEDURE dbo.RGI_MGAMA_GET_PERS_KAL_CUSTOM_PRIES
  @user char(12)=null,      -- vartotojo kodas, kuris žiūri duomenis
  @from datetime=null,      -- duomenų pateikimo data (nuo)
  @to datetime=null,        -- duomenų pateikimo data (iki)
  @lang char(2)=null,       -- kalba
  @response_type integer=1  -- 1 - traukiami duomenys, 5 - traukiamos filtravimo sąlygos
AS
BEGIN
-----------------------------------------------
-------------- Standartinė dalis: -------------

  declare @zx char(1)
  select @zx = ''

  -- Kursorius, kuriame suformuojama, kurių vartotojų informacija rodoma
  if dbo.f_is_table('#RGI_MGAMA_GET_PERS_KAL_users') = 0
    select @user as kodas_rs,
      convert(char(12),null+@zx) as kodas_6a_f,
      convert(char(12),null+@zx) as kodas_6a_s,
      convert(char(12),null+@zx) as kodas_is,
      convert(char(12),null+@zx) as kodas_4a,
      convert(char(36),null+@zx) as kodas_k12,
      convert(varchar(250),null+@zx) as title,
      convert(varchar(250),null+@zx) as apr1,
      convert(varchar(250),null+@zx) as apr2,
      convert(varchar(250),null+@zx) as apr3
      into #RGI_MGAMA_GET_PERS_KAL_users

-----------------------------------------------
------------ Papildomi informacija: -----------

-- grupei ADMINISTR rodyti visų darbuotojų informaciją (aktyvių priėmimo sutarčių)
if exists(select * from R05_USER where R05_KODAS_RS=@user and R05_KODAS_RS_G='ADMINISTR')
    insert into #RGI_MGAMA_GET_PERS_KAL_users ([kodas_4a])
    select K12_KODAS_4A
    from K16_OPH
          inner join K12_ETP on K12_KODAS_IS=K16_KODAS_IS and K12_KODAS_0A=K16_KODAS_0A and K12_KODAS_5A=K16_KODAS_5A
    where K12_KODAS_4A not in (select [kodas_4a] from #RGI_MGAMA_GET_PERS_KAL_users where [kodas_4a] is not null)
          and K16_TIPAS in (1,2)  /* Priėmimas į etatą ir perkėlimas */
          and K16_UZ_POZ = 0      /* Aktyvus */
          and K16_PERKELTA=2
    group by K12_KODAS_4A

  return 0
END

RGI_MGAMA_GET_PERS_KAL_CUSTOM_PO - Procedūra po kalendoriaus standartinių duomenų suformavimo

Standartiškai kalendoriuje rodomas darbuotojo vardas, pavardė, pareigos ir padalinio pavadinimas. Galima rodyti mažiau informacijos, pavyzdžiui, nerodyti padalinio ir pareigų.

CREATE PROCEDURE dbo.RGI_MGAMA_GET_PERS_KAL_CUSTOM_PO
  @user char(12)=null,      -- vartotojo kodas, kuris žiūri duomenis
  @from datetime=null,      -- duomenų pateikimo data (nuo)
  @to datetime=null,        -- duomenų pateikimo data (iki)
  @lang char(2)=null,       -- kalba
  @response_type integer=1  -- 1 - traukiami duomenys, 5 - traukiamos filtravimo sąlygos
AS
BEGIN
-----------------------------------------------
-------------- Standartinė dalis: -------------

  declare @zx char(1)
  select @zx = ''

  -- Kursorius, kuriame suformuojama, kurių vartotojų informacija rodoma
  if dbo.f_is_table('#RGI_MGAMA_GET_PERS_KAL_users') = 0
    select @user as kodas_rs,
      convert(char(12),null+@zx) as kodas_6a_f,
      convert(char(12),null+@zx) as kodas_6a_s,
      convert(char(12),null+@zx) as kodas_is,
      convert(char(12),null+@zx) as kodas_4a,
      convert(char(36),null+@zx) as kodas_k12,
      convert(varchar(250),null+@zx) as title,
      convert(varchar(250),null+@zx) as apr1,
      convert(varchar(250),null+@zx) as apr2,
      convert(varchar(250),null+@zx) as apr3
    into #RGI_MGAMA_GET_PERS_KAL_users

  -- Rezultato kursorius (events)
  if dbo.f_is_table('#RGI_MGAMA_GET_PERS_KAL') = 0
    select
      cast(null as int) as [group_id],
      cast(null+@zx as char(12)) as [kodas_6a_f],
      cast(null+@zx as char(12)) as [kodas_rs],
      cast(null as int) as [order],
      cast(null as varchar(250)) as [title],
      cast(null as varchar(250)) as [title_m],
      cast(null as varchar(10)) as startDate,
      cast(null as varchar(10)) as endDate,
      cast(null as numeric(3,0)) as color,
      cast(null as numeric(1,0)) as mask,
      cast(null as varchar(250)) as link,
      cast(null+@zx as char(20)) as [tipas]
    into #RGI_MGAMA_GET_PERS_KAL where 1=0

    -- Filtravimo sąlygos iš interfeiso
    if dbo.f_is_table('#tmp_params_tipas') = 0
        select cast(@zx as char(14)) as kodas into #tmp_params_tipas where 1=0 -- Tipai
    if dbo.f_is_table('#tmp_params_kodas_is') = 0
        select cast(@zx as char(12)) as kodas into #tmp_params_kodas_is where 1=0
    if dbo.f_is_table('#tmp_params_kodas_4a') = 0
        select cast(@zx as char(12)) as kodas into #tmp_params_kodas_4a where 1=0
    if dbo.f_is_table('#tmp_params_kodas_k12') = 0
        select cast(@zx as char(36)) as kodas into #tmp_params_kodas_k12 where 1=0

    -- Informacija skirta filtravimo sąlygoms
    if dbo.f_is_table('#tmp_filters_tipas') = 0
        select cast(@zx as char(14)) as k, cast(@zx as varchar(150)) as p, 1 as t, 0 as f into #tmp_filters_tipas where 1=0
    if dbo.f_is_table('#tmp_filters_kodas_is') = 0
        select n07_kodas_is as k, rtrim(n07_pav) as p, 1 as t, 0 as f into #tmp_filters_kodas_is from N07_IMON where 1=0
    if dbo.f_is_table('#tmp_filters_kodas_4a') = 0
        select k14_kodas_4a as k, rtrim(rtrim(k14_vardas)+' '+rtrim(k14_pav)) as p, 1 as t, 0 as f into #tmp_filters_kodas_4a from K14_ASM where 1=0
    if dbo.f_is_table('#tmp_filters_kodas_k12') = 0
        select cast(@zx as char(36)) as k, cast(@zx as varchar(150)) as p, 1 as t, 0 as f into #tmp_filters_kodas_k12 where 1=0

-----------------------------------------------
------------ Papildomi informacija: -----------

    -- Išvalome aprašymus prie žmogaus (padalinys ir pareigos)
    update #RGI_MGAMA_GET_PERS_KAL_users set apr1=null, apr2=null, apr3=null

    return 0
END

RGI_MGAMA_GET_PERS_KAL_CUSTOM_PO - informacijos apie nuotolinį darbą rodymas kalendoriuje

Kalendoriuje papildomai parodomas laikotarpis "Nuotolinis darbas" ir jo informacija.

CREATE PROCEDURE dbo.RGI_MGAMA_GET_PERS_KAL_CUSTOM_PO
    @user char(12) = null,
    @from datetime = null,
    @to datetime = null,
    @lang char(2) = null,
    @response_type int = 1
AS
BEGIN
-----------------------------------------------
-------------- Standartinė dalis: -------------

  declare @zx char(1), @zn char(1)
  select @zx = '', @zn = null

  -- Kursorius, kuriame suformuojama, kurių vartotojų informacija rodoma
  if dbo.f_is_table('#RGI_MGAMA_GET_PERS_KAL_users') = 0
    select @user as kodas_rs,
      convert(char(12),@zn) as kodas_6a_f,
      convert(char(12),@zn) as kodas_6a_s,
      convert(char(12),@zn) as kodas_is,
      convert(char(12),@zn) as kodas_4a,
      convert(char(36),@zn) as kodas_k12,
      convert(varchar(250),@zn) as title,
      convert(varchar(250),@zn) as apr1,
      convert(varchar(250),@zn) as apr2,
      convert(varchar(250),@zn) as apr3
    into #RGI_MGAMA_GET_PERS_KAL_users

  -- Rezultato kursorius (events)
  if dbo.f_is_table('#RGI_MGAMA_GET_PERS_KAL') = 0
    select
      cast(null as int) as [group_id],
      cast(@zn as char(12)) as [kodas_6a_f],
      cast(@zn as char(12)) as [kodas_rs],
      cast(null as int) as [order],
      cast(@zn as varchar(250)) as [title],
      cast(@zn as varchar(250)) as [title_m],
      cast(@zn as varchar(10)) as startDate,
      cast(@zn as varchar(10)) as endDate,
      cast(null as numeric(3,0)) as color,
      cast(null as numeric(1,0)) as mask,
      cast(@zn as varchar(250)) as link,
      cast(@zn as char(20)) as [tipas]
    into #RGI_MGAMA_GET_PERS_KAL where 1=0

    -- Filtravimo sąlygos iš interfeiso
    if dbo.f_is_table('#tmp_params_tipas') = 0
        select cast(@zx as char(14)) as kodas into #tmp_params_tipas where 1=0 -- Tipai
    if dbo.f_is_table('#tmp_params_kodas_is') = 0
        select cast(@zx as char(12)) as kodas into #tmp_params_kodas_is where 1=0
    if dbo.f_is_table('#tmp_params_kodas_4a') = 0
        select cast(@zx as char(12)) as kodas into #tmp_params_kodas_4a where 1=0
    if dbo.f_is_table('#tmp_params_kodas_k12') = 0
        select cast(@zx as char(36)) as kodas into #tmp_params_kodas_k12 where 1=0

    -- Informacija skirta filtravimo sąlygoms
    if dbo.f_is_table('#tmp_filters_tipas') = 0
        select cast(@zx as char(14)) as k, cast(@zx as varchar(150)) as p, 1 as t, 0 as f into #tmp_filters_tipas where 1=0
    if dbo.f_is_table('#tmp_filters_kodas_is') = 0
        select n07_kodas_is as k, rtrim(n07_pav) as p, 1 as t, 0 as f into #tmp_filters_kodas_is from N07_IMON where 1=0
    if dbo.f_is_table('#tmp_filters_kodas_4a') = 0
        select k14_kodas_4a as k, rtrim(rtrim(k14_vardas)+' '+rtrim(k14_pav)) as p, 1 as t, 0 as f into #tmp_filters_kodas_4a from K14_ASM where 1=0
    if dbo.f_is_table('#tmp_filters_kodas_k12') = 0
        select cast(@zx as char(36)) as k, cast(@zx as varchar(150)) as p, 1 as t, 0 as f into #tmp_filters_kodas_k12 where 1=0

-----------------------------------------------
------------ Papildoma informacija: -----------

    -- Informacija iš DVS operacijų (Nuotolinis darbas)
    declare @kodas_rd char(12)
    select @kodas_rd='MGAMA_SS_F02'

    insert into #RGI_MGAMA_GET_PERS_KAL ([kodas_6a_f],[kodas_rs],[order],[title],[title_m],[startDate],[endDate],,[mask],[link],[tipas])
    SELECT [kodas_6a_f],
            [kodas_rs],
            30 as [order],
            'Nuotolinis darbas' as [title],
            'Nuotoliu' as [title_m],
            LEFT(K42_APRASYMAS3,10) as startDate,
            RIGHT(rtrim(K42_APRASYMAS3),10) as endDate,
            8 as color,
            case when L19_PAV='Patvirtinta' then 0 else 1 end as mask,
            'OD'+K42_KODAS_OD as link,
            'OD'+rtrim(K42_KODAS_RD) as tipas
    from K42_OD
        inner join L19_BUS on K42_BUSENA=L19_BUSENA and L19_MODUL='OD' and L19_TIPAS=K42_TIPAS
        inner join #RGI_MGAMA_GET_PERS_KAL_users on kodas_rs=K42_KODAS_RS
    where K42_KODAS_RD=@kodas_rd and K42_BUKLE=1
        and K42_APRASYMAS3 like '20[0-9][0-9]-[0-9][0-9]-[0-9][0-9] - 20[0-9][0-9]-[0-9][0-9]-[0-9][0-9]'
        and convert(datetime,LEFT(K42_APRASYMAS3,10),120)<@to and convert(datetime,RIGHT(rtrim(K42_APRASYMAS3),10),120)>@from

    -- Grąžiname filtravimo sąlygas
    if @response_type=5
        begin
            insert into #tmp_filters_tipas (k,p,t,f) select 'OD'+@kodas_rd as k, 'Nuotolinis darbas' as pav, 1 as t, 0 as f
            return 0
        end

    return 0
END

mgamat_24

mgamat_25

MGAMA_CUSTOM_PARD - XML formavimo procedūra

Procedūros naudojimo pavyzdys aprašytas: Pardavimo rezervavimo tvirtinimo procesas.

CREATE PROCEDURE dbo.MGAMA_CUSTOM_PARD
    @modul char(2) = null,          -- operacijos modulis
    @op char(12) = null,            -- operacijos numeris
    @user char(12) = null,          -- vartotojo kodas
    @veiksmas char(1) = null,       -- veiksmas: P-patvirtinti, A-atmesti, I-init, U-atidarytas tvirtinimui
    @kodas_be char(12) = null,      -- esamos būsenos kodas
    @pastaba varchar(150) = null    -- atšaukimo priežastis
AS
BEGIN
    if @veiksmas not in ('I','U')
        return 0

    -- Išsisaugome rezultatą į kursorių
    select * into #tmp_pard from I06_PARH where I06_KODAS_PO=@op

    -- Sugeneruojame XML
    declare @xml varchar(max)
    select @xml=(
        SELECT *
        FROM (
            select 1 as eil, 'Klientas' as [key],       rtrim(I06_PAV) as [value],                      'inline' as [type] from #tmp_pard
            UNION ALL
            select 2 as eil, 'Dokumento Nr.' as [key],  rtrim(I06_DOK_NR) as [value],                   'inline' as [type] from #tmp_pard
            UNION ALL
            select 3 as eil, 'Dokumento data' as [key], CONVERT(varchar,I06_DOK_DATA,(102)) as [value], 'inline' as [type] from #tmp_pard
            UNION ALL
            select 4 as eil, 'Suma be PVM' as [key],    rtrim(str(I06_SUMA,12,2))+'€' as [value],       'inline' as [type] from #tmp_pard
            UNION ALL
            select 5 as eil, 'Suma su PVM' as [key],    rtrim(str(I06_SUMA+I06_SUMA_PVM,12,2))+'€' as [value], 'inline' as [type] from #tmp_pard
            UNION ALL
            select 6 as eil, 'Pastabos' as [key],       rtrim(I06_PASTABOS) as [value],                 'block' as [type] from #tmp_pard where isnull(I06_PASTABOS,'') <> ''
        ) as [schema]
        ORDER BY eil
        FOR XML auto, elements
    )

    -- Atnaujiname tvirtinimo operacijas
    update dbo.L21_BUSP
    set 
        L21_APRASYMAS1=rtrim(I06_PAV), 
        L21_APRASYMAS2='Pardavimo rezervas', 
        L21_APRASYMAS3=rtrim(I06_DOK_NR)+' '+rtrim(str(I06_SUMA,12,2))+'€', 
        L21_XML=@xml
    from #tmp_pard
    where L21_KODAS_BE=@kodas_be and L21_MODUL=@modul and L21_KODAS=@op and L21_PERKELTA=1 and (@veiksmas='I' OR L21_KODAS_RS=@user)

    return 0
END