OBJECT Codeunit 50070 Shop Floor Barcodes Mng { OBJECT-PROPERTIES { Date=04/09/14; Time=12:00:00 PM; Version List=OSSB14.1; } PROPERTIES { OnRun=BEGIN END; } CODE { VAR Text001@1000000002 : TextConst 'ENU=Document Not Found!;ESP=Documento No Encontrado!;FRA=Document non trouv‚;NOR=Dokument Ikke Funnet!;NLB=Document Niet Gevonden!'; Text002@1000000001 : TextConst 'DAN=Der er intet at h†ndtere.;DEU=Es gibt nichts zu bewegen.;ENU=Nothing to handle!;ESP=Nada a manipular.;FRA=Il n''y a rien … traiter.;NOR=Ingenting † h†ndtere.;NLB=Niets te verwerken.'; Text003@1000000000 : TextConst 'ENU=Production Order has been changed to Finished!'; PROCEDURE "---GenerateBarcodeFunctions---"@1000000008(); BEGIN END; PROCEDURE WhseActBC@1000000006(WhseActHeader@1000000000 : Record 5766) Barcode : Text[250]; BEGIN IF WhseActHeader.Type = WhseActHeader.Type::"Put-away" THEN EXIT(MakeBarcode('10' + '$' + WhseActHeader."No.")); IF WhseActHeader.Type = WhseActHeader.Type::Movement THEN EXIT(MakeBarcode('11' + '$' + WhseActHeader."No.")); IF WhseActHeader.Type = WhseActHeader.Type::Pick THEN EXIT(MakeBarcode('12' + '$' + WhseActHeader."No.")); IF WhseActHeader.Type = WhseActHeader.Type::"Invt. Put-away" THEN EXIT(MakeBarcode('13' + '$' + WhseActHeader."No.")); IF WhseActHeader.Type = WhseActHeader.Type::"Invt. Pick" THEN EXIT(MakeBarcode('14' + '$' + WhseActHeader."No.")); END; PROCEDURE WhseReceiveBC@1000000016(WhseReceiptHeader@1000000000 : Record 7316) Barcode : Text[250]; BEGIN EXIT(MakeBarcode('15' + '$' + WhseReceiptHeader."No.")); END; PROCEDURE WhseShipmentBC@1000000002(WhseShipHeader@1000000000 : Record 7320) Barcode : Text[250]; BEGIN EXIT(MakeBarcode('16' + '$' + WhseShipHeader."No.")); END; PROCEDURE TransOrderBC@1000000022(TransferHeader@1000000000 : Record 5740) Barcode : Text[250]; BEGIN EXIT(MakeBarcode('17' + '$' + TransferHeader."No.")); END; PROCEDURE ProdOrderBC@1000000000(ProdOrder@1000000000 : Record 5405) Barcode : Text[250]; BEGIN IF ProdOrder.Status = ProdOrder.Status::Simulated THEN EXIT(MakeBarcode('20' + '$' + ProdOrder."No.")); IF ProdOrder.Status = ProdOrder.Status::Planned THEN EXIT(MakeBarcode('21' + '$' + ProdOrder."No.")); IF ProdOrder.Status = ProdOrder.Status::"Firm Planned" THEN EXIT(MakeBarcode('22' + '$' + ProdOrder."No.")); IF ProdOrder.Status = ProdOrder.Status::Released THEN EXIT(MakeBarcode('23' + '$' + ProdOrder."No.")); IF ProdOrder.Status = ProdOrder.Status::Finished THEN EXIT(MakeBarcode('24' + '$' + ProdOrder."No.")); END; PROCEDURE CreatePutAwayForPurchOrderBC@1000000019(PurchaseHeader@1000000000 : Record 38) Barcode : Text[250]; BEGIN EXIT(MakeBarcode('30' + '$' + PurchaseHeader."No.")); END; PROCEDURE CreatePickForWhseShipBC@1000000020(WhseShipHeader@1000000000 : Record 7320) Barcode : Text[250]; BEGIN EXIT(MakeBarcode('31' + '$' + WhseShipHeader."No.")); END; PROCEDURE CreatePickForProdOrderBC@1000000021(ProdOrder@1000000000 : Record 5405) Barcode : Text[250]; BEGIN IF ProdOrder.Status = ProdOrder.Status::Simulated THEN EXIT(MakeBarcode('32' + '$' + ProdOrder."No." + '$0$' + '20')); IF ProdOrder.Status = ProdOrder.Status::Planned THEN EXIT(MakeBarcode('32' + '$' + ProdOrder."No." + '$0$' + '21')); IF ProdOrder.Status = ProdOrder.Status::"Firm Planned" THEN EXIT(MakeBarcode('32' + '$' + ProdOrder."No." + '$0$' + '22')); IF ProdOrder.Status = ProdOrder.Status::Released THEN EXIT(MakeBarcode('32' + '$' + ProdOrder."No." + '$0$' + '23')); IF ProdOrder.Status = ProdOrder.Status::Finished THEN EXIT(MakeBarcode('32' + '$' + ProdOrder."No." + '$0$' + '24')); END; PROCEDURE CreatePickForSalesOrderBC@1000000005(SalesHeader@1000000000 : Record 36) Barcode : Text[250]; BEGIN EXIT(MakeBarcode('33' + '$' + SalesHeader."No.")); END; PROCEDURE DisplayProductionJournalBC@1000000007(ProdOrderLine@1000000000 : Record 5406) Barcode : Text[250]; BEGIN IF ProdOrderLine.Status = ProdOrderLine.Status::Simulated THEN EXIT(MakeBarcode('34' + '$' + ProdOrderLine."Prod. Order No." + '$' + FORMAT(ProdOrderLine."Line No.") + '$' + '20')); IF ProdOrderLine.Status = ProdOrderLine.Status::Planned THEN EXIT(MakeBarcode('34' + '$' + ProdOrderLine."Prod. Order No." + '$' + FORMAT(ProdOrderLine."Line No.") + '$' + '21')); IF ProdOrderLine.Status = ProdOrderLine.Status::"Firm Planned" THEN EXIT(MakeBarcode('34' + '$' + ProdOrderLine."Prod. Order No." + '$' + FORMAT(ProdOrderLine."Line No.") + '$' + '22')); IF ProdOrderLine.Status = ProdOrderLine.Status::Released THEN EXIT(MakeBarcode('34' + '$' + ProdOrderLine."Prod. Order No." + '$' + FORMAT(ProdOrderLine."Line No.") + '$' + '23')); IF ProdOrderLine.Status = ProdOrderLine.Status::Finished THEN EXIT(MakeBarcode('34' + '$' + ProdOrderLine."Prod. Order No." + '$' + FORMAT(ProdOrderLine."Line No.") + '$' + '24')); END; PROCEDURE FinishProdOrderBC@1000000014(ProdOrder@1000000000 : Record 5405) Barcode : Text[250]; BEGIN IF ProdOrder.Status = ProdOrder.Status::Simulated THEN EXIT(MakeBarcode('35' + '$' + ProdOrder."No." + '$0$' + '20')); IF ProdOrder.Status = ProdOrder.Status::Planned THEN EXIT(MakeBarcode('35' + '$' + ProdOrder."No." + '$0$' + '21')); IF ProdOrder.Status = ProdOrder.Status::"Firm Planned" THEN EXIT(MakeBarcode('35' + '$' + ProdOrder."No." + '$0$' + '22')); IF ProdOrder.Status = ProdOrder.Status::Released THEN EXIT(MakeBarcode('35' + '$' + ProdOrder."No." + '$0$' + '23')); IF ProdOrder.Status = ProdOrder.Status::Finished THEN EXIT(MakeBarcode('35' + '$' + ProdOrder."No." + '$0$' + '24')); END; PROCEDURE DisplayProdOrderCompBC@1000000004(ProdOrderLine@1000000000 : Record 5406) Barcode : Text[250]; BEGIN IF ProdOrderLine.Status = ProdOrderLine.Status::Simulated THEN EXIT(MakeBarcode('36' + '$' + ProdOrderLine."Prod. Order No." + '$' + FORMAT(ProdOrderLine."Line No.") + '$' + '20')); IF ProdOrderLine.Status = ProdOrderLine.Status::Planned THEN EXIT(MakeBarcode('36' + '$' + ProdOrderLine."Prod. Order No." + '$' + FORMAT(ProdOrderLine."Line No.") + '$' + '21')); IF ProdOrderLine.Status = ProdOrderLine.Status::"Firm Planned" THEN EXIT(MakeBarcode('36' + '$' + ProdOrderLine."Prod. Order No." + '$' + FORMAT(ProdOrderLine."Line No.") + '$' + '22')); IF ProdOrderLine.Status = ProdOrderLine.Status::Released THEN EXIT(MakeBarcode('36' + '$' + ProdOrderLine."Prod. Order No." + '$' + FORMAT(ProdOrderLine."Line No.") + '$' + '23')); IF ProdOrderLine.Status = ProdOrderLine.Status::Finished THEN EXIT(MakeBarcode('36' + '$' + ProdOrderLine."Prod. Order No." + '$' + FORMAT(ProdOrderLine."Line No.") + '$' + '24')); END; PROCEDURE CreatePickForTransferOrderBC@1000000027(TransferHeader@1000000000 : Record 5740) Barcode : Text[205]; BEGIN EXIT(MakeBarcode('37' + '$' + TransferHeader."No.")); END; PROCEDURE "---DisplayDocumentFunctions---"@1000000009(); BEGIN END; PROCEDURE HandleBarcodeScan@1000000001(Barcode@1000000000 : Text[250]); VAR Type@1000000001 : Text[30]; DocumentNo@1000000002 : Code[20]; DocumentLineNo@1000000007 : Text[30]; SubType@1000000006 : Text[30]; X@1000000013 : Integer; Y@1000000014 : Integer; WhsePutAwayForm@1000000004 : Page 5770; WhseMoveForm@1000000005 : Page 7315; WhsePickForm@1000000003 : Page 5779; InvPutAwayForm@1000000017 : Page 7375; InvPickForm@1000000018 : Page 7377; WhseReceiptForm@1000000023 : Page 5768; WhseShipForm@1000000019 : Page 7335; TransferOrderForm@1000000016 : Page 5740; WarehouseAct@1000000011 : Record 5766; WhseReceipt@1000000015 : Record 7316; WhseShipment@1000000020 : Record 7320; TransferHeader@1000000022 : Record 5740; BEGIN FOR X := 1 TO STRLEN(Barcode) DO BEGIN IF COPYSTR(Barcode, X, 1) = '$' THEN BEGIN Y += 1; X += 1; END; IF Y = 0 THEN Type := Type + COPYSTR(Barcode, X, 1); IF Y = 1 THEN DocumentNo := DocumentNo + COPYSTR(Barcode, X, 1); IF Y = 2 THEN DocumentLineNo := DocumentLineNo + COPYSTR(Barcode, X, 1); IF Y = 3 THEN SubType := SubType + COPYSTR(Barcode, X, 1); END; CASE Type OF '10': BEGIN WarehouseAct.SETRANGE(Type, WarehouseAct.Type::"Put-away"); WarehouseAct.SETRANGE("No.", DocumentNo); IF WarehouseAct.FIND('-') THEN BEGIN WhsePutAwayForm.SETTABLEVIEW(WarehouseAct); WhsePutAwayForm.RUN; END ELSE ERROR(Text001); END; '11': BEGIN WarehouseAct.SETRANGE(Type, WarehouseAct.Type::Movement); WarehouseAct.SETRANGE("No.", DocumentNo); IF WarehouseAct.FIND('-') THEN BEGIN WhseMoveForm.SETTABLEVIEW(WarehouseAct); WhseMoveForm.RUN; END ELSE ERROR(Text001); END; '12': BEGIN WarehouseAct.SETRANGE(Type, WarehouseAct.Type::Pick); WarehouseAct.SETRANGE("No.", DocumentNo); IF WarehouseAct.FIND('-') THEN BEGIN WhsePickForm.SETTABLEVIEW(WarehouseAct); WhsePickForm.RUN; END ELSE ERROR(Text001); END; '13': BEGIN WarehouseAct.SETRANGE(Type, WarehouseAct.Type::"Invt. Put-away"); WarehouseAct.SETRANGE("No.", DocumentNo); IF WarehouseAct.FIND('-') THEN BEGIN InvPutAwayForm.SETTABLEVIEW(WarehouseAct); InvPutAwayForm.RUN; END ELSE ERROR(Text001); END; '14': BEGIN WarehouseAct.SETRANGE(Type, WarehouseAct.Type::"Invt. Pick"); WarehouseAct.SETRANGE("No.", DocumentNo); IF WarehouseAct.FIND('-') THEN BEGIN InvPickForm.SETTABLEVIEW(WarehouseAct); InvPickForm.RUN; END ELSE ERROR(Text001); END; '15': BEGIN WhseReceipt.SETRANGE("No.", DocumentNo); IF WhseReceipt.FIND('-') THEN BEGIN WhseReceiptForm.SETTABLEVIEW(WhseReceipt); WhseReceiptForm.RUN; END ELSE ERROR(Text001); END; '16': BEGIN WhseShipment.SETRANGE("No.", DocumentNo); IF WhseShipment.FIND('-') THEN BEGIN WhseShipForm.SETTABLEVIEW(WhseShipment); WhseShipForm.RUN; END ELSE ERROR(Text001); END; '17': BEGIN TransferHeader.SETRANGE("No.", DocumentNo); IF TransferHeader.FIND('-') THEN BEGIN TransferOrderForm.SETTABLEVIEW(TransferHeader); TransferOrderForm.RUN; END ELSE ERROR(Text001); END; '20': BEGIN DisplayProductionOrder(Type, DocumentNo); END; '21': BEGIN DisplayProductionOrder(Type, DocumentNo); END; '22': BEGIN DisplayProductionOrder(Type, DocumentNo); END; '23': BEGIN DisplayProductionOrder(Type, DocumentNo); END; '24': BEGIN DisplayProductionOrder(Type, DocumentNo); END; '30': BEGIN CreatePutAwayForPurchOrder(DocumentNo); END; '31': BEGIN CreatePickForWhseShipment(DocumentNo); END; '32': BEGIN CreatePickForProdOrder(Type, DocumentNo, SubType); END; '33': BEGIN CreatePickForSalesOrder(DocumentNo); END; '34': BEGIN DisplayProductionJournal(Type, DocumentNo, DocumentLineNo, SubType); END; '35': BEGIN FinishProdOrder(Type, DocumentNo, SubType); END; '36': BEGIN DisplayProdOrderComp(Type, DocumentNo, DocumentLineNo, SubType); END; '37': BEGIN CreatePickForTransferOrder(DocumentNo); END; END; END; LOCAL PROCEDURE DisplayProductionOrder@1000000013(Type@1000000001 : Text[30];DocumentNo@1000000000 : Code[20]); VAR SProdOrderForm@1000000007 : Page 99000912; PProdOrderForm@1000000006 : Page 99000813; FPProdOrderForm@1000000005 : Page 99000829; RProdOrderForm@1000000004 : Page 99000831; FProdOrderForm@1000000003 : Page 99000867; ProdOrder@1000000002 : Record 5405; BEGIN GetProductionOrder(Type, DocumentNo, ProdOrder); CASE ProdOrder.Status OF ProdOrder.Status::Simulated : BEGIN ProdOrder.SETRANGE(Status, ProdOrder.Status); ProdOrder.SETRANGE("No.", ProdOrder."No."); IF ProdOrder.FIND('-') THEN BEGIN SProdOrderForm.SETTABLEVIEW(ProdOrder); SProdOrderForm.RUN; END ELSE ERROR(Text001); END; ProdOrder.Status::Planned : BEGIN ProdOrder.SETRANGE(Status, ProdOrder.Status); ProdOrder.SETRANGE("No.", ProdOrder."No."); IF ProdOrder.FIND('-') THEN BEGIN PProdOrderForm.SETTABLEVIEW(ProdOrder); PProdOrderForm.RUN; END ELSE ERROR(Text001); END; ProdOrder.Status::"Firm Planned" : BEGIN ProdOrder.SETRANGE(Status, ProdOrder.Status); ProdOrder.SETRANGE("No.", ProdOrder."No."); IF ProdOrder.FIND('-') THEN BEGIN FPProdOrderForm.SETTABLEVIEW(ProdOrder); FPProdOrderForm.RUN; END ELSE ERROR(Text001); END; ProdOrder.Status::Released : BEGIN ProdOrder.SETRANGE(Status, ProdOrder.Status); ProdOrder.SETRANGE("No.", ProdOrder."No."); IF ProdOrder.FIND('-') THEN BEGIN RProdOrderForm.SETTABLEVIEW(ProdOrder); RProdOrderForm.RUN; END ELSE ERROR(Text001); END; ProdOrder.Status::Finished : BEGIN ProdOrder.SETRANGE(Status, ProdOrder.Status); ProdOrder.SETRANGE("No.", ProdOrder."No."); IF ProdOrder.FIND('-') THEN BEGIN FProdOrderForm.SETTABLEVIEW(ProdOrder); FProdOrderForm.RUN; END ELSE ERROR(Text001); END; END; END; LOCAL PROCEDURE CreatePutAwayForPurchOrder@1000000033(PurchaseOrderNo@1000000000 : Code[20]); VAR PurchaseHeader@1000000001 : Record 38; WhseRequest@1000000002 : Record 5765; CreateInvtPutAwayPickMvmt@1000000003 : Report 7323; BEGIN PurchaseHeader.GET(PurchaseHeader."Document Type"::Order, PurchaseOrderNo); PurchaseHeader.TESTFIELD(Status, PurchaseHeader.Status::Released); WhseRequest.RESET; WhseRequest.SETCURRENTKEY("Source Document", "Source No."); WhseRequest.SETRANGE("Source Document", WhseRequest."Source Document"::"Purchase Order"); WhseRequest.SETRANGE("Source No.", PurchaseHeader."No."); CreateInvtPutAwayPickMvmt.InitializeRequest(TRUE, FALSE, FALSE, TRUE {Print}, TRUE); CreateInvtPutAwayPickMvmt.SETTABLEVIEW(WhseRequest); CreateInvtPutAwayPickMvmt.USEREQUESTPAGE(FALSE); CreateInvtPutAwayPickMvmt.RUNMODAL; END; LOCAL PROCEDURE CreatePickForWhseShipment@1000000010(WhseShipmentNo@1000000000 : Code[20]); VAR WhseShipHeader@1000000001 : Record 7320; WhseShipLine@1000000002 : Record 7321; ReleaseWhseShipment@1000000003 : Codeunit 7310; CreatePickFromWhseShpt@1000000005 : Report 7318; SortActivity@1000000006 : ' ,Item,Document,Shelf or Bin,Due Date,Destination,Bin Ranking,Action Type'; BEGIN WhseShipHeader.GET(WhseShipmentNo); IF WhseShipHeader.Status = WhseShipHeader.Status::Open THEN ReleaseWhseShipment.Release(WhseShipHeader); WhseShipHeader.SETRANGE("No.", WhseShipmentNo); WhseShipLine.SETRANGE("No.", WhseShipmentNo); WhseShipLine.SETFILTER(Quantity, '>0'); WhseShipLine.SETRANGE("Completely Picked", FALSE); IF WhseShipLine.FIND('-') THEN BEGIN CreatePickFromWhseShpt.SetWhseShipmentLine(WhseShipLine, WhseShipHeader); CreatePickFromWhseShpt.SetHideValidationDialog(FALSE); CreatePickFromWhseShpt.Initialize('', //Assigned to UserID SortActivity::"Shelf or Bin", //Sorting TRUE, //Print TRUE, //Do not fill Qty. to Handle FALSE); //Breakbulk CreatePickFromWhseShpt.USEREQUESTPAGE(FALSE); CreatePickFromWhseShpt.RUNMODAL; CreatePickFromWhseShpt.GetResultMessage; CLEAR(CreatePickFromWhseShpt); END ELSE MESSAGE(Text002); END; LOCAL PROCEDURE CreatePickForProdOrder@1000000012(Type@1000000009 : Text[30];DocumentNo@1000000008 : Code[20];SubType@1000000000 : Text[30]); VAR ProdOrderHeader@1000000004 : Record 5405; ProdOrderCompLine@1000000001 : Record 5407; ItemTrackingMgt@1000000002 : Codeunit 6500; WhseSourceType@1000000003 : ' ,Receipt,Shipment,Internal Put-away,Internal Pick,Production'; CreatePickFromWhseSource@1000000005 : Report 7305; SortActivity@1000000006 : ' ,Item,Document,Shelf or Bin,Due Date,Destination,Bin Ranking,Action Type'; Location@1000000007 : Record 14; WhseRequest@1000000010 : Record 5765; CreateInvtPutAwayPickMvmt@1000000011 : Report 7323; BEGIN GetProductionOrder(SubType, DocumentNo, ProdOrderHeader); IF ProdOrderHeader.Status <> ProdOrderHeader.Status::Released THEN ERROR(Text002); Location.GET(ProdOrderHeader."Location Code"); IF Location."Directed Put-away and Pick" THEN BEGIN ProdOrderCompLine.RESET; ProdOrderCompLine.SETRANGE(Status, ProdOrderCompLine.Status::Released); ProdOrderCompLine.SETRANGE("Prod. Order No.", ProdOrderHeader."No."); IF ProdOrderCompLine.FIND('-') THEN REPEAT ItemTrackingMgt.InitItemTrkgForTempWkshLine( WhseSourceType::Production, ProdOrderCompLine."Prod. Order No.", ProdOrderCompLine."Prod. Order Line No.", DATABASE::"Prod. Order Component", ProdOrderCompLine.Status, ProdOrderCompLine."Prod. Order No.", ProdOrderCompLine."Prod. Order Line No.", ProdOrderCompLine."Line No."); UNTIL ProdOrderCompLine.NEXT = 0; COMMIT; ProdOrderHeader.TESTFIELD(Status, ProdOrderHeader.Status::Released); ProdOrderHeader.CALCFIELDS("Completely Picked"); IF ProdOrderHeader."Completely Picked" THEN ERROR(Text002); ProdOrderCompLine.SETRANGE(Status, ProdOrderHeader.Status); ProdOrderCompLine.SETRANGE("Prod. Order No.", ProdOrderHeader."No."); ProdOrderCompLine.SETFILTER( "Flushing Method",'%1|%2|%3', ProdOrderCompLine."Flushing Method"::Manual, ProdOrderCompLine."Flushing Method"::"Pick + Forward", ProdOrderCompLine."Flushing Method"::"Pick + Backward"); ProdOrderCompLine.SETRANGE("Planning Level Code", 0); ProdOrderCompLine.SETFILTER("Expected Quantity", '>0'); IF ProdOrderCompLine.FIND('-') THEN BEGIN CreatePickFromWhseSource.SetProdOrder(ProdOrderHeader); CreatePickFromWhseSource.SetHideValidationDialog(FALSE); CreatePickFromWhseSource.Initialize('', //Assigned to UserID SortActivity::"Shelf or Bin", //Sort TRUE, //Print TRUE, //Do not fill Qty. to Handle FALSE); //Breakbulk CreatePickFromWhseSource.USEREQUESTPAGE(FALSE); CreatePickFromWhseSource.RUNMODAL; CreatePickFromWhseSource.GetResultMessage(2); CLEAR(CreatePickFromWhseSource); END ELSE MESSAGE(Text002); END ELSE IF Location."Require Pick" THEN BEGIN ProdOrderHeader.TESTFIELD(Status, ProdOrderHeader.Status::Released); WhseRequest.RESET; WhseRequest.SETCURRENTKEY("Source Document","Source No."); WhseRequest.SETRANGE("Source Document", WhseRequest."Source Document"::"Prod. Consumption"); WhseRequest.SETRANGE("Source No.", ProdOrderHeader."No."); CreateInvtPutAwayPickMvmt.InitializeRequest(FALSE, TRUE, FALSE, TRUE {Print}, TRUE); CreateInvtPutAwayPickMvmt.SETTABLEVIEW(WhseRequest); CreateInvtPutAwayPickMvmt.USEREQUESTPAGE(FALSE); CreateInvtPutAwayPickMvmt.RUNMODAL; END; END; LOCAL PROCEDURE CreatePickForSalesOrder@1000000035(SalesOrderNo@1000000000 : Code[20]); VAR SalesHeader@1000000001 : Record 36; WhseRequest@1000000002 : Record 5765; CreateInvtPutAwayPickMvmt@1000000003 : Report 7323; BEGIN SalesHeader.GET(SalesHeader."Document Type"::Order, SalesOrderNo); SalesHeader.TESTFIELD(Status, SalesHeader.Status::Released); WhseRequest.RESET; WhseRequest.SETCURRENTKEY("Source Document", "Source No."); WhseRequest.SETRANGE("Source Document", WhseRequest."Source Document"::"Sales Order"); WhseRequest.SETRANGE("Source No.", SalesHeader."No."); CreateInvtPutAwayPickMvmt.InitializeRequest(FALSE, TRUE, FALSE, TRUE {Print}, TRUE); CreateInvtPutAwayPickMvmt.SETTABLEVIEW(WhseRequest); CreateInvtPutAwayPickMvmt.USEREQUESTPAGE(FALSE); CreateInvtPutAwayPickMvmt.RUNMODAL; END; LOCAL PROCEDURE DisplayProductionJournal@1000000036(Type@1000000002 : Text[30];DocumentNo@1000000001 : Code[20];DocumentLineNo@1000000004 : Text[30];SubType@1000000000 : Text[30]); VAR ProdOrder@1000000003 : Record 5405; LineNo@1000000006 : Integer; ProductionJrnlMgt@1000000005 : Codeunit 5510; BEGIN GetProductionOrder(SubType, DocumentNo, ProdOrder); IF ProdOrder.Status <> ProdOrder.Status::Released THEN ERROR(Text002); EVALUATE(LineNo, DocumentLineNo); CLEAR(ProductionJrnlMgt); ProductionJrnlMgt.Handling(ProdOrder, LineNo); END; LOCAL PROCEDURE FinishProdOrder@1000000024(Type@1000000009 : Text[30];DocumentNo@1000000008 : Code[20];SubType@1000000000 : Text[30]); VAR ProdOrderHeader@1000000004 : Record 5405; ProdOrderStatusMng@1000000001 : Codeunit 5407; NewStatus@1000000002 : 'Quote,Planned,Firm Planned,Released,Finished'; BEGIN GetProductionOrder(SubType, DocumentNo, ProdOrderHeader); IF ProdOrderHeader.Status <> ProdOrderHeader.Status::Released THEN ERROR(Text002); ProdOrderStatusMng.ChangeStatusOnProdOrder(ProdOrderHeader, NewStatus::Finished, TODAY, TRUE); MESSAGE(Text003); END; LOCAL PROCEDURE DisplayProdOrderComp@1000000017(Type@1000000002 : Text[30];DocumentNo@1000000001 : Code[20];DocumentLineNo@1000000004 : Text[30];SubType@1000000000 : Text[30]); VAR ProdOrder@1000000003 : Record 5405; LineNo@1000000006 : Integer; ProdOrderComp@1000000007 : Record 5407; ProdOrderCompForm@1000000005 : Page 99000818; BEGIN GetProductionOrder(SubType, DocumentNo, ProdOrder); EVALUATE(LineNo, DocumentLineNo); ProdOrderComp.SETRANGE(Status, ProdOrder.Status); ProdOrderComp.SETRANGE("Prod. Order No.", ProdOrder."No."); ProdOrderComp.SETRANGE("Prod. Order Line No.", LineNo); ProdOrderCompForm.SETTABLEVIEW(ProdOrderComp); ProdOrderCompForm.RUN; END; LOCAL PROCEDURE GetProductionOrder@1000000003(Type@1000000001 : Text[30];DocumentNo@1000000000 : Code[20];VAR ProdOrder@1000000002 : Record 5405); BEGIN CASE Type OF '20': BEGIN IF NOT ProdOrder.GET(ProdOrder.Status::Simulated, DocumentNo) THEN BEGIN ProdOrder.SETRANGE("Simulated Order No.", DocumentNo); IF NOT ProdOrder.FINDFIRST THEN ERROR(Text001); END; END; '21': BEGIN IF NOT ProdOrder.GET(ProdOrder.Status::Planned, DocumentNo) THEN BEGIN ProdOrder.SETRANGE("Planned Order No.", DocumentNo); IF NOT ProdOrder.FINDFIRST THEN ERROR(Text001); END; END; '22': BEGIN IF NOT ProdOrder.GET(ProdOrder.Status::"Firm Planned", DocumentNo) THEN BEGIN ProdOrder.SETRANGE("Firm Planned Order No.", DocumentNo); IF NOT ProdOrder.FINDFIRST THEN ERROR(Text001); END; END; '23': BEGIN IF NOT ProdOrder.GET(ProdOrder.Status::Released, DocumentNo) THEN ERROR(Text001); END; '24': BEGIN IF NOT ProdOrder.GET(ProdOrder.Status::Finished, DocumentNo) THEN ERROR(Text001); END; ELSE ERROR(Text001); END; END; LOCAL PROCEDURE CreatePickForTransferOrder@1000000018(TransferOrderNo@1000000000 : Code[20]); VAR TransferHeader@1000000001 : Record 5740; WhseRequest@1000000002 : Record 5765; CreateInvtPutAwayPickMvmt@1000000003 : Report 7323; BEGIN TransferHeader.GET(TransferOrderNo); TransferHeader.TESTFIELD(Status, TransferHeader.Status::Released); WhseRequest.RESET; WhseRequest.SETCURRENTKEY("Source Document", "Source No."); WhseRequest.SETRANGE("Source Document", WhseRequest."Source Document"::"Outbound Transfer"); WhseRequest.SETRANGE("Source No.", TransferHeader."No."); CreateInvtPutAwayPickMvmt.InitializeRequest(FALSE, TRUE, FALSE, TRUE {Print}, TRUE); CreateInvtPutAwayPickMvmt.SETTABLEVIEW(WhseRequest); CreateInvtPutAwayPickMvmt.USEREQUESTPAGE(FALSE); CreateInvtPutAwayPickMvmt.RUNMODAL; END; PROCEDURE "---LocalFunctions---"@1000000011(); BEGIN END; LOCAL PROCEDURE MakeBarcode@1000000015(InStr@1000000000 : Text[250]) : Text[250]; BEGIN //Code 39 EXIT('*' + InStr + '*'); END; BEGIN { ************************************************************************************************************************** Created and Designed by Olof Simren 2005 Downloaded from olofsimren.com For illustration only, without warranty, free to use as you want. ************************************************************************************************************************** -----------Display Whse. Documents-------------- 10: Warehouse Put-Away 11: Warehouse Movement 12: Warehouse Pick 13: Inventory Put-Away 14: Inventory Pick 15: Warehouse Receipt 16: Warehouse Shipment 17: Transfer Order -----------Display Production Documents--------- 20: Simulated Production Order 21: Planned Production Order 22: Firm Planned Production Order 23: Released Production Order 24: Finished Production Order -----------Functions------------------- 30: Create Put-Away for Purchase Order 31: Create Pick for Warehouse Shipment 32: Create Pick for Production Order 33: Create Pick for Sales Order 34: Display Production Journal 35: Finish Production Order 36: Display Production Order Components 37: Create Pick for Transfer Order } END. } } OBJECT Page 50070 Shop Floor Barcode Scan { OBJECT-PROPERTIES { Date=04/09/14; Time=12:00:00 PM; Version List=OSSB14.1; } PROPERTIES { PageType=CardPart; } CONTROLS { { 1000000000;0;Container; ContainerType=ContentArea } { 1000000001;1;Field ; Name=Barcode; SourceExpr=Barcode; OnValidate=BEGIN DocumentLookupMng.HandleBarcodeScan(Barcode); Barcode := ''; END; } { 1000000002;1;Field ; Name=Company Name; SourceExpr=COMPANYNAME; Enabled=FALSE; Editable=FALSE } { 1000000003;1;Field ; Name=User ID; SourceExpr=USERID; Enabled=FALSE; Editable=FALSE } } CODE { VAR Barcode@1000000001 : Code[100]; DocumentLookupMng@1000000000 : Codeunit 50070; BEGIN END. } }