Page 509 Blanket Purchase Order
- App
- Base Application
- Namespace
- Microsoft.Purchases.Document
- Versions
- 17-28
- Source table
- 38
Versions171819202122232425262728
Source29
Source in 29
src/Layers/W1/BaseApp/Purchases/Document/BlanketPurchaseOrder.Page.al1319 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.Purchases.Document;
using Microsoft.CRM.Contact;
using Microsoft.Finance.Currency;
using Microsoft.Finance.Dimension;
using Microsoft.Finance.GeneralLedger.Setup;
using Microsoft.Foundation.Address;
using Microsoft.Foundation.Attachment;
using Microsoft.Foundation.Reporting;
using Microsoft.Purchases.Comment;
using Microsoft.Purchases.Vendor;
using Microsoft.Utilities;
using System.Automation;
using System.Security.User;
page 509 "Blanket Purchase Order"
{
Caption = 'Blanket Purchase Order';
PageType = Document;
RefreshOnActivate = true;
SourceTable = "Purchase Header";
SourceTableView = where("Document Type" = filter("Blanket Order"));
layout
{
area(content)
{
group(General)
{
Caption = 'General';
field("No."; Rec."No.")
{
ApplicationArea = Suite;
ToolTip = 'Specifies the number of the involved entry or record, according to the specified number series.';
Visible = DocNoVisible;
trigger OnAssistEdit()
begin
if Rec.AssistEdit(xRec) then
CurrPage.Update();
end;
}
field("Buy-from Vendor No."; Rec."Buy-from Vendor No.")
{
ApplicationArea = Suite;
Caption = 'Vendor No.';
Importance = Additional;
NotBlank = true;
ToolTip = 'Specifies the number of the vendor who delivers the products.';
trigger OnValidate()
begin
IsPurchaseLinesEditable := Rec.PurchaseLinesEditable();
Rec.OnAfterValidateBuyFromVendorNo(Rec, xRec);
CurrPage.Update();
end;
}
field("Buy-from Vendor Name"; Rec."Buy-from Vendor Name")
{
ApplicationArea = Suite;
Caption = 'Vendor Name';
Importance = Promoted;
ToolTip = 'Specifies the name of the vendor who delivers the products.';
trigger OnAfterLookup(Selected: RecordRef)
var
Vendor: Record Vendor;
begin
Selected.SetTable(Vendor);
if Rec."Buy-from Vendor No." <> Vendor."No." then begin
Rec.Validate("Buy-from Vendor No.", Vendor."No.");
if Rec."Buy-from Vendor No." <> Vendor."No." then
error('');
IsPurchaseLinesEditable := Rec.PurchaseLinesEditable();
CurrPage.Update();
end;
end;
trigger OnValidate()
begin
IsPurchaseLinesEditable := Rec.PurchaseLinesEditable();
Rec.OnAfterValidateBuyFromVendorNo(Rec, xRec);
CurrPage.Update();
end;
}
field("Buy-from Vendor Name 2"; Rec."Buy-from Vendor Name 2")
{
ApplicationArea = Suite;
Caption = 'Vendor Name 2';
Importance = Additional;
QuickEntry = false;
Visible = false;
}
group("Buy-from")
{
Caption = 'Buy-from';
field("Buy-from Address"; Rec."Buy-from Address")
{
ApplicationArea = Suite;
Caption = 'Address';
Importance = Additional;
QuickEntry = false;
}
field("Buy-from Address 2"; Rec."Buy-from Address 2")
{
ApplicationArea = Suite;
Caption = 'Address 2';
Importance = Additional;
QuickEntry = false;
}
field("Buy-from City"; Rec."Buy-from City")
{
ApplicationArea = Suite;
Caption = 'City';
Importance = Additional;
QuickEntry = false;
ToolTip = 'Specifies the city of the vendor who ships the items.';
}
group(Control122)
{
ShowCaption = false;
Visible = IsBuyFromCountyVisible;
field("Buy-from County"; Rec."Buy-from County")
{
ApplicationArea = Suite;
CaptionClass = '5,1,' + Rec."Buy-from Country/Region Code";
Importance = Additional;
QuickEntry = false;
}
}
field("Buy-from Post Code"; Rec."Buy-from Post Code")
{
ApplicationArea = Suite;
Caption = 'Post Code';
Importance = Additional;
QuickEntry = false;
ToolTip = 'Specifies the postal code.';
}
field("Buy-from Country/Region Code"; Rec."Buy-from Country/Region Code")
{
ApplicationArea = Suite;
Caption = 'Country/Region';
Importance = Additional;
QuickEntry = false;
ToolTip = 'Specifies the country or region of the address.';
trigger OnValidate()
begin
IsBuyFromCountyVisible := FormatAddress.UseCounty(Rec."Buy-from Country/Region Code");
end;
}
field("Buy-from Contact No."; Rec."Buy-from Contact No.")
{
ApplicationArea = Suite;
Caption = 'Contact No.';
Importance = Additional;
trigger OnLookup(var Text: Text): Boolean
begin
if not Rec.BuyfromContactLookup() then
exit(false);
Text := Rec."Buy-from Contact No.";
CurrPage.Update();
exit(true);
end;
trigger OnValidate()
begin
if xRec."Buy-from Contact No." <> Rec."Buy-from Contact No." then
CurrPage.Update();
end;
}
field(BuyFromContactPhoneNo; BuyFromContact."Phone No.")
{
ApplicationArea = Suite;
Caption = 'Phone No.';
Importance = Additional;
Editable = false;
ExtendedDatatype = PhoneNo;
ToolTip = 'Specifies the telephone number of the vendor contact person.';
}
field(BuyFromContactMobilePhoneNo; BuyFromContact."Mobile Phone No.")
{
ApplicationArea = Suite;
Caption = 'Mobile Phone No.';
Importance = Additional;
Editable = false;
ExtendedDatatype = PhoneNo;
ToolTip = 'Specifies the mobile telephone number of the vendor contact person.';
}
field(BuyFromContactEmail; BuyFromContact."E-Mail")
{
ApplicationArea = Suite;
Caption = 'Email';
Importance = Additional;
Editable = false;
ExtendedDatatype = EMail;
ToolTip = 'Specifies the email address of the vendor contact person.';
}
}
field("Buy-from Contact"; Rec."Buy-from Contact")
{
ApplicationArea = Suite;
Caption = 'Contact';
Editable = Rec."Buy-from Vendor No." <> '';
ToolTip = 'Specifies the name of the person to contact about shipment of the item from this vendor.';
trigger OnLookup(var Text: Text): Boolean
begin
Rec.LookupBuyFromContact();
CurrPage.Update();
end;
}
field("No. of Archived Versions"; Rec."No. of Archived Versions")
{
ApplicationArea = Suite;
}
field("Document Date"; Rec."Document Date")
{
ApplicationArea = Suite;
}
field("Due Date"; Rec."Due Date")
{
ApplicationArea = Suite;
ToolTip = 'Specifies when the related sales invoice must be paid.';
}
field("Order Date"; Rec."Order Date")
{
ApplicationArea = Suite;
}
field("Vendor Shipment No."; Rec."Vendor Shipment No.")
{
ApplicationArea = Suite;
ToolTip = 'Specifies the vendor''s shipment number. It is inserted in the corresponding field on the source document during posting.';
}
field("Order Address Code"; Rec."Order Address Code")
{
ApplicationArea = Suite;
ToolTip = 'Specifies the order address code linked to the relevant vendor''s order address.';
Enabled = Rec."Buy-from Vendor No." <> '';
}
field("Vendor Order No."; Rec."Vendor Order No.")
{
ApplicationArea = Suite;
}
field("Purchaser Code"; Rec."Purchaser Code")
{
ApplicationArea = Suite;
trigger OnValidate()
begin
PurchaserCodeOnAfterValidate();
end;
}
field("Campaign No."; Rec."Campaign No.")
{
ApplicationArea = Suite;
}
field("Responsibility Center"; Rec."Responsibility Center")
{
ApplicationArea = Suite;
}
field("Assigned User ID"; Rec."Assigned User ID")
{
ApplicationArea = Suite;
}
field(Status; Rec.Status)
{
ApplicationArea = Suite;
Importance = Promoted;
StyleExpr = StatusStyleTxt;
}
field("Language Code"; Rec."Language Code")
{
ApplicationArea = Basic, Suite;
Visible = false;
}
field("Format Region"; Rec."Format Region")
{
ApplicationArea = Basic, Suite;
Visible = false;
}
}
part(PurchLines; "Blanket Purchase Order Subform")
{
ApplicationArea = Suite;
Editable = IsPurchaseLinesEditable;
Enabled = IsPurchaseLinesEditable;
SubPageLink = "Document No." = field("No.");
UpdatePropagation = Both;
}
group("Invoice Details")
{
Caption = 'Invoice Details';
field("Currency Code"; Rec."Currency Code")
{
ApplicationArea = Suite;
ToolTip = 'Specifies the currency that is used on the entry.';
trigger OnAssistEdit()
begin
Clear(ChangeExchangeRate);
ChangeExchangeRate.SetParameter(Rec."Currency Code", Rec."Currency Factor", WorkDate());
if ChangeExchangeRate.RunModal() = ACTION::OK then begin
Rec.Validate("Currency Factor", ChangeExchangeRate.GetParameter());
SaveInvoiceDiscountAmount();
end;
Clear(ChangeExchangeRate);
end;
trigger OnValidate()
begin
CurrPage.Update();
PurchCalcDiscByType.ApplyDefaultInvoiceDiscount(0, Rec);
end;
}
field("Expected Receipt Date"; Rec."Expected Receipt Date")
{
ApplicationArea = Suite;
}
field("Prices Including VAT"; Rec."Prices Including VAT")
{
ApplicationArea = VAT;
trigger OnValidate()
begin
PricesIncludingVATOnAfterValid();
end;
}
field("VAT Bus. Posting Group"; Rec."VAT Bus. Posting Group")
{
ApplicationArea = Basic, Suite;
}
field("Payment Terms Code"; Rec."Payment Terms Code")
{
ApplicationArea = Suite;
}
field("Payment Method Code"; Rec."Payment Method Code")
{
ApplicationArea = Suite;
Visible = IsPaymentMethodCodeVisible;
}
field("Tax Liable"; Rec."Tax Liable")
{
ApplicationArea = SalesTax;
}
field("Tax Area Code"; Rec."Tax Area Code")
{
ApplicationArea = SalesTax;
trigger OnValidate()
begin
CurrPage.PurchLines.PAGE.RedistributeTotalsOnAfterValidate();
end;
}
field("Transaction Type"; Rec."Transaction Type")
{
ApplicationArea = Suite;
}
field("Shortcut Dimension 1 Code"; Rec."Shortcut Dimension 1 Code")
{
ApplicationArea = Dimensions;
trigger OnValidate()
begin
ShortcutDimension1CodeOnAfterV();
end;
}
field("Shortcut Dimension 2 Code"; Rec."Shortcut Dimension 2 Code")
{
ApplicationArea = Dimensions;
trigger OnValidate()
begin
ShortcutDimension2CodeOnAfterV();
end;
}
field("Payment Discount %"; Rec."Payment Discount %")
{
ApplicationArea = Suite;
ToolTip = 'Specifies the payment discount percentage that is granted if you pay on or before the date entered in the Pmt. Discount Date field. The discount percentage is specified in the Payment Terms Code field.';
}
field("Pmt. Discount Date"; Rec."Pmt. Discount Date")
{
ApplicationArea = Suite;
}
field("Journal Templ. Name"; Rec."Journal Templ. Name")
{
ApplicationArea = BasicBE;
Visible = IsJournalTemplNameVisible;
}
field("Location Code"; Rec."Location Code")
{
ApplicationArea = Suite;
}
field("Shipment Method Code"; Rec."Shipment Method Code")
{
ApplicationArea = Suite;
}
field("On Hold"; Rec."On Hold")
{
ApplicationArea = Suite;
}
}
group("Shipping and Payment")
{
Caption = 'Shipping and Payment';
group("Ship-to")
{
Caption = 'Ship-to';
field("Ship-to Name"; Rec."Ship-to Name")
{
ApplicationArea = Suite;
Caption = 'Name';
Importance = Additional;
ToolTip = 'Specifies the name of the company at the address to which you want the items in the purchase order to be shipped.';
}
field("Ship-to Name 2"; Rec."Ship-to Name 2")
{
ApplicationArea = Suite;
Caption = 'Name 2';
Importance = Additional;
ToolTip = 'Specifies an additional part of the name of the company at the address to which you want the items in the purchase order to be shipped.';
Visible = false;
}
field("Ship-to Address"; Rec."Ship-to Address")
{
ApplicationArea = Suite;
Caption = 'Address';
Importance = Additional;
QuickEntry = false;
}
field("Ship-to Address 2"; Rec."Ship-to Address 2")
{
ApplicationArea = Suite;
Caption = 'Address 2';
Importance = Additional;
QuickEntry = false;
}
field("Ship-to City"; Rec."Ship-to City")
{
ApplicationArea = Suite;
Caption = 'City';
Importance = Additional;
QuickEntry = false;
ToolTip = 'Specifies the city the items in the purchase order will be shipped to.';
}
group(Control124)
{
ShowCaption = false;
Visible = IsShipToCountyVisible;
field("Ship-to County"; Rec."Ship-to County")
{
ApplicationArea = Basic, Suite;
CaptionClass = '5,1,' + Rec."Ship-to Country/Region Code";
Importance = Additional;
QuickEntry = false;
}
}
field("Ship-to Post Code"; Rec."Ship-to Post Code")
{
ApplicationArea = Suite;
Caption = 'Post Code';
Importance = Additional;
QuickEntry = false;
ToolTip = 'Specifies the postal code.';
}
field("Ship-to Country/Region Code"; Rec."Ship-to Country/Region Code")
{
ApplicationArea = Basic, Suite;
Caption = 'Country/Region';
Importance = Additional;
QuickEntry = false;
ToolTip = 'Specifies the country/region code of the address that you want the items on the purchase document to be shipped to.';
trigger OnValidate()
begin
IsShipToCountyVisible := FormatAddress.UseCounty(Rec."Ship-to Country/Region Code");
end;
}
field("Ship-to Phone No."; Rec."Ship-to Phone No.")
{
ApplicationArea = Basic, Suite;
Caption = 'Phone No.';
Importance = Additional;
QuickEntry = false;
}
field("Ship-to Contact"; Rec."Ship-to Contact")
{
ApplicationArea = Suite;
Caption = 'Contact';
Importance = Additional;
ToolTip = 'Specifies the name of a contact person for the address where the items in the purchase order should be shipped.';
}
}
group("Pay-to")
{
Caption = 'Pay-to';
field("Pay-to Name"; Rec."Pay-to Name")
{
ApplicationArea = Suite;
Caption = 'Name';
Importance = Promoted;
ToolTip = 'Specifies the name of the vendor sending the invoice.';
trigger OnValidate()
begin
if Rec.GetFilter("Pay-to Vendor No.") = xRec."Pay-to Vendor No." then
if Rec."Pay-to Vendor No." <> xRec."Pay-to Vendor No." then
Rec.SetRange("Pay-to Vendor No.");
CurrPage.Update();
end;
}
field("Pay-to Name 2"; Rec."Pay-to Name 2")
{
ApplicationArea = Suite;
Caption = 'Name 2';
Importance = Additional;
QuickEntry = false;
Visible = false;
}
field("Pay-to Address"; Rec."Pay-to Address")
{
ApplicationArea = Suite;
Caption = 'Address';
Editable = Rec."Buy-from Vendor No." <> Rec."Pay-to Vendor No.";
Enabled = Rec."Buy-from Vendor No." <> Rec."Pay-to Vendor No.";
Importance = Additional;
QuickEntry = false;
}
field("Pay-to Address 2"; Rec."Pay-to Address 2")
{
ApplicationArea = Suite;
Caption = 'Address 2';
Editable = Rec."Buy-from Vendor No." <> Rec."Pay-to Vendor No.";
Enabled = Rec."Buy-from Vendor No." <> Rec."Pay-to Vendor No.";
Importance = Additional;
QuickEntry = false;
}
field("Pay-to City"; Rec."Pay-to City")
{
ApplicationArea = Suite;
Caption = 'City';
Editable = Rec."Buy-from Vendor No." <> Rec."Pay-to Vendor No.";
Enabled = Rec."Buy-from Vendor No." <> Rec."Pay-to Vendor No.";
Importance = Additional;
QuickEntry = false;
ToolTip = 'Specifies the city of the vendor sending the invoice.';
}
group(Control123)
{
ShowCaption = false;
Visible = IsPayToCountyVisible;
field("Pay-to County"; Rec."Pay-to County")
{
ApplicationArea = Basic, Suite;
CaptionClass = '5,1,' + Rec."Pay-to Country/Region Code";
Editable = Rec."Buy-from Vendor No." <> Rec."Pay-to Vendor No.";
Enabled = Rec."Buy-from Vendor No." <> Rec."Pay-to Vendor No.";
Importance = Additional;
QuickEntry = false;
}
}
field("Pay-to Post Code"; Rec."Pay-to Post Code")
{
ApplicationArea = Suite;
Caption = 'Post Code';
Editable = Rec."Buy-from Vendor No." <> Rec."Pay-to Vendor No.";
Enabled = Rec."Buy-from Vendor No." <> Rec."Pay-to Vendor No.";
Importance = Additional;
QuickEntry = false;
ToolTip = 'Specifies the postal code.';
}
field("Pay-to Country/Region Code"; Rec."Pay-to Country/Region Code")
{
ApplicationArea = Basic, Suite;
Caption = 'Country/Region';
Editable = Rec."Buy-from Vendor No." <> Rec."Pay-to Vendor No.";
Enabled = Rec."Buy-from Vendor No." <> Rec."Pay-to Vendor No.";
Importance = Additional;
QuickEntry = false;
ToolTip = 'Specifies the country/region code of the vendor on the purchase document.';
trigger OnValidate()
begin
IsPayToCountyVisible := FormatAddress.UseCounty(Rec."Pay-to Country/Region Code");
end;
}
field("Pay-to Contact No."; Rec."Pay-to Contact No.")
{
ApplicationArea = Suite;
Caption = 'Contact No.';
Editable = Rec."Buy-from Vendor No." <> Rec."Pay-to Vendor No.";
Enabled = Rec."Buy-from Vendor No." <> Rec."Pay-to Vendor No.";
Importance = Additional;
}
field("Pay-to Contact"; Rec."Pay-to Contact")
{
ApplicationArea = Suite;
Caption = 'Contact';
Editable = Rec."Buy-from Vendor No." <> Rec."Pay-to Vendor No.";
Enabled = Rec."Buy-from Vendor No." <> Rec."Pay-to Vendor No.";
Importance = Additional;
}
field(PayToContactPhoneNo; PayToContact."Phone No.")
{
ApplicationArea = Basic, Suite;
Caption = 'Phone No.';
Editable = false;
Importance = Additional;
ExtendedDatatype = PhoneNo;
ToolTip = 'Specifies the telephone number of the vendor contact person.';
}
field(PayToContactMobilePhoneNo; PayToContact."Mobile Phone No.")
{
ApplicationArea = Basic, Suite;
Caption = 'Mobile Phone No.';
Editable = false;
Importance = Additional;
ExtendedDatatype = PhoneNo;
ToolTip = 'Specifies the mobile telephone number of the vendor contact person.';
}
field(PayToContactEmail; PayToContact."E-Mail")
{
ApplicationArea = Basic, Suite;
Caption = 'Email';
Editable = false;
Importance = Additional;
ExtendedDatatype = Email;
ToolTip = 'Specifies the email address of the vendor contact person.';
}
}
}
group("Foreign Trade")
{
Caption = 'Foreign Trade';
field("Transaction Specification"; Rec."Transaction Specification")
{
ApplicationArea = BasicEU, BasicNO;
}
field("Transport Method"; Rec."Transport Method")
{
ApplicationArea = BasicEU, BasicNO;
}
field("Entry Point"; Rec."Entry Point")
{
ApplicationArea = BasicEU, BasicNO;
}
field("Area"; Rec.Area)
{
ApplicationArea = BasicEU, BasicNO;
}
}
}
area(factboxes)
{
part("Attached Documents List"; "Doc. Attachment List Factbox")
{
ApplicationArea = All;
Caption = 'Documents';
UpdatePropagation = Both;
SubPageLink = "Table ID" = const(Database::"Purchase Header"),
"No." = field("No."),
"Document Type" = field("Document Type");
}
part(Control5; "Pending Approval FactBox")
{
ApplicationArea = Suite;
SubPageLink = "Table ID" = const(38),
"Document Type" = field("Document Type"),
"Document No." = field("No."),
Status = const(Open);
Visible = OpenApprovalEntriesExistForCurrUser;
}
part(ApprovalFactBox; "Approval FactBox")
{
ApplicationArea = Suite;
Visible = false;
}
part(Control1901138007; "Vendor Details FactBox")
{
ApplicationArea = Suite;
SubPageLink = "No." = field("Buy-from Vendor No."),
"Date Filter" = field("Date Filter");
}
part(Control1904651607; "Vendor Statistics FactBox")
{
ApplicationArea = Suite;
SubPageLink = "No." = field("Pay-to Vendor No."),
"Date Filter" = field("Date Filter");
}
part(Control3; "Purchase Line FactBox")
{
ApplicationArea = Suite;
Provider = PurchLines;
SubPageLink = "Document Type" = field("Document Type"),
"Document No." = field("Document No."),
"Line No." = field("Line No.");
Visible = false;
}
part(WorkflowStatus; "Workflow Status FactBox")
{
ApplicationArea = Suite;
Editable = false;
Enabled = false;
ShowFilter = false;
Visible = ShowWorkflowStatus;
}
systempart(Control1900383207; Links)
{
ApplicationArea = RecordLinks;
Visible = false;
}
systempart(Control1905767507; Notes)
{
ApplicationArea = Notes;
}
}
}
actions
{
area(navigation)
{
group("O&rder")
{
Caption = 'O&rder';
Image = "Order";
action(PurchaseOrderStatistics)
{
ApplicationArea = Basic, Suite;
Caption = 'Statistics';
Enabled = Rec."No." <> '';
Image = Statistics;
ShortCutKey = 'F7';
Visible = true;
ToolTip = 'View statistical information, such as the value of posted entries, for the record.';
RunObject = Page "Purchase Order Statistics";
RunPageOnRec = true;
}
action(Card)
{
ApplicationArea = Suite;
Caption = 'Card';
Image = EditLines;
RunObject = Page "Vendor Card";
RunPageLink = "No." = field("Buy-from Vendor No.");
ShortCutKey = 'Shift+F7';
ToolTip = 'View or edit detailed information about the vendor on the purchase document.';
}
action(VendorStatistics)
{
ApplicationArea = Basic, Suite;
Caption = 'Vendor Statistics';
Enabled = Rec."Buy-from Vendor No." <> '';
Image = Statistics;
RunObject = Page "Vendor Statistics";
RunPageLink = "No." = field("Buy-from Vendor No."),
"Date Filter" = field("Date Filter");
ToolTip = 'View statistical information, such as the value of posted entries, for the buy-from vendor on the purchase document.';
}
action("Co&mments")
{
ApplicationArea = Suite;
Caption = 'Co&mments';
Image = ViewComments;
RunObject = Page "Purch. Comment Sheet";
RunPageLink = "Document Type" = const("Blanket Order"),
"No." = field("No."),
"Document Line No." = const(0);
ToolTip = 'View or add comments for the record.';
}
action(Dimensions)
{
AccessByPermission = TableData Dimension = R;
ApplicationArea = Dimensions;
Caption = 'Dimensions';
Enabled = Rec."No." <> '';
Image = Dimensions;
ShortCutKey = 'Alt+D';
ToolTip = 'View or edit dimensions, such as area, project, or department, that you can assign to sales and purchase documents to distribute costs and analyze transaction history.';
trigger OnAction()
begin
Rec.ShowDocDim();
end;
}
action(Approvals)
{
AccessByPermission = TableData "Approval Entry" = R;
ApplicationArea = Suite;
Caption = 'Approvals';
Image = Approvals;
ToolTip = 'View a list of the records that are waiting to be approved. For example, you can see who requested the record to be approved, when it was sent, and when it is due to be approved.';
trigger OnAction()
var
ApprovalsMgmt: Codeunit "Approvals Mgmt.";
begin
ApprovalsMgmt.OpenApprovalsPurchase(Rec);
end;
}
action(DocAttach)
{
ApplicationArea = All;
Caption = 'Attachments';
Image = Attach;
ToolTip = 'Add a file as an attachment. You can attach images as well as documents.';
trigger OnAction()
var
DocumentAttachmentDetails: Page "Document Attachment Details";
RecRef: RecordRef;
begin
RecRef.GetTable(Rec);
DocumentAttachmentDetails.OpenForRecRef(RecRef);
DocumentAttachmentDetails.RunModal();
end;
}
}
}
area(processing)
{
group(Approval)
{
Caption = 'Approval';
action(Approve)
{
ApplicationArea = Suite;
Caption = 'Approve';
Image = Approve;
ToolTip = 'Approve the requested changes.';
Visible = OpenApprovalEntriesExistForCurrUser;
trigger OnAction()
var
ApprovalsMgmt: Codeunit "Approvals Mgmt.";
begin
ApprovalsMgmt.ApproveRecordApprovalRequest(Rec.RecordId);
end;
}
action(Reject)
{
ApplicationArea = Suite;
Caption = 'Reject';
Image = Reject;
ToolTip = 'Reject the approval request.';
Visible = OpenApprovalEntriesExistForCurrUser;
trigger OnAction()
var
ApprovalsMgmt: Codeunit "Approvals Mgmt.";
begin
ApprovalsMgmt.RejectRecordApprovalRequest(Rec.RecordId);
end;
}
action(Delegate)
{
ApplicationArea = Suite;
Caption = 'Delegate';
Image = Delegate;
ToolTip = 'Delegate the approval to a substitute approver.';
Visible = OpenApprovalEntriesExistForCurrUser;
trigger OnAction()
var
ApprovalsMgmt: Codeunit "Approvals Mgmt.";
begin
ApprovalsMgmt.DelegateRecordApprovalRequest(Rec.RecordId);
end;
}
action(Comment)
{
ApplicationArea = Suite;
Caption = 'Comments';
Image = ViewComments;
ToolTip = 'View or add comments for the record.';
Visible = OpenApprovalEntriesExistForCurrUser;
trigger OnAction()
var
ApprovalsMgmt: Codeunit "Approvals Mgmt.";
begin
ApprovalsMgmt.GetApprovalComment(Rec);
end;
}
}
group("F&unctions")
{
Caption = 'F&unctions';
Image = "Action";
action(CalculateInvoiceDiscount)
{
AccessByPermission = TableData "Vendor Invoice Disc." = R;
ApplicationArea = Suite;
Caption = 'Calculate &Invoice Discount';
Image = CalculateInvoiceDiscount;
ToolTip = 'Calculate the invoice discount for the entire purchase invoice.';
trigger OnAction()
begin
ApproveCalcInvDisc();
PurchCalcDiscByType.ResetRecalculateInvoiceDisc(Rec);
end;
}
separator(Action133)
{
}
action(CopyDocument)
{
ApplicationArea = Suite;
Caption = 'Copy Document';
Ellipsis = true;
Enabled = Rec."No." <> '';
Image = CopyDocument;
ToolTip = 'Copy document lines and header information from another purchase document to this document. You can copy a posted purchase invoice into a new purchase invoice to quickly create a similar document.';
trigger OnAction()
begin
Rec.CopyDocument();
end;
}
action("Archi&ve Document")
{
ApplicationArea = Suite;
Caption = 'Archi&ve Document';
Image = Archive;
ToolTip = 'Archive Document.';
trigger OnAction()
begin
ArchiveManagement.ArchivePurchDocument(Rec);
CurrPage.Update(false);
end;
}
action(Release)
{
ApplicationArea = Suite;
Caption = 'Re&lease';
Enabled = Rec.Status <> Rec.Status::Released;
Image = ReleaseDoc;
ShortCutKey = 'Ctrl+F9';
ToolTip = 'Release the document to the next stage of processing. You must reopen the document before you can make changes to it.';
trigger OnAction()
var
ReleasePurchDoc: Codeunit "Release Purchase Document";
begin
ReleasePurchDoc.PerformManualRelease(Rec);
CurrPage.PurchLines.PAGE.ClearTotalPurchaseHeader();
end;
}
action(Reopen)
{
ApplicationArea = Suite;
Caption = 'Re&open';
Enabled = Rec.Status <> Rec.Status::Open;
Image = ReOpen;
ToolTip = 'Reopen the document to change it after it has been approved. Approved documents have the Released status and must be opened before they can be changed';
trigger OnAction()
var
ReleasePurchDoc: Codeunit "Release Purchase Document";
begin
ReleasePurchDoc.PerformManualReopen(Rec);
CurrPage.PurchLines.PAGE.ClearTotalPurchaseHeader();
end;
}
}
group("Request Approval")
{
Caption = 'Request Approval';
action(SendApprovalRequest)
{
ApplicationArea = Suite;
Caption = 'Send A&pproval Request';
Enabled = not OpenApprovalEntriesExist;
Image = SendApprovalRequest;
ToolTip = 'Request approval of the document.';
trigger OnAction()
var
ApprovalsMgmt: Codeunit "Approvals Mgmt.";
begin
if ApprovalsMgmt.CheckPurchaseApprovalPossible(Rec) then
ApprovalsMgmt.OnSendPurchaseDocForApproval(Rec);
end;
}
action(CancelApprovalRequest)
{
ApplicationArea = Suite;
Caption = 'Cancel Approval Re&quest';
Enabled = CanCancelApprovalForRecord;
Image = CancelApprovalRequest;
ToolTip = 'Cancel the approval request.';
trigger OnAction()
var
ApprovalsMgmt: Codeunit "Approvals Mgmt.";
begin
ApprovalsMgmt.OnCancelPurchaseApprovalRequest(Rec);
end;
}
}
action(MakeOrder)
{
ApplicationArea = Suite;
Caption = 'Make &Order';
Image = MakeOrder;
ToolTip = 'Convert the blank purchase order to a purchase order.';
trigger OnAction()
var
ApprovalsMgmt: Codeunit "Approvals Mgmt.";
begin
if ApprovalsMgmt.PrePostApprovalCheckPurch(Rec) then
CODEUNIT.Run(CODEUNIT::"Blnkt Purch Ord. to Ord. (Y/N)", Rec);
end;
}
action(Print)
{
ApplicationArea = Suite;
Caption = '&Print';
Ellipsis = true;
Image = Print;
ToolTip = 'Prepare to print the document. A report request window for the document opens where you can specify what to include on the print-out.';
trigger OnAction()
begin
DocPrint.PrintPurchHeader(Rec);
end;
}
action(Email)
{
ApplicationArea = Basic, Suite;
Caption = 'Send by Email';
Ellipsis = true;
Image = Email;
ToolTip = 'Finalize and prepare to email the document. The Send Email window opens prefilled with the vendor''s email address so you can add or edit information.';
trigger OnAction()
var
DocPrint: Codeunit "Document-Print";
begin
DocPrint.EmailPurchHeader(Rec);
end;
}
action(Send)
{
ApplicationArea = Basic, Suite;
Caption = 'Send';
Ellipsis = true;
Image = SendToMultiple;
ToolTip = 'Prepare to send the document according to the vendor''s sending profile, such as attached to an email. The Send document to window opens first so you can confirm or select a sending profile.';
trigger OnAction()
var
PurchaseHeader: Record "Purchase Header";
begin
PurchaseHeader := Rec;
CurrPage.SetSelectionFilter(PurchaseHeader);
PurchaseHeader.SendRecords();
end;
}
action(AttachAsPDF)
{
ApplicationArea = Basic, Suite;
Caption = 'Attach as PDF';
Image = PrintAttachment;
ToolTip = 'Create a PDF file and attach it to the document.';
trigger OnAction()
var
PurchaseHeader: Record "Purchase Header";
DocPrint: Codeunit "Document-Print";
begin
PurchaseHeader := Rec;
PurchaseHeader.SetRecFilter();
DocPrint.PrintPurchaseHeaderToDocumentAttachment(PurchaseHeader);
end;
}
}
area(Promoted)
{
group(Category_Process)
{
Caption = 'Process', Comment = 'Generated from the PromotedActionCategories property index 1.';
actionref(MakeOrder_Promoted; MakeOrder)
{
}
group(Category_Category7)
{
Caption = 'Release', Comment = 'Generated from the PromotedActionCategories property index 6.';
ShowAs = SplitButton;
actionref(Release_Promoted; Release)
{
}
actionref(Reopen_Promoted; Reopen)
{
}
}
actionref("Archi&ve Document_Promoted"; "Archi&ve Document")
{
}
}
group(Category_Prepare)
{
Caption = 'Prepare';
actionref(CopyDocument_Promoted; CopyDocument)
{
}
actionref(CalculateInvoiceDiscount_Promoted; CalculateInvoiceDiscount)
{
}
}
group(Category_Category4)
{
Caption = 'Approve', Comment = 'Generated from the PromotedActionCategories property index 3.';
actionref(Approve_Promoted; Approve)
{
}
actionref(Reject_Promoted; Reject)
{
}
actionref(Comment_Promoted; Comment)
{
}
actionref(Delegate_Promoted; Delegate)
{
}
}
group(Category_Category6)
{
Caption = 'Print/Send', Comment = 'Generated from the PromotedActionCategories property index 5.';
actionref(Email_Promoted; Email)
{
}
actionref(Print_Promoted; Print)
{
}
actionref(Send_Promoted; Send)
{
}
actionref(AttachAsPDF_Promoted; AttachAsPDF)
{
}
}
group(Category_Category5)
{
Caption = 'Request Approval', Comment = 'Generated from the PromotedActionCategories property index 4.';
actionref(SendApprovalRequest_Promoted; SendApprovalRequest)
{
}
actionref(CancelApprovalRequest_Promoted; CancelApprovalRequest)
{
}
}
group(Category_Category8)
{
Caption = 'Order', Comment = 'Generated from the PromotedActionCategories property index 7.';
actionref(Dimensions_Promoted; Dimensions)
{
}
actionref(PurchaseOrderStatistics_Promoted; PurchaseOrderStatistics)
{
}
actionref("Co&mments_Promoted"; "Co&mments")
{
}
actionref(DocAttach_Promoted; DocAttach)
{
}
actionref(Approvals_Promoted; Approvals)
{
}
}
group(Category_Report)
{
Caption = 'Report', Comment = 'Generated from the PromotedActionCategories property index 2.';
}
}
}
trigger OnAfterGetCurrRecord()
begin
SetControlAppearance();
ShowWorkflowStatus := CurrPage.WorkflowStatus.PAGE.SetFilterOnWorkflowRecord(Rec.RecordId);
CurrPage.ApprovalFactBox.PAGE.UpdateApprovalEntriesFromSourceRecord(Rec.RecordId);
StatusStyleTxt := Rec.GetStatusStyleText();
Rec.GetContactDetails(BuyFromContact, PayToContact);
end;
trigger OnAfterGetRecord()
begin
Rec.GetContactDetails(BuyFromContact, PayToContact);
end;
trigger OnDeleteRecord(): Boolean
begin
CurrPage.SaveRecord();
exit(Rec.ConfirmDeletion());
end;
trigger OnNewRecord(BelowxRec: Boolean)
begin
Rec."Responsibility Center" := UserMgt.GetPurchasesFilter();
if (not DocNoVisible) and (Rec."No." = '') then
Rec.SetBuyFromVendorFromFilter();
end;
trigger OnOpenPage()
begin
Rec.SetSecurityFilterOnRespCenter();
SetDocNoVisible();
ActivateFields();
end;
var
BuyFromContact: Record Contact;
PayToContact: Record Contact;
GLSetup: Record "General Ledger Setup";
DocPrint: Codeunit "Document-Print";
UserMgt: Codeunit "User Setup Management";
ArchiveManagement: Codeunit ArchiveManagement;
PurchCalcDiscByType: Codeunit "Purch - Calc Disc. By Type";
FormatAddress: Codeunit "Format Address";
ChangeExchangeRate: Page "Change Exchange Rate";
DocNoVisible: Boolean;
OpenApprovalEntriesExist: Boolean;
OpenApprovalEntriesExistForCurrUser: Boolean;
ShowWorkflowStatus: Boolean;
CanCancelApprovalForRecord: Boolean;
StatusStyleTxt: Text;
IsJournalTemplNameVisible: Boolean;
IsPaymentMethodCodeVisible: Boolean;
IsPurchaseLinesEditable: Boolean;
IsBuyFromCountyVisible: Boolean;
IsPayToCountyVisible: Boolean;
IsShipToCountyVisible: Boolean;
local procedure ActivateFields()
begin
IsBuyFromCountyVisible := FormatAddress.UseCounty(Rec."Buy-from Country/Region Code");
IsPayToCountyVisible := FormatAddress.UseCounty(Rec."Pay-to Country/Region Code");
IsShipToCountyVisible := FormatAddress.UseCounty(Rec."Ship-to Country/Region Code");
GLSetup.Get();
IsJournalTemplNameVisible := GLSetup."Journal Templ. Name Mandatory";
IsPaymentMethodCodeVisible := not GLSetup."Hide Payment Method Code";
IsPurchaseLinesEditable := Rec.PurchaseLinesEditable();
end;
local procedure ApproveCalcInvDisc()
begin
CurrPage.PurchLines.PAGE.ApproveCalcInvDisc();
end;
local procedure SaveInvoiceDiscountAmount()
var
DocumentTotals: Codeunit "Document Totals";
begin
CurrPage.SaveRecord();
DocumentTotals.PurchaseRedistributeInvoiceDiscountAmountsOnDocument(Rec);
CurrPage.Update(false);
end;
local procedure PurchaserCodeOnAfterValidate()
begin
CurrPage.PurchLines.PAGE.UpdateForm(true);
end;
local procedure ShortcutDimension1CodeOnAfterV()
begin
CurrPage.PurchLines.PAGE.UpdateForm(true);
end;
local procedure ShortcutDimension2CodeOnAfterV()
begin
CurrPage.PurchLines.PAGE.UpdateForm(true);
end;
local procedure PricesIncludingVATOnAfterValid()
begin
CurrPage.PurchLines.Page.ForceTotalsCalculation();
CurrPage.Update();
end;
local procedure SetDocNoVisible()
var
DocumentNoVisibility: Codeunit DocumentNoVisibility;
DocType: Option Quote,"Order",Invoice,"Credit Memo","Blanket Order","Return Order",Reminder,FinChMemo;
begin
DocNoVisible := DocumentNoVisibility.PurchaseDocumentNoIsVisible(DocType::"Blanket Order", Rec."No.");
end;
local procedure SetControlAppearance()
var
ApprovalsMgmt: Codeunit "Approvals Mgmt.";
begin
OpenApprovalEntriesExistForCurrUser := ApprovalsMgmt.HasOpenApprovalEntriesForCurrentUser(Rec.RecordId);
OpenApprovalEntriesExist := ApprovalsMgmt.HasOpenApprovalEntries(Rec.RecordId);
CanCancelApprovalForRecord := ApprovalsMgmt.CanCancelApprovalForRecord(Rec.RecordId);
IsPurchaseLinesEditable := Rec.PurchaseLinesEditable();
end;
}