BxAdmin - Overstyre config parametere i SQL spørringer

Ved hjelp av cfg_ kan man overstyre mange Client Profiles og Export Config parametere

  1. Innledning
  2. Fremgangsmåte
  3. Eksempel 1 - Overstyre printere
    1. Eksempel på overstyring av fraktetikett basert på merking i ordren
    2. Eksempel på overstyring av fraktetikett basert på terminal
    3. Eksempel på overstyring av pakkseddel utskrift og pakkseddelmal
  4. Eksempel 2 - Overstyre fraktsystem
  5. Eksempel 3 - Styre konfigurasjon basert på valgt ansatt på terminal

Innledning

Ved noen tilfeller ønsker man å overstyre forskjellige innstillinger, som f.eks. hvilke printere man ønsker å bruke ved utskrift av fraktetiketter og pakksedler, eller hvilken pakkseddelmal man ønsker benytte. 
Dette kan f.eks. baseres på visse verdier i ERPet, hvilken terminal printer skal knyttes til osv. 

I utgangspunktet kan man overstyre alle konfigurasjonsparametere som ligger under Client profiles og Export to ERP -> Export config - fantasien setter grenser, så lenge man har god kontroll på SQL spørringene og vet hva de forskjellige parameterne gjør. Dog er det ikke alle parametere som er like hensiktsmessige å gjøre dette på, så noe av det må vurderes om er mulig å få til på en god måte. Eksemplene i denne artikkelen går stort sett ut på overstyring av forskjellige utskrifter. 

Fremgangsmåte

Måten man overstyrer innstillinger på er ved å bruke cfg_ foran navnet på innstillingen i BxAdmin, i SQL spørringen til relevant modul. Eksemplene i denne artikkelen baseres på oppsett mot Visma Business og VismaNet, og de forskjellige fraktsystemene. 
Cfg_ parameteret legges inn i SQL spørringen for modulen overstyringen skal gjelde i.  

Eksempel 1 - Overstyre printere

I BxAdmin under Configuration -> Client Profiles -> Area: consignor er det et parameter med navn shipmentlabelprinter, dette fyller man som regel ut med navnet på printkøen man ønsker at fraktetiketter skal printes på. I dette tilfellet er det 'Zebra ZD420 Showroom'.

Skal dette overstyres basert på en spesiell kunde eller andre merkinger i ERPet, eventuelt basert på terminalen det plukkes med, kan man legge til cfg_shipmentlabelprinter i SQL spørringen, med parameteret som bestemmer hvilken printer som benyttes, og navn på printkø som benyttes. Cfg_ er parameteret man setter foran navnet på innstillingen man ønsker å overstyre i SQL spørringen.
Samme prinsippet kan også brukes til å overstyre hvilken printer en pakkseddel skal printes til, eller hvilken pakkseddelmal som skal brukes. 

Eksempel på overstyring av fraktetikett printer basert på merking i ordren

La oss si 'Label' feltet i ordrehodet i Visma Business bestemmer hvilken printer utskrift skal gå til. I dette tilfellet ønsker vi bruke en Honeywell printer for utskrift, verdien i Label er satt f.eks. Plukkestasjon2. Her setter vi først opp at verdien i ERPet er 'Plukkestasjon2', som betyr at vi ønsker å printe til 'Honeywell PC42d Plukkestasjon2' i stedet for 'Zebra ZD420 Showroom'. Viktig å legge på en 'else' fallback i spørringen slik at vi printer til standard printer dersom utskrifter skal gå til standard printer.
Det er ikke nødvendig å ha navn på original printkø i selve Client Profile shipmentlabelprinter oppsettet, men uansett greit å beholde det der når det likevel er lagt inn tidligere.
Er det ønskelig å styre til flere printere kan man legge på flere 'when' linjer i spørringen, i dette tilfellet har vi også tatt med en TSC printer. 

case 
when o.label = 'Plukkestasjon2' then 'Honeywell PC42d Printerrom'
when o.label = 'Plukkestasjon3' then 'TSC Kontor'
else 'Zebra ZD420 Showroom'
end cfg_shipmentlabelprinter

Spørringen i BxAdmin vil til slutt se slik ut:  

Så lenge printere er tilgjengelig for BxEngine servicen og navn på printkøer er korrekt skal dette fungere med en gang på neste ordre man plukker. Eneste som gjenstår er eventuell testing for å bekrefte at alt fungerer som forventet. 

 

Eksempel på overstyring av fraktetikett printer basert på terminal 

Skal man overstyre printer basert på hvilken terminal som plukker, kan det gjøres ved å legge inn en ID på et ledig felt på enheten i Devices. I dette tilfellet bruker vi ERPCustomerNo. Hent frem korrekt kolonne, og sett en tallverdi i kolonnen. Denne verdien brukes i spørringen for å bestemme hvilken printer som benyttes.

Spørringen skal da se slik ut: 

case
  when isnull('#erpcustomerno#','') = '2' then 'Honeywell PC42d Printerrom'
  when isnull('#erpcustomerno#','') = '3' then 'TSC Kontor'
  else 'Zebra ZD420 Showroom'
end cfg_shipmentlabelprinter

