Dynamics 365 Business Central: How to view ‘Shipped Not Invoiced’ List and ‘Received Not Invoiced’ List

Dynamics 365 Business Central

Hi, Readers.
In my previous post, we discussed How to view Outstanding Order Lines and Posted Invoice Lines (No Customization).
And recently I received a question, is there any easy way to view the ‘Shipped Not Invoiced’ list and the ‘Received Not Invoiced’ list in Business Central?
So in this post, I will share several common methods. Hope this will help.

Using Item Ledger Entries

Item Ledger Entries are created by the following: the posting of an item journal line; the posting of a sales order, return order, invoice, or credit memo; and the posting of a purchase order, return order, invoice, or credit memo, etc. You can filter different conditions to find the records you need here.

On the Item Ledger Entries page, there is a Completely Invoiced field. It can be easily filtered to find if it is fully invoiced or not. You can easily add it to the page using Personalize.

Next is the Entry Type field: Shows which type of transaction that the entry is created from.
Sales: The entry was posted from a sales order, invoice, or credit memo.
Purchase: The entry is posted from a purchase order, invoice, or credit memo.

Last is the Document Type field: Indicates what type of document was posted to create the item ledger entry.
Sales Shipment: The entry was posted from a sales order.
Purchase Receipt: The entry is posted from a purchase order.

So for Shipped Not Invoiced list:

For Received Not Invoiced List:

PS: When you have set a filter on a list and you want to keep the filter for later, you can save it as a view.
Find more about Save and Personalize List Views from MS Docs.

Using Get Shipment Lines page and Get Receipt Lines page

As you might know, on the Sales Invoice page, you can use Get Shipment Lines functionality to do invoicing.

After you click the Get Shipment Lines action, the Get Shipment Lines page will open. This page opens with a ‘Shipped Not Invoiced’ List for the customer to which the invoice belongs.

Table Sales Shipment Line (111):

Please note that you cannot filter the fields in the filter pane on the left as on the Item Ledger Entries page.
So you can not view the records of all customers on this page.

PS:
If you choose the drop-down arrow in the Bill-to Customer No. field, and then choose Filter…

Clear the record and choose OK.

Or choose Clear Filter directly.

Records does not increase.

This is because the records have been filtered before the page is opened.

In other words, you can only view a ‘Shipped Not Invoiced’ list of current customer on this page.
The same goes for the Get Receipt Lines page.

Customization

Finally, I would like to talk about customization.
You can do very simple customization by using table 111 “Sales Shipment Line” or table 121 “Purch. Rcpt. Line” to create a new page.
For example: Shipped Not Invoiced and Received Not Invoiced List | Github (I added some convenience features)

Source Code: Sales Shipment Lines

