Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -18,5 +18,6 @@ codeunit 290 "No. Series Copilot Install"
NoSeriesCopilotRegister: Codeunit "No. Series Copilot Register";
begin
NoSeriesCopilotRegister.RegisterCapability();
NoSeriesCopilotRegister.ModifyCapability();
end;
}
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,25 @@ codeunit 327 "No. Series Copilot Register"
UpgradeTag.SetUpgradeTag(NoSeriesCopilotUpgradeTags.GetImplementationUpgradeTag());
end;

procedure ModifyCapability()
var
CopilotCapability: Codeunit "Copilot Capability";
EnvironmentInformation: Codeunit "Environment Information";
UpgradeTag: Codeunit "Upgrade Tag";
NoSeriesCopilotUpgradeTags: Codeunit "No. Series Copilot Upgr. Tags";
begin
if not EnvironmentInformation.IsSaaSInfrastructure() then
exit;

if not CopilotCapability.IsCapabilityRegistered(Enum::"Copilot Capability"::"No. Series Copilot") then
exit;

if not UpgradeTag.HasUpgradeTag(NoSeriesCopilotUpgradeTags.GetModifyCapabilityUpgradeTag()) then begin
CopilotCapability.ModifyCapability(Enum::"Copilot Capability"::"No. Series Copilot", Enum::"Copilot Availability"::Preview, Enum::"Copilot Billing Type"::"Not Billed", LearnMoreUrlTxt);
UpgradeTag.SetUpgradeTag(NoSeriesCopilotUpgradeTags.GetModifyCapabilityUpgradeTag());
end;
end;

var
LearnMoreUrlTxt: Label 'https://go.microsoft.com/fwlink/?linkid=2294514', Locked = true;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,9 @@ codeunit 326 "No. Series Copilot Upgr. Tags"
begin
exit('MS-659-AddImplementationExtensibility-20240304'); //659 is the id of the issue https://github.com/microsoft/BCApps/issues/659
end;

procedure GetModifyCapabilityUpgradeTag(): Code[250]
begin
exit('MS-581366-BillingTypeToNoSeriesAICapability-20250731');
end;
}
Original file line number Diff line number Diff line change
Expand Up @@ -165,4 +165,18 @@ codeunit 7773 "Copilot Capability"
procedure OnGetRequiredPrivacyNotices(CopilotCapability: Enum "Copilot Capability"; AppId: Guid; var RequiredPrivacyNotices: List of [Code[50]])
begin
end;

/// <summary>
/// Check if Billing Type has been defined
/// </summary>
/// <param name="CopilotCapability">The capability.</param>
/// <returns>True if the billing type has been defined.</returns>
/// <remarks>Capabilities are tied to the module registering it. Checking for a capability will check if the enum and app id of your module exists.</remarks>
procedure IsBillingTypeDefined(CopilotCapability: Enum "Copilot Capability"): Boolean
var
CallerModuleInfo: ModuleInfo;
begin
NavApp.GetCallerModuleInfo(CallerModuleInfo);
exit(CopilotCapabilityImpl.IsBillingTypeDefined(CopilotCapability, CallerModuleInfo));
end;
}
Original file line number Diff line number Diff line change
Expand Up @@ -537,4 +537,10 @@ codeunit 7774 "Copilot Capability Impl"
begin
exit(EnvironmentInformation.IsProduction());
end;

procedure IsBillingTypeDefined(CopilotCapability: Enum "Copilot Capability"; CallerModuleInfo: ModuleInfo): Boolean
begin
if IsCapabilityRegistered(CopilotCapability, CallerModuleInfo) then
exit(CopilotSettings."Billing Type" <> Enum::"Copilot Billing Type"::Undefined);
end;
}
Original file line number Diff line number Diff line change
Expand Up @@ -65,4 +65,22 @@ codeunit 7760 "Copilot Capability Install"
if not RequiredPrivacyNotices.Contains(SystemPrivacyNoticeReg.GetMicrosoftLearnID()) then
RequiredPrivacyNotices.Add(SystemPrivacyNoticeReg.GetMicrosoftLearnID());
end;

