MGAMA - būsenų tvirtinimo principai

Aprašant būsenas turi būti laikomasi tam tikrų taisyklių. 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ą
RGI_MGAMA_GET_PERS_KAL_INFO_CUSTOM Kalendoriaus įvykio detalizacija
RGI_MGAMA_GET_PERS_KAL_CUSTOM_PRIES Procedūra prieš kalendoriaus standartinių duomenų suformavimą
RGI_MGAMA_GET_PERS_KAL_CUSTOM_PO Procedūra po kalendoriaus standartinių duomenų suformavimo
MGAMA_CUSTOM_PARD XML formavimo procedūra

Būsenų tvirtinimo veikimo principai:

  • Dokumentų būsenos gali būti tvirtinamos iš Rivile GAMA programos arba iš MGAMA portalo.
  • Vartotojai, kurie tvirtins dokumentus per MGAMA portalą, aprašomi Rivile GAMA vartotojų sąraše, uždedant "v"- "MGAMA vartotojas“. Plačiau apie tai aprašyta MGAMA vartotojai.
  • Būsenų aprašyme, priklausomai iš kokios sistemos jos bus tvirtinamos, nurodoma "Naudojama programa“: "GAMA", "MGAMA“ arba „GAMA ir MGAMA“.
  • Būsenų aprašyme nurodoma "SQL procedūra“ tvirtinimo formos suformavimui. Standartiniame MGAMA variante yra paruošti aukščiau esančioje lentelėje išvardinti SQL procedūrų šablonai.
  • Jeigu užduotis būsenos tvirtinimui visada suformuojama iš Rivile GAMA programos, tai tvirtinimo formos suformavimui gali būti naudojama ne tik SQL procedūra, bet ir Fox-inė programa.
  • "SQL procedūra“ nebus vykdoma, jeigu būsenos aprašymo lauke "Naudojama programa“ parenkama "GAMA", t.y. jeigu būseną galima tvirtinti tik iš Rivile GAMA programos.
  • Būsenos aprašyme nurodoma ar, patvirtinus būseną, iš MGAMA bus išsiunčiamas elektroninis laiškas. Jei taip, tada lauke "Šablonas" parenkamas laiško šablonas. Standartiniame MGAMA variante yra 4 šablonai: "Tvirtinimas", "Tvirtinimas su nuoroda", "Informavimas", "Informavimas su nuoroda".
  • Šablonai "Tvirtinimas" ir "Tvirtinimas su nuoroda" skirti informavimui apie tvirtinimui atsiųstus naujus dokumentus. Skiriasi tik tuo, kad antruoju atveju laiške yra įdėta tiesioginė nuoroda į tvirtinimui atsiųstą dokumentą:

mgamat_13

  • Šablonai "Informavimas" ir "Informavimas su nuoroda" skirti informavimui apie pasikeitusią dokumento būseną. Skiriasi tik tuo, kad antruoju atveju laiške yra įdėta tiesioginė nuoroda į dokumentą:

mgamat_14

  • Būsenų aprašyme suteikiami leidimai vartotojams, kurie turi jas patvirtinti. Uždedamas "v" -"Formuoti tvirtinančius", kad susiformuotų būsenos patvirtinimo operacijos.
  • Jeigu būsenos bus tvirtinamos tik iš MGAMA portalo, tai vartotojų leidimų aprašyti nereikia.
  • Priklausomai nuo būsenos aprašyme nurodytos SQL procedūros ar funkcijos, būsenos patvirtinimo operacijoje užsipildo trys aprašymo laukai ir pastabų laukas. Pastabų laukas užpildomas XML struktūros informacija, pagal kurią parodomi duomenys MGAMA aplikacijoje.
    Pavyzdžiui, personalo sąraše atsistojus ant pateikto atostogų prašymo ir dukart pelyte paspaudus ant būsenos lauko, parodoma būsenos patvirtinimo operacija, kurią pakoregavus matomi aprašymų ir pastabų laukai:

