Pardavimo dokumento suma ir prekių kainos.

Ar galima MSCAN matyti pardavimo dokumento sumą ir prekių kainas?

Tokia galimybė yra, tačiau su tam tikromis sąlygomis.

Prekės kaina

Norint matyti prekių kainas, atitinkamai aprašomas parametras MSCAN_DSAR.

Pavyzdžiui, norint detalioje eilutėje matyti prekės pavadinimą, matavimo vienetą ir kainą:

trim(productName)+' , '+unitCode+', kaina: '+cast(isnull(i07_kaina_su,0) as char(10))+' Eur'

duk_022_1

Prekės kaina MSCAN aplikacijoje bus rodoma tik tuo atveju, jei ji matoma Rivile GAMA programoje atitinkamoje detalioje eilutėje.

duk_022_1

Nuskenavus prekę, kurios nebuvo pirminiame dokumente, Rivile GAMA dokumente ji atsiras tik tada, jei įjungtas parametras MSCAN_ITRAUK. Tokiu atveju jos kaina parodoma.
Jeigu prekė nėra įtraukiama į Rivile GAMA dokumentą, jos kaina bus lygi 0.

duk_022_1

Dokumento suma

Jeigu dokumentai vedami tik Rivile GAMA programoje, neleidžiant įterpti detalių eilučių per MSCAN, užtenka aprašyti parametrą MSCAN_HSAR, kad parodytų įvesto dokumento sumą:

Pavyzdžiui, prie dokumento informacijos norint matyti operacijos numerį ir dokumento sumą:

operationCode+ ', suma: '+CAST(i06_suma+i06_suma_pvm as char(12))+' Eur'

duk_022_1

Jeigu dokumentai kuriami per MSCAN aplikaciją arba leidžiama į dokumentus pridėti papildomas eilutes, tokio aprašymo nepakanka. Tokiu atveju galima sukurti SQL funkciją, kuri pagal reikiamą logiką apskaičiuotų dokumento sumą.

Jeigu prekės eilutė į dokumentą įtraukiama per MSCAN aplikaciją, jos kiekis Rivile GAMA dokumente būna lygus 0. Kiekis iškoreguojamas tik operacijos užbaigimo metu.

Pavyzdyje pateikta funkcija, kuri pardavimo dokumento sumą skaičiuoja pagal tokį algoritmą:

  1. Detalios eilutės suma yra lygi Rivile GAMA programoje įvestam kiekiui padaugintam iš Rivile GAMA programoje nurodytos kainos.
  2. Jeigu Rivile GAMA detalioje eilutėje kiekis yra lygus 0, tuomet eilutės suma lygi MSCAN aplikacijoje nuskenuotam kiekiui padaugintam iš Rivile GAMA programoje nurodytos kainos.
CREATE OR ALTER FUNCTION [dbo].[RGI_MSCAN_HSAR_DOKSUMA] (@kodas_op char(12),@modulis char(2))
RETURNS varchar(20)
as
BEGIN
    declare @suma numeric(12,2)

    if @modulis = 'RO'
    begin
        SELECT @suma = isnull((SELECT SUM(ROUND(((CASE WHEN i07_alt_kiekis = 0 THEN quantityApp ELSE i07_alt_kiekis END)/I07_ALT_FRAK)*i07_kaina_su,2))
        FROM    
        (SELECT I07_EIL_NR, I07_ALT_KIEKIS, I07_ALT_FRAK, I07_KAINA_SU, quantityApp from I07_PARD
            LEFT JOIN RGI_MSCAN_D ON operationCode = I07_KODAS_PO AND rowNumber = I07_EIL_NR AND module = 'RO' 
        where I07_KODAS_PO = @kodas_op) as i07), 0)

        RETURN CAST(@suma as varchar(12)) + ' Eur'
    end

    RETURN ''
END

Tokia SQL funkcija toliau gali būti naudojama aprašant parametrą MSCAN_HSAR.

Pavyzdžiui, prie dokumento informacijos norint matyti operacijos numerį ir dokumento sumą:

operationCode+ ', suma: '+dbo.RGI_MSCAN_HSAR_DOKSUMA(operationCode, 'RO')

duk_022_1