internal procedure ModifyCapabilities()
begin
ModifySaaSCapability(Enum::"Copilot Capability"::"Analyze List", Enum::"Copilot Availability"::Preview, Enum::"Copilot Billing Type"::"Not Billed", AnalyzeListLearnMoreLbl);
ModifySaaSCapability(Enum::"Copilot Capability"::Autofill, Enum::"Copilot Availability"::Preview, Enum::"Copilot Billing Type"::"Not Billed", AutofillLearnMoreLbl);
ModifySaaSCapability(Enum::"Copilot Capability"::Chat, Enum::"Copilot Availability"::Preview, Enum::"Copilot Billing Type"::"Not Billed", ChatLearnMoreLbl);
ModifySaaSCapability(Enum::"Copilot Capability"::Summarize, Enum::"Copilot Availability"::Preview, Enum::"Copilot Billing Type"::"Not Billed", SummarizeLearnMoreLbl);
end;

local procedure ModifySaaSCapability(Capability: Enum "Copilot Capability"; Availability: Enum "Copilot Availability"; BillingType: Enum "Copilot Billing Type"; LearnMoreUrl: Text[2048])
var
CopilotCapability: Codeunit "Copilot Capability";
EnvironmentInformation: Codeunit "Environment Information";
begin
if EnvironmentInformation.IsSaaSInfrastructure() then
if not (CopilotCapability.IsBillingTypeDefined(Capability)) then
CopilotCapability.ModifyCapability(Capability, Availability, BillingType, LearnMoreUrl);
end;
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
// ------------------------------------------------------------------------------------------------
namespace System.AI;

using System.Upgrade;

codeunit 7776 "Copilot Capability Upgrade"
{
Subtype = Upgrade;
Expand All @@ -13,7 +15,18 @@ codeunit 7776 "Copilot Capability Upgrade"
trigger OnUpgradePerDatabase()
var
CopilotCapabilityInstall: Codeunit "Copilot Capability Install";
UpgradeTag: Codeunit "Upgrade Tag";
begin
CopilotCapabilityInstall.RegisterCapabilities();

if not UpgradeTag.HasUpgradeTag(GetAddBillingTypeToCapabilityTag()) then begin
CopilotCapabilityInstall.ModifyCapabilities();
UpgradeTag.SetUpgradeTag(GetAddBillingTypeToCapabilityTag());
end;
end;

internal procedure GetAddBillingTypeToCapabilityTag(): Text[250]
begin
exit('MS-581366-AddBillingTypeToCapabilityTag-20250731');
end;
}
Original file line number Diff line number Diff line change
Expand Up @@ -33,11 +33,23 @@ codeunit 2015 "Entity Text AI Upgrade"

UpgradeTag.SetUpgradeTag(GetRegisterMarketingTextCapabilityTag());
end;

if not UpgradeTag.HasUpgradeTag(GetAddBillingTypeToMarketingTextCapabilityTag()) then begin
if EnvironmentInformation.IsSaaSInfrastructure() then
if not CopilotCapability.IsBillingTypeDefined(Enum::"Copilot Capability"::"Entity Text") then
CopilotCapability.ModifyCapability(Enum::"Copilot Capability"::"Entity Text", Enum::"Copilot Availability"::"Generally Available", Enum::"Copilot Billing Type"::"Not Billed", LearnMoreUrlTxt);

UpgradeTag.SetUpgradeTag(GetAddBillingTypeToMarketingTextCapabilityTag());
end;
end;

internal procedure GetRegisterMarketingTextCapabilityTag(): Code[250]
begin
exit('MS-490070-RegisterMarketingTextCapability-20231031');
end;

internal procedure GetAddBillingTypeToMarketingTextCapabilityTag(): Code[250]
begin
exit('MS-581366-AddBillingTypeToMarketingTextCapability-20250731');
end;
}
Loading