Codeunit 5972 Service Info-Pane Management
- App
- Base Application
- Namespace
- Microsoft.Service.Document
- Versions
- 17-28
Versions171819202122232425262728
Source29
Source in 29
src/Layers/W1/BaseApp/Service/Document/ServiceInfoPaneManagement.Codeunit.al238 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.Service.Document;
using Microsoft.Foundation.Enums;
using Microsoft.Inventory.Availability;
using Microsoft.Inventory.Item;
using Microsoft.Projects.Resources.Resource;
using Microsoft.Service.Item;
using Microsoft.Service.Maintenance;
using Microsoft.Service.Resources;
codeunit 5972 "Service Info-Pane Management"
{
trigger OnRun()
begin
end;
var
Item: Record Item;
procedure CalcAvailability(var ServLine: Record "Service Line") Result: Decimal
var
AvailableToPromise: Codeunit "Available to Promise";
LookaheadDateformula: DateFormula;
GrossRequirement: Decimal;
ScheduledReceipt: Decimal;
PeriodType: Enum "Analysis Period Type";
AvailabilityDate: Date;
begin
if GetItem(ServLine) then begin
if ServLine."Needed by Date" <> 0D then
AvailabilityDate := ServLine."Needed by Date"
else
AvailabilityDate := WorkDate();
Item.Reset();
Item.SetRange("Date Filter", 0D, AvailabilityDate);
Item.SetRange("Variant Filter", ServLine."Variant Code");
Item.SetRange("Location Filter", ServLine."Location Code");
Item.SetRange("Drop Shipment Filter", false);
OnCalcAvailabilityOnAfterSetItemFilters(Item, ServLine);
Evaluate(LookaheadDateformula, '<0D>');
Result :=
AvailableToPromise.CalcQtyAvailabletoPromise(
Item,
GrossRequirement,
ScheduledReceipt,
AvailabilityDate,
PeriodType,
LookaheadDateformula);
end;
OnAfterCalcAvailability(ServLine, Item, GrossRequirement, ScheduledReceipt, AvailabilityDate, PeriodType, LookaheadDateformula, Result);
end;
procedure CalcNoOfSubstitutions(var ServLine: Record "Service Line"): Integer
begin
if GetItem(ServLine) then begin
Item.CalcFields("No. of Substitutes");
exit(Item."No. of Substitutes");
end;
end;
procedure CalcNoOfSalesPrices(var ServLine: Record "Service Line"): Integer
begin
exit(ServLine.CountPrice(true));
end;
procedure CalcNoOfSalesLineDisc(var ServLine: Record "Service Line"): Integer
begin
exit(ServLine.CountDiscount(true));
end;
local procedure GetItem(var ServLine: Record "Service Line"): Boolean
begin
if (ServLine.Type <> ServLine.Type::Item) or (ServLine."No." = '') then
exit(false);
if ServLine."No." <> Item."No." then
Item.Get(ServLine."No.");
exit(true);
end;
procedure CalcNoOfServItemComponents(var ServItemLine: Record "Service Item Line"): Integer
var
ServItem: Record "Service Item";
ServItemComponent: Record "Service Item Component";
ResultValue: Integer;
IsHandled: Boolean;
begin
IsHandled := false;
OnBeforeCalcNoOfServItemComponents(ServItemLine, ResultValue, IsHandled);
if IsHandled then
exit(ResultValue);
if ServItem.Get(ServItemLine."Service Item No.") then begin
ServItemComponent.Reset();
ServItemComponent.SetRange(Active, true);
ServItemComponent.SetRange("Parent Service Item No.", ServItemLine."Service Item No.");
exit(ServItemComponent.Count);
end;
end;
procedure CalcNoOfTroubleshootings(var ServItemLine: Record "Service Item Line"): Integer
var
ServItem: Record "Service Item";
TroubleshootingSetup: Record "Troubleshooting Setup";
ResultValue: Integer;
IsHandled: Boolean;
begin
IsHandled := false;
OnBeforeCalcNoOfTroubleshootings(ServItemLine, ResultValue, IsHandled);
if IsHandled then
exit(ResultValue);
TroubleshootingSetup.Reset();
TroubleshootingSetup.SetRange(Type, TroubleshootingSetup.Type::"Service Item");
TroubleshootingSetup.SetRange("No.", ServItemLine."Service Item No.");
if not TroubleshootingSetup.IsEmpty() then
exit(TroubleshootingSetup.Count);
if not ServItem.Get(ServItemLine."Service Item No.") then
exit(0);
TroubleshootingSetup.SetRange(Type, TroubleshootingSetup.Type::Item);
TroubleshootingSetup.SetRange("No.", ServItem."Item No.");
if not TroubleshootingSetup.IsEmpty() then
exit(TroubleshootingSetup.Count);
TroubleshootingSetup.SetRange(Type, TroubleshootingSetup.Type::"Service Item Group");
TroubleshootingSetup.SetRange("No.", ServItem."Service Item Group Code");
exit(TroubleshootingSetup.Count);
end;
procedure CalcNoOfSkilledResources(var ServItemLine: Record "Service Item Line"): Integer
var
ServItem: Record "Service Item";
Res: Record Resource;
ServOrderAllocMgt: Codeunit ServAllocationManagement;
NoOfSkilledResources: Integer;
ResultValue: Integer;
IsHandled: Boolean;
begin
IsHandled := false;
OnBeforeCalcNoOfSkilledResources(ServItemLine, ResultValue, IsHandled);
if IsHandled then
exit(0);
if ServItem.Get(ServItemLine."Service Item No.") then begin
Res.Reset();
if Res.Find('-') then
repeat
if ServOrderAllocMgt.ResourceQualified(Res."No.", Enum::"Resource Skill Type"::"Service Item", ServItem."No.") then
NoOfSkilledResources += 1;
until Res.Next() = 0;
exit(NoOfSkilledResources);
end;
end;
procedure ShowServItemComponents(var ServItemLine: Record "Service Item Line")
var
ServItem: Record "Service Item";
ServItemComponent: Record "Service Item Component";
begin
if ServItem.Get(ServItemLine."Service Item No.") then begin
ServItemComponent.Reset();
ServItemComponent.SetRange(Active, true);
ServItemComponent.SetRange("Parent Service Item No.", ServItemLine."Service Item No.");
PAGE.RunModal(PAGE::"Service Item Component List", ServItemComponent);
end;
end;
procedure ShowTroubleshootings(var ServItemLine: Record "Service Item Line")
var
ServItem: Record "Service Item";
TroubleshootingSetup: Record "Troubleshooting Setup";
begin
if ServItem.Get(ServItemLine."Service Item No.") then begin
TroubleshootingSetup.Reset();
TroubleshootingSetup.SetRange(Type, TroubleshootingSetup.Type::"Service Item");
TroubleshootingSetup.SetRange("No.", ServItemLine."Service Item No.");
PAGE.RunModal(PAGE::"Troubleshooting Setup", TroubleshootingSetup);
end;
end;
procedure ShowSkilledResources(var ServItemLine: Record "Service Item Line")
var
ServItem: Record "Service Item";
ResourceSkill: Record "Resource Skill";
SkilledResourceList: Page "Skilled Resource List";
IsHandled: Boolean;
begin
IsHandled := false;
OnBeforeShowSkilledResources(ServItemLine, IsHandled);
if IsHandled then
exit;
if ServItem.Get(ServItemLine."Service Item No.") then begin
Clear(SkilledResourceList);
SkilledResourceList.Initialize(ResourceSkill.Type::"Service Item", ServItem."No.", ServItem.Description);
SkilledResourceList.RunModal();
end;
end;
[IntegrationEvent(false, false)]
local procedure OnAfterCalcAvailability(ServLine: Record "Service Line"; var Item: Record Item; GrossRequirement: Decimal; ScheduledReceipt: Decimal; AvailabilityDate: Date; PeriodType: Enum "Analysis Period Type"; LookaheadDateformula: DateFormula; var Result: Decimal)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeCalcNoOfTroubleshootings(ServItemLine: Record "Service Item Line"; var ResultValue: Integer; var IsHandled: Boolean)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeCalcNoOfServItemComponents(ServItemLine: Record "Service Item Line"; var ResultValue: Integer; var IsHandled: Boolean)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeCalcNoOfSkilledResources(ServItemLine: Record "Service Item Line"; var ResultValue: Integer; var IsHandled: Boolean)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeShowSkilledResources(var ServiceItemLine: Record "Service Item Line"; var IsHandled: Boolean)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnCalcAvailabilityOnAfterSetItemFilters(var Item: Record Item; var ServLine: Record "Service Line")
begin
end;
}