Code examples

1 Lines on Invoice: send customized dimension and value:

C#
[EventSubscriber(ObjectType::Table, database::"B2X BackboneDocHeaderTmp", 'OnGetSalesInvoiceOnBeforeInsertDimensions', '', true, true)]
    local procedure AddCustomDimensions(SalesInvoiceLine: Record "Sales Invoice Line"; var TempDimensionValueBuffer: Record "B2X TempDimensionValueBuffer" temporary)
    var
        Item: Record Item;
    begin
        if SalesInvoiceLine.Type = SalesInvoiceLine.Type::Item then begin
            Item.Get(SalesInvoiceLine."No.");
            if (Item."Alcohol %" <> 0) or (Item."Volumen (Liter)" <> 0) then begin
                TempDimensionValueBuffer.Init();
                TempDimensionValueBuffer.Dimension := 'dutyFactor';
                TempDimensionValueBuffer.Value := format(Item."Alcohol %");
                TempDimensionValueBuffer.Insert(true);
 
                TempDimensionValueBuffer.Init();
                TempDimensionValueBuffer.Dimension := 'netContent';
                TempDimensionValueBuffer.Value := format(Item."Volumen (Liter)");
                TempDimensionValueBuffer.Insert(true);
            end;
        end;
 
    end;


2 Lines on Credit note: send customized dimension and value:

[EventSubscriber(ObjectType::Table, Database::"B2X BackboneDocHeaderTmp", 'OnGetSalesCrNoteOnBeforeInsertDimensions', '', true, true)]
    Local procedure AddCustomDimensions(SalesCrMemoLine: Record "Sales Cr.Memo Line"; var TempDimensionValueBuffer: Record "B2X TempDimensionValueBuffer" temporary)
    begin
        if SalesCrMemoLine.Type = SalesCrMemoLine.Type::Item then begin
            if SalesCrMemoLine."No." = '1003' then begin
                //1 - Insert value pairs
                TempDimensionValueBuffer.Init();
                TempDimensionValueBuffer.Dimension := 'dutyFactor';
                TempDimensionValueBuffer.Value := '13.5';
                TempDimensionValueBuffer.Insert(true);

                 //2 - Optional: Add more lines
                TempDimensionValueBuffer.Init();
                TempDimensionValueBuffer.Dimension := 'netContent';
                TempDimensionValueBuffer.Value := '0.75';
                TempDimensionValueBuffer.Insert(true);
            end;
        end;
    end;


3 Lines on Inventory report: send calculated qty on stock:

[EventSubscriber(ObjectType::Table, Database::"B2X BackboneDocHeaderTmp", 'OnGetInventoryOnBeforeAddQtyOnStock', '', true, true)]
    local procedure ChangeQtyOnStock(ItemNo: Code[20]; CustomerNo: Code[20]; var QtyOnStock: Decimal)
    begin
        //Calculate inventory for ItemNo
        //Use CutomerNo for customer specific calculation
        //QtyOnStock := Calculated value
    end;


4 Lines on Inventory report: send customized dimension and value:

[EventSubscriber(ObjectType::Table, Database::"B2X BackboneDocHeaderTmp", 'OnGetInventoryOnBeforeAddPreOrderQtys', '', true, true)]
    local procedure AddPreOrderQtys(Item: Record Item; CustomerNo: Code[20]; var TempPreOrderValues: Record "B2X TempInventoryValueBuffer" temporary)
    begin
        //1 - Get values from Item
        //1.1 - Use CutomerNo for customer specific calculation
        //2 - Insert value pairs
        if Item."No." = '1003' then begin
            TempPreOrderValues.Init();
            TempPreOrderValues.Date := Today() + 7; // When is the Quantity available
            TempPreOrderValues.Quantity := 10; // How many
            TempPreOrderValues.Insert(true);

            //3 - Optional: Add more lines
            TempPreOrderValues.Init();
            TempPreOrderValues.Date := Today() + 14; // When is the Quantity available
            TempPreOrderValues.Quantity := 25; // How many
            TempPreOrderValues.Insert(true);
        end
    end;


