Page 5351 CRM Sales Quote List, source in 29
Source29
src/Layers/W1/BaseApp/Integration/D365Sales/CRMSalesQuoteList.Page.al297 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.Integration.D365Sales;
using Microsoft.Integration.Dataverse;
using Microsoft.Sales.Document;
using Microsoft.Utilities;
page 5351 "CRM Sales Quote List"
{
ApplicationArea = Suite;
Caption = 'Sales Quotes - Microsoft Dynamics 365 Sales';
Editable = false;
InsertAllowed = false;
PageType = List;
SourceTable = "CRM Quote";
SourceTableView = where(StateCode = filter(Active | Won));
UsageCategory = Lists;
layout
{
area(content)
{
repeater(Group)
{
field(Name; Rec.Name)
{
ApplicationArea = Suite;
Caption = 'Name';
StyleExpr = FirstColumnStyle;
}
field(StateCode; Rec.StateCode)
{
ApplicationArea = Suite;
Caption = 'Status';
OptionCaption = 'Draft,Active,Won,Closed';
ToolTip = 'Specifies information related to the Dynamics 365 Sales connection. ';
}
field(TotalAmount; Rec.TotalAmount)
{
ApplicationArea = Suite;
Caption = 'Total Amount';
ToolTip = 'Specifies information related to the Dynamics 365 Sales connection. ';
}
field(EffectiveFrom; Rec.EffectiveFrom)
{
ApplicationArea = Suite;
Caption = 'Effective From';
}
field(EffectiveTo; Rec.EffectiveTo)
{
ApplicationArea = Suite;
Caption = 'Effective To';
}
field(ClosedOn; Rec.ClosedOn)
{
ApplicationArea = Suite;
Caption = 'Closed On';
}
field(Coupled; Coupled)
{
ApplicationArea = Suite;
Caption = 'Coupled';
ToolTip = 'Specifies if the Dynamics 365 Sales record is coupled to Business Central.';
}
}
}
}
actions
{
area(navigation)
{
group(ActionGroupCRM)
{
Caption = 'Dynamics 365 Sales';
action(CRMGoToQuote)
{
ApplicationArea = Suite;
Caption = 'Quote';
Image = CoupledQuote;
ToolTip = 'Open the selected Dynamics 365 Sales quote.';
trigger OnAction()
var
CRMIntegrationManagement: Codeunit "CRM Integration Management";
begin
HyperLink(CRMIntegrationManagement.GetCRMEntityUrlFromCRMID(DATABASE::"CRM Quote", Rec.QuoteId));
end;
}
}
group(ActionGroupNAV)
{
Caption = 'Business Central';
Visible = CRMIntegrationEnabled;
action(ProcesseInNAV)
{
ApplicationArea = Suite;
Caption = 'Process in Business Central';
Enabled = HasRecords and CRMIntegrationEnabled;
Image = New;
ToolTip = 'Create a sales quote in Business Central for the quote entity in Dynamics 365 Sales.';
trigger OnAction()
var
SalesHeader: Record "Sales Header";
OrderSalesHeader: Record "Sales Header";
CRMQuoteToSalesQuote: Codeunit "CRM Quote to Sales Quote";
PageManagement: Codeunit "Page Management";
begin
if Rec.IsEmpty() then
exit;
if Coupled = 'Yes' then
Error(AlreadyProcessedErr);
if CRMQuoteToSalesQuote.ProcessInNAV(Rec, SalesHeader) then begin
Commit();
if SalesHeader.Get(SalesHeader."Document Type", SalesHeader."No.") then begin
OrderSalesHeader.SetRange("Quote No.", SalesHeader."No.");
if OrderSalesHeader.FindFirst() then
PageManagement.PageRun(OrderSalesHeader)
else
PageManagement.PageRun(SalesHeader)
end;
end;
end;
}
action(ShowOnlyUncoupled)
{
ApplicationArea = Suite;
Caption = 'Hide Coupled Quotes';
Enabled = HasRecords;
Image = FilterLines;
ToolTip = 'Do not show coupled quotes.';
trigger OnAction()
begin
Rec.MarkedOnly(true);
end;
}
action(ShowAll)
{
ApplicationArea = Suite;
Caption = 'Show Coupled Quotes';
Enabled = HasRecords;
Image = ClearFilter;
ToolTip = 'Show coupled quotes.';
trigger OnAction()
begin
Rec.MarkedOnly(false);
end;
}
}
}
area(Promoted)
{
group(Category_Process)
{
Caption = 'Process', Comment = 'Generated from the PromotedActionCategories property index 1.';
actionref(ProcesseInNAV_Promoted; ProcesseInNAV)
{
}
group(Category_Synchronize)
{
Caption = 'Synchronize';
actionref(CRMGoToQuote_Promoted; CRMGoToQuote)
{
}
}
actionref(ShowOnlyUncoupled_Promoted; ShowOnlyUncoupled)
{
}
actionref(ShowAll_Promoted; ShowAll)
{
}
}
group(Category_Category4)
{
Caption = 'Dynamics 365 Sales', Comment = 'Generated from the PromotedActionCategories property index 3.';
}
group(Category_Report)
{
Caption = 'Report', Comment = 'Generated from the PromotedActionCategories property index 2.';
}
}
}
trigger OnAfterGetCurrRecord()
begin
HasRecords := not IsNullGuid(Rec.QuoteId);
end;
trigger OnAfterGetRecord()
var
CRMIntegrationRecord: Record "CRM Integration Record";
BlankGUID: Guid;
Style: Integer;
begin
CRMIntegrationRecord.SetRange("CRM ID", Rec.QuoteId);
if CRMIntegrationRecord.FindFirst() then begin
if CurrentlyCoupledCRMQuote.QuoteId = Rec.QuoteId then
Style := 1
else
if Rec.StateCode = Rec.StateCode::Active then
Style := 2
else
if Rec.StateCode = Rec.StateCode::Won then
if CRMIntegrationRecord."Integration ID" = BlankGUID then
Style := 2
else
Style := 3;
end else
Style := 3;
if Style = 1 then begin
Coupled := 'Current';
FirstColumnStyle := 'Strong';
Rec.Mark(true);
end else
if Style = 2 then begin
Coupled := 'Yes';
FirstColumnStyle := 'Subordinate';
Rec.Mark(false);
end else
if Style = 3 then begin
Coupled := 'No';
FirstColumnStyle := 'None';
Rec.Mark(true);
end;
end;
trigger OnInit()
begin
CODEUNIT.Run(CODEUNIT::"CRM Integration Management");
end;
trigger OnOpenPage()
var
CDSCompany: Record "CDS Company";
CRMConnectionSetup: Record "CRM Connection Setup";
CDSIntegrationMgt: Codeunit "CDS Integration Mgt.";
EmptyGuid: Guid;
MultipleCompanies: Boolean;
begin
CRMIntegrationEnabled := CRMConnectionSetup.IsEnabled();
MultipleCompanies := (CDSCompany.Count() > 1);
Rec.FilterGroup(2);
if CDSIntegrationMgt.GetCDSCompany(CDSCompany) then
if not MultipleCompanies then
Rec.SetFilter(CompanyId, '%1|%2', CDSCompany.CompanyId, EmptyGuid)
else begin
Rec.SetRange(CompanyId, CDSCompany.CompanyId);
ShowMultipleCompanyNotification();
end;
Rec.FilterGroup(0);
end;
var
CurrentlyCoupledCRMQuote: Record "CRM Quote";
CRMIntegrationEnabled: Boolean;
HasRecords: Boolean;
Coupled: Text;
FirstColumnStyle: Text;
AlreadyProcessedErr: Label 'The current record has already been processed in Business Central.';
MultipleCompanyNotificationLbl: Label 'You are connected to Dynamics 365 Sales from multiple companies. This page shows only Dynamics 365 Sales quotes with Company field set to this Business Central company. To see all quotes, change the filter on the page, or set their Company field in Dynamics 365 Sales.', Comment = 'Dynamics 365 Sales should not be translated';
LearnMoreLbl: Label 'Learn more';
procedure SetCurrentlyCoupledCRMQuote(CRMQuote: Record "CRM Quote")
begin
CurrentlyCoupledCRMQuote := CRMQuote;
end;
local procedure ShowMultipleCompanyNotification()
var
MultipleCompanyNotification: Notification;
begin
MultipleCompanyNotification.Id := GetMultipleCompanyNotificationId();
MultipleCompanyNotification.Message(MultipleCompanyNotificationLbl);
MultipleCompanyNotification.Scope(NotificationScope::LocalScope);
MultipleCompanyNotification.AddAction(LearnMoreLbl, Codeunit::"CRM Integration Management", 'MultipleCompanyLearnMore');
MultipleCompanyNotification.Send();
end;
local procedure GetMultipleCompanyNotificationId(): Guid
begin
exit('76df9d19-549b-4cb8-8d81-43f2007e0188');
end;
}