Report 291 Delete Invd Blnkt Sales Orders
- App
- Base Application
- Namespace
- Microsoft.Sales.Document
- Versions
- 17-28
Versions171819202122232425262728
Source29
Source in 29
src/Layers/W1/BaseApp/Sales/Document/DeleteInvdBlnktSalesOrders.Report.al158 lines, Copyright (c) Microsoft Corporation. MIT
// ------------------------------------------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
// ------------------------------------------------------------------------------------------------
namespace Microsoft.Sales.Document;
using Microsoft.Assembly.Document;
using Microsoft.Sales.Comment;
using Microsoft.Utilities;
using System.Automation;
using System.Telemetry;
/// <summary>
/// Removes blanket sales orders that have been fully invoiced from the system.
/// </summary>
report 291 "Delete Invd Blnkt Sales Orders"
{
AccessByPermission = TableData "Sales Header" = RD;
ApplicationArea = Suite;
Caption = 'Delete Invoiced Blanket Sales Orders';
ToolTip = 'Delete orders that were not automatically deleted after completion. For example, when several sales orders were completed by a single invoice.';
ProcessingOnly = true;
UsageCategory = Tasks;
dataset
{
dataitem("Sales Header"; "Sales Header")
{
DataItemTableView = sorting("Document Type", "No.") where("Document Type" = const("Blanket Order"));
RequestFilterFields = "No.", "Sell-to Customer No.", "Bill-to Customer No.";
RequestFilterHeading = 'Blanket Sales Order';
trigger OnAfterGetRecord()
var
SalesBlanketOrderLine: Record "Sales Line";
SalesLineFromBlanketOrder: Record "Sales Line";
SalesCommentLine: Record "Sales Comment Line";
AssembleToOrderLink: Record "Assemble-to-Order Link";
ArchiveManagement: Codeunit ArchiveManagement;
IsHandled: Boolean;
begin
IsHandled := false;
OnSalesHeaderOnBeforeOnAfterGetRecord("Sales Header", IsHandled);
if IsHandled then
CurrReport.Skip();
if GuiAllowed() then
ProgressDialog.Update(1, "No.");
SalesBlanketOrderLine.SetRange("Document Type", "Document Type");
SalesBlanketOrderLine.SetRange("Document No.", "No.");
SalesBlanketOrderLine.SetFilter("Quantity Invoiced", '<>0');
if SalesBlanketOrderLine.FindFirst() then begin
SalesBlanketOrderLine.SetRange("Quantity Invoiced");
SalesBlanketOrderLine.SetFilter("Outstanding Quantity", '<>0');
OnAfterSetSalesLineFilters(SalesBlanketOrderLine);
if not SalesBlanketOrderLine.FindFirst() then begin
SalesBlanketOrderLine.SetRange("Outstanding Quantity");
SalesBlanketOrderLine.SetFilter("Qty. Shipped Not Invoiced", '<>0');
if not SalesBlanketOrderLine.FindFirst() then begin
SalesBlanketOrderLine.LockTable();
if not SalesBlanketOrderLine.FindFirst() then begin
SalesBlanketOrderLine.SetRange("Qty. Shipped Not Invoiced");
SalesLineFromBlanketOrder.SetRange("Blanket Order No.", "No.");
if SalesLineFromBlanketOrder.IsEmpty() then begin
ArchiveManagement.AutoArchiveSalesDocument("Sales Header");
SalesBlanketOrderLine.SetFilter("Qty. to Assemble to Order", '<>0');
if SalesBlanketOrderLine.FindSet() then
repeat
AssembleToOrderLink.DeleteAsmFromSalesLine(SalesBlanketOrderLine);
until SalesBlanketOrderLine.Next() = 0;
SalesBlanketOrderLine.SetRange("Qty. to Assemble to Order");
OnBeforeDeleteSalesLines(SalesBlanketOrderLine);
SalesBlanketOrderLine.DeleteAll();
SalesCommentLine.SetRange("Document Type", "Document Type");
SalesCommentLine.SetRange("No.", "No.");
SalesCommentLine.DeleteAll();
DeleteApprovalEntries("Sales Header");
OnBeforeDeleteSalesHeader("Sales Header");
Delete();
Commit();
end;
end;
end;
end;
end;
end;
trigger OnPreDataItem()
begin
if GuiAllowed() then
ProgressDialog.Open(ProcessingProgressTxt);
end;
trigger OnPostDataItem()
begin
if GuiAllowed() then
ProgressDialog.Close();
end;
}
}
trigger OnPostReport()
var
AuditLog: Codeunit "Audit Log";
begin
AuditLog.LogAuditMessage(StrSubstNo(DeletedInvoicedBlanketSalesOrdersLbl, UserSecurityId(), CompanyName()), SecurityOperationResult::Success, AuditCategory::ApplicationManagement, 3, 0);
end;
var
ProgressDialog: Dialog;
ProcessingProgressTxt: Label 'Processing blanket sales orders #1##########', Comment = '%1 - Blanket Sales Order No.';
DeletedInvoicedBlanketSalesOrdersLbl: Label 'Invoiced blanket sales orders deleted by UserSecurityId %1 for company %2.', Comment = '%1 - User Security ID, %2 - Company name', Locked = true;
local procedure DeleteApprovalEntries(SalesHeader: Record "Sales Header")
var
ApprovalsMgmt: Codeunit "Approvals Mgmt.";
IsHandled: Boolean;
begin
IsHandled := false;
OnBeforeDeleteApprovalEntries(SalesHeader, IsHandled);
if IsHandled then
exit;
ApprovalsMgmt.DeleteApprovalEntries(SalesHeader.RecordId);
end;
[IntegrationEvent(false, false)]
local procedure OnAfterSetSalesLineFilters(var SalesLine: Record "Sales Line")
begin
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeDeleteSalesHeader(var SalesHeader: Record "Sales Header")
begin
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeDeleteSalesLines(var SalesLine: Record "Sales Line")
begin
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeDeleteApprovalEntries(var SalesHeader: Record "Sales Header"; var IsHandled: Boolean)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnSalesHeaderOnBeforeOnAfterGetRecord(var SalesHeader: Record "Sales Header"; var IsHandled: Boolean)
begin
end;
}