Page 507 Blanket Sales Order
- App
- Base Application
- Namespace
- Microsoft.Sales.Document
- Versions
- 17-28
- Source table
- 36
Versions171819202122232425262728
Source29
Source in 29
src/Layers/W1/BaseApp/Sales/Document/BlanketSalesOrder.Page.al1483 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.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.Projects.Resources.Resource;
using Microsoft.Sales.Comment;
using Microsoft.Sales.Customer;
using Microsoft.Sales.Pricing;
using Microsoft.Utilities;
using System.Automation;
using System.Security.User;
/// <summary>
/// Displays and manages a single blanket sales order for long-term customer agreements.
/// </summary>
page 507 "Blanket Sales Order"
{
Caption = 'Blanket Sales Order';
PageType = Document;
RefreshOnActivate = true;
SourceTable = "Sales Header";
SourceTableView = where("Document Type" = filter("Blanket Order"));
layout
{
area(content)
{
group(General)
{
Caption = 'General';
field("No."; Rec."No.")
{
ApplicationArea = Suite;
Importance = Standard;
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("Sell-to Customer No."; Rec."Sell-to Customer No.")
{
ApplicationArea = Suite;
Caption = 'Customer No.';
Importance = Additional;
NotBlank = true;
ToolTip = 'Specifies the number of the customer who will receive the products and be billed by default.';
trigger OnValidate()
begin
IsSalesLinesEditable := Rec.SalesLinesEditable();
Rec.SelltoCustomerNoOnAfterValidate(Rec, xRec);
CurrPage.Update();
end;
}
field("Sell-to Customer Name"; Rec."Sell-to Customer Name")
{
ApplicationArea = Suite;
Caption = 'Customer Name';
Importance = Promoted;
ToolTip = 'Specifies the name of the customer who will receive the products and be billed by default.';
trigger OnAfterLookup(Selected: RecordRef)
var
Customer: Record Customer;
begin
Selected.SetTable(Customer);
if Rec."Sell-to Customer No." <> Customer."No." then begin
Rec.Validate("Sell-to Customer No.", Customer."No.");
if Rec."Sell-to Customer No." <> Customer."No." then
error('');
IsSalesLinesEditable := Rec.SalesLinesEditable();
CurrPage.Update();
end;
end;
trigger OnValidate()
begin
Rec.SelltoCustomerNoOnAfterValidate(Rec, xRec);
CurrPage.Update();
end;
}
field("Sell-to Customer Name 2"; Rec."Sell-to Customer Name 2")
{
ApplicationArea = Suite;
Caption = 'Customer Name 2';
QuickEntry = false;
Visible = false;
}
group("Sell-to")
{
Caption = 'Sell-to';
field("Sell-to Address"; Rec."Sell-to Address")
{
ApplicationArea = Suite;
Caption = 'Address';
Importance = Additional;
QuickEntry = false;
ToolTip = 'Specifies the customer''s address.';
}
field("Sell-to Address 2"; Rec."Sell-to Address 2")
{
ApplicationArea = Suite;
Caption = 'Address 2';
Importance = Additional;
QuickEntry = false;
ToolTip = 'Specifies an additional part of the customer''s address.';
}
field("Sell-to City"; Rec."Sell-to City")
{
ApplicationArea = Suite;
Caption = 'City';
Importance = Additional;
QuickEntry = false;
ToolTip = 'Specifies the city of the customer''s address.';
}
group(Control123)
{
ShowCaption = false;
Visible = IsSellToCountyVisible;
field("Sell-to County"; Rec."Sell-to County")
{
ApplicationArea = Basic, Suite;
CaptionClass = '5,1,' + Rec."Sell-to Country/Region Code";
Importance = Additional;
QuickEntry = false;
}
}
field("Sell-to Post Code"; Rec."Sell-to Post Code")
{
ApplicationArea = Suite;
Caption = 'Post Code';
Importance = Additional;
QuickEntry = false;
ToolTip = 'Specifies the postal code of the customer''s address.';
}
field("Sell-to Country/Region Code"; Rec."Sell-to Country/Region Code")
{
ApplicationArea = Basic, Suite;
Caption = 'Country/Region Code';
Importance = Additional;
QuickEntry = false;
ToolTip = 'Specifies the country or region of the address.';
trigger OnValidate()
begin
IsSellToCountyVisible := FormatAddress.UseCounty(Rec."Sell-to Country/Region Code");
end;
}
field("Sell-to Contact No."; Rec."Sell-to Contact No.")
{
ApplicationArea = Suite;
Caption = 'Contact No.';
Importance = Additional;
ToolTip = 'Specifies the number of the contact person at the customer.';
trigger OnLookup(var Text: Text): Boolean
begin
if not Rec.SelltoContactLookup() then
exit(false);
Text := Rec."Sell-to Contact No.";
CurrPage.Update();
exit(true);
end;
trigger OnValidate()
begin
if Rec.GetFilter("Sell-to Contact No.") = xRec."Sell-to Contact No." then
if Rec."Sell-to Contact No." <> xRec."Sell-to Contact No." then
Rec.SetRange("Sell-to Contact No.");
if Rec."Sell-to Contact No." <> xRec."Sell-to Contact No." then
CurrPage.Update();
end;
}
field(SellToPhoneNo; SellToContact."Phone No.")
{
ApplicationArea = Basic, Suite;
Caption = 'Phone No.';
Importance = Additional;
Editable = false;
ExtendedDatatype = PhoneNo;
ToolTip = 'Specifies the telephone number of the contact person that the sales document will be sent to.';
}
field(SellToMobilePhoneNo; SellToContact."Mobile Phone No.")
{
ApplicationArea = Basic, Suite;
Caption = 'Mobile Phone No.';
Importance = Additional;
Editable = false;
ExtendedDatatype = PhoneNo;
ToolTip = 'Specifies the mobile telephone number of the contact person that the sales document will be sent to.';
}
field(SellToEmail; SellToContact."E-Mail")
{
ApplicationArea = Basic, Suite;
Caption = 'Email';
Importance = Additional;
Editable = false;
ExtendedDatatype = EMail;
ToolTip = 'Specifies the email address of the contact person that the sales document will be sent to.';
}
}
field("Sell-to Contact"; Rec."Sell-to Contact")
{
ApplicationArea = Suite;
Caption = 'Contact';
Editable = Rec."Sell-to Customer No." <> '';
ToolTip = 'Specifies the name of the contact person at the customer.';
}
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("External Document No."; Rec."External Document No.")
{
ApplicationArea = Suite;
}
field("Your Reference"; Rec."Your Reference")
{
ApplicationArea = Suite;
Importance = Additional;
}
field("Salesperson Code"; Rec."Salesperson Code")
{
ApplicationArea = Suite;
trigger OnValidate()
begin
SalespersonCodeOnAfterValidate();
end;
}
field("Campaign No."; Rec."Campaign No.")
{
ApplicationArea = Suite;
ToolTip = 'Specifies the number of the campaign that the document is linked to.';
trigger OnValidate()
begin
if Rec."Campaign No." <> xRec."Campaign No." then
CurrPage.Update();
end;
}
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(SalesLines; "Blanket Sales Order Subform")
{
ApplicationArea = Suite;
Editable = IsSalesLinesEditable;
Enabled = IsSalesLinesEditable;
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();
end;
}
field("Company Bank Account Code"; Rec."Company Bank Account Code")
{
ApplicationArea = Suite;
}
field("Shipment Date"; Rec."Shipment 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("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("Pmt. Discount Date"; Rec."Pmt. Discount Date")
{
ApplicationArea = Suite;
}
field("Payment Discount %"; Rec."Payment Discount %")
{
ApplicationArea = Suite;
}
field("Journal Templ. Name"; Rec."Journal Templ. Name")
{
ApplicationArea = BasicBE;
Visible = IsJournalTemplNameVisible;
}
field("Tax Liable"; Rec."Tax Liable")
{
ApplicationArea = SalesTax;
ToolTip = 'Specifies if this vendor charges you sales tax for purchases.';
}
field("Tax Area Code"; Rec."Tax Area Code")
{
ApplicationArea = SalesTax;
trigger OnValidate()
begin
CurrPage.SalesLines.PAGE.RedistributeTotalsOnAfterValidate();
end;
}
field("Location Code"; Rec."Location Code")
{
ApplicationArea = Location;
}
}
group("Shipping and Billing")
{
Caption = 'Shipping and Billing';
Enabled = Rec."Sell-to Customer No." <> '';
group(Control25)
{
ShowCaption = false;
group(Control21)
{
ShowCaption = false;
field(ShippingOptions; ShipToOptions)
{
ApplicationArea = Basic, Suite;
Caption = 'Ship-to';
ToolTip = 'Specifies the address that the products on the sales document are shipped to. Default (Sell-to Address): The same as the customer''s sell-to address. Alternate Ship-to Address: One of the customer''s alternate ship-to addresses. Custom Address: Any ship-to address that you specify in the fields below.';
trigger OnValidate()
var
ShipToAddress: Record "Ship-to Address";
ShipToAddressList: Page "Ship-to Address List";
begin
OnBeforeValidateShipToOptions(Rec, ShipToOptions.AsInteger());
case ShipToOptions of
ShipToOptions::"Default (Sell-to Address)":
begin
Rec.Validate("Ship-to Code", '');
Rec.CopySellToAddressToShipToAddress();
end;
ShipToOptions::"Alternate Shipping Address":
begin
ShipToAddress.SetRange("Customer No.", Rec."Sell-to Customer No.");
ShipToAddressList.LookupMode := true;
ShipToAddressList.SetTableView(ShipToAddress);
if ShipToAddressList.RunModal() = ACTION::LookupOK then begin
ShipToAddressList.GetRecord(ShipToAddress);
Rec.Validate("Ship-to Code", ShipToAddress.Code);
IsShipToCountyVisible := FormatAddress.UseCounty(ShipToAddress."Country/Region Code");
end else
ShipToOptions := ShipToOptions::"Custom Address";
end;
ShipToOptions::"Custom Address":
begin
Rec.Validate("Ship-to Code", '');
IsShipToCountyVisible := FormatAddress.UseCounty(Rec."Ship-to Country/Region Code");
end;
end;
OnAfterValidateShipToOptions(Rec, ShipToOptions.AsInteger());
end;
}
group(Control4)
{
ShowCaption = false;
Visible = not (ShipToOptions = ShipToOptions::"Default (Sell-to Address)");
field("Ship-to Code"; Rec."Ship-to Code")
{
ApplicationArea = Suite;
Caption = 'Code';
Editable = ShipToOptions = ShipToOptions::"Alternate Shipping Address";
Importance = Promoted;
ToolTip = 'Specifies the code for another shipment address than the customer''s own address, which is entered by default.';
trigger OnValidate()
var
ShipToAddress: Record "Ship-to Address";
begin
if (xRec."Ship-to Code" <> '') and (Rec."Ship-to Code" = '') then
Error(EmptyShipToCodeErr);
if Rec."Ship-to Code" <> '' then begin
ShipToAddress.Get(Rec."Sell-to Customer No.", Rec."Ship-to Code");
IsShipToCountyVisible := FormatAddress.UseCounty(ShipToAddress."Country/Region Code");
end else
IsShipToCountyVisible := false;
end;
}
field("Ship-to Name"; Rec."Ship-to Name")
{
ApplicationArea = Suite;
Caption = 'Name';
Editable = ShipToOptions = ShipToOptions::"Custom Address";
ToolTip = 'Specifies the name that products on the sales document will be shipped to.';
}
field("Ship-to Name 2"; Rec."Ship-to Name 2")
{
ApplicationArea = Suite;
Caption = 'Name 2';
Editable = ShipToOptions = ShipToOptions::"Custom Address";
Importance = Additional;
QuickEntry = false;
Visible = false;
}
field("Ship-to Address"; Rec."Ship-to Address")
{
ApplicationArea = Suite;
Caption = 'Address';
Editable = ShipToOptions = ShipToOptions::"Custom Address";
QuickEntry = false;
ToolTip = 'Specifies the address that products on the sales document will be shipped to. By default, the field is filled with the value in the Address field on the customer card or with the value in the Address field in the Ship-to Address window.';
}
field("Ship-to Address 2"; Rec."Ship-to Address 2")
{
ApplicationArea = Suite;
Caption = 'Address 2';
Editable = ShipToOptions = ShipToOptions::"Custom Address";
QuickEntry = false;
ToolTip = 'Specifies an additional part of the shipping address.';
}
field("Ship-to City"; Rec."Ship-to City")
{
ApplicationArea = Suite;
Caption = 'City';
Editable = ShipToOptions = ShipToOptions::"Custom Address";
QuickEntry = false;
ToolTip = 'Specifies the city of the shipping address.';
}
group(Control297)
{
ShowCaption = false;
Visible = IsShipToCountyVisible;
field("Ship-to County"; Rec."Ship-to County")
{
ApplicationArea = Basic, Suite;
CaptionClass = '5,1,' + Rec."Ship-to Country/Region Code";
Editable = ShipToOptions = ShipToOptions::"Custom Address";
QuickEntry = false;
}
}
field("Ship-to Post Code"; Rec."Ship-to Post Code")
{
ApplicationArea = Suite;
Caption = 'Post Code';
Editable = ShipToOptions = ShipToOptions::"Custom Address";
QuickEntry = false;
ToolTip = 'Specifies the postal code of the shipping address.';
}
field("Ship-to Country/Region Code"; Rec."Ship-to Country/Region Code")
{
ApplicationArea = Suite;
Caption = 'Country/Region';
Editable = ShipToOptions = ShipToOptions::"Custom Address";
Importance = Additional;
QuickEntry = false;
ToolTip = 'Specifies the country/region of the shipping address.';
trigger OnValidate()
begin
IsShipToCountyVisible := FormatAddress.UseCounty(Rec."Ship-to Country/Region Code");
end;
}
}
field("Ship-to Phone No."; Rec."Ship-to Phone No.")
{
ApplicationArea = Suite;
Caption = 'Phone No.';
}
field("Ship-to Contact"; Rec."Ship-to Contact")
{
ApplicationArea = Suite;
Caption = 'Contact';
ToolTip = 'Specifies the name of the contact person at the address that products on the sales document will be shipped to.';
}
}
group("Shipment Method")
{
Caption = 'Shipment Method';
field("Shipment Method Code"; Rec."Shipment Method Code")
{
ApplicationArea = Suite;
Caption = 'Code';
Importance = Additional;
ToolTip = 'Specifies how items on the sales document are shipped to the customer.';
}
field("Shipping Agent Code"; Rec."Shipping Agent Code")
{
ApplicationArea = Suite;
Caption = 'Agent';
Importance = Additional;
ToolTip = 'Specifies which shipping agent is used to transport the items on the sales document to the customer.';
}
field("Shipping Agent Service Code"; Rec."Shipping Agent Service Code")
{
ApplicationArea = Suite;
Caption = 'Agent service';
Importance = Additional;
ToolTip = 'Specifies which shipping agent service is used to transport the items on the sales document to the customer.';
}
field("Package Tracking No."; Rec."Package Tracking No.")
{
ApplicationArea = Suite;
Importance = Additional;
}
}
}
group(Control41)
{
ShowCaption = false;
field(BillToOptions; BillToOptions)
{
ApplicationArea = Suite;
Caption = 'Bill-to';
ToolTip = 'Specifies the customer that the sales invoice will be sent to. Default (Customer): The same as the customer on the sales invoice. Another Customer: Any customer that you specify in the fields below.';
trigger OnValidate()
begin
if BillToOptions = BillToOptions::"Default (Customer)" then begin
Rec.Validate("Bill-to Customer No.", Rec."Sell-to Customer No.");
Rec.RecallModifyAddressNotification(Rec.GetModifyBillToCustomerAddressNotificationId());
end;
Rec.CopySellToAddressToBillToAddress();
end;
}
group(Control43)
{
ShowCaption = false;
Visible = not (BillToOptions = BillToOptions::"Default (Customer)");
field("Bill-to Name"; Rec."Bill-to Name")
{
ApplicationArea = Suite;
Caption = 'Name';
Editable = BillToOptions = BillToOptions::"Another Customer";
Enabled = BillToOptions = BillToOptions::"Another Customer";
Importance = Promoted;
ToolTip = 'Specifies the customer to whom you will send the invoice, when different from the customer that you are selling to.';
trigger OnValidate()
begin
if Rec.GetFilter("Bill-to Customer No.") = xRec."Bill-to Customer No." then
if Rec."Bill-to Customer No." <> xRec."Bill-to Customer No." then
Rec.SetRange("Bill-to Customer No.");
CurrPage.Update();
end;
trigger OnLookup(var Text: Text): Boolean
var
Customer: Record Customer;
begin
OnBeforeLookupBillToName(Customer, Rec);
if Customer.SelectCustomer(Customer) then begin
xRec := Rec;
Rec."Bill-to Name" := Customer.Name;
Rec.Validate("Bill-to Customer No.", Customer."No.");
end;
if Rec.GetFilter("Bill-to Customer No.") = xRec."Bill-to Customer No." then
if Rec."Bill-to Customer No." <> xRec."Bill-to Customer No." then
Rec.SetRange("Bill-to Customer No.");
CurrPage.Update();
end;
}
field("Bill-to Name 2"; Rec."Bill-to Name 2")
{
ApplicationArea = Suite;
Caption = 'Name 2';
Editable = BillToOptions = BillToOptions::"Another Customer";
Enabled = BillToOptions = BillToOptions::"Another Customer";
Importance = Additional;
QuickEntry = false;
Visible = false;
}
field("Bill-to Address"; Rec."Bill-to Address")
{
ApplicationArea = Suite;
Caption = 'Address';
Editable = (BillToOptions = BillToOptions::"Custom Address") or (Rec."Bill-to Customer No." <> Rec."Sell-to Customer No.");
Enabled = (BillToOptions = BillToOptions::"Custom Address") or (Rec."Bill-to Customer No." <> Rec."Sell-to Customer No.");
Importance = Additional;
QuickEntry = false;
}
field("Bill-to Address 2"; Rec."Bill-to Address 2")
{
ApplicationArea = Suite;
Caption = 'Address 2';
Editable = (BillToOptions = BillToOptions::"Custom Address") or (Rec."Bill-to Customer No." <> Rec."Sell-to Customer No.");
Enabled = (BillToOptions = BillToOptions::"Custom Address") or (Rec."Bill-to Customer No." <> Rec."Sell-to Customer No.");
Importance = Additional;
QuickEntry = false;
ToolTip = 'Specifies an additional part of the billing address.';
}
field("Bill-to City"; Rec."Bill-to City")
{
ApplicationArea = Suite;
Caption = 'City';
Editable = (BillToOptions = BillToOptions::"Custom Address") or (Rec."Bill-to Customer No." <> Rec."Sell-to Customer No.");
Enabled = (BillToOptions = BillToOptions::"Custom Address") or (Rec."Bill-to Customer No." <> Rec."Sell-to Customer No.");
Importance = Additional;
QuickEntry = false;
ToolTip = 'Specifies the city of the billing address.';
}
group(Control130)
{
ShowCaption = false;
Visible = IsBillToCountyVisible;
field("Bill-to County"; Rec."Bill-to County")
{
ApplicationArea = Basic, Suite;
CaptionClass = '5,1,' + Rec."Bill-to Country/Region Code";
Editable = (BillToOptions = BillToOptions::"Custom Address") or (Rec."Bill-to Customer No." <> Rec."Sell-to Customer No.");
Enabled = (BillToOptions = BillToOptions::"Custom Address") or (Rec."Bill-to Customer No." <> Rec."Sell-to Customer No.");
Importance = Additional;
QuickEntry = false;
}
}
field("Bill-to Post Code"; Rec."Bill-to Post Code")
{
ApplicationArea = Suite;
Caption = 'Post Code';
Editable = (BillToOptions = BillToOptions::"Custom Address") or (Rec."Bill-to Customer No." <> Rec."Sell-to Customer No.");
Enabled = (BillToOptions = BillToOptions::"Custom Address") or (Rec."Bill-to Customer No." <> Rec."Sell-to Customer No.");
Importance = Additional;
QuickEntry = false;
ToolTip = 'Specifies the postal code of the billing address.';
}
field("Bill-to Country/Region Code"; Rec."Bill-to Country/Region Code")
{
ApplicationArea = Basic, Suite;
Caption = 'Country/Region Code';
Editable = (BillToOptions = BillToOptions::"Custom Address") or (Rec."Bill-to Customer No." <> Rec."Sell-to Customer No.");
Enabled = (BillToOptions = BillToOptions::"Custom Address") or (Rec."Bill-to Customer No." <> Rec."Sell-to Customer No.");
Importance = Additional;
QuickEntry = false;
ToolTip = 'Specifies the country or region of the address.';
trigger OnValidate()
begin
IsBillToCountyVisible := FormatAddress.UseCounty(Rec."Bill-to Country/Region Code");
end;
}
field("Bill-to Contact No."; Rec."Bill-to Contact No.")
{
ApplicationArea = Suite;
Caption = 'Contact No.';
Editable = (BillToOptions = BillToOptions::"Custom Address") or (Rec."Bill-to Customer No." <> Rec."Sell-to Customer No.");
Enabled = (BillToOptions = BillToOptions::"Custom Address") or (Rec."Bill-to Customer No." <> Rec."Sell-to Customer No.");
Importance = Additional;
ToolTip = 'Specifies the number of the contact person at the billing address.';
}
field("Bill-to Contact"; Rec."Bill-to Contact")
{
ApplicationArea = Suite;
Caption = 'Contact';
Editable = (BillToOptions = BillToOptions::"Custom Address") or (Rec."Bill-to Customer No." <> Rec."Sell-to Customer No.");
Enabled = (BillToOptions = BillToOptions::"Custom Address") or (Rec."Bill-to Customer No." <> Rec."Sell-to Customer No.");
ToolTip = 'Specifies the name of the contact person at the billing address';
}
field(BillToContactPhoneNo; BillToContact."Phone No.")
{
ApplicationArea = Basic, Suite;
Caption = 'Phone No.';
Editable = false;
Importance = Additional;
ExtendedDatatype = PhoneNo;
ToolTip = 'Specifies the telephone number of the person you should contact at the customer you are sending the invoice to.';
}
field(BillToContactMobilePhoneNo; BillToContact."Mobile Phone No.")
{
ApplicationArea = Basic, Suite;
Caption = 'Mobile Phone No.';
Editable = false;
Importance = Additional;
ExtendedDatatype = PhoneNo;
ToolTip = 'Specifies the mobile telephone number of the person you should contact at the customer you are sending the invoice to.';
}
field(BillToContactEmail; BillToContact."E-Mail")
{
ApplicationArea = Basic, Suite;
Caption = 'Email';
Editable = false;
Importance = Additional;
ExtendedDatatype = EMail;
ToolTip = 'Specifies the email address of the person you should contact at the customer you are sending the invoice to.';
}
}
}
}
group("Foreign Trade")
{
Caption = 'Foreign Trade';
field("EU 3-Party Trade"; Rec."EU 3-Party Trade")
{
ApplicationArea = BasicEU;
}
field("Transaction Specification"; Rec."Transaction Specification")
{
ApplicationArea = BasicEU;
}
field("Transport Method"; Rec."Transport Method")
{
ApplicationArea = BasicEU;
}
field("Exit Point"; Rec."Exit Point")
{
ApplicationArea = BasicEU;
}
field("Area"; Rec.Area)
{
ApplicationArea = BasicEU;
}
}
}
area(factboxes)
{
part("Attached Documents List"; "Doc. Attachment List Factbox")
{
ApplicationArea = All;
Caption = 'Documents';
UpdatePropagation = Both;
SubPageLink = "Table ID" = const(Database::"Sales Header"),
"No." = field("No."),
"Document Type" = field("Document Type");
}
part(Control13; "Pending Approval FactBox")
{
ApplicationArea = Suite;
SubPageLink = "Table ID" = const(36),
"Document Type" = field("Document Type"),
"Document No." = field("No."),
Status = const(Open);
Visible = OpenApprovalEntriesExistForCurrUser;
}
part(Control1902018507; "Customer Statistics FactBox")
{
ApplicationArea = Suite;
SubPageLink = "No." = field("Bill-to Customer No."),
"Date Filter" = field("Date Filter");
}
part(Control1900316107; "Customer Details FactBox")
{
ApplicationArea = Suite;
SubPageLink = "No." = field("Sell-to Customer No."),
"Date Filter" = field("Date Filter");
}
part(Control1906127307; "Sales Line FactBox")
{
ApplicationArea = Suite;
Provider = SalesLines;
SubPageLink = "Document Type" = field("Document Type"),
"Document No." = field("Document No."),
"Line No." = field("Line No.");
Visible = false;
}
part(ApprovalFactBox; "Approval FactBox")
{
ApplicationArea = Suite;
Visible = false;
}
part(Control1907012907; "Resource Details FactBox")
{
ApplicationArea = Suite;
Provider = SalesLines;
SubPageLink = "No." = field("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(SalesOrderStatistics)
{
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 "Sales Order Statistics";
RunPageOnRec = true;
}
action(Card)
{
ApplicationArea = Suite;
Caption = 'Card';
Enabled = IsCustomerOrContactNotEmpty;
Image = EditLines;
RunObject = Page "Customer Card";
RunPageLink = "No." = field("Sell-to Customer No.");
ShortCutKey = 'Shift+F7';
ToolTip = 'View or edit detailed information about the customer on the sales document.';
}
action(CustomerStatistics)
{
ApplicationArea = Basic, Suite;
Caption = 'Customer Statistics';
Enabled = IsCustomerOrContactNotEmpty;
Image = Statistics;
RunObject = Page "Customer Statistics";
RunPageLink = "No." = field("Sell-to Customer No."),
"Date Filter" = field("Date Filter");
ToolTip = 'View statistical information, such as the value of posted entries, for the sell-to customer on the sales document.';
}
action("Co&mments")
{
ApplicationArea = Suite;
Caption = 'Co&mments';
Image = ViewComments;
RunObject = Page "Sales 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.OpenApprovalsSales(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 "Cust. Invoice Disc." = R;
ApplicationArea = Suite;
Caption = 'Calculate &Invoice Discount';
Image = CalculateInvoiceDiscount;
ToolTip = 'Calculate the invoice discount that applies to the sales order.';
trigger OnAction()
begin
ApproveCalcInvDisc();
SalesCalcDiscByType.ResetRecalculateInvoiceDisc(Rec);
end;
}
separator(Action134)
{
}
action(CopyDocument)
{
ApplicationArea = Suite;
Caption = 'Copy Document';
Ellipsis = true;
Enabled = Rec."No." <> '';
Image = CopyDocument;
ToolTip = 'Copy document lines and header information from another sales document to this document. You can copy a posted sales invoice into a new sales 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.ArchiveSalesDocument(Rec);
CurrPage.Update(false);
end;
}
separator(Action138)
{
}
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
ReleaseSalesDoc: Codeunit "Release Sales Document";
begin
ReleaseSalesDoc.PerformManualRelease(Rec);
CurrPage.SalesLines.PAGE.ClearTotalSalesHeader();
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
ReleaseSalesDoc: Codeunit "Release Sales Document";
begin
ReleaseSalesDoc.PerformManualReopen(Rec);
CurrPage.SalesLines.PAGE.ClearTotalSalesHeader();
end;
}
}
action(MakeOrder)
{
ApplicationArea = Suite;
Caption = 'Make &Order';
Image = MakeOrder;
ToolTip = 'Convert the blanket sales order to a sales order.';
trigger OnAction()
var
ApprovalsMgmt: Codeunit "Approvals Mgmt.";
begin
if ApprovalsMgmt.PrePostApprovalCheckSales(Rec) then
CODEUNIT.Run(CODEUNIT::"Blnkt Sales 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.PrintSalesHeader(Rec);
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
SalesHeader: Record "Sales Header";
begin
SalesHeader := Rec;
SalesHeader.SetRecFilter();
DocPrint.PrintSalesHeaderToDocumentAttachment(SalesHeader);
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.CheckSalesApprovalPossible(Rec) then
ApprovalsMgmt.OnSendSalesDocForApproval(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.OnCancelSalesApprovalRequest(Rec);
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(Print_Promoted; Print)
{
}
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(SalesOrderStatistics_Promoted; SalesOrderStatistics)
{
}
actionref(Approvals_Promoted; Approvals)
{
}
actionref(DocAttach_Promoted; DocAttach)
{
}
actionref("Co&mments_Promoted"; "Co&mments")
{
}
}
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();
end;
trigger OnAfterGetRecord()
begin
UpdateShipToBillToGroupVisibility();
SellToContact.GetOrClear(Rec."Sell-to Contact No.");
BillToContact.GetOrClear(Rec."Bill-to Contact No.");
end;
trigger OnDeleteRecord(): Boolean
begin
CurrPage.SaveRecord();
exit(Rec.ConfirmDeletion());
end;
trigger OnInsertRecord(BelowxRec: Boolean): Boolean
begin
if DocNoVisible then
Rec.CheckCreditMaxBeforeInsert();
if (Rec."Sell-to Customer No." = '') and (Rec.GetFilter("Sell-to Customer No.") <> '') then
CurrPage.Update(false);
end;
trigger OnNewRecord(BelowxRec: Boolean)
begin
xRec.Init();
Rec."Responsibility Center" := UserMgt.GetSalesFilter();
if (not DocNoVisible) and (Rec."No." = '') then
Rec.SetSellToCustomerFromFilter();
UpdateShipToBillToGroupVisibility();
end;
trigger OnOpenPage()
begin
Rec.SetSecurityFilterOnRespCenter();
SetDocNoVisible();
ActivateFields();
end;
var
SellToContact: Record Contact;
BillToContact: Record Contact;
GLSetup: Record "General Ledger Setup";
DocPrint: Codeunit "Document-Print";
UserMgt: Codeunit "User Setup Management";
ArchiveManagement: Codeunit ArchiveManagement;
SalesCalcDiscByType: Codeunit "Sales - Calc Discount By Type";
CustomerMgt: Codeunit "Customer Mgt.";
FormatAddress: Codeunit "Format Address";
ChangeExchangeRate: Page "Change Exchange Rate";
DocNoVisible: Boolean;
OpenApprovalEntriesExistForCurrUser: Boolean;
OpenApprovalEntriesExist: Boolean;
ShowWorkflowStatus: Boolean;
CanCancelApprovalForRecord: Boolean;
StatusStyleTxt: Text;
IsJournalTemplNameVisible: Boolean;
IsPaymentMethodCodeVisible: Boolean;
IsSalesLinesEditable: Boolean;
IsBillToCountyVisible: Boolean;
IsSellToCountyVisible: Boolean;
IsShipToCountyVisible: Boolean;
EmptyShipToCodeErr: Label 'The Code field can only be empty if you select Custom Address in the Ship-to field.';
protected var
ShipToOptions: Enum "Sales Ship-to Options";
BillToOptions: Enum "Sales Bill-to Options";
IsCustomerOrContactNotEmpty: Boolean;
local procedure ActivateFields()
begin
IsBillToCountyVisible := FormatAddress.UseCounty(Rec."Bill-to Country/Region Code");
IsSellToCountyVisible := FormatAddress.UseCounty(Rec."Sell-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";
IsSalesLinesEditable := Rec.SalesLinesEditable();
IsCustomerOrContactNotEmpty := (Rec."Sell-to Customer No." <> '') or (Rec."Sell-to Contact No." <> '');
end;
local procedure ApproveCalcInvDisc()
begin
CurrPage.SalesLines.PAGE.ApproveCalcInvDisc();
end;
local procedure SaveInvoiceDiscountAmount()
var
DocumentTotals: Codeunit "Document Totals";
begin
CurrPage.SaveRecord();
DocumentTotals.SalesRedistributeInvoiceDiscountAmountsOnDocument(Rec);
CurrPage.Update(false);
end;
local procedure SalespersonCodeOnAfterValidate()
begin
CurrPage.SalesLines.PAGE.UpdateForm(true);
end;
local procedure ShortcutDimension1CodeOnAfterV()
begin
CurrPage.SalesLines.PAGE.UpdateForm(true);
end;
local procedure ShortcutDimension2CodeOnAfterV()
begin
CurrPage.SalesLines.PAGE.UpdateForm(true);
end;
local procedure PricesIncludingVATOnAfterValid()
begin
CurrPage.SalesLines.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.SalesDocumentNoIsVisible(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);
IsSalesLinesEditable := Rec.SalesLinesEditable();
end;
local procedure UpdateShipToBillToGroupVisibility()
begin
CustomerMgt.CalculateShipBillToOptions(ShipToOptions, BillToOptions, Rec);
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeValidateShipToOptions(var SalesHeader: Record "Sales Header"; ShipToOptions: Option)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnAfterValidateShipToOptions(var SalesHeader: Record "Sales Header"; ShipToOptions: Option)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeLookupBillToName(var Customer: Record Customer; SalesHeader: Record "Sales Header")
begin
end;
}