Laiško išsiuntimas pasiekiant pabaigos būseną MSCAN operacijoje

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.

mgamaatost_04

Formulės pavyzdys - atostogų prašymo dienos kontrolė, kuri neleidžia prašyti atostogų, likus mažiau nei 5 dienoms iki nurodytų atostogų pradžios:

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)

        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 = 'IV'
            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 I45_IVDH on I45_KODAS_IV = I47_KODAS_IV where I47_KODAS_IF = @op -- dok_nr????
            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

        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

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

Aprašius formulę, reikia atitinkamai pakoreguoti operacijos tvirtinimo būseną:

Pvz. Servisas -> Pardavimai -> Pardavimo operacijos:

mgamaatost_01

mgamaatost_02

Norint pritaikyti aprašytą formulę, reikia naudoti tvirtinimo operacijų perėmimo procedūrą, nurodant formulės kodą kaip parametrą. Pvz.:

RGI_MGAMA_BUSENA_FORMULE @kodas_fr='MS_EMAIL'

Rezultatas:

mgamaatost_03