Table 170 Standard Sales Code, source in 29

Source29

src/Layers/W1/BaseApp/Sales/Document/StandardSalesCode.Table.al128 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.Finance.Currency;
using System.Utilities;

/// <summary>
/// Stores reusable standard sales transaction templates with predefined lines.
/// </summary>
table 170 "Standard Sales Code"
{
    Caption = 'Standard Sales Code';
    DataCaptionFields = "Code", Description;
    LookupPageID = "Standard Sales Codes";
    DataClassification = CustomerContent;

    fields
    {
        /// <summary>
        /// Specifies a unique code to identify the standard sales code template.
        /// </summary>
        field(1; "Code"; Code[10])
        {
            Caption = 'Code';
            ToolTip = 'Specifies a code which identifies this standard sales code.';
            NotBlank = true;
        }
        /// <summary>
        /// Contains a description of the standard sales code template.
        /// </summary>
        field(2; Description; Text[100])
        {
            Caption = 'Description';
            ToolTip = 'Specifies a description of the standard sales code.';
        }
        /// <summary>
        /// Specifies the currency code for amounts in the standard sales code lines.
        /// </summary>
        field(3; "Currency Code"; Code[10])
        {
            Caption = 'Currency Code';
            ToolTip = 'Specifies the currency code for the amounts on the standard sales lines.';
            TableRelation = Currency;

            trigger OnValidate()
            var
                Currency: Record Currency;
                Currency2: Record Currency;
                StandardCustomerSalesCode: Record "Standard Customer Sales Code";
                ConfirmManagement: Codeunit "Confirm Management";
            begin
                if not Currency.Get("Currency Code") then
                    Currency.InitRoundingPrecision();
                if not Currency2.Get(xRec."Currency Code") then
                    Currency2.InitRoundingPrecision();

                if Currency."Amount Rounding Precision" <> Currency2."Amount Rounding Precision" then begin
                    StdSalesLine.Reset();
                    StdSalesLine.SetRange("Standard Sales Code", Code);
                    StdSalesLine.SetRange(Type, StdSalesLine.Type::"G/L Account");
                    StdSalesLine.SetFilter("Amount Excl. VAT", '<>%1', 0);
                    if StdSalesLine.Find('-') then begin
                        if not ConfirmManagement.GetResponseOrDefault(
                             StrSubstNo(
                               Text001, FieldCaption("Currency Code"), StdSalesLine.FieldCaption("Amount Excl. VAT"),
                               FieldCaption("Currency Code")), true)
                        then
                            Error(Text002);
                        repeat
                            StdSalesLine."Amount Excl. VAT" :=
                              Round(StdSalesLine."Amount Excl. VAT", Currency."Amount Rounding Precision");
                            StdSalesLine.Modify();
                        until StdSalesLine.Next() = 0;
                    end;
                end;

                StandardCustomerSalesCode.SetRange(Code, Code);
                StandardCustomerSalesCode.ModifyAll("Currency Code", "Currency Code");
            end;
        }
    }

    keys
    {
        key(Key1; "Code")
        {
            Clustered = true;
        }
    }

    fieldgroups
    {
    }

    trigger OnDelete()
    var
        ConfirmManagement: Codeunit "Confirm Management";
    begin
        StdCustomerSalesCode.Reset();
        StdCustomerSalesCode.SetRange(Code, Code);
        if not StdCustomerSalesCode.IsEmpty() then
            if not ConfirmManagement.GetResponseOrDefault(
                StrSubstNo(StdSalesCodeDeletionQst, rec.Code, StdCustomerSalesCode.TableCaption()), true) then
                Error('');

        StdSalesLine.Reset();
        StdSalesLine.SetRange("Standard Sales Code", Code);
        StdSalesLine.DeleteAll(true);

        StdCustomerSalesCode.DeleteAll(true);
    end;

    var
        StdSalesLine: Record "Standard Sales Line";
        StdCustomerSalesCode: Record "Standard Customer Sales Code";
#pragma warning disable AA0074
#pragma warning disable AA0470
        Text001: Label 'If you change the %1, the %2 will be rounded according to the new %3.';
#pragma warning restore AA0470
        Text002: Label 'The update has been interrupted to respect the warning.';
#pragma warning restore AA0074
        StdSalesCodeDeletionQst: Label 'If you delete the code %1, the related records in the %2 table will also be deleted. Do you want to continue?', Comment = '%1=Standard Sales Code, %2=Table Caption';
}