Når man setter en verdi på terminalen i ERPCustomerNo er det nødvendig å hente innstillinger til terminalen etterpå, for at oppsettet skal aktiveres. 

 

Eksempel på overstyring av pakkseddel utskrift og pakkseddelmal

Her bruker vi Visma Business som et eksempel da dette er et av systemene som tillater oss å endre pakkseddelmal. Integrasjonsmetoden er VBS. 

I Configuration -> Client Profiles -> Area: pickinglist finnes det fire parametere som styrer utskrift av pakkseddel fra Visma Business. Disse er print, printfromvb, reportno og vbprintername. I VismaNet sitt tilfelle ligger f.eks. pakkseddelprinter parameteret under selve exporteren, i Export to ERP -> pickinglist -> Export config, samme prinsipp gjelder her, cfg_printer da pramateret der også heter printer. 
image-png-Sep-17-2020-02-35-29-35-PM.png (582×289)image-png-Sep-17-2020-02-36-08-00-PM.png (670×29)

Alle disse kan brukes med cfg_ i pickinglist spørringen. De mest relevante i dette tilfellet er print, reportno og vbprintername. Siden vi kun skal printe pakkseddel fra Visma Business gjør vi ingenting med printfromvb i spørringen, det parameteret forblir 'true' i Client Profile oppsettet. 

Spørring bygges opp på samme måte som med fraktetikett printere. Har man f.eks. satt opp parametere i Visma som forteller at den og den ordren ikke skal ha pakkseddel kan man også velge at utskrift av pakkseddel ikke skal trigges. I spørringen under har vi lagt opp flere kombinasjoner av disse parameterne. La oss si ord.inf3 = 1 betyr at ordren ikke skal ha pakkseddelutskrift, ord.inf4 = 1 betyr at ordren skal ha en annen pakkseddelmal, og terminalen bestemmer hvilken printer pakkseddelutskrift skal sendes til. 

case
  when o.inf3 = '1' then 'false'
  else 'true'
end cfg_print,
case
  when o.inf4 = '1' then '1008'
  else '127'
end cfg_reportno,
case
  when isnull('#erpcustomerno#','') = '2' then 'HP plukkestasjon2'
  when isnull('#erpcustomerno#','') = '3' then 'HP plukkestasjon3'
  else 'HP Lager'
end cfg_vbprintername

Resultatet av spørringen skal se ca. slik ut. Legg merke til at printernavn ikke har endret seg. Dette kommer da av at det kun er terminalene som henter frem korrekte printere basert på hva som er satt i spørringen og i erpcustomerno feltet i Devices på terminalen. 

Eksempel 2 - Overstyre fraktsystem

Ved noen tilfeller har man flere aktør oppsett i fraktsystemet, f.eks. hvis man har kunder med spesifikke krav til avsender/fraktleverandør, som ikke passer overens med oppsettet man bruker mot andre kunder/fraktavtaler etc. - da har man gjerne flere aktører i oppsettet sitt.
Eksempelvis kan man overstyre med andre verdier på disse (inkludert printere som forklart tidligere):
AxiaFrakt - cfg_actorid og cfg_senderid
Logistra - cfg_actorid og cfg_serverkey
Shipment Server - cfg_actorid og cfg_serverkey
Unifaun Online - cfg_serverkey
Consignor On-premises - cfg_exportfilepath og cfg_importfilepath - dette gjelder da hvis man har flere Import og Export Setups i Consignor med forskjellige filstier. Da er det filsti som skal overstyres. 
Disse kan man også kombinere med f.eks. cfg_ på printproxy og printproxylicensekey dersom printer nr2 f.eks. befinner seg på et helt annet sted uten direkte kobling i nettverket, hvor BxSmartPrintPro da benyttes som en printproxy. 

Eksempel 3 - Styre konfigurasjon basert på valgt ansatt på terminal

Det er også mulig å styre printere og andre parametere pr. ansatt/bruker valgt på terminal, dette styres da i ansatt spørringen under SQL Integration -> Employee. 

Eksempelspørring - her ønsker vi kun at printer styres pr. ansatt i Plukk modulen, da legger man opp cfg_pickinglist_printer, dette styrer da konfigurasjonen mot pickinglist rutinen/modulen, med innstillingen printer under denne. Det samme gjelder da også for mottak med cfg_receivelist_printer. Ønsker man styre samme parameter for alle moduler som støtter dette holder det også å legge inn kun cfg_printer

select 
    employee, 
    isnull(firstname + ' ', '') + isnull(middlename + ' ', '') + isnull(lastname, '') employeename,
    case 
        when employee = 00003 then 'Printer00003'
        when employee = 00001 then 'Printer00001'
        else 'Standard printer' 
  end cfg_pickinglist_printer, --styrer print kun for Plukk.
    case 
  when employee = 00003 then 'Printer00003'
        when employee = 00001 then 'Printer00001'
        else 'Standard printer' 
  end cfg_receivelist_printer --styrer print kun for Mottak.
  case 
  when employee = 00003 then 'Printer00003'
        when employee = 00001 then 'Printer00001'
        else 'Standard printer' 
end cfg_printer --styrer print for alle moduler med dette parameteret.
from 
    BxEmployee 
where 
    status like 'Active' 
order by 
    employeename