Serie/batch/partinr oppsett mot Business NXT
Oppsett av serienummer/batch/parti mot Business NXT med BxLogistics Pro
Business NXT har ikke egne parti-/serieklasser på varen. Hvordan serienummer, batch og parti settes opp i BxLogistics Pro mot Business NXT avhenger derfor av to ting: om varen er partistyrt i Business NXT (standard partioppsett med varepartier og reservasjoner), og hvilket felt kunden bruker for å skille de ulike typene varer fra hverandre. Ofte brukes et gruppefelt på varen (for eksempel Gruppe 10) eller et annet felt til dette.
Serie/batch/parti oppsett mot Business NXT krever en BxLogistics Pro lisens før oppsett påbegynnes.
Alle innstillinger i artikkelen gjøres i BxAdmin:
- Spørringer (ReceiveListLines, PickinglistLines, Products, Batches, StockcountProducts): SQL Integration, velg spørringen i listen.
- Clientconfig: Configuration → Profile. Finn linjen med riktig Area (for eksempel pickinglist) og Property (for eksempel showbatchexpirydate), og sett Value. Skrives her som area / property = verdi.
- Import field mapping: Import from ERP, velg importen (kolonnen Import type, for eksempel products) og se Import Mapping.
- Export field mapping og exportconfig: Export to ERP, velg eksporten (kolonnen Export type, for eksempel receivelist) og se Export Mapping eller Export Config.
- 1. Parti og serienummer i Business NXT
- 2. Typen må inn på varen i BxLogistics
- 3. Hvilken variant gjelder?
- 4. Varemottak (ReceiveListLines)
- 5. Plukk (PickinglistLines)
- 6. Varer, flytting og lagerjustering (Products)
- 7. Eksempel: kunde med fire typer
- 8. Varetelling (StockcountProducts)
- 9. Sjekkliste før produksjon
1. Parti og serienummer i Business NXT
Det finnes to måter å registrere serie/batch/parti på i Business NXT. Det er viktig å vite hvilken kunden bruker før oppsettet starter:
| Oppsett i Business NXT | Hva det betyr | Hvor nummeret lagres |
|---|---|---|
| Partistyrt vare (standard partioppsett) | Beholdningen føres per vareparti. Ved mottak opprettes et nytt parti med parti-/serienummer, eventuelt holdbarhetsdato og lokasjon. Ved salg reserveres partiet på ordrelinjen. | Vareparti (Shipment): partinr (shipmentNo) og parti-/serienummer (serialNo). Reservasjon (Reservation) knytter ordrelinjen til partiet. |
| Serienummer i serienummertabellen | Én ny rad i serienummertabellen per serienummer, med ordrenr og linjenr. Da kan man finne hvilket serienummer som ble sendt til en bestemt kunde, ordre og ordrelinje. Det er ingen beholdning per serienummer. | Serienummertabellen (SerialNo): ordrenr, linjenr og serienummer. |
| Ingen sporing | Vanlig vare. | – |
Det vanligste er at batch/parti og serienummer som skal spores på lager, er satt opp som partistyrte varer, mens serienummer som bare logges ved plukk, legges i serienummertabellen. Snakk med kundens Visma-partner hvis det er uklart hvordan varene er satt opp.
Serienummer på partiet betyr full partistyring: serienummeret for hver lagerførte enhet registreres ved varemottak og telles enkeltvis ved telling på vareparti. Ved plukk velger plukkeren serienummeret selv med oppslag, eller skanner og validerer det som Business NXT har reservert.
Business NXT har ikke et eget felt som forteller hvilken type parti eller serienummer en vare har. Kunden må derfor ha et felt på varen som skiller typene, for eksempel Gruppe 10: 1 = batch, 2 = batch med holdbarhetsdato, 3 = serienummer som parti, 4 = serienummer i serienummertabellen. Eksemplene i artikkelen bruker disse verdiene.
2. Typen må inn på varen i BxLogistics
- Bruk standardfeltet
BxProduct.BatchProfiletil typen. Ikke bruk Inf-felter til dette. Legg til importfieldmapping under Import from ERP → products → Import Mapping, for eksempelproduct.items.group10→BxProduct.BatchProfile, og kjør importen av varer på nytt. - Standard importfieldmapping henter også behandlingsfeltene på varen (
product.items.processingMethod1–processingMethod5→BxProduct.ProcessingMethod1–ProcessingMethod5), og de samme feltene på plukk- og mottakslinjene (BxPickinglistLine/BxReceivelistLine.ProcessingMethod1–5). Behandlingsfeltene skal ikke brukes til å finne varer med parti eller serienummer. Det finnes ikke ett felles flagg for dette i Business NXT. Hvilke varer som krever parti, serienummer eller holdbarhetsdato, settes på varen, som regel i et gruppefelt, og leses inn i BatchProfile. - For å sjekke hvilke verdier som faktisk importeres, kan du opprette og kjøre en egen spørring (gruppen Custom) under SQL Integration:
select batchprofile, count(*) from BxProduct group by batchprofile. Bruk de eksakte verdiene i spørringene. - Standardspørringene ReceiveListLines og PickinglistLines har utkommenterte linjer for
ol.batchprofile/pl.batchprofile. Begge spørringene joiner innBxProduct p, så det enkleste er å brukep.batchprofile. Da trenger du ikke importere typen på linjene i tillegg. - Plukklisteimporten henter reservasjonene som standard. Hver reservasjon blir én linje:
joindown_Reservation_via_OrderLine.items.shipmentNo→BxPickinglistLine.Batchid,reservationNo→BatchLine,serialNo→Batchno,useByDateAsDate→ExpiryDate,joinup_Shipment.location→Locationogquantity→PickingQuantity. Kontroller at disse er aktive under Import from ERP → pickinglists → Import Mapping. - Partilisten i appen (spørringen Batches) leser
BxInventory. Den fylles av importen stockbalances (shipment.items.shipmentNo→BxInventory.BatchId,shipment.items.serialNo→BxInventory.Batchno). Importen må være aktiv hvis brukeren skal velge parti fra liste ved plukk, flytting eller lagerjustering.
3. Hvilken variant gjelder?
| Oppsett i Business NXT | Varemottak | Plukk |
|---|---|---|
| Partistyrt vare, partiet er reservert på ordren | Registrer batch/serienummer (og eventuelt holdbarhetsdato). Business NXT oppretter partiet. | Variant B: plukk det reserverte partiet (pl.batchno + pl.batchline, MatchOnScan) |
| Partistyrt vare, partiet er ikke reservert | Som over | Variant A: brukeren angir/skanner parti (batchline 0) |
| Serienummer i serienummertabellen | Normalt ingenting (kan aktiveres, se punkt 4) | Variant C: brukeren skanner serienummer, som logges i serienummertabellen (addserialnos = true) |
Variant B har en sikkerhetsventil: Business NXT får ikke alltid reservert et parti (for eksempel når det mangler beholdning på partiet). Linjen kommer da uten batchnr og håndteres som variant A. PickinglistLines-spørringen i punkt 7 dekker begge tilfellene.
4. Varemottak (ReceiveListLines)
UseSerialno = '1'for partistyrte varer med serienummer.UseBatchno = '1'for partistyrte varer med batch/partinummer.UseExpiryDate: for batchlinjer er utløpsdato på som standard når UseBatchno = '1', med mindre UseExpiryDate = '0'. For batch uten holdbarhetsdato må du derfor sette '0' eksplisitt. Utløpsdato vises bare når også clientconfig receivelist / showbatchexpirydate = true.- Export field mapping under Export to ERP → receivelist → Export Mapping (standard):
lines.batches.batchno→OrderLine.SerialNo,lines.batches.quantity→OrderLine.FinishNowoglines.batches.location→OrderLine.Location. Hver batch sendes som en egen oppdatering av ordrelinjen, slik at Business NXT oppretter ett parti per batch/serienummer. Linjer med mange batcher deles opp etter maxbatchesperrequest (standard 50) i Export Config. - Holdbarhetsdato: legg til
lines.batches.expirydate→OrderLine.UseByDate. Datoen legges da på partiet. - Normalt angir brukeren partinummeret selv på terminalen ved mottak. Partier som allerede er lagt inn på innkjøpsordren og bare skal valideres før ferdigmelding, er utenom det vanlige, men kan settes opp ved behov.
- Serienummer i serienummertabellen ved mottak (sjelden): sett addserialnos = true under Export to ERP → receivelist → Export Config. Se punkt 5 for hvordan addserialnos virker.
5. Plukk (PickinglistLines)
Variant A: brukeren angir parti (partistyrt vare uten reservert parti)
UseSerialno/UseBatchno = '1'for typen.batchline = '0'. Partinummeret (batchid = shipmentNo) som brukeren velger fra partilisten, sendes da på ordrelinjen med standard export field mappinglines.batches.batchid→OrderLine.ShipmentNooglines.batches.quantity→OrderLine.FinishNow(Export to ERP → pickinglist → Export Mapping).- Det skal ikke opprettes reservasjon fra BxLogistics. Når linjen ferdigmeldes med partinummer, oppretter Business NXT selv en reservasjon som settes som plukket og ferdigmeldt.
Variant B: plukk reservert parti (partistyrt vare med reservasjon)
- Ta med
pl.batchno batchno,pl.batchid batchidogpl.batchline batchline. Batchline er reservasjonsnummeret. Når batchline > 0, oppdateres antallet (FinishNow) på reservasjonen i Business NXT i stedet for på ordrelinjen. UseBatchno = 'MatchOnScan'når linjen har batchnr. Brukeren må da skanne samme batch/serienummer som Business NXT har reservert.
Variant C: serienummer i serienummertabellen
UseSerialno = '1'for typen. Brukeren skanner ett serienummer per enhet.- Sett addserialnos = true under Export to ERP → pickinglist → Export Config. Uten denne blir serienumrene ikke lagret i Business NXT. Med true opprettes én rad per serienummer i serienummertabellen (ordrenr, linjenr, serienummer). Med withQuantity lagres antallet i tillegg, for eksempel SN123 (x2).
- Har kunden både partistyrte varer og varer med serienummertabell, kan addserialnos styres per linje med kolonnen
cfg_AddSerialNosi spørringen (for eksempel 'true' bare for type 4). En tom verdi bruker verdien fra Export Config. - Bruker kunden bare serienummertabellen (ingen partistyrte varer), kan batch-mappingene (
lines.batches.*) deaktiveres. Da ferdigmeldes linjen med det totale antallet (lines.quantity→OrderLine.FinishNow), og serienumrene legges bare i serienummertabellen.
Utløpsdato ved plukk: clientconfig pickinglist / showbatchexpirydate = true og UseExpiryDate per type. Holdbarhetsdatoen til et reservert parti kommer fra standard importfieldmapping useByDateAsDate → BxPickinglistLine.ExpiryDate.
6. Varer, flytting og lagerjustering (Products)
Bruk rutinespesifikke kolonner. Bare partistyrte varer har beholdning per parti:
StockTransfer_UseSerialno/StockTransfer_UseBatchnoStockAdjustment_UseSerialno/StockAdjustment_UseBatchno/StockAdjustment_UseExpiryDate
Standardspørringen Products har '1' UseBatchno og eksempel-linjer for StockTransfer med p.batchprofile like 'Insert Value Here'. Erstatt disse med verdiene for kundens typer. Varer med serienummer i serienummertabellen skal ha '0' her, fordi det ikke finnes beholdning per serienummer.
Standard export field mapping: lageroverføring (stocktransfer) sender lines.batchid → OrderLine.ShipmentNo og lines.batchno → OrderLine.SerialNo. Lagerjustering (stockadjustment) sender lines.batchid → OrderLine.ShipmentNo. lines.batchno → OrderLine.SerialNo finnes, men er ikke aktiv.
7. Eksempel: kunde med fire typer
| Gruppe 10 / BatchProfile | Beskrivelse | Oppsett i Business NXT | Mottak | Plukk |
|---|---|---|---|---|
| 1 | Batch | Partistyrt | Batch | B (reservert), ellers A |
| 2 | Batch med holdbarhetsdato | Partistyrt med holdbarhetsdato | Batch + holdbarhetsdato | B (reservert), ellers A |
| 3 | Serienummer som parti | Partistyrt, ett parti per serienummer | Serienummer | B (reservert), ellers A |
| 4 | Serienummer ved plukk | Serienummertabellen | Ingenting | C: serienummer, addserialnos |
ReceiveListLines (erstatt de utkommenterte UseSerialno/UseBatchno-linjene i standardspørringen):
case when p.batchprofile in ('3') then '1' else '0' end UseSerialno,
case when p.batchprofile in ('1','2') then '1' else '0' end UseBatchno,
case when p.batchprofile in ('2') then '1' else '0' end UseExpiryDate,
p.batchprofile,
PickinglistLines (erstatt de utkommenterte UseSerialno/UseBatchno-linjene og batchno/batchline-linjene i standardspørringen):
-- Linjetyper:
-- Reservert: Business NXT har reservert parti (pl.batchno er fylt ut, type 1-3).
-- Brukeren skanner reservert batch/serienummer (MatchOnScan),
-- og antallet oppdateres på reservasjonen (batchline = reservasjonsnr).
-- Ikke reservert: linje uten pl.batchno (type 1-3). Brukeren angir parti,
-- og partiet sendes på ordrelinjen (batchline = 0).
-- Serienummertabell: type 4. Brukeren skanner serienumre, som logges i serienummertabellen.
-- Serienummer angis av brukeren når partiet ikke er reservert, og alltid for type 4
case when p.batchprofile in ('3','4') and coalesce(pl.batchno,'') = '' then '1' else '0' end UseSerialno,
-- Reservert parti må skannes, ellers angir brukeren batch
case
when coalesce(pl.batchno,'') <> '' then 'MatchOnScan'
when p.batchprofile in ('1','2') then '1'
else '0'
end UseBatchno,
-- Utløpsdato bare for type med holdbarhetsdato
case when p.batchprofile in ('2') then '1' else '0' end UseExpiryDate,
pl.batchno batchno,
pl.batchid batchid,
-- Batchline 0 = partiet sendes på ordrelinjen. Ellers oppdateres reservasjonen
case when p.batchprofile in ('1','2','3') and coalesce(pl.batchno,'') = '' then '0' else pl.batchline end batchline,
-- Serienummer til serienummertabellen bare for type 4
case when p.batchprofile in ('4') then 'true' else '' end cfg_AddSerialNos,
p.batchprofile,
Products:
case when p.batchprofile in ('3') then '1' else '0' end StockTransfer_UseSerialno,
case when p.batchprofile in ('1','2') then '1' else '0' end StockTransfer_UseBatchno,
case when p.batchprofile in ('3') then '1' else '0' end StockAdjustment_UseSerialno,
case when p.batchprofile in ('1','2') then '1' else '0' end StockAdjustment_UseBatchno,
case when p.batchprofile in ('2') then '1' else '0' end StockAdjustment_UseExpiryDate,
p.batchprofile,
Clientconfig (Configuration → Profile): receivelist / showbatchexpirydate = true og pickinglist / showbatchexpirydate = true.
Exportconfig: pickinglist / addserialnos kan stå til false når cfg_AddSerialNos styrer det per linje som i eksemplet. Settes den til true, legges også serienumre fra partistyrte varer i serienummertabellen.
8. Varetelling (StockcountProducts)
Se også Varetelling mot Business NXT for selve gjennomføringen av tellingen.
- Partistyrte varer: Business NXT har beholdning per parti, og tellingen må ha én linje per parti per lokasjon. Aktiver importfieldmappingene
shipment.items.*→BxStockCountBatchunder Import from ERP → stockcountproducts → Import Mapping (de er ikke aktive som standard). Partiene lastes ned til appen fra spørringen StockCountBatches når stockcount / downloadbatches = true. - Standard StockcountProducts setter
'0' UseBatchnoog'0' UseSerialno. SettUseBatchno = '1'for partistyrte varer (type 1–3 i eksemplet). For serienummer kan du setteUseSerialno = '1'ogUseBatchno = '0'(type 3), slik at antallet blir 1 per serienummer. - Varer som bare er satt til telling på partinivå (fanen varepartiliste i Business NXT), kommer ikke med i standard StockcountProducts, som bare leser
BxStockCountProduct. Skal kunden telle på den måten, må spørringen utvides med varene fraBxStockCountBatch. - Nye partier under telling krever stockcount / addnewbatches = true. stockcount / addbatchidonnewbatch = true (standard) holder nye partier adskilt ved sammenslåing.
- Serienummer i serienummertabellen (type 4): ingen beholdning per serienummer. Varene telles som vanlige varer, og spørringen trenger ingen tilpasning.
9. Sjekkliste før produksjon
- Varemottak per type: riktig felt i appen (serienummer, batch, holdbarhetsdato), og partiet blir opprettet riktig i Business NXT med partinummer, lokasjon og eventuelt holdbarhetsdato.
- Plukk med reservert parti: MatchOnScan stopper feil batch, og antallet blir ferdigmeldt på riktig reservasjon i Business NXT.
- Plukk uten reservasjon: partiet som brukeren velger, blir brukt på ordrelinjen i Business NXT.
- Serienummer ved plukk (type 4): serienumrene kommer i serienummertabellen på riktig ordrelinje (addserialnos/cfg_AddSerialNos).
- Partilisten ved plukk, flytting og lagerjustering viser partier (stockbalances-importen er aktiv).
- Flytting og lagerjustering på partistyrte varer krever batch/serienummer. Type 4 krever det ikke.
- Varetelling: talte partier oppdaterer riktig parti, og nye partier kommer inn med riktig partinummer.