You are on page 1of 25

OBJECT Codeunit 5117751 VW SAGA/2 Finding Unit

{
OBJECT-PROPERTIES
{
Date=22-08-17;
Time=11:15:09 AM;
Modified=Yes;
Version List=VW_1_3.2.5.0,WMS;
}
PROPERTIES
{
OnRun=VAR
FunctionNameL@1109400001 : Text[30];
BEGIN

UserSessionG.GetParamForFindings(FirstRecRefG,SecondRecRefG,FunctionNameL,ObjectTyp
eG);
CASE FunctionNameL OF
'ModifyFindings':
ModifyFindings();
'CopyFindings':
CopyFindings();
'DeleteFindings':
DeleteFindings();
'OpenFindings':
OpenFindings();
END;
END;

}
CODE
{
VAR
C_INC001@1109400004 : TextConst 'DEU=Der Garantieantrag %1 kann nicht
ge�ndert werden,\Status: %2;ENU=Warranty claim %1 cannot be
modified.;ESP=Reclamaci�n gt�a. %1 no puede ser modificada.;FRA=La r�clamation de
la garantie %1 ne peut pas �tre modifi�e;RUS=����� �������� �� �
�⨩���� ॡ������
%1.';
UserSessionG@1109400000 : Codeunit 5028665;
VWUserSessionG@1000000000 : Codeunit 5117700;
WarrentyProcessingG@1117700000 : Codeunit 5117727;
FirstRecRefG@1109420003 : RecordRef;
SecondRecRefG@1109420004 : RecordRef;
ObjectTypeG@1109420005 : Text[30];
C_INC002@1119418001 : TextConst 'ENU=Service Order %1 is already sent to
SAGA/2. Change of Make Code is not possible!;ESP=Orden Rep. %1 ya se envi� a
SAGA/2. �El cambio de C�d. Marca no es posible!;FRA=La commande de service %1 est
d�j� envoy�e � SAGA/2. Le changement de code de t�che n''est pas possible !;RUS=��
1 % ����� �� ࢨ 㦥 �� ������ SAGA/2. ��������� ���� ��� � ��������� !';
C_INC003@1119418002 : TextConst 'ENU=Line was already sent to SAGA/2. Change
of %1 or %2 is not allowed!;ESP=La l�nea fue enviada a SAGA/2. � El cambio de %1 o
%2 no est� permitido!;FRA=La ligne a d�j� �t� envoy�e � SAGA/2. Le changement de %1
ou %2 n''est pas autoris� !;RUS=���� 㦥 ��।��� � SAGA/2. ��������� %1 ��� %2
����������!';
C_INC004@1119418003 : TextConst 'ENU=Service Line is already sent to SAGA/2.
Deletion ist not allowed!;ESP=L�nea Servicio ya se envi� a SAGA/2. �Eliminaci�n no
pemitida!;FRA=La ligne de service est d�j� envoy�e � SAGA/2. La suppression n''est
pas permise !;RUS=���� 㦥 ��।��� � SAGA/2. �������� ����������!';
C_INC005@1119418000 : TextConst 'ENU=Alignment is only possible for Service
Orders!;ESP=Solo es posible la alineaci�n para las �rdenes de
reparaci�n!;FRA=L''alignement est possible uniquement pour les commandes de service
!;RUS=�뢥 � � ������� �쪮쪮쪮 ��� ��ࢨ��� �������!';
C_INC006@1109400001 : TextConst 'ENU=Close Status for Claim %1 could not be
set!';

PROCEDURE ModifyFindings@1109420006();
BEGIN
CASE SecondRecRefG.NUMBER OF
DATABASE :: "Service Header":
BEGIN
ServHdrModifyTrigger();
END;
DATABASE :: "Service Line":
BEGIN
ServiceLineModify();
END;
DATABASE :: "Service Job Line":
BEGIN
END;
DATABASE :: "Service Line Customer":
BEGIN
ServiceLineCustomerModify();
END;
DATABASE :: "Warranty Claim Header":
BEGIN
WtyClaimHdrModify();
END;
DATABASE :: "Warranty Claim Line":
BEGIN
END;
DATABASE :: "Warranty Submission Header":
BEGIN
END;
END;
END;

PROCEDURE DeleteFindings@1109420005();
BEGIN
CASE SecondRecRefG.NUMBER OF
DATABASE :: "Service Header":
BEGIN
// Start PA034550.I001230
CopyServHdrToArchServHdr();
// Stop PA034550.I001230
END;
DATABASE :: "Service Line":
BEGIN
DeleteSerLineFinding();
END;
DATABASE :: "Service Job Line":
BEGIN
DeleteServJobLineWtyFinding();
END;
DATABASE :: "Service Line Customer":
BEGIN
DeleteServLineCustWtyFinding(SecondRecRefG);
END;
DATABASE :: "Warranty Claim Header":
BEGIN
WtyClaimHdrDelTrigger();
END;
DATABASE :: "Warranty Claim Line":
BEGIN
WtyClaimLineDelTrigger();
END;
DATABASE :: "Warranty Submission Header":
BEGIN
WtySubmissionHdrDelTrigger();
END;
DATABASE :: "Archived Service Header":
BEGIN
DeleteArchServHdrWtyFinding();
END;
END;
END;

PROCEDURE CopyFindings@1109420003();
BEGIN
IF (FirstRecRefG.NUMBER = DATABASE::"Service Header") AND
(SecondRecRefG.NUMBER = DATABASE::"Archived Service Header")
THEN BEGIN
CopyServHdrToArchServHdr();
EXIT;
END;

IF (FirstRecRefG.NUMBER = DATABASE::"Archived Service Header") AND


(SecondRecRefG.NUMBER = DATABASE::"Service Header")
THEN BEGIN
CopyArchServHdrToServHdr();
EXIT;
END;

IF (FirstRecRefG.NUMBER = DATABASE::"Warranty Claim Header") AND


(SecondRecRefG.NUMBER = DATABASE::"Warranty Submission Header")
THEN BEGIN
CopyWtyClaimToWtySubHdr();
EXIT;
END;
END;

PROCEDURE OpenFindings@1109420004();
VAR
ServiceHeaderL@1109420003 : Record 5025624;
ArchServHdrL@1109420006 : Record 5025636;
WtyClaimHeaderL@1109420001 : Record 5025790;
WtySubHeaderL@1109420002 : Record 5025798;
VWClaimHeaderL@1109420004 : Record 5117751;
BEGIN
CASE SecondRecRefG.NUMBER OF
DATABASE :: "Service Header":
BEGIN
SecondRecRefG.SETTABLE(ServiceHeaderL);
VWClaimHeaderL.RESET;
VWClaimHeaderL.SETRANGE("Document Type",VWClaimHeaderL."Document
Type"::Order);
VWClaimHeaderL.SETRANGE("Document No.",ServiceHeaderL."No.");
VWClaimHeaderL.FIND('-');
FORM.RUNMODAL(FORM::"VW Claim",VWClaimHeaderL);
END;
DATABASE :: "Archived Service Header":
BEGIN
SecondRecRefG.SETTABLE(ArchServHdrL);
VWClaimHeaderL.RESET;
VWClaimHeaderL.SETRANGE("Document Type",VWClaimHeaderL."Document
Type"::"Archived Order");
VWClaimHeaderL.SETRANGE("Document No.",ArchServHdrL."No.");
VWClaimHeaderL.FIND('-');
FORM.RUNMODAL(FORM::"VW Claim",VWClaimHeaderL);
END;
DATABASE :: "Warranty Claim Header":
BEGIN
SecondRecRefG.SETTABLE(WtyClaimHeaderL);
VWClaimHeaderL.RESET;
VWClaimHeaderL.SETRANGE("Document Type",VWClaimHeaderL."Document
Type"::"Warranty Claim");
VWClaimHeaderL.SETRANGE("Document No.",WtyClaimHeaderL."No.");
VWClaimHeaderL.FIND('-');
FORM.RUNMODAL(FORM::"VW Claim",VWClaimHeaderL);
END;
DATABASE :: "Warranty Submission Header":
BEGIN
SecondRecRefG.SETTABLE(WtySubHeaderL);
VWClaimHeaderL.RESET;
VWClaimHeaderL.SETRANGE("Document Type",VWClaimHeaderL."Document
Type"::"Submitted Claim");
VWClaimHeaderL.SETRANGE("Document No.",WtySubHeaderL."No.");
VWClaimHeaderL.FIND('-');
FORM.RUNMODAL(FORM::"VW Claim",VWClaimHeaderL);
END;
END;
END;

PROCEDURE ServHdrModifyTrigger@1109420002();
VAR
RecServHdrL@1109400001 : Record 5025624;
xRecServHdrL@1117700000 : Record 5025624;
VwMakeMappingL@1117900000 : Record 5117716;
VwWarrantyHdrL@1109420003 : Record 5117750;
BBOrderSubscriptL@1109400000 : Record 5117709;
BEGIN
FirstRecRefG.SETTABLE(xRecServHdrL);
SecondRecRefG.SETTABLE(RecServHdrL);

// Start PA035879
IF RecServHdrL."Document Type" = RecServHdrL."Document Type"::Order THEN
BBOrderSubscriptL.SetForProcess(RecServHdrL);
VWUserSessionG.SubscriptionDateTimeSet(CURRENTDATETIME);
// Stop PA035879

IF (RecServHdrL."Make Code" <> xRecServHdrL."Make Code") AND


(xRecServHdrL."Make Code" <> '') THEN BEGIN
IF VwMakeMappingL.GET(xRecServHdrL."Make Code") THEN BEGIN
IF VwMakeMappingL."BB Communication Active" THEN BEGIN
IF VwWarrantyHdrL.GET(VwWarrantyHdrL."Document
Type"::Order,xRecServHdrL."No.") THEN
// Start PA031416
ERROR(C_INC002,xRecServHdrL."No.");
// Stop PA031416
END;
END;
END;
END;

PROCEDURE ServiceLineModify@1109420001();
VAR
RecServLineL@1109400001 : Record 5025625;
xRecServLineL@1109420003 : Record 5025625;
VwClaimHdrL@1117900001 : Record 5117751;
VwClaimLineL@1117900000 : Record 5117752;
ServLineL@1117900003 : Record 5025625;
BBOrderItemSubscriptL@1109400000 : Record 5117708;
BEGIN
FirstRecRefG.SETTABLE(xRecServLineL);
SecondRecRefG.SETTABLE(RecServLineL);

// Start PA035879
IF RecServLineL."Document Type" = RecServLineL."Document Type"::Order THEN
BEGIN
IF CURRENTDATETIME - VWUserSessionG.SubscriptionDateTimeGet > 100 THEN
BBOrderItemSubscriptL.SetForProcess(RecServLineL);
END;
VWUserSessionG.SubscriptionDateTimeSet(CURRENTDATETIME);
// Stop PA035879

// Start PA029950
IF NOT RecServLineL.Blocked THEN
EXIT;
// Stop PA029950

IF (RecServLineL.Type = xRecServLineL.Type) AND (RecServLineL."No." =


xRecServLineL."No.") THEN
EXIT;

VwClaimLineL.RESET;
VwClaimLineL.SETRANGE("Document Type",VwClaimLineL."Document Type"::Order);
VwClaimLineL.SETRANGE("Document No.",RecServLineL."Document No.");
VwClaimLineL.SETRANGE("Service Line No.",RecServLineL."Line No.");
IF VwClaimLineL.FIND('+') THEN BEGIN
VwClaimHdrL.GET(VwClaimLineL."Document Type",VwClaimLineL."Document
No.",VwClaimLineL."Claim No.");
IF VwClaimLineL."Claim No." = 0 THEN BEGIN
IF NOT VwClaimHdrL."Alignment Done" THEN
// Start PA031416

ERROR(C_INC003,RecServLineL.FIELDCAPTION(RecServLineL.Type),RecServLineL.FIELDCAPTI
ON(RecServLineL."No."));
// Stop PA031416
END ELSE
IF VwClaimHdrL.Status <> VwClaimHdrL.Status::Deleted THEN
// Start PA031416

ERROR(C_INC003,RecServLineL.FIELDCAPTION(RecServLineL.Type),RecServLineL.FIELDCAPTI
ON(RecServLineL."No."));
// Stop PA031416
END;
END;

PROCEDURE ServiceLineCustomerModify@1117900002();
VAR
RecServLineCustL@1109400001 : Record 5025639;
xRecServLineCustL@1109420003 : Record 5025639;
BEGIN
FirstRecRefG.SETTABLE(xRecServLineCustL);
SecondRecRefG.SETTABLE(RecServLineCustL);
END;

PROCEDURE DeleteSerLineFinding@30();
VAR
ServLineL@1109420004 : Record 5025625;
BBOrderItemSubscriptL@1109400000 : Record 5117708;
BEGIN
SecondRecRefG.SETTABLE(ServLineL);
CheckServLineDeletion(ServLineL);
// Start PA035879
IF ServLineL."Document Type" = ServLineL."Document Type"::Order THEN
BBOrderItemSubscriptL.SetForProcess(ServLineL);
// Stop PA035879
END;

PROCEDURE WtyClaimHdrDelTrigger@1109420007();
VAR
PresentWtyClaimHdrL@1109420005 : Record 5025790;
VwWarrantyHdrL@1109400002 : Record 5117750;
BEGIN
SecondRecRefG.SETTABLE(PresentWtyClaimHdrL);
VwWarrantyHdrL.RESET;
VwWarrantyHdrL.SETRANGE("Document Type",VwWarrantyHdrL."Document
Type"::"Warranty Claim");
VwWarrantyHdrL.SETRANGE("Document No.",PresentWtyClaimHdrL."No.");
IF VwWarrantyHdrL.FIND('-') THEN
VwWarrantyHdrL.DELETE(TRUE);
END;

PROCEDURE WtyClaimHdrModify@1109420008();
VAR
PresentWtyClaimHdrL@1109400001 : Record 5025790;
PreviousWtyClaimHdrL@1109420003 : Record 5025790;
BEGIN
FirstRecRefG.SETTABLE(PreviousWtyClaimHdrL);
SecondRecRefG.SETTABLE(PresentWtyClaimHdrL);
ERROR(C_INC001,PreviousWtyClaimHdrL."No.");
END;

PROCEDURE WtyClaimLineDelTrigger@1109420009();
VAR
PresentWtyClaimLineL@1109420003 : Record 5025791;
BEGIN
SecondRecRefG.SETTABLE(PresentWtyClaimLineL);
END;

PROCEDURE WtySubmissionHdrDelTrigger@1109420000();
VAR
PresentWtySubmHdrL@1117700000 : Record 5025798;
VwWarrantyHdrL@1109420005 : Record 5117750;
BEGIN
SecondRecRefG.SETTABLE(PresentWtySubmHdrL);
VwWarrantyHdrL.RESET;
VwWarrantyHdrL.SETRANGE("Document Type",VwWarrantyHdrL."Document
Type"::"Submitted Claim");
VwWarrantyHdrL.SETRANGE("Document No.",PresentWtySubmHdrL."No.");
IF VwWarrantyHdrL.FIND('-') THEN
VwWarrantyHdrL.DELETE(TRUE);
END;

PROCEDURE DeleteArchServHdrWtyFinding@1109420010();
VAR
PresentArchServHdrL@1109420005 : Record 5025636;
VwWarrantyHdrL@1109400002 : Record 5117750;
BEGIN
SecondRecRefG.SETTABLE(PresentArchServHdrL);
VwWarrantyHdrL.RESET;
VwWarrantyHdrL.SETRANGE("Document Type",VwWarrantyHdrL."Document
Type"::"Archived Order");
VwWarrantyHdrL.SETRANGE("Document No.",PresentArchServHdrL."No.");
IF VwWarrantyHdrL.FIND('-') THEN
VwWarrantyHdrL.DELETE(TRUE);
END;

PROCEDURE DeleteServJobLineWtyFinding@31();
VAR
ServJobLineL@1109420004 : Record 5025627;
ServLineL@1117700000 : Record 5025625;
BEGIN
SecondRecRefG.SETTABLE(ServJobLineL);
ServLineL.RESET;
ServLineL.SETRANGE("Document Type",ServJobLineL."Document Type");
ServLineL.SETRANGE("Document No.",ServJobLineL."Document No.");
ServLineL.SETRANGE("Service Job No.",ServJobLineL."Line No.");
IF ServLineL.FIND('-') THEN
REPEAT
CheckServLineDeletion(ServLineL);
UNTIL ServLineL.NEXT = 0;
END;

PROCEDURE DeleteServLineCustWtyFinding@6(PresentRecRefP@1109420004 :
RecordRef);
VAR
ServLineL@1109420001 : Record 5025625;
BEGIN
CASE SecondRecRefG.NUMBER OF
DATABASE::"Service Line":
BEGIN
PresentRecRefP.SETTABLE(ServLineL);
CheckServLineDeletion(ServLineL);
END;
END;
END;

PROCEDURE CopyServHdrToArchServHdr@1109420013();
VAR
OldServHdrL@1109420003 : Record 5025624;
ServLineL@1117700012 : Record 5025625;
WarrantyClaimHdrL@1117700006 : Record 5025790;
WarrantyClaimLineL@1117900000 : Record 5025791;
VwWarrantyHdrL@1109420005 : Record 5117750;
VwWarrantyHdrL1@1117700001 : Record 5117750;
VwClaimHdrL@1109420004 : Record 5117751;
VwClaimHdrL1@1117700002 : Record 5117751;
VwClaimHdrLT@1117700005 : TEMPORARY Record 5117751;
VwClaimLineL@1117700000 : Record 5117752;
VwClaimLineL1@1117700003 : Record 5117752;
BBOrderSubscriptL@1109400000 : Record 5117709;
WarrantyNoL@1117700014 : Code[20];
LineNoL@1117700013 : Integer;
BEGIN
// @ Function to copy Warranty Findings from Service Order to Archive Service
Order

FirstRecRefG.SETTABLE(OldServHdrL);

// Start PA035879
IF OldServHdrL."Document Type" = OldServHdrL."Document Type"::Order THEN
BEGIN
BBOrderSubscriptL.ServiceHeaderDelete(OldServHdrL);
END;
// Stop PA035879

IF VwWarrantyHdrL.GET(VwWarrantyHdrL."Document Type"::"Archived
Order",OldServHdrL."No.") THEN
VwWarrantyHdrL.DELETE(TRUE);

IF NOT VwWarrantyHdrL.GET(VwWarrantyHdrL."Document
Type"::Order,OldServHdrL."No.") THEN
EXIT;

VwClaimLineL.RESET;
VwClaimLineL.SETRANGE("Document Type",VwClaimLineL."Document Type"::Order);
VwClaimLineL.SETRANGE("Document No.",OldServHdrL."No.");
VwClaimLineL.SETRANGE("Claim No.",0);
IF VwClaimLineL.FIND('-') THEN
REPEAT
IF ServLineL.GET(OldServHdrL."Document
Type",OldServHdrL."No.",VwClaimLineL."Service Line No.") THEN BEGIN
ServLineL.Blocked := FALSE;
ServLineL.MODIFY;
END;
UNTIL VwClaimLineL.NEXT = 0;

VwWarrantyHdrL1 := VwWarrantyHdrL;
VwWarrantyHdrL1."Document Type" := VwWarrantyHdrL1."Document Type"::"Archived
Order";
VwWarrantyHdrL1.INSERT;

VwClaimHdrL.RESET;
VwClaimHdrL.SETRANGE("Document Type",VwWarrantyHdrL."Document Type");
VwClaimHdrL.SETRANGE("Document No.",VwWarrantyHdrL."Document No.");
IF VwClaimHdrL.FIND('-') THEN
REPEAT
IF (VwClaimHdrL.Status = VwClaimHdrL.Status::New) AND (VwClaimHdrL."Claim
No." > 0) THEN BEGIN
VwClaimHdrLT := VwClaimHdrL;
VwClaimHdrLT.INSERT;
END;

VwClaimHdrL1 := VwClaimHdrL;
VwClaimHdrL1."Document Type" := VwWarrantyHdrL1."Document Type";
VwClaimHdrL1.INSERT;

VwClaimLineL.RESET;
VwClaimLineL.SETRANGE("Document Type",VwClaimHdrL."Document Type");
VwClaimLineL.SETRANGE("Document No.",VwClaimHdrL."Document No.");
VwClaimLineL.SETRANGE("Claim No.",VwClaimHdrL."Claim No.");
IF VwClaimLineL.FIND('-') THEN
REPEAT
VwClaimLineL1 := VwClaimLineL;
VwClaimLineL1."Document Type" := VwClaimHdrL1."Document Type";
// Start PA041002
VwClaimLineL1.INSERT(TRUE);
// Stop PA041002
UNTIL VwClaimLineL.NEXT = 0;
UNTIL VwClaimHdrL.NEXT = 0;

// Create Warranty Claim and Copy Finding from Service Order to Warranty
Claim
IF VwClaimHdrLT.FIND('-') THEN BEGIN
WarrantyNoL := CreateWarrantyClaim(OldServHdrL, VwWarrantyHdrL);
WarrantyClaimHdrL.GET(OldServHdrL."Make Code",WarrantyNoL);

// Add Finding Warranty Header


VwWarrantyHdrL1 := VwWarrantyHdrL;
VwWarrantyHdrL1."Document Type" := VwWarrantyHdrL1."Document
Type"::"Warranty Claim";
VwWarrantyHdrL1."Document No." := WarrantyClaimHdrL."No.";
VwWarrantyHdrL1.INSERT;
// Start PA032130
LineNoL := 10000;
// Stop PA032130

REPEAT
VwClaimHdrL1 := VwClaimHdrLT;
VwClaimHdrL1."Document Type" := VwClaimHdrL1."Document Type"::"Warranty
Claim";
VwClaimHdrL1."Document No." := WarrantyNoL;
VwClaimHdrL1.INSERT;

VwClaimLineL.RESET;
VwClaimLineL.SETRANGE("Document Type",VwClaimLineL."Document
Type"::"Archived Order");
VwClaimLineL.SETRANGE("Document No.",VwClaimHdrLT."Document No.");
VwClaimLineL.SETRANGE("Claim No.",VwClaimHdrLT."Claim No.");
// Start PA032130
// Start PA032130
IF VwClaimLineL.FIND('-') THEN
REPEAT
ServLineL.GET(ServLineL."Document Type"::Order,
WarrantyClaimHdrL."Service Order No.", VwClaimLineL."Service Line
No.");
AddWarrantyLine(ServLineL, WarrantyClaimHdrL, VwClaimLineL, LineNoL);

VwClaimLineL1 := VwClaimLineL;
VwClaimLineL1."Document Type" := VwWarrantyHdrL1."Document Type";
VwClaimLineL1."Document No." := VwWarrantyHdrL1."Document No.";
// Start PA041002
VwClaimLineL1.INSERT(TRUE);
// Stop PA041002
UNTIL VwClaimLineL.NEXT = 0;
UNTIL VwClaimHdrLT.NEXT = 0;
WarrantyClaimHdrL.Status := WarrantyClaimHdrL.Status::Prepared;
WarrantyClaimHdrL.MODIFY;
WarrantyClaimLineL.RESET;
WarrantyClaimLineL.SETRANGE("Make Code",WarrantyClaimHdrL."Make Code");
WarrantyClaimLineL.SETRANGE("Warranty No.",WarrantyClaimHdrL."No.");
IF WarrantyClaimLineL.FIND('-') THEN
WarrantyClaimLineL.MODIFYALL(Status,WarrantyClaimHdrL.Status);

VwWarrantyHdrL.DELETE(TRUE);
SetClaimStatusClosed(WarrantyNoL);
END ELSE
VwWarrantyHdrL.DELETE(TRUE);
END;

PROCEDURE CopyArchServHdrToServHdr@1117900004();
VAR
ArchServHdrL@1109420003 : Record 5025636;
VwWarrantyHdrL@1109420005 : Record 5117750;
BEGIN
FirstRecRefG.SETTABLE(ArchServHdrL);

IF VwWarrantyHdrL.GET(VwWarrantyHdrL."Document Type"::"Archived
Order",ArchServHdrL."No.") THEN
VwWarrantyHdrL.DELETE(TRUE);
END;

PROCEDURE CopyWtyClaimToWtySubHdr@1100409076();
BEGIN
END;

PROCEDURE CheckServLineDeletion@1117700002(ServLineP@1117700000 : Record


5025625);
VAR
VwClaimHdrL@1117700002 : Record 5117751;
VwClaimLineL@1117700001 : Record 5117752;
BEGIN
// @ Function to check is a Service Line could be deleted.
// @ param ServLineP of type Record from Table 5025625 Service Line

// Start PA029950
IF NOT ServLineP.Blocked THEN
EXIT;

// Stop PA029950
VwClaimLineL.RESET;
VwClaimLineL.SETRANGE("Document Type",VwClaimLineL."Document Type"::Order);
VwClaimLineL.SETRANGE("Document No.",ServLineP."Document No.");
VwClaimLineL.SETRANGE("Service Line No.",ServLineP."Line No.");
IF VwClaimLineL.FIND('+') THEN BEGIN
VwClaimHdrL.GET(VwClaimLineL."Document Type",VwClaimLineL."Document
No.",VwClaimLineL."Claim No.");
IF VwClaimLineL."Claim No." = 0 THEN BEGIN
IF NOT VwClaimHdrL."Alignment Done" THEN
// Start PA031416
ERROR(C_INC004);
// Stop PA031416
END
ELSE
IF VwClaimHdrL.Status <> VwClaimHdrL.Status::Deleted THEN
// Start PA031416
ERROR(C_INC004);
// Stop PA031416
END;
END;

PROCEDURE CreateWarrantyClaim@1117700000(ServiceHdrP@1117700000 : Record


5025624;VwWarrantyHdrP@1117700004 : Record 5117750) WarrantyNoR : Code[20];
VAR
MakeL@1117900000 : Record 12;
SalesInvoiceHdrL@1117700003 : Record 112;
ServiceCustL@1117700002 : Record 5025643;
VehicleL@1117700006 : Record 5025400;
VwDealerMappingL@1117700005 : Record 5117717;
WarrantyClaimHdrL@1117700001 : Record 5025790;
BEGIN
// @ Create Warranty Claim with Status Completed
// @ param ServiceHdrP of type Record from Table 5025624 Service Header
// @ param VwWarrantyHdrP of type Record from Table 5117750 VW Warranty
Header
// @ retval WarrantyNoR of type Code length 20

MakeL.GET(ServiceHdrP."Make Code");
CLEAR(WarrantyClaimHdrL);
WarrantyClaimHdrL."Make Code" := ServiceHdrP."Make Code";
WarrantyClaimHdrL."Created on" := TODAY;
WarrantyClaimHdrL."Created by" := USERID;
WarrantyClaimHdrL.INSERT(TRUE);

WarrantyClaimHdrL.VALIDATE("Bill-to Customer No.", MakeL."Factory Warranty


Customer");
WarrantyClaimHdrL."Service Order No." := ServiceHdrP."No.";
WarrantyClaimHdrL.Status := WarrantyClaimHdrL.Status::" ";
WarrantyClaimHdrL.Area := WarrantyClaimHdrL.Area::"Main Dealer";
WarrantyClaimHdrL."Currency Code" := ServiceHdrP."Currency Code";
IF ServiceHdrP."Bill-to Customer No." = WarrantyClaimHdrL."Bill-to Customer
No." THEN BEGIN
WarrantyClaimHdrL."Bill-to Name" := ServiceHdrP."Bill-to Name";
WarrantyClaimHdrL."Bill-to Name 2" := ServiceHdrP."Bill-to Name 2";
WarrantyClaimHdrL."Bill-to Address" := ServiceHdrP."Bill-to Address";
WarrantyClaimHdrL."Bill-to Address 2" := ServiceHdrP."Bill-to Address 2";
WarrantyClaimHdrL."Bill-to City" := ServiceHdrP."Bill-to City";
WarrantyClaimHdrL."Bill-to Contact" := ServiceHdrP."Bill-to Contact";
WarrantyClaimHdrL."Bill-to Post Code" := ServiceHdrP."Bill-to Post Code";
WarrantyClaimHdrL."Bill-to Country Code" := ServiceHdrP."Bill-to Country
Code";
END;
WarrantyClaimHdrL.VALIDATE("Sell-to Customer No.",ServiceHdrP."Sell-to
Customer No.");
WarrantyClaimHdrL."Sell-to Customer Name" := ServiceHdrP."Sell-to Customer
Name";
WarrantyClaimHdrL."Sell-to Customer Name 2" := ServiceHdrP."Sell-to Customer
Name 2";
WarrantyClaimHdrL."Sell-to Address" := ServiceHdrP."Sell-to Address";
WarrantyClaimHdrL."Sell-to Address 2" := ServiceHdrP."Sell-to Address 2";
WarrantyClaimHdrL."Sell-to City" := ServiceHdrP."Sell-to City";
WarrantyClaimHdrL."Sell-to Contact" := ServiceHdrP."Sell-to Contact";
WarrantyClaimHdrL."Sell-to Post Code" := ServiceHdrP."Sell-to Post Code";
WarrantyClaimHdrL."Sell-to Country Code" := ServiceHdrP."Sell-to Country
Code";
WarrantyClaimHdrL."Sell-to Home Phone No." := ServiceHdrP."Sell-to Home Phone
No.";
WarrantyClaimHdrL."Sell-to Phone No." := ServiceHdrP."Sell-to Phone No.";
WarrantyClaimHdrL."Sell-to Bus. Mobile Phone No." := ServiceHdrP."Sell-to
Mobile Phone No.";
WarrantyClaimHdrL."Sell-to Home Mobile Phone No." := ServiceHdrP."Sell-to
Home Mobile Phone No.";
WarrantyClaimHdrL."Customer Posting Group" := ServiceHdrP."Customer Posting
Group";
WarrantyClaimHdrL."Currency Factor" := ServiceHdrP."Currency Factor";
WarrantyClaimHdrL."Price Group Code" := ServiceHdrP."Price Group Code";
WarrantyClaimHdrL."Language Code" := ServiceHdrP."Language Code";
WarrantyClaimHdrL."Salesperson Code" := ServiceHdrP."Salesperson Code";

// From Service Customer


ServiceCustL.GET(ServiceHdrP."Document
Type",ServiceHdrP."No.",WarrantyClaimHdrL."Bill-to Customer No.");
WarrantyClaimHdrL."Payment Terms Code" := ServiceCustL."Payment Terms Code";
WarrantyClaimHdrL."Gen. Bus. Posting Group" := ServiceCustL."Gen. Bus.
Posting Group";
WarrantyClaimHdrL."Payment Method Code" := ServiceCustL."Payment Method
Code";
WarrantyClaimHdrL."Labor Price Group" := ServiceCustL."Labor Price Group";
WarrantyClaimHdrL."Item Sales Price Group" := ServiceCustL."Item Sales Price
Group";
WarrantyClaimHdrL."Add Service Surcharges" := ServiceCustL."Add Service
Surcharges";
WarrantyClaimHdrL."Cust./Item Disc. Gr." := ServiceCustL."Cust./Item Disc.
Gr.";
WarrantyClaimHdrL."Show Discount" := ServiceCustL."Show Discount";
WarrantyClaimHdrL."Ext. Service Price Group" := ServiceCustL."Ext. Service
Price Group";
WarrantyClaimHdrL."VAT Bus. Posting Group" := ServiceCustL."VAT Bus. Posting
Group";
WarrantyClaimHdrL."Department Code" := ServiceCustL."Department Code";
WarrantyClaimHdrL."VAT Base Discount %" := ServiceCustL."VAT Base Discount
%";
WarrantyClaimHdrL."Allow Quantity Disc." := ServiceCustL."Allow Quantity
Disc.";
WarrantyClaimHdrL."Payment Discount %" := ServiceCustL."Payment Discount %";

WarrantyClaimHdrL."Labor Charging Code" := ServiceHdrP."Labor Charging Code";


WarrantyClaimHdrL."Pmt. Discount Date" := ServiceHdrP."Pmt. Discount Date";
WarrantyClaimHdrL.VIN := ServiceHdrP.VIN;
WarrantyClaimHdrL."License No." := ServiceHdrP."License No.";
WarrantyClaimHdrL.Mileage := ServiceHdrP.Mileage;
WarrantyClaimHdrL."Model Code" := ServiceHdrP."Model Code";
WarrantyClaimHdrL."Model No." := ServiceHdrP."Model No.";
WarrantyClaimHdrL."Prod. Year" := ServiceHdrP."Prod. Year";
WarrantyClaimHdrL.Model := ServiceHdrP.Model;
WarrantyClaimHdrL.Type := ServiceHdrP.Type;
WarrantyClaimHdrL."Initial Registration" := ServiceHdrP."Initial
Registration";
WarrantyClaimHdrL."Service Advisor No." := ServiceHdrP."Service Advisor No.";
WarrantyClaimHdrL."Engine Code" := ServiceHdrP."Engine Code";
WarrantyClaimHdrL."Engine No." := ServiceHdrP."Engine No.";
WarrantyClaimHdrL."Customer Registration Date" := ServiceHdrP."Customer
Registration Date";
WarrantyClaimHdrL."Engine Type Code" := ServiceHdrP."Engine Type Code";
WarrantyClaimHdrL."Labor Type" := ServiceHdrP."Labor Type";
WarrantyClaimHdrL."Document Type" := WarrantyClaimHdrL."Document
Type"::Warranty;
WarrantyClaimHdrL."Location Code" := ServiceHdrP."Location Code";
WarrantyClaimHdrL."Tax Area Code" := ServiceHdrP."Tax Area Code";
WarrantyClaimHdrL."Tax Liable" := ServiceHdrP."Tax Liable";
WarrantyClaimHdrL.Reserve := ServiceHdrP.Reserve;
WarrantyClaimHdrL."Due Date" := ServiceHdrP."Due Date";
WarrantyClaimHdrL."Vehicle Category Code" := ServiceHdrP."Vehicle Category
Code";
WarrantyClaimHdrL."Vehicle Type Code" := ServiceHdrP."Vehicle Type Code";
WarrantyClaimHdrL."Service Posting Group" := ServiceHdrP."Service Posting
Group";
WarrantyClaimHdrL."Sales Department Code" := ServiceHdrP."Sales Department
Code";
WarrantyClaimHdrL."Order Date" := ServiceHdrP."Order Date";

// Form Invoice
SalesInvoiceHdrL.SETCURRENTKEY("Service Order No.");
SalesInvoiceHdrL.SETRANGE("Service Order No.",ServiceHdrP."No.");
SalesInvoiceHdrL.SETRANGE("Bill-to Customer No.",WarrantyClaimHdrL."Bill-to
Customer No.");
IF SalesInvoiceHdrL.FIND('+') THEN BEGIN
WarrantyClaimHdrL."Document Date" := SalesInvoiceHdrL."Document Date";
WarrantyClaimHdrL."Document No." := SalesInvoiceHdrL."No.";
END;

// VW WarrantyClaim
WarrantyClaimHdrL."Confirmed Date" := VwWarrantyHdrP."Send Date";
WarrantyClaimHdrL."Confirmed User ID" := VwWarrantyHdrP."Send By";
WarrantyClaimHdrL."Dealer No." :=
VwDealerMappingL.GetDealer(WarrantyClaimHdrL."Location Code");

// From Vehicle
IF VehicleL.GET(WarrantyClaimHdrL.VIN) THEN
WarrantyClaimHdrL."Own Sale" := VehicleL."Own Sale";

WarrantyClaimHdrL.MODIFY;

CreateWarrantyJob(WarrantyClaimHdrL);
CreateWarrantyPackage(WarrantyClaimHdrL);

WarrantyNoR := WarrantyClaimHdrL."No.";
END;

PROCEDURE AddWarrantyLine@1117700004(ServiceLineP@1117700000 : Record


5025625;WarrantyClaimHdrP@1117700001 : Record 5025790;VwClaimLineP@1117900000 :
Record 5117752;VAR LineNoP@1117700002 : Integer);
VAR
ServLineCustL@1117700004 : Record 5025639;
WarrantyClaimLineL@1117700003 : Record 5025791;
SalesInvLineL@1117700005 : Record 113;
SalesInvHdrL@1119418000 : Record 112;
WarrManagementUnitL@1117700006 : Codeunit 5025790;
FoundL@1119418001 : Boolean;
BEGIN
// @ Function to insert Warranty Claim Line
// @ param ServiceLineP of type Record from Table 5025625 Service Line
// @ param WarrantyClaimHdrP of type Record from Table 5025790 Warranty Claim
Header
// @ param VwClaimLineP of type Record from Table 5117752 VW Claim Line
// @ param LineNoP of type Integer passed by reference

WarrantyClaimLineL.INIT;
WarrantyClaimLineL."Make Code" := WarrantyClaimHdrP."Make Code";
WarrantyClaimLineL."Warranty No." := WarrantyClaimHdrP."No.";
WarrantyClaimLineL."Line No." := LineNoP;
LineNoP += 10000;

WarrantyClaimLineL."Document Type" := WarrantyClaimHdrP."Document Type";


CASE ServiceLineP.Type OF
ServiceLineP.Type::Item:
WarrantyClaimLineL.Type := WarrantyClaimLineL.Type::Item;
ServiceLineP.Type::Labor:
WarrantyClaimLineL.Type := WarrantyClaimLineL.Type::Labor;
ServiceLineP.Type::"Ext. Service":
WarrantyClaimLineL.Type := WarrantyClaimLineL.Type::"Ext. Service";
END;
WarrantyClaimLineL."No." := ServiceLineP."No.";
WarrantyClaimLineL."Data Make Code" := ServiceLineP."Data Make Code";
WarrantyClaimLineL."Bill-to Customer No." := WarrantyClaimHdrP."Bill-to
Customer No.";
WarrantyClaimLineL."Outstanding Quantity" := ServiceLineP."Outstanding
Quantity";
WarrantyClaimLineL."Qty. to Invoice" := ServiceLineP."Qty. to Invoice";
WarrantyClaimLineL."Qty. to Receive" := ServiceLineP."Qty. to Ship";
WarrantyClaimLineL."Outstanding Amount" := ServiceLineP."Outstanding Amount";
WarrantyClaimLineL."Qty. Rcd. Not Invoiced" := ServiceLineP."Qty. Shipped Not
Invoiced";
WarrantyClaimLineL."Received Not Invoiced" := ServiceLineP."Shipped Not
Invoiced";
WarrantyClaimLineL."Quantity Received" := ServiceLineP."Quantity Shipped";
WarrantyClaimLineL."Profit %" := ServiceLineP."Profit %";
WarrantyClaimLineL."Currency Code" := ServiceLineP."Currency Code";
WarrantyClaimLineL."Outstanding Amount (LCY)" := ServiceLineP."Outstanding
Amount (LCY)";
WarrantyClaimLineL."Received Not Invoiced (LCY)" := ServiceLineP."Shipped Not
Invoiced (LCY)";
WarrantyClaimLineL."Reserved Quantity" := ServiceLineP."Reserved Quantity";
WarrantyClaimLineL.Reserve := ServiceLineP.Reserve;
WarrantyClaimLineL."Book No." := ServiceLineP."Book No.";
WarrantyClaimLineL.Planned := ServiceLineP.Planned;
WarrantyClaimLineL."Outstanding Qty. (Base)" := ServiceLineP."Outstanding
Qty. (Base)";
WarrantyClaimLineL."Qty. to Invoice (Base)" := ServiceLineP."Qty. to Invoice
(Base)";
WarrantyClaimLineL."Qty. to Receive (Base)" := ServiceLineP."Qty. to Ship
(Base)";
WarrantyClaimLineL."Qty. Rcd. Not Invoiced (Base)" := ServiceLineP."Qty.
Shipped Not Invd. (Base)";
WarrantyClaimLineL."Qty. Received (Base)" := ServiceLineP."Qty. Shipped
(Base)";
WarrantyClaimLineL."Qty. Invoiced (Base)" := ServiceLineP."Qty. Invoiced
(Base)";
WarrantyClaimLineL."Reserved Qty. (Base)" := ServiceLineP."Reserved Qty.
(Base)";
WarrantyClaimLineL."Qty. Invoiced (Hour)" := ServiceLineP."Qty. Invoiced
(Hour)";
WarrantyClaimLineL."Service Job No." := ServiceLineP."Service Job No.";
WarrantyClaimLineL."Standard Time" := ServiceLineP."Standard Time";
WarrantyClaimLineL."Qty. per Hour" := ServiceLineP."Qty. per Hour";
WarrantyClaimLineL."Qty. (Hour)" := ServiceLineP."Qty. (Hour)";
WarrantyClaimLineL."Outstanding Qty. (Hour)" := ServiceLineP."Outstanding
Qty. (Hour)";
WarrantyClaimLineL."Qty. Rcd. Not Invoiced (Hour)" := ServiceLineP."Qty. Rcd.
Not Invoiced (Hour)";
WarrantyClaimLineL."Qty. Received (Hour)" := ServiceLineP."Qty. Shipped
(Hour)";
WarrantyClaimLineL."Package No." := ServiceLineP."Package No.";
WarrantyClaimLineL."Package Version No." := ServiceLineP."Package Version
No.";
WarrantyClaimLineL."No Charge" := ServiceLineP."No Charge";
WarrantyClaimLineL."Service Posting Group" := ServiceLineP."Service Posting
Group";
WarrantyClaimLineL."Sales Department Code" := ServiceLineP."Sales Department
Code";
WarrantyClaimLineL."Assigned Qty." := ServiceLineP."Assigned Qty.";
WarrantyClaimLineL."Assigned Qty. (Hour)" := ServiceLineP."Assigned Qty.
(Hour)";
WarrantyClaimLineL."Fixed Price" := ServiceLineP."Fixed Price";
WarrantyClaimLineL."Standard Time Type" := ServiceLineP."Standard Time Type";
WarrantyClaimLineL."Post with Book No." := ServiceLineP."Post with Book No.";
WarrantyClaimLineL."Service Order No." := ServiceLineP."Document No.";
WarrantyClaimLineL."Service Order Line No." := ServiceLineP."Line No.";

// Start PA031177
FoundL := FALSE;
SalesInvHdrL.RESET();
SalesInvHdrL.SETCURRENTKEY("Service Order No.");
SalesInvHdrL.SETRANGE("Service Order No.",ServiceLineP."Document No.");
SalesInvHdrL.SETRANGE("Bill-to Customer No.",WarrantyClaimHdrP."Bill-to
Customer No.");
IF SalesInvHdrL.FIND('-') THEN
REPEAT
SalesInvLineL.RESET;
SalesInvLineL.SETCURRENTKEY("Service Order No.","Service Order Line
No.");
SalesInvLineL.SETRANGE("Service Order No.",ServiceLineP."Document No.");
SalesInvLineL.SETRANGE("Service Order Line No.",ServiceLineP."Line No.");
SalesInvLineL.SETRANGE("Document No.",SalesInvHdrL."No.");
IF SalesInvLineL.FIND('+') THEN BEGIN
WarrantyClaimLineL."Serv. Invoice Line No." := SalesInvLineL."Line
No.";
WarrManagementUnitL.WarrLineSalesInvLine2(WarrantyClaimLineL,
SalesInvLineL);
FoundL := TRUE;
END;
UNTIL (SalesInvHdrL.NEXT = 0) OR FoundL;
// Stop PA031177
ServLineCustL.GET(ServiceLineP."Document Type",ServiceLineP."Document
No.",ServiceLineP."Line No.",
WarrantyClaimHdrP."Bill-to Customer No.");
WarrantyClaimLineL."Manufacturer Portion %" := ServLineCustL."Portion %";

// Start PA030402
IF NOT WarrantyClaimLineL.INSERT(TRUE) THEN
WarrantyClaimLineL.MODIFY(TRUE);
// Stop PA030402

IF WarrantyClaimLineL."No Charge" THEN BEGIN


WarrantyClaimLineL.VALIDATE(WarrantyClaimLineL.Quantity);
END;

// WarrantyClaimLineL.VALIDATE("Submitted Amount (LCY)",VwClaimLineP.Amount);


IF WarrantyClaimLineL."Manufacturer Portion %" > 0 THEN BEGIN
WarrantyClaimLineL.VALIDATE(Amount, (VwClaimLineP.Amount /
WarrantyClaimLineL."Manufacturer Portion %" * 100));
END;
WarrantyClaimLineL.MODIFY;
END;

PROCEDURE SetClaimStatusClosed@1117700011(WarrantyNoP@1117700000 : Code[20]);


VAR
VwClaimHdrL@1117700001 : Record 5117751;
StatusL@1117700002 : 'Deleted,Closed,Cancelled';
BEGIN
// @ Function to set the status of a Warranty Claim to Closed by running
Codeunit 5117749 VW BB Send ClaimStatus Closed
// @ param WarrantyNoP of type Code length 20 - Document No of the Warranty
Claim.

VwClaimHdrL.RESET;
VwClaimHdrL.SETRANGE("Document Type",VwClaimHdrL."Document Type"::"Warranty
Claim");
VwClaimHdrL.SETRANGE("Document No.",WarrantyNoP);
VwClaimHdrL.SETRANGE(Status,VwClaimHdrL.Status::New);

IF VwClaimHdrL.FIND('-') THEN
REPEAT
// Start PA033323
// Start PA034550.I001230
COMMIT;
IF NOT CODEUNIT.RUN(CODEUNIT::"VW BB Send ClaimStatus
Closed",VwClaimHdrL) THEN BEGIN
MESSAGE(C_INC006,VwClaimHdrL."Claim No.");
// Stop PA034550.I001230
END;
// Stop PA033323
UNTIL VwClaimHdrL.NEXT = 0;
END;

PROCEDURE CreateSubmittedClaim@1117700001(VwWarrantyHdrP@1117700001 : Record


5117750;VwClaimHdrP@1117700000 : Record 5117751);
VAR
SubmWarrantyHdrL@1117700002 : Record 5025798;
VwClaimHdrL@1117700005 : Record 5117751;
VwClaimLineL@1117700006 : Record 5117752;
VwClaimLineL1@1117700007 : Record 5117752;
VwWarrantyHdrL@1117700004 : Record 5117750;
WarrantyHdrL@1117700003 : Record 5025790;
BEGIN
// @ Function to create a submitted Warranty Claim by running Codeunit
5117753 VW Submit Warranty.
// @ param VwWarrantyHdrP of type Record from Table 5117750 VW Warranty
Header
// @ param VwClaimHdrP of type Record from Table 5117751 VW Claim Header

SubmWarrantyHdrL.RESET;
SubmWarrantyHdrL.SETCURRENTKEY("Claim No.","Make Code");
SubmWarrantyHdrL.SETRANGE("Claim No.",VwWarrantyHdrP."Document No.");
SubmWarrantyHdrL.SETRANGE("Make Code",VwWarrantyHdrP."Make Code");
IF NOT SubmWarrantyHdrL.FIND('-') THEN BEGIN
WarrantyHdrL.GET(VwWarrantyHdrP."Make Code",VwWarrantyHdrP."Document No.");
CODEUNIT.RUN(CODEUNIT::"VW Submit Warranty",WarrantyHdrL);
WarrantyHdrL.Status := WarrantyHdrL.Status::"Submitted/Transf. to Cockpit";
WarrantyHdrL.MODIFY;
SubmWarrantyHdrL.GET(WarrantyHdrL."Make Code",WarrantyHdrL."Submission
No.");

VwWarrantyHdrL := VwWarrantyHdrP;
VwWarrantyHdrL."Document Type" := VwWarrantyHdrL."Document
Type"::"Submitted Claim";
VwWarrantyHdrL."Document No." := SubmWarrantyHdrL."No.";
VwWarrantyHdrL.INSERT;
END ELSE
VwWarrantyHdrL.GET(VwWarrantyHdrL."Document Type"::"Submitted
Claim",SubmWarrantyHdrL."No.");

// Copy Findings
VwClaimHdrL := VwClaimHdrP;
VwClaimHdrL."Document Type" := VwWarrantyHdrL."Document Type";
VwClaimHdrL."Document No." := VwWarrantyHdrL."Document No.";
VwClaimHdrL.INSERT;

VwClaimLineL.RESET;
VwClaimLineL.SETRANGE("Document Type",VwClaimHdrP."Document Type");
VwClaimLineL.SETRANGE("Document No.",VwClaimHdrP."Document No.");
VwClaimLineL.SETRANGE("Claim No.",VwClaimHdrP."Claim No.");
IF VwClaimLineL.FIND('-') THEN
REPEAT
VwClaimLineL1 := VwClaimLineL;
VwClaimLineL1."Document Type" := VwClaimHdrL."Document Type";
VwClaimLineL1."Document No." := VwClaimHdrL."Document No.";
// Start PA041002
VwClaimLineL1.INSERT(TRUE);
// Stop PA041002
UNTIL VwClaimLineL.NEXT = 0;
END;

PROCEDURE AlignServiceLine@1117900000(VwClaimLineP@1117900000 : Record


5117752);
VAR
MakeL@1117900006 : Record 12;
ServiceHeaderL@1117900004 : Record 5025624;
ServiceLineL@1117900001 : Record 5025625;
ServiceLineL1@1117900008 : Record 5025625;
ServiceLineCustL@1117900007 : Record 5025639;
VwClaimHdrL@1117900003 : Record 5117751;
VwClaimLineL@1117900005 : Record 5117752;
GLSetupL@1119418002 : Record 98;
ServiceMgmtL@1119418001 : Codeunit 5025614;
BillCustomerL@1117900009 : Code[20];
IntCustomerL@1117900013 : Code[20];
RestAmountL@1117900010 : Decimal;
NewAmountL@1117900012 : Decimal;
PercentL@1117900011 : Decimal;
RestPercentL@1117900014 : Decimal;
LineNoL@1117900015 : Integer;
CalcPercentCommaL@1119418000 : Decimal;
BEGIN
// @ Function to align Service Line with the Claim Line
// @ param VwClaimLineP of type Record from Table 5117752 VW Claim Line

IF VwClaimLineP."Alignment Done" THEN


EXIT;

IF VwClaimLineP."Document Type" <> VwClaimLineP."Document Type"::Order THEN


// Start PA031416
ERROR(C_INC005);
// Stop PA031416

VwClaimHdrL.GET(VwClaimLineP."Document Type",VwClaimLineP."Document
No.",VwClaimLineP."Claim No.");
VwClaimHdrL.TESTFIELD("Claim Type");

ServiceHeaderL.GET(ServiceHeaderL."Document
Type"::Order,VwClaimLineP."Document No.");
MakeL.GET(ServiceHeaderL."Make Code");
IF MakeL."Factory Warranty Customer" <> ServiceHeaderL."Bill-to Customer No."
THEN
BillCustomerL := ServiceHeaderL."Bill-to Customer No."
ELSE
BillCustomerL := ServiceHeaderL."Sell-to Customer No.";

// Start PA029950
IF (VwClaimLineP."Service Line No." <> 0) AND
(NOT ServiceLineL.GET(ServiceLineL."Document
Type"::Order,VwClaimLineP."Document No.",VwClaimLineP."Service Line No."))
THEN BEGIN
// Stop PA029950
ServiceLineL.RESET;
ServiceLineL.SETRANGE("Document Type", ServiceHeaderL."Document Type");
ServiceLineL.SETRANGE("Document No.", ServiceHeaderL."No.");
IF ServiceLineL.FIND('+') THEN
ServiceLineL."Line No." += 10000
ELSE
ServiceLineL."Line No." := 10000;
// Start PA029950
IF VwClaimLineP."Service Line No." <> 0 THEN
ServiceLineL."Line No." := VwClaimLineP."Service Line No.";
// Stop PA029950
ServiceLineL.INIT;
ServiceLineL."Document Type" := ServiceHeaderL."Document Type";
ServiceLineL.VALIDATE("Document No.", ServiceHeaderL."No.");

// Start PA032393
ServiceLineL.Type := VwClaimLineP."Line Type";
ServiceLineL.INSERT(TRUE);
// Stop PA032393
ServiceLineL."Make Code" := ServiceHeaderL."Make Code";
ServiceLineL."Data Make Code" := ServiceHeaderL."Make Code";
ServiceLineL."Find No." := FALSE;
ServiceLineL.VALIDATE("No.", VwClaimLineP."No.");
ServiceLineL.VALIDATE(Quantity, VwClaimLineP.Quantity);
ServiceLineL.VALIDATE("Bill-to Customer No.");
ServiceLineL."Package No." := VwClaimLineP."Package No.";
ServiceLineL."Package Version No." := VwClaimLineP."Package Version No.";
ServiceLineL."Find No." := TRUE;
END;

IF VwClaimLineP."Service Line No." <> 0 THEN


ServiceLineL1 := ServiceLineL;

IF VwClaimHdrL."Claim Type" = VwClaimHdrL."Claim Type"::Warranty THEN


ServiceLineL.VALIDATE("Bill-to Customer No.",MakeL."Factory Warranty
Customer")
ELSE
// Start PA031932
IF VwClaimHdrL."Fair Deal % Internal Customer" <100 THEN
ServiceLineL.VALIDATE("Bill-to Customer No.",BillCustomerL)
ELSE
ServiceLineL.VALIDATE("Bill-to Customer No.",MakeL."Factory Warranty
Customer");
// Stop PA031932

IF VwClaimLineP."Service Line No." = 0 THEN


ServiceLineL1 := ServiceLineL;

IF ServiceLineL.Quantity <> VwClaimLineP.Quantity THEN


ServiceLineL.VALIDATE(Quantity,VwClaimLineP.Quantity);

IF ServiceLineL."Unit Price" <> ServiceLineL1."Unit Price" THEN


ServiceLineL.VALIDATE("Unit Price",ServiceLineL1."Unit Price");
IF VwClaimHdrL."Claim Type" = VwClaimHdrL."Claim Type"::Warranty THEN BEGIN
IF VwClaimLineP."Line Type" = VwClaimLineP."Line Type" ::Item THEN
//PA037397
ServiceLineL.VALIDATE(Amount,VwClaimLineP.Amount);
IF VwClaimLineP."Line Type" = VwClaimLineP."Line Type" ::Labor THEN
//PA037397
ServiceLineL.VALIDATE(Amount, VwClaimLineP."Amount Excl. Service
Tax"); //PA037397
ServiceLineL.VALIDATE("Fair Deal",FALSE);
// Start PA031146
// Start PA031416
GLSetupL.GET();
ServiceLineL."Charging Price" := ROUND(ServiceLineL.Amount /
ServiceLineL.Quantity,GLSetupL."Calculation Rounding Precision");
// Stop PA031416
IF (ServiceLineL."Charging Price" <> 0) AND (ServiceLineL."Unit Price" <>
0) THEN
CalcPercentCommaL := ServiceLineL."Charging Price"/ServiceLineL."Unit
Price";
ServiceLineL."Line Discount %" := (1 - CalcPercentCommaL) * 100;
// Stop PA031146
// Start PA031416
ServiceMgmtL.ServCustAmtsMatching(ServiceLineL);
// Stop PA031416
END ELSE BEGIN
IF VwClaimHdrL."Fair Deal % External Customer" + VwClaimHdrL."Fair Deal %
Internal Customer" = 0 THEN
VwClaimHdrL."Fair Deal % External Customer" := 100;
IF VwClaimLineP."Line Type" = VwClaimLineP."Line Type" ::Item THEN
//PA037397
RestAmountL := ServiceLineL.Amount - VwClaimLineP.Amount;
IF VwClaimLineP."Line Type" = VwClaimLineP."Line Type" ::Labor THEN
//PA037397
RestAmountL := ServiceLineL.Amount - VwClaimLineP."Amount Excl. Service
Tax"; //PA037397

// Split Warranty Customer


IF VwClaimLineP."Line Type" = VwClaimLineP."Line Type" ::Item THEN
//PA037397
PercentL := VwClaimLineP.Amount / ServiceLineL.Amount * 100;
IF VwClaimLineP."Line Type" = VwClaimLineP."Line Type" ::Labor THEN
//PA037397
PercentL := VwClaimLineP."Amount Excl. Service Tax" / ServiceLineL.Amount
* 100; //PA037397
PercentL := ROUND(PercentL,0.00001);
RestPercentL := 100 - PercentL;
// Start PA031932
IF NOT ServiceLineCustL.GET(ServiceLineL."Document
Type",ServiceLineL."Document No.",ServiceLineL."Line No.",
MakeL."Factory Warranty Customer")
THEN BEGIN
ServiceLineCustL.INIT;
ServiceLineCustL."Document Type" := ServiceLineL."Document Type";
ServiceLineCustL."Document No." := ServiceLineL."Document No.";
ServiceLineCustL."Document Line No." := ServiceLineL."Line No.";
ServiceLineCustL.VALIDATE("Bill-to Customer No.", MakeL."Factory Warranty
Customer");
ServiceLineCustL.INSERT;
END;
// Stop PA031932
IF ServiceLineCustL."Consider Price Calculation" THEN
ServiceLineCustL.VALIDATE("Consider Price Calculation",FALSE);
IF VwClaimLineP."Line Type" = VwClaimLineP."Line Type" ::Item THEN
//PA037397
ServiceLineCustL.Amount := VwClaimLineP.Amount;
IF VwClaimLineP."Line Type" = VwClaimLineP."Line Type" ::Labor THEN
//PA037397
ServiceLineCustL.Amount := VwClaimLineP."Amount Excl. Service Tax";
//PA037397
ServiceLineCustL."Portion %" := PercentL;
ServiceLineCustL.UpdateAmounts(ServiceLineL);
ServiceLineCustL.MODIFY;

// Split Internal Customer from Location


IntCustomerL := GetInternalCustomer(ServiceHeaderL."Location Code");
IF VwClaimHdrL."Fair Deal % Internal Customer" > 0 THEN BEGIN
IF VwClaimHdrL."Fair Deal % External Customer" > 0 THEN BEGIN
NewAmountL := RestAmountL * VwClaimHdrL."Fair Deal % Internal Customer"
/ 100;
PercentL := NewAmountL / ServiceLineL.Amount * 100;
PercentL := ROUND(PercentL,0.00001);
END
ELSE BEGIN
NewAmountL := RestAmountL;
PercentL := RestPercentL;
END;
RestAmountL -= NewAmountL;
RestPercentL -= PercentL;
// Start PA031932
IF NOT ServiceLineCustL.GET(ServiceLineL."Document
Type",ServiceLineL."Document No.",ServiceLineL."Line No.",IntCustomerL)
THEN BEGIN
ServiceLineCustL.INIT;
ServiceLineCustL."Document Type" := ServiceLineL."Document Type";
ServiceLineCustL."Document No." := ServiceLineL."Document No.";
ServiceLineCustL."Document Line No." := ServiceLineL."Line No.";
ServiceLineCustL.VALIDATE("Bill-to Customer No.", IntCustomerL);
ServiceLineCustL.INSERT;
END;
// Stop PA031932
ServiceLineCustL.Amount := NewAmountL;
ServiceLineCustL."Portion %" := PercentL;
ServiceLineCustL.UpdateAmounts(ServiceLineL);
ServiceLineCustL.MODIFY;
END;

// Split External Customer


// Start PA031932
IF ServiceLineCustL.GET(ServiceLineL."Document Type",ServiceLineL."Document
No.",ServiceLineL."Line No.",BillCustomerL)
THEN BEGIN
ServiceLineCustL.Amount := RestAmountL;
ServiceLineCustL."Portion %" := RestPercentL;
ServiceLineCustL.UpdateAmounts(ServiceLineL);
ServiceLineCustL.MODIFY;
END;
// Stop PA031932
ServiceLineL."Fair Deal" := TRUE;
END;

// Start PA029950
ServiceLineL.Blocked := TRUE;
// Stop PA029950
ServiceLineL.MODIFY;

VwClaimLineL.RESET;
VwClaimLineL.SETRANGE("Document Type",VwClaimLineP."Document Type");
VwClaimLineL.SETRANGE("Document No.",VwClaimLineP."Document No.");
VwClaimLineL.SETRANGE("Claim No.",0);
VwClaimLineL.SETRANGE("Service Line No.",VwClaimLineP."Service Line No.");
IF NOT VwClaimLineL.FIND('-') THEN BEGIN
VwClaimLineL.RESET;
VwClaimLineL.SETRANGE("Document Type",VwClaimHdrL."Document Type");
VwClaimLineL.SETRANGE("Document No.",VwClaimHdrL."Document No.");
VwClaimLineL.SETRANGE("Claim No.",0);
VwClaimLineL.FIND('+');
VwClaimLineL.INIT;

VwClaimLineL."Document Type" := VwClaimHdrL."Document Type";


VwClaimLineL."Document No." := VwClaimHdrL."Document No.";
VwClaimLineL."Claim No." := 0;
VwClaimLineL."Line No." += 1;
VwClaimLineL."Line Type" := ServiceLineL.Type;
VwClaimLineL."No." := ServiceLineL."No.";
VwClaimLineL.Description := ServiceLineL.Description;
VwClaimLineL.Quantity := ServiceLineL.Quantity;
VwClaimLineL."Orig. Quantity" := ServiceLineL.Quantity;
VwClaimLineL."Unit Price" := ServiceLineL."Unit Price";
VwClaimLineL."Orig. Unit Price" := ServiceLineL."Unit Price";
VwClaimLineL.Amount := ServiceLineL.Amount;
VwClaimLineL."Orig. Amount" := ServiceLineL.Amount;
VwClaimLineL."Make Code" := ServiceLineL."Make Code";
VwClaimLineL."Service Line No." := ServiceLineL."Line No.";
// Start PA041002
VwClaimLineL.INSERT(TRUE);
// Stop PA041002
VwClaimLineP."Service Line No." := VwClaimLineL."Service Line No.";
VwClaimLineP."Orig. Quantity" := VwClaimLineL."Orig. Quantity";
VwClaimLineP."Orig. Unit Price" := VwClaimLineL."Orig. Unit Price";
VwClaimLineP."Orig. Amount" := VwClaimLineL."Orig. Amount";
END;

VwClaimLineP."Alignment Done" := TRUE;


// Start PA041002
VwClaimLineP.MODIFY(TRUE);
VwClaimLineL."Alignment Done" := TRUE;
VwClaimLineL.MODIFY(TRUE);
// Stop PA041002
END;

PROCEDURE CompleteAlignment@1117900001(VwWarrantyHdrP@1117900000 : Record


5117750);
VAR
MakeL@1117900005 : Record 12;
ServiceHdrL@1117900004 : Record 5025624;
ServiceLineL@1117900003 : Record 5025625;
VwClaimHdrL@1117900001 : Record 5117751;
VwClaimLineL@1117900002 : Record 5117752;
BillCustomerL@1117900006 : Code[20];
BEGIN
// @ Finalize alignment of Service Line with Claim Line
// @ param VwWarrantyHdrP of type Record from Table 5117750 VW Warranty
Header

VwWarrantyHdrP.TESTFIELD("Document Type",VwWarrantyHdrP."Document
Type"::Order);
VwWarrantyHdrP.CALCFIELDS("Alignment Done");
IF NOT VwWarrantyHdrP."Alignment Done" THEN
EXIT;

// Start PA029950
VwWarrantyHdrP.CALCFIELDS("Received Claims");
IF VwWarrantyHdrP."Expected Claims" <> VwWarrantyHdrP."Received Claims" THEN
EXIT;
// Stop PA029950
VwClaimHdrL.GET(VwWarrantyHdrP."Document Type",VwWarrantyHdrP."Document
No.",0);
VwClaimHdrL.CALCFIELDS("Alignment Done");
IF VwClaimHdrL."Alignment Done" THEN
EXIT;

ServiceHdrL.GET(ServiceHdrL."Document Type"::Order,VwWarrantyHdrP."Document
No.");
MakeL.GET(ServiceHdrL."Make Code");
MakeL.TESTFIELD("Factory Warranty Customer");
IF MakeL."Factory Warranty Customer" <> ServiceHdrL."Bill-to Customer No."
THEN
BillCustomerL := ServiceHdrL."Bill-to Customer No."
ELSE
BillCustomerL := ServiceHdrL."Sell-to Customer No.";

VwClaimLineL.RESET;
VwClaimLineL.SETRANGE("Document Type",VwClaimHdrL."Document Type");
VwClaimLineL.SETRANGE("Document No.",VwClaimHdrL."Document No.");
VwClaimLineL.SETRANGE("Claim No.",VwClaimHdrL."Claim No.");
VwClaimLineL.SETRANGE("Alignment Done",FALSE);
IF VwClaimLineL.FIND('-') THEN
REPEAT
ServiceLineL.GET(ServiceLineL."Document
Type"::Order,VwClaimLineL."Document No.",VwClaimLineL."Service Line No.");
ServiceLineL.VALIDATE("Bill-to Customer No.",BillCustomerL);
ServiceLineL."Fair Deal" := FALSE;
// Start PA029950
ServiceLineL.Blocked := FALSE;
// Stop PA029950
ServiceLineL.MODIFY;
UNTIL VwClaimLineL.NEXT = 0;
// Start PA041002
VwClaimLineL.MODIFYALL("Alignment Done",TRUE, TRUE);
// Stop PA041002
VwClaimLineL.RESET;
VwClaimLineL.SETRANGE("Document Type",VwClaimLineL."Document Type"::Order);
VwClaimLineL.SETRANGE("Document No.",VwClaimHdrL."Document No.");
VwClaimLineL.SETRANGE("Claim No.",0);
ServiceLineL.RESET;
ServiceLineL.SETRANGE("Document Type",ServiceHdrL."Document Type");
ServiceLineL.SETRANGE("Document No.",ServiceHdrL."No.");
ServiceLineL.SETRANGE(Type,ServiceLineL.Type::Item,ServiceLineL.Type::"Ext.
Service");
IF ServiceLineL.FIND('-') THEN
REPEAT
VwClaimLineL.SETRANGE("Service Line No.",ServiceLineL."Line No.");
IF NOT VwClaimLineL.FIND('-') THEN BEGIN
IF ServiceLineL."Fair Deal" OR (ServiceLineL."Bill-to Customer No." =
MakeL."Factory Warranty Customer") THEN BEGIN
IF ServiceLineL."Fair Deal" THEN
ServiceLineL.VALIDATE("Fair Deal",FALSE);
IF ServiceLineL."Bill-to Customer No." = MakeL."Factory Warranty
Customer" THEN
ServiceLineL.VALIDATE("Bill-to Customer No.",BillCustomerL);
ServiceLineL.MODIFY;
END;
END;
UNTIL ServiceLineL.NEXT = 0;
END;

PROCEDURE GetInternalCustomer@33(VAR LocationP@1109400000 : Code[10])


IntCustomerNoR : Code[20];
VAR
CompanyInfoL@1117900000 : Record 79;
LocationL@1109400001 : Record 14;
BEGIN
// @ Function to get internal customer for a given Location.
// @ param LocationP of type Code length 10
// @ retval IntCustomerNoR of type Code length 20

CompanyInfoL.GET;
IntCustomerNoR := CompanyInfoL."Internal Customer";
IF LocationP <> '' THEN BEGIN
IF LocationL.GET(LocationP) THEN
IF LocationL."Internal Customer" <> '' THEN
IntCustomerNoR := LocationL."Internal Customer";
END;
END;

PROCEDURE CreateWarrantyJob@11(WarrantyHdrP@1117900000 : Record 5025790);


VAR
ServJobLineL@1109400001 : Record 5025627;
ServJobLineL1@1117900001 : Record 5025627;
BEGIN
// @ Function to create a Service Job Line of type Warranty
// @ param WarrantyHdrP of type Record from Table 5025790 Warranty Claim
Header

ServJobLineL.RESET;
ServJobLineL.SETRANGE("Document Type", ServJobLineL."Document Type"::Order);
ServJobLineL.SETRANGE("Document No.", WarrantyHdrP."Service Order No.");
IF ServJobLineL.FIND('-') THEN
REPEAT
ServJobLineL1.INIT;
ServJobLineL1 := ServJobLineL;
ServJobLineL1."Document Type" := ServJobLineL1."Document Type"::Warranty;
ServJobLineL1."Document No." := WarrantyHdrP."No.";
ServJobLineL1.INSERT;
UNTIL ServJobLineL.NEXT = 0
END;

PROCEDURE CreateWarrantyPackage@12(WarrantyHdrP@1117900000 : Record 5025790);


VAR
ServPkgLineL@1109400001 : Record 5025635;
ServPkgLineL1@1117900001 : Record 5025635;
BEGIN
// @ Function to create a Service Package Line of type Warranty
// @ param WarrantyHdrP of type Record from Table 5025790 Warranty Claim
Header

ServPkgLineL.RESET;
ServPkgLineL.SETRANGE("Document Type",ServPkgLineL."Document Type"::Order);
ServPkgLineL.SETRANGE("Document No.", WarrantyHdrP."Service Order No.");
IF ServPkgLineL.FIND('-') THEN
REPEAT
ServPkgLineL1.INIT;
ServPkgLineL1 := ServPkgLineL;
ServPkgLineL1."Document Type" := ServPkgLineL."Document Type"::Warranty;
ServPkgLineL1."Document No." := WarrantyHdrP."No.";
ServPkgLineL1.INSERT;
UNTIL ServPkgLineL.NEXT = 0
END;

BEGIN
{
// @ VW Make specific Warranty Finding Codeunit, setup in Service - Setup -
VW - Make Setup - Warranty
// @ Area VW, SAGA2

+----------------------------------------------+
| Copyright (c) incadea |
+----------------------------------------------+
PA-Number Date
------------------------------------------------
PA029950 04.03.08 New
PA029950 04.03.08 Several Bugfixes
PA030402 08.09.08 Bugfix for Function AddWarrantyLine
PA031146 15.05.09 Additional code in trigger "AlignServiceLine" in order
to re-calculate
the Charging Price.
PA031177 04.06.09 Bugfix in function AddWarrantyLine to find the correct
Posted Sales Invoice Line in case of multiple Invoices
posted for a Service Order.
PA031416 16.10.09 Line discount will be considered in service invoice
after the "Service Order Alignment" is done if the received
price and the original price is different.
- The "Calculation Rounding Precision" field is used
from "General Ledger Setup" table instead of hard coded
value .01 in function AlignServiceLine().
- Local Text Constants from functions
ServHdrModifyTrigger(), ServiceLineModify(), CheckServLineDeletion(),
AlignServiceLine() are moved to Global Text Constants.
PA031932 01.06.10 Function AlignServiceLine changed that no obsolete
Service Line Customer records are created
PA032130 18.08.10 GM Function AddWarrantyLine changed that Lines are not
overwritten any more
PA032393 26.01.11 GM Function AlignServiceLine changed that the Unit Price
is filled correctly
PA033323 18.06.12 DT Call of SetClaimStatus with Commit-Parameter to avoid
deadlock-situation
PA033324 31.07.12 SM Import of FRA, RUS and ESP translations.
PA034054 13.02.13 TS VW IML - incaDoc Tags.
PA034550 09.07.13 SM I001230: Added correct calling of the codeunit "VW BB
Send ClaimStatus Closed".
PA037397 30.01.15 Code has been added in function "AlignServiceLine".
PA035879 23.06.13 SM Calling of functions for VW BB Subscription.
PA041002 07.12.16 SW Added code for Trigerring WMS
}
END.
}
}

You might also like