mgamat_18

Kiekviena būsenos patvirtinimo operacija užpildoma XML informacija, skirta atvaizdavimui MGAMA aplikacijoje.

mgamat_17

  • Sprendžiant įvairius uždavinius, būsenos patvirtinimo operacijų pastabų lauke galima tiesiog įvesti tekstinę XML struktūros informaciją, arba paleisti SQL procedūrą, arba Fox-inę programą (nurodžius būsenos aprašyme, užprogramavus klavišą, importo metu ir pan.)
    Kaip būsenos patvirtinimo operacijoje užpildyti aprašymo ir pastabų laukai atvaizduojami MGAMA aplikacijoje aprašyta Tvirtinimo operacijos suformavimo taisyklės.

  • Fox-inės programos pavyzdys, kuri suformuoja ir užpildo būsenos patvirtinimo operacijos laukus pateiktas VD_TVIRT.

  • Jeigu būsenos aprašyme pažymėta, kad ji gali būti atšaukiama, tai MGAMA formoje bus rodomi du mygtukai: „Patvirtinti“ ir „Atmesti“, priešingu atveju rodomas tik vienas mygtukas „Susipažinau“.

  • Prie operacijos prisegtas "Dokumentas" arba "Dokumentai" yra matomi užduočių tvirtinimo informacijoje. Rodoma tik internetinė nuoroda arba duomenų bazėje saugomas failas.

  • MGAMA tvirtinimo operacijoje galima nerodyti prie operacijos prisegto dokumento. Formuojant tvirtinimo operacijos XML, suformuojamas papildomas tag'as (atskirai Dokumentai B00 ir Dokumentas K00):

    <config><key>SHOW_DOKUMENTAS</key><value>false</value></config>
    <config><key>SHOW_DOKUMENTAI</key><value>false</value></config>
  • Tvirtinimo operacijose galima rodyti tvirtinimo eigą ir istoriją. Formuojant tvirtinimo operacijos XML, nurodoma:

    <config><key>SHOW_HISTORY</key><value>true</value></config>

    Standartiškai, atostogų prašymo tvirtinimo operacijose tvirtinimo eiga ir istorija yra rodomi.

  • Tvirtinimo operacijoje galima pakeisti pagrindinio tvirtinimo mygtuko pavadinimą, pavyzdžiui į "Pasirašyta". Formuojant tvirtinimo operacijos XML, nurodoma:

    <config><key>BUTTON_OK_TITLE</key><value>Pasirašyta</value></config>
  • Tvirtinimo operacijose galima įkelti internetinę nuorodą, pvz.:

    <schema><type>link</type><key>Internetinis puslapis</key><value>https://rivile.lt </value><title>UAB Rivile</title></schema>

mgamat_20

  • MGAMA portale prisegtus PDF failus dabar galima ne tik atsisiųsti, bet ir peržiūrėti.

mgamat_21

Sąlygos, kurios reikalingos, kad būsenų tvirtinimai būtų rodomi MGAMA portale:

  • Būsenos aprašymo lauke "Naudojama programa“ turi būti parinkta "MGAMA“ arba "GAMA ir MGAMA“.
  • Turi būti užpildytas bent vienas iš trijų būsenos patvirtinimo operacijos aprašymo laukų.

mgamat_19

  • Visada matoma tik tam vartotojui priklausanti būsenos tvirtinimo operacija.
  • Matomos būsenų patvirtinimo operacijos, kurių požymis yra "Nauja“, "Patvirtinta“ arba "Atšaukta“. Operacijos su požymiu "Anuliuota“ nėra rodomos.

Tvirtinimo operacijos suformavimo taisyklės

Kaip būsenos patvirtinimo operacijoje užpildyti aprašymo ir pastabų laukai atvaizduojami MGAMA aplikacijoje?

Informacija paimama iš tvirtinimo operacijų:

mgamat_02

MGAMA formos detalizacijai suformuotas XML:

<schema>
    <type>inline</type>
    <key>Pavadinimas 1</key>
    <value>Reikšmė 1</value>
</schema>
<schema>
    <type>inline</type>
    <key/>
    <value>Reikšmė 2</value>
    <color>red</color>
</schema>
<schema>
    <type>inline</type>
    <key>Pavadinimas 3</key>
</schema>
<schema>
    <type>block</type>
    <key>Komentaras</key>
    <value>Reikšmė 3</value>
</schema>
<schema>
    <type>space</type>
</schema>
<schema>
    <type>list</type>
    <key>Sąrašas</key>
    <data>
        <schema>
            <type>inline</type>
            <key>Data</key>
            <value>2024.02.29</value>
            <color>RGB(0,160,0)</color>
        </schema>
        <schema>
            <type>inline</type>
            <key>Suma</key>
            <value>123.00€</value>
        </schema>
    </data>
</schema>

MGAMA tvirtinimų sąraše rodomi šie aprašymo laukai:

mgamat_04

MGAMA aplikacijoje atvaizduojamas XML :

mgamat_06

Pavyzdžiui:

mgamat_08

ir

mgamat_09

Prie operacijos prisegti dokumentai (Rivile GAMA programoje "Dokumentas“ ir "Dokumentai“) automatiškai matomi visose tvirtinimo formose.

Formoje mygtukai "Atmesti“ ir "Patvirtinti“ arba tik vienas jų, "Susipažinau“ rodomas remiantis būsenos aprašymu.

Š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

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

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

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 @rusis=1
@visi leidimai visiems sistemos vartotojams - tvirtinimo operacijos suformuojamos visiems SQL vartotojams @visi=1
@istorija prie tvirtinimo operacijos rodyti istoriją:
1 - rodyti (pagal nutylėjimą), 0 - nerodyti
@istorija=1
@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.
Pavyzdžiui, nurodžius @action_modul='6A' bus suformuota personalo operacija.
Parametras naudojamas tik per MGAMA Dokumentus vykdomose DVS operacijose.
@action_modul='6A'

Pastaba: Tvirtinimo teisės sumuojamos – tvirtinti gali visi kam suteiktas leidimas prie būsenos ir tiems kam leidžiama pasiekti DVS rūšį. Tokiu principu galima administruoti prieigas tik pagal DVS rūšį arba tam tikrus dokumentus susipažinimui nusiųsti visiems SQL vartotojams.

Pavyzdžiui, iš DVS operacijų siunčiant atlyginimo lapelius, vartotojas turėtų būti nurodomas vartotojo lauke , o būsenos aprašyme nustatomas parametras @vart=1:

mgamat_12

Norint tam tikrus dokumentus susipažinimui nusiųsti visiems SQL vartotojams, naudojamas parametras @visi=1.

Procedūros naudojimo pavyzdžiai aprašyti:

Parametras @aktyvi=1 naudojamas norint, kad tvirtinimo operacija niekada nesibaigtų.

Jeigu aprašytas šis parametras, pirmą kartą patvirtinus būseną, susiformuoja būsenų tvirtinimo operacija vartotojui '~':

mgamat_22

Ši būsenos tvirtinimo operacija visada lieka neperkelta, todėl ir DVS operacijos būsena visada lieka "Tvirtina".

Tvirtinimo operacija vartotojui '~' gali būti suformuojama ir naudojant formules DVS rūšių aprašyme. Toks pavyzdys pateiktas MGAMA - įmonės vidaus tvarkos taisyklių tvirtinimas.

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

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

Procedūros naudojimo pavyzdys aprašytas Personalo operacijų (tipas "Priėmimas į etatą") būsenų aprašymas būsenai "Informacija IT administratoriui".

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 Vidinės apskaitos operacijų (tipas "Užsakymas") būsenų aprašymas.

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

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