Codeunit 1638 Office Jobs Handler
- App
- Base Application
- Namespace
- Microsoft.CRM.Outlook
- Versions
- 17-28
Versions171819202122232425262728
Source29
Source in 29
src/Layers/W1/BaseApp/CRM/Outlook/OfficeJobsHandler.Codeunit.al92 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.CRM.Outlook;
using Microsoft.Projects.Project.Journal;
using Microsoft.Projects.Project.Planning;
using System;
codeunit 1638 "Office Jobs Handler"
{
TableNo = "Office Add-in Context";
trigger OnRun()
begin
RedirectOfficeJobJournal(Rec);
end;
var
JobsRegExTxt: Label '([^:]+):([^:]+):([0-9]+)', Locked = true;
UnableToFindJobErr: Label 'Cannot find project number %1, project task number %2, line number %3.', Comment = '%1 = Project No; %2 = Project Task No; %3 = Project Planning Line';
procedure IsJobsHostType(OfficeAddinContext: Record "Office Add-in Context") IsJob: Boolean
var
RegEx: DotNet Regex;
Match: DotNet Match;
begin
if OfficeAddinContext.IsAppointment() and (OfficeAddinContext.Subject <> '') then begin
Match := RegEx.Match(OfficeAddinContext.Subject, JobsRegExTxt);
IsJob := Match.Success;
end;
end;
[Scope('OnPrem')]
procedure GetJobProperties(OfficeAddinContext: Record "Office Add-in Context"; var JobNo: Text; var JobTaskNo: Text; var JobPlanningLineNo: Integer)
var
RegEx: DotNet Regex;
Match: DotNet Match;
begin
Match := RegEx.Match(OfficeAddinContext.Subject, JobsRegExTxt);
if Match.Success then begin
JobNo := Match.Groups.Item(1).Value();
JobTaskNo := Match.Groups.Item(2).Value();
Evaluate(JobPlanningLineNo, Match.Groups.Item(3).Value);
end;
end;
procedure SubmitJobPlanningLine(JobPlanningLine: Record "Job Planning Line"; JobJournalTemplateName: Code[10]; JobJournalBatchName: Code[10])
var
JobJournalLine: Record "Job Journal Line";
TempOfficeJobJournal: Record "Office Job Journal" temporary;
JobTransferLine: Codeunit "Job Transfer Line";
begin
SetJobJournalRange(JobJournalLine, JobPlanningLine);
JobTransferLine.FromPlanningLineToJnlLine(
JobPlanningLine, JobPlanningLine."Planning Date", JobJournalTemplateName, JobJournalBatchName, JobJournalLine);
JobPlanningLine.Find();
TempOfficeJobJournal.Initialize(JobPlanningLine);
PAGE.Run(PAGE::"Office Job Journal", TempOfficeJobJournal);
end;
procedure SetJobJournalRange(var JobJournalLine: Record "Job Journal Line"; JobPlanningLine: Record "Job Planning Line")
begin
JobJournalLine.SetRange("Job No.", JobPlanningLine."Job No.");
JobJournalLine.SetRange("Job Task No.", JobPlanningLine."Job Task No.");
JobJournalLine.SetRange("Job Planning Line No.", JobPlanningLine."Line No.");
end;
local procedure RedirectOfficeJobJournal(OfficeAddinContext: Record "Office Add-in Context")
var
TempOfficeJobJournal: Record "Office Job Journal" temporary;
JobPlanningLine: Record "Job Planning Line";
OfficeErrorEngine: Codeunit "Office Error Engine";
JobNo: Text;
JobTaskNo: Text;
JobPlanningLineNo: Integer;
begin
GetJobProperties(OfficeAddinContext, JobNo, JobTaskNo, JobPlanningLineNo);
if JobPlanningLine.Get(JobNo, JobTaskNo, JobPlanningLineNo) then begin
TempOfficeJobJournal.Initialize(JobPlanningLine);
PAGE.Run(PAGE::"Office Job Journal", TempOfficeJobJournal);
end else
OfficeErrorEngine.ShowError(StrSubstNo(UnableToFindJobErr, JobNo, JobTaskNo, JobPlanningLineNo));
end;
}