Sales Register Report in D365 BC Format and Development

Sales Register Report in D365 BC:

(1) In this blog we will do the development of the “Sales Register” or “Sales Summary” report in D365 BC.

(2) For developing Sales Register Report: Use Dataitem: Sales Invoice Header and Sales Cr. Memo Header as shown.

Sales Register Report in D365 BC Codeunit 01
Sales Register Report in D365 BC Codeunit 02
Sales Register Report in D365 Codeunit 03
Sales Register Report in D365 Codeunit 04
Sales Register Report in D365 Codeunit 05
Sales Register Report in D365 BC 06
Sales Register Report in D365 BC Codeunit 07
Sales Register Report in D365 BC Codeunit 08
Sales Register Report in Business Central Codeunit 09
Sales Register Report in D365 BC Codeunit 10
Sales Register Report in D365 BC Format and Development Codeunit 11
Sales Register Report Codeunit 12

Header Part:

Sales Register Report Header Part BC D365
Sales Register Report in D365 BC Header Part Codeunit 01

Variable Initialize:

Sales Register Report Variable Initialize Code
Variable Initialize codeunit 01

Body Part of Sales Invoice:

Sales Register Report Body part in D365 BC codeunit

Body Part of Sales Credit Memo:

Body part of Sales Credit Memo codeunit in business central

Excel Creation Part:

Excel Creation Part in Sales Register Report

Source Code:

