Table 7021 Price Line Filters
- App
- Base Application
- Namespace
- Microsoft.Pricing.PriceList
- Versions
- 17-28
Fields, 22Keys, 1Procedures, 3Events, 2
Versions171819202122232425262728
Source29
Source in 29
src/Layers/W1/BaseApp/Pricing/PriceList/PriceLineFilters.Table.al292 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.Pricing.PriceList;
using Microsoft.Finance.Currency;
using Microsoft.Pricing.Asset;
using Microsoft.Pricing.Source;
using Microsoft.Utilities;
using System.Globalization;
using System.Reflection;
table 7021 "Price Line Filters"
{
TableType = Temporary;
DataClassification = CustomerContent;
fields
{
field(1; "Primary Key"; Code[10])
{
AllowInCustomizations = Never;
Caption = 'Primary Key';
DataClassification = SystemMetadata;
}
field(2; "Asset Type"; Enum "Price Asset Type")
{
Caption = 'Product Type';
ToolTip = 'Specifies the product type that defines the table being a source for the suggested price list lines.';
DataClassification = SystemMetadata;
trigger OnValidate()
var
PriceAsset: Record "Price Asset";
begin
if not "Copy Lines" then begin
if "Asset Type" = "Asset Type"::" " then
"Asset Type" := "Asset Type"::Item;
PriceAsset.Validate("Asset Type", "Asset Type");
"Table Id" := PriceAsset."Table Id";
end;
"Asset Filter" := '';
end;
}
field(3; "Asset Filter"; Text[2048])
{
Caption = 'Product Filter';
DataClassification = SystemMetadata;
}
field(4; "Table Id"; Integer)
{
Caption = 'Table Id';
DataClassification = SystemMetadata;
}
field(5; "Minimum Quantity"; Decimal)
{
AutoFormatType = 0;
Caption = 'Minimum Quantity';
ToolTip = 'Specifies the default minimum quantity for the suggested lines. If you do not specify minimum qunatity, pricing will apply same price irrespective of quantity.';
DataClassification = SystemMetadata;
DecimalPlaces = 0 : 5;
MinValue = 0;
}
field(6; "Adjustment Factor"; Decimal)
{
AutoFormatType = 0;
Caption = 'Adjustment Factor';
ToolTip = 'Specifies an adjustment factor to multiply the amounts that you want to copy. By entering an adjustment factor, you can increase or decrease the amounts.';
DataClassification = SystemMetadata;
DecimalPlaces = 0 : 5;
MinValue = 0;
InitValue = 1;
}
field(7; "Rounding Method Code"; Code[10])
{
Caption = 'Rounding Method Code';
ToolTip = 'Specifies a rounding method code that you want applied to prices.';
DataClassification = SystemMetadata;
TableRelation = "Rounding Method";
}
field(8; "From Price List Code"; Code[20])
{
Caption = 'From Price List Code';
ToolTip = 'Specifies the price list code to copy lines from.';
DataClassification = SystemMetadata;
TableRelation = "Price List Header";
trigger OnValidate()
begin
if ("From Price List Code" <> '') and ("From Price List Code" = "To Price List Code") then
Error(SameFromListCodeErr, FieldCaption("From Price List Code"), FieldCaption("To Price List Code"));
"From Currency Code" := GetCurrencyCode("From Price List Code");
"Different Currencies" := "To Currency Code" <> "From Currency Code";
end;
}
field(9; "To Price List Code"; Code[20])
{
Caption = 'To Price List Code';
DataClassification = SystemMetadata;
TableRelation = "Price List Header";
}
field(10; "Price Type"; Enum "Price Type")
{
Caption = 'Price Type';
DataClassification = SystemMetadata;
}
field(11; "Source Group"; Enum "Price Source Group")
{
Caption = 'Assign-to Group';
DataClassification = SystemMetadata;
}
field(12; "Price Line Filter"; Text[2048])
{
Caption = 'Price Line Filter';
DataClassification = SystemMetadata;
}
field(13; "From Currency Code"; Code[10])
{
Caption = 'From Currency Code';
DataClassification = SystemMetadata;
}
field(14; "To Currency Code"; Code[10])
{
Caption = 'To Currency Code';
DataClassification = SystemMetadata;
trigger OnValidate()
begin
InitRoundingPrecision("To Currency Code");
end;
}
field(15; "Amount Rounding Precision"; Decimal)
{
AutoFormatType = 0;
Caption = 'Amount Rounding Precision';
DataClassification = SystemMetadata;
}
field(16; "Exchange Rate Date"; Date)
{
Caption = 'Exchange Rate Date';
ToolTip = 'Specifies a date for the currency exchange rate calculations.';
DataClassification = SystemMetadata;
}
field(17; "Different Currencies"; Boolean)
{
Caption = 'Different Currencies';
DataClassification = SystemMetadata;
}
field(18; "Copy Lines"; Boolean)
{
Caption = 'Copy Price List';
DataClassification = SystemMetadata;
trigger OnValidate()
begin
Validate("Asset Type", "Asset Type"::" ");
if not "Copy Lines" then
"From Price List Code" := '';
Validate("From Price List Code");
end;
}
field(19; Worksheet; Boolean)
{
Caption = 'Worksheet';
DataClassification = SystemMetadata;
}
field(20; "Copy As New Lines"; Boolean)
{
Caption = 'Copy as new lines';
ToolTip = 'Specifies if the suggested lines will become new lines in the target price list.';
DataClassification = SystemMetadata;
}
field(21; "Update Multiple Price Lists"; Boolean)
{
Caption = 'Update Multiple Price Lists';
DataClassification = SystemMetadata;
}
field(22; "Force Defaults"; Boolean)
{
Caption = 'Use defaults from target';
ToolTip = 'Specifies whether to apply the values of the target price list header to the new lines instead of the values of the price list you are copying.';
DataClassification = SystemMetadata;
}
}
keys
{
key(PK; "Primary Key")
{ }
}
var
SameFromListCodeErr: Label '%1 must not be the same as %2.', Comment = '%1 and %2 - captions of the fields From Price List Code and To Price List Code';
procedure Initialize(PriceListHeader: Record "Price List Header"; CopyLines: Boolean)
begin
"Price Type" := PriceListHeader."Price Type";
"Source Group" := PriceListHeader."Source Group";
"To Price List Code" := PriceListHeader.Code;
"Force Defaults" := not CopyLines or not PriceListHeader."Allow Updating Defaults";
Validate("To Currency Code", PriceListHeader."Currency Code");
"Exchange Rate Date" := WorkDate();
Validate("Copy Lines", CopyLines);
end;
procedure EditAssetFilter()
var
ObjectTranslation: Record "Object Translation";
PrimaryKeyField: Record "Field";
FilterPageBuilder: FilterPageBuilder;
TableCaptionValue: Text;
begin
TableCaptionValue :=
ObjectTranslation.TranslateObject(ObjectTranslation."Object Type"::Table, "Table ID");
FilterPageBuilder.AddTable(TableCaptionValue, "Table ID");
if GetPrimaryKeyFields("Table Id", PrimaryKeyField) then
repeat
FilterPageBuilder.AddFieldNo(TableCaptionValue, PrimaryKeyField."No.")
until PrimaryKeyField.Next() = 0;
SetFilterByFilterPageBuilder("Asset Filter", TableCaptionValue, FilterPageBuilder);
end;
procedure EditPriceLineFilter()
var
PriceListLine: Record "Price List Line";
FilterPageBuilder: FilterPageBuilder;
TableCaptionValue: Text;
begin
TableCaptionValue := PriceListLine.TableCaption();
FilterPageBuilder.AddTable(TableCaptionValue, Database::"Price List Line");
FilterPageBuilder.AddFieldNo(TableCaptionValue, PriceListLine.FieldNo("Asset Type"));
FilterPageBuilder.AddFieldNo(TableCaptionValue, PriceListLine.FieldNo("Asset No."));
FilterPageBuilder.AddFieldNo(TableCaptionValue, PriceListLine.FieldNo("Amount Type"));
OnEditPriceLineFilterOnAfterSetFilterPageBuilder(TableCaptionValue, PriceListLine, FilterPageBuilder);
SetFilterByFilterPageBuilder("Price Line Filter", TableCaptionValue, FilterPageBuilder);
end;
local procedure GetCurrencyCode(PriceListCode: Code[20]): Code[10];
var
PriceListHeader: Record "Price List Header";
begin
if PriceListCode = '' then
exit('');
PriceListHeader.SetLoadFields("Currency Code");
PriceListHeader.Get(PriceListCode);
exit(PriceListHeader."Currency Code");
end;
local procedure GetPrimaryKeyFields(TableId: Integer; var PrimaryKeyField: Record "Field"): Boolean;
begin
PrimaryKeyField.Reset();
PrimaryKeyField.SetRange(TableNo, TableId);
PrimaryKeyField.Setrange(IsPartOfPrimaryKey, true);
exit(PrimaryKeyField.FindSet());
end;
local procedure InitRoundingPrecision(CurrencyCode: Code[10])
var
Currency: Record Currency;
begin
if CurrencyCode = '' then begin
Currency.Code := '';
Currency.InitRoundingPrecision();
end else begin
Currency.Get(CurrencyCode);
Currency.TestField("Unit-Amount Rounding Precision");
end;
"Amount Rounding Precision" := Currency."Unit-Amount Rounding Precision";
end;
local procedure SetFilterByFilterPageBuilder(var FilterValue: Text[2048]; TableCaptionValue: Text; var FilterPageBuilder: FilterPageBuilder)
begin
if FilterValue <> '' then
FilterPageBuilder.SetView(TableCaptionValue, FilterValue);
if FilterPageBuilder.RunModal() then
FilterValue := CopyStr(FilterPageBuilder.GetView(TableCaptionValue, false), 1, MaxStrLen(FilterValue));
OnAfterSetFilterByFilterPageBuilder(TableCaptionValue, FilterValue);
end;
[IntegrationEvent(false, false)]
local procedure OnAfterSetFilterByFilterPageBuilder(TableCaptionValue: Text; var FilterValue: Text[2048])
begin
end;
[IntegrationEvent(false, false)]
local procedure OnEditPriceLineFilterOnAfterSetFilterPageBuilder(TableCaptionValue: Text; PriceListLine: Record "Price List Line"; var FilterPageBuilder: FilterPageBuilder)
begin
end;
}