MSCAN v3 versija

Norint turėti galimybę dirbti su MSCAN v3 versija, Rivile GAMA programoje reikia aprašyti parametrą MSCAN_V3.

MSCAN parametrai, aprašomi Rivile GAMA sistemoje (veikia tik V3 versijoje)

Servisas -> Administravimas -> Parametrai

Parametras Aprašymas
MSCAN_BAR_PA Prekės paieška
MSCAN_OBJ_PA, MSCAN_OB2_PA Objekto paieška
MSCAN_SER_PA, MSCAN_SE2_PA Serijos paieška
MSCAN_SKEN Skenavimo metu kviečiamos formulės
MSCAN_PABAIG Operacijos pabaigimo metu kviečiamos formulės
MSCAN_BA_INF Informacijos apie barkodą formulė
MSCAN_LAU_TV Rodomi skenavimo laukai ir jų eiliškumas
MSCAN_MENIU Rodomi meniu punktai ir jų eiliškumas
MSCAN_MINUSL Neigiami lokacijų likučiai
MSCAN_V3** Versijos keitimo mygtukas

** - veikia tiek senoje tiek naujoje V3 versijoje

Parametras (MSCAN_BAR_PA, MSCAN_OBJ_PA, MSCAN_OB2_PA, MSCAN_SER_PA, MSCAN_SE2_PA) nustatantis, ar vartotojas gali naudoti kodo paiešką

Parametras turi dvi reikšmes:

  • Parametras 1 gali turėti 2 reikšmes: P - jei norima įjungti paiešką, S - jei laukas turi būti sąrašinis.
  • Parametras 2 (Neprivalomas) reikšmė yra formulės kodas iš Servisas -> Kortelės -> Formulės. Jeigu aprašyta formulė, tai bus vykdoma formulė ir sisteminis sąrašas nebus rodomas.

Kaip aprašyti formules paieškos laukams galima rasti čia.

Pagal nutylėjimą paieška yra išjungta.

Sistemiškai paieška atsižvelgia į Rivile GAMA nustatytus filtravimo parametrus: SS_FIL_PS - Prekių filtras, SS_FIL_OS - Objektų filtras.

Serijos laukas nėra sąrašinis, todėl nėra sisteminio serijų sąrašo. Norint naudoti paiešką, būtina aprašyti formulę ir ją nurodyti parametre antrame reišmės lauke.

mscan_04

Rivile MSCAN aplikacijoje paiešką galima rasti skenavimo lange prie skenavimo lauko, paspaudus ant mygtuko nustatymu_ikona. Jeigu paieškos parametras neaprašytas - pasirinkimų lange "Paieška" nebus matoma.

mscan_05

Atidarius paieškos langą - sąrašas tuščias. Įvedus bent vieną simbolį pradedama paieška pagal įvestą fragmentą.

mscan_06

Jei Parametras 1 reikšmė nustatyta - S, tuomet laukas tampa sąrašiniu.

mscan_34

MSCAN_SKEN - parametras nurodantis papildomas skenavimo metu kviečiamas formules

Senoje MSCAN versijoje, norint pakeisti skenavimo procesą, klientams buvo galima programuoti papildomas kliento procedūras - RGI_MSCAN_EDIT_CHECK_PRODUCT_CUSTOM arba RGI_MSCAN_EDIT_CHECK_PRODUCT_CUSTOM_P.
V3 versijoje šios procedūros vis dar veiks, bet prioritetą turės aprašytos formulės.

Parametras turi dvi reikšmes. Pirmoji skirta aprašyti formulei, kuri bus kviečiama prieš sistemines patikras. Antroji - formulei, kuri bus kviečiama po sisteminių patikrų.

Servisas -> Kortelės -> Formulės

Formulė rašoma T-SQL kalba.

mscan_41

Tiek formulė PRIEŠ, tiek formulė PO gali dirbti su laikinomis lentelėmis #inParams, #outParams, #appErrors, #appWarnings.

  • Lentelė #inParams - talpina vartotojo nuskenuotą informaciją - barkodą, kiekį, objektą, seriją, papildomą informaciją. Taip pat, priklausomai nuo nustatymų, gali talpinti padalinį, eilutės numerį ir kt. Formulė PRIEŠ galėtų atlikti pakeitimus šioje lentelėje.
  • Lentelė #outParams - po sisteminės patikros talpina informaciją su kuria toliau dirbs sisteminė procedūra. Formulė PO galėtų atlikti pakeitimus šioje lentelėje.
  • Lentelė #appErrors talpina klaidas, kurios bus parodomos vartotojui.
  • Lentelė #appWarnings talpina įspėjimus, kurie bus parodomi vartotojui.

