Laiško išsiuntimas operacijoje pasikeitus MSCAN būsenai

Pradėjus ar baigus skenuoti prekes naudojant MSCAN, galima išsiųsti norimam vartotojui informacinį el. laišką, kad pasikeitė dokumento būsena. Tam naudojamas standartinis Rivile MGAMA laiškų siuntimo mechanizmas.

Šiam sprendimui realizuoti reikia:

  • vartotojas, kuris turės gauti pranešimą, turi būti Rivile MGAMA vartotojas,
  • aprašyti formulę, kurioje bus suformuojamas pranešimo turinys ir vartotojo priskyrimo logika (pavyzdyje aprašytas siuntimas prie būsenų nurodytiems vartotojams),
  • aprašytą formulę priskirti atitinkamoms būsenoms, apie kurias norima informuoti vartotojus,
  • būsenose nurodyti vartotojus, kuriems bus siunčiami pranešimai.

Palaikomi moduliai: pirkimai, pardavimai, vidiniai judėjimai, kaupikliai, inventorizacija, gamyba.

Šiam sprendimui realizuoti naudojamos fomulės.

Servisas -> Kortelės -> Formulės

Sukuriama nauja formulė, kurioje aprašoma papildoma tikrinimo logika.

Pavyzdyje informacija siunčiama prie būsenų nurodytiems vartotojams.

lais_02

Formulės pavyzdys:

if @veiksmas = 'I'
    begin

        declare @pranesimas1 varchar(250)
        declare @pranesimas2 varchar(250)
        declare @pranesimas3 varchar(250)
        declare @modul_pav varchar(50)
        declare @op_tipas_pav varchar(150)
        declare @dok_klientas char(12)
        declare @dok_nr varchar(20)
        declare @dok_date datetime
        declare @op_nr varchar(20)
        declare @vart char(12)

        -- Nuskaitomas operacijos modulis ir pagal jį iš operacijos surenkama reikalinga informacija 

        if @modul = 'PO'
            begin
                select @modul_pav = 'Pirkimo op.'
                select 
                    @op_nr = I06_KODAS_PO,
                    @dok_nr = I06_DOK_NR,
                    @dok_date = I06_DOK_DATA,
                    @dok_klientas = I06_PAV
                from dbo.I06_PARH where I06_KODAS_PO = @op and I06_OP_TIP < 50
            end
        else if @modul = 'RO'
            begin
                select @modul_pav = 'Pardavimo op.'
                select 
                    @op_nr = I06_KODAS_PO,
                    @dok_nr = I06_DOK_NR,
                    @dok_date = I06_DOK_DATA,
                    @dok_klientas = I06_PAV
                from dbo.I06_PARH where I06_KODAS_PO = @op and I06_OP_TIP > 50
            end
        else if @modul = 'VD'
            begin
                select @modul_pav = 'Vidiniu op.'
                select 
                    @op_nr = I09_KODAS_VD,
                    @dok_nr = I09_DOK_NR,
                    @dok_date = I09_IS_DATA,
                    @dok_klientas = ''
                from dbo.I09_VIH where I09_KODAS_VD = @op
            end
        else if @modul = 'KP'
            begin
                select @modul_pav = 'Kaupikliu op.'
                select 
                    @op_nr = I51_KODAS_KP,
                    @dok_nr = '',
                    @dok_date = '1900-01-01',
                    @dok_klientas = ''
                from dbo.I51_KPH where I51_KODAS_KP = @op
            end
        else if @modul = 'IF'
            begin
                select @modul_pav = 'Inventorizacijos op.'
                select 
                    @op_nr = I47_KODAS_IF,
                    @dok_nr = I45_DOK_NR,
                    @dok_date = '1900-01-01',
                    @dok_klientas = ''
                from dbo.I47_IVFH left join dbo.I45_IVDH on I45_KODAS_IV = I47_KODAS_IV where I47_KODAS_IF = @op
            end
        else if @modul = 'KA'
            begin
                select @modul_pav = 'Gamybos op.'
                select 
                    @op_nr = I15_KODAS_KA,
                    @dok_nr = I15_DOK_NR,
                    @dok_date = I15_UZS_DATA,
                    @dok_klientas = N08_PAV
                from dbo.I15_KALH left join dbo.N08_KLIJ on N08_KODAS_KS = I15_KODAS_KS where I15_KODAS_KA = @op
            end
        else
            begin
                exec dbo.RGI_KLAIDA 'MODULIS', 'Laiškas neišsiustas - netinkamas modulis'
                return
            end

        --Iš surinktos operacijų informacijos suformuojami kintamieji, kuriuos galima perduoti laiško suformavimo procedūrai

        select @op_tipas_pav = rtrim(@modul_pav + ' dokumento nr. - ' + case when isnull(@dok_nr, '') = '' then @op else rtrim(@dok_nr) end + case when isnull(@dok_klientas, '') <> '' then ' | Klientas - ' + @dok_klientas else '' end )
        select @pranesimas1 = rtrim(rtrim(R05_VARDAS) + ' ' + rtrim(R05_PAV)) from dbo.R05_USER where R05_KODAS_RS = @user
        select @pranesimas2 = @op_tipas_pav
        select @pranesimas3 = case when @dok_date <> '19000101' then convert(char(10),@dok_date,102) else '' end

        --Surenkami vartotojai, kuriems prie būsenos aprašymo yra uždėtos varnelės

        if dbo.RGI_ver2_tmp_exists('#mgama_busena_leisti') = 0
            select cast(@zn as char(12)) as kodas_rs into #mgama_busena_leisti where 1=0
        delete from #mgama_busena_leisti

        insert #mgama_busena_leisti (kodas_rs)
        select L20_KODAS_RS
        from dbo.L20_BUSV
        where L20_KODAS_BE=@kodas_be

        -- Informacija perduodama standartinėms procedūroms, kurios sukuria tvirtinimo įrašus ir išsiunčia laiškus atrinktiems vartotojams

        exec dbo.RGI_MGAMA_BUSENA_LEISTI @tmp_lent=1, @modul=@modul, @op=@op, @user=@user, @veiksmas=@veiksmas, @kodas_be=@kodas_be, @email_poz = 1, @email_sabl = 4, @perkelta=4, @rewrite = 1, @apr1 = @pranesimas1, @apr2 = @pranesimas2, @apr3 = @pranesimas3

   end

Aprašius formulę, pakoreguojama operacijos tvirtinimo būsena, kurioje siunčiamas laiškas:

Pvz. Servisas -> Pardavimai -> Pardavimo operacijos:

lais_01

SQL procedūra:

RGI_MGAMA_BUSENA_FORMULE @kodas_fr='MS_EMAIL'

Pažymimi vartotojai, kuriems bus siunčiamas laiškas:

lais_03

Sprendimo rezultatas:

lais_04

lais_05