Вы находитесь на странице: 1из 32

OBJECT Codeunit 408 DimensionManagement

{
OBJECT-PROPERTIES
{
Date=07/09/12;
Time=12:00:00 PM;
Version List=NAVW17.00;
}
PROPERTIES
{
Permissions=TableData 80=imd,
TableData 232=imd,
TableData 355=imd;
OnRun=BEGIN
END;
}
CODE
{
VAR
Text000@1000 : TextConst 'ENU=Dimensions %1 and %2 can''t be used concurre
ntly.;ENA=Dimensions %1 and %2 can''t be used concurrently.';
Text001@1001 : TextConst 'ENU=Dimension combinations %1 - %2 and %3 - %4 c
an''t be used concurrently.;ENA=Dimension combinations %1 - %2 and %3 - %4 can''
t be used concurrently.';
Text002@1002 : TextConst 'ENU=This Shortcut Dimension is not defined in th
e %1.;ENA=This Shortcut Dimension is not defined in the %1.';
Text003@1003 : TextConst 'ENU=%1 is not an available %2 for that dimension
.;ENA=%1 is not an available %2 for that dimension.';
Text004@1004 : TextConst 'ENU=Select a %1 for the %2 %3.;ENA=Select a %1 f
or the %2 %3.';
Text005@1005 : TextConst 'ENU=Select a %1 for the %2 %3 for %4 %5.;ENA=Sel
ect a %1 for the %2 %3 for %4 %5.';
Text006@1006 : TextConst 'ENU=Select %1 %2 for the %3 %4.;ENA=Select %1 %2
for the %3 %4.';
Text007@1007 : TextConst 'ENU=Select %1 %2 for the %3 %4 for %5 %6.;ENA=Se
lect %1 %2 for the %3 %4 for %5 %6.';
Text008@1008 : TextConst 'ENU=%1 %2 must be blank.;ENA=%1 %2 must be blank
.';
Text009@1009 : TextConst 'ENU=%1 %2 must be blank for %3 %4.;ENA=%1 %2 mus
t be blank for %3 %4.';
Text010@1010 : TextConst 'ENU=%1 %2 must not be mentioned.;ENA=%1 %2 must
not be mentioned.';
Text011@1011 : TextConst 'ENU=%1 %2 must not be mentioned for %3 %4.;ENA=%
1 %2 must not be mentioned for %3 %4.';
Text012@1012 : TextConst 'ENU=A %1 used in %2 has not been used in %3.;ENA
=A %1 used in %2 has not been used in %3.';
Text013@1013 : TextConst 'ENU=%1 for %2 %3 is not the same in %4 and %5.;E
NA=%1 for %2 %3 is not the same in %4 and %5.';
Text014@1014 : TextConst 'ENU=%1 %2 is blocked.;ENA=%1 %2 is blocked.';
Text015@1015 : TextConst 'ENU=%1 %2 can''t be found.;ENA=%1 %2 can''t be f
ound.';
Text016@1016 : TextConst 'ENU=%1 %2 - %3 is blocked.;ENA=%1 %2 - %3 is blo
cked.';
Text017@1017 : TextConst 'ENU=%1 for %2 %3 - %4 must not be %5.;ENA=%1 for
%2 %3 - %4 must not be %5.';
Text018@1018 : TextConst 'ENU=%1 for %2 is missing.;ENA=%1 for %2 is missi
ng.';
Text019@1028 : TextConst 'ENU=You have changed a dimension.\\Do you want t
o update the lines?;ENA=You have changed a dimension.\\Do you want to update the

lines?';
TempDimBuf1@1019 : TEMPORARY Record 360;
TempDimBuf2@1020 : TEMPORARY Record 360;
ObjTransl@1027 : Record 377;
DimValComb@1032 : Record 351;
JobTaskDimTemp@1033 : TEMPORARY Record 1002;
DefaultDim@1035 : Record 352;
DimSetEntry@1034 : Record 480;
TempDimSetEntry2@1029 : TEMPORARY Record 480;
TempDimCombInitialized@1031 : Boolean;
TempDimCombEmpty@1030 : Boolean;
DimCombErr@1021 : Text[250];
DimValuePostingErr@1022 : Text[250];
DimErr@1023 : Text[250];
DocDimConsistencyErr@1024 : Text[250];
HasGotGLSetup@1025 : Boolean;
GLSetupShortcutDimCode@1026 : ARRAY [8] OF Code[20];
DimSetFilterCtr@1036 : Integer;
LastDimSetIDInFilter@1037 : Integer;
PROCEDURE GetDimensionSetID@123(VAR DimSetEntry2@1000 : Record 480) : Intege
r;
BEGIN
EXIT(DimSetEntry.GetDimensionSetID(DimSetEntry2));
END;
PROCEDURE GetDimensionSet@124(VAR TempDimSetEntry@1000 : TEMPORARY Record 48
0;DimSetID@1001 : Integer);
VAR
DimSetEntry2@1002 : Record 480;
BEGIN
TempDimSetEntry.DELETEALL;
WITH DimSetEntry2 DO BEGIN
SETRANGE("Dimension Set ID",DimSetID);
IF FINDSET THEN
REPEAT
TempDimSetEntry := DimSetEntry2;
TempDimSetEntry.INSERT;
UNTIL NEXT = 0;
END;
END;
PROCEDURE ShowDimensionSet@125(DimSetID@1000 : Integer;NewCaption@1003 : Tex
t[250]);
VAR
DimSetEntries@1002 : Page 479;
BEGIN
DimSetEntry.RESET;
DimSetEntry.FILTERGROUP(2);
DimSetEntry.SETRANGE("Dimension Set ID",DimSetID);
DimSetEntry.FILTERGROUP(0);
DimSetEntries.SETTABLEVIEW(DimSetEntry);
DimSetEntries.SetFormCaption(NewCaption);
DimSetEntry.RESET;
DimSetEntries.RUNMODAL;
END;
PROCEDURE EditDimensionSet@128(DimSetID@1000 : Integer;NewCaption@1003 : Tex
t[250]) : Integer;
VAR

EditDimSetEntries@1002 : Page 480;


NewDimSetID@1004 : Integer;
BEGIN
NewDimSetID := DimSetID;
DimSetEntry.RESET;
DimSetEntry.FILTERGROUP(2);
DimSetEntry.SETRANGE("Dimension Set ID",DimSetID);
DimSetEntry.FILTERGROUP(0);
EditDimSetEntries.SETTABLEVIEW(DimSetEntry);
EditDimSetEntries.SetFormCaption(NewCaption);
EditDimSetEntries.RUNMODAL;
NewDimSetID := EditDimSetEntries.GetDimensionID;
DimSetEntry.RESET;
EXIT(NewDimSetID);
END;
PROCEDURE EditDimensionSet2@131(DimSetID@1000 : Integer;NewCaption@1003 : Te
xt[250];VAR GlobalDimVal1@1006 : Code[20];VAR GlobalDimVal2@1005 : Code[20]) : I
nteger;
VAR
EditDimSetEntries@1002 : Page 480;
NewDimSetID@1004 : Integer;
BEGIN
NewDimSetID := DimSetID;
DimSetEntry.RESET;
DimSetEntry.FILTERGROUP(2);
DimSetEntry.SETRANGE("Dimension Set ID",DimSetID);
DimSetEntry.FILTERGROUP(0);
EditDimSetEntries.SETTABLEVIEW(DimSetEntry);
EditDimSetEntries.SetFormCaption(NewCaption);
EditDimSetEntries.RUNMODAL;
NewDimSetID := EditDimSetEntries.GetDimensionID;
UpdateGlobalDimFromDimSetID(NewDimSetID,GlobalDimVal1,GlobalDimVal2);
DimSetEntry.RESET;
EXIT(NewDimSetID);
END;
PROCEDURE EditReclasDimensionSet@126(VAR DimSetID@1001 : Integer;VAR NewDimS
etID@1002 : Integer;NewCaption@1000 : Text[250]);
VAR
EditReclasDimensions@1004 : Page 484;
BEGIN
EditReclasDimensions.SetDimensionIDs(DimSetID,NewDimSetID);
EditReclasDimensions.SetFormCaption(NewCaption);
EditReclasDimensions.RUNMODAL;
EditReclasDimensions.GetDimensionIDs(DimSetID,NewDimSetID);
END;
PROCEDURE EditReclasDimensionSet2@133(VAR DimSetID@1001 : Integer;VAR NewDim
SetID@1002 : Integer;NewCaption@1000 : Text[250];VAR GlobalDimVal1@1005 : Code[2
0];VAR GlobalDimVal2@1003 : Code[20];VAR NewGlobalDimVal1@1007 : Code[20];VAR Ne
wGlobalDimVal2@1006 : Code[20]);
VAR
EditReclasDimensions@1004 : Page 484;
BEGIN
EditReclasDimensions.SetDimensionIDs(DimSetID,NewDimSetID);
EditReclasDimensions.SetFormCaption(NewCaption);
EditReclasDimensions.RUNMODAL;
EditReclasDimensions.GetDimensionIDs(DimSetID,NewDimSetID);
UpdateGlobalDimFromDimSetID(DimSetID,GlobalDimVal1,GlobalDimVal2);

UpdateGlobalDimFromDimSetID(NewDimSetID,NewGlobalDimVal1,NewGlobalDimVal2)
;
END;
PROCEDURE UpdateGlobalDimFromDimSetID@130(DimSetID@1000 : Integer;VAR Global
DimVal1@1001 : Code[20];VAR GlobalDimVal2@1002 : Code[20]);
BEGIN
GetGLSetup;
GlobalDimVal1 := '';
GlobalDimVal2 := '';
IF GLSetupShortcutDimCode[1] <> '' THEN
IF DimSetEntry.GET(DimSetID,GLSetupShortcutDimCode[1]) THEN
GlobalDimVal1 := DimSetEntry."Dimension Value Code";
IF GLSetupShortcutDimCode[2] <> '' THEN
IF DimSetEntry.GET(DimSetID,GLSetupShortcutDimCode[2]) THEN
GlobalDimVal2 := DimSetEntry."Dimension Value Code";
END;
PROCEDURE GetCombinedDimensionSetID@132(DimensionSetIDArr@1000 : ARRAY [10]
OF Integer;VAR GlobalDimVal1@1004 : Code[20];VAR GlobalDimVal2@1005 : Code[20])
: Integer;
VAR
TempDimSetEntry@1003 : TEMPORARY Record 480;
i@1001 : Integer;
BEGIN
GetGLSetup;
GlobalDimVal1 := '';
GlobalDimVal2 := '';
DimSetEntry.RESET;
FOR i := 1 TO 10 DO
IF DimensionSetIDArr[i] <> 0 THEN BEGIN
DimSetEntry.SETRANGE("Dimension Set ID",DimensionSetIDArr[i]);
IF DimSetEntry.FINDSET THEN
REPEAT
IF TempDimSetEntry.GET(0,DimSetEntry."Dimension Code") THEN
TempDimSetEntry.DELETE;
TempDimSetEntry := DimSetEntry;
TempDimSetEntry."Dimension Set ID" := 0;
TempDimSetEntry.INSERT;
IF GLSetupShortcutDimCode[1] = TempDimSetEntry."Dimension Code" TH
EN
GlobalDimVal1 := TempDimSetEntry."Dimension Value Code";
IF GLSetupShortcutDimCode[2] = TempDimSetEntry."Dimension Code" TH
EN
GlobalDimVal2 := TempDimSetEntry."Dimension Value Code";
UNTIL DimSetEntry.NEXT = 0;
END;
EXIT(GetDimensionSetID(TempDimSetEntry));
END;
PROCEDURE GetDeltaDimSetID@137(DimSetID@1005 : Integer;NewParentDimSetID@100
0 : Integer;OldParentDimSetID@1001 : Integer) : Integer;
VAR
TempDimSetEntry@1004 : TEMPORARY Record 480;
TempDimSetEntryNew@1003 : TEMPORARY Record 480;
TempDimSetEntryDeleted@1002 : TEMPORARY Record 480;
BEGIN
// Returns an updated DimSetID based on parent's old and new DimSetID
IF NewParentDimSetID = OldParentDimSetID THEN
EXIT(DimSetID);

GetDimensionSet(TempDimSetEntry,DimSetID);
GetDimensionSet(TempDimSetEntryNew,NewParentDimSetID);
GetDimensionSet(TempDimSetEntryDeleted,OldParentDimSetID);
IF TempDimSetEntryDeleted.FINDSET THEN
REPEAT
IF TempDimSetEntryNew.GET(NewParentDimSetID,TempDimSetEntryDeleted."Di
mension Code") THEN BEGIN
IF TempDimSetEntryNew."Dimension Value Code" = TempDimSetEntryDelete
d."Dimension Value Code" THEN
TempDimSetEntryNew.DELETE;
TempDimSetEntryDeleted.DELETE;
END;
UNTIL TempDimSetEntryDeleted.NEXT = 0;
IF TempDimSetEntryDeleted.FINDSET THEN
REPEAT
IF TempDimSetEntry.GET(DimSetID,TempDimSetEntryDeleted."Dimension Code
") THEN
TempDimSetEntry.DELETE;
UNTIL TempDimSetEntryDeleted.NEXT = 0;
IF TempDimSetEntryNew.FINDSET THEN
REPEAT
IF TempDimSetEntry.GET(DimSetID,TempDimSetEntryNew."Dimension Code") T
HEN BEGIN
IF TempDimSetEntry."Dimension Value Code" <> TempDimSetEntryNew."Dim
ension Value Code" THEN BEGIN
TempDimSetEntry."Dimension Value Code" := TempDimSetEntryNew."Dime
nsion Value Code";
TempDimSetEntry."Dimension Value ID" := TempDimSetEntryNew."Dimens
ion Value ID";
TempDimSetEntry.MODIFY;
END;
END ELSE BEGIN
TempDimSetEntry := TempDimSetEntryNew;
TempDimSetEntry."Dimension Set ID" := DimSetID;
TempDimSetEntry.INSERT;
END;
UNTIL TempDimSetEntryNew.NEXT = 0;
EXIT(GetDimensionSetID(TempDimSetEntry));
END;
LOCAL PROCEDURE GetGLSetup@52();
VAR
GLSetup@1000 : Record 98;
BEGIN
IF NOT HasGotGLSetup THEN BEGIN
GLSetup.GET;
GLSetupShortcutDimCode[1] := GLSetup."Shortcut
GLSetupShortcutDimCode[2] := GLSetup."Shortcut
GLSetupShortcutDimCode[3] := GLSetup."Shortcut
GLSetupShortcutDimCode[4] := GLSetup."Shortcut
GLSetupShortcutDimCode[5] := GLSetup."Shortcut
GLSetupShortcutDimCode[6] := GLSetup."Shortcut
GLSetupShortcutDimCode[7] := GLSetup."Shortcut
GLSetupShortcutDimCode[8] := GLSetup."Shortcut
HasGotGLSetup := TRUE;
END;
END;

Dimension
Dimension
Dimension
Dimension
Dimension
Dimension
Dimension
Dimension

1
2
3
4
5
6
7
8

Code";
Code";
Code";
Code";
Code";
Code";
Code";
Code";

PROCEDURE CheckDimIDComb@138(DimSetID@1002 : Integer) : Boolean;


BEGIN
TempDimBuf1.RESET;
TempDimBuf1.DELETEALL;
DimSetEntry.RESET;
DimSetEntry.SETRANGE("Dimension Set ID",DimSetID);
IF DimSetEntry.FINDSET THEN
REPEAT
TempDimBuf1.INIT;
TempDimBuf1."Table ID" := DATABASE::"Dimension Buffer";
TempDimBuf1."Entry No." := 0;
TempDimBuf1."Dimension Code" := DimSetEntry."Dimension Code";
TempDimBuf1."Dimension Value Code" := DimSetEntry."Dimension Value Cod
e";
TempDimBuf1.INSERT;
UNTIL DimSetEntry.NEXT = 0;
DimSetEntry.RESET;
EXIT(CheckDimComb);
END;
PROCEDURE CheckDimValuePosting@14(TableID@1000 : ARRAY [10] OF Integer;No@10
01 : ARRAY [10] OF Code[20];DimSetID@1003 : Integer) : Boolean;
VAR
i@1004 : Integer;
j@1005 : Integer;
NoFilter@1006 : ARRAY [2] OF Text[250];
BEGIN
IF NOT CheckBlockedDimAndValues(DimSetID) THEN
EXIT(FALSE);
DefaultDim.SETFILTER("Value Posting",'<>%1',DefaultDim."Value Posting"::"
");
DimSetEntry.RESET;
DimSetEntry.SETRANGE("Dimension Set ID",DimSetID);
NoFilter[2] := '';
FOR i := 1 TO ARRAYLEN(TableID) DO BEGIN
IF (TableID[i] <> 0) AND (No[i] <> '') THEN BEGIN
DefaultDim.SETRANGE("Table ID",TableID[i]);
NoFilter[1] := No[i];
FOR j := 1 TO 2 DO BEGIN
DefaultDim.SETRANGE("No.",NoFilter[j]);
IF DefaultDim.FINDSET THEN
REPEAT
DimSetEntry.SETRANGE("Dimension Code",DefaultDim."Dimension Code
");
CASE DefaultDim."Value Posting" OF
DefaultDim."Value Posting"::"Code Mandatory":
BEGIN
IF NOT DimSetEntry.FINDFIRST OR (DimSetEntry."Dimension Va
lue Code" = '') THEN BEGIN
IF DefaultDim."No." = '' THEN
DimValuePostingErr :=
STRSUBSTNO(
Text004,
DefaultDim.FIELDCAPTION("Dimension Value Code"),
DefaultDim.FIELDCAPTION("Dimension Code"),DefaultD
im."Dimension Code")
ELSE
DimValuePostingErr :=

STRSUBSTNO(
Text005,
DefaultDim.FIELDCAPTION("Dimension Value Code"),
DefaultDim.FIELDCAPTION("Dimension Code"),
DefaultDim."Dimension Code",
ObjTransl.TranslateObject(ObjTransl."Object Type":
:Table,DefaultDim."Table ID"),
DefaultDim."No.");
EXIT(FALSE);
END;
END;
DefaultDim."Value Posting"::"Same Code":
BEGIN
IF DefaultDim."Dimension Value Code" <> '' THEN BEGIN
IF NOT DimSetEntry.FINDFIRST OR
(DefaultDim."Dimension Value Code" <> DimSetEntry."Di
mension Value Code")
THEN BEGIN
IF DefaultDim."No." = '' THEN
DimValuePostingErr :=
STRSUBSTNO(
Text006,
DefaultDim.FIELDCAPTION("Dimension Value Code"),
DefaultDim."Dimension Value Code",
DefaultDim.FIELDCAPTION("Dimension Code"),Defaul
tDim."Dimension Code")
ELSE
DimValuePostingErr :=
STRSUBSTNO(
Text007,
DefaultDim.FIELDCAPTION("Dimension Value Code"),
DefaultDim."Dimension Value Code",
DefaultDim.FIELDCAPTION("Dimension Code"),
DefaultDim."Dimension Code",
ObjTransl.TranslateObject(ObjTransl."Object Type
"::Table,DefaultDim."Table ID"),
DefaultDim."No.");
EXIT(FALSE);
END;
END ELSE BEGIN
IF DimSetEntry.FINDFIRST THEN BEGIN
IF DefaultDim."No." = '' THEN
DimValuePostingErr :=
STRSUBSTNO(
Text008,
DimSetEntry.FIELDCAPTION("Dimension Code"),DimSe
tEntry."Dimension Code")
ELSE
DimValuePostingErr :=
STRSUBSTNO(
Text009,
DimSetEntry.FIELDCAPTION("Dimension Code"),
DimSetEntry."Dimension Code",
ObjTransl.TranslateObject(ObjTransl."Object Type
"::Table,DefaultDim."Table ID"),
DefaultDim."No.");
EXIT(FALSE);
END;
END;
END;

DefaultDim."Value Posting"::"No Code":


BEGIN
IF DimSetEntry.FINDFIRST THEN BEGIN
IF DefaultDim."No." = '' THEN
DimValuePostingErr :=
STRSUBSTNO(
Text010,
DimSetEntry.FIELDCAPTION("Dimension Code"),DimSetE
ntry."Dimension Code")
ELSE
DimValuePostingErr :=
STRSUBSTNO(
Text011,
DimSetEntry.FIELDCAPTION("Dimension Code"),
DimSetEntry."Dimension Code",
ObjTransl.TranslateObject(ObjTransl."Object Type":
:Table,DefaultDim."Table ID"),
DefaultDim."No.");
EXIT(FALSE);
END;
END;
END;
UNTIL DefaultDim.NEXT = 0;
END;
END;
END;
DimSetEntry.RESET;
EXIT(TRUE);
END;
PROCEDURE CheckDimBuffer@64(VAR DimBuffer@1000 : Record 360) : Boolean;
VAR
i@1001 : Integer;
BEGIN
TempDimBuf1.RESET;
TempDimBuf1.DELETEALL;
IF DimBuffer.FINDSET THEN BEGIN
i := 1;
REPEAT
TempDimBuf1.INIT;
TempDimBuf1."Table ID" := DATABASE::"Dimension Buffer";
TempDimBuf1."Entry No." := i;
TempDimBuf1."Dimension Code" := DimBuffer."Dimension Code";
TempDimBuf1."Dimension Value Code" := DimBuffer."Dimension Value Code"
;
TempDimBuf1.INSERT;
i := i + 1;
UNTIL DimBuffer.NEXT = 0;
END;
EXIT(CheckDimComb);
END;
LOCAL PROCEDURE CheckDimComb@3() : Boolean;
VAR
DimComb@1000 : Record 350;
CurrentDimCode@1002 : Code[20];
CurrentDimValCode@1003 : Code[20];
DimFilter@1004 : Text[1024];
FilterTooLong@1005 : Boolean;
BEGIN

IF NOT TempDimCombInitialized THEN BEGIN


TempDimCombInitialized := TRUE;
IF DimComb.ISEMPTY THEN
TempDimCombEmpty := TRUE;
END;
IF TempDimCombEmpty THEN
EXIT(TRUE);
IF NOT TempDimBuf1.FINDSET THEN
EXIT(TRUE);
REPEAT
IF STRLEN(DimFilter) + 1 + STRLEN(TempDimBuf1."Dimension Code") > MAXSTR
LEN(DimFilter) THEN
FilterTooLong := TRUE
ELSE
IF DimFilter = '' THEN
DimFilter := TempDimBuf1."Dimension Code"
ELSE
DimFilter := DimFilter + '|' + TempDimBuf1."Dimension Code";
UNTIL FilterTooLong OR (TempDimBuf1.NEXT = 0);
IF NOT FilterTooLong THEN BEGIN
DimComb.SETFILTER("Dimension 1 Code",DimFilter);
DimComb.SETFILTER("Dimension 2 Code",DimFilter);
IF DimComb.FINDSET THEN
REPEAT
IF DimComb."Combination Restriction" = DimComb."Combination Restrict
ion"::Blocked THEN BEGIN
DimCombErr := STRSUBSTNO(Text000,DimComb."Dimension 1 Code",DimCom
b."Dimension 2 Code");
EXIT(FALSE);
END ELSE BEGIN
TempDimBuf1.SETRANGE("Dimension Code",DimComb."Dimension 1 Code");
TempDimBuf1.FINDFIRST;
CurrentDimCode := TempDimBuf1."Dimension Code";
CurrentDimValCode := TempDimBuf1."Dimension Value Code";
TempDimBuf1.SETRANGE("Dimension Code",DimComb."Dimension 2 Code");
TempDimBuf1.FINDFIRST;
IF NOT
CheckDimValueComb(
TempDimBuf1."Dimension Code",TempDimBuf1."Dimension Value Cod
e",
CurrentDimCode,CurrentDimValCode)
THEN
EXIT(FALSE);
IF NOT
CheckDimValueComb(
CurrentDimCode,CurrentDimValCode,
TempDimBuf1."Dimension Code",TempDimBuf1."Dimension Value Cod
e")
THEN
EXIT(FALSE);
END;
UNTIL DimComb.NEXT = 0;
EXIT(TRUE);
END;
WHILE TempDimBuf1.FINDFIRST DO BEGIN

CurrentDimCode := TempDimBuf1."Dimension Code";


CurrentDimValCode := TempDimBuf1."Dimension Value Code";
TempDimBuf1.DELETE;
IF TempDimBuf1.FINDSET THEN
REPEAT
IF CurrentDimCode > TempDimBuf1."Dimension Code" THEN BEGIN
IF DimComb.GET(TempDimBuf1."Dimension Code",CurrentDimCode) THEN B
EGIN
IF DimComb."Combination Restriction" = DimComb."Combination Rest
riction"::Blocked THEN BEGIN
DimCombErr :=
STRSUBSTNO(
Text000,
TempDimBuf1."Dimension Code",CurrentDimCode);
EXIT(FALSE);
END;
IF NOT
CheckDimValueComb(
TempDimBuf1."Dimension Code",TempDimBuf1."Dimension Value C
ode",
CurrentDimCode,CurrentDimValCode)
THEN
EXIT(FALSE);
END;
END ELSE BEGIN
IF DimComb.GET(CurrentDimCode,TempDimBuf1."Dimension Code") THEN B
EGIN
IF DimComb."Combination Restriction" = DimComb."Combination Rest
riction"::Blocked THEN BEGIN
DimCombErr :=
STRSUBSTNO(
Text000,
CurrentDimCode,TempDimBuf1."Dimension Code");
EXIT(FALSE);
END;
IF NOT
CheckDimValueComb(
CurrentDimCode,CurrentDimValCode,TempDimBuf1."Dimension Cod
e",
TempDimBuf1."Dimension Value Code")
THEN
EXIT(FALSE);
END;
END;
UNTIL TempDimBuf1.NEXT = 0;
END;
EXIT(TRUE);
END;
LOCAL PROCEDURE CheckDimValueComb@9(Dim1@1000 : Code[20];Dim1Value@1001 : Co
de[20];Dim2@1002 : Code[20];Dim2Value@1003 : Code[20]) : Boolean;
BEGIN
IF DimValComb.GET(Dim1,Dim1Value,Dim2,Dim2Value) THEN BEGIN
DimCombErr :=
STRSUBSTNO(Text001,
Dim1,Dim1Value,Dim2,Dim2Value);
EXIT(FALSE);
END;
EXIT(TRUE);
END;

PROCEDURE GetDimCombErr@41() : Text[250];


BEGIN
EXIT(DimCombErr);
END;
PROCEDURE UpdateDefaultDim@59(TableID@1000 : Integer;No@1001 : Code[20];VAR
GlobalDim1Code@1002 : Code[20];VAR GlobalDim2Code@1003 : Code[20]);
VAR
DefaultDim@1004 : Record 352;
BEGIN
GetGLSetup;
IF DefaultDim.GET(TableID,No,GLSetupShortcutDimCode[1]) THEN
GlobalDim1Code := DefaultDim."Dimension Value Code"
ELSE
GlobalDim1Code := '';
IF DefaultDim.GET(TableID,No,GLSetupShortcutDimCode[2]) THEN
GlobalDim2Code := DefaultDim."Dimension Value Code"
ELSE
GlobalDim2Code := '';
END;
PROCEDURE GetDefaultDimID@8(TableID@1000 : ARRAY [10] OF Integer;No@1001 : A
RRAY [10] OF Code[20];SourceCode@1002 : Code[20];VAR GlobalDim1Code@1003 : Code[
20];VAR GlobalDim2Code@1004 : Code[20];InheritFromDimSetID@1014 : Integer;Inheri
tFromTableNo@1015 : Integer) : Integer;
VAR
DimVal@1012 : Record 349;
DefaultDimPriority1@1005 : Record 354;
DefaultDimPriority2@1006 : Record 354;
DefaultDim@1007 : Record 352;
TempDimSetEntry@1011 : TEMPORARY Record 480;
TempDimSetEntry0@1016 : TEMPORARY Record 480;
i@1010 : Integer;
j@1009 : Integer;
NoFilter@1008 : ARRAY [2] OF Code[20];
NewDimSetID@1013 : Integer;
BEGIN
GetGLSetup;
IF InheritFromDimSetID > 0 THEN
GetDimensionSet(TempDimSetEntry0,InheritFromDimSetID);
TempDimBuf2.RESET;
TempDimBuf2.DELETEALL;
IF TempDimSetEntry0.FINDSET THEN
REPEAT
TempDimBuf2.INIT;
TempDimBuf2."Table ID" := InheritFromTableNo;
TempDimBuf2."Entry No." := 0;
TempDimBuf2."Dimension Code" := TempDimSetEntry0."Dimension Code";
TempDimBuf2."Dimension Value Code" := TempDimSetEntry0."Dimension Valu
e Code";
TempDimBuf2.INSERT;
UNTIL TempDimSetEntry0.NEXT = 0;
NoFilter[2] := '';
FOR i := 1 TO ARRAYLEN(TableID) DO BEGIN
IF (TableID[i] <> 0) AND (No[i] <> '') THEN BEGIN
DefaultDim.SETRANGE("Table ID",TableID[i]);
NoFilter[1] := No[i];
FOR j := 1 TO 2 DO BEGIN

DefaultDim.SETRANGE("No.",NoFilter[j]);
IF DefaultDim.FINDSET THEN
REPEAT
IF DefaultDim."Dimension Value Code" <> '' THEN BEGIN
TempDimBuf2.SETRANGE("Dimension Code",DefaultDim."Dimension Co
de");
IF NOT TempDimBuf2.FINDFIRST THEN BEGIN
TempDimBuf2.INIT;
TempDimBuf2."Table ID" := DefaultDim."Table ID";
TempDimBuf2."Entry No." := 0;
TempDimBuf2."Dimension Code" := DefaultDim."Dimension Code";
TempDimBuf2."Dimension Value Code" := DefaultDim."Dimension
Value Code";
TempDimBuf2.INSERT;
END ELSE BEGIN
IF DefaultDimPriority1.GET(SourceCode,DefaultDim."Table ID")
THEN BEGIN
IF DefaultDimPriority2.GET(SourceCode,TempDimBuf2."Table I
D") THEN BEGIN
IF DefaultDimPriority1.Priority < DefaultDimPriority2.Pr
iority THEN BEGIN
TempDimBuf2.DELETE;
TempDimBuf2."Table ID" := DefaultDim."Table ID";
TempDimBuf2."Entry No." := 0;
TempDimBuf2."Dimension Value Code" := DefaultDim."Dime
nsion Value Code";
TempDimBuf2.INSERT;
END;
END ELSE BEGIN
TempDimBuf2.DELETE;
TempDimBuf2."Table ID" := DefaultDim."Table ID";
TempDimBuf2."Entry No." := 0;
TempDimBuf2."Dimension Value Code" := DefaultDim."Dimens
ion Value Code";
TempDimBuf2.INSERT;
END;
END;
END;
IF GLSetupShortcutDimCode[1] = TempDimBuf2."Dimension Code" TH
EN
GlobalDim1Code := TempDimBuf2."Dimension Value Code";
IF GLSetupShortcutDimCode[2] = TempDimBuf2."Dimension Code" TH
EN
GlobalDim2Code := TempDimBuf2."Dimension Value Code";
END;
UNTIL DefaultDim.NEXT = 0;
END;
END;
END;
TempDimBuf2.RESET;
IF TempDimBuf2.FINDSET THEN BEGIN
REPEAT
DimVal.GET(TempDimBuf2."Dimension Code",TempDimBuf2."Dimension Value C
ode");
TempDimSetEntry."Dimension Code" := TempDimBuf2."Dimension Code";
TempDimSetEntry."Dimension Value Code" := TempDimBuf2."Dimension Value
Code";
TempDimSetEntry."Dimension Value ID" := DimVal."Dimension Value ID";
TempDimSetEntry.INSERT;
UNTIL TempDimBuf2.NEXT = 0;

NewDimSetID := GetDimensionSetID(TempDimSetEntry);
END;
EXIT(NewDimSetID);
END;
PROCEDURE TypeToTableID1@11(Type@1000 : 'G/L Account,Customer,Vendor,Bank Ac
count,Fixed Asset,IC Partner') : Integer;
BEGIN
CASE Type OF
Type::"G/L Account":
EXIT(DATABASE::"G/L Account");
Type::Customer:
EXIT(DATABASE::Customer);
Type::Vendor:
EXIT(DATABASE::Vendor);
Type::"Bank Account":
EXIT(DATABASE::"Bank Account");
Type::"Fixed Asset":
EXIT(DATABASE::"Fixed Asset");
Type::"IC Partner":
EXIT(DATABASE::"IC Partner");
END;
END;
PROCEDURE TypeToTableID2@13(Type@1000 : 'Resource,Item,G/L Account') : Integ
er;
BEGIN
CASE Type OF
Type::Resource:
EXIT(DATABASE::Resource);
Type::Item:
EXIT(DATABASE::Item);
Type::"G/L Account":
EXIT(DATABASE::"G/L Account");
END;
END;
PROCEDURE TypeToTableID3@16(Type@1000 : ' ,G/L Account,Item,Resource,Fixed A
sset,Charge (Item)') : Integer;
BEGIN
CASE Type OF
Type::" ":
EXIT(0);
Type::"G/L Account":
EXIT(DATABASE::"G/L Account");
Type::Item:
EXIT(DATABASE::Item);
Type::Resource:
EXIT(DATABASE::Resource);
Type::"Fixed Asset":
EXIT(DATABASE::"Fixed Asset");
Type::"Charge (Item)":
EXIT(DATABASE::"Item Charge");
END;
END;
PROCEDURE TypeToTableID4@1(Type@1000 : ' ,Item,Resource,Cost') : Integer;
BEGIN
CASE Type OF
Type::" ":

EXIT(0);
Type::Item:
EXIT(DATABASE::Item);
Type::Resource:
EXIT(DATABASE::Resource);
Type::Cost:
EXIT(DATABASE::"Service Cost");
END;
END;
PROCEDURE TypeToTableID5@119(Type@1000 : ' ,Item,Resource,Cost,G/L Account')
: Integer;
BEGIN
CASE Type OF
Type::" ":
EXIT(0);
Type::Item:
EXIT(DATABASE::Item);
Type::Resource:
EXIT(DATABASE::Resource);
Type::Cost:
EXIT(DATABASE::"Service Cost");
Type::"G/L Account":
EXIT(DATABASE::"G/L Account");
END;
END;
PROCEDURE DeleteDefaultDim@58(TableID@1000 : Integer;No@1001 : Code[20]);
VAR
DefaultDim@1002 : Record 352;
BEGIN
DefaultDim.SETRANGE("Table ID",TableID);
DefaultDim.SETRANGE("No.",No);
IF NOT DefaultDim.ISEMPTY THEN
DefaultDim.DELETEALL;
END;
PROCEDURE LookupDimValueCode@21(FieldNumber@1000 : Integer;VAR ShortcutDimCo
de@1001 : Code[20]);
VAR
DimVal@1002 : Record 349;
GLSetup@1003 : Record 98;
BEGIN
GetGLSetup;
IF GLSetupShortcutDimCode[FieldNumber] = '' THEN
ERROR(Text002,GLSetup.TABLECAPTION);
DimVal.SETRANGE("Dimension Code",GLSetupShortcutDimCode[FieldNumber]);
DimVal."Dimension Code" := GLSetupShortcutDimCode[FieldNumber];
DimVal.Code := ShortcutDimCode;
IF PAGE.RUNMODAL(0,DimVal) = ACTION::LookupOK THEN BEGIN
CheckDim(DimVal."Dimension Code");
CheckDimValue(DimVal."Dimension Code",DimVal.Code);
ShortcutDimCode := DimVal.Code;
END;
END;
PROCEDURE ValidateDimValueCode@22(FieldNumber@1000 : Integer;VAR ShortcutDim
Code@1001 : Code[20]);
VAR
DimVal@1002 : Record 349;

GLSetup@1003 : Record 98;


BEGIN
GetGLSetup;
IF (GLSetupShortcutDimCode[FieldNumber] = '') AND (ShortcutDimCode <> '')
THEN
ERROR(Text002,GLSetup.TABLECAPTION);
DimVal.SETRANGE("Dimension Code",GLSetupShortcutDimCode[FieldNumber]);
IF ShortcutDimCode <> '' THEN BEGIN
DimVal.SETRANGE(Code,ShortcutDimCode);
IF NOT DimVal.FINDFIRST THEN BEGIN
DimVal.SETFILTER(Code,STRSUBSTNO('%1*',ShortcutDimCode));
IF DimVal.FINDFIRST THEN
ShortcutDimCode := DimVal.Code
ELSE
ERROR(
STRSUBSTNO(Text003,
ShortcutDimCode,DimVal.FIELDCAPTION(Code)));
END;
END;
END;
PROCEDURE ValidateShortcutDimValues@127(FieldNumber@1000 : Integer;VAR Short
cutDimCode@1001 : Code[20];VAR DimSetID@1004 : Integer);
VAR
DimVal@1002 : Record 349;
TempDimSetEntry@1005 : TEMPORARY Record 480;
BEGIN
ValidateDimValueCode(FieldNumber,ShortcutDimCode);
DimVal."Dimension Code" := GLSetupShortcutDimCode[FieldNumber];
IF ShortcutDimCode <> '' THEN
DimVal.GET(DimVal."Dimension Code",ShortcutDimCode);
GetDimensionSet(TempDimSetEntry,DimSetID);
IF TempDimSetEntry.GET(TempDimSetEntry."Dimension Set ID",DimVal."Dimensio
n Code") THEN
IF TempDimSetEntry."Dimension Value Code" <> ShortcutDimCode THEN
TempDimSetEntry.DELETE;
IF ShortcutDimCode <> '' THEN BEGIN
TempDimSetEntry."Dimension Code" := DimVal."Dimension Code";
TempDimSetEntry."Dimension Value Code" := DimVal.Code;
TempDimSetEntry."Dimension Value ID" := DimVal."Dimension Value ID";
IF TempDimSetEntry.INSERT THEN;
END;
DimSetID := GetDimensionSetID(TempDimSetEntry);
END;
PROCEDURE SaveDefaultDim@53(TableID@1000 : Integer;No@1001 : Code[20];FieldN
umber@1002 : Integer;ShortcutDimCode@1003 : Code[20]);
VAR
DefaultDim@1004 : Record 352;
BEGIN
GetGLSetup;
IF ShortcutDimCode <> '' THEN BEGIN
IF DefaultDim.GET(TableID,No,GLSetupShortcutDimCode[FieldNumber])
THEN BEGIN
DefaultDim.VALIDATE("Dimension Value Code",ShortcutDimCode);
DefaultDim.MODIFY;
END ELSE BEGIN
DefaultDim.INIT;
DefaultDim.VALIDATE("Table ID",TableID);
DefaultDim.VALIDATE("No.",No);

DefaultDim.VALIDATE("Dimension Code",GLSetupShortcutDimCode[FieldNumbe
r]);
DefaultDim.VALIDATE("Dimension Value Code",ShortcutDimCode);
DefaultDim.INSERT;
END;
END ELSE
IF DefaultDim.GET(TableID,No,GLSetupShortcutDimCode[FieldNumber]) THEN
DefaultDim.DELETE;
END;
PROCEDURE GetShortcutDimensions@129(DimSetID@1000 : Integer;VAR ShortcutDimC
ode@1004 : ARRAY [8] OF Code[20]);
VAR
i@1006 : Integer;
BEGIN
GetGLSetup;
FOR i := 3 TO 8 DO BEGIN
ShortcutDimCode[i] := '';
IF GLSetupShortcutDimCode[i] <> '' THEN
IF DimSetEntry.GET(DimSetID,GLSetupShortcutDimCode[i]) THEN
ShortcutDimCode[i] := DimSetEntry."Dimension Value Code";
END;
END;
PROCEDURE CheckDimBufferValuePosting@68(VAR DimBuffer@1000 : Record 360;Tabl
eID@1001 : ARRAY [10] OF Integer;No@1002 : ARRAY [10] OF Code[20]) : Boolean;
VAR
i@1005 : Integer;
BEGIN
TempDimBuf2.RESET;
TempDimBuf2.DELETEALL;
IF DimBuffer.FINDSET THEN BEGIN
i := 1;
REPEAT
IF (NOT CheckDimValue(
DimBuffer."Dimension Code",DimBuffer."Dimension Value Code")) OR
(NOT CheckDim(DimBuffer."Dimension Code"))
THEN BEGIN
DimValuePostingErr := DimErr;
EXIT(FALSE);
END;
TempDimBuf2.INIT;
TempDimBuf2."Entry No." := i;
TempDimBuf2."Dimension Code" := DimBuffer."Dimension Code";
TempDimBuf2."Dimension Value Code" := DimBuffer."Dimension Value Code"
;
TempDimBuf2.INSERT;
i := i + 1;
UNTIL DimBuffer.NEXT = 0;
END;
EXIT(CheckValuePosting(TableID,No));
END;
LOCAL PROCEDURE CheckValuePosting@36(TableID@1000 : ARRAY [10] OF Integer;No
@1001 : ARRAY [10] OF Code[20]) : Boolean;
VAR
DefaultDim@1002 : Record 352;
i@1004 : Integer;
j@1005 : Integer;
NoFilter@1006 : ARRAY [2] OF Text[250];

BEGIN
DefaultDim.SETFILTER("Value Posting",'<>%1',DefaultDim."Value Posting"::"
");
NoFilter[2] := '';
FOR i := 1 TO ARRAYLEN(TableID) DO BEGIN
IF (TableID[i] <> 0) AND (No[i] <> '') THEN BEGIN
DefaultDim.SETRANGE("Table ID",TableID[i]);
NoFilter[1] := No[i];
FOR j := 1 TO 2 DO BEGIN
DefaultDim.SETRANGE("No.",NoFilter[j]);
IF DefaultDim.FINDSET THEN BEGIN
REPEAT
TempDimBuf2.SETRANGE("Dimension Code",DefaultDim."Dimension Code
");
CASE DefaultDim."Value Posting" OF
DefaultDim."Value Posting"::"Code Mandatory":
BEGIN
IF (NOT TempDimBuf2.FINDFIRST) OR
(TempDimBuf2."Dimension Value Code" = '')
THEN BEGIN
IF DefaultDim."No." = '' THEN
DimValuePostingErr :=
STRSUBSTNO(
Text004,
DefaultDim.FIELDCAPTION("Dimension Value Code"),
DefaultDim.FIELDCAPTION("Dimension Code"),DefaultD
im."Dimension Code")
ELSE
DimValuePostingErr :=
STRSUBSTNO(
Text005,
DefaultDim.FIELDCAPTION("Dimension Value Code"),
DefaultDim.FIELDCAPTION("Dimension Code"),
DefaultDim."Dimension Code",
ObjTransl.TranslateObject(ObjTransl."Object Type":
:Table,DefaultDim."Table ID"),
DefaultDim."No.");
EXIT(FALSE);
END;
END;
DefaultDim."Value Posting"::"Same Code":
BEGIN
IF DefaultDim."Dimension Value Code" <> '' THEN BEGIN
IF (NOT TempDimBuf2.FINDFIRST) OR
(DefaultDim."Dimension Value Code" <> TempDimBuf2."Di
mension Value Code")
THEN BEGIN
IF DefaultDim."No." = '' THEN
DimValuePostingErr :=
STRSUBSTNO(
Text006,
DefaultDim.FIELDCAPTION("Dimension Value Code"),
DefaultDim."Dimension Value Code",
DefaultDim.FIELDCAPTION("Dimension Code"),Defaul
tDim."Dimension Code")
ELSE
DimValuePostingErr :=
STRSUBSTNO(
Text007,
DefaultDim.FIELDCAPTION("Dimension Value Code"),

DefaultDim."Dimension Value Code",


DefaultDim.FIELDCAPTION("Dimension Code"),
DefaultDim."Dimension Code",
ObjTransl.TranslateObject(ObjTransl."Object Type
"::Table,DefaultDim."Table ID"),
DefaultDim."No.");
EXIT(FALSE);
END;
END ELSE BEGIN
IF TempDimBuf2.FINDFIRST THEN BEGIN
IF DefaultDim."No." = '' THEN
DimValuePostingErr :=
STRSUBSTNO(
Text008,
TempDimBuf2.FIELDCAPTION("Dimension Code"),TempD
imBuf2."Dimension Code")
ELSE
DimValuePostingErr :=
STRSUBSTNO(
Text009,
TempDimBuf2.FIELDCAPTION("Dimension Code"),
TempDimBuf2."Dimension Code",
ObjTransl.TranslateObject(ObjTransl."Object Type
"::Table,DefaultDim."Table ID"),
DefaultDim."No.");
EXIT(FALSE);
END;
END;
END;
DefaultDim."Value Posting"::"No Code":
BEGIN
IF TempDimBuf2.FINDFIRST THEN BEGIN
IF DefaultDim."No." = '' THEN
DimValuePostingErr :=
STRSUBSTNO(
Text010,
TempDimBuf2.FIELDCAPTION("Dimension Code"),TempDim
Buf2."Dimension Code")
ELSE
DimValuePostingErr :=
STRSUBSTNO(
Text011,
TempDimBuf2.FIELDCAPTION("Dimension Code"),
TempDimBuf2."Dimension Code",
ObjTransl.TranslateObject(ObjTransl."Object Type":
:Table,DefaultDim."Table ID"),
DefaultDim."No.");
EXIT(FALSE);
END;
END;
END;
UNTIL DefaultDim.NEXT = 0;
TempDimBuf2.RESET;
END;
END;
END;
END;
EXIT(TRUE);
END;

PROCEDURE GetDimValuePostingErr@98() : Text[250];


BEGIN
EXIT(DimValuePostingErr);
END;
PROCEDURE SetupObjectNoList@40(VAR TempObject@1000 : TEMPORARY Record 200000
0001);
VAR
Object@1001 : Record 2000000001;
TableIDArray@1003 : ARRAY [25] OF Integer;
Index@1004 : Integer;
BEGIN
TableIDArray[1] := DATABASE::"Salesperson/Purchaser";
TableIDArray[2] := DATABASE::"G/L Account";
TableIDArray[3] := DATABASE::Customer;
TableIDArray[4] := DATABASE::Vendor;
TableIDArray[5] := DATABASE::Item;
TableIDArray[6] := DATABASE::"Resource Group";
TableIDArray[7] := DATABASE::Resource;
TableIDArray[8] := DATABASE::Job;
TableIDArray[9] := DATABASE::"Bank Account";
TableIDArray[10] := DATABASE::Campaign;
TableIDArray[11] := DATABASE::Employee;
TableIDArray[12] := DATABASE::"Fixed Asset";
TableIDArray[13] := DATABASE::Insurance;
TableIDArray[14] := DATABASE::"Responsibility Center";
TableIDArray[15] := DATABASE::"Item Charge";
TableIDArray[16] := DATABASE::"Work Center";
TableIDArray[17] := DATABASE::"Service Contract Header";
TableIDArray[18] := DATABASE::"Customer Template";
TableIDArray[19] := DATABASE::"Service Contract Template";
TableIDArray[20] := DATABASE::"IC Partner";
TableIDArray[21] := DATABASE::"Service Order Type";
TableIDArray[22] := DATABASE::"Service Item Group";
TableIDArray[23] := DATABASE::"Service Item";
TableIDArray[24] := DATABASE::"Cash Flow Manual Expense";
TableIDArray[25] := DATABASE::"Cash Flow Manual Revenue";
Object.SETRANGE(Type,Object.Type::Table);
FOR Index := 1 TO ARRAYLEN(TableIDArray) DO BEGIN
Object.SETRANGE(ID,TableIDArray[Index]);
IF Object.FINDFIRST THEN BEGIN
TempObject := Object;
TempObject.INSERT;
END;
END;
END;
PROCEDURE GetDocDimConsistencyErr@56() : Text[250];
BEGIN
EXIT(DocDimConsistencyErr);
END;
PROCEDURE CheckDim@60(DimCode@1000 : Code[20]) : Boolean;
VAR
Dim@1001 : Record 348;
BEGIN
IF Dim.GET(DimCode) THEN BEGIN
IF Dim.Blocked THEN BEGIN

DimErr :=
STRSUBSTNO(Text014,Dim.TABLECAPTION,DimCode);
EXIT(FALSE);
END;
END ELSE BEGIN
DimErr :=
STRSUBSTNO(Text015,Dim.TABLECAPTION,DimCode);
EXIT(FALSE);
END;
EXIT(TRUE);
END;
PROCEDURE CheckDimValue@61(DimCode@1000 : Code[20];DimValCode@1001 : Code[20
]) : Boolean;
VAR
DimVal@1002 : Record 349;
BEGIN
IF (DimCode <> '') AND (DimValCode <> '') THEN BEGIN
IF DimVal.GET(DimCode,DimValCode) THEN BEGIN
IF DimVal.Blocked THEN BEGIN
DimErr :=
STRSUBSTNO(
Text016,DimVal.TABLECAPTION,DimCode,DimValCode);
EXIT(FALSE);
END;
IF NOT (DimVal."Dimension Value Type" IN
[DimVal."Dimension Value Type"::Standard,
DimVal."Dimension Value Type"::"Begin-Total"])
THEN BEGIN
DimErr :=
STRSUBSTNO(Text017,DimVal.FIELDCAPTION("Dimension Value Type"),
DimVal.TABLECAPTION,DimCode,DimValCode,FORMAT(DimVal."Dimension
Value Type"));
EXIT(FALSE);
END;
END ELSE BEGIN
DimErr :=
STRSUBSTNO(
Text018,DimVal.TABLECAPTION,DimCode);
EXIT(FALSE);
END;
END;
EXIT(TRUE);
END;
PROCEDURE CheckBlockedDimAndValues@6(DimSetID@1000 : Integer) : Boolean;
VAR
DimSetEntry@1001 : Record 480;
BEGIN
IF DimSetID = 0 THEN
EXIT(TRUE);
DimSetEntry.RESET;
DimSetEntry.SETRANGE("Dimension Set ID",DimSetID);
IF DimSetEntry.FINDSET THEN
REPEAT
IF NOT CheckDim(DimSetEntry."Dimension Code") OR
NOT CheckDimValue(DimSetEntry."Dimension Code",DimSetEntry."Dimensi
on Value Code")
THEN BEGIN
DimValuePostingErr := DimErr;

EXIT(FALSE);
END;
UNTIL DimSetEntry.NEXT = 0;
EXIT(TRUE);
END;
PROCEDURE GetDimErr@71() : Text[250];
BEGIN
EXIT(DimErr);
END;
PROCEDURE LookupDimValueCodeNoUpdate@20(FieldNumber@1000 : Integer);
VAR
DimVal@1001 : Record 349;
GLSetup@1002 : Record 98;
BEGIN
GetGLSetup;
IF GLSetupShortcutDimCode[FieldNumber] = '' THEN
ERROR(Text002,GLSetup.TABLECAPTION);
DimVal.SETRANGE("Dimension Code",GLSetupShortcutDimCode[FieldNumber]);
IF PAGE.RUNMODAL(0,DimVal) = ACTION::LookupOK THEN;
END;
PROCEDURE GlobalDimNo@2(DimensionCode@1001 : Code[20]) : Integer;
VAR
Index@1000 : Integer;
BEGIN
GetGLSetup;
FOR Index := 1 TO ARRAYLEN(GLSetupShortcutDimCode) DO
IF GLSetupShortcutDimCode[Index] = DimensionCode THEN
EXIT(Index);
EXIT(0);
END;
PROCEDURE CopyJnlLineDimToICJnlDim@93(TableID@1000 : Integer;TransactionNo@1
001 : Integer;PartnerCode@1002 : Code[20];TransactionSource@1008 : 'Rejected,Cre
ated';LineNo@1003 : Integer;DimSetID@1004 : Integer);
VAR
InOutBoxJnlLineDim@1005 : Record 423;
DimSetEntry@1009 : Record 480;
ICDim@1006 : Code[20];
ICDimValue@1007 : Code[20];
BEGIN
DimSetEntry.SETRANGE("Dimension Set ID",DimSetID);
IF DimSetEntry.FINDSET THEN
REPEAT
ICDim := ConvertDimtoICDim(DimSetEntry."Dimension Code");
ICDimValue := ConvertDimValuetoICDimVal(DimSetEntry."Dimension Code",D
imSetEntry."Dimension Value Code");
IF (ICDim <> '') AND (ICDimValue <> '') THEN BEGIN
InOutBoxJnlLineDim."Table ID" := TableID;
InOutBoxJnlLineDim."IC Partner Code" := PartnerCode;
InOutBoxJnlLineDim."Transaction No." := TransactionNo;
InOutBoxJnlLineDim."Transaction Source" := TransactionSource;
InOutBoxJnlLineDim."Line No." := LineNo;
InOutBoxJnlLineDim."Dimension Code" := ICDim;
InOutBoxJnlLineDim."Dimension Value Code" := ICDimValue;
InOutBoxJnlLineDim.INSERT;

END;
UNTIL DimSetEntry.NEXT = 0;
END;
PROCEDURE DefaultDimOnInsert@17(DefaultDimension@1000 : Record 352);
VAR
CallingTrigger@1001 : 'OnInsert,OnModify,OnDelete';
BEGIN
IF DefaultDimension."Table ID" = DATABASE::Job THEN
UpdateJobTaskDim(DefaultDimension,FALSE);
UpdateCostType(DefaultDimension,CallingTrigger::OnInsert);
END;
PROCEDURE DefaultDimOnModify@18(DefaultDimension@1000 : Record 352);
VAR
CallingTrigger@1001 : 'OnInsert,OnModify,OnDelete';
BEGIN
IF DefaultDimension."Table ID" = DATABASE::Job THEN
UpdateJobTaskDim(DefaultDimension,FALSE);
UpdateCostType(DefaultDimension,CallingTrigger::OnModify);
END;
PROCEDURE DefaultDimOnDelete@19(DefaultDimension@1000 : Record 352);
VAR
CallingTrigger@1001 : 'OnInsert,OnModify,OnDelete';
BEGIN
IF DefaultDimension."Table ID" = DATABASE::Job THEN
UpdateJobTaskDim(DefaultDimension,TRUE);
UpdateCostType(DefaultDimension,CallingTrigger::OnDelete);
END;
PROCEDURE CopyICJnlDimToICJnlDim@97(VAR FromInOutBoxLineDim@1001 : Record 42
3;VAR ToInOutBoxlineDim@1000 : Record 423);
BEGIN
IF FromInOutBoxLineDim.FINDSET THEN
REPEAT
ToInOutBoxlineDim := FromInOutBoxLineDim;
ToInOutBoxlineDim.INSERT;
UNTIL FromInOutBoxLineDim.NEXT = 0;
END;
PROCEDURE CopyDocDimtoICDocDim@107(TableID@1005 : Integer;TransactionNo@1004
: Integer;PartnerCode@1003 : Code[20];TransactionSource@1002 : 'Rejected,Create
d';LineNo@1001 : Integer;DimSetEntryID@1000 : Integer);
VAR
InOutBoxDocDim@1008 : Record 442;
DimSetEntry@1009 : Record 480;
ICDim@1007 : Code[20];
ICDimValue@1006 : Code[20];
BEGIN
DimSetEntry.SETRANGE("Dimension Set ID",DimSetEntryID);
IF DimSetEntry.FINDSET THEN
REPEAT
ICDim := ConvertDimtoICDim(DimSetEntry."Dimension Code");
ICDimValue := ConvertDimValuetoICDimVal(DimSetEntry."Dimension Code",D
imSetEntry."Dimension Value Code");
IF (ICDim <> '') AND (ICDimValue <> '') THEN BEGIN

InOutBoxDocDim."Table ID" := TableID;


InOutBoxDocDim."IC Partner Code" := PartnerCode;
InOutBoxDocDim."Transaction No." := TransactionNo;
InOutBoxDocDim."Transaction Source" := TransactionSource;
InOutBoxDocDim."Line No." := LineNo;
InOutBoxDocDim."Dimension Code" := ICDim;
InOutBoxDocDim."Dimension Value Code" := ICDimValue;
InOutBoxDocDim.INSERT;
END;
UNTIL DimSetEntry.NEXT = 0;
END;
PROCEDURE CopyICDocDimtoICDocDim@108(FromSourceICDocDim@1003 : Record 442;VA
R ToSourceICDocDim@1002 : Record 442;ToTableID@1001 : Integer;ToTransactionSourc
e@1000 : Integer);
BEGIN
WITH FromSourceICDocDim DO BEGIN
SetICDocDimFilters(FromSourceICDocDim,"Table ID","Transaction No.","IC P
artner Code","Transaction Source","Line No.");
IF FINDSET THEN
REPEAT
ToSourceICDocDim := FromSourceICDocDim;
ToSourceICDocDim."Table ID" := ToTableID;
ToSourceICDocDim."Transaction Source" := ToTransactionSource;
ToSourceICDocDim.INSERT;
UNTIL NEXT = 0;
END;
END;
PROCEDURE MoveICDocDimtoICDocDim@112(FromSourceICDocDim@1003 : Record 442;VA
R ToSourceICDocDim@1002 : Record 442;ToTableID@1001 : Integer;ToTransactionSourc
e@1000 : Integer);
BEGIN
WITH FromSourceICDocDim DO BEGIN
SetICDocDimFilters(FromSourceICDocDim,"Table ID","Transaction No.","IC P
artner Code","Transaction Source","Line No.");
IF FINDSET THEN
REPEAT
ToSourceICDocDim := FromSourceICDocDim;
ToSourceICDocDim."Table ID" := ToTableID;
ToSourceICDocDim."Transaction Source" := ToTransactionSource;
ToSourceICDocDim.INSERT;
DELETE;
UNTIL NEXT = 0;
END;
END;
PROCEDURE SetICDocDimFilters@110(VAR ICDocDim@1000 : Record 442;TableID@1001
: Integer;TransactionNo@1002 : Integer;PartnerCode@1003 : Code[20];TransactionS
ource@1004 : Integer;LineNo@1005 : Integer);
BEGIN
ICDocDim.RESET;
ICDocDim.SETRANGE("Table ID",TableID);
ICDocDim.SETRANGE("Transaction No.",TransactionNo);
ICDocDim.SETRANGE("IC Partner Code",PartnerCode);
ICDocDim.SETRANGE("Transaction Source",TransactionSource);
ICDocDim.SETRANGE("Line No.",LineNo);
END;
PROCEDURE DeleteICDocDim@109("Table ID"@1000 : Integer;"IC Transaction No."@

1001 : Integer;"IC Partner Code"@1002 : Code[20];"Transaction Source"@1003 : 'Re


jected,Created';LineNo@1005 : Integer);
VAR
ICDocDim@1004 : Record 442;
BEGIN
SetICDocDimFilters(ICDocDim,"Table ID","IC Transaction No.","IC Partner Co
de","Transaction Source",LineNo);
IF NOT ICDocDim.ISEMPTY THEN
ICDocDim.DELETEALL;
END;
PROCEDURE DeleteICJnlDim@116("Table ID"@1000 : Integer;"IC Transaction No."@
1001 : Integer;"IC Partner Code"@1002 : Code[20];"Transaction Source"@1003 : 'Re
jected,Created';LineNo@1005 : Integer);
VAR
ICJnlDim@1004 : Record 423;
BEGIN
ICJnlDim.SETRANGE("Table ID","Table ID");
ICJnlDim.SETRANGE("Transaction No.","IC Transaction No.");
ICJnlDim.SETRANGE("IC Partner Code","IC Partner Code");
ICJnlDim.SETRANGE("Transaction Source","Transaction Source");
ICJnlDim.SETRANGE("Line No.",LineNo);
IF NOT ICJnlDim.ISEMPTY THEN
ICJnlDim.DELETEALL;
END;
PROCEDURE ConvertICDimtoDim@99(FromICDim@1000 : Code[20]) DimCode : Code[20]
;
VAR
ICDim@1002 : Record 411;
BEGIN
IF ICDim.GET(FromICDim) THEN
DimCode := ICDim."Map-to Dimension Code";
END;
PROCEDURE ConvertICDimValuetoDimValue@100(FromICDim@1000 : Code[20];FromICDi
mValue@1001 : Code[20]) DimValueCode : Code[20];
VAR
ICDimValue@1002 : Record 412;
BEGIN
IF ICDimValue.GET(FromICDim,FromICDimValue) THEN
DimValueCode := ICDimValue."Map-to Dimension Value Code";
END;
PROCEDURE ConvertDimtoICDim@102(FromDim@1001 : Code[20]) ICDimCode : Code[20
];
VAR
Dim@1000 : Record 348;
BEGIN
IF Dim.GET(FromDim) THEN
ICDimCode := Dim."Map-to IC Dimension Code";
END;
PROCEDURE ConvertDimValuetoICDimVal@103(FromDim@1000 : Code[20];FromDimValue
@1001 : Code[20]) ICDimValueCode : Code[20];
VAR
DimValue@1002 : Record 349;
BEGIN
IF DimValue.GET(FromDim,FromDimValue) THEN
ICDimValueCode := DimValue."Map-to IC Dimension Value Code";

END;
PROCEDURE CheckICDimValue@113(ICDimCode@1001 : Code[20];ICDimValCode@1000 :
Code[20]) : Boolean;
VAR
ICDimVal@1002 : Record 412;
BEGIN
IF (ICDimCode <> '') AND (ICDimValCode <> '') THEN BEGIN
IF ICDimVal.GET(ICDimCode,ICDimValCode) THEN BEGIN
IF ICDimVal.Blocked THEN BEGIN
DimErr :=
STRSUBSTNO(
Text016,ICDimVal.TABLECAPTION,ICDimCode,ICDimValCode);
EXIT(FALSE);
END;
IF NOT (ICDimVal."Dimension Value Type" IN
[ICDimVal."Dimension Value Type"::Standard,
ICDimVal."Dimension Value Type"::"Begin-Total"])
THEN BEGIN
DimErr :=
STRSUBSTNO(Text017,ICDimVal.FIELDCAPTION("Dimension Value Type"),
ICDimVal.TABLECAPTION,ICDimCode,ICDimValCode,FORMAT(ICDimVal."Di
mension Value Type"));
EXIT(FALSE);
END;
END ELSE BEGIN
DimErr :=
STRSUBSTNO(
Text018,ICDimVal.TABLECAPTION,ICDimCode);
EXIT(FALSE);
END;
END;
EXIT(TRUE);
END;
PROCEDURE CheckICDim@114(ICDimCode@1000 : Code[20]) : Boolean;
VAR
ICDim@1001 : Record 411;
BEGIN
IF ICDim.GET(ICDimCode) THEN BEGIN
IF ICDim.Blocked THEN BEGIN
DimErr :=
STRSUBSTNO(Text014,ICDim.TABLECAPTION,ICDimCode);
EXIT(FALSE);
END;
END ELSE BEGIN
DimErr :=
STRSUBSTNO(Text015,ICDim.TABLECAPTION,ICDimCode);
EXIT(FALSE);
END;
EXIT(TRUE);
END;
PROCEDURE SaveJobTaskDim@39("Job No."@1000 : Code[20];"Job Task No."@1001 :
Code[20];FieldNumber@1003 : Integer;ShortcutDimCode@1002 : Code[20]);
VAR
JobTaskDim@1004 : Record 1002;
BEGIN
GetGLSetup;
IF ShortcutDimCode <> '' THEN BEGIN

IF JobTaskDim.GET("Job No.","Job Task No.",GLSetupShortcutDimCode[FieldN


umber])
THEN BEGIN
JobTaskDim.VALIDATE("Dimension Value Code",ShortcutDimCode);
JobTaskDim.MODIFY;
END ELSE BEGIN
JobTaskDim.INIT;
JobTaskDim.VALIDATE("Job No.","Job No.");
JobTaskDim.VALIDATE("Job Task No.","Job Task No.");
JobTaskDim.VALIDATE("Dimension Code",GLSetupShortcutDimCode[FieldNumbe
r]);
JobTaskDim.VALIDATE("Dimension Value Code",ShortcutDimCode);
JobTaskDim.INSERT;
END;
END ELSE
IF JobTaskDim.GET("Job No.","Job Task No.",GLSetupShortcutDimCode[FieldN
umber]) THEN
JobTaskDim.DELETE;
END;
PROCEDURE SaveJobTaskTempDim@46(FieldNumber@1001 : Integer;ShortcutDimCode@1
000 : Code[20]);
BEGIN
GetGLSetup;
IF ShortcutDimCode <> '' THEN BEGIN
IF JobTaskDimTemp.GET('','',GLSetupShortcutDimCode[FieldNumber])
THEN BEGIN
JobTaskDimTemp."Dimension Value Code" := ShortcutDimCode;
JobTaskDimTemp.MODIFY;
END ELSE BEGIN
JobTaskDimTemp.INIT;
JobTaskDimTemp."Dimension Code" := GLSetupShortcutDimCode[FieldNumber]
;
JobTaskDimTemp."Dimension Value Code" := ShortcutDimCode;
JobTaskDimTemp.INSERT;
END;
END ELSE
IF JobTaskDimTemp.GET('','',GLSetupShortcutDimCode[FieldNumber]) THEN
JobTaskDimTemp.DELETE;
END;
PROCEDURE InsertJobTaskDim@54("Job No."@1000 : Code[20];"Job Task No."@1001
: Code[20];VAR GlobalDim1Code@1005 : Code[20];VAR GlobalDim2Code@1004 : Code[20]
);
VAR
DefaultDim@1002 : Record 352;
JobTaskDim@1003 : Record 1002;
BEGIN
GetGLSetup;
DefaultDim.SETRANGE("Table ID",DATABASE::Job);
DefaultDim.SETRANGE("No.","Job No.");
IF DefaultDim.FINDSET(FALSE,FALSE) THEN
REPEAT
IF DefaultDim."Dimension Value Code" <> '' THEN BEGIN
JobTaskDim.INIT;
JobTaskDim."Job No." := "Job No.";
JobTaskDim."Job Task No." := "Job Task No.";
JobTaskDim."Dimension Code" := DefaultDim."Dimension Code";
JobTaskDim."Dimension Value Code" := DefaultDim."Dimension Value Cod
e";

JobTaskDim.INSERT;
IF JobTaskDim."Dimension Code" = GLSetupShortcutDimCode[1] THEN
GlobalDim1Code := JobTaskDim."Dimension Value Code";
IF JobTaskDim."Dimension Code" = GLSetupShortcutDimCode[2] THEN
GlobalDim2Code := JobTaskDim."Dimension Value Code";
END;
UNTIL DefaultDim.NEXT = 0;
JobTaskDimTemp.RESET;
IF JobTaskDimTemp.FINDSET THEN
REPEAT
IF NOT JobTaskDim.GET("Job No.","Job Task No.",JobTaskDimTemp."Dimensi
on Code") THEN BEGIN
JobTaskDim.INIT;
JobTaskDim."Job No." := "Job No.";
JobTaskDim."Job Task No." := "Job Task No.";
JobTaskDim."Dimension Code" := JobTaskDimTemp."Dimension Code";
JobTaskDim."Dimension Value Code" := JobTaskDimTemp."Dimension Value
Code";
JobTaskDim.INSERT;
IF JobTaskDim."Dimension Code" = GLSetupShortcutDimCode[1] THEN
GlobalDim1Code := JobTaskDim."Dimension Value Code";
IF JobTaskDim."Dimension Code" = GLSetupShortcutDimCode[2] THEN
GlobalDim2Code := JobTaskDim."Dimension Value Code";
END;
UNTIL JobTaskDimTemp.NEXT = 0;
JobTaskDimTemp.DELETEALL;
END;
PROCEDURE UpdateJobTaskDim@15(DefaultDimension@1000 : Record 352;FromOnDelet
e@1003 : Boolean);
VAR
JobTaskDimension@1001 : Record 1002;
JobTask@1002 : Record 1001;
BEGIN
IF DefaultDimension."Table ID" <> DATABASE::Job THEN
EXIT;
JobTask.SETRANGE("Job No.",DefaultDimension."No.");
IF JobTask.ISEMPTY THEN
EXIT;
IF NOT CONFIRM(Text019,TRUE) THEN
EXIT;
JobTaskDimension.SETRANGE("Job No.",DefaultDimension."No.");
JobTaskDimension.SETRANGE("Dimension Code",DefaultDimension."Dimension Cod
e");
JobTaskDimension.DELETEALL(TRUE);
IF FromOnDelete OR
(DefaultDimension."Value Posting" = DefaultDimension."Value Posting"::"
No Code") OR
(DefaultDimension."Dimension Value Code" = '')
THEN
EXIT;
IF JobTask.FINDSET THEN
REPEAT
CLEAR(JobTaskDimension);

JobTaskDimension."Job No." := JobTask."Job No.";


JobTaskDimension."Job Task No." := JobTask."Job Task No.";
JobTaskDimension."Dimension Code" := DefaultDimension."Dimension Code"
;
JobTaskDimension."Dimension Value Code" := DefaultDimension."Dimension
Value Code";
JobTaskDimension.INSERT(TRUE);
UNTIL JobTask.NEXT = 0;
END;
PROCEDURE DeleteJobTaskTempDim@76();
BEGIN
JobTaskDimTemp.RESET;
JobTaskDimTemp.DELETEALL;
END;
PROCEDURE CopyJobTaskDimToJobTaskDim@77(JobNo@1000 : Code[20];JobTaskNo@1001
: Code[20];NewJobNo@1002 : Code[20];NewJobTaskNo@1003 : Code[20]);
VAR
JobTaskDimension@1004 : Record 1002;
JobTaskDimension2@1005 : Record 1002;
BEGIN
JobTaskDimension.RESET;
JobTaskDimension.SETRANGE("Job No.",JobNo);
JobTaskDimension.SETRANGE("Job Task No.",JobTaskNo);
IF JobTaskDimension.FINDSET THEN
REPEAT
IF NOT JobTaskDimension2.GET(NewJobNo,NewJobTaskNo,JobTaskDimension."D
imension Code") THEN BEGIN
JobTaskDimension2.INIT;
JobTaskDimension2."Job No." := NewJobNo;
JobTaskDimension2."Job Task No." := NewJobTaskNo;
JobTaskDimension2."Dimension Code" := JobTaskDimension."Dimension Co
de";
JobTaskDimension2."Dimension Value Code" := JobTaskDimension."Dimens
ion Value Code";
JobTaskDimension2.INSERT(TRUE);
END;
UNTIL JobTaskDimension.NEXT = 0;
END;
PROCEDURE CheckDimIDConsistency@10(VAR DimSetEntry@1000 : Record 480;VAR Pos
tedDimSetEntry@1001 : Record 480;DocTableID@1002 : Integer;PostedDocTableID@1003
: Integer) : Boolean;
BEGIN
IF DimSetEntry.FINDSET THEN;
IF PostedDimSetEntry.FINDSET THEN;
REPEAT
CASE TRUE OF
DimSetEntry."Dimension Code" > PostedDimSetEntry."Dimension Code":
BEGIN
DocDimConsistencyErr :=
STRSUBSTNO(
Text012,
DimSetEntry.FIELDCAPTION("Dimension Code"),
ObjTransl.TranslateObject(ObjTransl."Object Type"::Table,DocTa
bleID),
ObjTransl.TranslateObject(ObjTransl."Object Type"::Table,Poste
dDocTableID));
EXIT(FALSE);

END;
DimSetEntry."Dimension Code" < PostedDimSetEntry."Dimension Code":
BEGIN
DocDimConsistencyErr :=
STRSUBSTNO(
Text012,
PostedDimSetEntry.FIELDCAPTION("Dimension Code"),
ObjTransl.TranslateObject(ObjTransl."Object Type"::Table,Poste
dDocTableID),
ObjTransl.TranslateObject(ObjTransl."Object Type"::Table,DocTa
bleID));
EXIT(FALSE);
END;
DimSetEntry."Dimension Code" = PostedDimSetEntry."Dimension Code":
BEGIN
IF DimSetEntry."Dimension Value Code" <> PostedDimSetEntry."Dimens
ion Value Code" THEN BEGIN
DocDimConsistencyErr :=
STRSUBSTNO(
Text013,
DimSetEntry.FIELDCAPTION("Dimension Value Code"),
DimSetEntry.FIELDCAPTION("Dimension Code"),
DimSetEntry."Dimension Code",
ObjTransl.TranslateObject(ObjTransl."Object Type"::Table,Doc
TableID),
ObjTransl.TranslateObject(ObjTransl."Object Type"::Table,Pos
tedDocTableID));
EXIT(FALSE);
END;
END;
END;
UNTIL (DimSetEntry.NEXT = 0) AND (PostedDimSetEntry.NEXT = 0);
EXIT(TRUE);
END;
LOCAL PROCEDURE CreateDimSetEntryFromDimValue@4(DimValue@1000 : Record 349;V
AR TempDimSetEntry@1001 : TEMPORARY Record 480);
BEGIN
TempDimSetEntry."Dimension Code" := DimValue."Dimension Code";
TempDimSetEntry."Dimension Value Code" := DimValue.Code;
TempDimSetEntry."Dimension Value ID" := DimValue."Dimension Value ID";
TempDimSetEntry.INSERT;
END;
PROCEDURE CreateDimSetIDFromICDocDim@5(VAR ICDocDim@1000 : Record 442) : Int
eger;
VAR
DimValue@1004 : Record 349;
TempDimSetEntry@1003 : TEMPORARY Record 480;
BEGIN
IF ICDocDim.FIND('-') THEN
REPEAT
DimValue.GET(
ConvertICDimtoDim(ICDocDim."Dimension Code"),
ConvertICDimValuetoDimValue(ICDocDim."Dimension Code",ICDocDim."Dime
nsion Value Code"));
CreateDimSetEntryFromDimValue(DimValue,TempDimSetEntry);
UNTIL ICDocDim.NEXT = 0;
EXIT(GetDimensionSetID(TempDimSetEntry));
END;

PROCEDURE CreateDimSetIDFromICJnlLineDim@7(VAR ICInboxOutboxJnlLineDim@1000


: Record 423) : Integer;
VAR
DimValue@1001 : Record 349;
TempDimSetEntry@1002 : TEMPORARY Record 480;
BEGIN
IF ICInboxOutboxJnlLineDim.FIND('-') THEN
REPEAT
DimValue.GET(
ConvertICDimtoDim(ICInboxOutboxJnlLineDim."Dimension Code"),
ConvertICDimValuetoDimValue(
ICInboxOutboxJnlLineDim."Dimension Code",ICInboxOutboxJnlLineDim."
Dimension Value Code"));
CreateDimSetEntryFromDimValue(DimValue,TempDimSetEntry);
UNTIL ICInboxOutboxJnlLineDim.NEXT = 0;
EXIT(GetDimensionSetID(TempDimSetEntry));
END;
PROCEDURE CopyDimBufToDimSetEntry@65(VAR FromDimBuf@1000 : Record 360;VAR Di
mSetEntry@1001 : Record 480);
VAR
DimValue@1005 : Record 349;
BEGIN
WITH FromDimBuf DO
IF FINDSET THEN
REPEAT
DimValue.GET("Dimension Code","Dimension Value Code");
DimSetEntry."Dimension Code" := "Dimension Code";
DimSetEntry."Dimension Value Code" := "Dimension Value Code";
DimSetEntry."Dimension Value ID" := DimValue."Dimension Value ID";
DimSetEntry.INSERT;
UNTIL NEXT = 0;
END;
PROCEDURE CreateDimSetIDFromDimBuf@12(VAR DimBuf@1000 : Record 360) : Intege
r;
VAR
DimValue@1001 : Record 349;
TempDimSetEntry@1002 : TEMPORARY Record 480;
BEGIN
IF DimBuf.FINDSET THEN
REPEAT
DimValue.GET(DimBuf."Dimension Code",DimBuf."Dimension Value Code");
CreateDimSetEntryFromDimValue(DimValue,TempDimSetEntry);
UNTIL DimBuf.NEXT = 0;
EXIT(GetDimensionSetID(TempDimSetEntry));
END;
PROCEDURE GetDimSetIDsForFilter@23(DimCode@1000 : Code[20];DimValueFilter@10
01 : Text[250]);
VAR
DimSetEntry2@1002 : Record 480;
BEGIN
DimSetEntry2.SETFILTER("Dimension Code",'%1',DimCode);
DimSetEntry2.SETFILTER("Dimension Value Code",DimValueFilter);
IF DimSetEntry2.FINDSET THEN
REPEAT
AddDimSetIDtoTempEntry(TempDimSetEntry2,DimSetEntry2."Dimension Set ID
");

UNTIL DimSetEntry2.NEXT = 0;
IF FilterIncludesBlank(DimCode,DimValueFilter) THEN
GetDimSetIDsForBlank(DimCode);
DimSetFilterCtr += 1;
END;
LOCAL PROCEDURE GetDimSetIDsForBlank@27(DimCode@1000 : Code[20]);
VAR
TempDimSetEntry@1001 : TEMPORARY Record 480;
DimSetEntry2@1002 : Record 480;
PrevDimSetID@1004 : Integer;
i@1003 : Integer;
BEGIN
AddDimSetIDtoTempEntry(TempDimSetEntry,0);
FOR i := 1 TO 2 DO BEGIN
IF i = 2 THEN
DimSetEntry2.SETFILTER("Dimension Code",'%1',DimCode);
IF DimSetEntry2.FINDSET THEN BEGIN
PrevDimSetID := 0;
REPEAT
IF DimSetEntry2."Dimension Set ID" <> PrevDimSetID THEN BEGIN
AddDimSetIDtoTempEntry(TempDimSetEntry,DimSetEntry2."Dimension Set
ID");
PrevDimSetID := DimSetEntry2."Dimension Set ID";
END;
UNTIL DimSetEntry2.NEXT = 0;
END;
END;
TempDimSetEntry.SETFILTER("Dimension Value ID",'%1',1);
IF TempDimSetEntry.FINDSET THEN
REPEAT
AddDimSetIDtoTempEntry(TempDimSetEntry2,TempDimSetEntry."Dimension Set
ID");
UNTIL TempDimSetEntry.NEXT = 0;
END;
PROCEDURE GetNextDimSetFilterChunk@24(Length@1000 : Integer) DimSetFilterChu
nk : Text[1024];
VAR
EndLoop@1002 : Boolean;
BEGIN
IF Length > MAXSTRLEN(DimSetFilterChunk) THEN
Length := MAXSTRLEN(DimSetFilterChunk);
TempDimSetEntry2.SETFILTER("Dimension Value ID",'%1',DimSetFilterCtr);
TempDimSetEntry2.SETFILTER("Dimension Set ID",'>%1',LastDimSetIDInFilter);
IF TempDimSetEntry2.FINDSET THEN BEGIN
DimSetFilterChunk := FORMAT(TempDimSetEntry2."Dimension Set ID");
LastDimSetIDInFilter := TempDimSetEntry2."Dimension Set ID";
WHILE (STRLEN(DimSetFilterChunk) < Length) AND (NOT EndLoop) DO BEGIN
IF TempDimSetEntry2.NEXT <> 0 THEN BEGIN
IF STRLEN(DimSetFilterChunk + '|' + FORMAT(TempDimSetEntry2."Dimensi
on Set ID")) <= Length THEN BEGIN
DimSetFilterChunk += '|' + FORMAT(TempDimSetEntry2."Dimension Set
ID");
LastDimSetIDInFilter := TempDimSetEntry2."Dimension Set ID";
END ELSE
EndLoop := TRUE;
END ELSE
EndLoop := TRUE;
END;

END;
END;
LOCAL PROCEDURE FilterIncludesBlank@25(DimCode@1001 : Code[20];DimValueFilte
r@1000 : Text[250]) : Boolean;
VAR
TempDimSetEntry@1002 : TEMPORARY Record 480;
BEGIN
TempDimSetEntry."Dimension Code" := DimCode;
TempDimSetEntry.INSERT;
TempDimSetEntry.SETFILTER("Dimension Value Code",DimValueFilter);
EXIT(NOT TempDimSetEntry.ISEMPTY);
END;
LOCAL PROCEDURE AddDimSetIDtoTempEntry@30(VAR TempDimSetEntry@1001 : TEMPORA
RY Record 480;DimSetID@1000 : Integer);
BEGIN
IF TempDimSetEntry.GET(DimSetID,'') THEN BEGIN
TempDimSetEntry."Dimension Value ID" += 1;
TempDimSetEntry.MODIFY;
END ELSE BEGIN
TempDimSetEntry."Dimension Set ID" := DimSetID;
TempDimSetEntry."Dimension Value ID" := 1;
TempDimSetEntry.INSERT
END;
END;
PROCEDURE ClearDimSetFilter@26();
BEGIN
TempDimSetEntry2.DELETEALL;
DimSetFilterCtr := 0;
LastDimSetIDInFilter := 0;
END;
PROCEDURE GetTempDimSetEntry@31(VAR TempDimSetEntry@1000 : TEMPORARY Record
480);
BEGIN
TempDimSetEntry.COPY(TempDimSetEntry2,TRUE);
END;
PROCEDURE UpdateCostType@28(DefaultDimension@1000 : Record 352;CallingTrigge
r@1004 : 'OnInsert,OnModify,OnDelete');
VAR
GLAcc@1003 : Record 15;
CostAccSetup@1002 : Record 1108;
CostAccMgt@1001 : Codeunit 1100;
BEGIN
IF CostAccSetup.GET AND (DefaultDimension."Table ID" = DATABASE::"G/L Acco
unt") THEN
IF GLAcc.GET(DefaultDimension."No.") THEN
CostAccMgt.UpdateCostTypeFromDefaultDimension(DefaultDimension,GLAcc,C
allingTrigger);
END;
BEGIN
END.
}
}

Вам также может понравиться