How to create a Reservation Entry?

MortenSteengaard
Member Posts: 144
Hi experts,
I'm using NAV 2015 and have created a purchase table with some purchase lines.
Now I need to register one or more Serial numbers and/or Lot numbers regarding one of the lines. How do I do that using C/SIDE code?
I have tried this, but it doesn't create anything:
// I have found the purchLine
doFullReserve := TRUE;
reservationManagement.SetPurchLine(purchLine);
reservationManagement.AutoReserve(doFullReserve, purchLine.Description, WORKDATE, purchLine."Outstanding Quantity", purchLine."Outstanding Qty. (Base)");
I think AutoReserve() cannot find my purchHeader.
It would be really great if someone can give an example where more Serial numbers or Lot numbers can be saved to the same purchase line.
I'm using NAV 2015 and have created a purchase table with some purchase lines.
Now I need to register one or more Serial numbers and/or Lot numbers regarding one of the lines. How do I do that using C/SIDE code?
I have tried this, but it doesn't create anything:
// I have found the purchLine
doFullReserve := TRUE;
reservationManagement.SetPurchLine(purchLine);
reservationManagement.AutoReserve(doFullReserve, purchLine.Description, WORKDATE, purchLine."Outstanding Quantity", purchLine."Outstanding Qty. (Base)");
I think AutoReserve() cannot find my purchHeader.
It would be really great if someone can give an example where more Serial numbers or Lot numbers can be saved to the same purchase line.
0
Best Answer
-
Hello Morten.
1. Then you create Item Tracking in purchase order sistem create line in Reservation Entry with type - Prospect. So you need create reservation entry.
2. PurchReservEntry.InitTrackingSpecification(PurchLIne, NewTrackingSpecification); This line init NewTrackingSpecification for Purch Line
3. Adding information about SerialNo and LotNo in tracking specification. If you need several lot and Serial
- add lines to NewTrackingSpecification. In my example one LotNo for one purchase Line
NewTrackingSpecification."Serial No." := SerialNo;
NewTrackingSpecification."Lot No." := LotNo;
NewTrackingSpecification.VALIDATE("Quantity (Base)", QuantityBase);
(CD No - From Russian localization)
4. Create Reservation Entry for Tracking Specification
CreateReservEntry.SetDates(0D,0D);
CreateReservEntry.SetApplyFromEntryNo(0);
CreateReservEntry.SetApplyToEntryNo(0);
CreateReservEntry.CreateReservEntryFor(
NewTrackingSpecification."Source Type",
NewTrackingSpecification."Source Subtype",
NewTrackingSpecification."Source ID",
NewTrackingSpecification."Source Batch Name",
NewTrackingSpecification."Source Prod. Order Line",
NewTrackingSpecification."Source Ref. No.",
NewTrackingSpecification."Qty. per Unit of Measure",
0,
NewTrackingSpecification."Quantity (Base)",
NewTrackingSpecification."Serial No.",
NewTrackingSpecification."Lot No.",
NewTrackingSpecification."CD No.");
CreateReservEntry.CreateEntry(NewTrackingSpecification."Item No.",
NewTrackingSpecification."Variant Code",
NewTrackingSpecification."Location Code",
NewTrackingSpecification.Description,
PurchLIne."Expected Receipt Date",
PurchLIne."Expected Receipt Date" ,0,3);
last Parameter in CreateEntry function - status - 3 - Prospect
5. This code you can delete. it's my mistake
CurrentSourceRowID := ItemTrackingMgt.ComposeRowID(NewTrackingSpecification."Source Type",
NewTrackingSpecification."Source Subtype",NewTrackingSpecification."Source ID",
NewTrackingSpecification."Source Batch Name",NewTrackingSpecification."Source Prod. Order Line",
NewTrackingSpecification."Source Ref. No.");
SalesLine.RESET;
SalesLine.GET(SalesLine."Document Type"::Order, PurchLIne."Sales Order No.", PurchLIne."Sales Order Line No.");
SaleReservEntry.InitTrackingSpecification(SalesLine, NewTrackingSpecification);
SecondSourceRowID := ItemTrackingMgt.ComposeRowID(NewTrackingSpecification."Source Type",
NewTrackingSpecification."Source Subtype",NewTrackingSpecification."Source ID",
NewTrackingSpecification."Source Batch Name",NewTrackingSpecification."Source Prod. Order Line",
NewTrackingSpecification."Source Ref. No.");
ItemTrackingMgt.SynchronizeItemTracking(CurrentSourceRowID, SecondSourceRowID, '');
5
Answers
-
Hello!
try create item tracking:
PurchReservEntry.InitTrackingSpecification(PurchLIne, NewTrackingSpecification);
NewTrackingSpecification."Serial No." := SerialNo;
NewTrackingSpecification."Lot No." := LotNo;
NewTrackingSpecification."CD No." := CDNo;
NewTrackingSpecification.VALIDATE("Quantity (Base)", QuantityBase);
CreateReservEntry.SetDates(0D,0D);
CreateReservEntry.SetApplyFromEntryNo(0);
CreateReservEntry.SetApplyToEntryNo(0);
CreateReservEntry.CreateReservEntryFor(
NewTrackingSpecification."Source Type",
NewTrackingSpecification."Source Subtype",
NewTrackingSpecification."Source ID",
NewTrackingSpecification."Source Batch Name",
NewTrackingSpecification."Source Prod. Order Line",
NewTrackingSpecification."Source Ref. No.",
NewTrackingSpecification."Qty. per Unit of Measure",
0,
NewTrackingSpecification."Quantity (Base)",
NewTrackingSpecification."Serial No.",
NewTrackingSpecification."Lot No.",
NewTrackingSpecification."CD No.");
CreateReservEntry.CreateEntry(NewTrackingSpecification."Item No.",
NewTrackingSpecification."Variant Code",
NewTrackingSpecification."Location Code",
NewTrackingSpecification.Description,
PurchLIne."Expected Receipt Date",
PurchLIne."Expected Receipt Date" ,0,2);
CurrentSourceRowID := ItemTrackingMgt.ComposeRowID(NewTrackingSpecification."Source Type",
NewTrackingSpecification."Source Subtype",NewTrackingSpecification."Source ID",
NewTrackingSpecification."Source Batch Name",NewTrackingSpecification."Source Prod. Order Line",
NewTrackingSpecification."Source Ref. No.");
SalesLine.RESET;
SalesLine.GET(SalesLine."Document Type"::Order, PurchLIne."Sales Order No.", PurchLIne."Sales Order Line No.");
SaleReservEntry.InitTrackingSpecification(SalesLine, NewTrackingSpecification);
SecondSourceRowID := ItemTrackingMgt.ComposeRowID(NewTrackingSpecification."Source Type",
NewTrackingSpecification."Source Subtype",NewTrackingSpecification."Source ID",
NewTrackingSpecification."Source Batch Name",NewTrackingSpecification."Source Prod. Order Line",
NewTrackingSpecification."Source Ref. No.");
ItemTrackingMgt.SynchronizeItemTracking(CurrentSourceRowID, SecondSourceRowID, '');
NewTrackingSpecification - Table 336
PurchReservEntry - Codeunit Purch/ Line-Reserve
CreateReservEntry - Codeunit Create REserv. Entry
CurrentSourceRowID and SecondSourceRowID - Text 100
And After create Reservation0 -
Hi Alexey,
Thank you very much for your reply.
I am not sure if I wrote my question clear enough.
I need to make some code that do the same as what is done, when a user on a purchLine enters a number of SerialNo's and/or LotNo's in the menu "Item Tracking Lines". There is no records in "Reservation Entries" and I shouldn't use that. (I think that the code, I have found somewhere on the net and that I put in my question, was ment to create a reservation, but I shouldn't do that.)
I also don't have a salesLine. The purchLine is not created because of a salesLine. It is just created manually.
So, should I delete the last lines from "SalesLine.RESET" and to the bottom?
(I also don't have the field NewTrackingSpecification."CD No.". I guess it comes in newer versions of NAV.)
Best regards,
Morten0 -
Hello Morten.
1. Then you create Item Tracking in purchase order sistem create line in Reservation Entry with type - Prospect. So you need create reservation entry.
2. PurchReservEntry.InitTrackingSpecification(PurchLIne, NewTrackingSpecification); This line init NewTrackingSpecification for Purch Line
3. Adding information about SerialNo and LotNo in tracking specification. If you need several lot and Serial
- add lines to NewTrackingSpecification. In my example one LotNo for one purchase Line
NewTrackingSpecification."Serial No." := SerialNo;
NewTrackingSpecification."Lot No." := LotNo;
NewTrackingSpecification.VALIDATE("Quantity (Base)", QuantityBase);
(CD No - From Russian localization)
4. Create Reservation Entry for Tracking Specification
CreateReservEntry.SetDates(0D,0D);
CreateReservEntry.SetApplyFromEntryNo(0);
CreateReservEntry.SetApplyToEntryNo(0);
CreateReservEntry.CreateReservEntryFor(
NewTrackingSpecification."Source Type",
NewTrackingSpecification."Source Subtype",
NewTrackingSpecification."Source ID",
NewTrackingSpecification."Source Batch Name",
NewTrackingSpecification."Source Prod. Order Line",
NewTrackingSpecification."Source Ref. No.",
NewTrackingSpecification."Qty. per Unit of Measure",
0,
NewTrackingSpecification."Quantity (Base)",
NewTrackingSpecification."Serial No.",
NewTrackingSpecification."Lot No.",
NewTrackingSpecification."CD No.");
CreateReservEntry.CreateEntry(NewTrackingSpecification."Item No.",
NewTrackingSpecification."Variant Code",
NewTrackingSpecification."Location Code",
NewTrackingSpecification.Description,
PurchLIne."Expected Receipt Date",
PurchLIne."Expected Receipt Date" ,0,3);
last Parameter in CreateEntry function - status - 3 - Prospect
5. This code you can delete. it's my mistake
CurrentSourceRowID := ItemTrackingMgt.ComposeRowID(NewTrackingSpecification."Source Type",
NewTrackingSpecification."Source Subtype",NewTrackingSpecification."Source ID",
NewTrackingSpecification."Source Batch Name",NewTrackingSpecification."Source Prod. Order Line",
NewTrackingSpecification."Source Ref. No.");
SalesLine.RESET;
SalesLine.GET(SalesLine."Document Type"::Order, PurchLIne."Sales Order No.", PurchLIne."Sales Order Line No.");
SaleReservEntry.InitTrackingSpecification(SalesLine, NewTrackingSpecification);
SecondSourceRowID := ItemTrackingMgt.ComposeRowID(NewTrackingSpecification."Source Type",
NewTrackingSpecification."Source Subtype",NewTrackingSpecification."Source ID",
NewTrackingSpecification."Source Batch Name",NewTrackingSpecification."Source Prod. Order Line",
NewTrackingSpecification."Source Ref. No.");
ItemTrackingMgt.SynchronizeItemTracking(CurrentSourceRowID, SecondSourceRowID, '');
5 -
Hi Alexey,
Thank you very much! It works fine.
If I buy 3 items (on one purchase line) and receive and post 2 and then later try to use this code, I get an error. I solved it by setting NewTrackingSpecification."Quantity Handled (Base)" and NewTrackingSpecification."Quantity (Base)" to 1.
So now the code looks like this:
NewTrackingSpecification.RESET;
PurchReservEntry.InitTrackingSpecification(purchLine, NewTrackingSpecification);
NewTrackingSpecification."Serial No." := serialNo;
NewTrackingSpecification."Lot No." := lotNo;
NewTrackingSpecification.VALIDATE("Quantity Handled (Base)", 1);
NewTrackingSpecification.VALIDATE("Quantity (Base)", 1);
CreateReservEntry.SetDates(0D,0D);
CreateReservEntry.SetApplyFromEntryNo(0);
CreateReservEntry.SetApplyToEntryNo(0);
CreateReservEntry.CreateReservEntryFor(NewTrackingSpecification."Source Type",
NewTrackingSpecification."Source Subtype",
NewTrackingSpecification."Source ID",
NewTrackingSpecification."Source Batch Name",
NewTrackingSpecification."Source Prod. Order Line",
NewTrackingSpecification."Source Ref. No.",
NewTrackingSpecification."Qty. per Unit of Measure",
0,
NewTrackingSpecification."Quantity (Base)",
NewTrackingSpecification."Serial No.",
NewTrackingSpecification."Lot No.");
CreateReservEntry.CreateEntry(NewTrackingSpecification."Item No.",
NewTrackingSpecification."Variant Code",
NewTrackingSpecification."Location Code",
NewTrackingSpecification.Description,
purchLine."Expected Receipt Date",
purchLine."Expected Receipt Date", 0, 3);
Once again, thank you very much, Alexey!
Best regards,
Morten0
Categories
- All Categories
- 73 General
- 73 Announcements
- 66.6K Microsoft Dynamics NAV
- 18.7K NAV Three Tier
- 38.4K NAV/Navision Classic Client
- 3.6K Navision Attain
- 2.4K Navision Financials
- 116 Navision DOS
- 851 Navision e-Commerce
- 1K NAV Tips & Tricks
- 772 NAV Dutch speaking only
- 617 NAV Courses, Exams & Certification
- 2K Microsoft Dynamics-Other
- 1.5K Dynamics AX
- 320 Dynamics CRM
- 111 Dynamics GP
- 10 Dynamics SL
- 1.5K Other
- 990 SQL General
- 383 SQL Performance
- 34 SQL Tips & Tricks
- 35 Design Patterns (General & Best Practices)
- 1 Architectural Patterns
- 10 Design Patterns
- 5 Implementation Patterns
- 53 3rd Party Products, Services & Events
- 1.6K General
- 1.1K General Chat
- 1.6K Website
- 83 Testing
- 1.2K Download section
- 23 How Tos section
- 252 Feedback
- 12 NAV TechDays 2013 Sessions
- 13 NAV TechDays 2012 Sessions