page 50100 "ZY Sales Shipment Lines"
{

    ApplicationArea = All;
    Caption = 'ZY Sales Shipment Lines';
    PageType = List;
    SourceTable = "Sales Shipment Line";
    UsageCategory = Lists;
    InsertAllowed = false;
    ModifyAllowed = false;
    DeleteAllowed = false;

    layout
    {
        area(content)
        {
            repeater(General)
            {
                field("Sell-to Customer No."; Rec."Sell-to Customer No.")
                {
                    ToolTip = 'Specifies the value of the Sell-to Customer No. field';
                    ApplicationArea = All;
                }
                field("Posting Date"; Rec."Posting Date")
                {
                    ToolTip = 'Specifies the value of the Posting Date field';
                    ApplicationArea = All;
                }
                field("Document No."; Rec."Document No.")
                {
                    ToolTip = 'Specifies the value of the Document No. field';
                    ApplicationArea = All;
                }
                field("Line No."; Rec."Line No.")
                {
                    ToolTip = 'Specifies the value of the Line No. field';
                    ApplicationArea = All;
                }
                field(Type; Rec.Type)
                {
                    ToolTip = 'Specifies the value of the Type field';
                    ApplicationArea = All;
                }
                field("No."; Rec."No.")
                {
                    ToolTip = 'Specifies the value of the No. field';
                    ApplicationArea = All;
                }
                field("Location Code"; Rec."Location Code")
                {
                    ToolTip = 'Specifies the value of the Location Code field';
                    ApplicationArea = All;
                }
                field(Description; Rec.Description)
                {
                    ToolTip = 'Specifies the value of the Description field';
                    ApplicationArea = All;
                }
                field("Unit of Measure"; Rec."Unit of Measure")
                {
                    ToolTip = 'Specifies the value of the Unit of Measure field';
                    ApplicationArea = All;
                }
                field(Quantity; Rec.Quantity)
                {
                    ToolTip = 'Specifies the value of the Quantity field';
                    ApplicationArea = All;
                }
                field("Unit Cost (LCY)"; Rec."Unit Cost (LCY)")
                {
                    ToolTip = 'Specifies the value of the Unit Cost (LCY) field';
                    ApplicationArea = All;
                }
                field("Unit Price"; Rec."Unit Price")
                {
                    ToolTip = 'Specifies the value of the Unit Price field';
                    ApplicationArea = All;
                }
                field("Qty. Shipped Not Invoiced"; Rec."Qty. Shipped Not Invoiced")
                {
                    ToolTip = 'Specifies the value of the Qty. Shipped Not Invoiced field';
                    ApplicationArea = All;
                }
                field("Quantity Invoiced"; Rec."Quantity Invoiced")
                {
                    ToolTip = 'Specifies the value of the Quantity Invoiced field';
                    ApplicationArea = All;
                }
                field("Order No."; Rec."Order No.")
                {
                    ToolTip = 'Specifies the value of the Order No. field';
                    ApplicationArea = All;
                }
                field("Order Line No."; Rec."Order Line No.")
                {
                    ToolTip = 'Specifies the value of the Order Line No. field';
                    ApplicationArea = All;
                }
            }
        }
    }
    actions
    {
        area(Processing)
        {
            action(ShowDocument)
            {
                Caption = 'Show Sales Order';
                ApplicationArea = All;
                Image = Document;
                Promoted = true;
                PromotedIsBig = true;

                trigger OnAction()
                var
                    SalesOrderHdr: Record "Sales Header";
                    NotFound: Label 'No Purchase Order was found.';
                begin
                    if SalesOrderHdr.Get(SalesOrderHdr."Document Type"::Order, Rec."Order No.") then
                        PAGE.Run(PAGE::"Sales Order", SalesOrderHdr)
                    else
                        Message(NotFound);
                end;
            }
            action(ShowDocument2)
            {
                Caption = 'Show Posted Sales Shipment';
                ApplicationArea = All;
                Image = Document;
                Promoted = true;
                PromotedIsBig = true;

                trigger OnAction()
                var
                    SalesShipmentHdr: Record "Sales Shipment Header";
                    B12: Record "Purch. Rcpt. Line";
                begin
                    if SalesShipmentHdr.Get(Rec."Document No.") then
                        PAGE.Run(PAGE::"Posted Sales Shipment", SalesShipmentHdr);
                end;
            }
            action(ShowAllLines)
            {
                Caption = 'Show All Shipped Lines';
                ApplicationArea = All;
                Image = Document;
                Promoted = true;
                PromotedIsBig = true;

                trigger OnAction()
                begin
                    Rec.Reset();
                    if Rec.FindFirst() then;
                end;
            }
            action(ShowShippedNotInvoicedLines)
            {
                Caption = 'Show Shipped not Invoiced Lines';
                ApplicationArea = All;
                Image = Document;
                Promoted = true;
                PromotedIsBig = true;

                trigger OnAction()
                begin
                    Rec.SetFilter("Qty. Shipped Not Invoiced", '>%1', 0);
                    if Rec.FindFirst() then;
                end;
            }
        }
    }

    trigger OnOpenPage()
    begin
        Rec.SetFilter("Qty. Shipped Not Invoiced", '>%1', 0);
        if Rec.FindFirst() then;
    end;
}

END

Hope this will help.

Thanks for reading.

ZHU

コメント

タイトルとURLをコピーしました