5 Lines on Inventory report: send customized dimension and value:

[EventSubscriber(ObjectType::Table, Database::"B2X BackboneDocHeaderTmp", 'OnGetInventoryOnBeforeAddBackOrderQtys', '', true, true)]
    local procedure AddBackOrderQtys(Item: Record Item; CustomerNo: Code[20]; var TempBackOrderValues: Record "B2X TempInventoryValueBuffer" temporary)
    begin
        if Item."No." = '1003' then begin
            //1 - Get values from Item
            //1.1 - Use CutomerNo for customer specific calculation
            //2 - Insert value pairs
            TempBackOrderValues.Init();
            TempBackOrderValues.Date := Today() + 8; // When is the Quantity available
            TempBackOrderValues.Quantity := 11; // How many
            TempBackOrderValues.Insert(true);

            //3 - Optional: Add more lines
            TempBackOrderValues.Init();
            TempBackOrderValues.Date := Today() + 15; // When is the Quantity available
            TempBackOrderValues.Quantity := 26; // How many
            TempBackOrderValues.Insert(true);
        end;
    end;


6 Lines on Inventory report: send customized dimension and value:

    [EventSubscriber(ObjectType::Codeunit, Codeunit::"B2X Customizations", 'OnGetInventoryOnBeforeInsertDimensions', '', true, true)]
    local procedure AddInventoryCustomDimensions(Item: Record Item; var TempDimensionValueBuffer: Record "B2X TempDimensionValueBuffer" temporary)
    begin
        if Item."No." = '1003' then begin
            //1 - Insert value pairs
            TempDimensionValueBuffer.Init();
            TempDimensionValueBuffer.Dimension := 'InvDimTest';
            TempDimensionValueBuffer.Value := '12.5';
            TempDimensionValueBuffer.Insert(true);

            //2 - Optional: Add more lines
        end;
    end;


7 Header on Inventory report: send customized custom and value:

    [EventSubscriber(ObjectType::Codeunit, Codeunit::"B2X Customizations", 'OnGetInventoryOnBeforeInsertCustom', '', true, true)]
    local procedure AddInventoryCustom(Customer: Record Customer; var B2XTempCustomBuffer: Record "B2X TempCustomBuffer" temporary)
    begin
        B2XTempCustomBuffer.Init();
        B2XTempCustomBuffer.custID := 'InvCustomTest';
        B2XTempCustomBuffer.custType := 'int';
        B2XTempCustomBuffer.custValue := '7.5';
        B2XTempCustomBuffer.custUnit := 'INT';
        B2XTempCustomBuffer.Insert();
    end;


8 Header on Invoice: send customized custom and value:

    [EventSubscriber(ObjectType::Codeunit, Codeunit::"B2X Customizations", 'OnGetSalesInvoiceOnBeforeInsertCustom', '', true, true)]
    local procedure AddSalesInvoiceCustom(SalesInvoiceHeader: Record "Sales Invoice Header"; var B2XTempCustomBuffer: Record "B2X TempCustomBuffer" temporary)
    begin
        B2XTempCustomBuffer.Init();
        B2XTempCustomBuffer.custID := 'SalInvCustomTest';
        B2XTempCustomBuffer.custType := 'int';
        B2XTempCustomBuffer.custValue := '5';
        B2XTempCustomBuffer.custUnit := 'STK';
        B2XTempCustomBuffer.Insert();
    end;


9 Header on Credit note: send customized custom and value:

    [EventSubscriber(ObjectType::Codeunit, Codeunit::"B2X Customizations", 'OnGetSalesCrNoteOnBeforeInsertCustom', '', true, true)]
    local procedure AddSalesCrNoteCustom(SalesCrMemoHeader: Record "Sales Cr.Memo Header"; var B2XTempCustomBuffer: Record "B2X TempCustomBuffer" temporary)
    begin
        B2XTempCustomBuffer.Init();
        B2XTempCustomBuffer.custID := 'SalCrNoteCustomTest';
        B2XTempCustomBuffer.custType := 'real';
        B2XTempCustomBuffer.custValue := '12.5';
        B2XTempCustomBuffer.custUnit := 'REAL';
        B2XTempCustomBuffer.Insert();
    end;


