Report 1092 Job Transfer to Credit Memo

App
Base Application
Namespace
Microsoft.Projects.Project.Planning
Versions
17-28

Procedures, 6Events, 1Obsolete, 1

Versions171819202122232425262728

Source29

Source in 29

src/Layers/W1/BaseApp/Projects/Project/Planning/JobTransfertoCreditMemo.Report.al227 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.Projects.Project.Planning;

using Microsoft.Projects.Project.Job;
using Microsoft.Sales.Document;
using Microsoft.Sales.Setup;

report 1092 "Job Transfer to Credit Memo"
{
    Caption = 'Project Transfer to Credit Memo';
    ProcessingOnly = true;

    dataset
    {
    }

    requestpage
    {

        layout
        {
            area(content)
            {
                group(Options)
                {
                    Caption = 'Options';
                    field(CreateNewCreditMemo; NewCreditMemo)
                    {
                        ApplicationArea = Jobs;
                        Caption = 'Create New Credit Memo';
                        ToolTip = 'Specifies if the batch job creates a new sales credit memo.';

                        trigger OnValidate()
                        begin
                            if NewCreditMemo then begin
                                CreditMemoNo := '';
                                if PostingDate = 0D then
                                    PostingDate := WorkDate();
                                if DocumentDate = 0D then
                                    DocumentDate := WorkDate();
                                CrMemoPostingDate := 0D;
                            end;
                        end;
                    }
                    field(PostingDate; PostingDate)
                    {
                        ApplicationArea = Jobs;
                        Caption = 'Posting Date';
                        ToolTip = 'Specifies the posting date for the document.';

                        trigger OnValidate()
                        var
                            SalesReceivablesSetup: Record "Sales & Receivables Setup";
                        begin
                            if PostingDate = 0D then
                                NewCreditMemo := false;
                            SalesReceivablesSetup.SetLoadFields("Link Doc. Date To Posting Date");
                            SalesReceivablesSetup.GetRecordOnce();
                            if SalesReceivablesSetup."Link Doc. Date To Posting Date" then
                                DocumentDate := PostingDate;
                        end;
                    }
                    field("Document Date"; DocumentDate)
                    {
                        ApplicationArea = Jobs;
                        Caption = 'Document Date';
                        ToolTip = 'Specifies the document date.';

                        trigger OnValidate()
                        begin
                            if DocumentDate = 0D then
                                NewCreditMemo := false;
                        end;
                    }
                    field(AppendToCreditMemoNo; CreditMemoNo)
                    {
                        ApplicationArea = Jobs;
                        Caption = 'Append to Credit Memo No.';
                        ToolTip = 'Specifies the number of the credit memo that you want to append the lines to if you did not select the Create New Credit Memo field.';

                        trigger OnLookup(var Text: Text): Boolean
                        begin
                            Clear(SalesHeader);
                            SalesHeader.FilterGroup := 2;
                            SalesHeader.SetRange("Document Type", SalesHeader."Document Type"::"Credit Memo");
                            SalesHeader.SetRange("Bill-to Customer No.", BillToCustomerNo);
                            SalesHeader.FilterGroup := 0;
                            if PAGE.RunModal(0, SalesHeader) = ACTION::LookupOK then
                                CreditMemoNo := SalesHeader."No.";
                            if CreditMemoNo <> '' then begin
                                SalesHeader.Get(SalesHeader."Document Type"::"Credit Memo", CreditMemoNo);
                                CrMemoPostingDate := SalesHeader."Posting Date";
                                NewCreditMemo := false;
                                PostingDate := 0D;
                                DocumentDate := 0D;
                            end;
                            if CreditMemoNo = '' then
                                InitReport();
                        end;

                        trigger OnValidate()
                        begin
                            if CreditMemoNo <> '' then begin
                                SalesHeader.Get(SalesHeader."Document Type"::"Credit Memo", CreditMemoNo);
                                CrMemoPostingDate := SalesHeader."Posting Date";
                                NewCreditMemo := false;
                                PostingDate := 0D;
                                DocumentDate := 0D;
                            end;
                            if CreditMemoNo = '' then
                                InitReport();
                        end;
                    }
                    field(CrMemoPostingDate; CrMemoPostingDate)
                    {
                        ApplicationArea = Jobs;
                        Caption = 'Cr. Memo Posting Date';
                        Editable = false;
                        ToolTip = 'Specifies the posting date of that credit memo if you filled the Append to Credit Memo No. field.';

                        trigger OnValidate()
                        begin
                            if PostingDate = 0D then
                                NewCreditMemo := false;
                        end;
                    }
                }
            }
        }

        actions
        {
        }

        trigger OnOpenPage()
        begin
            InitReport();
        end;
    }

    labels
    {
    }

    trigger OnInitReport()
    begin
        Done := false;
    end;

    trigger OnPostReport()
    begin
        Done := true;
    end;

    var
        SalesHeader: Record "Sales Header";
        BillToCustomerNo: Code[20];
        PostingDate: Date;
        DocumentDate: Date;
        CrMemoPostingDate: Date;
        Done: Boolean;

    protected var
        Job: Record Job;
        CreditMemoNo: Code[20];
        NewCreditMemo: Boolean;

    procedure GetCreditMemoNo(var Done2: Boolean; var NewCreditMemo2: Boolean; var PostingDate2: Date; var DocumentDate2: Date; var CreditMemoNo2: Code[20])
    begin
        Done2 := Done;
        NewCreditMemo2 := NewCreditMemo;
        PostingDate2 := PostingDate;
        CreditMemoNo2 := CreditMemoNo;
        DocumentDate2 := DocumentDate;
    end;

    procedure InitReport()
    begin
        PostingDate := WorkDate();
        DocumentDate := WorkDate();
        NewCreditMemo := true;
        CreditMemoNo := '';
        CrMemoPostingDate := 0D;
    end;

    procedure SetCustomer(JobNo: Code[20])
    begin
        Job.Get(JobNo);
    end;

    procedure SetCustomer(JobPlanningLine: Record "Job Planning Line")
    var
        JobTask: Record "Job Task";
        IsHandled: Boolean;
    begin
        Job.Get(JobPlanningLine."Job No.");

        IsHandled := false;
        OnBeforeSetCustomer(JobPlanningLine, BillToCustomerNo, IsHandled);
        if IsHandled then
            exit;

        BillToCustomerNo := Job."Bill-to Customer No.";

        if Job."Task Billing Method" = Job."Task Billing Method"::"One customer" then
            exit;

        JobTask.Get(JobPlanningLine."Job No.", JobPlanningLine."Job Task No.");
        if (JobTask."Bill-to Customer No." <> '') and (JobTask."Bill-to Customer No." <> Job."Bill-to Customer No.") then
            BillToCustomerNo := JobTask."Bill-to Customer No.";
    end;

    procedure SetPostingDate(PostingDate2: Date)
    begin
        PostingDate := PostingDate2;
    end;

    [IntegrationEvent(false, false)]
    local procedure OnBeforeSetCustomer(var JobPlanningLine: Record "Job Planning Line"; var BillToCustomerNo: Code[20]; var IsHandled: Boolean)
    begin
    end;
}