The label should be printed automatically when posting occurs
Example 1: Print on Posting Warehouse Pick
// Step 1: Add Header steps // In order to determine when, where and what to print, we add a step on posting [EventSubscriber(ObjectType::Codeunit, Codeunit::"MOB WMS Pick", 'OnPostPickOrder_OnAddStepsToAnyHeader', '', true, true)] localprocedure OnPostPickOrder_OnAddStepsToAnyHeader(var _OrderValues: Record "MOB Common Element"; _RecRef: RecordRef; var _StepsElement: Record "MOB Steps Element") var MobPrint: Codeunit "MOB Print"; begin if (_RecRef.Number() in [DataBase::"Warehouse Activity Header"]) thenbegin// This example is limited to Whse. Picks
// Break when 'Printer' step has been collected to prevent infinite loop if _OrderValues.HasValue('Printer') then exit;
_StepsElement.Create_ListStep(1, 'Printer'); _StepsElement.Set_header('Label print'); _StepsElement.Set_listValues(' ;' + MobPrint.GetMobilePrinters('Item Label 3x2', '')); // Allow user to also select a blank printer _StepsElement.Set_helpLabel('If you want a label, please select a printer.'); end; end;
// Step 2: Handle Header step and issue print // We read the collected step (printer) // Issue a print based on printer, label and the current context (Order Header) [EventSubscriber(ObjectType::Codeunit, Codeunit::"MOB WMS Pick", 'OnPostPickOrder_OnAfterPostAnyOrder', '', true, true)] localprocedure MyOnPostPickOrder_OnAfterPostAnyOrder(var _OrderValues: Record "MOB Common Element"; _RecRef: RecordRef; var _ResultMessage: Text) var MobPrinter: Record "MOB Printer"; TempPrintParameter: Record "MOB Print REST Parameter" temporary; MobPrint: Codeunit "MOB Print"; MobPrintBuffer: Codeunit "MOB Print Buffer"; PrintCommand: Text; begin // If user selected ' ' blank printer, then exit if_OrderValues.GetValue('Printer') = ' ' then exit;
// Init printer parameters Evaluate(TempPrintParameter.Printer, _OrderValues.GetValue('Printer')); // Printer selected TempPrintParameter."Label-Template Name" := 'Item Label 3x2'; // The label to print - consider making this configurable MobPrint.SetSourceRecRef(_RecRef); MobPrint.SetRequestElementsFromOrderValues(_OrderValues);
if MobPrint.Run(TempPrintParameter) thenbegin // Print was is returned from cloud TempPrintParameter.GetResponseContentAsBase64Text(PrintCommand); MobPrint.GetPrinterFromName(MobPrinter, TempPrintParameter.Printer); MobPrintBuffer.Add(MobPrinter.Address, PrintCommand);
endelse // If failed, append Error to ResultMessage _ResultMessage := _ResultMessage + ' Print failed: ' + GetLastErrorText(); end;