Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions src/Layers/W1/BaseApp/Sales/Document/SalesHeader.Table.al
Original file line number Diff line number Diff line change
Expand Up @@ -9670,9 +9670,14 @@ table 36 "Sales Header"
procedure UpdateSalesOrderLineIfExist()
var
SalesCreditMemoHeader: Record "Sales Cr.Memo Header";
SalesReceivablesSetup: Record "Sales & Receivables Setup";
CorrectPostedSalesInvoice: Codeunit "Correct Posted Sales Invoice";
IsHandled: Boolean;
begin
SalesReceivablesSetup.GetRecordOnce();
if not SalesReceivablesSetup."Restore Order qty. on return" then
exit;

SalesCreditMemoHeader.SetLoadFields("Pre-Assigned No.", "Cust. Ledger Entry No.");
SalesCreditMemoHeader.SetRange("Pre-Assigned No.", Rec."No.");
if not SalesCreditMemoHeader.FindFirst() then
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
// ------------------------------------------------------------------------------------------------
namespace Microsoft.Sales.History;

using Microsoft.Sales.Setup;
using Microsoft.Utilities;

/// <summary>
Expand Down Expand Up @@ -61,9 +62,15 @@ codeunit 1323 "Cancel PstdSalesInv (Yes/No)"
end;

local procedure GetCancelPostedInvoiceQst(SalesInvoiceHeader: Record "Sales Invoice Header"): Text
var
SalesReceivablesSetup: Record "Sales & Receivables Setup";
begin
if SalesInvoiceHeader."Order No." <> '' then
exit(CancelPostedInvoiceFromOrderQst);
if SalesInvoiceHeader."Order No." <> '' then begin
SalesReceivablesSetup.GetRecordOnce();
if SalesReceivablesSetup."Restore Order qty. on return" then
exit(CancelPostedInvoiceFromOrderQst);
end;

exit(CancelPostedInvoiceQst);
end;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -208,7 +208,7 @@ codeunit 1303 "Correct Posted Sales Invoice"
/// <returns>True if the credit memo was successfully created, otherwise false.</returns>
procedure CreateCreditMemoCopyDocument(var SalesInvoiceHeader: Record "Sales Invoice Header"; var SalesHeader: Record "Sales Header"): Boolean
var
SalesHdr: Record "Sales Header";
SalesHeaderOrder: Record "Sales Header";
ConfirmQuestion: Text;
begin
OnBeforeCreateCreditMemoCopyDocument(SalesInvoiceHeader);
Expand All @@ -219,13 +219,17 @@ codeunit 1303 "Correct Posted Sales Invoice"
ShowInvoiceAppliedNotification(SalesInvoiceHeader);
exit(false);
end;
SalesHdr.SetRange("Document Type", SalesHdr."Document Type"::Order);
SalesHdr.SetRange("No.", SalesInvoiceHeader."Order No.");
if not SalesHdr.IsEmpty then begin
ConfirmQuestion := CreateCreditMemoQst;
OnCreateCreditMemoCopyDocumentOnBeforeConfirm(SalesInvoiceHeader, SalesHdr, ConfirmQuestion);
if not Confirm(ConfirmQuestion) then
exit(false);

SalesReceivablesSetup.GetRecordOnce();
if SalesReceivablesSetup."Restore Order qty. on return" then begin
SalesHeaderOrder.SetRange("Document Type", SalesHeaderOrder."Document Type"::Order);
SalesHeaderOrder.SetRange("No.", SalesInvoiceHeader."Order No.");
if not SalesHeaderOrder.IsEmpty() then begin
ConfirmQuestion := CreateCreditMemoQst;
OnCreateCreditMemoCopyDocumentOnBeforeConfirm(SalesInvoiceHeader, SalesHeaderOrder, ConfirmQuestion);
if not Confirm(ConfirmQuestion) then
exit(false);
end;
end;

CreateCopyDocument(SalesInvoiceHeader, SalesHeader, SalesHeader."Document Type"::"Credit Memo", false);
Expand Down Expand Up @@ -1029,6 +1033,10 @@ codeunit 1303 "Correct Posted Sales Invoice"
SalesInvoiceLine: Record "Sales Invoice Line";
TempUsedSalesInvoiceLine: Record "Sales Invoice Line" temporary;
begin
SalesReceivablesSetup.GetRecordOnce();
if not SalesReceivablesSetup."Restore Order qty. on return" then
exit;

SalesCrMemoLine.SetLoadFields("Document No.", "No.", "Appl.-from Item Entry", Quantity, "Variant Code");
SalesCrMemoLine.SetRange("Document No.", SalesCreditMemoNo);
SalesCrMemoLine.SetFilter("No.", '<>%1', '');
Expand Down Expand Up @@ -1124,6 +1132,10 @@ codeunit 1303 "Correct Posted Sales Invoice"
UndoPostingManagement: Codeunit "Undo Posting Management";
IsHandled: Boolean;
begin
SalesReceivablesSetup.GetRecordOnce();
if not SalesReceivablesSetup."Restore Order qty. on return" then
exit;

IsHandled := false;
OnBeforeUpdateSalesOrderLinesFromCancelledInvoice(SalesInvoiceHeaderNo, IsHandled);
if IsHandled then
Expand Down
4 changes: 4 additions & 0 deletions src/Layers/W1/BaseApp/Sales/Posting/SalesPost.Codeunit.al
Original file line number Diff line number Diff line change
Expand Up @@ -8951,6 +8951,10 @@ codeunit 80 "Sales-Post"
CorrectPostedSalesInvoice: Codeunit "Correct Posted Sales Invoice";
IsHandled: Boolean;
begin
SalesSetup.GetRecordOnce();
if not SalesSetup."Restore Order qty. on return" then
exit;

IsHandled := false;
OnBeforeUpdateSalesOrderLineIfExist(DocumentNo, IsHandled);
if IsHandled then
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,11 @@ page 459 "Sales & Receivables Setup"
ApplicationArea = Basic, Suite;
Importance = Additional;
}
field("Restore Order qty. on return"; Rec."Restore Order qty. on return")
{
ApplicationArea = Basic, Suite;
Importance = Additional;
}
field("Invoice Rounding"; Rec."Invoice Rounding")
{
ApplicationArea = Basic, Suite;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -616,6 +616,15 @@ table 311 "Sales & Receivables Setup"
ToolTip = 'Specifies that the reservation confirmation message is not shown on sales lines. This is useful to avoid noise when you are processing many lines.';
}
/// <summary>
/// Indicates whether posting a sales credit memo or return order restores the reversed quantities on the related sales order.
/// </summary>
field(70; "Restore Order qty. on return"; Boolean)
{
Caption = 'Restore Order quantities on Credit Memo or Return Order posting';
ToolTip = 'Specifies whether posting a sales credit memo or sales return order restores quantities on the related sales order. When enabled, Qty. to Ship, Qty. to Invoice, and the shipped and invoiced quantities on the original sales order are updated based on the reversed quantity.';
InitValue = true;
}
/// <summary>
/// Indicates whether customer name changes on open sales documents apply only to the document without searching for matching customers.
/// </summary>
field(160; "Disable Search by Name"; Boolean)
Expand Down
Loading