10 Lines on Order confirmation: send customized dimension and value:

   [EventSubscriber(ObjectType::Codeunit, Codeunit::"B2X Customizations", 'OnGetSalesOrderConfOnBeforeInsertDimensions', '', true, true)]
    local procedure AddSalesOrderConfCustomDimensions(SalesLine: Record "Sales Line"; var TempDimensionValueBuffer: Record "B2X TempDimensionValueBuffer" temporary)
    begin
        if SalesLine.Type = SalesLine.Type::Item then begin
            if SalesLine."No." = '1026' then begin
                //1 - Insert value pairs
                TempDimensionValueBuffer.Init();
                TempDimensionValueBuffer.Dimension := 'SalOrderConfDimTest';
                TempDimensionValueBuffer.Value := '15.5';
                TempDimensionValueBuffer.Insert(true);

                //2 - Optional: Add more lines
            end;
        end;
    end;


11 Header on Order confirmation: send customized custom and value:

    [EventSubscriber(ObjectType::Codeunit, Codeunit::"B2X Customizations", 'OnGetSalesOrderConfOnBeforeInsertCustom', '', true, true)]
    local procedure AddSalesOrderConfCustom(SalesHeader: Record "Sales Header"; var B2XTempCustomBuffer: Record "B2X TempCustomBuffer" temporary)
    begin
        B2XTempCustomBuffer.Init();
        B2XTempCustomBuffer.custID := 'SalOrderConfCustTest';
        B2XTempCustomBuffer.custType := 'int';
        B2XTempCustomBuffer.custValue := '18';
        B2XTempCustomBuffer.custUnit := 'INT';
        B2XTempCustomBuffer.Insert();
    end;


12 Lines on Delivery note: send customized dimension and value:

    [EventSubscriber(ObjectType::Codeunit, Codeunit::"B2X Customizations", 'OnGetSalesDelNoteOnBeforeInsertDimensions', '', true, true)]
    local procedure AddSalesDelNoteCustomDimensions(SalesShipmentLine: Record "Sales Shipment Line"; var TempDimensionValueBuffer: Record "B2X TempDimensionValueBuffer" temporary)
    begin
        if SalesShipmentLine.Type = SalesShipmentLine.Type::Item then begin
            if SalesShipmentLine."No." = '1027' then begin
                //1 - Insert value pairs
                TempDimensionValueBuffer.Init();
                TempDimensionValueBuffer.Dimension := 'SalDelNoteDimTest';
                TempDimensionValueBuffer.Value := '19.5';
                TempDimensionValueBuffer.Insert(true);

                //2 - Optional: Add more lines
            end;
        end;
    end;


13 Header on Delivery note: send customized custom and value:

    [EventSubscriber(ObjectType::Codeunit, Codeunit::"B2X Customizations", 'OnGetSalesDelNoteOnBeforeInsertCustom', '', true, true)]
    local procedure AddSalesDelNoteCustom(SalesShipmentHeader: Record "Sales Shipment Header"; var B2XTempCustomBuffer: Record "B2X TempCustomBuffer" temporary)
    begin
        B2XTempCustomBuffer.Init();
        B2XTempCustomBuffer.custID := 'SalDelNoteCustTest';
        B2XTempCustomBuffer.custType := 'str';
        B2XTempCustomBuffer.custValue := 'Test B2B';
        B2XTempCustomBuffer.custUnit := 'STR';
        B2XTempCustomBuffer.Insert();
    end;