report 50010 “Sales Register-IN”
{
    UsageCategory = Administration;
    ApplicationArea = All;
    ProcessingOnly = True;
    dataset
    {
        dataitem(Sales_Invoice_Line; “Sales Invoice Line”)
        {
            DataItemTableView = SORTING(“Document No.”, “Line No.”) WHERE(“Quantity” = FILTER(<> 0));
            RequestFilterFields = “Posting Date”;
            trigger OnPreDataItem()
            begin
                SETFILTER(“Posting Date”, ‘%1..%2’, StartDate, EndDate);
 
                IF DocumentTypeFilter = DocumentTypeFilter::Invoice THEN BEGIN
                    IF InvoiceNoFilter <> ” THEN
                        SETFILTER(“Document No.”, InvoiceNoFilter);
                END;
 
                IF DocumentTypeFilter = DocumentTypeFilter::”Credit Memo” THEN
                    SETFILTER(“Document No.”, InvoiceNoFilter);
 
                IF CustomerNoFilter <> ” THEN
                    SETFILTER(“Bill-to Customer No.”, CustomerNoFilter);
 
                IF ItemNoFilter <> ” THEN
                    SETFILTER(“No.”, ItemNoFilter);
 
                IF ItemCategoryFilter <> ” THEN
                    SETFILTER(“Item Category Code”, ItemCategoryFilter);
 
            end;
 
            trigger OnAfterGetRecord()
            begin
                ClearVariables();
                SalesInvoiceHeader.GET(“Document No.”);
                SalesLine.RESET;
                SalesLine.SETRANGE(“Document No.”, SalesInvoiceHeader.”Order No.”);
                SalesLine.SETRANGE(“No.”, “No.”);
                IF SalesLine.FINDFIRST THEN BEGIN
                    OrderQuantity := SalesLine.Quantity;
                    PendingQuantity := SalesLine.Quantity – SalesLine.”Quantity Invoiced”;
                END ELSE BEGIN
                    OrderQuantity := Quantity;
                    PendingQuantity := 0;
                END;
 
                SrNo += 1;
                DocumentNo := “Document No.”;
                PostingDate := “Posting Date”;
                SalesOrderNo := SalesInvoiceHeader.”Order No.”;
                SourceNo := SalesInvoiceHeader.”Bill-to Customer No.”;
                Name := SalesInvoiceHeader.”Bill-to Name”;
                CustomerCityName := SalesInvoiceHeader.”Bill-to City”;
                CustomerStateName := SalesInvoiceHeader.”GST Bill-to State Code”;
                ItemCode := “No.”;
                ItemDescription := Description;
                UOM := “Unit of Measure”;
                IF SalesInvoiceHeader.”Currency Code” = ” THEN BEGIN
                    UnitRate := “Unit Price”;
                    BasicValue := Amount;
                    DiscountValue := “Line Discount Amount”;
                END ELSE BEGIN
                    CurrencyFactor := 1 / SalesInvoiceHeader.”Currency Factor”;
                    UnitRate := “Unit Price” * CurrencyFactor;
                    BasicValue := Amount * CurrencyFactor;
                    DiscountValue := “Line Discount Amount” * CurrencyFactor;
                END;
 
                DetailedGSTLedgerEntry.RESET;
                DetailedGSTLedgerEntry.SETRANGE(“Document No.”, “Document No.”);
                DetailedGSTLedgerEntry.SETRANGE(“Document Line No.”, “Line No.”);
                IF DetailedGSTLedgerEntry.FINDSET THEN BEGIN
                    REPEAT
                        IF DetailedGSTLedgerEntry.”GST Component Code” = ‘CGST’ THEN BEGIN
                            CGSTAmount := -DetailedGSTLedgerEntry.”GST Amount”;
                            CGSTRate := -DetailedGSTLedgerEntry.”GST Amount” / Quantity;
                            CGSTPer := DetailedGSTLedgerEntry.”GST %”;
                        END;
                        IF DetailedGSTLedgerEntry.”GST Component Code” = ‘SGST’ THEN BEGIN
                            SGSTAmount := -DetailedGSTLedgerEntry.”GST Amount”;
                            SGSTRate := -DetailedGSTLedgerEntry.”GST Amount” / Quantity;
                            SGSTPer := DetailedGSTLedgerEntry.”GST %”;
                        END;
                        IF DetailedGSTLedgerEntry.”GST Component Code” = ‘IGST’ THEN BEGIN
                            IGSTAmount := -DetailedGSTLedgerEntry.”GST Amount”;
                            IGSTRate := -DetailedGSTLedgerEntry.”GST Amount” / Quantity;
                            IGSTPer := DetailedGSTLedgerEntry.”GST %”;
                        END;
                    UNTIL DetailedGSTLedgerEntry.NEXT = 0;
                END;
                DeliveredQuantity := Quantity;
                ItemCategory := “Item Category Code”;
                //ItemClassification := “Product Group Code”;
                TotalGSTAmount := CGSTAmount + SGSTAmount + IGSTAmount;
                CustomerGSTNo := SalesInvoiceHeader.”Customer GST Reg. No.”;
                TypeOfDocument := ‘Sales Invoice’;
                //InvTotal := “Amount To Customer”;
                IF GetItem.GET(“No.”) THEN;
                GrossWeight := “Gross Weight”;
                NetWeight := “Net Weight”;
                MakeBodyForSalesInvoice();
            end;
        }
        dataitem(Sales_Cr_Memo_Line; “Sales Cr.Memo Line”)
        {
            DataItemTableView = SORTING(“Document No.”, “Line No.”) WHERE(“Quantity” = FILTER(<> 0));
            RequestFilterFields = “Posting Date”;
            trigger OnPreDataItem()
            begin
                SETFILTER(“Posting Date”, ‘%1..%2’, StartDate, EndDate);
 
                IF DocumentTypeFilter = DocumentTypeFilter::”Credit Memo” THEN BEGIN
                    IF InvoiceNoFilter <> ” THEN
                        SETFILTER(“Document No.”, InvoiceNoFilter);
                END;
 
                IF DocumentTypeFilter = DocumentTypeFilter::”Credit Memo” THEN
                    SETFILTER(“Document No.”, InvoiceNoFilter);
 
                IF CustomerNoFilter <> ” THEN
                    SETFILTER(“Bill-to Customer No.”, CustomerNoFilter);
 
                IF ItemNoFilter <> ” THEN
                    SETFILTER(“No.”, ItemNoFilter);
 
                IF ItemCategoryFilter <> ” THEN
                    SETFILTER(“Item Category Code”, ItemCategoryFilter);
 
            end;
 
            trigger OnAfterGetRecord()
            begin
                ClearVariables;
                SalesCrMemoHeader.GET(“Document No.”);
                OrderQuantity := Quantity;
                PendingQuantity := 0;
                SrNo += 1;
                DocumentNo := “Document No.”;
                PostingDate := “Posting Date”;
                SalesOrderNo := ”;
                SourceNo := SalesCrMemoHeader.”Bill-to Customer No.”;
                Name := SalesCrMemoHeader.”Bill-to Name”;
                CustomerCityName := SalesCrMemoHeader.”Bill-to City”;
                CustomerStateName := SalesCrMemoHeader.”GST Bill-to State Code”;
                ItemCode := “No.”;
                ItemDescription := Description;
                UOM := “Unit of Measure”;
                IF SalesCrMemoHeader.”Currency Code” = ” THEN BEGIN
                    UnitRate := “Unit Price”;
                    BasicValue := Amount;
                    DiscountValue := “Line Discount Amount”;
                END ELSE BEGIN
                    CurrencyFactor := 1 / SalesCrMemoHeader.”Currency Factor”;
                    UnitRate := “Unit Price” * CurrencyFactor;
                    BasicValue := Amount * CurrencyFactor;
                    DiscountValue := “Line Discount Amount” * CurrencyFactor;
                END;
 
                DetailedGSTLedgerEntry.RESET;
                DetailedGSTLedgerEntry.SETRANGE(“Document No.”, “Document No.”);
                DetailedGSTLedgerEntry.SETRANGE(“Document Line No.”, “Line No.”);
                IF DetailedGSTLedgerEntry.FINDSET THEN BEGIN
                    REPEAT
                        IF DetailedGSTLedgerEntry.”GST Component Code” = ‘CGST’ THEN BEGIN
                            CGSTAmount := DetailedGSTLedgerEntry.”GST Amount”;
                            CGSTRate := DetailedGSTLedgerEntry.”GST Amount” / Quantity;
                            CGSTPer := DetailedGSTLedgerEntry.”GST %”;
                        END;
                        IF DetailedGSTLedgerEntry.”GST Component Code” = ‘SGST’ THEN BEGIN
                            SGSTAmount := DetailedGSTLedgerEntry.”GST Amount”;
                            SGSTRate := DetailedGSTLedgerEntry.”GST Amount” / Quantity;
                            SGSTPer := DetailedGSTLedgerEntry.”GST %”;
                        END;
                        IF DetailedGSTLedgerEntry.”GST Component Code” = ‘IGST’ THEN BEGIN
                            IGSTAmount := DetailedGSTLedgerEntry.”GST Amount”;
                            IGSTRate := DetailedGSTLedgerEntry.”GST Amount” / Quantity;
                            IGSTPer := DetailedGSTLedgerEntry.”GST %”;
                        END;
                    UNTIL DetailedGSTLedgerEntry.NEXT = 0;
                END;
                DeliveredQuantity := Quantity;
                ItemCategory := “Item Category Code”;
                //ItemClassification := “Product Group Code”;
                TotalGSTAmount := CGSTAmount + SGSTAmount + IGSTAmount;
 
 
                CustomerGSTNo := SalesCrMemoHeader.”Customer GST Reg. No.”;
                TypeOfDocument := ‘Credit Memo’;
                //InvTotal := “Amount To Customer”;
                IF GetItem.GET(“No.”) THEN;
                GrossWeight := “Gross Weight”;
                NetWeight := “Net Weight”;
                MakeBodyForSalesCreditMemo();
            end;
        }
 
    }
    trigger OnPreReport()
    begin
        TempExcelBuffer.Reset();
        TempExcelBuffer.DELETEALL();
        MakeHeader; //Create Header Part
    end;
 
    trigger OnPostReport()
    begin
        CreateExcelBook; // Create Excel Book
    end;
 
    var
        TempExcelBuffer: Record “Excel Buffer” temporary;
        StartDate: Date;
        EndDate: Date;
        CustomerNoFilter: Text[250];
        ItemNoFilter: Text[250];
        ItemCategoryFilter: Text[250];
        DocumentTypeFilter: option Invoice,”Credit Memo”;
        InvoiceNoFilter: Text[250];
        SalesInvoiceHeader: Record “Sales Invoice Header”;
        SalesLine: Record “Sales Line”;
        OrderQuantity: decimal;
        PendingQuantity: decimal;
        SrNo: Integer;
        DocumentNo: code[20];
        PostingDate: date;
        SalesOrderNo: code[20];
        SourceNo: code[20];
        Name: Text;
        CustomerCityName: Text;
        CustomerStateName: text;
        ItemCode: Code[20];
        ItemDescription: text;
        UOM: text;
        UnitRate: decimal;
        BasicValue: decimal;
        DiscountValue: decimal;
        CurrencyFactor: Decimal;
        DetailedGSTLedgerEntry: Record “Detailed GST Ledger Entry”;
        CGSTAmount: Decimal;
        CGSTRate: decimal;
        CGSTPer: decimal;
        SGSTAmount: decimal;
        SGSTRate: decimal;
        SGSTPer: decimal;
        IGSTAmount: decimal;
        IGSTRate: decimal;
        IGSTPer: decimal;
        DeliveredQuantity: decimal;
        ItemCategory: text;
        ItemClassification: text;
        TotalGSTAmount: decimal;
        CustomerGSTNo: text;
        TypeOfDocument: text;
        InvTotal: decimal;
        GetItem: record Item;
        GrossWeight: decimal;
        NetWeight: decimal;
        SalesCrMemoHeader: record “Sales Cr.Memo Header”;
 
    local procedure MakeHeader()
    var
        myInt: Integer;
    begin
        TempExcelBuffer.NewRow;
        TempExcelBuffer.AddColumn(‘Sr No.’, FALSE, ”, TRUE, FALSE, TRUE, ”, TempExcelBuffer.”Cell Type”::Text);
        TempExcelBuffer.AddColumn(‘Type Of Document’, FALSE, ”, TRUE, FALSE, TRUE, ”, TempExcelBuffer.”Cell Type”::Text);
        TempExcelBuffer.AddColumn(‘Invoice No.’, FALSE, ”, TRUE, FALSE, TRUE, ”, TempExcelBuffer.”Cell Type”::Text);
        TempExcelBuffer.AddColumn(‘Invoice Date’, FALSE, ”, TRUE, FALSE, TRUE, ”, TempExcelBuffer.”Cell Type”::Text);
        TempExcelBuffer.AddColumn(‘Sales Order No.’, FALSE, ”, TRUE, FALSE, TRUE, ”, TempExcelBuffer.”Cell Type”::Text);
        TempExcelBuffer.AddColumn(‘Line No.’, FALSE, ”, TRUE, FALSE, TRUE, ”, TempExcelBuffer.”Cell Type”::Text);
        TempExcelBuffer.AddColumn(‘Customer Code’, FALSE, ”, TRUE, FALSE, TRUE, ”, TempExcelBuffer.”Cell Type”::Text);
        TempExcelBuffer.AddColumn(‘Customer Name’, FALSE, ”, TRUE, FALSE, TRUE, ”, TempExcelBuffer.”Cell Type”::Text);
        TempExcelBuffer.AddColumn(‘Customer City Name’, FALSE, ”, TRUE, FALSE, TRUE, ”, TempExcelBuffer.”Cell Type”::Text);
        TempExcelBuffer.AddColumn(‘Customer State Name’, FALSE, ”, TRUE, FALSE, TRUE, ”, TempExcelBuffer.”Cell Type”::Text);
        TempExcelBuffer.AddColumn(‘Customer GST No.’, FALSE, ”, TRUE, FALSE, TRUE, ”, TempExcelBuffer.”Cell Type”::Text);
        TempExcelBuffer.AddColumn(‘Item Code’, FALSE, ”, TRUE, FALSE, TRUE, ”, TempExcelBuffer.”Cell Type”::Text);
        TempExcelBuffer.AddColumn(‘Item Description’, FALSE, ”, TRUE, FALSE, TRUE, ”, TempExcelBuffer.”Cell Type”::Text);
        TempExcelBuffer.AddColumn(‘UOM’, FALSE, ”, TRUE, FALSE, TRUE, ”, TempExcelBuffer.”Cell Type”::Text);
        TempExcelBuffer.AddColumn(‘Delivered Quantity’, FALSE, ”, TRUE, FALSE, TRUE, ”, TempExcelBuffer.”Cell Type”::Text);
        TempExcelBuffer.AddColumn(‘Unit Rate’, FALSE, ”, TRUE, FALSE, TRUE, ”, TempExcelBuffer.”Cell Type”::Text);
        TempExcelBuffer.AddColumn(‘Basic Value’, FALSE, ”, TRUE, FALSE, TRUE, ”, TempExcelBuffer.”Cell Type”::Text);
        TempExcelBuffer.AddColumn(‘Discount Value’, FALSE, ”, TRUE, FALSE, TRUE, ”, TempExcelBuffer.”Cell Type”::Text);
        TempExcelBuffer.AddColumn(‘CGST %’, FALSE, ”, TRUE, FALSE, TRUE, ”, TempExcelBuffer.”Cell Type”::Text);
        TempExcelBuffer.AddColumn(‘CGST Amount’, FALSE, ”, TRUE, FALSE, TRUE, ”, TempExcelBuffer.”Cell Type”::Text);
        TempExcelBuffer.AddColumn(‘CGST Value’, FALSE, ”, TRUE, FALSE, TRUE, ”, TempExcelBuffer.”Cell Type”::Text);
        TempExcelBuffer.AddColumn(‘SGST %’, FALSE, ”, TRUE, FALSE, TRUE, ”, TempExcelBuffer.”Cell Type”::Text);
        TempExcelBuffer.AddColumn(‘SGST Amount’, FALSE, ”, TRUE, FALSE, TRUE, ”, TempExcelBuffer.”Cell Type”::Text);
        TempExcelBuffer.AddColumn(‘SGST Value’, FALSE, ”, TRUE, FALSE, TRUE, ”, TempExcelBuffer.”Cell Type”::Text);
        TempExcelBuffer.AddColumn(‘IGST %’, FALSE, ”, TRUE, FALSE, TRUE, ”, TempExcelBuffer.”Cell Type”::Text);
        TempExcelBuffer.AddColumn(‘IGST Amount’, FALSE, ”, TRUE, FALSE, TRUE, ”, TempExcelBuffer.”Cell Type”::Text);
        TempExcelBuffer.AddColumn(‘IGST Value’, FALSE, ”, TRUE, FALSE, TRUE, ”, TempExcelBuffer.”Cell Type”::Text);
        TempExcelBuffer.AddColumn(‘Total GST Amount’, FALSE, ”, TRUE, FALSE, TRUE, ”, TempExcelBuffer.”Cell Type”::Text);
        TempExcelBuffer.AddColumn(‘TCS %’, FALSE, ”, TRUE, FALSE, TRUE, ”, TempExcelBuffer.”Cell Type”::Text);
        TempExcelBuffer.AddColumn(‘TCS Amount’, FALSE, ”, TRUE, FALSE, TRUE, ”, TempExcelBuffer.”Cell Type”::Text);
        TempExcelBuffer.AddColumn(‘Invoice Value’, FALSE, ”, TRUE, FALSE, TRUE, ”, TempExcelBuffer.”Cell Type”::Text);
        TempExcelBuffer.AddColumn(‘Order Quantity’, FALSE, ”, TRUE, FALSE, TRUE, ”, TempExcelBuffer.”Cell Type”::Text);
        TempExcelBuffer.AddColumn(‘Pending Quantity’, FALSE, ”, TRUE, FALSE, TRUE, ”, TempExcelBuffer.”Cell Type”::Text);
        TempExcelBuffer.AddColumn(‘Item Category’, FALSE, ”, TRUE, FALSE, TRUE, ”, TempExcelBuffer.”Cell Type”::Text);
        TempExcelBuffer.AddColumn(‘Item Classification’, FALSE, ”, TRUE, FALSE, TRUE, ”, TempExcelBuffer.”Cell Type”::Text);
        TempExcelBuffer.AddColumn(‘Gross Weight’, FALSE, ”, TRUE, FALSE, TRUE, ”, TempExcelBuffer.”Cell Type”::Text);
        TempExcelBuffer.AddColumn(‘Net Weight’, FALSE, ”, TRUE, FALSE, TRUE, ”, TempExcelBuffer.”Cell Type”::Text);
 
    end;
 
    local procedure ClearVariables()
    var
        myInt: Integer;
    begin
        PostingDate := 0D;
        DocumentNo := ”;
        SourceNo := ”;
        Name := ”;
        InvTotal := 0;
        CGSTAmount := 0;
        IGSTAmount := 0;
        SGSTAmount := 0;
        IGSTRate := 0;
        CGSTRate := 0;
        SGSTRate := 0;
        CGSTPer := 0;
        SGSTPer := 0;
        IGSTPer := 0;
        SalesOrderNo := ”;
        CustomerCityName := ”;
        CustomerStateName := ”;
        ItemCode := ”;
        ItemDescription := ”;
        UOM := ”;
        UnitRate := 0;
        BasicValue := 0;
        DiscountValue := 0;
        TotalGSTAmount := 0;
        OrderQuantity := 0;
        PendingQuantity := 0;
        DeliveredQuantity := 0;
        ItemCategory := ”;
        ItemClassification := ”;
        CustomerGSTNo := ”;
        TypeOfDocument := ”;
        GrossWeight := 0;
        NetWeight := 0;
 
    end;
 
    local procedure MakeBodyForSalesInvoice()
    var
        myInt: Integer;
    begin
        TempExcelBuffer.NewRow;
        TempExcelBuffer.AddColumn(SrNo, FALSE, ”, FALSE, FALSE, FALSE, ”, TempExcelBuffer.”Cell Type”::Number);
        TempExcelBuffer.AddColumn(TypeOfDocument, FALSE, ”, FALSE, FALSE, FALSE, ”, TempExcelBuffer.”Cell Type”::Number);
        TempExcelBuffer.AddColumn(DocumentNo, FALSE, ”, FALSE, FALSE, FALSE, ”, TempExcelBuffer.”Cell Type”::Text);
        TempExcelBuffer.AddColumn(PostingDate, FALSE, ”, FALSE, FALSE, FALSE, ”, TempExcelBuffer.”Cell Type”::Number);
        TempExcelBuffer.AddColumn(SalesOrderNo, FALSE, ”, FALSE, FALSE, FALSE, ”, TempExcelBuffer.”Cell Type”::Text);
        TempExcelBuffer.AddColumn(SourceNo, FALSE, ”, FALSE, FALSE, FALSE, ”, TempExcelBuffer.”Cell Type”::Text);
        TempExcelBuffer.AddColumn(Name, FALSE, ”, FALSE, FALSE, FALSE, ”, TempExcelBuffer.”Cell Type”::Number);
        TempExcelBuffer.AddColumn(CustomerCityName, FALSE, ”, FALSE, FALSE, FALSE, ”, TempExcelBuffer.”Cell Type”::Text);
        TempExcelBuffer.AddColumn(CustomerStateName, FALSE, ”, FALSE, FALSE, FALSE, ”, TempExcelBuffer.”Cell Type”::Number);
        TempExcelBuffer.AddColumn(CustomerGSTNo, FALSE, ”, FALSE, FALSE, FALSE, ”, TempExcelBuffer.”Cell Type”::Text);
        TempExcelBuffer.AddColumn(ItemCode, FALSE, ”, FALSE, FALSE, FALSE, ”, TempExcelBuffer.”Cell Type”::Text);
        TempExcelBuffer.AddColumn(ItemDescription, FALSE, ”, FALSE, FALSE, FALSE, ”, TempExcelBuffer.”Cell Type”::Text);
        TempExcelBuffer.AddColumn(UOM, FALSE, ”, FALSE, FALSE, FALSE, ”, TempExcelBuffer.”Cell Type”::Text);
        TempExcelBuffer.AddColumn(DeliveredQuantity, FALSE, ”, FALSE, FALSE, FALSE, ”, TempExcelBuffer.”Cell Type”::Number);
        TempExcelBuffer.AddColumn(UnitRate, FALSE, ”, FALSE, FALSE, FALSE, ”, TempExcelBuffer.”Cell Type”::Number);
        TempExcelBuffer.AddColumn(BasicValue, FALSE, ”, FALSE, FALSE, FALSE, ”, TempExcelBuffer.”Cell Type”::Number);
        TempExcelBuffer.AddColumn(DiscountValue, FALSE, ”, FALSE, FALSE, FALSE, ”, TempExcelBuffer.”Cell Type”::Number);
        TempExcelBuffer.AddColumn(CGSTPer, FALSE, ”, FALSE, FALSE, FALSE, ”, TempExcelBuffer.”Cell Type”::Number);
        TempExcelBuffer.AddColumn(CGSTRate, FALSE, ”, FALSE, FALSE, FALSE, ”, TempExcelBuffer.”Cell Type”::Number);
        TempExcelBuffer.AddColumn(CGSTAmount, FALSE, ”, FALSE, FALSE, FALSE, ”, TempExcelBuffer.”Cell Type”::Number);
        TempExcelBuffer.AddColumn(SGSTPer, FALSE, ”, FALSE, FALSE, FALSE, ”, TempExcelBuffer.”Cell Type”::Number);
        TempExcelBuffer.AddColumn(SGSTRate, FALSE, ”, FALSE, FALSE, FALSE, ”, TempExcelBuffer.”Cell Type”::Number);
        TempExcelBuffer.AddColumn(SGSTAmount, FALSE, ”, FALSE, FALSE, FALSE, ”, TempExcelBuffer.”Cell Type”::Number);
        TempExcelBuffer.AddColumn(IGSTPer, FALSE, ”, FALSE, FALSE, FALSE, ”, TempExcelBuffer.”Cell Type”::Number);
        TempExcelBuffer.AddColumn(IGSTRate, FALSE, ”, FALSE, FALSE, FALSE, ”, TempExcelBuffer.”Cell Type”::Number);
        TempExcelBuffer.AddColumn(IGSTAmount, FALSE, ”, FALSE, FALSE, FALSE, ”, TempExcelBuffer.”Cell Type”::Number);
        TempExcelBuffer.AddColumn(TotalGSTAmount, FALSE, ”, FALSE, FALSE, FALSE, ”, TempExcelBuffer.”Cell Type”::Number);
        TempExcelBuffer.AddColumn(‘TCS %’, FALSE, ”, FALSE, FALSE, FALSE, ”, TempExcelBuffer.”Cell Type”::Number);
        TempExcelBuffer.AddColumn(‘TCS Amount’, FALSE, ”, FALSE, FALSE, FALSE, ”, TempExcelBuffer.”Cell Type”::Number);
        TempExcelBuffer.AddColumn(InvTotal, FALSE, ”, FALSE, FALSE, FALSE, ”, TempExcelBuffer.”Cell Type”::Number);
        TempExcelBuffer.AddColumn(OrderQuantity, FALSE, ”, FALSE, FALSE, FALSE, ”, TempExcelBuffer.”Cell Type”::Number);
        TempExcelBuffer.AddColumn(PendingQuantity, FALSE, ”, FALSE, FALSE, FALSE, ”, TempExcelBuffer.”Cell Type”::Number);
        TempExcelBuffer.AddColumn(ItemCategory, FALSE, ”, FALSE, FALSE, FALSE, ”, TempExcelBuffer.”Cell Type”::Text);
        TempExcelBuffer.AddColumn(ItemClassification, FALSE, ”, FALSE, FALSE, FALSE, ”, TempExcelBuffer.”Cell Type”::Text);
        TempExcelBuffer.AddColumn(GrossWeight, FALSE, ”, FALSE, FALSE, FALSE, ”, TempExcelBuffer.”Cell Type”::Number);
        TempExcelBuffer.AddColumn(NetWeight, FALSE, ”, FALSE, FALSE, FALSE, ”, TempExcelBuffer.”Cell Type”::Text);
    end;
 
    local procedure MakeBodyForSalesCreditMemo()
    var
        myInt: Integer;
    begin
        TempExcelBuffer.NewRow;
        TempExcelBuffer.AddColumn(SrNo, FALSE, ”, FALSE, FALSE, FALSE, ”, TempExcelBuffer.”Cell Type”::Number);
        TempExcelBuffer.AddColumn(TypeOfDocument, FALSE, ”, FALSE, FALSE, FALSE, ”, TempExcelBuffer.”Cell Type”::Number);
        TempExcelBuffer.AddColumn(DocumentNo, FALSE, ”, FALSE, FALSE, FALSE, ”, TempExcelBuffer.”Cell Type”::Text);
        TempExcelBuffer.AddColumn(PostingDate, FALSE, ”, FALSE, FALSE, FALSE, ”, TempExcelBuffer.”Cell Type”::Number);
        TempExcelBuffer.AddColumn(SalesOrderNo, FALSE, ”, FALSE, FALSE, FALSE, ”, TempExcelBuffer.”Cell Type”::Text);
        TempExcelBuffer.AddColumn(SourceNo, FALSE, ”, FALSE, FALSE, FALSE, ”, TempExcelBuffer.”Cell Type”::Text);
        TempExcelBuffer.AddColumn(Name, FALSE, ”, FALSE, FALSE, FALSE, ”, TempExcelBuffer.”Cell Type”::Number);
        TempExcelBuffer.AddColumn(CustomerCityName, FALSE, ”, FALSE, FALSE, FALSE, ”, TempExcelBuffer.”Cell Type”::Text);
        TempExcelBuffer.AddColumn(CustomerStateName, FALSE, ”, FALSE, FALSE, FALSE, ”, TempExcelBuffer.”Cell Type”::Number);
        TempExcelBuffer.AddColumn(CustomerGSTNo, FALSE, ”, FALSE, FALSE, FALSE, ”, TempExcelBuffer.”Cell Type”::Text);
        TempExcelBuffer.AddColumn(ItemCode, FALSE, ”, FALSE, FALSE, FALSE, ”, TempExcelBuffer.”Cell Type”::Text);
        TempExcelBuffer.AddColumn(ItemDescription, FALSE, ”, FALSE, FALSE, FALSE, ”, TempExcelBuffer.”Cell Type”::Text);
        TempExcelBuffer.AddColumn(UOM, FALSE, ”, FALSE, FALSE, FALSE, ”, TempExcelBuffer.”Cell Type”::Text);
        TempExcelBuffer.AddColumn(-DeliveredQuantity, FALSE, ”, FALSE, FALSE, FALSE, ”, TempExcelBuffer.”Cell Type”::Number);
        TempExcelBuffer.AddColumn(-UnitRate, FALSE, ”, FALSE, FALSE, FALSE, ”, TempExcelBuffer.”Cell Type”::Number);
        TempExcelBuffer.AddColumn(-BasicValue, FALSE, ”, FALSE, FALSE, FALSE, ”, TempExcelBuffer.”Cell Type”::Number);
        TempExcelBuffer.AddColumn(-DiscountValue, FALSE, ”, FALSE, FALSE, FALSE, ”, TempExcelBuffer.”Cell Type”::Number);
        TempExcelBuffer.AddColumn(CGSTPer, FALSE, ”, FALSE, FALSE, FALSE, ”, TempExcelBuffer.”Cell Type”::Number);
        TempExcelBuffer.AddColumn(-CGSTRate, FALSE, ”, FALSE, FALSE, FALSE, ”, TempExcelBuffer.”Cell Type”::Number);
        TempExcelBuffer.AddColumn(-CGSTAmount, FALSE, ”, FALSE, FALSE, FALSE, ”, TempExcelBuffer.”Cell Type”::Number);
        TempExcelBuffer.AddColumn(SGSTPer, FALSE, ”, FALSE, FALSE, FALSE, ”, TempExcelBuffer.”Cell Type”::Number);
        TempExcelBuffer.AddColumn(-SGSTRate, FALSE, ”, FALSE, FALSE, FALSE, ”, TempExcelBuffer.”Cell Type”::Number);
        TempExcelBuffer.AddColumn(-SGSTAmount, FALSE, ”, FALSE, FALSE, FALSE, ”, TempExcelBuffer.”Cell Type”::Number);
        TempExcelBuffer.AddColumn(IGSTPer, FALSE, ”, FALSE, FALSE, FALSE, ”, TempExcelBuffer.”Cell Type”::Number);
        TempExcelBuffer.AddColumn(-IGSTRate, FALSE, ”, FALSE, FALSE, FALSE, ”, TempExcelBuffer.”Cell Type”::Number);
        TempExcelBuffer.AddColumn(-IGSTAmount, FALSE, ”, FALSE, FALSE, FALSE, ”, TempExcelBuffer.”Cell Type”::Number);
        TempExcelBuffer.AddColumn(-TotalGSTAmount, FALSE, ”, FALSE, FALSE, FALSE, ”, TempExcelBuffer.”Cell Type”::Number);
        TempExcelBuffer.AddColumn(‘TDS/TCS %’, FALSE, ”, FALSE, FALSE, FALSE, ”, TempExcelBuffer.”Cell Type”::Number);
        TempExcelBuffer.AddColumn(‘-TDS/TCS Amount’, FALSE, ”, FALSE, FALSE, FALSE, ”, TempExcelBuffer.”Cell Type”::Number);
        TempExcelBuffer.AddColumn(-InvTotal, FALSE, ”, FALSE, FALSE, FALSE, ”, TempExcelBuffer.”Cell Type”::Number);
        TempExcelBuffer.AddColumn(-OrderQuantity, FALSE, ”, FALSE, FALSE, FALSE, ”, TempExcelBuffer.”Cell Type”::Number);
        TempExcelBuffer.AddColumn(-PendingQuantity, FALSE, ”, FALSE, FALSE, FALSE, ”, TempExcelBuffer.”Cell Type”::Number);
        TempExcelBuffer.AddColumn(ItemCategory, FALSE, ”, FALSE, FALSE, FALSE, ”, TempExcelBuffer.”Cell Type”::Text);
        TempExcelBuffer.AddColumn(ItemClassification, FALSE, ”, FALSE, FALSE, FALSE, ”, TempExcelBuffer.”Cell Type”::Text);
        TempExcelBuffer.AddColumn(-GrossWeight, FALSE, ”, FALSE, FALSE, FALSE, ”, TempExcelBuffer.”Cell Type”::Number);
        TempExcelBuffer.AddColumn(-NetWeight, FALSE, ”, FALSE, FALSE, FALSE, ”, TempExcelBuffer.”Cell Type”::Text);
    end;
 
    Local procedure CreateExcelBook();
    begin
        TempExcelBuffer.CreateNewBook(‘SalesRegister’);
        TempExcelBuffer.WriteSheet(‘SalesRegister’, CompanyName, UserId);
        TempExcelBuffer.CloseBook();
        TempExcelBuffer.SetFriendlyFilename(‘SalesRegister’);
        TempExcelBuffer.OpenExcel();
    end;
 
}

TCS Register Report Development and Format in BC D365
TDS Register Report Development and Format in BC D365
Bank Reconciliation Report Development and Format in D365 BC
Purchase Order Report in D365 BC Format and Development
Sales Reports and Analytics– Microsoft Docs

Leave a Reply