Formulė PRIEŠ gali būti naudojama, jei reikalinga skenuoti kitokį, nei standartinis barkodas

Formulėse numatyta galimybė vartotojui išvesti pasirinkimus į laikiną lentelę #appWarnings įtraukiant pranešimus. Jei neužpildomas laukas warningId tuomet vartotojo pasirinkimas grąžinamas lauke ignoreWarnings. Formulės pavyzdys su tokio patvirtinimo pavyzdžiu:

-- perspėti jei pardavimo operacijos data vėlesnė nei šiandiena
if exists (select 1 from #inParams inner join dbo.i06_parh on module = 'RO' and ignoreWarnings = 0 and operationCode = i06_kodas_po and i06_op_data > left(convert(char(30), getdate(), 102), 10))
    insert into #appWarnings (warningCode, warningMessage) values (0, 'Pardavimo data vėlesnė nei šiandien!')
mscan_61

Numatyta galimybė išvesti ir kelis pranešimus, tokiu atveju dar pildomas warningId laukas ir pagal jį identifikuojamas atsakymas naudojant funkciją RGI_F_WARN_VALUE(warningId, value). Taip pat vietoje mygtuko "Tęsti" galima turėti iki 3 mygtukų su norimais pavadinimais (pildomos btn1, btn2 ir btn3 reikšmės). Formulės pavyzdys su dviem atskitais paklausimais:

-- lokacijos ir galiojimo datos pasirinkimas pirkimo operacijose
if exists (select 1 from #inParams where kodas_0l2 = '' and module = 'PO')
begin
    -- lokacijos paklausimas
    if not exists (select 1 from #inParams where warningId like '%LOKACIJA%')
    begin
        insert into #appWarnings (warningCode, warningId, warningMessage, btn1, btn2, btn3) values (0, 'LOKACIJA', 'Pasirinkite lokaciją', 'Lokacija Nr.1', 'Lokacija Nr.2', 'Paletė Nr.1')
        return
    end
    else
        update #inParams set kodas_0l2 = case when dbo.RGI_F_WARN_VALUE(warningId, 'LOKACIJA') = 1 then 'LL1' when dbo.RGI_F_WARN_VALUE(warningId, 'LOKACIJA') = 2 then 'LL2' else 'PP1' end

    -- galiojimos datos priskyrimas
    if not exists (select 1 from #inParams where warningId like '%GALIOJIMAS%')
        insert into #appWarnings (warningCode, warningId, warningMessage, btn1, btn2) values (0, 'GALIOJIMAS', 'Galiojimo datos pasirinimas', '30 dienų', 'Nekeisti')
    else
        update #inParams set expirationDate2 = getdate() + 30 where dbo.RGI_F_WARN_VALUE(warningId, 'GALIOJIMAS') = 1
end
mscan_62

MSCAN_PABAIG - parametras nurodantis papildomas pabaigimo metu kviečiamas formules

Senoje MSCAN versijoje, norint pakeisti pabaigimo procesą, klientams buvo galima programuoti papildomas kliento procedūras - RGI_MSCAN_FINALIZE_CUSTOM arba RGI_MSCAN_FINALIZE_CUSTOM_P.
V3 versijoje šios procedūros vis dar veiks, bet prioritetą turės aprašytos formulės.

Parametras turi dvi reikšmes. Pirmoji skirta aprašyti formulei, kuri bus kviečiama prieš sisteminį pabaigimą. Antroji - formulei, kuri bus kviečiama po sisteminio pabaigimo.

Servisas -> Kortelės -> Formulės

Formulė rašoma T-SQL kalba.

mscan_52

Rašant formulę, yra pasiekiami tam tikri kintamieji.

Kintamasis Aprašymas
@module Modulio kodas
@operationCode Operacijos kodas
@operationType MSCAN operacijos tipas (ATR - atrinkimas, PAJ - pajamavimas, LOK - lokacijos op.)
@mscanUser MSCAN vartotojas
@locale Kalba
@note Pastaba
@departmentId Padalinio kodas

Formulės PRIEŠ su papildomu tikrinimu pavyzdys:

-- leidžiama pabaigti tik operacijas su logistikos kodu TEST, taikoma tik pirkimų ir pardavimų moduliams
if @module in ('PO', 'RO') and not exists (select 1 from dbo.i06_parh where i06_kodas_po = @operationCode and i06_kodas_ls_1 = 'TEST')
    insert into #A12345 (Tag, Err_Code, Expr2) values ('KLAIDA', 0, 'Galimas tik operacijų su logistikos kodu "TEST" pabaigimas')

-- vidinėse operacijose tik vartotojas priklausantis vadovų grupei gali pabaigti taros perkėlimus
if @module = 'VD' and exists (select 1 from #FinalizeCheck inner join dbo.n17_prod on productCode = n17_kodas_ps and n17_kodas_gs = 'TARA') and not exists (select 1 from dbo.R05_USER where r05_kodas_rs = @mscanUser and r05_kodas_rs_g = 'VADOVAI')
    insert into #A12345 (Tag, Err_Code, Expr2) values ('KLAIDA', 0, 'Taros perkėlimą gali pabaigti tik vadovai')

mscan_57

mscan_56

Formulės PO su pakeitimais po pabaigimo pavyzdys:

-- gamybos operacijose data pakeičiama į šios dienos datą
if @module = 'KA'
    update dbo.i15_kalh set i15_op_data = convert(char(30), getdate(), 102) where i15_kodas_ka = @operationCode

mscan_58

Formulės prieš pabaigimą su paklausimu vartotojui pavyzdys:

-- serijos tikrinimas ir užpildymas kliento "RIVILE" pirkimo pasiūlymams
if @module = 'PO' and exists (select 1 from #FinalizeCheck where lot = '')
    and exists (select 1 from dbo.i06_parh where i06_kodas_po = @operationCode and i06_kodas_ks = 'RIVILE' and i06_op_tip = 4)
begin
    if @ignoreWarnings = 0
    begin
        insert into #appWarnings (warningCode, warningMessage, btn1, btn2) values (0, 'Rastos prekės be serijos!', 'Užpildyti šios dienos data', 'Nekeisti')
        return
    end

    -- serijų atnaujinimas
    if @ignoreWarnings = 1
    begin
        update dbo.i07_pard set i07_serija = convert(varchar(8), getdate(), 112) from #FinalizeCheck where i07_kodas_po = operationCode and i07_serija = ''
        update dbo.rgi_mscan_d set lot = convert(varchar(8), getdate(), 112) from #FinalizeCheck tmp where tmp.operationCode = rgi_mscan_d.operationCode and rgi_mscan_d.lot = ''
        update #FinalizeCheck set lot = convert(varchar(8), getdate(), 112) where lot = ''
    end
end

MSCAN_BA_INF - parametras informacijos apie barkodą formulei

MSCAN aplikacijoje informacija apie prekę matoma:

  1. Modulyje "Prekės informacija";

    mscan_27

  2. Paspaudus ant detalios eilutės ir pasirinkus "Informacija pagal barkodą";

    mscan_28

  3. Įvedus barkodą skenavimo lange, paspaudus mygtuką ir pasirinkus "Informacija pagal barkodą".

    mscan_29

Senoje MSCAN versijoje norint koreguoti šią informaciją buvo galima įkelti kliento procedūrą RGI_MSCAN_GET_PRODUCT_INFO_CUSTOM. Šis funkcionalumas vis dar veikia, tačiau naujoje versijoje atsirado paprastesnis būdas - galimybė aprašyti formulę parametre MSCAN_BA_INF.
V3 versijoje ši procedūra vis dar veiks, bet prioritetą turės aprašyta formulė.

Parametre nurodoma papildoma formulė informacijai apie barkodą.

Servisas -> Kortelės -> Formulės

Formulė rašoma T-SQL kalba.

mscan_51

Rašant formulę, yra pasiekiami tam tikri kintamieji bei laikinos lentelės.

Kintamieji

Kintamasis Aprašymas
@tipas PS - prekė, LO - lokacija, PA - paletė
@barcode Barkodas
@barcode_pgr Pagrindinis barkodas
@barcode_alt Altrenatyvus barkodas
@operationCode Operacijos kodas
@module Modulio kodas
@rowNumber Eilutės numeris
@locale Kalba
@productCode Prekės kodas
@unitCode Matavimo vienetas
@departmentCode Padalinio kodas
@imageLink Paveikslėlio nuoroda

Rezultatų lentelė #RGI_MSCAN_GET_BARCODE_INFO_result - į kurią talpinamas rezultatas

Stulpelis Pavadinimas Tipas
eil Eiliškumas int
type Tipas varchar(50)
key Raktas varchar(max)
value Reikšmė  varchar(max)
title Pavadinimas varchar(2000)
color Spalva varchar(50)
data Duomenys xml
Pavyzdys

Esant poreikiui papildyti ar nerodyti tam tikros informacijos, galima koreguoti duomenis lentelėje #RGI_MSCAN_GET_PRODUCT_INFO_result.

Formulė rašoma T-SQL kalba.

-- Informacija pagal barkodą
-- Resultatas talpinamas čia: #RGI_MSCAN_GET_BARCODE_INFO_result ([eil] int, [type] varchar(50), [key] varchar(max), [value] varchar(max), [title] varchar(2000),  varchar(50), [data] xml)

if @tipas<>'PS' -- Keisime tik prekės informaciją. Kitais atvejais (('LO')Lokacijos ir ('PA')Paletės) -  rodysime standartiškai
    goto ExitCode

-- 1. Pašaliname skiltį "Pagrindinis matavimo vienetas"
DELETE FROM #RGI_MSCAN_GET_BARCODE_INFO_result where [key]='Pagrindinis matavimo vienetas'

-- 2. Skiltyje "Matavimo vienetas" rodyti ne kodą, o matavimo vieneto pavadinimą (Pavadinimas kita kalba 1)
UPDATE #RGI_MSCAN_GET_BARCODE_INFO_result SET [value]=rtrim(N18_PAV_K1) FROM N18_MAT WHERE [key]='Matavimo vienetas' and [value]=N18_KODAS_US

-- 3. Įterpiame naują skiltį "Pardavimo kaina"
declare @kain numeric(12,4)
SELECT @kain=I33_KAINA FROM I33_PKAI WHERE I33_KODAS_IS=@departmentCode and I33_KODAS_PS=@productCode and I33_KODAS_US=@unitCode

insert into #RGI_MSCAN_GET_BARCODE_INFO_result ([eil],[key],[value],[type],[data])
select 7 as eil, 'Pardavimo kaina' as [key], cast(@kain as varchar(10))+' €/'+rtrim(@unitCode) as [value], 'inline' as [type], null as [data] where @kain is not null

-- 4. Likutį rodome tos prekės visų mato vienetų visuose padaliniuose
declare @xml_lik xml
SELECT cast(ROW_NUMBER() OVER(ORDER BY I17_KODAS_IS, I17_KODAS_OS, I17_SERIJA) as numeric(10,1)) AS Row_number, I17_KODAS_PS, I17_KODAS_IS, I17_KODAS_OS, I17_SERIJA, N37_FRAKCIJA_A as frakcija, SUM(I17_KIEKIS-I17_ATIDUOTA-I17_REZERVAS)/N37_KOEFICI*N37_FRAKCIJA_A as likutis
into #tmp_lik
from I17_VPRO inner join N37_PMAT on I17_KODAS_PS=N37_KODAS_PS and I17_KODAS_US_A=N37_KODAS_US
where I17_KODAS_PS=@productCode
group by I17_KODAS_PS, I17_KODAS_IS, I17_KODAS_OS, I17_SERIJA, N37_KOEFICI, N37_FRAKCIJA_A
having SUM(I17_KIEKIS-I17_ATIDUOTA-I17_REZERVAS)<>0

select @xml_lik= (
        select * from (
            select Row_number as eil_nr, '[PAD:'+rtrim(dbo.RGI_F_SPEC_SYMB(n07_pav))+'] '+rtrim(dbo.RGI_F_SPEC_SYMB(n17_pav)) as [key], dbo.RGI_F_D_KIEKIS(likutis,frakcija)+' '+rtrim(@unitCode) as [value], 'inline' as [type], case when likutis<0 then 'red' else null end as 
            from #tmp_lik
                inner join N07_IMON on N07_KODAS_IS=I17_KODAS_IS
                inner join N17_PROD on N17_KODAS_PS=I17_KODAS_PS and N17_TIPAS=1
        ) as [schema]
        order by [key], eil_nr
        for xml auto, elements
    )
drop table #tmp_lik

DELETE FROM #RGI_MSCAN_GET_BARCODE_INFO_result where [key] in ('Likučiai','Likutis')
insert into #RGI_MSCAN_GET_BARCODE_INFO_result (eil,[key],[value],[type],[data])
select 99 as eil, 'Likučiai padaliniuose' as [key], '' as [value], 'list' as [type], @xml_lik as [data] where @xml_lik is not null

mscan_30

mscan_31

MSCAN_LAU_TV - parametras nustatantis rodomus skenavimo laukus ir jų eiliškumą

MSCAN aplikacijoje skenavimo lange yra galimybė dirbti su 11 laukų - lokacija iš, lokacija į, barkodas, kiekis, objektas, gavėjo objektas, serija, gavėjo serija, galiojimo data, galiojimo data lokacijoje ir papildoma informacija. Barkodo ir kiekio laukai yra privalomi ir įjungti visada. Laukus lokacija, objektas, gavėjo objektas, serija, gavėjo serija, galiojimo data ir papildoma informacija galima įjungti/išjungti MSCAN nustatymuose.

Lokacijos nustatymas kontroliuoja visus su lokacija susijusius laikus, t.y. lokacija iš, lokaciją į ir galiojimo data lokacijoje. Šių laukų rodymas priklauso nuo modulio ir parametro MSCAN_LAU_TV konfigūrcijos.

Laukai rodomi tik tuo atveju, jei jie įjungti tiek per MSCAN_LAU_TV parametrą, tiek per MSCAN nustatymus.

mscan_50

MSCAN_LAU_TV parametras naudojamas tiek skenavimo laukų įjungimui / išjungimui, tiek jų eiliškumui keisti. Parametras gali būti aprašytas modulio ir vartotojo lygyje. Parametro neaprašius rodomi standartiniai numatyti laukai.

Reikšmė lokacija įjungia pagrindinį lokacijos lauką modulyje (pirkimuose - lokacija į, pardavimuose - lokacija iš ir pan.) Reikšmė lokacija2 įjungia papildomą lokacijos lauką (pirkimuose - lokacija iš, pardavimuose - lokacija į ir pan.)

Ne visuose moduliuose galima įjungti visus laukus, pvz kaupikliuose galimi tik barkodo, kiekio ir papildomi laukai, gavėjo objektas ir gavėjo serija - tik vidinėse operacijose gavimo atveju.

Lauko pavadinimas Lauko kodas Pagal nutylėjimą įjungtas moduliuose
Lokacija iš lokacija/lokacija2 (pagal modulį) Pardavimuose, vidinėse op., gamyboje, lokacijų op.
Lokacija į lokacija/lokacija2 (pagal modulį) Pirkimuose, vidinėse op., inventorizacijoje, lokacijų op.
Barkodas barkodas Visuose moduliuose be galimybės išjungti
Kiekis kiekis Visuose moduliuose be galimybės išjungti
Objektas objektas Visuose moduliuose išskyrus kaupiklius ir vidines op. priėmimo atveju
Gavėjo objektas objektas2 Vidinėse operacijose priėmimo atveju
Serija serija Visuose moduliuose išskyrus kaupiklius ir vidines op. priėmimo atveju
Gavėjo serija serija2 Vidinėse operacijose priėmimo atveju
Galiojimo data galiojimoData Pirkimuose, vidinėse op.
Galiojimo data lokacijoje galiojimoData2 -
Papildoma informacija papildomi Visuose moduliuose

Parametro reikšmės pagal nutylėjimą pagal modulius:

Modulis Reikšmė pagal nutylėjimą
Pardavimai lokacija,barkodas,kiekis,objektas,serija,papildomi
Pirkimai lokacija,barkodas,kiekis,objektas,serija,galiojimodata,papildomi
Vidiniai judėjimai lokacija,lokacija2,barkodas,kiekis,objektas,serija,galiojimodata,papildomi
Kaupikliai barkodas,kiekis,papildomi
Inventorizacija lokacija,barkodas,kiekis,objektas,serija,papildomi
Gamyba lokacija,barkodas,kiekis,objektas,serija,papildomi
Lokacijos lokacija,lokacija2,barkodas,kiekis,objektas,serija,papildomi

Laukų eiliškumas kontroliuojamas keičiant jų poziciją parametre. Pateiktame pavyzdyje laukai objektas ir serija iškeliami į viršų:

mscan_13

mscan_14

MSCAN_MENIU - Parametras meniu punktų rodymui ir jų eiliškumui koreguoti

Aprašius parametrą MSCAN_MENIU galima apriboti kokie meniu punktai (moduliai) prieinami vartotojui ir kokiu eiliškumu jie rodomi. Parametras gali būti aprašytas vartotojo lygyje. Parametro neaprašius rodomas visų modulių sąrašas.

mscan_53

Modulių kodai atskiriami kableliu. Sąrašo apribojimo pavyzdys:

PO,RO,IF

mscan_54

mscan_55

Modulio kodas Pavadinimas
RO Pardavimai
PO Pirkimai
VD Vidiniai judėjimai
KP Kaupikliai
IF Inventorizacija
KA Gamyba
0E Lokacijos
PS Prekės informacija

MSCAN_MINUSL - Neigiami lokacijų likučiai

Parametre nurodoma ar lokacijose gali būti neigiami likučiai.

mscan_63

MSCAN_V3 - Versijų keitimo mygtukas

Aprašius parametrą MSCAN_V3 ir nustačius jo reikšmę į "Taip", tiek senoje tiek naujoje MSCAN versijoje nustatymuose atsiranda mygtukas, leidžiantis pakeisti versiją.

Senoje MSCAN aplikacijos versijoje nustatymuose atsiranda mygtukas "Pereiti prie naujos versijos".

Perėjus prie naujos versijos, nustatymuose atsiranda mygtukas "Grąžinti seną versiją".

MSCAN nauji funkcionalumai

Laukų užrakinimas

Senoje MSCAN versijoje buvo galimybė nustatymuose įjungti/išjungti Objekto ir Serijos laukų kopijavimą

mscan_15

Naujoje versijoje šių nustatymų nelieka, tačiau atsiranda galimybė operacijoje užrakinti barkodo, kiekio, objekto, serijos laukų reikšmes.

Tai padaryti galima prie konkretaus lauko paspaudus mygtuką nustatymu_ikona ir pasirinkus "Užrakinti". Kai užrakinimas nebereikalingas - paspaudus tą patį mygtuką galima pasirinkti "Atrakinti". Užrakintas laukas tampa neaktyvus ir skenuojant reikšmė išsaugoma.

mscan_16

Programos tema

Esant poreikiui, vartotojui nustatymuose padaryta galimybė įjungti/išjungti Tamsų aplikacijos režimą.

mscan_17

mscan_18

Paieškos laukų formulės

Jeigu MSCAN aplikacijoje skenavimo lange norima naudoti prekės, objekto ar serijos paiešką, tam reikalinga aprašyti parametrus MSCAN_BAR_PA, MSCAN_OBJ_PA, MSCAN_SER_PA.

Jeigu paiešką norima papildyti tam tikra informacija, ar serijų atveju aprašyti sąrašą, tam naudojamos formulės.

Patarimai programuojantiems:
Formulės programavimą ir testavimą geriausia vykdyti naudojant SQL priemones (MSSQL SSMS arba Sybase iSQL).
Formulės pradžioje aprašomi standartiniai kintamieji, kurie bus naudojami užpildant juos testinėmis reikšmėmis. Vėliau keliant programinį kodą į formulę, šią dalį galima užkomentuoti.

Servisas -> Kortelės -> Formulės

Formulė rašoma T-SQL kalba.

Rašant formulę, yra pasiekiami tam tikri kintamieji bei laikinos lentelės.

Kintamieji

Kintamasis Aprašymas
@user Vartotojas
@module Modulis
@param1 Lauko, kuriame ieškoma, pavadinimas
@filter Įvesta filtravimo frazė
@isList Nurodo, ar formulė kviečiama iš sąrašo ar is paieškos formos

Rezultatų lentelė #RGI_MSCAN_SEARCH_result - į kurią talpinamas rezultatas

Stulpelis Pavadinimas
value Reikšmė - būtinai barkodas, objekto kodas ar serija - priklausomai nuo sąrašo.
label Pavadinimas. Gali būti sudarytas iš įvairių reikšmių pagal kurias bus norima ieškoti.

Filtravimo lentelė #RGI_MSCAN_SEARCH_filter - kurioje patalpinta vartotojo filtravimui įvesta frazė

Stulpelis Pavadinimas
value Filtravimui įvesta frazė
value1 Filtravimui įvesta frazė + %
value2 % + Filtravimui įvesta frazė + %

Šioje lentelėje įvedus paieškos frazę iš kelių žodžių ar simbolių atskirtų kableliu, bus sugeneruojami kelios eilutės. Pavyzdžiui: "Mano prek" bus įrašai lentelėje #RGI_MSCAN_SEARCH_filter:

value value1 value2
Mano Mano% %Mano%
prek prek% %prek%

Klaidos registravimui naudojama funkcija RGI_KLAIDA.

Funkcijos parametrų eilės tvarka:

Parametras Tipas Paskirtis / Reikšmė
@Tag varchar(50) Laukas, kuris įtakojo klaidą
@Expr2 varchar(250) Klaidos pranešimas (LT)
@Expr3 varchar(250) Klaidos pranešimas (EN)
@Expr1 varchar(8000) Papildoma išplėstinė klaidos informacija
@Err_Code int Klaidos kodas (Pagal nutylėjimą 0)

Klaidos funkcijos naudojimo pavyzdys:

exec dbo.RGI_KLAIDA '@data_nuo_iki','Įvestas laikotarpis turi būti ne ilgesnis nei 7 dienos', 'The entered period must not exceed 7 days!' 

Prekės paieškos formulė

--@filter - vartotojo įvesta filtravimo sąlyga
-- kol neįvestas nei vienas simbolis informacija nerodoma

--@isList - parametras nurodantis, ar formulė kviečiama is sąrašinio lauko.
-- Jei reikšmė lygi 1, tada iš sąrašinio, jei 0 tada per paiešką

IF @filter <> '' or @isList = 1
    INSERT INTO #RGI_MSCAN_SEARCH_result ([value],[label])
    SELECT N37_BAR_KODAS as [value], RTRIM(N37_KODAS_PS) + ', ' + RTRIM(N37_KODAS_US)   + ', ' + RTRIM(N17_PAV) as [label] 
    FROM N37_PMAT n37
    LEFT JOIN N17_PROD on n17_kodas_ps = n37_kodas_ps
    LEFT JOIN #RGI_MSCAN_SEARCH_filter AS xx
    ON (N37_BAR_KODAS like xx.[value1]
    or N37_KODAS_PS like xx.[value2]
    or N37_KODAS_US like xx.[value2]
    or N17_PAV like xx.[value2]
    )
    WHERE N37_BAR_KODAS <> '000000000000' and ((@filter <> '' AND XX.[value1] is not null) or (@filter = ''))
    GROUP BY N37_BAR_KODAS, RTRIM(N37_KODAS_PS) + ', ' + RTRIM(N37_KODAS_US)   + ', ' + RTRIM(N17_PAV)

Objekto paieškos formulė

declare @rdate datetime
select @rdate = convert(datetime,left(convert(varchar,getdate(),120),10),120)

--@filter - vartotojo įvesta filtravimo sąlyga
-- kol neįvestas nei vienas simbolis informacija nerodoma

--@isList - parametras nurodantis, ar formulė kviečiama is sąrašinio lauko.
-- Jei reikšmė lygi 1, tada iš sąrašinio, jei 0 tada per paiešką

IF @filter <> '' and @isList <> 1
    INSERT INTO #RGI_MSCAN_SEARCH_result ([value],[label])
    SELECT N06_KODAS_OS as [value], '$g$' + N06_PAV + '$g$'  + ' ( _' + RTRIM(N06_APRAS) + '_ )' as [label]  
    FROM N06_OBJ
    LEFT JOIN #RGI_MSCAN_SEARCH_filter AS xx
    ON (N06_KODAS_OS like xx.[value1]
    or N06_PAV like xx.[value2]
    )
    WHERE N06_TIPAS = 2 AND (N06_POZ_DATE = 0 OR (N06_POZ_DATE = 1 AND @rDate >= N06_BEG_DATE and @rDate <= N06_END_DATE)) AND N06_TEVAS = 'KILMES_SALIS'
        and ((@filter <> '' AND XX.[value1] is not null) or (@filter = ''))
    GROUP BY N06_KODAS_OS, '$g$' + N06_PAV + '$g$'  + ' ( _' + RTRIM(N06_APRAS) + '_ )'

IF @isList = 1
    INSERT INTO #RGI_MSCAN_SEARCH_result ([value],[label])
    SELECT N06_KODAS_OS as [value], N06_PAV + ' ( _' + RTRIM(N06_APRAS) + '_ )' as [label]  
    FROM N06_OBJ
    LEFT JOIN #RGI_MSCAN_SEARCH_filter AS xx
    ON (N06_KODAS_OS like xx.[value1]
    or N06_PAV like xx.[value2]
    )
    WHERE N06_TIPAS = 2 AND (N06_POZ_DATE = 0 OR (N06_POZ_DATE = 1 AND @rDate >= N06_BEG_DATE and @rDate <= N06_END_DATE)) AND N06_TEVAS = 'KILMES_SALIS'
        and ((@filter <> '' AND XX.[value1] is not null) or (@filter = ''))
    GROUP BY N06_KODAS_OS, N06_PAV + ' ( _' + RTRIM(N06_APRAS) + '_ )'

Serijos paieškos formulė

--@filter - vartotojo įvesta filtravimo sąlyga
-- kol neįvestas nei vienas simbolis informacija nerodoma

--@isList - paraemtras nurodantis, ar formulė kviečiama iš sąrašinio lauko.
-- Jei reikšmė lygi 1, tada iš sąrašinio, jei 0 tada per paiešką

IF @filter <> '' or @isList = 1
    INSERT INTO #RGI_MSCAN_SEARCH_result ([value],[label])
    SELECT I17_SERIJA as [value], i17_serija as [label] 
    FROM I17_VPRO
    LEFT JOIN #RGI_MSCAN_SEARCH_filter AS xx
    ON I17_SERIJA like xx.[value2]
    WHERE (@filter <> '' AND XX.[value1] is not null) or (@filter = '')
    GROUP BY I17_SERIJA 

Teksto žymėjimai, spalvinimas

Esant poreikiui dokumento ar detalioje eilutėje paryškinti ar nuspalvinti tam tikrą teksto dalį, tai galima padaryti naudojant specialius žymėjimus. Šie žymėjimai gali būti naudojami aprašant parametrus MSCAN_DSAR, MSCAN_HSAR, MSCAN_BAR_PA, MSCAN_OBJ_PA, MSCAN_SER_PA.

mscan_23

Žymėjimai

  • Tekstą rašant tarp simbolių *, jis bus paryškintas. Pavyzdžiui, tekstas.

    *norimas tekstas*
  • Tekstą rašant tarp simbolių _ , jis bus parašytas kursyvu. Pavyzdžiui, tekstas.

    _norimas tekstas_
  • Tekstą rašant tarp simbolių ~, jis bus perbrauktas. Pavyzdžiui, tekstas

    ~norimas tekstas~
  • Tekstą rašant tarp simbolių $r$, jis bus nuspalvintas raudonai.

    $r$norimas tekstas$r$
  • Tekstą rašant tarp simbolių $g$, jis bus nuspalvintas žaliai.

    $g$norimas tekstas$g$
  • Tekstą rašant tarp simbolių $b$, jis bus nuspalvintas mėlynai.

    $b$norimas tekstas$b$

Pavyzdžiai

  • MSCAN_DSAR - dokumento detalios eilutės informacija.
'*$g$'+trim(productName)+'$g$* , $b$'+unitCode+' $b$ obj: '+objectCode+' serija:$r$'+lot+'$r$'

mscan_21

mscan_19

Jei reikšmė yra pakankamai ilga - galima nurodyti formulės kodą. O jau pačioje formulėje nurodyti formuojamą tekstą.

'Dok: *'+documentNr+'*, '+convert(char(10),docDate,120)+', renka:'+addUser+' K:$b$'+clientName+'$b$'

mscan_22

mscan_20

Jei reikšmė yra pakankamai ilga - galima nurodyti formulės kodą. O jau pačioje formulėje nurodyti formuojamą tekstą.

  • MSCAN_OBJ_PA - objekto paieškos parametras. Antroji šio parametro reikšmė - formulės kodas. Aprašant formulę galima naudoti teksto žymėjimus. Formulė rašoma SQL kalba.
declare @rdate datetime
select @rdate = convert(datetime,left(convert(varchar,getdate(),120),10),120)

--@filter - vartotojo įvesta filtravimo sąlyga
-- kol neįvestas nei vienas simbolis informacija nerodoma

IF @filter <> ''
    INSERT INTO #RGI_MSCAN_SEARCH_result ([value],[label])
    SELECT N06_KODAS_OS as [value],  '$g$' + N06_PAV + '$g$'  + ' ( _' + RTRIM(N06_APRAS) + '_ )' as [label] 
    FROM N06_OBJ
    INNER JOIN #RGI_MSCAN_SEARCH_filter AS xx
    ON (N06_KODAS_OS like xx.[value1]
    or N06_PAV like xx.[value2]
    )
    WHERE N06_TIPAS = 2 AND (N06_POZ_DATE = 0 OR (N06_POZ_DATE = 1 AND @rDate >= N06_BEG_DATE and @rDate <= N06_END_DATE)) AND N06_TEVAS = 'KILMES_SALIS'
    GROUP BY N06_KODAS_OS,  '$g$' + N06_PAV + '$g$'  + ' ( _' + RTRIM(N06_APRAS) + '_ )'

mscan_25

mscan_24

mscan_26

Gavėjo objektas ir gavėjo serija Vidinėse operacijose

Esant poreikiui Vidinėse operacijose dirbti ne tik su Siuntėjo serija ir/ar objektu, bet ir su Gavėjo objektu ir/ar serija šiuos laukus galima įjungti Nustatymų lange.

Jeigu laukai neįjungti, atliekant atrinkimą eilutės bus tikrinamos tik pagal Siuntėjo objektą ir/ar seriją. Įjungus laukus eilutės bus tikrinimos tiek pagal Siuntėjo, tiek pagal Gavėjo objektą ir/ar seriją.

Pajamavimo operacijose dirbama tik su Gavėjo objektu ir/ar serija.

mscan_37

mscan_38

Gavėjo objekto ir/ar serijos laukai taip pat gali būti sąrašiniai arba turėti paieškas. Tam reikia aprašyti parametrus MSCAN_OB2_PA, MSCAN_SE2_PA

Galiojimo data Vidinėse ir Pirkimo operacijose

Esant poreikiui Pirkimo ar Vidinėse operacijose dirbti su Galiojimo data, ją įjungti galima Nustatymų lange.

Jeigu galiojimo data nėra įjungta, atrinkimo metu ji ignoruojama. Jeigu įjungta - atrinkimo metu tikrinama ir detalios eilutės galiojimo data.

mscan_39

mscan_40

Visų modulių veikimo principų suvienodinimas

Senoje MSCAN versijoje Kaupiklių ir Inventorizacijos moduliuose nuskenavus naują eilutę, ji iškart būdavo įterpiamos į atitinkamas operacijas jau sukiekiais. MSCAN V3 versijoje veikimo principai suvienodinti – įterpiama eilutė su nuliniu kiekiu (jei per parametrus leidžiamas naujų eilučių įterpimas ir naujų eilučių įterpimas į originalų dokumentą), o kiekiai pakoreguojami tik užbaigus MSCAN operaciją

Atnaujintas ir papildytas MSCAN_INFO langas – dabar informacija atvaizduojama ir šiuose moduliuose.