14 Header on Delivery note: send customized packSequence og packContent:

    [EventSubscriber(ObjectType::Codeunit, Codeunit::"B2X Customizations", 'OnGetSalesDelNoteOnBeforeInsertASN', '', true, true)]
    local procedure AddASN(SalesShipmentHeader: Record "Sales Shipment Header"; var IncludeASN: Boolean; var B2XTempPackSequence: Record "B2X TempPackSequence" temporary; var B2XTempPackContent: Record "B2X TempPackContent" temporary)
    begin
        // Obtain data for ASN from Sales Shipment Header
        //...

        // Generate Pack Sequences:
        //repeat
            B2XTempPackSequence.Init();
            B2XTempPackSequence.CpsNum := 2;
            B2XTempPackSequence.FatherCpsNum := 1;
            B2XTempPackSequence.PacCode := '201 1/1 EURO PLL';
            B2XTempPackSequence.SSCC := '057091930000293736';
            B2XTempPackSequence.TrackAndTraceID := '123456789';
            B2XTempPackSequence.GrossWeight := 1000;
            B2XTempPackSequence.Cbm := 123;
            B2XTempPackSequence.Insert();

            B2XTempPackSequence.Init();
            B2XTempPackSequence.CpsNum := 3;
            B2XTempPackSequence.FatherCpsNum := 2;
            B2XTempPackSequence.PacCode := 'CT Carton';
            B2XTempPackSequence.SSCC := '057091930000293521';
            B2XTempPackSequence.TrackAndTraceID := '123456789';
            B2XTempPackSequence.GrossWeight := 1000;
            B2XTempPackSequence.Cbm := 123;
            B2XTempPackSequence.Insert();

            B2XTempPackSequence.Init();
            B2XTempPackSequence.CpsNum := 4;
            B2XTempPackSequence.FatherCpsNum := 2;
            B2XTempPackSequence.PacCode := 'CT Carton';
            B2XTempPackSequence.SSCC := '057091930000293538';
            B2XTempPackSequence.TrackAndTraceID := '123456789';
            B2XTempPackSequence.GrossWeight := 1000;
            B2XTempPackSequence.Cbm := 123;
            B2XTempPackSequence.Insert();
        //until true; // 

        // Generate Pack Content:
        //repeat
            B2XTempPackContent.Init();
            B2XTempPackContent.LineNo := 1;
            B2XTempPackContent.CpsNum := 3;
            B2XTempPackContent.SellersItemNo := '140014';
            B2XTempPackContent.EanNumber := '4260547592857';
            B2XTempPackContent.QtyTu := 3;
            B2XTempPackContent.LocGLN := '5790000088645';
            B2XTempPackContent.BatchSerialNo := '123';
            B2XTempPackContent.ProdDate := CurrentDateTime();
            B2XTempPackContent.PackingDate := CurrentDateTime();
            B2XTempPackContent.BestBeforeDate := CurrentDateTime();
            B2XTempPackContent.DueDate := CurrentDateTime();
            B2XTempPackContent.GrossWeight := 125;
            B2XTempPackContent.Insert();

            B2XTempPackContent.Init();
            B2XTempPackContent.LineNo := 2;
            B2XTempPackContent.CpsNum := 4;
            B2XTempPackContent.SellersItemNo := '140034';
            B2XTempPackContent.EanNumber := '4260547592857';
            B2XTempPackContent.QtyTu := 3;
            B2XTempPackContent.LocGLN := '5790000088645';
            B2XTempPackContent.BatchSerialNo := '123';
            B2XTempPackContent.ProdDate := CurrentDateTime();
            B2XTempPackContent.PackingDate := CurrentDateTime();
            B2XTempPackContent.BestBeforeDate := CurrentDateTime();
            B2XTempPackContent.DueDate := CurrentDateTime();
            B2XTempPackContent.GrossWeight := 135;
            B2XTempPackContent.Insert();


            B2XTempPackContent.Init();
            B2XTempPackContent.LineNo := 3;
            B2XTempPackContent.CpsNum := 5;
            B2XTempPackContent.SellersItemNo := '120146';
            B2XTempPackContent.EanNumber := '5709193201465';
            B2XTempPackContent.QtyTu := 3;
            B2XTempPackContent.LocGLN := '5790000088645';
            B2XTempPackContent.BatchSerialNo := '123';
            B2XTempPackContent.ProdDate := CurrentDateTime();
            B2XTempPackContent.PackingDate := CurrentDateTime();
            B2XTempPackContent.BestBeforeDate := CurrentDateTime();
            B2XTempPackContent.DueDate := CurrentDateTime();
            B2XTempPackContent.GrossWeight := 145;
            B2XTempPackContent.Insert();

        //until true; //

        IncludeASN := true; // Set true if ASN should be included
    end;


