Report 1017 Job Task Quote
- App
- Base Application
- Namespace
- Microsoft.Projects.Project.Reports
- Versions
- 24-28
Versions171819202122232425262728
Source29
Source in 29
src/Layers/W1/BaseApp/Projects/Project/Reports/JobTaskQuote.Report.al321 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.Reports;
using Microsoft.Finance.Currency;
using Microsoft.Finance.GeneralLedger.Setup;
using Microsoft.Foundation.Address;
using Microsoft.Foundation.Company;
using Microsoft.Projects.Project.Job;
using Microsoft.Projects.Project.Planning;
using Microsoft.Projects.Project.Setup;
using System.Utilities;
report 1017 "Job Task Quote"
{
DefaultRenderingLayout = "JobTaskQuote.rdlc";
Caption = 'Project Task Quote';
PreviewMode = PrintLayout;
WordMergeDataItem = "Job Task";
dataset
{
dataitem("Job Task"; "Job Task")
{
DataItemTableView = sorting("Job No.", "Job Task No.") where("Job Task Type" = const(Posting));
RequestFilterFields = "Job No.", "Job Task No.";
PrintOnlyIfDetail = true;
column(CompanyAddress1; CompanyAddr[1])
{
}
column(CompanyAddress2; CompanyAddr[2])
{
}
column(CompanyAddress3; CompanyAddr[3])
{
}
column(CompanyAddress4; CompanyAddr[4])
{
}
column(CompanyAddress5; CompanyAddr[5])
{
}
column(CompanyAddress6; CompanyAddr[6])
{
}
column(CompanyAddress7; CompanyAddr[7])
{
}
column(CompanyAddress8; CompanyAddr[8])
{
}
column(CompanyPicture; CompanyInfo.Picture)
{
}
column(CompanyLogoPosition; CompanyLogoPosition)
{
}
column(TodayFormatted; Format(Today, 0, 4))
{
}
column(CompanyName; COMPANYPROPERTY.DisplayName())
{
}
column(BillToAddress1; BillToAddr[1])
{
}
column(BillToAddress2; BillToAddr[2])
{
}
column(BillToAddress3; BillToAddr[3])
{
}
column(BillToAddress4; BillToAddr[4])
{
}
column(BillToAddress5; BillToAddr[5])
{
}
column(BillToAddress6; BillToAddr[6])
{
}
column(QuantityCaption; QuantityLbl)
{
}
column(UnitPriceCaption; UnitPriceLbl)
{
}
column(TotalPriceCaption; TotalPriceLbl)
{
}
column(LineDiscountPctCaption; LineDiscountPctLbl)
{
}
column(LineDiscountAmountCaption; LineDiscountAmountLbl)
{
}
column(JobTaskTypeCaption; JobTaskTypeLbl)
{
}
column(NoCaption; NoLbl)
{
}
column(Description_Job; Job.Description)
{
}
column(DescriptionCaption; DescriptionCaptionLbl)
{
}
column(JobTaskNoCapt; JobTaskNoCaptLbl)
{
}
column(JobTasktableCaptFilter; "Job Task".TableCaption + ': ' + JobTaskFilter)
{
}
column(JobTaskFilter; JobTaskFilter)
{
}
column(No_Job; "Job No.")
{
}
column(Task_No_Job; "Job Task No.")
{
}
column(CurrReportPageNoCaption; CurrReportPageNoCaptionLbl)
{
}
column(JobTaskQuoteCaptLbl; JobTaskQuoteCaptLbl)
{
}
dataitem("Job Planning Line"; "Job Planning Line")
{
DataItemLink = "Job No." = field("Job No."), "Job Task No." = field("Job Task No.");
DataItemLinkReference = "Job Task";
DataItemTableView = sorting("Job No.", "Job Task No.", "Line No.");
RequestFilterFields = "Job Task No.";
column(Quantity; Quantity)
{
}
column(UnitPriceLCY; "Unit Price (LCY)")
{
}
column(UnitPrice; "Unit Price")
{
}
column(TotalPriceLCY; "Total Price (LCY)" - "Line Discount Amount (LCY)")
{
AutoFormatExpression = CurrencyFormat;
AutoFormatType = 10;
}
column(TotalPrice; "Total Price" - "Line Discount Amount")
{
}
column(LineDiscountPct; "Line Discount %")
{
}
column(LineDiscountAmount; "Line Discount Amount")
{
}
column(Type; Type)
{
}
column(Number; "No.")
{
}
column(JobPlanningLine_JobTaskNo; "Job Task No.")
{
}
column(JobPlanningLine_Type; Type)
{
}
column(JobPlanningLine_LineType; "Line Type")
{
}
column(Indentation_JobTask; PadStr('', 2 * "Job Task".Indentation) + Description)
{
}
column(ShowIntBody3; ("Job Task"."Job Task Type" in ["Job Task"."Job Task Type"::Posting]) and PrintSection)
{
}
trigger OnAfterGetRecord()
begin
PrintSection := true;
if "Line Type" = "Line Type"::Budget then begin
PrintSection := false;
CurrReport.Skip();
end;
JobTotalValue += (("Unit Price" * Quantity) - "Line Discount Amount");
if FirstLineHasBeenOutput then
Clear(CompanyInfo.Picture);
FirstLineHasBeenOutput := true;
ConstructCurrencyFormatString();
end;
trigger OnPreDataItem()
begin
FirstLineHasBeenOutput := false;
CompanyInfo.CalcFields(Picture);
end;
}
dataitem(Totals; "Integer")
{
DataItemTableView = sorting(Number) where(Number = const(1));
column(JobTotalValue; JobTotalValue)
{
}
}
trigger OnAfterGetRecord()
begin
JobTotalValue := 0;
Job.Get("Job No.");
FormatAddr.Company(CompanyAddr, CompanyInfo);
FormatAddr.FormatAddr(
BillToAddr, "Job Task"."Bill-to Name", "Job Task"."Bill-to Name 2", "Job Task"."Bill-to Contact",
"Job Task"."Bill-to Address", "Job Task"."Bill-to Address 2", "Job Task"."Bill-to City",
"Job Task"."Bill-to Post Code", "Job Task"."Bill-to County", "Job Task"."Bill-to Country/Region Code");
end;
}
}
requestpage
{
SaveValues = true;
layout
{
area(content)
{
}
}
}
rendering
{
layout("JobTaskQuote.rdlc")
{
Type = RDLC;
LayoutFile = './Projects/Project/Reports/JobTaskQuote.rdlc';
Caption = 'Project Task Quote (RDLC)';
Summary = 'The Project Task Quote (RDLC) provides a detailed layout.';
}
layout("JobTaskQuote.docx")
{
Type = Word;
LayoutFile = './Projects/Project/JobTaskQuote.docx';
Caption = 'Project Task Quote (Word)';
Summary = 'The Project Task Quote (Word) provides a basic layout.';
}
}
labels
{
JobNoLbl = 'Project No.';
JobDescriptionLbl = 'Description';
}
trigger OnInitReport()
begin
CompanyInfo.SetAutoCalcFields(Picture);
CompanyInfo.Get();
JobsSetup.Get();
end;
trigger OnPreReport()
begin
JobTaskFilter := "Job Planning Line".GetFilters();
CompanyLogoPosition := JobsSetup."Logo Position on Documents";
end;
local procedure ConstructCurrencyFormatString()
var
Currency: Record Currency;
GLSetup: Record "General Ledger Setup";
CurrencySymbol: Text[10];
CurrencyLbl: Label '%1<precision, 2:2><standard format, 0>', Comment = '%1=CurrencySymbol';
begin
if Job."Currency Code" = '' then begin
GLSetup.Get();
CurrencySymbol := GLSetup.GetCurrencySymbol();
end else begin
if Currency.Get(Job."Currency Code") then;
CurrencySymbol := Currency.GetCurrencySymbol();
end;
CurrencyFormat := StrSubstNo(CurrencyLbl, CurrencySymbol);
end;
var
Job: Record "Job";
JobsSetup: Record "Jobs Setup";
FormatAddr: Codeunit "Format Address";
JobTaskFilter: Text;
FirstLineHasBeenOutput: Boolean;
PrintSection: Boolean;
CurrReportPageNoCaptionLbl: Label 'Page';
JobTaskQuoteCaptLbl: Label 'Project Task Quote';
DescriptionCaptionLbl: Label 'Description';
JobTaskNoCaptLbl: Label 'Project Task No.';
QuantityLbl: Label 'Quantity';
UnitPriceLbl: Label 'Unit Price';
TotalPriceLbl: Label 'Total Price';
LineDiscountPctLbl: Label 'Discount %';
LineDiscountAmountLbl: Label 'Discount Amt';
JobTaskTypeLbl: Label 'Project Task Type';
NoLbl: Label 'No.';
CompanyLogoPosition: Integer;
JobTotalValue: Decimal;
CompanyAddr: array[8] of Text[100];
BillToAddr: array[8] of Text[100];
CurrencyFormat: Text;
protected var
CompanyInfo: Record "Company Information";
}