15 Lines on Purchase order: send customized dimension and value:

    [EventSubscriber(ObjectType::Codeunit, Codeunit::"B2X Customizations", 'OnGetPurchaseOrderOnBeforeInsertDimensions', '', true, true)]
    local procedure AddPurchaseOrderCustomDimensions(PurchaseLine: Record "Purchase Line"; var TempDimensionValueBuffer: Record "B2X TempDimensionValueBuffer" temporary)
    begin
        if PurchaseLine.Type = PurchaseLine.Type::Item then begin
            if PurchaseLine."No." = '1026' then begin
                //1 - Insert value pairs
                TempDimensionValueBuffer.Init();
                TempDimensionValueBuffer.Dimension := 'PurchOrderDimTest';
                TempDimensionValueBuffer.Value := '8.5';
                TempDimensionValueBuffer.Insert(true);

                //2 - Optional: Add more lines
            end;
        end;
    end;


16 Header on Purchase order: send customized custom and value:

    [EventSubscriber(ObjectType::Codeunit, Codeunit::"B2X Customizations", 'OnGetPurchaseOrderOnBeforeInsertCustom', '', true, true)]
    local procedure AddPurchaseOrderCustom(PurchaseHeader: Record "Purchase Header"; var B2XTempCustomBuffer: Record "B2X TempCustomBuffer" temporary)
    begin
        B2XTempCustomBuffer.Init();
        B2XTempCustomBuffer.custID := 'PurchOrdCustomTest';
        B2XTempCustomBuffer.custType := 'str';
        B2XTempCustomBuffer.custValue := 'Test PO';
        B2XTempCustomBuffer.custUnit := 'STK';
        B2XTempCustomBuffer.Insert();
    end;


17 Lines on Transfer delivery note: send customized dimension and value:

    [EventSubscriber(ObjectType::Codeunit, Codeunit::"B2X Customizations", 'OnGetTransferDelNoteOnBeforeInsertDimensions', '', true, true)]
    local procedure AddTransferDelNoteCustomDimensions(TransferShipmentLine: Record "Transfer Shipment Line"; var TempDimensionValueBuffer: Record "B2X TempDimensionValueBuffer" temporary)
    begin
        if TransferShipmentLine."Item No." = '1968-S' then begin
            //1 - Insert value pairs
            TempDimensionValueBuffer.Init();
            TempDimensionValueBuffer.Dimension := 'TraDelNoteDimTest';
            TempDimensionValueBuffer.Value := '29.5';
            TempDimensionValueBuffer.Insert(true);
        end;
    end;


18 Header on Transfer delivery note: send customized custom and value:

    [EventSubscriber(ObjectType::Codeunit, Codeunit::"B2X Customizations", 'OnGetTransferDelNoteOnBeforeInsertCustom', '', true, true)]
    local procedure AddTansferDelNoteCustom(TransferShipmentHeader: Record "Transfer Shipment Header"; var B2XTempCustomBuffer: Record "B2X TempCustomBuffer" temporary)
    begin
        B2XTempCustomBuffer.Init();
        B2XTempCustomBuffer.custID := 'TraDelNoteCustTest';
        B2XTempCustomBuffer.custType := 'real';
        B2XTempCustomBuffer.custValue := '6.8';
        B2XTempCustomBuffer.custUnit := 'REAL';
        B2XTempCustomBuffer.Insert();
    end;