diff --git a/.github/AL-Go-Settings.json b/.github/AL-Go-Settings.json
index 379ec9f4f4..e222666964 100644
--- a/.github/AL-Go-Settings.json
+++ b/.github/AL-Go-Settings.json
@@ -5,7 +5,7 @@
"runs-on": "windows-latest",
"cacheImageName": "",
"UsePsSession": false,
- "artifact": "https://bcinsider-fvh2ekdjecfjd6gk.b02.azurefd.net/sandbox/25.0.20906.0/base",
+ "artifact": "https://bcinsider-fvh2ekdjecfjd6gk.b02.azurefd.net/sandbox/25.0.21703.0/base",
"country": "base",
"useProjectDependencies": true,
"repoVersion": "25.0",
diff --git a/Apps/CH/SwissQRBill/app/src/purchases/SwissQRBillCreateVendBank.Page.al b/Apps/CH/SwissQRBill/app/src/purchases/SwissQRBillCreateVendBank.Page.al
index 2faeae0098..10b0bb38d2 100644
--- a/Apps/CH/SwissQRBill/app/src/purchases/SwissQRBillCreateVendBank.Page.al
+++ b/Apps/CH/SwissQRBill/app/src/purchases/SwissQRBillCreateVendBank.Page.al
@@ -69,14 +69,14 @@ page 11502 "Swiss QR-Bill Create Vend Bank"
TestField(Code);
end;
- internal procedure SetDetails(VendorBankAccount: Record "Vendor Bank Account")
+ procedure SetDetails(VendorBankAccount: Record "Vendor Bank Account")
begin
if Delete() then;
TransferFields(VendorBankAccount);
Insert();
end;
- internal procedure GetDetails(var VendorBankAccount: Record "Vendor Bank Account")
+ procedure GetDetails(var VendorBankAccount: Record "Vendor Bank Account")
begin
VendorBankAccount := Rec;
end;
diff --git a/Apps/CZ/AdvancePaymentsLocalization/app/Src/Codeunits/NavigateHandlerCZZ.Codeunit.al b/Apps/CZ/AdvancePaymentsLocalization/app/Src/Codeunits/NavigateHandlerCZZ.Codeunit.al
index 00a25a9c48..aa85214925 100644
--- a/Apps/CZ/AdvancePaymentsLocalization/app/Src/Codeunits/NavigateHandlerCZZ.Codeunit.al
+++ b/Apps/CZ/AdvancePaymentsLocalization/app/Src/Codeunits/NavigateHandlerCZZ.Codeunit.al
@@ -42,8 +42,8 @@ codeunit 31007 "Navigate Handler CZZ"
end;
end;
- [EventSubscriber(ObjectType::Page, Page::Navigate, 'OnAfterNavigateShowRecords', '', true, false)]
- local procedure NavigateOnAfterNavigateShowRecords(var TempDocumentEntry: Record "Document Entry"; DocNoFilter: Text; PostingDateFilter: Text)
+ [EventSubscriber(ObjectType::Page, Page::Navigate, 'OnBeforeShowRecords', '', true, false)]
+ local procedure NavigateOnBeforeShowRecords(var TempDocumentEntry: Record "Document Entry"; DocNoFilter: Text; PostingDateFilter: Text; var IsHandled: Boolean)
var
SalesAdvLetterEntryCZZ: Record "Sales Adv. Letter Entry CZZ";
PurchAdvLetterEntryCZZ: Record "Purch. Adv. Letter Entry CZZ";
@@ -54,12 +54,14 @@ codeunit 31007 "Navigate Handler CZZ"
SalesAdvLetterEntryCZZ.SetFilter("Document No.", DocNoFilter);
SalesAdvLetterEntryCZZ.SetFilter("Posting Date", PostingDateFilter);
Page.Run(0, SalesAdvLetterEntryCZZ);
+ IsHandled := true;
end;
Database::"Purch. Adv. Letter Entry CZZ":
begin
PurchAdvLetterEntryCZZ.SetFilter("Document No.", DocNoFilter);
PurchAdvLetterEntryCZZ.SetFilter("Posting Date", PostingDateFilter);
Page.Run(0, PurchAdvLetterEntryCZZ);
+ IsHandled := true;
end;
end;
end;
diff --git a/Apps/CZ/AdvancePaymentsLocalization/app/Src/Codeunits/PurchAdvLetterPostCZZ.Codeunit.al b/Apps/CZ/AdvancePaymentsLocalization/app/Src/Codeunits/PurchAdvLetterPostCZZ.Codeunit.al
index d6ee9a42a3..401851eab9 100644
--- a/Apps/CZ/AdvancePaymentsLocalization/app/Src/Codeunits/PurchAdvLetterPostCZZ.Codeunit.al
+++ b/Apps/CZ/AdvancePaymentsLocalization/app/Src/Codeunits/PurchAdvLetterPostCZZ.Codeunit.al
@@ -128,8 +128,8 @@ codeunit 31142 "Purch. Adv. Letter-Post CZZ"
TempPurchAdvLetterEntryCZZGlob.InitNewEntry();
TempPurchAdvLetterEntryCZZGlob.InitVendorLedgerEntry(VendorLedgerEntryPayment);
TempPurchAdvLetterEntryCZZGlob.CopyFromGenJnlLine(GenJournalLine);
+ TempPurchAdvLetterEntryCZZGlob.CopyFromPurchAdvLetterHeader(PurchAdvLetterHeaderCZZ);
TempPurchAdvLetterEntryCZZGlob."Entry Type" := "Advance Letter Entry Type CZZ"::Payment;
- TempPurchAdvLetterEntryCZZGlob."Purch. Adv. Letter No." := PurchAdvLetterHeaderCZZ."No.";
EntryNo := TempPurchAdvLetterEntryCZZGlob.InsertNewEntry(not AdvancePostingParametersCZZ."Temporary Entries Only");
if not AdvancePostingParametersCZZ."Temporary Entries Only" then
@@ -218,8 +218,8 @@ codeunit 31142 "Purch. Adv. Letter-Post CZZ"
TempPurchAdvLetterEntryCZZGlob.InitVendorLedgerEntry(VendorLedgerEntry);
TempPurchAdvLetterEntryCZZGlob.InitRelatedEntry(PurchAdvLetterEntryCZZ);
TempPurchAdvLetterEntryCZZGlob.CopyFromGenJnlLine(GenJournalLine);
+ TempPurchAdvLetterEntryCZZGlob.CopyFromPurchAdvLetterHeader(PurchAdvLetterHeaderCZZ);
TempPurchAdvLetterEntryCZZGlob."Entry Type" := PurchAdvLetterEntryCZZ."Entry Type";
- TempPurchAdvLetterEntryCZZGlob."Purch. Adv. Letter No." := PurchAdvLetterHeaderCZZ."No.";
TempPurchAdvLetterEntryCZZGlob.Cancelled := true;
TempPurchAdvLetterEntryCZZGlob.InsertNewEntry(not AdvancePostingParametersCZZ."Temporary Entries Only");
@@ -335,8 +335,8 @@ codeunit 31142 "Purch. Adv. Letter-Post CZZ"
TempPurchAdvLetterEntryCZZGlob.InitNewEntry();
TempPurchAdvLetterEntryCZZGlob.InitRelatedEntry(PurchAdvLetterEntryCZZ);
TempPurchAdvLetterEntryCZZGlob.CopyFromGenJnlLine(GenJournalLine);
+ TempPurchAdvLetterEntryCZZGlob.CopyFromPurchAdvLetterHeader(PurchAdvLetterHeaderCZZ);
TempPurchAdvLetterEntryCZZGlob."Entry Type" := "Advance Letter Entry Type CZZ"::"VAT Payment";
- TempPurchAdvLetterEntryCZZGlob."Purch. Adv. Letter No." := PurchAdvLetterHeaderCZZ."No.";
TempPurchAdvLetterEntryCZZGlob."VAT Entry No." := VATEntryNo;
TempPurchAdvLetterEntryCZZGlob."VAT Identifier" := VATPostingSetup."VAT Identifier";
TempPurchAdvLetterEntryCZZGlob."Auxiliary Entry" := AdvancePostingBufferCZZ."Auxiliary Entry";
@@ -413,8 +413,8 @@ codeunit 31142 "Purch. Adv. Letter-Post CZZ"
TempPurchAdvLetterEntryCZZGlob.InitNewEntry();
TempPurchAdvLetterEntryCZZGlob.InitRelatedEntry(PurchAdvLetterEntryCZZ."Related Entry");
TempPurchAdvLetterEntryCZZGlob.CopyFromGenJnlLine(GenJournalLine);
+ TempPurchAdvLetterEntryCZZGlob.CopyFromPurchAdvLetterHeader(PurchAdvLetterHeaderCZZ);
TempPurchAdvLetterEntryCZZGlob."Entry Type" := "Advance Letter Entry Type CZZ"::"VAT Payment";
- TempPurchAdvLetterEntryCZZGlob."Purch. Adv. Letter No." := PurchAdvLetterHeaderCZZ."No.";
TempPurchAdvLetterEntryCZZGlob."VAT Entry No." := VATEntryNo;
TempPurchAdvLetterEntryCZZGlob."VAT Identifier" := VATPostingSetup."VAT Identifier";
TempPurchAdvLetterEntryCZZGlob."Auxiliary Entry" := AdvancePostingBufferCZZ."Auxiliary Entry";
@@ -638,6 +638,7 @@ codeunit 31142 "Purch. Adv. Letter-Post CZZ"
PurchAdvLetterHeaderCZZ.Get(PurchAdvLetterEntryCZZ."Purch. Adv. Letter No.");
PurchAdvLetterEntryCZZ2.Reset();
+ PurchAdvLetterEntryCZZ2.SetRange("Purch. Adv. Letter No.", PurchAdvLetterHeaderCZZ."No.");
PurchAdvLetterEntryCZZ2.SetRange("Document No.", PurchAdvLetterEntryCZZ."Document No.");
PurchAdvLetterEntryCZZ2.SetFilter("Entry Type", '%1|%2|%3',
PurchAdvLetterEntryCZZ2."Entry Type"::"VAT Adjustment",
@@ -788,8 +789,8 @@ codeunit 31142 "Purch. Adv. Letter-Post CZZ"
TempPurchAdvLetterEntryCZZGlob.InitNewEntry();
TempPurchAdvLetterEntryCZZGlob.InitRelatedEntry(PurchAdvLetterEntryCZZ."Related Entry");
TempPurchAdvLetterEntryCZZGlob.CopyFromGenJnlLine(GenJournalLine);
+ TempPurchAdvLetterEntryCZZGlob.CopyFromPurchAdvLetterHeader(PurchAdvLetterHeaderCZZ);
TempPurchAdvLetterEntryCZZGlob."Entry Type" := "Advance Letter Entry Type CZZ"::"VAT Payment";
- TempPurchAdvLetterEntryCZZGlob."Purch. Adv. Letter No." := PurchAdvLetterHeaderCZZ."No.";
TempPurchAdvLetterEntryCZZGlob."VAT Entry No." := VATEntryNo;
TempPurchAdvLetterEntryCZZGlob."VAT Identifier" := VATPostingSetup."VAT Identifier";
TempPurchAdvLetterEntryCZZGlob."Auxiliary Entry" := AdvancePostingBufferCZZ."Auxiliary Entry";
@@ -1025,8 +1026,8 @@ codeunit 31142 "Purch. Adv. Letter-Post CZZ"
TempPurchAdvLetterEntryCZZGlob.InitNewEntry();
TempPurchAdvLetterEntryCZZGlob.InitRelatedEntry(PurchAdvLetterEntryCZZ."Related Entry");
TempPurchAdvLetterEntryCZZGlob.CopyFromGenJnlLine(GenJournalLine);
+ TempPurchAdvLetterEntryCZZGlob.CopyFromPurchAdvLetterHeader(PurchAdvLetterHeaderCZZ);
TempPurchAdvLetterEntryCZZGlob."Entry Type" := PurchAdvLetterEntryCZZ."Entry Type";
- TempPurchAdvLetterEntryCZZGlob."Purch. Adv. Letter No." := PurchAdvLetterHeaderCZZ."No.";
TempPurchAdvLetterEntryCZZGlob."VAT Entry No." := VATEntryNo;
TempPurchAdvLetterEntryCZZGlob."VAT Identifier" := VATPostingSetup."VAT Identifier";
TempPurchAdvLetterEntryCZZGlob."Auxiliary Entry" := AdvancePostingBufferCZZ."Auxiliary Entry";
@@ -1109,8 +1110,8 @@ codeunit 31142 "Purch. Adv. Letter-Post CZZ"
TempPurchAdvLetterEntryCZZGlob.InitVendorLedgerEntry(VendorLedgerEntry);
TempPurchAdvLetterEntryCZZGlob.InitRelatedEntry(PurchAdvLetterEntryCZZ);
TempPurchAdvLetterEntryCZZGlob.CopyFromGenJnlLine(GenJournalLine);
+ TempPurchAdvLetterEntryCZZGlob.CopyFromPurchAdvLetterHeader(PurchAdvLetterHeaderCZZ);
TempPurchAdvLetterEntryCZZGlob."Entry Type" := PurchAdvLetterEntryCZZ."Entry Type";
- TempPurchAdvLetterEntryCZZGlob."Purch. Adv. Letter No." := PurchAdvLetterHeaderCZZ."No.";
TempPurchAdvLetterEntryCZZGlob.Cancelled := true;
EntryNo := TempPurchAdvLetterEntryCZZGlob.InsertNewEntry(not AdvancePostingParametersCZZ."Temporary Entries Only");
@@ -1269,8 +1270,8 @@ codeunit 31142 "Purch. Adv. Letter-Post CZZ"
TempPurchAdvLetterEntryCZZGlob.InitVendorLedgerEntry(VendorLedgerEntry2);
TempPurchAdvLetterEntryCZZGlob.InitRelatedEntry(PurchAdvLetterEntryCZZ);
TempPurchAdvLetterEntryCZZGlob.CopyFromGenJnlLine(GenJournalLine);
+ TempPurchAdvLetterEntryCZZGlob.CopyFromPurchAdvLetterHeader(PurchAdvLetterHeaderCZZ);
TempPurchAdvLetterEntryCZZGlob."Entry Type" := "Advance Letter Entry Type CZZ"::Close;
- TempPurchAdvLetterEntryCZZGlob."Purch. Adv. Letter No." := PurchAdvLetterHeaderCZZ."No.";
TempPurchAdvLetterEntryCZZGlob."Amount (LCY)" := -RemainingAmountLCY;
EntryNo := TempPurchAdvLetterEntryCZZGlob.InsertNewEntry(not AdvancePostingParametersCZZ."Temporary Entries Only");
end;
@@ -1416,8 +1417,8 @@ codeunit 31142 "Purch. Adv. Letter-Post CZZ"
TempPurchAdvLetterEntryCZZGlob.InitVendorLedgerEntry(VendorLedgerEntry2);
TempPurchAdvLetterEntryCZZGlob.InitRelatedEntry(PurchAdvLetterEntryCZZ);
TempPurchAdvLetterEntryCZZGlob.CopyFromGenJnlLine(GenJournalLine);
+ TempPurchAdvLetterEntryCZZGlob.CopyFromPurchAdvLetterHeader(PurchAdvLetterHeaderCZZ);
TempPurchAdvLetterEntryCZZGlob."Entry Type" := "Advance Letter Entry Type CZZ"::Usage;
- TempPurchAdvLetterEntryCZZGlob."Purch. Adv. Letter No." := PurchAdvLetterHeaderCZZ."No.";
EntryNo := TempPurchAdvLetterEntryCZZGlob.InsertNewEntry(not AdvancePostingParametersCZZ."Temporary Entries Only");
if PurchAdvLetterHeaderCZZ."Automatic Post VAT Usage" then begin
@@ -1540,8 +1541,8 @@ codeunit 31142 "Purch. Adv. Letter-Post CZZ"
TempPurchAdvLetterEntryCZZGlob.InitNewEntry();
TempPurchAdvLetterEntryCZZGlob.InitRelatedEntry(RelatedEntryNo);
TempPurchAdvLetterEntryCZZGlob.CopyFromGenJnlLine(GenJournalLine);
+ TempPurchAdvLetterEntryCZZGlob.CopyFromPurchAdvLetterHeader(PurchAdvLetterHeaderCZZ);
TempPurchAdvLetterEntryCZZGlob."Entry Type" := EntryType;
- TempPurchAdvLetterEntryCZZGlob."Purch. Adv. Letter No." := PurchAdvLetterHeaderCZZ."No.";
TempPurchAdvLetterEntryCZZGlob."VAT Entry No." := VATEntryNo;
TempPurchAdvLetterEntryCZZGlob."VAT Identifier" := VATPostingSetup."VAT Identifier";
TempPurchAdvLetterEntryCZZGlob."Auxiliary Entry" := AdvancePostingBufferCZZ."Auxiliary Entry";
@@ -1719,8 +1720,8 @@ codeunit 31142 "Purch. Adv. Letter-Post CZZ"
TempPurchAdvLetterEntryCZZGlob.InitNewEntry();
TempPurchAdvLetterEntryCZZGlob.InitRelatedEntry(RelatedEntryNo);
TempPurchAdvLetterEntryCZZGlob.CopyFromVATPostingSetup(VATPostingSetup);
+ TempPurchAdvLetterEntryCZZGlob.CopyFromPurchAdvLetterHeader(PurchAdvLetterHeaderCZZ);
TempPurchAdvLetterEntryCZZGlob."Entry Type" := "Advance Letter Entry Type CZZ"::"VAT Rate";
- TempPurchAdvLetterEntryCZZGlob."Purch. Adv. Letter No." := PurchAdvLetterHeaderCZZ."No.";
TempPurchAdvLetterEntryCZZGlob."Document No." := AdvancePostingParametersCZZ."Document No.";
TempPurchAdvLetterEntryCZZGlob."External Document No." := AdvancePostingParametersCZZ."External Document No.";
TempPurchAdvLetterEntryCZZGlob."Posting Date" := AdvancePostingParametersCZZ."Posting Date";
@@ -1816,8 +1817,8 @@ codeunit 31142 "Purch. Adv. Letter-Post CZZ"
TempPurchAdvLetterEntryCZZGlob.InitRelatedEntry(RelatedEntryNo);
TempPurchAdvLetterEntryCZZGlob.InitDetailedVendorLedgerEntry(RelatedDetEntryNo);
TempPurchAdvLetterEntryCZZGlob.CopyFromVATPostingSetup(VATPostingSetup);
+ TempPurchAdvLetterEntryCZZGlob.CopyFromPurchAdvLetterHeader(PurchAdvLetterHeaderCZZ);
TempPurchAdvLetterEntryCZZGlob."Entry Type" := "Advance Letter Entry Type CZZ"::"VAT Adjustment";
- TempPurchAdvLetterEntryCZZGlob."Purch. Adv. Letter No." := PurchAdvLetterHeaderCZZ."No.";
TempPurchAdvLetterEntryCZZGlob."Document No." := AdvancePostingParametersCZZ."Document No.";
TempPurchAdvLetterEntryCZZGlob."External Document No." := AdvancePostingParametersCZZ."External Document No.";
TempPurchAdvLetterEntryCZZGlob."Posting Date" := AdvancePostingParametersCZZ."Posting Date";
diff --git a/Apps/CZ/AdvancePaymentsLocalization/app/Src/Codeunits/SalesAdvLetterPostCZZ.Codeunit.al b/Apps/CZ/AdvancePaymentsLocalization/app/Src/Codeunits/SalesAdvLetterPostCZZ.Codeunit.al
index 9ed4f7ae42..aa20ebcd99 100644
--- a/Apps/CZ/AdvancePaymentsLocalization/app/Src/Codeunits/SalesAdvLetterPostCZZ.Codeunit.al
+++ b/Apps/CZ/AdvancePaymentsLocalization/app/Src/Codeunits/SalesAdvLetterPostCZZ.Codeunit.al
@@ -125,8 +125,8 @@ codeunit 31143 "Sales Adv. Letter-Post CZZ"
TempSalesAdvLetterEntryCZZGlob.InitNewEntry();
TempSalesAdvLetterEntryCZZGlob.InitCustLedgerEntry(CustLedgerEntryPayment);
TempSalesAdvLetterEntryCZZGlob.CopyFromGenJnlLine(GenJournalLine);
+ TempSalesAdvLetterEntryCZZGlob.CopyFromSalesAdvLetterHeader(SalesAdvLetterHeaderCZZ);
TempSalesAdvLetterEntryCZZGlob."Entry Type" := "Advance Letter Entry Type CZZ"::Payment;
- TempSalesAdvLetterEntryCZZGlob."Sales Adv. Letter No." := SalesAdvLetterHeaderCZZ."No.";
EntryNo := TempSalesAdvLetterEntryCZZGlob.InsertNewEntry(not AdvancePostingParametersCZZ."Temporary Entries Only");
if not AdvancePostingParametersCZZ."Temporary Entries Only" then
@@ -215,8 +215,8 @@ codeunit 31143 "Sales Adv. Letter-Post CZZ"
TempSalesAdvLetterEntryCZZGlob.InitCustLedgerEntry(CustLedgerEntry);
TempSalesAdvLetterEntryCZZGlob.InitRelatedEntry(SalesAdvLetterEntryCZZ);
TempSalesAdvLetterEntryCZZGlob.CopyFromGenJnlLine(GenJournalLine);
+ TempSalesAdvLetterEntryCZZGlob.CopyFromSalesAdvLetterHeader(SalesAdvLetterHeaderCZZ);
TempSalesAdvLetterEntryCZZGlob."Entry Type" := SalesAdvLetterEntryCZZ."Entry Type";
- TempSalesAdvLetterEntryCZZGlob."Sales Adv. Letter No." := SalesAdvLetterHeaderCZZ."No.";
TempSalesAdvLetterEntryCZZGlob.Cancelled := true;
TempSalesAdvLetterEntryCZZGlob.InsertNewEntry(not AdvancePostingParametersCZZ."Temporary Entries Only");
@@ -328,8 +328,8 @@ codeunit 31143 "Sales Adv. Letter-Post CZZ"
TempSalesAdvLetterEntryCZZGlob.InitNewEntry();
TempSalesAdvLetterEntryCZZGlob.InitRelatedEntry(SalesAdvLetterEntryCZZ);
TempSalesAdvLetterEntryCZZGlob.CopyFromGenJnlLine(GenJournalLine);
+ TempSalesAdvLetterEntryCZZGlob.CopyFromSalesAdvLetterHeader(SalesAdvLetterHeaderCZZ);
TempSalesAdvLetterEntryCZZGlob."Entry Type" := "Advance Letter Entry Type CZZ"::"VAT Payment";
- TempSalesAdvLetterEntryCZZGlob."Sales Adv. Letter No." := SalesAdvLetterHeaderCZZ."No.";
TempSalesAdvLetterEntryCZZGlob."VAT Entry No." := VATEntryNo;
TempSalesAdvLetterEntryCZZGlob."VAT Identifier" := VATPostingSetup."VAT Identifier";
TempSalesAdvLetterEntryCZZGlob."Auxiliary Entry" := AdvancePostingBufferCZZ."Auxiliary Entry";
@@ -406,8 +406,8 @@ codeunit 31143 "Sales Adv. Letter-Post CZZ"
TempSalesAdvLetterEntryCZZGlob.InitNewEntry();
TempSalesAdvLetterEntryCZZGlob.InitRelatedEntry(SalesAdvLetterEntryCZZ."Related Entry");
TempSalesAdvLetterEntryCZZGlob.CopyFromGenJnlLine(GenJournalLine);
+ TempSalesAdvLetterEntryCZZGlob.CopyFromSalesAdvLetterHeader(SalesAdvLetterHeaderCZZ);
TempSalesAdvLetterEntryCZZGlob."Entry Type" := "Advance Letter Entry Type CZZ"::"VAT Payment";
- TempSalesAdvLetterEntryCZZGlob."Sales Adv. Letter No." := SalesAdvLetterHeaderCZZ."No.";
TempSalesAdvLetterEntryCZZGlob."VAT Entry No." := VATEntryNo;
TempSalesAdvLetterEntryCZZGlob."VAT Identifier" := VATPostingSetup."VAT Identifier";
TempSalesAdvLetterEntryCZZGlob."Auxiliary Entry" := AdvancePostingBufferCZZ."Auxiliary Entry";
@@ -672,8 +672,8 @@ codeunit 31143 "Sales Adv. Letter-Post CZZ"
TempSalesAdvLetterEntryCZZGlob.InitNewEntry();
TempSalesAdvLetterEntryCZZGlob.InitRelatedEntry(SalesAdvLetterEntryCZZ."Related Entry");
TempSalesAdvLetterEntryCZZGlob.CopyFromGenJnlLine(GenJournalLine);
+ TempSalesAdvLetterEntryCZZGlob.CopyFromSalesAdvLetterHeader(SalesAdvLetterHeaderCZZ);
TempSalesAdvLetterEntryCZZGlob."Entry Type" := "Advance Letter Entry Type CZZ"::"VAT Payment";
- TempSalesAdvLetterEntryCZZGlob."Sales Adv. Letter No." := SalesAdvLetterHeaderCZZ."No.";
TempSalesAdvLetterEntryCZZGlob."VAT Entry No." := VATEntryNo;
TempSalesAdvLetterEntryCZZGlob."VAT Identifier" := VATPostingSetup."VAT Identifier";
TempSalesAdvLetterEntryCZZGlob."Auxiliary Entry" := AdvancePostingBufferCZZ."Auxiliary Entry";
@@ -899,8 +899,8 @@ codeunit 31143 "Sales Adv. Letter-Post CZZ"
TempSalesAdvLetterEntryCZZGlob.InitNewEntry();
TempSalesAdvLetterEntryCZZGlob.InitRelatedEntry(SalesAdvLetterEntryCZZ."Related Entry");
TempSalesAdvLetterEntryCZZGlob.CopyFromGenJnlLine(GenJournalLine);
+ TempSalesAdvLetterEntryCZZGlob.CopyFromSalesAdvLetterHeader(SalesAdvLetterHeaderCZZ);
TempSalesAdvLetterEntryCZZGlob."Entry Type" := SalesAdvLetterEntryCZZ."Entry Type";
- TempSalesAdvLetterEntryCZZGlob."Sales Adv. Letter No." := SalesAdvLetterHeaderCZZ."No.";
TempSalesAdvLetterEntryCZZGlob."VAT Entry No." := VATEntryNo;
TempSalesAdvLetterEntryCZZGlob."VAT Identifier" := VATPostingSetup."VAT Identifier";
TempSalesAdvLetterEntryCZZGlob."Auxiliary Entry" := AdvancePostingBufferCZZ."Auxiliary Entry";
@@ -983,8 +983,8 @@ codeunit 31143 "Sales Adv. Letter-Post CZZ"
TempSalesAdvLetterEntryCZZGlob.InitCustLedgerEntry(CustLedgerEntry);
TempSalesAdvLetterEntryCZZGlob.InitRelatedEntry(SalesAdvLetterEntryCZZ);
TempSalesAdvLetterEntryCZZGlob.CopyFromGenJnlLine(GenJournalLine);
+ TempSalesAdvLetterEntryCZZGlob.CopyFromSalesAdvLetterHeader(SalesAdvLetterHeaderCZZ);
TempSalesAdvLetterEntryCZZGlob."Entry Type" := SalesAdvLetterEntryCZZ."Entry Type";
- TempSalesAdvLetterEntryCZZGlob."Sales Adv. Letter No." := SalesAdvLetterHeaderCZZ."No.";
TempSalesAdvLetterEntryCZZGlob.Cancelled := true;
EntryNo := TempSalesAdvLetterEntryCZZGlob.InsertNewEntry(not AdvancePostingParametersCZZ."Temporary Entries Only");
@@ -1143,8 +1143,8 @@ codeunit 31143 "Sales Adv. Letter-Post CZZ"
TempSalesAdvLetterEntryCZZGlob.InitCustLedgerEntry(CustLedgerEntry2);
TempSalesAdvLetterEntryCZZGlob.InitRelatedEntry(SalesAdvLetterEntryCZZ);
TempSalesAdvLetterEntryCZZGlob.CopyFromGenJnlLine(GenJournalLine);
+ TempSalesAdvLetterEntryCZZGlob.CopyFromSalesAdvLetterHeader(SalesAdvLetterHeaderCZZ);
TempSalesAdvLetterEntryCZZGlob."Entry Type" := "Advance Letter Entry Type CZZ"::Close;
- TempSalesAdvLetterEntryCZZGlob."Sales Adv. Letter No." := SalesAdvLetterHeaderCZZ."No.";
TempSalesAdvLetterEntryCZZGlob."Amount (LCY)" := RemainingAmountLCY;
EntryNo := TempSalesAdvLetterEntryCZZGlob.InsertNewEntry(not AdvancePostingParametersCZZ."Temporary Entries Only");
end;
@@ -1290,8 +1290,8 @@ codeunit 31143 "Sales Adv. Letter-Post CZZ"
TempSalesAdvLetterEntryCZZGlob.InitCustLedgerEntry(CustLedgerEntry2);
TempSalesAdvLetterEntryCZZGlob.InitRelatedEntry(SalesAdvLetterEntryCZZ);
TempSalesAdvLetterEntryCZZGlob.CopyFromGenJnlLine(GenJournalLine);
+ TempSalesAdvLetterEntryCZZGlob.CopyFromSalesAdvLetterHeader(SalesAdvLetterHeaderCZZ);
TempSalesAdvLetterEntryCZZGlob."Entry Type" := "Advance Letter Entry Type CZZ"::Usage;
- TempSalesAdvLetterEntryCZZGlob."Sales Adv. Letter No." := SalesAdvLetterHeaderCZZ."No.";
EntryNo := TempSalesAdvLetterEntryCZZGlob.InsertNewEntry(not AdvancePostingParametersCZZ."Temporary Entries Only");
if SalesAdvLetterHeaderCZZ."Automatic Post VAT Document" then begin
@@ -1401,8 +1401,8 @@ codeunit 31143 "Sales Adv. Letter-Post CZZ"
TempSalesAdvLetterEntryCZZGlob.InitNewEntry();
TempSalesAdvLetterEntryCZZGlob.InitRelatedEntry(RelatedEntryNo);
TempSalesAdvLetterEntryCZZGlob.CopyFromGenJnlLine(GenJournalLine);
+ TempSalesAdvLetterEntryCZZGlob.CopyFromSalesAdvLetterHeader(SalesAdvLetterHeaderCZZ);
TempSalesAdvLetterEntryCZZGlob."Entry Type" := EntryType;
- TempSalesAdvLetterEntryCZZGlob."Sales Adv. Letter No." := SalesAdvLetterHeaderCZZ."No.";
TempSalesAdvLetterEntryCZZGlob."VAT Entry No." := VATEntryNo;
TempSalesAdvLetterEntryCZZGlob."VAT Identifier" := VATPostingSetup."VAT Identifier";
TempSalesAdvLetterEntryCZZGlob."Auxiliary Entry" := AdvancePostingBufferCZZ."Auxiliary Entry";
@@ -1580,8 +1580,8 @@ codeunit 31143 "Sales Adv. Letter-Post CZZ"
TempSalesAdvLetterEntryCZZGlob.InitNewEntry();
TempSalesAdvLetterEntryCZZGlob.InitRelatedEntry(RelatedEntryNo);
TempSalesAdvLetterEntryCZZGlob.CopyFromVATPostingSetup(VATPostingSetup);
+ TempSalesAdvLetterEntryCZZGlob.CopyFromSalesAdvLetterHeader(SalesAdvLetterHeaderCZZ);
TempSalesAdvLetterEntryCZZGlob."Entry Type" := "Advance Letter Entry Type CZZ"::"VAT Rate";
- TempSalesAdvLetterEntryCZZGlob."Sales Adv. Letter No." := SalesAdvLetterHeaderCZZ."No.";
TempSalesAdvLetterEntryCZZGlob."Document No." := AdvancePostingParametersCZZ."Document No.";
TempSalesAdvLetterEntryCZZGlob."Posting Date" := AdvancePostingParametersCZZ."Posting Date";
TempSalesAdvLetterEntryCZZGlob."VAT Date" := AdvancePostingParametersCZZ."VAT Date";
@@ -1675,8 +1675,8 @@ codeunit 31143 "Sales Adv. Letter-Post CZZ"
TempSalesAdvLetterEntryCZZGlob.InitRelatedEntry(RelatedEntryNo);
TempSalesAdvLetterEntryCZZGlob.InitDetailedCustLedgerEntry(RelatedDetEntryNo);
TempSalesAdvLetterEntryCZZGlob.CopyFromVATPostingSetup(VATPostingSetup);
+ TempSalesAdvLetterEntryCZZGlob.CopyFromSalesAdvLetterHeader(SalesAdvLetterHeaderCZZ);
TempSalesAdvLetterEntryCZZGlob."Entry Type" := "Advance Letter Entry Type CZZ"::"VAT Adjustment";
- TempSalesAdvLetterEntryCZZGlob."Sales Adv. Letter No." := SalesAdvLetterHeaderCZZ."No.";
TempSalesAdvLetterEntryCZZGlob."Document No." := AdvancePostingParametersCZZ."Document No.";
TempSalesAdvLetterEntryCZZGlob."Posting Date" := AdvancePostingParametersCZZ."Posting Date";
TempSalesAdvLetterEntryCZZGlob."VAT Date" := AdvancePostingParametersCZZ."VAT Date";
diff --git a/Apps/CZ/AdvancePaymentsLocalization/app/Src/Codeunits/UpgradeApplicationCZZ.Codeunit.al b/Apps/CZ/AdvancePaymentsLocalization/app/Src/Codeunits/UpgradeApplicationCZZ.Codeunit.al
index 89f8922b77..e8f90e052f 100644
--- a/Apps/CZ/AdvancePaymentsLocalization/app/Src/Codeunits/UpgradeApplicationCZZ.Codeunit.al
+++ b/Apps/CZ/AdvancePaymentsLocalization/app/Src/Codeunits/UpgradeApplicationCZZ.Codeunit.al
@@ -86,7 +86,7 @@ codeunit 31088 "Upgrade Application CZZ"
var
SalesAdvLetterEntry: Record "Sales Adv. Letter Entry CZZ";
begin
- if UpgradeTag.HasUpgradeTag(UpgradeTagDefinitionsCZZ.GetSalesAdvLetterEntryCustomerNoUpgradeTag()) then
+ if UpgradeTag.HasUpgradeTag(UpgradeTagDefinitionsCZZ.GetSalesAdvLetterEntryCustomerNo2UpgradeTag()) then
exit;
SalesAdvLetterEntry.SetLoadFields("Sales Adv. Letter No.");
@@ -97,7 +97,7 @@ codeunit 31088 "Upgrade Application CZZ"
SalesAdvLetterEntry.Modify();
until SalesAdvLetterEntry.Next() = 0;
- UpgradeTag.SetUpgradeTag(UpgradeTagDefinitionsCZZ.GetSalesAdvLetterEntryCustomerNoUpgradeTag());
+ UpgradeTag.SetUpgradeTag(UpgradeTagDefinitionsCZZ.GetSalesAdvLetterEntryCustomerNo2UpgradeTag());
end;
local procedure UpgradeAdvanceLetterApplicationAmountLCY()
diff --git a/Apps/CZ/AdvancePaymentsLocalization/app/Src/Codeunits/UpgradeTagDefinitionsCZZ.Codeunit.al b/Apps/CZ/AdvancePaymentsLocalization/app/Src/Codeunits/UpgradeTagDefinitionsCZZ.Codeunit.al
index 13f89997d8..0a9f4e6bb0 100644
--- a/Apps/CZ/AdvancePaymentsLocalization/app/Src/Codeunits/UpgradeTagDefinitionsCZZ.Codeunit.al
+++ b/Apps/CZ/AdvancePaymentsLocalization/app/Src/Codeunits/UpgradeTagDefinitionsCZZ.Codeunit.al
@@ -25,6 +25,7 @@ codeunit 31089 "Upgrade Tag Definitions CZZ"
PerCompanyUpgradeTags.Add(GetSalesAdvLetterEntryCustomerNoUpgradeTag());
PerCompanyUpgradeTags.Add(GetAdvanceLetterApplicationAmountLCYUpgradeTag());
PerCompanyUpgradeTags.Add(GetPostVATDocForReverseChargeUpgradeTag());
+ PerCompanyUpgradeTags.Add(GetSalesAdvLetterEntryCustomerNo2UpgradeTag());
end;
procedure GetDataVersion190PerDatabaseUpgradeTag(): Code[250]
@@ -71,4 +72,9 @@ codeunit 31089 "Upgrade Tag Definitions CZZ"
begin
exit('CZZ-494279-PostVATDocForReverseChargeUpgradeTag-20240426');
end;
+
+ procedure GetSalesAdvLetterEntryCustomerNo2UpgradeTag(): Code[250]
+ begin
+ exit('CZZ-537960-SalesAdvLetterEntryCustomerNo2UpgradeTag-20240612');
+ end;
}
diff --git a/Apps/CZ/AdvancePaymentsLocalization/app/Src/Reports/PurchAdvanceLettersVATCZZ.Report.al b/Apps/CZ/AdvancePaymentsLocalization/app/Src/Reports/PurchAdvanceLettersVATCZZ.Report.al
index 1739c4946a..64a793df52 100644
--- a/Apps/CZ/AdvancePaymentsLocalization/app/Src/Reports/PurchAdvanceLettersVATCZZ.Report.al
+++ b/Apps/CZ/AdvancePaymentsLocalization/app/Src/Reports/PurchAdvanceLettersVATCZZ.Report.al
@@ -59,7 +59,7 @@ report 31025 "Purch. Advance Letters VAT CZZ"
dataitem("Purch. Adv. Letter Entry CZZ"; "Purch. Adv. Letter Entry CZZ")
{
- DataItemTableView = where("Entry Type" = filter("VAT Payment" | "VAT Usage" | "VAT Close" | "VAT Rate" | "VAT Adjustment"), Cancelled = const(false));
+ DataItemTableView = where("Entry Type" = filter("VAT Payment" | "VAT Usage" | "VAT Close" | "VAT Rate" | "VAT Adjustment"));
DataItemLink = "Purch. Adv. Letter No." = field("No.");
column(Document_No_; "Document No.")
@@ -112,7 +112,6 @@ report 31025 "Purch. Advance Letters VAT CZZ"
PurchAdvLetterEntryCZZ: Record "Purch. Adv. Letter Entry CZZ";
begin
PurchAdvLetterEntryCZZ.SetRange("Purch. Adv. Letter No.", "Purch. Adv. Letter Header CZZ"."No.");
- PurchAdvLetterEntryCZZ.SetRange(Cancelled, false);
PurchAdvLetterEntryCZZ.SetFilter("Posting Date", '..%1', ToDate);
PurchAdvLetterEntryCZZ.SetFilter("Entry Type", '%1|%2|%3|%4|%5', PurchAdvLetterEntryCZZ."Entry Type"::"VAT Payment",
PurchAdvLetterEntryCZZ."Entry Type"::"VAT Usage", PurchAdvLetterEntryCZZ."Entry Type"::"VAT Close",
diff --git a/Apps/CZ/AdvancePaymentsLocalization/app/Src/Reports/SalesAdvanceLettersVATCZZ.Report.al b/Apps/CZ/AdvancePaymentsLocalization/app/Src/Reports/SalesAdvanceLettersVATCZZ.Report.al
index e44990de5c..177e9e10d6 100644
--- a/Apps/CZ/AdvancePaymentsLocalization/app/Src/Reports/SalesAdvanceLettersVATCZZ.Report.al
+++ b/Apps/CZ/AdvancePaymentsLocalization/app/Src/Reports/SalesAdvanceLettersVATCZZ.Report.al
@@ -59,7 +59,7 @@ report 31023 "Sales Advance Letters VAT CZZ"
dataitem("Sales Adv. Letter Entry CZZ"; "Sales Adv. Letter Entry CZZ")
{
- DataItemTableView = where("Entry Type" = filter("VAT Payment" | "VAT Usage" | "VAT Close" | "VAT Rate" | "VAT Adjustment"), Cancelled = const(false));
+ DataItemTableView = where("Entry Type" = filter("VAT Payment" | "VAT Usage" | "VAT Close" | "VAT Rate" | "VAT Adjustment"));
DataItemLink = "Sales Adv. Letter No." = field("No.");
column(Document_No_; "Document No.")
@@ -112,7 +112,6 @@ report 31023 "Sales Advance Letters VAT CZZ"
SalesAdvLetterEntryCZZ: Record "Sales Adv. Letter Entry CZZ";
begin
SalesAdvLetterEntryCZZ.SetRange("Sales Adv. Letter No.", "Sales Adv. Letter Header CZZ"."No.");
- SalesAdvLetterEntryCZZ.SetRange(Cancelled, false);
SalesAdvLetterEntryCZZ.SetFilter("Posting Date", '..%1', ToDate);
SalesAdvLetterEntryCZZ.SetFilter("Entry Type", '%1|%2|%3|%4|%5', SalesAdvLetterEntryCZZ."Entry Type"::"VAT Payment",
SalesAdvLetterEntryCZZ."Entry Type"::"VAT Usage", SalesAdvLetterEntryCZZ."Entry Type"::"VAT Close",
diff --git a/Apps/CZ/AdvancePaymentsLocalization/app/Src/Tables/PurchAdvLetterEntryCZZ.Table.al b/Apps/CZ/AdvancePaymentsLocalization/app/Src/Tables/PurchAdvLetterEntryCZZ.Table.al
index 888b4989eb..215fca0b06 100644
--- a/Apps/CZ/AdvancePaymentsLocalization/app/Src/Tables/PurchAdvLetterEntryCZZ.Table.al
+++ b/Apps/CZ/AdvancePaymentsLocalization/app/Src/Tables/PurchAdvLetterEntryCZZ.Table.al
@@ -373,6 +373,12 @@ table 31009 "Purch. Adv. Letter Entry CZZ"
OnAfterCopyFromVATPostingSetup(VATPostingSetup, Rec);
end;
+ procedure CopyFromPurchAdvLetterHeader(PurchAdvLetterHeaderCZZ: Record "Purch. Adv. Letter Header CZZ")
+ begin
+ "Purch. Adv. Letter No." := PurchAdvLetterHeaderCZZ."No.";
+ OnAfterCopyFromPurchAdvLetterHeader(PurchAdvLetterHeaderCZZ, Rec);
+ end;
+
procedure InsertNewEntry(WriteToDatabase: Boolean) EntryNo: Integer
var
PurchAdvLetterEntryCZZ: Record "Purch. Adv. Letter Entry CZZ";
@@ -451,6 +457,11 @@ table 31009 "Purch. Adv. Letter Entry CZZ"
begin
end;
+ [IntegrationEvent(false, false)]
+ local procedure OnAfterCopyFromPurchAdvLetterHeader(PurchAdvLetterHeaderCZZ: Record "Purch. Adv. Letter Header CZZ"; var PurchAdvLetterEntryCZZ: Record "Purch. Adv. Letter Entry CZZ")
+ begin
+ end;
+
[IntegrationEvent(false, false)]
local procedure OnBeforeInsertNewEntry(WriteToDatabase: Boolean; var PurchAdvLetterEntryCZZ: Record "Purch. Adv. Letter Entry CZZ")
begin
diff --git a/Apps/CZ/AdvancePaymentsLocalization/app/Src/Tables/PurchAdvLetterHeaderCZZ.Table.al b/Apps/CZ/AdvancePaymentsLocalization/app/Src/Tables/PurchAdvLetterHeaderCZZ.Table.al
index 847bdca347..95b874b056 100644
--- a/Apps/CZ/AdvancePaymentsLocalization/app/Src/Tables/PurchAdvLetterHeaderCZZ.Table.al
+++ b/Apps/CZ/AdvancePaymentsLocalization/app/Src/Tables/PurchAdvLetterHeaderCZZ.Table.al
@@ -120,6 +120,7 @@ table 31008 "Purch. Adv. Letter Header CZZ"
SetPurchaserCode(Vendor."Purchaser Code", "Purchaser Code");
Validate("Payment Terms Code");
Validate("Payment Method Code");
+ Validate("VAT Bus. Posting Group");
Validate("Currency Code");
Validate("Bank Account Code", Vendor."Preferred Bank Account Code");
@@ -1311,6 +1312,7 @@ table 31008 "Purch. Adv. Letter Header CZZ"
PurchAdvLetterLineCZZ.Init();
PurchAdvLetterLineCZZ."Document No." := "No.";
PurchAdvLetterLineCZZ."Line No." += 10000;
+ PurchAdvLetterLineCZZ."VAT Bus. Posting Group" := "VAT Bus. Posting Group";
PurchAdvLetterLineCZZ.Validate("VAT Prod. Posting Group", TempPurchAdvLetterLineCZZ."VAT Prod. Posting Group");
PurchAdvLetterLineCZZ.Description := TempPurchAdvLetterLineCZZ.Description;
PurchAdvLetterLineCZZ.Validate("Amount Including VAT", TempPurchAdvLetterLineCZZ."Amount Including VAT");
diff --git a/Apps/CZ/AdvancePaymentsLocalization/app/Src/Tables/SalesAdvLetterEntryCZZ.Table.al b/Apps/CZ/AdvancePaymentsLocalization/app/Src/Tables/SalesAdvLetterEntryCZZ.Table.al
index 873efb6050..6d177c9bc7 100644
--- a/Apps/CZ/AdvancePaymentsLocalization/app/Src/Tables/SalesAdvLetterEntryCZZ.Table.al
+++ b/Apps/CZ/AdvancePaymentsLocalization/app/Src/Tables/SalesAdvLetterEntryCZZ.Table.al
@@ -310,6 +310,7 @@ table 31006 "Sales Adv. Letter Entry CZZ"
var
SalesAdvLetterHeader: Record "Sales Adv. Letter Header CZZ";
begin
+ SalesAdvLetterHeader.SetLoadFields("Bill-to Customer No.");
SalesAdvLetterHeader.Get("Sales Adv. Letter No.");
exit(SalesAdvLetterHeader."Bill-to Customer No.");
end;
@@ -394,6 +395,13 @@ table 31006 "Sales Adv. Letter Entry CZZ"
OnAfterCopyFromVATPostingSetup(VATPostingSetup, Rec);
end;
+ procedure CopyFromSalesAdvLetterHeader(SalesAdvLetterHeaderCZZ: Record "Sales Adv. Letter Header CZZ")
+ begin
+ "Sales Adv. Letter No." := SalesAdvLetterHeaderCZZ."No.";
+ "Customer No." := SalesAdvLetterHeaderCZZ."Bill-to Customer No.";
+ OnAfterCopyFromSalesAdvLetterHeader(SalesAdvLetterHeaderCZZ, Rec);
+ end;
+
procedure InsertNewEntry(WriteToDatabase: Boolean) EntryNo: Integer
var
SalesAdvLetterEntryCZZ: Record "Sales Adv. Letter Entry CZZ";
@@ -478,6 +486,11 @@ table 31006 "Sales Adv. Letter Entry CZZ"
begin
end;
+ [IntegrationEvent(false, false)]
+ local procedure OnAfterCopyFromSalesAdvLetterHeader(SalesAdvLetterHeaderCZZ: Record "Sales Adv. Letter Header CZZ"; var SalesAdvLetterEntryCZZ: Record "Sales Adv. Letter Entry CZZ")
+ begin
+ end;
+
[IntegrationEvent(false, false)]
local procedure OnBeforeInsertNewEntry(WriteToDatabase: Boolean; var SalesAdvLetterEntryCZZ: Record "Sales Adv. Letter Entry CZZ")
begin
diff --git a/Apps/CZ/AdvancePaymentsLocalization/app/Src/Tables/SalesAdvLetterHeaderCZZ.Table.al b/Apps/CZ/AdvancePaymentsLocalization/app/Src/Tables/SalesAdvLetterHeaderCZZ.Table.al
index cfc55aa612..f14a634470 100644
--- a/Apps/CZ/AdvancePaymentsLocalization/app/Src/Tables/SalesAdvLetterHeaderCZZ.Table.al
+++ b/Apps/CZ/AdvancePaymentsLocalization/app/Src/Tables/SalesAdvLetterHeaderCZZ.Table.al
@@ -103,6 +103,7 @@ table 31004 "Sales Adv. Letter Header CZZ"
Validate("Payment Terms Code");
Validate("Payment Method Code");
+ Validate("VAT Bus. Posting Group");
Validate("Currency Code");
if not SkipBillToContact then
@@ -1386,6 +1387,7 @@ table 31004 "Sales Adv. Letter Header CZZ"
SalesAdvLetterLineCZZ.Init();
SalesAdvLetterLineCZZ."Document No." := "No.";
SalesAdvLetterLineCZZ."Line No." += 10000;
+ SalesAdvLetterLineCZZ."VAT Bus. Posting Group" := "VAT Bus. Posting Group";
SalesAdvLetterLineCZZ.Validate("VAT Prod. Posting Group", TempSalesAdvLetterLineCZZ."VAT Prod. Posting Group");
SalesAdvLetterLineCZZ.Description := TempSalesAdvLetterLineCZZ.Description;
SalesAdvLetterLineCZZ.Validate("Amount Including VAT", TempSalesAdvLetterLineCZZ."Amount Including VAT");
diff --git a/Apps/CZ/BankingDocumentsLocalization/app/Src/Codeunits/NavigateHandlerCZB.Codeunit.al b/Apps/CZ/BankingDocumentsLocalization/app/Src/Codeunits/NavigateHandlerCZB.Codeunit.al
index fbcb3c2d39..a361213de5 100644
--- a/Apps/CZ/BankingDocumentsLocalization/app/Src/Codeunits/NavigateHandlerCZB.Codeunit.al
+++ b/Apps/CZ/BankingDocumentsLocalization/app/Src/Codeunits/NavigateHandlerCZB.Codeunit.al
@@ -16,40 +16,40 @@ codeunit 31434 "Navigate Handler CZB"
[EventSubscriber(ObjectType::Page, Page::Navigate, 'OnAfterNavigateFindRecords', '', false, false)]
local procedure OnAfterNavigateFindRecords(var DocumentEntry: Record "Document Entry"; DocNoFilter: Text;
- PostingDateFilter: Text; Sender: Page Navigate)
+ PostingDateFilter: Text)
begin
- FindIssuedBankStatementHeader(DocumentEntry, DocNoFilter, PostingDateFilter, Sender);
- FindIssuedPaymentOrderHeader(DocumentEntry, DocNoFilter, PostingDateFilter, Sender);
+ FindIssuedBankStatementHeader(DocumentEntry, DocNoFilter, PostingDateFilter);
+ FindIssuedPaymentOrderHeader(DocumentEntry, DocNoFilter, PostingDateFilter);
end;
- local procedure FindIssuedBankStatementHeader(var DocumentEntry: Record "Document Entry"; DocNoFilter: Text; PostingDateFilter: Text; Navigate: Page Navigate)
+ local procedure FindIssuedBankStatementHeader(var DocumentEntry: Record "Document Entry"; DocNoFilter: Text; PostingDateFilter: Text)
begin
if not IssBankStatementHeaderCZB.ReadPermission() then
exit;
IssBankStatementHeaderCZB.Reset();
IssBankStatementHeaderCZB.SetFilter("No.", DocNoFilter);
IssBankStatementHeaderCZB.SetFilter("Document Date", PostingDateFilter);
- Navigate.InsertIntoDocEntry(
- DocumentEntry, Database::"Iss. Bank Statement Header CZB", Enum::"Document Entry Document Type"::" ",
+ DocumentEntry.InsertIntoDocEntry(
+ Database::"Iss. Bank Statement Header CZB", Enum::"Document Entry Document Type"::" ",
IssBankStatementHeaderCZB.TableCaption, IssBankStatementHeaderCZB.Count);
end;
- local procedure FindIssuedPaymentOrderHeader(var DocumentEntry: Record "Document Entry"; DocNoFilter: Text; PostingDateFilter: Text; Navigate: Page Navigate)
+ local procedure FindIssuedPaymentOrderHeader(var DocumentEntry: Record "Document Entry"; DocNoFilter: Text; PostingDateFilter: Text)
begin
if not IssPaymentOrderHeaderCZB.ReadPermission() then
exit;
IssPaymentOrderHeaderCZB.Reset();
IssPaymentOrderHeaderCZB.SetFilter("No.", DocNoFilter);
IssPaymentOrderHeaderCZB.SetFilter("Document Date", PostingDateFilter);
- Navigate.InsertIntoDocEntry(
- DocumentEntry, Database::"Iss. Payment Order Header CZB", Enum::"Document Entry Document Type"::" ",
+ DocumentEntry.InsertIntoDocEntry(
+ Database::"Iss. Payment Order Header CZB", Enum::"Document Entry Document Type"::" ",
IssPaymentOrderHeaderCZB.TableCaption, IssPaymentOrderHeaderCZB.Count);
end;
- [EventSubscriber(ObjectType::Page, Page::Navigate, 'OnAfterNavigateShowRecords', '', false, false)]
- local procedure OnBeforeNavigateShowRecords(TableID: Integer; DocNoFilter: Text; PostingDateFilter: Text; var TempDocumentEntry: Record "Document Entry")
+ [EventSubscriber(ObjectType::Page, Page::Navigate, 'OnBeforeShowRecords', '', false, false)]
+ local procedure OnBeforeShowRecords(var TempDocumentEntry: Record "Document Entry"; DocNoFilter: Text; PostingDateFilter: Text; var IsHandled: Boolean)
begin
- case TableID of
+ case TempDocumentEntry."Table ID" of
Database::"Iss. Bank Statement Header CZB":
begin
IssBankStatementHeaderCZB.Reset();
@@ -61,6 +61,7 @@ codeunit 31434 "Navigate Handler CZB"
Page.Run(Page::"Iss. Bank Statement CZB", IssBankStatementHeaderCZB)
end else
Page.Run(0, IssBankStatementHeaderCZB);
+ IsHandled := true;
end;
Database::"Iss. Payment Order Header CZB":
begin
@@ -73,6 +74,7 @@ codeunit 31434 "Navigate Handler CZB"
Page.Run(Page::"Iss. Payment Order CZB", IssPaymentOrderHeaderCZB)
end else
Page.Run(0, IssPaymentOrderHeaderCZB);
+ IsHandled := true;
end;
end;
end;
diff --git a/Apps/CZ/CashDeskLocalization/app/Src/Codeunits/InstallApplicationCZP.Codeunit.al b/Apps/CZ/CashDeskLocalization/app/Src/Codeunits/InstallApplicationCZP.Codeunit.al
index 8fa225fcae..e236b4cefe 100644
--- a/Apps/CZ/CashDeskLocalization/app/Src/Codeunits/InstallApplicationCZP.Codeunit.al
+++ b/Apps/CZ/CashDeskLocalization/app/Src/Codeunits/InstallApplicationCZP.Codeunit.al
@@ -364,7 +364,6 @@ codeunit 31054 "Install Application CZP"
CashDocumentLineCZP."VAT Difference" := CashDocumentLine."VAT Difference";
CashDocumentLineCZP."VAT %" := CashDocumentLine."VAT %";
CashDocumentLineCZP."VAT Identifier" := CashDocumentLine."VAT Identifier";
- CashDocumentLineCZP."VAT Difference (LCY)" := CashDocumentLine."VAT Difference (LCY)";
CashDocumentLineCZP."System-Created Entry" := CashDocumentLine."System-Created Entry";
CashDocumentLineCZP."Gen. Posting Type" := CashDocumentLine."Gen. Posting Type";
CashDocumentLineCZP."VAT Calculation Type" := CashDocumentLine."VAT Calculation Type";
@@ -475,7 +474,6 @@ codeunit 31054 "Install Application CZP"
PostedCashDocumentLineCZP."VAT Difference" := PostedCashDocumentLine."VAT Difference";
PostedCashDocumentLineCZP."VAT %" := PostedCashDocumentLine."VAT %";
PostedCashDocumentLineCZP."VAT Identifier" := PostedCashDocumentLine."VAT Identifier";
- PostedCashDocumentLineCZP."VAT Difference (LCY)" := PostedCashDocumentLine."VAT Difference (LCY)";
PostedCashDocumentLineCZP."System-Created Entry" := PostedCashDocumentLine."System-Created Entry";
PostedCashDocumentLineCZP."Gen. Posting Type" := PostedCashDocumentLine."Gen. Posting Type";
PostedCashDocumentLineCZP."VAT Calculation Type" := PostedCashDocumentLine."VAT Calculation Type";
diff --git a/Apps/CZ/CashDeskLocalization/app/Src/Codeunits/NavigateHandlerCZP.Codeunit.al b/Apps/CZ/CashDeskLocalization/app/Src/Codeunits/NavigateHandlerCZP.Codeunit.al
index 3b81c14c93..9a0bbc421c 100644
--- a/Apps/CZ/CashDeskLocalization/app/Src/Codeunits/NavigateHandlerCZP.Codeunit.al
+++ b/Apps/CZ/CashDeskLocalization/app/Src/Codeunits/NavigateHandlerCZP.Codeunit.al
@@ -16,13 +16,13 @@ codeunit 11791 "Navigate Handler CZP"
[EventSubscriber(ObjectType::Page, Page::Navigate, 'OnAfterNavigateFindRecords', '', false, false)]
local procedure OnAfterNavigateFindRecords(var DocumentEntry: Record "Document Entry"; DocNoFilter: Text;
- PostingDateFilter: Text; Sender: Page Navigate)
+ PostingDateFilter: Text)
begin
- FindPostedCashDocumentHdr(DocumentEntry, DocNoFilter, PostingDateFilter, Sender);
+ FindPostedCashDocumentHdr(DocumentEntry, DocNoFilter, PostingDateFilter);
FindCashDeskLedgerEntries(DocumentEntry, DocNoFilter, PostingDateFilter);
end;
- local procedure FindPostedCashDocumentHdr(var DocumentEntry: Record "Document Entry"; DocNoFilter: Text; PostingDateFilter: Text; Navigate: Page Navigate)
+ local procedure FindPostedCashDocumentHdr(var DocumentEntry: Record "Document Entry"; DocNoFilter: Text; PostingDateFilter: Text)
var
PostedCashDocumentTxt: Label 'Posted Cash Document';
begin
@@ -30,7 +30,7 @@ codeunit 11791 "Navigate Handler CZP"
PostedCashDocumentHdrCZP.Reset();
PostedCashDocumentHdrCZP.SetFilter("No.", DocNoFilter);
PostedCashDocumentHdrCZP.SetFilter("Posting Date", PostingDateFilter);
- Navigate.InsertIntoDocEntry(DocumentEntry, Database::"Posted Cash Document Hdr. CZP", "Document Entry Document Type"::Quote,
+ DocumentEntry.InsertIntoDocEntry(Database::"Posted Cash Document Hdr. CZP", "Document Entry Document Type"::Quote,
PostedCashDocumentTxt, PostedCashDocumentHdrCZP.Count());
end;
end;
@@ -89,10 +89,10 @@ codeunit 11791 "Navigate Handler CZP"
exit(DocEntryNoOfRecords);
end;
- [EventSubscriber(ObjectType::Page, Page::Navigate, 'OnBeforeNavigateShowRecords', '', false, false)]
- local procedure OnBeforeNavigateShowRecords(TableID: Integer; DocNoFilter: Text; PostingDateFilter: Text; var TempDocumentEntry: Record "Document Entry"; var IsHandled: Boolean)
+ [EventSubscriber(ObjectType::Page, Page::Navigate, 'OnBeforeShowRecords', '', false, false)]
+ local procedure OnBeforeShowRecords(var TempDocumentEntry: Record "Document Entry"; DocNoFilter: Text; PostingDateFilter: Text; var IsHandled: Boolean)
begin
- case TableID of
+ case TempDocumentEntry."Table ID" of
Database::"Posted Cash Document Hdr. CZP":
begin
PostedCashDocumentHdrCZP.Reset();
diff --git a/Apps/CZ/CashDeskLocalization/app/Src/Tables/CashDocumentLineCZP.Table.al b/Apps/CZ/CashDeskLocalization/app/Src/Tables/CashDocumentLineCZP.Table.al
index f294fb9161..1bfba3ee63 100644
--- a/Apps/CZ/CashDeskLocalization/app/Src/Tables/CashDocumentLineCZP.Table.al
+++ b/Apps/CZ/CashDeskLocalization/app/Src/Tables/CashDocumentLineCZP.Table.al
@@ -770,9 +770,14 @@ table 11733 "Cash Document Line CZP"
{
Caption = 'VAT Difference (LCY)';
DataClassification = CustomerContent;
- ObsoleteState = Pending;
ObsoleteReason = 'Moved to Core Localization Pack for Czech.';
+#if CLEAN25
+ ObsoleteState = Removed;
+ ObsoleteTag = '28.0';
+#else
+ ObsoleteState = Pending;
ObsoleteTag = '18.0';
+#endif
}
field(63; "System-Created Entry"; Boolean)
{
diff --git a/Apps/CZ/CompensationLocalization/app/Src/Codeunits/NavigateHandlerCZC.Codeunit.al b/Apps/CZ/CompensationLocalization/app/Src/Codeunits/NavigateHandlerCZC.Codeunit.al
index 9fd8e136d3..b5206c1af1 100644
--- a/Apps/CZ/CompensationLocalization/app/Src/Codeunits/NavigateHandlerCZC.Codeunit.al
+++ b/Apps/CZ/CompensationLocalization/app/Src/Codeunits/NavigateHandlerCZC.Codeunit.al
@@ -14,12 +14,12 @@ codeunit 31266 "Navigate Handler CZC"
[EventSubscriber(ObjectType::Page, Page::Navigate, 'OnAfterNavigateFindRecords', '', false, false)]
local procedure OnAfterNavigateFindRecords(var DocumentEntry: Record "Document Entry"; DocNoFilter: Text;
- PostingDateFilter: Text; Sender: Page Navigate)
+ PostingDateFilter: Text)
begin
- FindPostedCompesationHeader(DocumentEntry, DocNoFilter, PostingDateFilter, Sender);
+ FindPostedCompesationHeader(DocumentEntry, DocNoFilter, PostingDateFilter);
end;
- local procedure FindPostedCompesationHeader(var DocumentEntry: Record "Document Entry"; DocNoFilter: Text; PostingDateFilter: Text; Navigate: Page Navigate)
+ local procedure FindPostedCompesationHeader(var DocumentEntry: Record "Document Entry"; DocNoFilter: Text; PostingDateFilter: Text)
var
PostedCompensationTxt: Label 'Posted Compensation';
DocumentEntryDocumentType: Enum "Document Entry Document Type";
@@ -28,7 +28,7 @@ codeunit 31266 "Navigate Handler CZC"
PostedCompensationHeaderCZC.Reset();
PostedCompensationHeaderCZC.SetFilter("No.", DocNoFilter);
PostedCompensationHeaderCZC.SetFilter("Posting Date", PostingDateFilter);
- Navigate.InsertIntoDocEntry(DocumentEntry, Database::"Posted Compensation Header CZC", DocumentEntryDocumentType::" ",
+ DocumentEntry.InsertIntoDocEntry(Database::"Posted Compensation Header CZC", DocumentEntryDocumentType::" ",
PostedCompensationTxt, PostedCompensationHeaderCZC.Count());
end;
end;
@@ -63,10 +63,10 @@ codeunit 31266 "Navigate Handler CZC"
exit(DocumentEntry."No. of Records");
end;
- [EventSubscriber(ObjectType::Page, Page::Navigate, 'OnBeforeNavigateShowRecords', '', false, false)]
- local procedure OnBeforeNavigateShowRecords(TableID: Integer; DocNoFilter: Text; PostingDateFilter: Text; var TempDocumentEntry: Record "Document Entry"; var IsHandled: Boolean)
+ [EventSubscriber(ObjectType::Page, Page::Navigate, 'OnBeforeShowRecords', '', false, false)]
+ local procedure OnBeforeShowRecords(var TempDocumentEntry: Record "Document Entry"; DocNoFilter: Text; PostingDateFilter: Text; var IsHandled: Boolean)
begin
- case TableID of
+ case TempDocumentEntry."Table ID" of
Database::"Posted Compensation Header CZC":
begin
PostedCompensationHeaderCZC.Reset();
diff --git a/Apps/CZ/ContosoCoffeeDemoDatasetCZ/app/Codeunits/CommonModuleCZ.Codeunit.al b/Apps/CZ/ContosoCoffeeDemoDatasetCZ/app/Codeunits/CommonModuleCZ.Codeunit.al
new file mode 100644
index 0000000000..91d3b8a3bb
--- /dev/null
+++ b/Apps/CZ/ContosoCoffeeDemoDatasetCZ/app/Codeunits/CommonModuleCZ.Codeunit.al
@@ -0,0 +1,23 @@
+codeunit 31210 "Common Module CZ"
+{
+ InherentEntitlements = X;
+ InherentPermissions = X;
+
+ [EventSubscriber(ObjectType::Codeunit, Codeunit::"Contoso Demo Tool", 'OnAfterGeneratingDemoData', '', false, false)]
+ local procedure LocalizationVATPostingSetup(Module: Enum "Contoso Demo Data Module"; ContosoDemoDataLevel: Enum "Contoso Demo Data Level")
+ var
+ ContosoPostingSetup: Codeunit "Contoso Posting Setup";
+ CommonPostingGroup: Codeunit "Create Common Posting Group";
+ CommonGLAccount: Codeunit "Create Common GL Account";
+ LocalStandardVATPercentage: Decimal;
+ begin
+ if Module = Enum::"Contoso Demo Data Module"::"Common Module" then
+ if ContosoDemoDataLevel = Enum::"Contoso Demo Data Level"::"Setup Data" then begin
+ LocalStandardVATPercentage := 21;
+ ContosoPostingSetup.SetOverwriteData(true);
+ ContosoPostingSetup.InsertVATPostingSetup(CommonPostingGroup.Domestic(), CommonPostingGroup.StandardVAT(), CommonGLAccount.SalesVATStandard(), CommonGLAccount.PurchaseVATStandard(), CommonPostingGroup.StandardVAT(), LocalStandardVATPercentage, Enum::"Tax Calculation Type"::"Normal VAT");
+ ContosoPostingSetup.SetOverwriteData(false);
+ end;
+ end;
+}
+
diff --git a/Apps/CZ/ContosoCoffeeDemoDatasetCZ/app/Codeunits/ContosoDemoDataSetupCZ.Codeunit.al b/Apps/CZ/ContosoCoffeeDemoDatasetCZ/app/Codeunits/ContosoDemoDataSetupCZ.Codeunit.al
new file mode 100644
index 0000000000..ffc479b62c
--- /dev/null
+++ b/Apps/CZ/ContosoCoffeeDemoDatasetCZ/app/Codeunits/ContosoDemoDataSetupCZ.Codeunit.al
@@ -0,0 +1,11 @@
+codeunit 31211 "Contoso Demo Data Setup CZ"
+{
+ InherentPermissions = X;
+ InherentEntitlements = X;
+
+ [EventSubscriber(ObjectType::Table, Database::"Contoso Coffee Demo Data Setup", 'OnBeforeInsertEvent', '', false, false)]
+ local procedure LocalDemoDataSetup(var Rec: Record "Contoso Coffee Demo Data Setup")
+ begin
+ Rec."Country/Region Code" := 'CZ';
+ end;
+}
\ No newline at end of file
diff --git a/Apps/CZ/ContosoCoffeeDemoDatasetCZ/app/Codeunits/CreateCZGLAccounts.Codeunit.al b/Apps/CZ/ContosoCoffeeDemoDatasetCZ/app/Codeunits/CreateCZGLAccounts.Codeunit.al
new file mode 100644
index 0000000000..a61774ec57
--- /dev/null
+++ b/Apps/CZ/ContosoCoffeeDemoDatasetCZ/app/Codeunits/CreateCZGLAccounts.Codeunit.al
@@ -0,0 +1,291 @@
+codeunit 31212 "Create CZ GL Accounts"
+{
+ InherentPermissions = X;
+ InherentEntitlements = X;
+
+ [EventSubscriber(ObjectType::Codeunit, Codeunit::"Create Common GL Account", 'OnAfterAddGLAccountsForLocalization', '', false, false)]
+ local procedure ModifyCommonGLAccounts()
+ var
+ InventorySetup: Record "Inventory Setup";
+ ContosoGLAccount: Codeunit "Contoso GL Account";
+ CommonGLAccount: Codeunit "Create Common GL Account";
+ begin
+ InventorySetup.Get();
+
+ ContosoGLAccount.AddAccountForLocalization(CommonGLAccount.CustomerDomesticName(), '311100');
+ ContosoGLAccount.AddAccountForLocalization(CommonGLAccount.VendorDomesticName(), '321100');
+
+ ContosoGLAccount.AddAccountForLocalization(CommonGLAccount.SalesDomesticName(), '604110');
+ ContosoGLAccount.AddAccountForLocalization(CommonGLAccount.PurchaseDomesticName(), '131050');
+
+ ContosoGLAccount.AddAccountForLocalization(CommonGLAccount.SalesVATStandardName(), '343521');
+ ContosoGLAccount.AddAccountForLocalization(CommonGLAccount.PurchaseVATStandardName(), '343121');
+
+ ContosoGLAccount.AddAccountForLocalization(CommonGLAccount.DirectCostAppliedRawMatName(), '111100');
+ ContosoGLAccount.AddAccountForLocalization(CommonGLAccount.DirectCostAppliedRetailName(), '131050');
+
+ ContosoGLAccount.AddAccountForLocalization(CommonGLAccount.OverheadAppliedRawMatName(), '501990');
+ ContosoGLAccount.AddAccountForLocalization(CommonGLAccount.OverheadAppliedRetailName(), '501990');
+
+ ContosoGLAccount.AddAccountForLocalization(CommonGLAccount.PurchaseVarianceRawMatName(), '112200');
+ ContosoGLAccount.AddAccountForLocalization(CommonGLAccount.PurchaseVarianceRetailName(), '132200');
+
+ ContosoGLAccount.AddAccountForLocalization(CommonGLAccount.InventoryAdjRawMatName(), '131950');
+ ContosoGLAccount.AddAccountForLocalization(CommonGLAccount.InventoryAdjRetailName(), '131450');
+
+ ContosoGLAccount.AddAccountForLocalization(CommonGLAccount.RawMaterialsName(), '112100');
+ ContosoGLAccount.AddAccountForLocalization(CommonGLAccount.PurchRawMatDomName(), '131500');
+
+ ContosoGLAccount.AddAccountForLocalization(CommonGLAccount.ResalesName(), '132100');
+ if InventorySetup."Expected Cost Posting to G/L" then
+ ContosoGLAccount.AddAccountForLocalization(CommonGLAccount.ResaleInterimName(), '132110')
+ else
+ ContosoGLAccount.AddAccountForLocalization(CommonGLAccount.ResaleInterimName(), '');
+ end;
+
+ [EventSubscriber(ObjectType::Codeunit, Codeunit::"Create Svc GL Account", 'OnAfterAddGLAccountsForLocalization', '', false, false)]
+ local procedure ModifyServiceGLAccounts()
+ var
+ ContosoGLAccount: Codeunit "Contoso GL Account";
+ SvcGLAccount: Codeunit "Create Svc GL Account";
+ begin
+ ContosoGLAccount.AddAccountForLocalization(SvcGLAccount.ServiceContractSaleName(), '602220');
+ end;
+
+ [EventSubscriber(ObjectType::Codeunit, Codeunit::"Create Mfg GL Account", 'OnAfterAddGLAccountsForLocalization', '', false, false)]
+ local procedure ModifyManufacturingGLAccounts()
+ var
+ ContosoGLAccount: Codeunit "Contoso GL Account";
+ MfgGLAccount: Codeunit "Create Mfg GL Account";
+ begin
+ ContosoGLAccount.AddAccountForLocalization(MfgGLAccount.DirectCostAppliedCapName(), '518900');
+ ContosoGLAccount.AddAccountForLocalization(MfgGLAccount.OverheadAppliedCapName(), '511200');
+ ContosoGLAccount.AddAccountForLocalization(MfgGLAccount.PurchaseVarianceCapName(), '511300');
+
+ ContosoGLAccount.AddAccountForLocalization(MfgGLAccount.MaterialVarianceName(), '581100');
+ ContosoGLAccount.AddAccountForLocalization(MfgGLAccount.CapacityVarianceName(), '581200');
+ ContosoGLAccount.AddAccountForLocalization(MfgGLAccount.SubcontractedVarianceName(), '581400');
+ ContosoGLAccount.AddAccountForLocalization(MfgGLAccount.CapOverheadVarianceName(), '581300');
+ ContosoGLAccount.AddAccountForLocalization(MfgGLAccount.MfgOverheadVarianceName(), '581300');
+
+ ContosoGLAccount.AddAccountForLocalization(MfgGLAccount.FinishedGoodsName(), '123100');
+ ContosoGLAccount.AddAccountForLocalization(MfgGLAccount.WIPAccountFinishedGoodsName(), '121100');
+ end;
+
+
+ [EventSubscriber(ObjectType::Codeunit, Codeunit::"Create FA GL Account", 'OnAfterAddGLAccountsForLocalization', '', false, false)]
+ local procedure ModifyFixedAssetGLAccounts()
+ var
+ ContosoGLAccount: Codeunit "Contoso GL Account";
+ FAGLAccount: Codeunit "Create FA GL Account";
+ FixedAssetModuleCZ: Codeunit "Fixed Asset Module CZ";
+ begin
+ ContosoGLAccount.AddAccountForLocalization(FAGLAccount.IncreasesDuringTheYearName(), '');
+ ContosoGLAccount.AddAccountForLocalization(FAGLAccount.DecreasesDuringTheYearName(), '022300');
+ ContosoGLAccount.AddAccountForLocalization(FAGLAccount.AccumDepreciationBuildingsName(), '082300');
+ ContosoGLAccount.AddAccountForLocalization(FAGLAccount.MiscellaneousName(), '511100');
+ ContosoGLAccount.AddAccountForLocalization(FAGLAccount.DepreciationEquipmentName(), '551300');
+ ContosoGLAccount.AddAccountForLocalization(FAGLAccount.GainsAndLossesName(), '022300');
+
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.AcquisitionCostBuildingsName(), '021100');
+ ContosoGLAccount.InsertGLAccount(FixedAssetModuleCZ.AcquisitionCostBuildings(), FixedAssetModuleCZ.AcquisitionCostBuildingsName(), Enum::"G/L Account Income/Balance"::"Balance Sheet", Enum::"G/L Account Category"::Assets, Enum::"G/L Account Type"::Posting);
+ ContosoGLAccount.AddAccountForLocalization(FAGLAccount.AccumDepreciationBuildingsName(), '081100');
+ ContosoGLAccount.InsertGLAccount(FAGLAccount.AccumDepreciationBuildings(), FAGLAccount.AccumDepreciationBuildingsName(), Enum::"G/L Account Income/Balance"::"Balance Sheet", Enum::"G/L Account Category"::Assets, Enum::"G/L Account Type"::Posting);
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.WriteDownBuildingsName(), '021100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.Custom2BuildingsName(), '042100');
+ ContosoGLAccount.InsertGLAccount(FixedAssetModuleCZ.Custom2Buildings(), FixedAssetModuleCZ.Custom2BuildingsName(), Enum::"G/L Account Income/Balance"::"Balance Sheet", Enum::"G/L Account Category"::Assets, Enum::"G/L Account Type"::Posting);
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.AcqCostonDisposalBuildingsName(), '021100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.AccumDepronDisposalBuildingsName(), '081100');
+ ContosoGLAccount.InsertGLAccount(FixedAssetModuleCZ.AccumDepronDisposalBuildings(), FixedAssetModuleCZ.AccumDepronDisposalBuildingsName(), Enum::"G/L Account Income/Balance"::"Balance Sheet", Enum::"G/L Account Category"::Assets, Enum::"G/L Account Type"::Posting);
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.WriteDownonDisposalBuildingsName(), '021100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.Custom2onDisposalBuildingsName(), '042100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.GainsonDisposalBuildingsName(), '551900');
+ ContosoGLAccount.InsertGLAccount(FixedAssetModuleCZ.GainsonDisposalBuildings(), FixedAssetModuleCZ.GainsonDisposalBuildingsName(), Enum::"G/L Account Income/Balance"::"Income Statement", Enum::"G/L Account Category"::Expense, Enum::"G/L Account Type"::Posting);
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.LossesonDisposalBuildingsName(), '551900');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.BookValonDispGainBuildingsName(), '541100');
+ ContosoGLAccount.InsertGLAccount(FixedAssetModuleCZ.BookValonDispGainBuildings(), FixedAssetModuleCZ.BookValonDispGainBuildingsName(), Enum::"G/L Account Income/Balance"::"Income Statement", Enum::"G/L Account Category"::Expense, Enum::"G/L Account Type"::Posting);
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.BookValonDispLossBuildingsName(), '541100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.SalesonDispGainBuildingsName(), '081100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.SalesonDispLossBuildingsName(), '081100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.MaintenanceExpenseBuildingsName(), '511100');
+ ContosoGLAccount.InsertGLAccount(FixedAssetModuleCZ.MaintenanceExpenseBuildings(), FixedAssetModuleCZ.MaintenanceExpenseBuildingsName(), Enum::"G/L Account Income/Balance"::"Income Statement", Enum::"G/L Account Category"::Expense, Enum::"G/L Account Type"::Posting);
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.AcquisitionCostBalBuildingsName(), '042100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.DepreciationExpenseBuildingsName(), '551100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.AcqusitionCostBalonDisposalBuildingsName(), '081100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.ApprecBalonDispBuildingsName(), '081100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.AppreciationonDisposalBuildingsName(), '021100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.AppreciationBuildingsName(), '021100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.AppreciationBalBuildingsName(), '042100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.SalesBalBuildingsName(), '395100');
+ ContosoGLAccount.InsertGLAccount(FixedAssetModuleCZ.SalesBalBuildings(), FixedAssetModuleCZ.SalesBalBuildingsName(), Enum::"G/L Account Income/Balance"::"Balance Sheet", Enum::"G/L Account Category"::Assets, Enum::"G/L Account Type"::Posting);
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.BookValueBalonDisposalBuildingsName(), '081100');
+
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.AcquisitionCostGoodwillName(), '015100');
+ ContosoGLAccount.InsertGLAccount(FixedAssetModuleCZ.AcquisitionCostGoodwill(), FixedAssetModuleCZ.AcquisitionCostGoodwillName(), Enum::"G/L Account Income/Balance"::"Balance Sheet", Enum::"G/L Account Category"::Assets, Enum::"G/L Account Type"::Posting);
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.AccumDepreciationGoodwillName(), '075100');
+ ContosoGLAccount.InsertGLAccount(FixedAssetModuleCZ.AccumDepreciationGoodwill(), FixedAssetModuleCZ.AccumDepreciationGoodwillName(), Enum::"G/L Account Income/Balance"::"Balance Sheet", Enum::"G/L Account Category"::Assets, Enum::"G/L Account Type"::Posting);
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.WriteDownGoodwillName(), '015100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.Custom2GoodwillName(), '041100');
+ ContosoGLAccount.InsertGLAccount(FixedAssetModuleCZ.Custom2Goodwill(), FixedAssetModuleCZ.Custom2GoodwillName(), Enum::"G/L Account Income/Balance"::"Balance Sheet", Enum::"G/L Account Category"::Assets, Enum::"G/L Account Type"::Posting);
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.AcqCostonDisposalGoodwillName(), '015100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.AccumDepronDisposalGoodwillName(), '075100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.WriteDownonDisposalGoodwillName(), '015100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.Custom2onDisposalGoodwillName(), '041100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.GainsonDisposalGoodwillName(), '551900');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.LossesonDisposalGoodwillName(), '551900');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.BookValonDispGainGoodwillName(), '541100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.BookValonDispLossGoodwillName(), '541100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.SalesonDispGainGoodwillName(), '075100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.SalesonDispLossGoodwillName(), '075100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.MaintenanceExpenseGoodwillName(), '511100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.AcquisitionCostBalGoodwillName(), '041100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.DepreciationExpenseGoodwillName(), '551700');
+ ContosoGLAccount.InsertGLAccount(FixedAssetModuleCZ.DepreciationExpenseGoodwill(), FixedAssetModuleCZ.DepreciationExpenseGoodwillName(), Enum::"G/L Account Income/Balance"::"Income Statement", Enum::"G/L Account Category"::Expense, Enum::"G/L Account Type"::Posting);
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.AcqusitionCostBalonDisposalGoodwillName(), '075100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.ApprecBalonDispGoodwillName(), '075100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.AppreciationonDisposalGoodwillName(), '015100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.AppreciationGoodwillName(), '015100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.AppreciationBalGoodwillName(), '041100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.SalesBalGoodwillName(), '395100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.BookValueBalonDisposalGoodwillName(), '075100');
+
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.AcquisitionCostVehiclesName(), '022300');
+ ContosoGLAccount.InsertGLAccount(FixedAssetModuleCZ.AcquisitionCostVehicles(), FixedAssetModuleCZ.AcquisitionCostVehiclesName(), Enum::"G/L Account Income/Balance"::"Balance Sheet", Enum::"G/L Account Category"::Assets, Enum::"G/L Account Type"::Posting);
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.AccumDepreciationVehiclesName(), '082300');
+ ContosoGLAccount.InsertGLAccount(FixedAssetModuleCZ.AccumDepreciationVehicles(), FixedAssetModuleCZ.AccumDepreciationVehiclesName(), Enum::"G/L Account Income/Balance"::"Balance Sheet", Enum::"G/L Account Category"::Assets, Enum::"G/L Account Type"::Posting);
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.WriteDownVehiclesName(), '022300');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.Custom2VehiclesName(), '042300');
+ ContosoGLAccount.InsertGLAccount(FixedAssetModuleCZ.Custom2Vehicles(), FixedAssetModuleCZ.Custom2VehiclesName(), Enum::"G/L Account Income/Balance"::"Balance Sheet", Enum::"G/L Account Category"::Assets, Enum::"G/L Account Type"::Posting);
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.AcqCostonDisposalVehiclesName(), '022300');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.AccumDepronDisposalVehiclesName(), '082300');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.WriteDownonDisposalVehiclesName(), '022300');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.Custom2onDisposalVehiclesName(), '042300');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.GainsonDisposalVehiclesName(), '551900');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.LossesonDisposalVehiclesName(), '551900');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.BookValonDispGainVehiclesName(), '541100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.BookValonDispLossVehiclesName(), '541100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.SalesonDispGainVehiclesName(), '082300');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.SalesonDispLossVehiclesName(), '082300');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.MaintenanceExpenseVehiclesName(), '511100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.AcquisitionCostBalVehiclesName(), '042300');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.DepreciationExpenseVehiclesName(), '551300');
+ ContosoGLAccount.InsertGLAccount(FixedAssetModuleCZ.DepreciationExpenseVehicles(), FixedAssetModuleCZ.DepreciationExpenseVehiclesName(), Enum::"G/L Account Income/Balance"::"Income Statement", Enum::"G/L Account Category"::Expense, Enum::"G/L Account Type"::Posting);
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.AcqusitionCostBalonDisposalVehiclesName(), '082300');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.ApprecBalonDispVehiclesName(), '082300');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.AppreciationonDisposalVehiclesName(), '022300');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.AppreciationVehiclesName(), '022300');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.AppreciationBalVehiclesName(), '042300');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.SalesBalVehiclesName(), '395100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.BookValueBalonDisposalVehiclesName(), '082300');
+
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.AcquisitionCostEquipmentName(), '022100');
+ ContosoGLAccount.InsertGLAccount(FixedAssetModuleCZ.AcquisitionCostEquipment(), FixedAssetModuleCZ.AcquisitionCostEquipmentName(), Enum::"G/L Account Income/Balance"::"Balance Sheet", Enum::"G/L Account Category"::Assets, Enum::"G/L Account Type"::Posting);
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.AccumDepreciationEquipmentName(), '082100');
+ ContosoGLAccount.InsertGLAccount(FixedAssetModuleCZ.AccumDepreciationEquipment(), FixedAssetModuleCZ.AccumDepreciationEquipmentName(), Enum::"G/L Account Income/Balance"::"Balance Sheet", Enum::"G/L Account Category"::Assets, Enum::"G/L Account Type"::Posting);
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.WriteDownEquipmentName(), '022100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.Custom2EquipmentName(), '042200');
+ ContosoGLAccount.InsertGLAccount(FixedAssetModuleCZ.Custom2Equipment(), FixedAssetModuleCZ.Custom2EquipmentName(), Enum::"G/L Account Income/Balance"::"Balance Sheet", Enum::"G/L Account Category"::Assets, Enum::"G/L Account Type"::Posting);
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.AcqCostonDisposalEquipmentName(), '022100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.AccumDepronDisposalEquipmentName(), '082100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.WriteDownonDisposalEquipmentName(), '022100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.Custom2onDisposalEquipmentName(), '042200');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.GainsonDisposalEquipmentName(), '551900');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.LossesonDisposalEquipmentName(), '551900');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.BookValonDispGainEquipmentName(), '541100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.BookValonDispLossEquipmentName(), '541100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.SalesonDispGainEquipmentName(), '082100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.SalesonDispLossEquipmentName(), '082100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.MaintenanceExpenseEquipmentName(), '511100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.AcquisitionCostBalEquipmentName(), '042200');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.DepreciationExpenseEquipmentName(), '551200');
+ ContosoGLAccount.InsertGLAccount(FixedAssetModuleCZ.DepreciationExpenseEquipment(), FixedAssetModuleCZ.DepreciationExpenseEquipmentName(), Enum::"G/L Account Income/Balance"::"Income Statement", Enum::"G/L Account Category"::Expense, Enum::"G/L Account Type"::Posting);
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.AcqusitionCostBalonDisposalEquipmentName(), '082100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.ApprecBalonDispEquipmentName(), '082100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.AppreciationonDisposalEquipmentName(), '022100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.AppreciationEquipmentName(), '022100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.AppreciationBalEquipmentName(), '042200');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.SalesBalEquipmentName(), '395100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.BookValueBalonDisposalEquipmentName(), '082100');
+
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.AcquisitionCostPatentsName(), '012100');
+ ContosoGLAccount.InsertGLAccount(FixedAssetModuleCZ.AcquisitionCostPatents(), FixedAssetModuleCZ.AcquisitionCostPatentsName(), Enum::"G/L Account Income/Balance"::"Balance Sheet", Enum::"G/L Account Category"::Assets, Enum::"G/L Account Type"::Posting);
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.AccumDepreciationPatentsName(), '072100');
+ ContosoGLAccount.InsertGLAccount(FixedAssetModuleCZ.AccumDepreciationPatents(), FixedAssetModuleCZ.AccumDepreciationPatentsName(), Enum::"G/L Account Income/Balance"::"Balance Sheet", Enum::"G/L Account Category"::Assets, Enum::"G/L Account Type"::Posting);
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.WriteDownPatentsName(), '012100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.Custom2PatentsName(), '041100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.AcqCostonDisposalPatentsName(), '012100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.AccumDepronDisposalPatentsName(), '072100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.WriteDownonDisposalPatentsName(), '012100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.Custom2onDisposalPatentsName(), '041100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.GainsonDisposalPatentsName(), '551900');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.LossesonDisposalPatentsName(), '551900');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.BookValonDispGainPatentsName(), '541100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.BookValonDispLossPatentsName(), '541100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.SalesonDispGainPatentsName(), '072100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.SalesonDispLossPatentsName(), '072100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.MaintenanceExpensePatentsName(), '511100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.AcquisitionCostBalPatentsName(), '041100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.DepreciationExpensePatentsName(), '551400');
+ ContosoGLAccount.InsertGLAccount(FixedAssetModuleCZ.DepreciationExpensePatents(), FixedAssetModuleCZ.DepreciationExpensePatentsName(), Enum::"G/L Account Income/Balance"::"Income Statement", Enum::"G/L Account Category"::Expense, Enum::"G/L Account Type"::Posting);
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.AcqusitionCostBalonDisposalPatentsName(), '072100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.ApprecBalonDispPatentsName(), '072100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.AppreciationonDisposalPatentsName(), '012100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.AppreciationPatentsName(), '012100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.AppreciationBalPatentsName(), '041100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.SalesBalPatentsName(), '395100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.BookValueBalonDisposalPatentsName(), '072100');
+
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.AcquisitionCostSoftwareName(), '013100');
+ ContosoGLAccount.InsertGLAccount(FixedAssetModuleCZ.AcquisitionCostSoftware(), FixedAssetModuleCZ.AcquisitionCostSoftwareName(), Enum::"G/L Account Income/Balance"::"Balance Sheet", Enum::"G/L Account Category"::Assets, Enum::"G/L Account Type"::Posting);
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.AccumDepreciationSoftwareName(), '073100');
+ ContosoGLAccount.InsertGLAccount(FixedAssetModuleCZ.AccumDepreciationSoftware(), FixedAssetModuleCZ.AccumDepreciationSoftwareName(), Enum::"G/L Account Income/Balance"::"Balance Sheet", Enum::"G/L Account Category"::Assets, Enum::"G/L Account Type"::Posting);
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.WriteDownSoftwareName(), '013100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.Custom2SoftwareName(), '041100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.AcqCostonDisposalSoftwareName(), '013100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.AccumDepronDisposalSoftwareName(), '073100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.WriteDownonDisposalSoftwareName(), '013100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.Custom2onDisposalSoftwareName(), '041100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.GainsonDisposalSoftwareName(), '551900');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.LossesonDisposalSoftwareName(), '551900');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.BookValonDispGainSoftwareName(), '541100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.BookValonDispLossSoftwareName(), '541100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.SalesonDispGainSoftwareName(), '073100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.SalesonDispLossSoftwareName(), '073100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.MaintenanceExpenseSoftwareName(), '511100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.AcquisitionCostBalSoftwareName(), '041100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.DepreciationExpenseSoftwareName(), '551500');
+ ContosoGLAccount.InsertGLAccount(FixedAssetModuleCZ.DepreciationExpenseSoftware(), FixedAssetModuleCZ.DepreciationExpenseSoftwareName(), Enum::"G/L Account Income/Balance"::"Income Statement", Enum::"G/L Account Category"::Expense, Enum::"G/L Account Type"::Posting);
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.AcqusitionCostBalonDisposalSoftwareName(), '073100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.ApprecBalonDispSoftwareName(), '073100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.AppreciationonDisposalSoftwareName(), '013100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.AppreciationSoftwareName(), '013100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.AppreciationBalSoftwareName(), '041100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.SalesBalSoftwareName(), '395100');
+ ContosoGLAccount.AddAccountForLocalization(FixedAssetModuleCZ.BookValueBalonDisposalSoftwareName(), '073100');
+ end;
+
+ [EventSubscriber(ObjectType::Codeunit, Codeunit::"Create HR GL Account", 'OnAfterAddGLAccountsForLocalization', '', false, false)]
+ local procedure ModifyHumanResourcesGLAccounts()
+ var
+ ContosoGLAccount: Codeunit "Contoso GL Account";
+ HRGLAccount: Codeunit "Create HR GL Account";
+ begin
+ ContosoGLAccount.AddAccountForLocalization(HRGLAccount.EmployeesPayableName(), '333100');
+ end;
+
+ [EventSubscriber(ObjectType::Codeunit, Codeunit::"Create Job GL Account", 'OnAfterAddGLAccountsForLocalization', '', false, false)]
+ local procedure ModifyJobGLAccounts()
+ var
+ ContosoGLAccount: Codeunit "Contoso GL Account";
+ JobGLAccount: Codeunit "Create Job GL Account";
+ begin
+ ContosoGLAccount.AddAccountForLocalization(JobGLAccount.WIPInvoicedSalesName(), '121100');
+ ContosoGLAccount.AddAccountForLocalization(JobGLAccount.WIPJobCostsName(), '121100');
+
+ ContosoGLAccount.AddAccountForLocalization(JobGLAccount.JobSalesAppliedName(), '602500');
+ ContosoGLAccount.AddAccountForLocalization(JobGLAccount.RecognizedSalesName(), '602500');
+
+ ContosoGLAccount.AddAccountForLocalization(JobGLAccount.JobCostsAppliedName(), '581100');
+ ContosoGLAccount.AddAccountForLocalization(JobGLAccount.RecognizedCostsName(), '581100');
+ end;
+}
\ No newline at end of file
diff --git a/Apps/CZ/ContosoCoffeeDemoDatasetCZ/app/Codeunits/FixedAssetModuleCZ.Codeunit.al b/Apps/CZ/ContosoCoffeeDemoDatasetCZ/app/Codeunits/FixedAssetModuleCZ.Codeunit.al
new file mode 100644
index 0000000000..933b195272
--- /dev/null
+++ b/Apps/CZ/ContosoCoffeeDemoDatasetCZ/app/Codeunits/FixedAssetModuleCZ.Codeunit.al
@@ -0,0 +1,1561 @@
+codeunit 31213 "Fixed Asset Module CZ"
+{
+ InherentEntitlements = X;
+ InherentPermissions = X;
+
+ Access = Internal;
+
+ [EventSubscriber(ObjectType::Codeunit, Codeunit::"Contoso Demo Tool", 'OnAfterGeneratingDemoData', '', false, false)]
+ local procedure LocalizationFA(Module: Enum "Contoso Demo Data Module"; ContosoDemoDataLevel: Enum "Contoso Demo Data Level")
+ var
+ ContosoFixedAsset: Codeunit "Contoso Fixed Asset";
+ CreateFAPostingGroup: Codeunit "Create FA Posting Group";
+ FAGLAccount: Codeunit "Create FA GL Account";
+ begin
+ if Module = Enum::"Contoso Demo Data Module"::"Fixed Asset Module" then
+ if ContosoDemoDataLevel = Enum::"Contoso Demo Data Level"::"Setup Data" then begin
+ ContosoFixedAsset.SetOverwriteData(true);
+
+ InsertFAPostingGroup(CreateFAPostingGroup.Property(), AcquisitionCostBuildings(), FAGLAccount.AccumDepreciationBuildings(), WriteDownBuildings(), Custom2Buildings(), AcqCostonDisposalBuildings(), AccumDepronDisposalBuildings(), WriteDownonDisposalBuildings(), Custom2onDisposalBuildings(), GainsonDisposalBuildings(), LossesonDisposalBuildings(), BookValonDispGainBuildings(), BookValonDispLossBuildings(), SalesonDispGainBuildings(), SalesonDispLossBuildings(), MaintenanceExpenseBuildings(),
+ DepreciationExpenseBuildings(), AcquisitionCostBalBuildings(), AcqusitionCostBalonDisposalBuildings(), ApprecBalonDispBuildings(), AppreciationonDisposalBuildings(), AppreciationBuildings(), AppreciationBalBuildings(), SalesBalBuildings(), BookValueBalonDisposalBuildings());
+
+ InsertFAPostingGroup(CreateFAPostingGroup.Goodwill(), AcquisitionCostGoodwill(), AccumDepreciationGoodwill(), WriteDownGoodwill(), Custom2Goodwill(), AcqCostonDisposalGoodwill(), AccumDepronDisposalGoodwill(), WriteDownonDisposalGoodwill(), Custom2onDisposalGoodwill(), GainsonDisposalGoodwill(), LossesonDisposalGoodwill(), BookValonDispGainGoodwill(), BookValonDispLossGoodwill(), SalesonDispGainGoodwill(), SalesonDispLossGoodwill(), MaintenanceExpenseGoodwill(),
+ DepreciationExpenseGoodwill(), AcquisitionCostBalGoodwill(), AcqusitionCostBalonDisposalGoodwill(), ApprecBalonDispGoodwill(), AppreciationonDisposalGoodwill(), AppreciationGoodwill(), AppreciationBalGoodwill(), SalesBalGoodwill(), BookValueBalonDisposalGoodwill());
+
+ InsertFAPostingGroup(CreateFAPostingGroup.Vehicles(), AcquisitionCostVehicles(), AccumDepreciationVehicles(), WriteDownVehicles(), Custom2Vehicles(), AcqCostonDisposalVehicles(), AccumDepronDisposalVehicles(), WriteDownonDisposalVehicles(), Custom2onDisposalVehicles(), GainsonDisposalVehicles(), LossesonDisposalVehicles(), BookValonDispGainVehicles(), BookValonDispLossVehicles(), SalesonDispGainVehicles(), SalesonDispLossVehicles(), MaintenanceExpenseVehicles(),
+ DepreciationExpenseVehicles(), AcquisitionCostBalVehicles(), AcqusitionCostBalonDisposalVehicles(), ApprecBalonDispVehicles(), AppreciationonDisposalVehicles(), AppreciationVehicles(), AppreciationBalVehicles(), SalesBalVehicles(), BookValueBalonDisposalVehicles());
+
+ InsertFAPostingGroup(CreateFAPostingGroup.Equipment(), AcquisitionCostEquipment(), AccumDepreciationEquipment(), WriteDownEquipment(), Custom2Equipment(), AcqCostonDisposalEquipment(), AccumDepronDisposalEquipment(), WriteDownonDisposalEquipment(), Custom2onDisposalEquipment(), GainsonDisposalEquipment(), LossesonDisposalEquipment(), BookValonDispGainEquipment(), BookValonDispLossEquipment(), SalesonDispGainEquipment(), SalesonDispLossEquipment(), MaintenanceExpenseEquipment(),
+ DepreciationExpenseEquipment(), AcquisitionCostBalEquipment(), AcqusitionCostBalonDisposalEquipment(), ApprecBalonDispEquipment(), AppreciationonDisposalEquipment(), AppreciationEquipment(), AppreciationBalEquipment(), SalesBalEquipment(), BookValueBalonDisposalEquipment());
+
+ InsertFAPostingGroup(Furniture(), AcquisitionCostEquipment(), AccumDepreciationEquipment(), WriteDownEquipment(), Custom2Equipment(), AcqCostonDisposalEquipment(), AccumDepronDisposalEquipment(), WriteDownonDisposalEquipment(), Custom2onDisposalEquipment(), GainsonDisposalEquipment(), LossesonDisposalEquipment(), BookValonDispGainEquipment(), BookValonDispLossEquipment(), SalesonDispGainEquipment(), SalesonDispLossEquipment(), MaintenanceExpenseEquipment(),
+ DepreciationExpenseEquipment(), AcquisitionCostBalEquipment(), AcqusitionCostBalonDisposalEquipment(), ApprecBalonDispEquipment(), AppreciationonDisposalEquipment(), AppreciationEquipment(), AppreciationBalEquipment(), SalesBalEquipment(), BookValueBalonDisposalEquipment());
+
+ InsertFAPostingGroup(Patents(), AcquisitionCostPatents(), AccumDepreciationPatents(), WriteDownPatents(), Custom2Patents(), AcqCostonDisposalPatents(), AccumDepronDisposalPatents(), WriteDownonDisposalPatents(), Custom2onDisposalPatents(), GainsonDisposalPatents(), LossesonDisposalPatents(), BookValonDispGainPatents(), BookValonDispLossPatents(), SalesonDispGainPatents(), SalesonDispLossPatents(), MaintenanceExpensePatents(),
+ DepreciationExpensePatents(), AcquisitionCostBalPatents(), AcqusitionCostBalonDisposalPatents(), ApprecBalonDispPatents(), AppreciationonDisposalPatents(), AppreciationPatents(), AppreciationBalPatents(), SalesBalPatents(), BookValueBalonDisposalPatents());
+
+ InsertFAPostingGroup(Software(), AcquisitionCostSoftware(), AccumDepreciationSoftware(), WriteDownSoftware(), Custom2Software(), AcqCostonDisposalSoftware(), AccumDepronDisposalSoftware(), WriteDownonDisposalSoftware(), Custom2onDisposalSoftware(), GainsonDisposalSoftware(), LossesonDisposalSoftware(), BookValonDispGainSoftware(), BookValonDispLossSoftware(), SalesonDispGainSoftware(), SalesonDispLossSoftware(), MaintenanceExpenseSoftware(),
+ DepreciationExpenseSoftware(), AcquisitionCostBalSoftware(), AcqusitionCostBalonDisposalSoftware(), ApprecBalonDispSoftware(), AppreciationonDisposalSoftware(), AppreciationSoftware(), AppreciationBalSoftware(), SalesBalSoftware(), BookValueBalonDisposalSoftware());
+
+ ContosoFixedAsset.SetOverwriteData(false);
+ end;
+ end;
+
+ procedure InsertFAPostingGroup(GroupCode: Code[20]; AcquisitionCostAccount: Code[20]; AccumDepreciationAccount: Code[20]; WriteDownAccount: Code[20]; Custom2Account: Code[20]; AcqCostAccOnDisposal: Code[20]; AccumDeprAccOnDisposal: Code[20]; WriteDownAccOnDisposal: Code[20]; Custom2AccountOnDisposal: Code[20]; GainsAccOnDisposal: Code[20]; LossesAccOnDisposal: Code[20]; BookValAccOnDispGain: Code[20]; BookValAccOnDispLoss: Code[20];
+ SalesAccOnDispGain: Code[20]; SalesAccOnDispLoss: Code[20]; MaintenanceExpenseAccount: Code[20]; DepreciationExpenseAcc: Code[20]; AcquisitionCostBalAcc: Code[20]; AcqCostBalAccDispCZF: Code[20]; ApprecBalAccOnDisp: Code[20]; AppreciationAccOnDisposal: Code[20]; AppreciationAccount: Code[20]; AppreciationBalAccount: Code[20]; SalesBalAcc: Code[20]; BookValueBalAccOnDisposal: Code[20])
+ var
+ FAPostingGroup: Record "FA Posting Group";
+ Exists: Boolean;
+ begin
+ if FAPostingGroup.Get(GroupCode) then
+ Exists := true;
+
+ FAPostingGroup.Validate(Code, GroupCode);
+ FAPostingGroup.Validate("Acquisition Cost Account", AcquisitionCostAccount);
+ FAPostingGroup.Validate("Accum. Depreciation Account", AccumDepreciationAccount);
+ FAPostingGroup.Validate("Write-Down Account", WriteDownAccount);
+ FAPostingGroup.Validate("Custom 2 Account", Custom2Account);
+ FAPostingGroup.Validate("Acq. Cost Acc. on Disposal", AcqCostAccOnDisposal);
+ FAPostingGroup.Validate("Accum. Depr. Acc. on Disposal", AccumDeprAccOnDisposal);
+ FAPostingGroup.Validate("Write-Down Acc. on Disposal", WriteDownAccOnDisposal);
+ FAPostingGroup.Validate("Custom 2 Account on Disposal", Custom2AccountOnDisposal);
+ FAPostingGroup.Validate("Gains Acc. on Disposal", GainsAccOnDisposal);
+ FAPostingGroup.Validate("Losses Acc. on Disposal", LossesAccOnDisposal);
+ FAPostingGroup.Validate("Book Val. Acc. on Disp. (Gain)", BookValAccOnDispGain);
+ FAPostingGroup.Validate("Book Val. Acc. on Disp. (Loss)", BookValAccOnDispLoss);
+ FAPostingGroup.Validate("Sales Acc. on Disp. (Gain)", SalesAccOnDispGain);
+ FAPostingGroup.Validate("Sales Acc. on Disp. (Loss)", SalesAccOnDispLoss);
+ FAPostingGroup.Validate("Maintenance Expense Account", MaintenanceExpenseAccount);
+ FAPostingGroup.Validate("Depreciation Expense Acc.", DepreciationExpenseAcc);
+ FAPostingGroup.Validate("Acquisition Cost Bal. Acc.", AcquisitionCostBalAcc);
+ FAPostingGroup.Validate("Acq. Cost Bal. Acc. Disp. CZF", AcqCostBalAccDispCZF);
+ FAPostingGroup.Validate("Apprec. Bal. Acc. on Disp.", ApprecBalAccOnDisp);
+ FAPostingGroup.Validate("Appreciation Acc. on Disposal", AppreciationAccOnDisposal);
+ FAPostingGroup.Validate("Appreciation Account", AppreciationAccount);
+ FAPostingGroup.Validate("Appreciation Bal. Account", AppreciationBalAccount);
+ FAPostingGroup.Validate("Sales Bal. Acc.", SalesBalAcc);
+ FAPostingGroup.Validate("Book Value Bal. Acc. Disp. CZF", BookValueBalAccOnDisposal);
+
+ if Exists then
+ FAPostingGroup.Modify(true)
+ else
+ FAPostingGroup.Insert(true);
+ end;
+
+ procedure Furniture(): Code[20]
+ begin
+ exit(FurnitureLbl);
+ end;
+
+ procedure Patents(): Code[20]
+ begin
+ exit(PatentsLbl);
+ end;
+
+ procedure Software(): Code[20]
+ begin
+ exit(SoftwareLbl);
+ end;
+
+ procedure AcquisitionCostBuildingsName(): Text[100]
+ begin
+ exit(BuildingsLbl);
+ end;
+
+ procedure AcquisitionCostBuildings(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(AcquisitionCostBuildingsName()));
+ end;
+
+ procedure WriteDownBuildingsName(): Text[100]
+ begin
+ exit(BuildingsLbl);
+ end;
+
+ procedure WriteDownBuildings(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(WriteDownBuildingsName()));
+ end;
+
+ procedure Custom2BuildingsName(): Text[100]
+ begin
+ exit(AcquisitionofbuildingsLbl);
+ end;
+
+ procedure Custom2Buildings(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(Custom2BuildingsName()));
+ end;
+
+ procedure AcqCostonDisposalBuildingsName(): Text[100]
+ begin
+ exit(BuildingsLbl);
+ end;
+
+ procedure AcqCostonDisposalBuildings(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(AcqCostonDisposalBuildingsName()));
+ end;
+
+ procedure AccumDepronDisposalBuildingsName(): Text[100]
+ begin
+ exit(AccumulateddepreciationofbuildingsLbl);
+ end;
+
+ procedure AccumDepronDisposalBuildings(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(AccumDepronDisposalBuildingsName()));
+ end;
+
+ procedure WriteDownonDisposalBuildingsName(): Text[100]
+ begin
+ exit(BuildingsLbl);
+ end;
+
+ procedure WriteDownonDisposalBuildings(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(WriteDownonDisposalBuildingsName()));
+ end;
+
+ procedure Custom2onDisposalBuildingsName(): Text[100]
+ begin
+ exit(AcquisitionofbuildingsLbl);
+ end;
+
+ procedure Custom2onDisposalBuildings(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(Custom2onDisposalBuildingsName()));
+ end;
+
+ procedure GainsonDisposalBuildingsName(): Text[100]
+ begin
+ exit(NetbookvalueoffixedassetsdisposedLbl);
+ end;
+
+ procedure GainsonDisposalBuildings(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(GainsonDisposalBuildingsName()));
+ end;
+
+ procedure LossesonDisposalBuildingsName(): Text[100]
+ begin
+ exit(NetbookvalueoffixedassetsdisposedLbl);
+ end;
+
+ procedure LossesonDisposalBuildings(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(LossesonDisposalBuildingsName()));
+ end;
+
+ procedure BookValonDispGainBuildingsName(): Text[100]
+ begin
+ exit(NetbookvalueoffixedassetssoldLbl);
+ end;
+
+ procedure BookValonDispGainBuildings(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(BookValonDispGainBuildingsName()));
+ end;
+
+ procedure BookValonDispLossBuildingsName(): Text[100]
+ begin
+ exit(NetbookvalueoffixedassetssoldLbl);
+ end;
+
+ procedure BookValonDispLossBuildings(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(BookValonDispLossBuildingsName()));
+ end;
+
+ procedure SalesonDispGainBuildingsName(): Text[100]
+ begin
+ exit(AccumulateddepreciationofbuildingsLbl);
+ end;
+
+ procedure SalesonDispGainBuildings(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(SalesonDispGainBuildingsName()));
+ end;
+
+ procedure SalesonDispLossBuildingsName(): Text[100]
+ begin
+ exit(AccumulateddepreciationofbuildingsLbl);
+ end;
+
+ procedure SalesonDispLossBuildings(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(SalesonDispLossBuildingsName()));
+ end;
+
+ procedure MaintenanceExpenseBuildingsName(): Text[100]
+ begin
+ exit(RepairsandMaintenanceLbl);
+ end;
+
+ procedure MaintenanceExpenseBuildings(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(MaintenanceExpenseBuildingsName()));
+ end;
+
+ procedure AcquisitionCostBalBuildingsName(): Text[100]
+ begin
+ exit(AcquisitionofbuildingsLbl);
+ end;
+
+ procedure AcquisitionCostBalBuildings(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(AcquisitionCostBalBuildingsName()));
+ end;
+
+ procedure DepreciationExpenseBuildingsName(): Text[100]
+ begin
+ exit(RepairsandMaintenanceLbl);
+ end;
+
+ procedure DepreciationExpenseBuildings(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(DepreciationExpenseBuildingsName()));
+ end;
+
+ procedure AcqusitionCostBalonDisposalBuildingsName(): Text[100]
+ begin
+ exit(AccumulateddepreciationofbuildingsLbl);
+ end;
+
+ procedure AcqusitionCostBalonDisposalBuildings(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(AcqusitionCostBalonDisposalBuildingsName()));
+ end;
+
+ procedure ApprecBalonDispBuildingsName(): Text[100]
+ begin
+ exit(AccumulateddepreciationofbuildingsLbl);
+ end;
+
+ procedure ApprecBalonDispBuildings(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(ApprecBalonDispBuildingsName()));
+ end;
+
+ procedure AppreciationonDisposalBuildingsName(): Text[100]
+ begin
+ exit(BuildingsLbl);
+ end;
+
+ procedure AppreciationonDisposalBuildings(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(AppreciationonDisposalBuildingsName()));
+ end;
+
+ procedure AppreciationBuildingsName(): Text[100]
+ begin
+ exit(BuildingsLbl);
+ end;
+
+ procedure AppreciationBuildings(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(AppreciationBuildingsName()));
+ end;
+
+ procedure AppreciationBalBuildingsName(): Text[100]
+ begin
+ exit(AcquisitionofbuildingsLbl);
+ end;
+
+ procedure AppreciationBalBuildings(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(AppreciationBalBuildingsName()));
+ end;
+
+ procedure SalesBalBuildingsName(): Text[100]
+ begin
+ exit(InternalsettlementLbl);
+ end;
+
+ procedure SalesBalBuildings(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(SalesBalBuildingsName()));
+ end;
+
+ procedure BookValueBalonDisposalBuildingsName(): Text[100]
+ begin
+ exit(AccumulateddepreciationofbuildingsLbl);
+ end;
+
+ procedure BookValueBalonDisposalBuildings(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(BookValueBalonDisposalBuildingsName()));
+ end;
+
+ procedure AcquisitionCostGoodwillName(): Text[100]
+ begin
+ exit(GoodwillLbl);
+ end;
+
+ procedure AcquisitionCostGoodwill(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(AcquisitionCostGoodwillName()));
+ end;
+
+ procedure WriteDownGoodwillName(): Text[100]
+ begin
+ exit(GoodwillLbl);
+ end;
+
+ procedure WriteDownGoodwill(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(WriteDownGoodwillName()));
+ end;
+
+ procedure AccumDepreciationGoodwillName(): Text[100]
+ begin
+ exit(CorrectionstogoodwillLbl);
+ end;
+
+ procedure AccumDepreciationGoodwill(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(AccumDepreciationGoodwillName()));
+ end;
+
+ procedure Custom2GoodwillName(): Text[100]
+ begin
+ exit(AcquisitionofintangiblefixedassetsLbl);
+ end;
+
+ procedure Custom2Goodwill(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(Custom2GoodwillName()));
+ end;
+
+ procedure AcqCostonDisposalGoodwillName(): Text[100]
+ begin
+ exit(GoodwillLbl);
+ end;
+
+ procedure AcqCostonDisposalGoodwill(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(AcqCostonDisposalGoodwillName()));
+ end;
+
+ procedure AccumDepronDisposalGoodwillName(): Text[100]
+ begin
+ exit(CorrectionstogoodwillLbl);
+ end;
+
+ procedure AccumDepronDisposalGoodwill(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(AccumDepronDisposalGoodwillName()));
+ end;
+
+ procedure WriteDownonDisposalGoodwillName(): Text[100]
+ begin
+ exit(GoodwillLbl);
+ end;
+
+ procedure WriteDownonDisposalGoodwill(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(WriteDownonDisposalGoodwillName()));
+ end;
+
+ procedure Custom2onDisposalGoodwillName(): Text[100]
+ begin
+ exit(AcquisitionofintangiblefixedassetsLbl);
+ end;
+
+ procedure Custom2onDisposalGoodwill(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(Custom2onDisposalGoodwillName()));
+ end;
+
+ procedure GainsonDisposalGoodwillName(): Text[100]
+ begin
+ exit(NetbookvalueoffixedassetsdisposedLbl);
+ end;
+
+ procedure GainsonDisposalGoodwill(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(GainsonDisposalGoodwillName()));
+ end;
+
+ procedure LossesonDisposalGoodwillName(): Text[100]
+ begin
+ exit(NetbookvalueoffixedassetsdisposedLbl);
+ end;
+
+ procedure LossesonDisposalGoodwill(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(LossesonDisposalGoodwillName()));
+ end;
+
+ procedure BookValonDispGainGoodwillName(): Text[100]
+ begin
+ exit(NetbookvalueoffixedassetssoldLbl);
+ end;
+
+ procedure BookValonDispGainGoodwill(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(BookValonDispGainGoodwillName()));
+ end;
+
+ procedure BookValonDispLossGoodwillName(): Text[100]
+ begin
+ exit(NetbookvalueoffixedassetssoldLbl);
+ end;
+
+ procedure BookValonDispLossGoodwill(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(BookValonDispLossGoodwillName()));
+ end;
+
+ procedure SalesonDispGainGoodwillName(): Text[100]
+ begin
+ exit(CorrectionstogoodwillLbl);
+ end;
+
+ procedure SalesonDispGainGoodwill(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(SalesonDispGainGoodwillName()));
+ end;
+
+ procedure SalesonDispLossGoodwillName(): Text[100]
+ begin
+ exit(CorrectionstogoodwillLbl);
+ end;
+
+ procedure SalesonDispLossGoodwill(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(SalesonDispLossGoodwillName()));
+ end;
+
+ procedure MaintenanceExpenseGoodwillName(): Text[100]
+ begin
+ exit(RepairsandMaintenanceLbl);
+ end;
+
+ procedure MaintenanceExpenseGoodwill(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(MaintenanceExpenseGoodwillName()));
+ end;
+
+ procedure AcquisitionCostBalGoodwillName(): Text[100]
+ begin
+ exit(AcquisitionofintangiblefixedassetsLbl);
+ end;
+
+ procedure AcquisitionCostBalGoodwill(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(AcquisitionCostBalGoodwillName()));
+ end;
+
+ procedure DepreciationExpenseGoodwillName(): Text[100]
+ begin
+ exit(DeprecationofotherintangiblefixedassetsLbl);
+ end;
+
+ procedure DepreciationExpenseGoodwill(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(DepreciationExpenseGoodwillName()));
+ end;
+
+ procedure AcqusitionCostBalonDisposalGoodwillName(): Text[100]
+ begin
+ exit(CorrectionstogoodwillLbl);
+ end;
+
+ procedure AcqusitionCostBalonDisposalGoodwill(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(AcqusitionCostBalonDisposalGoodwillName()));
+ end;
+
+ procedure ApprecBalonDispGoodwillName(): Text[100]
+ begin
+ exit(CorrectionstogoodwillLbl);
+ end;
+
+ procedure ApprecBalonDispGoodwill(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(ApprecBalonDispGoodwillName()));
+ end;
+
+ procedure AppreciationonDisposalGoodwillName(): Text[100]
+ begin
+ exit(GoodwillLbl);
+ end;
+
+ procedure AppreciationonDisposalGoodwill(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(AppreciationonDisposalGoodwillName()));
+ end;
+
+ procedure AppreciationGoodwillName(): Text[100]
+ begin
+ exit(GoodwillLbl);
+ end;
+
+ procedure AppreciationGoodwill(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(AppreciationGoodwillName()));
+ end;
+
+ procedure AppreciationBalGoodwillName(): Text[100]
+ begin
+ exit(AcquisitionofintangiblefixedassetsLbl);
+ end;
+
+ procedure AppreciationBalGoodwill(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(AppreciationBalGoodwillName()));
+ end;
+
+ procedure SalesBalGoodwillName(): Text[100]
+ begin
+ exit(InternalsettlementLbl);
+ end;
+
+ procedure SalesBalGoodwill(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(SalesBalGoodwillName()));
+ end;
+
+ procedure BookValueBalonDisposalGoodwillName(): Text[100]
+ begin
+ exit(CorrectionstogoodwillLbl);
+ end;
+
+ procedure BookValueBalonDisposalGoodwill(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(BookValueBalonDisposalGoodwillName()));
+ end;
+
+ procedure AcquisitionCostVehiclesName(): Text[100]
+ begin
+ exit(VehiclesLbl);
+ end;
+
+ procedure AcquisitionCostVehicles(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(AcquisitionCostVehiclesName()));
+ end;
+
+ procedure AccumDepreciationVehiclesName(): Text[100]
+ begin
+ exit(AccumulateddepreciationofvehiclesLbl);
+ end;
+
+ procedure AccumDepreciationVehicles(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(AccumDepreciationVehiclesName()));
+ end;
+
+
+ procedure WriteDownVehiclesName(): Text[100]
+ begin
+ exit(VehiclesLbl);
+ end;
+
+ procedure WriteDownVehicles(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(WriteDownVehiclesName()));
+ end;
+
+ procedure Custom2VehiclesName(): Text[100]
+ begin
+ exit(AcquisitionofvehiclesLbl);
+ end;
+
+ procedure Custom2Vehicles(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(Custom2VehiclesName()));
+ end;
+
+ procedure AcqCostonDisposalVehiclesName(): Text[100]
+ begin
+ exit(VehiclesLbl);
+ end;
+
+ procedure AcqCostonDisposalVehicles(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(AcqCostonDisposalVehiclesName()));
+ end;
+
+ procedure AccumDepronDisposalVehiclesName(): Text[100]
+ begin
+ exit(AccumulateddepreciationofvehiclesLbl);
+ end;
+
+ procedure AccumDepronDisposalVehicles(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(AccumDepronDisposalVehiclesName()));
+ end;
+
+ procedure WriteDownonDisposalVehiclesName(): Text[100]
+ begin
+ exit(VehiclesLbl);
+ end;
+
+ procedure WriteDownonDisposalVehicles(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(WriteDownonDisposalVehiclesName()));
+ end;
+
+ procedure Custom2onDisposalVehiclesName(): Text[100]
+ begin
+ exit(AcquisitionofintangiblefixedassetsLbl);
+ end;
+
+ procedure Custom2onDisposalVehicles(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(Custom2onDisposalVehiclesName()));
+ end;
+
+ procedure GainsonDisposalVehiclesName(): Text[100]
+ begin
+ exit(NetbookvalueoffixedassetsdisposedLbl);
+ end;
+
+ procedure GainsonDisposalVehicles(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(GainsonDisposalVehiclesName()));
+ end;
+
+ procedure LossesonDisposalVehiclesName(): Text[100]
+ begin
+ exit(NetbookvalueoffixedassetsdisposedLbl);
+ end;
+
+ procedure LossesonDisposalVehicles(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(LossesonDisposalVehiclesName()));
+ end;
+
+ procedure BookValonDispGainVehiclesName(): Text[100]
+ begin
+ exit(NetbookvalueoffixedassetssoldLbl);
+ end;
+
+ procedure BookValonDispGainVehicles(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(BookValonDispGainVehiclesName()));
+ end;
+
+ procedure BookValonDispLossVehiclesName(): Text[100]
+ begin
+ exit(NetbookvalueoffixedassetssoldLbl);
+ end;
+
+ procedure BookValonDispLossVehicles(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(BookValonDispLossVehiclesName()));
+ end;
+
+ procedure SalesonDispGainVehiclesName(): Text[100]
+ begin
+ exit(AccumulateddepreciationofvehiclesLbl);
+ end;
+
+ procedure SalesonDispGainVehicles(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(SalesonDispGainVehiclesName()));
+ end;
+
+ procedure SalesonDispLossVehiclesName(): Text[100]
+ begin
+ exit(AccumulateddepreciationofvehiclesLbl);
+ end;
+
+ procedure SalesonDispLossVehicles(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(SalesonDispLossVehiclesName()));
+ end;
+
+ procedure MaintenanceExpenseVehiclesName(): Text[100]
+ begin
+ exit(RepairsandMaintenanceLbl);
+ end;
+
+ procedure MaintenanceExpenseVehicles(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(MaintenanceExpenseVehiclesName()));
+ end;
+
+ procedure AcquisitionCostBalVehiclesName(): Text[100]
+ begin
+ exit(AcquisitionofvehiclesLbl);
+ end;
+
+ procedure AcquisitionCostBalVehicles(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(AcquisitionCostBalVehiclesName()));
+ end;
+
+ procedure DepreciationExpenseVehiclesName(): Text[100]
+ begin
+ exit(DepreciationofvehiclesLbl);
+ end;
+
+ procedure DepreciationExpenseVehicles(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(DepreciationExpenseVehiclesName()));
+ end;
+
+ procedure AcqusitionCostBalonDisposalVehiclesName(): Text[100]
+ begin
+ exit(AccumulateddepreciationofvehiclesLbl);
+ end;
+
+ procedure AcqusitionCostBalonDisposalVehicles(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(AcqusitionCostBalonDisposalVehiclesName()));
+ end;
+
+ procedure ApprecBalonDispVehiclesName(): Text[100]
+ begin
+ exit(AccumulateddepreciationofvehiclesLbl);
+ end;
+
+ procedure ApprecBalonDispVehicles(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(ApprecBalonDispVehiclesName()));
+ end;
+
+ procedure AppreciationonDisposalVehiclesName(): Text[100]
+ begin
+ exit(VehiclesLbl);
+ end;
+
+ procedure AppreciationonDisposalVehicles(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(AppreciationonDisposalVehiclesName()));
+ end;
+
+ procedure AppreciationVehiclesName(): Text[100]
+ begin
+ exit(VehiclesLbl);
+ end;
+
+ procedure AppreciationVehicles(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(AppreciationVehiclesName()));
+ end;
+
+ procedure AppreciationBalVehiclesName(): Text[100]
+ begin
+ exit(AcquisitionofvehiclesLbl);
+ end;
+
+ procedure AppreciationBalVehicles(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(AppreciationBalVehiclesName()));
+ end;
+
+ procedure SalesBalVehiclesName(): Text[100]
+ begin
+ exit(InternalsettlementLbl);
+ end;
+
+ procedure SalesBalVehicles(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(SalesBalVehiclesName()));
+ end;
+
+ procedure BookValueBalonDisposalVehiclesName(): Text[100]
+ begin
+ exit(AccumulateddepreciationofvehiclesLbl);
+ end;
+
+ procedure BookValueBalonDisposalVehicles(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(BookValueBalonDisposalVehiclesName()));
+ end;
+
+ procedure AcquisitionCostEquipmentName(): Text[100]
+ begin
+ exit(MachinestoolsequipmentLbl);
+ end;
+
+ procedure AcquisitionCostEquipment(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(AcquisitionCostEquipmentName()));
+ end;
+
+ procedure WriteDownEquipmentName(): Text[100]
+ begin
+ exit(MachinestoolsequipmentLbl);
+ end;
+
+ procedure WriteDownEquipment(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(WriteDownEquipmentName()));
+ end;
+
+ procedure AccumDepreciationEquipmentName(): Text[100]
+ begin
+ exit(AccumulateddepreciationofmachineryLbl);
+ end;
+
+ procedure AccumDepreciationEquipment(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(AccumDepreciationEquipmentName()));
+ end;
+
+ procedure Custom2EquipmentName(): Text[100]
+ begin
+ exit(AcquisitionofmachineryLbl);
+ end;
+
+ procedure Custom2Equipment(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(Custom2EquipmentName()));
+ end;
+
+ procedure AcqCostonDisposalEquipmentName(): Text[100]
+ begin
+ exit(MachinestoolsequipmentLbl);
+ end;
+
+ procedure AcqCostonDisposalEquipment(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(AcqCostonDisposalEquipmentName()));
+ end;
+
+ procedure AccumDepronDisposalEquipmentName(): Text[100]
+ begin
+ exit(AccumulateddepreciationofmachineryLbl);
+ end;
+
+ procedure AccumDepronDisposalEquipment(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(AccumDepronDisposalEquipmentName()));
+ end;
+
+ procedure WriteDownonDisposalEquipmentName(): Text[100]
+ begin
+ exit(MachinestoolsequipmentLbl);
+ end;
+
+ procedure WriteDownonDisposalEquipment(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(WriteDownonDisposalEquipmentName()));
+ end;
+
+ procedure Custom2onDisposalEquipmentName(): Text[100]
+ begin
+ exit(AcquisitionofmachineryLbl);
+ end;
+
+ procedure Custom2onDisposalEquipment(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(Custom2onDisposalEquipmentName()));
+ end;
+
+ procedure GainsonDisposalEquipmentName(): Text[100]
+ begin
+ exit(NetbookvalueoffixedassetsdisposedLbl);
+ end;
+
+ procedure GainsonDisposalEquipment(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(GainsonDisposalEquipmentName()));
+ end;
+
+ procedure LossesonDisposalEquipmentName(): Text[100]
+ begin
+ exit(NetbookvalueoffixedassetsdisposedLbl);
+ end;
+
+ procedure LossesonDisposalEquipment(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(LossesonDisposalEquipmentName()));
+ end;
+
+ procedure BookValonDispGainEquipmentName(): Text[100]
+ begin
+ exit(NetbookvalueoffixedassetssoldLbl);
+ end;
+
+ procedure BookValonDispGainEquipment(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(BookValonDispGainEquipmentName()));
+ end;
+
+ procedure BookValonDispLossEquipmentName(): Text[100]
+ begin
+ exit(NetbookvalueoffixedassetssoldLbl);
+ end;
+
+ procedure BookValonDispLossEquipment(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(BookValonDispLossEquipmentName()));
+ end;
+
+ procedure SalesonDispGainEquipmentName(): Text[100]
+ begin
+ exit(AccumulateddepreciationofmachineryLbl);
+ end;
+
+ procedure SalesonDispGainEquipment(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(SalesonDispGainEquipmentName()));
+ end;
+
+ procedure SalesonDispLossEquipmentName(): Text[100]
+ begin
+ exit(AccumulateddepreciationofmachineryLbl);
+ end;
+
+ procedure SalesonDispLossEquipment(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(SalesonDispLossEquipmentName()));
+ end;
+
+ procedure MaintenanceExpenseEquipmentName(): Text[100]
+ begin
+ exit(RepairsandMaintenanceLbl);
+ end;
+
+ procedure MaintenanceExpenseEquipment(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(MaintenanceExpenseEquipmentName()));
+ end;
+
+ procedure AcquisitionCostBalEquipmentName(): Text[100]
+ begin
+ exit(AcquisitionofmachineryLbl);
+ end;
+
+ procedure AcquisitionCostBalEquipment(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(AcquisitionCostBalEquipmentName()));
+ end;
+
+ procedure DepreciationExpenseEquipmentName(): Text[100]
+ begin
+ exit(DepreciationofmachinesandtoolsLbl);
+ end;
+
+ procedure DepreciationExpenseEquipment(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(DepreciationExpenseEquipmentName()));
+ end;
+
+ procedure AcqusitionCostBalonDisposalEquipmentName(): Text[100]
+ begin
+ exit(AccumulateddepreciationofmachineryLbl);
+ end;
+
+ procedure AcqusitionCostBalonDisposalEquipment(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(AcqusitionCostBalonDisposalEquipmentName()));
+ end;
+
+ procedure ApprecBalonDispEquipmentName(): Text[100]
+ begin
+ exit(AccumulateddepreciationofmachineryLbl);
+ end;
+
+ procedure ApprecBalonDispEquipment(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(ApprecBalonDispEquipmentName()));
+ end;
+
+ procedure AppreciationonDisposalEquipmentName(): Text[100]
+ begin
+ exit(MachinestoolsequipmentLbl);
+ end;
+
+ procedure AppreciationonDisposalEquipment(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(AppreciationonDisposalEquipmentName()));
+ end;
+
+ procedure AppreciationEquipmentName(): Text[100]
+ begin
+ exit(MachinestoolsequipmentLbl);
+ end;
+
+ procedure AppreciationEquipment(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(AppreciationEquipmentName()));
+ end;
+
+ procedure AppreciationBalEquipmentName(): Text[100]
+ begin
+ exit(AcquisitionofmachineryLbl);
+ end;
+
+ procedure AppreciationBalEquipment(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(AppreciationBalEquipmentName()));
+ end;
+
+ procedure SalesBalEquipmentName(): Text[100]
+ begin
+ exit(InternalsettlementLbl);
+ end;
+
+ procedure SalesBalEquipment(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(SalesBalEquipmentName()));
+ end;
+
+ procedure BookValueBalonDisposalEquipmentName(): Text[100]
+ begin
+ exit(AccumulateddepreciationofmachineryLbl);
+ end;
+
+ procedure BookValueBalonDisposalEquipment(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(BookValueBalonDisposalEquipmentName()));
+ end;
+
+ procedure AcquisitionCostPatentsName(): Text[100]
+ begin
+ exit(IntangibleresultsofresearchanddevelopmentLbl);
+ end;
+
+ procedure AcquisitionCostPatents(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(AcquisitionCostPatentsName()));
+ end;
+
+ procedure WriteDownPatentsName(): Text[100]
+ begin
+ exit(IntangibleresultsofresearchanddevelopmentLbl);
+ end;
+
+ procedure WriteDownPatents(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(WriteDownPatentsName()));
+ end;
+
+ procedure AccumDepreciationPatentsName(): Text[100]
+ begin
+ exit(CorrectionstointangibleresultsofresearchanddevelopmentLbl);
+ end;
+
+ procedure AccumDepreciationPatents(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(AccumDepreciationPatentsName()));
+ end;
+
+ procedure Custom2PatentsName(): Text[100]
+ begin
+ exit(AcquisitionofintangiblefixedassetsLbl);
+ end;
+
+ procedure Custom2Patents(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(Custom2PatentsName()));
+ end;
+
+ procedure AcqCostonDisposalPatentsName(): Text[100]
+ begin
+ exit(IntangibleresultsofresearchanddevelopmentLbl);
+ end;
+
+ procedure AcqCostonDisposalPatents(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(AcqCostonDisposalPatentsName()));
+ end;
+
+ procedure AccumDepronDisposalPatentsName(): Text[100]
+ begin
+ exit(CorrectionstointangibleresultsofresearchanddevelopmentLbl);
+ end;
+
+ procedure AccumDepronDisposalPatents(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(AccumDepronDisposalPatentsName()));
+ end;
+
+ procedure WriteDownonDisposalPatentsName(): Text[100]
+ begin
+ exit(IntangibleresultsofresearchanddevelopmentLbl);
+ end;
+
+ procedure WriteDownonDisposalPatents(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(WriteDownonDisposalPatentsName()));
+ end;
+
+ procedure Custom2onDisposalPatentsName(): Text[100]
+ begin
+ exit(AcquisitionofintangiblefixedassetsLbl);
+ end;
+
+ procedure Custom2onDisposalPatents(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(Custom2onDisposalPatentsName()));
+ end;
+
+ procedure GainsonDisposalPatentsName(): Text[100]
+ begin
+ exit(NetbookvalueoffixedassetsdisposedLbl);
+ end;
+
+ procedure GainsonDisposalPatents(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(GainsonDisposalPatentsName()));
+ end;
+
+ procedure LossesonDisposalPatentsName(): Text[100]
+ begin
+ exit(NetbookvalueoffixedassetsdisposedLbl);
+ end;
+
+ procedure LossesonDisposalPatents(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(LossesonDisposalPatentsName()));
+ end;
+
+ procedure BookValonDispGainPatentsName(): Text[100]
+ begin
+ exit(NetbookvalueoffixedassetssoldLbl);
+ end;
+
+ procedure BookValonDispGainPatents(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(BookValonDispGainPatentsName()));
+ end;
+
+ procedure BookValonDispLossPatentsName(): Text[100]
+ begin
+ exit(NetbookvalueoffixedassetssoldLbl);
+ end;
+
+ procedure BookValonDispLossPatents(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(BookValonDispLossPatentsName()));
+ end;
+
+ procedure SalesonDispGainPatentsName(): Text[100]
+ begin
+ exit(CorrectionstointangibleresultsofresearchanddevelopmentLbl);
+ end;
+
+ procedure SalesonDispGainPatents(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(SalesonDispGainPatentsName()));
+ end;
+
+ procedure SalesonDispLossPatentsName(): Text[100]
+ begin
+ exit(CorrectionstointangibleresultsofresearchanddevelopmentLbl);
+ end;
+
+ procedure SalesonDispLossPatents(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(SalesonDispLossPatentsName()));
+ end;
+
+ procedure MaintenanceExpensePatentsName(): Text[100]
+ begin
+ exit(RepairsandMaintenanceLbl);
+ end;
+
+ procedure MaintenanceExpensePatents(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(MaintenanceExpensePatentsName()));
+ end;
+
+ procedure AcquisitionCostBalPatentsName(): Text[100]
+ begin
+ exit(AcquisitionofintangiblefixedassetsLbl);
+ end;
+
+ procedure AcquisitionCostBalPatents(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(AcquisitionCostBalPatentsName()));
+ end;
+
+ procedure DepreciationExpensePatentsName(): Text[100]
+ begin
+ exit(DeprecationofpatentsLbl);
+ end;
+
+ procedure DepreciationExpensePatents(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(DepreciationExpensePatentsName()));
+ end;
+
+ procedure AcqusitionCostBalonDisposalPatentsName(): Text[100]
+ begin
+ exit(CorrectionstointangibleresultsofresearchanddevelopmentLbl);
+ end;
+
+ procedure AcqusitionCostBalonDisposalPatents(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(AcqusitionCostBalonDisposalPatentsName()));
+ end;
+
+ procedure ApprecBalonDispPatentsName(): Text[100]
+ begin
+ exit(CorrectionstointangibleresultsofresearchanddevelopmentLbl);
+ end;
+
+ procedure ApprecBalonDispPatents(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(ApprecBalonDispPatentsName()));
+ end;
+
+ procedure AppreciationonDisposalPatentsName(): Text[100]
+ begin
+ exit(IntangibleresultsofresearchanddevelopmentLbl);
+ end;
+
+ procedure AppreciationonDisposalPatents(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(AppreciationonDisposalPatentsName()));
+ end;
+
+ procedure AppreciationPatentsName(): Text[100]
+ begin
+ exit(IntangibleresultsofresearchanddevelopmentLbl);
+ end;
+
+ procedure AppreciationPatents(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(AppreciationPatentsName()));
+ end;
+
+ procedure AppreciationBalPatentsName(): Text[100]
+ begin
+ exit(AcquisitionofintangiblefixedassetsLbl);
+ end;
+
+ procedure AppreciationBalPatents(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(AppreciationBalPatentsName()));
+ end;
+
+ procedure SalesBalPatentsName(): Text[100]
+ begin
+ exit(InternalsettlementLbl);
+ end;
+
+ procedure SalesBalPatents(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(SalesBalPatentsName()));
+ end;
+
+ procedure BookValueBalonDisposalPatentsName(): Text[100]
+ begin
+ exit(CorrectionstointangibleresultsofresearchanddevelopmentLbl);
+ end;
+
+ procedure BookValueBalonDisposalPatents(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(BookValueBalonDisposalPatentsName()));
+ end;
+
+ procedure AcquisitionCostSoftwareName(): Text[100]
+ begin
+ exit(SoftwareAccountLbl);
+ end;
+
+ procedure AcquisitionCostSoftware(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(AcquisitionCostSoftwareName()));
+ end;
+
+ procedure WriteDownSoftwareName(): Text[100]
+ begin
+ exit(SoftwareAccountLbl);
+ end;
+
+ procedure WriteDownSoftware(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(WriteDownSoftwareName()));
+ end;
+
+ procedure AccumDepreciationSoftwareName(): Text[100]
+ begin
+ exit(CorrectionstoSoftwareLbl);
+ end;
+
+ procedure AccumDepreciationSoftware(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(AccumDepreciationSoftwareName()));
+ end;
+
+ procedure Custom2SoftwareName(): Text[100]
+ begin
+ exit(AcquisitionofintangiblefixedassetsLbl);
+ end;
+
+ procedure Custom2Software(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(Custom2SoftwareName()));
+ end;
+
+ procedure AcqCostonDisposalSoftwareName(): Text[100]
+ begin
+ exit(SoftwareAccountLbl);
+ end;
+
+ procedure AcqCostonDisposalSoftware(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(AcqCostonDisposalSoftwareName()));
+ end;
+
+ procedure AccumDepronDisposalSoftwareName(): Text[100]
+ begin
+ exit(CorrectionstoSoftwareLbl);
+ end;
+
+ procedure AccumDepronDisposalSoftware(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(AccumDepronDisposalSoftwareName()));
+ end;
+
+ procedure WriteDownonDisposalSoftwareName(): Text[100]
+ begin
+ exit(SoftwareAccountLbl);
+ end;
+
+ procedure WriteDownonDisposalSoftware(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(WriteDownonDisposalSoftwareName()));
+ end;
+
+ procedure Custom2onDisposalSoftwareName(): Text[100]
+ begin
+ exit(AcquisitionofintangiblefixedassetsLbl);
+ end;
+
+ procedure Custom2onDisposalSoftware(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(Custom2onDisposalSoftwareName()));
+ end;
+
+ procedure GainsonDisposalSoftwareName(): Text[100]
+ begin
+ exit(NetbookvalueoffixedassetsdisposedLbl);
+ end;
+
+ procedure GainsonDisposalSoftware(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(GainsonDisposalSoftwareName()));
+ end;
+
+ procedure LossesonDisposalSoftwareName(): Text[100]
+ begin
+ exit(NetbookvalueoffixedassetsdisposedLbl);
+ end;
+
+ procedure LossesonDisposalSoftware(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(LossesonDisposalSoftwareName()));
+ end;
+
+ procedure BookValonDispGainSoftwareName(): Text[100]
+ begin
+ exit(NetbookvalueoffixedassetssoldLbl);
+ end;
+
+ procedure BookValonDispGainSoftware(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(BookValonDispGainSoftwareName()));
+ end;
+
+ procedure BookValonDispLossSoftwareName(): Text[100]
+ begin
+ exit(NetbookvalueoffixedassetssoldLbl);
+ end;
+
+ procedure BookValonDispLossSoftware(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(BookValonDispLossSoftwareName()));
+ end;
+
+ procedure SalesonDispGainSoftwareName(): Text[100]
+ begin
+ exit(CorrectionstoSoftwareLbl);
+ end;
+
+ procedure SalesonDispGainSoftware(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(SalesonDispGainSoftwareName()));
+ end;
+
+ procedure SalesonDispLossSoftwareName(): Text[100]
+ begin
+ exit(CorrectionstoSoftwareLbl);
+ end;
+
+ procedure SalesonDispLossSoftware(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(SalesonDispLossSoftwareName()));
+ end;
+
+ procedure MaintenanceExpenseSoftwareName(): Text[100]
+ begin
+ exit(RepairsandMaintenanceLbl);
+ end;
+
+ procedure MaintenanceExpenseSoftware(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(MaintenanceExpenseSoftwareName()));
+ end;
+
+ procedure AcquisitionCostBalSoftwareName(): Text[100]
+ begin
+ exit(AcquisitionofintangiblefixedassetsLbl);
+ end;
+
+ procedure AcquisitionCostBalSoftware(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(AcquisitionCostBalSoftwareName()));
+ end;
+
+ procedure DepreciationExpenseSoftwareName(): Text[100]
+ begin
+ exit(DeprecationofsoftwareLbl);
+ end;
+
+ procedure DepreciationExpenseSoftware(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(DepreciationExpenseSoftwareName()));
+ end;
+
+ procedure AcqusitionCostBalonDisposalSoftwareName(): Text[100]
+ begin
+ exit(CorrectionstoSoftwareLbl);
+ end;
+
+ procedure AcqusitionCostBalonDisposalSoftware(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(AcqusitionCostBalonDisposalSoftwareName()));
+ end;
+
+ procedure ApprecBalonDispSoftwareName(): Text[100]
+ begin
+ exit(CorrectionstoSoftwareLbl);
+ end;
+
+ procedure ApprecBalonDispSoftware(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(ApprecBalonDispSoftwareName()));
+ end;
+
+ procedure AppreciationonDisposalSoftwareName(): Text[100]
+ begin
+ exit(SoftwareAccountLbl);
+ end;
+
+ procedure AppreciationonDisposalSoftware(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(AppreciationonDisposalSoftwareName()));
+ end;
+
+ procedure AppreciationSoftwareName(): Text[100]
+ begin
+ exit(SoftwareAccountLbl);
+ end;
+
+ procedure AppreciationSoftware(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(AppreciationSoftwareName()));
+ end;
+
+ procedure AppreciationBalSoftwareName(): Text[100]
+ begin
+ exit(AcquisitionofintangiblefixedassetsLbl);
+ end;
+
+ procedure AppreciationBalSoftware(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(AppreciationBalSoftwareName()));
+ end;
+
+ procedure SalesBalSoftwareName(): Text[100]
+ begin
+ exit(InternalsettlementLbl);
+ end;
+
+ procedure SalesBalSoftware(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(SalesBalSoftwareName()));
+ end;
+
+ procedure BookValueBalonDisposalSoftwareName(): Text[100]
+ begin
+ exit(CorrectionstoSoftwareLbl);
+ end;
+
+ procedure BookValueBalonDisposalSoftware(): Code[20]
+ begin
+ exit(ContosoGLAccount.GetAccountNo(BookValueBalonDisposalSoftwareName()));
+ end;
+
+ var
+ ContosoGLAccount: Codeunit "Contoso GL Account";
+ BuildingsLbl: Label 'Buildings', MaxLength = 100;
+ AcquisitionofbuildingsLbl: Label 'Acquisition of buildings', MaxLength = 100;
+ AccumulateddepreciationofbuildingsLbl: Label 'Accumulated depreciation of buildings', MaxLength = 100;
+ NetbookvalueoffixedassetsdisposedLbl: Label 'Net book value of fixed assets disposed', MaxLength = 100;
+ NetbookvalueoffixedassetssoldLbl: Label 'Net book value of fixed assets sold', MaxLength = 100;
+ RepairsandMaintenanceLbl: Label 'Repairs and Maintenance', MaxLength = 100;
+ InternalsettlementLbl: Label 'Internal settlement', MaxLength = 100;
+ GoodwillLbl: Label 'Goodwill', MaxLength = 100;
+ CorrectionstogoodwillLbl: Label 'Corrections to goodwill', MaxLength = 100;
+ AcquisitionofintangiblefixedassetsLbl: Label 'Acquisition of intangible fixed assets', MaxLength = 100;
+ DeprecationofotherintangiblefixedassetsLbl: Label 'Deprecation of other intangible fixed assets', MaxLength = 100;
+ VehiclesLbl: Label 'Vehicles', MaxLength = 100;
+ AccumulateddepreciationofvehiclesLbl: Label 'Accumulated depreciation of vehicles', MaxLength = 100;
+ AcquisitionofvehiclesLbl: Label 'Acquisition of vehicles', MaxLength = 100;
+ DepreciationofvehiclesLbl: Label 'Depreciation of vehicles', MaxLength = 100;
+ MachinestoolsequipmentLbl: Label 'Machines, tools, equipment', MaxLength = 100;
+ AccumulateddepreciationofmachineryLbl: Label 'Accumulated depreciation of machinery', MaxLength = 100;
+ AcquisitionofmachineryLbl: Label 'Acquisition of machinery', MaxLength = 100;
+ DepreciationofmachinesandtoolsLbl: Label 'Depreciation of machines and tools', MaxLength = 100;
+ IntangibleresultsofresearchanddevelopmentLbl: Label 'Intangible results of research and development', MaxLength = 100;
+ CorrectionstointangibleresultsofresearchanddevelopmentLbl: Label 'Corrections to intangible results of research and development', MaxLength = 100;
+ DeprecationofpatentsLbl: Label 'Deprecation of patents', MaxLength = 100;
+ CorrectionstosoftwareLbl: Label 'Corrections to software', MaxLength = 100;
+ DeprecationofsoftwareLbl: Label 'Deprecation of software', MaxLength = 100;
+ SoftwareAccountLbl: Label 'Software', MaxLength = 100;
+ FurnitureLbl: Label 'FURNITURE', MaxLength = 20;
+ PatentsLbl: Label 'PATENTS', MaxLength = 20;
+ SoftwareLbl: Label 'SOFTWARE', MaxLength = 20;
+}
diff --git a/Apps/W1/FieldServiceIntegration/app/ExtensionLogo.png b/Apps/CZ/ContosoCoffeeDemoDatasetCZ/app/ExtensionLogo.png
similarity index 100%
rename from Apps/W1/FieldServiceIntegration/app/ExtensionLogo.png
rename to Apps/CZ/ContosoCoffeeDemoDatasetCZ/app/ExtensionLogo.png
diff --git a/Apps/CZ/ContosoCoffeeDemoDatasetCZ/app/app.json b/Apps/CZ/ContosoCoffeeDemoDatasetCZ/app/app.json
new file mode 100644
index 0000000000..bf3584b290
--- /dev/null
+++ b/Apps/CZ/ContosoCoffeeDemoDatasetCZ/app/app.json
@@ -0,0 +1,38 @@
+{
+ "id": "acbbfbc7-75c1-436f-8b22-926d741b2616",
+ "name": "Contoso Coffee Demo Dataset (CZ)",
+ "publisher": "Microsoft",
+ "version": "25.0.0.0",
+ "brief": "To help partners demonstrate the premium capabilities of Business Central, we are making the demo data available for manufacturing scenarios.",
+ "description": "Presales specialists can run the tool on top of Cronus or My Company and get the setup and demo data they'll need when they demonstrate various scenarios in the manufacturing space.",
+ "privacyStatement": "https://go.microsoft.com/fwlink/?linkid=724009",
+ "EULA": "https://go.microsoft.com/fwlink/?linkid=2009120",
+ "help": "https://go.microsoft.com/fwlink/?linkid=2187180",
+ "url": "https://go.microsoft.com/fwlink/?linkid=724011",
+ "contextSensitiveHelpUrl": "https://go.microsoft.com/fwlink/?linkid=2187180",
+ "logo": "./ExtensionLogo.png",
+ "dependencies": [
+ {
+ "id": "5a0b41e9-7a42-4123-d521-2265186cfb31",
+ "name": "Contoso Coffee Demo Dataset",
+ "publisher": "Microsoft",
+ "version": "25.0.0.0"
+ },
+ {
+ "id": "ef5dfe8c-ba1c-4271-8a86-95d5abdc6fe9",
+ "name": "Fixed Asset Localization for Czech",
+ "publisher": "Microsoft",
+ "version": "25.0.0.0"
+ }
+ ],
+ "screenshots": [
+
+ ],
+ "platform": "25.0.0.0",
+ "application": "25.0.0.0",
+ "resourceExposurePolicy": {
+ "allowDebugging": true,
+ "allowDownloadingSource": false,
+ "includeSourceInSymbolFile": false
+ }
+}
\ No newline at end of file
diff --git a/Apps/CZ/CoreLocalizationPack/app/Src/Codeunits/CorrectionsPostingMgtCZL.Codeunit.al b/Apps/CZ/CoreLocalizationPack/app/Src/Codeunits/CorrectionsPostingMgtCZL.Codeunit.al
index 210e936957..ba5c305448 100644
--- a/Apps/CZ/CoreLocalizationPack/app/Src/Codeunits/CorrectionsPostingMgtCZL.Codeunit.al
+++ b/Apps/CZ/CoreLocalizationPack/app/Src/Codeunits/CorrectionsPostingMgtCZL.Codeunit.al
@@ -23,6 +23,7 @@ using Microsoft.Projects.Project.Journal;
using Microsoft.Purchases.Document;
using Microsoft.Sales.Document;
using Microsoft.Service.Document;
+using Microsoft.Service.Posting;
codeunit 11796 "Corrections Posting Mgt. CZL"
{
@@ -409,7 +410,7 @@ codeunit 11796 "Corrections Posting Mgt. CZL"
end;
#pragma warning restore AL0432
#endif
- [EventSubscriber(ObjectType::Table, Database::"Invoice Posting Buffer", 'OnAfterPrepareSales', '', false, false)]
+ [EventSubscriber(ObjectType::Codeunit, Codeunit::Microsoft.Sales.Posting."Sales Post Invoice Events", 'OnAfterPrepareInvoicePostingBuffer', '', false, false)]
local procedure SetCorrectionOnAfterPrepareSales(var SalesLine: Record "Sales Line"; var InvoicePostingBuffer: Record "Invoice Posting Buffer")
var
SalesHeader: Record "Sales Header";
@@ -418,7 +419,7 @@ codeunit 11796 "Corrections Posting Mgt. CZL"
InvoicePostingBuffer."Correction CZL" := SalesHeader.Correction xor SalesLine."Negative CZL";
end;
- [EventSubscriber(ObjectType::Table, Database::"Invoice Posting Buffer", 'OnAfterPreparePurchase', '', false, false)]
+ [EventSubscriber(ObjectType::Codeunit, Codeunit::Microsoft.Purchases.Posting."Purch. Post Invoice Events", 'OnAfterPrepareInvoicePostingBuffer', '', false, false)]
local procedure SetCorrectionOnAfterPreparePurchase(var PurchaseLine: Record "Purchase Line"; var InvoicePostingBuffer: Record "Invoice Posting Buffer")
var
PurchaseHeader: Record "Purchase Header";
@@ -427,8 +428,8 @@ codeunit 11796 "Corrections Posting Mgt. CZL"
InvoicePostingBuffer."Correction CZL" := PurchaseHeader.Correction xor PurchaseLine."Negative CZL";
end;
- [EventSubscriber(ObjectType::Table, Database::"Invoice Posting Buffer", 'OnAfterPrepareService', '', false, false)]
- local procedure SetCorrectionOnAfterPrepareService(var ServiceLine: Record "Service Line"; var InvoicePostingBuffer: Record "Invoice Posting Buffer")
+ [EventSubscriber(ObjectType::Codeunit, Codeunit::"Service Post Invoice Events", 'OnAfterPrepareInvoicePostingBuffer', '', false, false)]
+ local procedure SetCorrectionOnAfterPrepareService(ServiceLine: Record "Service Line"; var InvoicePostingBuffer: Record "Invoice Posting Buffer")
var
ServiceHeader: Record "Service Header";
begin
diff --git a/Apps/CZ/CoreLocalizationPack/app/Src/Codeunits/GenJnlPostLineHandlerCZL.Codeunit.al b/Apps/CZ/CoreLocalizationPack/app/Src/Codeunits/GenJnlPostLineHandlerCZL.Codeunit.al
index 0e7156404e..0576c8bf9b 100644
--- a/Apps/CZ/CoreLocalizationPack/app/Src/Codeunits/GenJnlPostLineHandlerCZL.Codeunit.al
+++ b/Apps/CZ/CoreLocalizationPack/app/Src/Codeunits/GenJnlPostLineHandlerCZL.Codeunit.al
@@ -420,14 +420,24 @@ codeunit 31315 "Gen.Jnl. Post Line Handler CZL"
[EventSubscriber(ObjectType::Codeunit, Codeunit::"Gen. Jnl.-Post Line", 'OnPostDeferralPostBufferOnAfterFindDeferalPostingBuffer', '', false, false)]
local procedure GetNonDeductibleVATPctOnPostDeferralPostBufferOnAfterFindDeferalPostingBuffer(GenJournalLine: Record "Gen. Journal Line"; var DeferralPostingBuffer: Record "Deferral Posting Buffer"; var NonDeductibleVATPct: Decimal)
+ begin
+ NonDeductibleVATPct := GetNonDeductibleVATPct(GenJournalLine, DeferralPostingBuffer."Deferral Doc. Type");
+ end;
+
+ [EventSubscriber(ObjectType::Codeunit, Codeunit::"Gen. Jnl.-Post Line", 'OnPostDeferralOnAfterGetNonDeductibleVATPct', '', false, false)]
+ local procedure GetNonDeductibleVATPctOnPostDeferralOnAfterGetNonDeductibleVATPct(GenJournalLine: Record "Gen. Journal Line"; DeferralDocType: Enum "Deferral Document Type"; var NonDeductibleVATPct: Decimal)
+ begin
+ NonDeductibleVATPct := GetNonDeductibleVATPct(GenJournalLine, DeferralDocType);
+ end;
+
+ local procedure GetNonDeductibleVATPct(GenJournalLine: Record "Gen. Journal Line"; DeferralDocType: Enum "Deferral Document Type"): Decimal
var
NonDeductibleVATCZL: Codeunit "Non-Deductible VAT CZL";
begin
- NonDeductibleVATPct :=
- NonDeductibleVATCZL.GetNonDeductibleVATPct(
- GenJournalLine."VAT Bus. Posting Group", GenJournalLine."VAT Prod. Posting Group",
- NonDeductibleVATCZL.GetGeneralPostingTypeFromDeferralDocType(DeferralPostingBuffer."Deferral Doc. Type"),
- GenJournalLine."VAT Reporting Date");
+ exit(NonDeductibleVATCZL.GetNonDeductibleVATPct(
+ GenJournalLine."VAT Bus. Posting Group", GenJournalLine."VAT Prod. Posting Group",
+ NonDeductibleVATCZL.GetGeneralPostingTypeFromDeferralDocType(DeferralDocType),
+ GenJournalLine."VAT Reporting Date"));
end;
[IntegrationEvent(false, false)]
diff --git a/Apps/CZ/CoreLocalizationPack/app/Src/Codeunits/NavigateHandlerCZL.Codeunit.al b/Apps/CZ/CoreLocalizationPack/app/Src/Codeunits/NavigateHandlerCZL.Codeunit.al
index 7972358495..1ee0913289 100644
--- a/Apps/CZ/CoreLocalizationPack/app/Src/Codeunits/NavigateHandlerCZL.Codeunit.al
+++ b/Apps/CZ/CoreLocalizationPack/app/Src/Codeunits/NavigateHandlerCZL.Codeunit.al
@@ -14,26 +14,26 @@ codeunit 31044 "Navigate Handler CZL"
EETEntryCZL: Record "EET Entry CZL";
[EventSubscriber(ObjectType::Page, Page::Navigate, 'OnAfterNavigateFindRecords', '', false, false)]
- local procedure OnAfterNavigateFindRecords(var DocumentEntry: Record "Document Entry"; DocNoFilter: Text; Sender: Page Navigate)
+ local procedure OnAfterNavigateFindRecords(var DocumentEntry: Record "Document Entry"; DocNoFilter: Text)
begin
- FindEETEntries(DocumentEntry, DocNoFilter, Sender);
+ FindEETEntries(DocumentEntry, DocNoFilter);
end;
- local procedure FindEETEntries(var DocumentEntry: Record "Document Entry"; DocNoFilter: Text; Navigate: Page Navigate)
+ local procedure FindEETEntries(var DocumentEntry: Record "Document Entry"; DocNoFilter: Text)
begin
if EETEntryCZL.ReadPermission() then begin
EETEntryCZL.Reset();
EETEntryCZL.SetCurrentKey("Document No.");
EETEntryCZL.SetFilter("Document No.", DocNoFilter);
- Navigate.InsertIntoDocEntry(DocumentEntry, Database::"EET Entry CZL", Enum::"Document Entry Document Type"::Quote,
+ DocumentEntry.InsertIntoDocEntry(Database::"EET Entry CZL", Enum::"Document Entry Document Type"::Quote,
EETEntryCZL.TableCaption(), EETEntryCZL.Count());
end;
end;
- [EventSubscriber(ObjectType::Page, Page::Navigate, 'OnBeforeNavigateShowRecords', '', false, false)]
- local procedure OnBeforeNavigateShowRecords(TableID: Integer; DocNoFilter: Text; PostingDateFilter: Text; var TempDocumentEntry: Record "Document Entry"; var IsHandled: Boolean)
+ [EventSubscriber(ObjectType::Page, Page::Navigate, 'OnBeforeShowRecords', '', false, false)]
+ local procedure OnBeforeShowRecords(var TempDocumentEntry: Record "Document Entry"; DocNoFilter: Text; PostingDateFilter: Text; var IsHandled: Boolean)
begin
- case TableID of
+ case TempDocumentEntry."Table ID" of
Database::"EET Entry CZL":
begin
EETEntryCZL.Reset();
diff --git a/Apps/CZ/CoreLocalizationPack/app/Src/Codeunits/UpgradeApplicationCZL.Codeunit.al b/Apps/CZ/CoreLocalizationPack/app/Src/Codeunits/UpgradeApplicationCZL.Codeunit.al
index 427fb8c7d9..97a6973f70 100644
--- a/Apps/CZ/CoreLocalizationPack/app/Src/Codeunits/UpgradeApplicationCZL.Codeunit.al
+++ b/Apps/CZ/CoreLocalizationPack/app/Src/Codeunits/UpgradeApplicationCZL.Codeunit.al
@@ -274,6 +274,7 @@ codeunit 31017 "Upgrade Application CZL"
UpgradeSubstCustVendPostingGroup();
UpgradeVATStatementTemplate();
UpgradeAllowVATPosting();
+ UpgradeOriginalVATAmountsInVATEntries();
end;
local procedure UpgradeGeneralLedgerSetup();
@@ -2658,6 +2659,22 @@ codeunit 31017 "Upgrade Application CZL"
UpgradeTag.SetUpgradeTag(UpgradeTagDefinitionsCZL.GetAllowVATPostingUpgradeTag());
end;
+ local procedure UpgradeOriginalVATAmountsInVATEntries()
+ var
+ VATEntry: Record "VAT Entry";
+ VATEntryDataTransfer: DataTransfer;
+ begin
+ if UpgradeTag.HasUpgradeTag(UpgradeTagDefinitionsCZL.GetOriginalVATAmountsInVATEntriesUpgradeTag()) then
+ exit;
+
+ VATEntryDataTransfer.SetTables(Database::"VAT Entry", Database::"VAT Entry");
+ VATEntryDataTransfer.AddFieldValue(VATEntry.FieldNo(Base), VATEntry.FieldNo("Original VAT Base CZL"));
+ VATEntryDataTransfer.AddFieldValue(VATEntry.FieldNo(Amount), VATEntry.FieldNo("Original VAT Amount CZL"));
+ VATEntryDataTransfer.CopyFields();
+
+ UpgradeTag.SetUpgradeTag(UpgradeTagDefinitionsCZL.GetOriginalVATAmountsInVATEntriesUpgradeTag());
+ end;
+
local procedure InsertRepSelection(ReportUsage: Enum "Report Selection Usage"; Sequence: Code[10]; ReportID: Integer)
var
ReportSelections: Record "Report Selections";
diff --git a/Apps/CZ/CoreLocalizationPack/app/Src/Codeunits/UpgradeTagDefinitionsCZL.Codeunit.al b/Apps/CZ/CoreLocalizationPack/app/Src/Codeunits/UpgradeTagDefinitionsCZL.Codeunit.al
index 681104110d..38e27e3746 100644
--- a/Apps/CZ/CoreLocalizationPack/app/Src/Codeunits/UpgradeTagDefinitionsCZL.Codeunit.al
+++ b/Apps/CZ/CoreLocalizationPack/app/Src/Codeunits/UpgradeTagDefinitionsCZL.Codeunit.al
@@ -40,6 +40,7 @@ codeunit 31016 "Upgrade Tag Definitions CZL"
PerCompanyUpgradeTags.Add(GetSubstCustVendPostingGroupUpgradeTag());
PerCompanyUpgradeTags.Add(GetVATStatementReportExtensionUpgradeTag());
PerCompanyUpgradeTags.Add(GetAllowVATPostingUpgradeTag());
+ PerCompanyUpgradeTags.Add(GetOriginalVATAmountsInVATEntriesUpgradeTag());
end;
procedure GetDataVersion174PerDatabaseUpgradeTag(): Code[250]
@@ -171,4 +172,9 @@ codeunit 31016 "Upgrade Tag Definitions CZL"
begin
exit('CZL-495916-AllowVATPostingUpgradeTag-20240109');
end;
+
+ procedure GetOriginalVATAmountsInVATEntriesUpgradeTag(): Code[250]
+ begin
+ exit('CZL-539623-OriginalVATAmountsInVATEntriesUpgradeTag-20240627');
+ end;
}
diff --git a/Apps/CZ/CoreLocalizationPack/app/Src/Codeunits/VATDateHandlerCZL.Codeunit.al b/Apps/CZ/CoreLocalizationPack/app/Src/Codeunits/VATDateHandlerCZL.Codeunit.al
index bdcc13ce84..14ccf0d0bd 100644
--- a/Apps/CZ/CoreLocalizationPack/app/Src/Codeunits/VATDateHandlerCZL.Codeunit.al
+++ b/Apps/CZ/CoreLocalizationPack/app/Src/Codeunits/VATDateHandlerCZL.Codeunit.al
@@ -19,6 +19,7 @@ using Microsoft.Sales.History;
using Microsoft.Sales.Receivables;
using Microsoft.Service.Document;
using Microsoft.Service.History;
+using Microsoft.Service.Posting;
using System.Reflection;
using System.Security.User;
@@ -82,7 +83,7 @@ codeunit 11742 "VAT Date Handler CZL"
#pragma warning restore AL0432
#endif
- [EventSubscriber(ObjectType::Table, Database::"Invoice Posting Buffer", 'OnAfterPrepareSales', '', false, false)]
+ [EventSubscriber(ObjectType::Codeunit, Codeunit::Microsoft.Sales.Posting."Sales Post Invoice Events", 'OnAfterPrepareInvoicePostingBuffer', '', false, false)]
local procedure UpdateInvoicePostingBufferOnAfterPrepareSales(var InvoicePostingBuffer: Record "Invoice Posting Buffer"; var SalesLine: Record "Sales Line")
var
SalesHeader: Record "Sales Header";
@@ -93,7 +94,7 @@ codeunit 11742 "VAT Date Handler CZL"
InvoicePostingBuffer."Correction CZL" := SalesHeader.Correction xor SalesLine."Negative CZL";
end;
- [EventSubscriber(ObjectType::Table, Database::"Invoice Posting Buffer", 'OnAfterPreparePurchase', '', false, false)]
+ [EventSubscriber(ObjectType::Codeunit, Codeunit::Microsoft.Purchases.Posting."Purch. Post Invoice Events", 'OnAfterPrepareInvoicePostingBuffer', '', false, false)]
local procedure UpdateInvoicePostingBufferOnAfterPreparePurchase(var InvoicePostingBuffer: Record "Invoice Posting Buffer"; var PurchaseLine: Record "Purchase Line")
var
PurchaseHeader: Record "Purchase Header";
@@ -104,7 +105,7 @@ codeunit 11742 "VAT Date Handler CZL"
InvoicePostingBuffer."Correction CZL" := PurchaseHeader.Correction xor PurchaseLine."Negative CZL";
end;
- [EventSubscriber(ObjectType::Table, Database::"Invoice Posting Buffer", 'OnAfterPrepareService', '', false, false)]
+ [EventSubscriber(ObjectType::Codeunit, Codeunit::"Service Post Invoice Events", 'OnAfterPrepareInvoicePostingBuffer', '', false, false)]
local procedure UpdateInvoicePostingBufferOnAfterPrepareService(var InvoicePostingBuffer: Record "Invoice Posting Buffer"; var ServiceLine: Record "Service Line")
var
ServiceHeader: Record "Service Header";
diff --git a/Apps/CZ/CoreLocalizationPack/app/Src/Reports/InventoryDocumentCZL.Report.al b/Apps/CZ/CoreLocalizationPack/app/Src/Reports/InventoryDocumentCZL.Report.al
index bdd3e10880..78b2138720 100644
--- a/Apps/CZ/CoreLocalizationPack/app/Src/Reports/InventoryDocumentCZL.Report.al
+++ b/Apps/CZ/CoreLocalizationPack/app/Src/Reports/InventoryDocumentCZL.Report.al
@@ -153,7 +153,8 @@ report 11752 "Inventory Document CZL"
begin
CurrReport.Language := LanguageMgt.GetLanguageIdOrDefault("Language Code");
CurrReport.FormatRegion := LanguageMgt.GetFormatRegionOrDefault("Format Region");
- SalespersonPurchaser.Get("Salesperson/Purchaser Code");
+ if not SalespersonPurchaser.Get("Salesperson/Purchaser Code") then
+ SalespersonPurchaser.Init();
if not IsReportInPreviewMode() then
Codeunit.Run(Codeunit::"Invt. Document-Printed CZL", "Invt. Document Header");
diff --git a/Apps/CZ/CoreLocalizationPack/app/Src/Reports/PostedInventoryReceiptCZL.Report.al b/Apps/CZ/CoreLocalizationPack/app/Src/Reports/PostedInventoryReceiptCZL.Report.al
index 8b5728c960..33d5178e88 100644
--- a/Apps/CZ/CoreLocalizationPack/app/Src/Reports/PostedInventoryReceiptCZL.Report.al
+++ b/Apps/CZ/CoreLocalizationPack/app/Src/Reports/PostedInventoryReceiptCZL.Report.al
@@ -153,7 +153,8 @@ report 11751 "Posted Inventory Receipt CZL"
begin
CurrReport.Language := LanguageMGt.GetLanguageIdOrDefault("Language Code");
CurrReport.FormatRegion := LanguageMGt.GetFormatRegionOrDefault("Format Region");
- SalespersonPurchaser.Get("Purchaser Code");
+ if not SalespersonPurchaser.Get("Purchaser Code") then
+ SalespersonPurchaser.Init();
if not IsReportInPreviewMode() then
Codeunit.Run(Codeunit::"Posted Invt. Rcpt.-Printed CZL", "Invt. Receipt Header");
diff --git a/Apps/CZ/CoreLocalizationPack/app/Src/Reports/PostedInventoryShipmentCZL.Report.al b/Apps/CZ/CoreLocalizationPack/app/Src/Reports/PostedInventoryShipmentCZL.Report.al
index b9455b37e7..d56b77f547 100644
--- a/Apps/CZ/CoreLocalizationPack/app/Src/Reports/PostedInventoryShipmentCZL.Report.al
+++ b/Apps/CZ/CoreLocalizationPack/app/Src/Reports/PostedInventoryShipmentCZL.Report.al
@@ -151,7 +151,8 @@ report 11750 "Posted Inventory Shipment CZL"
begin
CurrReport.Language := LanguageMgt.GetLanguageIdOrDefault("Language Code");
CurrReport.FormatRegion := LanguageMgt.GetFormatRegionOrDefault("Format Region");
- SalespersonPurchaser.Get("Salesperson Code");
+ if not SalespersonPurchaser.Get("Salesperson Code") then
+ SalespersonPurchaser.Init();
if not IsReportInPreviewMode() then
Codeunit.Run(Codeunit::"Posted Invt. Shpt.-Printed CZL", "Invt. Shipment Header");
diff --git a/Apps/CZ/CoreLocalizationPack/app/Src/TableExtensions/PurchaseHeaderCZL.TableExt.al b/Apps/CZ/CoreLocalizationPack/app/Src/TableExtensions/PurchaseHeaderCZL.TableExt.al
index 552dd7ade7..4fd1150fb5 100644
--- a/Apps/CZ/CoreLocalizationPack/app/Src/TableExtensions/PurchaseHeaderCZL.TableExt.al
+++ b/Apps/CZ/CoreLocalizationPack/app/Src/TableExtensions/PurchaseHeaderCZL.TableExt.al
@@ -513,6 +513,9 @@ tableextension 11705 "Purchase Header CZL" extends "Purchase Header"
PurchaseLine: Record "Purchase Line";
NonDeductibleVAT: Codeunit "Non-Deductible VAT";
begin
+ if not NonDeductibleVAT.IsNonDeductibleVATEnabled() then
+ exit;
+
if not PurchLinesExist() then
exit;
diff --git a/Apps/DK/DKCore/test/src/PostingRestrictionsTests.Codeunit.al b/Apps/DK/DKCore/test/src/PostingRestrictionsTests.Codeunit.al
index 10ab7195dd..3bd5f65ac3 100644
--- a/Apps/DK/DKCore/test/src/PostingRestrictionsTests.Codeunit.al
+++ b/Apps/DK/DKCore/test/src/PostingRestrictionsTests.Codeunit.al
@@ -13,6 +13,7 @@ codeunit 148017 "Posting Restrictions Tests"
LibraryPurchase: Codeunit "Library - Purchase";
LibraryJournals: Codeunit "Library - Journals";
LibraryRandom: Codeunit "Library - Random";
+ LibraryUtility: Codeunit "Library - Utility";
Assert: Codeunit "Assert";
isInitialized: Boolean;
CannotPostWithoutCVRNumberErr: Label 'You cannot post without a valid CVR number filled in. Open the Company Information page and enter a CVR number in the Registration No. field.';
@@ -507,6 +508,8 @@ codeunit 148017 "Posting Restrictions Tests"
local procedure PostSalesInvoice(var SalesHeader: Record "Sales Header"): Code[20]
begin
LibrarySales.CreateSalesInvoice(SalesHeader);
+ SalesHeader.Validate("Incoming Document Entry No.", MockIncomingDocument(SalesHeader."Posting Date", SalesHeader."No."));
+ SalesHeader.Modify(true);
exit(LibrarySales.PostSalesDocument(SalesHeader, true, true));
end;
@@ -520,9 +523,26 @@ codeunit 148017 "Posting Restrictions Tests"
local procedure PostPurchaseInvoice(var PurchaseHeader: Record "Purchase Header"): Code[20]
begin
LibraryPurchase.CreatePurchaseInvoice(PurchaseHeader);
+ PurchaseHeader.Validate("Incoming Document Entry No.", MockIncomingDocument(PurchaseHeader."Posting Date", PurchaseHeader."No."));
+ PurchaseHeader.Modify(true);
exit(LibraryPurchase.PostPurchaseDocument(PurchaseHeader, true, true));
end;
+ local procedure MockIncomingDocument(PostingDate: Date; DocNo: Code[20]): Integer
+ var
+ IncomingDocument: Record "Incoming Document";
+ IncomingDocumentAttachment: Record "Incoming Document Attachment";
+ begin
+ IncomingDocument."Entry No." :=
+ LibraryUtility.GetNewRecNo(IncomingDocument, IncomingDocument.FieldNo("Entry No."));
+ IncomingDocument."Posting Date" := PostingDate;
+ IncomingDocument."Document No." := DocNo;
+ IncomingDocument.Insert();
+ IncomingDocumentAttachment."Incoming Document Entry No." := IncomingDocument."Entry No.";
+ IncomingDocumentAttachment.Insert();
+ exit(IncomingDocument."Entry No.");
+ end;
+
local procedure VerifyGLEntry(PostingDate: Date; DocNo: Code[20])
var
GLEntry: Record "G/L Entry";
diff --git a/Apps/DK/EnforcedDigitalVouchersDK/app/src/DigitalVoucherDKImpl.Codeunit.al b/Apps/DK/EnforcedDigitalVouchersDK/app/src/DigitalVoucherDKImpl.Codeunit.al
index 3dea1e612c..752f08144f 100644
--- a/Apps/DK/EnforcedDigitalVouchersDK/app/src/DigitalVoucherDKImpl.Codeunit.al
+++ b/Apps/DK/EnforcedDigitalVouchersDK/app/src/DigitalVoucherDKImpl.Codeunit.al
@@ -4,24 +4,28 @@
// ------------------------------------------------------------------------------------------------
namespace Microsoft.EServices.EDocument;
+using Microsoft.Foundation.AuditCodes;
+
codeunit 13621 "Digital Voucher DK Impl."
{
Access = Internal;
+ Permissions = tabledata "Digital Voucher Entry Setup" = rim,
+ tabledata "Voucher Entry Source Code" = rim,
+ tabledata "Digital Voucher Setup" = rim;
var
NotAllowedToChangeWhenEnforcedErr: Label 'You are not allowed to change make this change when the feature is enforced.';
[EventSubscriber(ObjectType::Table, Database::"Digital Voucher Entry Setup", 'OnBeforeModifyEvent', '', false, false)]
- local procedure CheckDigitalVoucherEntrySetupOnBeforeModify(var Rec: Record "Digital Voucher Entry Setup"; var xRec: Record "Digital Voucher Entry Setup"; RunTrigger: Boolean)
+ local procedure CheckDigitalVoucherEntrySetupOnBeforeModify(var Rec: Record "Digital Voucher Entry Setup")
begin
- if not CheckSetupForEntryTypesForbiddenFromChangeIsRequired(Rec) then
- exit;
- if not IsEntryTypeForbiddenForChange(Rec."Entry Type") then
- exit;
- if Rec."Check Type" <> xRec."Check Type" then
- error(NotAllowedToChangeWhenEnforcedErr);
- if Rec."Entry Type" in [Rec."Entry Type"::"Purchase Document", Rec."Entry Type"::"Purchase Journal"] then
- Error(NotAllowedToChangeWhenEnforcedErr);
+ CheckDigitalVoucherEntrySetupOnModification(Rec);
+ end;
+
+ [EventSubscriber(ObjectType::Table, Database::"Digital Voucher Entry Setup", 'OnBeforeInsertEvent', '', false, false)]
+ local procedure CheckDigitalVoucherEntrySetupOnBeforeInsert(var Rec: Record "Digital Voucher Entry Setup")
+ begin
+ CheckDigitalVoucherEntrySetupOnModification(Rec);
end;
[EventSubscriber(ObjectType::Table, Database::"Digital Voucher Entry Setup", 'OnBeforeDeleteEvent', '', false, false)]
@@ -40,6 +44,64 @@ codeunit 13621 "Digital Voucher DK Impl."
CheckSetupForEntryTypesForbiddenFromChange(Rec);
end;
+ [EventSubscriber(ObjectType::Table, Database::"Voucher Entry Source Code", 'OnBeforeModifyEvent', '', false, false)]
+ local procedure CheckVoucherSourceCodeOnBeforeModify(var Rec: Record "Voucher Entry Source Code"; xRec: Record "Voucher Entry Source Code")
+ begin
+ CheckVoucherSourceCodeOnModification(Rec, xRec);
+ end;
+
+ [EventSubscriber(ObjectType::Table, Database::"Voucher Entry Source Code", 'OnBeforeRenameEvent', '', false, false)]
+ local procedure CheckVoucherSourceCodeOnBeforeRename(var Rec: Record "Voucher Entry Source Code"; xRec: Record "Voucher Entry Source Code")
+ begin
+ CheckVoucherSourceCodeOnModification(Rec, xRec);
+ end;
+
+ [EventSubscriber(ObjectType::Table, Database::"Voucher Entry Source Code", 'OnBeforeDeleteEvent', '', false, false)]
+ local procedure CheckVoucherSourceCodeOnBeforeDelete(var Rec: Record "Voucher Entry Source Code")
+ var
+ DigitalVoucherFeature: Codeunit "Digital Voucher Feature";
+ begin
+ if Rec.IsTemporary then
+ exit;
+ if not DigitalVoucherFeature.EnforceDigitalVoucherFunctionality() then
+ exit;
+ if Rec."Entry Type" in [Rec."Entry Type"::"Purchase Journal", Rec."Entry Type"::"Sales Journal"] then
+ Error(NotAllowedToChangeWhenEnforcedErr);
+ end;
+
+ local procedure CheckDigitalVoucherEntrySetupOnModification(Rec: Record "Digital Voucher Entry Setup")
+ begin
+ if not CheckSetupForEntryTypesForbiddenFromChangeIsRequired(Rec) then
+ exit;
+ if not IsEntryTypeForbiddenForChange(Rec."Entry Type") then
+ exit;
+ if Rec."Check Type" <> Rec."Check Type"::Attachment then
+ error(NotAllowedToChangeWhenEnforcedErr);
+ if (Rec."Entry Type" in [Rec."Entry Type"::"Purchase Document", Rec."Entry Type"::"Purchase Journal"]) and Rec."Generate Automatically" then
+ error(NotAllowedToChangeWhenEnforcedErr);
+ end;
+
+ local procedure CheckVoucherSourceCodeOnModification(Rec: Record "Voucher Entry Source Code"; xRec: Record "Voucher Entry Source Code")
+ var
+ SourceCodeSetup: Record "Source Code Setup";
+ DigitalVoucherFeature: Codeunit "Digital Voucher Feature";
+ begin
+ if Rec.IsTemporary then
+ exit;
+ if not DigitalVoucherFeature.EnforceDigitalVoucherFunctionality() then
+ exit;
+ if not SourceCodeSetup.Get() then
+ exit;
+ case Rec."Entry Type" of
+ Rec."Entry Type"::"Purchase Journal":
+ if (xRec."Source Code" = SourceCodeSetup."Purchase Journal") and (xRec."Source Code" <> Rec."Source Code") then
+ Error(NotAllowedToChangeWhenEnforcedErr);
+ Rec."Entry Type"::"Sales Journal":
+ if (xRec."Source Code" = SourceCodeSetup."Sales Journal") and (xRec."Source Code" <> Rec."Source Code") then
+ Error(NotAllowedToChangeWhenEnforcedErr);
+ end;
+ end;
+
local procedure CheckSetupForEntryTypesForbiddenFromChange(Rec: Record "Digital Voucher Entry Setup")
begin
if IsEntryTypeForbiddenForChange(Rec."Entry Type") then
@@ -59,4 +121,87 @@ codeunit 13621 "Digital Voucher DK Impl."
exit(false);
exit(DigitalVoucherFeature.EnforceDigitalVoucherFunctionality());
end;
+
+ [EventSubscriber(ObjectType::Codeunit, Codeunit::"Digital Voucher Impl.", 'OnHandleDigitalVoucherEntrySetupWhenEnforced', '', false, false)]
+ local procedure DefaultEnforcementSetupOnGetDigitalVoucherEntrySetupWhenEnforced(EntryType: Enum "Digital Voucher Entry Type")
+ var
+ DigitalVoucherSetup: Record "Digital Voucher Setup";
+ DigitalVoucherEntrySetup: Record "Digital Voucher Entry Setup";
+ DigitalVoucherFeature: Codeunit "Digital Voucher Feature";
+ begin
+ if not DigitalVoucherFeature.EnforceDigitalVoucherFunctionality() then
+ exit;
+ if not DigitalVoucherSetup.Get() then
+ DigitalVoucherSetup.Insert();
+ if not DigitalVoucherSetup.Enabled then begin
+ DigitalVoucherSetup.Enabled := true;
+ DigitalVoucherSetup.Modify();
+ end;
+
+ case EntryType of
+ EntryType::"General Journal", EntryType::"Sales Journal":
+ if not DigitalVoucherEntrySetup.Get(EntryType) then
+ RecreateDigitalVoucherEntrySetup(EntryType, DigitalVoucherEntrySetup."Check Type"::"No Check", false);
+ EntryType::"Purchase Journal":
+ RecreateDigitalVoucherEntrySetup(EntryType, DigitalVoucherEntrySetup."Check Type"::Attachment, false);
+ EntryType::"Sales Document":
+ RecreateDigitalVoucherEntrySetup(EntryType, DigitalVoucherEntrySetup."Check Type"::Attachment, true);
+ EntryType::"Purchase Document":
+ RecreateDigitalVoucherEntrySetup(EntryType, DigitalVoucherEntrySetup."Check Type"::Attachment, false);
+ end;
+ end;
+
+ local procedure RecreateDigitalVoucherEntrySetup(EntryType: Enum "Digital Voucher Entry Type"; CheckType: Enum "Digital Voucher Check Type"; GenerateAutomatically: Boolean)
+ var
+ DigitalVoucherEntrySetup: Record "Digital Voucher Entry Setup";
+ begin
+ if DigitalVoucherEntrySetup.Get(EntryType) then
+ if DigitalVoucherEntrySetup."Check Type" = CheckType then
+ exit;
+ DigitalVoucherEntrySetup."Entry Type" := EntryType;
+ DigitalVoucherEntrySetup."Check Type" := CheckType;
+ DigitalVoucherEntrySetup."Generate Automatically" := GenerateAutomatically;
+ DigitalVoucherEntrySetup."Skip If Manually Added" := true;
+ if not DigitalVoucherEntrySetup.insert() then
+ DigitalVoucherEntrySetup.Modify();
+ RecreateDigitalVoucherEntrySourceCode(EntryType);
+ end;
+
+ local procedure RecreateDigitalVoucherEntrySourceCode(EntryType: Enum "Digital Voucher Entry Type")
+ var
+ SourceCodeSetup: Record "Source Code Setup";
+ begin
+ if not SourceCodeSetup.Get() then
+ exit;
+ case EntryType of
+ EntryType::"Sales Document":
+ begin
+ InsertDigitalVoucherEntrySourceCode(EntryType, SourceCodeSetup.Sales);
+ InsertDigitalVoucherEntrySourceCode(EntryType, SourceCodeSetup."Sales Deferral");
+ end;
+ EntryType::"Sales Journal":
+ InsertDigitalVoucherEntrySourceCode(EntryType, SourceCodeSetup."Sales Journal");
+ EntryType::"Purchase Document":
+ begin
+ InsertDigitalVoucherEntrySourceCode(EntryType, SourceCodeSetup.Purchases);
+ InsertDigitalVoucherEntrySourceCode(EntryType, SourceCodeSetup."Purchase Deferral");
+ end;
+ EntryType::"Purchase Journal":
+ InsertDigitalVoucherEntrySourceCode(EntryType, SourceCodeSetup."Purchase Journal");
+ end;
+ end;
+
+ local procedure InsertDigitalVoucherEntrySourceCode(EntryType: Enum "Digital Voucher Entry Type"; SourceCode: Code[10])
+ var
+ VoucherSourceCode: Record "Voucher Entry Source Code";
+ SourceCodeRec: Record "Source Code";
+ begin
+ if SourceCode = '' then
+ exit;
+ if not SourceCodeRec.Get(SourceCode) then
+ exit;
+ VoucherSourceCode.Validate("Entry Type", EntryType);
+ VoucherSourceCode.Validate("Source Code", SourceCode);
+ if VoucherSourceCode.Insert(true) then;
+ end;
}
diff --git a/Apps/IN/INGST/app/GSTBase/src/Codeunit/GSTNavigate.codeunit.al b/Apps/IN/INGST/app/GSTBase/src/Codeunit/GSTNavigate.codeunit.al
index da2c7b1a79..9d7e19b08a 100644
--- a/Apps/IN/INGST/app/GSTBase/src/Codeunit/GSTNavigate.codeunit.al
+++ b/Apps/IN/INGST/app/GSTBase/src/Codeunit/GSTNavigate.codeunit.al
@@ -18,15 +18,13 @@ codeunit 18002 "GST Navigate"
DetailedGSTLedgerEntry: Record "Detailed GST Ledger Entry";
GSTLedgerEntry: Record "GST Ledger Entry";
GSTTDSTCSEntry: Record "GST TDS/TCS Entry";
- Navigate: Page Navigate;
begin
if GSTLedgerEntry.ReadPermission() then begin
GSTLedgerEntry.Reset();
GSTLedgerEntry.SetCurrentKey("Document No.", "Posting Date");
GSTLedgerEntry.SetFilter("Document No.", DocNoFilter);
GSTLedgerEntry.SetFilter("Posting Date", PostingDateFilter);
- Navigate.InsertIntoDocEntry(
- DocumentEntry,
+ DocumentEntry.InsertIntoDocEntry(
Database::"GST Ledger Entry",
0,
CopyStr(GSTLedgerEntry.TableCaption(), 1, 1024),
@@ -38,8 +36,7 @@ codeunit 18002 "GST Navigate"
DetailedGSTLedgerEntry.SetCurrentKey("Document No.", "Posting Date");
DetailedGSTLedgerEntry.SetFilter("Document No.", DocNoFilter);
DetailedGSTLedgerEntry.SetFilter("Posting Date", PostingDateFilter);
- Navigate.InsertIntoDocEntry(
- DocumentEntry,
+ DocumentEntry.InsertIntoDocEntry(
Database::"Detailed GST Ledger Entry",
0,
CopyStr(DetailedGSTLedgerEntry.TableCaption(), 1, 1024),
@@ -51,8 +48,7 @@ codeunit 18002 "GST Navigate"
GSTTDSTCSEntry.SetCurrentKey("Document No.", "Posting Date");
GSTTDSTCSEntry.SetFilter("Document No.", DocNoFilter);
GSTTDSTCSEntry.SetFilter("Posting Date", PostingDateFilter);
- Navigate.InsertIntoDocEntry(
- DocumentEntry,
+ DocumentEntry.InsertIntoDocEntry(
Database::"GST TDS/TCS Entry",
0,
CopyStr(GSTTDSTCSEntry.TableCaption(), 1, 1024),
diff --git a/Apps/IN/INGST/app/GSTBase/src/Codeunit/GSTPreviewHandler.Codeunit.al b/Apps/IN/INGST/app/GSTBase/src/Codeunit/GSTPreviewHandler.Codeunit.al
index c63bd88c1f..d367110cca 100644
--- a/Apps/IN/INGST/app/GSTBase/src/Codeunit/GSTPreviewHandler.Codeunit.al
+++ b/Apps/IN/INGST/app/GSTBase/src/Codeunit/GSTPreviewHandler.Codeunit.al
@@ -139,21 +139,22 @@ codeunit 18003 "GST Preview Handler"
TempDetailedGSTLedgerEntryInfo.Insert();
end;
- [EventSubscriber(ObjectType::Page, Page::Navigate, 'OnAfterNavigateShowRecords', '', false, false)]
- local procedure ShowEntries(TableID: Integer; DocNoFilter: Text; PostingDateFilter: Text; var TempDocumentEntry: Record "Document Entry")
+ [EventSubscriber(ObjectType::Page, Page::Navigate, 'OnBeforeShowRecords', '', false, false)]
+ local procedure ShowEntries(DocNoFilter: Text; PostingDateFilter: Text; var TempDocumentEntry: Record "Document Entry"; var IsHandled: Boolean)
var
GSTLedgerEntries: Record "GST Ledger Entry";
DetailedGSTLedgerEntries: Record "Detailed GST Ledger Entry";
GSTTDSTCSEntry: Record "GST TDS/TCS Entry";
DetailedGSTLedgerEntryInfo: Record "Detailed GST Ledger Entry Info";
begin
- case TableID of
+ case TempDocumentEntry."Table ID" of
Database::"GST Ledger Entry":
begin
GSTLedgerEntries.Reset();
GSTLedgerEntries.SetRange("Document No.", DocNoFilter);
GSTLedgerEntries.SetFilter("Posting Date", PostingDateFilter);
Page.Run(0, GSTLedgerEntries);
+ IsHandled := true;
end;
Database::"Detailed GST Ledger Entry":
begin
@@ -161,6 +162,7 @@ codeunit 18003 "GST Preview Handler"
DetailedGSTLedgerEntries.SetRange("Document No.", DocNoFilter);
DetailedGSTLedgerEntries.SetFilter("Posting Date", PostingDateFilter);
Page.Run(0, DetailedGSTLedgerEntries);
+ IsHandled := true;
end;
Database::"GST TDS/TCS Entry":
begin
@@ -168,11 +170,13 @@ codeunit 18003 "GST Preview Handler"
GSTTDSTCSEntry.SetRange("Document No.", DocNoFilter);
GSTTDSTCSEntry.SetFilter("Posting Date", PostingDateFilter);
Page.Run(0, GSTTDSTCSEntry);
+ IsHandled := true;
end;
Database::"Detailed GST Ledger Entry Info":
begin
DetailedGSTLedgerEntryInfo.SetRange("Entry No.", FromDetailedGSTLedgerEntryNo, ToDetailedGSTLedgerEntryNo);
Page.Run(0, DetailedGSTLedgerEntryInfo);
+ IsHandled := true;
end;
end;
end;
diff --git a/Apps/IN/INGST/app/GSTBase/src/TaxEngineSetup/GSTTaxConfiguration.Codeunit.al b/Apps/IN/INGST/app/GSTBase/src/TaxEngineSetup/GSTTaxConfiguration.Codeunit.al
index e4eebec3b1..84071499e2 100644
--- a/Apps/IN/INGST/app/GSTBase/src/TaxEngineSetup/GSTTaxConfiguration.Codeunit.al
+++ b/Apps/IN/INGST/app/GSTBase/src/TaxEngineSetup/GSTTaxConfiguration.Codeunit.al
@@ -959,6 +959,8 @@ codeunit 18017 "GST Tax Configuration"
UseCases.Add('{321e0f7b-a15d-4ce6-9c11-bf3fd3dee918}', 1);
UseCases.Add('{631DEFA0-165E-4BDC-8F8A-AB2A88DF90AD}', 1);
UseCases.Add('{9CF523A9-24DB-4928-A3CB-8DC5FCA4AF69}', 1);
+ UseCases.Add('{E8B90257-9F0D-42F4-A340-13A648D11829}', 1);
+ UseCases.Add('{874048A6-575B-456F-A2E7-26532DA3F1CA}', 1);
end;
var
diff --git a/Apps/IN/INGST/app/GSTBase/src/TaxEngineSetup/GSTUseCaseLabels.Codeunit.al b/Apps/IN/INGST/app/GSTBase/src/TaxEngineSetup/GSTUseCaseLabels.Codeunit.al
index 903d17045a..9600836e41 100644
--- a/Apps/IN/INGST/app/GSTBase/src/TaxEngineSetup/GSTUseCaseLabels.Codeunit.al
+++ b/Apps/IN/INGST/app/GSTBase/src/TaxEngineSetup/GSTUseCaseLabels.Codeunit.al
@@ -203,6 +203,8 @@ codeunit 18019 "GST Use Case Labels"
CaseList.Add('{0ebd8b25-3c27-46ae-8cd7-4e870db1315b}');
CaseList.Add('{97437c0c-3e99-4d15-9378-34ac4b8fd002}');
CaseList.Add('{9CF523A9-24DB-4928-A3CB-8DC5FCA4AF69}');
+ CaseList.Add('{e8b90257-9f0d-42f4-a340-13a648d11829}');
+ CaseList.Add('{874048a6-575b-456f-a2e7-26532da3f1ca}');
end;
procedure GetConfig(CaseID: Guid; var Handled: Boolean): Text
@@ -349,6 +351,8 @@ codeunit 18019 "GST Use Case Labels"
"{0ebd8b25-3c27-46ae-8cd7-4e870db1315b}Lbl": Label 'GST Use Cases';
"{97437c0c-3e99-4d15-9378-34ac4b8fd002}Lbl": Label 'GST Use Cases';
"{9CF523A9-24DB-4928-A3CB-8DC5FCA4AF69}Lbl": Label 'GST Use Cases';
+ "{e8b90257-9f0d-42f4-a340-13a648d11829}Lbl": Label 'GST Use Cases';
+ "{874048a6-575b-456f-a2e7-26532da3f1ca}Lbl": Label 'GST Use Cases';
begin
Handled := true;
@@ -667,6 +671,10 @@ codeunit 18019 "GST Use Case Labels"
exit("{97437c0c-3e99-4d15-9378-34ac4b8fd002}Lbl");
'{9CF523A9-24DB-4928-A3CB-8DC5FCA4AF69}':
exit("{9CF523A9-24DB-4928-A3CB-8DC5FCA4AF69}Lbl");
+ '{e8b90257-9f0d-42f4-a340-13a648d11829}':
+ exit("{e8b90257-9f0d-42f4-a340-13a648d11829}Lbl");
+ '{874048a6-575b-456f-a2e7-26532da3f1ca}':
+ exit("{874048a6-575b-456f-a2e7-26532da3f1ca}Lbl");
end;
Handled := false;
diff --git a/Apps/IN/INGST/app/GSTPayments/src/Codeunit/GSTPurchCustomDutyAvailment.Codeunit.al b/Apps/IN/INGST/app/GSTPayments/src/Codeunit/GSTPurchCustomDutyAvailment.Codeunit.al
index 801e13db2b..ec38bcce72 100644
--- a/Apps/IN/INGST/app/GSTPayments/src/Codeunit/GSTPurchCustomDutyAvailment.Codeunit.al
+++ b/Apps/IN/INGST/app/GSTPayments/src/Codeunit/GSTPurchCustomDutyAvailment.Codeunit.al
@@ -109,7 +109,7 @@ codeunit 18253 "GST Purch CustomDuty Availment"
GenJnlLine."FA Custom Duty Amount" := InvoicePostBuffer."FA Custom Duty Amount";
end;
#else
- [EventSubscriber(ObjectType::Table, Database::"Invoice Posting Buffer", 'OnAfterPreparePurchase', '', false, false)]
+ [EventSubscriber(ObjectType::Codeunit, Codeunit::"Purch. Post Invoice Events", 'OnAfterPrepareInvoicePostingBuffer', '', false, false)]
local procedure FillInvoicePostingBufferNonAvailmentFA(var InvoicePostingBuffer: Record "Invoice Posting Buffer"; var PurchaseLine: Record "Purchase Line")
var
QtyFactor: Decimal;
diff --git a/Apps/IN/INGST/app/GSTPayments/src/Codeunit/GSTPurchaseNonAvailment.Codeunit.al b/Apps/IN/INGST/app/GSTPayments/src/Codeunit/GSTPurchaseNonAvailment.Codeunit.al
index a20f3fc2fa..1ccc5d1c28 100644
--- a/Apps/IN/INGST/app/GSTPayments/src/Codeunit/GSTPurchaseNonAvailment.Codeunit.al
+++ b/Apps/IN/INGST/app/GSTPayments/src/Codeunit/GSTPurchaseNonAvailment.Codeunit.al
@@ -49,7 +49,7 @@ codeunit 18251 "GST Purchase Non Availment"
end;
end;
#else
- [EventSubscriber(ObjectType::Table, Database::"Invoice Posting Buffer", 'OnAfterPreparePurchase', '', false, false)]
+ [EventSubscriber(ObjectType::Codeunit, Codeunit::"Purch. Post Invoice Events", 'OnAfterPrepareInvoicePostingBuffer', '', false, false)]
local procedure FillInvoicePostingBufferNonAvailmentFA(var InvoicePostingBuffer: Record "Invoice Posting Buffer"; var PurchaseLine: Record "Purchase Line")
var
QtyFactor: Decimal;
diff --git a/Apps/IN/INGST/app/GSTSubcontracting/src/Codeunit/SubcontractingPostBatch.Codeunit.al b/Apps/IN/INGST/app/GSTSubcontracting/src/Codeunit/SubcontractingPostBatch.Codeunit.al
index 808740fe6c..6343f957b0 100644
--- a/Apps/IN/INGST/app/GSTSubcontracting/src/Codeunit/SubcontractingPostBatch.Codeunit.al
+++ b/Apps/IN/INGST/app/GSTSubcontracting/src/Codeunit/SubcontractingPostBatch.Codeunit.al
@@ -13,6 +13,7 @@ using Microsoft.Inventory.Tracking;
using Microsoft.Purchases.Document;
using Microsoft.Purchases.Posting;
using Microsoft.Purchases.Vendor;
+using Microsoft.Finance.Currency;
codeunit 18467 "Subcontracting Post Batch"
{
@@ -199,6 +200,7 @@ codeunit 18467 "Subcontracting Post Batch"
PurchHeader: Record "Purchase Header";
PurchLine: Record "Purchase Line";
PurchLineToUpdate: Record "Purchase Line";
+ Currency: Record Currency;
PurchPost: Codeunit "Purch.-Post";
begin
if not Confirm(PostConfirmationQst) then
@@ -230,6 +232,13 @@ codeunit 18467 "Subcontracting Post Batch"
PurchHeader.SetRange("No.", PurchLine."Document No.");
PurchHeader.SetRange("Subcon. Multiple Receipt", false);
if PurchHeader.FindFirst() then begin
+ if PurchHeader."Currency Code" = '' then
+ Currency.InitRoundingPrecision()
+ else begin
+ PurchHeader.TestField("Currency Factor");
+ Currency.Get(PurchHeader."Currency Code");
+ Currency.TestField("Amount Rounding Precision");
+ end;
PurchHeader."Vendor Shipment No." := MultiSubOrderDet."Vendor Shipment No.";
PurchHeader.Receive := true;
PurchHeader.Invoice := false;
@@ -239,6 +248,11 @@ codeunit 18467 "Subcontracting Post Batch"
end;
PurchLineToUpdate.Get(PurchLine."Document Type", PurchLine."Document No.", PurchLine."Line No.");
PurchLineToUpdate."Applies-to ID (Receipt)" := '';
+ PurchLineToUpdate."Line Discount Amount" := Round(
+ Round(PurchLineToUpdate.Quantity * PurchLineToUpdate."Direct Unit Cost", Currency."Amount Rounding Precision") *
+ PurchLineToUpdate."Line Discount %" / 100,
+ Currency."Amount Rounding Precision");
+ PurchLineToUpdate.UpdateAmounts();
PurchLineToUpdate.Modify();
until PurchLine.Next() = 0
else
diff --git a/Apps/IN/INGST/app/Translations/India GST.en-GB.xlf b/Apps/IN/INGST/app/Translations/India GST.en-GB.xlf
index fe5bc75753..036815dc42 100644
--- a/Apps/IN/INGST/app/Translations/India GST.en-GB.xlf
+++ b/Apps/IN/INGST/app/Translations/India GST.en-GB.xlf
@@ -13401,6 +13401,18 @@
Codeunit GST Use Case Labels - Method GetConfig - NamedType {9CF523A9-24DB-4928-A3CB-8DC5FCA4AF69}Lbl
+
+ GST Use Cases
+
+
+ Codeunit GST Use Case Labels - Method GetConfig - NamedType {e8b90257-9f0d-42f4-a340-13a648d11829}Lbl
+
+
+ GST Use Cases
+
+
+ Codeunit GST Use Case Labels - Method GetConfig - NamedType {874048a6-575b-456f-a2e7-26532da3f1ca}Lbl
+
Company Information must have either GST Registration No. or ARN No.
diff --git a/Apps/IN/INGST/app/Translations/India GST.en-US.xlf b/Apps/IN/INGST/app/Translations/India GST.en-US.xlf
index 6c7ab1335d..95438e5d73 100644
--- a/Apps/IN/INGST/app/Translations/India GST.en-US.xlf
+++ b/Apps/IN/INGST/app/Translations/India GST.en-US.xlf
@@ -13401,6 +13401,18 @@
Codeunit GST Use Case Labels - Method GetConfig - NamedType {9CF523A9-24DB-4928-A3CB-8DC5FCA4AF69}Lbl
+
+ GST Use Cases
+
+
+ Codeunit GST Use Case Labels - Method GetConfig - NamedType {e8b90257-9f0d-42f4-a340-13a648d11829}Lbl
+
+
+ GST Use Cases
+
+
+ Codeunit GST Use Case Labels - Method GetConfig - NamedType {874048a6-575b-456f-a2e7-26532da3f1ca}Lbl
+
Company Information must have either GST Registration No. or ARN No.
diff --git a/Apps/IN/INReports/app/src/enum/GSTR1CDNRPerQuery.Query.al b/Apps/IN/INReports/app/src/enum/GSTR1CDNRPerQuery.Query.al
index d2cfa6b7b6..29e568af67 100644
--- a/Apps/IN/INReports/app/src/enum/GSTR1CDNRPerQuery.Query.al
+++ b/Apps/IN/INReports/app/src/enum/GSTR1CDNRPerQuery.Query.al
@@ -21,6 +21,9 @@ query 18017 GSTR1CDNRPerQuery
column(Document_Type; "Document Type")
{
}
+ column(Document_Line_No_; "Document Line No.")
+ {
+ }
filter(Entry_Type; "Entry Type")
{
ColumnFilter = Entry_Type = filter(= "Initial Entry");
diff --git a/Apps/IN/INReports/app/src/enum/GSTR1CDNRQuery.Query.al b/Apps/IN/INReports/app/src/enum/GSTR1CDNRQuery.Query.al
index 046e74faac..721a9f5d14 100644
--- a/Apps/IN/INReports/app/src/enum/GSTR1CDNRQuery.Query.al
+++ b/Apps/IN/INReports/app/src/enum/GSTR1CDNRQuery.Query.al
@@ -16,9 +16,13 @@ query 18018 GSTR1CDNRQuery
{
dataitem(Detailed_GST_Ledger_Entry; "Detailed GST Ledger Entry")
{
+ DataItemTableFilter = "GST Component Code" = filter(<> 'CESS');
column(Document_Type; "Document Type")
{
}
+ column(Document_Line_No_; "Document Line No.")
+ {
+ }
filter(Entry_Type; "Entry Type")
{
ColumnFilter = Entry_Type = filter(= "Initial Entry");
diff --git a/Apps/IN/INReports/app/src/report/GSTR1FileFormat.Report.al b/Apps/IN/INReports/app/src/report/GSTR1FileFormat.Report.al
index f30dcd868b..9e3e94ad97 100644
--- a/Apps/IN/INReports/app/src/report/GSTR1FileFormat.Report.al
+++ b/Apps/IN/INReports/app/src/report/GSTR1FileFormat.Report.al
@@ -1028,6 +1028,7 @@ report 18049 "GSTR-1 File Format"
GSTR1CDNRPerQuery.SetRange(Posting_Date, StartDate, EndDate);
GSTR1CDNRPerQuery.SetRange(Document_No_, GSTR1CDNRQuery.Document_No_);
GSTR1CDNRPerQuery.SetRange(Document_Type, GSTR1CDNRQuery.Document_Type);
+ GSTR1CDNRPerQuery.SetRange(Document_Line_No_, GSTR1CDNRQuery.Document_Line_No_);
GSTR1CDNRPerQuery.Open();
while GSTR1CDNRPerQuery.Read() do
if GSTR1CDNRPerQuery.GST_Jurisdiction_Type = GSTR1CDNRPerQuery.GST_Jurisdiction_Type::Intrastate then
@@ -1042,9 +1043,9 @@ report 18049 "GSTR-1 File Format"
GSTR1CDNRCess.SetRange(Location__Reg__No_, LocationGSTIN);
GSTR1CDNRCess.SetRange(Posting_Date, StartDate, EndDate);
- GSTR1CDNRCess.SetRange(GSTR1CDNRCess.Document_No_, GSTR1CDNRQuery.Document_No_);
GSTR1CDNRCess.SetRange(Document_No_, GSTR1CDNRQuery.Document_No_);
GSTR1CDNRCess.SetRange(Document_Type, GSTR1CDNRQuery.Document_Type);
+ GSTR1CDNRCess.SetRange(GSTR1CDNRCess.Document_Line_No_, GSTR1CDNRQuery.Document_Line_No_);
GSTR1CDNRCess.Open();
if GSTR1CDNRCess.Read() then
AddNumberColumn(Abs(GSTR1CDNRCess.GST_Amount))
diff --git a/Apps/IN/INTCS/app/TCSBase/src/codeunit/TCSPostPreview.codeunit.al b/Apps/IN/INTCS/app/TCSBase/src/codeunit/TCSPostPreview.codeunit.al
index be0e59868e..44263f64ce 100644
--- a/Apps/IN/INTCS/app/TCSBase/src/codeunit/TCSPostPreview.codeunit.al
+++ b/Apps/IN/INTCS/app/TCSBase/src/codeunit/TCSPostPreview.codeunit.al
@@ -15,30 +15,31 @@ codeunit 18808 "TCS-Post Preview"
PostingDateFilter: Text)
var
TCSEntry: Record "TCS Entry";
- Navigate: Page Navigate;
begin
if TCSEntry.ReadPermission() then begin
TCSEntry.Reset();
TCSEntry.SetCurrentKey("Document No.", "Posting Date");
TCSEntry.SetFilter("Document No.", DocNoFilter);
TCSEntry.SetFilter("Posting Date", PostingDateFilter);
- Navigate.InsertIntoDocEntry(DocumentEntry, DATABASE::"TCS Entry", 0, CopyStr(TCSEntry.TableCaption(), 1, 1024), TCSEntry.Count());
+ DocumentEntry.InsertIntoDocEntry(DATABASE::"TCS Entry", 0, CopyStr(TCSEntry.TableCaption(), 1, 1024), TCSEntry.Count());
end;
end;
- [EventSubscriber(ObjectType::Page, Page::Navigate, 'OnAfterNavigateShowRecords', '', false, false)]
+ [EventSubscriber(ObjectType::Page, Page::Navigate, 'OnBeforeShowRecords', '', false, false)]
local procedure ShowEntries(
- TableID: Integer;
DocNoFilter: Text;
PostingDateFilter: Text;
- var TempDocumentEntry: Record "Document Entry")
+ var TempDocumentEntry: Record "Document Entry";
+ var IsHandled: Boolean)
var
TCSEntry: Record "TCS Entry";
begin
- TCSEntry.Reset();
- TCSEntry.SetFilter("Document No.", DocNoFilter);
- TCSEntry.SetFilter("Posting Date", PostingDateFilter);
- if TableID = Database::"TCS Entry" then
+ if TempDocumentEntry."Table ID" = Database::"TCS Entry" then begin
+ TCSEntry.Reset();
+ TCSEntry.SetFilter("Document No.", DocNoFilter);
+ TCSEntry.SetFilter("Posting Date", PostingDateFilter);
Page.Run(Page::"TCS Entries", TCSEntry);
+ IsHandled := true;
+ end;
end;
}
diff --git a/Apps/IN/INTDS/app/TDSBase/src/codeunit/TDSNavigateHandler.Codeunit.al b/Apps/IN/INTDS/app/TDSBase/src/codeunit/TDSNavigateHandler.Codeunit.al
index 98e2645ac3..00433e0a49 100644
--- a/Apps/IN/INTDS/app/TDSBase/src/codeunit/TDSNavigateHandler.Codeunit.al
+++ b/Apps/IN/INTDS/app/TDSBase/src/codeunit/TDSNavigateHandler.Codeunit.al
@@ -8,8 +8,6 @@ using Microsoft.Foundation.Navigate;
codeunit 18686 "TDS Navigate Handler"
{
- var
- Navigate: Page Navigate;
[EventSubscriber(ObjectType::Page, Page::Navigate, 'OnAfterNavigateFindRecords', '', false, false)]
local procedure FindTDSEntries(
@@ -23,22 +21,24 @@ codeunit 18686 "TDS Navigate Handler"
TDSEntry.SetCurrentKey("Document No.", "Posting Date");
TDSEntry.SetFilter("Document No.", DocNoFilter);
TDSEntry.SetFilter("Posting Date", PostingDateFilter);
- Navigate.InsertIntoDocEntry(DocumentEntry, Database::"TDS Entry", 0, CopyStr(TDSEntry.TableCaption(), 1, 1024), TDSEntry.Count());
+ DocumentEntry.InsertIntoDocEntry(Database::"TDS Entry", 0, CopyStr(TDSEntry.TableCaption(), 1, 1024), TDSEntry.Count());
end;
end;
- [EventSubscriber(ObjectType::Page, Page::Navigate, 'OnAfterNavigateShowRecords', '', false, false)]
+ [EventSubscriber(ObjectType::Page, Page::Navigate, 'OnBeforeShowRecords', '', false, false)]
local procedure ShowEntries(
- TableID: Integer;
DocNoFilter: Text;
PostingDateFilter: Text;
- var TempDocumentEntry: Record "Document Entry")
+ var TempDocumentEntry: Record "Document Entry";
+ var IsHandled: Boolean)
var
TDSEntry: Record "TDS Entry";
begin
- TDSEntry.SetRange("Document No.", DocNoFilter);
- TDSEntry.SetFilter("Posting Date", PostingDateFilter);
- if TableID = Database::"TDS Entry" then
+ if TempDocumentEntry."Table ID" = Database::"TDS Entry" then begin
+ TDSEntry.SetRange("Document No.", DocNoFilter);
+ TDSEntry.SetFilter("Posting Date", PostingDateFilter);
Page.Run(Page::"TDS Entries", TDSEntry);
+ IsHandled := true;
+ end;
end;
}
diff --git a/Apps/IN/INTDS/app/TDSOnPayments/src/ProvisionalEntry/ProvisionalEntryHandler.Codeunit.al b/Apps/IN/INTDS/app/TDSOnPayments/src/ProvisionalEntry/ProvisionalEntryHandler.Codeunit.al
index c848513d41..c0d730c0ed 100644
--- a/Apps/IN/INTDS/app/TDSOnPayments/src/ProvisionalEntry/ProvisionalEntryHandler.Codeunit.al
+++ b/Apps/IN/INTDS/app/TDSOnPayments/src/ProvisionalEntry/ProvisionalEntryHandler.Codeunit.al
@@ -239,27 +239,28 @@ codeunit 18768 "Provisional Entry Handler"
local procedure FindTCSEntries(var DocumentEntry: Record "Document Entry"; DocNoFilter: Text; PostingDateFilter: Text)
var
ProvisionalEntry: Record "Provisional Entry";
- Navigate: page Navigate;
begin
if ProvisionalEntry.ReadPermission() then begin
ProvisionalEntry.Reset();
ProvisionalEntry.SetCurrentKey("Posted Document No.", "Posting Date");
ProvisionalEntry.SetFilter("Posted Document No.", DocNoFilter);
ProvisionalEntry.SetFilter("Posting Date", PostingDateFilter);
- Navigate.InsertIntoDocEntry(DocumentEntry, Database::"Provisional Entry", 0, Copystr(ProvisionalEntry.TableCaption(), 1, 1024), ProvisionalEntry.Count());
+ DocumentEntry.InsertIntoDocEntry(Database::"Provisional Entry", 0, Copystr(ProvisionalEntry.TableCaption(), 1, 1024), ProvisionalEntry.Count());
end;
end;
- [EventSubscriber(ObjectType::Page, page::Navigate, 'OnAfterNavigateShowRecords', '', false, false)]
- local procedure ShowEntries(TableID: Integer; DocNoFilter: Text; PostingDateFilter: Text; var TempDocumentEntry: Record "Document Entry")
+ [EventSubscriber(ObjectType::Page, page::Navigate, 'OnBeforeShowRecords', '', false, false)]
+ local procedure ShowEntries(DocNoFilter: Text; PostingDateFilter: Text; var TempDocumentEntry: Record "Document Entry"; var IsHandled: Boolean)
var
ProvisionalEntry: Record "Provisional Entry";
begin
- ProvisionalEntry.Reset();
- ProvisionalEntry.SetFilter("Posted Document No.", DocNoFilter);
- ProvisionalEntry.SetFilter("Posting Date", PostingDateFilter);
- if TableID = Database::"Provisional Entry" then
+ if TempDocumentEntry."Table ID" = Database::"Provisional Entry" then begin
+ ProvisionalEntry.Reset();
+ ProvisionalEntry.SetFilter("Posted Document No.", DocNoFilter);
+ ProvisionalEntry.SetFilter("Posting Date", PostingDateFilter);
Page.Run(Page::"Provisional Entries Preview", ProvisionalEntry);
+ IsHandled := true;
+ end;
end;
[EventSubscriber(ObjectType::Codeunit, Codeunit::"Gen. Jnl.-Post Line", 'OnAfterRunWithoutCheck', '', false, false)]
diff --git a/Apps/IN/INTaxBase/app/Translations/India Tax Base.en-US.xlf b/Apps/IN/INTaxBase/app/Translations/India Tax Base.en-US.xlf
index b1b877a1c1..543c54f319 100644
--- a/Apps/IN/INTaxBase/app/Translations/India Tax Base.en-US.xlf
+++ b/Apps/IN/INTaxBase/app/Translations/India Tax Base.en-US.xlf
@@ -270,7 +270,7 @@
Use Case Tree Place holder
- ''),Field18080=1(<>''),Field18096=1(<>''))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000311","Name":"Calculation of Cess where input tax Credit is available through Purchase Quote/Order/Invoice - Registered/Unregistered","NodeType":"Use Case","TableID":39,"CaseID":"{F6F63738-94DD-4B0B-BAD6-4EC11668D327}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000312","Name":"Calculation of Cess where input tax Credit is available through Purchase Quote/Order/Invoice - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{8D93354A-64E8-4DA5-A1A7-741A42B80B33}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000313","Name":"Calculation of Cess where input tax Credit is available through Purchase Quote/Order/Invoice - Goods from SEZ Vendor With Bill of Entry","NodeType":"Use Case","TableID":39,"CaseID":"{826B72ED-5C21-45CA-A966-8443C38B768A}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000314","Name":"Calculation of Cess where input tax Credit is available through Purchase Quote/Order/Invoice - Service from SEZ Vendor","NodeType":"Use Case","TableID":39,"CaseID":"{7C64DCF3-718C-405E-A389-582FD1E33E5D}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000315","Name":"Calculation of Cess where input tax Credit is available through Purchase Quote/Order/Invoice - Goods from SEZ Vendor Without Bill of Entry","NodeType":"Use Case","TableID":39,"CaseID":"{71ED6108-7E6C-42E3-BEC8-DF9AD0C7A27E}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000316","Name":"Calculation of Cess where input tax Credit is Not Available through Purchase Quote/Order/Invoice","NodeType":"Use Case","TableID":39,"CaseID":"{C724AA5A-92F2-4965-957B-C43EEACAABE6}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000317","Name":"Calculation of Cess where input tax Credit is Not Available through Purchase Quote/Order/Invoice - G/L Account","NodeType":"Use Case","TableID":39,"CaseID":"{DEEB69C8-EDAA-4A5A-875E-A20DA52008BC}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000318","Name":"Calculation of Cess where input tax Credit is Not available through Purchase Quote/Order/Invoice - Goods from SEZ Vendor Without Bill of Entry","NodeType":"Use Case","TableID":39,"CaseID":"{DE898176-3602-4CBD-BF29-EAF4A9C03987}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000319","Name":"Calculation of Cess where input tax Credit is Not Available through Purchase Quote/Order/Invoice - G/L Account (Reverse Charge)","NodeType":"Use Case","TableID":39,"CaseID":"{F7192A60-5739-4B72-AB1D-FB48ED3EE0F9}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000320","Name":"Calculation of Cess where input tax Credit is Not available through Purchase Quote/Order/Invoice - Service from SEZ Vendor","NodeType":"Use Case","TableID":39,"CaseID":"{3E8E1EDA-828E-40BE-8FD4-3456546F47A6}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000321","Name":"Calculation of Cess where input tax Credit is Not available through Purchase Quote/Order/Invoice - Goods from SEZ Vendor With Bill of Entry","NodeType":"Use Case","TableID":39,"CaseID":"{FD3380A2-217C-4059-A344-1D832B755088}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000322","Name":"Calculation of Cess where input tax Credit is Not Available through Purchase Quote/Order/Invoice- Fixed Asset","NodeType":"Use Case","TableID":39,"CaseID":"{E1914856-FF7A-4B3A-99D5-17190CE10C27}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000323","Name":"Calculation of Cess where input tax Credit is Not available through Purchase Quote/Order/Invoice - Fixed Asset from SEZ Vendor Without Bill of Entry","NodeType":"Use Case","TableID":39,"CaseID":"{8D7FD8C3-FCB1-4968-8FD6-08181778EC29}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000324","Name":"Calculation of Cess where input tax Credit is Not Available for Goods through Purchase Quote/Order/Invoice -(Reverse Charge)","NodeType":"Use Case","TableID":39,"CaseID":"{1E087C72-9078-4C31-ABD5-38F01008E508}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000325","Name":"Calculation of Cess where input tax Credit is available through Purchase Quote/Order/Invoice - Fixed Asset from SEZ Vendor With Bill of Entry","NodeType":"Use Case","TableID":39,"CaseID":"{508FE302-0CAB-41B6-8C43-737EBE931312}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000326","Name":"Calculation of Cess where input tax Credit is available through Purchase Quote/Order/Invoice - Fixed Asset from SEZ Vendor Without Bill of Entry","NodeType":"Use Case","TableID":39,"CaseID":"{68FE3FB0-9F3C-44A6-9686-F37192B1A371}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000327","Name":"Calculation of Cess where input tax Credit is Not available through Purchase Quote/Order/Invoice - Fixed Asset from SEZ Vendor With Bill of Entry","NodeType":"Use Case","TableID":39,"CaseID":"{2EA01E14-807E-4CC7-8494-9EAAFBA21709}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000328","Name":"Calculation of Cess where input tax Credit is Not Available through Purchase Quote/Order/Invoice -Fixed Asset(Reverse Charge)","NodeType":"Use Case","TableID":39,"CaseID":"{6ADC0F4A-6D69-4BAE-A94F-7DC0889758DC}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000329","Name":"Calculation of Cess where input tax Credit is available through Purchase Quote/Order/Invoice - Import Vendor","NodeType":"Use Case","TableID":39,"CaseID":"{C9822271-8F51-46B7-B4BD-A2B424B1699B}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000330","Name":"Calculation of Cess where input tax Credit is Not Available through Purchase Quote/Order/Invoice - Import Vendor","NodeType":"Use Case","TableID":39,"CaseID":"{C63F1B6C-96EE-41CB-879B-801CE9C734A6}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000331","Name":"Calculation of Cess where input tax Credit is available through Purchase Quote/Order/Invoice - G/L Account- Import Vendor","NodeType":"Use Case","TableID":39,"CaseID":"{F748E0D1-BC76-4D68-8CBD-FF4189DC3517}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000332","Name":"Calculation of Cess where input tax Credit is Not Available through Purchase Quote/Order/Invoice - G/L Account- Import Vendor","NodeType":"Use Case","TableID":39,"CaseID":"{AE6444ED-20D1-4E69-A69C-7DCAEC9C4738}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000333","Name":"Calculation of Cess where input tax Credit is Not available through Purchase Quote/Order/Invoice - Fixed Asset from Import Vendor","NodeType":"Use Case","TableID":39,"CaseID":"{535A4B2C-EEA4-4267-8638-F57DE9153FDD}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000340","Name":"End Cess on Purchase","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000350","Name":"Cess on Purchase Return","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field1=1(3|5),Field7=1(<>''),Field18080=1(<>''),Field18096=1(<>''))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000351","Name":"Calculation of Cess where input tax Credit is available through Purchase Return Order/Credit Memo - Registered/Unregistered","NodeType":"Use Case","TableID":39,"CaseID":"{725E8FB9-C4CC-42B7-B060-5E86614A8168}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000352","Name":"Calculation of Cess where input tax Credit is available through Purchase Return Order/Credit Memo - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{EFF1E5F5-6CC1-414D-BD1F-1095D42F9A4A}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000353","Name":"Calculation of Cess where input tax Credit is available through Purchase Return Order/ Credit Memo - Goods from SEZ Vendor With Bill of Entry","NodeType":"Use Case","TableID":39,"CaseID":"{8BB1C380-7CFE-4B49-82AD-78BBA652EB5C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000354","Name":"Calculation of Cess where input tax Credit is available through Purchase Return Order/Credit Memo - Service from SEZ Vendor","NodeType":"Use Case","TableID":39,"CaseID":"{231587B2-D0BD-4362-9A3B-11839F7BB326}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000355","Name":"Calculation of Cess where input tax Credit is Not Available through Purchase Return Order/Credit Memo","NodeType":"Use Case","TableID":39,"CaseID":"{CEAE9F6C-7E67-4347-9E66-A9C6C54E4ECE}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000356","Name":"Calculation of Cess where input tax Credit is Not Available through Purchase Return Order/Credit Memo - G/L Account","NodeType":"Use Case","TableID":39,"CaseID":"{F33121DD-68CB-423C-A98B-6FF10BD8CED7}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000357","Name":"Calculation of Cess where input tax Credit is Not Available through Purchase Return Order/Credit Memo - G/L Account (Reverse Charge)","NodeType":"Use Case","TableID":39,"CaseID":"{75A11E67-E9DF-446F-974A-AE9F91D8EA1C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000358","Name":"Calculation of Cess where input tax Credit is Not available through Purchase Return Order/Credit Memo - Goods from SEZ Vendor Without Bill of Entry","NodeType":"Use Case","TableID":39,"CaseID":"{6F2DE875-4569-41DB-A28E-021E4D00378A}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000359","Name":"Calculation of Cess where input tax Credit is Not available through Purchase Return Order/Credit Memo - Service from SEZ Vendor","NodeType":"Use Case","TableID":39,"CaseID":"{7D571F8D-B6A0-47E0-B80F-9AC703DF1D3B}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000360","Name":"Calculation of Cess where input tax Credit is Not available through Purchase Return Order/ Credit Memo - Goods from SEZ Vendor With Bill of Entry","NodeType":"Use Case","TableID":39,"CaseID":"{A622E949-C161-4AE2-B6DB-7D3C16E5D899}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000361","Name":"Calculation of Cess where input tax Credit is Not Available through Purchase Return Order/Credit Memo - Fixed Asset","NodeType":"Use Case","TableID":39,"CaseID":"{43F17130-4EA1-48FE-B1A8-716EE5DF7C16}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000362","Name":"Calculation of Cess where input tax Credit is available through Purchase Return Order/ Credit Memo - Fixed Asset from SEZ Vendor With Bill of Entry","NodeType":"Use Case","TableID":39,"CaseID":"{3A6F385C-72E7-42C6-A696-47102B270402}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000364","Name":"Calculation of Cess where input tax Credit is available through Purchase Return Order/ Credit Memo - Fixed Asset from SEZ Vendor Without Bill of Entry","NodeType":"Use Case","TableID":39,"CaseID":"{6DEEF440-3A5B-4201-9D1B-59AC37AF4C36}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000365","Name":"Calculation of Cess where input tax Credit is Not available through Purchase Return Order/Credit Memo - Fixed Asset from SEZ Vendor Without Bill of Entry","NodeType":"Use Case","TableID":39,"CaseID":"{C08A9FD5-5ECC-4BB5-8A19-345060822129}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000366","Name":"Calculation of Cess where input tax Credit is Not Available through Purchase Return Order/Credit Memo - Fixed Asset(Reverse Charge)","NodeType":"Use Case","TableID":39,"CaseID":"{CBDB09CC-FB6C-4475-89A3-62C04DADFA15}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000367","Name":"Calculation of Cess where input tax Credit is Not Available through Purchase Return Order/Credit Memo Unregistered Vendor- Item (Reverse Charge)","NodeType":"Use Case","TableID":39,"CaseID":"{39808C8A-4131-4B49-BF1D-D8FA64667B3C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000368","Name":"Calculation of Cess where input tax Credit is available through Purchase Return Order/Credit Memo - Import Vendor","NodeType":"Use Case","TableID":39,"CaseID":"{812C7B77-0622-4E71-9F4E-261C3874A680}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000369","Name":"Calculation of Cess where input tax Credit is Not Available through Purchase Return Order/Credit Memo - Import Vendor","NodeType":"Use Case","TableID":39,"CaseID":"{3B82DBC4-FAAE-477D-892C-AD82ECDFEF7E}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000370","Name":"Calculation of Cess where input tax Credit is available through Purchase Return Order/Credit Memo -G/L Account- Import Vendor","NodeType":"Use Case","TableID":39,"CaseID":"{B4A44DCF-6090-4813-9C09-193AB1A09B93}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000371","Name":"Calculation of Cess where input tax Credit is Not Available through Purchase Return Order/Credit Memo - G/L Account- Import Vendor","NodeType":"Use Case","TableID":39,"CaseID":"{A79DCE33-C753-4680-A6A3-F824608702B1}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000372","Name":"Calculation of Cess where input tax Credit is Not Available through Purchase Return Order/Credit Memo - Fixed Asset - Import Vendor","NodeType":"Use Case","TableID":39,"CaseID":"{FBD319E5-BDFD-43E8-B9EB-275F01FA6A40}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000380","Name":"End Cess on Purchase Return","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000500","Name":"Cess on Sales","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field1=1(0|1|2|4),Field5=1(1|2|4|3),Field7=1(<>''),Field18142=1(<>''),Field18144=1(<>''))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000501","Name":"Calculation of Cess on sales to Registered/Unregistered Customer through Sales Quote/Order/Invoice","NodeType":"Use Case","TableID":37,"CaseID":"{3D30F63D-D6C1-4B1B-ACFD-E252FAB190E2}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000502","Name":"Calculation of Cess on sales to SEZ Development/SEZ Unit Customer through Sales Quote/Order/Invoice with Payment of Duty","NodeType":"Use Case","TableID":37,"CaseID":"{9B4E1225-00F2-4467-BA93-29AD1F2EBD46}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000503","Name":"Calculation of Cess on sales to SEZ Development/SEZ Unit Customer through Sales Quote/Order/Invoice without Payment of Duty","NodeType":"Use Case","TableID":37,"CaseID":"{0F354915-7E17-421B-87D8-7E6C2716E173}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000504","Name":"Calculation of Cess on sales to Registered/Unregistered/Exempted/SEZ/SEZ Development/ Deemed Export Customer through Sales","NodeType":"Use Case","TableID":37,"CaseID":"{33CD3931-0BA0-4358-B808-5C6378CAA489}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000505","Name":"Calculation of Cess on sales to SEZ Development/SEZ Unit Customer through Sales Quote/Order/Invoice with Payment of Duty - Post GST to Customer.","NodeType":"Use Case","TableID":37,"CaseID":"{37EFA642-056C-45E8-974E-6B41B335FC81}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000506","Name":"Calculation of Cess on sales to SEZ Development/SEZ Unit Customer through Sales Return Order/Credit Memo with Payment of Duty - Post GST to Customer.","NodeType":"Use Case","TableID":37,"CaseID":"{DE8006B8-CF9F-474A-AE29-C7903A148261}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000600","Name":"End Cess on Sales","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000601","Name":"Cess on Sales Return","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field1=1(3|5),Field5=1(2|1|3|4),Field7=1(<>''),Field18142=1(<>''),Field18144=1(<>''))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000602","Name":"Calculation of Cess on sales to Registered/Unregistered Customer through Sales Return Order/Credit Memo","NodeType":"Use Case","TableID":37,"CaseID":"{272FFE9F-A7C9-4AF8-87DD-3EA53BA18511}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000603","Name":"Calculation of Cess on sales to SEZ Development/SEZ Unit Customer through Sales Return Order/Credit Memo with Payment of Duty","NodeType":"Use Case","TableID":37,"CaseID":"{9DB4ECE1-3397-4ADD-9EA8-40A8D82A6A9A}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000604","Name":"Calculation of Cess on sales to SEZ Development/SEZ Unit Customer through Sales Return Order/Credit Memo without Payment of Duty","NodeType":"Use Case","TableID":37,"CaseID":"{423BECDD-68DC-4541-9047-8F6B797709E5}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000605","Name":"Calculation of Cess on sales to Registered/Unregistered/Exempted/ SEZ/ SEZ Development/ Deemed Export Customer through Sales Return Order/ Credit Memo - Exempted","NodeType":"Use Case","TableID":37,"CaseID":"{ED1E0A5D-C364-4F36-847E-AAE263B34185}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000700","Name":"End Cess on Sales Return","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000701","Name":"Cess on Transfer Order","NodeType":"Begin","TableID":5741,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field2) WHERE(Field3=1(<>''),Field18394=1(<>''),Field18395=1(<>''))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000702","Name":"Calculation of Cess in Transfer Order","NodeType":"Use Case","TableID":5741,"CaseID":"{631DEFA0-165E-4BDC-8F8A-AB2A88DF90AD}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000750","Name":"End Cess on Transfer Order","NodeType":"End","TableID":5741,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-001000","Name":"End GST Cess","NodeType":"End","TableID":0,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-100001","Name":"GST","NodeType":"Begin","TableID":0,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"GST","IsTaxTypeRoot":true},{"Code":"TE-100011","Name":"Subcontracting GST For Delivery Challan Line","NodeType":"Begin","TableID":18469,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field54,Field55) WHERE(Field46=1(<>''),Field47=1(<>''),Field102=1(<>''),Field103=1(<>''))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-100012","Name":"Intra-state Subcontracting GST For Delivery Challan Line for Registered Vendor","NodeType":"Use Case","TableID":18469,"CaseID":"{5388F401-5CDE-4918-A9B0-B7B134235921}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-100013","Name":"Inter-state Subcontracting GST For Delivery Challan Line for Registered Vendor","NodeType":"Use Case","TableID":18469,"CaseID":"{6A75BFF5-C880-498F-AC1D-E9CF9BE7F888}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-100099","Name":"Subcontracting GST For Delivery Challan Line","NodeType":"End","TableID":0,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-100100","Name":"Subcontracting GST For GST Liability Line","NodeType":"Begin","TableID":18470,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field3,Field4) WHERE(Field46=1(<>''),Field47=1(<>''),Field102=1(<>''),Field103=1(<>''))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-100101","Name":"Intra-state Subcontracting GST on GST Liability Line for Registered Vendor","NodeType":"Use Case","TableID":18470,"CaseID":"{81A83FF9-D7EB-4B5F-A2AE-ED346B7A9079}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-100102","Name":"Inter-state Subcontracting GST on GST Liability Line for Registered Vendor","NodeType":"Use Case","TableID":18470,"CaseID":"{81A24E9D-52B9-4EFE-A18B-398C6BAD55ED}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-100199","Name":"Subcontracting GST For GST Liability Line","NodeType":"End","TableID":0,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-100200","Name":"GST Finance Charge Memo","NodeType":"Begin","TableID":303,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field2) WHERE(Field18142=1(<>''),Field18144=1(<>''))","TaxType":"GST","IsTaxTypeRoot":false},{"Code":"TE-100201","Name":"InterState GST Calculation on Finance Charge Memo For Registered Customer.\n","NodeType":"Use Case","TableID":303,"CaseID":"{10675EE2-5AA7-4D43-8794-03BA8CD85445}","Condition":"VERSION(1) SORTING(Field1,Field2)","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-100202","Name":"Intrastate GST Calculation on Finance Charge Memo For Registered Customer.\n","NodeType":"Use Case","TableID":303,"CaseID":"{853FC9A7-4D6E-4511-8207-BB18D1FFC0E8}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-100203","Name":"InterState GST Calculation on Finance Charge Memo For SEZ Unit/SEZ Development/Deemed Export Customer With Payment of Duty.\n","NodeType":"Use Case","TableID":303,"CaseID":"{CAC3F49D-59DD-4F1A-B0F3-AC28F7552973}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-100204","Name":"InterState GST Calculation on Finance Charge Memo For Unregistered Customer.\n","NodeType":"Use Case","TableID":303,"CaseID":"{C4BC4E11-E295-4A20-9F5F-801F2406A610}","Condition":"VERSION(1) SORTING(Field1,Field2)","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-100205","Name":"Intrastate GST Calculation on Finance Charge Memo For Unregistered Customer.\n","NodeType":"Use Case","TableID":303,"CaseID":"{34D44752-1655-43CC-8DD8-9CBA775C5554}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-100206","Name":"Intrastate GST Calculation on Finance Charge Memo For Exempted Customer.\n","NodeType":"Use Case","TableID":303,"CaseID":"{4C815B8B-6831-4E19-899D-361FBA9CFC43}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-100207","Name":"InterState GST Calculation on Finance Charge Memo For Exempted Customer.\n","NodeType":"Use Case","TableID":303,"CaseID":"{EC7AE7B0-93FA-42C2-9717-BBD2E8FC4D4C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-100208","Name":"InterState GST Calculation on Finance Charge Memo For SEZ Unit/SEZ Development/Deemed Export Customer Without Payment of Duty.\n","NodeType":"Use Case","TableID":303,"CaseID":"{6946230A-A2F4-4E4B-90C6-6C907D010EB5}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-100300","Name":"GST Finance Charge Memo","NodeType":"End","TableID":303,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-110001","Name":"Sales","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field7=1(<>''),Field18142=1(<>''),Field18144=1(<>''))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-110501","Name":"Sales Document","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field1=1(0|1|2|4))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-110601","Name":"Exempted","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18147=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-110696","Name":"Sales Line No Not Blank","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field6=1(<>''))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-110700","Name":"Export to SEZ/ SEZ Development /Deemed Export With Payment of Duty through Sales Order/Invoice - Exempted","NodeType":"Use Case","TableID":37,"CaseID":"{A4C57AB8-DBFF-473C-B2A3-739975737950}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-110701","Name":"Intra State Sales of Exempted from Registered Customer through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{4911101A-A3D1-4596-836C-A9EB2F2CB24C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-110702","Name":"Inter State Sales of Exempted from Registered Customer through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{CA856646-6B6F-42D2-A4CC-64A8F52DE9F6}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-110703","Name":"Inter State Sales of Exempted from Unregistered Customer through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{CE4E5351-F5F5-413A-AAF9-6C5EA6530D93}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-110704","Name":"Intra State Sales of Exempted from Unregistered Customer through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{887FEE8B-EFB6-4010-B79B-4CDB44F23CC8}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-110705","Name":"Intra State Exempted Sales for Deemed Export Customer through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{332A3E45-C1C8-423A-9063-B55EFA585045}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-110706","Name":"Export and Exempted to Foreign Customer through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{74E6E05F-641D-4857-8F88-C48783B29B3E}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-110707","Name":"Intra state Sales of Charge Item from Exempted Customer through Sales Quote/ Order/ Invoice","NodeType":"Use Case","TableID":37,"CaseID":"{D2C0BC32-D71C-4FEC-A3FC-63A0586DA3D6}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-110708","Name":"Inter State Sales of Exempted Charge Item from Exempted Customer through Sales Quote/ Sales Order/ Sales Invoice","NodeType":"Use Case","TableID":37,"CaseID":"{8E20FC81-1137-41B3-A90E-AE86CD66F718}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-110720","Name":"End Sales Line No Not Blank","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-110721","Name":"Type - G/L Account","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-110722","Name":"Intra state Sales of Services from Exempted Customer through Sales Quote/ Order/ Invoice","NodeType":"Use Case","TableID":37,"CaseID":"{A9D34135-2984-4C5D-99C0-5563408C59EE}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-110723","Name":"Inter State Sales of Exempted Services from Exempted Customer through Sales Quote/ Sales Order/ Sales Invoice","NodeType":"Use Case","TableID":37,"CaseID":"{E474605D-6956-438B-95F2-DA5BE6A6D741}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-110740","Name":"End Type - G/L Account","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-110741","Name":"Begin Type - Item","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(2))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-110742","Name":"Inter State Sales of Exempted Goods from Exempted Customer through Sales Quote/ Sales Order/ Sales Invoice","NodeType":"Use Case","TableID":37,"CaseID":"{144DB41F-813A-4EE0-87EC-7082D07652B7}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-110743","Name":"Intra state Sales of Goods from Exempted Customer through Sales Quote/ Order/ Invoice","NodeType":"Use Case","TableID":37,"CaseID":"{C3901ECF-9316-49A7-9897-B8C52A5A66A0}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-110760","Name":"End Type - Item","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-110761","Name":"Begin Type - Fixed Asset","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(4))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-110762","Name":"Inter State Exempted Sales of Fixed Assets from Exempted Customer through Sales Quote/ Sales Order/ Sales Invoice","NodeType":"Use Case","TableID":37,"CaseID":"{A48A1647-673E-4C77-9997-143963591989}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-110763","Name":"Intra state Sales of Fixed Asset from Exempted Customer through Sales Quote/ Order/ Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{26405773-06F9-4F36-B6B1-E80AA9987628}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-110780","Name":"End Type - Fixed Asset","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-110801","Name":"End Exempted","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-111001","Name":"Not Exempted","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18147=1(0))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-111950","Name":"Sales Line No Not Blank","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field6=1(<>''))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112001","Name":"Intra-State Sales of Services to Overseas Place of Supply to Registered Customer Through Order/Invoice","NodeType":"Use Case","TableID":37,"CaseID":"{FA5B2691-7B6B-43B4-92F1-9B6D10A216E4}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112002","Name":"GST Deemed Exports With Payment of Duty through Sales Order/Invoice-Post GST to Customer.","NodeType":"Use Case","TableID":37,"CaseID":"{B66179F8-E62E-45F8-9DE3-5351C859F85D}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112003","Name":"Intra State Sales for Deemed Export Customer through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{2C82CF3D-40B2-4FCC-8F04-E649DADD1619}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112004","Name":"Intra State Sales for Deemed Export Customer Without Payment of Duty through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{1F930CB5-93A8-4BE9-B412-B9B44F1FBE2B}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112005","Name":"Intra State Sales for Deemed Export Customer through Sales Order/Invoice-Post GST to Customer.","NodeType":"Use Case","TableID":37,"CaseID":"{71177393-F102-466E-AC36-1A460BC1C3E9}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112010","Name":"End Sales Line No Not Blank","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112051","Name":"Type - Charge Item","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(5))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112052","Name":"Intra State Sales of Charge Item from Registered Customer through Sales Order/Invoice","NodeType":"Use Case","TableID":37,"CaseID":"{7422E62E-F5A5-46C6-8A2D-9F9F4C082C91}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112053","Name":"Intra State Sales of Charge Item from Unregistered Customer through Sales Order/Invoice","NodeType":"Use Case","TableID":37,"CaseID":"{A9E13C42-F366-4E5F-A057-1E0B4E43D454}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112054","Name":"Inter State Sales of Charge Item from Unregistered Customer through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{F5794DA7-0CC7-42C2-BEA0-18EB8F98BB5A}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112075","Name":"Inter State Sales of Charge Item from Registered Customer through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{207FA1CE-712A-475E-AC05-B36812DDE2C8}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112076","Name":"Export Sales of Charge Item from SEZ Unit / Development through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{4083D3D9-1F73-48ED-ABD1-12C0559D270F}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112077","Name":"Export Sales of Charge Item from SEZ Unit / Development without Payment of Duty through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{EFF7E856-EF6B-4EC0-9AAE-C2E07B6CB15B}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112078","Name":"Export Sales of Charge Item from SEZ Unit / Development through Sales Order/Invoice-Post GST to Customer.","NodeType":"Use Case","TableID":37,"CaseID":"{40065229-E7D9-4C0A-A0EB-5DE70DD4E9AF}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112079","Name":"GST Deemed Exports for Charge Item through Sales Quote/Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{929EB05F-45B5-4F4F-9DD4-61AFAB36F21B}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112080","Name":"GST Deemed Exports for Charge Item Without Payment of Duty through Sales Quote/Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{A2608A05-D116-4475-B690-A6E26170BC2C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112081","Name":"Export Charge Item to Foreign Customer Without Payment of Duty through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{9D6C4AC2-81D1-47E7-8C7C-494F20F1719F}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112082","Name":"Export and Charge Item to Foreign Customer With Payment of Duty through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{9CBCEC6F-A01B-422B-8AAB-4B6BC90EC959}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112100","Name":"End- Type - Charge Item","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112101","Name":"Type - Fixed Asset","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(4))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112102","Name":"Inter State Sales of Fixed Asset from Registered Customer through Sales Quote/Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{46CB3503-286F-43C3-9B04-FBBD5F2CBAF0}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112103","Name":"Intra State Sales of Fixed Asset from Unregistered Customer through Sales Order/Invoice","NodeType":"Use Case","TableID":37,"CaseID":"{636979B2-6B57-49C6-B0B8-B306261B3304}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112104","Name":"Intra State Sales of Fixed Asset from Registered Customer through Sales Order/Invoice","NodeType":"Use Case","TableID":37,"CaseID":"{A4044120-D393-4525-88F4-AB1A71F2E49C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112105","Name":"Inter State Sales of Fixed Asset from Unregistered Customer through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{52FD8776-17C2-428A-B747-159404771D07}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112106","Name":"Export Fixed Asset to Foreign Customer With Payment of Duty through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{AF5EE023-63DF-4210-AD71-6436230F6DFA}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112107","Name":"GST Deemed Exports of Fixed Asset through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{7B9EA3AF-2235-44F9-AE67-E0F9F74740E6}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112108","Name":"Export Fixed Asset to SEZ Development With Payment of Duty through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{8E2CB0E2-795D-4DC3-879B-5117E415DFB9}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112109","Name":"Export Fixed Asset to SEZ Unit Without Payment of Duty through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{8FDC8D41-E5D7-40D7-B962-80DA519596F3}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112110","Name":"Export Fixed Asset to Foreign Customer Without Payment of Duty through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{C99A231E-6BBF-4982-AEAF-6CAAC7E5BA9B}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112111","Name":"Export Fixed Asset to Deemed Export Without Payment of Duty through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{4490AC87-E83B-44C4-A6A8-EAF2650E8773}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112112","Name":"Export Fixed Asset to SEZ Unit With Payment of Duty through Sales Order/Invoice - Post GST to Customer.","NodeType":"Use Case","TableID":37,"CaseID":"{6EC9FAFD-8029-4B9C-8899-CB3C494682D1}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112113","Name":"Export of Fixed Asset to SEZ Development Without Payment of Duty through Sales Quote/Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{24BF4F23-3693-4E31-ADDA-9D2F91057CA2}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112114","Name":"Export Fixed Asset to SEZ Development With Payment of Duty through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{58789CA5-0F23-4972-B1FE-3EE6E8BC19A1}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112115","Name":"Export Fixed Asset to SEZ Unit With Payment of Duty through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{A18E31F4-0E06-42B6-B8E0-282B42CA2A28}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112214","Name":"End Type - Fixed Asset","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112249","Name":"Type - G/L Account","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112250","Name":"Intra State Sales of Services from UnRegistered Customer through Sales Order/Invoice - Kerala Food Cess","NodeType":"Use Case","TableID":37,"CaseID":"{1BAE51D1-AD26-40F8-BFD2-156024A23A7B}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112251","Name":"Inter State Sales of Services from Registered Customer through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{2E7A7A10-CCD5-4673-AF42-1EF83425931F}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112252","Name":"Intra State Sales of Services from Registered Customer through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{4529A161-49CC-44B6-95BA-CC141FA794B1}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112253","Name":"Intra State Sales of Services from Unregistered Customer through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{4962D3B9-0349-4BE9-B173-22B456AEE6C6}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112254","Name":"Intra State Sales of Services from Registered Customer through Sales Order/Invoice - Kerala Food Cess","NodeType":"Use Case","TableID":37,"CaseID":"{BF9D05ED-BF8A-4BC8-9195-D008E4E381FB}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112255","Name":"Intra State Sales of Services from Registered Customer through Sales Order/Invoice. - POS","NodeType":"Use Case","TableID":37,"CaseID":"{E6D39823-CCCC-43DC-BD7E-CC6EEEBDB5EB}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112256","Name":"Export and Service to Foreign Customer With Payment of Duty through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{DD3CF85B-64EA-4DD4-A626-C472E3B3B072}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112257","Name":"Export and Service to Foreign Customer With Payment of Duty through Sales Order/Invoice With GST on Assessable value.","NodeType":"Use Case","TableID":37,"CaseID":"{1C9C14DA-22A0-4F6B-968A-1F79BE11B7A1}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112258","Name":"Export Services to SEZ Unit With Payment of Duty through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{ABD1A54F-36DA-45A7-AFED-451B98434B0C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112259","Name":"Export Services to SEZ Development With Payment of Duty through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{B2150DAA-4B46-41F2-89BF-19F5FD89362E}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112260","Name":"Export Services to SEZ Development Without Payment of Duty through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{F8591F7C-5D5C-4976-B5F1-E3248733EBC5}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112261","Name":"Export Services to Deemed Export Without Payment of Duty through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{21A349A2-B069-4AA5-86B9-34136BE37267}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112262","Name":"Export Service to SEZ Unit Without Payment of Duty through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{512B21D6-5395-499F-A2BE-EF6D24385C89}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112263","Name":"Export Services to Foreign Customer Without Payment of Duty through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{8638A2E3-3F44-4672-A54D-0D65B1528FF9}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112264","Name":"Calculation of GST Services where Unregistered Transporter, TPT Location is different and Pick Up Location and Delivery Location is same through Sale Orders/ Invoice","NodeType":"Use Case","TableID":37,"CaseID":"{99C83819-83BC-418A-A2A7-26A041F2F99A}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112265","Name":"Inter State Sales of Services from Unregistered Customer through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{C6AAB568-68A3-4D8A-A708-ECD7EFD9A3EE}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112266","Name":"Intra State Sales of Service from Registered/Unregistered Customer through Sales Quote","NodeType":"Use Case","TableID":37,"CaseID":"{9666CA08-2C56-43C5-B36F-7FD3745FE832}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112267","Name":"Inter State Sales of Service from Registered/Unregistered Customer through Sales Quote","NodeType":"Use Case","TableID":37,"CaseID":"{D9221422-669E-485D-8224-053D641FE4F3}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112268","Name":"GST Deemed Exports of Services through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{67F7C66D-5296-4A5F-A85F-D4B91D1DBF97}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112269","Name":"Calculation of Transportation of Services from Registered Vendor, where TPT Location and Pick Up Location is same and Delivery Location is different. through Sales Order","NodeType":"Use Case","TableID":37,"CaseID":"{8D0E6401-974F-4F8E-9254-2AF9067E73DC}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112270","Name":"Calculation of Transportation of Services from Un-Registered Vendor, where TPT Location and Pick Up Location is same and Delivery Location is different. through Sales Order","NodeType":"Use Case","TableID":37,"CaseID":"{99F473AC-553E-4032-AEDB-0AE44C871CD2}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112271","Name":"Calculation of GST in case of Transportation of Service where Registered Transporter State is different and Pick Up Location State and Delivery Location State is same through Sale Orders","NodeType":"Use Case","TableID":37,"CaseID":"{02B82B77-D7E5-4A49-89A2-6D46EC87AE61}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112272","Name":"Calculation of GST in case of Transportation of Service where Un-Registered Transporter State is different and Pick Up Location State and Delivery Location State is same through Sale Orders","NodeType":"Use Case","TableID":37,"CaseID":"{76F9EC4B-C6F3-4DBE-B1CA-04EFC5AD609E}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112273","Name":"Calculation of Transportation of Services from Registered Vendor, , TPT Location is different and Pick Up Location is different and Delivery Location is different through Sale Orders","NodeType":"Use Case","TableID":37,"CaseID":"{CF4626CB-7022-41C6-95C6-E1FE28C8C370}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112274","Name":"Export Services to SEZ Development With Payment of Duty through Sales Order/Invoice -Post GST to Customer","NodeType":"Use Case","TableID":37,"CaseID":"{C447C36E-72FA-4FEA-A49C-F976FE57275D}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112275","Name":"Export Services to SEZ Unit With Payment of Duty through Sales Order/Invoice -Post GST to Customer.","NodeType":"Use Case","TableID":37,"CaseID":"{5043629A-E2D7-4E0D-AD7F-C9D505507D01}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112276","Name":"Intra State Sales of Service from Registered Customer through Sales Order/Invoice For Ship To Address.","NodeType":"Use Case","TableID":37,"CaseID":"{0321474A-ABD0-45DB-8CEA-B586A5CB7F49}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112399","Name":"End Type - G/L Account","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112400","Name":"Type - Item","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(2))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112401","Name":"Inter State Sales of Goods from Unregistered Customer through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{11160E03-89D0-481D-B2EA-24898F3DB4AB}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112402","Name":"Intra State Sales of Goods from UnRegistered Customer through Sales Order/Invoice - Kerala Food Cess","NodeType":"Use Case","TableID":37,"CaseID":"{364EABA8-DF5D-4174-951E-9C9B375830D6}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112403","Name":"Intra State Sales of Goods from Registered Customer through Sales Order/Invoice - Kerala Food Cess","NodeType":"Use Case","TableID":37,"CaseID":"{A8BF5AD2-5132-40E7-9DF1-893B3940F6EE}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112404","Name":"Intra State Sales of Goods from Unregistered Customer through Sales Order/Invoice","NodeType":"Use Case","TableID":37,"CaseID":"{CFE77ACE-1F20-4126-98D9-8D14B18088EE}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112405","Name":"Inter State Sales of Goods from Registered Customer through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{B61CB389-28BD-4569-BF95-284B62972B23}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112406","Name":"Intra State Sales of Goods from Registered Customer through Sales Order/Invoice","NodeType":"Use Case","TableID":37,"CaseID":"{6B464955-261F-4EAF-A749-7807444FC37C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112407","Name":"Export and Goods to Foreign Customer With Payment of Duty through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{55AD5167-785F-4CC3-B633-84A8414EE100}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112408","Name":"Export and Goods to Foreign Customer With Payment of Duty through Sales Order/Invoice With GST on Assessable value.","NodeType":"Use Case","TableID":37,"CaseID":"{23C292E2-9704-4112-9AB6-A2FCBDDFFA6A}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112409","Name":"Export Goods to SEZ Unit Without Payment of Duty through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{2961B717-F882-4174-A7D0-98737C7F49A2}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112410","Name":"Export Goods to SEZ Unit With Price Inclusive of Tax through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{9CF523A9-24DB-4928-A3CB-8DC5FCA4AF69}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112411","Name":"Export Goods to SEZ Unit With Payment of Duty through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{6621F516-24B5-47CC-AB8B-6EF51F2616E3}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112412","Name":"GST Deemed Exports of goods through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{759DC0B3-0697-4262-B0B6-12AA4A6E3822}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112413","Name":"Export Goods to Deemed Export Without Payment of Duty through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{AA3E77B0-A08A-4756-90E5-F6561C7D4B9B}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112414","Name":"Export and Goods to Foreign Customer Without Payment of Duty through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{BAEC40C3-3C56-4B4F-95C9-ED6E1E39A019}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112415","Name":"Export Goods to SEZ Development With Payment of Duty through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{B618D919-C2A5-4BB8-B7EF-13784A51A6D5}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112416","Name":"Export Goods to SEZ Development Without Payment of Duty through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{34D0EE0E-FC73-416C-A59C-484107E36965}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112417","Name":"Intra State Sales of Goods from Registered/Unregistered Customer through Sales Quote","NodeType":"Use Case","TableID":37,"CaseID":"{74601C3A-21C1-4924-950E-039ADD6086E6}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112418","Name":"Inter State Sales of Goods from Registered/Unregistered Customer through Sales Quote","NodeType":"Use Case","TableID":37,"CaseID":"{E06B429C-0CDD-4F49-9C4D-8546151805AD}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112419","Name":"Intra State Sales of Goods from Registered Customer through Sales Order/Invoice - Price Including of Tax","NodeType":"Use Case","TableID":37,"CaseID":"{888E76DA-FA62-4714-83A3-76777E325D84}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112420","Name":"Inter State Sales of Goods from Registered Customer through Sales Order/Invoice - Price Including of Tax","NodeType":"Use Case","TableID":37,"CaseID":"{277B1053-C551-4BF4-9518-7BFE200A8E18}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112421","Name":"Export Goods to Foreign Customer With Payment of Duty through Sales Order/Invoice with Shipment locally as Intrastate.","NodeType":"Use Case","TableID":37,"CaseID":"{9F7A9C0A-BC4A-45C2-B79B-7D22EDB6ABBB}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112422","Name":"Export Goods to Foreign Customer With Payment of Duty through Sales Order/Invoice with Shipment locally as Interstate.","NodeType":"Use Case","TableID":37,"CaseID":"{F69C2334-D38A-4CC1-B701-D7DC4C3B7CA9}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112423","Name":"Export Goods to SEZ Development With Payment of Duty through Sales Order/Invoice - Post GST to Customer","NodeType":"Use Case","TableID":37,"CaseID":"{13217522-8F07-4C15-9787-8B1840E8CC40}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112424","Name":"Export Goods to SEZ Unit With Payment of Duty through Sales Order/Invoice-Post GST to Customer.","NodeType":"Use Case","TableID":37,"CaseID":"{FA8E63F5-19A9-4940-AD59-DB7067BE069A}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112450","Name":"End Type - Item","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112500","Name":"Type - Resource","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(3))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112501","Name":"Intra State Sales of Resource from Unregistered Customer through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{D1629C9B-AA5B-4237-94CE-5B14BAF756C0}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112502","Name":"Intra State Sales of Resource from Registered Customer through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{9B0FE6DB-6121-44B0-8BD0-08B8060D7A92}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112503","Name":"Inter State Sales of Resource from Registered Customer through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{D95F6D4E-EEF5-41B7-8284-694BCBDFEABD}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112504","Name":"Export Resource to Foreign Customer With Payment of Duty through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{60F5C368-9B10-45CB-BB1B-63DEF7520AB6}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112505","Name":"Intra State Calculation of GST on Resource to SEZ Development through Sales Order/ Invoice","NodeType":"Use Case","TableID":37,"CaseID":"{77D07467-2180-4712-814A-A6292F8D5E59}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112506","Name":"GST Deemed Exports for Resource through Sales Order/ Invoice\n","NodeType":"Use Case","TableID":37,"CaseID":"{BE8902D9-72AA-41C9-BACE-1B781D7C8107}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112507","Name":"Intra State Calculation of GST on Resource to SEZ Unit through Sales Order/ Invoice","NodeType":"Use Case","TableID":37,"CaseID":"{96B76AC2-66FF-4457-9DE3-3F2A3213C3E6}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112508","Name":"Inter State Calculation of GST on Resource to SEZ Development through Sales Order/ Invoice","NodeType":"Use Case","TableID":37,"CaseID":"{B2047EB4-AD5D-4E8B-BFFC-94FB1C4EED34}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112509","Name":"Inter State Sales of Resources from Registered Customer through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{C8652C10-76BA-489E-985D-CFFC24D6276B}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112510","Name":"Inter State Sales of Resource from Registered/Unregistered Customer through Sales Quote","NodeType":"Use Case","TableID":37,"CaseID":"{149E867B-BE67-4BA4-AE3B-36C10F7552F5}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112511","Name":"Inter State Calculation of GST on Resource to SEZ Unit through Sales Order/ Invoice","NodeType":"Use Case","TableID":37,"CaseID":"{6F89240D-BBA1-4BB9-85B6-0BE2154EE0B8}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112512","Name":"Intra state Sales of Resources from Exempted Customer through Sales Quote/ Order/ Invoice","NodeType":"Use Case","TableID":37,"CaseID":"{A1895816-94BF-4F67-819E-D3898920FAF5}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112513","Name":"Intra State Calculation of GST on Resource to SEZ Unit / Development Without Payment of Duty through Sales Order/ Invoice","NodeType":"Use Case","TableID":37,"CaseID":"{969F9BE2-D2C0-4DB5-BD38-F9DAC8AB8173}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112514","Name":"Intra State Calculation of GST on Resource to SEZ Unit through Sales Order/ Invoice-Post GST to Customer.","NodeType":"Use Case","TableID":37,"CaseID":"{882CB936-42D9-4C2D-BFD9-028D5F5D3337}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112515","Name":"Intra State Calculation of GST on Resource to SEZ Development through Sales Order/ Invoice-Post GST to Customer.","NodeType":"Use Case","TableID":37,"CaseID":"{4B114178-6589-41CD-907E-8C46CCDFE895}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112516","Name":"Inter State Calculation of GST on Resource to SEZ Unit / Development Without Payment of Duty through Sales Order/ Invoice","NodeType":"Use Case","TableID":37,"CaseID":"{E28ED0E6-8917-4D81-AD22-29D13FE94091}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112517","Name":"Inter State Calculation of GST on Resource to SEZ Unit / Development through Sales Order/ Invoice-Post GST to Customer","NodeType":"Use Case","TableID":37,"CaseID":"{E9ED8CB8-E0BD-4E8A-88A5-1AA7348ACF20}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112518","Name":"GST Deemed Exports for Resource Without Payment of Duty through Sales Order/ Invoice","NodeType":"Use Case","TableID":37,"CaseID":"{E65CE6AA-C447-466E-A3FE-154D3F5A76DC}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112519","Name":"Inter State Sales of Resource from UnRegistered Customer through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{DF167294-5878-44C6-9220-01D93BEA09FF}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112520","Name":"Inter State Sales of Resource from Unregistered Customer through Sales Order/Invoice without FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{C8BA6CA4-7E8C-4053-980D-451FE32D8EFA}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112550","Name":"End Type - Resource","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112600","Name":"End -Not Exempted","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112601","Name":"Begin FOC","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18157=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112602","Name":"Begin Item","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(2))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112603","Name":"Begin GST Customer Type- Registered","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18158=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112604","Name":"Intra State Sales for Goods from Registered Customer through Sales Order/Invoice With FOC","NodeType":"Use Case","TableID":37,"CaseID":"{6333F9D2-02B8-4FF1-88EE-386041B7FCA4}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112605","Name":"Inter State Sales of Goods from Registered Customer through Sales Order/Invoice for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{C69C8C2B-3445-476C-80ED-776EC67B06D3}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112609","Name":"End GST Customer Type- Registered","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112610","Name":"Begin GST Customer Type- Unregistered","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18158=1(2))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112611","Name":"Intra State Sales of Goods from Unregistered Customer through Sales Order/Invoice for FOC","NodeType":"Use Case","TableID":37,"CaseID":"{A4B4B64C-1D4C-48EE-88E9-4BBC4F05EAE8}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112612","Name":"Inter State Sales of Goods from Unregistered Customer through Sales Order/Invoice for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{E786A7D6-1147-46F6-BB75-1223AAC92007}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112616","Name":"End GST Customer Type- Unregistered","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112617","Name":"Begin GST Customer Type- SEZ Unit","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18158=1(7))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112618","Name":"Export Goods to SEZ Unit With Payment of Duty through Sales Order/Invoice-Post GST to Customer for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{BB38433A-2AE4-492D-8380-D8B5A6F80135}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112619","Name":"Export Goods to SEZ Unit With Payment of Duty through Sales Order/Invoice For FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{F0E83015-3886-4263-A0B7-A97BA3B7753C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112623","Name":"End GST Customer Type- SEZ Unit","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112624","Name":"Begin GST Customer Type- SEZ Development","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18158=1(6))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112625","Name":"Export Goods to SEZ Development With Payment of Duty through Sales Order/Invoice - Post GST to Customer for FOC","NodeType":"Use Case","TableID":37,"CaseID":"{BE591554-5098-41FD-A200-5B5B48C19083}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112626","Name":"Export Goods to SEZ Development With Payment of Duty through Sales Order/Invoice for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{CF0F6DEA-A530-45B3-8B1B-CF86879E9EDA}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112630","Name":"End GST Customer Type- SEZ Development","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112631","Name":"Begin GST Customer Type- Deemed Export","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18158=1(4))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112632","Name":"Intra State Sales for Deemed Export Customer for Goods through Sales Order/Invoice For FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{ADF93FBF-84BB-4DC9-8B87-EADDE08829F0}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112633","Name":"GST Deemed Exports of goods through Sales Order/Invoice for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{4116F9D4-1957-46D1-BCED-580BD21C0908}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112634","Name":"Intra State Sales for Goods for Deemed Export Customer through Sales Order/Invoice-Post GST to Customer for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{17DA0FC6-FC3F-4AB5-A2C7-34D00B649941}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112635","Name":"GST Deemed Exports for Goods With Payment of Duty through Sales Order/Invoice-Post GST to Customer for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{44130B2E-FBA8-47DE-BF1F-AF9145AC13BD}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112637","Name":"EndGST Customer Type- Deemed Export","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112638","Name":"End Item","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112639","Name":"Begin Type- G/L Account","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112640","Name":"Begin GST Customer Type- Registered","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18158=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112641","Name":"Intra State Sales of Services from Registered Customer through Sales Order/Invoice for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{03D7D334-04D2-4EC5-AE88-A67C1409C8BE}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112642","Name":"Inter State Sales of Services from Registered Customer through Sales Order/Invoice for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{08EACBE7-7B68-4B7B-8BCE-8D5D4FAD80F0}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112647","Name":"End GST Customer Type- Registered","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112648","Name":"Begin GST Customer Type- Unregistered","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18158=1(2))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112649","Name":"Intra State Sales of Services from Unregistered Customer through Sales Order/Invoice for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{8D8429D6-2B1A-4081-900E-9D19C312335E}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112650","Name":"Inter State Sales of Services from Unregistered Customer through Sales Order/Invoice for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{EA505D2C-22A0-4B4B-B20F-18A0E1AE2C02}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112653","Name":"End GST Customer Type- Unregistered","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112654","Name":"Begin GST Customer Type- SEZ Unit","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18158=1(7))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112655","Name":"Export Services to SEZ Unit With Payment of Duty through Sales Order/Invoice -Post GST to Customer for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{81345EC6-231D-4274-95D2-302FFE85B903}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112656","Name":"Export Services to SEZ Unit With Payment of Duty through Sales Order/Invoice For FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{FD5FD103-5251-4063-92C9-CCFE016B971B}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112661","Name":"End GST Customer Type- SEZ Unit","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112662","Name":"Begin GST Customer Type- SEZ Development","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18158=1(6))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112663","Name":"Export Services to SEZ Development With Payment of Duty through Sales Order/Invoice -Post GST to Customer For FOC","NodeType":"Use Case","TableID":37,"CaseID":"{6807FDAC-8BCB-4B1A-84FF-882C6A9C15B7}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112664","Name":"Export Services to SEZ Development With Payment of Duty through Sales Order/Invoice for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{0561985A-B2F9-4C9C-BE39-7D6AE423104E}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112669","Name":"End GST Customer Type- SEZ Development","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112670","Name":"Begin GST Customer Type- Deemed Export","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18158=1(4))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112671","Name":"Intra State Sales for Deemed Export Customer for Services through Sales Order/Invoice For FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{3C1D2A94-CBAE-4190-BE50-AD56CF9218D9}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112672","Name":"GST Deemed Exports of Services through Sales Order/Invoice for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{05CEE5AD-FF50-479C-922C-1C51FE10F724}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112673","Name":"Intra State Sales for Services for Deemed Export Customer through Sales Order/Invoice-Post GST to Customer for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{741172E2-8B2D-461D-9081-71145F1316DF}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112674","Name":"End GST Customer Type- Deemed Export","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112675","Name":"End Type- G/L Account","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112676","Name":"Begin Type Resource","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(3))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112677","Name":"Begin GST Customer Type- Registered","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18158=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112678","Name":"Intra State Sales of Resource from Registered Customer through Sales Order/Invoice for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{9E8F612A-6306-4CD0-AA63-8F443733B9B5}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112679","Name":"Inter State Sales of Resource from Registered Customer through Sales Order/Invoice for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{E8ACBB6B-EAAF-46C6-A4EA-EFB502D8E110}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112684","Name":"End GST Customer Type- Registered","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112685","Name":"Begin GST Customer Type- Unregistered","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18158=1(2))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112686","Name":"Intra State Sales of Resource from Unregistered Customer through Sales Order/Invoice for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{DC79D469-98CD-45FF-ADBB-27DFF74D2672}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112687","Name":"Inter State Sales of Resource from Unregistered Customer through Sales Order/Invoice for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{13827C55-0612-40EF-BED1-62D7605B9D68}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112692","Name":"End GST Customer Type- Unregistered","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112693","Name":"Begin GST Customer Type- SEZ Unit","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18158=1(7))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112694","Name":"Intra State Calculation of GST on Resource to SEZ Unit through Sales Order/ Invoice-Post GST to Customer for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{747B1A95-DF79-4286-A38B-A6F98F2D2DE1}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112695","Name":"Intra State Calculation of GST on Resource to SEZ Unit through Sales Order/ Invoice For FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{5582B9B9-2C0C-4036-A0E1-ED20495D47AF}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112701","Name":"End GST Customer Type- SEZ Unit","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112702","Name":"Begin GST Customer Type- SEZ Development","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18158=1(6))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112703","Name":"Intra State Calculation of GST on Resource to SEZ Development through Sales Order/ Invoice-Post GST to Customer for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{8B4B45EC-5B92-4383-935B-DE2E70579CA8}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112704","Name":"Intra State Calculation of GST on Resource to SEZ Development through Sales Order/ Invoice for FOC","NodeType":"Use Case","TableID":37,"CaseID":"{51CD0A49-E8DF-42A3-9180-84D1A7076A42}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112710","Name":"End GST Customer Type- SEZ Development","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112711","Name":"Begin GST Customer Type- Deemed Export","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18158=1(4))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112712","Name":"Intra State Sales for Deemed Export Customer for Resource through Sales Order/Invoice For FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{103E8A37-530C-4FFF-BB01-D298E7DF9FFC}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112713","Name":"GST Deemed Exports for Resource through Sales Order/ Invoice for FOC","NodeType":"Use Case","TableID":37,"CaseID":"{F356E0FE-23C7-4D81-A149-3659F2CEFBB4}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112714","Name":"Intra State Sales for Resource for Deemed Export Customer through Sales Order/Invoice-Post GST to Customer.","NodeType":"Use Case","TableID":37,"CaseID":"{29C6FB1D-F01C-426F-AC3E-76E9122FDB69}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112715","Name":"GST Deemed Exports for Resource With Payment of Duty through Sales Order/Invoice-Post GST to Customer for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{97120CFC-A3A4-4545-8A71-881473ED33C7}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112720","Name":"End GST Customer Type- Deemed Export","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112750","Name":"End Type Resource","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112751","Name":"Begin Type- Fixed Asset","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(4))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112752","Name":"Begin GST Customer Type- Registered","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18158=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112753","Name":"Intra State Sales of Fixed Asset from Registered Customer through Sales Order/Invoice for FOC","NodeType":"Use Case","TableID":37,"CaseID":"{CF89D22F-0CD8-4E3C-A01C-6C159E03E5E6}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112754","Name":"Inter State Sales of Fixed Asset from Registered Customer through Sales Quote/Order/Invoice for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{5860DC76-AE27-4A12-808D-667172BEF336}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112760","Name":"End GST Customer Type- Registered","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112761","Name":"Begin GST Customer Type- Unregistered","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18158=1(2))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112762","Name":"Intra State Sales of Fixed Asset from Unregistered Customer through Sales Order/Invoice for FOC","NodeType":"Use Case","TableID":37,"CaseID":"{84992760-0362-488C-8D49-0DE8065F945C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112763","Name":"Inter State Sales of Fixed Asset from Unregistered Customer through Sales Order/Invoice for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{FBBCEAFB-3B22-4D36-969E-84AB2CDC7859}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112769","Name":"End GST Customer Type- Unregistered","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112770","Name":"Begin GST Customer Type SEZ Unit","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18158=1(7))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112771","Name":"Export Fixed Asset to SEZ Unit With Payment of Duty through Sales Order/Invoice - Post GST to Customer for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{FC888469-0E29-48BA-B417-07D5943D7C45}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112772","Name":"Export Fixed Asset to SEZ Unit With Payment of Duty through Sales Order/Invoice For FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{307349C1-C724-4CB8-8878-7587CC2617EC}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112778","Name":"End GST Customer Type SEZ Unit","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112779","Name":"Begin GST Customer Type- SEZ Development","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18158=1(6))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112780","Name":"Export Fixed Asset to SEZ Development With Payment of Duty through Sales Order/Invoice -Post GST to Customer for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{A8B33288-CA54-4DC6-B3E4-A14E3CCA4EFC}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112781","Name":"Export Fixed Asset to SEZ Development With Payment of Duty through Sales Order/Invoice for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{DA8695B6-D7D7-41E9-BE59-C26A19D03C2C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112789","Name":"End GST Customer Type- SEZ Development","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112790","Name":"Begin GST Customer Type - Deemed Export","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18158=1(4))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112791","Name":"Intra State Sales for Deemed Export Customer for Fixed Assets through Sales Order/Invoice For FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{02A9B37F-66A8-446A-B5B0-703D594FF934}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112792","Name":"GST Deemed Exports of Fixed Asset through Sales Order/Invoice for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{7E2F85F6-FFBA-45FE-80B5-39B654365ACD}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112793","Name":"Intra State Sales for Resource for Deemed Export Customer through Sales Order/Invoice-Post GST to Customer.","NodeType":"Use Case","TableID":37,"CaseID":"{29C6FB1D-F01C-426F-AC3E-76E9122FDB69}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112794","Name":"GST Deemed Exports for Fixed Asset With Payment of Duty through Sales Order/Invoice-Post GST to Customer for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{23F3D552-5B8B-47A9-B217-903567666BCE}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112800","Name":"End GST Customer Type - Deemed Export","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112820","Name":"End Type- Fixed Asset","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112821","Name":"Begin Type G/L Account","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112822","Name":"Begin GST Customer Type Deemed Export","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18158=1(4))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112823","Name":"GST Deemed Exports for Services With Payment of Duty through Sales Order/Invoice-Post GST to Customer for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{53D88A93-5CE2-427C-81F0-6DCFC36F579F}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112826","Name":"End GST Customer Type Deemed Export","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112827","Name":"End Type G/L Account","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112840","Name":"End FOC","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112845","Name":"End Sales Document","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112848","Name":"Sales Return Document","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field1=1(5|3))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112849","Name":"Not Exempted","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18147=1(0))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112850","Name":"Type - G/L Account","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112851","Name":"Intra-State Sales Return of Services to Overseas Place of Supply to Registered Customer Through Sales Return","NodeType":"Use Case","TableID":37,"CaseID":"{44F4B3DF-4625-4E8F-9BE3-53C61B67463B}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112852","Name":"Intra State Sales Return of Services from Registered Customer through Return Order.","NodeType":"Use Case","TableID":37,"CaseID":"{BC238FA9-CAD7-43AB-8E7E-D6FFC7035EE9}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112853","Name":"Inter State Sales Return of Services from Unregistered Customer through Return Order.","NodeType":"Use Case","TableID":37,"CaseID":"{693D346E-069E-4306-9F7C-84665CD42141}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112854","Name":"Inter State Sales Return of Services from Registered Customer through Return Order.","NodeType":"Use Case","TableID":37,"CaseID":"{80BC1B3E-DB26-4E90-B780-43C8BA593655}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112855","Name":"Intra State Sales Return of Services from Unregistered Customer through Return Order.","NodeType":"Use Case","TableID":37,"CaseID":"{8A18FA5B-AD17-43D3-8981-5BB20A04EFA2}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112856","Name":"Intra State Sales Return of Services from Registered Customer through Return Order - POS","NodeType":"Use Case","TableID":37,"CaseID":"{1FF813B4-1776-4717-8C56-8F0E684ACE73}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112857","Name":"Export Return of Services to SEZ Unit With Payment of Duty through Sales Return Order/Credit Memo.","NodeType":"Use Case","TableID":37,"CaseID":"{DB44587F-08FB-4D5F-96A3-6CD4D4E30300}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112858","Name":"Export Return of Services to SEZ Development With Payment of Duty through Sales Return Order/Credit Memo.","NodeType":"Use Case","TableID":37,"CaseID":"{895C47DF-89E2-4A14-9329-5E260C1DBF05}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112859","Name":"Export Return of Services to SEZ Development Without Payment of Duty through Sales Return Order/Credit Memo.","NodeType":"Use Case","TableID":37,"CaseID":"{81E2ACA0-D6DD-4B4A-ADEF-60B602660F25}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112860","Name":"Export Return of Services to SEZ Development With Payment of Duty through Sales Return Order/Credit Memo-Post GST to Customer.","NodeType":"Use Case","TableID":37,"CaseID":"{1DE560C5-73C9-4476-9447-80FC42CD492C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112861","Name":"Export Return of Services to SEZ Unit With Payment of Duty through Sales Return Order/Credit Memo - POst GST to Customer","NodeType":"Use Case","TableID":37,"CaseID":"{8139E94E-D43E-4C24-B6B3-C59F55737321}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112862","Name":"Export Return of Goods to Export Customer for item Type GL Without Payment of Duty through Sales Return Order/Credit Memo","NodeType":"Use Case","TableID":37,"CaseID":"{4738101C-19E3-418C-A19D-61E67100D199}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112890","Name":"End - Type - G/L Account","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112895","Name":"Type - Item","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(2))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112896","Name":"Intra State Sales Return of Goods from Registered Customer through Return Order.","NodeType":"Use Case","TableID":37,"CaseID":"{26581492-A8D9-41EB-B84E-40671AE8CC3C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112897","Name":"Inter State Sales Return of Goods from Unregistered Customer through Return Order.","NodeType":"Use Case","TableID":37,"CaseID":"{77DC6AF2-5D31-4450-8F78-E2F7383B9EAB}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112898","Name":"Intra State Sales Return of Goods from Unregistered Customer through Return Order.","NodeType":"Use Case","TableID":37,"CaseID":"{08F3F188-43F5-441F-AB95-BE332651AD3D}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112899","Name":"Inter State Sales Return of Goods from Registered Customer through Sales Return Order/Credit Memo.","NodeType":"Use Case","TableID":37,"CaseID":"{2167C0D3-971D-481A-86BA-F45FB92025FB}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112900","Name":"Intra State Sales Return of Goods from Registered Customer through Sales Return Order/Credit Memo - Price Including of Tax","NodeType":"Use Case","TableID":37,"CaseID":"{293882EE-DEB8-47A9-BAF1-9221422B247A}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112901","Name":"Inter State Sales Return of Goods from Registered Customer through Sales Return Order/Credit Memo - Price Including of Tax","NodeType":"Use Case","TableID":37,"CaseID":"{77D351AF-2B06-49FB-B72A-CF9980E31A43}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112902","Name":"Export Return of Goods to SEZ Development Without Payment of Duty through Sales Return Order/Credit Memo.","NodeType":"Use Case","TableID":37,"CaseID":"{BCB4C9B2-E212-4971-BE8C-914BC1DAAB1B}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112903","Name":"Export Return of Goods to SEZ Development With Payment of Duty through Sales Return Order/Credit Memo.","NodeType":"Use Case","TableID":37,"CaseID":"{17ED9604-C26D-496C-B2F4-9124166CF719}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112904","Name":"Export Return of Goods to SEZ Unit Without Payment of Duty through Sales Return Order/Credit Memo.","NodeType":"Use Case","TableID":37,"CaseID":"{A8ED1A73-743C-4D08-98E3-6D85C416E951}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112905","Name":"Export Return of Goods to SEZ Unit With Payment of Duty through Sales Return Order/Credit Memo.","NodeType":"Use Case","TableID":37,"CaseID":"{06F95F30-2C34-4CD2-9084-0B9101B9455D}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112906","Name":"Export Return of Goods to SEZ Development With Payment of Duty through Sales Return Order/Credit Memo.","NodeType":"Use Case","TableID":37,"CaseID":"{A744EF89-44A8-4CE0-81F8-3D8094623CD1}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112907","Name":"Export Return of Goods to SEZ Unit With Payment of Duty through Sales Return Order/Credit Memo- Post GST to Customer.","NodeType":"Use Case","TableID":37,"CaseID":"{8153E2CA-FD9A-4A9F-A0E4-A657636F83DB}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112908","Name":"Export Return of Goods to Export Customer Without Payment of Duty through Sales Return Order/Credit Memo","NodeType":"Use Case","TableID":37,"CaseID":"{E607F91D-D6E7-459A-801A-CBB9C7F8CE89}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112950","Name":"End - Type - Item","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113000","Name":"Type - Resource","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(3))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113001","Name":"Intra-State Sales Return of Resources from Unregistered Customer through Sales Return Order/Credit Memo.","NodeType":"Use Case","TableID":37,"CaseID":"{8F88FDD0-561E-4FEA-A663-4F4BAEC9D009}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113002","Name":"Inter State Sales Return of Resources from Unregistered Customer through Sales Return Order/ Credit Memo","NodeType":"Use Case","TableID":37,"CaseID":"{C9854015-8E55-43F1-A5F2-747FC1CF6A0F}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113003","Name":"Inter State Sales Return of Resources from Registered Customer through Sales Return Order/ Credit Memo","NodeType":"Use Case","TableID":37,"CaseID":"{52BFB82F-A54A-4E62-9DC3-2D608D6373B0}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113004","Name":"Intra-State Sales Return of Resources from Registered Customer through Sales Return Order/Credit Memo.","NodeType":"Use Case","TableID":37,"CaseID":"{6856A59C-FE7F-4DDA-B180-391F6E0D0A5F}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113005","Name":"Export Return of Resource to Export Customer With Payment of Duty through Sales Return Order/Credit Memo.","NodeType":"Use Case","TableID":37,"CaseID":"{AD7D62C2-213F-4288-9506-BE3D205DBB95}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113006","Name":"Export Return of Resource to SEZ Unit With Payment of Duty through Sales Return Order/Credit Memo.","NodeType":"Use Case","TableID":37,"CaseID":"{FD76EB64-C01A-48C0-9F8E-3EE2E17BE515}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113007","Name":"Export Return of Resources to SEZ Unit / Development Without Payment of Duty through Sales Return Order/Credit Memo.","NodeType":"Use Case","TableID":37,"CaseID":"{D500E259-42B6-4346-BA2F-D76ECB9AFEE1}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113008","Name":"Export Return of Resource to SEZ Unit With Payment of Duty through Sales Return Order/Credit Memo-Post GST to Customer.","NodeType":"Use Case","TableID":37,"CaseID":"{E62B6029-1BFA-456D-8D43-306AB7C78589}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113105","Name":"End - Type - Resource","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113106","Name":"Type- Charge Item","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(5))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113107","Name":"Intra State Sales Return of Charge Item from Un-Registered Customer through Sales Return Order/Credit Memo","NodeType":"Use Case","TableID":37,"CaseID":"{41F1CFC3-B9F5-464D-9B6D-2C7B6C83186C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113108","Name":"Inter State Return of Charge Item from Unregistered Customer through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{B3036F44-2238-4DC9-B250-70AA3FEC7821}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113109","Name":"Intra State Sales Return of Charge Item from Registered Customer through Sales Return Order/Credit Memo","NodeType":"Use Case","TableID":37,"CaseID":"{3835C90E-1BDF-4C46-B50E-C5375ED24ED4}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113110","Name":"Inter State Sales Return of Charge Item from Registered Customer through Sales Return Order/Credit Memo","NodeType":"Use Case","TableID":37,"CaseID":"{DBE9B77E-9171-4F5C-A7CA-9156126D34FC}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113111","Name":"Export Return of Goods to Export Customer for item Type Charge Without Payment of Duty through Sales Return Order/Credit Memo","NodeType":"Use Case","TableID":37,"CaseID":"{D8792403-FBC9-455C-8A3A-C67DAFDB6E53}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113112","Name":"Export Return of Charge-Item to SEZ Unit / Development With Payment of Duty through Sales Return Order/Credit Memo.","NodeType":"Use Case","TableID":37,"CaseID":"{609F72CC-C49F-43F1-AB52-E56ED173368B}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113113","Name":"Export Return of Charge-Item to SEZ Unit / Development Without Payment of Duty through Sales Return Order/Credit Memo.","NodeType":"Use Case","TableID":37,"CaseID":"{7F8B0021-4099-48C9-80BB-D977917CEA9E}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113114","Name":"Export Return of Charge-Item to SEZ Unit / Development With Payment of Duty through Sales Return Order/Credit Memo-Post GST to Customer.","NodeType":"Use Case","TableID":37,"CaseID":"{57A0B7F8-E6C5-4CC4-89AD-11A14AF3C68B}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113125","Name":"End Type- Charge Item","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113140","Name":"Type- Fixed Asset","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(4))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113141","Name":"Intra State Sales Return of Fixed Asset from Unregistered Customer through Sales Return Order/ Credit Memo","NodeType":"Use Case","TableID":37,"CaseID":"{884574EB-3354-459C-AF96-6EB624CCEFFE}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113142","Name":"Intra State Sales Return of Fixed Asset from Registered Customer through Sales Return Order/ Credit Memo","NodeType":"Use Case","TableID":37,"CaseID":"{F7C5C8B6-2EB3-478E-AE6B-66BEEB6A3861}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113143","Name":"Inter State Sales Return of Fixed Asset from Registered Customer through Sales Return Order/ Credit Memo","NodeType":"Use Case","TableID":37,"CaseID":"{C915C6D6-9C5D-4C2F-BAB6-50E13850581E}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113144","Name":"Inter State Sales Return of Fixed Asset from UnRegistered Customer through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{7627B9EF-CB23-4EAB-88D9-3D894B6F6607}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113145","Name":"Export Return of Fixed Asset to SEZ Unit With Payment of Duty through Sales Return Order/Credit Memo.","NodeType":"Use Case","TableID":37,"CaseID":"{24F69259-FD27-49A7-B5E8-3CBF5351132F}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113146","Name":"Export Return of Fixed Asset to SEZ Unit Without Payment of Duty through Sales Return Order/Credit Memo.","NodeType":"Use Case","TableID":37,"CaseID":"{200C22B1-5DC0-4A80-B377-B14F9613D061}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113147","Name":"Export Return of Fixed Asset to SEZ Development Without Payment of Duty through Sales Return Order/Credit Memo.","NodeType":"Use Case","TableID":37,"CaseID":"{E35E188E-728D-42BE-94F0-4B0476315B0B}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113148","Name":"Export Return of Fixed Asset to SEZ Development With Payment of Duty through Sales Return Order/Credit Memo - Post GST To Customer.","NodeType":"Use Case","TableID":37,"CaseID":"{7D7F45D3-E214-47D5-8CD5-ED31E8F4092F}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113149","Name":"Export Return of Fixed Asset to SEZ Development With Payment of Duty through Sales Return Order/Credit Memo.","NodeType":"Use Case","TableID":37,"CaseID":"{1DD8BB1A-1AA9-4B82-9F6A-80F26AA8675D}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113150","Name":"Export Return of Fixed Asset to SEZ Unit With Payment of Duty through Sales Return Order/Credit Memo- Post GST to Customer.","NodeType":"Use Case","TableID":37,"CaseID":"{C6AFDFC6-874B-4B14-BCC9-8FC5B4992157}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113151","Name":"Export Return of Goods to Export Customer for item Type FA Without Payment of Duty through Sales Return Order/Credit Memo","NodeType":"Use Case","TableID":37,"CaseID":"{AA85EF19-5F94-438E-ADC4-A9ACF0DCB0C1}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113160","Name":"End Type-Fixed Asset","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113161","Name":"Begin No. Not Blank","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field6=1(<>''))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113162","Name":"Export Return of Services to Export Customer With Payment of Duty through Sales Return Order/Credit Memo.","NodeType":"Use Case","TableID":37,"CaseID":"{BB48AD27-2942-4C4A-B19C-4A7E76E181DA}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113163","Name":"Export to SEZ/ SEZ Development /Deemed Export With Payment of Duty through Sales Return Order/ Credit Memo","NodeType":"Use Case","TableID":37,"CaseID":"{D22C3484-E0DE-473F-9D62-2BB1DD4B10B9}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113164","Name":"Export to SEZ/ SEZ Development /Deemed Export Without Payment of Duty through Sales Return Order/ Credit Memo","NodeType":"Use Case","TableID":37,"CaseID":"{2FF34432-5A9D-4C71-AF8B-6DDDC92F0A85}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113165","Name":"Export Return to Deemed Export Customer With Payment of Duty through Sales Return Order/Credit Memo.","NodeType":"Use Case","TableID":37,"CaseID":"{C502F69B-F76D-4D72-B7FC-A272A252590B}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113166","Name":"Export Return to Deemed Export Customer Without Payment of Duty through Sales Return Order/Credit Memo.","NodeType":"Use Case","TableID":37,"CaseID":"{7BE46E73-EF21-4766-B4F2-34558460A2C9}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113167","Name":"Deemed Export With Payment of Duty through Sales Return Order/ Credit Memo-Post GST to Customer.","NodeType":"Use Case","TableID":37,"CaseID":"{2F7B1F64-56F5-48C9-A6B2-A5F7F2BF8A2F}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113168","Name":"Intra-State Sales Return to Deemed Export Customer With Payment of Duty through Sales Return Order/Credit Memo.","NodeType":"Use Case","TableID":37,"CaseID":"{5FB236FB-7619-48A1-92D0-BD12F5C8A5C0}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113169","Name":"Intra-State Sales Return to Deemed Export Customer Without Payment of Duty through Sales Return Order/Credit Memo.","NodeType":"Use Case","TableID":37,"CaseID":"{A030C0C9-951C-4818-8A68-C6D5917C31BF}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113170","Name":"Intra-State Sales Return to Deemed Export Customer With Payment of Duty through Sales Return Order/Credit Memo-Post GST to Customer","NodeType":"Use Case","TableID":37,"CaseID":"{0BD7BB2E-38E6-4254-82CB-713F429D787C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113180","Name":"End No. Not Blank","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113205","Name":"End - Not Exempted","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113305","Name":"Exempted","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18147=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113306","Name":"Intra state Sales Return of Exempted Resources from Registered Customer through Sales Return Order/Credit Memo.","NodeType":"Use Case","TableID":37,"CaseID":"{99E193A6-6A7C-4035-BCC1-F2BC49DC4F86}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113307","Name":"Inter State Sales Return of Exempted from Registered Customer through Sales Return Order/ Credit Memo","NodeType":"Use Case","TableID":37,"CaseID":"{A485DD0E-AB08-49E5-9C7C-1FCA3398AE3F}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113308","Name":"Inter State Sales Return of Exempted Resources from Unregistered Customer through Sales Return Order/ Credit Memo","NodeType":"Use Case","TableID":37,"CaseID":"{A49C7425-A602-4445-873D-BCA89D3C2330}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113309","Name":"Export to SEZ/ SEZ Development /Deemed Export With Payment of Duty through Sales Return Order/ Credit Memo - Exempted","NodeType":"Use Case","TableID":37,"CaseID":"{D187D562-E011-4879-839D-A3CB824D11EC}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113310","Name":"Intra state Sales Return of Exempted Item from Registered Customer through Sales Return Order/Credit Memo.","NodeType":"Use Case","TableID":37,"CaseID":"{1A135F44-7A65-49A6-A08A-C87D453E5837}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113350","Name":"Intra state Sales Return of Exempted Resources from Unregistered Customer through Sales Return Order/Credit Memo.","NodeType":"Use Case","TableID":37,"CaseID":"{C2730DF7-9769-4732-819E-C39124E5E3F8}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113351","Name":"End -Exempted","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113380","Name":"Begin Type Item","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(2))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113381","Name":"Intra state Sales Return of Exempted Goods from Exempted Customer through Sales Return Order/Credit Memo.","NodeType":"Use Case","TableID":37,"CaseID":"{DA8B91D0-1B63-44EE-BA57-0A40B1403080}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113382","Name":"Inter State Sales Return of Exempted Goods from Exempted Customer through Sales Return Order/ Credit Memo","NodeType":"Use Case","TableID":37,"CaseID":"{246B0F60-6CA4-42A1-ACDD-30C38C89D2C4}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113400","Name":"Begin Type Item","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113401","Name":"Begin Type G/L Account","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113402","Name":"Intra state Sales Return of Exempted Services from Exempted Customer through Sales Return Order/Credit Memo.","NodeType":"Use Case","TableID":37,"CaseID":"{D2A96240-2F58-406C-8774-03CD60C28E5D}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113403","Name":"Inter State Sales Return of Exempted Services from Exempted Customer through Sales Return Order/ Credit Memo","NodeType":"Use Case","TableID":37,"CaseID":"{E9E7486C-DBFB-432C-886F-017AD828CE5E}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113420","Name":"End Type - G/L Account","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113421","Name":"Begin Type - Resource","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(3))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113422","Name":"Intra state Sales Return of Resource from Exempted Customer through Sales Return Order/Credit Memo.","NodeType":"Use Case","TableID":37,"CaseID":"{10E9D621-B3A8-49E2-BAA1-EB7D535C0712}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113430","Name":"End Type - Resource","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113431","Name":"Begin Type - Fixed Asset","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(4))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113432","Name":"Inter State Exempted Sales Return of Fixed Assets from Exempted Customer through Sales Return Order/Credit Memo.","NodeType":"Use Case","TableID":37,"CaseID":"{2D2466D5-E651-49FE-A00C-9DE16690874C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113433","Name":"Intra state Sales Return of Exempted Fixed Asset from Exempted Customer through Sales Return Order/Credit Memo.","NodeType":"Use Case","TableID":37,"CaseID":"{1C2FBFBD-A18B-4A5D-819E-043993E5510C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113440","Name":"End Type - Fixed Asset","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113441","Name":"Begin Type - Charge Item","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(5))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113442","Name":"Inter State Sales Return of Exempted Charge Item from Exempted Customer through Sales Return Order/ Credit Memo","NodeType":"Use Case","TableID":37,"CaseID":"{0410BC8A-0231-4947-8ED6-982A68846120}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113443","Name":"Intra state Sales Return of Exempted Charge Item from Exempted Customer through Sales Return Order/Credit Memo.","NodeType":"Use Case","TableID":37,"CaseID":"{3277542B-B49C-4CCD-B661-F72C71CED698}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113445","Name":"End Type - Charge Item","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113449","Name":"Begin FOC","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18157=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113450","Name":"Begin Type Item","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(2))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113451","Name":"Begin GST Customer Type- Registered","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18158=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113452","Name":"Intra State Sales Return of Goods from Registered Customer through Return Order for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{14FC3D2C-3DAF-4C04-AA69-6AE47D0D7552}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113453","Name":"Inter State Sales Return of Goods from Registered Customer through Sales Return Order/Credit Memo for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{A4A8C87F-D458-4DD2-B8E9-8393220FDD2D}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113459","Name":"End GST Customer Type- Registered","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113460","Name":"Begin GST Customer Type- Unregistered","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18158=1(2))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113461","Name":"Intra State Sales Return of Goods from Unregistered Customer through Return Order for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{10CA76A8-8DE4-419A-8220-3DD88D8F8747}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113462","Name":"Inter State Sales Return of Goods from Unregistered Customer through Return Order for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{92CD1D91-1D76-46D8-B2E1-C62C54E62191}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113469","Name":"End GST Customer Type- Unregistered","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113470","Name":"Begin GST Customer Type- SEZ Unit","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18158=1(7))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113471","Name":"Export Return of Goods to SEZ Unit With Payment of Duty through Sales Return Order/Credit Memo- Post GST to Customer for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{31F4991C-5E91-4AF3-B911-39F985BF48C1}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113472","Name":"Export Return of Goods to SEZ Unit With Payment of Duty through Sales Return Order/Credit Memo for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{C3755AFF-81D3-4B1A-85B2-B2C8A60F9EAA}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113479","Name":"End GST Customer Type- SEZ Unit","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113480","Name":"Begin GST Customer Type- SEZ Development","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18158=1(6))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113481","Name":"Export Return of Goods to SEZ Development With Payment of Duty through Sales Return Order/Credit Memo -Post GST to Customer for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{8E881E89-87C1-4745-9529-B82A784E83BE}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113482","Name":"Export Return of Goods to SEZ Development With Payment of Duty through Sales Return Order/Credit Memo for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{270F6442-0097-437D-9F91-5C15BD9EAB4D}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113489","Name":"End GST Customer Type- SEZ Development","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113490","Name":"Begin GST Customer Type- Deemed Export","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18158=1(4))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113491","Name":"Intra-State Sales Return to Deemed Export Customer for Goods With Payment of Duty through Sales Return Order/Credit Memo-Post GST to Customer for FOC","NodeType":"Use Case","TableID":37,"CaseID":"{913AAE94-3AEF-4F6D-80DB-F30FF5E5C067}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113492","Name":"Deemed Export for Goods With Payment of Duty through Sales Return Order/ Credit Memo-Post GST to Customer for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{14586EFF-720D-4670-B023-EA4FBFF96B99}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113493","Name":"Intra-State Sales Return to Deemed Export Customer for Goods With Payment of Duty through Sales Return Order/Credit Memo for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{9654C77E-D850-4AA2-9A47-FB003B1574B2}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113494","Name":"Export Return to Deemed Export Customer With Payment of Duty for Goods through Sales Return Order/Credit Memo for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{88F1A4B3-DCAC-499A-BD7A-A5EBA3EF3CB4}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113499","Name":"EndGST Customer Type- Deemed Export","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113500","Name":"End Type Item","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113501","Name":"Begin Type- G/L Account","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113502","Name":"Begin GST Customer Type- Registered","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18158=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113503","Name":"Intra State Sales Return of Services from Registered Customer through Return Order for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{59157E34-743F-4293-A662-1A9C3D916178}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113504","Name":"Inter State Sales Return of Services from Registered Customer through Return Order for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{D9AA8D5E-8135-47AA-A722-6356873CF5EF}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113507","Name":"End GST Customer Type- Registered","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113508","Name":"Begin GST Customer Type- Unregistered","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18158=1(2))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113509","Name":"Intra State Sales Return of Services from Unregistered Customer through Return Order for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{B8757B78-D36C-4AB7-B532-353006120046}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113510","Name":"Inter State Sales Return of Services from Unregistered Customer through Return Order for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{EFB5634E-C341-4922-9BC9-1CE76AD61D79}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113512","Name":"End GST Customer Type- Unregistered","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113513","Name":"Begin GST Customer Type- SEZ Unit","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18158=1(7))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113514","Name":"Export Return of Services to SEZ Unit With Payment of Duty through Sales Return Order/Credit Memo - POst GST to Customer for FOC","NodeType":"Use Case","TableID":37,"CaseID":"{3397DBB8-098B-4A52-9BFA-E24A12B5F9E7}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113515","Name":"Export Return of Services to SEZ Unit With Payment of Duty through Sales Return Order/Credit Memo for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{0E655E71-19D9-4A10-8A28-FE4AFBA2A7C7}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113517","Name":"End GST Customer Type- SEZ Unit","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113518","Name":"Begin GST Customer Type- SEZ Development","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18158=1(6))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113519","Name":"Export Return of Services to SEZ Development With Payment of Duty through Sales Return Order/Credit Memo-Post GST to Customer for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{DBA2CAA4-8EE2-4DD0-B413-383101DB034E}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113520","Name":"Export Return of Services to SEZ Development With Payment of Duty through Sales Return Order/Credit Memo for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{ABF997C4-D467-4F97-94CD-10AFE3A66B3A}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113523","Name":"End GST Customer Type- SEZ Development","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113524","Name":"Begin GST Customer Type- Deemed Export","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18158=1(4))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113525","Name":"Intra-State Sales Return to Deemed Export Customer for Services With Payment of Duty through Sales Return Order/Credit Memo-Post GST to Customer for FOC","NodeType":"Use Case","TableID":37,"CaseID":"{6CC7879A-5AF1-4FD6-8713-7ECF54ABC412}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113526","Name":"Deemed Export for Services With Payment of Duty through Sales Return Order/ Credit Memo-Post GST to Customer for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{861E4175-2832-49D7-8AF3-96E6C19F8E68}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113527","Name":"Intra-State Sales Return to Deemed Export Customer for Services With Payment of Duty through Sales Return Order/Credit Memo for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{6924DAF8-60F6-4C42-9266-200033C6D3F4}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113528","Name":"Export Return to Deemed Export Customer With Payment of Duty for Service through Sales Return Order/Credit Memo for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{1F11A81C-0551-4B07-AA30-23DA57E0FE16}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113535","Name":"End GST Customer Type- Deemed Export","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113536","Name":"End Type- G/L Account","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113537","Name":"Begin Type- Resource","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(3))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113538","Name":"Begin GST Customer Type- Registered","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18158=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113539","Name":"Intra-State Sales Return of Resources from Registered Customer through Sales Return Order/Credit Memo for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{D6D5AACF-3FC9-4E46-AC66-66CB29D5293E}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113540","Name":"Inter State Sales Return of Resources from Registered Customer through Sales Return Order/ Credit Memo for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{A0D756A0-DC72-49F9-A1F9-B926242C6AD2}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113543","Name":"End GST Customer Type- Registered","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113544","Name":"Begin GST Customer Type- Unregistered","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18158=1(2))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113545","Name":"Intra-State Sales Return of Resources from Unregistered Customer through Sales Return Order/Credit Memo for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{5131A9E4-A281-496F-9AF2-E60DC7D88A50}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113546","Name":"Inter State Sales Return of Resources from Unregistered Customer through Sales Return Order/ Credit Memo for FOC","NodeType":"Use Case","TableID":37,"CaseID":"{40C0504C-93D7-4EC1-A4B8-7FE82C224BE4}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113549","Name":"End GST Customer Type- Unregistered","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113550","Name":"Begin GST Customer Type- SEZ Unit","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18158=1(7))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113551","Name":"Export Return of Resource to SEZ Unit With Payment of Duty through Sales Return Order/Credit Memo-Post GST to Customer for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{1F48109A-8444-4862-B9DA-190182B3FBAC}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113552","Name":"Export Return of Resource to SEZ Unit With Payment of Duty through Sales Return Order/Credit Memo for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{F4C6236C-3805-4826-88FD-EAC2659389B0}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113557","Name":"End GST Customer Type- SEZ Unit","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113558","Name":"Begin GST Customer Type- SEZ Development","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18158=1(6))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113559","Name":"Export Return of Resource to SEZ Unit With Payment of Duty through Sales Return Order/Credit Memo-Post GST to Customer for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{6C740BB7-2090-4E02-8611-2FD65CC51465}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113564","Name":"End GST Customer Type- SEZ Development","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113565","Name":"Begin GST Customer Type- Deemed Export","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18158=1(4))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113566","Name":"Intra-State Sales Return to Deemed Export Customer for Resource With Payment of Duty through Sales Return Order/Credit Memo-Post GST to Customer for FOC","NodeType":"Use Case","TableID":37,"CaseID":"{858CA47F-FA82-4485-91A5-12B2EBF36D6F}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113567","Name":"Deemed Export for Resource With Payment of Duty through Sales Return Order/ Credit Memo-Post GST to Customer for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{220890E5-A6C0-4719-83C5-E2247EF9BEC3}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113568","Name":"Intra-State Sales Return to Deemed Export Customer for Resource With Payment of Duty through Sales Return Order/Credit Memo for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{11D160CF-FD98-4C47-928B-9F4125F584A9}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113569","Name":"Export Return to Deemed Export Customer With Payment of Duty for Resource through Sales Return Order/Credit Memo for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{EBFDB89B-5F22-4386-87CA-72157CBF122D}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113574","Name":"End GST Customer Type- Deemed Export","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113575","Name":"End Type- Resource","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113576","Name":"Begin Type - Fixed Asset","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(4))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113577","Name":"Begin GST Customer Type- Registered","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18158=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113578","Name":"Intra State Sales Return of Fixed Asset from Registered Customer through Sales Return Order/ Credit Memo for FOC","NodeType":"Use Case","TableID":37,"CaseID":"{291465B9-0C22-48B5-9EEA-4006CC372B1A}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113579","Name":"Inter State Sales Return of Fixed Asset from Registered Customer through Sales Return Order/ Credit Memo for FOC","NodeType":"Use Case","TableID":37,"CaseID":"{BFB628D6-4413-4628-B619-013EF3255CE9}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113583","Name":"End GST Customer Type- Registered","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113584","Name":"Begin GST Customer Type- Unregistered","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18158=1(2))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113585","Name":"Intra State Sales Return of Fixed Asset from Unregistered Customer through Sales Return Order/ Credit Memo for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{7AFF7259-D09B-4C62-8575-34BEDEE4A72C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113586","Name":"Inter State Sales Return of Fixed Asset from UnRegistered Customer through Sales Order/Invoice for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{3EAEA83A-B986-4C1E-9231-EDEAC919DE2F}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113590","Name":"End GST Customer Type- Unregistered","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113591","Name":"Begin GST Customer Type SEZ Unit","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18158=1(7))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113592","Name":"Export Return of Fixed Asset to SEZ Unit With Payment of Duty through Sales Return Order/Credit Memo- Post GST to Customer for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{0DD3F665-8D52-487D-A200-9BD69DB0A4A2}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113593","Name":"Export Return of Fixed Asset to SEZ Unit With Payment of Duty through Sales Return Order/Credit Memo for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{10BBEEB9-E622-4899-B4E0-C000CA753E54}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113597","Name":"End GST Customer Type SEZ Unit","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113598","Name":"Begin GST Customer Type- SEZ Development","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18158=1(6))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113599","Name":"Export Return of Fixed Asset to SEZ Development With Payment of Duty through Sales Return Order/Credit Memo - Post GST To Customer For FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{3AD6DDBC-A132-4ABA-B216-73133B85604A}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113600","Name":"Export Return of Fixed Asset to SEZ Development With Payment of Duty through Sales Return Order/Credit Memo for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{902158A0-97D5-4075-943E-3B30B800FB78}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113608","Name":"End GST Customer Type- SEZ Development","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113609","Name":"Begin GST Customer Type - Deemed Export","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18158=1(4))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113610","Name":"Intra-State Sales Return to Deemed Export Customer for Fixed Asset With Payment of Duty through Sales Return Order/Credit Memo-Post GST to Customer for FOC","NodeType":"Use Case","TableID":37,"CaseID":"{5629EBAA-46B2-4DD7-9511-1D6E697A6B0A}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113611","Name":"Deemed Export for Fixed Asset With Payment of Duty through Sales Return Order/ Credit Memo-Post GST to Customer for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{4BFA98D3-CEF3-4573-B464-9E897EB9D4AE}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113612","Name":"Intra-State Sales Return to Deemed Export Customer for Fixed Asset With Payment of Duty through Sales Return Order/Credit Memo for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{B3793372-9AD2-4F36-BA5C-3AF13BE44F2D}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113613","Name":"Export Return to Deemed Export Customer With Payment of Duty for Fixed Asset through Sales Return Order/Credit Memo for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{321E0F7B-A15D-4CE6-9C11-BF3FD3DEE918}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113620","Name":"End GST Customer Type - Deemed Export","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113630","Name":"End Type - Fixed Asset","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113635","Name":"End FOC","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113639","Name":"End- Sales Return Document","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-114640","Name":"End Sales","NodeType":"End","TableID":0,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-114645","Name":"Purchase","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field7=1(<>''),Field18080=1(<>''),Field18096=1(<>''))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-114650","Name":"Purchase Document","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field1=1(0|1|2|4))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-114660","Name":"GST Reverse Charge -No","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18085=1(0))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-114670","Name":"Exempted","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18082=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-114672","Name":"Intra State Purchase of Service from Composite Vendor/Supplier of exempted goods with no GST Impact through Purchase Quote/Order/Invoice","NodeType":"Use Case","TableID":39,"CaseID":"{536EFB4F-1EBC-4731-861E-433F3BA23A4A}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-114673","Name":"Intra State Purchase of Goods from Composite Vendor/Supplier of exempted goods with no GST Impact through Purchase Quote/Order/Invoice","NodeType":"Use Case","TableID":39,"CaseID":"{93FE03BD-63C7-44B5-B40D-5974C8300527}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-114800","Name":"End Exempted","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-114850","Name":"Exempted No","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18082=1(0))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-114851","Name":"Inter State Purchase of Goods from Composite Vendor/Supplier of exempted goods with no GST Impact through Purchase Quote/Order/Invoice","NodeType":"Use Case","TableID":39,"CaseID":"{01C97F7D-4263-4387-84E1-610D2EA4A762}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-114853","Name":"Intra State Purchase of Resource from Composite Vendor/Supplier with no GST Impact through Purchase Quote/Order/Invoice.","NodeType":"Use Case","TableID":39,"CaseID":"{78A245B3-3BAB-4347-B09A-FDE73A600BB2}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-114854","Name":"Inter State Purchase of Resource from Composite Vendor/Supplier with no GST Impact through Purchase Quote/Order/Invoice.","NodeType":"Use Case","TableID":39,"CaseID":"{94FF400C-34A8-4760-A4E5-C4B367739FA3}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-114855","Name":"Intra State Purchase of Goods from Composite Vendor/Supplier of exempted goods with no GST Impact through Purchase Quote/Order/Invoice","NodeType":"Use Case","TableID":39,"CaseID":"{93FE03BD-63C7-44B5-B40D-5974C8300527}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-114856","Name":"Intra State Purchase of Goods from Composite Vendor/Supplier of exempted goods with no GST Impact through Purchase Quote/Order/Invoice With Bill To-Loc","NodeType":"Use Case","TableID":39,"CaseID":"{51395C06-549D-40B5-98C5-A7F6B73AF427}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-114857","Name":"Inter State Purchase of Goods from Composite Vendor/Supplier of exempted goods with no GST Impact through Purchase Quote/Order/Invoice with Bill To-Loc","NodeType":"Use Case","TableID":39,"CaseID":"{131AC7D7-6079-4C25-A3A6-CEAC66A6203D}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-114858","Name":"Intra State Purchase of G/L Account from Composite Vendor/Supplier of exempted goods with no GST Impact through Purchase Quote/Order/Invoice","NodeType":"Use Case","TableID":39,"CaseID":"{D7A29410-A685-41B6-A8F9-268D65F062B6}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-114859","Name":"Inter State Purchase of G/L Account from Composite Vendor/Supplier of exempted goods with no GST Impact through Purchase Quote/Order/Invoice","NodeType":"Use Case","TableID":39,"CaseID":"{4DC1D2DC-A8F8-4443-A563-348B8E8961C1}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-114860","Name":"Inter-State Purchase of Charge Item from Sez Vendor when Input Tax Credit is Not Available Through Purchase Invoice/Order/Quote","NodeType":"Use Case","TableID":39,"CaseID":"{85DAE7D1-95AC-4FD1-B1E0-5FFD980481BF}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-114861","Name":"Inter State Purchase of Charge Item from Composite Vendor/Supplier of exempted goods with no GST Impact through Purchase Quote/Order/Invoice","NodeType":"Use Case","TableID":39,"CaseID":"{0E1A782B-CF1F-4CF0-8797-A1310519B1DB}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-114862","Name":"Intra State Purchase of Charge Item from Composite Vendor/Supplier of exempted goods with no GST Impact through Purchase Quote/Order/Invoice","NodeType":"Use Case","TableID":39,"CaseID":"{3E14881B-DB97-473E-9A0B-C8A0A2D604C1}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115000","Name":"End Exempted No","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115100","Name":"End GST Reverse Charge -No","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115150","Name":"GST Reverse Charge","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18085=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115151","Name":"Exempted No","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18082=1(0))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115152","Name":"Inter-State Purchase of Goods from Registered Vendor when Input Tax Credit is Available Through Purchase Invoice Type-Debit Note","NodeType":"Use Case","TableID":39,"CaseID":"{2AB850AD-528A-498A-9E23-65E396AC61A8}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115153","Name":"Intra-State Purchase of Goods from Registered Vendor when Input Tax Credit is Available Through Purchase Invoice Type-Debit Note","NodeType":"Use Case","TableID":39,"CaseID":"{B064E1CD-DB51-456E-AE19-7F2AC8C9DC11}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115154","Name":"Intra-State Purchase of Goods from Registered Vendor when Input Tax Credit is Available Through Purchase Invoice/Order/Quote - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{89071509-BF13-4ED5-A45D-8D938DFEF265}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115200","Name":"End Exempted No","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115201","Name":"Exempted Yes","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18082=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115202","Name":"Import of Goods from Foreign Vendor where Input Tax Credit is Available through Purchase Order/Invoice for Exempted Goods","NodeType":"Use Case","TableID":39,"CaseID":"{700CF31E-E4A1-4183-AEF6-7C572C34C8AD}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115203","Name":"Inter State Purchase of Exempted Goods for Import Vendor","NodeType":"Use Case","TableID":39,"CaseID":"{DF5E22A4-BD3C-4C80-B6D3-9F667C8037DD}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115205","Name":"End Exempted Yes","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115250","Name":"GST Credit-Availment","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18095=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115300","Name":"Type GL Account","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115301","Name":"Import of Services from Foreign Vendor where Input Tax Credit is Available through Purchase Quote.","NodeType":"Use Case","TableID":39,"CaseID":"{118F40D5-2D0E-45D6-B458-52D6BF00A035}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115302","Name":"Import of Services from Foreign Vendor where Input Tax Credit is Available through Purchase Order/Invoice","NodeType":"Use Case","TableID":39,"CaseID":"{8D8A9485-D248-4B9B-AB8C-EEDB746B190C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115350","Name":"End Type GL Account","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115351","Name":"Type Item","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(2))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115352","Name":"Import of Goods from Foreign Vendor where Input Tax Credit is Available through Purchase Quote.","NodeType":"Use Case","TableID":39,"CaseID":"{20913086-F0CD-4AC8-AF0A-755723E44946}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115353","Name":"Import of Goods from Foreign Vendor where Input Tax Credit is Available through Purchase Order/Invoice","NodeType":"Use Case","TableID":39,"CaseID":"{71EC1D59-01EC-4486-8CB4-0957D4ADF38B}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115354","Name":"Import of Goods from Foreign Vendor where Input Tax Credit is Available through Purchase Order/Invoice - For GST Reverse Charge.","NodeType":"Use Case","TableID":39,"CaseID":"{D279BE29-1CB8-4F96-BA2C-0348368D0879}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115400","Name":"End Type Item","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115401","Name":"Begin Type Charge Item","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(5))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115402","Name":"Inter-State Purchase of Charge Item from Registered Vendor when Input Tax Credit is Available Through Purchase Invoice/Order/Quote - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{FB4C68ED-BD93-4229-B1BB-91163250C066}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115403","Name":"Intra-State Purchase of Charge Item from Registered Vendor when Input Tax Credit is Available Through Purchase Invoice/Order/Quote With Reverse Charge.","NodeType":"Use Case","TableID":39,"CaseID":"{9154D0D0-5D85-40BE-889D-764E65F8691C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115404","Name":"Import of Service from Foreign Vendor where Input Tax Credit is Available through Purchase Order/Invoice for Charge (Item)","NodeType":"Use Case","TableID":39,"CaseID":"{B8A8C947-5BA0-45B4-B8A4-33088F25782F}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115415","Name":"End Type Charge Item","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115450","Name":"End GST Credit-Availment","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115451","Name":"GST Credit-Non Availment","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18095=1(2))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115452","Name":"Type Item","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(2))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115453","Name":"Import of Goods from Foreign Vendor where Input Tax Credit is Not Available through Purchase Quote.","NodeType":"Use Case","TableID":39,"CaseID":"{AE939960-28B0-426C-B5D7-D8535B9AE3C9}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115454","Name":"Import of Goods from Foreign Vendor where Input Tax Credit is Not Available through Purchase Order/Invoice","NodeType":"Use Case","TableID":39,"CaseID":"{27255CC6-70FC-4D33-91F1-5B83F03CE33E}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115500","Name":"End Type Item","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115501","Name":"Type GL Account","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115502","Name":"Import of Services from Foreign Vendor where Input Tax Credit is not available through Purchase Quote.","NodeType":"Use Case","TableID":39,"CaseID":"{9167AE32-6B66-48FB-AF03-35D261A7C5BC}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115503","Name":"Import of Services without Input Tax Credit available from Foreign Vendor.","NodeType":"Use Case","TableID":39,"CaseID":"{F1AFD035-5F0A-4DD2-B15E-E0EEF0BA43D7}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115506","Name":"Import of Services from Foreign Vendor where Input Tax Credit is not available through Purchase Order/Invoice","NodeType":"Use Case","TableID":39,"CaseID":"{387B69F6-70EC-4BCC-A4C0-AA1CFAB0D356}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115507","Name":"Inter-State Purchase of Services from Unregistered Vendor where Input Tax Credit Not Available -Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{62A4192A-86D8-4431-A641-78EF2F348546}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115550","Name":"End Type GL Account","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115551","Name":"Type-Resource","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(3))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115552","Name":"Intra-State Purchase of Resource from Registered Vendor where Input Tax Credit Not Available - Reverse Charge.","NodeType":"Use Case","TableID":39,"CaseID":"{A0CED092-3AAD-4121-A5A2-F4DEAC316621}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115553","Name":"Inter-State Purchase of Resource from Registered Vendor when Input Tax Credit is Not Available Through Purchase Invoice/Order/Quote - Reverse Charge.","NodeType":"Use Case","TableID":39,"CaseID":"{FED218A8-8C3F-43D9-BBD5-E8BCBB30D8BD}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115554","Name":"Inter-State Purchase of Resource from UnRegistered Vendor when Input Tax Credit is Not Available Through Purchase Invoice/Order/Quote.","NodeType":"Use Case","TableID":39,"CaseID":"{C340D02B-697D-414F-9082-E4CC9B4B2A3B}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115555","Name":"Intra-State Purchase of Resource from Unregistered Vendor where Input Tax Credit Not Available - Reverse Charge.","NodeType":"Use Case","TableID":39,"CaseID":"{0EE4D825-CC7B-458D-9165-D32635F56F41}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115556","Name":"Intra-State Purchase of Resource From UnRegistered Vendor where Input Tax Credit Not Available through Purchase Quote.","NodeType":"Use Case","TableID":39,"CaseID":"{38BC1AAB-3066-483F-811E-E147662D48C6}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115580","Name":"End Type-Resource","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115581","Name":"Begin Type-Charge Item","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(5))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115582","Name":"Inter-State Purchase of Charge Item from Registered Vendor when Input Tax Credit is Not Available Through Purchase Invoice/Order/Quote - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{1C3087C6-66E1-4D66-8133-DF7F13FDB0D5}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115583","Name":"Intra-State Purchase of Charge Item from Registered Vendor when Input Tax Credit is Not Available Through Purchase Invoice/Order/Quote - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{C7BA99E0-7A62-41C9-93C4-36BDAD52C328}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115584","Name":"Import of Charge from Foreign Vendor where Input Tax Credit is Not Available through Purchase Order/Invoice","NodeType":"Use Case","TableID":39,"CaseID":"{BFCC5C7F-F391-44D5-84F1-1D72DC7A9DEC}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115595","Name":"End Type-Charge Item","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115649","Name":"End GST Credit-Non Availment","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115650","Name":"End GST Reverse Charge","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115651","Name":"Extempted -No","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18082=1(0))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115652","Name":"GST Credit-Availment","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18095=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115653","Name":"Type-Item","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(2))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115654","Name":"Import of goods with Input Tax Credit available from SEZ Vendor with cover of Bill of Entry","NodeType":"Use Case","TableID":39,"CaseID":"{4D6EF305-AE45-4735-9E9A-C9428D139D38}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115655","Name":"Import of goods with Input Tax Credit available from SEZ Vendor without cover of Bill of Entry","NodeType":"Use Case","TableID":39,"CaseID":"{24E498DD-9DFB-4097-9F32-C8EBD49B8D22}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115659","Name":"Inter-State Purchase of Goods from Registered Vendor when Input Tax Credit is Available Through Purchase Invoice/Order","NodeType":"Use Case","TableID":39,"CaseID":"{2C80FA78-CBBE-45E7-8C62-5010B692AC9C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115660","Name":"Inter-State Purchase of Goods from UnRegistered Vendor where Input Tax Credit is available","NodeType":"Use Case","TableID":39,"CaseID":"{FF5D43D6-C93E-42D5-9CD3-E3FCA99E77DD}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115661","Name":"Intra-State Purchase of Goods from Unregistered Vendor when Input Tax Credit is Available Through Purchase Invoice/Order/Quote-Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{94D31994-F430-4825-A72E-D41F51F63952}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115662","Name":"Intra-State Purchase of Goods from Registered Vendor when Input Tax Credit is Available Through Purchase Invoice/Order/Quote","NodeType":"Use Case","TableID":39,"CaseID":"{53AA1183-8DEC-4542-A708-317C5CD7BDA9}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115663","Name":"Inter-State Purchase of Goods from Registered Vendor when Input Tax Credit is Available with Bill to Location(POS) through Purchase Invoice/Order","NodeType":"Use Case","TableID":39,"CaseID":"{E75A7A67-D332-41BE-B7EA-61C8BF69E9F7}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115664","Name":"Intra-State Purchase of Goods from Registered Vendor when Input Tax Credit is Available Bill to Location(POS) Through Purchase Invoice/Order/Quote","NodeType":"Use Case","TableID":39,"CaseID":"{1440B152-A710-4982-86C0-5C27FEF4A7D6}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115665","Name":"Intra-State Purchase of Goods from Unregistered Vendor when Input Tax Credit is Available With Bill To-Loc Through Purchase Invoice/Order/Quote-Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{A8B3F6FB-A42D-4767-BD3D-D4C9BB11AEAA}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115666","Name":"Inter-State Purchase of Goods from UnRegistered Vendor where Input Tax Credit is available With Bill To-Loc","NodeType":"Use Case","TableID":39,"CaseID":"{B86AA24C-78CF-4F29-BD88-E17580D6992B}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115667","Name":"Inter-State Purchase of Goods from Registered Vendor when Input Tax Credit is Available Through Purchase Invoice/Order/Quote - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{7BDD3EE0-29AE-4C15-A879-1DBF13ADA019}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115668","Name":"Intra-State Purchase of Goods from Registered Vendor when Input Tax Credit is Available Through Purchase Invoice/Order/Quote for FOC","NodeType":"Use Case","TableID":39,"CaseID":"{9FE211A9-770A-4396-BE84-B9625D975180}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115669","Name":"Inter-State Purchase of Goods from Registered Vendor when Input Tax Credit is Available Through Purchase Invoice/Order for FOC","NodeType":"Use Case","TableID":39,"CaseID":"{B7A4D05E-75C4-47F5-B502-9510B13E2DEA}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115700","Name":"End Type-Item","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115701","Name":"Type-GL Account","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115702","Name":"Import of Services from Import Associate Vendor where Input Tax Credit is Available.","NodeType":"Use Case","TableID":39,"CaseID":"{BACBB54A-0D30-4206-AA6A-5CF48A744D5E}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115703","Name":"Intra-State Purchase of Services from Registered Vendor when Input Tax Credit is Available Through Purchase Invoice/Order/Quote","NodeType":"Use Case","TableID":39,"CaseID":"{9568C93C-FC46-477D-B554-A8EACAEAF21A}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115704","Name":"Inter-State Purchase of Service from Registered Vendor when Input Tax Credit is Available Through Purchase Invoice/Order","NodeType":"Use Case","TableID":39,"CaseID":"{F85B9211-93F9-4443-9784-BE52C220CE24}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115705","Name":"ISD - Intra-State Purchase of Services from Registered Vendor when Input Tax Credit is Available Through Purchase Invoice/Order/Quote ","NodeType":"Use Case","TableID":39,"CaseID":"{EF5146EB-771F-4DCE-80E7-ACC0B606829F}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115706","Name":"(POS) Intra-State Purchase of Services for Overseas Place of Supply from Registered Vendor where Input Tax Credit is available","NodeType":"Use Case","TableID":39,"CaseID":"{0027CF9D-DA15-43A2-83D4-5CD214E0278B}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115707","Name":"ISD-Inter-State Purchase of Service from Registered Vendor when Input Tax Credit is Available Through Purchase Invoice/Order","NodeType":"Use Case","TableID":39,"CaseID":"{700AF8A2-1315-41BC-9FE9-E00FB826DC80}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115708","Name":"Inter-State Purchase of Services from Unregistered Vendor where Input Tax Credit is available","NodeType":"Use Case","TableID":39,"CaseID":"{8A057230-A2A9-4E59-8101-9A947A8D8B91}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115709","Name":"Intra-State Purchase of Services from Registered Vendor when Input Tax Credit is Available Through Purchase Invoice/Order/Quote - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{FC1AEFDA-0537-4D94-A576-F542B6710B71}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115710","Name":"Inter-State Purchase of Services from Registered Vendor when Input Tax Credit is Available Through Purchase Invoice/Order/Quote - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{5F9FDC49-A99D-4F72-AA5F-4E0BF5B3AC34}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115711","Name":"Intra-State Purchase of Services from Unregistered Vendor when Input Tax Credit is Available Through Purchase Invoice/Order/Quote - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{31C539BE-990C-4E00-AF1A-6BFA1333ED7E}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115712","Name":"Import of Services with Input Tax Credit available from SEZ Vendor with cover of Bill of Entry ","NodeType":"Use Case","TableID":39,"CaseID":"{B03B25F1-806F-4CE3-86A2-A65BBE1F8360}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115713","Name":"Import of Services with Input Tax Credit available from SEZ Vendor with cover of Bill of Entry and GST Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{C2D132AB-4A23-47FC-9A25-EEB973689456}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115714","Name":"Intra-State Purchase of Services from Registered Vendor when Input Tax Credit is Available Through Purchase Invoice/Order/Quote for FOC","NodeType":"Use Case","TableID":39,"CaseID":"{04BA2F8D-9562-4551-8A98-C61CE5509B47}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115715","Name":"Inter-State Purchase of Service from Registered Vendor when Input Tax Credit is Available Through Purchase Invoice/Order for FOC","NodeType":"Use Case","TableID":39,"CaseID":"{19625BAB-02B9-42E1-80EF-FED88D13FF40}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115750","Name":"End Type-GL Account","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115751","Name":"Type-Fixed Asset","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(4))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115752","Name":"Import of Fixed Asset with Input Tax Credit available from SEZ Vendor with cover of Bill of Entry","NodeType":"Use Case","TableID":39,"CaseID":"{E076372D-BFB5-4911-B6EE-85F1F71B1569}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115753","Name":"Import of Fixed Asset with Input Tax Credit available from Import Vendor with cover of Bill of Entry","NodeType":"Use Case","TableID":39,"CaseID":"{7E44665E-5E48-4F98-8E9A-135669D3E75B}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115754","Name":"Inter-State Purchase of Fixed Asset from Registered Vendor where Input Tax Credit is available","NodeType":"Use Case","TableID":39,"CaseID":"{C02EF3F0-A659-4762-854B-830A8D59B371}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115755","Name":"Intra State Purchase of Fixed Asset from Exempted Vendor/Supplier of exempted (Availment) goods with no GST Impact through Purchase Quote/Order/Invoice","NodeType":"Use Case","TableID":39,"CaseID":"{4753502A-0359-4A8C-A37C-4DB4B6FCD790}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115756","Name":"Intra-State Purchase of Fixed Asset from Registered Vendor when Input Tax Credit is Available Through Purchase Invoice/Order/Quote","NodeType":"Use Case","TableID":39,"CaseID":"{4852FE50-F64A-454F-B43F-D46FE4BABECB}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115757","Name":"Inter State Purchase of Fixed Asset from Exempted Vendor/Supplier of exempted goods(Availment) with no GST Impact through Purchase Quote/Order/Invoice","NodeType":"Use Case","TableID":39,"CaseID":"{7C939AC1-1919-4919-A0D0-B62E3C72B382}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115758","Name":"Intra State Purchase of Fixed Asset from Composite Vendor/Supplier of exempted (Availment) goods with no GST Impact through Purchase Quote/Order/Invoice","NodeType":"Use Case","TableID":39,"CaseID":"{975372FC-F93D-4E8B-81EA-57B6751B9F94}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115759","Name":"Inter State Purchase of Fixed Asset from Composite Vendor/Supplier of exempted goods(Availment) with no GST Impact through Purchase Quote/Order/Invoice","NodeType":"Use Case","TableID":39,"CaseID":"{B69B4BDA-5CAC-4C9C-B4DB-211912D30EF2}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115760","Name":"Inter-State Purchase of Fixed Asset from UnRegistered Vendor where Input Tax Credit is available","NodeType":"Use Case","TableID":39,"CaseID":"{F3E7CEF3-5437-42EC-9DED-FE81F994FFCB}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115761","Name":"Intra-State Purchase of Fixed Asset from Unregistered Vendor when Input Tax Credit is Available Through Purchase Invoice/Order/Quote","NodeType":"Use Case","TableID":39,"CaseID":"{B83A838B-C0A8-4E69-B735-86D011229B1C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115762","Name":"Import of Fixed Asset with Input Tax Credit available from SEZ Vendor without cover of Bill of Entry","NodeType":"Use Case","TableID":39,"CaseID":"{A7ED2E31-2CA7-4D60-A415-31A78736388D}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115763","Name":"Intra-State Purchase of Fixed Asset from Registered Vendor when Input Tax Credit is Available Bill to Location(POS) Through Purchase Invoice/Order/Quote","NodeType":"Use Case","TableID":39,"CaseID":"{8B96F1E1-FC2C-48FD-AD1E-62986961AC0D}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115764","Name":"Inter-State Purchase of Fixed Asset from Registered Vendor when Input Tax Credit is Available with Bill to Location(POS) through Purchase Invoice/Order","NodeType":"Use Case","TableID":39,"CaseID":"{FCC8AA84-E16B-4D3F-A139-946089738FB0}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115765","Name":"Inter-State Purchase of Fixed Asset from UnRegistered Vendor where Input Tax Credit is available With Bill To-Loc","NodeType":"Use Case","TableID":39,"CaseID":"{E246F7FE-DE34-4E3C-BD3B-D8943D9B966C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115766","Name":"Intra-State Purchase of Fixed Asset from Unregistered Vendor when Input Tax Credit is Available With Bill To-Loc Through Purchase Invoice/Order/Quote-Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{E365B9AF-953A-462B-A562-9B494D0B84B9}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115767","Name":"Inter State Purchase of Fixed Asset from Composite Vendor/Supplier of exempted fixed asset with no GST Impact through Purchase Quote/Order/Invoice with Bill To-Loc","NodeType":"Use Case","TableID":39,"CaseID":"{DA3FC765-67AA-4232-8C30-6CE3E6E6DFDC}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115768","Name":"Import of Goods with Fixed Asset from Foreign Vendor where Input Tax Credit is Available through Purchase Order/Invoice","NodeType":"Use Case","TableID":39,"CaseID":"{D9172942-78EB-4305-950C-C9DEC70F16E6}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115769","Name":"Intra-State Purchase of Fixed Asset from Registered Vendor when Input Tax Credit is Available Through Purchase Invoice/Order/Quote for FOC","NodeType":"Use Case","TableID":39,"CaseID":"{F7997B96-631E-456D-9FA2-028ADEC745C1}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115770","Name":"Inter-State Purchase of Fixed Asset from Registered Vendor where Input Tax Credit is available for FOC","NodeType":"Use Case","TableID":39,"CaseID":"{5E2D969D-2A4B-4288-900B-7D1527F80A8E}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115800","Name":"End Type-Fixed Asset","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115801","Name":"Type-Charge Item","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(5))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115802","Name":"Inter-State Purchase of Charge Item from Registered Vendor where Input Tax Credit is available","NodeType":"Use Case","TableID":39,"CaseID":"{21957E13-9751-40A2-B591-67ADE93573E7}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115803","Name":"Intra-State Purchase of Charge Item from Registered Vendor when Input Tax Credit is Available Through Purchase Invoice/Order/Quote","NodeType":"Use Case","TableID":39,"CaseID":"{4F234B8B-1B95-4938-B3DF-3D96784EAC77}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115804","Name":"Inter-State Purchase of Charge Item from UnRegistered Vendor where Input Tax Credit is available","NodeType":"Use Case","TableID":39,"CaseID":"{AB0E6CA2-960E-4D6F-A7C6-D461F268627F}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115805","Name":"Intra-State Purchase of Charge Item from UnRegistered Vendor when Input Tax Credit is Available Through Purchase Invoice/Order/Quote - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{72511E89-CA1E-4749-8648-F1EFD6F61D44}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115806","Name":"Intra-State Purchase of Charge Item from Registered Vendor when Input Tax Credit is Available Bill to Location(POS) Through Purchase Invoice/Order/Quote","NodeType":"Use Case","TableID":39,"CaseID":"{0ABF122D-4ED5-4820-8411-7C39147B2819}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115807","Name":"Inter-State Purchase of Charge Item from Registered Vendor when Input Tax Credit is Available with Bill to Location(POS) through Purchase Invoice/Order","NodeType":"Use Case","TableID":39,"CaseID":"{CD837506-8D55-4E71-8576-FA6B9934A6BB}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115808","Name":"Inter-State Purchase of Charge Item from UnRegistered Vendor where Input Tax Credit is available With Bill To-Loc","NodeType":"Use Case","TableID":39,"CaseID":"{1DD024D8-C5D0-44DC-BD2E-3B4A395F33FE}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115809","Name":"Intra-State Purchase of Charge Item from Unregistered Vendor when Input Tax Credit is Available With Bill To-Loc Through Purchase Invoice/Order/Quote-Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{8EE30985-1662-4A16-B9B1-2C36589F4F94}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115810","Name":"Intra State Purchase of Charge Item from Composite Vendor/Supplier of exempted (Availment) goods with no GST Impact through Purchase Quote/Order/Invoice","NodeType":"Use Case","TableID":39,"CaseID":"{2A0E0C4E-331F-42B3-96D2-F9CFF01E6FC1}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115811","Name":"Inter State Purchase of Charge Item from Composite Vendor/Supplier of exempted charge item with no GST Impact through Purchase Quote/Order/Invoice with Bill To-Loc","NodeType":"Use Case","TableID":39,"CaseID":"{714E77D3-C569-418A-A932-DBFF272D3B92}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115812","Name":"Import of Charge Item with Input Tax Credit available from SEZ Vendor with cover of Bill of Entry","NodeType":"Use Case","TableID":39,"CaseID":"{B95176D6-58FF-487C-A25B-26E433D85356}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115813","Name":"Import with Input Tax Credit for Charge Item available from SEZ Vendor with cover of Bill of Entry ","NodeType":"Use Case","TableID":39,"CaseID":"{13E5D66F-422B-4830-992B-39C740D6D560}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115814","Name":"Import of Charge with Input Tax Credit available from SEZ Vendor with Bill of Entry","NodeType":"Use Case","TableID":39,"CaseID":"{8E537871-C8F7-4E07-8B32-84411C668443}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115815","Name":"Inter-State Purchase of Charge Item from Sez Vendor where Input Tax Credit is available","NodeType":"Use Case","TableID":39,"CaseID":"{05312E80-BE4E-4EB1-9A1E-AF55EA4D8E3D}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115850","Name":"End Type-Charge Item","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115851","Name":"Type-Resource","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(3))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115852","Name":"Inter-State Purchase of Resource from Registered Vendor when Input Tax Credit is Available Through Purchase Invoice/Order/Quote.","NodeType":"Use Case","TableID":39,"CaseID":"{EC4815D3-A78F-4C4F-8C64-8FE9AF09050C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115853","Name":"Intra-State Purchase of Resource from Registered Vendor when Input Tax Credit is Available Through Purchase Invoice/Order/Quote.","NodeType":"Use Case","TableID":39,"CaseID":"{4AC1A712-CC9B-4CB7-91EA-05245C1D7211}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115854","Name":"Intra-State Purchase of Resource from Registered Vendor when Input Tax Credit is Available Through Purchase Invoice/Order/Quote - Reverse Charge.","NodeType":"Use Case","TableID":39,"CaseID":"{F5EA246D-523F-4FFA-B316-967933F01C16}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115855","Name":"Inter-State Purchase of Resource from Registered Vendor when Input Tax Credit is Available Through Purchase Invoice/Order/Quote - Reverse Charge.","NodeType":"Use Case","TableID":39,"CaseID":"{7342ECF9-7916-4923-AC4C-71E973942346}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115856","Name":"Intra-State Purchase of Resource from UnRegistered Vendor when Input Tax Credit is Available Through Purchase Invoice/Order/Quote.","NodeType":"Use Case","TableID":39,"CaseID":"{0FD2A76A-DECB-4FAC-8008-10D6762CDAFE}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115857","Name":"Inter-State Purchase of Resource from UnRegistered Vendor when Input Tax Credit is Available Through Purchase Invoice/Order/Quote.","NodeType":"Use Case","TableID":39,"CaseID":"{20C477FD-F60A-4D5C-B919-BF3082993511}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115858","Name":"Import of Resource with Input Tax Credit available from SEZ Vendor with cover of Bill of Entry","NodeType":"Use Case","TableID":39,"CaseID":"{A106F715-2EC1-43B7-B0AE-33F6AEEF3B2A}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115859","Name":"Import of Resource from Foreign Vendor where Input Tax Credit is Available through Purchase Order/Invoice/Quote.","NodeType":"Use Case","TableID":39,"CaseID":"{45189151-3ACF-421C-8984-C932DC8A3A2A}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115860","Name":"Intra-State Purchase of Resource from Registered Vendor when Input Tax Credit is Available Through Purchase Invoice/Order/Quote for FOC.","NodeType":"Use Case","TableID":39,"CaseID":"{FEC46768-8566-4C39-AE1D-62B0FD83D5D6}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115861","Name":"Inter-State Purchase of Resource from Registered Vendor when Input Tax Credit is Available Through Purchase Invoice/Order/Quote for FOC.","NodeType":"Use Case","TableID":39,"CaseID":"{56966B10-DE93-4980-A9FE-1CBB5DE6359B}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115870","Name":"End Type-Resource","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115900","Name":"End GST Credit-Availment","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115901","Name":"GST Credit-Non Availment","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18095=1(2))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115902","Name":"Type-Item","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(2))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115903","Name":"Import of goods without Input Tax Credit available from SEZ Vendor with cover of Bill of Entry","NodeType":"Use Case","TableID":39,"CaseID":"{A7619228-F860-4E03-B21E-E0F01EFF6C52}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115904","Name":"Import of goods without Input Tax Credit Not available from SEZ Vendor without cover of Bill of Entry","NodeType":"Use Case","TableID":39,"CaseID":"{ABA6F00E-B423-49DF-8DF5-F74950011703}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115905","Name":"Import of goods without Input Tax Credit available from SEZ Vendor without cover of Bill of Entry","NodeType":"Use Case","TableID":39,"CaseID":"{C57B60DB-22D0-43D5-8460-B47D9F11AFC2}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115906","Name":"Inter-State Purchase of Goods from Registered Vendor where Input Tax Credit is not available","NodeType":"Use Case","TableID":39,"CaseID":"{E277B92E-D047-425F-B44D-E8EA58FAEE5C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115908","Name":"Intra-State Purchase of Goods from Unregistered Vendor when Input Tax Credit is Not Available Through Purchase Invoice/Order/Quote - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{09CD7163-15FB-4340-82BF-57373BE3E206}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115909","Name":"Intra-State Purchase of Goods from Registered Vendor when Input Tax Credit is Not Available purchase order/Invoice","NodeType":"Use Case","TableID":39,"CaseID":"{F4B17FC7-3605-47DD-804E-4573BCB3FAC7}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115910","Name":"Inter-State Purchase of Goods from Unregistered Vendor where Input Tax Credit is Not-Available","NodeType":"Use Case","TableID":39,"CaseID":"{9E59D4DD-C975-4F42-B5A2-AA98AC93FB7F}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115911","Name":"Intra-State Purchase of Goods from Registered Vendor when Input Tax Credit is Not Available With Bill to-Location purchase order/Invoice","NodeType":"Use Case","TableID":39,"CaseID":"{5577B8ED-6471-4480-AD5A-63BA31696AB7}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115912","Name":"Inter-State Purchase of Goods from Registered Vendor where Input Tax Credit is not available with Bill to-Location","NodeType":"Use Case","TableID":39,"CaseID":"{A274F11C-332F-4EE3-AC91-2E2D95E9E2B6}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115913","Name":"Intra-State Purchase of Goods from Unregistered Vendor when Input Tax Credit is Not Available With Bill To-Loc Through Purchase Invoice/Order/Quote - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{679E7F9F-9AAC-4CC5-A263-904ECC708057}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115914","Name":"Inter-State Purchase of Goods from Unregistered Vendor where Input Tax Credit is Not-Available With Bill To-Loc","NodeType":"Use Case","TableID":39,"CaseID":"{1B2046C2-4264-4272-A998-085B20832B87}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115915","Name":"Intra-State Purchase of Goods from Registered Vendor when Input Tax Credit isNon-Available Through Purchase Invoice/Order/Quote - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{F4F11B85-700B-4880-9A73-740FF36C4160}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115916","Name":"Inter-State Purchase of Goods from Registered Vendor when Input Tax Credit is Not Available Through Purchase Invoice/Order/Quote - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{CE65AEFF-0248-437E-B8A6-87C60E49EFD4}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115917","Name":"Intra-State Purchase of Goods from Registered Vendor when Input Tax Credit is Not Available purchase order/Invoice for FOC","NodeType":"Use Case","TableID":39,"CaseID":"{55BEA8B4-15ED-47B2-AD24-157BA39467EE}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115918","Name":"Inter-State Purchase of Goods from Registered Vendor where Input Tax Credit is not available for FOC","NodeType":"Use Case","TableID":39,"CaseID":"{CCD1BD07-0A33-4DAB-9A3E-E66956E0F98B}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115950","Name":"End Type-Item","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115951","Name":"Type-GL Account","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115952","Name":"Intra-State Purchase of Services From Registered Vendor where Input Tax Credit Not Available through Purchase Quote- Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{EB169AE5-8DE0-4490-8DFD-46CEE05AA5C1}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115953","Name":"Inter-State Purchase of Services from Registered Vendor when Input Tax Credit is Not Available Through Purchase Invoice/Order/Quote - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{67527223-25F5-48B0-A0C2-F0064BD92F18}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115954","Name":"Intra-State Purchase of Services from Registered Vendor where Input Tax Credit Not Available - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{46AD3622-5D72-4048-9FAC-3C31077C2DF0}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115955","Name":"Intra-State Purchase of Services from Unregistered Vendor where Input Tax Credit Not Available -Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{FEE41ACD-C7C4-4653-9A34-15F7F0B70663}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115956","Name":"ISD-Inter-State Purchase of Service from Registered Vendor when Input Tax Credit is Not Available Through Purchase Invoice/Order","NodeType":"Use Case","TableID":39,"CaseID":"{EC905260-0D39-42CD-ADAE-27F4E74CE267}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115957","Name":"(POS) Intra-State Purchase of Services for Overseas Place of Supply from Registered Vendor where Input Tax Credit is Not available","NodeType":"Use Case","TableID":39,"CaseID":"{6A72F56C-CA49-4D53-939A-4FABC050BFB3}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115958","Name":"Inter-State Purchase of Service from Registered Vendor when Input Tax Credit is Not Available Through Purchase Invoice/Order","NodeType":"Use Case","TableID":39,"CaseID":"{0C3618F6-08BD-417F-8744-94A415595940}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115959","Name":"ISD - Intra-State Purchase of Services from Registered Vendor when Input Tax Credit is Not Available purchase order/Invoice","NodeType":"Use Case","TableID":39,"CaseID":"{61FB3B94-A2C7-4F3F-B4A8-801D842328E1}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115960","Name":"Intra-State Purchase of Services from Registered Vendor when Input Tax Credit is Not Available purchase order/Invoice","NodeType":"Use Case","TableID":39,"CaseID":"{BE0C902C-E9FC-4548-B8C7-AB70E21388BC}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115961","Name":"Intra-State Purchase of Services from Registered Vendor when Input Tax Credit is Not Available purchase Quote.","NodeType":"Use Case","TableID":39,"CaseID":"{36A5E0EC-E197-4102-8FF0-F6DC9B4A47C1}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115962","Name":"Import of Services from Import Associate Vendor where Input Tax Credit is not available.","NodeType":"Use Case","TableID":39,"CaseID":"{62216594-6660-492B-ACA0-F8BD3893DE49}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115963","Name":"Intra-State Purchase of Services from POS as vendor state Registered Vendor where Input Tax Credit is Not available","NodeType":"Use Case","TableID":39,"CaseID":"{A52E9652-EFC8-4950-B8C1-A41D887AF962}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115964","Name":"Import of Services without Input Tax Credit available from SEZ Vendor with cover of Bill of Entry ","NodeType":"Use Case","TableID":39,"CaseID":"{C07C2110-2740-4FAD-975B-293FAAD86247}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115965","Name":"Intra-State Purchase of Services from Unregistered Vendor when Input Tax Credit is Not Available With Bill To-Loc Through Purchase Invoice/Order/Quote - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{D2457D2F-2B0E-4F56-BF93-007E245C4FF8}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115966","Name":"Intra-State Purchase of Services from Registered Vendor when Input Tax Credit is Not Available purchase order/Invoice for FOC","NodeType":"Use Case","TableID":39,"CaseID":"{0C6EE2B8-335F-4420-9B76-AEBF773BB40C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115967","Name":"Inter-State Purchase of Service from Registered Vendor when Input Tax Credit is Not Available Through Purchase Invoice/Order for FOC","NodeType":"Use Case","TableID":39,"CaseID":"{7642FECB-8BEE-4127-9523-47ECB7D29DC4}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116000","Name":"End Type-GL Account","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116001","Name":"Type-Fixed Asset","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(4))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116002","Name":"Import of Fixed Asset from Foreign Vendor where Input Tax Credit is Not Available through Purchase Order/Invoice","NodeType":"Use Case","TableID":39,"CaseID":"{7307BDA2-283F-4094-82E0-41EC241CE177}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116003","Name":"Intra-State Purchase of Fixed Asset from Registered Vendor when Input Tax Credit is Not Available purchase order/Invoice","NodeType":"Use Case","TableID":39,"CaseID":"{47F223C1-06BE-4BD6-A98A-E001F8CE436E}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116004","Name":"Inter-State Purchase of Fixed Asset from Registered Vendor where Input Tax Credit is not available through Purchase Order/ Invoice","NodeType":"Use Case","TableID":39,"CaseID":"{1A8DCBD9-6A50-4C2F-9364-9DB967B50A24}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116005","Name":"Inter State Purchase of Fixed Asset from Composite Vendor/Supplier of exempted goods(Non-Availment) with no GST Impact through Purchase Quote/Order/Invoice","NodeType":"Use Case","TableID":39,"CaseID":"{2E369D91-2885-47EB-886E-7AD35816B42E}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116006","Name":"Intra State Purchase of Fixed Asset from Exempted Vendor/Supplier of exempted (Non Availment)goods with no GST Impact through Purchase Quote/Order/Invoice","NodeType":"Use Case","TableID":39,"CaseID":"{5DC7836A-BA61-4738-8506-BA91EC982903}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116007","Name":"Inter State Purchase of Fixed Asset from Exempted Vendor/Supplier of exempted goods(Non-Availment) with no GST Impact through Purchase Quote/Order/Invoice","NodeType":"Use Case","TableID":39,"CaseID":"{62AD7817-C30F-4EC6-B68C-AC4828B07DF8}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116008","Name":"Intra State Purchase of Fixed Asset from Composite Vendor/Supplier of exempted (Non Availment)goods with no GST Impact through Purchase Quote/Order/Invoice","NodeType":"Use Case","TableID":39,"CaseID":"{64233AA2-2DB0-4AC9-8078-0755AB5DA89D}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116009","Name":"Intra-State Purchase of Fixed Asset from UnRegistered Vendor when Input Tax Credit is Not Available purchase order/Invoice","NodeType":"Use Case","TableID":39,"CaseID":"{DB7C51C1-1F9F-40F2-82C2-82D59793413C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116010","Name":"Inter-State Purchase of Fixed Asset from Unregistered Vendor where Input Tax Credit is not available - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{F8D35423-18AA-4916-A10C-3DC5A6F80CB0}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116011","Name":"Intra-State Purchase of Fixed Asset from Registered Vendor when Input Tax Credit is Not Available With Bill to-Location purchase order/Invoice","NodeType":"Use Case","TableID":39,"CaseID":"{4FA8A9F3-D8C5-4B20-ACB0-F52BFE013A01}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116012","Name":"Inter-State Purchase of Fixed Asset from Unregistered Vendor where Input Tax Credit is Not-Available With Bill To-Loc","NodeType":"Use Case","TableID":39,"CaseID":"{718C2339-648B-4FC6-A496-737B12176D01}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116013","Name":"Intra-State Purchase of Fixed Asset from Unregistered Vendor when Input Tax Credit is Not Available With Bill To-Loc Through Purchase Invoice/Order/Quote - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{679F358F-4DB0-4587-9F0C-CE643B16A152}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116014","Name":"Inter-State Purchase of Fixed Asset from Registered Vendor where Input Tax Credit is not available with Bill to-Location","NodeType":"Use Case","TableID":39,"CaseID":"{AFCCC11E-97B1-4627-8DFD-4184537E2509}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116015","Name":"Inter State Purchase of Fixed Asset from Composite Vendor/Supplier of exempted fixed asset for Non-Availment through Purchase Quote/Order/Invoice with Bill To-Loc","NodeType":"Use Case","TableID":39,"CaseID":"{D50E350F-963C-4C3C-9E78-08F12AB7D8F0}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116016","Name":"Intra-State Purchase of Fixed Asset from Registered Vendor when Input Tax Credit is Not Available purchase order/Invoice For FOC","NodeType":"Use Case","TableID":39,"CaseID":"{7E48E18F-D907-423A-BC62-256D7CFAA089}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116017","Name":"Inter-State Purchase of Fixed Asset from Registered Vendor where Input Tax Credit is not available through Purchase Order/ Invoice for FOC","NodeType":"Use Case","TableID":39,"CaseID":"{65746F4E-A835-4278-98CA-B6AB0D0CBF6B}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116050","Name":"End Type-Fixed Asset","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116051","Name":"Type-Charge Item","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(5))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116052","Name":"Intra-State Purchase of Charge Item from UnRegistered Vendor when Input Tax Credit is Not Available Through Purchase Invoice/Order/Quote - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{97664A61-096E-43D9-BF55-2D5672F02F7F}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116053","Name":"Inter-State Purchase of Charge Item from UnRegistered Vendor when Input Tax Credit is Not Available Through Purchase Invoice/Order/Quote - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{F4A8CF06-D6CE-4263-ACF3-F1FBB744FBFB}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116054","Name":"Inter-State Purchase of Charge Item from Registered Vendor when Input Tax Credit is Not Available purchase order/Invoice","NodeType":"Use Case","TableID":39,"CaseID":"{101CAF41-34AB-4EA1-9277-166954A7FF94}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116055","Name":"Intra-State Purchase of Charge Item from Registered Vendor when Input Tax Credit is Not Available purchase order/Invoice","NodeType":"Use Case","TableID":39,"CaseID":"{64F0C586-3993-4F05-A127-332E7E46802D}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116056","Name":"Intra-State Purchase of Charge Item from Registered Vendor when Input Tax Credit is Not Available With Bill to-Location purchase order/Invoice","NodeType":"Use Case","TableID":39,"CaseID":"{666A5198-99BA-4EC0-A89A-C991109BBC0F}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116057","Name":"Inter-State Purchase of Charge Item from Unregistered Vendor where Input Tax Credit is Not-Available With Bill To-Loc","NodeType":"Use Case","TableID":39,"CaseID":"{66A099C8-9660-498E-9BEB-61296A76CFAF}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116058","Name":"Intra-State Purchase of Charge Item from Unregistered Vendor when Input Tax Credit is Not Available With Bill To-Loc Through Purchase Invoice/Order/Quote - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{8A58255B-97C9-4691-9DBF-1C041D4433DB}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116059","Name":"Intra State Purchase of Charge Item from Composite Vendor/Supplier of exempted (Non Availment)goods with no GST Impact through Purchase Quote/Order/Invoice","NodeType":"Use Case","TableID":39,"CaseID":"{C4DD33B4-D4DB-4F30-8C86-E2045B473C57}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116060","Name":"Inter-State Purchase of Charge Item from Registered Vendor where Input Tax Credit is not available with Bill to-Location","NodeType":"Use Case","TableID":39,"CaseID":"{CCE6E98E-5330-48BA-B42E-70E2BDE3E45B}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116061","Name":"Inter State Purchase of Charge Item from Composite Vendor/Supplier of exempted charge item for Non-Availment through Purchase Quote/Order/Invoice with Bill To-Loc","NodeType":"Use Case","TableID":39,"CaseID":"{FFCC9396-D3C4-4A81-BDE8-23070BF8976F}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116100","Name":"End Type-Charge Item","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116101","Name":"Type-Resource","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(3))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116102","Name":"Inter-State Purchase of Resource from Registered Vendor when Input Tax Credit is Not Available Through Purchase Invoice/Order.","NodeType":"Use Case","TableID":39,"CaseID":"{DBD883FC-4DD3-4C9C-B9AC-AAAF07FF4F3E}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116103","Name":"Intra-State Purchase of Resource from Registered Vendor when Input Tax Credit is Not Available purchase order/Invoice.","NodeType":"Use Case","TableID":39,"CaseID":"{073D94DC-E7F0-4535-B269-7C36C626FD96}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116104","Name":"Intra-State Purchase of Resource from Registered Vendor when Input Tax Credit is Not Available purchase Quote.","NodeType":"Use Case","TableID":39,"CaseID":"{B33DCDC5-21C3-4019-96E3-EF513EAED95E}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116105","Name":"Import of Resource without Input Tax Credit available from SEZ Vendor with cover of Bill of Entry","NodeType":"Use Case","TableID":39,"CaseID":"{B12DD0D6-A87C-4A8C-AE71-746B26156893}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116106","Name":"Import of Resource from Foreign Vendor where Input Tax Credit is not available through Purchase Order/Invoice/Quote.","NodeType":"Use Case","TableID":39,"CaseID":"{5D419270-CBAE-42FB-A135-DC1693C77985}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116107","Name":"Intra-State Purchase of Resource from Registered Vendor when Input Tax Credit is Not Available purchase order/Invoice for FOC.","NodeType":"Use Case","TableID":39,"CaseID":"{10D6A0FE-F802-4235-B438-3A29B7C853ED}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116108","Name":"Inter-State Purchase of Resource from Registered Vendor when Input Tax Credit is Not Available Through Purchase Invoice/Order for FOC.","NodeType":"Use Case","TableID":39,"CaseID":"{F1A5130E-021A-40F9-8282-82CBFEE3FF07}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116130","Name":"End Type-Resource","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116150","Name":"End GST Credit-Non Availment","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116200","Name":"End Exempted -No","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116201","Name":"Exempted","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18082=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116202","Name":"Inter-State Purchase of Exempted Fixed Asset from Registered Vendor where Input Tax Credit is available","NodeType":"Use Case","TableID":39,"CaseID":"{1FFB6082-63D3-4AF8-A83B-9AE92D2010E2}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116203","Name":"Intra State Purchase of Exempted Fixed Asset from Registered Vendor (Availment) with no GST Impact through Purchase Quote/Order/Invoice","NodeType":"Use Case","TableID":39,"CaseID":"{C7563021-CD85-4519-ADFB-BA848CA3022F}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116204","Name":"Inter State Purchase of Exempted Goods-SEZ Vendor","NodeType":"Use Case","TableID":39,"CaseID":"{97856AB0-DAB0-4CF3-B1B1-3A6EB1524E0F}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116205","Name":"Intra State Purchase of Exempted Goods and Services.","NodeType":"Use Case","TableID":39,"CaseID":"{2ED393A6-3B1D-49AC-9DBB-D5836930F61C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116206","Name":"Inter-State Purchase of Exempted Fixed Asset from Registered Vendor where Input Tax Credit is not available","NodeType":"Use Case","TableID":39,"CaseID":"{AB2BDB68-471C-4EC0-B43A-92920239FBF9}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116207","Name":"Intra State Purchase of Exempted Fixed Asset from Registered Vendor (Non-Availment) with no GST Impact through Purchase Quote/Order/Invoice","NodeType":"Use Case","TableID":39,"CaseID":"{F67095C1-F610-4B59-A1E5-7B58D83A6CF5}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116208","Name":"Inter State Purchase of Exempted Goods for Registered/Exempted/Composite Vendor","NodeType":"Use Case","TableID":39,"CaseID":"{07AC553C-0E84-41E3-B04A-19B63C3BCF75}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116250","Name":"End Exempted","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116251","Name":"Begin Type Fixed Asset","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(4))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116252","Name":"Import of Fixed Asset from SEZ Vendor where Input Tax Credit is Not Available, without cover of Bill of Entry.","NodeType":"Use Case","TableID":39,"CaseID":"{A43577AE-11F7-4DF9-9EEF-F317ED83ADD4}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116253","Name":"Import of Fixed Asset from SEZ Vendor where Input Tax Credit is Not Available, with cover of Bill of Entry.","NodeType":"Use Case","TableID":39,"CaseID":"{B45F2436-2E00-4A49-9A8E-7B9202FE0F0A}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116260","Name":"End Type Fixed Asset","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116300","Name":"End Purchase Document","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116301","Name":"Purchase Return Document","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field1=1(5|3))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116302","Name":"Exempted No","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18082=1(0))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116303","Name":"GST Credit Availment","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18095=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116304","Name":"Type-Item","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(2))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116305","Name":"Return of Import of goods with Input Tax Credit available from SEZ Vendor with cover of Bill of Entry","NodeType":"Use Case","TableID":39,"CaseID":"{15A78CF5-A4CC-4804-95DA-6FB3DCBF2DBF}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116306","Name":"Intra-State Purchase Return of Goods from Unregistered Vendor when Input Tax Credit is Available - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{BB9814B7-D039-49BC-BF5D-F80127620CAE}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116307","Name":"Purchase Credit Memo/Return Order for Imported Goods where Input Tax Credit is available","NodeType":"Use Case","TableID":39,"CaseID":"{48C973FB-77C2-476C-AB39-0E61F0F76F0D}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116308","Name":"Intra-State Purchase Return of Goods from Registered Vendor when Input Tax Credit is Available Through Purchase Return Orders","NodeType":"Use Case","TableID":39,"CaseID":"{D0059E3B-4B5F-44E3-B2AD-B3DB74C1CEC4}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116309","Name":"Inter-State Purchase Return of Goods from Registered Vendor when Input Tax Credit is Available","NodeType":"Use Case","TableID":39,"CaseID":"{BC7B8A8E-B343-439B-B240-B5D7D0253CC7}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116310","Name":"Inter-State Purchase Return of Goods from UnRegistered Vendor when Input Tax Credit is Available","NodeType":"Use Case","TableID":39,"CaseID":"{CFC3D6F5-144A-4731-8658-BA626457624A}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116311","Name":"Intra-State Purchase Return of Goods from UnRegistered Vendor when Input Tax Credit is Available Through Purchase Invoice/Order/Quote - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{2E358EDE-097D-4846-A45B-BC2C1AE07FE9}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116312","Name":"Intra-State Purchase Return of Goods from Registered Vendor when Input Tax Credit is Available with Bill To-Loc Through Purchase Return Orders","NodeType":"Use Case","TableID":39,"CaseID":"{F6EB6D82-74A5-413E-BE36-9308F41811A3}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116313","Name":"Inter-State Purchase Return of Goods from Registered Vendor when Input Tax Credit is Available with Bill to-Loc","NodeType":"Use Case","TableID":39,"CaseID":"{7759D07C-F691-4738-8FB8-F682B03DA922}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116314","Name":"Intra-State Purchase Return of Goods from Unregistered Vendor when Input Tax Credit is Available With Bill To-Loc - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{998A15E8-B4E6-460E-A89C-239F276E9B3C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116315","Name":"Inter-State Purchase Return of Goods from UnRegistered Vendor when Input Tax Credit is Available With Bill To-Loc","NodeType":"Use Case","TableID":39,"CaseID":"{FFBADC05-CF47-4787-B31A-EB85F88CACE8}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116316","Name":"Intra-State Purchase Return of Goods from Registered Vendor where Input Tax Credit is available - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{FBEDC063-63EA-4FED-A3DD-8B5E175031CD}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116317","Name":"Inter-State Purchase Return of Goods from Registered Vendor when Input Tax Credit is Available Through Purchase Return Order/ Credit Memo - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{055AEE33-1301-4B59-BA0D-E76D2D542B34}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116318","Name":"Intra-State Purchase Return of Goods from Registered Vendor when Input Tax Credit is Available Through Purchase Return Orders for FOC","NodeType":"Use Case","TableID":39,"CaseID":"{C9F94259-EA6B-481B-AAF1-8D8F9F025902}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116319","Name":"Inter-State Purchase Return of Goods from Registered Vendor when Input Tax Credit is Available for FOC","NodeType":"Use Case","TableID":39,"CaseID":"{90643BB8-1BEB-40C8-81B3-E6A3C5075C45}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116350","Name":"End Type-Item","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116351","Name":"Type GL Account","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116352","Name":"Import of Services from Import Associate Vendor where Input Tax Credit is available through Return Order.","NodeType":"Use Case","TableID":39,"CaseID":"{AF13E308-74EA-4A38-86B9-B0EA0DCE1972}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116353","Name":"Inter-State Purchase Return of Service from Registered Vendor when Input Tax Credit is Available","NodeType":"Use Case","TableID":39,"CaseID":"{0CCFD5FB-95C8-4189-ACFF-E7D9AE1DB368}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116354","Name":"ISD - Intra-State Purchase Return of Services from Registered Vendor when Input Tax Credit is Available","NodeType":"Use Case","TableID":39,"CaseID":"{137A0843-A280-441F-8D87-5639EDB2B01E}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116355","Name":"ISD-Inter-State Purchase Return of Service from Registered Vendor when Input Tax Credit is Available","NodeType":"Use Case","TableID":39,"CaseID":"{2A733D02-2125-4EA9-97E3-2068E5708A94}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116356","Name":"Intra-State Purchase Return of Services from Registered Vendor when Input Tax Credit is Available Through Purchase Return Orders","NodeType":"Use Case","TableID":39,"CaseID":"{710042C6-833D-4CF4-B943-47CF6691F7DE}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116357","Name":"Intra-State Purchase Return of Services from Registered Vendor where Input Tax Credit is available - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{D2E1CF7B-EA38-4EB3-82C3-E2E6949625D3}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116358","Name":"Intra-State Purchase Return of Services from Unregistered Vendor when Input Tax Credit is Available (Reverse Charge)","NodeType":"Use Case","TableID":39,"CaseID":"{AEDED96A-9927-4DF4-B89B-22FA7C77C19F}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116360","Name":"Inter-State Purchase Return of Services from Registered Vendor when Input Tax Credit is Available Through Purchase Return Order/ Credit Memo - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{64A2BCC0-3E88-4613-B91D-540FF4977F86}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116361","Name":"Inter-State Purchase of Return of Services from Unregistered Vendor where Input Tax Credit is available","NodeType":"Use Case","TableID":39,"CaseID":"{6510FF1C-A0A5-4C52-8DE5-836BE2536650}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116362","Name":"Return of Import of Services with Input Tax Credit available from SEZ Vendor with cover of Bill of Entry ","NodeType":"Use Case","TableID":39,"CaseID":"{36710BC3-FED5-4726-8AB5-1DC108CF23AF}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116363","Name":"Intra-State Purchase Return of Services from Registered Vendor when Input Tax Credit is Available Through Purchase Return Orders for FOC","NodeType":"Use Case","TableID":39,"CaseID":"{47AA3C60-6575-4F87-8022-29790BB97A11}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116400","Name":"End Type GL Account","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116401","Name":"Type Fixed Asset","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(4))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116402","Name":"Return of Import Fixed Asset with Input Tax Credit available from SEZ Vendor with cover of Bill of Entry","NodeType":"Use Case","TableID":39,"CaseID":"{1201ECAE-F4F2-43D7-938E-15F5361C2062}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116403","Name":"Return of Import of Fixed Asset with Input Tax Credit available from Import Vendor with cover of Bill of Entry","NodeType":"Use Case","TableID":39,"CaseID":"{8EECE1FD-4BDB-4A37-92ED-00380C170CFC}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116404","Name":"Inter State Purchase Return of Fixed Asset from Composite Vendor/Supplier of exempted goods(Availment) with no GST Impact","NodeType":"Use Case","TableID":39,"CaseID":"{A8A42D6F-2A47-4175-8ED8-F482D64554C6}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116405","Name":"Intra-State Purchase Return of Fixed Asset from Registered Vendor when Input Tax Credit is Available","NodeType":"Use Case","TableID":39,"CaseID":"{CCF91681-45AA-45DC-94A6-52DBBF199CF5}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116406","Name":"Intra State Purchase Return of Fixed Asset from Composite Vendor/Supplier of exempted (Availment) goods with no GST Impact","NodeType":"Use Case","TableID":39,"CaseID":"{4E53918C-16B7-4834-86DE-E7422FC21E83}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116407","Name":"Inter-State Purchase Return of Fixed Asset to Registered Vendor where Input Tax Credit is available through Purchase Return Order/ Credit Memo","NodeType":"Use Case","TableID":39,"CaseID":"{57322220-978A-459E-8EC5-05AB66E6B362}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116408","Name":"Intra-State Purchase Return of Fixed Asset from Unregistered Vendor when Input Tax Credit is Available","NodeType":"Use Case","TableID":39,"CaseID":"{F37442C1-AB50-445F-A7C3-8DCA84931B69}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116409","Name":"Inter-State Purchase Return of Fixed Asset from Unregistered Vendor where Input Tax Credit is available","NodeType":"Use Case","TableID":39,"CaseID":"{B5669E1C-A496-431B-A29F-69E527E37AA0}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116410","Name":"Inter-State Purchase Return of Fixed Asset from Registered Vendor when Input Tax Credit is Available with Bill to-Loc","NodeType":"Use Case","TableID":39,"CaseID":"{E6B10245-E536-41CF-A9CC-AA043113F6F4}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116411","Name":"Inter-State Purchase Return of Fixed Asset from UnRegistered Vendor when Input Tax Credit is Available With Bill To-Loc","NodeType":"Use Case","TableID":39,"CaseID":"{38583B1E-682C-4B06-BB69-005849014E82}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116412","Name":"Intra-State Purchase Return of Fixed Asset from Unregistered Vendor when Input Tax Credit is Available With Bill To-Loc - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{1EB264E9-24DD-43EC-A17F-E623BF565203}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116413","Name":"Intra-State Purchase Return of Fixed Asset from Registered Vendor when Input Tax Credit is Available for FOC","NodeType":"Use Case","TableID":39,"CaseID":"{8E9E924F-0BE8-4862-BDFE-39CB23848B3C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116414","Name":"Inter-State Purchase Return of Fixed Asset to Registered Vendor where Input Tax Credit is available through Purchase Return Order/ Credit Memo for FOC","NodeType":"Use Case","TableID":39,"CaseID":"{B4B3EE78-57EC-4EE8-8F51-E7B868CF34B9}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116450","Name":"End Type Fixed Asset","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116451","Name":"Type Charge Item","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116452","Name":"Intra-State Purchase Return of Charge Item from Registered Vendor when Input Tax Credit is Available through purchase return order/Credit memo","NodeType":"Use Case","TableID":39,"CaseID":"{9A744701-39FF-4CFF-AA72-F5856E82FBF4}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116453","Name":"Intra-State Purchase Return of Charge Item from Unregistered Vendor when Input Tax Credit is Available Through Purchase Return Order/ Credit Memo - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{142D2618-98AC-4DD8-922F-11CF063DD8D8}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116454","Name":"Inter-State Purchase Return of Charge Item to Unregistered Vendor when Input Tax Credit is Available through purchase return order/ Credit memo","NodeType":"Use Case","TableID":39,"CaseID":"{8B75A47C-8DD2-45C8-99D9-B04E18C531D5}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116455","Name":"Inter-State Purchase Return of Charge Item to Registered Vendor when Input Tax Credit is Available through purchase return order/ Credit memo","NodeType":"Use Case","TableID":39,"CaseID":"{06A818C9-817D-4983-B8D9-D96759380A68}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116456","Name":"Intra-State Purchase Return of Charge Item from Registered Vendor when Input Tax Credit is Available Through Purchase Return Order/ Credit Memo - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{4934B903-2938-4ED9-994C-36F89B08E352}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116457","Name":"Inter-State Purchase Return of Charge Item from Registered Vendor when Input Tax Credit is Available Through Purchase Return Order/ Credit Memo - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{8F83C983-4368-45FF-9319-952826F72162}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116458","Name":"Inter-State Purchase Return of Charge Item from Registered Vendor when Input Tax Credit is Available with Bill to-Loc","NodeType":"Use Case","TableID":39,"CaseID":"{478E0789-2184-4644-8165-3B5169084277}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116459","Name":"Inter-State Purchase Return of Charge Item from UnRegistered Vendor when Input Tax Credit is Available With Bill To-Loc","NodeType":"Use Case","TableID":39,"CaseID":"{0E9F08C2-7CF2-4AC1-AFB4-57AC8383E732}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116460","Name":"Intra-State Purchase Return of Charge Item from Unregistered Vendor when Input Tax Credit is Available With Bill To-Loc - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{03418FFD-0AF9-48F5-A500-EC48BF9DE4E5}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116465","Name":"End Type Charge Item","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116466","Name":"Type-Resource","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(3))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116467","Name":"Inter-State Purchase Return of Resource from Registered Vendor when Input Tax Credit is Available through Return Order/Credit Memo.","NodeType":"Use Case","TableID":39,"CaseID":"{A8C8864E-5E75-431A-90D6-9AAB47623BA6}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116468","Name":"Inter-State Purchase Return of Resource from Registered Vendor when Input Tax Credit is Available Through Purchase Return Order/ Credit Memo - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{C6FDF908-18DE-47B6-ADED-1E654C153D2A}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116469","Name":"Inter-State Purchase Return of Resource from Unregistered Vendor when Input Tax Credit is Available Through Purchase Return Order/ Credit Memo.","NodeType":"Use Case","TableID":39,"CaseID":"{D8632F51-FEDB-4AF9-8A25-CFE374BD12BA}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116470","Name":"Return of Import of Resource with Input Tax Credit available from SEZ Vendor with cover of Bill of Entry.","NodeType":"Use Case","TableID":39,"CaseID":"{62CA4077-63DB-4812-8DBA-369BDD0A5A63}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116471","Name":"Intra-State Purchase Return of Resource from Unregistered Vendor when Input Tax Credit is Available Through Purchase Return Order/Credit Memo.","NodeType":"Use Case","TableID":39,"CaseID":"{C9ED5F18-07B9-43AF-9221-448B962EC9CD}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116472","Name":"Intra-State Purchase Return of Resources from Registered Vendor where Input Tax Credit is available - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{04F944A1-EF9C-440F-A89B-654782D13EAA}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116473","Name":"Purchase Credit Memo/Return Order for Resource where Input Tax Credit is available.","NodeType":"Use Case","TableID":39,"CaseID":"{4001BD59-B35E-4BBC-B7AD-464FBB21E54A}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116474","Name":"Intra-State Purchase Return of Resource from Registered Vendor when Input Tax Credit is Available Through Purchase Return Order/Credit Memo.","NodeType":"Use Case","TableID":39,"CaseID":"{EE5198CD-9648-49CF-97C5-E71A9843EE27}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116475","Name":"Intra-State Purchase Return of Resource from Registered Vendor when Input Tax Credit is Available Through Purchase Return Order/Credit Memo for FOC.","NodeType":"Use Case","TableID":39,"CaseID":"{21A2DFFA-DF09-4531-BE3F-DFC7E50F3D1E}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116476","Name":"Inter-State Purchase Return of Resource from Registered Vendor when Input Tax Credit is Available through Return Order/Credit Memo for FOC.","NodeType":"Use Case","TableID":39,"CaseID":"{2E66DC31-92BB-4928-83E5-6F87FC544A85}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116490","Name":"End Type-Resource","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116500","Name":"End GST Credit Availment","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116501","Name":"GST Credit Non-Availment","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18095=1(2))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116502","Name":"Type Item","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(2))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116503","Name":"Return of Import of goods where Input Tax Credit Not available from SEZ Vendor without cover of Bill of Entry","NodeType":"Use Case","TableID":39,"CaseID":"{D66CD2EC-C8A4-48B9-A634-B14161E0E03B}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116504","Name":"Return of Import goods without Input Tax Credit available from SEZ Vendor with cover of Bill of Entry","NodeType":"Use Case","TableID":39,"CaseID":"{A4A0C6C8-FE70-4DA2-9E3D-E5F0CCA93A22}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116505","Name":"Inter-State Purchase Return of Goods to Registered Vendor where Input Tax Credit is not available","NodeType":"Use Case","TableID":39,"CaseID":"{4684DF92-D578-4978-B4EC-04ACC07C8206}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116506","Name":"Intra-State Purchase Return of Goods to Registered Vendor when Input Tax Credit is Not Available purchase Return Order/ Credit Memo","NodeType":"Use Case","TableID":39,"CaseID":"{C8AEE991-4EDD-4562-BCE7-3DFA3502C8D2}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116507","Name":"Intra-State Purchase Return of Goods to Registered Vendor where Input Tax Credit is not available through Return Order","NodeType":"Use Case","TableID":39,"CaseID":"{0120B543-BBCA-433A-B84D-3A07CA4BD763}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116508","Name":"Intra-State Purchase Return of Goods to UnRegistered Vendor when Input Tax Credit is Not Available Through Purchase Return Order/ Credit Memo - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{5F7E0B6C-3D83-418C-9829-C5E5E52460C6}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116509","Name":"Intra-State Purchase Return of Goods from Unregistered Vendor when Input Tax Credit is Not Available - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{EB39C2FC-37D8-4778-8B44-9A45DDA46B2E}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116510","Name":"Inter-State Purchase Return of Goods from Unregistered Vendor when Input Tax Credit is Not Available - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{938B00CD-0C55-4E7E-9E88-9D26724E10E2}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116511","Name":"Intra-State Purchase Return of Goods to Registered Vendor when Input Tax Credit is Not Available with Bill To-Loc purchase Return Order/ Credit Memo","NodeType":"Use Case","TableID":39,"CaseID":"{65C755B4-E396-453F-9425-896AFF64D1B3}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116512","Name":"Inter-State Purchase Return of Goods to Registered Vendor where Input Tax Credit is not available with Bill To-Loc","NodeType":"Use Case","TableID":39,"CaseID":"{0D76D452-CCE9-473B-998A-71EDADD459AE}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116513","Name":"Intra-State Purchase Return of Goods to UnRegistered Vendor when Input Tax Credit is Not Available With Bill To-Loc Through Purchase Return Order/ Credit Memo - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{35C8BFED-ED88-46B7-AFE8-9F2C58421857}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116514","Name":"Inter-State Purchase Return of Goods from Unregistered Vendor when Input Tax Credit is Not Available With Bill To-Loc- Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{E0AA74AA-F401-4115-B768-D41BB661B532}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116515","Name":"Intra-State Purchase Return of Goods to Registered Vendor when Input Tax Credit is Not Available purchase Return Order/ Credit Memo for FOC","NodeType":"Use Case","TableID":39,"CaseID":"{A515D68A-A496-4A81-8F4E-EC21F207D5FF}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116516","Name":"Inter-State Purchase Return of Goods to Registered Vendor where Input Tax Credit is not available for FOC","NodeType":"Use Case","TableID":39,"CaseID":"{040A5713-75A6-4FD3-BCA9-7A335D697933}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116550","Name":"End Type Item","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116551","Name":"Type GL Account","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116552","Name":"Purchase Credit Memo/Return Order for Imported Services from Import Associate Vendor where Input Tax Credit is Not Available.","NodeType":"Use Case","TableID":39,"CaseID":"{F14B809C-31CA-4B7D-989E-419B00D35F8F}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116553","Name":"Import of Services from Import Associate Vendor where Input Tax Credit is not available Through Return Order ","NodeType":"Use Case","TableID":39,"CaseID":"{C6B64855-0CA9-4749-B21E-AF9FA0AB33D4}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116554","Name":"Intra-State Purchase Return of Services from Registered Vendor when Input Tax Credit is Not Available Purchase Return Order/Credit Memo","NodeType":"Use Case","TableID":39,"CaseID":"{2CEB6A3E-11E4-420F-A3C6-886B920BEC29}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116555","Name":"ISD-Inter-State Purchase Return of Service from Registered Vendor when Input Tax Credit is Not Available","NodeType":"Use Case","TableID":39,"CaseID":"{78DCCF81-7548-4028-A6AF-31AEB633FC3C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116556","Name":"ISD - Intra-State Purchase Return of Services from Registered Vendor when Input Tax Credit is Not Available","NodeType":"Use Case","TableID":39,"CaseID":"{BD845B37-5E0F-4EF3-94CB-ED972B71A3C1}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116557","Name":"Inter-State Purchase Return of Service to Registered Vendor where Input Tax Credit is Non-available through Purchase Return Orders/Purchase Credit Memo","NodeType":"Use Case","TableID":39,"CaseID":"{E6B27281-EC3F-4040-B035-4179D33884CE}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116558","Name":"Intra-State Purchase Return of Services from Registered Vendor where Input Tax Credit Not Available -Reverse Charge.","NodeType":"Use Case","TableID":39,"CaseID":"{58CCF42B-75BE-422F-90A5-93E52B2CC817}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116559","Name":"Intra-State/Intra-Union Territory Purchase Return of Services from Registered Vendor where Input Tax Credit Not Available - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{A7F8D194-33DA-472D-87CB-693FB589CD45}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116560","Name":"Intra-State Purchase Return of Services from Registered Vendor where Input Tax Credit Not Available - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{A4461039-C91C-4102-9438-866AF5607096}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116561","Name":"Intra-State Purchase Return of Services from Unregistered Vendor where Input Tax Credit Not Available -Reverse Charge.","NodeType":"Use Case","TableID":39,"CaseID":"{F7D97DC6-CF0E-4248-95A3-3C7189BF844D}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116562","Name":"Intra-State Purchase Return of Services from UnRegistered Vendor where Input Tax Credit Not Available (Reverse Charge)","NodeType":"Use Case","TableID":39,"CaseID":"{01289E18-40A0-4AC7-92DA-601F5AF77AA0}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116563","Name":"Inter-State Purchase Return of Services from Registered Vendor when Input Tax Credit is Not Available Through Purchase Return Order/ Credit Memo - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{7EE4EB63-5718-4880-80D7-DC82790F804D}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116564","Name":"Inter-State Purchase Return of Services from Unregistered Vendor where Input Tax Credit Not Available -Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{6FB5A46A-83C0-495F-9495-7365027603EA}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116565","Name":"Return of Import of Services without Input Tax Credit available from SEZ Vendor with cover of Bill of Entry ","NodeType":"Use Case","TableID":39,"CaseID":"{7DBFAC05-5315-4A5F-B5BE-962A065F7D93}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116566","Name":"Intra-State Purchase Return of Services from Registered Vendor when Input Tax Credit is Not Available Purchase Return Order/Credit Memo for FOC","NodeType":"Use Case","TableID":39,"CaseID":"{79A59A19-401F-444F-A3C4-F8CBBA06D4B0}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116567","Name":"Inter-State Purchase Return of Service to Registered Vendor where Input Tax Credit is Non-available through Purchase Return Orders/Purchase Credit Memo for FOC","NodeType":"Use Case","TableID":39,"CaseID":"{4B185DAB-793D-4C0A-A303-417A61AC9B96}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116600","Name":"End Type GL Account","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116601","Name":"Type Fixed Asset","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(4))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116602","Name":"Purchase Return of Imported Fixed Asset from Foreign Vendor where Input Tax Credit is Not Available","NodeType":"Use Case","TableID":39,"CaseID":"{21811F58-E56B-4A1B-B6DA-C9BD8EECC3AD}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116603","Name":"Inter-State Purchase Return of Fixed Asset to Registered Vendor where Input Tax Credit is not available through Purchase Return Order/ Credit Memo","NodeType":"Use Case","TableID":39,"CaseID":"{11784DD8-7EF0-42CF-9A18-401A9ABC6466}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116604","Name":"Intra State Purchase Return of Fixed Asset from Composite Vendor/Supplier of exempted (Non-Availment) goods with no GST Impact","NodeType":"Use Case","TableID":39,"CaseID":"{12EFA340-BD17-487B-A7CC-F23993B289CF}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116605","Name":"Inter State Purchase Return of Fixed Asset from Composite Vendor/Supplier of exempted goods(Non-Availment) with no GST Impact","NodeType":"Use Case","TableID":39,"CaseID":"{8E46C7A8-FFB5-40D2-8DBB-26E9FEDDF17D}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116606","Name":"Intra-State Purchase Return of Fixed Asset from Registered Vendor when Input Tax Credit is Not Available","NodeType":"Use Case","TableID":39,"CaseID":"{079237F7-FA64-40B5-8BE7-A92428550117}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116607","Name":"Intra-State Purchase Return of Fixed Asset to Unregistered Vendor when Input Tax Credit is Not Available through Purchase Return Order/ Credit Memo","NodeType":"Use Case","TableID":39,"CaseID":"{8EC585FC-1F0E-4A31-A28A-463F3239EB57}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116608","Name":"Inter-State Purchase Return of Fixed Asset to Unregistered Vendor where Input Tax Credit is not available through Purchase Return Order/ Credit Memo","NodeType":"Use Case","TableID":39,"CaseID":"{028465BA-B14C-4266-9D47-75A8087EE299}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116609","Name":"Inter-State Purchase Return of Fixed Asset to Registered Vendor where Input Tax Credit is not available with Bill To-Loc","NodeType":"Use Case","TableID":39,"CaseID":"{BFB5B4F3-BBC1-4A5B-9B7C-C3572578CD78}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116610","Name":"Inter-State Purchase Return of Fixed Asset from Unregistered Vendor when Input Tax Credit is Not Available With Bill To-Loc- Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{3A542488-E9A7-41E5-BF0B-C73F9C82A8DB}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116611","Name":"Intra-State Purchase Return of Fixed Asset to UnRegistered Vendor when Input Tax Credit is Not Available With Bill To-Loc Through Purchase Return Order/ Credit Memo - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{6A0A47A2-4A0F-4CCD-AC63-A70C76E05091}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116612","Name":"Intra-State Purchase Return of Fixed Asset from Registered Vendor when Input Tax Credit is Not Available for FOC","NodeType":"Use Case","TableID":39,"CaseID":"{7601E944-F060-482E-B620-CF8555D00BB9}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116613","Name":"Inter-State Purchase Return of Fixed Asset to Registered Vendor where Input Tax Credit is not available with Bill To-Loc for FOC","NodeType":"Use Case","TableID":39,"CaseID":"{BC63870D-585E-4C07-A6A6-44DE28F260BE}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116650","Name":"End Type Fixed Asset","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116661","Name":"Type Charge Item","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(5))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116662","Name":"Intra-State Purchase Return of Charge Item from Registered Vendor when Input Tax Credit is Not Available purchase return order/Credit memo","NodeType":"Use Case","TableID":39,"CaseID":"{2653A4AF-CD57-4A29-B4C2-4FE3749AC4AD}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116663","Name":"Inter-State Purchase Return of Charge Item to Registered Vendor when Input Tax Credit is Not Available through purchase return order/ Credit memo","NodeType":"Use Case","TableID":39,"CaseID":"{87FB95AD-905D-4832-9EC3-0330B674D601}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116664","Name":"Intra-State Purchase Return of Charge Item from Unregistered Vendor when Input Tax Credit is Not Available Through Purchase Return Order/ Credit Memo - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{1B728E5D-4A32-4E32-A2AA-FE3673AFC2CD}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116665","Name":"Inter-State Purchase Return of Charge Item to Unregistered Vendor when Input Tax Credit is not Available through purchase return order/ Credit memo","NodeType":"Use Case","TableID":39,"CaseID":"{79839F30-7F44-4411-BB2D-07FFA294A38D}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116666","Name":"Intra-State Purchase Return of Charge Item to Registered Vendor when Input Tax Credit is Not Available Through Purchase Return Order/ Credit Memo - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{7E781F55-9A83-4206-B18A-46C2CA5E8573}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116667","Name":"Inter-State Purchase Return of Charge Item from Registered Vendor where Input Tax Credit Not Available -Reverse Charge.","NodeType":"Use Case","TableID":39,"CaseID":"{4F6B53B9-9961-4F29-8151-33C5D413CF58}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116668","Name":"Inter-State Purchase Return of Charge Item to Registered Vendor where Input Tax Credit is not available with Bill To-Loc","NodeType":"Use Case","TableID":39,"CaseID":"{38F58D78-84D4-40D9-BE77-CD33C02B49AF}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116669","Name":"Inter-State Purchase Return of Charge Item from Unregistered Vendor when Input Tax Credit is Not Available With Bill To-Loc- Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{C85088E3-672F-4F2E-B1EF-19CBDFA5460B}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116670","Name":"Intra-State Purchase Return of Charge Item to UnRegistered Vendor when Input Tax Credit is Not Available With Bill To-Loc Through Purchase Return Order/ Credit Memo - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{E5053EEB-44D1-4552-8084-67D72A90CECB}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116675","Name":"End Type Charge Item","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116685","Name":"Type Resource","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116686","Name":"Inter-State Purchase Return of Resource from Registered Vendor when Input Tax Credit is Not Available Through Purchase Return Order/ Credit Memo - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{40E9E837-E785-42A1-B8ED-9B27D43D1FFC}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116687","Name":"Return of Import Resource without Input Tax Credit available from SEZ Vendor with cover of Bill of Entry.","NodeType":"Use Case","TableID":39,"CaseID":"{5C3AA147-EDD0-4271-9CB8-4A6F6C98962A}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116688","Name":"Inter-State Purchase Return of Resource from Unregistered Vendor when Input Tax Credit is Not Available Through Purchase Return Order/ Credit Memo.","NodeType":"Use Case","TableID":39,"CaseID":"{43D94D4C-82EA-4A44-B80F-E297292CAA10}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116689","Name":"Intra-State Purchase Return of Resources from Registered Vendor where Input Tax Credit Not Available -Reverse Charge.","NodeType":"Use Case","TableID":39,"CaseID":"{A170BEEF-350A-4B43-B333-CBEA1D197E1B}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116690","Name":"Purchase Credit Memo/Return Order for Resource where Input Tax Credit is not available.","NodeType":"Use Case","TableID":39,"CaseID":"{7C3076A9-460B-41BC-AED8-6B615E4835D2}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116691","Name":"Inter-State Purchase Return of Resource from Registered Vendor when Input Tax Credit is Not Available Through Purchase Return Order/ Credit Memo.","NodeType":"Use Case","TableID":39,"CaseID":"{545DC1C5-C848-43B9-BFCE-72C3A45C94BA}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116692","Name":"Intra-State Purchase Return of Resource from Registered Vendor where Input Tax Credit Not Available through Purchase Return Order/Credit Memo.","NodeType":"Use Case","TableID":39,"CaseID":"{7B096619-70FB-4622-9E57-8EAE58DC1AB1}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116693","Name":"Intra-State Purchase Return of Resource from Unregistered Vendor where Input Tax Credit Not Available through Purchase Return Order/Credit Memo.","NodeType":"Use Case","TableID":39,"CaseID":"{A2153C07-E791-4821-9542-F9C6C3737BAF}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116694","Name":"Intra-State Purchase Return of Resource from Registered Vendor where Input Tax Credit Not Available through Purchase Return Order/Credit Memo for FOC.","NodeType":"Use Case","TableID":39,"CaseID":"{8B9B630B-1AC7-49A1-BA60-3A415B97C2BC}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116695","Name":"Inter-State Purchase Return of Resource from Registered Vendor when Input Tax Credit is Not Available Through Purchase Return Order/ Credit Memo for FOC.","NodeType":"Use Case","TableID":39,"CaseID":"{4FD977C3-86DB-46A1-AEEF-A0A176F23BE1}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116697","Name":"End Type Resource","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116700","Name":"End GST Credit Non-Availment","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116701","Name":"Begin Type Resource","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(3))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116702","Name":"Inter State Purchase Return of Resource from Composite Vendor/Supplier with no GST Impact through Purchase Return Order/Credit Memo.","NodeType":"Use Case","TableID":39,"CaseID":"{F0453435-C2EF-43BB-BC81-39454E1DE4B9}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116703","Name":"Intra State Purchase Return of Resource from Composite Vendor/Supplier with no GST Impact through Purchase Credit Memo/Return order.","NodeType":"Use Case","TableID":39,"CaseID":"{28E2DDFD-2F63-47CB-986C-8E6F5D2356F3}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116715","Name":"End Type Resource","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116750","Name":"End Exempted No","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116751","Name":"Exempted","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18082=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116752","Name":"Intra State Purchase Return of Exempted Fixed Asset from Registered Vendor (Availment) with no GST Impact","NodeType":"Use Case","TableID":39,"CaseID":"{26260269-B2BE-4D01-AF43-91BCE15FFF05}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116753","Name":"Inter-State Purchase Return of Exempted Fixed Asset from Registered Vendor where Input Tax Credit is available","NodeType":"Use Case","TableID":39,"CaseID":"{8314CDF7-853B-4DEA-A6DF-CE478FB1D3BD}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116754","Name":"Intra State Purchase Return of Exempted Fixed Asset from Registered Vendor (Non-Availment) with no GST Impact","NodeType":"Use Case","TableID":39,"CaseID":"{739B3C04-8659-438B-B9D5-EB62435B9025}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116755","Name":"Inter-State Purchase Return of Exempted Fixed Asset from Registered Vendor where Input Tax Credit is not available","NodeType":"Use Case","TableID":39,"CaseID":"{43228213-4CEA-41C4-B28B-170B00BC81A8}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116756","Name":"Intra State Purchase Return of Service from Composite Vendor/Supplier of exempted goods with no GST Impact through Purchase Credit Memo/Return order","NodeType":"Use Case","TableID":39,"CaseID":"{5E1C6C44-CCBA-49ED-AD64-54D360467B0F}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116757","Name":"Intra-State Purchase Return of Goods from Registered Exempted Vendor when Input Tax Credit is Available Through Purchase Return Orders","NodeType":"Use Case","TableID":39,"CaseID":"{8FCF5988-06C7-44E2-A7BD-A5A9B40CDEF8}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116758","Name":"Inter-State Purchase Return of Goods from Registered Exempted Vendor when Input Tax Credit is Available","NodeType":"Use Case","TableID":39,"CaseID":"{67FECB97-A3FA-4FC9-8A80-E214C3DF4CA9}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116759","Name":"Inter State Purchase of Goods from Composite Vendor/Supplier of exempted goods with no GST Impact through Purchase Return Order/Credit Memo","NodeType":"Use Case","TableID":39,"CaseID":"{4F992CE7-BB8C-4129-923A-F53A771DF231}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116760","Name":"Intra State Purchase of Goods from Composite Vendor/Supplier of exempted goods with no GST Impact through Purchase Return Order/Credit Memo","NodeType":"Use Case","TableID":39,"CaseID":"{0371699B-6B05-4B16-99FB-604F142308AA}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116800","Name":"End Exempted","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116901","Name":"GST Reverse Charge -No","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18085=1(0))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116902","Name":"GST Credit-Availment","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18095=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116903","Name":"Type -GL Account","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116904","Name":"(POS) Intra-State Purchase Return of Services for Overseas Place of Supply from Registered Vendor where Input Tax Credit is available","NodeType":"Use Case","TableID":39,"CaseID":"{3F057D29-C926-453B-8B17-6B5E431A20B4}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116950","Name":"End Type -GL Account","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117000","Name":"End GST Credit-Availment","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117001","Name":"Begin Type Item","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(2))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117002","Name":"Inter State Purchase of Goods from Composite Vendor/Supplier with no GST Impact through Purchase Return Order/Credit Memo","NodeType":"Use Case","TableID":39,"CaseID":"{2BF5B2FE-2191-416D-B63F-47052716FC1B}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117003","Name":"Intra State Purchase of Goods from Composite Vendor/Supplier of exempted goods with no GST Impact through Purchase Return Order/Credit Memo with Bill To-Loc","NodeType":"Use Case","TableID":39,"CaseID":"{F759EFFB-61F9-4B84-B9CD-01E2616A7B85}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117004","Name":"Inter State Purchase of Goods from Composite Vendor/Supplier of exempted goods with no GST Impact through Purchase Return Order/Credit Memo With Bill To-Loc","NodeType":"Use Case","TableID":39,"CaseID":"{F023887D-C599-4FE6-89E7-49C257DC208C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117005","Name":"Intra State Purchase of Goods from Composite Vendor/Supplier with no GST Impact through Purchase Return Order/Credit Memo","NodeType":"Use Case","TableID":39,"CaseID":"{13352A4D-EEAB-4FEA-A778-0BDAD73B550C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117015","Name":"End Type Item","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117016","Name":"Begin Type - Charge Item","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(5))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117017","Name":"Inter State Purchase of Charge from Composite Vendor/Supplier of exempted goods with no GST Impact through Purchase Return Order/Credit Memo","NodeType":"Use Case","TableID":39,"CaseID":"{0CF4326B-FD68-4AE6-B52A-CD2AA2F2A788}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117020","Name":"End Type - Charge Item","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117021","Name":"Inter State Purchase of other types except good from Composite Vendor/Supplier of exempted not goods with no GST Impact through Purchase Return Order/Credit Memo With Bill To-Loc","NodeType":"Use Case","TableID":39,"CaseID":"{21E3248F-92C2-444C-B7E9-B48218AD918A}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117022","Name":"Intra State Purchase of other types from Composite Vendor/Supplier of exempted not goods with no GST Impact through Purchase Return Order/Credit Memo with Bill To-Loc","NodeType":"Use Case","TableID":39,"CaseID":"{1988B611-ABD4-44C4-9CB5-67BB88E0002C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117023","Name":"Inter State Purchase of Service from Composite Vendor/Supplier of exempted goods with no GST Impact through Purchase Return Order/Credit Memo","NodeType":"Use Case","TableID":39,"CaseID":"{BC9A772F-DBF9-4F4F-8607-212DC829C005}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117050","Name":"End GST Reverse Charge -No","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117051","Name":"GST Credit Non-Availment","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18095=1(2))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117052","Name":"Return of Import Fixed Asset from SEZ Vendor where Input Tax Credit is Not Available, with cover of Bill of Entry.","NodeType":"Use Case","TableID":39,"CaseID":"{047704F8-A619-401F-9653-12103103E14A}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117053","Name":"Purchase Credit Memo/Return Order for Imported Goods where Input Tax Credit is not available","NodeType":"Use Case","TableID":39,"CaseID":"{DA972CCF-D97D-4379-9704-AB397FA9E08F}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117054","Name":"Purchase Credit Memo/Return Order for Imported Services where Input Tax Credit is not available","NodeType":"Use Case","TableID":39,"CaseID":"{1005E09C-7F65-4E7A-AC0C-B071C455A412}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117055","Name":"(POS) Intra-State Return of Services for Overseas Place of Supply from Registered Vendor where Input Tax Credit is not available through Purchase Return Order/ Credit Memo","NodeType":"Use Case","TableID":39,"CaseID":"{8B6ADE91-D482-4071-B431-C299292EF2BF}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117056","Name":"Return of Import Fixed Asset from SEZ Vendor where Input Tax Credit is Not Available, without cover of Bill of Entry.","NodeType":"Use Case","TableID":39,"CaseID":"{B5C09EE0-1CF9-4818-AADB-AC5E95626AE9}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117057","Name":"Intra-State Purchase Return of Goods from Registered Vendor where Input Tax Credit is not available - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{0EBD8B25-3C27-46AE-8CD7-4E870DB1315B}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117058","Name":"Inter-State Purchase Return of Goods from Registered Vendor when Input Tax Credit is not Available Through Purchase Return Order/ Credit Memo - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{97437C0C-3E99-4D15-9378-34AC4B8FD002}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117100","Name":"End GST Credit Non-Availment","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117101","Name":"Begin Type G/L Account","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117102","Name":"Purchase Credit Memo/Return Order for Imported Services where Input Tax Credit is available","NodeType":"Use Case","TableID":39,"CaseID":"{AA1B2E3A-4149-4352-B081-2A869CDE5353}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117120","Name":"End Type G/L Account","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117121","Name":"Begin Type - Charge Item","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(5))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117122","Name":"Intra State Purchase of Charge Item from Composite Vendor/Supplier of exempted goods with no GST Impact through Purchase Return Order/Credit Memo","NodeType":"Use Case","TableID":39,"CaseID":"{55B6317F-25F3-4C73-8AA5-AFA3EC519C88}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117125","Name":"End Type - Charge Item","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117150","Name":"End Purchase Return Document","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117200","Name":"End Purchase","NodeType":"End","TableID":0,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117201","Name":"Payment","NodeType":"Begin","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field51,Field2) WHERE(Field18543=1(<>''),Field18001=1(<>''),Field18009=1(<>''))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117202","Name":"Account Type-Customer","NodeType":"Begin","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field51,Field2) WHERE(Field3=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117203","Name":"Document Type- Invoice","NodeType":"Begin","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field51,Field2) WHERE(Field6=1(2))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117204","Name":"GST Customer Type- Registered","NodeType":"Begin","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field51,Field2) WHERE(Field18007=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117205","Name":"Intra-State Sales of Goods to Registered Customer through Sales Journal/Journal/General Journal.","NodeType":"Use Case","TableID":81,"CaseID":"{3335E143-1F90-4E63-B6E7-5A4897019FFA}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117206","Name":"Inter-State Sales of Goods to Registered Customer through Sales Journal/Journal/General Journal.","NodeType":"Use Case","TableID":81,"CaseID":"{38C5A554-206D-44A5-9090-86CAC52A7715}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117207","Name":"Intra-State Sales of Service to Registered Customer through Sales Journal/Journal/General Journal - Kerala Cess","NodeType":"Use Case","TableID":81,"CaseID":"{C89845E0-C8B1-45B1-9C1B-04EC264B7AC7}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117208","Name":"Intra-State Sales of Service to Registered Customer through Sales Journal/Journal/General Journal.","NodeType":"Use Case","TableID":81,"CaseID":"{BBD37D0A-E328-4544-B5E1-03FCF65399D5}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117209","Name":"Inter-State Sales of Services to Registered or Unregistered Customer through Sales Journal/Journal/General Journal.","NodeType":"Use Case","TableID":81,"CaseID":"{CF221DCD-487C-4B3C-BBC4-FE16B6667E76}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117210","Name":"Intra-State Sales of Exempted Service to Registered Customer through Sales Journal/General Journal.","NodeType":"Use Case","TableID":81,"CaseID":"{B0D75B5B-C42D-4381-80D8-B312BD2360AE}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117250","Name":"End GST Customer type- Registered","NodeType":"End","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117251","Name":"GST Customer Type- Others","NodeType":"Begin","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field51,Field2) WHERE(Field18007=1(2|3|4|5|6|7))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117252","Name":"Inter-State Sales of Service to UnRegistered Customer through Sales Journal/Journal/General Journal.","NodeType":"Use Case","TableID":81,"CaseID":"{F56F247A-8E36-496E-8672-C6FE2C81CE7B}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117253","Name":"Intra-State Sales of Service to UnRegistered Customer through Sales Journal/Journal/General Journal.","NodeType":"Use Case","TableID":81,"CaseID":"{F719A304-09CF-479B-A123-2A4E34ED3133}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117254","Name":"Export Sales of Service to Export Customer through Sales Journal/Journal/General Journal.","NodeType":"Use Case","TableID":81,"CaseID":"{F807C5DC-40B1-4E22-AB49-06BC54A22558}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117255","Name":"IntraState - Export Sales of Service to Deemed Customer through Sales Journal/Journal/General Journal.","NodeType":"Use Case","TableID":81,"CaseID":"{005ED1ED-F66A-4A08-8647-0554154F0DF2}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117256","Name":"Export Sales of Service to SEZ Development Customer with payment of duty through Sales Journal/Journal/General Journal.","NodeType":"Use Case","TableID":81,"CaseID":"{3DC33AD0-69AB-4B36-B58D-7C409957507C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117257","Name":"Export of Service to SEZ Customer through Sales Journal/Journal/General Journal.","NodeType":"Use Case","TableID":81,"CaseID":"{6F745F19-1955-4DAA-A3C4-BAC6D6326232}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117258","Name":"Inter State - Export Sales of Service to Deemed Customer through Sales Journal/Journal/General Journal.","NodeType":"Use Case","TableID":81,"CaseID":"{FCB154BF-A72A-43A0-87AB-DF80DEAB4F1C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117300","Name":"End GST Customer Type- Others","NodeType":"End","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117350","Name":"End Document Type- Invoice","NodeType":"End","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117351","Name":"Document Type- Credit Memo","NodeType":"Begin","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field51,Field2) WHERE(Field6=1(3))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117352","Name":"Inter-State Sales Return of Service to UnRegistered Customer through Sales Journal/Journal/General Journal.","NodeType":"Use Case","TableID":81,"CaseID":"{CCF41113-DC62-47E2-B45B-87AF0248AF65}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117353","Name":"Inter-State Sales Return of Goods to Registered or Unregistered Customer through Sales Journal/Journal/General Journal.","NodeType":"Use Case","TableID":81,"CaseID":"{674E08E2-EB2A-4C3D-924B-9370C6ED3DBF}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117354","Name":"Intra-State Sales Return of Service to Registered or Unregistered Customer through Sales Journal/Journal/General Journal.","NodeType":"Use Case","TableID":81,"CaseID":"{6C9258C7-AF9C-43E4-A015-C4253265F37E}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117355","Name":"Intra-State Sales Return of Service to Registered or Unregistered Customer through Sales Journal/Journal/General Journal.","NodeType":"Use Case","TableID":81,"CaseID":"{6C9258C7-AF9C-43E4-A015-C4253265F37E}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117356","Name":"(POS) Intra-State Sales Return/Credit Note of Services for Overseas Place of Supply from Registered Customer through Sales Journal/General Journal.","NodeType":"Use Case","TableID":81,"CaseID":"{DF8067FF-2F97-485F-8364-3AC5536AD82D}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117357","Name":"Export Sales Return of Service to Export Customer through Sales Journal/Journal/General Journal.","NodeType":"Use Case","TableID":81,"CaseID":"{B8EE2ED8-F29F-465D-B6DC-A3A2A4BB1B3D}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117358","Name":"Intra-State Sales Return of Service from Deemed Export Customer through Sales Journal/General Journal.","NodeType":"Use Case","TableID":81,"CaseID":"{4BFBD63E-F561-4C68-AB29-BF4139D24F49}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117359","Name":"InterState Sales Return of Service to SEZ Development Customer with payment of duty through Sales Journal/Journal.","NodeType":"Use Case","TableID":81,"CaseID":"{68AE0437-E71F-4AC5-8729-DDD40410D69D}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117360","Name":"Sales Return of Service to SEZ Unit Customer with payment of duty through Sales Journal/Journal.","NodeType":"Use Case","TableID":81,"CaseID":"{960BC8FC-FF34-4E46-A6A0-6FD2CB7BBDA2}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117361","Name":"Inter State - Export Sales Return of Service to Deemed Customer through Sales Journal/General Journal.","NodeType":"Use Case","TableID":81,"CaseID":"{FFBBBCDE-50F5-4D02-8B40-DAD63ED1491E}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117362","Name":"Intra-State Sales Return of Goods to Registered Customer through Sales Journal/Journal/General Journal.","NodeType":"Use Case","TableID":81,"CaseID":"{DF783FC9-39C3-492B-B94F-90BCF26C04E5}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117363","Name":"Inter-State Sales Return of Service to Registered Customer through Sales Journal/Journal/General Journal.","NodeType":"Use Case","TableID":81,"CaseID":"{4E1D5479-C527-4295-A0C1-7D82D94860F6}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117400","Name":"End Document Type- Credit Memo","NodeType":"End","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117401","Name":"Document Type- Payment","NodeType":"Begin","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field51,Field2) WHERE(Field6=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117402","Name":"Inter-State GST on Advance Payment Received From Customer","NodeType":"Use Case","TableID":81,"CaseID":"{287ED69D-1488-4A48-BA50-E063EC8EF915}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117403","Name":"Intra-State GST on Advance Payment Received From Customer","NodeType":"Use Case","TableID":81,"CaseID":"{18F45902-76C4-4B57-AF7F-7D9B3A76D51F}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117404","Name":"Export of Goods and Services to SEZ Development, through Sales Journal/Journal/General Journal With Payment of Duty.","NodeType":"Use Case","TableID":81,"CaseID":"{0B9F94CE-1C82-4FF7-9EF7-D51E156A0286}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117405","Name":"Export of Goods and Services to Foreign Customer through Sales Journal/Journal/General Journal Without Payment of Duty.","NodeType":"Use Case","TableID":81,"CaseID":"{2E85F2F7-2ED8-42CC-95F5-B20D32DB41AC}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117406","Name":"GST Deemed Exports through Sales Journal/Journal/General Journal.","NodeType":"Use Case","TableID":81,"CaseID":"{AE574FA3-E537-4FC1-9F8D-E16EF5D7A40E}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117407","Name":"Export of Goods and Services to SEZ Unit through Sales Journal/Journal/General Journal Without Payment of Duty.","NodeType":"Use Case","TableID":81,"CaseID":"{B7D173ED-4B8F-4F13-95B8-B7C4890B3623}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117408","Name":"Export of Goods and Services to SEZ Unit through Sales Journal/Journal/General Journal With Payment of Duty.","NodeType":"Use Case","TableID":81,"CaseID":"{B8ACD224-FC70-4037-86AD-C18AA5DA085F}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117409","Name":"Export of Goods and Services to SEZ Development through Sales Journal/Journal/General Journal Without Payment of Duty.","NodeType":"Use Case","TableID":81,"CaseID":"{C9CE4C92-F6CD-4B97-BD13-D8EE824D7D66}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117410","Name":"Export of Goods and Services to Foreign Customer through Sales Journal/Journal/General Journal With Payment of Duty.","NodeType":"Use Case","TableID":81,"CaseID":"{DAC31111-29F4-4C8F-BEEC-C3B31668DAF8}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117450","Name":"End Document Type-Payment","NodeType":"End","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117451","Name":"Document Type-Refund","NodeType":"Begin","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field51,Field2) WHERE(Field6=1(6))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117453","Name":"Intra-State GST Refund on Advance Payment Received From Customer","NodeType":"Use Case","TableID":81,"CaseID":"{0628D305-F863-48E9-986E-0570995F7002}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117454","Name":"Inter-State GST Refund on Advance Payment Received From Customer","NodeType":"Use Case","TableID":81,"CaseID":"{F643A772-5CA6-4CC5-913C-9188C52DF8E0}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117499","Name":"End Document Type-Refund","NodeType":"End","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117500","Name":"End Account Type- Customer","NodeType":"End","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117501","Name":"Account Type-Vendor","NodeType":"Begin","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field51,Field2) WHERE(Field3=1(2))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117502","Name":"Document Type- Invoice","NodeType":"Begin","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field51,Field2) WHERE(Field6=1(2))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117503","Name":"GST Credit -Availment","NodeType":"Begin","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field51,Field2) WHERE(Field18033=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117504","Name":"GST Reverse Charge -Yes","NodeType":"Begin","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field51,Field2) WHERE(Field18023=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117505","Name":"Intra-State/Intra-Union Territory Purchase of Service from Unregistered Vendor where Input Tax Credit is available through Purchase Journal/Journal/General Journal - Reverse Charge","NodeType":"Use Case","TableID":81,"CaseID":"{3C23CDAC-6995-4B6C-9E4B-708B540C413B}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117506","Name":"Inter-State Purchase of Service from Registered Vendor where Input Tax Credit is available through Purchase Journal/Journal/General Journal - Reverse Charge","NodeType":"Use Case","TableID":81,"CaseID":"{744B47C3-E4C1-4AC4-A37E-CBA3102A59A1}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117507","Name":"Purchase of Services from SEZ Vendor where Input Tax Credit is available through Purchase Journal/Journal/General Journal - Reverse Charge","NodeType":"Use Case","TableID":81,"CaseID":"{7E182C87-669C-4CD8-8336-41C2ABE6144C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117508","Name":"Intra-State/Intra-Union Territory Purchase of Service from Registered Vendor where Input Tax Credit is available through Purchase Journal/Journal/General Journal - Reverse Charge","NodeType":"Use Case","TableID":81,"CaseID":"{B8F32E0D-5D5E-4B84-AE3A-C0D4520470D3}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117509","Name":"Inter-State Purchase of Services from Unregistered/Registered Vendor where Input Tax Credit is available (Reverse Charge) through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{819CADCF-BE64-4BC6-93BA-59EDE239EB54}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117511","Name":"Interstate GST Calculation on Reverse Charge Exempt Transactions through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{25E8E204-2E63-4B79-824C-3C1185D6467C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117513","Name":"Intrastate GST Calculation on Reverse Charge Exempt Transactions through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{DF134523-53D1-4137-B091-D9C5E1DB8D64}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117550","Name":"End GST Reverse Charge -Yes","NodeType":"End","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117551","Name":"Begin Vendor Type - Composite","NodeType":"Begin","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field51,Field2) WHERE(Field18008=1(2))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117552","Name":"Inter-State Purchase of Service from Composite Vendor where Input Tax Credit is available through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{F3CD2FC6-4CEE-47EF-B0F5-9EB3E46CE74B}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117553","Name":"Intra-State/Intra-Union Territory Purchase of Service from Composite Vendor where Input Tax Credit is available through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{B68BAE5C-F887-46E8-9B4C-7333EB6152E0}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117558","Name":"End Vendor Type - Composite","NodeType":"End","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117571","Name":"Begin Vendor type - Registered","NodeType":"Begin","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field51,Field2) WHERE(Field18008=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117572","Name":"Intra-State/Intra-Union Territory Purchase of Goods from Registered Vendor where Input Tax Credit is available through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{66A65EDD-B06A-4817-84C4-B61B035AC7EE}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117573","Name":"Inter-State Purchase of Goods from Registered Vendor where Input Tax Credit is available through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{C2FE3376-EDB2-4C3E-A82D-F49D27D292DE}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117574","Name":"Inter-State Purchase of Service from Registered Vendor where Input Tax Credit is available through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{36017702-208F-4E8C-A75E-8872EA7D1205}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117575","Name":"Intra-State/Intra-Union Territory Purchase of Service from Registered Vendor where Input Tax Credit is available through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{26B7CC70-0C7D-4FD2-B00A-B7845C289215}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117576","Name":"Inter-State Purchase of Service from Registered Vendor where Input Tax Credit is available through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{02670909-9C35-49DA-B64F-E5EA4602693E}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117577","Name":"ISD-Inter-State Purchase of Service from Registered Vendor where Input Tax Credit is available through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{FA492219-9C2F-4986-B773-DAA35CA74796}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117578","Name":"ISD - Intra-State/Intra-Union Territory Purchase of Service from Registered Vendor where Input Tax Credit is available through Purchase Journal/Journal/General Journal ","NodeType":"Use Case","TableID":81,"CaseID":"{E73369B2-7A52-46D6-909F-BA116399AF39}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117579","Name":"ISD - Intra-State/Intra-Union Territory Purchase of Service from Registered Vendor where Input Tax Credit is available through Purchase Journal/Journal/General Journal ","NodeType":"Use Case","TableID":81,"CaseID":"{E73369B2-7A52-46D6-909F-BA116399AF39}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117580","Name":"(POS) Intra-State Sales of Services for Overseas Place of Supply from Registered Customer through Sales Journal/General Journal.","NodeType":"Use Case","TableID":81,"CaseID":"{5DAE448C-0BD5-4DC3-9BF9-B846921D2C71}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117581","Name":"(POS) Intra-State Purchase of Services for Overseas Place of Supply from Registered Vendor where Input Tax Credit is available through Purchase Journal/General Journal.","NodeType":"Use Case","TableID":81,"CaseID":"{2341D31D-659B-4C70-B0FD-20C4494A4F1F}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117585","Name":"End Vendor type - Registered","NodeType":"End","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117586","Name":"Begin Vendor type - Import","NodeType":"Begin","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field51,Field2) WHERE(Field18008=1(4))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117587","Name":"Import of Services from Import Associate Vendor where Input Tax Credit is available through Purchase Journal/Journal/General Journal-","NodeType":"Use Case","TableID":81,"CaseID":"{F6DED4E3-7405-4E6E-B0DF-1320041F130A}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117588","Name":"Import of Purchase of Service from Import Vendor where Input Tax Credit is available through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{B4662B2E-9E63-4BA7-A683-248E5811B566}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117589","Name":"Import of Goods from Foreign Vendor where Input Tax Credit is available through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{6D031AA1-2009-4D4A-A8E7-01D9116EDC5C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117592","Name":"End Vendor type - Import","NodeType":"End","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117593","Name":"Begin Vendor Type- SEZ","NodeType":"Begin","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field51,Field2) WHERE(Field18008=1(6))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117594","Name":"SEZ of Purchase of Service from SEZ Vendor where Input Tax Credit is available through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{AB179237-EF7C-4BB1-9406-46B7B6DD1449}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117599","Name":"End Vendor Type-SEZ","NodeType":"End","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117600","Name":"End GST Credit-Availment","NodeType":"End","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117601","Name":"GST Credit- Non Availment","NodeType":"Begin","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field51,Field2) WHERE(Field18033=1(2))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117602","Name":"GST Reverse Charge-Yes","NodeType":"Begin","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field51,Field2) WHERE(Field18023=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117603","Name":"Intra-State/Intra-Union Territory Purchase of Service from UnRegistered Vendor where Input Tax Credit is Not available through Purchase Journal/Journal/General Journal - Reverse Charge","NodeType":"Use Case","TableID":81,"CaseID":"{4CB6ACCD-BD47-4485-A757-62924EA09524}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117604","Name":"Purchase of Services from SEZ Vendor where Input Tax Credit is Not available through Purchase Journal/Journal/General Journal - Reverse Charge","NodeType":"Use Case","TableID":81,"CaseID":"{B2CD61FA-9C30-4FE5-B5C5-5B535BA6DF96}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117605","Name":"Intra-State/Intra-Union Territory Purchase of Service from Registered Vendor where Input Tax Credit is Not available through Purchase Journal/Journal/General Journal - Reverse Charge","NodeType":"Use Case","TableID":81,"CaseID":"{4D9AEA2D-B94B-40CC-B9D9-BC8D6FA19425}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117606","Name":"Inter-State Purchase of Service from Registered Vendor where Input Tax Credit is Not available through Purchase Journal/Journal/General Journal - Reverse Charge","NodeType":"Use Case","TableID":81,"CaseID":"{580975ED-52DE-4EF9-BD94-99425C52B570}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117607","Name":"Intra-State Purchase of Services from Unregistered/Registered Vendor where Input Tax Credit is not available (Reverse Charge) through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{0751F148-5E1D-4EFB-9008-ECB2F2F6704D}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117608","Name":"Inter-State Purchase of Services from Unregistered/Registered Vendor where Input Tax Credit is not available (Reverse Charge) through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{4D947EDC-3710-49D2-91D5-6446978D43EC}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117650","Name":"End GST Reverse Charge -Yes","NodeType":"End","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117651","Name":"GST Input Service Distribution -Yes","NodeType":"Begin","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field51,Field2) WHERE(Field18022=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117652","Name":"ISD - Intra-State/Intra-Union Territory Purchase of Service from Registered Vendor where Input Tax Credit is Not available through Purchase Journal/Journal/General Journal ","NodeType":"Use Case","TableID":81,"CaseID":"{9639222B-DFA8-4F14-9A72-24E994C1C7DA}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117653","Name":"ISD-Inter-State Purchase of Service from Registered Vendor where Input Tax Credit is Not available through Purchase Journal/Journal/General Journal ","NodeType":"Use Case","TableID":81,"CaseID":"{19FC1701-0FE4-4ED3-83B8-07DAB075A043}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117700","Name":"End GST Input Service Distribution -Yes","NodeType":"End","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117701","Name":"GST Input Service Distribution -No","NodeType":"Begin","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field51,Field2) WHERE(Field18022=1(0))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117702","Name":"Intra-State/Intra-Union Territory Purchase of Service from Registered Vendor where Input Tax Credit is Not available through Purchase Journal/Journal/General Journal ","NodeType":"Use Case","TableID":81,"CaseID":"{E530DADD-215F-47FF-8A84-46A1E62353CF}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117703","Name":"Inter-State Purchase of Service from Registered Vendor where Input Tax Credit is Not available through Purchase Journal/Journal/General Journal ","NodeType":"Use Case","TableID":81,"CaseID":"{5305AA1D-CF40-43CC-B9E3-B9471E33DCB3}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117750","Name":"End GST Input Service Distribution -No","NodeType":"End","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117751","Name":"Begin Vendor Type - Import","NodeType":"Begin","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field51,Field2) WHERE(Field18008=1(4))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117752","Name":"Import of Services from Foreign Vendor where Input Tax Credit is not available through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{774A6E80-FBB4-4413-9144-6ACA8C6546D2}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117753","Name":"Import of Goods from Foreign Vendor where Input Tax Credit is Not available through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{9236A009-169D-4464-8B2C-62C94B782C26}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117754","Name":"Import of Services from Associate Vendor where Input Tax Credit is not available through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{54CB1855-9AD0-4A47-9777-D811C7FA1FDE}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117759","Name":"End Vendor Type - Import","NodeType":"End","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117760","Name":"Begin Vendor Type - Unregistered","NodeType":"Begin","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field51,Field2) WHERE(Field18008=1(3))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117761","Name":"IGST on Transportation of Goods through Purchase Journal/Journal/General Journal for Unregistered Vendor with Non-Availment.","NodeType":"Use Case","TableID":81,"CaseID":"{26ED31B0-75B8-439C-8E16-56518665184F}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117764","Name":"End Vendor Type - Unregistered","NodeType":"End","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117765","Name":"Begin Vendor Type - Registered","NodeType":"Begin","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field51,Field2) WHERE(Field18008=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117766","Name":"Intra-State/ Intra-Union Territory Purchase of Service from Registered Vendor where Input Tax Credit is not available through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{15E17CFF-8262-4E83-8FD4-3EC012EEA465}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117767","Name":"Inter-State Purchase of Goods from Registered Vendor where Input Tax Credit is not available through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{A734B9DD-A4C1-427E-AF18-6A8B27474F50}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117768","Name":"Inter-State Purchase of Service from Registered Vendor where Input Tax Credit is not available through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{DA8551C9-79B9-423C-801E-A8C868788300}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117769","Name":"Intra-State/ Intra-Union Territory Purchase of Goods from Registered Vendor where Input Tax Credit is not available through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{547DDC98-8D3C-46A0-84BE-03E71BA135DA}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117770","Name":"(POS) Intra-State Purchase of Services for Overseas Place of Supply from Registered Vendor where Input Tax Credit is not available through Purchase Journal/General Journal.","NodeType":"Use Case","TableID":81,"CaseID":"{997C3EE3-8453-43F1-A179-A32B19EFD8B8}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117771","Name":"IGST on Transportation of Goods through Purchase Journal/Journal/General Journal for Registered Vendor with Non-Availment.","NodeType":"Use Case","TableID":81,"CaseID":"{4A025601-FF3D-4BA6-A567-0C31785D0D36}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117772","Name":"Place of supply as Vendors State in Purchase Transactions through Purchase Journal/Journal/General Journal.","NodeType":"Use Case","TableID":81,"CaseID":"{7ABC67E5-F6F0-4ECB-9634-55258429DFD8}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117780","Name":"End Vendor Type - Registered","NodeType":"End","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117781","Name":"Begin Vendor Type-SEZ","NodeType":"Begin","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field51,Field2) WHERE(Field18008=1(6))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117782","Name":"SEZ of Services from SEZ Vendor where Input Tax Credit is not available through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{8DF66C94-890C-4007-9341-18D0565000FE}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117799","Name":"End Vendor Type- SEZ","NodeType":"End","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117800","Name":"End GST Credit -Non Availment","NodeType":"End","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117850","Name":"End Document Type-Invoice","NodeType":"End","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117851","Name":"Document Type-Credit Memo","NodeType":"Begin","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field51,Field2) WHERE(Field6=1(3))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117852","Name":"GST Credit -Availment","NodeType":"Begin","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field51,Field2) WHERE(Field18033=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117853","Name":"Purchase return of Imported Goods where Input Tax Credit is available through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{7B91DD35-F410-4971-A2BC-DBCB67520105}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117854","Name":"Inter-State Purchase Return of Service from Registered Vendor where Input Tax Credit is available through Purchase Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{BBBBD283-C64C-4AFE-A14E-950791E18CF8}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117856","Name":"Inter-State Purchase Return of Goods to Registered Vendor where Input Tax Credit is available through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{9DFF9CBE-B1A5-4D28-A855-8783315A87D0}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117857","Name":"Intra-State/ Intra-Union Territory Purchase Return of Goods to Registered Vendor where Input Tax Credit is available through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{85D7B57B-6657-4C5B-889D-282A48B9D0FB}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117858","Name":"Purchase Credit Memo/Return Order for Imported Services where Input Tax Credit is available through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{C97F63C3-79EB-44D6-8AEA-B1710A9BBCE9}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117859","Name":"Purchase Credit Memo/Return Order for Imported Services from Import Associate Vendor where Input Tax Credit is available through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{D0EADC0B-CBC1-4E07-8ADF-5AE168893B04}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117860","Name":"Intra-State Purchase Return of Service from Unregistered Vendor where Input Tax Credit is available through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{789CE492-C2BE-4EEC-8E98-740310FDD0E3}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117861","Name":"Inter-State Purchase Return of Service from Registered Vendor where Input Tax Credit is available through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{0AAD1908-46DC-4370-8A8D-77096D9B30B0}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117862","Name":"Intra-State Purchase Return of Service from Registered Vendor where Input Tax Credit is available through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{F857355F-9134-460C-89C8-FB0845206988}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117863","Name":"Inter-State Purchase Return of Service from Registered Vendor where Input Tax Credit is available through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{0AAD1908-46DC-4370-8A8D-77096D9B30B0}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117864","Name":"Inter-State Purchase Return of Services to Registered Vendor where Input Tax Credit is available (Reverse Charge) through Purchase Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{DA389E3B-A6C3-4DE1-9843-807B2161B9DE}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117865","Name":"ISD-Inter-State Purchase Return of Service from Registered Vendor where Input Tax Credit is available through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{812E9032-CA16-4FAB-A80B-94CD7BC5EB8D}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117866","Name":"(POS) Intra-State Return/Credit Note of Services for Overseas Place of Supply from Registered Vendor where Input Tax Credit is available through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{F9A5047E-5B27-41E4-AF68-9497E3B52FAE}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117867","Name":"Inter-State Purchase Return of Service from Unregistered Vendor where Input Tax Credit is available through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{B5A9628F-46F5-48C4-9CC0-09CBAE26D7EE}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117868","Name":"Intra-State Purchase Return from Composite Vendor where Input Tax Credit is available through Purchase Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{AFA9BC82-6757-44E3-B5E4-00029DACDA64}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117869","Name":"Intra-State Purchase Return of Services from SEZ Vendor where Input Tax Credit is available through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{B053F5FC-CD93-4EA7-AC71-1590E006FAAE}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117870","Name":"Intra-State Return of Services to Registered/ Unregistered Vendor where Input Tax Credit is available through Purchase Journal/General Journal (Reverse Charge)","NodeType":"Use Case","TableID":81,"CaseID":"{4C68E757-379A-4FD3-A58A-91F57954A9FC}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117871","Name":"ISD - Intra-State/Intra-Union Territory Purchase Return of Service from Registered Vendor where Input Tax Credit is available through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{783D79C8-B103-439F-9F75-9CB53B347C73}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117900","Name":"End GST Credit- Availment","NodeType":"End","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117901","Name":"GST Credit Non-Availment","NodeType":"Begin","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field51,Field2) WHERE(Field18033=1(2))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117902","Name":"Inter-State Purchase Return of Goods to Registered Vendor where Input Tax Credit is Not available through Purchase Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{CB0F4A5D-EE91-402C-AA30-C8B724D7DCC5}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117903","Name":"Intra-State/ Intra-Union Territory Return of Goods from Registered Vendor where Input Tax Credit is not available through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{8E0D2716-6C6D-4CDF-863F-1E043223D7DF}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117905","Name":"Inter-State Purchase Return of Service to Registered Vendor where Input Tax Credit is not available through Purchase Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{F6932043-6A5A-4F55-B06A-DD7F76AFB52B}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117906","Name":"Purchase return of Imported Goods where Input Tax Credit is Not available through Purchase Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{8503C963-7C87-45CD-8543-607AE516F9F8}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117907","Name":"Purchase Credit Memo for Imported Services where Input Tax Credit is not available through Purchase Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{A6239FAB-E9D2-4FFC-90CC-A5D7858C4CD8}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117908","Name":"Purchase Credit Memo/Return Order for Imported Services from Import Associate Vendor where Input Tax Credit is Not available through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{CF175943-0F1A-4814-BF17-756FB88F497C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117909","Name":"Inter-State Purchase Return of Services to Unregistered Vendor where Input Tax Credit is not available (Reverse Charge) through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{0C04EF8F-6F19-4C41-928B-9F32605898A8}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117910","Name":"ISD - Intra-State/Intra-Union Territory Purchase Return of Service from Registered Vendor where Input Tax Credit is Not available through Purchase Journal/Journal/General Journal ","NodeType":"Use Case","TableID":81,"CaseID":"{00B59093-4DB8-4152-99DB-7F9368A143A8}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117911","Name":"(POS) Intra-State Return/Credit Note of Services for Overseas Place of Supply from Registered Vendor where Input Tax Credit is not available through Purchase Journal/Journal/General Journal.","NodeType":"Use Case","TableID":81,"CaseID":"{75C41C76-22FC-479E-836E-E9C838FF3320}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117912","Name":"Inter-State Purchase Return of Services to Registered Vendor where Input Tax Credit is not available (Reverse Charge) through Purchase Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{AE2974C0-8A1D-4821-8999-7617690C41FC}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117913","Name":"Intra-State Return of Services to Registered/Unregistered Vendor where Input Tax Credit is not available through Purchase Journal and General Journal (Reverse charge)","NodeType":"Use Case","TableID":81,"CaseID":"{56D375F9-6B43-4460-B0F6-CAB18F44DE92}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117914","Name":"Intra-State Purchase Return of Service from Registered Vendor where Input Tax Credit is Not available through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{62275F50-6F85-4EA6-AA4F-0BACF20CF65E}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117950","Name":"End GST Credit Non-Availment","NodeType":"End","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118000","Name":"End Document Type-Credit Memo","NodeType":"End","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118001","Name":"Document Type-Payment","NodeType":"Begin","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field51,Field2) WHERE(Field6=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118002","Name":"GST on Advance for Import Payment.","NodeType":"Use Case","TableID":81,"CaseID":"{7859624E-8AFD-4A64-B361-900053C11266}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118003","Name":"GST on Advance payment from SEZ Vendor.","NodeType":"Use Case","TableID":81,"CaseID":"{041E1938-9B6A-4173-937C-FF0FDC0E7309}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118004","Name":"Inter State GST on Advance Payment made to Registered/Unregistered Vendor.","NodeType":"Use Case","TableID":81,"CaseID":"{E411752D-2CC4-4CD4-9D35-1AE651319762}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118005","Name":"Intra State GST on Advance Payment made to Registered/Unregistered Vendor.","NodeType":"Use Case","TableID":81,"CaseID":"{0686E40E-9643-42C8-B4D1-7587447E98E0}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118006","Name":"GST on Advance Payment made to Vendor through General Journal.","NodeType":"Use Case","TableID":81,"CaseID":"{C60D4ED2-E3FC-41BC-BB8D-F1B521984712}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118050","Name":"End Document Type-Payment","NodeType":"End","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118080","Name":"End Account Type- Vendor","NodeType":"End","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118090","Name":"GST Credit","NodeType":"Begin","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field51,Field2) WHERE(Field3=1(0),Field18014=1(4|5|6|7))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118091","Name":"GST Opening Liability IGST","NodeType":"Use Case","TableID":81,"CaseID":"{BE4AF8DF-BB6D-432C-B598-B7B481D8D826}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118092","Name":"GST Opening Liability CGST","NodeType":"Use Case","TableID":81,"CaseID":"{5B85FA47-8603-4A7F-9B76-4A5AD999CA81}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118093","Name":"GST Opening TDS Credit - CGST","NodeType":"Use Case","TableID":81,"CaseID":"{7FD02BAE-DA8D-4100-962E-6A8F7FDE823C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118094","Name":"GST Opening TDS Credit - IGST","NodeType":"Use Case","TableID":81,"CaseID":"{09E58D68-C9B5-4A27-B4FE-3BCA8B383E14}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118095","Name":"GST Opening TDS Credit - SGST","NodeType":"Use Case","TableID":81,"CaseID":"{851F544F-7349-4E29-AF19-A0B3B72AB0AC}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118096","Name":"GST Opening TCS Credit - CGST","NodeType":"Use Case","TableID":81,"CaseID":"{AF9D718A-2832-4D92-A195-4D7DD81E2029}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118097","Name":"GST Opening TCS Credit - IGST","NodeType":"Use Case","TableID":81,"CaseID":"{33896D17-0F26-4376-8304-7BA20BE4E6D4}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118098","Name":"GST Opening TCS Credit - SGST","NodeType":"Use Case","TableID":81,"CaseID":"{36207D8F-34B2-4AF3-83EC-96642DA44DFB}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118103","Name":"GST Opening IGST","NodeType":"Use Case","TableID":81,"CaseID":"{325D0E84-286F-437E-BFE1-EBB6F575AD39}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118104","Name":"GST Opening CGST","NodeType":"Use Case","TableID":81,"CaseID":"{34A74D02-F64A-4329-B0B3-B20E07D5A79A}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118105","Name":"GST Opening SGST","NodeType":"Use Case","TableID":81,"CaseID":"{BBA0DF22-691B-46EB-8500-8B270596F2E9}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118106","Name":"GST Opening Liability SGST","NodeType":"Use Case","TableID":81,"CaseID":"{97CF7642-AB0E-4686-A5CE-3D7C7C641E7E}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118108","Name":"Account Type - G/L * Tax Type End","NodeType":"End","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118110","Name":"Account Type - G/L Account","NodeType":"Begin","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field51,Field2) WHERE(Field3=1(0))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118111","Name":"Intra-state purchase of services where Services is paid directly and service provider is registered and GST Credit is Not Available on Purchase Journal and Gen. Journal.","NodeType":"Use Case","TableID":81,"CaseID":"{77160361-37A9-43BD-A71B-BFA6853D1CFB}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118112","Name":"Inter-state purchase of services where Services is paid directly and service provider is registered and GST Credit is Not Available on Purchase Journal and Gen. Journals","NodeType":"Use Case","TableID":81,"CaseID":"{869FF9BE-3EA8-424B-973E-E27D6E370807}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118113","Name":"Intra-state purchase of services where Services is paid directly through bank and service provider is registered and GST Credit is Available on Purchase Journal and Gen. Journal.","NodeType":"Use Case","TableID":81,"CaseID":"{2D1A7414-2844-4128-B026-CA683BCEA058}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118114","Name":"Inter-state purchase of services where Services is paid directly through bank and service provider is registered and GST Credit is Available on Purchase Journal and Gen. Journal.","NodeType":"Use Case","TableID":81,"CaseID":"{5265955A-2DE6-49CD-AFBE-D314E2D049FB}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118115","Name":"Inter-state purchase of services where Services is paid directly and service provider is Unregistered and GST Credit is Not Available on Purchase Journal and Gen. Journal.","NodeType":"Use Case","TableID":81,"CaseID":"{2A85CD62-7897-47FF-808B-E0A11131071F}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118116","Name":"Intra-state purchase of services where Services is paid directly and service provider is Unregistered and GST Credit is Not Available on Purchase Journal and Gen. Journal.","NodeType":"Use Case","TableID":81,"CaseID":"{EAD964E4-7CD1-4462-96B3-78A3FA9DE087}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118117","Name":"Inter-state purchase of services where Services is paid directly through bank and service provider is Unregistered and GST Credit is Available on Purchase Journal and Gen. Journal.","NodeType":"Use Case","TableID":81,"CaseID":"{99AB0C39-33A7-47F5-8659-968DBAEEA2F2}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118125","Name":"End - Account Type - G/L Account","NodeType":"End","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118150","Name":"End Payment","NodeType":"End","TableID":0,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118151","Name":"Service Transfer","NodeType":"Begin","TableID":18351,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field2) WHERE(Field11=1(<>''),Field12=1(<>''),Field20=1(0))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118152","Name":"Interstate Service Transfer Order","NodeType":"Use Case","TableID":18351,"CaseID":"{FEB751CF-3E8D-42AB-965E-51097FF60E64}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118153","Name":"IntraState Service Transfer Order","NodeType":"Use Case","TableID":18351,"CaseID":"{D68B3FE8-78C6-492D-AC1A-FFA29F17A50D}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118200","Name":"End Service Transfer","NodeType":"End","TableID":0,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118201","Name":"Stock Transfer","NodeType":"Begin","TableID":5741,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field2) WHERE(Field18394=1(<>''),Field18395=1(<>''),Field18396=1(0))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118202","Name":"IntraState Transfer Order","NodeType":"Use Case","TableID":5741,"CaseID":"{A59206F4-476D-4ED9-8665-08535755BB5E}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118203","Name":"InterState Transfer Order","NodeType":"Use Case","TableID":5741,"CaseID":"{E52D7679-7E9C-4623-9CA7-AB704EF2465C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118204","Name":"Bonded Inter-State Transfer Order","NodeType":"Use Case","TableID":5741,"CaseID":"{AECAE480-71C8-41C4-B247-FB33DFC9C039}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118205","Name":"Bonded Intra-State Transfer Order","NodeType":"Use Case","TableID":5741,"CaseID":"{C215F153-718E-4936-BA99-ACB4E2F2BBC4}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118250","Name":"End Stock Transfer","NodeType":"End","TableID":0,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118251","Name":"Journal Bank Charges","NodeType":"Begin","TableID":18247,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field2,Field3,Field4) WHERE(Field13=1(0))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118252","Name":"Document Type-Invoice","NodeType":"Begin","TableID":18247,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field2,Field3,Field4) WHERE(Field9=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118253","Name":"GST on Bank Charges against Customer Receipt (Intra Sate)","NodeType":"Use Case","TableID":18247,"CaseID":"{46054EB7-3CE7-421C-B047-00658AC5C150}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118254","Name":"Intra-State Bank Payment with Bank Charges with GST.","NodeType":"Use Case","TableID":18247,"CaseID":"{7AC16E57-E977-41B3-9338-1399811A688B}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118255","Name":"GST on Bank Charges against Customer Receipt (Inter State)","NodeType":"Use Case","TableID":18247,"CaseID":"{668C2032-DD90-4A23-8F30-04B69FE7C99E}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118256","Name":"Inter-State Bank Payment with Bank Charges with GST.","NodeType":"Use Case","TableID":18247,"CaseID":"{98A43A23-24F8-4FC2-9D4E-6B45D74B02FB}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118300","Name":"End Document Type-Invoice","NodeType":"End","TableID":18247,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118301","Name":"Document Type-Credit Memo","NodeType":"Begin","TableID":18247,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field2,Field3,Field4) WHERE(Field9=1(2))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118302","Name":"GST on Bank Charges against Customer Refund (Inter State)","NodeType":"Use Case","TableID":18247,"CaseID":"{2026E996-050E-4647-8D77-9B2E8FF1B068}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118303","Name":"Inter State GST Refund on Bank Charges.","NodeType":"Use Case","TableID":18247,"CaseID":"{4CB74CDB-63C8-492B-8819-BA937750388D}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118304","Name":"Intra State Refund GST on Bank Charges.","NodeType":"Use Case","TableID":18247,"CaseID":"{7E6E164B-CB38-4B5A-ADAA-BB51CAEEA5A7}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118305","Name":"Inter-State Bank Payment for Credit Memo with Bank Charges with GST.","NodeType":"Use Case","TableID":18247,"CaseID":"{429F37B1-0D9F-4B5A-BC3F-AC53F994BC32}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118306","Name":"Intra-State Bank Payment for Credit Memo with Bank Charges with GST.","NodeType":"Use Case","TableID":18247,"CaseID":"{A26AB5CA-52E6-4626-A426-C656627502E4}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118350","Name":"End Document Type-Credit Memo","NodeType":"End","TableID":18247,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118351","Name":"Document Type - Blank","NodeType":"Begin","TableID":18247,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field2,Field3,Field4) WHERE(Field9=1(0))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118352","Name":"Intra-State Bank charges on bank Payment with GST.","NodeType":"Use Case","TableID":18247,"CaseID":"{F230C59A-547E-41CA-B6B9-5E8BE22A1BEF}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118353","Name":"Inter-State Bank charges on bank Payment with GST.","NodeType":"Use Case","TableID":18247,"CaseID":"{50157D1D-C080-4AF0-8C63-0B5E918F5AF2}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118375","Name":"End Document Type - Blank","NodeType":"End","TableID":18247,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118400","Name":"End Journal Bank Charges","NodeType":"End","TableID":0,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-119000","Name":"GST Service Management","NodeType":"Begin","TableID":5902,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field7=1(<>''),Field18441=1(<>''),Field18443=1(<>''))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-119001","Name":"Service Document","NodeType":"Begin","TableID":5902,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field1=1(0|1|2))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-119002","Name":"Intra State Service to Registered/Unregistered Customer through Service Quote/ Order/ Invoice","NodeType":"Use Case","TableID":5902,"CaseID":"{B90130D9-0471-4034-8687-11B04ABDCE72}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-119003","Name":"Inter State Service to Registered/Unregistered Customer through Service Quote/ Order/ Invoice","NodeType":"Use Case","TableID":5902,"CaseID":"{4DD701D1-41A9-432E-9E95-8F8D08AB2C67}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-119004","Name":"Inter State Service to SEZ Unit Customer through Service Quote/ Order/ Invoice.","NodeType":"Use Case","TableID":5902,"CaseID":"{5CB02A72-982F-4AD6-A762-CE881DC52ACC}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-119005","Name":"Inter State Service to SEZ Development Customer through Service Quote/ Order/ Invoice","NodeType":"Use Case","TableID":5902,"CaseID":"{0282EB09-4676-4A39-B2EC-EDC9568BA92B}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-119006","Name":"Intra State Service to Deemed Export Customer through Service Quote/ Order/ Invoice","NodeType":"Use Case","TableID":5902,"CaseID":"{ADF43278-38CD-463B-8E08-DD604EC3C50C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE119007","Name":"Inter State Service to Export Customer through Service Quote/ Order/ Invoice","NodeType":"Use Case","TableID":5902,"CaseID":"{1CB4368B-D6AF-4B89-AFEB-8641B0152451}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-119008","Name":"Inter State Service to SEZ Unit Customer through Service Quote/ Order/ Invoice without payment of Duty.","NodeType":"Use Case","TableID":5902,"CaseID":"{EC2138A1-46D7-430B-B335-F8D6C345BB16}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-119010","Name":"Intra State Service to SEZ Development Customer through Service Quote/ Order/ Invoice","NodeType":"Use Case","TableID":5902,"CaseID":"{4C0ECC95-F5CD-46B2-B302-84C3A5AD7D4E}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-119011","Name":"Inter State Service to Deemed Export Customer through Service Quote/ Order/ Invoice","NodeType":"Use Case","TableID":5902,"CaseID":"{135115A7-1D82-4528-959B-9A35775455CD}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-119200","Name":"End Service Document","NodeType":"End","TableID":5902,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-119201","Name":"Service Return","NodeType":"Begin","TableID":5902,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field1=1(3))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-119202","Name":"Inter State Return of Service to Registered/Unregistered Customer through Service Credit Memo","NodeType":"Use Case","TableID":5902,"CaseID":"{AA215442-D318-4160-A666-57E3FBE06CDD}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-119203","Name":"Intra State Return of Service to Registered/Unregistered Customer through Service Credit Memo","NodeType":"Use Case","TableID":5902,"CaseID":"{C0774889-632D-4799-AA04-DA25EB643832}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-119204","Name":"Inter State Service to SEZ Development Customer through Service Credit Memo\n","NodeType":"Use Case","TableID":5902,"CaseID":"{95551286-5BF2-42D5-895A-4A4F450A424B}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-119205","Name":"Intra State Return of Service to Deemed Export Customer through Service Credit Memo","NodeType":"Use Case","TableID":5902,"CaseID":"{DD75810D-2D5B-438A-A3AB-079E1B1D7AB9}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-119206","Name":"Inter State Service to Deemed Export Customer through Service Credit Memo","NodeType":"Use Case","TableID":5902,"CaseID":"{C211C520-8428-4E89-8A9A-446A5EC41D39}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-119207","Name":"Inter State Return of Service to SEZ Unit Customer through Service Credit Memo with payment of duty","NodeType":"Use Case","TableID":5902,"CaseID":"{6CFFB9A1-521E-4D60-AAFB-BDB044405A2A}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-119208","Name":"Inter State Service to Export Customer through Service Credit Memo","NodeType":"Use Case","TableID":5902,"CaseID":"{0A055D50-A23B-48A5-BADA-9D00D97EED3B}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-119400","Name":"End Service Return","NodeType":"End","TableID":5902,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-119401","Name":"Begin Exempeted","NodeType":"Begin","TableID":5902,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18446=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-119402","Name":"Intra State Service to Registered/Unregistered/Exempted Customer through Service Quote/ Order/ Invoice/ Credit Memo - Exempted","NodeType":"Use Case","TableID":5902,"CaseID":"{D460C15F-47A6-41A4-9B9F-8EA3738C2E40}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-119403","Name":"Inter State Service to Registered/Unregistered/Exempted Customer through Service Quote/ Order/ Invoice/ Credit Memo - Exempted","NodeType":"Use Case","TableID":5902,"CaseID":"{990AEEEE-91BD-4C0E-8346-897F141E4EDB}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-119410","Name":"End Exempeted","NodeType":"End","TableID":5902,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-119800","Name":"End GST Service Management","NodeType":"End","TableID":5902,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-119999","Name":"End - GST","NodeType":"End","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-200001","Name":"TDS","NodeType":"Begin","TableID":0,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"TDS","IsTaxTypeRoot":true},{"Code":"TE-200002","Name":"Purchase","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field1=1(1|2),Field18716=1(<>''))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-200003","Name":"Domestic Vendor","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field91=1(''))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-200004","Name":"Calculation of Tax Deduction at Source on Vendor Invoice where no PAN No. is specified along with Concessional Codes.\n","NodeType":"Use Case","TableID":39,"CaseID":"{DB230097-4AA7-44E2-9373-02A467DC95AC}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-200005","Name":"Calculation of Tax Deduction at Source on Vendor Invoice where PAN No. is specified without Concessional Codes.\n","NodeType":"Use Case","TableID":39,"CaseID":"{A8E114BF-F8CD-44DB-A2B3-614BC18F4442}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-200006","Name":"Calculation of Tax Deduction at Source on Vendor Invoice where both PAN No. and Concessional Codes are not specified.\n","NodeType":"Use Case","TableID":39,"CaseID":"{F39A0864-D2E7-40A5-9633-B6680CD3EC6F}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-200007","Name":"Calculation of Tax Deduction at Source on Vendor Invoice where PAN No. is specified along with Concessional Codes.\n","NodeType":"Use Case","TableID":39,"CaseID":"{1E42FDF3-1868-4205-A6D6-D2FC67BD132F}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-200008","Name":"Calculation of Tax Deduction at Source on Vendor Invoice where PAN No. is specified with Concessional Codes and Posting Date is greater than Start Date","NodeType":"Use Case","TableID":39,"CaseID":"{F8BF58D9-7681-458D-9DFC-71EA23A9F853}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-200009","Name":"Calculation of Tax Deduction at Source on Vendor Invoice where no PAN No. is specified along with Concessional Codes and Posting Date is greater then Start Date","NodeType":"Use Case","TableID":39,"CaseID":"{1ABE2C56-9700-4A30-A14A-5E8ECC2F32DD}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-200010","Name":"Calculation of Tax Deduction at Source on Vendor Invoice where PAN No. is specified without Concessional Codes with Applies-to ID.","NodeType":"Use Case","TableID":39,"CaseID":"{B8A33720-278B-45B4-8465-2D9FA273D813}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-200015","Name":"End Domestic Vendor","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-200050","Name":"NRI Vendor","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field91=1(<>''))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-200051","Name":"Calculation of Tax Deduction at Source on Non-Resident Vendor Invoice where PAN No. is specified without Concessional Codes.\n","NodeType":"Use Case","TableID":39,"CaseID":"{5D4C69D3-E776-4E9D-B397-09336BFDC884}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-200052","Name":"Calculation of Tax Deduction at Source on Non-Resident Vendor Invoice where no PAN No. is specified along with Concessional Codes.\n","NodeType":"Use Case","TableID":39,"CaseID":"{FEE5DFFF-0BC1-4246-AD90-6CB3DC44A451}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-200053","Name":"Calculation of Tax Deduction at Source on Non-Resident Vendor Invoice where PAN No. is specified along with Concessional Codes.\n","NodeType":"Use Case","TableID":39,"CaseID":"{487C3669-B12A-42C0-9FEA-D23AB1426BF6}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-200054","Name":"Calculation of Tax Deduction at Source on Non-Resident Vendor Invoice where both PAN No. and Concessional Codes are not specified.\n","NodeType":"Use Case","TableID":39,"CaseID":"{75222E87-A1A0-48EE-9211-D3F59009C287}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-200100","Name":"End NRI Vendor","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-200150","Name":"End Purchase","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-200151","Name":"Payment","NodeType":"Begin","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field51,Field2) WHERE(Field30=1(0),Field18544=1(<>''))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-200152","Name":"NRI Vendor","NodeType":"Begin","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field51,Field2) WHERE(Field3=1(2),Field12=1(<>''))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-200153","Name":"Calculation of Tax Deduction at Source through General Journal for Non-Residents Vendor where both PAN No. and Concessional Codes are not specified.\n","NodeType":"Use Case","TableID":81,"CaseID":"{271D5BC6-17E8-424E-9E34-3BEE548F938F}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-200154","Name":"Calculation of Tax Deduction at Source through General Journal for Non-Residents Vendor where PAN No. is specified without Concessional Codes.\n","NodeType":"Use Case","TableID":81,"CaseID":"{D9B47164-1681-4C6F-A746-8D710E5F103D}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-200155","Name":"Calculation of Tax Deduction at Source through General Journal for Non-Residents Vendor where no PAN No. is specified along with Concessional Codes.\n","NodeType":"Use Case","TableID":81,"CaseID":"{25C2D9C3-2A87-41A6-9AB9-DC76E818DF0C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-200156","Name":"Calculation of Tax Deduction at Source through General Journal for Non-Residents Vendor where PAN No. is specified along with Concessional Codes.\n","NodeType":"Use Case","TableID":81,"CaseID":"{08737F79-35F1-4670-BD1D-E41764E3A9DE}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-200200","Name":"End NRI Vendor","NodeType":"End","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-200201","Name":"Domestic Vendor","NodeType":"Begin","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field51,Field2) WHERE(Field3=1(2),Field12=1(''))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-200202","Name":"Calculation of Tax Deduction at Source through General Journal for Vendor where both PAN No. and Concessional Codes are not specified.\n","NodeType":"Use Case","TableID":81,"CaseID":"{B0C259BC-64CC-4818-887A-3337D357CDFF}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-200203","Name":"Calculation of Tax Deduction at Source through General Journal for Vendor where PAN No. is specified without Concessional Codes.\n","NodeType":"Use Case","TableID":81,"CaseID":"{33BFBE99-9140-4112-A55B-35EC0D9B61B9}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-200204","Name":"Calculation of Tax Deduction at Source through General Journal for Vendor where no PAN No. is specified along with Concessional Codes.\n","NodeType":"Use Case","TableID":81,"CaseID":"{FA0E357D-1AC0-42AA-94DE-6DACA521D38E}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-200205","Name":"Calculation of Tax Deduction at Source through General Journal for Vendor where PAN No. is specified along with Concessional Codes.\n","NodeType":"Use Case","TableID":81,"CaseID":"{0CDED40A-A359-45E0-AAEC-AFE7BBCFBC96}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-200250","Name":"End Domestic Vendor","NodeType":"End","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-200251","Name":"Customer","NodeType":"Begin","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field51,Field2) WHERE(Field3=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-200252","Name":"Calculation of Tax Deducted at Source through Bank Receipt Voucher/Cash Receipt Voucher/General Journal/Cash Receipt Journal for Customers with PAN and without Concessional Code.\n","NodeType":"Use Case","TableID":81,"CaseID":"{C1C8C9A9-1AE8-48D7-AB60-9EA08AA0AF21}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-200253","Name":"Calculation of Tax Deducted at Source through Bank Receipt Voucher/Cash Receipt Voucher/General Journal/Cash Receipt Journal for Customers with PAN and Concessional Code.\n","NodeType":"Use Case","TableID":81,"CaseID":"{98E3D17E-B644-4DBA-836C-CF26A20EDD3F}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-200300","Name":"End Customer","NodeType":"End","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-200301","Name":"Provisional Entry","NodeType":"Begin","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-200302","Name":"Calculation of Tax Deduction at Source with Provisional Entry through Purchase Journal for Vendor where PAN No. is specified along with Concessional Codes.\n","NodeType":"Use Case","TableID":81,"CaseID":"{7D508D37-53AC-4E44-9669-743A8BA82A3F}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-200303","Name":"Calculation of Tax Deduction at Source with Provisional Entry through Purchase Journal for Vendor where both PAN No. and Concessional Codes are not specified.\n","NodeType":"Use Case","TableID":81,"CaseID":"{25EADDE7-E634-4A01-9E4B-74E7C9D5AA62}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-200304","Name":"Calculation of Tax Deduction at Source with Provisional Entry through Purchase Journal for Vendor where no PAN No. is specified along with Concessional Codes.\n","NodeType":"Use Case","TableID":81,"CaseID":"{9E57C058-0570-4828-B24A-760D35A38D19}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-200305","Name":"Calculation of Tax Deduction at Source with Provisional Entry through Purchase Journal for Vendor where PAN No. is specified without Concessional Codes.","NodeType":"Use Case","TableID":81,"CaseID":"{61ED733A-A96B-45ED-BE21-A98A8B65566B}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-200350","Name":"End Provisional Entry","NodeType":"End","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-200400","Name":"End Payment","NodeType":"End","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-299991","Name":"End TDS","NodeType":"End","TableID":0,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-300001","Name":"TCS","NodeType":"Begin","TableID":0,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"TCS","IsTaxTypeRoot":true},{"Code":"TE-300002","Name":"Sales","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18838=1(<>''))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-300003","Name":"Sales Document","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field1=1(1|0|2))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-300004","Name":"TCS to be calculated on Customer Invoice with PAN and without Concessional (through Sales Quote/ Sales Order/ Sales Invoice)","NodeType":"Use Case","TableID":37,"CaseID":"{BC834CD9-7782-4B77-8D0E-0D7EF1679775}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-300005","Name":"PAN No. Validations (through Sales Quote/ Sales Order/ Sales Invoice)","NodeType":"Use Case","TableID":37,"CaseID":"{E696BECA-20A6-498E-9615-114585216ABA}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-300006","Name":"TCS to be calculated on Customer Invoice without PAN and without Concessional (through Sales Quote/ Sales Order/ Sales Invoice)","NodeType":"Use Case","TableID":37,"CaseID":"{91492C74-9837-4256-8B07-1BA40247EA73}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-300007","Name":"TCS to be calculated on Customer Invoice with PAN and with Concessional (through Sales Quote/ Sales Order/ Sales Invoice)","NodeType":"Use Case","TableID":37,"CaseID":"{4DC37F56-3558-400D-ABB1-5573CCC0FD30}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-300008","Name":"TCS to be calculated on Customer Invoice with Resource and Fixed Asset (through Sales Quote/ Sales Order/ Sales Invoice)","NodeType":"Use Case","TableID":37,"CaseID":"{B8AC2649-DEA6-42B1-BF69-62A706C6DC40}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-300009","Name":"TCS to be calculated on Customer Invoice without PAN and with Concessional (through Sales Quote/ Sales Order/ Sales Invoice)","NodeType":"Use Case","TableID":37,"CaseID":"{C8358DF6-AC70-4AB2-94E4-D609ADC635CA}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-300050","Name":"End Sales Document","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-300051","Name":"Sales Return Document","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field1=1(5|3))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-300052","Name":"TCS to be calculated on Customer Invoice without PAN and without Concessional (through Sales Return Order/ Credit Memo)","NodeType":"Use Case","TableID":37,"CaseID":"{B3983817-AAEE-4AD8-97D8-16A875361BA7}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-300053","Name":"PAN No Validations (through Sales Return Order/ Credit Memo)","NodeType":"Use Case","TableID":37,"CaseID":"{800AD5B2-89E5-4616-8281-37DDEC382E76}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-300054","Name":"TCS to be calculated on Customer Invoice with Resource and Fixed Asset (through Sales Return Order/ Credit Memo)","NodeType":"Use Case","TableID":37,"CaseID":"{F687A3C1-9192-42D2-A042-39C2B63B35D7}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-300055","Name":"TCS to be calculated on Customer Invoice with PAN and without Concessional (Through Sales Return Order/ Credit Memo)","NodeType":"Use Case","TableID":37,"CaseID":"{B1B995F9-C500-4846-9FE8-833A900F0846}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-300056","Name":"TCS to be calculated on Customer Invoice with PAN and with Concessional (Through Sales Return Order/ Credit Memo)","NodeType":"Use Case","TableID":37,"CaseID":"{77DE8E48-908D-4E7E-9FBE-98B9EFCB7AE5}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-300057","Name":"TCS to be calculated on Customer Invoice without PAN and with Concessional (through Sales Return Order/ Credit Memo)","NodeType":"Use Case","TableID":37,"CaseID":"{5E2AC8E9-8A09-4BA9-8C30-C1CD27CAA214}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-300100","Name":"End Sales Retun Document","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-300150","Name":"End Sales","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-300151","Name":"Receipt","NodeType":"Begin","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field51,Field2) WHERE(Field3=1(1),Field6=1(1|2|3),Field30=1(0),Field18807=1(<>''))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-300152","Name":"Invoice and Payment","NodeType":"Begin","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field51,Field2) WHERE(Field6=1(2|1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-300153","Name":"TCS to be calculated on Customer Invoice and Payment with PAN and with Concessional (Through General Journal) ","NodeType":"Use Case","TableID":81,"CaseID":"{593E67FC-EACA-4C9B-8F95-4A1D3D1712E4}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-300154","Name":"TCS to be calculated on Customer Invoice and Payment without PAN and with Concessional (Through General Journal) ","NodeType":"Use Case","TableID":81,"CaseID":"{DA63D636-4773-418A-8123-6522A7867E5F}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-300155","Name":"TCS to be calculated on Customer Invoice and Payment with PAN and without Concessional (Through General Journal) ","NodeType":"Use Case","TableID":81,"CaseID":"{6B7BF4A0-0250-4480-9482-733992652D29}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-300156","Name":"TCS to be calculated on Customer Invoice and Payment without PAN and without Concessional (Through General Journal) ","NodeType":"Use Case","TableID":81,"CaseID":"{D9843455-A721-409B-8A37-D111331A8024}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-300157","Name":"PAN No. Validations through General journal","NodeType":"Use Case","TableID":81,"CaseID":"{CB9FAD0D-74A9-4DD5-A83A-E2F6A1FABA06}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-300158","Name":"TCS to be calculated on Receipt of Payment with PAN and with Concessional (Through General Journal) ","NodeType":"Use Case","TableID":81,"CaseID":"{42747DC4-6388-459E-9D2E-103F3F4E2AB0}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-300159","Name":"TCS to be calculated on Receipt of Payment without PAN and without Concessional (Through General Journal) ","NodeType":"Use Case","TableID":81,"CaseID":"{82174562-748D-4C6F-AE37-852C7CCEFEAC}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-300160","Name":"TCS to be calculated on Receipt of Payment without PAN and with Concessional (Through General Journal) ","NodeType":"Use Case","TableID":81,"CaseID":"{1E2CC6D7-1793-4F6E-BF59-A79A941FD309}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-300161","Name":"TCS to be calculated on Receipt of Payment with PAN and without Concessional (Through General Journal) ","NodeType":"Use Case","TableID":81,"CaseID":"{6F4B6558-D97D-463E-BCC2-A8AE3C7EB872}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-300200","Name":"End Invoice and Payment","NodeType":"End","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-300201","Name":"Credit Memo","NodeType":"Begin","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field51,Field2) WHERE(Field6=1(3))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-300202","Name":"TCS to be calculated on Customer Credit Memo without PAN and without Concessional (Through General Journal) ","NodeType":"Use Case","TableID":81,"CaseID":"{4BC77C19-4CA3-4913-8EB5-11EDAE308A25}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-300203","Name":"TCS to be calculated on Customer Credit Memo without PAN and with Concessional (Through General Journal) ","NodeType":"Use Case","TableID":81,"CaseID":"{3ED702E0-AFA2-4771-AD1F-8FBEF7383436}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-300204","Name":"TCS to be calculated on Customer Credit Memo with PAN and with Concessional (Through General Journal) ","NodeType":"Use Case","TableID":81,"CaseID":"{088AD93D-6264-4C00-8E0D-F15F40E5E4F6}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-300205","Name":"TCS to be calculated on Customer Credit Memo with PAN and without Concessional (Through General Journal) ","NodeType":"Use Case","TableID":81,"CaseID":"{994E3FD7-2FE1-4B6D-AC06-F819F8B94F07}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-300250","Name":"End Credit Memo","NodeType":"End","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-300300","Name":"End Receipt","NodeType":"End","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-399991","Name":"END TCS","NodeType":"End","TableID":0,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-999999","Name":"End Tax Engine","NodeType":"End","TableID":0,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false}]]]>
+ ''),Field18080=1(<>''),Field18096=1(<>''))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000311","Name":"Calculation of Cess where input tax Credit is available through Purchase Quote/Order/Invoice - Registered/Unregistered","NodeType":"Use Case","TableID":39,"CaseID":"{F6F63738-94DD-4B0B-BAD6-4EC11668D327}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000312","Name":"Calculation of Cess where input tax Credit is available through Purchase Quote/Order/Invoice - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{8D93354A-64E8-4DA5-A1A7-741A42B80B33}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000313","Name":"Calculation of Cess where input tax Credit is available through Purchase Quote/Order/Invoice - Goods from SEZ Vendor With Bill of Entry","NodeType":"Use Case","TableID":39,"CaseID":"{826B72ED-5C21-45CA-A966-8443C38B768A}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000314","Name":"Calculation of Cess where input tax Credit is available through Purchase Quote/Order/Invoice - Service from SEZ Vendor","NodeType":"Use Case","TableID":39,"CaseID":"{7C64DCF3-718C-405E-A389-582FD1E33E5D}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000315","Name":"Calculation of Cess where input tax Credit is available through Purchase Quote/Order/Invoice - Goods from SEZ Vendor Without Bill of Entry","NodeType":"Use Case","TableID":39,"CaseID":"{71ED6108-7E6C-42E3-BEC8-DF9AD0C7A27E}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000316","Name":"Calculation of Cess where input tax Credit is Not Available through Purchase Quote/Order/Invoice","NodeType":"Use Case","TableID":39,"CaseID":"{C724AA5A-92F2-4965-957B-C43EEACAABE6}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000317","Name":"Calculation of Cess where input tax Credit is Not Available through Purchase Quote/Order/Invoice - G/L Account","NodeType":"Use Case","TableID":39,"CaseID":"{DEEB69C8-EDAA-4A5A-875E-A20DA52008BC}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000318","Name":"Calculation of Cess where input tax Credit is Not available through Purchase Quote/Order/Invoice - Goods from SEZ Vendor Without Bill of Entry","NodeType":"Use Case","TableID":39,"CaseID":"{DE898176-3602-4CBD-BF29-EAF4A9C03987}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000319","Name":"Calculation of Cess where input tax Credit is Not Available through Purchase Quote/Order/Invoice - G/L Account (Reverse Charge)","NodeType":"Use Case","TableID":39,"CaseID":"{F7192A60-5739-4B72-AB1D-FB48ED3EE0F9}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000320","Name":"Calculation of Cess where input tax Credit is Not available through Purchase Quote/Order/Invoice - Service from SEZ Vendor","NodeType":"Use Case","TableID":39,"CaseID":"{3E8E1EDA-828E-40BE-8FD4-3456546F47A6}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000321","Name":"Calculation of Cess where input tax Credit is Not available through Purchase Quote/Order/Invoice - Goods from SEZ Vendor With Bill of Entry","NodeType":"Use Case","TableID":39,"CaseID":"{FD3380A2-217C-4059-A344-1D832B755088}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000322","Name":"Calculation of Cess where input tax Credit is Not Available through Purchase Quote/Order/Invoice- Fixed Asset","NodeType":"Use Case","TableID":39,"CaseID":"{E1914856-FF7A-4B3A-99D5-17190CE10C27}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000323","Name":"Calculation of Cess where input tax Credit is Not available through Purchase Quote/Order/Invoice - Fixed Asset from SEZ Vendor Without Bill of Entry","NodeType":"Use Case","TableID":39,"CaseID":"{8D7FD8C3-FCB1-4968-8FD6-08181778EC29}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000324","Name":"Calculation of Cess where input tax Credit is Not Available for Goods through Purchase Quote/Order/Invoice -(Reverse Charge)","NodeType":"Use Case","TableID":39,"CaseID":"{1E087C72-9078-4C31-ABD5-38F01008E508}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000325","Name":"Calculation of Cess where input tax Credit is available through Purchase Quote/Order/Invoice - Fixed Asset from SEZ Vendor With Bill of Entry","NodeType":"Use Case","TableID":39,"CaseID":"{508FE302-0CAB-41B6-8C43-737EBE931312}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000326","Name":"Calculation of Cess where input tax Credit is available through Purchase Quote/Order/Invoice - Fixed Asset from SEZ Vendor Without Bill of Entry","NodeType":"Use Case","TableID":39,"CaseID":"{68FE3FB0-9F3C-44A6-9686-F37192B1A371}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000327","Name":"Calculation of Cess where input tax Credit is Not available through Purchase Quote/Order/Invoice - Fixed Asset from SEZ Vendor With Bill of Entry","NodeType":"Use Case","TableID":39,"CaseID":"{2EA01E14-807E-4CC7-8494-9EAAFBA21709}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000328","Name":"Calculation of Cess where input tax Credit is Not Available through Purchase Quote/Order/Invoice -Fixed Asset(Reverse Charge)","NodeType":"Use Case","TableID":39,"CaseID":"{6ADC0F4A-6D69-4BAE-A94F-7DC0889758DC}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000329","Name":"Calculation of Cess where input tax Credit is available through Purchase Quote/Order/Invoice - Import Vendor","NodeType":"Use Case","TableID":39,"CaseID":"{C9822271-8F51-46B7-B4BD-A2B424B1699B}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000330","Name":"Calculation of Cess where input tax Credit is Not Available through Purchase Quote/Order/Invoice - Import Vendor","NodeType":"Use Case","TableID":39,"CaseID":"{C63F1B6C-96EE-41CB-879B-801CE9C734A6}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000331","Name":"Calculation of Cess where input tax Credit is available through Purchase Quote/Order/Invoice - G/L Account- Import Vendor","NodeType":"Use Case","TableID":39,"CaseID":"{F748E0D1-BC76-4D68-8CBD-FF4189DC3517}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000332","Name":"Calculation of Cess where input tax Credit is Not Available through Purchase Quote/Order/Invoice - G/L Account- Import Vendor","NodeType":"Use Case","TableID":39,"CaseID":"{AE6444ED-20D1-4E69-A69C-7DCAEC9C4738}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000333","Name":"Calculation of Cess where input tax Credit is Not available through Purchase Quote/Order/Invoice - Fixed Asset from Import Vendor","NodeType":"Use Case","TableID":39,"CaseID":"{535A4B2C-EEA4-4267-8638-F57DE9153FDD}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000340","Name":"End Cess on Purchase","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000350","Name":"Cess on Purchase Return","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field1=1(3|5),Field7=1(<>''),Field18080=1(<>''),Field18096=1(<>''))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000351","Name":"Calculation of Cess where input tax Credit is available through Purchase Return Order/Credit Memo - Registered/Unregistered","NodeType":"Use Case","TableID":39,"CaseID":"{725E8FB9-C4CC-42B7-B060-5E86614A8168}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000352","Name":"Calculation of Cess where input tax Credit is available through Purchase Return Order/Credit Memo - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{EFF1E5F5-6CC1-414D-BD1F-1095D42F9A4A}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000353","Name":"Calculation of Cess where input tax Credit is available through Purchase Return Order/ Credit Memo - Goods from SEZ Vendor With Bill of Entry","NodeType":"Use Case","TableID":39,"CaseID":"{8BB1C380-7CFE-4B49-82AD-78BBA652EB5C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000354","Name":"Calculation of Cess where input tax Credit is available through Purchase Return Order/Credit Memo - Service from SEZ Vendor","NodeType":"Use Case","TableID":39,"CaseID":"{231587B2-D0BD-4362-9A3B-11839F7BB326}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000355","Name":"Calculation of Cess where input tax Credit is Not Available through Purchase Return Order/Credit Memo","NodeType":"Use Case","TableID":39,"CaseID":"{CEAE9F6C-7E67-4347-9E66-A9C6C54E4ECE}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000356","Name":"Calculation of Cess where input tax Credit is Not Available through Purchase Return Order/Credit Memo - G/L Account","NodeType":"Use Case","TableID":39,"CaseID":"{F33121DD-68CB-423C-A98B-6FF10BD8CED7}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000357","Name":"Calculation of Cess where input tax Credit is Not Available through Purchase Return Order/Credit Memo - G/L Account (Reverse Charge)","NodeType":"Use Case","TableID":39,"CaseID":"{75A11E67-E9DF-446F-974A-AE9F91D8EA1C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000358","Name":"Calculation of Cess where input tax Credit is Not available through Purchase Return Order/Credit Memo - Goods from SEZ Vendor Without Bill of Entry","NodeType":"Use Case","TableID":39,"CaseID":"{6F2DE875-4569-41DB-A28E-021E4D00378A}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000359","Name":"Calculation of Cess where input tax Credit is Not available through Purchase Return Order/Credit Memo - Service from SEZ Vendor","NodeType":"Use Case","TableID":39,"CaseID":"{7D571F8D-B6A0-47E0-B80F-9AC703DF1D3B}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000360","Name":"Calculation of Cess where input tax Credit is Not available through Purchase Return Order/ Credit Memo - Goods from SEZ Vendor With Bill of Entry","NodeType":"Use Case","TableID":39,"CaseID":"{A622E949-C161-4AE2-B6DB-7D3C16E5D899}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000361","Name":"Calculation of Cess where input tax Credit is Not Available through Purchase Return Order/Credit Memo - Fixed Asset","NodeType":"Use Case","TableID":39,"CaseID":"{43F17130-4EA1-48FE-B1A8-716EE5DF7C16}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000362","Name":"Calculation of Cess where input tax Credit is available through Purchase Return Order/ Credit Memo - Fixed Asset from SEZ Vendor With Bill of Entry","NodeType":"Use Case","TableID":39,"CaseID":"{3A6F385C-72E7-42C6-A696-47102B270402}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000364","Name":"Calculation of Cess where input tax Credit is available through Purchase Return Order/ Credit Memo - Fixed Asset from SEZ Vendor Without Bill of Entry","NodeType":"Use Case","TableID":39,"CaseID":"{6DEEF440-3A5B-4201-9D1B-59AC37AF4C36}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000365","Name":"Calculation of Cess where input tax Credit is Not available through Purchase Return Order/Credit Memo - Fixed Asset from SEZ Vendor Without Bill of Entry","NodeType":"Use Case","TableID":39,"CaseID":"{C08A9FD5-5ECC-4BB5-8A19-345060822129}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000366","Name":"Calculation of Cess where input tax Credit is Not Available through Purchase Return Order/Credit Memo - Fixed Asset(Reverse Charge)","NodeType":"Use Case","TableID":39,"CaseID":"{CBDB09CC-FB6C-4475-89A3-62C04DADFA15}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000367","Name":"Calculation of Cess where input tax Credit is Not Available through Purchase Return Order/Credit Memo Unregistered Vendor- Item (Reverse Charge)","NodeType":"Use Case","TableID":39,"CaseID":"{39808C8A-4131-4B49-BF1D-D8FA64667B3C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000368","Name":"Calculation of Cess where input tax Credit is available through Purchase Return Order/Credit Memo - Import Vendor","NodeType":"Use Case","TableID":39,"CaseID":"{812C7B77-0622-4E71-9F4E-261C3874A680}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000369","Name":"Calculation of Cess where input tax Credit is Not Available through Purchase Return Order/Credit Memo - Import Vendor","NodeType":"Use Case","TableID":39,"CaseID":"{3B82DBC4-FAAE-477D-892C-AD82ECDFEF7E}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000370","Name":"Calculation of Cess where input tax Credit is available through Purchase Return Order/Credit Memo -G/L Account- Import Vendor","NodeType":"Use Case","TableID":39,"CaseID":"{B4A44DCF-6090-4813-9C09-193AB1A09B93}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000371","Name":"Calculation of Cess where input tax Credit is Not Available through Purchase Return Order/Credit Memo - G/L Account- Import Vendor","NodeType":"Use Case","TableID":39,"CaseID":"{A79DCE33-C753-4680-A6A3-F824608702B1}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000372","Name":"Calculation of Cess where input tax Credit is Not Available through Purchase Return Order/Credit Memo - Fixed Asset - Import Vendor","NodeType":"Use Case","TableID":39,"CaseID":"{FBD319E5-BDFD-43E8-B9EB-275F01FA6A40}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000380","Name":"End Cess on Purchase Return","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000500","Name":"Cess on Sales","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field1=1(0|1|2|4),Field5=1(1|2|4|3),Field7=1(<>''),Field18142=1(<>''),Field18144=1(<>''))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000501","Name":"Calculation of Cess on sales to Registered/Unregistered Customer through Sales Quote/Order/Invoice","NodeType":"Use Case","TableID":37,"CaseID":"{3D30F63D-D6C1-4B1B-ACFD-E252FAB190E2}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000502","Name":"Calculation of Cess on sales to SEZ Development/SEZ Unit Customer through Sales Quote/Order/Invoice with Payment of Duty","NodeType":"Use Case","TableID":37,"CaseID":"{9B4E1225-00F2-4467-BA93-29AD1F2EBD46}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000503","Name":"Calculation of Cess on sales to SEZ Development/SEZ Unit Customer through Sales Quote/Order/Invoice without Payment of Duty","NodeType":"Use Case","TableID":37,"CaseID":"{0F354915-7E17-421B-87D8-7E6C2716E173}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000504","Name":"Calculation of Cess on sales to Registered/Unregistered/Exempted/SEZ/SEZ Development/ Deemed Export Customer through Sales","NodeType":"Use Case","TableID":37,"CaseID":"{33CD3931-0BA0-4358-B808-5C6378CAA489}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000505","Name":"Calculation of Cess on sales to SEZ Development/SEZ Unit Customer through Sales Quote/Order/Invoice with Payment of Duty - Post GST to Customer.","NodeType":"Use Case","TableID":37,"CaseID":"{37EFA642-056C-45E8-974E-6B41B335FC81}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000506","Name":"Calculation of Cess on sales to SEZ Development/SEZ Unit Customer through Sales Return Order/Credit Memo with Payment of Duty - Post GST to Customer.","NodeType":"Use Case","TableID":37,"CaseID":"{DE8006B8-CF9F-474A-AE29-C7903A148261}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000600","Name":"End Cess on Sales","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000601","Name":"Cess on Sales Return","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field1=1(3|5),Field5=1(2|1|3|4),Field7=1(<>''),Field18142=1(<>''),Field18144=1(<>''))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000602","Name":"Calculation of Cess on sales to Registered/Unregistered Customer through Sales Return Order/Credit Memo","NodeType":"Use Case","TableID":37,"CaseID":"{272FFE9F-A7C9-4AF8-87DD-3EA53BA18511}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000603","Name":"Calculation of Cess on sales to SEZ Development/SEZ Unit Customer through Sales Return Order/Credit Memo with Payment of Duty","NodeType":"Use Case","TableID":37,"CaseID":"{9DB4ECE1-3397-4ADD-9EA8-40A8D82A6A9A}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000604","Name":"Calculation of Cess on sales to SEZ Development/SEZ Unit Customer through Sales Return Order/Credit Memo without Payment of Duty","NodeType":"Use Case","TableID":37,"CaseID":"{423BECDD-68DC-4541-9047-8F6B797709E5}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000605","Name":"Calculation of Cess on sales to Registered/Unregistered/Exempted/ SEZ/ SEZ Development/ Deemed Export Customer through Sales Return Order/ Credit Memo - Exempted","NodeType":"Use Case","TableID":37,"CaseID":"{ED1E0A5D-C364-4F36-847E-AAE263B34185}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000700","Name":"End Cess on Sales Return","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000701","Name":"Cess on Transfer Order","NodeType":"Begin","TableID":5741,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field2) WHERE(Field3=1(<>''),Field18394=1(<>''),Field18395=1(<>''))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000702","Name":"Calculation of Cess in Transfer Order","NodeType":"Use Case","TableID":5741,"CaseID":"{631DEFA0-165E-4BDC-8F8A-AB2A88DF90AD}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-000750","Name":"End Cess on Transfer Order","NodeType":"End","TableID":5741,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-001000","Name":"End GST Cess","NodeType":"End","TableID":0,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-100001","Name":"GST","NodeType":"Begin","TableID":0,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"GST","IsTaxTypeRoot":true},{"Code":"TE-100011","Name":"Subcontracting GST For Delivery Challan Line","NodeType":"Begin","TableID":18469,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field54,Field55) WHERE(Field46=1(<>''),Field47=1(<>''),Field102=1(<>''),Field103=1(<>''))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-100012","Name":"Intra-state Subcontracting GST For Delivery Challan Line for Registered Vendor","NodeType":"Use Case","TableID":18469,"CaseID":"{5388F401-5CDE-4918-A9B0-B7B134235921}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-100013","Name":"Inter-state Subcontracting GST For Delivery Challan Line for Registered Vendor","NodeType":"Use Case","TableID":18469,"CaseID":"{6A75BFF5-C880-498F-AC1D-E9CF9BE7F888}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-100099","Name":"Subcontracting GST For Delivery Challan Line","NodeType":"End","TableID":0,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-100100","Name":"Subcontracting GST For GST Liability Line","NodeType":"Begin","TableID":18470,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field3,Field4) WHERE(Field46=1(<>''),Field47=1(<>''),Field102=1(<>''),Field103=1(<>''))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-100101","Name":"Intra-state Subcontracting GST on GST Liability Line for Registered Vendor","NodeType":"Use Case","TableID":18470,"CaseID":"{81A83FF9-D7EB-4B5F-A2AE-ED346B7A9079}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-100102","Name":"Inter-state Subcontracting GST on GST Liability Line for Registered Vendor","NodeType":"Use Case","TableID":18470,"CaseID":"{81A24E9D-52B9-4EFE-A18B-398C6BAD55ED}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-100199","Name":"Subcontracting GST For GST Liability Line","NodeType":"End","TableID":0,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-100200","Name":"GST Finance Charge Memo","NodeType":"Begin","TableID":303,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field2) WHERE(Field18142=1(<>''),Field18144=1(<>''))","TaxType":"GST","IsTaxTypeRoot":false},{"Code":"TE-100201","Name":"InterState GST Calculation on Finance Charge Memo For Registered Customer.\n","NodeType":"Use Case","TableID":303,"CaseID":"{10675EE2-5AA7-4D43-8794-03BA8CD85445}","Condition":"VERSION(1) SORTING(Field1,Field2)","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-100202","Name":"Intrastate GST Calculation on Finance Charge Memo For Registered Customer.\n","NodeType":"Use Case","TableID":303,"CaseID":"{853FC9A7-4D6E-4511-8207-BB18D1FFC0E8}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-100203","Name":"InterState GST Calculation on Finance Charge Memo For SEZ Unit/SEZ Development/Deemed Export Customer With Payment of Duty.\n","NodeType":"Use Case","TableID":303,"CaseID":"{CAC3F49D-59DD-4F1A-B0F3-AC28F7552973}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-100204","Name":"InterState GST Calculation on Finance Charge Memo For Unregistered Customer.\n","NodeType":"Use Case","TableID":303,"CaseID":"{C4BC4E11-E295-4A20-9F5F-801F2406A610}","Condition":"VERSION(1) SORTING(Field1,Field2)","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-100205","Name":"Intrastate GST Calculation on Finance Charge Memo For Unregistered Customer.\n","NodeType":"Use Case","TableID":303,"CaseID":"{34D44752-1655-43CC-8DD8-9CBA775C5554}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-100206","Name":"Intrastate GST Calculation on Finance Charge Memo For Exempted Customer.\n","NodeType":"Use Case","TableID":303,"CaseID":"{4C815B8B-6831-4E19-899D-361FBA9CFC43}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-100207","Name":"InterState GST Calculation on Finance Charge Memo For Exempted Customer.\n","NodeType":"Use Case","TableID":303,"CaseID":"{EC7AE7B0-93FA-42C2-9717-BBD2E8FC4D4C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-100208","Name":"InterState GST Calculation on Finance Charge Memo For SEZ Unit/SEZ Development/Deemed Export Customer Without Payment of Duty.\n","NodeType":"Use Case","TableID":303,"CaseID":"{6946230A-A2F4-4E4B-90C6-6C907D010EB5}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-100300","Name":"GST Finance Charge Memo","NodeType":"End","TableID":303,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-110001","Name":"Sales","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field7=1(<>''),Field18142=1(<>''),Field18144=1(<>''))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-110501","Name":"Sales Document","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field1=1(0|1|2|4))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-110601","Name":"Exempted","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18147=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-110696","Name":"Sales Line No Not Blank","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field6=1(<>''))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-110700","Name":"Export to SEZ/ SEZ Development /Deemed Export With Payment of Duty through Sales Order/Invoice - Exempted","NodeType":"Use Case","TableID":37,"CaseID":"{A4C57AB8-DBFF-473C-B2A3-739975737950}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-110701","Name":"Intra State Sales of Exempted from Registered Customer through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{4911101A-A3D1-4596-836C-A9EB2F2CB24C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-110702","Name":"Inter State Sales of Exempted from Registered Customer through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{CA856646-6B6F-42D2-A4CC-64A8F52DE9F6}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-110703","Name":"Inter State Sales of Exempted from Unregistered Customer through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{CE4E5351-F5F5-413A-AAF9-6C5EA6530D93}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-110704","Name":"Intra State Sales of Exempted from Unregistered Customer through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{887FEE8B-EFB6-4010-B79B-4CDB44F23CC8}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-110705","Name":"Intra State Exempted Sales for Deemed Export Customer through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{332A3E45-C1C8-423A-9063-B55EFA585045}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-110706","Name":"Export and Exempted to Foreign Customer through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{74E6E05F-641D-4857-8F88-C48783B29B3E}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-110707","Name":"Intra state Sales of Charge Item from Exempted Customer through Sales Quote/ Order/ Invoice","NodeType":"Use Case","TableID":37,"CaseID":"{D2C0BC32-D71C-4FEC-A3FC-63A0586DA3D6}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-110708","Name":"Inter State Sales of Exempted Charge Item from Exempted Customer through Sales Quote/ Sales Order/ Sales Invoice","NodeType":"Use Case","TableID":37,"CaseID":"{8E20FC81-1137-41B3-A90E-AE86CD66F718}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-110720","Name":"End Sales Line No Not Blank","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-110721","Name":"Type - G/L Account","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-110722","Name":"Intra state Sales of Services from Exempted Customer through Sales Quote/ Order/ Invoice","NodeType":"Use Case","TableID":37,"CaseID":"{A9D34135-2984-4C5D-99C0-5563408C59EE}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-110723","Name":"Inter State Sales of Exempted Services from Exempted Customer through Sales Quote/ Sales Order/ Sales Invoice","NodeType":"Use Case","TableID":37,"CaseID":"{E474605D-6956-438B-95F2-DA5BE6A6D741}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-110740","Name":"End Type - G/L Account","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-110741","Name":"Begin Type - Item","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(2))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-110742","Name":"Inter State Sales of Exempted Goods from Exempted Customer through Sales Quote/ Sales Order/ Sales Invoice","NodeType":"Use Case","TableID":37,"CaseID":"{144DB41F-813A-4EE0-87EC-7082D07652B7}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-110743","Name":"Intra state Sales of Goods from Exempted Customer through Sales Quote/ Order/ Invoice","NodeType":"Use Case","TableID":37,"CaseID":"{C3901ECF-9316-49A7-9897-B8C52A5A66A0}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-110760","Name":"End Type - Item","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-110761","Name":"Begin Type - Fixed Asset","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(4))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-110762","Name":"Inter State Exempted Sales of Fixed Assets from Exempted Customer through Sales Quote/ Sales Order/ Sales Invoice","NodeType":"Use Case","TableID":37,"CaseID":"{A48A1647-673E-4C77-9997-143963591989}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-110763","Name":"Intra state Sales of Fixed Asset from Exempted Customer through Sales Quote/ Order/ Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{26405773-06F9-4F36-B6B1-E80AA9987628}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-110780","Name":"End Type - Fixed Asset","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-110801","Name":"End Exempted","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-111001","Name":"Not Exempted","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18147=1(0))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-111950","Name":"Sales Line No Not Blank","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field6=1(<>''))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112001","Name":"Intra-State Sales of Services to Overseas Place of Supply to Registered Customer Through Order/Invoice","NodeType":"Use Case","TableID":37,"CaseID":"{FA5B2691-7B6B-43B4-92F1-9B6D10A216E4}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112002","Name":"GST Deemed Exports With Payment of Duty through Sales Order/Invoice-Post GST to Customer.","NodeType":"Use Case","TableID":37,"CaseID":"{B66179F8-E62E-45F8-9DE3-5351C859F85D}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112003","Name":"Intra State Sales for Deemed Export Customer through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{2C82CF3D-40B2-4FCC-8F04-E649DADD1619}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112004","Name":"Intra State Sales for Deemed Export Customer Without Payment of Duty through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{1F930CB5-93A8-4BE9-B412-B9B44F1FBE2B}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112005","Name":"Intra State Sales for Deemed Export Customer through Sales Order/Invoice-Post GST to Customer.","NodeType":"Use Case","TableID":37,"CaseID":"{71177393-F102-466E-AC36-1A460BC1C3E9}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112010","Name":"End Sales Line No Not Blank","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112051","Name":"Type - Charge Item","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(5))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112052","Name":"Intra State Sales of Charge Item from Registered Customer through Sales Order/Invoice","NodeType":"Use Case","TableID":37,"CaseID":"{7422E62E-F5A5-46C6-8A2D-9F9F4C082C91}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112053","Name":"Intra State Sales of Charge Item from Unregistered Customer through Sales Order/Invoice","NodeType":"Use Case","TableID":37,"CaseID":"{A9E13C42-F366-4E5F-A057-1E0B4E43D454}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112054","Name":"Inter State Sales of Charge Item from Unregistered Customer through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{F5794DA7-0CC7-42C2-BEA0-18EB8F98BB5A}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112075","Name":"Inter State Sales of Charge Item from Registered Customer through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{207FA1CE-712A-475E-AC05-B36812DDE2C8}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112076","Name":"Export Sales of Charge Item from SEZ Unit / Development through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{4083D3D9-1F73-48ED-ABD1-12C0559D270F}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112077","Name":"Export Sales of Charge Item from SEZ Unit / Development without Payment of Duty through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{EFF7E856-EF6B-4EC0-9AAE-C2E07B6CB15B}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112078","Name":"Export Sales of Charge Item from SEZ Unit / Development through Sales Order/Invoice-Post GST to Customer.","NodeType":"Use Case","TableID":37,"CaseID":"{40065229-E7D9-4C0A-A0EB-5DE70DD4E9AF}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112079","Name":"GST Deemed Exports for Charge Item through Sales Quote/Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{929EB05F-45B5-4F4F-9DD4-61AFAB36F21B}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112080","Name":"GST Deemed Exports for Charge Item Without Payment of Duty through Sales Quote/Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{A2608A05-D116-4475-B690-A6E26170BC2C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112081","Name":"Export Charge Item to Foreign Customer Without Payment of Duty through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{9D6C4AC2-81D1-47E7-8C7C-494F20F1719F}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112082","Name":"Export and Charge Item to Foreign Customer With Payment of Duty through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{9CBCEC6F-A01B-422B-8AAB-4B6BC90EC959}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112100","Name":"End- Type - Charge Item","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112101","Name":"Type - Fixed Asset","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(4))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112102","Name":"Inter State Sales of Fixed Asset from Registered Customer through Sales Quote/Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{46CB3503-286F-43C3-9B04-FBBD5F2CBAF0}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112103","Name":"Intra State Sales of Fixed Asset from Unregistered Customer through Sales Order/Invoice","NodeType":"Use Case","TableID":37,"CaseID":"{636979B2-6B57-49C6-B0B8-B306261B3304}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112104","Name":"Intra State Sales of Fixed Asset from Registered Customer through Sales Order/Invoice","NodeType":"Use Case","TableID":37,"CaseID":"{A4044120-D393-4525-88F4-AB1A71F2E49C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112105","Name":"Inter State Sales of Fixed Asset from Unregistered Customer through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{52FD8776-17C2-428A-B747-159404771D07}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112106","Name":"Export Fixed Asset to Foreign Customer With Payment of Duty through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{AF5EE023-63DF-4210-AD71-6436230F6DFA}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112107","Name":"GST Deemed Exports of Fixed Asset through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{7B9EA3AF-2235-44F9-AE67-E0F9F74740E6}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112108","Name":"Export Fixed Asset to SEZ Development With Payment of Duty through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{8E2CB0E2-795D-4DC3-879B-5117E415DFB9}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112109","Name":"Export Fixed Asset to SEZ Unit Without Payment of Duty through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{8FDC8D41-E5D7-40D7-B962-80DA519596F3}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112110","Name":"Export Fixed Asset to Foreign Customer Without Payment of Duty through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{C99A231E-6BBF-4982-AEAF-6CAAC7E5BA9B}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112111","Name":"Export Fixed Asset to Deemed Export Without Payment of Duty through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{4490AC87-E83B-44C4-A6A8-EAF2650E8773}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112112","Name":"Export Fixed Asset to SEZ Unit With Payment of Duty through Sales Order/Invoice - Post GST to Customer.","NodeType":"Use Case","TableID":37,"CaseID":"{6EC9FAFD-8029-4B9C-8899-CB3C494682D1}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112113","Name":"Export of Fixed Asset to SEZ Development Without Payment of Duty through Sales Quote/Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{24BF4F23-3693-4E31-ADDA-9D2F91057CA2}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112114","Name":"Export Fixed Asset to SEZ Development With Payment of Duty through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{58789CA5-0F23-4972-B1FE-3EE6E8BC19A1}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112115","Name":"Export Fixed Asset to SEZ Unit With Payment of Duty through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{A18E31F4-0E06-42B6-B8E0-282B42CA2A28}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112214","Name":"End Type - Fixed Asset","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112249","Name":"Type - G/L Account","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112250","Name":"Intra State Sales of Services from UnRegistered Customer through Sales Order/Invoice - Kerala Food Cess","NodeType":"Use Case","TableID":37,"CaseID":"{1BAE51D1-AD26-40F8-BFD2-156024A23A7B}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112251","Name":"Inter State Sales of Services from Registered Customer through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{2E7A7A10-CCD5-4673-AF42-1EF83425931F}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112252","Name":"Intra State Sales of Services from Registered Customer through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{4529A161-49CC-44B6-95BA-CC141FA794B1}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112253","Name":"Intra State Sales of Services from Unregistered Customer through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{4962D3B9-0349-4BE9-B173-22B456AEE6C6}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112254","Name":"Intra State Sales of Services from Registered Customer through Sales Order/Invoice - Kerala Food Cess","NodeType":"Use Case","TableID":37,"CaseID":"{BF9D05ED-BF8A-4BC8-9195-D008E4E381FB}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112255","Name":"Intra State Sales of Services from Registered Customer through Sales Order/Invoice. - POS","NodeType":"Use Case","TableID":37,"CaseID":"{E6D39823-CCCC-43DC-BD7E-CC6EEEBDB5EB}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112256","Name":"Export and Service to Foreign Customer With Payment of Duty through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{DD3CF85B-64EA-4DD4-A626-C472E3B3B072}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112257","Name":"Export and Service to Foreign Customer With Payment of Duty through Sales Order/Invoice With GST on Assessable value.","NodeType":"Use Case","TableID":37,"CaseID":"{1C9C14DA-22A0-4F6B-968A-1F79BE11B7A1}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112258","Name":"Export Services to SEZ Unit With Payment of Duty through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{ABD1A54F-36DA-45A7-AFED-451B98434B0C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112259","Name":"Export Services to SEZ Development With Payment of Duty through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{B2150DAA-4B46-41F2-89BF-19F5FD89362E}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112260","Name":"Export Services to SEZ Development Without Payment of Duty through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{F8591F7C-5D5C-4976-B5F1-E3248733EBC5}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112261","Name":"Export Services to Deemed Export Without Payment of Duty through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{21A349A2-B069-4AA5-86B9-34136BE37267}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112262","Name":"Export Service to SEZ Unit Without Payment of Duty through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{512B21D6-5395-499F-A2BE-EF6D24385C89}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112263","Name":"Export Services to Foreign Customer Without Payment of Duty through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{8638A2E3-3F44-4672-A54D-0D65B1528FF9}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112264","Name":"Calculation of GST Services where Unregistered Transporter, TPT Location is different and Pick Up Location and Delivery Location is same through Sale Orders/ Invoice","NodeType":"Use Case","TableID":37,"CaseID":"{99C83819-83BC-418A-A2A7-26A041F2F99A}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112265","Name":"Inter State Sales of Services from Unregistered Customer through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{C6AAB568-68A3-4D8A-A708-ECD7EFD9A3EE}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112266","Name":"Intra State Sales of Service from Registered/Unregistered Customer through Sales Quote","NodeType":"Use Case","TableID":37,"CaseID":"{9666CA08-2C56-43C5-B36F-7FD3745FE832}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112267","Name":"Inter State Sales of Service from Registered/Unregistered Customer through Sales Quote","NodeType":"Use Case","TableID":37,"CaseID":"{D9221422-669E-485D-8224-053D641FE4F3}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112268","Name":"GST Deemed Exports of Services through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{67F7C66D-5296-4A5F-A85F-D4B91D1DBF97}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112269","Name":"Calculation of Transportation of Services from Registered Vendor, where TPT Location and Pick Up Location is same and Delivery Location is different. through Sales Order","NodeType":"Use Case","TableID":37,"CaseID":"{8D0E6401-974F-4F8E-9254-2AF9067E73DC}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112270","Name":"Calculation of Transportation of Services from Un-Registered Vendor, where TPT Location and Pick Up Location is same and Delivery Location is different. through Sales Order","NodeType":"Use Case","TableID":37,"CaseID":"{99F473AC-553E-4032-AEDB-0AE44C871CD2}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112271","Name":"Calculation of GST in case of Transportation of Service where Registered Transporter State is different and Pick Up Location State and Delivery Location State is same through Sale Orders","NodeType":"Use Case","TableID":37,"CaseID":"{02B82B77-D7E5-4A49-89A2-6D46EC87AE61}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112272","Name":"Calculation of GST in case of Transportation of Service where Un-Registered Transporter State is different and Pick Up Location State and Delivery Location State is same through Sale Orders","NodeType":"Use Case","TableID":37,"CaseID":"{76F9EC4B-C6F3-4DBE-B1CA-04EFC5AD609E}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112273","Name":"Calculation of Transportation of Services from Registered Vendor, , TPT Location is different and Pick Up Location is different and Delivery Location is different through Sale Orders","NodeType":"Use Case","TableID":37,"CaseID":"{CF4626CB-7022-41C6-95C6-E1FE28C8C370}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112274","Name":"Export Services to SEZ Development With Payment of Duty through Sales Order/Invoice -Post GST to Customer","NodeType":"Use Case","TableID":37,"CaseID":"{C447C36E-72FA-4FEA-A49C-F976FE57275D}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112275","Name":"Export Services to SEZ Unit With Payment of Duty through Sales Order/Invoice -Post GST to Customer.","NodeType":"Use Case","TableID":37,"CaseID":"{5043629A-E2D7-4E0D-AD7F-C9D505507D01}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112276","Name":"Intra State Sales of Service from Registered Customer through Sales Order/Invoice For Ship To Address.","NodeType":"Use Case","TableID":37,"CaseID":"{0321474A-ABD0-45DB-8CEA-B586A5CB7F49}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112399","Name":"End Type - G/L Account","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112400","Name":"Type - Item","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(2))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112401","Name":"Inter State Sales of Goods from Unregistered Customer through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{11160E03-89D0-481D-B2EA-24898F3DB4AB}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112402","Name":"Intra State Sales of Goods from UnRegistered Customer through Sales Order/Invoice - Kerala Food Cess","NodeType":"Use Case","TableID":37,"CaseID":"{364EABA8-DF5D-4174-951E-9C9B375830D6}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112403","Name":"Intra State Sales of Goods from Registered Customer through Sales Order/Invoice - Kerala Food Cess","NodeType":"Use Case","TableID":37,"CaseID":"{A8BF5AD2-5132-40E7-9DF1-893B3940F6EE}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112404","Name":"Intra State Sales of Goods from Unregistered Customer through Sales Order/Invoice","NodeType":"Use Case","TableID":37,"CaseID":"{CFE77ACE-1F20-4126-98D9-8D14B18088EE}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112405","Name":"Inter State Sales of Goods from Registered Customer through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{B61CB389-28BD-4569-BF95-284B62972B23}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112406","Name":"Intra State Sales of Goods from Registered Customer through Sales Order/Invoice","NodeType":"Use Case","TableID":37,"CaseID":"{6B464955-261F-4EAF-A749-7807444FC37C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112407","Name":"Export and Goods to Foreign Customer With Payment of Duty through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{55AD5167-785F-4CC3-B633-84A8414EE100}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112408","Name":"Export and Goods to Foreign Customer With Payment of Duty through Sales Order/Invoice With GST on Assessable value.","NodeType":"Use Case","TableID":37,"CaseID":"{23C292E2-9704-4112-9AB6-A2FCBDDFFA6A}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112409","Name":"Export Goods to SEZ Unit Without Payment of Duty through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{2961B717-F882-4174-A7D0-98737C7F49A2}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112410","Name":"Export Goods to SEZ Unit With Price Inclusive of Tax through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{9CF523A9-24DB-4928-A3CB-8DC5FCA4AF69}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112411","Name":"Export Goods to SEZ Unit With Payment of Duty through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{6621F516-24B5-47CC-AB8B-6EF51F2616E3}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112412","Name":"GST Deemed Exports of goods through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{759DC0B3-0697-4262-B0B6-12AA4A6E3822}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112413","Name":"Export Goods to Deemed Export Without Payment of Duty through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{AA3E77B0-A08A-4756-90E5-F6561C7D4B9B}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112414","Name":"Export and Goods to Foreign Customer Without Payment of Duty through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{BAEC40C3-3C56-4B4F-95C9-ED6E1E39A019}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112415","Name":"Export Goods to SEZ Development With Payment of Duty through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{B618D919-C2A5-4BB8-B7EF-13784A51A6D5}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112416","Name":"Export Goods to SEZ Development Without Payment of Duty through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{34D0EE0E-FC73-416C-A59C-484107E36965}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112417","Name":"Intra State Sales of Goods from Registered/Unregistered Customer through Sales Quote","NodeType":"Use Case","TableID":37,"CaseID":"{74601C3A-21C1-4924-950E-039ADD6086E6}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112418","Name":"Inter State Sales of Goods from Registered/Unregistered Customer through Sales Quote","NodeType":"Use Case","TableID":37,"CaseID":"{E06B429C-0CDD-4F49-9C4D-8546151805AD}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112419","Name":"Intra State Sales of Goods from Registered Customer through Sales Order/Invoice - Price Including of Tax","NodeType":"Use Case","TableID":37,"CaseID":"{888E76DA-FA62-4714-83A3-76777E325D84}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112420","Name":"Inter State Sales of Goods from Registered Customer through Sales Order/Invoice - Price Including of Tax","NodeType":"Use Case","TableID":37,"CaseID":"{277B1053-C551-4BF4-9518-7BFE200A8E18}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112421","Name":"Export Goods to Foreign Customer With Payment of Duty through Sales Order/Invoice with Shipment locally as Intrastate.","NodeType":"Use Case","TableID":37,"CaseID":"{9F7A9C0A-BC4A-45C2-B79B-7D22EDB6ABBB}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112422","Name":"Export Goods to Foreign Customer With Payment of Duty through Sales Order/Invoice with Shipment locally as Interstate.","NodeType":"Use Case","TableID":37,"CaseID":"{F69C2334-D38A-4CC1-B701-D7DC4C3B7CA9}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112423","Name":"Export Goods to SEZ Development With Payment of Duty through Sales Order/Invoice - Post GST to Customer","NodeType":"Use Case","TableID":37,"CaseID":"{13217522-8F07-4C15-9787-8B1840E8CC40}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112424","Name":"Export Goods to SEZ Unit With Payment of Duty through Sales Order/Invoice-Post GST to Customer.","NodeType":"Use Case","TableID":37,"CaseID":"{FA8E63F5-19A9-4940-AD59-DB7067BE069A}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112450","Name":"End Type - Item","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112500","Name":"Type - Resource","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(3))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112501","Name":"Intra State Sales of Resource from Unregistered Customer through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{D1629C9B-AA5B-4237-94CE-5B14BAF756C0}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112502","Name":"Intra State Sales of Resource from Registered Customer through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{9B0FE6DB-6121-44B0-8BD0-08B8060D7A92}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112503","Name":"Inter State Sales of Resource from Registered Customer through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{D95F6D4E-EEF5-41B7-8284-694BCBDFEABD}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112504","Name":"Export Resource to Foreign Customer With Payment of Duty through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{60F5C368-9B10-45CB-BB1B-63DEF7520AB6}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112505","Name":"Intra State Calculation of GST on Resource to SEZ Development through Sales Order/ Invoice","NodeType":"Use Case","TableID":37,"CaseID":"{77D07467-2180-4712-814A-A6292F8D5E59}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112506","Name":"GST Deemed Exports for Resource through Sales Order/ Invoice\n","NodeType":"Use Case","TableID":37,"CaseID":"{BE8902D9-72AA-41C9-BACE-1B781D7C8107}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112507","Name":"Intra State Calculation of GST on Resource to SEZ Unit through Sales Order/ Invoice","NodeType":"Use Case","TableID":37,"CaseID":"{96B76AC2-66FF-4457-9DE3-3F2A3213C3E6}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112508","Name":"Inter State Calculation of GST on Resource to SEZ Development through Sales Order/ Invoice","NodeType":"Use Case","TableID":37,"CaseID":"{B2047EB4-AD5D-4E8B-BFFC-94FB1C4EED34}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112509","Name":"Inter State Sales of Resources from Registered Customer through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{C8652C10-76BA-489E-985D-CFFC24D6276B}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112510","Name":"Inter State Sales of Resource from Registered/Unregistered Customer through Sales Quote","NodeType":"Use Case","TableID":37,"CaseID":"{149E867B-BE67-4BA4-AE3B-36C10F7552F5}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112511","Name":"Inter State Calculation of GST on Resource to SEZ Unit through Sales Order/ Invoice","NodeType":"Use Case","TableID":37,"CaseID":"{6F89240D-BBA1-4BB9-85B6-0BE2154EE0B8}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112512","Name":"Intra state Sales of Resources from Exempted Customer through Sales Quote/ Order/ Invoice","NodeType":"Use Case","TableID":37,"CaseID":"{A1895816-94BF-4F67-819E-D3898920FAF5}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112513","Name":"Intra State Calculation of GST on Resource to SEZ Unit / Development Without Payment of Duty through Sales Order/ Invoice","NodeType":"Use Case","TableID":37,"CaseID":"{969F9BE2-D2C0-4DB5-BD38-F9DAC8AB8173}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112514","Name":"Intra State Calculation of GST on Resource to SEZ Unit through Sales Order/ Invoice-Post GST to Customer.","NodeType":"Use Case","TableID":37,"CaseID":"{882CB936-42D9-4C2D-BFD9-028D5F5D3337}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112515","Name":"Intra State Calculation of GST on Resource to SEZ Development through Sales Order/ Invoice-Post GST to Customer.","NodeType":"Use Case","TableID":37,"CaseID":"{4B114178-6589-41CD-907E-8C46CCDFE895}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112516","Name":"Inter State Calculation of GST on Resource to SEZ Unit / Development Without Payment of Duty through Sales Order/ Invoice","NodeType":"Use Case","TableID":37,"CaseID":"{E28ED0E6-8917-4D81-AD22-29D13FE94091}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112517","Name":"Inter State Calculation of GST on Resource to SEZ Unit / Development through Sales Order/ Invoice-Post GST to Customer","NodeType":"Use Case","TableID":37,"CaseID":"{E9ED8CB8-E0BD-4E8A-88A5-1AA7348ACF20}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112518","Name":"GST Deemed Exports for Resource Without Payment of Duty through Sales Order/ Invoice","NodeType":"Use Case","TableID":37,"CaseID":"{E65CE6AA-C447-466E-A3FE-154D3F5A76DC}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112519","Name":"Inter State Sales of Resource from UnRegistered Customer through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{DF167294-5878-44C6-9220-01D93BEA09FF}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112520","Name":"Inter State Sales of Resource from Unregistered Customer through Sales Order/Invoice without FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{C8BA6CA4-7E8C-4053-980D-451FE32D8EFA}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112550","Name":"End Type - Resource","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112600","Name":"End -Not Exempted","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112601","Name":"Begin FOC","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18157=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112602","Name":"Begin Item","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(2))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112603","Name":"Begin GST Customer Type- Registered","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18158=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112604","Name":"Intra State Sales for Goods from Registered Customer through Sales Order/Invoice With FOC","NodeType":"Use Case","TableID":37,"CaseID":"{6333F9D2-02B8-4FF1-88EE-386041B7FCA4}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112605","Name":"Inter State Sales of Goods from Registered Customer through Sales Order/Invoice for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{C69C8C2B-3445-476C-80ED-776EC67B06D3}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112609","Name":"End GST Customer Type- Registered","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112610","Name":"Begin GST Customer Type- Unregistered","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18158=1(2))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112611","Name":"Intra State Sales of Goods from Unregistered Customer through Sales Order/Invoice for FOC","NodeType":"Use Case","TableID":37,"CaseID":"{A4B4B64C-1D4C-48EE-88E9-4BBC4F05EAE8}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112612","Name":"Inter State Sales of Goods from Unregistered Customer through Sales Order/Invoice for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{E786A7D6-1147-46F6-BB75-1223AAC92007}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112616","Name":"End GST Customer Type- Unregistered","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112617","Name":"Begin GST Customer Type- SEZ Unit","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18158=1(7))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112618","Name":"Export Goods to SEZ Unit With Payment of Duty through Sales Order/Invoice-Post GST to Customer for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{BB38433A-2AE4-492D-8380-D8B5A6F80135}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112619","Name":"Export Goods to SEZ Unit With Payment of Duty through Sales Order/Invoice For FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{F0E83015-3886-4263-A0B7-A97BA3B7753C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112623","Name":"End GST Customer Type- SEZ Unit","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112624","Name":"Begin GST Customer Type- SEZ Development","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18158=1(6))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112625","Name":"Export Goods to SEZ Development With Payment of Duty through Sales Order/Invoice - Post GST to Customer for FOC","NodeType":"Use Case","TableID":37,"CaseID":"{BE591554-5098-41FD-A200-5B5B48C19083}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112626","Name":"Export Goods to SEZ Development With Payment of Duty through Sales Order/Invoice for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{CF0F6DEA-A530-45B3-8B1B-CF86879E9EDA}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112630","Name":"End GST Customer Type- SEZ Development","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112631","Name":"Begin GST Customer Type- Deemed Export","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18158=1(4))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112632","Name":"Intra State Sales for Deemed Export Customer for Goods through Sales Order/Invoice For FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{ADF93FBF-84BB-4DC9-8B87-EADDE08829F0}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112633","Name":"GST Deemed Exports of goods through Sales Order/Invoice for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{4116F9D4-1957-46D1-BCED-580BD21C0908}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112634","Name":"Intra State Sales for Goods for Deemed Export Customer through Sales Order/Invoice-Post GST to Customer for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{17DA0FC6-FC3F-4AB5-A2C7-34D00B649941}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112635","Name":"GST Deemed Exports for Goods With Payment of Duty through Sales Order/Invoice-Post GST to Customer for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{44130B2E-FBA8-47DE-BF1F-AF9145AC13BD}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112637","Name":"EndGST Customer Type- Deemed Export","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112638","Name":"End Item","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112639","Name":"Begin Type- G/L Account","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112640","Name":"Begin GST Customer Type- Registered","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18158=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112641","Name":"Intra State Sales of Services from Registered Customer through Sales Order/Invoice for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{03D7D334-04D2-4EC5-AE88-A67C1409C8BE}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112642","Name":"Inter State Sales of Services from Registered Customer through Sales Order/Invoice for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{08EACBE7-7B68-4B7B-8BCE-8D5D4FAD80F0}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112647","Name":"End GST Customer Type- Registered","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112648","Name":"Begin GST Customer Type- Unregistered","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18158=1(2))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112649","Name":"Intra State Sales of Services from Unregistered Customer through Sales Order/Invoice for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{8D8429D6-2B1A-4081-900E-9D19C312335E}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112650","Name":"Inter State Sales of Services from Unregistered Customer through Sales Order/Invoice for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{EA505D2C-22A0-4B4B-B20F-18A0E1AE2C02}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112653","Name":"End GST Customer Type- Unregistered","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112654","Name":"Begin GST Customer Type- SEZ Unit","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18158=1(7))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112655","Name":"Export Services to SEZ Unit With Payment of Duty through Sales Order/Invoice -Post GST to Customer for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{81345EC6-231D-4274-95D2-302FFE85B903}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112656","Name":"Export Services to SEZ Unit With Payment of Duty through Sales Order/Invoice For FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{FD5FD103-5251-4063-92C9-CCFE016B971B}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112661","Name":"End GST Customer Type- SEZ Unit","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112662","Name":"Begin GST Customer Type- SEZ Development","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18158=1(6))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112663","Name":"Export Services to SEZ Development With Payment of Duty through Sales Order/Invoice -Post GST to Customer For FOC","NodeType":"Use Case","TableID":37,"CaseID":"{6807FDAC-8BCB-4B1A-84FF-882C6A9C15B7}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112664","Name":"Export Services to SEZ Development With Payment of Duty through Sales Order/Invoice for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{0561985A-B2F9-4C9C-BE39-7D6AE423104E}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112669","Name":"End GST Customer Type- SEZ Development","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112670","Name":"Begin GST Customer Type- Deemed Export","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18158=1(4))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112671","Name":"Intra State Sales for Deemed Export Customer for Services through Sales Order/Invoice For FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{3C1D2A94-CBAE-4190-BE50-AD56CF9218D9}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112672","Name":"GST Deemed Exports of Services through Sales Order/Invoice for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{05CEE5AD-FF50-479C-922C-1C51FE10F724}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112673","Name":"Intra State Sales for Services for Deemed Export Customer through Sales Order/Invoice-Post GST to Customer for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{741172E2-8B2D-461D-9081-71145F1316DF}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112674","Name":"End GST Customer Type- Deemed Export","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112675","Name":"End Type- G/L Account","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112676","Name":"Begin Type Resource","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(3))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112677","Name":"Begin GST Customer Type- Registered","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18158=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112678","Name":"Intra State Sales of Resource from Registered Customer through Sales Order/Invoice for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{9E8F612A-6306-4CD0-AA63-8F443733B9B5}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112679","Name":"Inter State Sales of Resource from Registered Customer through Sales Order/Invoice for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{E8ACBB6B-EAAF-46C6-A4EA-EFB502D8E110}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112684","Name":"End GST Customer Type- Registered","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112685","Name":"Begin GST Customer Type- Unregistered","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18158=1(2))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112686","Name":"Intra State Sales of Resource from Unregistered Customer through Sales Order/Invoice for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{DC79D469-98CD-45FF-ADBB-27DFF74D2672}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112687","Name":"Inter State Sales of Resource from Unregistered Customer through Sales Order/Invoice for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{13827C55-0612-40EF-BED1-62D7605B9D68}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112692","Name":"End GST Customer Type- Unregistered","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112693","Name":"Begin GST Customer Type- SEZ Unit","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18158=1(7))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112694","Name":"Intra State Calculation of GST on Resource to SEZ Unit through Sales Order/ Invoice-Post GST to Customer for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{747B1A95-DF79-4286-A38B-A6F98F2D2DE1}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112695","Name":"Intra State Calculation of GST on Resource to SEZ Unit through Sales Order/ Invoice For FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{5582B9B9-2C0C-4036-A0E1-ED20495D47AF}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112701","Name":"End GST Customer Type- SEZ Unit","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112702","Name":"Begin GST Customer Type- SEZ Development","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18158=1(6))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112703","Name":"Intra State Calculation of GST on Resource to SEZ Development through Sales Order/ Invoice-Post GST to Customer for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{8B4B45EC-5B92-4383-935B-DE2E70579CA8}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112704","Name":"Intra State Calculation of GST on Resource to SEZ Development through Sales Order/ Invoice for FOC","NodeType":"Use Case","TableID":37,"CaseID":"{51CD0A49-E8DF-42A3-9180-84D1A7076A42}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112710","Name":"End GST Customer Type- SEZ Development","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112711","Name":"Begin GST Customer Type- Deemed Export","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18158=1(4))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112712","Name":"Intra State Sales for Deemed Export Customer for Resource through Sales Order/Invoice For FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{103E8A37-530C-4FFF-BB01-D298E7DF9FFC}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112713","Name":"GST Deemed Exports for Resource through Sales Order/ Invoice for FOC","NodeType":"Use Case","TableID":37,"CaseID":"{F356E0FE-23C7-4D81-A149-3659F2CEFBB4}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112714","Name":"Intra State Sales for Resource for Deemed Export Customer through Sales Order/Invoice-Post GST to Customer.","NodeType":"Use Case","TableID":37,"CaseID":"{29C6FB1D-F01C-426F-AC3E-76E9122FDB69}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112715","Name":"GST Deemed Exports for Resource With Payment of Duty through Sales Order/Invoice-Post GST to Customer for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{97120CFC-A3A4-4545-8A71-881473ED33C7}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112720","Name":"End GST Customer Type- Deemed Export","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112750","Name":"End Type Resource","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112751","Name":"Begin Type- Fixed Asset","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(4))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112752","Name":"Begin GST Customer Type- Registered","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18158=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112753","Name":"Intra State Sales of Fixed Asset from Registered Customer through Sales Order/Invoice for FOC","NodeType":"Use Case","TableID":37,"CaseID":"{CF89D22F-0CD8-4E3C-A01C-6C159E03E5E6}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112754","Name":"Inter State Sales of Fixed Asset from Registered Customer through Sales Quote/Order/Invoice for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{5860DC76-AE27-4A12-808D-667172BEF336}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112760","Name":"End GST Customer Type- Registered","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112761","Name":"Begin GST Customer Type- Unregistered","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18158=1(2))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112762","Name":"Intra State Sales of Fixed Asset from Unregistered Customer through Sales Order/Invoice for FOC","NodeType":"Use Case","TableID":37,"CaseID":"{84992760-0362-488C-8D49-0DE8065F945C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112763","Name":"Inter State Sales of Fixed Asset from Unregistered Customer through Sales Order/Invoice for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{FBBCEAFB-3B22-4D36-969E-84AB2CDC7859}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112769","Name":"End GST Customer Type- Unregistered","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112770","Name":"Begin GST Customer Type SEZ Unit","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18158=1(7))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112771","Name":"Export Fixed Asset to SEZ Unit With Payment of Duty through Sales Order/Invoice - Post GST to Customer for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{FC888469-0E29-48BA-B417-07D5943D7C45}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112772","Name":"Export Fixed Asset to SEZ Unit With Payment of Duty through Sales Order/Invoice For FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{307349C1-C724-4CB8-8878-7587CC2617EC}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112778","Name":"End GST Customer Type SEZ Unit","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112779","Name":"Begin GST Customer Type- SEZ Development","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18158=1(6))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112780","Name":"Export Fixed Asset to SEZ Development With Payment of Duty through Sales Order/Invoice -Post GST to Customer for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{A8B33288-CA54-4DC6-B3E4-A14E3CCA4EFC}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112781","Name":"Export Fixed Asset to SEZ Development With Payment of Duty through Sales Order/Invoice for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{DA8695B6-D7D7-41E9-BE59-C26A19D03C2C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112789","Name":"End GST Customer Type- SEZ Development","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112790","Name":"Begin GST Customer Type - Deemed Export","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18158=1(4))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112791","Name":"Intra State Sales for Deemed Export Customer for Fixed Assets through Sales Order/Invoice For FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{02A9B37F-66A8-446A-B5B0-703D594FF934}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112792","Name":"GST Deemed Exports of Fixed Asset through Sales Order/Invoice for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{7E2F85F6-FFBA-45FE-80B5-39B654365ACD}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112793","Name":"Intra State Sales for Resource for Deemed Export Customer through Sales Order/Invoice-Post GST to Customer.","NodeType":"Use Case","TableID":37,"CaseID":"{29C6FB1D-F01C-426F-AC3E-76E9122FDB69}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112794","Name":"GST Deemed Exports for Fixed Asset With Payment of Duty through Sales Order/Invoice-Post GST to Customer for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{23F3D552-5B8B-47A9-B217-903567666BCE}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112800","Name":"End GST Customer Type - Deemed Export","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112820","Name":"End Type- Fixed Asset","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112821","Name":"Begin Type G/L Account","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112822","Name":"Begin GST Customer Type Deemed Export","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18158=1(4))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112823","Name":"GST Deemed Exports for Services With Payment of Duty through Sales Order/Invoice-Post GST to Customer for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{53D88A93-5CE2-427C-81F0-6DCFC36F579F}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112826","Name":"End GST Customer Type Deemed Export","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112827","Name":"End Type G/L Account","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112840","Name":"End FOC","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112845","Name":"End Sales Document","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112848","Name":"Sales Return Document","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field1=1(5|3))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112849","Name":"Not Exempted","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18147=1(0))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112850","Name":"Type - G/L Account","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112851","Name":"Intra-State Sales Return of Services to Overseas Place of Supply to Registered Customer Through Sales Return","NodeType":"Use Case","TableID":37,"CaseID":"{44F4B3DF-4625-4E8F-9BE3-53C61B67463B}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112852","Name":"Intra State Sales Return of Services from Registered Customer through Return Order.","NodeType":"Use Case","TableID":37,"CaseID":"{BC238FA9-CAD7-43AB-8E7E-D6FFC7035EE9}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112853","Name":"Inter State Sales Return of Services from Unregistered Customer through Return Order.","NodeType":"Use Case","TableID":37,"CaseID":"{693D346E-069E-4306-9F7C-84665CD42141}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112854","Name":"Inter State Sales Return of Services from Registered Customer through Return Order.","NodeType":"Use Case","TableID":37,"CaseID":"{80BC1B3E-DB26-4E90-B780-43C8BA593655}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112855","Name":"Intra State Sales Return of Services from Unregistered Customer through Return Order.","NodeType":"Use Case","TableID":37,"CaseID":"{8A18FA5B-AD17-43D3-8981-5BB20A04EFA2}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112856","Name":"Intra State Sales Return of Services from Registered Customer through Return Order - POS","NodeType":"Use Case","TableID":37,"CaseID":"{1FF813B4-1776-4717-8C56-8F0E684ACE73}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112857","Name":"Export Return of Services to SEZ Unit With Payment of Duty through Sales Return Order/Credit Memo.","NodeType":"Use Case","TableID":37,"CaseID":"{DB44587F-08FB-4D5F-96A3-6CD4D4E30300}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112858","Name":"Export Return of Services to SEZ Development With Payment of Duty through Sales Return Order/Credit Memo.","NodeType":"Use Case","TableID":37,"CaseID":"{895C47DF-89E2-4A14-9329-5E260C1DBF05}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112859","Name":"Export Return of Services to SEZ Development Without Payment of Duty through Sales Return Order/Credit Memo.","NodeType":"Use Case","TableID":37,"CaseID":"{81E2ACA0-D6DD-4B4A-ADEF-60B602660F25}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112860","Name":"Export Return of Services to SEZ Development With Payment of Duty through Sales Return Order/Credit Memo-Post GST to Customer.","NodeType":"Use Case","TableID":37,"CaseID":"{1DE560C5-73C9-4476-9447-80FC42CD492C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112861","Name":"Export Return of Services to SEZ Unit With Payment of Duty through Sales Return Order/Credit Memo - POst GST to Customer","NodeType":"Use Case","TableID":37,"CaseID":"{8139E94E-D43E-4C24-B6B3-C59F55737321}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112862","Name":"Export Return of Goods to Export Customer for item Type GL Without Payment of Duty through Sales Return Order/Credit Memo","NodeType":"Use Case","TableID":37,"CaseID":"{4738101C-19E3-418C-A19D-61E67100D199}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112890","Name":"End - Type - G/L Account","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112895","Name":"Type - Item","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(2))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112896","Name":"Intra State Sales Return of Goods from Registered Customer through Return Order.","NodeType":"Use Case","TableID":37,"CaseID":"{26581492-A8D9-41EB-B84E-40671AE8CC3C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112897","Name":"Inter State Sales Return of Goods from Unregistered Customer through Return Order.","NodeType":"Use Case","TableID":37,"CaseID":"{77DC6AF2-5D31-4450-8F78-E2F7383B9EAB}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112898","Name":"Intra State Sales Return of Goods from Unregistered Customer through Return Order.","NodeType":"Use Case","TableID":37,"CaseID":"{08F3F188-43F5-441F-AB95-BE332651AD3D}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112899","Name":"Inter State Sales Return of Goods from Registered Customer through Sales Return Order/Credit Memo.","NodeType":"Use Case","TableID":37,"CaseID":"{2167C0D3-971D-481A-86BA-F45FB92025FB}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112900","Name":"Intra State Sales Return of Goods from Registered Customer through Sales Return Order/Credit Memo - Price Including of Tax","NodeType":"Use Case","TableID":37,"CaseID":"{293882EE-DEB8-47A9-BAF1-9221422B247A}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112901","Name":"Inter State Sales Return of Goods from Registered Customer through Sales Return Order/Credit Memo - Price Including of Tax","NodeType":"Use Case","TableID":37,"CaseID":"{77D351AF-2B06-49FB-B72A-CF9980E31A43}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112902","Name":"Export Return of Goods to SEZ Development Without Payment of Duty through Sales Return Order/Credit Memo.","NodeType":"Use Case","TableID":37,"CaseID":"{BCB4C9B2-E212-4971-BE8C-914BC1DAAB1B}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112903","Name":"Export Return of Goods to SEZ Development With Payment of Duty through Sales Return Order/Credit Memo.","NodeType":"Use Case","TableID":37,"CaseID":"{17ED9604-C26D-496C-B2F4-9124166CF719}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112904","Name":"Export Return of Goods to SEZ Unit Without Payment of Duty through Sales Return Order/Credit Memo.","NodeType":"Use Case","TableID":37,"CaseID":"{A8ED1A73-743C-4D08-98E3-6D85C416E951}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112905","Name":"Export Return of Goods to SEZ Unit With Payment of Duty through Sales Return Order/Credit Memo.","NodeType":"Use Case","TableID":37,"CaseID":"{06F95F30-2C34-4CD2-9084-0B9101B9455D}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112906","Name":"Export Return of Goods to SEZ Development With Payment of Duty through Sales Return Order/Credit Memo.","NodeType":"Use Case","TableID":37,"CaseID":"{A744EF89-44A8-4CE0-81F8-3D8094623CD1}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112907","Name":"Export Return of Goods to SEZ Unit With Payment of Duty through Sales Return Order/Credit Memo- Post GST to Customer.","NodeType":"Use Case","TableID":37,"CaseID":"{8153E2CA-FD9A-4A9F-A0E4-A657636F83DB}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112908","Name":"Export Return of Goods to Export Customer Without Payment of Duty through Sales Return Order/Credit Memo","NodeType":"Use Case","TableID":37,"CaseID":"{E607F91D-D6E7-459A-801A-CBB9C7F8CE89}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-112950","Name":"End - Type - Item","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113000","Name":"Type - Resource","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(3))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113001","Name":"Intra-State Sales Return of Resources from Unregistered Customer through Sales Return Order/Credit Memo.","NodeType":"Use Case","TableID":37,"CaseID":"{8F88FDD0-561E-4FEA-A663-4F4BAEC9D009}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113002","Name":"Inter State Sales Return of Resources from Unregistered Customer through Sales Return Order/ Credit Memo","NodeType":"Use Case","TableID":37,"CaseID":"{C9854015-8E55-43F1-A5F2-747FC1CF6A0F}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113003","Name":"Inter State Sales Return of Resources from Registered Customer through Sales Return Order/ Credit Memo","NodeType":"Use Case","TableID":37,"CaseID":"{52BFB82F-A54A-4E62-9DC3-2D608D6373B0}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113004","Name":"Intra-State Sales Return of Resources from Registered Customer through Sales Return Order/Credit Memo.","NodeType":"Use Case","TableID":37,"CaseID":"{6856A59C-FE7F-4DDA-B180-391F6E0D0A5F}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113005","Name":"Export Return of Resource to Export Customer With Payment of Duty through Sales Return Order/Credit Memo.","NodeType":"Use Case","TableID":37,"CaseID":"{AD7D62C2-213F-4288-9506-BE3D205DBB95}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113006","Name":"Export Return of Resource to SEZ Unit With Payment of Duty through Sales Return Order/Credit Memo.","NodeType":"Use Case","TableID":37,"CaseID":"{FD76EB64-C01A-48C0-9F8E-3EE2E17BE515}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113007","Name":"Export Return of Resources to SEZ Unit / Development Without Payment of Duty through Sales Return Order/Credit Memo.","NodeType":"Use Case","TableID":37,"CaseID":"{D500E259-42B6-4346-BA2F-D76ECB9AFEE1}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113008","Name":"Export Return of Resource to SEZ Unit With Payment of Duty through Sales Return Order/Credit Memo-Post GST to Customer.","NodeType":"Use Case","TableID":37,"CaseID":"{E62B6029-1BFA-456D-8D43-306AB7C78589}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113105","Name":"End - Type - Resource","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113106","Name":"Type- Charge Item","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(5))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113107","Name":"Intra State Sales Return of Charge Item from Un-Registered Customer through Sales Return Order/Credit Memo","NodeType":"Use Case","TableID":37,"CaseID":"{41F1CFC3-B9F5-464D-9B6D-2C7B6C83186C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113108","Name":"Inter State Return of Charge Item from Unregistered Customer through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{B3036F44-2238-4DC9-B250-70AA3FEC7821}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113109","Name":"Intra State Sales Return of Charge Item from Registered Customer through Sales Return Order/Credit Memo","NodeType":"Use Case","TableID":37,"CaseID":"{3835C90E-1BDF-4C46-B50E-C5375ED24ED4}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113110","Name":"Inter State Sales Return of Charge Item from Registered Customer through Sales Return Order/Credit Memo","NodeType":"Use Case","TableID":37,"CaseID":"{DBE9B77E-9171-4F5C-A7CA-9156126D34FC}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113111","Name":"Export Return of Goods to Export Customer for item Type Charge Without Payment of Duty through Sales Return Order/Credit Memo","NodeType":"Use Case","TableID":37,"CaseID":"{D8792403-FBC9-455C-8A3A-C67DAFDB6E53}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113112","Name":"Export Return of Charge-Item to SEZ Unit / Development With Payment of Duty through Sales Return Order/Credit Memo.","NodeType":"Use Case","TableID":37,"CaseID":"{609F72CC-C49F-43F1-AB52-E56ED173368B}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113113","Name":"Export Return of Charge-Item to SEZ Unit / Development Without Payment of Duty through Sales Return Order/Credit Memo.","NodeType":"Use Case","TableID":37,"CaseID":"{7F8B0021-4099-48C9-80BB-D977917CEA9E}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113114","Name":"Export Return of Charge-Item to SEZ Unit / Development With Payment of Duty through Sales Return Order/Credit Memo-Post GST to Customer.","NodeType":"Use Case","TableID":37,"CaseID":"{57A0B7F8-E6C5-4CC4-89AD-11A14AF3C68B}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113125","Name":"End Type- Charge Item","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113140","Name":"Type- Fixed Asset","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(4))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113141","Name":"Intra State Sales Return of Fixed Asset from Unregistered Customer through Sales Return Order/ Credit Memo","NodeType":"Use Case","TableID":37,"CaseID":"{884574EB-3354-459C-AF96-6EB624CCEFFE}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113142","Name":"Intra State Sales Return of Fixed Asset from Registered Customer through Sales Return Order/ Credit Memo","NodeType":"Use Case","TableID":37,"CaseID":"{F7C5C8B6-2EB3-478E-AE6B-66BEEB6A3861}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113143","Name":"Inter State Sales Return of Fixed Asset from Registered Customer through Sales Return Order/ Credit Memo","NodeType":"Use Case","TableID":37,"CaseID":"{C915C6D6-9C5D-4C2F-BAB6-50E13850581E}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113144","Name":"Inter State Sales Return of Fixed Asset from UnRegistered Customer through Sales Order/Invoice.","NodeType":"Use Case","TableID":37,"CaseID":"{7627B9EF-CB23-4EAB-88D9-3D894B6F6607}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113145","Name":"Export Return of Fixed Asset to SEZ Unit With Payment of Duty through Sales Return Order/Credit Memo.","NodeType":"Use Case","TableID":37,"CaseID":"{24F69259-FD27-49A7-B5E8-3CBF5351132F}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113146","Name":"Export Return of Fixed Asset to SEZ Unit Without Payment of Duty through Sales Return Order/Credit Memo.","NodeType":"Use Case","TableID":37,"CaseID":"{200C22B1-5DC0-4A80-B377-B14F9613D061}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113147","Name":"Export Return of Fixed Asset to SEZ Development Without Payment of Duty through Sales Return Order/Credit Memo.","NodeType":"Use Case","TableID":37,"CaseID":"{E35E188E-728D-42BE-94F0-4B0476315B0B}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113148","Name":"Export Return of Fixed Asset to SEZ Development With Payment of Duty through Sales Return Order/Credit Memo - Post GST To Customer.","NodeType":"Use Case","TableID":37,"CaseID":"{7D7F45D3-E214-47D5-8CD5-ED31E8F4092F}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113149","Name":"Export Return of Fixed Asset to SEZ Development With Payment of Duty through Sales Return Order/Credit Memo.","NodeType":"Use Case","TableID":37,"CaseID":"{1DD8BB1A-1AA9-4B82-9F6A-80F26AA8675D}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113150","Name":"Export Return of Fixed Asset to SEZ Unit With Payment of Duty through Sales Return Order/Credit Memo- Post GST to Customer.","NodeType":"Use Case","TableID":37,"CaseID":"{C6AFDFC6-874B-4B14-BCC9-8FC5B4992157}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113151","Name":"Export Return of Goods to Export Customer for item Type FA Without Payment of Duty through Sales Return Order/Credit Memo","NodeType":"Use Case","TableID":37,"CaseID":"{AA85EF19-5F94-438E-ADC4-A9ACF0DCB0C1}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113160","Name":"End Type-Fixed Asset","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113161","Name":"Begin No. Not Blank","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field6=1(<>''))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113162","Name":"Export Return of Services to Export Customer With Payment of Duty through Sales Return Order/Credit Memo.","NodeType":"Use Case","TableID":37,"CaseID":"{BB48AD27-2942-4C4A-B19C-4A7E76E181DA}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113163","Name":"Export to SEZ/ SEZ Development /Deemed Export With Payment of Duty through Sales Return Order/ Credit Memo","NodeType":"Use Case","TableID":37,"CaseID":"{D22C3484-E0DE-473F-9D62-2BB1DD4B10B9}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113164","Name":"Export to SEZ/ SEZ Development /Deemed Export Without Payment of Duty through Sales Return Order/ Credit Memo","NodeType":"Use Case","TableID":37,"CaseID":"{2FF34432-5A9D-4C71-AF8B-6DDDC92F0A85}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113165","Name":"Export Return to Deemed Export Customer With Payment of Duty through Sales Return Order/Credit Memo.","NodeType":"Use Case","TableID":37,"CaseID":"{C502F69B-F76D-4D72-B7FC-A272A252590B}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113166","Name":"Export Return to Deemed Export Customer Without Payment of Duty through Sales Return Order/Credit Memo.","NodeType":"Use Case","TableID":37,"CaseID":"{7BE46E73-EF21-4766-B4F2-34558460A2C9}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113167","Name":"Deemed Export With Payment of Duty through Sales Return Order/ Credit Memo-Post GST to Customer.","NodeType":"Use Case","TableID":37,"CaseID":"{2F7B1F64-56F5-48C9-A6B2-A5F7F2BF8A2F}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113168","Name":"Intra-State Sales Return to Deemed Export Customer With Payment of Duty through Sales Return Order/Credit Memo.","NodeType":"Use Case","TableID":37,"CaseID":"{5FB236FB-7619-48A1-92D0-BD12F5C8A5C0}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113169","Name":"Intra-State Sales Return to Deemed Export Customer Without Payment of Duty through Sales Return Order/Credit Memo.","NodeType":"Use Case","TableID":37,"CaseID":"{A030C0C9-951C-4818-8A68-C6D5917C31BF}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113170","Name":"Intra-State Sales Return to Deemed Export Customer With Payment of Duty through Sales Return Order/Credit Memo-Post GST to Customer","NodeType":"Use Case","TableID":37,"CaseID":"{0BD7BB2E-38E6-4254-82CB-713F429D787C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113180","Name":"End No. Not Blank","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113205","Name":"End - Not Exempted","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113305","Name":"Exempted","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18147=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113306","Name":"Intra state Sales Return of Exempted Resources from Registered Customer through Sales Return Order/Credit Memo.","NodeType":"Use Case","TableID":37,"CaseID":"{99E193A6-6A7C-4035-BCC1-F2BC49DC4F86}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113307","Name":"Inter State Sales Return of Exempted from Registered Customer through Sales Return Order/ Credit Memo","NodeType":"Use Case","TableID":37,"CaseID":"{A485DD0E-AB08-49E5-9C7C-1FCA3398AE3F}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113308","Name":"Inter State Sales Return of Exempted Resources from Unregistered Customer through Sales Return Order/ Credit Memo","NodeType":"Use Case","TableID":37,"CaseID":"{A49C7425-A602-4445-873D-BCA89D3C2330}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113309","Name":"Export to SEZ/ SEZ Development /Deemed Export With Payment of Duty through Sales Return Order/ Credit Memo - Exempted","NodeType":"Use Case","TableID":37,"CaseID":"{D187D562-E011-4879-839D-A3CB824D11EC}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113310","Name":"Intra state Sales Return of Exempted Item from Registered Customer through Sales Return Order/Credit Memo.","NodeType":"Use Case","TableID":37,"CaseID":"{1A135F44-7A65-49A6-A08A-C87D453E5837}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113350","Name":"Intra state Sales Return of Exempted Resources from Unregistered Customer through Sales Return Order/Credit Memo.","NodeType":"Use Case","TableID":37,"CaseID":"{C2730DF7-9769-4732-819E-C39124E5E3F8}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113351","Name":"End -Exempted","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113380","Name":"Begin Type Item","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(2))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113381","Name":"Intra state Sales Return of Exempted Goods from Exempted Customer through Sales Return Order/Credit Memo.","NodeType":"Use Case","TableID":37,"CaseID":"{DA8B91D0-1B63-44EE-BA57-0A40B1403080}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113382","Name":"Inter State Sales Return of Exempted Goods from Exempted Customer through Sales Return Order/ Credit Memo","NodeType":"Use Case","TableID":37,"CaseID":"{246B0F60-6CA4-42A1-ACDD-30C38C89D2C4}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113400","Name":"Begin Type Item","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113401","Name":"Begin Type G/L Account","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113402","Name":"Intra state Sales Return of Exempted Services from Exempted Customer through Sales Return Order/Credit Memo.","NodeType":"Use Case","TableID":37,"CaseID":"{D2A96240-2F58-406C-8774-03CD60C28E5D}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113403","Name":"Inter State Sales Return of Exempted Services from Exempted Customer through Sales Return Order/ Credit Memo","NodeType":"Use Case","TableID":37,"CaseID":"{E9E7486C-DBFB-432C-886F-017AD828CE5E}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113420","Name":"End Type - G/L Account","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113421","Name":"Begin Type - Resource","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(3))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113422","Name":"Intra state Sales Return of Resource from Exempted Customer through Sales Return Order/Credit Memo.","NodeType":"Use Case","TableID":37,"CaseID":"{10E9D621-B3A8-49E2-BAA1-EB7D535C0712}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113430","Name":"End Type - Resource","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113431","Name":"Begin Type - Fixed Asset","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(4))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113432","Name":"Inter State Exempted Sales Return of Fixed Assets from Exempted Customer through Sales Return Order/Credit Memo.","NodeType":"Use Case","TableID":37,"CaseID":"{2D2466D5-E651-49FE-A00C-9DE16690874C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113433","Name":"Intra state Sales Return of Exempted Fixed Asset from Exempted Customer through Sales Return Order/Credit Memo.","NodeType":"Use Case","TableID":37,"CaseID":"{1C2FBFBD-A18B-4A5D-819E-043993E5510C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113440","Name":"End Type - Fixed Asset","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113441","Name":"Begin Type - Charge Item","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(5))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113442","Name":"Inter State Sales Return of Exempted Charge Item from Exempted Customer through Sales Return Order/ Credit Memo","NodeType":"Use Case","TableID":37,"CaseID":"{0410BC8A-0231-4947-8ED6-982A68846120}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113443","Name":"Intra state Sales Return of Exempted Charge Item from Exempted Customer through Sales Return Order/Credit Memo.","NodeType":"Use Case","TableID":37,"CaseID":"{3277542B-B49C-4CCD-B661-F72C71CED698}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113445","Name":"End Type - Charge Item","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113449","Name":"Begin FOC","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18157=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113450","Name":"Begin Type Item","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(2))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113451","Name":"Begin GST Customer Type- Registered","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18158=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113452","Name":"Intra State Sales Return of Goods from Registered Customer through Return Order for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{14FC3D2C-3DAF-4C04-AA69-6AE47D0D7552}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113453","Name":"Inter State Sales Return of Goods from Registered Customer through Sales Return Order/Credit Memo for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{A4A8C87F-D458-4DD2-B8E9-8393220FDD2D}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113459","Name":"End GST Customer Type- Registered","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113460","Name":"Begin GST Customer Type- Unregistered","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18158=1(2))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113461","Name":"Intra State Sales Return of Goods from Unregistered Customer through Return Order for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{10CA76A8-8DE4-419A-8220-3DD88D8F8747}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113462","Name":"Inter State Sales Return of Goods from Unregistered Customer through Return Order for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{92CD1D91-1D76-46D8-B2E1-C62C54E62191}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113469","Name":"End GST Customer Type- Unregistered","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113470","Name":"Begin GST Customer Type- SEZ Unit","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18158=1(7))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113471","Name":"Export Return of Goods to SEZ Unit With Payment of Duty through Sales Return Order/Credit Memo- Post GST to Customer for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{31F4991C-5E91-4AF3-B911-39F985BF48C1}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113472","Name":"Export Return of Goods to SEZ Unit With Payment of Duty through Sales Return Order/Credit Memo for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{C3755AFF-81D3-4B1A-85B2-B2C8A60F9EAA}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113479","Name":"End GST Customer Type- SEZ Unit","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113480","Name":"Begin GST Customer Type- SEZ Development","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18158=1(6))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113481","Name":"Export Return of Goods to SEZ Development With Payment of Duty through Sales Return Order/Credit Memo -Post GST to Customer for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{8E881E89-87C1-4745-9529-B82A784E83BE}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113482","Name":"Export Return of Goods to SEZ Development With Payment of Duty through Sales Return Order/Credit Memo for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{270F6442-0097-437D-9F91-5C15BD9EAB4D}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113489","Name":"End GST Customer Type- SEZ Development","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113490","Name":"Begin GST Customer Type- Deemed Export","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18158=1(4))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113491","Name":"Intra-State Sales Return to Deemed Export Customer for Goods With Payment of Duty through Sales Return Order/Credit Memo-Post GST to Customer for FOC","NodeType":"Use Case","TableID":37,"CaseID":"{913AAE94-3AEF-4F6D-80DB-F30FF5E5C067}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113492","Name":"Deemed Export for Goods With Payment of Duty through Sales Return Order/ Credit Memo-Post GST to Customer for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{14586EFF-720D-4670-B023-EA4FBFF96B99}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113493","Name":"Intra-State Sales Return to Deemed Export Customer for Goods With Payment of Duty through Sales Return Order/Credit Memo for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{9654C77E-D850-4AA2-9A47-FB003B1574B2}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113494","Name":"Export Return to Deemed Export Customer With Payment of Duty for Goods through Sales Return Order/Credit Memo for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{88F1A4B3-DCAC-499A-BD7A-A5EBA3EF3CB4}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113499","Name":"EndGST Customer Type- Deemed Export","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113500","Name":"End Type Item","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113501","Name":"Begin Type- G/L Account","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113502","Name":"Begin GST Customer Type- Registered","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18158=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113503","Name":"Intra State Sales Return of Services from Registered Customer through Return Order for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{59157E34-743F-4293-A662-1A9C3D916178}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113504","Name":"Inter State Sales Return of Services from Registered Customer through Return Order for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{D9AA8D5E-8135-47AA-A722-6356873CF5EF}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113507","Name":"End GST Customer Type- Registered","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113508","Name":"Begin GST Customer Type- Unregistered","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18158=1(2))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113509","Name":"Intra State Sales Return of Services from Unregistered Customer through Return Order for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{B8757B78-D36C-4AB7-B532-353006120046}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113510","Name":"Inter State Sales Return of Services from Unregistered Customer through Return Order for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{EFB5634E-C341-4922-9BC9-1CE76AD61D79}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113512","Name":"End GST Customer Type- Unregistered","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113513","Name":"Begin GST Customer Type- SEZ Unit","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18158=1(7))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113514","Name":"Export Return of Services to SEZ Unit With Payment of Duty through Sales Return Order/Credit Memo - POst GST to Customer for FOC","NodeType":"Use Case","TableID":37,"CaseID":"{3397DBB8-098B-4A52-9BFA-E24A12B5F9E7}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113515","Name":"Export Return of Services to SEZ Unit With Payment of Duty through Sales Return Order/Credit Memo for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{0E655E71-19D9-4A10-8A28-FE4AFBA2A7C7}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113517","Name":"End GST Customer Type- SEZ Unit","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113518","Name":"Begin GST Customer Type- SEZ Development","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18158=1(6))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113519","Name":"Export Return of Services to SEZ Development With Payment of Duty through Sales Return Order/Credit Memo-Post GST to Customer for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{DBA2CAA4-8EE2-4DD0-B413-383101DB034E}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113520","Name":"Export Return of Services to SEZ Development With Payment of Duty through Sales Return Order/Credit Memo for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{ABF997C4-D467-4F97-94CD-10AFE3A66B3A}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113523","Name":"End GST Customer Type- SEZ Development","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113524","Name":"Begin GST Customer Type- Deemed Export","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18158=1(4))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113525","Name":"Intra-State Sales Return to Deemed Export Customer for Services With Payment of Duty through Sales Return Order/Credit Memo-Post GST to Customer for FOC","NodeType":"Use Case","TableID":37,"CaseID":"{6CC7879A-5AF1-4FD6-8713-7ECF54ABC412}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113526","Name":"Deemed Export for Services With Payment of Duty through Sales Return Order/ Credit Memo-Post GST to Customer for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{861E4175-2832-49D7-8AF3-96E6C19F8E68}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113527","Name":"Intra-State Sales Return to Deemed Export Customer for Services With Payment of Duty through Sales Return Order/Credit Memo for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{6924DAF8-60F6-4C42-9266-200033C6D3F4}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113528","Name":"Export Return to Deemed Export Customer With Payment of Duty for Service through Sales Return Order/Credit Memo for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{1F11A81C-0551-4B07-AA30-23DA57E0FE16}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113535","Name":"End GST Customer Type- Deemed Export","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113536","Name":"End Type- G/L Account","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113537","Name":"Begin Type- Resource","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(3))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113538","Name":"Begin GST Customer Type- Registered","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18158=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113539","Name":"Intra-State Sales Return of Resources from Registered Customer through Sales Return Order/Credit Memo for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{D6D5AACF-3FC9-4E46-AC66-66CB29D5293E}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113540","Name":"Inter State Sales Return of Resources from Registered Customer through Sales Return Order/ Credit Memo for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{A0D756A0-DC72-49F9-A1F9-B926242C6AD2}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113543","Name":"End GST Customer Type- Registered","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113544","Name":"Begin GST Customer Type- Unregistered","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18158=1(2))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113545","Name":"Intra-State Sales Return of Resources from Unregistered Customer through Sales Return Order/Credit Memo for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{5131A9E4-A281-496F-9AF2-E60DC7D88A50}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113546","Name":"Inter State Sales Return of Resources from Unregistered Customer through Sales Return Order/ Credit Memo for FOC","NodeType":"Use Case","TableID":37,"CaseID":"{40C0504C-93D7-4EC1-A4B8-7FE82C224BE4}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113549","Name":"End GST Customer Type- Unregistered","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113550","Name":"Begin GST Customer Type- SEZ Unit","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18158=1(7))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113551","Name":"Export Return of Resource to SEZ Unit With Payment of Duty through Sales Return Order/Credit Memo-Post GST to Customer for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{1F48109A-8444-4862-B9DA-190182B3FBAC}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113552","Name":"Export Return of Resource to SEZ Unit With Payment of Duty through Sales Return Order/Credit Memo for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{F4C6236C-3805-4826-88FD-EAC2659389B0}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113557","Name":"End GST Customer Type- SEZ Unit","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113558","Name":"Begin GST Customer Type- SEZ Development","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18158=1(6))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113559","Name":"Export Return of Resource to SEZ Unit With Payment of Duty through Sales Return Order/Credit Memo-Post GST to Customer for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{6C740BB7-2090-4E02-8611-2FD65CC51465}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113564","Name":"End GST Customer Type- SEZ Development","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113565","Name":"Begin GST Customer Type- Deemed Export","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18158=1(4))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113566","Name":"Intra-State Sales Return to Deemed Export Customer for Resource With Payment of Duty through Sales Return Order/Credit Memo-Post GST to Customer for FOC","NodeType":"Use Case","TableID":37,"CaseID":"{858CA47F-FA82-4485-91A5-12B2EBF36D6F}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113567","Name":"Deemed Export for Resource With Payment of Duty through Sales Return Order/ Credit Memo-Post GST to Customer for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{220890E5-A6C0-4719-83C5-E2247EF9BEC3}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113568","Name":"Intra-State Sales Return to Deemed Export Customer for Resource With Payment of Duty through Sales Return Order/Credit Memo for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{11D160CF-FD98-4C47-928B-9F4125F584A9}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113569","Name":"Export Return to Deemed Export Customer With Payment of Duty for Resource through Sales Return Order/Credit Memo for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{EBFDB89B-5F22-4386-87CA-72157CBF122D}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113574","Name":"End GST Customer Type- Deemed Export","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113575","Name":"End Type- Resource","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113576","Name":"Begin Type - Fixed Asset","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(4))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113577","Name":"Begin GST Customer Type- Registered","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18158=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113578","Name":"Intra State Sales Return of Fixed Asset from Registered Customer through Sales Return Order/ Credit Memo for FOC","NodeType":"Use Case","TableID":37,"CaseID":"{291465B9-0C22-48B5-9EEA-4006CC372B1A}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113579","Name":"Inter State Sales Return of Fixed Asset from Registered Customer through Sales Return Order/ Credit Memo for FOC","NodeType":"Use Case","TableID":37,"CaseID":"{BFB628D6-4413-4628-B619-013EF3255CE9}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113583","Name":"End GST Customer Type- Registered","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113584","Name":"Begin GST Customer Type- Unregistered","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18158=1(2))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113585","Name":"Intra State Sales Return of Fixed Asset from Unregistered Customer through Sales Return Order/ Credit Memo for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{7AFF7259-D09B-4C62-8575-34BEDEE4A72C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113586","Name":"Inter State Sales Return of Fixed Asset from UnRegistered Customer through Sales Order/Invoice for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{3EAEA83A-B986-4C1E-9231-EDEAC919DE2F}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113590","Name":"End GST Customer Type- Unregistered","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113591","Name":"Begin GST Customer Type SEZ Unit","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18158=1(7))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113592","Name":"Export Return of Fixed Asset to SEZ Unit With Payment of Duty through Sales Return Order/Credit Memo- Post GST to Customer for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{0DD3F665-8D52-487D-A200-9BD69DB0A4A2}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113593","Name":"Export Return of Fixed Asset to SEZ Unit With Payment of Duty through Sales Return Order/Credit Memo for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{10BBEEB9-E622-4899-B4E0-C000CA753E54}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113597","Name":"End GST Customer Type SEZ Unit","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113598","Name":"Begin GST Customer Type- SEZ Development","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18158=1(6))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113599","Name":"Export Return of Fixed Asset to SEZ Development With Payment of Duty through Sales Return Order/Credit Memo - Post GST To Customer For FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{3AD6DDBC-A132-4ABA-B216-73133B85604A}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113600","Name":"Export Return of Fixed Asset to SEZ Development With Payment of Duty through Sales Return Order/Credit Memo for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{902158A0-97D5-4075-943E-3B30B800FB78}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113608","Name":"End GST Customer Type- SEZ Development","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113609","Name":"Begin GST Customer Type - Deemed Export","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18158=1(4))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113610","Name":"Intra-State Sales Return to Deemed Export Customer for Fixed Asset With Payment of Duty through Sales Return Order/Credit Memo-Post GST to Customer for FOC","NodeType":"Use Case","TableID":37,"CaseID":"{5629EBAA-46B2-4DD7-9511-1D6E697A6B0A}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113611","Name":"Deemed Export for Fixed Asset With Payment of Duty through Sales Return Order/ Credit Memo-Post GST to Customer for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{4BFA98D3-CEF3-4573-B464-9E897EB9D4AE}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113612","Name":"Intra-State Sales Return to Deemed Export Customer for Fixed Asset With Payment of Duty through Sales Return Order/Credit Memo for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{B3793372-9AD2-4F36-BA5C-3AF13BE44F2D}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113613","Name":"Export Return to Deemed Export Customer With Payment of Duty for Fixed Asset through Sales Return Order/Credit Memo for FOC.","NodeType":"Use Case","TableID":37,"CaseID":"{321E0F7B-A15D-4CE6-9C11-BF3FD3DEE918}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113620","Name":"End GST Customer Type - Deemed Export","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113630","Name":"End Type - Fixed Asset","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113635","Name":"End FOC","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-113639","Name":"End- Sales Return Document","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-114640","Name":"End Sales","NodeType":"End","TableID":0,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-114645","Name":"Purchase","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field7=1(<>''),Field18080=1(<>''),Field18096=1(<>''))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-114650","Name":"Purchase Document","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field1=1(0|1|2|4))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-114660","Name":"GST Reverse Charge -No","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18085=1(0))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-114670","Name":"Exempted","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18082=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-114672","Name":"Intra State Purchase of Service from Composite Vendor/Supplier of exempted goods with no GST Impact through Purchase Quote/Order/Invoice","NodeType":"Use Case","TableID":39,"CaseID":"{536EFB4F-1EBC-4731-861E-433F3BA23A4A}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-114673","Name":"Intra State Purchase of Goods from Composite Vendor/Supplier of exempted goods with no GST Impact through Purchase Quote/Order/Invoice","NodeType":"Use Case","TableID":39,"CaseID":"{93FE03BD-63C7-44B5-B40D-5974C8300527}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-114800","Name":"End Exempted","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-114850","Name":"Exempted No","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18082=1(0))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-114851","Name":"Inter State Purchase of Goods from Composite Vendor/Supplier of exempted goods with no GST Impact through Purchase Quote/Order/Invoice","NodeType":"Use Case","TableID":39,"CaseID":"{01C97F7D-4263-4387-84E1-610D2EA4A762}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-114853","Name":"Intra State Purchase of Resource from Composite Vendor/Supplier with no GST Impact through Purchase Quote/Order/Invoice.","NodeType":"Use Case","TableID":39,"CaseID":"{78A245B3-3BAB-4347-B09A-FDE73A600BB2}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-114854","Name":"Inter State Purchase of Resource from Composite Vendor/Supplier with no GST Impact through Purchase Quote/Order/Invoice.","NodeType":"Use Case","TableID":39,"CaseID":"{94FF400C-34A8-4760-A4E5-C4B367739FA3}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-114855","Name":"Intra State Purchase of Goods from Composite Vendor/Supplier of exempted goods with no GST Impact through Purchase Quote/Order/Invoice","NodeType":"Use Case","TableID":39,"CaseID":"{93FE03BD-63C7-44B5-B40D-5974C8300527}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-114856","Name":"Intra State Purchase of Goods from Composite Vendor/Supplier of exempted goods with no GST Impact through Purchase Quote/Order/Invoice With Bill To-Loc","NodeType":"Use Case","TableID":39,"CaseID":"{51395C06-549D-40B5-98C5-A7F6B73AF427}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-114857","Name":"Inter State Purchase of Goods from Composite Vendor/Supplier of exempted goods with no GST Impact through Purchase Quote/Order/Invoice with Bill To-Loc","NodeType":"Use Case","TableID":39,"CaseID":"{131AC7D7-6079-4C25-A3A6-CEAC66A6203D}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-114858","Name":"Intra State Purchase of G/L Account from Composite Vendor/Supplier of exempted goods with no GST Impact through Purchase Quote/Order/Invoice","NodeType":"Use Case","TableID":39,"CaseID":"{D7A29410-A685-41B6-A8F9-268D65F062B6}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-114859","Name":"Inter State Purchase of G/L Account from Composite Vendor/Supplier of exempted goods with no GST Impact through Purchase Quote/Order/Invoice","NodeType":"Use Case","TableID":39,"CaseID":"{4DC1D2DC-A8F8-4443-A563-348B8E8961C1}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-114860","Name":"Inter-State Purchase of Charge Item from Sez Vendor when Input Tax Credit is Not Available Through Purchase Invoice/Order/Quote","NodeType":"Use Case","TableID":39,"CaseID":"{85DAE7D1-95AC-4FD1-B1E0-5FFD980481BF}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-114861","Name":"Inter State Purchase of Charge Item from Composite Vendor/Supplier of exempted goods with no GST Impact through Purchase Quote/Order/Invoice","NodeType":"Use Case","TableID":39,"CaseID":"{0E1A782B-CF1F-4CF0-8797-A1310519B1DB}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-114862","Name":"Intra State Purchase of Charge Item from Composite Vendor/Supplier of exempted goods with no GST Impact through Purchase Quote/Order/Invoice","NodeType":"Use Case","TableID":39,"CaseID":"{3E14881B-DB97-473E-9A0B-C8A0A2D604C1}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115000","Name":"End Exempted No","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115100","Name":"End GST Reverse Charge -No","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115150","Name":"GST Reverse Charge","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18085=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115151","Name":"Exempted No","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18082=1(0))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115152","Name":"Inter-State Purchase of Goods from Registered Vendor when Input Tax Credit is Available Through Purchase Invoice Type-Debit Note","NodeType":"Use Case","TableID":39,"CaseID":"{2AB850AD-528A-498A-9E23-65E396AC61A8}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115153","Name":"Intra-State Purchase of Goods from Registered Vendor when Input Tax Credit is Available Through Purchase Invoice Type-Debit Note","NodeType":"Use Case","TableID":39,"CaseID":"{B064E1CD-DB51-456E-AE19-7F2AC8C9DC11}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115154","Name":"Intra-State Purchase of Goods from Registered Vendor when Input Tax Credit is Available Through Purchase Invoice/Order/Quote - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{89071509-BF13-4ED5-A45D-8D938DFEF265}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115200","Name":"End Exempted No","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115201","Name":"Exempted Yes","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18082=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115202","Name":"Import of Goods from Foreign Vendor where Input Tax Credit is Available through Purchase Order/Invoice for Exempted Goods","NodeType":"Use Case","TableID":39,"CaseID":"{700CF31E-E4A1-4183-AEF6-7C572C34C8AD}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115203","Name":"Inter State Purchase of Exempted Goods for Import Vendor","NodeType":"Use Case","TableID":39,"CaseID":"{DF5E22A4-BD3C-4C80-B6D3-9F667C8037DD}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115205","Name":"End Exempted Yes","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115250","Name":"GST Credit-Availment","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18095=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115300","Name":"Type GL Account","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115301","Name":"Import of Services from Foreign Vendor where Input Tax Credit is Available through Purchase Quote.","NodeType":"Use Case","TableID":39,"CaseID":"{118F40D5-2D0E-45D6-B458-52D6BF00A035}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115302","Name":"Import of Services from Foreign Vendor where Input Tax Credit is Available through Purchase Order/Invoice","NodeType":"Use Case","TableID":39,"CaseID":"{8D8A9485-D248-4B9B-AB8C-EEDB746B190C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115350","Name":"End Type GL Account","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115351","Name":"Type Item","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(2))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115352","Name":"Import of Goods from Foreign Vendor where Input Tax Credit is Available through Purchase Quote.","NodeType":"Use Case","TableID":39,"CaseID":"{20913086-F0CD-4AC8-AF0A-755723E44946}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115353","Name":"Import of Goods from Foreign Vendor where Input Tax Credit is Available through Purchase Order/Invoice","NodeType":"Use Case","TableID":39,"CaseID":"{71EC1D59-01EC-4486-8CB4-0957D4ADF38B}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115354","Name":"Import of Goods from Foreign Vendor where Input Tax Credit is Available through Purchase Order/Invoice - For GST Reverse Charge.","NodeType":"Use Case","TableID":39,"CaseID":"{D279BE29-1CB8-4F96-BA2C-0348368D0879}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115400","Name":"End Type Item","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115401","Name":"Begin Type Charge Item","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(5))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115402","Name":"Inter-State Purchase of Charge Item from Registered Vendor when Input Tax Credit is Available Through Purchase Invoice/Order/Quote - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{FB4C68ED-BD93-4229-B1BB-91163250C066}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115403","Name":"Intra-State Purchase of Charge Item from Registered Vendor when Input Tax Credit is Available Through Purchase Invoice/Order/Quote With Reverse Charge.","NodeType":"Use Case","TableID":39,"CaseID":"{9154D0D0-5D85-40BE-889D-764E65F8691C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115404","Name":"Import of Service from Foreign Vendor where Input Tax Credit is Available through Purchase Order/Invoice for Charge (Item)","NodeType":"Use Case","TableID":39,"CaseID":"{B8A8C947-5BA0-45B4-B8A4-33088F25782F}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115415","Name":"End Type Charge Item","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115450","Name":"End GST Credit-Availment","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115451","Name":"GST Credit-Non Availment","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18095=1(2))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115452","Name":"Type Item","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(2))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115453","Name":"Import of Goods from Foreign Vendor where Input Tax Credit is Not Available through Purchase Quote.","NodeType":"Use Case","TableID":39,"CaseID":"{AE939960-28B0-426C-B5D7-D8535B9AE3C9}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115454","Name":"Import of Goods from Foreign Vendor where Input Tax Credit is Not Available through Purchase Order/Invoice","NodeType":"Use Case","TableID":39,"CaseID":"{27255CC6-70FC-4D33-91F1-5B83F03CE33E}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115500","Name":"End Type Item","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115501","Name":"Type GL Account","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115502","Name":"Import of Services from Foreign Vendor where Input Tax Credit is not available through Purchase Quote.","NodeType":"Use Case","TableID":39,"CaseID":"{9167AE32-6B66-48FB-AF03-35D261A7C5BC}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115503","Name":"Import of Services without Input Tax Credit available from Foreign Vendor.","NodeType":"Use Case","TableID":39,"CaseID":"{F1AFD035-5F0A-4DD2-B15E-E0EEF0BA43D7}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115506","Name":"Import of Services from Foreign Vendor where Input Tax Credit is not available through Purchase Order/Invoice","NodeType":"Use Case","TableID":39,"CaseID":"{387B69F6-70EC-4BCC-A4C0-AA1CFAB0D356}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115507","Name":"Inter-State Purchase of Services from Unregistered Vendor where Input Tax Credit Not Available -Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{62A4192A-86D8-4431-A641-78EF2F348546}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115550","Name":"End Type GL Account","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115551","Name":"Type-Resource","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(3))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115552","Name":"Intra-State Purchase of Resource from Registered Vendor where Input Tax Credit Not Available - Reverse Charge.","NodeType":"Use Case","TableID":39,"CaseID":"{A0CED092-3AAD-4121-A5A2-F4DEAC316621}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115553","Name":"Inter-State Purchase of Resource from Registered Vendor when Input Tax Credit is Not Available Through Purchase Invoice/Order/Quote - Reverse Charge.","NodeType":"Use Case","TableID":39,"CaseID":"{FED218A8-8C3F-43D9-BBD5-E8BCBB30D8BD}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115554","Name":"Inter-State Purchase of Resource from UnRegistered Vendor when Input Tax Credit is Not Available Through Purchase Invoice/Order/Quote.","NodeType":"Use Case","TableID":39,"CaseID":"{C340D02B-697D-414F-9082-E4CC9B4B2A3B}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115555","Name":"Intra-State Purchase of Resource from Unregistered Vendor where Input Tax Credit Not Available - Reverse Charge.","NodeType":"Use Case","TableID":39,"CaseID":"{0EE4D825-CC7B-458D-9165-D32635F56F41}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115556","Name":"Intra-State Purchase of Resource From UnRegistered Vendor where Input Tax Credit Not Available through Purchase Quote.","NodeType":"Use Case","TableID":39,"CaseID":"{38BC1AAB-3066-483F-811E-E147662D48C6}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115580","Name":"End Type-Resource","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115581","Name":"Begin Type-Charge Item","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(5))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115582","Name":"Inter-State Purchase of Charge Item from Registered Vendor when Input Tax Credit is Not Available Through Purchase Invoice/Order/Quote - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{1C3087C6-66E1-4D66-8133-DF7F13FDB0D5}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115583","Name":"Intra-State Purchase of Charge Item from Registered Vendor when Input Tax Credit is Not Available Through Purchase Invoice/Order/Quote - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{C7BA99E0-7A62-41C9-93C4-36BDAD52C328}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115584","Name":"Import of Charge from Foreign Vendor where Input Tax Credit is Not Available through Purchase Order/Invoice","NodeType":"Use Case","TableID":39,"CaseID":"{BFCC5C7F-F391-44D5-84F1-1D72DC7A9DEC}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115595","Name":"End Type-Charge Item","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115649","Name":"End GST Credit-Non Availment","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115650","Name":"End GST Reverse Charge","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115651","Name":"Extempted -No","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18082=1(0))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115652","Name":"GST Credit-Availment","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18095=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115653","Name":"Type-Item","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(2))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115654","Name":"Import of goods with Input Tax Credit available from SEZ Vendor with cover of Bill of Entry","NodeType":"Use Case","TableID":39,"CaseID":"{4D6EF305-AE45-4735-9E9A-C9428D139D38}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115655","Name":"Import of goods with Input Tax Credit available from SEZ Vendor without cover of Bill of Entry","NodeType":"Use Case","TableID":39,"CaseID":"{24E498DD-9DFB-4097-9F32-C8EBD49B8D22}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115656","Name":"ISD - Intra-State Purchase of Goods from Registered Vendor when Input Tax Credit is Available Through Purchase Invoice/Order/Quote","NodeType":"Use Case","TableID":39,"CaseID":"{E8B90257-9F0D-42F4-A340-13A648D11829}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115657","Name":"ISD - Inter-State Purchase of Goods from Registered Vendor when Input Tax Credit is Available Through Purchase Invoice/Order","NodeType":"Use Case","TableID":39,"CaseID":"{874048A6-575B-456F-A2E7-26532DA3F1CA}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115659","Name":"Inter-State Purchase of Goods from Registered Vendor when Input Tax Credit is Available Through Purchase Invoice/Order","NodeType":"Use Case","TableID":39,"CaseID":"{2C80FA78-CBBE-45E7-8C62-5010B692AC9C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115660","Name":"Inter-State Purchase of Goods from UnRegistered Vendor where Input Tax Credit is available","NodeType":"Use Case","TableID":39,"CaseID":"{FF5D43D6-C93E-42D5-9CD3-E3FCA99E77DD}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115661","Name":"Intra-State Purchase of Goods from Unregistered Vendor when Input Tax Credit is Available Through Purchase Invoice/Order/Quote-Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{94D31994-F430-4825-A72E-D41F51F63952}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115662","Name":"Intra-State Purchase of Goods from Registered Vendor when Input Tax Credit is Available Through Purchase Invoice/Order/Quote","NodeType":"Use Case","TableID":39,"CaseID":"{53AA1183-8DEC-4542-A708-317C5CD7BDA9}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115663","Name":"Inter-State Purchase of Goods from Registered Vendor when Input Tax Credit is Available with Bill to Location(POS) through Purchase Invoice/Order","NodeType":"Use Case","TableID":39,"CaseID":"{E75A7A67-D332-41BE-B7EA-61C8BF69E9F7}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115664","Name":"Intra-State Purchase of Goods from Registered Vendor when Input Tax Credit is Available Bill to Location(POS) Through Purchase Invoice/Order/Quote","NodeType":"Use Case","TableID":39,"CaseID":"{1440B152-A710-4982-86C0-5C27FEF4A7D6}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115665","Name":"Intra-State Purchase of Goods from Unregistered Vendor when Input Tax Credit is Available With Bill To-Loc Through Purchase Invoice/Order/Quote-Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{A8B3F6FB-A42D-4767-BD3D-D4C9BB11AEAA}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115666","Name":"Inter-State Purchase of Goods from UnRegistered Vendor where Input Tax Credit is available With Bill To-Loc","NodeType":"Use Case","TableID":39,"CaseID":"{B86AA24C-78CF-4F29-BD88-E17580D6992B}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115667","Name":"Inter-State Purchase of Goods from Registered Vendor when Input Tax Credit is Available Through Purchase Invoice/Order/Quote - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{7BDD3EE0-29AE-4C15-A879-1DBF13ADA019}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115668","Name":"Intra-State Purchase of Goods from Registered Vendor when Input Tax Credit is Available Through Purchase Invoice/Order/Quote for FOC","NodeType":"Use Case","TableID":39,"CaseID":"{9FE211A9-770A-4396-BE84-B9625D975180}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115669","Name":"Inter-State Purchase of Goods from Registered Vendor when Input Tax Credit is Available Through Purchase Invoice/Order for FOC","NodeType":"Use Case","TableID":39,"CaseID":"{B7A4D05E-75C4-47F5-B502-9510B13E2DEA}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115700","Name":"End Type-Item","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115701","Name":"Type-GL Account","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115702","Name":"Import of Services from Import Associate Vendor where Input Tax Credit is Available.","NodeType":"Use Case","TableID":39,"CaseID":"{BACBB54A-0D30-4206-AA6A-5CF48A744D5E}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115703","Name":"Intra-State Purchase of Services from Registered Vendor when Input Tax Credit is Available Through Purchase Invoice/Order/Quote","NodeType":"Use Case","TableID":39,"CaseID":"{9568C93C-FC46-477D-B554-A8EACAEAF21A}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115704","Name":"Inter-State Purchase of Service from Registered Vendor when Input Tax Credit is Available Through Purchase Invoice/Order","NodeType":"Use Case","TableID":39,"CaseID":"{F85B9211-93F9-4443-9784-BE52C220CE24}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115705","Name":"ISD - Intra-State Purchase of Services from Registered Vendor when Input Tax Credit is Available Through Purchase Invoice/Order/Quote ","NodeType":"Use Case","TableID":39,"CaseID":"{EF5146EB-771F-4DCE-80E7-ACC0B606829F}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115706","Name":"(POS) Intra-State Purchase of Services for Overseas Place of Supply from Registered Vendor where Input Tax Credit is available","NodeType":"Use Case","TableID":39,"CaseID":"{0027CF9D-DA15-43A2-83D4-5CD214E0278B}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115707","Name":"ISD-Inter-State Purchase of Service from Registered Vendor when Input Tax Credit is Available Through Purchase Invoice/Order","NodeType":"Use Case","TableID":39,"CaseID":"{700AF8A2-1315-41BC-9FE9-E00FB826DC80}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115708","Name":"Inter-State Purchase of Services from Unregistered Vendor where Input Tax Credit is available","NodeType":"Use Case","TableID":39,"CaseID":"{8A057230-A2A9-4E59-8101-9A947A8D8B91}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115709","Name":"Intra-State Purchase of Services from Registered Vendor when Input Tax Credit is Available Through Purchase Invoice/Order/Quote - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{FC1AEFDA-0537-4D94-A576-F542B6710B71}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115710","Name":"Inter-State Purchase of Services from Registered Vendor when Input Tax Credit is Available Through Purchase Invoice/Order/Quote - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{5F9FDC49-A99D-4F72-AA5F-4E0BF5B3AC34}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115711","Name":"Intra-State Purchase of Services from Unregistered Vendor when Input Tax Credit is Available Through Purchase Invoice/Order/Quote - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{31C539BE-990C-4E00-AF1A-6BFA1333ED7E}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115712","Name":"Import of Services with Input Tax Credit available from SEZ Vendor with cover of Bill of Entry ","NodeType":"Use Case","TableID":39,"CaseID":"{B03B25F1-806F-4CE3-86A2-A65BBE1F8360}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115713","Name":"Import of Services with Input Tax Credit available from SEZ Vendor with cover of Bill of Entry and GST Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{C2D132AB-4A23-47FC-9A25-EEB973689456}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115714","Name":"Intra-State Purchase of Services from Registered Vendor when Input Tax Credit is Available Through Purchase Invoice/Order/Quote for FOC","NodeType":"Use Case","TableID":39,"CaseID":"{04BA2F8D-9562-4551-8A98-C61CE5509B47}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115715","Name":"Inter-State Purchase of Service from Registered Vendor when Input Tax Credit is Available Through Purchase Invoice/Order for FOC","NodeType":"Use Case","TableID":39,"CaseID":"{19625BAB-02B9-42E1-80EF-FED88D13FF40}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115750","Name":"End Type-GL Account","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115751","Name":"Type-Fixed Asset","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(4))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115752","Name":"Import of Fixed Asset with Input Tax Credit available from SEZ Vendor with cover of Bill of Entry","NodeType":"Use Case","TableID":39,"CaseID":"{E076372D-BFB5-4911-B6EE-85F1F71B1569}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115753","Name":"Import of Fixed Asset with Input Tax Credit available from Import Vendor with cover of Bill of Entry","NodeType":"Use Case","TableID":39,"CaseID":"{7E44665E-5E48-4F98-8E9A-135669D3E75B}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115754","Name":"Inter-State Purchase of Fixed Asset from Registered Vendor where Input Tax Credit is available","NodeType":"Use Case","TableID":39,"CaseID":"{C02EF3F0-A659-4762-854B-830A8D59B371}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115755","Name":"Intra State Purchase of Fixed Asset from Exempted Vendor/Supplier of exempted (Availment) goods with no GST Impact through Purchase Quote/Order/Invoice","NodeType":"Use Case","TableID":39,"CaseID":"{4753502A-0359-4A8C-A37C-4DB4B6FCD790}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115756","Name":"Intra-State Purchase of Fixed Asset from Registered Vendor when Input Tax Credit is Available Through Purchase Invoice/Order/Quote","NodeType":"Use Case","TableID":39,"CaseID":"{4852FE50-F64A-454F-B43F-D46FE4BABECB}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115757","Name":"Inter State Purchase of Fixed Asset from Exempted Vendor/Supplier of exempted goods(Availment) with no GST Impact through Purchase Quote/Order/Invoice","NodeType":"Use Case","TableID":39,"CaseID":"{7C939AC1-1919-4919-A0D0-B62E3C72B382}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115758","Name":"Intra State Purchase of Fixed Asset from Composite Vendor/Supplier of exempted (Availment) goods with no GST Impact through Purchase Quote/Order/Invoice","NodeType":"Use Case","TableID":39,"CaseID":"{975372FC-F93D-4E8B-81EA-57B6751B9F94}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115759","Name":"Inter State Purchase of Fixed Asset from Composite Vendor/Supplier of exempted goods(Availment) with no GST Impact through Purchase Quote/Order/Invoice","NodeType":"Use Case","TableID":39,"CaseID":"{B69B4BDA-5CAC-4C9C-B4DB-211912D30EF2}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115760","Name":"Inter-State Purchase of Fixed Asset from UnRegistered Vendor where Input Tax Credit is available","NodeType":"Use Case","TableID":39,"CaseID":"{F3E7CEF3-5437-42EC-9DED-FE81F994FFCB}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115761","Name":"Intra-State Purchase of Fixed Asset from Unregistered Vendor when Input Tax Credit is Available Through Purchase Invoice/Order/Quote","NodeType":"Use Case","TableID":39,"CaseID":"{B83A838B-C0A8-4E69-B735-86D011229B1C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115762","Name":"Import of Fixed Asset with Input Tax Credit available from SEZ Vendor without cover of Bill of Entry","NodeType":"Use Case","TableID":39,"CaseID":"{A7ED2E31-2CA7-4D60-A415-31A78736388D}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115763","Name":"Intra-State Purchase of Fixed Asset from Registered Vendor when Input Tax Credit is Available Bill to Location(POS) Through Purchase Invoice/Order/Quote","NodeType":"Use Case","TableID":39,"CaseID":"{8B96F1E1-FC2C-48FD-AD1E-62986961AC0D}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115764","Name":"Inter-State Purchase of Fixed Asset from Registered Vendor when Input Tax Credit is Available with Bill to Location(POS) through Purchase Invoice/Order","NodeType":"Use Case","TableID":39,"CaseID":"{FCC8AA84-E16B-4D3F-A139-946089738FB0}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115765","Name":"Inter-State Purchase of Fixed Asset from UnRegistered Vendor where Input Tax Credit is available With Bill To-Loc","NodeType":"Use Case","TableID":39,"CaseID":"{E246F7FE-DE34-4E3C-BD3B-D8943D9B966C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115766","Name":"Intra-State Purchase of Fixed Asset from Unregistered Vendor when Input Tax Credit is Available With Bill To-Loc Through Purchase Invoice/Order/Quote-Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{E365B9AF-953A-462B-A562-9B494D0B84B9}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115767","Name":"Inter State Purchase of Fixed Asset from Composite Vendor/Supplier of exempted fixed asset with no GST Impact through Purchase Quote/Order/Invoice with Bill To-Loc","NodeType":"Use Case","TableID":39,"CaseID":"{DA3FC765-67AA-4232-8C30-6CE3E6E6DFDC}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115768","Name":"Import of Goods with Fixed Asset from Foreign Vendor where Input Tax Credit is Available through Purchase Order/Invoice","NodeType":"Use Case","TableID":39,"CaseID":"{D9172942-78EB-4305-950C-C9DEC70F16E6}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115769","Name":"Intra-State Purchase of Fixed Asset from Registered Vendor when Input Tax Credit is Available Through Purchase Invoice/Order/Quote for FOC","NodeType":"Use Case","TableID":39,"CaseID":"{F7997B96-631E-456D-9FA2-028ADEC745C1}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115770","Name":"Inter-State Purchase of Fixed Asset from Registered Vendor where Input Tax Credit is available for FOC","NodeType":"Use Case","TableID":39,"CaseID":"{5E2D969D-2A4B-4288-900B-7D1527F80A8E}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115800","Name":"End Type-Fixed Asset","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115801","Name":"Type-Charge Item","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(5))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115802","Name":"Inter-State Purchase of Charge Item from Registered Vendor where Input Tax Credit is available","NodeType":"Use Case","TableID":39,"CaseID":"{21957E13-9751-40A2-B591-67ADE93573E7}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115803","Name":"Intra-State Purchase of Charge Item from Registered Vendor when Input Tax Credit is Available Through Purchase Invoice/Order/Quote","NodeType":"Use Case","TableID":39,"CaseID":"{4F234B8B-1B95-4938-B3DF-3D96784EAC77}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115804","Name":"Inter-State Purchase of Charge Item from UnRegistered Vendor where Input Tax Credit is available","NodeType":"Use Case","TableID":39,"CaseID":"{AB0E6CA2-960E-4D6F-A7C6-D461F268627F}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115805","Name":"Intra-State Purchase of Charge Item from UnRegistered Vendor when Input Tax Credit is Available Through Purchase Invoice/Order/Quote - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{72511E89-CA1E-4749-8648-F1EFD6F61D44}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115806","Name":"Intra-State Purchase of Charge Item from Registered Vendor when Input Tax Credit is Available Bill to Location(POS) Through Purchase Invoice/Order/Quote","NodeType":"Use Case","TableID":39,"CaseID":"{0ABF122D-4ED5-4820-8411-7C39147B2819}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115807","Name":"Inter-State Purchase of Charge Item from Registered Vendor when Input Tax Credit is Available with Bill to Location(POS) through Purchase Invoice/Order","NodeType":"Use Case","TableID":39,"CaseID":"{CD837506-8D55-4E71-8576-FA6B9934A6BB}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115808","Name":"Inter-State Purchase of Charge Item from UnRegistered Vendor where Input Tax Credit is available With Bill To-Loc","NodeType":"Use Case","TableID":39,"CaseID":"{1DD024D8-C5D0-44DC-BD2E-3B4A395F33FE}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115809","Name":"Intra-State Purchase of Charge Item from Unregistered Vendor when Input Tax Credit is Available With Bill To-Loc Through Purchase Invoice/Order/Quote-Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{8EE30985-1662-4A16-B9B1-2C36589F4F94}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115810","Name":"Intra State Purchase of Charge Item from Composite Vendor/Supplier of exempted (Availment) goods with no GST Impact through Purchase Quote/Order/Invoice","NodeType":"Use Case","TableID":39,"CaseID":"{2A0E0C4E-331F-42B3-96D2-F9CFF01E6FC1}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115811","Name":"Inter State Purchase of Charge Item from Composite Vendor/Supplier of exempted charge item with no GST Impact through Purchase Quote/Order/Invoice with Bill To-Loc","NodeType":"Use Case","TableID":39,"CaseID":"{714E77D3-C569-418A-A932-DBFF272D3B92}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115812","Name":"Import of Charge Item with Input Tax Credit available from SEZ Vendor with cover of Bill of Entry","NodeType":"Use Case","TableID":39,"CaseID":"{B95176D6-58FF-487C-A25B-26E433D85356}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115813","Name":"Import with Input Tax Credit for Charge Item available from SEZ Vendor with cover of Bill of Entry ","NodeType":"Use Case","TableID":39,"CaseID":"{13E5D66F-422B-4830-992B-39C740D6D560}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115814","Name":"Import of Charge with Input Tax Credit available from SEZ Vendor with Bill of Entry","NodeType":"Use Case","TableID":39,"CaseID":"{8E537871-C8F7-4E07-8B32-84411C668443}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115815","Name":"Inter-State Purchase of Charge Item from Sez Vendor where Input Tax Credit is available","NodeType":"Use Case","TableID":39,"CaseID":"{05312E80-BE4E-4EB1-9A1E-AF55EA4D8E3D}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115850","Name":"End Type-Charge Item","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115851","Name":"Type-Resource","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(3))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115852","Name":"Inter-State Purchase of Resource from Registered Vendor when Input Tax Credit is Available Through Purchase Invoice/Order/Quote.","NodeType":"Use Case","TableID":39,"CaseID":"{EC4815D3-A78F-4C4F-8C64-8FE9AF09050C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115853","Name":"Intra-State Purchase of Resource from Registered Vendor when Input Tax Credit is Available Through Purchase Invoice/Order/Quote.","NodeType":"Use Case","TableID":39,"CaseID":"{4AC1A712-CC9B-4CB7-91EA-05245C1D7211}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115854","Name":"Intra-State Purchase of Resource from Registered Vendor when Input Tax Credit is Available Through Purchase Invoice/Order/Quote - Reverse Charge.","NodeType":"Use Case","TableID":39,"CaseID":"{F5EA246D-523F-4FFA-B316-967933F01C16}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115855","Name":"Inter-State Purchase of Resource from Registered Vendor when Input Tax Credit is Available Through Purchase Invoice/Order/Quote - Reverse Charge.","NodeType":"Use Case","TableID":39,"CaseID":"{7342ECF9-7916-4923-AC4C-71E973942346}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115856","Name":"Intra-State Purchase of Resource from UnRegistered Vendor when Input Tax Credit is Available Through Purchase Invoice/Order/Quote.","NodeType":"Use Case","TableID":39,"CaseID":"{0FD2A76A-DECB-4FAC-8008-10D6762CDAFE}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115857","Name":"Inter-State Purchase of Resource from UnRegistered Vendor when Input Tax Credit is Available Through Purchase Invoice/Order/Quote.","NodeType":"Use Case","TableID":39,"CaseID":"{20C477FD-F60A-4D5C-B919-BF3082993511}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115858","Name":"Import of Resource with Input Tax Credit available from SEZ Vendor with cover of Bill of Entry","NodeType":"Use Case","TableID":39,"CaseID":"{A106F715-2EC1-43B7-B0AE-33F6AEEF3B2A}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115859","Name":"Import of Resource from Foreign Vendor where Input Tax Credit is Available through Purchase Order/Invoice/Quote.","NodeType":"Use Case","TableID":39,"CaseID":"{45189151-3ACF-421C-8984-C932DC8A3A2A}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115860","Name":"Intra-State Purchase of Resource from Registered Vendor when Input Tax Credit is Available Through Purchase Invoice/Order/Quote for FOC.","NodeType":"Use Case","TableID":39,"CaseID":"{FEC46768-8566-4C39-AE1D-62B0FD83D5D6}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115861","Name":"Inter-State Purchase of Resource from Registered Vendor when Input Tax Credit is Available Through Purchase Invoice/Order/Quote for FOC.","NodeType":"Use Case","TableID":39,"CaseID":"{56966B10-DE93-4980-A9FE-1CBB5DE6359B}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115870","Name":"End Type-Resource","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115900","Name":"End GST Credit-Availment","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115901","Name":"GST Credit-Non Availment","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18095=1(2))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115902","Name":"Type-Item","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(2))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115903","Name":"Import of goods without Input Tax Credit available from SEZ Vendor with cover of Bill of Entry","NodeType":"Use Case","TableID":39,"CaseID":"{A7619228-F860-4E03-B21E-E0F01EFF6C52}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115904","Name":"Import of goods without Input Tax Credit Not available from SEZ Vendor without cover of Bill of Entry","NodeType":"Use Case","TableID":39,"CaseID":"{ABA6F00E-B423-49DF-8DF5-F74950011703}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115905","Name":"Import of goods without Input Tax Credit available from SEZ Vendor without cover of Bill of Entry","NodeType":"Use Case","TableID":39,"CaseID":"{C57B60DB-22D0-43D5-8460-B47D9F11AFC2}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115906","Name":"Inter-State Purchase of Goods from Registered Vendor where Input Tax Credit is not available","NodeType":"Use Case","TableID":39,"CaseID":"{E277B92E-D047-425F-B44D-E8EA58FAEE5C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115908","Name":"Intra-State Purchase of Goods from Unregistered Vendor when Input Tax Credit is Not Available Through Purchase Invoice/Order/Quote - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{09CD7163-15FB-4340-82BF-57373BE3E206}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115909","Name":"Intra-State Purchase of Goods from Registered Vendor when Input Tax Credit is Not Available purchase order/Invoice","NodeType":"Use Case","TableID":39,"CaseID":"{F4B17FC7-3605-47DD-804E-4573BCB3FAC7}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115910","Name":"Inter-State Purchase of Goods from Unregistered Vendor where Input Tax Credit is Not-Available","NodeType":"Use Case","TableID":39,"CaseID":"{9E59D4DD-C975-4F42-B5A2-AA98AC93FB7F}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115911","Name":"Intra-State Purchase of Goods from Registered Vendor when Input Tax Credit is Not Available With Bill to-Location purchase order/Invoice","NodeType":"Use Case","TableID":39,"CaseID":"{5577B8ED-6471-4480-AD5A-63BA31696AB7}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115912","Name":"Inter-State Purchase of Goods from Registered Vendor where Input Tax Credit is not available with Bill to-Location","NodeType":"Use Case","TableID":39,"CaseID":"{A274F11C-332F-4EE3-AC91-2E2D95E9E2B6}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115913","Name":"Intra-State Purchase of Goods from Unregistered Vendor when Input Tax Credit is Not Available With Bill To-Loc Through Purchase Invoice/Order/Quote - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{679E7F9F-9AAC-4CC5-A263-904ECC708057}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115914","Name":"Inter-State Purchase of Goods from Unregistered Vendor where Input Tax Credit is Not-Available With Bill To-Loc","NodeType":"Use Case","TableID":39,"CaseID":"{1B2046C2-4264-4272-A998-085B20832B87}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115915","Name":"Intra-State Purchase of Goods from Registered Vendor when Input Tax Credit isNon-Available Through Purchase Invoice/Order/Quote - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{F4F11B85-700B-4880-9A73-740FF36C4160}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115916","Name":"Inter-State Purchase of Goods from Registered Vendor when Input Tax Credit is Not Available Through Purchase Invoice/Order/Quote - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{CE65AEFF-0248-437E-B8A6-87C60E49EFD4}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115917","Name":"Intra-State Purchase of Goods from Registered Vendor when Input Tax Credit is Not Available purchase order/Invoice for FOC","NodeType":"Use Case","TableID":39,"CaseID":"{55BEA8B4-15ED-47B2-AD24-157BA39467EE}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115918","Name":"Inter-State Purchase of Goods from Registered Vendor where Input Tax Credit is not available for FOC","NodeType":"Use Case","TableID":39,"CaseID":"{CCD1BD07-0A33-4DAB-9A3E-E66956E0F98B}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115950","Name":"End Type-Item","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115951","Name":"Type-GL Account","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115952","Name":"Intra-State Purchase of Services From Registered Vendor where Input Tax Credit Not Available through Purchase Quote- Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{EB169AE5-8DE0-4490-8DFD-46CEE05AA5C1}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115953","Name":"Inter-State Purchase of Services from Registered Vendor when Input Tax Credit is Not Available Through Purchase Invoice/Order/Quote - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{67527223-25F5-48B0-A0C2-F0064BD92F18}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115954","Name":"Intra-State Purchase of Services from Registered Vendor where Input Tax Credit Not Available - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{46AD3622-5D72-4048-9FAC-3C31077C2DF0}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115955","Name":"Intra-State Purchase of Services from Unregistered Vendor where Input Tax Credit Not Available -Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{FEE41ACD-C7C4-4653-9A34-15F7F0B70663}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115956","Name":"ISD-Inter-State Purchase of Service from Registered Vendor when Input Tax Credit is Not Available Through Purchase Invoice/Order","NodeType":"Use Case","TableID":39,"CaseID":"{EC905260-0D39-42CD-ADAE-27F4E74CE267}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115957","Name":"(POS) Intra-State Purchase of Services for Overseas Place of Supply from Registered Vendor where Input Tax Credit is Not available","NodeType":"Use Case","TableID":39,"CaseID":"{6A72F56C-CA49-4D53-939A-4FABC050BFB3}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115958","Name":"Inter-State Purchase of Service from Registered Vendor when Input Tax Credit is Not Available Through Purchase Invoice/Order","NodeType":"Use Case","TableID":39,"CaseID":"{0C3618F6-08BD-417F-8744-94A415595940}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115959","Name":"ISD - Intra-State Purchase of Services from Registered Vendor when Input Tax Credit is Not Available purchase order/Invoice","NodeType":"Use Case","TableID":39,"CaseID":"{61FB3B94-A2C7-4F3F-B4A8-801D842328E1}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115960","Name":"Intra-State Purchase of Services from Registered Vendor when Input Tax Credit is Not Available purchase order/Invoice","NodeType":"Use Case","TableID":39,"CaseID":"{BE0C902C-E9FC-4548-B8C7-AB70E21388BC}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115961","Name":"Intra-State Purchase of Services from Registered Vendor when Input Tax Credit is Not Available purchase Quote.","NodeType":"Use Case","TableID":39,"CaseID":"{36A5E0EC-E197-4102-8FF0-F6DC9B4A47C1}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115962","Name":"Import of Services from Import Associate Vendor where Input Tax Credit is not available.","NodeType":"Use Case","TableID":39,"CaseID":"{62216594-6660-492B-ACA0-F8BD3893DE49}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115963","Name":"Intra-State Purchase of Services from POS as vendor state Registered Vendor where Input Tax Credit is Not available","NodeType":"Use Case","TableID":39,"CaseID":"{A52E9652-EFC8-4950-B8C1-A41D887AF962}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115964","Name":"Import of Services without Input Tax Credit available from SEZ Vendor with cover of Bill of Entry ","NodeType":"Use Case","TableID":39,"CaseID":"{C07C2110-2740-4FAD-975B-293FAAD86247}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115965","Name":"Intra-State Purchase of Services from Unregistered Vendor when Input Tax Credit is Not Available With Bill To-Loc Through Purchase Invoice/Order/Quote - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{D2457D2F-2B0E-4F56-BF93-007E245C4FF8}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115966","Name":"Intra-State Purchase of Services from Registered Vendor when Input Tax Credit is Not Available purchase order/Invoice for FOC","NodeType":"Use Case","TableID":39,"CaseID":"{0C6EE2B8-335F-4420-9B76-AEBF773BB40C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-115967","Name":"Inter-State Purchase of Service from Registered Vendor when Input Tax Credit is Not Available Through Purchase Invoice/Order for FOC","NodeType":"Use Case","TableID":39,"CaseID":"{7642FECB-8BEE-4127-9523-47ECB7D29DC4}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116000","Name":"End Type-GL Account","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116001","Name":"Type-Fixed Asset","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(4))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116002","Name":"Import of Fixed Asset from Foreign Vendor where Input Tax Credit is Not Available through Purchase Order/Invoice","NodeType":"Use Case","TableID":39,"CaseID":"{7307BDA2-283F-4094-82E0-41EC241CE177}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116003","Name":"Intra-State Purchase of Fixed Asset from Registered Vendor when Input Tax Credit is Not Available purchase order/Invoice","NodeType":"Use Case","TableID":39,"CaseID":"{47F223C1-06BE-4BD6-A98A-E001F8CE436E}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116004","Name":"Inter-State Purchase of Fixed Asset from Registered Vendor where Input Tax Credit is not available through Purchase Order/ Invoice","NodeType":"Use Case","TableID":39,"CaseID":"{1A8DCBD9-6A50-4C2F-9364-9DB967B50A24}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116005","Name":"Inter State Purchase of Fixed Asset from Composite Vendor/Supplier of exempted goods(Non-Availment) with no GST Impact through Purchase Quote/Order/Invoice","NodeType":"Use Case","TableID":39,"CaseID":"{2E369D91-2885-47EB-886E-7AD35816B42E}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116006","Name":"Intra State Purchase of Fixed Asset from Exempted Vendor/Supplier of exempted (Non Availment)goods with no GST Impact through Purchase Quote/Order/Invoice","NodeType":"Use Case","TableID":39,"CaseID":"{5DC7836A-BA61-4738-8506-BA91EC982903}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116007","Name":"Inter State Purchase of Fixed Asset from Exempted Vendor/Supplier of exempted goods(Non-Availment) with no GST Impact through Purchase Quote/Order/Invoice","NodeType":"Use Case","TableID":39,"CaseID":"{62AD7817-C30F-4EC6-B68C-AC4828B07DF8}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116008","Name":"Intra State Purchase of Fixed Asset from Composite Vendor/Supplier of exempted (Non Availment)goods with no GST Impact through Purchase Quote/Order/Invoice","NodeType":"Use Case","TableID":39,"CaseID":"{64233AA2-2DB0-4AC9-8078-0755AB5DA89D}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116009","Name":"Intra-State Purchase of Fixed Asset from UnRegistered Vendor when Input Tax Credit is Not Available purchase order/Invoice","NodeType":"Use Case","TableID":39,"CaseID":"{DB7C51C1-1F9F-40F2-82C2-82D59793413C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116010","Name":"Inter-State Purchase of Fixed Asset from Unregistered Vendor where Input Tax Credit is not available - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{F8D35423-18AA-4916-A10C-3DC5A6F80CB0}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116011","Name":"Intra-State Purchase of Fixed Asset from Registered Vendor when Input Tax Credit is Not Available With Bill to-Location purchase order/Invoice","NodeType":"Use Case","TableID":39,"CaseID":"{4FA8A9F3-D8C5-4B20-ACB0-F52BFE013A01}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116012","Name":"Inter-State Purchase of Fixed Asset from Unregistered Vendor where Input Tax Credit is Not-Available With Bill To-Loc","NodeType":"Use Case","TableID":39,"CaseID":"{718C2339-648B-4FC6-A496-737B12176D01}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116013","Name":"Intra-State Purchase of Fixed Asset from Unregistered Vendor when Input Tax Credit is Not Available With Bill To-Loc Through Purchase Invoice/Order/Quote - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{679F358F-4DB0-4587-9F0C-CE643B16A152}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116014","Name":"Inter-State Purchase of Fixed Asset from Registered Vendor where Input Tax Credit is not available with Bill to-Location","NodeType":"Use Case","TableID":39,"CaseID":"{AFCCC11E-97B1-4627-8DFD-4184537E2509}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116015","Name":"Inter State Purchase of Fixed Asset from Composite Vendor/Supplier of exempted fixed asset for Non-Availment through Purchase Quote/Order/Invoice with Bill To-Loc","NodeType":"Use Case","TableID":39,"CaseID":"{D50E350F-963C-4C3C-9E78-08F12AB7D8F0}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116016","Name":"Intra-State Purchase of Fixed Asset from Registered Vendor when Input Tax Credit is Not Available purchase order/Invoice For FOC","NodeType":"Use Case","TableID":39,"CaseID":"{7E48E18F-D907-423A-BC62-256D7CFAA089}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116017","Name":"Inter-State Purchase of Fixed Asset from Registered Vendor where Input Tax Credit is not available through Purchase Order/ Invoice for FOC","NodeType":"Use Case","TableID":39,"CaseID":"{65746F4E-A835-4278-98CA-B6AB0D0CBF6B}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116050","Name":"End Type-Fixed Asset","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116051","Name":"Type-Charge Item","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(5))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116052","Name":"Intra-State Purchase of Charge Item from UnRegistered Vendor when Input Tax Credit is Not Available Through Purchase Invoice/Order/Quote - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{97664A61-096E-43D9-BF55-2D5672F02F7F}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116053","Name":"Inter-State Purchase of Charge Item from UnRegistered Vendor when Input Tax Credit is Not Available Through Purchase Invoice/Order/Quote - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{F4A8CF06-D6CE-4263-ACF3-F1FBB744FBFB}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116054","Name":"Inter-State Purchase of Charge Item from Registered Vendor when Input Tax Credit is Not Available purchase order/Invoice","NodeType":"Use Case","TableID":39,"CaseID":"{101CAF41-34AB-4EA1-9277-166954A7FF94}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116055","Name":"Intra-State Purchase of Charge Item from Registered Vendor when Input Tax Credit is Not Available purchase order/Invoice","NodeType":"Use Case","TableID":39,"CaseID":"{64F0C586-3993-4F05-A127-332E7E46802D}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116056","Name":"Intra-State Purchase of Charge Item from Registered Vendor when Input Tax Credit is Not Available With Bill to-Location purchase order/Invoice","NodeType":"Use Case","TableID":39,"CaseID":"{666A5198-99BA-4EC0-A89A-C991109BBC0F}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116057","Name":"Inter-State Purchase of Charge Item from Unregistered Vendor where Input Tax Credit is Not-Available With Bill To-Loc","NodeType":"Use Case","TableID":39,"CaseID":"{66A099C8-9660-498E-9BEB-61296A76CFAF}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116058","Name":"Intra-State Purchase of Charge Item from Unregistered Vendor when Input Tax Credit is Not Available With Bill To-Loc Through Purchase Invoice/Order/Quote - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{8A58255B-97C9-4691-9DBF-1C041D4433DB}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116059","Name":"Intra State Purchase of Charge Item from Composite Vendor/Supplier of exempted (Non Availment)goods with no GST Impact through Purchase Quote/Order/Invoice","NodeType":"Use Case","TableID":39,"CaseID":"{C4DD33B4-D4DB-4F30-8C86-E2045B473C57}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116060","Name":"Inter-State Purchase of Charge Item from Registered Vendor where Input Tax Credit is not available with Bill to-Location","NodeType":"Use Case","TableID":39,"CaseID":"{CCE6E98E-5330-48BA-B42E-70E2BDE3E45B}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116061","Name":"Inter State Purchase of Charge Item from Composite Vendor/Supplier of exempted charge item for Non-Availment through Purchase Quote/Order/Invoice with Bill To-Loc","NodeType":"Use Case","TableID":39,"CaseID":"{FFCC9396-D3C4-4A81-BDE8-23070BF8976F}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116100","Name":"End Type-Charge Item","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116101","Name":"Type-Resource","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(3))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116102","Name":"Inter-State Purchase of Resource from Registered Vendor when Input Tax Credit is Not Available Through Purchase Invoice/Order.","NodeType":"Use Case","TableID":39,"CaseID":"{DBD883FC-4DD3-4C9C-B9AC-AAAF07FF4F3E}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116103","Name":"Intra-State Purchase of Resource from Registered Vendor when Input Tax Credit is Not Available purchase order/Invoice.","NodeType":"Use Case","TableID":39,"CaseID":"{073D94DC-E7F0-4535-B269-7C36C626FD96}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116104","Name":"Intra-State Purchase of Resource from Registered Vendor when Input Tax Credit is Not Available purchase Quote.","NodeType":"Use Case","TableID":39,"CaseID":"{B33DCDC5-21C3-4019-96E3-EF513EAED95E}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116105","Name":"Import of Resource without Input Tax Credit available from SEZ Vendor with cover of Bill of Entry","NodeType":"Use Case","TableID":39,"CaseID":"{B12DD0D6-A87C-4A8C-AE71-746B26156893}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116106","Name":"Import of Resource from Foreign Vendor where Input Tax Credit is not available through Purchase Order/Invoice/Quote.","NodeType":"Use Case","TableID":39,"CaseID":"{5D419270-CBAE-42FB-A135-DC1693C77985}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116107","Name":"Intra-State Purchase of Resource from Registered Vendor when Input Tax Credit is Not Available purchase order/Invoice for FOC.","NodeType":"Use Case","TableID":39,"CaseID":"{10D6A0FE-F802-4235-B438-3A29B7C853ED}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116108","Name":"Inter-State Purchase of Resource from Registered Vendor when Input Tax Credit is Not Available Through Purchase Invoice/Order for FOC.","NodeType":"Use Case","TableID":39,"CaseID":"{F1A5130E-021A-40F9-8282-82CBFEE3FF07}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116130","Name":"End Type-Resource","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116150","Name":"End GST Credit-Non Availment","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116200","Name":"End Exempted -No","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116201","Name":"Exempted","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18082=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116202","Name":"Inter-State Purchase of Exempted Fixed Asset from Registered Vendor where Input Tax Credit is available","NodeType":"Use Case","TableID":39,"CaseID":"{1FFB6082-63D3-4AF8-A83B-9AE92D2010E2}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116203","Name":"Intra State Purchase of Exempted Fixed Asset from Registered Vendor (Availment) with no GST Impact through Purchase Quote/Order/Invoice","NodeType":"Use Case","TableID":39,"CaseID":"{C7563021-CD85-4519-ADFB-BA848CA3022F}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116204","Name":"Inter State Purchase of Exempted Goods-SEZ Vendor","NodeType":"Use Case","TableID":39,"CaseID":"{97856AB0-DAB0-4CF3-B1B1-3A6EB1524E0F}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116205","Name":"Intra State Purchase of Exempted Goods and Services.","NodeType":"Use Case","TableID":39,"CaseID":"{2ED393A6-3B1D-49AC-9DBB-D5836930F61C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116206","Name":"Inter-State Purchase of Exempted Fixed Asset from Registered Vendor where Input Tax Credit is not available","NodeType":"Use Case","TableID":39,"CaseID":"{AB2BDB68-471C-4EC0-B43A-92920239FBF9}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116207","Name":"Intra State Purchase of Exempted Fixed Asset from Registered Vendor (Non-Availment) with no GST Impact through Purchase Quote/Order/Invoice","NodeType":"Use Case","TableID":39,"CaseID":"{F67095C1-F610-4B59-A1E5-7B58D83A6CF5}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116208","Name":"Inter State Purchase of Exempted Goods for Registered/Exempted/Composite Vendor","NodeType":"Use Case","TableID":39,"CaseID":"{07AC553C-0E84-41E3-B04A-19B63C3BCF75}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116250","Name":"End Exempted","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116251","Name":"Begin Type Fixed Asset","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(4))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116252","Name":"Import of Fixed Asset from SEZ Vendor where Input Tax Credit is Not Available, without cover of Bill of Entry.","NodeType":"Use Case","TableID":39,"CaseID":"{A43577AE-11F7-4DF9-9EEF-F317ED83ADD4}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116253","Name":"Import of Fixed Asset from SEZ Vendor where Input Tax Credit is Not Available, with cover of Bill of Entry.","NodeType":"Use Case","TableID":39,"CaseID":"{B45F2436-2E00-4A49-9A8E-7B9202FE0F0A}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116260","Name":"End Type Fixed Asset","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116300","Name":"End Purchase Document","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116301","Name":"Purchase Return Document","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field1=1(5|3))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116302","Name":"Exempted No","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18082=1(0))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116303","Name":"GST Credit Availment","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18095=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116304","Name":"Type-Item","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(2))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116305","Name":"Return of Import of goods with Input Tax Credit available from SEZ Vendor with cover of Bill of Entry","NodeType":"Use Case","TableID":39,"CaseID":"{15A78CF5-A4CC-4804-95DA-6FB3DCBF2DBF}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116306","Name":"Intra-State Purchase Return of Goods from Unregistered Vendor when Input Tax Credit is Available - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{BB9814B7-D039-49BC-BF5D-F80127620CAE}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116307","Name":"Purchase Credit Memo/Return Order for Imported Goods where Input Tax Credit is available","NodeType":"Use Case","TableID":39,"CaseID":"{48C973FB-77C2-476C-AB39-0E61F0F76F0D}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116308","Name":"Intra-State Purchase Return of Goods from Registered Vendor when Input Tax Credit is Available Through Purchase Return Orders","NodeType":"Use Case","TableID":39,"CaseID":"{D0059E3B-4B5F-44E3-B2AD-B3DB74C1CEC4}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116309","Name":"Inter-State Purchase Return of Goods from Registered Vendor when Input Tax Credit is Available","NodeType":"Use Case","TableID":39,"CaseID":"{BC7B8A8E-B343-439B-B240-B5D7D0253CC7}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116310","Name":"Inter-State Purchase Return of Goods from UnRegistered Vendor when Input Tax Credit is Available","NodeType":"Use Case","TableID":39,"CaseID":"{CFC3D6F5-144A-4731-8658-BA626457624A}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116311","Name":"Intra-State Purchase Return of Goods from UnRegistered Vendor when Input Tax Credit is Available Through Purchase Invoice/Order/Quote - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{2E358EDE-097D-4846-A45B-BC2C1AE07FE9}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116312","Name":"Intra-State Purchase Return of Goods from Registered Vendor when Input Tax Credit is Available with Bill To-Loc Through Purchase Return Orders","NodeType":"Use Case","TableID":39,"CaseID":"{F6EB6D82-74A5-413E-BE36-9308F41811A3}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116313","Name":"Inter-State Purchase Return of Goods from Registered Vendor when Input Tax Credit is Available with Bill to-Loc","NodeType":"Use Case","TableID":39,"CaseID":"{7759D07C-F691-4738-8FB8-F682B03DA922}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116314","Name":"Intra-State Purchase Return of Goods from Unregistered Vendor when Input Tax Credit is Available With Bill To-Loc - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{998A15E8-B4E6-460E-A89C-239F276E9B3C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116315","Name":"Inter-State Purchase Return of Goods from UnRegistered Vendor when Input Tax Credit is Available With Bill To-Loc","NodeType":"Use Case","TableID":39,"CaseID":"{FFBADC05-CF47-4787-B31A-EB85F88CACE8}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116316","Name":"Intra-State Purchase Return of Goods from Registered Vendor where Input Tax Credit is available - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{FBEDC063-63EA-4FED-A3DD-8B5E175031CD}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116317","Name":"Inter-State Purchase Return of Goods from Registered Vendor when Input Tax Credit is Available Through Purchase Return Order/ Credit Memo - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{055AEE33-1301-4B59-BA0D-E76D2D542B34}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116318","Name":"Intra-State Purchase Return of Goods from Registered Vendor when Input Tax Credit is Available Through Purchase Return Orders for FOC","NodeType":"Use Case","TableID":39,"CaseID":"{C9F94259-EA6B-481B-AAF1-8D8F9F025902}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116319","Name":"Inter-State Purchase Return of Goods from Registered Vendor when Input Tax Credit is Available for FOC","NodeType":"Use Case","TableID":39,"CaseID":"{90643BB8-1BEB-40C8-81B3-E6A3C5075C45}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116350","Name":"End Type-Item","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116351","Name":"Type GL Account","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116352","Name":"Import of Services from Import Associate Vendor where Input Tax Credit is available through Return Order.","NodeType":"Use Case","TableID":39,"CaseID":"{AF13E308-74EA-4A38-86B9-B0EA0DCE1972}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116353","Name":"Inter-State Purchase Return of Service from Registered Vendor when Input Tax Credit is Available","NodeType":"Use Case","TableID":39,"CaseID":"{0CCFD5FB-95C8-4189-ACFF-E7D9AE1DB368}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116354","Name":"ISD - Intra-State Purchase Return of Services from Registered Vendor when Input Tax Credit is Available","NodeType":"Use Case","TableID":39,"CaseID":"{137A0843-A280-441F-8D87-5639EDB2B01E}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116355","Name":"ISD-Inter-State Purchase Return of Service from Registered Vendor when Input Tax Credit is Available","NodeType":"Use Case","TableID":39,"CaseID":"{2A733D02-2125-4EA9-97E3-2068E5708A94}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116356","Name":"Intra-State Purchase Return of Services from Registered Vendor when Input Tax Credit is Available Through Purchase Return Orders","NodeType":"Use Case","TableID":39,"CaseID":"{710042C6-833D-4CF4-B943-47CF6691F7DE}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116357","Name":"Intra-State Purchase Return of Services from Registered Vendor where Input Tax Credit is available - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{D2E1CF7B-EA38-4EB3-82C3-E2E6949625D3}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116358","Name":"Intra-State Purchase Return of Services from Unregistered Vendor when Input Tax Credit is Available (Reverse Charge)","NodeType":"Use Case","TableID":39,"CaseID":"{AEDED96A-9927-4DF4-B89B-22FA7C77C19F}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116360","Name":"Inter-State Purchase Return of Services from Registered Vendor when Input Tax Credit is Available Through Purchase Return Order/ Credit Memo - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{64A2BCC0-3E88-4613-B91D-540FF4977F86}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116361","Name":"Inter-State Purchase of Return of Services from Unregistered Vendor where Input Tax Credit is available","NodeType":"Use Case","TableID":39,"CaseID":"{6510FF1C-A0A5-4C52-8DE5-836BE2536650}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116362","Name":"Return of Import of Services with Input Tax Credit available from SEZ Vendor with cover of Bill of Entry ","NodeType":"Use Case","TableID":39,"CaseID":"{36710BC3-FED5-4726-8AB5-1DC108CF23AF}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116363","Name":"Intra-State Purchase Return of Services from Registered Vendor when Input Tax Credit is Available Through Purchase Return Orders for FOC","NodeType":"Use Case","TableID":39,"CaseID":"{47AA3C60-6575-4F87-8022-29790BB97A11}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116400","Name":"End Type GL Account","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116401","Name":"Type Fixed Asset","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(4))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116402","Name":"Return of Import Fixed Asset with Input Tax Credit available from SEZ Vendor with cover of Bill of Entry","NodeType":"Use Case","TableID":39,"CaseID":"{1201ECAE-F4F2-43D7-938E-15F5361C2062}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116403","Name":"Return of Import of Fixed Asset with Input Tax Credit available from Import Vendor with cover of Bill of Entry","NodeType":"Use Case","TableID":39,"CaseID":"{8EECE1FD-4BDB-4A37-92ED-00380C170CFC}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116404","Name":"Inter State Purchase Return of Fixed Asset from Composite Vendor/Supplier of exempted goods(Availment) with no GST Impact","NodeType":"Use Case","TableID":39,"CaseID":"{A8A42D6F-2A47-4175-8ED8-F482D64554C6}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116405","Name":"Intra-State Purchase Return of Fixed Asset from Registered Vendor when Input Tax Credit is Available","NodeType":"Use Case","TableID":39,"CaseID":"{CCF91681-45AA-45DC-94A6-52DBBF199CF5}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116406","Name":"Intra State Purchase Return of Fixed Asset from Composite Vendor/Supplier of exempted (Availment) goods with no GST Impact","NodeType":"Use Case","TableID":39,"CaseID":"{4E53918C-16B7-4834-86DE-E7422FC21E83}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116407","Name":"Inter-State Purchase Return of Fixed Asset to Registered Vendor where Input Tax Credit is available through Purchase Return Order/ Credit Memo","NodeType":"Use Case","TableID":39,"CaseID":"{57322220-978A-459E-8EC5-05AB66E6B362}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116408","Name":"Intra-State Purchase Return of Fixed Asset from Unregistered Vendor when Input Tax Credit is Available","NodeType":"Use Case","TableID":39,"CaseID":"{F37442C1-AB50-445F-A7C3-8DCA84931B69}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116409","Name":"Inter-State Purchase Return of Fixed Asset from Unregistered Vendor where Input Tax Credit is available","NodeType":"Use Case","TableID":39,"CaseID":"{B5669E1C-A496-431B-A29F-69E527E37AA0}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116410","Name":"Inter-State Purchase Return of Fixed Asset from Registered Vendor when Input Tax Credit is Available with Bill to-Loc","NodeType":"Use Case","TableID":39,"CaseID":"{E6B10245-E536-41CF-A9CC-AA043113F6F4}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116411","Name":"Inter-State Purchase Return of Fixed Asset from UnRegistered Vendor when Input Tax Credit is Available With Bill To-Loc","NodeType":"Use Case","TableID":39,"CaseID":"{38583B1E-682C-4B06-BB69-005849014E82}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116412","Name":"Intra-State Purchase Return of Fixed Asset from Unregistered Vendor when Input Tax Credit is Available With Bill To-Loc - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{1EB264E9-24DD-43EC-A17F-E623BF565203}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116413","Name":"Intra-State Purchase Return of Fixed Asset from Registered Vendor when Input Tax Credit is Available for FOC","NodeType":"Use Case","TableID":39,"CaseID":"{8E9E924F-0BE8-4862-BDFE-39CB23848B3C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116414","Name":"Inter-State Purchase Return of Fixed Asset to Registered Vendor where Input Tax Credit is available through Purchase Return Order/ Credit Memo for FOC","NodeType":"Use Case","TableID":39,"CaseID":"{B4B3EE78-57EC-4EE8-8F51-E7B868CF34B9}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116450","Name":"End Type Fixed Asset","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116451","Name":"Type Charge Item","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116452","Name":"Intra-State Purchase Return of Charge Item from Registered Vendor when Input Tax Credit is Available through purchase return order/Credit memo","NodeType":"Use Case","TableID":39,"CaseID":"{9A744701-39FF-4CFF-AA72-F5856E82FBF4}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116453","Name":"Intra-State Purchase Return of Charge Item from Unregistered Vendor when Input Tax Credit is Available Through Purchase Return Order/ Credit Memo - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{142D2618-98AC-4DD8-922F-11CF063DD8D8}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116454","Name":"Inter-State Purchase Return of Charge Item to Unregistered Vendor when Input Tax Credit is Available through purchase return order/ Credit memo","NodeType":"Use Case","TableID":39,"CaseID":"{8B75A47C-8DD2-45C8-99D9-B04E18C531D5}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116455","Name":"Inter-State Purchase Return of Charge Item to Registered Vendor when Input Tax Credit is Available through purchase return order/ Credit memo","NodeType":"Use Case","TableID":39,"CaseID":"{06A818C9-817D-4983-B8D9-D96759380A68}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116456","Name":"Intra-State Purchase Return of Charge Item from Registered Vendor when Input Tax Credit is Available Through Purchase Return Order/ Credit Memo - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{4934B903-2938-4ED9-994C-36F89B08E352}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116457","Name":"Inter-State Purchase Return of Charge Item from Registered Vendor when Input Tax Credit is Available Through Purchase Return Order/ Credit Memo - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{8F83C983-4368-45FF-9319-952826F72162}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116458","Name":"Inter-State Purchase Return of Charge Item from Registered Vendor when Input Tax Credit is Available with Bill to-Loc","NodeType":"Use Case","TableID":39,"CaseID":"{478E0789-2184-4644-8165-3B5169084277}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116459","Name":"Inter-State Purchase Return of Charge Item from UnRegistered Vendor when Input Tax Credit is Available With Bill To-Loc","NodeType":"Use Case","TableID":39,"CaseID":"{0E9F08C2-7CF2-4AC1-AFB4-57AC8383E732}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116460","Name":"Intra-State Purchase Return of Charge Item from Unregistered Vendor when Input Tax Credit is Available With Bill To-Loc - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{03418FFD-0AF9-48F5-A500-EC48BF9DE4E5}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116465","Name":"End Type Charge Item","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116466","Name":"Type-Resource","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(3))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116467","Name":"Inter-State Purchase Return of Resource from Registered Vendor when Input Tax Credit is Available through Return Order/Credit Memo.","NodeType":"Use Case","TableID":39,"CaseID":"{A8C8864E-5E75-431A-90D6-9AAB47623BA6}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116468","Name":"Inter-State Purchase Return of Resource from Registered Vendor when Input Tax Credit is Available Through Purchase Return Order/ Credit Memo - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{C6FDF908-18DE-47B6-ADED-1E654C153D2A}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116469","Name":"Inter-State Purchase Return of Resource from Unregistered Vendor when Input Tax Credit is Available Through Purchase Return Order/ Credit Memo.","NodeType":"Use Case","TableID":39,"CaseID":"{D8632F51-FEDB-4AF9-8A25-CFE374BD12BA}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116470","Name":"Return of Import of Resource with Input Tax Credit available from SEZ Vendor with cover of Bill of Entry.","NodeType":"Use Case","TableID":39,"CaseID":"{62CA4077-63DB-4812-8DBA-369BDD0A5A63}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116471","Name":"Intra-State Purchase Return of Resource from Unregistered Vendor when Input Tax Credit is Available Through Purchase Return Order/Credit Memo.","NodeType":"Use Case","TableID":39,"CaseID":"{C9ED5F18-07B9-43AF-9221-448B962EC9CD}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116472","Name":"Intra-State Purchase Return of Resources from Registered Vendor where Input Tax Credit is available - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{04F944A1-EF9C-440F-A89B-654782D13EAA}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116473","Name":"Purchase Credit Memo/Return Order for Resource where Input Tax Credit is available.","NodeType":"Use Case","TableID":39,"CaseID":"{4001BD59-B35E-4BBC-B7AD-464FBB21E54A}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116474","Name":"Intra-State Purchase Return of Resource from Registered Vendor when Input Tax Credit is Available Through Purchase Return Order/Credit Memo.","NodeType":"Use Case","TableID":39,"CaseID":"{EE5198CD-9648-49CF-97C5-E71A9843EE27}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116475","Name":"Intra-State Purchase Return of Resource from Registered Vendor when Input Tax Credit is Available Through Purchase Return Order/Credit Memo for FOC.","NodeType":"Use Case","TableID":39,"CaseID":"{21A2DFFA-DF09-4531-BE3F-DFC7E50F3D1E}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116476","Name":"Inter-State Purchase Return of Resource from Registered Vendor when Input Tax Credit is Available through Return Order/Credit Memo for FOC.","NodeType":"Use Case","TableID":39,"CaseID":"{2E66DC31-92BB-4928-83E5-6F87FC544A85}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116490","Name":"End Type-Resource","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116500","Name":"End GST Credit Availment","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116501","Name":"GST Credit Non-Availment","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18095=1(2))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116502","Name":"Type Item","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(2))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116503","Name":"Return of Import of goods where Input Tax Credit Not available from SEZ Vendor without cover of Bill of Entry","NodeType":"Use Case","TableID":39,"CaseID":"{D66CD2EC-C8A4-48B9-A634-B14161E0E03B}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116504","Name":"Return of Import goods without Input Tax Credit available from SEZ Vendor with cover of Bill of Entry","NodeType":"Use Case","TableID":39,"CaseID":"{A4A0C6C8-FE70-4DA2-9E3D-E5F0CCA93A22}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116505","Name":"Inter-State Purchase Return of Goods to Registered Vendor where Input Tax Credit is not available","NodeType":"Use Case","TableID":39,"CaseID":"{4684DF92-D578-4978-B4EC-04ACC07C8206}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116506","Name":"Intra-State Purchase Return of Goods to Registered Vendor when Input Tax Credit is Not Available purchase Return Order/ Credit Memo","NodeType":"Use Case","TableID":39,"CaseID":"{C8AEE991-4EDD-4562-BCE7-3DFA3502C8D2}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116507","Name":"Intra-State Purchase Return of Goods to Registered Vendor where Input Tax Credit is not available through Return Order","NodeType":"Use Case","TableID":39,"CaseID":"{0120B543-BBCA-433A-B84D-3A07CA4BD763}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116508","Name":"Intra-State Purchase Return of Goods to UnRegistered Vendor when Input Tax Credit is Not Available Through Purchase Return Order/ Credit Memo - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{5F7E0B6C-3D83-418C-9829-C5E5E52460C6}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116509","Name":"Intra-State Purchase Return of Goods from Unregistered Vendor when Input Tax Credit is Not Available - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{EB39C2FC-37D8-4778-8B44-9A45DDA46B2E}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116510","Name":"Inter-State Purchase Return of Goods from Unregistered Vendor when Input Tax Credit is Not Available - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{938B00CD-0C55-4E7E-9E88-9D26724E10E2}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116511","Name":"Intra-State Purchase Return of Goods to Registered Vendor when Input Tax Credit is Not Available with Bill To-Loc purchase Return Order/ Credit Memo","NodeType":"Use Case","TableID":39,"CaseID":"{65C755B4-E396-453F-9425-896AFF64D1B3}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116512","Name":"Inter-State Purchase Return of Goods to Registered Vendor where Input Tax Credit is not available with Bill To-Loc","NodeType":"Use Case","TableID":39,"CaseID":"{0D76D452-CCE9-473B-998A-71EDADD459AE}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116513","Name":"Intra-State Purchase Return of Goods to UnRegistered Vendor when Input Tax Credit is Not Available With Bill To-Loc Through Purchase Return Order/ Credit Memo - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{35C8BFED-ED88-46B7-AFE8-9F2C58421857}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116514","Name":"Inter-State Purchase Return of Goods from Unregistered Vendor when Input Tax Credit is Not Available With Bill To-Loc- Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{E0AA74AA-F401-4115-B768-D41BB661B532}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116515","Name":"Intra-State Purchase Return of Goods to Registered Vendor when Input Tax Credit is Not Available purchase Return Order/ Credit Memo for FOC","NodeType":"Use Case","TableID":39,"CaseID":"{A515D68A-A496-4A81-8F4E-EC21F207D5FF}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116516","Name":"Inter-State Purchase Return of Goods to Registered Vendor where Input Tax Credit is not available for FOC","NodeType":"Use Case","TableID":39,"CaseID":"{040A5713-75A6-4FD3-BCA9-7A335D697933}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116550","Name":"End Type Item","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116551","Name":"Type GL Account","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116552","Name":"Purchase Credit Memo/Return Order for Imported Services from Import Associate Vendor where Input Tax Credit is Not Available.","NodeType":"Use Case","TableID":39,"CaseID":"{F14B809C-31CA-4B7D-989E-419B00D35F8F}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116553","Name":"Import of Services from Import Associate Vendor where Input Tax Credit is not available Through Return Order ","NodeType":"Use Case","TableID":39,"CaseID":"{C6B64855-0CA9-4749-B21E-AF9FA0AB33D4}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116554","Name":"Intra-State Purchase Return of Services from Registered Vendor when Input Tax Credit is Not Available Purchase Return Order/Credit Memo","NodeType":"Use Case","TableID":39,"CaseID":"{2CEB6A3E-11E4-420F-A3C6-886B920BEC29}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116555","Name":"ISD-Inter-State Purchase Return of Service from Registered Vendor when Input Tax Credit is Not Available","NodeType":"Use Case","TableID":39,"CaseID":"{78DCCF81-7548-4028-A6AF-31AEB633FC3C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116556","Name":"ISD - Intra-State Purchase Return of Services from Registered Vendor when Input Tax Credit is Not Available","NodeType":"Use Case","TableID":39,"CaseID":"{BD845B37-5E0F-4EF3-94CB-ED972B71A3C1}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116557","Name":"Inter-State Purchase Return of Service to Registered Vendor where Input Tax Credit is Non-available through Purchase Return Orders/Purchase Credit Memo","NodeType":"Use Case","TableID":39,"CaseID":"{E6B27281-EC3F-4040-B035-4179D33884CE}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116558","Name":"Intra-State Purchase Return of Services from Registered Vendor where Input Tax Credit Not Available -Reverse Charge.","NodeType":"Use Case","TableID":39,"CaseID":"{58CCF42B-75BE-422F-90A5-93E52B2CC817}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116559","Name":"Intra-State/Intra-Union Territory Purchase Return of Services from Registered Vendor where Input Tax Credit Not Available - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{A7F8D194-33DA-472D-87CB-693FB589CD45}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116560","Name":"Intra-State Purchase Return of Services from Registered Vendor where Input Tax Credit Not Available - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{A4461039-C91C-4102-9438-866AF5607096}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116561","Name":"Intra-State Purchase Return of Services from Unregistered Vendor where Input Tax Credit Not Available -Reverse Charge.","NodeType":"Use Case","TableID":39,"CaseID":"{F7D97DC6-CF0E-4248-95A3-3C7189BF844D}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116562","Name":"Intra-State Purchase Return of Services from UnRegistered Vendor where Input Tax Credit Not Available (Reverse Charge)","NodeType":"Use Case","TableID":39,"CaseID":"{01289E18-40A0-4AC7-92DA-601F5AF77AA0}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116563","Name":"Inter-State Purchase Return of Services from Registered Vendor when Input Tax Credit is Not Available Through Purchase Return Order/ Credit Memo - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{7EE4EB63-5718-4880-80D7-DC82790F804D}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116564","Name":"Inter-State Purchase Return of Services from Unregistered Vendor where Input Tax Credit Not Available -Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{6FB5A46A-83C0-495F-9495-7365027603EA}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116565","Name":"Return of Import of Services without Input Tax Credit available from SEZ Vendor with cover of Bill of Entry ","NodeType":"Use Case","TableID":39,"CaseID":"{7DBFAC05-5315-4A5F-B5BE-962A065F7D93}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116566","Name":"Intra-State Purchase Return of Services from Registered Vendor when Input Tax Credit is Not Available Purchase Return Order/Credit Memo for FOC","NodeType":"Use Case","TableID":39,"CaseID":"{79A59A19-401F-444F-A3C4-F8CBBA06D4B0}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116567","Name":"Inter-State Purchase Return of Service to Registered Vendor where Input Tax Credit is Non-available through Purchase Return Orders/Purchase Credit Memo for FOC","NodeType":"Use Case","TableID":39,"CaseID":"{4B185DAB-793D-4C0A-A303-417A61AC9B96}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116600","Name":"End Type GL Account","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116601","Name":"Type Fixed Asset","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(4))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116602","Name":"Purchase Return of Imported Fixed Asset from Foreign Vendor where Input Tax Credit is Not Available","NodeType":"Use Case","TableID":39,"CaseID":"{21811F58-E56B-4A1B-B6DA-C9BD8EECC3AD}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116603","Name":"Inter-State Purchase Return of Fixed Asset to Registered Vendor where Input Tax Credit is not available through Purchase Return Order/ Credit Memo","NodeType":"Use Case","TableID":39,"CaseID":"{11784DD8-7EF0-42CF-9A18-401A9ABC6466}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116604","Name":"Intra State Purchase Return of Fixed Asset from Composite Vendor/Supplier of exempted (Non-Availment) goods with no GST Impact","NodeType":"Use Case","TableID":39,"CaseID":"{12EFA340-BD17-487B-A7CC-F23993B289CF}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116605","Name":"Inter State Purchase Return of Fixed Asset from Composite Vendor/Supplier of exempted goods(Non-Availment) with no GST Impact","NodeType":"Use Case","TableID":39,"CaseID":"{8E46C7A8-FFB5-40D2-8DBB-26E9FEDDF17D}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116606","Name":"Intra-State Purchase Return of Fixed Asset from Registered Vendor when Input Tax Credit is Not Available","NodeType":"Use Case","TableID":39,"CaseID":"{079237F7-FA64-40B5-8BE7-A92428550117}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116607","Name":"Intra-State Purchase Return of Fixed Asset to Unregistered Vendor when Input Tax Credit is Not Available through Purchase Return Order/ Credit Memo","NodeType":"Use Case","TableID":39,"CaseID":"{8EC585FC-1F0E-4A31-A28A-463F3239EB57}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116608","Name":"Inter-State Purchase Return of Fixed Asset to Unregistered Vendor where Input Tax Credit is not available through Purchase Return Order/ Credit Memo","NodeType":"Use Case","TableID":39,"CaseID":"{028465BA-B14C-4266-9D47-75A8087EE299}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116609","Name":"Inter-State Purchase Return of Fixed Asset to Registered Vendor where Input Tax Credit is not available with Bill To-Loc","NodeType":"Use Case","TableID":39,"CaseID":"{BFB5B4F3-BBC1-4A5B-9B7C-C3572578CD78}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116610","Name":"Inter-State Purchase Return of Fixed Asset from Unregistered Vendor when Input Tax Credit is Not Available With Bill To-Loc- Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{3A542488-E9A7-41E5-BF0B-C73F9C82A8DB}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116611","Name":"Intra-State Purchase Return of Fixed Asset to UnRegistered Vendor when Input Tax Credit is Not Available With Bill To-Loc Through Purchase Return Order/ Credit Memo - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{6A0A47A2-4A0F-4CCD-AC63-A70C76E05091}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116612","Name":"Intra-State Purchase Return of Fixed Asset from Registered Vendor when Input Tax Credit is Not Available for FOC","NodeType":"Use Case","TableID":39,"CaseID":"{7601E944-F060-482E-B620-CF8555D00BB9}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116613","Name":"Inter-State Purchase Return of Fixed Asset to Registered Vendor where Input Tax Credit is not available with Bill To-Loc for FOC","NodeType":"Use Case","TableID":39,"CaseID":"{BC63870D-585E-4C07-A6A6-44DE28F260BE}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116650","Name":"End Type Fixed Asset","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116661","Name":"Type Charge Item","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(5))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116662","Name":"Intra-State Purchase Return of Charge Item from Registered Vendor when Input Tax Credit is Not Available purchase return order/Credit memo","NodeType":"Use Case","TableID":39,"CaseID":"{2653A4AF-CD57-4A29-B4C2-4FE3749AC4AD}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116663","Name":"Inter-State Purchase Return of Charge Item to Registered Vendor when Input Tax Credit is Not Available through purchase return order/ Credit memo","NodeType":"Use Case","TableID":39,"CaseID":"{87FB95AD-905D-4832-9EC3-0330B674D601}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116664","Name":"Intra-State Purchase Return of Charge Item from Unregistered Vendor when Input Tax Credit is Not Available Through Purchase Return Order/ Credit Memo - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{1B728E5D-4A32-4E32-A2AA-FE3673AFC2CD}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116665","Name":"Inter-State Purchase Return of Charge Item to Unregistered Vendor when Input Tax Credit is not Available through purchase return order/ Credit memo","NodeType":"Use Case","TableID":39,"CaseID":"{79839F30-7F44-4411-BB2D-07FFA294A38D}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116666","Name":"Intra-State Purchase Return of Charge Item to Registered Vendor when Input Tax Credit is Not Available Through Purchase Return Order/ Credit Memo - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{7E781F55-9A83-4206-B18A-46C2CA5E8573}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116667","Name":"Inter-State Purchase Return of Charge Item from Registered Vendor where Input Tax Credit Not Available -Reverse Charge.","NodeType":"Use Case","TableID":39,"CaseID":"{4F6B53B9-9961-4F29-8151-33C5D413CF58}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116668","Name":"Inter-State Purchase Return of Charge Item to Registered Vendor where Input Tax Credit is not available with Bill To-Loc","NodeType":"Use Case","TableID":39,"CaseID":"{38F58D78-84D4-40D9-BE77-CD33C02B49AF}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116669","Name":"Inter-State Purchase Return of Charge Item from Unregistered Vendor when Input Tax Credit is Not Available With Bill To-Loc- Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{C85088E3-672F-4F2E-B1EF-19CBDFA5460B}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116670","Name":"Intra-State Purchase Return of Charge Item to UnRegistered Vendor when Input Tax Credit is Not Available With Bill To-Loc Through Purchase Return Order/ Credit Memo - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{E5053EEB-44D1-4552-8084-67D72A90CECB}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116675","Name":"End Type Charge Item","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116685","Name":"Type Resource","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116686","Name":"Inter-State Purchase Return of Resource from Registered Vendor when Input Tax Credit is Not Available Through Purchase Return Order/ Credit Memo - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{40E9E837-E785-42A1-B8ED-9B27D43D1FFC}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116687","Name":"Return of Import Resource without Input Tax Credit available from SEZ Vendor with cover of Bill of Entry.","NodeType":"Use Case","TableID":39,"CaseID":"{5C3AA147-EDD0-4271-9CB8-4A6F6C98962A}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116688","Name":"Inter-State Purchase Return of Resource from Unregistered Vendor when Input Tax Credit is Not Available Through Purchase Return Order/ Credit Memo.","NodeType":"Use Case","TableID":39,"CaseID":"{43D94D4C-82EA-4A44-B80F-E297292CAA10}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116689","Name":"Intra-State Purchase Return of Resources from Registered Vendor where Input Tax Credit Not Available -Reverse Charge.","NodeType":"Use Case","TableID":39,"CaseID":"{A170BEEF-350A-4B43-B333-CBEA1D197E1B}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116690","Name":"Purchase Credit Memo/Return Order for Resource where Input Tax Credit is not available.","NodeType":"Use Case","TableID":39,"CaseID":"{7C3076A9-460B-41BC-AED8-6B615E4835D2}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116691","Name":"Inter-State Purchase Return of Resource from Registered Vendor when Input Tax Credit is Not Available Through Purchase Return Order/ Credit Memo.","NodeType":"Use Case","TableID":39,"CaseID":"{545DC1C5-C848-43B9-BFCE-72C3A45C94BA}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116692","Name":"Intra-State Purchase Return of Resource from Registered Vendor where Input Tax Credit Not Available through Purchase Return Order/Credit Memo.","NodeType":"Use Case","TableID":39,"CaseID":"{7B096619-70FB-4622-9E57-8EAE58DC1AB1}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116693","Name":"Intra-State Purchase Return of Resource from Unregistered Vendor where Input Tax Credit Not Available through Purchase Return Order/Credit Memo.","NodeType":"Use Case","TableID":39,"CaseID":"{A2153C07-E791-4821-9542-F9C6C3737BAF}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116694","Name":"Intra-State Purchase Return of Resource from Registered Vendor where Input Tax Credit Not Available through Purchase Return Order/Credit Memo for FOC.","NodeType":"Use Case","TableID":39,"CaseID":"{8B9B630B-1AC7-49A1-BA60-3A415B97C2BC}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116695","Name":"Inter-State Purchase Return of Resource from Registered Vendor when Input Tax Credit is Not Available Through Purchase Return Order/ Credit Memo for FOC.","NodeType":"Use Case","TableID":39,"CaseID":"{4FD977C3-86DB-46A1-AEEF-A0A176F23BE1}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116697","Name":"End Type Resource","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116700","Name":"End GST Credit Non-Availment","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116701","Name":"Begin Type Resource","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(3))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116702","Name":"Inter State Purchase Return of Resource from Composite Vendor/Supplier with no GST Impact through Purchase Return Order/Credit Memo.","NodeType":"Use Case","TableID":39,"CaseID":"{F0453435-C2EF-43BB-BC81-39454E1DE4B9}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116703","Name":"Intra State Purchase Return of Resource from Composite Vendor/Supplier with no GST Impact through Purchase Credit Memo/Return order.","NodeType":"Use Case","TableID":39,"CaseID":"{28E2DDFD-2F63-47CB-986C-8E6F5D2356F3}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116715","Name":"End Type Resource","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116750","Name":"End Exempted No","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116751","Name":"Exempted","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18082=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116752","Name":"Intra State Purchase Return of Exempted Fixed Asset from Registered Vendor (Availment) with no GST Impact","NodeType":"Use Case","TableID":39,"CaseID":"{26260269-B2BE-4D01-AF43-91BCE15FFF05}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116753","Name":"Inter-State Purchase Return of Exempted Fixed Asset from Registered Vendor where Input Tax Credit is available","NodeType":"Use Case","TableID":39,"CaseID":"{8314CDF7-853B-4DEA-A6DF-CE478FB1D3BD}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116754","Name":"Intra State Purchase Return of Exempted Fixed Asset from Registered Vendor (Non-Availment) with no GST Impact","NodeType":"Use Case","TableID":39,"CaseID":"{739B3C04-8659-438B-B9D5-EB62435B9025}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116755","Name":"Inter-State Purchase Return of Exempted Fixed Asset from Registered Vendor where Input Tax Credit is not available","NodeType":"Use Case","TableID":39,"CaseID":"{43228213-4CEA-41C4-B28B-170B00BC81A8}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116756","Name":"Intra State Purchase Return of Service from Composite Vendor/Supplier of exempted goods with no GST Impact through Purchase Credit Memo/Return order","NodeType":"Use Case","TableID":39,"CaseID":"{5E1C6C44-CCBA-49ED-AD64-54D360467B0F}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116757","Name":"Intra-State Purchase Return of Goods from Registered Exempted Vendor when Input Tax Credit is Available Through Purchase Return Orders","NodeType":"Use Case","TableID":39,"CaseID":"{8FCF5988-06C7-44E2-A7BD-A5A9B40CDEF8}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116758","Name":"Inter-State Purchase Return of Goods from Registered Exempted Vendor when Input Tax Credit is Available","NodeType":"Use Case","TableID":39,"CaseID":"{67FECB97-A3FA-4FC9-8A80-E214C3DF4CA9}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116759","Name":"Inter State Purchase of Goods from Composite Vendor/Supplier of exempted goods with no GST Impact through Purchase Return Order/Credit Memo","NodeType":"Use Case","TableID":39,"CaseID":"{4F992CE7-BB8C-4129-923A-F53A771DF231}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116760","Name":"Intra State Purchase of Goods from Composite Vendor/Supplier of exempted goods with no GST Impact through Purchase Return Order/Credit Memo","NodeType":"Use Case","TableID":39,"CaseID":"{0371699B-6B05-4B16-99FB-604F142308AA}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116800","Name":"End Exempted","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116901","Name":"GST Reverse Charge -No","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18085=1(0))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116902","Name":"GST Credit-Availment","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18095=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116903","Name":"Type -GL Account","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116904","Name":"(POS) Intra-State Purchase Return of Services for Overseas Place of Supply from Registered Vendor where Input Tax Credit is available","NodeType":"Use Case","TableID":39,"CaseID":"{3F057D29-C926-453B-8B17-6B5E431A20B4}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-116950","Name":"End Type -GL Account","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117000","Name":"End GST Credit-Availment","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117001","Name":"Begin Type Item","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(2))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117002","Name":"Inter State Purchase of Goods from Composite Vendor/Supplier with no GST Impact through Purchase Return Order/Credit Memo","NodeType":"Use Case","TableID":39,"CaseID":"{2BF5B2FE-2191-416D-B63F-47052716FC1B}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117003","Name":"Intra State Purchase of Goods from Composite Vendor/Supplier of exempted goods with no GST Impact through Purchase Return Order/Credit Memo with Bill To-Loc","NodeType":"Use Case","TableID":39,"CaseID":"{F759EFFB-61F9-4B84-B9CD-01E2616A7B85}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117004","Name":"Inter State Purchase of Goods from Composite Vendor/Supplier of exempted goods with no GST Impact through Purchase Return Order/Credit Memo With Bill To-Loc","NodeType":"Use Case","TableID":39,"CaseID":"{F023887D-C599-4FE6-89E7-49C257DC208C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117005","Name":"Intra State Purchase of Goods from Composite Vendor/Supplier with no GST Impact through Purchase Return Order/Credit Memo","NodeType":"Use Case","TableID":39,"CaseID":"{13352A4D-EEAB-4FEA-A778-0BDAD73B550C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117015","Name":"End Type Item","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117016","Name":"Begin Type - Charge Item","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(5))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117017","Name":"Inter State Purchase of Charge from Composite Vendor/Supplier of exempted goods with no GST Impact through Purchase Return Order/Credit Memo","NodeType":"Use Case","TableID":39,"CaseID":"{0CF4326B-FD68-4AE6-B52A-CD2AA2F2A788}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117020","Name":"End Type - Charge Item","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117021","Name":"Inter State Purchase of other types except good from Composite Vendor/Supplier of exempted not goods with no GST Impact through Purchase Return Order/Credit Memo With Bill To-Loc","NodeType":"Use Case","TableID":39,"CaseID":"{21E3248F-92C2-444C-B7E9-B48218AD918A}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117022","Name":"Intra State Purchase of other types from Composite Vendor/Supplier of exempted not goods with no GST Impact through Purchase Return Order/Credit Memo with Bill To-Loc","NodeType":"Use Case","TableID":39,"CaseID":"{1988B611-ABD4-44C4-9CB5-67BB88E0002C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117023","Name":"Inter State Purchase of Service from Composite Vendor/Supplier of exempted goods with no GST Impact through Purchase Return Order/Credit Memo","NodeType":"Use Case","TableID":39,"CaseID":"{BC9A772F-DBF9-4F4F-8607-212DC829C005}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117050","Name":"End GST Reverse Charge -No","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117051","Name":"GST Credit Non-Availment","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18095=1(2))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117052","Name":"Return of Import Fixed Asset from SEZ Vendor where Input Tax Credit is Not Available, with cover of Bill of Entry.","NodeType":"Use Case","TableID":39,"CaseID":"{047704F8-A619-401F-9653-12103103E14A}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117053","Name":"Purchase Credit Memo/Return Order for Imported Goods where Input Tax Credit is not available","NodeType":"Use Case","TableID":39,"CaseID":"{DA972CCF-D97D-4379-9704-AB397FA9E08F}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117054","Name":"Purchase Credit Memo/Return Order for Imported Services where Input Tax Credit is not available","NodeType":"Use Case","TableID":39,"CaseID":"{1005E09C-7F65-4E7A-AC0C-B071C455A412}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117055","Name":"(POS) Intra-State Return of Services for Overseas Place of Supply from Registered Vendor where Input Tax Credit is not available through Purchase Return Order/ Credit Memo","NodeType":"Use Case","TableID":39,"CaseID":"{8B6ADE91-D482-4071-B431-C299292EF2BF}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117056","Name":"Return of Import Fixed Asset from SEZ Vendor where Input Tax Credit is Not Available, without cover of Bill of Entry.","NodeType":"Use Case","TableID":39,"CaseID":"{B5C09EE0-1CF9-4818-AADB-AC5E95626AE9}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117057","Name":"Intra-State Purchase Return of Goods from Registered Vendor where Input Tax Credit is not available - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{0EBD8B25-3C27-46AE-8CD7-4E870DB1315B}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117058","Name":"Inter-State Purchase Return of Goods from Registered Vendor when Input Tax Credit is not Available Through Purchase Return Order/ Credit Memo - Reverse Charge","NodeType":"Use Case","TableID":39,"CaseID":"{97437C0C-3E99-4D15-9378-34AC4B8FD002}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117100","Name":"End GST Credit Non-Availment","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117101","Name":"Begin Type G/L Account","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117102","Name":"Purchase Credit Memo/Return Order for Imported Services where Input Tax Credit is available","NodeType":"Use Case","TableID":39,"CaseID":"{AA1B2E3A-4149-4352-B081-2A869CDE5353}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117120","Name":"End Type G/L Account","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117121","Name":"Begin Type - Charge Item","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field5=1(5))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117122","Name":"Intra State Purchase of Charge Item from Composite Vendor/Supplier of exempted goods with no GST Impact through Purchase Return Order/Credit Memo","NodeType":"Use Case","TableID":39,"CaseID":"{55B6317F-25F3-4C73-8AA5-AFA3EC519C88}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117125","Name":"End Type - Charge Item","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117150","Name":"End Purchase Return Document","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117200","Name":"End Purchase","NodeType":"End","TableID":0,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117201","Name":"Payment","NodeType":"Begin","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field51,Field2) WHERE(Field18543=1(<>''),Field18001=1(<>''),Field18009=1(<>''))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117202","Name":"Account Type-Customer","NodeType":"Begin","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field51,Field2) WHERE(Field3=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117203","Name":"Document Type- Invoice","NodeType":"Begin","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field51,Field2) WHERE(Field6=1(2))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117204","Name":"GST Customer Type- Registered","NodeType":"Begin","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field51,Field2) WHERE(Field18007=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117205","Name":"Intra-State Sales of Goods to Registered Customer through Sales Journal/Journal/General Journal.","NodeType":"Use Case","TableID":81,"CaseID":"{3335E143-1F90-4E63-B6E7-5A4897019FFA}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117206","Name":"Inter-State Sales of Goods to Registered Customer through Sales Journal/Journal/General Journal.","NodeType":"Use Case","TableID":81,"CaseID":"{38C5A554-206D-44A5-9090-86CAC52A7715}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117207","Name":"Intra-State Sales of Service to Registered Customer through Sales Journal/Journal/General Journal - Kerala Cess","NodeType":"Use Case","TableID":81,"CaseID":"{C89845E0-C8B1-45B1-9C1B-04EC264B7AC7}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117208","Name":"Intra-State Sales of Service to Registered Customer through Sales Journal/Journal/General Journal.","NodeType":"Use Case","TableID":81,"CaseID":"{BBD37D0A-E328-4544-B5E1-03FCF65399D5}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117209","Name":"Inter-State Sales of Services to Registered or Unregistered Customer through Sales Journal/Journal/General Journal.","NodeType":"Use Case","TableID":81,"CaseID":"{CF221DCD-487C-4B3C-BBC4-FE16B6667E76}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117210","Name":"Intra-State Sales of Exempted Service to Registered Customer through Sales Journal/General Journal.","NodeType":"Use Case","TableID":81,"CaseID":"{B0D75B5B-C42D-4381-80D8-B312BD2360AE}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117250","Name":"End GST Customer type- Registered","NodeType":"End","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117251","Name":"GST Customer Type- Others","NodeType":"Begin","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field51,Field2) WHERE(Field18007=1(2|3|4|5|6|7))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117252","Name":"Inter-State Sales of Service to UnRegistered Customer through Sales Journal/Journal/General Journal.","NodeType":"Use Case","TableID":81,"CaseID":"{F56F247A-8E36-496E-8672-C6FE2C81CE7B}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117253","Name":"Intra-State Sales of Service to UnRegistered Customer through Sales Journal/Journal/General Journal.","NodeType":"Use Case","TableID":81,"CaseID":"{F719A304-09CF-479B-A123-2A4E34ED3133}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117254","Name":"Export Sales of Service to Export Customer through Sales Journal/Journal/General Journal.","NodeType":"Use Case","TableID":81,"CaseID":"{F807C5DC-40B1-4E22-AB49-06BC54A22558}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117255","Name":"IntraState - Export Sales of Service to Deemed Customer through Sales Journal/Journal/General Journal.","NodeType":"Use Case","TableID":81,"CaseID":"{005ED1ED-F66A-4A08-8647-0554154F0DF2}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117256","Name":"Export Sales of Service to SEZ Development Customer with payment of duty through Sales Journal/Journal/General Journal.","NodeType":"Use Case","TableID":81,"CaseID":"{3DC33AD0-69AB-4B36-B58D-7C409957507C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117257","Name":"Export of Service to SEZ Customer through Sales Journal/Journal/General Journal.","NodeType":"Use Case","TableID":81,"CaseID":"{6F745F19-1955-4DAA-A3C4-BAC6D6326232}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117258","Name":"Inter State - Export Sales of Service to Deemed Customer through Sales Journal/Journal/General Journal.","NodeType":"Use Case","TableID":81,"CaseID":"{FCB154BF-A72A-43A0-87AB-DF80DEAB4F1C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117300","Name":"End GST Customer Type- Others","NodeType":"End","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117350","Name":"End Document Type- Invoice","NodeType":"End","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117351","Name":"Document Type- Credit Memo","NodeType":"Begin","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field51,Field2) WHERE(Field6=1(3))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117352","Name":"Inter-State Sales Return of Service to UnRegistered Customer through Sales Journal/Journal/General Journal.","NodeType":"Use Case","TableID":81,"CaseID":"{CCF41113-DC62-47E2-B45B-87AF0248AF65}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117353","Name":"Inter-State Sales Return of Goods to Registered or Unregistered Customer through Sales Journal/Journal/General Journal.","NodeType":"Use Case","TableID":81,"CaseID":"{674E08E2-EB2A-4C3D-924B-9370C6ED3DBF}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117354","Name":"Intra-State Sales Return of Service to Registered or Unregistered Customer through Sales Journal/Journal/General Journal.","NodeType":"Use Case","TableID":81,"CaseID":"{6C9258C7-AF9C-43E4-A015-C4253265F37E}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117355","Name":"Intra-State Sales Return of Service to Registered or Unregistered Customer through Sales Journal/Journal/General Journal.","NodeType":"Use Case","TableID":81,"CaseID":"{6C9258C7-AF9C-43E4-A015-C4253265F37E}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117356","Name":"(POS) Intra-State Sales Return/Credit Note of Services for Overseas Place of Supply from Registered Customer through Sales Journal/General Journal.","NodeType":"Use Case","TableID":81,"CaseID":"{DF8067FF-2F97-485F-8364-3AC5536AD82D}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117357","Name":"Export Sales Return of Service to Export Customer through Sales Journal/Journal/General Journal.","NodeType":"Use Case","TableID":81,"CaseID":"{B8EE2ED8-F29F-465D-B6DC-A3A2A4BB1B3D}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117358","Name":"Intra-State Sales Return of Service from Deemed Export Customer through Sales Journal/General Journal.","NodeType":"Use Case","TableID":81,"CaseID":"{4BFBD63E-F561-4C68-AB29-BF4139D24F49}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117359","Name":"InterState Sales Return of Service to SEZ Development Customer with payment of duty through Sales Journal/Journal.","NodeType":"Use Case","TableID":81,"CaseID":"{68AE0437-E71F-4AC5-8729-DDD40410D69D}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117360","Name":"Sales Return of Service to SEZ Unit Customer with payment of duty through Sales Journal/Journal.","NodeType":"Use Case","TableID":81,"CaseID":"{960BC8FC-FF34-4E46-A6A0-6FD2CB7BBDA2}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117361","Name":"Inter State - Export Sales Return of Service to Deemed Customer through Sales Journal/General Journal.","NodeType":"Use Case","TableID":81,"CaseID":"{FFBBBCDE-50F5-4D02-8B40-DAD63ED1491E}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117362","Name":"Intra-State Sales Return of Goods to Registered Customer through Sales Journal/Journal/General Journal.","NodeType":"Use Case","TableID":81,"CaseID":"{DF783FC9-39C3-492B-B94F-90BCF26C04E5}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117363","Name":"Inter-State Sales Return of Service to Registered Customer through Sales Journal/Journal/General Journal.","NodeType":"Use Case","TableID":81,"CaseID":"{4E1D5479-C527-4295-A0C1-7D82D94860F6}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117400","Name":"End Document Type- Credit Memo","NodeType":"End","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117401","Name":"Document Type- Payment","NodeType":"Begin","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field51,Field2) WHERE(Field6=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117402","Name":"Inter-State GST on Advance Payment Received From Customer","NodeType":"Use Case","TableID":81,"CaseID":"{287ED69D-1488-4A48-BA50-E063EC8EF915}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117403","Name":"Intra-State GST on Advance Payment Received From Customer","NodeType":"Use Case","TableID":81,"CaseID":"{18F45902-76C4-4B57-AF7F-7D9B3A76D51F}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117404","Name":"Export of Goods and Services to SEZ Development, through Sales Journal/Journal/General Journal With Payment of Duty.","NodeType":"Use Case","TableID":81,"CaseID":"{0B9F94CE-1C82-4FF7-9EF7-D51E156A0286}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117405","Name":"Export of Goods and Services to Foreign Customer through Sales Journal/Journal/General Journal Without Payment of Duty.","NodeType":"Use Case","TableID":81,"CaseID":"{2E85F2F7-2ED8-42CC-95F5-B20D32DB41AC}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117406","Name":"GST Deemed Exports through Sales Journal/Journal/General Journal.","NodeType":"Use Case","TableID":81,"CaseID":"{AE574FA3-E537-4FC1-9F8D-E16EF5D7A40E}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117407","Name":"Export of Goods and Services to SEZ Unit through Sales Journal/Journal/General Journal Without Payment of Duty.","NodeType":"Use Case","TableID":81,"CaseID":"{B7D173ED-4B8F-4F13-95B8-B7C4890B3623}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117408","Name":"Export of Goods and Services to SEZ Unit through Sales Journal/Journal/General Journal With Payment of Duty.","NodeType":"Use Case","TableID":81,"CaseID":"{B8ACD224-FC70-4037-86AD-C18AA5DA085F}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117409","Name":"Export of Goods and Services to SEZ Development through Sales Journal/Journal/General Journal Without Payment of Duty.","NodeType":"Use Case","TableID":81,"CaseID":"{C9CE4C92-F6CD-4B97-BD13-D8EE824D7D66}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117410","Name":"Export of Goods and Services to Foreign Customer through Sales Journal/Journal/General Journal With Payment of Duty.","NodeType":"Use Case","TableID":81,"CaseID":"{DAC31111-29F4-4C8F-BEEC-C3B31668DAF8}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117450","Name":"End Document Type-Payment","NodeType":"End","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117451","Name":"Document Type-Refund","NodeType":"Begin","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field51,Field2) WHERE(Field6=1(6))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117453","Name":"Intra-State GST Refund on Advance Payment Received From Customer","NodeType":"Use Case","TableID":81,"CaseID":"{0628D305-F863-48E9-986E-0570995F7002}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117454","Name":"Inter-State GST Refund on Advance Payment Received From Customer","NodeType":"Use Case","TableID":81,"CaseID":"{F643A772-5CA6-4CC5-913C-9188C52DF8E0}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117499","Name":"End Document Type-Refund","NodeType":"End","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117500","Name":"End Account Type- Customer","NodeType":"End","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117501","Name":"Account Type-Vendor","NodeType":"Begin","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field51,Field2) WHERE(Field3=1(2))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117502","Name":"Document Type- Invoice","NodeType":"Begin","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field51,Field2) WHERE(Field6=1(2))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117503","Name":"GST Credit -Availment","NodeType":"Begin","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field51,Field2) WHERE(Field18033=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117504","Name":"GST Reverse Charge -Yes","NodeType":"Begin","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field51,Field2) WHERE(Field18023=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117505","Name":"Intra-State/Intra-Union Territory Purchase of Service from Unregistered Vendor where Input Tax Credit is available through Purchase Journal/Journal/General Journal - Reverse Charge","NodeType":"Use Case","TableID":81,"CaseID":"{3C23CDAC-6995-4B6C-9E4B-708B540C413B}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117506","Name":"Inter-State Purchase of Service from Registered Vendor where Input Tax Credit is available through Purchase Journal/Journal/General Journal - Reverse Charge","NodeType":"Use Case","TableID":81,"CaseID":"{744B47C3-E4C1-4AC4-A37E-CBA3102A59A1}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117507","Name":"Purchase of Services from SEZ Vendor where Input Tax Credit is available through Purchase Journal/Journal/General Journal - Reverse Charge","NodeType":"Use Case","TableID":81,"CaseID":"{7E182C87-669C-4CD8-8336-41C2ABE6144C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117508","Name":"Intra-State/Intra-Union Territory Purchase of Service from Registered Vendor where Input Tax Credit is available through Purchase Journal/Journal/General Journal - Reverse Charge","NodeType":"Use Case","TableID":81,"CaseID":"{B8F32E0D-5D5E-4B84-AE3A-C0D4520470D3}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117509","Name":"Inter-State Purchase of Services from Unregistered/Registered Vendor where Input Tax Credit is available (Reverse Charge) through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{819CADCF-BE64-4BC6-93BA-59EDE239EB54}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117511","Name":"Interstate GST Calculation on Reverse Charge Exempt Transactions through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{25E8E204-2E63-4B79-824C-3C1185D6467C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117513","Name":"Intrastate GST Calculation on Reverse Charge Exempt Transactions through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{DF134523-53D1-4137-B091-D9C5E1DB8D64}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117550","Name":"End GST Reverse Charge -Yes","NodeType":"End","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117551","Name":"Begin Vendor Type - Composite","NodeType":"Begin","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field51,Field2) WHERE(Field18008=1(2))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117552","Name":"Inter-State Purchase of Service from Composite Vendor where Input Tax Credit is available through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{F3CD2FC6-4CEE-47EF-B0F5-9EB3E46CE74B}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117553","Name":"Intra-State/Intra-Union Territory Purchase of Service from Composite Vendor where Input Tax Credit is available through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{B68BAE5C-F887-46E8-9B4C-7333EB6152E0}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117558","Name":"End Vendor Type - Composite","NodeType":"End","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117571","Name":"Begin Vendor type - Registered","NodeType":"Begin","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field51,Field2) WHERE(Field18008=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117572","Name":"Intra-State/Intra-Union Territory Purchase of Goods from Registered Vendor where Input Tax Credit is available through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{66A65EDD-B06A-4817-84C4-B61B035AC7EE}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117573","Name":"Inter-State Purchase of Goods from Registered Vendor where Input Tax Credit is available through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{C2FE3376-EDB2-4C3E-A82D-F49D27D292DE}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117574","Name":"Inter-State Purchase of Service from Registered Vendor where Input Tax Credit is available through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{36017702-208F-4E8C-A75E-8872EA7D1205}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117575","Name":"Intra-State/Intra-Union Territory Purchase of Service from Registered Vendor where Input Tax Credit is available through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{26B7CC70-0C7D-4FD2-B00A-B7845C289215}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117576","Name":"Inter-State Purchase of Service from Registered Vendor where Input Tax Credit is available through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{02670909-9C35-49DA-B64F-E5EA4602693E}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117577","Name":"ISD-Inter-State Purchase of Service from Registered Vendor where Input Tax Credit is available through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{FA492219-9C2F-4986-B773-DAA35CA74796}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117578","Name":"ISD - Intra-State/Intra-Union Territory Purchase of Service from Registered Vendor where Input Tax Credit is available through Purchase Journal/Journal/General Journal ","NodeType":"Use Case","TableID":81,"CaseID":"{E73369B2-7A52-46D6-909F-BA116399AF39}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117579","Name":"ISD - Intra-State/Intra-Union Territory Purchase of Service from Registered Vendor where Input Tax Credit is available through Purchase Journal/Journal/General Journal ","NodeType":"Use Case","TableID":81,"CaseID":"{E73369B2-7A52-46D6-909F-BA116399AF39}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117580","Name":"(POS) Intra-State Sales of Services for Overseas Place of Supply from Registered Customer through Sales Journal/General Journal.","NodeType":"Use Case","TableID":81,"CaseID":"{5DAE448C-0BD5-4DC3-9BF9-B846921D2C71}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117581","Name":"(POS) Intra-State Purchase of Services for Overseas Place of Supply from Registered Vendor where Input Tax Credit is available through Purchase Journal/General Journal.","NodeType":"Use Case","TableID":81,"CaseID":"{2341D31D-659B-4C70-B0FD-20C4494A4F1F}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117585","Name":"End Vendor type - Registered","NodeType":"End","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117586","Name":"Begin Vendor type - Import","NodeType":"Begin","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field51,Field2) WHERE(Field18008=1(4))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117587","Name":"Import of Services from Import Associate Vendor where Input Tax Credit is available through Purchase Journal/Journal/General Journal-","NodeType":"Use Case","TableID":81,"CaseID":"{F6DED4E3-7405-4E6E-B0DF-1320041F130A}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117588","Name":"Import of Purchase of Service from Import Vendor where Input Tax Credit is available through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{B4662B2E-9E63-4BA7-A683-248E5811B566}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117589","Name":"Import of Goods from Foreign Vendor where Input Tax Credit is available through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{6D031AA1-2009-4D4A-A8E7-01D9116EDC5C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117592","Name":"End Vendor type - Import","NodeType":"End","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117593","Name":"Begin Vendor Type- SEZ","NodeType":"Begin","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field51,Field2) WHERE(Field18008=1(6))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117594","Name":"SEZ of Purchase of Service from SEZ Vendor where Input Tax Credit is available through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{AB179237-EF7C-4BB1-9406-46B7B6DD1449}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117599","Name":"End Vendor Type-SEZ","NodeType":"End","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117600","Name":"End GST Credit-Availment","NodeType":"End","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117601","Name":"GST Credit- Non Availment","NodeType":"Begin","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field51,Field2) WHERE(Field18033=1(2))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117602","Name":"GST Reverse Charge-Yes","NodeType":"Begin","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field51,Field2) WHERE(Field18023=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117603","Name":"Intra-State/Intra-Union Territory Purchase of Service from UnRegistered Vendor where Input Tax Credit is Not available through Purchase Journal/Journal/General Journal - Reverse Charge","NodeType":"Use Case","TableID":81,"CaseID":"{4CB6ACCD-BD47-4485-A757-62924EA09524}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117604","Name":"Purchase of Services from SEZ Vendor where Input Tax Credit is Not available through Purchase Journal/Journal/General Journal - Reverse Charge","NodeType":"Use Case","TableID":81,"CaseID":"{B2CD61FA-9C30-4FE5-B5C5-5B535BA6DF96}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117605","Name":"Intra-State/Intra-Union Territory Purchase of Service from Registered Vendor where Input Tax Credit is Not available through Purchase Journal/Journal/General Journal - Reverse Charge","NodeType":"Use Case","TableID":81,"CaseID":"{4D9AEA2D-B94B-40CC-B9D9-BC8D6FA19425}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117606","Name":"Inter-State Purchase of Service from Registered Vendor where Input Tax Credit is Not available through Purchase Journal/Journal/General Journal - Reverse Charge","NodeType":"Use Case","TableID":81,"CaseID":"{580975ED-52DE-4EF9-BD94-99425C52B570}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117607","Name":"Intra-State Purchase of Services from Unregistered/Registered Vendor where Input Tax Credit is not available (Reverse Charge) through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{0751F148-5E1D-4EFB-9008-ECB2F2F6704D}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117608","Name":"Inter-State Purchase of Services from Unregistered/Registered Vendor where Input Tax Credit is not available (Reverse Charge) through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{4D947EDC-3710-49D2-91D5-6446978D43EC}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117650","Name":"End GST Reverse Charge -Yes","NodeType":"End","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117651","Name":"GST Input Service Distribution -Yes","NodeType":"Begin","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field51,Field2) WHERE(Field18022=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117652","Name":"ISD - Intra-State/Intra-Union Territory Purchase of Service from Registered Vendor where Input Tax Credit is Not available through Purchase Journal/Journal/General Journal ","NodeType":"Use Case","TableID":81,"CaseID":"{9639222B-DFA8-4F14-9A72-24E994C1C7DA}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117653","Name":"ISD-Inter-State Purchase of Service from Registered Vendor where Input Tax Credit is Not available through Purchase Journal/Journal/General Journal ","NodeType":"Use Case","TableID":81,"CaseID":"{19FC1701-0FE4-4ED3-83B8-07DAB075A043}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117700","Name":"End GST Input Service Distribution -Yes","NodeType":"End","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117701","Name":"GST Input Service Distribution -No","NodeType":"Begin","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field51,Field2) WHERE(Field18022=1(0))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117702","Name":"Intra-State/Intra-Union Territory Purchase of Service from Registered Vendor where Input Tax Credit is Not available through Purchase Journal/Journal/General Journal ","NodeType":"Use Case","TableID":81,"CaseID":"{E530DADD-215F-47FF-8A84-46A1E62353CF}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117703","Name":"Inter-State Purchase of Service from Registered Vendor where Input Tax Credit is Not available through Purchase Journal/Journal/General Journal ","NodeType":"Use Case","TableID":81,"CaseID":"{5305AA1D-CF40-43CC-B9E3-B9471E33DCB3}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117750","Name":"End GST Input Service Distribution -No","NodeType":"End","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117751","Name":"Begin Vendor Type - Import","NodeType":"Begin","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field51,Field2) WHERE(Field18008=1(4))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117752","Name":"Import of Services from Foreign Vendor where Input Tax Credit is not available through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{774A6E80-FBB4-4413-9144-6ACA8C6546D2}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117753","Name":"Import of Goods from Foreign Vendor where Input Tax Credit is Not available through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{9236A009-169D-4464-8B2C-62C94B782C26}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117754","Name":"Import of Services from Associate Vendor where Input Tax Credit is not available through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{54CB1855-9AD0-4A47-9777-D811C7FA1FDE}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117759","Name":"End Vendor Type - Import","NodeType":"End","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117760","Name":"Begin Vendor Type - Unregistered","NodeType":"Begin","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field51,Field2) WHERE(Field18008=1(3))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117761","Name":"IGST on Transportation of Goods through Purchase Journal/Journal/General Journal for Unregistered Vendor with Non-Availment.","NodeType":"Use Case","TableID":81,"CaseID":"{26ED31B0-75B8-439C-8E16-56518665184F}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117764","Name":"End Vendor Type - Unregistered","NodeType":"End","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117765","Name":"Begin Vendor Type - Registered","NodeType":"Begin","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field51,Field2) WHERE(Field18008=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117766","Name":"Intra-State/ Intra-Union Territory Purchase of Service from Registered Vendor where Input Tax Credit is not available through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{15E17CFF-8262-4E83-8FD4-3EC012EEA465}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117767","Name":"Inter-State Purchase of Goods from Registered Vendor where Input Tax Credit is not available through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{A734B9DD-A4C1-427E-AF18-6A8B27474F50}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117768","Name":"Inter-State Purchase of Service from Registered Vendor where Input Tax Credit is not available through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{DA8551C9-79B9-423C-801E-A8C868788300}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117769","Name":"Intra-State/ Intra-Union Territory Purchase of Goods from Registered Vendor where Input Tax Credit is not available through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{547DDC98-8D3C-46A0-84BE-03E71BA135DA}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117770","Name":"(POS) Intra-State Purchase of Services for Overseas Place of Supply from Registered Vendor where Input Tax Credit is not available through Purchase Journal/General Journal.","NodeType":"Use Case","TableID":81,"CaseID":"{997C3EE3-8453-43F1-A179-A32B19EFD8B8}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117771","Name":"IGST on Transportation of Goods through Purchase Journal/Journal/General Journal for Registered Vendor with Non-Availment.","NodeType":"Use Case","TableID":81,"CaseID":"{4A025601-FF3D-4BA6-A567-0C31785D0D36}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117772","Name":"Place of supply as Vendors State in Purchase Transactions through Purchase Journal/Journal/General Journal.","NodeType":"Use Case","TableID":81,"CaseID":"{7ABC67E5-F6F0-4ECB-9634-55258429DFD8}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117780","Name":"End Vendor Type - Registered","NodeType":"End","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117781","Name":"Begin Vendor Type-SEZ","NodeType":"Begin","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field51,Field2) WHERE(Field18008=1(6))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117782","Name":"SEZ of Services from SEZ Vendor where Input Tax Credit is not available through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{8DF66C94-890C-4007-9341-18D0565000FE}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117799","Name":"End Vendor Type- SEZ","NodeType":"End","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117800","Name":"End GST Credit -Non Availment","NodeType":"End","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117850","Name":"End Document Type-Invoice","NodeType":"End","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117851","Name":"Document Type-Credit Memo","NodeType":"Begin","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field51,Field2) WHERE(Field6=1(3))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117852","Name":"GST Credit -Availment","NodeType":"Begin","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field51,Field2) WHERE(Field18033=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117853","Name":"Purchase return of Imported Goods where Input Tax Credit is available through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{7B91DD35-F410-4971-A2BC-DBCB67520105}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117854","Name":"Inter-State Purchase Return of Service from Registered Vendor where Input Tax Credit is available through Purchase Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{BBBBD283-C64C-4AFE-A14E-950791E18CF8}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117856","Name":"Inter-State Purchase Return of Goods to Registered Vendor where Input Tax Credit is available through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{9DFF9CBE-B1A5-4D28-A855-8783315A87D0}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117857","Name":"Intra-State/ Intra-Union Territory Purchase Return of Goods to Registered Vendor where Input Tax Credit is available through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{85D7B57B-6657-4C5B-889D-282A48B9D0FB}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117858","Name":"Purchase Credit Memo/Return Order for Imported Services where Input Tax Credit is available through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{C97F63C3-79EB-44D6-8AEA-B1710A9BBCE9}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117859","Name":"Purchase Credit Memo/Return Order for Imported Services from Import Associate Vendor where Input Tax Credit is available through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{D0EADC0B-CBC1-4E07-8ADF-5AE168893B04}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117860","Name":"Intra-State Purchase Return of Service from Unregistered Vendor where Input Tax Credit is available through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{789CE492-C2BE-4EEC-8E98-740310FDD0E3}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117861","Name":"Inter-State Purchase Return of Service from Registered Vendor where Input Tax Credit is available through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{0AAD1908-46DC-4370-8A8D-77096D9B30B0}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117862","Name":"Intra-State Purchase Return of Service from Registered Vendor where Input Tax Credit is available through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{F857355F-9134-460C-89C8-FB0845206988}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117863","Name":"Inter-State Purchase Return of Service from Registered Vendor where Input Tax Credit is available through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{0AAD1908-46DC-4370-8A8D-77096D9B30B0}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117864","Name":"Inter-State Purchase Return of Services to Registered Vendor where Input Tax Credit is available (Reverse Charge) through Purchase Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{DA389E3B-A6C3-4DE1-9843-807B2161B9DE}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117865","Name":"ISD-Inter-State Purchase Return of Service from Registered Vendor where Input Tax Credit is available through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{812E9032-CA16-4FAB-A80B-94CD7BC5EB8D}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117866","Name":"(POS) Intra-State Return/Credit Note of Services for Overseas Place of Supply from Registered Vendor where Input Tax Credit is available through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{F9A5047E-5B27-41E4-AF68-9497E3B52FAE}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117867","Name":"Inter-State Purchase Return of Service from Unregistered Vendor where Input Tax Credit is available through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{B5A9628F-46F5-48C4-9CC0-09CBAE26D7EE}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117868","Name":"Intra-State Purchase Return from Composite Vendor where Input Tax Credit is available through Purchase Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{AFA9BC82-6757-44E3-B5E4-00029DACDA64}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117869","Name":"Intra-State Purchase Return of Services from SEZ Vendor where Input Tax Credit is available through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{B053F5FC-CD93-4EA7-AC71-1590E006FAAE}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117870","Name":"Intra-State Return of Services to Registered/ Unregistered Vendor where Input Tax Credit is available through Purchase Journal/General Journal (Reverse Charge)","NodeType":"Use Case","TableID":81,"CaseID":"{4C68E757-379A-4FD3-A58A-91F57954A9FC}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117871","Name":"ISD - Intra-State/Intra-Union Territory Purchase Return of Service from Registered Vendor where Input Tax Credit is available through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{783D79C8-B103-439F-9F75-9CB53B347C73}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117900","Name":"End GST Credit- Availment","NodeType":"End","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117901","Name":"GST Credit Non-Availment","NodeType":"Begin","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field51,Field2) WHERE(Field18033=1(2))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117902","Name":"Inter-State Purchase Return of Goods to Registered Vendor where Input Tax Credit is Not available through Purchase Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{CB0F4A5D-EE91-402C-AA30-C8B724D7DCC5}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117903","Name":"Intra-State/ Intra-Union Territory Return of Goods from Registered Vendor where Input Tax Credit is not available through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{8E0D2716-6C6D-4CDF-863F-1E043223D7DF}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117905","Name":"Inter-State Purchase Return of Service to Registered Vendor where Input Tax Credit is not available through Purchase Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{F6932043-6A5A-4F55-B06A-DD7F76AFB52B}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117906","Name":"Purchase return of Imported Goods where Input Tax Credit is Not available through Purchase Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{8503C963-7C87-45CD-8543-607AE516F9F8}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117907","Name":"Purchase Credit Memo for Imported Services where Input Tax Credit is not available through Purchase Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{A6239FAB-E9D2-4FFC-90CC-A5D7858C4CD8}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117908","Name":"Purchase Credit Memo/Return Order for Imported Services from Import Associate Vendor where Input Tax Credit is Not available through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{CF175943-0F1A-4814-BF17-756FB88F497C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117909","Name":"Inter-State Purchase Return of Services to Unregistered Vendor where Input Tax Credit is not available (Reverse Charge) through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{0C04EF8F-6F19-4C41-928B-9F32605898A8}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117910","Name":"ISD - Intra-State/Intra-Union Territory Purchase Return of Service from Registered Vendor where Input Tax Credit is Not available through Purchase Journal/Journal/General Journal ","NodeType":"Use Case","TableID":81,"CaseID":"{00B59093-4DB8-4152-99DB-7F9368A143A8}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117911","Name":"(POS) Intra-State Return/Credit Note of Services for Overseas Place of Supply from Registered Vendor where Input Tax Credit is not available through Purchase Journal/Journal/General Journal.","NodeType":"Use Case","TableID":81,"CaseID":"{75C41C76-22FC-479E-836E-E9C838FF3320}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117912","Name":"Inter-State Purchase Return of Services to Registered Vendor where Input Tax Credit is not available (Reverse Charge) through Purchase Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{AE2974C0-8A1D-4821-8999-7617690C41FC}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117913","Name":"Intra-State Return of Services to Registered/Unregistered Vendor where Input Tax Credit is not available through Purchase Journal and General Journal (Reverse charge)","NodeType":"Use Case","TableID":81,"CaseID":"{56D375F9-6B43-4460-B0F6-CAB18F44DE92}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117914","Name":"Intra-State Purchase Return of Service from Registered Vendor where Input Tax Credit is Not available through Purchase Journal/Journal/General Journal","NodeType":"Use Case","TableID":81,"CaseID":"{62275F50-6F85-4EA6-AA4F-0BACF20CF65E}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-117950","Name":"End GST Credit Non-Availment","NodeType":"End","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118000","Name":"End Document Type-Credit Memo","NodeType":"End","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118001","Name":"Document Type-Payment","NodeType":"Begin","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field51,Field2) WHERE(Field6=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118002","Name":"GST on Advance for Import Payment.","NodeType":"Use Case","TableID":81,"CaseID":"{7859624E-8AFD-4A64-B361-900053C11266}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118003","Name":"GST on Advance payment from SEZ Vendor.","NodeType":"Use Case","TableID":81,"CaseID":"{041E1938-9B6A-4173-937C-FF0FDC0E7309}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118004","Name":"Inter State GST on Advance Payment made to Registered/Unregistered Vendor.","NodeType":"Use Case","TableID":81,"CaseID":"{E411752D-2CC4-4CD4-9D35-1AE651319762}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118005","Name":"Intra State GST on Advance Payment made to Registered/Unregistered Vendor.","NodeType":"Use Case","TableID":81,"CaseID":"{0686E40E-9643-42C8-B4D1-7587447E98E0}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118006","Name":"GST on Advance Payment made to Vendor through General Journal.","NodeType":"Use Case","TableID":81,"CaseID":"{C60D4ED2-E3FC-41BC-BB8D-F1B521984712}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118050","Name":"End Document Type-Payment","NodeType":"End","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118080","Name":"End Account Type- Vendor","NodeType":"End","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118090","Name":"GST Credit","NodeType":"Begin","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field51,Field2) WHERE(Field3=1(0),Field18014=1(4|5|6|7))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118091","Name":"GST Opening Liability IGST","NodeType":"Use Case","TableID":81,"CaseID":"{BE4AF8DF-BB6D-432C-B598-B7B481D8D826}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118092","Name":"GST Opening Liability CGST","NodeType":"Use Case","TableID":81,"CaseID":"{5B85FA47-8603-4A7F-9B76-4A5AD999CA81}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118093","Name":"GST Opening TDS Credit - CGST","NodeType":"Use Case","TableID":81,"CaseID":"{7FD02BAE-DA8D-4100-962E-6A8F7FDE823C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118094","Name":"GST Opening TDS Credit - IGST","NodeType":"Use Case","TableID":81,"CaseID":"{09E58D68-C9B5-4A27-B4FE-3BCA8B383E14}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118095","Name":"GST Opening TDS Credit - SGST","NodeType":"Use Case","TableID":81,"CaseID":"{851F544F-7349-4E29-AF19-A0B3B72AB0AC}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118096","Name":"GST Opening TCS Credit - CGST","NodeType":"Use Case","TableID":81,"CaseID":"{AF9D718A-2832-4D92-A195-4D7DD81E2029}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118097","Name":"GST Opening TCS Credit - IGST","NodeType":"Use Case","TableID":81,"CaseID":"{33896D17-0F26-4376-8304-7BA20BE4E6D4}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118098","Name":"GST Opening TCS Credit - SGST","NodeType":"Use Case","TableID":81,"CaseID":"{36207D8F-34B2-4AF3-83EC-96642DA44DFB}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118103","Name":"GST Opening IGST","NodeType":"Use Case","TableID":81,"CaseID":"{325D0E84-286F-437E-BFE1-EBB6F575AD39}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118104","Name":"GST Opening CGST","NodeType":"Use Case","TableID":81,"CaseID":"{34A74D02-F64A-4329-B0B3-B20E07D5A79A}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118105","Name":"GST Opening SGST","NodeType":"Use Case","TableID":81,"CaseID":"{BBA0DF22-691B-46EB-8500-8B270596F2E9}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118106","Name":"GST Opening Liability SGST","NodeType":"Use Case","TableID":81,"CaseID":"{97CF7642-AB0E-4686-A5CE-3D7C7C641E7E}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118108","Name":"Account Type - G/L * Tax Type End","NodeType":"End","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118110","Name":"Account Type - G/L Account","NodeType":"Begin","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field51,Field2) WHERE(Field3=1(0))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118111","Name":"Intra-state purchase of services where Services is paid directly and service provider is registered and GST Credit is Not Available on Purchase Journal and Gen. Journal.","NodeType":"Use Case","TableID":81,"CaseID":"{77160361-37A9-43BD-A71B-BFA6853D1CFB}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118112","Name":"Inter-state purchase of services where Services is paid directly and service provider is registered and GST Credit is Not Available on Purchase Journal and Gen. Journals","NodeType":"Use Case","TableID":81,"CaseID":"{869FF9BE-3EA8-424B-973E-E27D6E370807}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118113","Name":"Intra-state purchase of services where Services is paid directly through bank and service provider is registered and GST Credit is Available on Purchase Journal and Gen. Journal.","NodeType":"Use Case","TableID":81,"CaseID":"{2D1A7414-2844-4128-B026-CA683BCEA058}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118114","Name":"Inter-state purchase of services where Services is paid directly through bank and service provider is registered and GST Credit is Available on Purchase Journal and Gen. Journal.","NodeType":"Use Case","TableID":81,"CaseID":"{5265955A-2DE6-49CD-AFBE-D314E2D049FB}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118115","Name":"Inter-state purchase of services where Services is paid directly and service provider is Unregistered and GST Credit is Not Available on Purchase Journal and Gen. Journal.","NodeType":"Use Case","TableID":81,"CaseID":"{2A85CD62-7897-47FF-808B-E0A11131071F}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118116","Name":"Intra-state purchase of services where Services is paid directly and service provider is Unregistered and GST Credit is Not Available on Purchase Journal and Gen. Journal.","NodeType":"Use Case","TableID":81,"CaseID":"{EAD964E4-7CD1-4462-96B3-78A3FA9DE087}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118117","Name":"Inter-state purchase of services where Services is paid directly through bank and service provider is Unregistered and GST Credit is Available on Purchase Journal and Gen. Journal.","NodeType":"Use Case","TableID":81,"CaseID":"{99AB0C39-33A7-47F5-8659-968DBAEEA2F2}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118125","Name":"End - Account Type - G/L Account","NodeType":"End","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118150","Name":"End Payment","NodeType":"End","TableID":0,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118151","Name":"Service Transfer","NodeType":"Begin","TableID":18351,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field2) WHERE(Field11=1(<>''),Field12=1(<>''),Field20=1(0))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118152","Name":"Interstate Service Transfer Order","NodeType":"Use Case","TableID":18351,"CaseID":"{FEB751CF-3E8D-42AB-965E-51097FF60E64}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118153","Name":"IntraState Service Transfer Order","NodeType":"Use Case","TableID":18351,"CaseID":"{D68B3FE8-78C6-492D-AC1A-FFA29F17A50D}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118200","Name":"End Service Transfer","NodeType":"End","TableID":0,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118201","Name":"Stock Transfer","NodeType":"Begin","TableID":5741,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field2) WHERE(Field18394=1(<>''),Field18395=1(<>''),Field18396=1(0))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118202","Name":"IntraState Transfer Order","NodeType":"Use Case","TableID":5741,"CaseID":"{A59206F4-476D-4ED9-8665-08535755BB5E}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118203","Name":"InterState Transfer Order","NodeType":"Use Case","TableID":5741,"CaseID":"{E52D7679-7E9C-4623-9CA7-AB704EF2465C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118204","Name":"Bonded Inter-State Transfer Order","NodeType":"Use Case","TableID":5741,"CaseID":"{AECAE480-71C8-41C4-B247-FB33DFC9C039}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118205","Name":"Bonded Intra-State Transfer Order","NodeType":"Use Case","TableID":5741,"CaseID":"{C215F153-718E-4936-BA99-ACB4E2F2BBC4}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118250","Name":"End Stock Transfer","NodeType":"End","TableID":0,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118251","Name":"Journal Bank Charges","NodeType":"Begin","TableID":18247,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field2,Field3,Field4) WHERE(Field13=1(0))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118252","Name":"Document Type-Invoice","NodeType":"Begin","TableID":18247,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field2,Field3,Field4) WHERE(Field9=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118253","Name":"GST on Bank Charges against Customer Receipt (Intra Sate)","NodeType":"Use Case","TableID":18247,"CaseID":"{46054EB7-3CE7-421C-B047-00658AC5C150}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118254","Name":"Intra-State Bank Payment with Bank Charges with GST.","NodeType":"Use Case","TableID":18247,"CaseID":"{7AC16E57-E977-41B3-9338-1399811A688B}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118255","Name":"GST on Bank Charges against Customer Receipt (Inter State)","NodeType":"Use Case","TableID":18247,"CaseID":"{668C2032-DD90-4A23-8F30-04B69FE7C99E}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118256","Name":"Inter-State Bank Payment with Bank Charges with GST.","NodeType":"Use Case","TableID":18247,"CaseID":"{98A43A23-24F8-4FC2-9D4E-6B45D74B02FB}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118300","Name":"End Document Type-Invoice","NodeType":"End","TableID":18247,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118301","Name":"Document Type-Credit Memo","NodeType":"Begin","TableID":18247,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field2,Field3,Field4) WHERE(Field9=1(2))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118302","Name":"GST on Bank Charges against Customer Refund (Inter State)","NodeType":"Use Case","TableID":18247,"CaseID":"{2026E996-050E-4647-8D77-9B2E8FF1B068}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118303","Name":"Inter State GST Refund on Bank Charges.","NodeType":"Use Case","TableID":18247,"CaseID":"{4CB74CDB-63C8-492B-8819-BA937750388D}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118304","Name":"Intra State Refund GST on Bank Charges.","NodeType":"Use Case","TableID":18247,"CaseID":"{7E6E164B-CB38-4B5A-ADAA-BB51CAEEA5A7}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118305","Name":"Inter-State Bank Payment for Credit Memo with Bank Charges with GST.","NodeType":"Use Case","TableID":18247,"CaseID":"{429F37B1-0D9F-4B5A-BC3F-AC53F994BC32}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118306","Name":"Intra-State Bank Payment for Credit Memo with Bank Charges with GST.","NodeType":"Use Case","TableID":18247,"CaseID":"{A26AB5CA-52E6-4626-A426-C656627502E4}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118350","Name":"End Document Type-Credit Memo","NodeType":"End","TableID":18247,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118351","Name":"Document Type - Blank","NodeType":"Begin","TableID":18247,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field2,Field3,Field4) WHERE(Field9=1(0))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118352","Name":"Intra-State Bank charges on bank Payment with GST.","NodeType":"Use Case","TableID":18247,"CaseID":"{F230C59A-547E-41CA-B6B9-5E8BE22A1BEF}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118353","Name":"Inter-State Bank charges on bank Payment with GST.","NodeType":"Use Case","TableID":18247,"CaseID":"{50157D1D-C080-4AF0-8C63-0B5E918F5AF2}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118375","Name":"End Document Type - Blank","NodeType":"End","TableID":18247,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-118400","Name":"End Journal Bank Charges","NodeType":"End","TableID":0,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-119000","Name":"GST Service Management","NodeType":"Begin","TableID":5902,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field7=1(<>''),Field18441=1(<>''),Field18443=1(<>''))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-119001","Name":"Service Document","NodeType":"Begin","TableID":5902,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field1=1(0|1|2))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-119002","Name":"Intra State Service to Registered/Unregistered Customer through Service Quote/ Order/ Invoice","NodeType":"Use Case","TableID":5902,"CaseID":"{B90130D9-0471-4034-8687-11B04ABDCE72}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-119003","Name":"Inter State Service to Registered/Unregistered Customer through Service Quote/ Order/ Invoice","NodeType":"Use Case","TableID":5902,"CaseID":"{4DD701D1-41A9-432E-9E95-8F8D08AB2C67}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-119004","Name":"Inter State Service to SEZ Unit Customer through Service Quote/ Order/ Invoice.","NodeType":"Use Case","TableID":5902,"CaseID":"{5CB02A72-982F-4AD6-A762-CE881DC52ACC}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-119005","Name":"Inter State Service to SEZ Development Customer through Service Quote/ Order/ Invoice","NodeType":"Use Case","TableID":5902,"CaseID":"{0282EB09-4676-4A39-B2EC-EDC9568BA92B}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-119006","Name":"Intra State Service to Deemed Export Customer through Service Quote/ Order/ Invoice","NodeType":"Use Case","TableID":5902,"CaseID":"{ADF43278-38CD-463B-8E08-DD604EC3C50C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE119007","Name":"Inter State Service to Export Customer through Service Quote/ Order/ Invoice","NodeType":"Use Case","TableID":5902,"CaseID":"{1CB4368B-D6AF-4B89-AFEB-8641B0152451}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-119008","Name":"Inter State Service to SEZ Unit Customer through Service Quote/ Order/ Invoice without payment of Duty.","NodeType":"Use Case","TableID":5902,"CaseID":"{EC2138A1-46D7-430B-B335-F8D6C345BB16}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-119010","Name":"Intra State Service to SEZ Development Customer through Service Quote/ Order/ Invoice","NodeType":"Use Case","TableID":5902,"CaseID":"{4C0ECC95-F5CD-46B2-B302-84C3A5AD7D4E}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-119011","Name":"Inter State Service to Deemed Export Customer through Service Quote/ Order/ Invoice","NodeType":"Use Case","TableID":5902,"CaseID":"{135115A7-1D82-4528-959B-9A35775455CD}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-119200","Name":"End Service Document","NodeType":"End","TableID":5902,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-119201","Name":"Service Return","NodeType":"Begin","TableID":5902,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field1=1(3))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-119202","Name":"Inter State Return of Service to Registered/Unregistered Customer through Service Credit Memo","NodeType":"Use Case","TableID":5902,"CaseID":"{AA215442-D318-4160-A666-57E3FBE06CDD}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-119203","Name":"Intra State Return of Service to Registered/Unregistered Customer through Service Credit Memo","NodeType":"Use Case","TableID":5902,"CaseID":"{C0774889-632D-4799-AA04-DA25EB643832}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-119204","Name":"Inter State Service to SEZ Development Customer through Service Credit Memo\n","NodeType":"Use Case","TableID":5902,"CaseID":"{95551286-5BF2-42D5-895A-4A4F450A424B}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-119205","Name":"Intra State Return of Service to Deemed Export Customer through Service Credit Memo","NodeType":"Use Case","TableID":5902,"CaseID":"{DD75810D-2D5B-438A-A3AB-079E1B1D7AB9}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-119206","Name":"Inter State Service to Deemed Export Customer through Service Credit Memo","NodeType":"Use Case","TableID":5902,"CaseID":"{C211C520-8428-4E89-8A9A-446A5EC41D39}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-119207","Name":"Inter State Return of Service to SEZ Unit Customer through Service Credit Memo with payment of duty","NodeType":"Use Case","TableID":5902,"CaseID":"{6CFFB9A1-521E-4D60-AAFB-BDB044405A2A}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-119208","Name":"Inter State Service to Export Customer through Service Credit Memo","NodeType":"Use Case","TableID":5902,"CaseID":"{0A055D50-A23B-48A5-BADA-9D00D97EED3B}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-119400","Name":"End Service Return","NodeType":"End","TableID":5902,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-119401","Name":"Begin Exempeted","NodeType":"Begin","TableID":5902,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18446=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-119402","Name":"Intra State Service to Registered/Unregistered/Exempted Customer through Service Quote/ Order/ Invoice/ Credit Memo - Exempted","NodeType":"Use Case","TableID":5902,"CaseID":"{D460C15F-47A6-41A4-9B9F-8EA3738C2E40}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-119403","Name":"Inter State Service to Registered/Unregistered/Exempted Customer through Service Quote/ Order/ Invoice/ Credit Memo - Exempted","NodeType":"Use Case","TableID":5902,"CaseID":"{990AEEEE-91BD-4C0E-8346-897F141E4EDB}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-119410","Name":"End Exempeted","NodeType":"End","TableID":5902,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-119800","Name":"End GST Service Management","NodeType":"End","TableID":5902,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-119999","Name":"End - GST","NodeType":"End","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-200001","Name":"TDS","NodeType":"Begin","TableID":0,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"TDS","IsTaxTypeRoot":true},{"Code":"TE-200002","Name":"Purchase","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field1=1(1|2),Field18716=1(<>''))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-200003","Name":"Domestic Vendor","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field91=1(''))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-200004","Name":"Calculation of Tax Deduction at Source on Vendor Invoice where no PAN No. is specified along with Concessional Codes.\n","NodeType":"Use Case","TableID":39,"CaseID":"{DB230097-4AA7-44E2-9373-02A467DC95AC}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-200005","Name":"Calculation of Tax Deduction at Source on Vendor Invoice where PAN No. is specified without Concessional Codes.\n","NodeType":"Use Case","TableID":39,"CaseID":"{A8E114BF-F8CD-44DB-A2B3-614BC18F4442}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-200006","Name":"Calculation of Tax Deduction at Source on Vendor Invoice where both PAN No. and Concessional Codes are not specified.\n","NodeType":"Use Case","TableID":39,"CaseID":"{F39A0864-D2E7-40A5-9633-B6680CD3EC6F}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-200007","Name":"Calculation of Tax Deduction at Source on Vendor Invoice where PAN No. is specified along with Concessional Codes.\n","NodeType":"Use Case","TableID":39,"CaseID":"{1E42FDF3-1868-4205-A6D6-D2FC67BD132F}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-200008","Name":"Calculation of Tax Deduction at Source on Vendor Invoice where PAN No. is specified with Concessional Codes and Posting Date is greater than Start Date","NodeType":"Use Case","TableID":39,"CaseID":"{F8BF58D9-7681-458D-9DFC-71EA23A9F853}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-200009","Name":"Calculation of Tax Deduction at Source on Vendor Invoice where no PAN No. is specified along with Concessional Codes and Posting Date is greater then Start Date","NodeType":"Use Case","TableID":39,"CaseID":"{1ABE2C56-9700-4A30-A14A-5E8ECC2F32DD}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-200010","Name":"Calculation of Tax Deduction at Source on Vendor Invoice where PAN No. is specified without Concessional Codes with Applies-to ID.","NodeType":"Use Case","TableID":39,"CaseID":"{B8A33720-278B-45B4-8465-2D9FA273D813}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-200015","Name":"End Domestic Vendor","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-200050","Name":"NRI Vendor","NodeType":"Begin","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field91=1(<>''))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-200051","Name":"Calculation of Tax Deduction at Source on Non-Resident Vendor Invoice where PAN No. is specified without Concessional Codes.\n","NodeType":"Use Case","TableID":39,"CaseID":"{5D4C69D3-E776-4E9D-B397-09336BFDC884}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-200052","Name":"Calculation of Tax Deduction at Source on Non-Resident Vendor Invoice where no PAN No. is specified along with Concessional Codes.\n","NodeType":"Use Case","TableID":39,"CaseID":"{FEE5DFFF-0BC1-4246-AD90-6CB3DC44A451}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-200053","Name":"Calculation of Tax Deduction at Source on Non-Resident Vendor Invoice where PAN No. is specified along with Concessional Codes.\n","NodeType":"Use Case","TableID":39,"CaseID":"{487C3669-B12A-42C0-9FEA-D23AB1426BF6}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-200054","Name":"Calculation of Tax Deduction at Source on Non-Resident Vendor Invoice where both PAN No. and Concessional Codes are not specified.\n","NodeType":"Use Case","TableID":39,"CaseID":"{75222E87-A1A0-48EE-9211-D3F59009C287}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-200100","Name":"End NRI Vendor","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-200150","Name":"End Purchase","NodeType":"End","TableID":39,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-200151","Name":"Payment","NodeType":"Begin","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field51,Field2) WHERE(Field30=1(0),Field18544=1(<>''))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-200152","Name":"NRI Vendor","NodeType":"Begin","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field51,Field2) WHERE(Field3=1(2),Field12=1(<>''))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-200153","Name":"Calculation of Tax Deduction at Source through General Journal for Non-Residents Vendor where both PAN No. and Concessional Codes are not specified.\n","NodeType":"Use Case","TableID":81,"CaseID":"{271D5BC6-17E8-424E-9E34-3BEE548F938F}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-200154","Name":"Calculation of Tax Deduction at Source through General Journal for Non-Residents Vendor where PAN No. is specified without Concessional Codes.\n","NodeType":"Use Case","TableID":81,"CaseID":"{D9B47164-1681-4C6F-A746-8D710E5F103D}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-200155","Name":"Calculation of Tax Deduction at Source through General Journal for Non-Residents Vendor where no PAN No. is specified along with Concessional Codes.\n","NodeType":"Use Case","TableID":81,"CaseID":"{25C2D9C3-2A87-41A6-9AB9-DC76E818DF0C}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-200156","Name":"Calculation of Tax Deduction at Source through General Journal for Non-Residents Vendor where PAN No. is specified along with Concessional Codes.\n","NodeType":"Use Case","TableID":81,"CaseID":"{08737F79-35F1-4670-BD1D-E41764E3A9DE}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-200200","Name":"End NRI Vendor","NodeType":"End","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-200201","Name":"Domestic Vendor","NodeType":"Begin","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field51,Field2) WHERE(Field3=1(2),Field12=1(''))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-200202","Name":"Calculation of Tax Deduction at Source through General Journal for Vendor where both PAN No. and Concessional Codes are not specified.\n","NodeType":"Use Case","TableID":81,"CaseID":"{B0C259BC-64CC-4818-887A-3337D357CDFF}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-200203","Name":"Calculation of Tax Deduction at Source through General Journal for Vendor where PAN No. is specified without Concessional Codes.\n","NodeType":"Use Case","TableID":81,"CaseID":"{33BFBE99-9140-4112-A55B-35EC0D9B61B9}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-200204","Name":"Calculation of Tax Deduction at Source through General Journal for Vendor where no PAN No. is specified along with Concessional Codes.\n","NodeType":"Use Case","TableID":81,"CaseID":"{FA0E357D-1AC0-42AA-94DE-6DACA521D38E}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-200205","Name":"Calculation of Tax Deduction at Source through General Journal for Vendor where PAN No. is specified along with Concessional Codes.\n","NodeType":"Use Case","TableID":81,"CaseID":"{0CDED40A-A359-45E0-AAEC-AFE7BBCFBC96}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-200250","Name":"End Domestic Vendor","NodeType":"End","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-200251","Name":"Customer","NodeType":"Begin","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field51,Field2) WHERE(Field3=1(1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-200252","Name":"Calculation of Tax Deducted at Source through Bank Receipt Voucher/Cash Receipt Voucher/General Journal/Cash Receipt Journal for Customers with PAN and without Concessional Code.\n","NodeType":"Use Case","TableID":81,"CaseID":"{C1C8C9A9-1AE8-48D7-AB60-9EA08AA0AF21}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-200253","Name":"Calculation of Tax Deducted at Source through Bank Receipt Voucher/Cash Receipt Voucher/General Journal/Cash Receipt Journal for Customers with PAN and Concessional Code.\n","NodeType":"Use Case","TableID":81,"CaseID":"{98E3D17E-B644-4DBA-836C-CF26A20EDD3F}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-200300","Name":"End Customer","NodeType":"End","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-200301","Name":"Provisional Entry","NodeType":"Begin","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-200302","Name":"Calculation of Tax Deduction at Source with Provisional Entry through Purchase Journal for Vendor where PAN No. is specified along with Concessional Codes.\n","NodeType":"Use Case","TableID":81,"CaseID":"{7D508D37-53AC-4E44-9669-743A8BA82A3F}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-200303","Name":"Calculation of Tax Deduction at Source with Provisional Entry through Purchase Journal for Vendor where both PAN No. and Concessional Codes are not specified.\n","NodeType":"Use Case","TableID":81,"CaseID":"{25EADDE7-E634-4A01-9E4B-74E7C9D5AA62}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-200304","Name":"Calculation of Tax Deduction at Source with Provisional Entry through Purchase Journal for Vendor where no PAN No. is specified along with Concessional Codes.\n","NodeType":"Use Case","TableID":81,"CaseID":"{9E57C058-0570-4828-B24A-760D35A38D19}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-200305","Name":"Calculation of Tax Deduction at Source with Provisional Entry through Purchase Journal for Vendor where PAN No. is specified without Concessional Codes.","NodeType":"Use Case","TableID":81,"CaseID":"{61ED733A-A96B-45ED-BE21-A98A8B65566B}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-200350","Name":"End Provisional Entry","NodeType":"End","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-200400","Name":"End Payment","NodeType":"End","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-299991","Name":"End TDS","NodeType":"End","TableID":0,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-300001","Name":"TCS","NodeType":"Begin","TableID":0,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"TCS","IsTaxTypeRoot":true},{"Code":"TE-300002","Name":"Sales","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field18838=1(<>''))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-300003","Name":"Sales Document","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field1=1(1|0|2))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-300004","Name":"TCS to be calculated on Customer Invoice with PAN and without Concessional (through Sales Quote/ Sales Order/ Sales Invoice)","NodeType":"Use Case","TableID":37,"CaseID":"{BC834CD9-7782-4B77-8D0E-0D7EF1679775}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-300005","Name":"PAN No. Validations (through Sales Quote/ Sales Order/ Sales Invoice)","NodeType":"Use Case","TableID":37,"CaseID":"{E696BECA-20A6-498E-9615-114585216ABA}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-300006","Name":"TCS to be calculated on Customer Invoice without PAN and without Concessional (through Sales Quote/ Sales Order/ Sales Invoice)","NodeType":"Use Case","TableID":37,"CaseID":"{91492C74-9837-4256-8B07-1BA40247EA73}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-300007","Name":"TCS to be calculated on Customer Invoice with PAN and with Concessional (through Sales Quote/ Sales Order/ Sales Invoice)","NodeType":"Use Case","TableID":37,"CaseID":"{4DC37F56-3558-400D-ABB1-5573CCC0FD30}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-300008","Name":"TCS to be calculated on Customer Invoice with Resource and Fixed Asset (through Sales Quote/ Sales Order/ Sales Invoice)","NodeType":"Use Case","TableID":37,"CaseID":"{B8AC2649-DEA6-42B1-BF69-62A706C6DC40}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-300009","Name":"TCS to be calculated on Customer Invoice without PAN and with Concessional (through Sales Quote/ Sales Order/ Sales Invoice)","NodeType":"Use Case","TableID":37,"CaseID":"{C8358DF6-AC70-4AB2-94E4-D609ADC635CA}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-300050","Name":"End Sales Document","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-300051","Name":"Sales Return Document","NodeType":"Begin","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field3,Field4) WHERE(Field1=1(5|3))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-300052","Name":"TCS to be calculated on Customer Invoice without PAN and without Concessional (through Sales Return Order/ Credit Memo)","NodeType":"Use Case","TableID":37,"CaseID":"{B3983817-AAEE-4AD8-97D8-16A875361BA7}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-300053","Name":"PAN No Validations (through Sales Return Order/ Credit Memo)","NodeType":"Use Case","TableID":37,"CaseID":"{800AD5B2-89E5-4616-8281-37DDEC382E76}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-300054","Name":"TCS to be calculated on Customer Invoice with Resource and Fixed Asset (through Sales Return Order/ Credit Memo)","NodeType":"Use Case","TableID":37,"CaseID":"{F687A3C1-9192-42D2-A042-39C2B63B35D7}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-300055","Name":"TCS to be calculated on Customer Invoice with PAN and without Concessional (Through Sales Return Order/ Credit Memo)","NodeType":"Use Case","TableID":37,"CaseID":"{B1B995F9-C500-4846-9FE8-833A900F0846}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-300056","Name":"TCS to be calculated on Customer Invoice with PAN and with Concessional (Through Sales Return Order/ Credit Memo)","NodeType":"Use Case","TableID":37,"CaseID":"{77DE8E48-908D-4E7E-9FBE-98B9EFCB7AE5}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-300057","Name":"TCS to be calculated on Customer Invoice without PAN and with Concessional (through Sales Return Order/ Credit Memo)","NodeType":"Use Case","TableID":37,"CaseID":"{5E2AC8E9-8A09-4BA9-8C30-C1CD27CAA214}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-300100","Name":"End Sales Retun Document","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-300150","Name":"End Sales","NodeType":"End","TableID":37,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-300151","Name":"Receipt","NodeType":"Begin","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field51,Field2) WHERE(Field3=1(1),Field6=1(1|2|3),Field30=1(0),Field18807=1(<>''))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-300152","Name":"Invoice and Payment","NodeType":"Begin","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field51,Field2) WHERE(Field6=1(2|1))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-300153","Name":"TCS to be calculated on Customer Invoice and Payment with PAN and with Concessional (Through General Journal) ","NodeType":"Use Case","TableID":81,"CaseID":"{593E67FC-EACA-4C9B-8F95-4A1D3D1712E4}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-300154","Name":"TCS to be calculated on Customer Invoice and Payment without PAN and with Concessional (Through General Journal) ","NodeType":"Use Case","TableID":81,"CaseID":"{DA63D636-4773-418A-8123-6522A7867E5F}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-300155","Name":"TCS to be calculated on Customer Invoice and Payment with PAN and without Concessional (Through General Journal) ","NodeType":"Use Case","TableID":81,"CaseID":"{6B7BF4A0-0250-4480-9482-733992652D29}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-300156","Name":"TCS to be calculated on Customer Invoice and Payment without PAN and without Concessional (Through General Journal) ","NodeType":"Use Case","TableID":81,"CaseID":"{D9843455-A721-409B-8A37-D111331A8024}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-300157","Name":"PAN No. Validations through General journal","NodeType":"Use Case","TableID":81,"CaseID":"{CB9FAD0D-74A9-4DD5-A83A-E2F6A1FABA06}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-300158","Name":"TCS to be calculated on Receipt of Payment with PAN and with Concessional (Through General Journal) ","NodeType":"Use Case","TableID":81,"CaseID":"{42747DC4-6388-459E-9D2E-103F3F4E2AB0}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-300159","Name":"TCS to be calculated on Receipt of Payment without PAN and without Concessional (Through General Journal) ","NodeType":"Use Case","TableID":81,"CaseID":"{82174562-748D-4C6F-AE37-852C7CCEFEAC}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-300160","Name":"TCS to be calculated on Receipt of Payment without PAN and with Concessional (Through General Journal) ","NodeType":"Use Case","TableID":81,"CaseID":"{1E2CC6D7-1793-4F6E-BF59-A79A941FD309}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-300161","Name":"TCS to be calculated on Receipt of Payment with PAN and without Concessional (Through General Journal) ","NodeType":"Use Case","TableID":81,"CaseID":"{6F4B6558-D97D-463E-BCC2-A8AE3C7EB872}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-300200","Name":"End Invoice and Payment","NodeType":"End","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-300201","Name":"Credit Memo","NodeType":"Begin","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","Condition":"VERSION(1) SORTING(Field1,Field51,Field2) WHERE(Field6=1(3))","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-300202","Name":"TCS to be calculated on Customer Credit Memo without PAN and without Concessional (Through General Journal) ","NodeType":"Use Case","TableID":81,"CaseID":"{4BC77C19-4CA3-4913-8EB5-11EDAE308A25}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-300203","Name":"TCS to be calculated on Customer Credit Memo without PAN and with Concessional (Through General Journal) ","NodeType":"Use Case","TableID":81,"CaseID":"{3ED702E0-AFA2-4771-AD1F-8FBEF7383436}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-300204","Name":"TCS to be calculated on Customer Credit Memo with PAN and with Concessional (Through General Journal) ","NodeType":"Use Case","TableID":81,"CaseID":"{088AD93D-6264-4C00-8E0D-F15F40E5E4F6}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-300205","Name":"TCS to be calculated on Customer Credit Memo with PAN and without Concessional (Through General Journal) ","NodeType":"Use Case","TableID":81,"CaseID":"{994E3FD7-2FE1-4B6D-AC06-F819F8B94F07}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-300250","Name":"End Credit Memo","NodeType":"End","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-300300","Name":"End Receipt","NodeType":"End","TableID":81,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-399991","Name":"END TCS","NodeType":"End","TableID":0,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false},{"Code":"TE-999999","Name":"End Tax Engine","NodeType":"End","TableID":0,"CaseID":"{00000000-0000-0000-0000-000000000000}","TaxType":"","IsTaxTypeRoot":false}]]]>
Codeunit Tax Base Tax Engine Setup - NamedType UseCaseTreeLbl
diff --git a/Apps/US/IRSForms/app/src/Extensions/IRS1099BaseAppSubscribers.Codeunit.al b/Apps/US/IRSForms/app/src/Extensions/IRS1099BaseAppSubscribers.Codeunit.al
index de78659372..a90094f474 100644
--- a/Apps/US/IRSForms/app/src/Extensions/IRS1099BaseAppSubscribers.Codeunit.al
+++ b/Apps/US/IRSForms/app/src/Extensions/IRS1099BaseAppSubscribers.Codeunit.al
@@ -148,14 +148,10 @@ codeunit 10032 "IRS 1099 BaseApp Subscribers"
IRS1099VendorFormBoxSetup: Record "IRS 1099 Vendor Form Box Setup";
PeriodNo: Code[20];
begin
-#if not CLEAN25
- if not IRSFormsFeature.IsEnabled() then
+ if not SyncIRSDataInGenJnlLine(GenJnlLine) then
exit;
-#endif
- if GenJnlLine."Document Type" in [GenJnlLine."Document Type"::Invoice, GenJnlLine."Document Type"::"Credit Memo"] then begin
- PeriodNo := IRSReportingPeriod.GetReportingPeriod(GenJnlLine."Posting Date");
- GetIRS1099VendorFormBoxSetupFromGenJnlLine(IRS1099VendorFormBoxSetup, GenJnlLine, PeriodNo);
- end;
+ PeriodNo := IRSReportingPeriod.GetReportingPeriod(GenJnlLine."Posting Date");
+ GetIRS1099VendorFormBoxSetupFromGenJnlLine(IRS1099VendorFormBoxSetup, GenJnlLine, PeriodNo);
GenJnlLine.Validate("IRS 1099 Reporting Period", PeriodNo);
GenJnlLine.Validate("IRS 1099 Form No.", IRS1099VendorFormBoxSetup."Form No.");
GenJnlLine.Validate("IRS 1099 Form Box No.", IRS1099VendorFormBoxSetup."Form Box No.");
@@ -174,14 +170,23 @@ codeunit 10032 "IRS 1099 BaseApp Subscribers"
procedure UpdateIRSReportingAmountInGenJnlLine(var GenJnlLine: Record "Gen. Journal Line")
begin
-#if not CLEAN25
- if not IRSFormsFeature.IsEnabled() then
+ if not SyncIRSDataInGenJnlLine(GenJnlLine) then
exit;
-#endif
GenJnlLine.Validate("IRS 1099 Reporting Amount", GenJnlLine.Amount);
SaveChangesInGenJnlLine(GenJnlLine);
end;
+ local procedure SyncIRSDataInGenJnlLine(var GenJnlLine: Record "Gen. Journal Line"): Boolean
+ begin
+#if not CLEAN25
+ if not IRSFormsFeature.IsEnabled() then
+ exit(false);
+#endif
+ if GenJnlLine.IsTemporary() then
+ exit(false);
+ exit(GenJnlLine."Document Type" in [GenJnlLine."Document Type"::Invoice, GenJnlLine."Document Type"::"Credit Memo"]);
+ end;
+
local procedure SaveChangesInGenJnlLine(var GenJnlLine: Record "Gen. Journal Line")
begin
if GenJnlLine."Line No." <> 0 then
diff --git a/Apps/US/IRSForms/test/src/IRS1099DocumentTests.Codeunit.al b/Apps/US/IRSForms/test/src/IRS1099DocumentTests.Codeunit.al
index 70aaee2493..960aafd957 100644
--- a/Apps/US/IRSForms/test/src/IRS1099DocumentTests.Codeunit.al
+++ b/Apps/US/IRSForms/test/src/IRS1099DocumentTests.Codeunit.al
@@ -585,7 +585,7 @@ codeunit 148010 "IRS 1099 Document Tests"
[Test]
[TransactionModel(TransactionModel::AutoRollback)]
- procedure ValidateNotInsertedGenJnlLineAmountWithLineNo()
+ procedure ValidateNotInsertedInvGenJnlLineAmountWithLineNo()
var
GenJnlLine: Record "Gen. Journal Line";
#if not CLEAN25
@@ -595,20 +595,184 @@ codeunit 148010 "IRS 1099 Document Tests"
#endif
begin
// [FEATURE] [UT]
- // [SCENARIO 536496] It is possible to validate the amount in the not inserted general journal line with line no. already specified
+ // [SCENARIO 536496] It is possible to validate the amount in the not inserted invoice general journal line with line no. already specified
Initialize();
#if not CLEAN25
BindSubscription(IRSFormsEnableFeature);
#endif
- // [GIVEN] "Gen. Journal Line" with "Line No." = 1
+ // [GIVEN] "Gen. Journal Line" with "Document Type" = "Invoice" "Line No." = 1
+ GenJnlLine."Line No." := 1;
+ GenJnlLine."Document Type" := GenJnlLine."Document Type"::Invoice;
+ // [WHEN] Validate Amount field with 100
+ GenJnlLine.Validate(Amount, 100);
+ // [THEN] The IRS 1099 Reporting Amount is 100
+ GenJnlLine.TestField("IRS 1099 Reporting Amount", 100);
+
+#if not CLEAN25
+ UnbindSubscription(IRSFormsEnableFeature);
+#endif
+ end;
+
+ [Test]
+ [TransactionModel(TransactionModel::AutoRollback)]
+ procedure ValidateNotInsertedCrMemoGenJnlLineAmountWithLineNo()
+ var
+ GenJnlLine: Record "Gen. Journal Line";
+#if not CLEAN25
+#pragma warning disable AL0432
+ IRSFormsEnableFeature: Codeunit "IRS Forms Enable Feature";
+#pragma warning restore AL0432
+#endif
+ begin
+ // [FEATURE] [UT]
+ // [SCENARIO 536496] It is possible to validate the amount in the not inserted credit memo general journal line with line no. already specified
+
+ Initialize();
+#if not CLEAN25
+ BindSubscription(IRSFormsEnableFeature);
+#endif
+
+ // [GIVEN] "Gen. Journal Line" with "Document Type" = "Credit Memo" "Line No." = 1
GenJnlLine."Line No." := 1;
+ GenJnlLine."Document Type" := GenJnlLine."Document Type"::"Credit Memo";
// [WHEN] Validate Amount field with 100
GenJnlLine.Validate(Amount, 100);
// [THEN] The IRS 1099 Reporting Amount is 100
GenJnlLine.TestField("IRS 1099 Reporting Amount", 100);
+#if not CLEAN25
+ UnbindSubscription(IRSFormsEnableFeature);
+#endif
+ end;
+
+ [Test]
+ [TransactionModel(TransactionModel::AutoRollback)]
+ procedure ValidateAmountInTempGenJnlLine()
+ var
+ TempGenJnlLine: Record "Gen. Journal Line" temporary;
+#if not CLEAN25
+#pragma warning disable AL0432
+ IRSFormsEnableFeature: Codeunit "IRS Forms Enable Feature";
+#pragma warning restore AL0432
+#endif
+ begin
+ // [FEATURE] [UT]
+ // [SCENARIO 539449] The amount validation of the temporary general journal line does not affect the IRS amount
+
+ Initialize();
+#if not CLEAN25
+ BindSubscription(IRSFormsEnableFeature);
+#endif
+
+ // [GIVEN] "Gen. Journal Line" with "Line No." = 1
+ TempGenJnlLine."Line No." := 1;
+ // [WHEN] Validate Amount field with 100
+ TempGenJnlLine.Validate(Amount, 100);
+ // [THEN] The IRS 1099 Reporting Amount is 0
+ TempGenJnlLine.TestField("IRS 1099 Reporting Amount", 0);
+
+#if not CLEAN25
+ UnbindSubscription(IRSFormsEnableFeature);
+#endif
+ end;
+
+ [Test]
+ [TransactionModel(TransactionModel::AutoRollback)]
+ procedure ValidatePostingDateInTempGenJnlLine()
+ var
+ TempGenJnlLine: Record "Gen. Journal Line" temporary;
+#if not CLEAN25
+#pragma warning disable AL0432
+ IRSFormsEnableFeature: Codeunit "IRS Forms Enable Feature";
+#pragma warning restore AL0432
+#endif
+ begin
+ // [FEATURE] [UT]
+ // [SCENARIO 539449] The posting date validation of the temporary general journal line does not affect the IRS period
+
+ Initialize();
+#if not CLEAN25
+ BindSubscription(IRSFormsEnableFeature);
+#endif
+
+ // [GIVEN] "IRS Reporting Period" = "X" with "Starting Date" = work date
+ LibraryIRSReportingPeriod.CreateOneDayReportingPeriod(WorkDate());
+ // [GIVEN] "Gen. Journal Line" with "Document Type" = Invoice and "Line No." = 1
+ TempGenJnlLine."Document Type" := TempGenJnlLine."Document Type"::Invoice;
+ TempGenJnlLine."Line No." := 1;
+ // [WHEN] Validate posting date with work date
+ TempGenJnlLine.Validate("Posting Date", WorkDate());
+ // [THEN] The IRS 1099 Reporting Period is blank
+ TempGenJnlLine.TestField("IRS 1099 Reporting Period", '');
+
+#if not CLEAN25
+ UnbindSubscription(IRSFormsEnableFeature);
+#endif
+ end;
+
+ [Test]
+ [TransactionModel(TransactionModel::AutoRollback)]
+ procedure ValidateAmountInPaymentGenJnlLine()
+ var
+ GenJnlLine: Record "Gen. Journal Line";
+#if not CLEAN25
+#pragma warning disable AL0432
+ IRSFormsEnableFeature: Codeunit "IRS Forms Enable Feature";
+#pragma warning restore AL0432
+#endif
+ begin
+ // [FEATURE] [UT]
+ // [SCENARIO 539449] The amount validation of the payment general journal line does not affect the IRS amount
+
+ Initialize();
+#if not CLEAN25
+ BindSubscription(IRSFormsEnableFeature);
+#endif
+
+ // [GIVEN] "Gen. Journal Line" with "Document Type" = Payment and "Line No." = 1
+ GenJnlLine."Line No." := 1;
+ GenJnlLine."Document Type" := GenJnlLine."Document Type"::Payment;
+ // [WHEN] Validate Amount field with 100
+ GenJnlLine.Validate(Amount, 100);
+ // [THEN] The IRS 1099 Reporting Amount is 0
+ GenJnlLine.TestField("IRS 1099 Reporting Amount", 0);
+
+#if not CLEAN25
+ UnbindSubscription(IRSFormsEnableFeature);
+#endif
+ end;
+
+ [Test]
+ [TransactionModel(TransactionModel::AutoRollback)]
+ procedure ValidatePostingDateInPaymentGenJnlLine()
+ var
+ GenJnlLine: Record "Gen. Journal Line";
+#if not CLEAN25
+#pragma warning disable AL0432
+ IRSFormsEnableFeature: Codeunit "IRS Forms Enable Feature";
+#pragma warning restore AL0432
+#endif
+ begin
+ // [FEATURE] [UT]
+ // [SCENARIO 539449] The posting date validation of the payment general journal line does not affect the IRS period
+
+ Initialize();
+#if not CLEAN25
+ BindSubscription(IRSFormsEnableFeature);
+#endif
+
+ // [GIVEN] "IRS Reporting Period" = "X" with "Starting Date" = work date
+ LibraryIRSReportingPeriod.CreateOneDayReportingPeriod(WorkDate());
+ // [GIVEN] "Gen. Journal Line" with "Document Type" = Payment and "Line No." = 1
+ GenJnlLine."Document Type" := GenJnlLine."Document Type"::Payment;
+ GenJnlLine."Line No." := 1;
+ // [WHEN] Validate posting date with work date
+ GenJnlLine.Validate("Posting Date", WorkDate());
+ // [THEN] The IRS 1099 Reporting Period is blank
+ GenJnlLine.TestField("IRS 1099 Reporting Period", '');
+
#if not CLEAN25
UnbindSubscription(IRSFormsEnableFeature);
#endif
diff --git a/Apps/W1/APIV2/app/src/pages/APIV2CompanyInformation.Page.al b/Apps/W1/APIV2/app/src/pages/APIV2CompanyInformation.Page.al
index b19cbd79bc..71145a90b2 100644
--- a/Apps/W1/APIV2/app/src/pages/APIV2CompanyInformation.Page.al
+++ b/Apps/W1/APIV2/app/src/pages/APIV2CompanyInformation.Page.al
@@ -3,6 +3,7 @@ namespace Microsoft.API.V2;
using Microsoft.Foundation.Company;
using Microsoft.Foundation.Period;
using Microsoft.Finance.GeneralLedger.Setup;
+using System.Environment.Configuration;
page 30011 "APIV2 - Company Information"
{
@@ -109,6 +110,15 @@ page 30011 "APIV2 - Company Information"
Caption = 'Picture';
Editable = false;
}
+ field(experience; Experience)
+ {
+ Caption = 'Experience';
+
+ trigger OnValidate()
+ begin
+ ExperienceUpdated := true;
+ end;
+ }
field(lastModifiedDateTime; Rec.SystemModifiedAt)
{
Caption = 'Last Modified Date';
@@ -129,8 +139,13 @@ page 30011 "APIV2 - Company Information"
trigger OnModifyRecord(): Boolean
var
CompanyInformation: Record "Company Information";
+ ApplicationAreaMgmtFacade: Codeunit "Application Area Mgmt. Facade";
begin
CompanyInformation.GetBySystemId(Rec.SystemId);
+ if ExperienceUpdated then
+ if not ApplicationAreaMgmtFacade.SaveExperienceTierCurrentCompany(Experience) then
+ Error(SaveExperienceTierFailedErr);
+
Rec.Modify(true);
SetCalculatedFields();
@@ -140,11 +155,15 @@ page 30011 "APIV2 - Company Information"
LCYCurrencyCode: Code[10];
TaxRegistrationNumber: Text[50];
FiscalYearStart: Date;
+ Experience: Text;
+ ExperienceUpdated: Boolean;
+ SaveExperienceTierFailedErr: Label 'Failed to save experience tier for the current company.';
local procedure SetCalculatedFields()
var
AccountingPeriod: Record "Accounting Period";
GeneralLedgerSetup: Record "General Ledger Setup";
+ ApplicationAreaMgmtFacade: Codeunit "Application Area Mgmt. Facade";
EnterpriseNoFieldRef: FieldRef;
begin
GeneralLedgerSetup.Get();
@@ -158,6 +177,9 @@ page 30011 "APIV2 - Company Information"
TaxRegistrationNumber := EnterpriseNoFieldRef.Value()
else
TaxRegistrationNumber := Rec."VAT Registration No.";
+
+ ApplicationAreaMgmtFacade.GetExperienceTierCurrentCompany(Experience);
+ ExperienceUpdated := false;
end;
procedure IsEnterpriseNumber(var EnterpriseNoFieldRef: FieldRef): Boolean
diff --git a/Apps/W1/APIV2/test/src/APIV2CompanyInfoE2E.Codeunit.al b/Apps/W1/APIV2/test/src/APIV2CompanyInfoE2E.Codeunit.al
index a465c50eaf..2b5efeeeec 100644
--- a/Apps/W1/APIV2/test/src/APIV2CompanyInfoE2E.Codeunit.al
+++ b/Apps/W1/APIV2/test/src/APIV2CompanyInfoE2E.Codeunit.al
@@ -14,10 +14,12 @@ codeunit 139806 "APIV2 - Company Info. E2E"
LibraryUtility: Codeunit "Library - Utility";
Assert: Codeunit "Assert";
LibraryGraphMgt: Codeunit "Library - Graph Mgt";
+ ApplicationAreaMgmtFacade: Codeunit "Application Area Mgmt. Facade";
IsInitialized: Boolean;
ServiceNameTxt: Label 'companyInformation';
EmptyJSONErr: Label 'The JSON should not be blank.';
WrongPropertyValueErr: Label 'Incorrect property value for %1.', Comment = '%1=Property name';
+ SaveExperienceTierFailedErr: Label 'Failed to save experience tier for the current company.';
local procedure Initialize()
begin
@@ -79,12 +81,73 @@ codeunit 139806 "APIV2 - Company Info. E2E"
CompanyInformation.TestField(Name, ModifiedName);
end;
+ [Test]
+ procedure TestModifyValidExperinceTier()
+ var
+ CompanyInformation: Record "Company Information";
+ RequestBody: Text;
+ Response: Text;
+ TargetURL: Text;
+ CurrentExperience: Text;
+ ModifiedExperience: Text;
+ begin
+ // [SCENARIO 204030] User can modify the experince tier through a PATCH request.
+ Initialize();
+
+ // [Given] A company information exists.
+ CompanyInformation.Get();
+ ApplicationAreaMgmtFacade.GetExperienceTierCurrentCompany(CurrentExperience);
+ if CurrentExperience = 'Basic' then
+ ModifiedExperience := 'Premium'
+ else
+ ModifiedExperience := 'Basic';
+ RequestBody := GetExperienceTierJSON(ModifiedExperience);
+
+ // [WHEN] The user makes a patch request to the service.
+ TargetURL := LibraryGraphMgt.CreateTargetURL(CompanyInformation.SystemId, Page::"APIV2 - Company Information", ServiceNameTxt);
+ LibraryGraphMgt.PatchToWebService(TargetURL, RequestBody, Response);
+
+ // [THEN] The response text contains the new values.
+ VerifyPropertyInJSON(Response, 'experience', ModifiedExperience);
+
+ // [THEN] The record in the database contains the new values.
+ ApplicationAreaMgmtFacade.GetExperienceTierCurrentCompany(CurrentExperience);
+ Assert.AreEqual(ModifiedExperience, CurrentExperience, 'The experience tier should be updated.');
+ end;
+
+ [Test]
+ procedure TestModifyInvalidExperinceTier()
+ var
+ CompanyInformation: Record "Company Information";
+ RequestBody: Text;
+ Response: Text;
+ TargetURL: Text;
+ ModifiedExperience: Text;
+ begin
+ // [SCENARIO 204030] User can modify the experince tier through a PATCH request.
+ Initialize();
+
+ // [Given] A company information exists.
+ CompanyInformation.Get();
+ ModifiedExperience := LibraryUtility.GenerateRandomText(20);
+ RequestBody := GetExperienceTierJSON(ModifiedExperience);
+
+ // [WHEN] The user makes a patch request to the service.
+ TargetURL := LibraryGraphMgt.CreateTargetURL(CompanyInformation.SystemId, Page::"APIV2 - Company Information", ServiceNameTxt);
+ asserterror LibraryGraphMgt.PatchToWebService(TargetURL, RequestBody, Response);
+
+ // [THEN] Cannot assign invalid experience tier.
+ Assert.ExpectedError('400');
+ Assert.ExpectedError(SaveExperienceTierFailedErr);
+ end;
+
local procedure VerifyCompanyInformationProperties(CompanyInformationJSON: Text; var CompanyInformation: Record "Company Information")
var
GeneralLedgerSetup: Record "General Ledger Setup";
CompanyInformationRecordRef: RecordRef;
EnterpriseNoFieldRef: FieldRef;
TaxRegistrationNumber: Text;
+ Experience: Text;
begin
Assert.AreNotEqual('', CompanyInformationJSON, EmptyJSONErr);
GeneralLedgerSetup.Get();
@@ -112,6 +175,9 @@ codeunit 139806 "APIV2 - Company Info. E2E"
VerifyPropertyInJSON(CompanyInformationJSON, 'state', CompanyInformation.County);
VerifyPropertyInJSON(CompanyInformationJSON, 'country', CompanyInformation."Country/Region Code");
VerifyPropertyInJSON(CompanyInformationJSON, 'postalCode', CompanyInformation."Post Code");
+
+ ApplicationAreaMgmtFacade.GetExperienceTierCurrentCompany(Experience);
+ VerifyPropertyInJSON(CompanyInformationJSON, 'experience', Experience);
end;
local procedure VerifyPropertyInJSON(JSON: Text; PropertyName: Text; ExpectedValue: Text)
@@ -135,19 +201,9 @@ codeunit 139806 "APIV2 - Company Info. E2E"
CompanyInformationJSON := LibraryGraphMgt.AddPropertytoJSON(CompanyInformationJSON, 'country', CompanyInformation."Country/Region Code");
CompanyInformationJSON := LibraryGraphMgt.AddPropertytoJSON(CompanyInformationJSON, 'postalCode', CompanyInformation."Post Code");
end;
-}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ local procedure GetExperienceTierJSON(Experience: Text) ExperinceTierJSON: Text
+ begin
+ ExperinceTierJSON := LibraryGraphMgt.AddPropertytoJSON('', 'experience', Experience);
+ end;
+}
\ No newline at end of file
diff --git a/Apps/W1/AutomaticAccountCodes/app/src/Codeunits/AACodesPostingHelper.Codeunit.al b/Apps/W1/AutomaticAccountCodes/app/src/Codeunits/AACodesPostingHelper.Codeunit.al
index 968aa16cc6..e22b77ad4f 100644
--- a/Apps/W1/AutomaticAccountCodes/app/src/Codeunits/AACodesPostingHelper.Codeunit.al
+++ b/Apps/W1/AutomaticAccountCodes/app/src/Codeunits/AACodesPostingHelper.Codeunit.al
@@ -13,7 +13,9 @@ using Microsoft.Finance.GeneralLedger.Posting;
using Microsoft.Finance.GeneralLedger.Setup;
using Microsoft.Finance.ReceivablesPayables;
using Microsoft.Purchases.Document;
+using Microsoft.Purchases.Posting;
using Microsoft.Sales.Document;
+using Microsoft.Sales.Posting;
codeunit 4850 "AA Codes Posting Helper"
{
@@ -187,13 +189,13 @@ codeunit 4850 "AA Codes Posting Helper"
GenJournalLine."Automatic Account Group" := '';
end;
- [EventSubscriber(ObjectType::Table, Database::"Invoice Posting Buffer", 'OnAfterPrepareSales', '', false, false)]
+ [EventSubscriber(ObjectType::Codeunit, Codeunit::"Sales Post Invoice Events", 'OnAfterPrepareInvoicePostingBuffer', '', false, false)]
local procedure OnAfterInvPostBufferPrepareSales(var SalesLine: Record "Sales Line"; var InvoicePostingBuffer: Record "Invoice Posting Buffer")
begin
InvoicePostingBuffer."Automatic Account Group" := SalesLine."Automatic Account Group";
end;
- [EventSubscriber(ObjectType::Table, Database::"Invoice Posting Buffer", 'OnAfterPreparePurchase', '', false, false)]
+ [EventSubscriber(ObjectType::Codeunit, Codeunit::"Purch. Post Invoice Events", 'OnAfterPrepareInvoicePostingBuffer', '', false, false)]
local procedure OnAfterInvPostBufferPreparePurchase(var PurchaseLine: Record "Purchase Line"; var InvoicePostingBuffer: Record "Invoice Posting Buffer")
begin
InvoicePostingBuffer."Automatic Account Group" := PurchaseLine."Automatic Account Group";
diff --git a/Apps/W1/BankAccRecWithAI/app/src/BankAccRecAIProposal.Page.al b/Apps/W1/BankAccRecWithAI/app/src/BankAccRecAIProposal.Page.al
index 6399f992ef..47c0645e38 100644
--- a/Apps/W1/BankAccRecWithAI/app/src/BankAccRecAIProposal.Page.al
+++ b/Apps/W1/BankAccRecWithAI/app/src/BankAccRecAIProposal.Page.al
@@ -11,7 +11,7 @@ page 7250 "Bank Acc. Rec. AI Proposal"
Caption = 'Reconcile with Copilot';
DataCaptionExpression = PageCaptionLbl;
PageType = PromptDialog;
- IsPreview = true;
+ IsPreview = false;
Extensible = false;
ApplicationArea = All;
Editable = true;
diff --git a/Apps/W1/BankAccRecWithAI/app/src/BankRecAIMatchingImpl.Codeunit.al b/Apps/W1/BankAccRecWithAI/app/src/BankRecAIMatchingImpl.Codeunit.al
index 0a7daf0d9f..e5821f71f9 100644
--- a/Apps/W1/BankAccRecWithAI/app/src/BankRecAIMatchingImpl.Codeunit.al
+++ b/Apps/W1/BankAccRecWithAI/app/src/BankRecAIMatchingImpl.Codeunit.al
@@ -1,7 +1,6 @@
namespace Microsoft.Bank.Reconciliation;
using Microsoft.Bank.Ledger;
-using Microsoft.Upgrade;
using System.AI;
using System.Azure.KeyVault;
using System.Environment;
@@ -565,18 +564,19 @@ codeunit 7250 "Bank Rec. AI Matching Impl."
CopilotCapability: Codeunit "Copilot Capability";
EnvironmentInformation: Codeunit "Environment Information";
UpgradeTag: Codeunit "Upgrade Tag";
- UpgradeTagDefinitions: Codeunit "Upgrade Tag Definitions";
begin
if not EnvironmentInformation.IsSaaSInfrastructure() then
exit;
- if UpgradeTag.HasUpgradeTag(UpgradeTagDefinitions.GetRegisterBankAccRecCopilotCapabilityUpgradeTag()) then
+ if UpgradeTag.HasUpgradeTag(GetRegisterBankAccRecCopilotGACapabilityUpgradeTag()) then
exit;
if not CopilotCapability.IsCapabilityRegistered(Enum::"Copilot Capability"::"Bank Account Reconciliation") then
- CopilotCapability.RegisterCapability(Enum::"Copilot Capability"::"Bank Account Reconciliation", LearnMoreUrlTxt);
+ CopilotCapability.RegisterCapability(Enum::"Copilot Capability"::"Bank Account Reconciliation", Enum::"Copilot Availability"::"Generally Available", LearnMoreUrlTxt)
+ else
+ CopilotCapability.ModifyCapability(Enum::"Copilot Capability"::"Bank Account Reconciliation", Enum::"Copilot Availability"::"Generally Available", LearnMoreUrlTxt);
- UpgradeTag.SetUpgradeTag(UpgradeTagDefinitions.GetRegisterBankAccRecCopilotCapabilityUpgradeTag());
+ UpgradeTag.SetUpgradeTag(GetRegisterBankAccRecCopilotGACapabilityUpgradeTag());
end;
local procedure MatchIsAcceptable(var BankAccReconciliationLine: Record "Bank Acc. Reconciliation Line"; var TempLedgerEntryMatchingBuffer: Record "Ledger Entry Matching Buffer" temporary; MatchedLineNoTxt: Text; MatchedEntryNoTxt: Text): Boolean
@@ -617,6 +617,17 @@ codeunit 7250 "Bank Rec. AI Matching Impl."
exit(InputWithReservedWordsFound)
end;
+ local procedure GetRegisterBankAccRecCopilotGACapabilityUpgradeTag(): Code[250]
+ begin
+ exit('MS-521413-RegisterBankAccRecCopilotGACapability-20240624');
+ end;
+
+ [EventSubscriber(ObjectType::Codeunit, Codeunit::"Upgrade Tag", 'OnGetPerCompanyUpgradeTags', '', false, false)]
+ local procedure RegisterPerCompanyTags(var PerCompanyUpgradeTags: List of [Code[250]])
+ begin
+ PerCompanyUpgradeTags.Add(GetRegisterBankAccRecCopilotGACapabilityUpgradeTag());
+ end;
+
var
MatchedByCopilotTxt: label 'Matched by Copilot based on semantic similarity.', Comment = 'Copilot is a Microsoft service name and must not be translated';
ConstructingPromptFailedErr: label 'There was an error with sending the call to Copilot. Log a Business Central support request about this.', Comment = 'Copilot is a Microsoft service name and must not be translated';
diff --git a/Apps/W1/BankAccRecWithAI/app/src/TransToGLAccAIProposal.Page.al b/Apps/W1/BankAccRecWithAI/app/src/TransToGLAccAIProposal.Page.al
index b66ada8785..118d9315fb 100644
--- a/Apps/W1/BankAccRecWithAI/app/src/TransToGLAccAIProposal.Page.al
+++ b/Apps/W1/BankAccRecWithAI/app/src/TransToGLAccAIProposal.Page.al
@@ -8,7 +8,7 @@ page 7252 "Trans. To GL Acc. AI Proposal"
Caption = 'Copilot Proposals for Posting Differences to G/L Accounts';
DataCaptionExpression = PageCaptionLbl;
PageType = PromptDialog;
- IsPreview = true;
+ IsPreview = false;
Extensible = false;
PromptMode = Generate;
ApplicationArea = All;
diff --git a/Apps/W1/BankDeposits/app/src/codeunits/BankDepositPost.Codeunit.al b/Apps/W1/BankDeposits/app/src/codeunits/BankDepositPost.Codeunit.al
index f8e944a0a2..0d5c258225 100644
--- a/Apps/W1/BankDeposits/app/src/codeunits/BankDepositPost.Codeunit.al
+++ b/Apps/W1/BankDeposits/app/src/codeunits/BankDepositPost.Codeunit.al
@@ -101,8 +101,6 @@ codeunit 1690 "Bank Deposit-Post"
if GenJournalLine.Count() = 0 then
Error(EmptyDepositErr);
- if Rec."Post as Lump Sum" and (GenJournalLine.Count() = 1) then
- Rec."Post as Lump Sum" := false;
TotalAmountLCY := ModifyGenJournalLinesForBankDepositPosting(Rec, GenJournalTemplate."Force Doc. Balance");
if Rec."Post as Lump Sum" then
@@ -434,7 +432,7 @@ codeunit 1690 "Bank Deposit-Post"
VendorLedgerEntry: Record "Vendor Ledger Entry";
BankAccountLedgerEntry: Record "Bank Account Ledger Entry";
begin
- if (CurrentBankDepositHeader."Post as Lump Sum") and (GenJournalLine.Amount = CurrentBankDepositHeader."Total Deposit Amount") then begin
+ if (CurrentBankDepositHeader."Post as Lump Sum") and (GenJournalLine."Account Type" = GenJournalLine."Account Type"::"Bank Account") and (GenJournalLine.Amount = CurrentBankDepositHeader."Total Deposit Amount") then begin
OnAfterPostBalancingEntry(PostingGenJournalLine);
OnRunOnAfterPostBalancingEntry(PostingGenJournalLine);
SetLumpSumBalanceEntry(PostingGenJournalLine);
diff --git a/Apps/W1/BankDeposits/app/src/codeunits/NavigateBankDepositExt.Codeunit.al b/Apps/W1/BankDeposits/app/src/codeunits/NavigateBankDepositExt.Codeunit.al
index 60f77ec4cd..ed0315cc4f 100644
--- a/Apps/W1/BankDeposits/app/src/codeunits/NavigateBankDepositExt.Codeunit.al
+++ b/Apps/W1/BankDeposits/app/src/codeunits/NavigateBankDepositExt.Codeunit.al
@@ -1,14 +1,6 @@
namespace Microsoft.Bank.Deposit;
using Microsoft.Foundation.Navigate;
-using Microsoft.Sales.History;
-using Microsoft.Purchases.History;
-using Microsoft.Service.History;
-using Microsoft.Sales.Document;
-using Microsoft.Finance.GeneralLedger.Ledger;
-using Microsoft.Finance.VAT.Ledger;
-using Microsoft.Purchases.Payables;
-using Microsoft.Service.Ledger;
codeunit 1699 "Navigate Bank Deposit Ext."
{
@@ -46,14 +38,14 @@ codeunit 1699 "Navigate Bank Deposit Ext."
PostedBankDepositLine: Record "Posted Bank Deposit Line";
begin
if SetPostedBankDepositHeaderFilters(PostedBankDepositHeader, DocNoFilter) then
- Sender.InsertIntoDocEntry(DocumentEntry, Database::"Posted Bank Deposit Header", PostedBankDepositHeader.TableCaption(), PostedBankDepositHeader.Count());
+ DocumentEntry.InsertIntoDocEntry(Database::"Posted Bank Deposit Header", PostedBankDepositHeader.TableCaption(), PostedBankDepositHeader.Count());
if SetPostedBankDepositLineFilters(PostedBankDepositLine, DocNoFilter, PostingDateFilter, not Sender.GetNavigationFromPostedBankDeposit()) then
- Sender.InsertIntoDocEntry(DocumentEntry, Database::"Posted Bank Deposit Line", PostedBankDepositLine.TableCaption(), PostedBankDepositLine.Count());
+ DocumentEntry.InsertIntoDocEntry(Database::"Posted Bank Deposit Line", PostedBankDepositLine.TableCaption(), PostedBankDepositLine.Count());
end;
- [EventSubscriber(ObjectType::Page, Page::Navigate, 'OnBeforeNavigateShowRecords', '', false, false)]
- local procedure OnBeforeNavigateShowRecords(Sender: Page Navigate; TableID: Integer; DocNoFilter: Text; PostingDateFilter: Text; ItemTrackingSearch: Boolean; var TempDocumentEntry: Record "Document Entry" temporary; var IsHandled: Boolean; var SalesInvoiceHeader: Record "Sales Invoice Header"; var SalesCrMemoHeader: Record "Sales Cr.Memo Header"; var PurchInvHeader: Record "Purch. Inv. Header"; var PurchCrMemoHdr: Record "Purch. Cr. Memo Hdr."; var ServiceInvoiceHeader: Record "Service Invoice Header"; var ServiceCrMemoHeader: Record "Service Cr.Memo Header"; var SOSalesHeader: Record "Sales Header"; var SISalesHeader: Record "Sales Header"; var SCMSalesHeader: Record "Sales Header"; var SROSalesHeader: Record "Sales Header"; var GLEntry: Record "G/L Entry"; var VATEntry: Record "VAT Entry"; var VendLedgEntry: Record "Vendor Ledger Entry"; var WarrantyLedgerEntry: Record "Warranty Ledger Entry"; var NewSourceRecVar: Variant; var SalesShipmentHeader: Record "Sales Shipment Header"; var ReturnReceiptHeader: Record "Return Receipt Header"; var ReturnShipmentHeader: Record "Return Shipment Header"; var PurchRcptHeader: Record "Purch. Rcpt. Header")
+ [EventSubscriber(ObjectType::Page, Page::Navigate, 'OnBeforeShowRecords', '', false, false)]
+ local procedure OnBeforeShowRecords(Sender: Page Navigate; DocNoFilter: Text; PostingDateFilter: Text; ItemTrackingSearch: Boolean; var TempDocumentEntry: Record "Document Entry" temporary; var IsHandled: Boolean)
var
PostedBankDepositHeader: Record "Posted Bank Deposit Header";
PostedBankDepositLine: Record "Posted Bank Deposit Line";
@@ -61,13 +53,13 @@ codeunit 1699 "Navigate Bank Deposit Ext."
if ItemTrackingSearch or IsHandled then
exit;
- if TableID = Database::"Posted Bank Deposit Header" then begin
+ if TempDocumentEntry."Table ID" = Database::"Posted Bank Deposit Header" then begin
IsHandled := true;
SetPostedBankDepositHeaderFilters(PostedBankDepositHeader, DocNoFilter);
Page.Run(0, PostedBankDepositHeader);
exit;
end;
- if TableID = Database::"Posted Bank Deposit Line" then begin
+ if TempDocumentEntry."Table ID" = Database::"Posted Bank Deposit Line" then begin
IsHandled := true;
SetPostedBankDepositLineFilters(PostedBankDepositLine, DocNoFilter, PostingDateFilter, not Sender.GetNavigationFromPostedBankDeposit());
Page.Run(0, PostedBankDepositLine);
diff --git a/Apps/W1/BankDeposits/test/src/BankDepositPostingTests.Codeunit.al b/Apps/W1/BankDeposits/test/src/BankDepositPostingTests.Codeunit.al
index b51a11dfe5..b8fb2f2095 100644
--- a/Apps/W1/BankDeposits/test/src/BankDepositPostingTests.Codeunit.al
+++ b/Apps/W1/BankDeposits/test/src/BankDepositPostingTests.Codeunit.al
@@ -102,7 +102,7 @@ codeunit 139769 "Bank Deposit Posting Tests"
GLEntry: Record "G/L Entry";
TransactionNo: Integer;
begin
- // Verify G/L Entry after post Deposit with Unchecked Force Doc. Balance.
+ // Verify that when bank deposit has multiple lines, and 'Post as Lump Sum' is checked - it posts it as lump sum
// Setup: Create GL Account and Vendor, create Bank Deposit with Account Type GL, Vendor.
Initialize();
@@ -142,6 +142,57 @@ codeunit 139769 "Bank Deposit Posting Tests"
until PostedBankDepositLine.Next() = 0;
end;
+ [Test]
+ [HandlerFunctions('GeneralJournalBatchesPageHandler,ConfirmHandler')]
+ procedure PostBankDepositAsLumpSumOneLine()
+ var
+ GLAccount: Record "G/L Account";
+ Vendor: Record Vendor;
+ BankDepositHeader: Record "Bank Deposit Header";
+ PostedBankDepositLine: Record "Posted Bank Deposit Line";
+ GenJournalLine: Record "Gen. Journal Line";
+ SourceCodeSetup: Record "Source Code Setup";
+ GLEntry: Record "G/L Entry";
+ TransactionNo: Integer;
+ begin
+ // Bug 539413: Verify that when bank deposit has one line, and 'Post as Lump Sum' is checked - it posts it as lump sum
+
+ // Setup: Create GL Account and Vendor, create Bank Deposit with Account Type GL, Vendor.
+ Initialize();
+ LibraryERM.CreateGLAccount(GLAccount);
+ LibraryPurchase.CreateVendor(Vendor);
+ CreateBankDeposit(BankDepositHeader, GLAccount."No.", GenJournalLine."Account Type"::"G/L Account", -1, GenJournalLine."Document Type"::" ");
+
+ // Update Total Deposit Amount on header, set Post as Lump Sum to true and post Bank Deposit.
+ UpdateBankDepositHeaderWithAmount(BankDepositHeader);
+ BankDepositHeader."Post as Lump Sum" := true;
+ BankDepositHeader.Modify();
+ SourceCodeSetup.Get();
+ SourceCodeSetup."Bank Deposit" := 'BankDep';
+ SourceCodeSetup.Modify();
+
+ // Exercise.
+ PostBankDeposit(BankDepositHeader);
+
+ // Verify: Verify G/L Entry after post Deposit with Unchecked Force Doc. Balance.
+ GLEntry.SetRange("Document No.", BankDepositHeader."No.");
+ GLEntry.SetRange(Amount, BankDepositHeader."Total Deposit Amount");
+ GLEntry.FindFirst();
+ GLEntry.TestField("Document Type", GLEntry."Document Type"::" ");
+
+ // Verify all entries are in the same transaction
+ PostedBankDepositLine.SetRange("Bank Deposit No.", BankDepositHeader."No.");
+ TransactionNo := 0;
+ PostedBankDepositLine.FindSet();
+ repeat
+ GLEntry.Reset();
+ GLEntry.Get(PostedBankDepositLine."Entry No.");
+ if TransactionNo = 0 then
+ TransactionNo := GLEntry."Transaction No.";
+ Assert.AreEqual(GLEntry."Transaction No.", TransactionNo, 'All GLEntries should be in the same transaction');
+ until PostedBankDepositLine.Next() = 0;
+ end;
+
[Test]
[HandlerFunctions('GeneralJournalBatchesPageHandler,ConfirmHandler')]
procedure PostingAsLumpSumInDifferentDocumentsShouldntBePossible()
@@ -490,6 +541,51 @@ codeunit 139769 "Bank Deposit Posting Tests"
Assert.AreEqual(-Amount, PostedBankDepositHeader."Total Deposit Lines", 'The total amount of the deposit should be the sum of the lines');
end;
+ [Test]
+ [HandlerFunctions('GeneralJournalBatchesPageHandler,ConfirmHandler')]
+ procedure PostLumpSumNegativeLineWithSameAmountAsTotalDeposit()
+ var
+ GLAccount: Record "G/L Account";
+ BankDepositHeader: Record "Bank Deposit Header";
+ GenJournalBatch: Record "Gen. Journal Batch";
+ GenJournalLine: Record "Gen. Journal Line";
+ GenJournalTemplate: Record "Gen. Journal Template";
+ PostedBankDepositLine: Record "Posted Bank Deposit Line";
+ GenJournalDocumentType: Enum "Gen. Journal Document Type";
+ TotalAmount: Decimal;
+ begin
+ // [SCENARIO 538420] A Bank deposit is posted with lump sum and a negative line that equals the total amount of the deposit. The lines should be transferred to the Posted Bank Deposit Lines.
+ // [GIVEN] A Bank deposit with lump sum and a negative line that equals the total amount.
+ Initialize();
+ LibraryERM.CreateGLAccount(GLAccount);
+ CreateGenJournalBatch(GenJournalBatch, GenJournalTemplate.Type::"Bank Deposits");
+ CreateBankDepositHeaderWithBankAccount(BankDepositHeader, GenJournalBatch);
+ TotalAmount := 500;
+ BankDepositHeader."Post as Lump Sum" := true;
+ BankDepositHeader."Total Deposit Amount" := TotalAmount;
+ BankDepositHeader."Posting Date" := WorkDate();
+ BankDepositHeader."Document Date" := WorkDate();
+ BankDepositHeader.Modify();
+ LibraryERM.CreateGeneralJnlLine(
+ GenJournalLine, BankDepositHeader."Journal Template Name", BankDepositHeader."Journal Batch Name", GenJournalDocumentType::" ",
+ GenJournalLine."Account Type"::"G/L Account", GLAccount."No.", -2 * TotalAmount);
+ GenJournalLine."Posting Date" := WorkDate();
+ GenJournalLine."Document No." := BankDepositHeader."No.";
+ GenJournalLine.Modify();
+ LibraryERM.CreateGeneralJnlLine(
+ GenJournalLine, BankDepositHeader."Journal Template Name", BankDepositHeader."Journal Batch Name", GenJournalDocumentType::" ",
+ GenJournalLine."Account Type"::"G/L Account", GLAccount."No.", TotalAmount);
+ GenJournalLine."Posting Date" := WorkDate();
+ GenJournalLine."Document No." := BankDepositHeader."No.";
+ GenJournalLine.Modify();
+ Commit();
+ // [WHEN] Posting the bank deposit.
+ PostBankDeposit(BankDepositHeader);
+ // [THEN] Both lines should be transferred.
+ PostedBankDepositLine.SetRange("Bank Deposit No.", BankDepositHeader."No.");
+ Assert.AreEqual(2, PostedBankDepositLine.Count(), 'The same number of lines posted should be transferred as part of the bank deposit.');
+ end;
+
[Test]
[HandlerFunctions('GeneralJournalBatchesPageHandler,ConfirmHandler')]
procedure NavigatePageOfAPostedBankDepositShowsRelatedEntries()
diff --git a/Apps/W1/DataSearch/App/DataSearchDefaults.Codeunit.al b/Apps/W1/DataSearch/App/DataSearchDefaults.Codeunit.al
index d8db0c7ff6..00bb7110af 100644
--- a/Apps/W1/DataSearch/App/DataSearchDefaults.Codeunit.al
+++ b/Apps/W1/DataSearch/App/DataSearchDefaults.Codeunit.al
@@ -355,12 +355,30 @@ codeunit 2681 "Data Search Defaults"
var
FieldList: List of [Integer];
begin
- AddTextFields(TableNo, FieldList);
- AddIndexedFields(TableNo, FieldList);
- AddOtherFields(TableNo, FieldList);
+ if not AddFullTextIndexedFields(TableNo, FieldList) then begin
+ AddTextFields(TableNo, FieldList);
+ AddIndexedFields(TableNo, FieldList);
+ AddOtherFields(TableNo, FieldList);
+ end;
InsertFields(TableNo, FieldList);
end;
+ internal procedure AddFullTextIndexedFields(TableNo: Integer; var FieldList: List of [Integer]): Boolean
+ var
+ Field: Record Field;
+ begin
+ Field.SetRange(TableNo, TableNo);
+ Field.SetRange(Class, Field.Class::Normal);
+ Field.SetRange(OptimizeForTextSearch, true);
+ if not Field.FindSet() then
+ exit(false);
+ repeat
+ if not FieldList.Contains(Field."No.") then
+ FieldList.Add(Field."No.");
+ until Field.Next() = 0;
+ exit(true);
+ end;
+
internal procedure AddTextFields(TableNo: Integer; var FieldList: List of [Integer])
var
Field: Record Field;
diff --git a/Apps/W1/DataSearch/App/DataSearchInTable.codeunit.al b/Apps/W1/DataSearch/App/DataSearchInTable.codeunit.al
index 8756833140..983a073dd1 100644
--- a/Apps/W1/DataSearch/App/DataSearchInTable.codeunit.al
+++ b/Apps/W1/DataSearch/App/DataSearchInTable.codeunit.al
@@ -126,10 +126,12 @@ codeunit 2680 "Data Search in Table"
local procedure SetListedFieldFiltersOnRecRef(var RecRef: RecordRef; TableType: Integer; SearchString: Text; UseTextSearch: Boolean; var FieldList: List of [Integer])
var
+ Field: Record Field;
DataSearchObjectMapping: Codeunit "Data Search Object Mapping";
FldRef: FieldRef;
FieldNo: Integer;
LoadFieldsSet: Boolean;
+ UseWildCharSearch: Boolean;
begin
if RecRef.Number = 0 then
exit;
@@ -139,18 +141,27 @@ codeunit 2680 "Data Search in Table"
if FieldNo > 0 then
DataSearchObjectMapping.SetTypeFilterOnRecRef(RecRef, TableType, FieldNo);
+ if SearchString[1] = '*' then begin
+ UseWildCharSearch := true;
+ SearchString := DelChr(SearchString, '<', '*');
+ end;
RecRef.FilterGroup(-1); // 'OR' group
foreach FieldNo in FieldList do
if RecRef.FieldExist(FieldNo) then begin
- FldRef := RecRef.Field(FieldNo);
+ FldRef := RecRef.Field(FieldNo);
if FldRef.Length >= strlen(SearchString) then begin
- if UseTextSearch then
- if FldRef.Type = FieldType::Code then
- FldRef.SetFilter('*' + UpperCase(SearchString) + '*')
- else
- FldRef.SetFilter('@*' + SearchString + '*')
+ if not Field.Get(RecRef.Number, FldRef.Number) then
+ Clear(Field);
+ if not UseWildCharSearch and Field.OptimizeForTextSearch then
+ FldRef.SetFilter('&&' + SearchString + '*')
else
- FldRef.SetFilter('*' + SearchString + '*');
+ if UseTextSearch then
+ if FldRef.Type = FieldType::Code then
+ FldRef.SetFilter('*' + UpperCase(SearchString) + '*')
+ else
+ FldRef.SetFilter('@*' + SearchString + '*')
+ else
+ FldRef.SetFilter('*' + SearchString + '*');
if LoadFieldsSet then
RecRef.AddLoadFields(FieldNo)
else
diff --git a/Apps/W1/DataSearch/App/DataSearchSetupFieldList.Page.al b/Apps/W1/DataSearch/App/DataSearchSetupFieldList.Page.al
index 7cc457b234..524bbed615 100644
--- a/Apps/W1/DataSearch/App/DataSearchSetupFieldList.Page.al
+++ b/Apps/W1/DataSearch/App/DataSearchSetupFieldList.Page.al
@@ -53,6 +53,13 @@ page 2684 "Data Search Setup (Field) List"
Visible = false;
ToolTip = 'Specifies the type of the field.';
}
+ field(OptimizeForTextSearch; Rec.OptimizeForTextSearch)
+ {
+ ApplicationArea = Basic, Suite;
+ Caption = 'Optimized For Text Search';
+ Editable = false;
+ ToolTip = 'Specifies whether this field is optimized for text search. If this field is optimized for text search, the search can be faster.';
+ }
field("Enable Search"; SearchSetupField."Enable Search")
{
ApplicationArea = Basic, Suite;
@@ -126,6 +133,9 @@ page 2684 "Data Search Setup (Field) List"
Rec.setrange(ObsoleteState, Rec.ObsoleteState::No);
Rec.setfilter(Type, '%1|%2', Rec.Type::Code, Rec.Type::Text);
Rec.FilterGroup(0);
+ Rec.SetRange(OptimizeForTextSearch, true);
+ TableHasFullTextIndex := not Rec.IsEmpty();
+ Rec.SetRange(OptimizeForTextSearch);
if Rec.FindFirst() then;
if SelectedPageCaption = '' then
SelectedPageCaption := Format(Rec.TableNo) + ' ' + GetTableCaption(Rec.TableNo);
@@ -139,7 +149,9 @@ page 2684 "Data Search Setup (Field) List"
PrevTableCaption: Text;
PrevTableNo: Integer;
ShowMultipleTables: Boolean;
+ TableHasFullTextIndex: Boolean;
ResetQst: Label 'Do you want to remove the current setup and insert the default?';
+ NotFullTextMsg: Label 'Field %1 is not optimized for text search. The search will be slower.', Comment = '%1 is a field name';
local procedure InitDefaultSetup()
var
@@ -166,12 +178,21 @@ page 2684 "Data Search Setup (Field) List"
end;
local procedure UpdateRec()
+ var
+ Field: Record Field;
+ Notification: Notification;
begin
if not SearchSetupField."Enable Search" then begin
if SearchSetupField.Delete() then;
end else
if not SearchSetupField.Modify() then
SearchSetupField.Insert();
+ if SearchSetupField."Enable Search" and TableHasFullTextIndex then
+ if Field.Get(SearchSetupField."Table No.", SearchSetupField."Field No.") then
+ if not Field.OptimizeForTextSearch then begin
+ Notification.Message(StrSubstNo(NotFullTextMsg, Field."Field Caption"));
+ Notification.Send();
+ end;
end;
local procedure GetRec()
diff --git a/Apps/W1/DataSearch/test/TestDataSearch.Table.al b/Apps/W1/DataSearch/test/TestDataSearch.Table.al
new file mode 100644
index 0000000000..5a4abcdb23
--- /dev/null
+++ b/Apps/W1/DataSearch/test/TestDataSearch.Table.al
@@ -0,0 +1,26 @@
+table 139507 "Test Data Search"
+{
+ DataClassification = SystemMetadata;
+ InherentPermissions = RIMDX;
+
+ fields
+ {
+ field(1; "No."; Code[20])
+ {
+ Caption = 'Number';
+ }
+ field(2; Name; Text[100])
+ {
+ Caption = 'Name';
+ }
+ }
+
+ keys
+ {
+ key(Key1; "No.")
+ {
+ Clustered = true;
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/Apps/W1/DataSearch/test/TestDataSearch.codeunit.al b/Apps/W1/DataSearch/test/TestDataSearch.codeunit.al
index 1560568d01..14b8bf46c0 100644
--- a/Apps/W1/DataSearch/test/TestDataSearch.codeunit.al
+++ b/Apps/W1/DataSearch/test/TestDataSearch.codeunit.al
@@ -13,36 +13,41 @@ codeunit 139507 "Test Data Search"
var
LibraryAssert: Codeunit "Library Assert";
- [Test]
- [TransactionModel(TransactionModel::AutoRollback)]
- procedure TestSetupTables()
- var
- DataSearchSetupTable: Record "Data Search Setup (Table)";
- DataSearchSetupField: Record "Data Search Setup (Field)";
- TestDataSearchOnArchives: Codeunit "Test Data Search On Archives";
- DataSearchPage: TestPage "Data Search";
- begin
- // precondition: no setup exists
- DataSearchSetupTable.DeleteAll();
- DataSearchSetupField.DeleteAll();
-
- // activate the sales archive test subscribers
- BindSubscription(TestDataSearchOnArchives);
+ // It seems like the datasearch page makes the client hang
+ // Bug 539845: Test defect: OptimizeForTextSearch property causes Data Search to hang in some tests
- // When a search is initiated, a default setup is added
- DataSearchPage.OpenEdit();
- DataSearchPage.SearchString.Value('Gibberish'); // doesn't matter if it finds anything
- DataSearchPage.Close();
-
- UnBindSubscription(TestDataSearchOnArchives);
-
- LibraryAssert.IsFalse(DataSearchSetupTable.IsEmpty, 'Data Search (Table) should not be empty.');
- LibraryAssert.IsFalse(DataSearchSetupField.IsEmpty, 'Data Search (Field) should not be empty.');
- DataSearchSetupTable.SetRange("Table No.", Database::"Sales Header Archive");
- LibraryAssert.IsFalse(DataSearchSetupTable.IsEmpty, 'Data Search (Table) should contain Sales Header Archive.');
- DataSearchSetupTable.SetRange("Table No.", Database::"Sales Line Archive");
- LibraryAssert.IsFalse(DataSearchSetupTable.IsEmpty, 'Data Search (Table) should contain Sales Line Archive.');
- end;
+ /*
+ [Test]
+ [TransactionModel(TransactionModel::AutoRollback)]
+ procedure TestSetupTables()
+ var
+ DataSearchSetupTable: Record "Data Search Setup (Table)";
+ DataSearchSetupField: Record "Data Search Setup (Field)";
+ TestDataSearchOnArchives: Codeunit "Test Data Search On Archives";
+ DataSearchPage: TestPage "Data Search";
+ begin
+ // precondition: no setup exists
+ DataSearchSetupTable.DeleteAll();
+ DataSearchSetupField.DeleteAll();
+
+ // activate the sales archive test subscribers
+ BindSubscription(TestDataSearchOnArchives);
+
+ // When a search is initiated, a default setup is added
+ DataSearchPage.OpenEdit();
+ DataSearchPage.SearchString.Value('Gibberish'); // doesn't matter if it finds anything
+ DataSearchPage.Close();
+
+ UnBindSubscription(TestDataSearchOnArchives);
+
+ LibraryAssert.IsFalse(DataSearchSetupTable.IsEmpty, 'Data Search (Table) should not be empty.');
+ LibraryAssert.IsFalse(DataSearchSetupField.IsEmpty, 'Data Search (Field) should not be empty.');
+ DataSearchSetupTable.SetRange("Table No.", Database::"Sales Header Archive");
+ LibraryAssert.IsFalse(DataSearchSetupTable.IsEmpty, 'Data Search (Table) should contain Sales Header Archive.');
+ DataSearchSetupTable.SetRange("Table No.", Database::"Sales Line Archive");
+ LibraryAssert.IsFalse(DataSearchSetupTable.IsEmpty, 'Data Search (Table) should contain Sales Line Archive.');
+ end;
+ */
[Test]
[HandlerFunctions('DataSearchSetupListsPageHandler')]
@@ -86,7 +91,7 @@ codeunit 139507 "Test Data Search"
[TransactionModel(TransactionModel::AutoRollback)]
procedure TestSearchFewFound()
var
- Customer: Record Customer;
+ TestDataSearch: Record "Test Data Search";
DataSearchInTable: Codeunit "Data Search in Table";
Results: Dictionary of [Text, Text];
SearchTerm: Text;
@@ -95,10 +100,10 @@ codeunit 139507 "Test Data Search"
Init();
SearchTerm := CopyStr(Format(CreateGuid()), 1, 35);
for i := 1 to 3 do begin
- CreateDummyCustomer(Customer, SearchTerm, 1);
- DataSearchInTable.FindInTable(Database::Customer, 0, SearchTerm, Results);
+ CreateDummyTestDataSearch(TestDataSearch, SearchTerm, 1);
+ DataSearchInTable.FindInTable(Database::"Test Data Search", 0, SearchTerm, Results);
LibraryAssert.AreEqual(i, Results.Count, 'Wrong no. of results returned');
- LibraryAssert.AreEqual(Format(Customer.SystemId), Results.Keys.Get(i), 'Wrong system id');
+ LibraryAssert.AreEqual(Format(TestDataSearch.SystemId), Results.Keys.Get(i), 'Wrong system id');
LibraryAssert.IsTrue(StrPos(Results.Values.Get(i), SearchTerm) > 0, 'Wrong match');
end;
end;
@@ -107,15 +112,15 @@ codeunit 139507 "Test Data Search"
[TransactionModel(TransactionModel::AutoRollback)]
procedure TestSearchManyFound()
var
- Customer: Record Customer;
+ TestDataSearch: Record "Test Data Search";
DataSearchInTable: Codeunit "Data Search in Table";
Results: Dictionary of [Text, Text];
SearchTerm: Text;
begin
Init();
SearchTerm := CopyStr(Format(CreateGuid()), 1, 35);
- CreateDummyCustomer(Customer, SearchTerm, 5);
- DataSearchInTable.FindInTable(Database::Customer, 0, SearchTerm, Results);
+ CreateDummyTestDataSearch(TestDataSearch, SearchTerm, 5);
+ DataSearchInTable.FindInTable(Database::"Test Data Search", 0, SearchTerm, Results);
LibraryAssert.AreEqual(4, Results.Count, 'Wrong no. of results returned');
end;
@@ -123,15 +128,15 @@ codeunit 139507 "Test Data Search"
[TransactionModel(TransactionModel::AutoRollback)]
procedure TestMultiTermSearch()
var
- Customer: Record Customer;
+ TestDataSearch: Record "Test Data Search";
DataSearchInTable: Codeunit "Data Search in Table";
Results: Dictionary of [Text, Text];
SearchTerm: Text;
begin
Init();
SearchTerm := CopyStr(Format(CreateGuid()), 1, 35);
- CreateDummyCustomer(Customer, SearchTerm, 5);
- DataSearchInTable.FindInTable(Database::Customer, 0, SearchTerm + ' ' + Customer."No.", Results);
+ CreateDummyTestDataSearch(TestDataSearch, SearchTerm, 5);
+ DataSearchInTable.FindInTable(Database::"Test Data Search", 0, SearchTerm + ' ' + TestDataSearch."No.", Results);
LibraryAssert.AreEqual(1, Results.Count, 'Wrong no. of results returned');
end;
@@ -159,93 +164,108 @@ codeunit 139507 "Test Data Search"
VerifyTableCaptionForTable(Database::"Service Header", ServiceDocumentType::"Order".AsInteger(), Page::"Service Orders");
VerifyTableCaptionForTable(Database::"Service Item Line", ServiceDocumentType::Invoice.AsInteger(), Page::"Service Invoices");
end;
-
- [Test]
- [HandlerFunctions('SalesOrderPageHandler,ConfirmDlgYes,CloseMessage,SalesOrderArchivePageHandler')]
- [TransactionModel(TransactionModel::AutoCommit)]
- procedure TestSearchSalesOrders()
- var
- SalesHeader: Record "Sales Header";
- SalesLine: Record "Sales Line";
- Customer: Record Customer;
- DataSearchSetupTable: Record "Data Search Setup (Table)";
- TestDataSearchOnArchives: Codeunit "Test Data Search On Archives";
- LibrarySales: Codeunit "Library - Sales";
- DataSearchPage: TestPage "Data Search";
- SalesDocumentType: Enum "Sales Document Type";
- i: Integer;
- begin
- BindSubscription(TestDataSearchOnArchives);
- // Given: Sales order with sales line with description 'Hello' and descr.2 'World';
- DataSearchSetupTable.Setrange("Role Center ID", DataSearchSetupTable.GetRoleCenterID());
- DataSearchSetupTable.SetFilter("Table No.", '%1|%2', Database::"Sales Line", Database::"Sales Line Archive");
- DataSearchSetupTable.DeleteAll();
- DataSearchSetupTable.Init();
- DataSearchSetupTable."Role Center ID" := DataSearchSetupTable.GetRoleCenterID();
- DataSearchSetupTable."Table No." := Database::"Sales Line";
- DataSearchSetupTable.InsertRec(true);
- DataSearchSetupTable.Init();
- DataSearchSetupTable."Table No." := Database::"Sales Line Archive";
- DataSearchSetupTable."Table Subtype" := 0;
- DataSearchSetupTable.InsertRec(true);
-
- LibrarySales.CreateCustomer(Customer);
- LibrarySales.CreateSalesOrder(SalesHeader);
- SalesDocumentType := SalesHeader."Document Type";
- LibrarySales.CreateSimpleItemSalesLine(SalesLine, SalesHeader, SalesDocumentType);
- SalesLine.Description := 'Hello';
- SalesLine."Description 2" := 'World';
- SalesLine.Modify();
-
- // When user searches for 'hello world'...
- DataSearchPage.OpenEdit();
- DataSearchPage.TestSearchForSalesOrders.Invoke();
-
- // there should be at least one sales line found
- DataSearchPage.LinesPart.First();
- LibraryAssert.AreEqual('Sales Orders - lines', DataSearchPage.LinesPart.Description.Value, 'wrong header');
- DataSearchPage.LinesPart.Next();
- // example: ' Order 101017 20000: Description: Hello, Description 2: World'
-#pragma warning disable AA0217
- LibraryAssert.AreEqual(StrSubstNo(' %1 %2 %3: Description: Hello, Description 2: World', SalesLine."Document Type", SalesLine."Document No.", SalesLine."Line No."),
-#pragma warning restore AA0217
- DataSearchPage.LinesPart.Description.Value, 'wrong line');
- DataSearchPage.LinesPart.Description.Drilldown(); // should open a sales order page which invokes the archive function
-
- // New search for same data - this time there should also be a sales order archive
- // activate the sales archive test subscribers
- DataSearchPage.TestClearResults.Invoke();
-
- DataSearchSetupTable.Setrange("Role Center ID", DataSearchSetupTable.GetRoleCenterID());
- DataSearchSetupTable.Setrange("Table No.", Database::"Sales Line Archive");
- DataSearchSetupTable.DeleteAll();
-
- DataSearchSetupTable.Init();
- DataSearchSetupTable."Role Center ID" := DataSearchSetupTable.GetRoleCenterID();
- DataSearchSetupTable."Table No." := Database::"Sales Line Archive";
- DataSearchSetupTable.InsertRec(true);
-
- DataSearchPage.TestSearchForSalesOrders.Invoke();
-
- DataSearchPage.LinesPart.First(); // the sales lines header
- DataSearchPage.LinesPart.Next(); // The first sales line
- i := 0;
- while (i < 4) and (StrPos(DataSearchPage.LinesPart.Description.Value, 'Sales Order Archives') < 1) do begin
- DataSearchPage.LinesPart.Next(); // Maybe the sales line archive header
- i += 1;
+ /*
+ [Test]
+ [HandlerFunctions('SalesOrderPageHandler,ConfirmDlgYes,CloseMessage,SalesOrderArchivePageHandler')]
+ [TransactionModel(TransactionModel::AutoCommit)]
+ procedure TestSearchSalesOrders()
+ var
+ SalesHeader: Record "Sales Header";
+ SalesLine: Record "Sales Line";
+ Customer: Record Customer;
+ DataSearchSetupTable: Record "Data Search Setup (Table)";
+ DataSearchSetupField: Record "Data Search Setup (Field)";
+ TestDataSearchOnArchives: Codeunit "Test Data Search On Archives";
+ LibrarySales: Codeunit "Library - Sales";
+ DataSearchPage: TestPage "Data Search";
+ SalesDocumentType: Enum "Sales Document Type";
+ i: Integer;
+ begin
+ BindSubscription(TestDataSearchOnArchives);
+ // Given: Sales order with sales line with description 'Hello' and descr.2 'World';
+ DataSearchSetupTable.Setrange("Role Center ID", DataSearchSetupTable.GetRoleCenterID());
+ DataSearchSetupTable.SetFilter("Table No.", '%1|%2', Database::"Sales Line", Database::"Sales Line Archive");
+ DataSearchSetupTable.DeleteAll();
+ DataSearchSetupTable.Init();
+ DataSearchSetupTable."Role Center ID" := DataSearchSetupTable.GetRoleCenterID();
+ DataSearchSetupTable."Table No." := Database::"Sales Line";
+ DataSearchSetupTable.InsertRec(true);
+ DataSearchSetupField.Init();
+ DataSearchSetupField."Table No." := Database::"Sales Line";
+ DataSearchSetupField."Field No." := 40; // "Shortcut Dimension 1 Code"
+ DataSearchSetupField."Enable Search" := true;
+ DataSearchSetupField.Insert();
+ DataSearchSetupField."Field No." := 41; // "Shortcut Dimension 1 Code"
+ DataSearchSetupField.Insert();
+ DataSearchSetupTable.Init();
+ DataSearchSetupTable."Table No." := Database::"Sales Line Archive";
+ DataSearchSetupTable."Table Subtype" := 0;
+ DataSearchSetupTable.InsertRec(true);
+ DataSearchSetupField.Init();
+ DataSearchSetupField."Table No." := Database::"Sales Line Archive";
+ DataSearchSetupField."Field No." := 40; // "Shortcut Dimension 1 Code"
+ DataSearchSetupField."Enable Search" := true;
+ DataSearchSetupField.Insert();
+ DataSearchSetupField."Field No." := 41; // "Shortcut Dimension 1 Code"
+ DataSearchSetupField.Insert();
+
+ LibrarySales.CreateCustomer(Customer);
+ LibrarySales.CreateSalesOrder(SalesHeader);
+ SalesDocumentType := SalesHeader."Document Type";
+ LibrarySales.CreateSimpleItemSalesLine(SalesLine, SalesHeader, SalesDocumentType);
+ SalesLine."Shortcut Dimension 1 Code" := 'Hello'; // are not marked as OptimizeForTextSearch
+ SalesLine."Shortcut Dimension 2 Code" := 'World';
+ SalesLine.Modify();
+
+ // When user searches for 'hello world'...
+ DataSearchPage.OpenEdit();
+ DataSearchPage.TestSearchForSalesOrders.Invoke();
+
+ // there should be at least one sales line found
+ DataSearchPage.LinesPart.First();
+ LibraryAssert.AreEqual('Sales Orders - lines', DataSearchPage.LinesPart.Description.Value, 'wrong header');
+ DataSearchPage.LinesPart.Next();
+ // example: ' Order 101017 20000: hortcut Dimension 1 Code: HELLO, Shortcut Dimension 2 Code: WORLD'
+ #pragma warning disable AA0217
+ LibraryAssert.AreEqual(StrSubstNo(' %1 %2 %3: Shortcut Dimension 1 Code: HELLO, Shortcut Dimension 2 Code: WORLD', SalesLine."Document Type", SalesLine."Document No.", SalesLine."Line No."),
+ #pragma warning restore AA0217
+ DataSearchPage.LinesPart.Description.Value, 'wrong line');
+ DataSearchPage.LinesPart.Description.Drilldown(); // should open a sales order page which invokes the archive function
+
+ // New search for same data - this time there should also be a sales order archive
+ // activate the sales archive test subscribers
+ DataSearchPage.TestClearResults.Invoke();
+
+ DataSearchSetupTable.Setrange("Role Center ID", DataSearchSetupTable.GetRoleCenterID());
+ DataSearchSetupTable.Setrange("Table No.", Database::"Sales Line Archive");
+ DataSearchSetupTable.DeleteAll();
+
+ DataSearchSetupTable.Init();
+ DataSearchSetupTable."Role Center ID" := DataSearchSetupTable.GetRoleCenterID();
+ DataSearchSetupTable."Table No." := Database::"Sales Line Archive";
+ DataSearchSetupTable.InsertRec(true);
+
+ DataSearchPage.TestSearchForSalesOrders.Invoke();
+
+ DataSearchPage.LinesPart.First(); // the sales lines header
+ DataSearchPage.LinesPart.Next(); // The first sales line
+ i := 0;
+ while (i < 4) and (StrPos(DataSearchPage.LinesPart.Description.Value, 'Sales Order Archives') < 1) do begin
+ DataSearchPage.LinesPart.Next(); // Maybe the sales line archive header
+ i += 1;
+ end;
+ LibraryAssert.AreEqual('Sales Order Archives - lines', DataSearchPage.LinesPart.Description.Value, 'wrong header for archive');
+
+ DataSearchPage.LinesPart.Next(); // The first sales line archive
+ // example: ' Order 101017 1 1 20000: Shortcut Dimension 1 Code: HELLO, Shortcut Dimension 2 Code: WORLD'
+ LibraryAssert.IsTrue(StrPos(DataSearchPage.LinesPart.Description.Value, 'Order') > 0, 'wrong line for archive');
+ LibraryAssert.IsTrue(StrPos(DataSearchPage.LinesPart.Description.Value, 'Shortcut Dimension 1 Code: HELLO, Shortcut Dimension 2 Code: WORLD') > 0, 'wrong line for archive 2');
+ DataSearchPage.LinesPart.Description.Drilldown(); // should open a sales order archive page which invokes the archive function
+
+ UnBindSubscription(TestDataSearchOnArchives);
+ DataSearchPage.Close();
end;
- LibraryAssert.AreEqual('Sales Order Archives - lines', DataSearchPage.LinesPart.Description.Value, 'wrong header for archive');
-
- DataSearchPage.LinesPart.Next(); // The first sales line archive
- // example: ' Order 101017 1 1 20000: Description: Hello, Description 2: World'
- LibraryAssert.IsTrue(StrPos(DataSearchPage.LinesPart.Description.Value, 'Order') > 0, 'wrong line for archive');
- LibraryAssert.IsTrue(StrPos(DataSearchPage.LinesPart.Description.Value, 'Description: Hello, Description 2: World') > 0, 'wrong line for archive 2');
- DataSearchPage.LinesPart.Description.Drilldown(); // should open a sales order archive page which invokes the archive function
-
- UnBindSubscription(TestDataSearchOnArchives);
- DataSearchPage.Close();
- end;
-
+ */
[Test]
[TransactionModel(TransactionModel::AutoRollback)]
procedure TestGetPageIdForCustomer()
@@ -263,7 +283,7 @@ codeunit 139507 "Test Data Search"
LibraryAssert.AreEqual(Page::"Customer Card", DisplayPageId, 'Wrong card id');
LibraryAssert.AreEqual(DisplayTableNo, Database::Customer, 'Wrong display table no.');
- LibraryAssert.AreEqual(DisplaySystemId, Customer.SystemId, 'Wrong system id for customer');
+ LibraryAssert.AreEqual(DisplaySystemId, Customer.SystemId, 'Wrong system id for TestDataSearch');
end;
[Test]
@@ -326,6 +346,7 @@ codeunit 139507 "Test Data Search"
}
]
*/
+
[Test]
[TransactionModel(TransactionModel::AutoCommit)]
procedure TestGetSetup()
@@ -360,47 +381,49 @@ codeunit 139507 "Test Data Search"
DataSearchSetupListsPage.ListIsEnabledCtrl.SetValue(true);
end;
- [PageHandler]
- procedure SalesOrderPageHandler(var SalesOrder: TestPage "Sales Order")
- begin
- SalesOrder."Archive Document".Invoke();
- SalesOrder.Close();
- end;
+ /*
+ [PageHandler]
+ procedure SalesOrderPageHandler(var SalesOrder: TestPage "Sales Order")
+ begin
+ SalesOrder."Archive Document".Invoke();
+ SalesOrder.Close();
+ end;
- [PageHandler]
- procedure SalesOrderArchivePageHandler(var SalesOrderArchive: TestPage "Sales Order Archive")
- begin
- SalesOrderArchive.Close();
- end;
+ [PageHandler]
+ procedure SalesOrderArchivePageHandler(var SalesOrderArchive: TestPage "Sales Order Archive")
+ begin
+ SalesOrderArchive.Close();
+ end;
- [ConfirmHandler]
- procedure ConfirmDlgYes(Question: Text[1024]; var Answer: Boolean)
- begin
- Answer := true;
- end;
+ [ConfirmHandler]
+ procedure ConfirmDlgYes(Question: Text[1024]; var Answer: Boolean)
+ begin
+ Answer := true;
+ end;
- [MessageHandler]
- procedure CloseMessage(Message: Text[1024])
- begin
- end;
+ [MessageHandler]
+ procedure CloseMessage(Message: Text[1024])
+ begin
+ end;
- [Test]
- [HandlerFunctions('DataSearchPageHandler')]
- [TransactionModel(TransactionModel::AutoRollback)]
- procedure TestStartUpParameter()
- var
- DataSearch: Page "Data Search";
- begin
- DataSearch.SetSearchString('Hello World');
- DataSearch.Run();
- end;
+ [Test]
+ [HandlerFunctions('DataSearchPageHandler')]
+ [TransactionModel(TransactionModel::AutoRollback)]
+ procedure TestStartUpParameter()
+ var
+ DataSearch: Page "Data Search";
+ begin
+ DataSearch.SetSearchString('Hello World');
+ DataSearch.Run();
+ end;
- [PageHandler]
- procedure DataSearchPageHandler(var DataSearch: TestPage "Data Search")
- begin
- LibraryAssert.AreEqual('Searching for "Hello World"...', DataSearch.SearchString.Value, 'Start-up parameter not specified correctly.');
- DataSearch.Close();
- end;
+ [PageHandler]
+ procedure DataSearchPageHandler(var DataSearch: TestPage "Data Search")
+ begin
+ LibraryAssert.AreEqual('Searching for "Hello World"...', DataSearch.SearchString.Value, 'Start-up parameter not specified correctly.');
+ DataSearch.Close();
+ end;
+ */
local procedure VerifyTableCaptionForTable(TableNo: Integer; TableSubType: Integer; PageNo: Integer)
var
@@ -424,15 +447,15 @@ codeunit 139507 "Test Data Search"
LibraryAssert.AreEqual(ExpectedCaption, TempDataSearchResult.GetTableCaption(), 'Wrong table caption');
end;
- local procedure CreateDummyCustomer(var Customer: Record Customer; PartOfName: Text; NoOfCustomers: Integer)
+ local procedure CreateDummyTestDataSearch(var TestDataSearch: Record "Test Data Search"; PartOfName: Text; NoOfTestDataSearchs: Integer)
var
i: Integer;
begin
- for i := 1 to NoOfCustomers do begin
- Customer.Init();
- Customer."No." := CopyStr(Format(CreateGuid()), 1, MaxStrLen(Customer."No."));
- Customer.Name := 'a' + PartOfName + format(i);
- Customer.Insert();
+ for i := 1 to NoOfTestDataSearchs do begin
+ TestDataSearch.Init();
+ TestDataSearch."No." := CopyStr(Format(CreateGuid()), 1, MaxStrLen(TestDataSearch."No."));
+ TestDataSearch.Name := 'a ' + PartOfName + format(i);
+ TestDataSearch.Insert();
end;
end;
@@ -444,9 +467,9 @@ codeunit 139507 "Test Data Search"
DataSearchSetupTable.DeleteAll();
DataSearchSetupField.DeleteAll();
DataSearchSetupTable."Role Center ID" := DataSearchSetupTable.GetRoleCenterID();
- DataSearchSetupTable."Table No." := Database::Customer;
+ DataSearchSetupTable."Table No." := Database::"Test Data Search";
DataSearchSetupTable.Insert(true);
LibraryAssert.IsFalse(DataSearchSetupField.IsEmpty, 'Data Search (Field) should not be empty.');
end;
-}
\ No newline at end of file
+}
diff --git a/Apps/W1/DataSearch/test/TestDataSearchOnArchives.codeunit.al b/Apps/W1/DataSearch/test/TestDataSearchOnArchives.codeunit.al
index 5fe6cbce3a..01d1ce3c81 100644
--- a/Apps/W1/DataSearch/test/TestDataSearchOnArchives.codeunit.al
+++ b/Apps/W1/DataSearch/test/TestDataSearchOnArchives.codeunit.al
@@ -85,4 +85,4 @@ codeunit 139508 "Test Data Search On Archives"
begin
IsExcluded := IsExcluded or (RelatedTableNo in [Database::"Customer Price Group", Database::"Work Type", Database::"Transport Method"]);
end;
-}
\ No newline at end of file
+}
diff --git a/Apps/W1/EDocument/app/app.json b/Apps/W1/EDocument/app/app.json
index 19cbc30287..3b96559f6a 100644
--- a/Apps/W1/EDocument/app/app.json
+++ b/Apps/W1/EDocument/app/app.json
@@ -10,7 +10,7 @@
"help": "https://go.microsoft.com/fwlink/?linkid=2204541",
"url": "https://go.microsoft.com/fwlink/?LinkId=724011",
"logo": "ExtensionLogo.png",
- "contextSensitiveHelpUrl": "https://go.microsoft.com/fwlink/?linkid=2206603",
+ "contextSensitiveHelpUrl": "https://learn.microsoft.com/en-us/dynamics365/business-central/",
"dependencies": [],
"internalsVisibleTo": [
{
@@ -34,4 +34,4 @@
},
"application": "25.0.0.0",
"target": "OnPrem"
-}
\ No newline at end of file
+}
diff --git a/Apps/W1/EDocument/app/src/Document/EDocument.Page.al b/Apps/W1/EDocument/app/src/Document/EDocument.Page.al
index b20c997648..7706b1e13a 100644
--- a/Apps/W1/EDocument/app/src/Document/EDocument.Page.al
+++ b/Apps/W1/EDocument/app/src/Document/EDocument.Page.al
@@ -333,7 +333,6 @@ page 6121 "E-Document"
ToolTip = 'Match E-document lines to Purchase Order.';
Image = SparkleFilled;
Visible = ShowMapToOrder and CopilotVisible;
- Enabled = CopilotEnabled;
trigger OnAction()
var
@@ -481,7 +480,6 @@ page 6121 "E-Document"
HasErrorsOrWarnings := false;
HasErrors := false;
IsProcessed := false;
- CopilotEnabled := EDocPOMatching.IsCopilotEnabled();
CopilotVisible := EDocPOMatching.IsCopilotVisible();
end;
@@ -580,7 +578,7 @@ page 6121 "E-Document"
EDocumentHelper: Codeunit "E-Document Processing";
ErrorsAndWarningsNotification: Notification;
RecordLinkTxt, StyleStatusTxt : Text;
- ShowRelink, ShowMapToOrder, HasErrorsOrWarnings, HasErrors, IsIncomingDoc, IsProcessed, CopilotEnabled, CopilotVisible : Boolean;
+ ShowRelink, ShowMapToOrder, HasErrorsOrWarnings, HasErrors, IsIncomingDoc, IsProcessed, CopilotVisible : Boolean;
EDocHasErrorOrWarningMsg: Label 'Errors or warnings found for E-Document. Please review below in "Error Messages" section.';
DocNotCreatedMsg: Label 'Failed to create new %1 from E-Document. Please review errors below.', Comment = '%1 - E-Document Document Type';
diff --git a/Apps/W1/EDocument/app/src/Extensions/EDocPurchaseOrder.PageExt.al b/Apps/W1/EDocument/app/src/Extensions/EDocPurchaseOrder.PageExt.al
index 8fae7ddcf6..1659da0132 100644
--- a/Apps/W1/EDocument/app/src/Extensions/EDocPurchaseOrder.PageExt.al
+++ b/Apps/W1/EDocument/app/src/Extensions/EDocPurchaseOrder.PageExt.al
@@ -36,7 +36,6 @@ pageextension 6132 "E-Doc. Purchase Order" extends "Purchase Order"
ApplicationArea = All;
Image = SparkleFilled;
Visible = ShowMapToEDocument and CopilotVisible;
- Enabled = CopilotEnabled;
trigger OnAction()
var
@@ -94,14 +93,13 @@ pageextension 6132 "E-Doc. Purchase Order" extends "Purchase Order"
var
- ShowMapToEDocument, CopilotEnabled, CopilotVisible : Boolean;
+ ShowMapToEDocument, CopilotVisible : Boolean;
trigger OnOpenPage()
var
EDocPOMatching: Codeunit "E-Doc. PO Copilot Matching";
begin
- CopilotEnabled := EDocPOMatching.IsCopilotEnabled();
CopilotVisible := EDocPOMatching.IsCopilotVisible();
end;
diff --git a/Apps/W1/EDocument/app/src/Extensions/EDocPurchaseOrderList.PageExt.al b/Apps/W1/EDocument/app/src/Extensions/EDocPurchaseOrderList.PageExt.al
index 4b4071d689..f33edf8865 100644
--- a/Apps/W1/EDocument/app/src/Extensions/EDocPurchaseOrderList.PageExt.al
+++ b/Apps/W1/EDocument/app/src/Extensions/EDocPurchaseOrderList.PageExt.al
@@ -23,7 +23,6 @@ pageextension 6137 "E-Doc. Purchase Order List" extends "Purchase Order List"
ApplicationArea = All;
Image = SparkleFilled;
Visible = ShowMapToEDocument and CopilotVisible;
- Enabled = CopilotEnabled;
trigger OnAction()
var
@@ -82,13 +81,12 @@ pageextension 6137 "E-Doc. Purchase Order List" extends "Purchase Order List"
var
- ShowMapToEDocument, CopilotEnabled, CopilotVisible : Boolean;
+ ShowMapToEDocument, CopilotVisible : Boolean;
trigger OnOpenPage()
var
EDocPOMatching: Codeunit "E-Doc. PO Copilot Matching";
begin
- CopilotEnabled := EDocPOMatching.IsCopilotEnabled();
CopilotVisible := EDocPOMatching.IsCopilotVisible();
end;
diff --git a/Apps/W1/EDocument/app/src/Helpers/EDocumentImportHelper.Codeunit.al b/Apps/W1/EDocument/app/src/Helpers/EDocumentImportHelper.Codeunit.al
index 26ab2ede5f..7e8289962a 100644
--- a/Apps/W1/EDocument/app/src/Helpers/EDocumentImportHelper.Codeunit.al
+++ b/Apps/W1/EDocument/app/src/Helpers/EDocumentImportHelper.Codeunit.al
@@ -5,7 +5,9 @@
namespace Microsoft.eServices.EDocument;
using Microsoft.Bank.Reconciliation;
+using Microsoft.Finance.Currency;
using Microsoft.Finance.GeneralLedger.Journal;
+using Microsoft.Finance.GeneralLedger.Setup;
using Microsoft.Finance.VAT.Calculation;
using Microsoft.Foundation.Company;
using Microsoft.Foundation.UOM;
@@ -639,6 +641,21 @@ codeunit 6109 "E-Document Import Helper"
SetFieldValue(EDocument, FieldRef, Value);
end;
+ internal procedure GetCurrencyRoundingPrecision(CurrencyCode: Code[10]): Decimal
+ var
+ GeneralLedgerSetup: Record "General Ledger Setup";
+ Currency: Record Currency;
+ AmountRoundingPrecision: Decimal;
+ begin
+ GeneralLedgerSetup.Get();
+ AmountRoundingPrecision := GeneralLedgerSetup."Amount Rounding Precision";
+ if CurrencyCode <> '' then
+ if Currency.Get(CurrencyCode) then
+ AmountRoundingPrecision := Currency."Amount Rounding Precision";
+
+ exit(AmountRoundingPrecision);
+ end;
+
local procedure FindAppropriateGLAccount(var EDocument: Record "E-Document"; var SourceRecRef: RecordRef; LineDescription: Text[250]; LineDirectUnitCost: Decimal): Code[20]
var
PurchasesPayablesSetup: Record "Purchases & Payables Setup";
diff --git a/Apps/W1/EDocument/app/src/Processing/OrderMatching/Copilot/EDocPOCopilotMatching.Codeunit.al b/Apps/W1/EDocument/app/src/Processing/OrderMatching/Copilot/EDocPOCopilotMatching.Codeunit.al
index 74b8e660a5..10ea66d330 100644
--- a/Apps/W1/EDocument/app/src/Processing/OrderMatching/Copilot/EDocPOCopilotMatching.Codeunit.al
+++ b/Apps/W1/EDocument/app/src/Processing/OrderMatching/Copilot/EDocPOCopilotMatching.Codeunit.al
@@ -6,6 +6,7 @@ using Microsoft.Purchases.Document;
using Microsoft.Purchases.Setup;
using Microsoft.eServices.EDocument.OrderMatch;
using System.Environment;
+using Microsoft.eServices.EDocument;
using System.Telemetry;
using System.Upgrade;
@@ -108,7 +109,7 @@ codeunit 6163 "E-Doc. PO Copilot Matching"
Session.LogMessage('0000MOT', AttempToUseCopilotMsg, Verbosity::Normal, DataClassification::SystemMetadata, TelemetryScope::All, 'Category', FeatureName());
// Generate OpenAI Completion
- AzureOpenAI.SetAuthorization(Enum::"AOAI Model Type"::"Chat Completions", AOAIDeployments.GetGPT4Latest());
+ AzureOpenAI.SetAuthorization(Enum::"AOAI Model Type"::"Chat Completions", AOAIDeployments.GetGPT4Preview());
AzureOpenAI.SetCopilotCapability(Enum::"Copilot Capability"::"E-Document Matching Assistance");
AOAIChatCompletionParams.SetMaxTokens(MaxTokens());
@@ -143,22 +144,12 @@ codeunit 6163 "E-Doc. PO Copilot Matching"
end;
end;
- procedure IsCopilotEnabled(): Boolean
- var
- AIMatchingImpl: Codeunit "E-Doc. PO Copilot Matching";
- AzureOpenAI: Codeunit "Azure OpenAI";
- begin
- AIMatchingImpl.RegisterAICapability();
- if not AzureOpenAI.IsEnabled(Enum::"Copilot Capability"::"E-Document Matching Assistance", true) then
- exit(false);
-
- exit(true);
- end;
-
procedure IsCopilotVisible(): Boolean
var
+ AIMatchingImpl: Codeunit "E-Doc. PO Copilot Matching";
EnvironmentInformation: Codeunit "Environment Information";
begin
+ AIMatchingImpl.RegisterAICapability();
if not EnvironmentInformation.IsSaaSInfrastructure() then
exit(false);
@@ -166,10 +157,18 @@ codeunit 6163 "E-Doc. PO Copilot Matching"
end;
procedure SumUnitCostForAIMatches(var TempAIProposalBuffer: Record "E-Doc. PO Match Prop. Buffer" temporary) Sum: Decimal
+ var
+ EDocument: Record "E-Document";
+ EDocumentImportHelper: Codeunit "E-Document Import Helper";
+ RoundPrecision, Discount, DiscountedUnitCost : Decimal;
begin
if TempAIProposalBuffer.FindSet() then
repeat
- Sum += TempAIProposalBuffer."Matched Quantity" * TempAIProposalBuffer."E-Document Direct Unit Cost";
+ EDocument.Get(TempAIProposalBuffer."E-Document Entry No.");
+ RoundPrecision := EDocumentImportHelper.GetCurrencyRoundingPrecision(EDocument."Currency Code");
+ Discount := Round((TempAIProposalBuffer."E-Document Direct Unit Cost" * TempAIProposalBuffer."E-Document Line Discount") / 100, RoundPrecision);
+ DiscountedUnitCost := TempAIProposalBuffer."E-Document Direct Unit Cost" - Discount;
+ Sum += TempAIProposalBuffer."Matched Quantity" * DiscountedUnitCost;
until TempAIProposalBuffer.Next() = 0;
end;
@@ -263,7 +262,7 @@ codeunit 6163 "E-Doc. PO Copilot Matching"
local procedure PrepareEDocumentLineStatement(var TempEDocumentImportedLine: Record "E-Doc. Imported Line" temporary; var EDocumentImportLinesTxt: Text)
begin
- EDocumentImportLinesTxt += '- EID: ' + Format(TempEDocumentImportedLine."Line No.");
+ EDocumentImportLinesTxt += 'EID: ' + Format(TempEDocumentImportedLine."Line No.");
EDocumentImportLinesTxt += ', Description: ' + TempEDocumentImportedLine.Description;
EDocumentImportLinesTxt += ', Unit of Measure: ' + TempEDocumentImportedLine."Unit of Measure Code";
if TempEDocumentImportedLine."Line Discount %" <> 0 then
@@ -278,7 +277,7 @@ codeunit 6163 "E-Doc. PO Copilot Matching"
if PurchaseOrderLines.FindSet() then
repeat
if not PurchaseLineTxt.Contains('PID: ' + Format(PurchaseOrderLines."Line No.")) then begin
- PurchaseLineTxt += '- PID: ' + Format(PurchaseOrderLines."Line No.");
+ PurchaseLineTxt += 'PID: ' + Format(PurchaseOrderLines."Line No.");
PurchaseLineTxt += ', Description: ' + PurchaseOrderLines.Description;
PurchaseLineTxt += ', Unit of Measure: ' + PurchaseOrderLines."Unit of Measure Code";
if PurchaseOrderLines."Line Discount %" <> 0 then
diff --git a/Apps/W1/EDocument/app/src/Processing/OrderMatching/Copilot/EDocPOCopilotProp.Page.al b/Apps/W1/EDocument/app/src/Processing/OrderMatching/Copilot/EDocPOCopilotProp.Page.al
index db776f4cee..6ae83cdcc9 100644
--- a/Apps/W1/EDocument/app/src/Processing/OrderMatching/Copilot/EDocPOCopilotProp.Page.al
+++ b/Apps/W1/EDocument/app/src/Processing/OrderMatching/Copilot/EDocPOCopilotProp.Page.al
@@ -73,7 +73,7 @@ page 6166 "E-Doc. PO Copilot Prop"
field("Matched Total Amount"; MatchedTotal)
{
ApplicationArea = All;
- Caption = 'Matched Total Amount Incl. VAT';
+ Caption = 'Matched Total Amount Excl. VAT';
Editable = false;
ToolTip = 'Specifies the matched amount excluding VAT';
}
@@ -225,11 +225,19 @@ page 6166 "E-Doc. PO Copilot Prop"
end;
local procedure SumUnitCost(var EDocOrderMatches: Record "E-Doc. Order Match" temporary) Sum: Decimal
+ var
+ EDocument: Record "E-Document";
+ EDocumentImportHelper: Codeunit "E-Document Import Helper";
+ RoundPrecision, Discount, DiscountedUnitCost : Decimal;
begin
EDocOrderMatches.Reset();
if EDocOrderMatches.FindSet() then
repeat
- Sum += EDocOrderMatches.Quantity * EDocOrderMatches."E-Document Direct Unit Cost";
+ EDocument.Get(EDocOrderMatches."E-Document Entry No.");
+ RoundPrecision := EDocumentImportHelper.GetCurrencyRoundingPrecision(EDocument."Currency Code");
+ Discount := Round((EDocOrderMatches."E-Document Direct Unit Cost" * EDocOrderMatches."Line Discount %") / 100, RoundPrecision);
+ DiscountedUnitCost := EDocOrderMatches."E-Document Direct Unit Cost" - Discount;
+ Sum += EDocOrderMatches.Quantity * DiscountedUnitCost;
until EDocOrderMatches.Next() = 0;
end;
diff --git a/Apps/W1/EDocument/app/src/Processing/OrderMatching/EDocLineMatching.Codeunit.al b/Apps/W1/EDocument/app/src/Processing/OrderMatching/EDocLineMatching.Codeunit.al
index 9ae389245e..f997d57d4c 100644
--- a/Apps/W1/EDocument/app/src/Processing/OrderMatching/EDocLineMatching.Codeunit.al
+++ b/Apps/W1/EDocument/app/src/Processing/OrderMatching/EDocLineMatching.Codeunit.al
@@ -451,15 +451,4 @@ codeunit 6164 "E-Doc. Line Matching"
TempPurchaseLine.MarkedOnly(true);
end;
- procedure SumUnitCostForMatches(EDocument: Record "E-Document") Sum: Decimal
- var
- EDocOrderMatch: Record "E-Doc. Order Match";
- begin
- EDocOrderMatch.SetRange("E-Document Entry No.", EDocument."Entry No");
- EDocOrderMatch.SetRange("Document Order No.", EDocument."Order No.");
- if EDocOrderMatch.FindSet() then
- repeat
- Sum += EDocOrderMatch.Quantity * EDocOrderMatch."E-Document Direct Unit Cost";
- until EDocOrderMatch.Next() = 0;
- end;
}
\ No newline at end of file
diff --git a/Apps/W1/EDocument/app/src/Processing/OrderMatching/EDocOrderLineMatching.Page.al b/Apps/W1/EDocument/app/src/Processing/OrderMatching/EDocOrderLineMatching.Page.al
index 275e4665c4..14319f502b 100644
--- a/Apps/W1/EDocument/app/src/Processing/OrderMatching/EDocOrderLineMatching.Page.al
+++ b/Apps/W1/EDocument/app/src/Processing/OrderMatching/EDocOrderLineMatching.Page.al
@@ -3,6 +3,7 @@ namespace Microsoft.eServices.EDocument.OrderMatch;
using Microsoft.eServices.EDocument;
using Microsoft.eServices.EDocument.OrderMatch.Copilot;
using Microsoft.Purchases.Document;
+using System.AI;
using System.Telemetry;
#pragma warning disable AS0032
page 6167 "E-Doc. Order Line Matching"
@@ -116,7 +117,6 @@ page 6167 "E-Doc. Order Line Matching"
ApplicationArea = All;
Image = SparkleFilled;
Visible = CopilotActionVisible;
- Enabled = CopilotActionEnabled;
trigger OnAction()
begin
@@ -221,7 +221,7 @@ page 6167 "E-Doc. Order Line Matching"
FeatureTelemetry: Codeunit "Feature Telemetry";
EDocMatchOrderLines: Codeunit "E-Doc. Line Matching";
DiscountNotification, CostNotification : Notification;
- CopilotActionVisible, CopilotActionEnabled, AutoRunCopilot : Boolean;
+ CopilotActionVisible, AutoRunCopilot : Boolean;
LineDiscountVaryMatchMsg: Label 'Matched e-document lines (%1) has Line Discount % different from matched purchase order line. Please verify matches are correct.', Comment = '%1 - Line number';
LineCostVaryMatchMsg: Label 'Matched e-document lines (%1) has Direct Unit Cost different from matched purchase order line. Please verify matches are correct.', Comment = '%1 - Line number';
NoMatchesFoundMsg: Label 'Copilot could not find any line matches. Please review manually';
@@ -232,7 +232,6 @@ page 6167 "E-Doc. Order Line Matching"
EDocPOMatching: Codeunit "E-Doc. PO Copilot Matching";
begin
CopilotActionVisible := EDocPOMatching.IsCopilotVisible();
- CopilotActionEnabled := EDocPOMatching.IsCopilotEnabled();
end;
trigger OnAfterGetRecord()
@@ -245,7 +244,7 @@ page 6167 "E-Doc. Order Line Matching"
OpenPurchaseHeader();
- if CopilotActionEnabled and CopilotActionVisible and AutoRunCopilot then begin
+ if CopilotActionVisible and AutoRunCopilot then begin
AutoRunCopilot := false;
EDocOrderMatch.SetRange("E-Document Entry No.", Rec."Entry No");
if EDocOrderMatch.IsEmpty() then
@@ -326,9 +325,13 @@ page 6167 "E-Doc. Order Line Matching"
var
TempEDocImportedLines: Record "E-Doc. Imported Line" temporary;
TempPurchaseLines: Record "Purchase Line" temporary;
+ AzureOpenAI: Codeunit "Azure OpenAI";
AIMatchingImpl: Codeunit "E-Doc. PO Copilot Matching";
EDocOrderMatchAIProposal: Page "E-Doc. PO Copilot Prop";
begin
+ if not AzureOpenAI.IsEnabled(Enum::"Copilot Capability"::"E-Document Matching Assistance") then
+ exit;
+
FeatureTelemetry.LogUptake('0000MB0', AIMatchingImpl.FeatureName(), Enum::"Feature Uptake Status"::Discovered);
FeatureTelemetry.LogUptake('0000MB1', AIMatchingImpl.FeatureName(), Enum::"Feature Uptake Status"::"Set up");
diff --git a/Apps/W1/Email - Outlook REST API/app/src/EmailOAuthClient.Codeunit.al b/Apps/W1/Email - Outlook REST API/app/src/EmailOAuthClient.Codeunit.al
index 04c65b622e..e25888df0f 100644
--- a/Apps/W1/Email - Outlook REST API/app/src/EmailOAuthClient.Codeunit.al
+++ b/Apps/W1/Email - Outlook REST API/app/src/EmailOAuthClient.Codeunit.al
@@ -184,8 +184,7 @@ codeunit 4507 "Email - OAuth Client" implements "Email - OAuth Client v2"
OAuth2: Codeunit OAuth2;
[NonDebuggable]
ClientId: Text;
- [NonDebuggable]
- ClientSecret: Text;
+ ClientSecret: SecretText;
RedirectURL: Text;
IsInitialized: Boolean;
Scopes: List of [Text];
diff --git a/Apps/W1/Email - Outlook REST API/app/src/EmailOutlookAPIHelper.Codeunit.al b/Apps/W1/Email - Outlook REST API/app/src/EmailOutlookAPIHelper.Codeunit.al
index b54b34d120..b8a300f354 100644
--- a/Apps/W1/Email - Outlook REST API/app/src/EmailOutlookAPIHelper.Codeunit.al
+++ b/Apps/W1/Email - Outlook REST API/app/src/EmailOutlookAPIHelper.Codeunit.al
@@ -159,8 +159,19 @@ codeunit 4509 "Email - Outlook API Helper"
exit(RecipientsJson);
end;
+#if not CLEAN25
[NonDebuggable]
+ [Obsolete('Replaced by an overload that takes in SecretText data type for ClientSecret', '25.0')]
procedure GetClientIDAndSecret(var ClientId: Text; var ClientSecret: Text)
+ var
+ Secret: SecretText;
+ begin
+ GetClientIDAndSecret(ClientId, Secret);
+ ClientSecret := Secret.Unwrap();
+ end;
+#endif
+
+ procedure GetClientIDAndSecret(var ClientId: Text; var ClientSecret: SecretText)
var
Setup: Record "Email - Outlook API Setup";
EnvironmentInformation: Codeunit "Environment Information";
diff --git a/Apps/W1/Email - SMTP Connector/app/src/Authentication/DummySMTPAuthentication.Codeunit.al b/Apps/W1/Email - SMTP Connector/app/src/Authentication/DummySMTPAuthentication.Codeunit.al
index 8da32b0de6..448229e69a 100644
--- a/Apps/W1/Email - SMTP Connector/app/src/Authentication/DummySMTPAuthentication.Codeunit.al
+++ b/Apps/W1/Email - SMTP Connector/app/src/Authentication/DummySMTPAuthentication.Codeunit.al
@@ -9,9 +9,6 @@ using System;
codeunit 4517 "Dummy SMTP Authentication" implements "SMTP Authentication"
{
- ObsoleteReason = 'Dummy codeunit';
- ObsoleteState = Pending;
- ObsoleteTag = '20.0';
Access = Internal;
procedure Validate(var SMTPAccount: Record "SMTP Account");
diff --git a/Apps/W1/EnforcedDigitalVouchers/app/app.json b/Apps/W1/EnforcedDigitalVouchers/app/app.json
index 7f9d864097..9eacb4a353 100644
--- a/Apps/W1/EnforcedDigitalVouchers/app/app.json
+++ b/Apps/W1/EnforcedDigitalVouchers/app/app.json
@@ -23,6 +23,11 @@
"id": "928f7b70-0dbd-431a-beb5-f45c4adbd361",
"name": "Enforced Digital Vouchers Test Library",
"publisher": "Microsoft"
+ },
+ {
+ "id": "bb837764-d7cc-4b7b-898a-3ea5a1fab62f",
+ "name": "Enforced Digital Vouchers (DK)",
+ "publisher": "Microsoft"
}
],
"features": [
diff --git a/Apps/W1/EnforcedDigitalVouchers/app/src/EntrySetup/DigitalVoucherEntrySetup.Page.al b/Apps/W1/EnforcedDigitalVouchers/app/src/EntrySetup/DigitalVoucherEntrySetup.Page.al
index 540cff3512..2e4f12ccbf 100644
--- a/Apps/W1/EnforcedDigitalVouchers/app/src/EntrySetup/DigitalVoucherEntrySetup.Page.al
+++ b/Apps/W1/EnforcedDigitalVouchers/app/src/EntrySetup/DigitalVoucherEntrySetup.Page.al
@@ -12,6 +12,7 @@ page 5579 "Digital Voucher Entry Setup"
AboutText = 'Here you can select the line with a certain entry type and setup the type of the digital voucher''s check you want to perform.';
ApplicationArea = Basic, Suite;
UsageCategory = Administration;
+ DelayedInsert = true;
layout
{
diff --git a/Apps/W1/EnforcedDigitalVouchers/app/src/Extensions/DigVouchPstdServCrMemo.PageExt.al b/Apps/W1/EnforcedDigitalVouchers/app/src/Extensions/DigVouchPstdServCrMemo.PageExt.al
new file mode 100644
index 0000000000..ce5e91d8f4
--- /dev/null
+++ b/Apps/W1/EnforcedDigitalVouchers/app/src/Extensions/DigVouchPstdServCrMemo.PageExt.al
@@ -0,0 +1,18 @@
+// ------------------------------------------------------------------------------------------------
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License. See License.txt in the project root for license information.
+// ------------------------------------------------------------------------------------------------
+namespace Microsoft.EServices.EDocument;
+
+using Microsoft.Service.History;
+
+pageextension 5592 "Dig.Vouch. Pstd. Serv.Cr.Memo" extends "Posted Service Credit Memo"
+{
+ layout
+ {
+ modify(IncomingDocAttachFactBox)
+ {
+ Visible = true;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Apps/W1/EnforcedDigitalVouchers/app/src/Extensions/DigVoucherPstdServInv.PageExt.al b/Apps/W1/EnforcedDigitalVouchers/app/src/Extensions/DigVoucherPstdServInv.PageExt.al
new file mode 100644
index 0000000000..87753fad6a
--- /dev/null
+++ b/Apps/W1/EnforcedDigitalVouchers/app/src/Extensions/DigVoucherPstdServInv.PageExt.al
@@ -0,0 +1,18 @@
+// ------------------------------------------------------------------------------------------------
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License. See License.txt in the project root for license information.
+// ------------------------------------------------------------------------------------------------
+namespace Microsoft.EServices.EDocument;
+
+using Microsoft.Service.History;
+
+pageextension 5591 "Dig. Voucher Pstd. Serv. Inv." extends "Posted Service Invoice"
+{
+ layout
+ {
+ modify(IncomingDocAttachFactBox)
+ {
+ Visible = true;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Apps/W1/EnforcedDigitalVouchers/app/src/Extensions/DigVoucherPurchRetOrder.PageExt.al b/Apps/W1/EnforcedDigitalVouchers/app/src/Extensions/DigVoucherPurchRetOrder.PageExt.al
new file mode 100644
index 0000000000..d7814c92fb
--- /dev/null
+++ b/Apps/W1/EnforcedDigitalVouchers/app/src/Extensions/DigVoucherPurchRetOrder.PageExt.al
@@ -0,0 +1,18 @@
+// ------------------------------------------------------------------------------------------------
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License. See License.txt in the project root for license information.
+// ------------------------------------------------------------------------------------------------
+namespace Microsoft.EServices.EDocument;
+
+using Microsoft.Purchases.Document;
+
+pageextension 5594 "Dig. Voucher Purch. Ret. Order" extends "Purchase Return Order"
+{
+ layout
+ {
+ modify(IncomingDocAttachFactBox)
+ {
+ Visible = true;
+ }
+ }
+}
diff --git a/Apps/W1/EnforcedDigitalVouchers/app/src/Extensions/DigVoucherServCrMemo.PageExt.al b/Apps/W1/EnforcedDigitalVouchers/app/src/Extensions/DigVoucherServCrMemo.PageExt.al
new file mode 100644
index 0000000000..c8a250c476
--- /dev/null
+++ b/Apps/W1/EnforcedDigitalVouchers/app/src/Extensions/DigVoucherServCrMemo.PageExt.al
@@ -0,0 +1,18 @@
+// ------------------------------------------------------------------------------------------------
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License. See License.txt in the project root for license information.
+// ------------------------------------------------------------------------------------------------
+namespace Microsoft.EServices.EDocument;
+
+using Microsoft.Service.Document;
+
+pageextension 5590 "Dig. Voucher Serv. Cr. Memo" extends "Service Credit Memo"
+{
+ layout
+ {
+ modify(IncomingDocAttachFactBox)
+ {
+ Visible = true;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Apps/W1/FieldServiceIntegration/app/src/Permissions/FSD365DYNCRMREAD.PermissionSetExt.al b/Apps/W1/EnforcedDigitalVouchers/app/src/Extensions/DigVoucherServInvoice.PageExt.al
similarity index 57%
rename from Apps/W1/FieldServiceIntegration/app/src/Permissions/FSD365DYNCRMREAD.PermissionSetExt.al
rename to Apps/W1/EnforcedDigitalVouchers/app/src/Extensions/DigVoucherServInvoice.PageExt.al
index 631d437e20..c430a80b6b 100644
--- a/Apps/W1/FieldServiceIntegration/app/src/Permissions/FSD365DYNCRMREAD.PermissionSetExt.al
+++ b/Apps/W1/EnforcedDigitalVouchers/app/src/Extensions/DigVoucherServInvoice.PageExt.al
@@ -2,11 +2,17 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
// ------------------------------------------------------------------------------------------------
-namespace Microsoft.Integration.DynamicsFieldService;
+namespace Microsoft.EServices.EDocument;
-using System.Security.AccessControl;
+using Microsoft.Service.Document;
-permissionsetextension 6612 "FS D365 DYN CRM READ" extends "D365 DYN CRM READ"
+pageextension 5589 "Dig. Voucher Serv. Invoice" extends "Service Invoice"
{
- IncludedPermissionSets = "FS - Read";
-}
+ layout
+ {
+ modify(IncomingDocAttachFactBox)
+ {
+ Visible = true;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Apps/W1/FieldServiceIntegration/app/src/Permissions/FSD365READ.PermissionSetExt.al b/Apps/W1/EnforcedDigitalVouchers/app/src/Extensions/DigVoucherServOrder.PageExt.al
similarity index 58%
rename from Apps/W1/FieldServiceIntegration/app/src/Permissions/FSD365READ.PermissionSetExt.al
rename to Apps/W1/EnforcedDigitalVouchers/app/src/Extensions/DigVoucherServOrder.PageExt.al
index b6665799c3..01718ec6a5 100644
--- a/Apps/W1/FieldServiceIntegration/app/src/Permissions/FSD365READ.PermissionSetExt.al
+++ b/Apps/W1/EnforcedDigitalVouchers/app/src/Extensions/DigVoucherServOrder.PageExt.al
@@ -2,11 +2,17 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
// ------------------------------------------------------------------------------------------------
-namespace Microsoft.Integration.DynamicsFieldService;
+namespace Microsoft.EServices.EDocument;
-using System.Security.AccessControl;
+using Microsoft.Service.Document;
-permissionsetextension 6613 "FS D365 READ" extends "D365 READ"
+pageextension 5588 "Dig. Voucher Serv. Order" extends "Service Order"
{
- IncludedPermissionSets = "FS - Read";
-}
+ layout
+ {
+ modify(IncomingDocAttachFactBox)
+ {
+ Visible = true;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Apps/W1/FieldServiceIntegration/app/src/Permissions/FSD365AUTOMATION.PermissionSetExt.al b/Apps/W1/EnforcedDigitalVouchers/app/src/Extensions/DigitalVoucherPurchOrder.PageExt.al
similarity index 57%
rename from Apps/W1/FieldServiceIntegration/app/src/Permissions/FSD365AUTOMATION.PermissionSetExt.al
rename to Apps/W1/EnforcedDigitalVouchers/app/src/Extensions/DigitalVoucherPurchOrder.PageExt.al
index 50c5775fa2..a4b0c252b6 100644
--- a/Apps/W1/FieldServiceIntegration/app/src/Permissions/FSD365AUTOMATION.PermissionSetExt.al
+++ b/Apps/W1/EnforcedDigitalVouchers/app/src/Extensions/DigitalVoucherPurchOrder.PageExt.al
@@ -2,11 +2,17 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
// ------------------------------------------------------------------------------------------------
-namespace Microsoft.Integration.DynamicsFieldService;
+namespace Microsoft.EServices.EDocument;
-using System.Security.AccessControl;
+using Microsoft.Purchases.Document;
-permissionsetextension 6610 "FS D365 AUTOMATION" extends "D365 AUTOMATION"
+pageextension 5593 "Digital Voucher Purch. Order" extends "Purchase Order"
{
- IncludedPermissionSets = "FS - Edit";
+ layout
+ {
+ modify(IncomingDocAttachFactBox)
+ {
+ Visible = true;
+ }
+ }
}
diff --git a/Apps/W1/EnforcedDigitalVouchers/app/src/Implementation/DigitalVoucherImpl.Codeunit.al b/Apps/W1/EnforcedDigitalVouchers/app/src/Implementation/DigitalVoucherImpl.Codeunit.al
index 8c8d1dbaaf..d667861640 100644
--- a/Apps/W1/EnforcedDigitalVouchers/app/src/Implementation/DigitalVoucherImpl.Codeunit.al
+++ b/Apps/W1/EnforcedDigitalVouchers/app/src/Implementation/DigitalVoucherImpl.Codeunit.al
@@ -7,15 +7,21 @@ namespace Microsoft.EServices.EDocument;
using Microsoft.Finance.GeneralLedger.Journal;
using Microsoft.Finance.GeneralLedger.Ledger;
using Microsoft.Finance.GeneralLedger.Posting;
+using Microsoft.Service.Posting;
using Microsoft.Finance.GeneralLedger.Reports;
+using Microsoft.Foundation.AuditCodes;
using Microsoft.Foundation.Reporting;
using Microsoft.Purchases.Document;
using Microsoft.Purchases.History;
using Microsoft.Purchases.Posting;
+using Microsoft.Purchases.Vendor;
+using Microsoft.Sales.Customer;
using Microsoft.Sales.Document;
using Microsoft.Sales.History;
using Microsoft.Sales.Posting;
using Microsoft.Sales.Receivables;
+using Microsoft.Service.Document;
+using Microsoft.Service.History;
using System.Email;
using System.Environment.Configuration;
using System.Media;
@@ -38,7 +44,7 @@ codeunit 5579 "Digital Voucher Impl."
var
DigitalVoucherEntrySetup: Record "Digital Voucher Entry Setup";
begin
- DigitalVoucherEntrySetup.Get(EntryType);
+ GetDigitalVoucherEntrySetup(DigitalVoucherEntrySetup, EntryType);
HandleDigitalVoucherForEntryTypeAndDoc(ErrorMessageMgt, DigitalVoucherEntrySetup, Record);
end;
@@ -60,7 +66,7 @@ codeunit 5579 "Digital Voucher Impl."
RecRef: RecordRef;
DigitalVoucherCheck: Interface "Digital Voucher Check";
begin
- DigitalVoucherEntrySetup.Get(EntryType);
+ GetDigitalVoucherEntrySetup(DigitalVoucherEntrySetup, EntryType);
if DigitalVoucherEntrySetup."Check Type" = DigitalVoucherEntrySetup."Check Type"::"No Check" then
exit;
DigitalVoucherCheck := DigitalVoucherEntrySetup."Check Type";
@@ -75,56 +81,77 @@ codeunit 5579 "Digital Voucher Impl."
RecRef: RecordRef;
DigitalVoucherCheck: Interface "Digital Voucher Check";
begin
- if not DigitalVoucherEntrySetup.Get(DigitalVoucherEntry.GetVoucherTypeFromGLEntryOrSourceType(GLEntry, GenJournalSourceType)) then
+ if not GetDigitalVoucherEntrySetup(DigitalVoucherEntrySetup, DigitalVoucherEntry.GetVoucherTypeFromGLEntryOrSourceType(GLEntry, GenJournalSourceType)) then
exit;
if DigitalVoucherEntrySetup."Check Type" = DigitalVoucherEntrySetup."Check Type"::"No Check" then
exit;
DigitalVoucherCheck := DigitalVoucherEntrySetup."Check Type";
FindGenJournalLineFromGLEntry(ConnectedGenJournalLine, GenJournalLine, GLEntry);
+ if not (GenJournalLine."Document Type" in [GenJournalLine."Document Type"::Invoice, GenJournalLine."Document Type"::"Credit Memo"]) then
+ exit;
RecRef.GetTable(ConnectedGenJournalLine);
DigitalVoucherCheck.GenerateDigitalVoucherForPostedDocument(DigitalVoucherEntrySetup."Entry Type", RecRef);
end;
+ [CommitBehavior(CommitBehavior::Ignore)]
procedure GenerateDigitalVoucherForDocument(RecRef: RecordRef)
var
SalesInvHeader: Record "Sales Invoice Header";
SalesCrMemoHeader: Record "Sales Cr.Memo Header";
+ ServInvHeader: Record "Service Invoice Header";
+ ServCrMemoHeader: Record "Service Cr.Memo Header";
PurchInvHeader: Record "Purch. Inv. Header";
PurchCrMemoHeader: Record "Purch. Cr. Memo Hdr.";
- DigVoucherManualSubscriber: Codeunit "Dig. Voucher Manual Subscriber";
+ ReportSelections: Record "Report Selections";
begin
case RecRef.Number of
Database::"Sales Invoice Header":
begin
RecRef.SetTable(SalesInvHeader);
- SalesInvHeader.SetRecFilter();
- BindSubscription(DigVoucherManualSubscriber);
- SalesInvHeader.PrintToDocumentAttachment(SalesInvHeader);
- UnbindSubscription(DigVoucherManualSubscriber);
+ AttachDigitalVoucherFromReportPDF(
+ ReportSelections.Usage::"S.Invoice", RecRef, true,
+ SalesInvHeader."Posting Date", SalesInvHeader."No.", Database::Customer,
+ SalesInvHeader."Bill-to Customer No.", Report::"Standard Sales - Invoice");
+ end;
+ Database::"Service Invoice Header":
+ begin
+ RecRef.SetTable(ServInvHeader);
+ AttachDigitalVoucherFromReportPDF(
+ ReportSelections.Usage::"SM.Invoice", RecRef, true,
+ ServInvHeader."Posting Date", ServInvHeader."No.", Database::Customer,
+ ServInvHeader."Bill-to Customer No.", Report::"Service - Invoice");
+ end;
+ Database::"Service Cr.Memo Header":
+ begin
+ RecRef.SetTable(ServCrMemoHeader);
+ AttachDigitalVoucherFromReportPDF(
+ ReportSelections.Usage::"SM.Credit Memo", RecRef, false,
+ ServCrMemoHeader."Posting Date", ServCrMemoHeader."No.", Database::Customer,
+ ServCrMemoHeader."Bill-to Customer No.", Report::"Service - Credit Memo");
end;
Database::"Sales Cr.Memo Header":
begin
RecRef.SetTable(SalesCrMemoHeader);
- SalesCrMemoHeader.SetRecFilter();
- BindSubscription(DigVoucherManualSubscriber);
- SalesCrMemoHeader.PrintToDocumentAttachment(SalesCrMemoHeader);
- UnbindSubscription(DigVoucherManualSubscriber);
+ AttachDigitalVoucherFromReportPDF(
+ ReportSelections.Usage::"S.Cr.Memo", RecRef, false,
+ SalesCrMemoHeader."Posting Date", SalesCrMemoHeader."No.", Database::Customer,
+ SalesCrMemoHeader."Bill-to Customer No.", Report::"Standard Sales - Credit Memo");
end;
Database::"Purch. Inv. Header":
begin
RecRef.SetTable(PurchInvHeader);
- PurchInvHeader.SetRecFilter();
- BindSubscription(DigVoucherManualSubscriber);
- PurchInvHeader.PrintToDocumentAttachment(PurchInvHeader);
- UnbindSubscription(DigVoucherManualSubscriber);
+ AttachDigitalVoucherFromReportPDF(
+ ReportSelections.Usage::"P.Invoice", RecRef, true,
+ PurchInvHeader."Posting Date", PurchInvHeader."No.", Database::Vendor,
+ PurchInvHeader."Pay-to Vendor No.", report::"Purchase - Invoice");
end;
Database::"Purch. Cr. Memo Hdr.":
begin
RecRef.SetTable(PurchCrMemoHeader);
- PurchCrMemoHeader.SetRecFilter();
- BindSubscription(DigVoucherManualSubscriber);
- PurchCrMemoHeader.PrintToDocumentAttachment(PurchCrMemoHeader);
- UnbindSubscription(DigVoucherManualSubscriber);
+ AttachDigitalVoucherFromReportPDF(
+ ReportSelections.Usage::"P.Cr.Memo", RecRef, false,
+ PurchCrMemoHeader."Posting Date", PurchCrMemoHeader."No.", Database::Vendor,
+ PurchCrMemoHeader."Pay-to Vendor No.", report::"Purchase - Credit Memo");
end;
Database::"Gen. Journal Line":
AttachGenJnlLinePDFToIncomingDocument(RecRef);
@@ -156,11 +183,19 @@ codeunit 5579 "Digital Voucher Impl."
var
DigitalVoucherEntrySetup: Record "Digital Voucher Entry Setup";
IncomingDocument: Record "Incoming Document";
+ SourceCodeSetup: Record "Source Code Setup";
VoucherAttached: Boolean;
begin
- DigitalVoucherEntrySetup.Get(DigitalVoucherEntryType);
+ GetDigitalVoucherEntrySetup(DigitalVoucherEntrySetup, DigitalVoucherEntryType);
VoucherAttached := GetIncomingDocumentRecordFromRecordRef(IncomingDocument, RecRef);
- exit(VoucherAttached or DigitalVoucherEntrySetup."Generate Automatically");
+ if VoucherAttached then
+ exit(true);
+ if DigitalVoucherEntrySetup."Generate Automatically" then
+ exit(true);
+ SourceCodeSetup.Get();
+ if IsPaymentReconciliationJournal(DigitalVoucherEntrySetup."Entry Type", RecRef) then
+ exit(true);
+ exit(false);
end;
procedure CheckIncomingDocumentChange(Rec: Record "Incoming Document Attachment")
@@ -183,9 +218,23 @@ codeunit 5579 "Digital Voucher Impl."
error(CannotChangeIncomDocWithEnforcedDigitalVoucherErr);
end;
+ procedure GetDigitalVoucherEntrySetup(var DigitalVoucherEntrySetup: Record "Digital Voucher Entry Setup"; EntryType: Enum "Digital Voucher Entry Type"): Boolean
+ begin
+ if DigitalVoucherFeature.EnforceDigitalVoucherFunctionality() then
+ OnHandleDigitalVoucherEntrySetupWhenEnforced(EntryType);
+ exit(DigitalVoucherEntrySetup.Get(EntryType));
+ end;
+
procedure GetIncomingDocumentRecordFromRecordRef(var IncomingDocument: Record "Incoming Document"; MainRecordRef: RecordRef): Boolean
var
IncomingDocumentAttachment: Record "Incoming Document Attachment";
+ begin
+ if not FilterIncomingDocumentRecordFromRecordRef(IncomingDocumentAttachment, IncomingDocument, MainRecordRef) then
+ exit(false);
+ exit(not IncomingDocumentAttachment.IsEmpty());
+ end;
+
+ local procedure FilterIncomingDocumentRecordFromRecordRef(var IncomingDocumentAttachment: Record "Incoming Document Attachment"; var IncomingDocument: Record "Incoming Document"; MainRecordRef: RecordRef): Boolean
begin
Clear(IncomingDocument);
if not IncomingDocument.FindFromIncomingDocumentEntryNo(MainRecordRef, IncomingDocument) then
@@ -193,7 +242,7 @@ codeunit 5579 "Digital Voucher Impl."
if IncomingDocument."Entry No." = 0 then
exit(false);
IncomingDocumentAttachment.SetRange("Incoming Document Entry No.", IncomingDocument."Entry No.");
- exit(not IncomingDocumentAttachment.IsEmpty());
+ exit(true);
end;
local procedure AttachGenJnlLinePDFToIncomingDocument(RecRef: RecordRef)
@@ -223,6 +272,88 @@ codeunit 5579 "Digital Voucher Impl."
ConnectedGenJnlLine := CurrGenJnlLine;
end;
+ local procedure CopyDigitalVoucherToCorrectiveDocument(DigitalVoucherEntryType: Enum "Digital Voucher Entry Type"; RecordVar: Variant; DocNo: Code[20]; PostingDate: Date): Integer
+ var
+ DigitalVoucherEntrySetup: Record "Digital Voucher Entry Setup";
+ InvIncomingDocument: Record "Incoming Document";
+ InvIncomingDocumentAttachment: Record "Incoming Document Attachment";
+ ImportAttachmentIncDoc: Codeunit "Import Attachment - Inc. Doc.";
+ RecRef: RecordRef;
+ begin
+ if not DigitalVoucherFeature.IsFeatureEnabled() then
+ exit;
+ if not GetDigitalVoucherEntrySetup(DigitalVoucherEntrySetup, DigitalVoucherEntryType) then
+ exit;
+ if DigitalVoucherEntrySetup."Generate Automatically" then
+ exit;
+ RecRef.GetTable(RecordVar);
+ if not FilterIncomingDocumentRecordFromRecordRef(InvIncomingDocumentAttachment, InvIncomingDocument, RecRef) then
+ exit;
+ if not InvIncomingDocumentAttachment.FindFirst() then
+ exit;
+ InvIncomingDocumentAttachment.Reset();
+ InvIncomingDocumentAttachment.SetRange("Document No.", DocNo);
+ InvIncomingDocumentAttachment.SetRange("Posting Date", PostingDate);
+ ImportAttachmentIncDoc.CreateNewAttachment(InvIncomingDocumentAttachment);
+ InvIncomingDocumentAttachment.Insert(true);
+ exit(InvIncomingDocumentAttachment."Incoming Document Entry No.");
+ end;
+
+ local procedure IsPaymentReconciliationJournal(DigitalVoucherEntryType: Enum "Digital Voucher Entry Type"; RecRef: RecordRef): Boolean
+ var
+ SourceCodeSetup: Record "Source Code Setup";
+ GenJournalLine: Record "Gen. Journal Line";
+ FieldRef: FieldRef;
+ SourceCodeValue: Text;
+ begin
+ if DigitalVoucherEntryType <> DigitalVoucherEntryType::"Purchase Journal" then
+ exit(false);
+ if not SourceCodeSetup.Get() then
+ exit(false);
+ FieldRef := RecRef.Field(GenJournalLine.FieldNo("Source Code"));
+ if not Evaluate(SourceCodeValue, FieldRef.Value()) then
+ exit(false);
+ exit(SourceCodeValue = SourceCodeSetup."Payment Reconciliation Journal");
+ end;
+
+ local procedure AttachDigitalVoucherFromReportPDF(ReportUsage: Enum "Report Selection Usage"; RecRef: RecordRef; IsInvoice: Boolean; PostingDate: Date; DocNo: Code[20]; AccountTableNo: Integer; AccountNo: Code[20]; StandardReportID: Integer)
+ var
+ TempAttachReportSelections: Record "Report Selections" temporary;
+ SalesHeader: Record "Sales Header";
+ TempBlob: Codeunit "Temp Blob";
+ DocType: Text;
+ begin
+ FindReportSelections(TempAttachReportSelections, ReportUsage, AccountTableNo, AccountNo, StandardReportID);
+ RecRef.SetRecFilter();
+ TempAttachReportSelections.SaveReportAsPDFInTempBlob(TempBlob, TempAttachReportSelections."Report ID", RecRef, TempAttachReportSelections."Custom Report Layout Code", ReportUsage);
+ if IsInvoice then
+ DocType := Format(SalesHeader."Document Type"::Invoice)
+ else
+ DocType := Format(SalesHeader."Document Type"::"Credit Memo");
+ AttachBlobToIncomingDocument(TempBlob, DocType, PostingDate, DocNo);
+ end;
+
+ local procedure FindReportSelections(var TempAttachReportSelections: Record "Report Selections" temporary; ReportUsage: Enum "Report Selection Usage"; AccountTableNo: Integer; AccountNo: Code[20]; StandardReportID: Integer)
+ var
+ ReportSelections: Record "Report Selections";
+ begin
+ ReportSelections.SetRange(Usage, ReportUsage);
+ ReportSelections.SetFilter("Report ID", '<>0');
+ ReportSelections.FindReportSelections(TempAttachReportSelections, AccountNo, AccountTableNo);
+ TempAttachReportSelections.SetRange("Use for Email Body", false);
+ TempAttachReportSelections.SetRange("Use for Email Attachment", false);
+ if TempAttachReportSelections.FindFirst() then
+ exit;
+ TempAttachReportSelections.SetRange("Use for Email Body");
+ TempAttachReportSelections.SetRange("Use for Email Attachment");
+ if TempAttachReportSelections.FindFirst() then
+ exit;
+ Clear(TempAttachReportSelections);
+ TempAttachReportSelections.Usage := ReportUsage;
+ TempAttachReportSelections."Report ID" := StandardReportID;
+ TempAttachReportSelections.Insert();
+ end;
+
[EventSubscriber(ObjectType::Codeunit, Codeunit::"Guided Experience", 'OnRegisterAssistedSetup', '', true, true)]
local procedure InsertIntoAssistedSetup()
var
@@ -249,7 +380,7 @@ codeunit 5579 "Digital Voucher Impl."
exit;
if not SalesHeader.Invoice then
exit;
- DigitalVoucherEntrySetup.Get(DigitalVoucherEntrySetup."Entry Type"::"Sales Document");
+ GetDigitalVoucherEntrySetup(DigitalVoucherEntrySetup, DigitalVoucherEntrySetup."Entry Type"::"Sales Document");
if DigitalVoucherEntrySetup."Check Type" = DigitalVoucherEntrySetup."Check Type"::"No Check" then
exit;
DigitalVoucherCheck := DigitalVoucherEntrySetup."Check Type";
@@ -257,6 +388,30 @@ codeunit 5579 "Digital Voucher Impl."
DigitalVoucherCheck.CheckVoucherIsAttachedToDocument(ErrorMessageMgt, DigitalVoucherEntrySetup."Entry Type", RecRef);
end;
+ [EventSubscriber(ObjectType::Codeunit, Codeunit::"Service-Post", 'OnInitializeOnAfterCheckAndSetPostingConstants', '', true, true)]
+ local procedure OnInitializeOnAfterCheckAndSetPostingConstants(var PassedServiceHeader: Record "Service Header"; var PassedInvoice: Boolean; PreviewMode: Boolean)
+ var
+ DigitalVoucherEntrySetup: Record "Digital Voucher Entry Setup";
+ DummyErrorMessageMgt: Codeunit "Error Message Management";
+ RecRef: RecordRef;
+ DigitalVoucherCheck: Interface "Digital Voucher Check";
+ begin
+ if PreviewMode then
+ exit;
+ if not DigitalVoucherFeature.IsFeatureEnabled() then
+ exit;
+ if not PassedInvoice then
+ exit;
+ if PreviewMode then
+ exit;
+ GetDigitalVoucherEntrySetup(DigitalVoucherEntrySetup, DigitalVoucherEntrySetup."Entry Type"::"Sales Document");
+ if DigitalVoucherEntrySetup."Check Type" = DigitalVoucherEntrySetup."Check Type"::"No Check" then
+ exit;
+ DigitalVoucherCheck := DigitalVoucherEntrySetup."Check Type";
+ RecRef.GetTable(PassedServiceHeader);
+ DigitalVoucherCheck.CheckVoucherIsAttachedToDocument(DummyErrorMessageMgt, DigitalVoucherEntrySetup."Entry Type", RecRef);
+ end;
+
[EventSubscriber(ObjectType::Codeunit, Codeunit::"Sales-Post Prepayments", 'OnAfterCheckPrepmtDoc', '', true, true)]
local procedure OnAfterCheckSalesPrepmtDoc(SalesHeader: Record "Sales Header"; DocumentType: Option Invoice,"Credit Memo"; CommitIsSuppressed: Boolean; var ErrorMessageMgt: Codeunit "Error Message Management")
begin
@@ -294,7 +449,9 @@ codeunit 5579 "Digital Voucher Impl."
exit;
if GenJournalLine."System-Created Entry" then
exit;
- if not DigitalVoucherEntrySetup.Get(DigitalVoucherEntry.GetVoucherEntryTypeFromGenJnlLine(GenJournalLine)) then
+ if not (GenJournalLine."Document Type" in [GenJournalLine."Document Type"::Invoice, GenJournalLine."Document Type"::"Credit Memo"]) then
+ exit;
+ if not GetDigitalVoucherEntrySetup(DigitalVoucherEntrySetup, DigitalVoucherEntry.GetVoucherEntryTypeFromGenJnlLine(GenJournalLine)) then
exit;
HandleDigitalVoucherForEntryTypeAndDoc(ErrorMessageMgt, DigitalVoucherEntrySetup, GenJournalLine);
end;
@@ -308,7 +465,31 @@ codeunit 5579 "Digital Voucher Impl."
exit;
if not SalesHeader.Invoice then
exit;
- HandleDigitalVoucherForPostedDocument("Digital Voucher Entry Type"::"Sales Document", SalesInvoiceHeader);
+ if SalesInvoiceHeader."No." <> '' then
+ HandleDigitalVoucherForPostedDocument("Digital Voucher Entry Type"::"Sales Document", SalesInvoiceHeader);
+ if SalesCrMemoHeader."No." <> '' then
+ HandleDigitalVoucherForPostedDocument("Digital Voucher Entry Type"::"Sales Document", SalesCrMemoHeader);
+ end;
+
+ [EventSubscriber(ObjectType::Codeunit, Codeunit::"Service-Post", 'OnAfterPostServiceDoc', '', true, true)]
+ local procedure CheckServiceVoucherOnAfterPostServiceDoc(ServInvoiceNo: Code[20]; ServCrMemoNo: Code[20]; PassedInvoice: Boolean)
+ var
+ ServInvHeader: Record "Service Invoice Header";
+ ServCrMemoHeader: Record "Service Cr.Memo Header";
+ RecVar: Variant;
+ begin
+ if not DigitalVoucherFeature.IsFeatureEnabled() then
+ exit;
+ if not PassedInvoice then
+ exit;
+ if ServInvoiceNo = '' then begin
+ ServCrMemoHeader.Get(ServCrMemoNo);
+ RecVar := ServCrMemoHeader;
+ end else begin
+ ServInvHeader.Get(ServInvoiceNo);
+ RecVar := ServInvHeader;
+ end;
+ HandleDigitalVoucherForPostedDocument("Digital Voucher Entry Type"::"Sales Document", RecVar);
end;
[EventSubscriber(ObjectType::Codeunit, Codeunit::"Sales-Post Prepayments", 'OnAfterPostPrepayments', '', true, true)]
@@ -316,7 +497,10 @@ codeunit 5579 "Digital Voucher Impl."
begin
if not DigitalVoucherFeature.IsFeatureEnabled() then
exit;
- HandleDigitalVoucherForPostedDocument("Digital Voucher Entry Type"::"Sales Document", SalesInvoiceHeader);
+ if SalesInvoiceHeader."No." <> '' then
+ HandleDigitalVoucherForPostedDocument("Digital Voucher Entry Type"::"Sales Document", SalesInvoiceHeader);
+ if SalesCrMemoHeader."No." <> '' then
+ HandleDigitalVoucherForPostedDocument("Digital Voucher Entry Type"::"Sales Document", SalesCrMemoHeader);
end;
[EventSubscriber(ObjectType::Codeunit, Codeunit::"Purch.-Post", 'OnAfterFinalizePostingOnBeforeCommit', '', true, true)]
@@ -328,7 +512,10 @@ codeunit 5579 "Digital Voucher Impl."
exit;
if not PurchHeader.Invoice then
exit;
- HandleDigitalVoucherForPostedDocument("Digital Voucher Entry Type"::"Purchase Document", PurchInvHeader);
+ if PurchInvHeader."No." <> '' then
+ HandleDigitalVoucherForPostedDocument("Digital Voucher Entry Type"::"Purchase Document", PurchInvHeader);
+ if PurchCrMemoHdr."No." <> '' then
+ HandleDigitalVoucherForPostedDocument("Digital Voucher Entry Type"::"Purchase Document", PurchCrMemoHdr);
end;
[EventSubscriber(ObjectType::Codeunit, Codeunit::"Purchase-Post Prepayments", 'OnAfterPostPrepayments', '', true, true)]
@@ -336,7 +523,10 @@ codeunit 5579 "Digital Voucher Impl."
begin
if not DigitalVoucherFeature.IsFeatureEnabled() then
exit;
- HandleDigitalVoucherForPostedDocument("Digital Voucher Entry Type"::"Purchase Document", PurchInvHeader);
+ if PurchInvHeader."No." <> '' then
+ HandleDigitalVoucherForPostedDocument("Digital Voucher Entry Type"::"Purchase Document", PurchInvHeader);
+ if PurchCrMemoHdr."No." <> '' then
+ HandleDigitalVoucherForPostedDocument("Digital Voucher Entry Type"::"Purchase Document", PurchCrMemoHdr);
end;
[EventSubscriber(ObjectType::Codeunit, Codeunit::"Gen. Jnl.-Post Batch", 'OnProcessLinesOnAfterPostGenJnlLines', '', true, true)]
@@ -412,9 +602,10 @@ codeunit 5579 "Digital Voucher Impl."
end;
[EventSubscriber(ObjectType::Table, Database::"Digital Voucher Setup", 'OnBeforeModifyEvent', '', false, false)]
- local procedure CheckIfChangeIsAllowedOnModifyDigitalVoucherSetup(var Rec: Record "Digital Voucher Setup"; var xRec: Record "Digital Voucher Setup"; RunTrigger: Boolean)
+ local procedure CheckIfChangeIsAllowedOnModifyDigitalVoucherSetup(var Rec: Record "Digital Voucher Setup")
begin
- DigitalVoucherFeature.CheckIfDigitalVoucherSetupChangeIsAllowed();
+ if not Rec.Enabled then
+ DigitalVoucherFeature.CheckIfDigitalVoucherSetupChangeIsAllowed();
end;
[EventSubscriber(ObjectType::Table, Database::"Email Item", 'OnAttachIncomingDocumentsOnAfterSetFilter', '', false, false)]
@@ -429,8 +620,27 @@ codeunit 5579 "Digital Voucher Impl."
DigitalVoucherFeature.CheckIfDigitalVoucherSetupChangeIsAllowed();
end;
+ [EventSubscriber(ObjectType::Codeunit, Codeunit::"Correct Posted Purch. Invoice", 'OnAfterCreateCopyDocument', '', false, false)]
+ local procedure CopyDigitalVoucherOnAfterCreateCopyPurchDocument(var PurchaseHeader: Record "Purchase Header"; PurchInvHeader: Record "Purch. Inv. Header")
+ begin
+ PurchaseHeader."Incoming Document Entry No." :=
+ CopyDigitalVoucherToCorrectiveDocument("Digital Voucher Entry Type"::"Purchase Document", PurchInvHeader, PurchaseHeader."No.", PurchaseHeader."Posting Date");
+ end;
+
+ [EventSubscriber(ObjectType::Codeunit, Codeunit::"Correct Posted Sales Invoice", 'OnAfterCreateCorrectiveSalesCrMemo', '', false, false)]
+ local procedure CopyDigitalVoucherOnAfterCreateCorrectiveSalesCrMemo(SalesInvoiceHeader: Record "Sales Invoice Header"; var SalesHeader: Record "Sales Header")
+ begin
+ SalesHeader."Incoming Document Entry No." :=
+ CopyDigitalVoucherToCorrectiveDocument("Digital Voucher Entry Type"::"Sales Document", SalesInvoiceHeader, SalesHeader."No.", SalesHeader."Posting Date");
+ end;
+
[IntegrationEvent(false, false)]
local procedure OnGenerateDigitalVoucherForDocumentOnCaseElse(RecRef: RecordRef)
begin
end;
+
+ [InternalEvent(false, false)]
+ internal procedure OnHandleDigitalVoucherEntrySetupWhenEnforced(EntryType: Enum "Digital Voucher Entry Type")
+ begin
+ end;
}
diff --git a/Apps/W1/EnforcedDigitalVouchers/app/src/Implementation/VoucherAttachOrNoteCheck.Codeunit.al b/Apps/W1/EnforcedDigitalVouchers/app/src/Implementation/VoucherAttachOrNoteCheck.Codeunit.al
index 51d1b3db33..e0d18f03c0 100644
--- a/Apps/W1/EnforcedDigitalVouchers/app/src/Implementation/VoucherAttachOrNoteCheck.Codeunit.al
+++ b/Apps/W1/EnforcedDigitalVouchers/app/src/Implementation/VoucherAttachOrNoteCheck.Codeunit.al
@@ -28,7 +28,7 @@ codeunit 5581 "Voucher Attach Or Note Check" implements "Digital Voucher Check"
IncomingDocument: Record "Incoming Document";
VoucherAttached: Boolean;
begin
- DigitalVoucherEntrySetup.Get(DigitalVoucherEntryType);
+ DigitalVoucherImpl.GetDigitalVoucherEntrySetup(DigitalVoucherEntrySetup, DigitalVoucherEntryType);
VoucherAttached := DigitalVoucherImpl.GetIncomingDocumentRecordFromRecordRef(IncomingDocument, RecRef);
if VoucherAttached and DigitalVoucherEntrySetup."Skip If Manually Added" then
exit;
diff --git a/Apps/W1/EnforcedDigitalVouchers/app/src/Implementation/VoucherAttachmentCheck.Codeunit.al b/Apps/W1/EnforcedDigitalVouchers/app/src/Implementation/VoucherAttachmentCheck.Codeunit.al
index 7668aa33ac..83898a2745 100644
--- a/Apps/W1/EnforcedDigitalVouchers/app/src/Implementation/VoucherAttachmentCheck.Codeunit.al
+++ b/Apps/W1/EnforcedDigitalVouchers/app/src/Implementation/VoucherAttachmentCheck.Codeunit.al
@@ -5,6 +5,7 @@
namespace Microsoft.EServices.EDocument;
using System.Utilities;
+using Microsoft.Service.Document;
codeunit 5580 "Voucher Attachment Check" implements "Digital Voucher Check"
{
@@ -16,11 +17,13 @@ codeunit 5580 "Voucher Attachment Check" implements "Digital Voucher Check"
procedure CheckVoucherIsAttachedToDocument(var ErrorMessageMgt: Codeunit "Error Message Management"; DigitalVoucherEntryType: Enum "Digital Voucher Entry Type"; RecRef: RecordRef)
begin
- if not DigitalVoucherImpl.CheckDigitalVoucherForDocument(DigitalVoucherEntryType, RecRef) then
- if DigitalVoucherEntryType in [DigitalVoucherEntryType::"General Journal", DigitalVoucherEntryType::"Purchase Journal", DigitalVoucherEntryType::"Sales Journal"] then
- error(NotPossibleToPostWithoutVoucherErr)
- else
- ErrorMessageMgt.LogSimpleErrorMessage(NotPossibleToPostWithoutVoucherErr);
+ if DigitalVoucherImpl.CheckDigitalVoucherForDocument(DigitalVoucherEntryType, RecRef) then
+ exit;
+ if (DigitalVoucherEntryType in [DigitalVoucherEntryType::"General Journal", DigitalVoucherEntryType::"Purchase Journal", DigitalVoucherEntryType::"Sales Journal"]) or
+ (RecRef.Number() = Database::"Service Header")
+ then
+ error(NotPossibleToPostWithoutVoucherErr);
+ ErrorMessageMgt.LogSimpleErrorMessage(NotPossibleToPostWithoutVoucherErr);
end;
procedure GenerateDigitalVoucherForPostedDocument(DigitalVoucherEntryType: Enum "Digital Voucher Entry Type"; RecRef: RecordRef)
@@ -29,7 +32,7 @@ codeunit 5580 "Voucher Attachment Check" implements "Digital Voucher Check"
IncomingDocument: Record "Incoming Document";
VoucherAttached: Boolean;
begin
- DigitalVoucherEntrySetup.Get(DigitalVoucherEntryType);
+ DigitalVoucherImpl.GetDigitalVoucherEntrySetup(DigitalVoucherEntrySetup, DigitalVoucherEntryType);
VoucherAttached := DigitalVoucherImpl.GetIncomingDocumentRecordFromRecordRef(IncomingDocument, RecRef);
if VoucherAttached and DigitalVoucherEntrySetup."Skip If Manually Added" then
exit;
diff --git a/Apps/W1/EnforcedDigitalVouchers/test/src/DigitalVouchersTests.Codeunit.al b/Apps/W1/EnforcedDigitalVouchers/test/src/DigitalVouchersTests.Codeunit.al
index a3d1f90f3e..0d4be7f312 100644
--- a/Apps/W1/EnforcedDigitalVouchers/test/src/DigitalVouchersTests.Codeunit.al
+++ b/Apps/W1/EnforcedDigitalVouchers/test/src/DigitalVouchersTests.Codeunit.al
@@ -17,6 +17,8 @@ codeunit 139515 "Digital Vouchers Tests"
Assert: Codeunit Assert;
LibraryWorkflow: Codeunit "Library - Workflow";
ActiveDirectoryMockEvents: Codeunit "Active Directory Mock Events";
+ LibrarySmallBusiness: Codeunit "Library - Small Business";
+ LibraryService: Codeunit "Library - Service";
IsInitialized: Boolean;
NotPossibleToPostWithoutVoucherErr: Label 'Not possible to post without attaching the digital voucher.';
DialogErrorCodeTok: Label 'Dialog', Locked = true;
@@ -24,6 +26,8 @@ codeunit 139515 "Digital Vouchers Tests"
DetachQst: Label 'Do you want to remove the reference from this incoming document to posted document';
RemovePostedRecordManuallyMsg: Label 'The reference to the posted record has been removed.\\Remember to correct the posted record if needed.';
DoYouWantToPostQst: Label 'Do you want to post the journal lines?';
+ PaymentLineAppliedMsg: Label '%1 payment lines out of 1 are applied.\\', Comment = '%1 - number';
+ DoYouWantTPostPmtQst: Label 'Do you want to post the payments?';
trigger OnRun()
begin
@@ -45,7 +49,7 @@ codeunit 139515 "Digital Vouchers Tests"
// [GIVEN] Digital voucher entry setup for purchase document is "Attachment"
InitSetupCheckOnly("Digital Voucher Entry Type"::"Purchase Document", "Digital Voucher Check Type"::Attachment);
// [WHEN] Post purchase document
- DocNo := ReceiveAndInvoicePurchaseDocument();
+ DocNo := ReceiveAndInvoicePurchaseInvoice();
// [THEN] The document is posted without the digital voucher
AssertVendorLedgerEntryExists(DocNo);
UnbindSubscription(DigVouchersDisableEnforce);
@@ -66,7 +70,7 @@ codeunit 139515 "Digital Vouchers Tests"
// [GIVEN] Digital voucher entry setup for purchase document is "No Check"
InitSetupCheckOnly("Digital Voucher Entry Type"::"Purchase Document", "Digital Voucher Check Type"::"No Check");
// [WHEN] Post purchase document
- DocNo := ReceiveAndInvoicePurchaseDocument();
+ DocNo := ReceiveAndInvoicePurchaseInvoice();
// [THEN] The document is posted without the digital voucher
AssertVendorLedgerEntryExists(DocNo);
UnbindSubscription(DigVouchersDisableEnforce);
@@ -86,7 +90,7 @@ codeunit 139515 "Digital Vouchers Tests"
// [GIVEN] Digital Voucher Entry Setup for Purchase Document is "Attachment"
InitSetupCheckOnly("Digital Voucher Entry Type"::"Purchase Document", "Digital Voucher Check Type"::Attachment);
// [WHEN] Post purchase document
- asserterror ReceiveAndInvoicePurchaseDocument();
+ asserterror ReceiveAndInvoicePurchaseInvoice();
// [THEN] Error "Not possible to post without the voucher" is shown
Assert.ExpectedErrorCode(DialogErrorCodeTok);
Assert.ExpectedError(NotPossibleToPostWithoutVoucherErr);
@@ -109,7 +113,7 @@ codeunit 139515 "Digital Vouchers Tests"
InitSetupCheckOnly("Digital Voucher Entry Type"::"Purchase Document", "Digital Voucher Check Type"::Attachment);
// [GIVEN] Purchase invoice and Incoming document with attachment is created for the purchase document
// [WHEN] Post the purchase document
- DocNo := ReceiveAndInvoicePurchaseDocumentWithIncDoc();
+ DocNo := ReceiveAndInvoicePurchaseInvoiceWithIncDoc();
// [THEN] The document is posted with the digital voucher
AssertVendorLedgerEntryExists(DocNo);
UnbindSubscription(DigVouchersDisableEnforce);
@@ -133,7 +137,7 @@ codeunit 139515 "Digital Vouchers Tests"
// [GIVEN] Digital voucher entry setup for purchase document is "Attachment", "Generate Automatically" is enabled
InitSetupGenerateAutomatically("Digital Voucher Entry Type"::"Purchase Document", "Digital Voucher Check Type"::Attachment);
// [WHEN] Post purchase document
- DocNo := ReceiveAndInvoicePurchaseDocument(PurchHeader);
+ DocNo := ReceiveAndInvoicePurchaseInvoice(PurchHeader);
// [THEN] Incoming document with attachment is connected to the posted purchase document
VerifyIncomingDocumentWithAttachmentsExists(PurchHeader."Posting Date", DocNo, 1);
NotificationLifecycleMgt.RecallAllNotifications();
@@ -159,7 +163,7 @@ codeunit 139515 "Digital Vouchers Tests"
InitSetupGenerateAutomatically("Digital Voucher Entry Type"::"Purchase Document", "Digital Voucher Check Type"::Attachment);
// [GIVEN] Purcnase invoice and Incoming document with attachment is created for the purchase document
// [WHEN] Post purchase document
- DocNo := ReceiveAndInvoicePurchaseDocumentWithIncDoc(PurchHeader);
+ DocNo := ReceiveAndInvoicePurchaseInvoiceWithIncDoc(PurchHeader);
// [THEN] Incoming document with two attachments is connected to the posted purchase document
VerifyIncomingDocumentWithAttachmentsExists(PurchHeader."Posting Date", DocNo, 2);
NotificationLifecycleMgt.RecallAllNotifications();
@@ -185,7 +189,7 @@ codeunit 139515 "Digital Vouchers Tests"
InitSetupGenerateAutomaticallySkipIfManuallyAdded("Digital Voucher Entry Type"::"Purchase Document", "Digital Voucher Check Type"::Attachment);
// [GIVEN] Purchase invoice and Incoming document with attachment is created for the purchase document
// [WHEN] Post purchase document
- DocNo := ReceiveAndInvoicePurchaseDocumentWithIncDoc(PurchHeader);
+ DocNo := ReceiveAndInvoicePurchaseInvoiceWithIncDoc(PurchHeader);
// [THEN] Incoming document with one attachment is connected to the posted purchase document
VerifyIncomingDocumentWithAttachmentsExists(PurchHeader."Posting Date", DocNo, 1);
NotificationLifecycleMgt.RecallAllNotifications();
@@ -391,13 +395,13 @@ codeunit 139515 "Digital Vouchers Tests"
GenJournalTemplate: Record "Gen. Journal Template";
GenJournalBatch: Record "Gen. Journal Batch";
IncomingDocument: Record "Incoming Document";
- DigVouchersEnableEnforce: Codeunit "Dig. Vouchers Enable Enforce";
+ DigVouchersDisableEnforce: Codeunit "Dig. Vouchers Disable Enforce";
i: Integer;
begin
// [SCENARIO 537486] Stan can post multiple general journals lines with different documents and digital voucher set to by automatically generated
Initialize();
- BindSubscription(DigVouchersEnableEnforce);
+ BindSubscription(DigVouchersDisableEnforce);
// [GIVEN] Digital voucher entry setup for general journal is "Attachment" and "Generate Automatically" option is enabled
InitSetupGenerateAutomatically("Digital Voucher Entry Type"::"General Journal", "Digital Voucher Check Type"::Attachment);
// [GIVEN] General journal lines with the same template and batch are created
@@ -410,7 +414,7 @@ codeunit 139515 "Digital Vouchers Tests"
for i := 1 to ArrayLen(GenJournalLine) do
LibraryJournals.CreateGenJournalLine(
GenJournalLine[i], GenJournalTemplate.Name, GenJournalBatch.Name,
- GenJournalLine[i]."Document Type"::" ", GenJournalLine[i]."Account Type"::"G/L Account",
+ GenJournalLine[i]."Document Type"::Invoice, GenJournalLine[i]."Account Type"::"G/L Account",
LibraryERM.CreateGLAccountNo(), GenJournalLine[i]."Bal. Account Type"::"G/L Account",
LibraryERM.CreateGLAccountNo(), LibraryRandom.RandDec(100, 2));
GenJournalLineToPost.SetRange("Journal Template Name", GenJournalTemplate.Name);
@@ -425,16 +429,337 @@ codeunit 139515 "Digital Vouchers Tests"
IncomingDocument.FindByDocumentNoAndPostingDate(
IncomingDocument, GenJournalLine[i]."Document No.", Format(GenJournalLine[i]."Posting Date")),
'Digital voucher has not been generated');
- UnbindSubscription(DigVouchersEnableEnforce);
+ UnbindSubscription(DigVouchersDisableEnforce);
+ end;
+
+ [Test]
+ procedure PurchInvVoucherFeatureEnabledAttachmentCorrect()
+ var
+ PurchInvHeader: Record "Purch. Inv. Header";
+ PurchCrMemoHdr: Record "Purch. Cr. Memo Hdr.";
+ DigVouchersDisableEnforce: Codeunit "Dig. Vouchers Disable Enforce";
+ NotificationLifecycleMgt: Codeunit "Notification Lifecycle Mgt.";
+ CorrectPostedPurchInvoice: Codeunit "Correct Posted Purch. Invoice";
+ begin
+ // [FEATURE] [Purchase]
+ // [SCENARIO 538880] Stan can post a corrective purchase credit memo the digital voucher feature is enabled with the attachment check
+
+ Initialize();
+ BindSubscription(DigVouchersDisableEnforce);
+ // [GIVEN] Digital voucher feature is enabled
+ EnableDigitalVoucherFeature();
+ InitializeReportSelectionPurchaseInvoice();
+ // [GIVEN] Digital voucher entry setup for purchase document is "Attachment", "Generate Automatically" is not enabled
+ InitSetupCheckOnly("Digital Voucher Entry Type"::"Purchase Document", "Digital Voucher Check Type"::Attachment);
+ // [GIVEN] Posted purchase invoice and Incoming document with attachment
+ PurchInvHeader.Get(ReceiveAndInvoicePurchaseInvoiceWithIncDoc());
+ // [WHEN] Correct the posted purchase invoice
+ CorrectPostedPurchInvoice.CancelPostedInvoice(PurchInvHeader);
+ // [THEN] Incoming document with attachment is connected to the posted corrective credit memo
+ LibrarySmallBusiness.FindPurchCorrectiveCrMemo(PurchCrMemoHdr, PurchInvHeader);
+ VerifyIncomingDocumentWithAttachmentsExists(PurchCrMemoHdr."Posting Date", PurchCrMemoHdr."No.", 1);
+
+ NotificationLifecycleMgt.RecallAllNotifications();
+ UnbindSubscription(DigVouchersDisableEnforce);
+ end;
+
+ [Test]
+ procedure SalesInvVoucherFeatureEnabledAttachmentCorrect()
+ var
+ SalesInvHeader: Record "Sales Invoice Header";
+ SalesCrMemoHeader: Record "Sales Cr.Memo Header";
+ DigVouchersDisableEnforce: Codeunit "Dig. Vouchers Disable Enforce";
+ NotificationLifecycleMgt: Codeunit "Notification Lifecycle Mgt.";
+ CorrectPostedSalesInvoice: Codeunit "Correct Posted Sales Invoice";
+ begin
+ // [FEATURE] [Sales]
+ // [SCENARIO 538880] Stan can post a corrective sales credit memo the digital voucher feature is enabled with the attachment check
+
+ Initialize();
+ BindSubscription(DigVouchersDisableEnforce);
+ // [GIVEN] Digital voucher feature is enabled
+ EnableDigitalVoucherFeature();
+ InitializeReportSelectionSalesInvoice();
+ // [GIVEN] Digital voucher entry setup for sales document is "Attachment", "Generate Automatically" is not enabled
+ InitSetupCheckOnly("Digital Voucher Entry Type"::"Sales Document", "Digital Voucher Check Type"::Attachment);
+ // [GIVEN] Posted sales invoice and Incoming document with attachment
+ SalesInvHeader.Get(ShipAndInvoiceSalesDocumentWithIncDoc());
+ // [WHEN] Correct the posted sales invoice
+ CorrectPostedSalesInvoice.CancelPostedInvoice(SalesInvHeader);
+ // [THEN] Incoming document with attachment is connected to the posted corrective credit memo
+ LibrarySmallBusiness.FindSalesCorrectiveCrMemo(SalesCrMemoHeader, SalesInvHeader);
+ VerifyIncomingDocumentWithAttachmentsExists(SalesCrMemoHeader."Posting Date", SalesCrMemoHeader."No.", 1);
+
+ NotificationLifecycleMgt.RecallAllNotifications();
+ UnbindSubscription(DigVouchersDisableEnforce);
+ end;
+
+ [Test]
+ procedure ServiceInvNoVoucherFeatureEnabledAttachment()
+ var
+ DigVouchersDisableEnforce: Codeunit "Dig. Vouchers Disable Enforce";
+ begin
+ // [FEATURE] [Service]
+ // [SCENARIO 475787] Stan cannot post a service invoice without a digital voucher when there is attachment check and the feature is enabled
+ Initialize();
+ BindSubscription(DigVouchersDisableEnforce);
+ // [GIVEN] Digital voucher functionality is enabled
+ EnableDigitalVoucherFeature();
+ // [GIVEN] Digital Voucher Entry Setup for sales Document is "Attachment"
+ InitSetupCheckOnly("Digital Voucher Entry Type"::"Sales Document", "Digital Voucher Check Type"::Attachment);
+ // [GIVEN] Service invoice without incoming document
+ // [WHEN] Post service document
+ asserterror PostServiceInvoice();
+ // [THEN] Error "Not possible to post without the voucher" is shown
+ Assert.ExpectedErrorCode(DialogErrorCodeTok);
+ Assert.ExpectedError(NotPossibleToPostWithoutVoucherErr);
+ UnbindSubscription(DigVouchersDisableEnforce);
+ end;
+
+ [Test]
+ procedure ServInvVoucherFeatureEnabledAttachment()
+ var
+ DigVouchersDisableEnforce: Codeunit "Dig. Vouchers Disable Enforce";
+ DocNo: Code[20];
+ begin
+ // [FEATURE] [Service]
+ // [SCENARIO 475787] Stan can post a service invoice with the manually attached digital voucher when there is attachment check and the feature is enabled
+ Initialize();
+ BindSubscription(DigVouchersDisableEnforce);
+ // [GIVEN] Digital voucher feature is enabled
+ EnableDigitalVoucherFeature();
+ // [GIVEN] Digital voucher entry setup for sales document is "Attachment"
+ InitSetupCheckOnly("Digital Voucher Entry Type"::"Sales Document", "Digital Voucher Check Type"::Attachment);
+ // [GIVEN] Service invoice with incoming document
+ // [WHEN] Post the service document
+ DocNo := PostServiceInvoiceWithIncDoc();
+ // [THEN] The document is posted with the digital voucher
+ VerifyIncomingDocumentWithAttachmentsExists(WorkDate(), DocNo, 1);
+
+ UnbindSubscription(DigVouchersDisableEnforce);
+ end;
+
+ [Test]
+ procedure ServInvVoucherFeatureEnabledAttachmentAutogenerated()
+ var
+ DigVouchersDisableEnforce: Codeunit "Dig. Vouchers Disable Enforce";
+ NotificationLifecycleMgt: Codeunit "Notification Lifecycle Mgt.";
+ DocNo: Code[20];
+ begin
+ // [FEATURE] [Service]
+ // [SCENARIO 475787] Stan can post a service invoice with a digital voucher generated automatically when there is attachment check and the feature is enabled
+ Initialize();
+ BindSubscription(DigVouchersDisableEnforce);
+ // [GIVEN] Digital voucher feature is enabled
+ EnableDigitalVoucherFeature();
+ InitializeReportSelectionServiceInvoice();
+ // [GIVEN] Digital voucher entry setup for sales document is "Attachment", "Generate Automatically" is enabled
+ InitSetupGenerateAutomatically("Digital Voucher Entry Type"::"Sales Document", "Digital Voucher Check Type"::Attachment);
+ // [GIVEN] Service invoice without incoming document
+ // [WHEN] Post the service document
+ DocNo := PostServiceInvoice();
+ // [THEN] The document is posted with the digital voucher
+ VerifyIncomingDocumentWithAttachmentsExists(WorkDate(), DocNo, 1);
+
+ NotificationLifecycleMgt.RecallAllNotifications();
+ UnbindSubscription(DigVouchersDisableEnforce);
+ end;
+
+ [Test]
+ procedure ServCrMemoVoucherFeatureEnabledAttachmentAutogenerated()
+ var
+ DigVouchersDisableEnforce: Codeunit "Dig. Vouchers Disable Enforce";
+ NotificationLifecycleMgt: Codeunit "Notification Lifecycle Mgt.";
+ DocNo: Code[20];
+ begin
+ // [FEATURE] [Service]
+ // [SCENARIO 475787] Stan can post a service credit memo with a digital voucher generated automatically when there is attachment check and the feature is enabled
+ Initialize();
+ BindSubscription(DigVouchersDisableEnforce);
+ // [GIVEN] Digital voucher feature is enabled
+ EnableDigitalVoucherFeature();
+ InitializeReportSelectionServiceCrMemo();
+ // [GIVEN] Digital voucher entry setup for sales document is "Attachment", "Generate Automatically" is enabled
+ InitSetupGenerateAutomatically("Digital Voucher Entry Type"::"Sales Document", "Digital Voucher Check Type"::Attachment);
+ // [GIVEN] Service credit memo without incoming document
+ // [WHEN] Post the service credit memo
+ DocNo := PostServiceCrMemo();
+ // [THEN] The document is posted with the digital voucher
+ VerifyIncomingDocumentWithAttachmentsExists(WorkDate(), DocNo, 1);
+
+ NotificationLifecycleMgt.RecallAllNotifications();
+ UnbindSubscription(DigVouchersDisableEnforce);
+ end;
+
+ [Test]
+ [HandlerFunctions('MessageHandler,ConfirmHandler')]
+ procedure PaymentReconciliationDoesNotRequireDigitalVoucher()
+ var
+ BankAccReconciliation: Record "Bank Acc. Reconciliation";
+ VendLedgEntry: Record "Vendor Ledger Entry";
+ PostedPmtReconHdr: Record "Posted Payment Recon. Hdr";
+ BankAccReconPostYesNo: Codeunit "Bank Acc. Recon. Post (Yes/No)";
+ DigVouchersDisableEnforce: Codeunit "Dig. Vouchers Disable Enforce";
+ NotificationLifecycleMgt: Codeunit "Notification Lifecycle Mgt.";
+ BankAccountNo: Code[20];
+ begin
+ // [SCENARIO 539186] Stan can post a payment reconciliation without a digital voucher
+
+ Initialize();
+ BindSubscription(DigVouchersDisableEnforce);
+ // [GIVEN] Digital voucher feature is enabled for purchase document and purchase journal
+ EnableDigitalVoucherFeature();
+ InitSetupCheckOnly("Digital Voucher Entry Type"::"Purchase Document", "Digital Voucher Check Type"::Attachment);
+ InitSetupCheckOnly("Digital Voucher Entry Type"::"Purchase Journal", "Digital Voucher Check Type"::Attachment);
+
+ // [GIVEN] Payment account reconciliation with the purchase invoice
+ BankAccountNo := CreateBankAccForPaymentReconciliation();
+ LibraryERM.FindVendorLedgerEntry(
+ VendLedgEntry, VendLedgEntry."Document Type"::Invoice, ReceiveAndInvoicePurchaseInvoiceWithIncDoc());
+ CreatePmtReconForVendor(BankAccReconciliation, VendLedgEntry, BankAccountNo);
+ LibraryVariableStorage.Enqueue(StrSubstNo(PaymentLineAppliedMsg, 1));
+ LibraryVariableStorage.Enqueue(DoYouWantTPostPmtQst);
+ LibraryVariableStorage.Enqueue(true);
+ CODEUNIT.Run(CODEUNIT::"Match Bank Pmt. Appl.", BankAccReconciliation);
+
+ // [WHEN] Post payment account reconciliation
+ Assert.IsTrue(BankAccReconPostYesNo.BankAccReconPostYesNo(BankAccReconciliation), 'Not all payments posted.');
+
+ // [THEN] Payment Acc. Reconciliation has been posted
+ PostedPmtReconHdr.Get(BankAccReconciliation."Bank Account No.", BankAccReconciliation."Statement No.");
+
+ LibraryVariableStorage.AssertEmpty();
+
+ UnbindSubscription(DigVouchersDisableEnforce);
+ NotificationLifecycleMgt.RecallAllNotifications();
+ end;
+
+ [Test]
+ procedure SalesCrMemoVoucherFeatureEnabledGenerateAutomatically()
+ var
+ SalesCrMemoHeader: Record "Sales Cr.Memo Header";
+ DigVouchersDisableEnforce: Codeunit "Dig. Vouchers Disable Enforce";
+ NotificationLifecycleMgt: Codeunit "Notification Lifecycle Mgt.";
+ begin
+ // [FEATURE] [Sales]
+ // [SCENARIO 539494] Stan can post a sales credit memo with the digital voucher automatically generated
+
+ Initialize();
+ BindSubscription(DigVouchersDisableEnforce);
+ // [GIVEN] Digital voucher feature is enabled
+ EnableDigitalVoucherFeature();
+ InitializeReportSelectionSalesCrMemo();
+ // [GIVEN] Digital voucher entry setup for sales document is "Attachment", "Generate Automatically" is not enabled
+ InitSetupGenerateAutomatically("Digital Voucher Entry Type"::"Sales Document", "Digital Voucher Check Type"::Attachment);
+ // [When] Post sales credit memo
+ SalesCrMemoHeader.Get(ReceiveAndInvoiceSalesCrMemo());
+ // [THEN] Incoming document with attachment is connected to the posted sales credit memo
+ VerifyIncomingDocumentWithAttachmentsExists(SalesCrMemoHeader."Posting Date", SalesCrMemoHeader."No.", 1);
+
+ NotificationLifecycleMgt.RecallAllNotifications();
+ UnbindSubscription(DigVouchersDisableEnforce);
+ end;
+
+ [Test]
+ procedure PurchCrMemoVoucherFeatureEnabledGenerateAutomatically()
+ var
+ PurchCrMemoHdr: Record "Purch. Cr. Memo Hdr.";
+ DigVouchersDisableEnforce: Codeunit "Dig. Vouchers Disable Enforce";
+ NotificationLifecycleMgt: Codeunit "Notification Lifecycle Mgt.";
+ begin
+ // [FEATURE] [Purchase]
+ // [SCENARIO 539494] Stan can post a purchase credit memo with the digital voucher automatically generated
+
+ Initialize();
+ BindSubscription(DigVouchersDisableEnforce);
+ // [GIVEN] Digital voucher feature is enabled
+ EnableDigitalVoucherFeature();
+ InitializeReportSelectionPurchaseCrMemo();
+ // [GIVEN] Digital voucher entry setup for purchase document is "Attachment", "Generate Automatically" is not enabled
+ InitSetupGenerateAutomatically("Digital Voucher Entry Type"::"Purchase Document", "Digital Voucher Check Type"::Attachment);
+ // [When] Post purchase credit memo
+ PurchCrMemoHdr.Get(ShipAndInvoicePurchaseCrMemo());
+ // [THEN] Incoming document with attachment is connected to the posted purchase credit memo
+ VerifyIncomingDocumentWithAttachmentsExists(PurchCrMemoHdr."Posting Date", PurchCrMemoHdr."No.", 1);
+
+ NotificationLifecycleMgt.RecallAllNotifications();
+ UnbindSubscription(DigVouchersDisableEnforce);
+ end;
+
+ [Test]
+ procedure PrepmtSalesInvVoucherFeatureEnabledGenerateAutomatically()
+ var
+ SalesInvHeader: Record "Sales Invoice Header";
+ DigVouchersDisableEnforce: Codeunit "Dig. Vouchers Disable Enforce";
+ NotificationLifecycleMgt: Codeunit "Notification Lifecycle Mgt.";
+ begin
+ // [FEATURE] [Sales]
+ // [SCENARIO 539494] Stan can post a prepayment sales invoice with the digital voucher automatically generated
+
+ Initialize();
+ BindSubscription(DigVouchersDisableEnforce);
+ // [GIVEN] Digital voucher feature is enabled
+ EnableDigitalVoucherFeature();
+ InitializeReportSelectionSalesInvoice();
+ // [GIVEN] Digital voucher entry setup for sales document is "Attachment", "Generate Automatically" is not enabled
+ InitSetupGenerateAutomatically("Digital Voucher Entry Type"::"Sales Document", "Digital Voucher Check Type"::Attachment);
+ // [WHEN] Post prepayment sales invoice
+ SalesInvHeader.Get(PostSalesPrepmtInv());
+ // [THEN] Incoming document with attachment is connected to the posted prepayment sales invoice
+ VerifyIncomingDocumentWithAttachmentsExists(SalesInvHeader."Posting Date", SalesInvHeader."No.", 1);
+
+ NotificationLifecycleMgt.RecallAllNotifications();
+ UnbindSubscription(DigVouchersDisableEnforce);
+ end;
+
+ [Test]
+ procedure PrepmtSalesCrMemoVoucherFeatureEnabledGenerateAutomatically()
+ var
+ SalesHeader: Record "Sales Header";
+ DigVouchersDisableEnforce: Codeunit "Dig. Vouchers Disable Enforce";
+ NotificationLifecycleMgt: Codeunit "Notification Lifecycle Mgt.";
+ NoSeries: Codeunit "No. Series";
+ DocumentNo: Code[20];
+ begin
+ // [FEATURE] [Sales]
+ // [SCENARIO 539494] Stan can post a prepayment sales credit memo with the digital voucher automatically generated
+
+ Initialize();
+ BindSubscription(DigVouchersDisableEnforce);
+ // [GIVEN] Digital voucher feature is enabled
+ EnableDigitalVoucherFeature();
+ InitializeReportSelectionSalesInvoice();
+ // [GIVEN] Digital voucher entry setup for sales document is "Attachment", "Generate Automatically" is not enabled
+ InitSetupGenerateAutomatically("Digital Voucher Entry Type"::"Sales Document", "Digital Voucher Check Type"::Attachment);
+ // [GIVEN] Posted prepayment sales invoice
+ CreateSalesPrepmtInv(SalesHeader);
+ LibrarySales.PostSalesPrepaymentInvoice(SalesHeader);
+ DocumentNo := NoSeries.PeekNextNo(SalesHeader."Prepmt. Cr. Memo No. Series");
+ // [WHEN] Post prepayment sales credit memo
+ LibrarySales.PostSalesPrepaymentCrMemo(SalesHeader);
+ // [THEN] Incoming document with attachment is connected to the posted prepayment sales credit memo
+ VerifyIncomingDocumentWithAttachmentsExists(SalesHeader."Posting Date", DocumentNo, 1);
+
+ NotificationLifecycleMgt.RecallAllNotifications();
+ UnbindSubscription(DigVouchersDisableEnforce);
end;
local procedure Initialize()
+ var
+ CompanyInformation: Record "Company Information";
+ LibraryERMCountryData: Codeunit "Library - ERM Country Data";
begin
+ CompanyInformation.Get();
+ CompanyInformation.Validate("Allow Blank Payment Info.", true);
+ CompanyInformation.Modify(true);
LibraryTestInitialize.OnTestInitialize(Codeunit::"Digital Vouchers Tests");
if IsInitialized then
exit;
LibraryTestInitialize.OnBeforeTestSuiteInitialize(Codeunit::"Digital Vouchers Tests");
+ LibraryERMCountryData.UpdateSalesReceivablesSetup();
+ LibraryERMCountryData.UpdatePurchasesPayablesSetup();
+ LibraryERMCountryData.UpdateJournalTemplMandatory(false);
IsInitialized := true;
Commit();
LibraryTestInitialize.OnAfterTestSuiteInitialize(CODEUNIT::"Digital Vouchers Tests");
@@ -488,18 +813,86 @@ codeunit 139515 "Digital Vouchers Tests"
end;
local procedure InitializeReportSelectionPurchaseInvoice()
+ begin
+ InitializeReportSelection("Report Selection Usage"::"P.Invoice", Report::"Purchase - Invoice");
+ end;
+
+ local procedure InitializeReportSelectionPurchaseCrMemo()
+ begin
+ InitializeReportSelection("Report Selection Usage"::"P.Cr.Memo", Report::"Purchase - Credit Memo");
+ end;
+
+ local procedure InitializeReportSelectionServiceInvoice()
+ begin
+ InitializeReportSelection("Report Selection Usage"::"SM.Invoice", Report::"Service - Invoice");
+ end;
+
+ local procedure InitializeReportSelectionServiceCrMemo()
+ begin
+ InitializeReportSelection("Report Selection Usage"::"SM.Credit Memo", Report::"Service - Credit Memo");
+ end;
+
+ local procedure InitializeReportSelection(RepSelectionUsage: Enum "Report Selection Usage"; ReportId: Integer)
+ var
+ ReportSelections: Record "Report Selections";
+ begin
+ ReportSelections.SetRange("Usage", RepSelectionUsage);
+ ReportSelections.DeleteAll();
+ ReportSelections.Usage := RepSelectionUsage;
+ ReportSelections."Report ID" := ReportId;
+ ReportSelections.Insert();
+ end;
+
+ local procedure InitializeReportSelectionSalesInvoice()
var
ReportSelections: Record "Report Selections";
Usage: Enum "Report Selection Usage";
begin
- Usage := "Report Selection Usage"::"P.Invoice";
+ Usage := "Report Selection Usage"::"S.Invoice";
ReportSelections.SetRange("Usage", Usage);
ReportSelections.DeleteAll();
ReportSelections.Usage := Usage;
- ReportSelections."Report ID" := Report::"Purchase - Invoice";
+ ReportSelections."Report ID" := Report::"Standard Sales - Invoice";
ReportSelections.Insert();
end;
+ local procedure InitializeReportSelectionSalesCrMemo()
+ var
+ ReportSelections: Record "Report Selections";
+ Usage: Enum "Report Selection Usage";
+ begin
+ Usage := "Report Selection Usage"::"S.Cr.Memo";
+ ReportSelections.SetRange("Usage", Usage);
+ ReportSelections.DeleteAll();
+ ReportSelections.Usage := Usage;
+ ReportSelections."Report ID" := Report::"Standard Sales - Credit Memo";
+ ReportSelections.Insert();
+ end;
+
+ local procedure CreateBankAccForPaymentReconciliation(): Code[20]
+ var
+ BankAccount: Record "Bank Account";
+ begin
+ LibraryERM.CreateBankAccount(BankAccount);
+ BankAccount.Validate("Last Statement No.", Format(LibraryRandom.RandInt(10)));
+ BankAccount.Modify(true);
+ exit(BankAccount."No.");
+ end;
+
+ local procedure CreatePmtReconForVendor(var BankAccReconciliation: Record "Bank Acc. Reconciliation"; VendLedgEntry: Record "Vendor Ledger Entry"; BankAccountNo: Code[20])
+ var
+ BankAccReconciliationLine: Record "Bank Acc. Reconciliation Line";
+ begin
+ VendLedgEntry.CalcFields("Remaining Amount");
+ LibraryERM.CreateBankAccReconciliation(
+ BankAccReconciliation, BankAccountNo, BankAccReconciliation."Statement Type"::"Payment Application");
+ CreateBankAccReconciliationLine(
+ BankAccReconciliation, BankAccReconciliationLine, BankAccReconciliationLine."Account Type"::Vendor,
+ VendLedgEntry."Vendor No.", VendLedgEntry."Remaining Amount", WorkDate());
+ BankAccReconciliation.Validate("Post Payments Only", true);
+ BankAccReconciliationLine.Modify(true);
+ end;
+
local procedure MockIncomingDocument(PostingDate: Date; DocNo: Code[20]): Integer
var
IncomingDocument: Record "Incoming Document";
@@ -515,27 +908,35 @@ codeunit 139515 "Digital Vouchers Tests"
exit(IncomingDocument."Entry No.");
end;
- local procedure ReceiveAndInvoicePurchaseDocument(): Code[20]
+ local procedure ReceiveAndInvoicePurchaseInvoice(): Code[20]
var
PurchaseHeader: Record "Purchase Header";
begin
- exit(ReceiveAndInvoicePurchaseDocument(PurchaseHeader));
+ exit(ReceiveAndInvoicePurchaseInvoice(PurchaseHeader));
end;
- local procedure ReceiveAndInvoicePurchaseDocumentWithIncDoc(): Code[20]
+ local procedure ReceiveAndInvoicePurchaseInvoiceWithIncDoc(): Code[20]
var
PurchaseHeader: Record "Purchase Header";
begin
- exit(ReceiveAndInvoicePurchaseDocumentWithIncDoc(PurchaseHeader));
+ exit(ReceiveAndInvoicePurchaseInvoiceWithIncDoc(PurchaseHeader));
end;
- local procedure ReceiveAndInvoicePurchaseDocument(var PurchaseHeader: Record "Purchase Header"): Code[20]
+ local procedure ReceiveAndInvoicePurchaseInvoice(var PurchaseHeader: Record "Purchase Header"): Code[20]
begin
LibraryPurchase.CreatePurchaseInvoice(PurchaseHeader);
exit(LibraryPurchase.PostPurchaseDocument(PurchaseHeader, true, true));
end;
- local procedure ReceiveAndInvoicePurchaseDocumentWithIncDoc(var PurchaseHeader: Record "Purchase Header"): Code[20]
+ local procedure ShipAndInvoicePurchaseCrMemo(): Code[20]
+ var
+ PurchaseHeader: Record "Purchase Header";
+ begin
+ LibraryPurchase.CreatePurchaseCreditMemo(PurchaseHeader);
+ exit(LibraryPurchase.PostPurchaseDocument(PurchaseHeader, true, true));
+ end;
+
+ local procedure ReceiveAndInvoicePurchaseInvoiceWithIncDoc(var PurchaseHeader: Record "Purchase Header"): Code[20]
begin
LibraryPurchase.CreatePurchaseInvoice(PurchaseHeader);
PurchaseHeader.Validate("Incoming Document Entry No.", MockIncomingDocument(PurchaseHeader."Posting Date", PurchaseHeader."No."));
@@ -543,6 +944,113 @@ codeunit 139515 "Digital Vouchers Tests"
exit(LibraryPurchase.PostPurchaseDocument(PurchaseHeader, true, true));
end;
+ local procedure ReceiveAndInvoiceSalesCrMemo(): Code[20]
+ var
+ SalesHeader: Record "Sales Header";
+ begin
+ LibrarySales.CreateSalesCreditMemo(SalesHeader);
+ exit(LibrarySales.PostSalesDocument(SalesHeader, true, true));
+ end;
+
+ local procedure ShipAndInvoiceSalesDocumentWithIncDoc(): Code[20]
+ var
+ SalesHeader: Record "Sales Header";
+ begin
+ LibrarySales.CreateSalesInvoice(SalesHeader);
+ SalesHeader.Validate("Incoming Document Entry No.", MockIncomingDocument(SalesHeader."Posting Date", SalesHeader."No."));
+ SalesHeader.Modify(true);
+ exit(LibrarySales.PostSalesDocument(SalesHeader, true, true));
+ end;
+
+ local procedure PostSalesPrepmtInv(): Code[20]
+ var
+ SalesHeader: Record "Sales Header";
+ begin
+ CreateSalesPrepmtInv(SalesHeader);
+ exit(LibrarySales.PostSalesPrepaymentInvoice(SalesHeader));
+ end;
+
+ local procedure CreateSalesPrepmtInv(var SalesHeader: Record "Sales Header")
+ var
+ SalesLine: Record "Sales Line";
+ GeneralPostingSetup: Record "General Posting Setup";
+ begin
+ LibrarySales.CreateSalesHeader(SalesHeader, SalesHeader."Document Type"::Order, LibrarySales.CreateCustomerNo());
+ SalesHeader.Validate("Prepayment %", LibraryRandom.RandInt(50));
+ SalesHeader.Modify(true);
+ LibrarySales.CreateSalesLine(
+ SalesLine, SalesHeader, SalesLine.Type::"G/L Account",
+ LibraryERM.CreateGLAccountWithSalesSetup(), LibraryRandom.RandInt(5));
+ SalesLine.Validate("Unit Price", LibraryRandom.RandDec(100, 1));
+ SalesLine.Modify(true);
+ GeneralPostingSetup.Get(SalesLine."Gen. Bus. Posting Group", SalesLine."Gen. Prod. Posting Group");
+ GeneralPostingSetup."Sales Prepayments Account" := LibraryERM.CreateGLAccountWithSalesSetup();
+ GeneralPostingSetup.Modify(true);
+ end;
+
+ local procedure PostServiceInvoice(): Code[20]
+ var
+ ServiceHeader: Record "Service Header";
+ begin
+ CreateServiceDocument(ServiceHeader, ServiceHeader."Document Type"::Invoice, LibrarySales.CreateCustomerNo());
+ exit(GetServInvNoAfterPosting(ServiceHeader));
+ end;
+
+ local procedure PostServiceInvoiceWithIncDoc(): Code[20]
+ var
+ ServiceHeader: Record "Service Header";
+ begin
+ CreateServiceDocument(ServiceHeader, ServiceHeader."Document Type"::Invoice, LibrarySales.CreateCustomerNo());
+ ServiceHeader.Validate("Incoming Document Entry No.", MockIncomingDocument(ServiceHeader."Posting Date", ServiceHeader."No."));
+ ServiceHeader.Modify(true);
+ exit(GetServInvNoAfterPosting(ServiceHeader));
+ end;
+
+ local procedure GetServInvNoAfterPosting(var ServiceHeader: Record "Service Header"): Code[20]
+ var
+ ServInvHeader: Record "Service Invoice Header";
+ begin
+ LibraryService.PostServiceOrder(ServiceHeader, true, false, true);
+ ServInvHeader.SetRange("Pre-Assigned No.", ServiceHeader."No.");
+ ServInvHeader.FindFirst();
+ exit(ServInvHeader."No.");
+ end;
+
+ local procedure PostServiceCrMemo(): Code[20]
+ var
+ ServiceHeader: Record "Service Header";
+ begin
+ CreateServiceDocument(ServiceHeader, ServiceHeader."Document Type"::"Credit Memo", LibrarySales.CreateCustomerNo());
+ exit(GetServCrMemoNoAfterPosting(ServiceHeader));
+ end;
+
+ local procedure GetServCrMemoNoAfterPosting(var ServiceHeader: Record "Service Header"): Code[20]
+ var
+ ServCrMemoHeader: Record "Service Cr.Memo Header";
+ begin
+ LibraryService.PostServiceOrder(ServiceHeader, true, false, true);
+ ServCrMemoHeader.SetRange("Pre-Assigned No.", ServiceHeader."No.");
+ ServCrMemoHeader.FindFirst();
+ exit(ServCrMemoHeader."No.");
+ end;
+
+ local procedure CreateServiceDocument(var ServiceHeader: Record "Service Header"; DocType: Enum "Service Document Type"; CustNo: Code[20])
+ var
+ ServiceLine: Record "Service Line";
+ ServiceItem: Record "Service Item";
+ ServiceItemLine: Record "Service Item Line";
+ begin
+ LibraryService.CreateServiceHeader(ServiceHeader, DocType, CustNo);
+ ServiceHeader.Validate("Order Date", WorkDate());
+ ServiceHeader.Modify(true);
+ LibraryService.CreateServiceItem(ServiceItem, ServiceHeader."Customer No.");
+ LibraryService.CreateServiceItemLine(ServiceItemLine, ServiceHeader, ServiceItem."No.");
+ LibraryService.CreateServiceLineWithQuantity(
+ ServiceLine, ServiceHeader, ServiceLine.Type::Item, LibraryInventory.CreateItemNo(), LibraryRandom.RandInt(10));
+ ServiceLine.Validate("Unit Price", LibraryRandom.RandDecInRange(1000, 2000, 2));
+ ServiceLine.Modify(true);
+ end;
+
local procedure AssertVendorLedgerEntryExists(DocNo: Code[20])
var
VendorLedgerEntry: Record "Vendor Ledger Entry";
@@ -585,6 +1093,18 @@ codeunit 139515 "Digital Vouchers Tests"
ActiveDirectoryMockEvents.Enable();
end;
+ local procedure CreateBankAccReconciliationLine(BankAccReconciliation: Record "Bank Acc. Reconciliation"; var BankAccReconciliationLine: Record "Bank Acc. Reconciliation Line"; AccountType: Enum "Gen. Journal Account Type"; AccountNo: Code[20]; Amount: Decimal; Date: Date)
+ begin
+ LibraryERM.CreateBankAccReconciliationLn(BankAccReconciliationLine, BankAccReconciliation);
+ BankAccReconciliationLine.Validate("Account Type", AccountType);
+ BankAccReconciliationLine.Validate("Account No.", AccountNo);
+ BankAccReconciliationLine.Validate("Document No.", LibraryUtility.GenerateGUID());
+ BankAccReconciliationLine.Validate("Statement Amount", Amount);
+ BankAccReconciliationLine.Validate("Transaction Date", Date);
+ BankAccReconciliationLine.Validate(Description, AccountNo);
+ BankAccReconciliationLine.Modify(true);
+ end;
+
local procedure VerifyIncomingDocumentWithAttachmentsExists(PostingDate: Date; DocNo: Code[20]; AttachmentsCount: Integer)
var
IncomingDocument: Record "Incoming Document";
diff --git a/Apps/W1/ExcelReports/app/ReportLayouts/Excel/FixedAsset/FixedAssetAnalysisExcel.xlsx b/Apps/W1/ExcelReports/app/ReportLayouts/Excel/FixedAsset/FixedAssetAnalysisExcel.xlsx
index 9ea27a44d0..1890373466 100644
Binary files a/Apps/W1/ExcelReports/app/ReportLayouts/Excel/FixedAsset/FixedAssetAnalysisExcel.xlsx and b/Apps/W1/ExcelReports/app/ReportLayouts/Excel/FixedAsset/FixedAssetAnalysisExcel.xlsx differ
diff --git a/Apps/W1/ExcelReports/app/ReportLayouts/Excel/FixedAsset/FixedAssetDetailsExcel.xlsx b/Apps/W1/ExcelReports/app/ReportLayouts/Excel/FixedAsset/FixedAssetDetailsExcel.xlsx
index 337b682577..a223977831 100644
Binary files a/Apps/W1/ExcelReports/app/ReportLayouts/Excel/FixedAsset/FixedAssetDetailsExcel.xlsx and b/Apps/W1/ExcelReports/app/ReportLayouts/Excel/FixedAsset/FixedAssetDetailsExcel.xlsx differ
diff --git a/Apps/W1/ExcelReports/app/ReportLayouts/Excel/FixedAsset/FixedAssetProjectedValueExcel.xlsx b/Apps/W1/ExcelReports/app/ReportLayouts/Excel/FixedAsset/FixedAssetProjectedValueExcel.xlsx
index 3088883453..4d43ad7719 100644
Binary files a/Apps/W1/ExcelReports/app/ReportLayouts/Excel/FixedAsset/FixedAssetProjectedValueExcel.xlsx and b/Apps/W1/ExcelReports/app/ReportLayouts/Excel/FixedAsset/FixedAssetProjectedValueExcel.xlsx differ
diff --git a/Apps/W1/ExcelReports/app/ReportLayouts/Excel/GeneralLedger/ConsolidatedTrialBalanceExcel.xlsx b/Apps/W1/ExcelReports/app/ReportLayouts/Excel/GeneralLedger/ConsolidatedTrialBalanceExcel.xlsx
index 06f02c1c86..91103723d8 100644
Binary files a/Apps/W1/ExcelReports/app/ReportLayouts/Excel/GeneralLedger/ConsolidatedTrialBalanceExcel.xlsx and b/Apps/W1/ExcelReports/app/ReportLayouts/Excel/GeneralLedger/ConsolidatedTrialBalanceExcel.xlsx differ
diff --git a/Apps/W1/ExcelReports/app/ReportLayouts/Excel/GeneralLedger/TrialBalanceBudgetExcel.xlsx b/Apps/W1/ExcelReports/app/ReportLayouts/Excel/GeneralLedger/TrialBalanceBudgetExcel.xlsx
index b3cc17fd1e..8646a1a067 100644
Binary files a/Apps/W1/ExcelReports/app/ReportLayouts/Excel/GeneralLedger/TrialBalanceBudgetExcel.xlsx and b/Apps/W1/ExcelReports/app/ReportLayouts/Excel/GeneralLedger/TrialBalanceBudgetExcel.xlsx differ
diff --git a/Apps/W1/ExcelReports/app/ReportLayouts/Excel/GeneralLedger/TrialBalanceExcel.xlsx b/Apps/W1/ExcelReports/app/ReportLayouts/Excel/GeneralLedger/TrialBalanceExcel.xlsx
index 7353230c1e..895aa07d0d 100644
Binary files a/Apps/W1/ExcelReports/app/ReportLayouts/Excel/GeneralLedger/TrialBalanceExcel.xlsx and b/Apps/W1/ExcelReports/app/ReportLayouts/Excel/GeneralLedger/TrialBalanceExcel.xlsx differ
diff --git a/Apps/W1/ExcelReports/app/ReportLayouts/Excel/Purchase/AgedAccountsPayableExcel.xlsx b/Apps/W1/ExcelReports/app/ReportLayouts/Excel/Purchase/AgedAccountsPayableExcel.xlsx
index 2276ff6b84..73ed4e217f 100644
Binary files a/Apps/W1/ExcelReports/app/ReportLayouts/Excel/Purchase/AgedAccountsPayableExcel.xlsx and b/Apps/W1/ExcelReports/app/ReportLayouts/Excel/Purchase/AgedAccountsPayableExcel.xlsx differ
diff --git a/Apps/W1/ExcelReports/app/src/Customer/EXRCustomerTopList.Report.al b/Apps/W1/ExcelReports/app/src/Customer/EXRCustomerTopList.Report.al
index b901080a78..514f5e847c 100644
--- a/Apps/W1/ExcelReports/app/src/Customer/EXRCustomerTopList.Report.al
+++ b/Apps/W1/ExcelReports/app/src/Customer/EXRCustomerTopList.Report.al
@@ -139,7 +139,7 @@ report 4409 "EXR Customer Top List"
if EXTTopCustomerSale.Read() then
repeat
InsertAggregatedSales(EXTTopCustomerSale.Customer_No, EXTTopCustomerSale.Sum_Purch_LCY);
- CustomerFilter += EXTTopCustomerSale.Customer_No + '|';
+ CustomerFilter += EscapeCustomerNoFilter(EXTTopCustomerSale.Customer_No) + '|';
until (not EXTTopCustomerSale.Read());
exit(CustomerFilter.TrimEnd('|'));
@@ -156,12 +156,17 @@ report 4409 "EXR Customer Top List"
if EXTTopCustomerBalance.Read() then
repeat
InsertAggregatedSales(EXTTopCustomerBalance.Customer_No, EXTTopCustomerBalance.Balance_LCY);
- CustomerFilter += EXTTopCustomerBalance.Customer_No + '|';
+ CustomerFilter += EscapeCustomerNoFilter(EXTTopCustomerBalance.Customer_No) + '|';
until (not EXTTopCustomerBalance.Read());
exit(CustomerFilter.TrimEnd('|'));
end;
+ local procedure EscapeCustomerNoFilter(CustomerNo: Code[20]): Text
+ begin
+ exit('''' + CustomerNo + '''');
+ end;
+
local procedure ChangeShowType(NewShowType: Option)
begin
GlobalExtTopCustomerReportBuffer."Ranking Based On" := NewShowType;
@@ -198,7 +203,7 @@ report 4409 "EXR Customer Top List"
EXTTopCustomerBalance.Open();
if EXTTopCustomerBalance.Read() then
repeat
- TopCustomerData.SetFilter(TopCustomerData."Customer No.", EXTTopCustomerBalance.Customer_No);
+ TopCustomerData.SetFilter(TopCustomerData."Customer No.", EscapeCustomerNoFilter(EXTTopCustomerBalance.Customer_No));
if TopCustomerData.FindFirst() then begin
TopCustomerData."Amount 2 (LCY)" := EXTTopCustomerBalance.Balance_LCY;
if Customer.Get(TopCustomerData."Customer No.") then
diff --git a/Apps/W1/ExcelReports/app/src/Financials/EXRConsolidatedTrialBalance.Report.al b/Apps/W1/ExcelReports/app/src/Financials/EXRConsolidatedTrialBalance.Report.al
index afaef257ce..4f1137482b 100644
--- a/Apps/W1/ExcelReports/app/src/Financials/EXRConsolidatedTrialBalance.Report.al
+++ b/Apps/W1/ExcelReports/app/src/Financials/EXRConsolidatedTrialBalance.Report.al
@@ -1,8 +1,8 @@
namespace Microsoft.Finance.ExcelReports;
using Microsoft.Finance.GeneralLedger.Account;
-using Microsoft.Finance.Consolidation;
using Microsoft.Finance.Dimension;
+using Microsoft.Finance.Consolidation;
report 4410 "EXR Consolidated Trial Balance"
{
@@ -17,9 +17,10 @@ report 4410 "EXR Consolidated Trial Balance"
dataset
{
- dataitem(TrialBalanceData; "G/L Account")
+ dataitem(GLAccounts; "G/L Account")
{
DataItemTableView = sorting("No.");
+ RequestFilterFields = "No.";
column(AccountNumber; "No.") { IncludeCaption = true; }
column(AccountName; Name) { IncludeCaption = true; }
column(IncomeBalance; "Income/Balance") { IncludeCaption = true; }
@@ -28,52 +29,45 @@ report 4410 "EXR Consolidated Trial Balance"
column(AccountType; "Account Type") { IncludeCaption = true; }
column(Indentation; Indentation) { IncludeCaption = true; }
column(IndentedAccountName; IndentedAccountName) { }
- dataitem(EXRTrialBalanceBuffer; "EXR Trial Balance Buffer")
- {
- DataItemLink = "G/L Account No." = field("No.");
- column(Dimension1Code; "Dimension 1 Code") { IncludeCaption = true; }
- column(Dimension2Code; "Dimension 2 Code") { IncludeCaption = true; }
- column(NetChange; "Net Change") { IncludeCaption = true; }
- column(Balance; Balance) { IncludeCaption = true; }
- column(NetChangeACY; "Net Change (ACY)") { IncludeCaption = true; }
- column(BalanceACY; "Balance (ACY)") { IncludeCaption = true; }
- column(BusinessUnitCode; "Business Unit Code") { IncludeCaption = true; }
- }
+
trigger OnAfterGetRecord()
- var
- TrialBalance: Codeunit "Trial Balance";
begin
- IndentedAccountName := PadStr('', TrialBalanceData.Indentation * 2, ' ') + TrialBalanceData.Name;
- TrialBalance.InsertBreakdownForGLAccount(TrialBalanceData, Dimension1Values, Dimension2Values, BusinessUnitCodes, EXRTrialBalanceBuffer);
+ IndentedAccountName := PadStr('', GLAccounts.Indentation * 2, ' ') + GLAccounts.Name;
end;
+ }
+ dataitem(Dimension1; "Dimension Value")
+ {
+ DataItemTableView = sorting("Code");
+ UseTemporary = true;
- trigger OnPreDataItem()
- var
- BusinessUnit: Record "Business Unit";
- DimensionValue: Record "Dimension Value";
- begin
- if EndingDate = 0D then
- Error(EnterAnEndingDateErr);
- TrialBalanceData.SetRange("Date Filter", StartingDate, EndingDate);
+ column(Dim1Code; Dimension1."Code") { IncludeCaption = true; }
+ column(Dim1Name; Dimension1.Name) { IncludeCaption = true; }
+ }
+ dataitem(Dimension2; "Dimension Value")
+ {
+ DataItemTableView = sorting("Code");
+ UseTemporary = true;
- DimensionValue.SetRange("Global Dimension No.", 1);
- if DimensionValue.FindSet() then
- repeat
- Dimension1Values.Add(DimensionValue.Code);
- until DimensionValue.Next() = 0;
- Dimension1Values.Add('');
- DimensionValue.SetRange("Global Dimension No.", 2);
- if DimensionValue.FindSet() then
- repeat
- Dimension2Values.Add(DimensionValue.Code);
- until DimensionValue.Next() = 0;
- Dimension2Values.Add('');
- if BusinessUnit.FindSet() then
- repeat
- BusinessUnitCodes.Add(BusinessUnit.Code);
- until BusinessUnit.Next() = 0;
- BusinessUnitCodes.Add('');
- end;
+ column(Dim2Code; Dimension2."Code") { IncludeCaption = true; }
+ column(Dim2Name; Dimension2.Name) { IncludeCaption = true; }
+ }
+ dataitem(BusinessUnits; "Business Unit")
+ {
+ DataItemTableView = sorting("Code");
+ column(Code; Code) { IncludeCaption = true; }
+ column(Name; Name) { IncludeCaption = true; }
+ }
+ dataitem(TrialBalanceData; "EXR Trial Balance Buffer")
+ {
+ RequestFilterFields = "Business Unit Code";
+ column(Account; "G/L Account No.") { IncludeCaption = true; }
+ column(Dimension1Code; "Dimension 1 Code") { IncludeCaption = true; }
+ column(Dimension2Code; "Dimension 2 Code") { IncludeCaption = true; }
+ column(NetChange; "Net Change") { IncludeCaption = true; }
+ column(Balance; Balance) { IncludeCaption = true; }
+ column(NetChangeACY; "Net Change (ACY)") { IncludeCaption = true; }
+ column(BalanceACY; "Balance (ACY)") { IncludeCaption = true; }
+ column(BusinessUnitCode; "Business Unit Code") { IncludeCaption = true; }
}
}
requestpage
@@ -126,10 +120,20 @@ report 4410 "EXR Consolidated Trial Balance"
ByBusinessUnitLCY = 'By Business Unit (LCY)', Comment = 'Worksheet name, shouldn''t exceed 31 characters';
ByBusinessUnitACY = 'By Business Unit (ACY)', Comment = 'Worksheet name, shouldn''t exceed 31 characters';
}
+
+ trigger OnPreReport()
+ var
+ TrialBalance: Codeunit "Trial Balance";
+ begin
+ if EndingDate = 0D then
+ Error(EnterAnEndingDateErr);
+ GLAccounts.SetRange("Date Filter", StartingDate, EndingDate);
+
+ TrialBalance.ConfigureTrialBalance(true, true);
+ TrialBalance.InsertTrialBalanceReportData(GLAccounts, Dimension1, Dimension2, TrialBalanceData);
+ end;
+
var
- Dimension1Values: List of [Code[20]];
- Dimension2Values: List of [Code[20]];
- BusinessUnitCodes: List of [Code[20]];
IndentedAccountName: Text;
StartingDate, EndingDate : Date;
EnterAnEndingDateErr: Label 'Please enter an ending date.';
diff --git a/Apps/W1/ExcelReports/app/src/Financials/EXRFixedAssetAnalysisExcel.Report.al b/Apps/W1/ExcelReports/app/src/Financials/EXRFixedAssetAnalysisExcel.Report.al
index d741914eb9..4651977cbf 100644
--- a/Apps/W1/ExcelReports/app/src/Financials/EXRFixedAssetAnalysisExcel.Report.al
+++ b/Apps/W1/ExcelReports/app/src/Financials/EXRFixedAssetAnalysisExcel.Report.al
@@ -7,6 +7,7 @@ using Microsoft.FixedAssets.Posting;
report 4412 "EXR Fixed Asset Analysis Excel"
{
ApplicationArea = All;
+ AdditionalSearchTerms = 'FA Analysis Excel,FA Analysis';
Caption = 'Fixed Asset Analysis Excel (Preview)';
DataAccessIntent = ReadOnly;
DefaultRenderingLayout = FixedAssetAnalysisExcel;
@@ -19,7 +20,7 @@ report 4412 "EXR Fixed Asset Analysis Excel"
dataitem(FixedAssetData; "Fixed Asset")
{
DataItemTableView = sorting("No.");
- PrintOnlyIfDetail = true;
+ RequestFilterFields = "No.", "FA Class Code", "FA Subclass Code";
column(AssetNumber; "No.") { IncludeCaption = true; }
column(AssetDescription; Description) { IncludeCaption = true; }
column(FixedAssetClassCode; "FA Class Code") { IncludeCaption = true; }
@@ -28,6 +29,8 @@ report 4412 "EXR Fixed Asset Analysis Excel"
column(BudgetedAsset; "Budgeted Asset") { IncludeCaption = true; }
column(AcquisitionDateField; AcquisitionDate) { }
column(DisposalDateField; DisposalDate) { }
+ column(GlobalDimension1Code; "Global Dimension 1 Code") { IncludeCaption = true; }
+ column(GlobalDimension2Code; "Global Dimension 2 Code") { IncludeCaption = true; }
dataitem(FAPostingType; "FA Posting Type")
{
DataItemTableView = where("FA Entry" = const(true));
diff --git a/Apps/W1/ExcelReports/app/src/Financials/EXRFixedAssetDetailsExcel.Report.al b/Apps/W1/ExcelReports/app/src/Financials/EXRFixedAssetDetailsExcel.Report.al
index 71906ed7d8..817b8e6376 100644
--- a/Apps/W1/ExcelReports/app/src/Financials/EXRFixedAssetDetailsExcel.Report.al
+++ b/Apps/W1/ExcelReports/app/src/Financials/EXRFixedAssetDetailsExcel.Report.al
@@ -7,6 +7,7 @@ using Microsoft.FixedAssets.Ledger;
report 4411 "EXR Fixed Asset Details Excel"
{
ApplicationArea = All;
+ AdditionalSearchTerms = 'FA Details Excel,FA Details';
Caption = 'Fixed Asset Details Excel (Preview)';
DataAccessIntent = ReadOnly;
DefaultRenderingLayout = FixedAssetDetailsExcel;
@@ -28,6 +29,8 @@ report 4411 "EXR Fixed Asset Details Excel"
column(FixedAssetSubclassCode; "FA Subclass Code") { IncludeCaption = true; }
column(FixedAssetLocation; "FA Location Code") { IncludeCaption = true; }
column(BudgetedAsset; "Budgeted Asset") { IncludeCaption = true; }
+ column(GlobalDimension1Code; "Global Dimension 1 Code") { IncludeCaption = true; }
+ column(GlobalDimension2Code; "Global Dimension 2 Code") { IncludeCaption = true; }
dataitem(FixedAssetLedgerEntry; "FA Ledger Entry")
{
DataItemTableView = sorting("FA No.", "Depreciation Book Code", "FA Posting Date");
diff --git a/Apps/W1/ExcelReports/app/src/Financials/EXRFixedAssetProjected.Report.al b/Apps/W1/ExcelReports/app/src/Financials/EXRFixedAssetProjected.Report.al
index 4d156fec0a..2a0057a3ff 100644
--- a/Apps/W1/ExcelReports/app/src/Financials/EXRFixedAssetProjected.Report.al
+++ b/Apps/W1/ExcelReports/app/src/Financials/EXRFixedAssetProjected.Report.al
@@ -8,6 +8,7 @@ using Microsoft.FixedAssets.Ledger;
report 4413 "EXR Fixed Asset Projected"
{
ApplicationArea = All;
+ AdditionalSearchTerms = 'FA Projected Value, FA Projected Value Excel';
Caption = 'Fixed Asset Projected Value Excel (Preview)';
DataAccessIntent = ReadOnly;
DefaultRenderingLayout = FixedAssetProjectedValueExcel;
@@ -20,12 +21,15 @@ report 4413 "EXR Fixed Asset Projected"
dataitem(FixedAssetData; "Fixed Asset")
{
DataItemTableView = sorting("No.");
+ RequestFilterFields = "No.", "FA Class Code", "FA Subclass Code";
PrintOnlyIfDetail = true;
column(AssetNumber; "No.") { IncludeCaption = true; }
column(AssetDescription; Description) { IncludeCaption = true; }
column(FixedAssetClassCode; "FA Class Code") { IncludeCaption = true; }
column(FixedAssetSubclassCode; "FA Subclass Code") { IncludeCaption = true; }
column(FixedAssetLocationCode; "FA Location Code") { IncludeCaption = true; }
+ column(GlobalDimension1Code; "Global Dimension 1 Code") { IncludeCaption = true; }
+ column(GlobalDimension2Code; "Global Dimension 2 Code") { IncludeCaption = true; }
dataitem(FixedAssetLedgerEntries; "FA Ledger Entry")
{
DataItemLink = "FA No." = field("No.");
@@ -55,8 +59,13 @@ report 4413 "EXR Fixed Asset Projected"
}
trigger OnAfterGetRecord()
begin
- if FixedAssetData.Inactive or FixedAssetData.Blocked then
+ Clear(GlobalFADepreciationBook);
+ GlobalFADepreciationBook.SetAutoCalcFields("Book Value", "Custom 1");
+ if not GlobalFADepreciationBook.Get(FixedAssetData."No.", GlobalDepreciationBook.Code) then;
+
+ if ShouldFixedAssetBeSkipped(FixedAssetData) then
CurrReport.Skip();
+
InsertPostedAndProjectedEntries(FixedAssetData."No.", FixedAssetLedgerEntries);
FirstFixedAssetLedgerEntry := true;
end;
@@ -82,23 +91,23 @@ report 4413 "EXR Fixed Asset Projected"
ToolTip = 'Specifies the code for the depreciation book to be included in the report or batch job.';
ShowMandatory = true;
}
- field(FirstDepreciationDateField; FirstDepreciationDate)
+ field(FirstDepreciationDateField; StartDateProjection)
{
ApplicationArea = All;
Caption = 'First Depreciation Date';
ToolTip = 'Specifies the date to be used as the first date in the period for which you want to calculate projected depreciation.';
ShowMandatory = true;
}
- field(SecondDepreciationDateField; SecondDepreciationDate)
+ field(SecondDepreciationDateField; EndDateProjection)
{
ApplicationArea = All;
- Caption = 'Second Depreciation Date';
+ Caption = 'Last Depreciation Date';
ToolTip = 'Specifies the Fixed Asset posting date of the last posted depreciation.';
ShowMandatory = true;
}
- field(PeriodLengthField; PeriodLength)
+ field(PeriodLengthField; GlobalPeriodLength)
{
- ApplicationArea = FixedAssets;
+ ApplicationArea = All;
BlankZero = true;
Caption = 'Number of Days';
MinValue = 0;
@@ -106,11 +115,11 @@ report 4413 "EXR Fixed Asset Projected"
trigger OnValidate()
begin
- if PeriodLength > 0 then
- UseAccountingPeriod := false;
+ if GlobalPeriodLength > 0 then
+ GlobalUseAccountingPeriod := false;
end;
}
- field(DaysInFirstPeriodField; DaysInFirstPeriod)
+ field(DaysInFirstPeriodField; GlobalDaysInFirstPeriod)
{
ApplicationArea = All;
BlankZero = true;
@@ -124,17 +133,23 @@ report 4413 "EXR Fixed Asset Projected"
Caption = 'Posted Entries From';
ToolTip = 'Specifies the fixed asset posting date from which the report includes all types of posted entries.';
}
- field(ProjectedDisposalField; ProjectedDisposal)
+ field(ProjectedDisposalField; GlobalProjectDisposal)
{
ApplicationArea = All;
Caption = 'Projected Disposal';
ToolTip = 'Specifies if you want the report to include projected disposals: the contents of the Projected Proceeds on Disposal field and the Projected Disposal Date field on the FA depreciation book.';
}
- field(UseAccountingPeriodField; UseAccountingPeriod)
+ field(UseAccountingPeriodField; GlobalUseAccountingPeriod)
{
- ApplicationArea = FixedAssets;
+ ApplicationArea = All;
Caption = 'Use Accounting Period';
ToolTip = 'Specifies if you want the periods between the starting date and the ending date to correspond to the accounting periods you have specified in the Accounting Period table. When you select this field, the Number of Days field is cleared.';
+
+ trigger OnValidate()
+ begin
+ if GlobalUseAccountingPeriod then
+ GlobalPeriodLength := 0;
+ end;
}
}
}
@@ -158,125 +173,345 @@ report 4413 "EXR Fixed Asset Projected"
BookValueCaption = 'Book Value';
ProjectedEntryCaption = 'Projected entry';
}
+ trigger OnPreReport()
+ begin
+ GlobalDepreciationBook.Get(SelectedDepreciationBookCode);
+ if (StartDateProjection = 0D) or (EndDateProjection = 0D) then
+ Error(SpecifyStartingAndEndingDatesErr);
+ if StartDateProjection > EndDateProjection then
+ Error(SpecifyStartingAndEndingDatesErr);
+ end;
+
+ var
+ GlobalDepreciationBook: Record "Depreciation Book";
+ GlobalFADepreciationBook: Record "FA Depreciation Book";
+ CalculateDepreciation: Codeunit "Calculate Depreciation";
+ DepreciationCalculation: Codeunit "Depreciation Calculation";
+ FADateCalculation: Codeunit "FA Date Calculation";
+ CalculateDisposal: Codeunit "Calculate Disposal";
+ TableDeprCalculation: Codeunit "Table Depr. Calculation";
+ ProjectionTok: Label 'PROJECTED', Locked = true;
+ SelectedDepreciationBookCode: Code[10];
+ StartDateProjection, EndDateProjection : Date;
+ BookValue: Decimal;
+ GlobalPeriodLength: Integer;
+ GlobalDaysInFirstPeriod: Integer;
+ IncludePostedFrom: Date;
+ GlobalProjectDisposal: Boolean;
+ GlobalUseAccountingPeriod: Boolean;
+ ProjectedEntry: Boolean;
+ FirstFixedAssetLedgerEntry: Boolean;
+ ConfigureAccountingPeriodsErr: Label 'There is no accounting period configured after %1. These accounting periods are required when using a fiscal year of 365 days and the setting ''Use Accounting Periods'' is enabled.', Comment = '%1 is a date';
+ SpecifyStartingAndEndingDatesErr: Label 'Please specify valid starting and ending dates.';
+ PeriodLengthErr: Label 'The period length must be greater than %1 and at most %2.', Comment = '%1, %2 - number of days';
+
+ local procedure ShouldFixedAssetBeSkipped(FixedAsset: Record "Fixed Asset"): Boolean
+ begin
+ if GlobalDepreciationBook.Code = '' then
+ exit(true);
+ if FixedAsset.Inactive then
+ exit(true);
+ if (GlobalFADepreciationBook."Acquisition Date" = 0D) or (GlobalFADepreciationBook."Acquisition Date" > EndDateProjection) then
+ exit(true);
+ if GlobalFADepreciationBook."Last Depreciation Date" > EndDateProjection then
+ exit(true);
+ exit(GlobalFADepreciationBook."Disposal Date" > 0D);
+ end;
local procedure InsertPostedAndProjectedEntries(FixedAssetNo: Code[20]; var TempFixedAssetLedgerEntry: Record "FA Ledger Entry" temporary)
var
- TempProjectedDepreciationDates: Record "Accounting Period" temporary;
+ ProjectionsStart, ProjectionsEnd : Date;
+ DaysInFiscalYear, PeriodLength : Integer;
+ BiggestPostedEntryNo: Integer;
+ ProjectDisposal: Boolean;
begin
- TempFixedAssetLedgerEntry.DeleteAll();
- InsertPostedEntries(FixedAssetNo, IncludePostedFrom, SelectedDepreciationBookCode, TempFixedAssetLedgerEntry);
- TempProjectedDepreciationDates."Starting Date" := FirstDepreciationDate;
- TempProjectedDepreciationDates.Insert();
+ DaysInFiscalYear := GetDaysInFiscalYear(GlobalDepreciationBook);
+ if GlobalPeriodLength = 0 then
+ PeriodLength := DaysInFiscalYear
+ else
+ PeriodLength := GlobalPeriodLength;
+ if not IsPeriodLengthWithinLimits(PeriodLength, GlobalDepreciationBook) then
+ Error(PeriodLengthErr, MinPeriodLength(), GetDaysInFiscalYear(GlobalDepreciationBook));
- if UseAccountingPeriod then
- InsertDatesForAccountingPeriods(TempProjectedDepreciationDates, FirstDepreciationDate, SecondDepreciationDate);
+ ProjectDisposal := ShouldProjectDisposal(GlobalProjectDisposal, EndDateProjection, GlobalFADepreciationBook);
+ ProjectionsStart := StartDateProjection;
+ ProjectionsEnd := EndDateProjection;
+ if ProjectDisposal then
+ ProjectionsEnd := GlobalFADepreciationBook."Projected Disposal Date";
+ if ProjectionsStart > ProjectionsEnd then
+ ProjectionsStart := ProjectionsEnd;
+
+ TempFixedAssetLedgerEntry.DeleteAll();
+ BiggestPostedEntryNo := InsertPostedEntries(FixedAssetNo, IncludePostedFrom, SelectedDepreciationBookCode, TempFixedAssetLedgerEntry);
+ TempFixedAssetLedgerEntry."Entry No." := BiggestPostedEntryNo;
+ InsertProjectedEntries(ProjectionsStart, ProjectionsEnd, GlobalDaysInFirstPeriod, PeriodLength, GlobalUseAccountingPeriod, ProjectDisposal, GlobalDepreciationBook, GlobalFADepreciationBook, TempFixedAssetLedgerEntry);
+ end;
- TempProjectedDepreciationDates."Starting Date" := SecondDepreciationDate;
- TempProjectedDepreciationDates.Insert();
+ local procedure ShouldProjectDisposal(ProjectDisposalSetting: Boolean; EndProjectionsDate: Date; FADepreciationBook: Record "FA Depreciation Book"): Boolean
+ begin
+ if not ProjectDisposalSetting then
+ exit(false);
+ if FADepreciationBook."Projected Disposal Date" = 0D then
+ exit(false);
+ exit(FADepreciationBook."Projected Disposal Date" <= EndProjectionsDate);
+ end;
- InsertProjectedEntries(FixedAssetNo, SelectedDepreciationBookCode, TempProjectedDepreciationDates, TempFixedAssetLedgerEntry);
+ local procedure CalculatedDepreciationIsZero(LastDepreciationAmount: Decimal; LastCustom1Amount: Decimal): Boolean
+ begin
+ exit((LastDepreciationAmount = 0) and (LastCustom1Amount = 0));
end;
- local procedure InsertProjectedEntries(FixedAssetNo: Code[20]; DepreciationBookCode: Code[10]; var TempProjectedDepreciationDates: Record "Accounting Period" temporary; var TempFixedAssetLedgerEntry: Record "FA Ledger Entry" temporary)
+ local procedure InsertProjectedEntries(ProjectionsStart: Date; ProjectionsEnd: Date; DaysInFirstPeriod: Integer; PeriodLength: Integer; UseAccountingPeriods: Boolean; ProjectDisposal: Boolean; DepreciationBook: Record "Depreciation Book"; FADepreciationBook: Record "FA Depreciation Book"; var TempFixedAssetLedgerEntry: Record "FA Ledger Entry" temporary)
var
- DepreciationBook: Record "Depreciation Book";
- FADepreciationBook: Record "FA Depreciation Book";
- CalculateDepreciation: Codeunit "Calculate Depreciation";
- DepreciationCalculation: Codeunit "Depreciation Calculation";
- DateFromProjection: Date;
+ FixedAssetNo: Code[20];
+ DepreciationBookCode: Code[10];
+ ProjectionDate: Date;
DepreciationAmount, Custom1Amount : Decimal;
- NumberOfDays, Custom1NumberOfDays, DaysInPeriod : Integer;
EntryAmounts: array[4] of Decimal;
- First: Boolean;
+ NumberOfDays, Custom1NumberOfDays, DaysInPeriod : Integer;
+ PreviousProjectionDate: Date;
+ DateFromProjection: Date;
+ EndCurrentFiscalYear: Date;
+ FiscalYear365Days: Boolean;
+ ProjectingFromPostedValues: Boolean;
+ AssetWasDepreciated: Boolean;
+ LastProjectionInserted: Boolean;
begin
- if TempProjectedDepreciationDates.IsEmpty() then
- exit;
+ FixedAssetNo := FADepreciationBook."FA No.";
+ DepreciationBookCode := FADepreciationBook."Depreciation Book Code";
+ FiscalYear365Days := DepreciationBook."Fiscal Year 365 Days";
+ DateFromProjection := 0D;
+ ProjectionDate := ProjectionsStart;
+ DaysInPeriod := DaysInFirstPeriod;
+ ProjectingFromPostedValues := true;
+ InitializeProjectionEntryAmounts(ProjectionsStart, DepreciationBook, FADepreciationBook, EntryAmounts);
+ InitializeFiscalYearEndDate(DepreciationBook, ProjectionsStart, EndCurrentFiscalYear);
+ while not LastProjectionInserted do begin
+ if not ProjectingFromPostedValues then
+ DateFromProjection := DepreciationCalculation.ToMorrow(PreviousProjectionDate, FiscalYear365Days);
+
+ CalculateDepreciation.Calculate(DepreciationAmount, Custom1Amount, NumberOfDays, Custom1NumberOfDays, FixedAssetNo, DepreciationBookCode, ProjectionDate, EntryAmounts, DateFromProjection, DaysInPeriod);
+ AssetWasDepreciated := HasAssetBeenDepreciated(ProjectingFromPostedValues, DepreciationAmount, Custom1Amount, DateFromProjection, ProjectionDate, FADepreciationBook);
+
+ if ProjectingFromPostedValues and AssetWasDepreciated then begin
+ ProjectingFromPostedValues := false;
+ InitializeDepreciationInFiscalYear(ProjectionDate, FADepreciationBook, EntryAmounts);
+ DaysInPeriod := 0;
+ end;
+
+ if ProjectionDate = EndCurrentFiscalYear then begin
+ EntryAmounts[3] := 0;
+ UpdateToNextFiscalYearEndDate(DepreciationBook, EndCurrentFiscalYear);
+ end;
- FADepreciationBook.SetAutoCalcFields("Book Value", "Custom 1");
- FADepreciationBook.Get(FixedAssetNo, DepreciationBookCode);
- DepreciationBook.Get(DepreciationBookCode);
+ if AssetWasDepreciated then begin
+ AccumulateProjectionEntryAmounts(DepreciationAmount, Custom1Amount, EntryAmounts);
+ if ProjectDisposal then
+ CalculateDisposal.CalcGainLoss(FixedAssetNo, DepreciationBookCode, EntryAmounts);
+ end;
+
+ InsertProjectedFixedAssetLedgerEntry(ProjectionDate, FixedAssetNo, DepreciationAmount, NumberOfDays, TempFixedAssetLedgerEntry);
+ LastProjectionInserted := ProjectionDate >= ProjectionsEnd;
+
+ PreviousProjectionDate := ProjectionDate;
+ ProjectionDate := GetNextProjectionDate(ProjectionDate, UseAccountingPeriods, PeriodLength, EndCurrentFiscalYear, ProjectionsEnd, DepreciationBook, FADepreciationBook);
+ PeriodLength := GetPeriodLengthBetweenNextProjections(PreviousProjectionDate, ProjectionDate, DepreciationBook);
+ end;
+ end;
+
+ local procedure HasAssetBeenDepreciated(ProjectingFromPostedValues: Boolean; DepreciationAmount: Decimal; Custom1Amount: Decimal; LastDateFromProjection: Date; ProjectionDate: Date; FADepreciationBook: Record "FA Depreciation Book"): Boolean
+ begin
+ if ProjectingFromPostedValues then
+ exit(not CalculatedDepreciationIsZero(DepreciationAmount, Custom1Amount));
+ if not CalculatedDepreciationIsZero(DepreciationAmount, Custom1Amount) then
+ exit(true);
+ if FADepreciationBook."Depreciation Method" <> FADepreciationBook."Depreciation Method"::"User-Defined" then
+ exit(false);
+ exit(TableDeprCalculation.GetTablePercent(FADepreciationBook."Depreciation Book Code", FADepreciationBook."Depreciation Table Code", FADepreciationBook."First User-Defined Depr. Date", LastDateFromProjection, ProjectionDate) = 0)
+ end;
+
+ local procedure AccumulateProjectionEntryAmounts(DepreciationAmount: Decimal; Custom1Amount: Decimal; var EntryAmounts: array[4] of Decimal)
+ begin
+ EntryAmounts[1] += DepreciationAmount + Custom1Amount;
+ EntryAmounts[2] += Custom1Amount;
+ EntryAmounts[3] += DepreciationAmount + Custom1Amount;
+ end;
+
+ local procedure InitializeProjectionEntryAmounts(ProjectionsStart: Date; DepreciationBook: Record "Depreciation Book"; FADepreciationBook: Record "FA Depreciation Book"; var EntryAmounts: array[4] of Decimal)
+ begin
EntryAmounts[1] := FADepreciationBook."Book Value";
EntryAmounts[2] := FADepreciationBook."Custom 1";
- EntryAmounts[3] := DepreciationCalculation.DeprInFiscalYear(FixedAssetNo, DepreciationBookCode, FirstDepreciationDate);
- DateFromProjection := 0D;
- First := true;
- TempProjectedDepreciationDates.FindSet();
- repeat
- CalculateDepreciation.Calculate(DepreciationAmount, Custom1Amount, NumberOfDays, Custom1NumberOfDays, FixedAssetNo, DepreciationBookCode, TempProjectedDepreciationDates."Starting Date", EntryAmounts, DateFromProjection, DaysInPeriod);
- DateFromProjection := DepreciationCalculation.ToMorrow(TempProjectedDepreciationDates."Starting Date", DepreciationBook."Fiscal Year 365 Days");
- EntryAmounts[1] += DepreciationAmount + Custom1Amount;
- EntryAmounts[2] += Custom1Amount;
- EntryAmounts[3] += DepreciationAmount + Custom1Amount;
- if First then begin
- EntryAmounts[3] := DepreciationCalculation.DeprInFiscalYear(FixedAssetNo, DepreciationBookCode, TempProjectedDepreciationDates."Starting Date");
- First := false;
- end;
- TempFixedAssetLedgerEntry."FA No." := FixedAssetNo;
- TempFixedAssetLedgerEntry."FA Posting Date" := TempProjectedDepreciationDates."Starting Date";
- TempFixedAssetLedgerEntry."FA Posting Type" := TempFixedAssetLedgerEntry."FA Posting Type"::Depreciation;
- TempFixedAssetLedgerEntry.Amount := DepreciationAmount;
- TempFixedAssetLedgerEntry."No. of Depreciation Days" := NumberOfDays;
- TempFixedAssetLedgerEntry."Entry No." += 1;
- TempFixedAssetLedgerEntry."Reason Code" := ProjectionTok;
- TempFixedAssetLedgerEntry.Insert();
- until TempProjectedDepreciationDates.Next() = 0;
+ InitializeDepreciationInFiscalYear(ProjectionsStart, FADepreciationBook, EntryAmounts);
+ if DepreciationBook."Use Custom 1 Depreciation" then
+ EntryAmounts[4] := GetDepreciationBasis(DepreciationBook, FADepreciationBook);
end;
- local procedure InsertDatesForAccountingPeriods(var TempProjectedDepreciationDates: Record "Accounting Period" temporary; FromDate: Date; ToDate: Date)
+ local procedure InitializeDepreciationInFiscalYear(ReferenceDate: Date; FADepreciationBook: Record "FA Depreciation Book"; var EntryAmounts: array[4] of Decimal)
+ begin
+ EntryAmounts[3] := DepreciationCalculation.DeprInFiscalYear(FADepreciationBook."FA No.", FADepreciationBook."Depreciation Book Code", ReferenceDate);
+ end;
+
+ local procedure GetDepreciationBasis(DepreciationBook: Record "Depreciation Book"; FADepreciationBook: Record "FA Depreciation Book"): Decimal
+ var
+ FALedgerEntry: Record "FA Ledger Entry";
+ begin
+ FALedgerEntry.ReadIsolation := IsolationLevel::ReadUncommitted;
+ FALedgerEntry.SetCurrentKey("FA No.", "Depreciation Book Code", "Part of Book Value", "FA Posting Date");
+ FALedgerEntry.SetRange("FA No.", FADepreciationBook."FA No.");
+ FALedgerEntry.SetRange("Depreciation Book Code", DepreciationBook.Code);
+ FALedgerEntry.SetRange("Part of Book Value", true);
+ FALedgerEntry.SetRange("FA Posting Date", 0D, FADepreciationBook."Depr. Ending Date (Custom 1)");
+ FALedgerEntry.CalcSums(Amount);
+ exit(FALedgerEntry.Amount);
+ end;
+
+ local procedure InsertProjectedFixedAssetLedgerEntry(PostingDate: Date; FixedAssetNo: Code[20]; Amount: Decimal; NumberOfDepreciationDays: Integer; var TempFixedAssetLedgerEntry: Record "FA Ledger Entry" temporary)
+ begin
+ TempFixedAssetLedgerEntry."FA No." := FixedAssetNo;
+ TempFixedAssetLedgerEntry."FA Posting Date" := PostingDate;
+ TempFixedAssetLedgerEntry."FA Posting Type" := TempFixedAssetLedgerEntry."FA Posting Type"::Depreciation;
+ TempFixedAssetLedgerEntry.Amount := Amount;
+ TempFixedAssetLedgerEntry."No. of Depreciation Days" := NumberOfDepreciationDays;
+ TempFixedAssetLedgerEntry."Entry No." += 1;
+ TempFixedAssetLedgerEntry."Reason Code" := ProjectionTok;
+ TempFixedAssetLedgerEntry.Insert();
+ end;
+
+ local procedure GetNextProjectionDate(Previous: Date; UseAccountingPeriods: Boolean; PeriodLength: Integer; EndCurrentFiscalYear: Date; ProjectionsEnd: Date; DepreciationBook: Record "Depreciation Book"; FADepreciationBook: Record "FA Depreciation Book"): Date
+ var
+ Next: Date;
+ FiscalYear365Days: Boolean;
+ begin
+ FiscalYear365Days := DepreciationBook."Fiscal Year 365 Days";
+
+ if UseAccountingPeriods then
+ Next := GetNextProjectionDateFromAccountingPeriods(Previous, PeriodLength, FiscalYear365Days)
+ else
+ Next := GetNextProjectionDateAsNextPeriod(Previous, PeriodLength, FiscalYear365Days);
+ if ShouldNextProjectionDateBeCustomDepreciationDate(Previous, Next, DepreciationBook, FADepreciationBook) then
+ Next := FADepreciationBook."Depr. Ending Date (Custom 1)";
+ if PeriodIncludesDate(Previous, Next, FADepreciationBook."Temp. Ending Date") then
+ Next := FADepreciationBook."Temp. Ending Date";
+ if PeriodIncludesDate(Previous, Next, EndCurrentFiscalYear) then
+ Next := EndCurrentFiscalYear;
+ if Next > ProjectionsEnd then
+ Next := ProjectionsEnd;
+ exit(Next);
+ end;
+
+ local procedure GetNextProjectionDateFromAccountingPeriods(Previous: Date; PeriodLength: Integer; FiscalYear365Days: Boolean): Date
var
AccountingPeriod: Record "Accounting Period";
+ NextAccountingPeriodMinDate: Date;
begin
- AccountingPeriod.SetRange("Starting Date", FromDate + 2, ToDate);
- if AccountingPeriod.IsEmpty() then
- exit;
- AccountingPeriod.FindSet();
- repeat
- TempProjectedDepreciationDates."Starting Date" := AccountingPeriod."Starting Date" - 1;
- TempProjectedDepreciationDates.Insert();
- until AccountingPeriod.Next() = 0;
+ NextAccountingPeriodMinDate := DepreciationCalculation.ToMorrow(Previous, FiscalYear365Days) + 1;
+ AccountingPeriod.SetFilter("Starting Date", '>= %1', NextAccountingPeriodMinDate);
+ if not AccountingPeriod.FindFirst() then begin
+ if FiscalYear365Days then
+ Error(ConfigureAccountingPeriodsErr, NextAccountingPeriodMinDate);
+ exit(GetNextProjectionDateAsNextPeriod(Previous, PeriodLength, FiscalYear365Days));
+ end;
+ if Date2DMY(AccountingPeriod."Starting Date", 1) <> 31 then
+ exit(DepreciationCalculation.Yesterday(AccountingPeriod."Starting Date", FiscalYear365Days));
+ exit(AccountingPeriod."Starting Date" - 1);
end;
- local procedure InsertPostedEntries(FixedAssetNo: Code[20]; MinFAPostingDate: Date; FixedAssetDepreciationBookCode: Code[10]; var TempFixedAssetLedgerEntry: Record "FA Ledger Entry" temporary)
+ local procedure GetNextProjectionDateAsNextPeriod(Previous: Date; PeriodLength: Integer; FiscalYear365Days: Boolean): Date
+ begin
+ exit(FADateCalculation.CalculateDate(Previous, PeriodLength, FiscalYear365Days));
+ end;
+
+ local procedure GetPeriodLengthBetweenNextProjections(Previous: Date; Next: Date; DepreciationBook: Record "Depreciation Book"): Integer
+ var
+ DayAfterPrevious: Date;
+ FiscalYear365Days: Boolean;
+ DepreciationDaysBetween: Integer;
+ begin
+ FiscalYear365Days := DepreciationBook."Fiscal Year 365 Days";
+ DayAfterPrevious := DepreciationCalculation.ToMorrow(Previous, FiscalYear365Days);
+ DepreciationDaysBetween := DepreciationCalculation.DeprDays(DayAfterPrevious, Next, FiscalYear365Days);
+ if IsPeriodLengthWithinLimits(DepreciationDaysBetween, DepreciationBook) then
+ exit(DepreciationDaysBetween);
+ exit(GetDaysInFiscalYear(DepreciationBook));
+ end;
+
+ local procedure InitializeFiscalYearEndDate(DepreciationBook: Record "Depreciation Book"; ReferenceDate: Date; var EndFiscalYear: Date)
+ var
+ StartFiscalYear: Date;
+ DaysInFiscalYear: Integer;
+ FiscalYear365Days: Boolean;
+ begin
+ FiscalYear365Days := DepreciationBook."Fiscal Year 365 Days";
+ DaysInFiscalYear := GetDaysInFiscalYear(DepreciationBook);
+ StartFiscalYear := FADateCalculation.GetFiscalYear(DepreciationBook.Code, ReferenceDate);
+ EndFiscalYear := FADateCalculation.CalculateDate(DepreciationCalculation.Yesterday(StartFiscalYear, FiscalYear365Days), DaysInFiscalYear, FiscalYear365Days);
+ end;
+
+ local procedure UpdateToNextFiscalYearEndDate(DepreciationBook: Record "Depreciation Book"; var EndFiscalYear: Date)
+ var
+ DaysInFiscalYear: Integer;
+ FiscalYear365Days: Boolean;
+ begin
+ FiscalYear365Days := DepreciationBook."Fiscal Year 365 Days";
+ DaysInFiscalYear := GetDaysInFiscalYear(DepreciationBook);
+ EndFiscalYear := FADateCalculation.CalculateDate(EndFiscalYear, DaysInFiscalYear, FiscalYear365Days);
+ end;
+
+ local procedure GetDaysInFiscalYear(DepreciationBook: Record "Depreciation Book"): Integer
+ begin
+ if DepreciationBook."No. of Days in Fiscal Year" > 0 then
+ exit(DepreciationBook."No. of Days in Fiscal Year");
+ if DepreciationBook."Fiscal Year 365 Days" then
+ exit(365);
+ exit(360);
+ end;
+
+ local procedure ShouldNextProjectionDateBeCustomDepreciationDate(Previous: Date; Next: Date; DepreciationBook: Record "Depreciation Book"; FADepreciationBook: Record "FA Depreciation Book"): Boolean
+ begin
+ if not DepreciationBook."Use Custom 1 Depreciation" then
+ exit(false);
+ exit(PeriodIncludesDate(Previous, Next, FADepreciationBook."Depr. Ending Date (Custom 1)"));
+ end;
+
+ local procedure PeriodIncludesDate(PeriodStart: Date; PeriodEnd: Date; DateToCheck: Date): Boolean
+ begin
+ exit((PeriodStart < DateToCheck) and (PeriodEnd > DateToCheck));
+ end;
+
+ local procedure IsPeriodLengthWithinLimits(PeriodLength: Integer; DepreciationBook: Record "Depreciation Book"): Boolean
+ begin
+ exit((PeriodLength > MinPeriodLength()) and (PeriodLength <= GetDaysInFiscalYear(DepreciationBook)));
+ end;
+
+ local procedure MinPeriodLength(): Integer
+ begin
+ exit(5);
+ end;
+
+ local procedure InsertPostedEntries(FixedAssetNo: Code[20]; MinFAPostingDate: Date; FixedAssetDepreciationBookCode: Code[10]; var TempFixedAssetLedgerEntry: Record "FA Ledger Entry" temporary): Integer
var
FixedAssetLedgerEntry: Record "FA Ledger Entry";
+ BiggestEntryNo: Integer;
begin
+ BiggestEntryNo := 0;
if MinFAPostingDate = 0D then
- exit;
+ exit(BiggestEntryNo);
+ FixedAssetLedgerEntry.SetCurrentKey("FA No.", "Depreciation Book Code", "Posting Date");
+ FixedAssetLedgerEntry.SetAscending("Posting Date", true);
FixedAssetLedgerEntry.SetRange("FA No.", FixedAssetNo);
FixedAssetLedgerEntry.SetRange("Depreciation Book Code", FixedAssetDepreciationBookCode);
FixedAssetLedgerEntry.SetFilter("FA Posting Date", '>=%1', MinFAPostingDate);
if FixedAssetLedgerEntry.IsEmpty() then
- exit;
+ exit(BiggestEntryNo);
FixedAssetLedgerEntry.FindSet();
repeat
TempFixedAssetLedgerEntry.Copy(FixedAssetLedgerEntry);
Clear(TempFixedAssetLedgerEntry."Reason Code");
TempFixedAssetLedgerEntry.Insert();
+ if BiggestEntryNo < TempFixedAssetLedgerEntry."Entry No." then
+ BiggestEntryNo := TempFixedAssetLedgerEntry."Entry No.";
until FixedAssetLedgerEntry.Next() = 0;
+ exit(BiggestEntryNo);
end;
- trigger OnPreReport()
- var
- DepreciationBook: Record "Depreciation Book";
- begin
- DepreciationBook.Get(SelectedDepreciationBookCode);
- if (FirstDepreciationDate = 0D) or (SecondDepreciationDate = 0D) then
- Error(SpecifyStartingAndEndingDatesErr);
- if FirstDepreciationDate > SecondDepreciationDate then
- Error(SpecifyStartingAndEndingDatesErr);
- end;
-
- var
- ProjectionTok: Label 'PROJECTED', Locked = true;
- SelectedDepreciationBookCode: Code[10];
- FirstDepreciationDate, SecondDepreciationDate : Date;
- BookValue: Decimal;
- PeriodLength: Integer;
- DaysInFirstPeriod: Integer;
- IncludePostedFrom: Date;
- ProjectedDisposal: Boolean;
- UseAccountingPeriod: Boolean;
- ProjectedEntry: Boolean;
- FirstFixedAssetLedgerEntry: Boolean;
- SpecifyStartingAndEndingDatesErr: Label 'Please specify valid starting and ending dates.';
}
\ No newline at end of file
diff --git a/Apps/W1/ExcelReports/app/src/Financials/EXRTrialBalanceBudgetExcel.Report.al b/Apps/W1/ExcelReports/app/src/Financials/EXRTrialBalanceBudgetExcel.Report.al
index 96211067b5..3c1a0a948e 100644
--- a/Apps/W1/ExcelReports/app/src/Financials/EXRTrialBalanceBudgetExcel.Report.al
+++ b/Apps/W1/ExcelReports/app/src/Financials/EXRTrialBalanceBudgetExcel.Report.al
@@ -21,7 +21,7 @@ report 4406 "EXR Trial BalanceBudgetExcel"
dataset
{
- dataitem(TrialBalanceBudgetData; "G/L Account")
+ dataitem(GLAccounts; "G/L Account")
{
DataItemTableView = sorting("No.");
RequestFilterFields = "No.", "Account Type", "Date Filter", "Budget Filter";
@@ -34,59 +34,39 @@ report 4406 "EXR Trial BalanceBudgetExcel"
column(Indentation; Indentation) { IncludeCaption = true; }
column(IndentedAccountName; IndentedAccountName) { }
- dataitem(EXRTrialBalanceBuffer; "EXR Trial Balance Buffer")
- {
- DataItemLink = "G/L Account No." = field("No.");
- column(Account; "G/L Account No.") { IncludeCaption = true; }
- column(Dimension1Code; "Dimension 1 Code") { IncludeCaption = true; }
- column(Dimension2Code; "Dimension 2 Code") { IncludeCaption = true; }
- column(NetChange; "Net Change") { IncludeCaption = true; }
- column(Balance; Balance) { IncludeCaption = true; }
- column(NetBudget; "Budget (Net)") { IncludeCaption = true; }
- column(BalanceBudget; "Budget (Bal. at Date)") { IncludeCaption = true; }
- column(BudgetNetPct; "% of Budget Net") { IncludeCaption = true; }
- column(BudgetBalPct; "% of Budget Bal.") { IncludeCaption = true; }
- }
trigger OnAfterGetRecord()
- var
- TrialBalance: Codeunit "Trial Balance";
begin
- IndentedAccountName := PadStr('', TrialBalanceBudgetData.Indentation * 2, ' ') + TrialBalanceBudgetData.Name;
- TrialBalance.InsertBreakdownForGLAccount(TrialBalanceBudgetData, Dimension1Values, Dimension2Values, EXRTrialBalanceBuffer);
- end;
-
- trigger OnPreDataItem()
- var
- DimensionValue: Record "Dimension Value";
- begin
- DimensionValue.SetRange("Global Dimension No.", 1);
- if DimensionValue.FindSet() then
- repeat
- Dimension1Values.Add(DimensionValue.Code);
- until DimensionValue.Next() = 0;
- Dimension1Values.Add('');
- DimensionValue.SetRange("Global Dimension No.", 2);
- if DimensionValue.FindSet() then
- repeat
- Dimension2Values.Add(DimensionValue.Code);
- until DimensionValue.Next() = 0;
- Dimension2Values.Add('');
+ IndentedAccountName := PadStr('', GLAccounts.Indentation * 2, ' ') + GLAccounts.Name;
end;
}
dataitem(Dimension1; "Dimension Value")
{
- DataItemTableView = sorting("Code") where("Global Dimension No." = const(1));
+ DataItemTableView = sorting("Code");
+ UseTemporary = true;
column(Dim1Code; Dimension1."Code") { IncludeCaption = true; }
column(Dim1Name; Dimension1.Name) { IncludeCaption = true; }
}
dataitem(Dimension2; "Dimension Value")
{
- DataItemTableView = sorting("Code") where("Global Dimension No." = const(2));
+ DataItemTableView = sorting("Code");
+ UseTemporary = true;
column(Dim2Code; Dimension2."Code") { IncludeCaption = true; }
column(Dim2Name; Dimension2.Name) { IncludeCaption = true; }
}
+ dataitem(TrialBalanceBudgetData; "EXR Trial Balance Buffer")
+ {
+ column(Account; "G/L Account No.") { IncludeCaption = true; }
+ column(Dimension1Code; "Dimension 1 Code") { IncludeCaption = true; }
+ column(Dimension2Code; "Dimension 2 Code") { IncludeCaption = true; }
+ column(NetChange; "Net Change") { IncludeCaption = true; }
+ column(Balance; Balance) { IncludeCaption = true; }
+ column(NetBudget; "Budget (Net)") { IncludeCaption = true; }
+ column(BalanceBudget; "Budget (Bal. at Date)") { IncludeCaption = true; }
+ column(BudgetNetPct; "% of Budget Net") { IncludeCaption = true; }
+ column(BudgetBalPct; "% of Budget Bal.") { IncludeCaption = true; }
+ }
}
requestpage
{
@@ -113,15 +93,15 @@ report 4406 "EXR Trial BalanceBudgetExcel"
TrialBalancevsBudget = 'Trial Balance vs. Budget';
}
trigger OnPreReport()
+ var
+ TrialBalance: Codeunit "Trial Balance";
begin
TrialBalanceBudgetData.SecurityFiltering(SecurityFilter::Filtered);
CompanyInformation.Get();
+ TrialBalance.ConfigureTrialBalance(true, false);
+ TrialBalance.InsertTrialBalanceReportData(GLAccounts, Dimension1, Dimension2, TrialBalanceBudgetData);
end;
- var
- Dimension1Values: List of [Code[20]];
- Dimension2Values: List of [Code[20]];
-
protected var
CompanyInformation: Record "Company Information";
IndentedAccountName: Text;
diff --git a/Apps/W1/ExcelReports/app/src/Financials/EXRTrialBalanceExcel.Report.al b/Apps/W1/ExcelReports/app/src/Financials/EXRTrialBalanceExcel.Report.al
index 931cc28e11..cb5bfd9a08 100644
--- a/Apps/W1/ExcelReports/app/src/Financials/EXRTrialBalanceExcel.Report.al
+++ b/Apps/W1/ExcelReports/app/src/Financials/EXRTrialBalanceExcel.Report.al
@@ -22,7 +22,7 @@ report 4405 "EXR Trial Balance Excel"
dataset
{
- dataitem(TrialBalanceData; "G/L Account")
+ dataitem(GLAccounts; "G/L Account")
{
DataItemTableView = sorting("No.");
RequestFilterFields = "No.", "Account Type", "Date Filter", "Budget Filter";
@@ -35,67 +35,45 @@ report 4405 "EXR Trial Balance Excel"
column(Indentation; Indentation) { IncludeCaption = true; }
column(IndentedAccountName; IndentedAccountName) { }
- dataitem(EXRTrialBalanceBuffer; "EXR Trial Balance Buffer")
- {
- DataItemLink = "G/L Account No." = field("No.");
- column(Account; "G/L Account No.") { IncludeCaption = true; }
- column(Dimension1Code; "Dimension 1 Code") { IncludeCaption = true; }
- column(Dimension2Code; "Dimension 2 Code") { IncludeCaption = true; }
- column(NetChange; "Net Change") { IncludeCaption = true; }
- column(NetChangeDebit; "Net Change (Debit)") { IncludeCaption = true; }
- column(NetChangeCredit; "Net Change (Credit)") { IncludeCaption = true; }
- column(Balance; Balance) { IncludeCaption = true; }
- column(BalanceDebit; "Balance (Debit)") { IncludeCaption = true; }
- column(BalanceCredit; "Balance (Credit)") { IncludeCaption = true; }
- column(NetChangeACY; "Net Change (ACY)") { IncludeCaption = true; }
- column(NetChangeDebitACY; "Net Change (Debit) (ACY)") { IncludeCaption = true; }
- column(NetChangeCreditACY; "Net Change (Credit) (ACY)") { IncludeCaption = true; }
- column(BalanceACY; "Balance (ACY)") { IncludeCaption = true; }
- column(BalanceDebitACY; "Balance (Debit) (ACY)") { IncludeCaption = true; }
- column(BalanceCreditACY; "Balance (Credit) (ACY)") { IncludeCaption = true; }
- }
-
trigger OnAfterGetRecord()
- var
- TrialBalance: Codeunit "Trial Balance";
begin
- IndentedAccountName := PadStr('', TrialBalanceData.Indentation * 2, ' ') + TrialBalanceData.Name;
- TrialBalance.InsertBreakdownForGLAccount(TrialBalanceData, Dimension1Values, Dimension2Values, EXRTrialBalanceBuffer);
+ IndentedAccountName := PadStr('', GLAccounts.Indentation * 2, ' ') + GLAccounts.Name;
end;
-
- trigger OnPreDataItem()
- var
- DimensionValue: Record "Dimension Value";
- begin
- DimensionValue.SetRange("Global Dimension No.", 1);
- if DimensionValue.FindSet() then
- repeat
- Dimension1Values.Add(DimensionValue.Code);
- until DimensionValue.Next() = 0;
- Dimension1Values.Add('');
- DimensionValue.SetRange("Global Dimension No.", 2);
- if DimensionValue.FindSet() then
- repeat
- Dimension2Values.Add(DimensionValue.Code);
- until DimensionValue.Next() = 0;
- Dimension2Values.Add('');
- end;
-
}
dataitem(Dimension1; "Dimension Value")
{
- DataItemTableView = sorting("Code") where("Global Dimension No." = const(1));
+ DataItemTableView = sorting("Code");
+ UseTemporary = true;
column(Dim1Code; Dimension1."Code") { IncludeCaption = true; }
column(Dim1Name; Dimension1.Name) { IncludeCaption = true; }
}
dataitem(Dimension2; "Dimension Value")
{
- DataItemTableView = sorting("Code") where("Global Dimension No." = const(2));
+ DataItemTableView = sorting("Code");
+ UseTemporary = true;
column(Dim2Code; Dimension2."Code") { IncludeCaption = true; }
column(Dim2Name; Dimension2.Name) { IncludeCaption = true; }
}
+ dataitem(TrialBalanceData; "EXR Trial Balance Buffer")
+ {
+ column(Account; "G/L Account No.") { IncludeCaption = true; }
+ column(Dimension1Code; "Dimension 1 Code") { IncludeCaption = true; }
+ column(Dimension2Code; "Dimension 2 Code") { IncludeCaption = true; }
+ column(NetChange; "Net Change") { IncludeCaption = true; }
+ column(NetChangeDebit; "Net Change (Debit)") { IncludeCaption = true; }
+ column(NetChangeCredit; "Net Change (Credit)") { IncludeCaption = true; }
+ column(Balance; Balance) { IncludeCaption = true; }
+ column(BalanceDebit; "Balance (Debit)") { IncludeCaption = true; }
+ column(BalanceCredit; "Balance (Credit)") { IncludeCaption = true; }
+ column(NetChangeACY; "Net Change (ACY)") { IncludeCaption = true; }
+ column(NetChangeDebitACY; "Net Change (Debit) (ACY)") { IncludeCaption = true; }
+ column(NetChangeCreditACY; "Net Change (Credit) (ACY)") { IncludeCaption = true; }
+ column(BalanceACY; "Balance (ACY)") { IncludeCaption = true; }
+ column(BalanceDebitACY; "Balance (Debit) (ACY)") { IncludeCaption = true; }
+ column(BalanceCreditACY; "Balance (Credit) (ACY)") { IncludeCaption = true; }
+ }
}
requestpage
{
@@ -122,14 +100,15 @@ report 4405 "EXR Trial Balance Excel"
}
trigger OnPreReport()
+ var
+ TrialBalance: Codeunit "Trial Balance";
begin
TrialBalanceData.SecurityFiltering(SecurityFilter::Filtered);
CompanyInformation.Get();
+ TrialBalance.ConfigureTrialBalance(true, false);
+ TrialBalance.InsertTrialBalanceReportData(GLAccounts, Dimension1, Dimension2, TrialBalanceData);
end;
- var
- Dimension1Values: List of [Code[20]];
- Dimension2Values: List of [Code[20]];
protected var
CompanyInformation: Record "Company Information";
diff --git a/Apps/W1/ExcelReports/app/src/Financials/TrialBalance.Codeunit.al b/Apps/W1/ExcelReports/app/src/Financials/TrialBalance.Codeunit.al
index 807b3f1363..d1f05efd65 100644
--- a/Apps/W1/ExcelReports/app/src/Financials/TrialBalance.Codeunit.al
+++ b/Apps/W1/ExcelReports/app/src/Financials/TrialBalance.Codeunit.al
@@ -1,75 +1,165 @@
namespace Microsoft.Finance.ExcelReports;
using Microsoft.Finance.GeneralLedger.Account;
+using Microsoft.Finance.Consolidation;
+using Microsoft.Finance.Dimension;
codeunit 4410 "Trial Balance"
{
- internal procedure InsertBreakdownForGLAccount(var GLAccount: Record "G/L Account"; Dimension1Values: List of [Code[20]]; Dimension2Values: List of [Code[20]]; var EXRTrialBalanceBuffer: Record "EXR Trial Balance Buffer")
var
- i, j : Integer;
+ GlobalBreakdownByDimension: Boolean;
+ GlobalBreakdownByBusinessUnit: Boolean;
+ BlankLbl: Label '(BLANK)';
+
+ internal procedure ConfigureTrialBalance(BreakdownByDimension: Boolean; BreakdownByBusinessUnit: Boolean)
begin
- Clear(EXRTrialBalanceBuffer);
- EXRTrialBalanceBuffer.DeleteAll();
- for i := 1 to Dimension1Values.Count do
- for j := 1 to Dimension2Values.Count do
- InsertGLAccountTotalsForFilters(Dimension1Values.Get(i), Dimension2Values.Get(j), GLAccount, EXRTrialBalanceBuffer);
+ GlobalBreakdownByDimension := BreakdownByDimension;
+ GlobalBreakdownByBusinessUnit := BreakdownByBusinessUnit;
+ end;
+
+ internal procedure InsertTrialBalanceReportData(var GLAccount: Record "G/L Account"; var Dimension1Values: Record "Dimension Value" temporary; var Dimension2Values: Record "Dimension Value" temporary; var TrialBalanceData: Record "EXR Trial Balance Buffer")
+ var
+ DimensionValue: Record "Dimension Value";
+ BusinessUnitFilters, Dimension1Filters, Dimension2Filters : List of [Code[20]];
+ begin
+ if not GLAccount.FindSet() then
+ exit;
+
+ if GlobalBreakdownByDimension then begin
+ DimensionValue.SetRange("Global Dimension No.", 1);
+ InsertDimensionFiltersFromDimensionValues(DimensionValue, Dimension1Filters);
+ DimensionValue.SetRange("Global Dimension No.", 2);
+ InsertDimensionFiltersFromDimensionValues(DimensionValue, Dimension2Filters);
+ end;
+ if GlobalBreakdownByBusinessUnit then
+ InsertBusinessUnitFilters(BusinessUnitFilters);
+
+ Clear(TrialBalanceData);
+ TrialBalanceData.DeleteAll();
+ repeat
+ InsertBreakdownForGLAccount(GLAccount, Dimension1Filters, Dimension2Filters, BusinessUnitFilters, TrialBalanceData, Dimension1Values, Dimension2Values);
+ until GLAccount.Next() = 0;
end;
- internal procedure InsertBreakdownForGLAccount(var GLAccount: Record "G/L Account"; Dimension1Values: List of [Code[20]]; Dimension2Values: List of [Code[20]]; BusinessUnitCodes: List of [Code[20]]; var EXRTrialBalanceBuffer: Record "EXR Trial Balance Buffer")
+ local procedure InsertBusinessUnitFilters(var BusinessUnitFilters: List of [Code[20]])
+ var
+ BusinessUnit: Record "Business Unit";
+ begin
+ BusinessUnitFilters.Add('');
+ if not BusinessUnit.FindSet() then
+ exit;
+ repeat
+ BusinessUnitFilters.Add(BusinessUnit.Code);
+ until BusinessUnit.Next() = 0;
+ end;
+
+ local procedure InsertDimensionFiltersFromDimensionValues(var DimensionValue: Record "Dimension Value"; var DimensionFilters: List of [Code[20]])
+ begin
+ DimensionFilters.Add('');
+ if not DimensionValue.FindSet() then
+ exit;
+ repeat
+ DimensionFilters.Add(DimensionValue.Code);
+ until DimensionValue.Next() = 0;
+ end;
+
+ local procedure InsertBreakdownForGLAccount(var GLAccount: Record "G/L Account"; Dimension1Filters: List of [Code[20]]; Dimension2Filters: List of [Code[20]]; BusinessUnitCodeFilters: List of [Code[20]]; var TrialBalanceData: Record "EXR Trial Balance Buffer"; var Dimension1Values: Record "Dimension Value" temporary; var Dimension2Values: Record "Dimension Value" temporary)
var
i, j, k : Integer;
begin
- Clear(EXRTrialBalanceBuffer);
- EXRTrialBalanceBuffer.DeleteAll();
- for i := 1 to Dimension1Values.Count do
- for j := 1 to Dimension2Values.Count do
- for k := 1 to BusinessUnitCodes.Count do
- InsertGLAccountTotalsForFilters(Dimension1Values.Get(i), Dimension2Values.Get(j), BusinessUnitCodes.Get(k), GLAccount, EXRTrialBalanceBuffer);
+ if GlobalBreakdownByDimension then
+ for i := 1 to Dimension1Filters.Count do
+ for j := 1 to Dimension2Filters.Count do
+ if GlobalBreakdownByBusinessUnit then
+ for k := 1 to BusinessUnitCodeFilters.Count do
+ InsertGLAccountTotalsForFilters(Dimension1Filters.Get(i), Dimension2Filters.Get(j), BusinessUnitCodeFilters.Get(k), GLAccount, TrialBalanceData, Dimension1Values, Dimension2Values)
+ else
+ InsertGLAccountTotalsForFilters(Dimension1Filters.Get(i), Dimension2Filters.Get(j), GLAccount, TrialBalanceData, Dimension1Values, Dimension2Values)
+ else
+ if GlobalBreakdownByBusinessUnit then
+ for i := 1 to BusinessUnitCodeFilters.Count do
+ InsertGLAccountTotalsForFilters(BusinessUnitCodeFilters.Get(i), GLAccount, TrialBalanceData)
+ else
+ InsertGLAccountTotalsForFilters(GLAccount, TrialBalanceData);
end;
- local procedure InsertGLAccountTotalsForFilters(Dimension1ValueCode: Code[20]; Dimension2ValueCode: Code[20]; var GLAccount: Record "G/L Account"; var EXRTrialBalanceBuffer: Record "EXR Trial Balance Buffer")
+ local procedure InsertGLAccountTotalsForFilters(var GLAccount: Record "G/L Account"; var TrialBalanceData: Record "EXR Trial Balance Buffer")
var
- LocalGlAccount: Record "G/L Account";
+ TempDimension1Values: Record "Dimension Value" temporary;
+ TempDimension2Values: Record "Dimension Value" temporary;
begin
- LocalGlAccount.Copy(GLAccount);
- SetGLAccountFilters(LocalGlAccount, Dimension1ValueCode, Dimension2ValueCode);
- InsertTrialBalanceDataForGLAccountWithFilters(LocalGlAccount, EXRTrialBalanceBuffer);
+ InsertGLAccountTotalsForFilters('', '', '', GLAccount, TrialBalanceData, TempDimension1Values, TempDimension2Values);
end;
- local procedure InsertGLAccountTotalsForFilters(Dimension1ValueCode: Code[20]; Dimension2ValueCode: Code[20]; BusinessUnitCode: Code[20]; var GLAccount: Record "G/L Account"; var EXRTrialBalanceBuffer: Record "EXR Trial Balance Buffer")
+ local procedure InsertGLAccountTotalsForFilters(BusinessUnitCode: Code[20]; var GLAccount: Record "G/L Account"; var TrialBalanceData: Record "EXR Trial Balance Buffer")
var
- LocalGlAccount: Record "G/L Account";
+ TempDimension1Values: Record "Dimension Value" temporary;
+ TempDimension2Values: Record "Dimension Value" temporary;
begin
- LocalGlAccount.Copy(GLAccount);
- SetGLAccountFilters(LocalGLAccount, Dimension1ValueCode, Dimension2ValueCode, BusinessUnitCode);
- InsertTrialBalanceDataForGLAccountWithFilters(LocalGlAccount, EXRTrialBalanceBuffer);
+ InsertGLAccountTotalsForFilters('', '', BusinessUnitCode, GLAccount, TrialBalanceData, TempDimension1Values, TempDimension2Values);
end;
- local procedure SetGLAccountFilters(var GLAccount: Record "G/L Account"; Dimension1ValueCode: Code[20]; Dimension2ValueCode: Code[20])
+ local procedure InsertGLAccountTotalsForFilters(Dimension1ValueCode: Code[20]; Dimension2ValueCode: Code[20]; var GLAccount: Record "G/L Account"; var TrialBalanceData: Record "EXR Trial Balance Buffer"; var Dimension1Values: Record "Dimension Value" temporary; var Dimension2Values: Record "Dimension Value" temporary)
begin
- GLAccount.SetFilter("Global Dimension 1 Filter", Dimension1ValueCode);
- GLAccount.SetFilter("Global Dimension 2 Filter", Dimension2ValueCode);
+ InsertGLAccountTotalsForFilters(Dimension1ValueCode, Dimension2ValueCode, '', GLAccount, TrialBalanceData, Dimension1Values, Dimension2Values);
end;
- local procedure SetGLAccountFilters(var GLAccount: Record "G/L Account"; Dimension1ValueCode: Code[20]; Dimension2ValueCode: Code[20]; BusinessUnitCode: Code[20])
+ local procedure InsertGLAccountTotalsForFilters(Dimension1ValueCode: Code[20]; Dimension2ValueCode: Code[20]; BusinessUnitCode: Code[20]; var GLAccount: Record "G/L Account"; var TrialBalanceData: Record "EXR Trial Balance Buffer"; var Dimension1Values: Record "Dimension Value" temporary; var Dimension2Values: Record "Dimension Value" temporary)
+ var
+ LocalGlAccount: Record "G/L Account";
begin
- SetGLAccountFilters(GLAccount, Dimension1ValueCode, Dimension2ValueCode);
- GLAccount.SetFilter("Business Unit Filter", BusinessUnitCode);
+ LocalGlAccount.Copy(GLAccount);
+ if GlobalBreakdownByDimension then begin
+ GLAccount.SetFilter("Global Dimension 1 Filter", Dimension1ValueCode);
+ GLAccount.SetFilter("Global Dimension 2 Filter", Dimension2ValueCode);
+ end;
+ if GlobalBreakdownByBusinessUnit then
+ GLAccount.SetFilter("Business Unit Filter", BusinessUnitCode);
+ InsertTrialBalanceDataForGLAccountWithFilters(LocalGlAccount, TrialBalanceData, Dimension1Values, Dimension2Values);
end;
- local procedure InsertTrialBalanceDataForGLAccountWithFilters(var GLAccount: Record "G/L Account"; var EXRTrialBalanceBuffer: Record "EXR Trial Balance Buffer")
+ local procedure InsertTrialBalanceDataForGLAccountWithFilters(var GLAccount: Record "G/L Account"; var TrialBalanceData: Record "EXR Trial Balance Buffer"; var Dimension1Values: Record "Dimension Value" temporary; var Dimension2Values: Record "Dimension Value" temporary)
begin
GlAccount.CalcFields("Net Change", "Balance at Date", "Additional-Currency Net Change", "Add.-Currency Balance at Date", "Budgeted Amount", "Budget at Date");
- EXRTrialBalanceBuffer."G/L Account No." := GlAccount."No.";
- EXRTrialBalanceBuffer."Dimension 1 Code" := CopyStr(GLAccount.GetFilter("Global Dimension 1 Filter"), 1, MaxStrLen(EXRTrialBalanceBuffer."Dimension 1 Code"));
- EXRTrialBalanceBuffer."Dimension 2 Code" := CopyStr(GLAccount.GetFilter("Global Dimension 2 Filter"), 1, MaxStrLen(EXRTrialBalanceBuffer."Dimension 2 Code"));
- EXRTrialBalanceBuffer."Business Unit Code" := CopyStr(GLAccount.GetFilter("Business Unit Filter"), 1, MaxStrLen(EXRTrialBalanceBuffer."Business Unit Code"));
- EXRTrialBalanceBuffer.Validate("Net Change", GLAccount."Net Change");
- EXRTrialBalanceBuffer.Validate(Balance, GLAccount."Balance at Date");
- EXRTrialBalanceBuffer.Validate("Net Change (ACY)", GLAccount."Additional-Currency Net Change");
- EXRTrialBalanceBuffer.Validate("Balance (ACY)", GLAccount."Add.-Currency Balance at Date");
- EXRTrialBalanceBuffer.Validate("Budget (Net)", GLAccount."Budgeted Amount");
- EXRTrialBalanceBuffer.Validate("Budget (Bal. at Date)", GLAccount."Budget at Date");
- EXRTrialBalanceBuffer.CalculateBudgetComparisons();
- EXRTrialBalanceBuffer.Insert(true);
+ TrialBalanceData."G/L Account No." := GlAccount."No.";
+ TrialBalanceData."Dimension 1 Code" := CopyStr(GLAccount.GetFilter("Global Dimension 1 Filter"), 1, MaxStrLen(TrialBalanceData."Dimension 1 Code"));
+ TrialBalanceData."Dimension 2 Code" := CopyStr(GLAccount.GetFilter("Global Dimension 2 Filter"), 1, MaxStrLen(TrialBalanceData."Dimension 2 Code"));
+ TrialBalanceData."Business Unit Code" := CopyStr(GLAccount.GetFilter("Business Unit Filter"), 1, MaxStrLen(TrialBalanceData."Business Unit Code"));
+ TrialBalanceData.Validate("Net Change", GLAccount."Net Change");
+ TrialBalanceData.Validate(Balance, GLAccount."Balance at Date");
+ TrialBalanceData.Validate("Net Change (ACY)", GLAccount."Additional-Currency Net Change");
+ TrialBalanceData.Validate("Balance (ACY)", GLAccount."Add.-Currency Balance at Date");
+ TrialBalanceData.Validate("Budget (Net)", GLAccount."Budgeted Amount");
+ TrialBalanceData.Validate("Budget (Bal. at Date)", GLAccount."Budget at Date");
+ TrialBalanceData.CalculateBudgetComparisons();
+ TrialBalanceData.CheckAllZero();
+ if not TrialBalanceData."All Zero" then begin
+ TrialBalanceData.Insert(true);
+ if GlobalBreakdownByDimension then begin
+ InsertUsedDimensionValue(1, TrialBalanceData."Dimension 1 Code", Dimension1Values);
+ InsertUsedDimensionValue(2, TrialBalanceData."Dimension 2 Code", Dimension2Values);
+ end;
+ end;
+ end;
+
+ local procedure InsertUsedDimensionValue(GlobalDimensionNo: Integer; DimensionCode: Code[20]; var InsertedDimensionValues: Record "Dimension Value" temporary)
+ var
+ DimensionValue: Record "Dimension Value";
+ begin
+ Clear(InsertedDimensionValues);
+ if DimensionCode <> '' then
+ InsertedDimensionValues.SetRange("Global Dimension No.", GlobalDimensionNo);
+ InsertedDimensionValues.SetRange(Code, DimensionCode);
+ if not InsertedDimensionValues.IsEmpty() then
+ exit;
+ if DimensionCode = '' then begin
+ InsertedDimensionValues."Dimension Code" := DimensionCode;
+ InsertedDimensionValues.Name := BlankLbl;
+ InsertedDimensionValues.Insert();
+ exit;
+ end;
+ DimensionValue.CopyFilters(InsertedDimensionValues);
+ DimensionValue.FindFirst();
+ InsertedDimensionValues.Copy(DimensionValue);
+ InsertedDimensionValues.Insert();
end;
}
\ No newline at end of file
diff --git a/Apps/W1/ExcelReports/app/src/RoleCenters/EXRAccountantRoleCenter.PageExt.al b/Apps/W1/ExcelReports/app/src/RoleCenters/EXRAccountantRoleCenter.PageExt.al
index 6e9d923ec4..9a732e268e 100644
--- a/Apps/W1/ExcelReports/app/src/RoleCenters/EXRAccountantRoleCenter.PageExt.al
+++ b/Apps/W1/ExcelReports/app/src/RoleCenters/EXRAccountantRoleCenter.PageExt.al
@@ -80,6 +80,38 @@ pageextension 4401 "EXR Accountant Role Center" extends "Accountant Role Center"
RunObject = report "EXR Aged Acc Payable Excel";
ToolTip = 'Open a spreadsheet that shows the Aged Accounts Payable data.';
}
+ action(EXRConsolidatedTrialBalance)
+ {
+ ApplicationArea = Basic, Suite;
+ Caption = 'Consolidated Trial Balance Excel (Preview)';
+ Image = "Report";
+ RunObject = report "EXR Consolidated Trial Balance";
+ ToolTip = 'Open an Excel workbook that shows the G/L entries totals in the different business units.';
+ }
+ action(EXRFixedAssetAnalysisExcel)
+ {
+ ApplicationArea = Basic, Suite;
+ Caption = 'Fixed Asset Analysis Excel (Preview)';
+ Image = "Report";
+ RunObject = report "EXR Fixed Asset Analysis Excel";
+ ToolTip = 'Open an Excel workbook that shows a comparison of fixed asset values across a date range.';
+ }
+ action(EXRFixedAssetDetailsExcel)
+ {
+ ApplicationArea = Basic, Suite;
+ Caption = 'Fixed Asset Details Excel (Preview)';
+ Image = "Report";
+ RunObject = report "EXR Fixed Asset Details Excel";
+ ToolTip = 'Open an Excel workbook that shows fixed asset ledger entries.';
+ }
+ action(EXRFixedAssetProjected)
+ {
+ ApplicationArea = Basic, Suite;
+ Caption = 'Fixed Asset Projected Value Excel (Preview)';
+ Image = "Report";
+ RunObject = report "EXR Fixed Asset Projected";
+ ToolTip = 'Open an Excel workbook that shows posted fixed asset ledger entries and projected fixed asset ledger entries.';
+ }
}
}
}
\ No newline at end of file
diff --git a/Apps/W1/ExcelReports/app/src/RoleCenters/EXRFinRoleCenter.PageExt.al b/Apps/W1/ExcelReports/app/src/RoleCenters/EXRFinRoleCenter.PageExt.al
index 8a02dec755..a7ca922889 100644
--- a/Apps/W1/ExcelReports/app/src/RoleCenters/EXRFinRoleCenter.PageExt.al
+++ b/Apps/W1/ExcelReports/app/src/RoleCenters/EXRFinRoleCenter.PageExt.al
@@ -72,6 +72,38 @@ pageextension 4406 EXRFinRoleCenter extends "Finance Manager Role Center"
RunObject = report "EXR Aged Acc Payable Excel";
ToolTip = 'Open a spreadsheet that shows the Aged Accounts Payable data.';
}
+ action(EXRConsolidatedTrialBalance)
+ {
+ ApplicationArea = Basic, Suite;
+ Caption = 'Consolidated Trial Balance Excel (Preview)';
+ Image = "Report";
+ RunObject = report "EXR Consolidated Trial Balance";
+ ToolTip = 'Open an Excel workbook that shows the G/L entries totals in the different business units.';
+ }
+ action(EXRFixedAssetAnalysisExcel)
+ {
+ ApplicationArea = Basic, Suite;
+ Caption = 'Fixed Asset Analysis Excel (Preview)';
+ Image = "Report";
+ RunObject = report "EXR Fixed Asset Analysis Excel";
+ ToolTip = 'Open an Excel workbook that shows a comparison of fixed asset values across a date range.';
+ }
+ action(EXRFixedAssetDetailsExcel)
+ {
+ ApplicationArea = Basic, Suite;
+ Caption = 'Fixed Asset Details Excel (Preview)';
+ Image = "Report";
+ RunObject = report "EXR Fixed Asset Details Excel";
+ ToolTip = 'Open an Excel workbook that shows fixed asset ledger entries.';
+ }
+ action(EXRFixedAssetProjected)
+ {
+ ApplicationArea = Basic, Suite;
+ Caption = 'Fixed Asset Projected Value Excel (Preview)';
+ Image = "Report";
+ RunObject = report "EXR Fixed Asset Projected";
+ ToolTip = 'Open an Excel workbook that shows posted fixed asset ledger entries and projected fixed asset ledger entries.';
+ }
}
}
}
diff --git a/Apps/W1/ExcelReports/app/src/Vendor/EXRVendorTopList.Report.al b/Apps/W1/ExcelReports/app/src/Vendor/EXRVendorTopList.Report.al
index 1dda3fb95d..62dd7ee09a 100644
--- a/Apps/W1/ExcelReports/app/src/Vendor/EXRVendorTopList.Report.al
+++ b/Apps/W1/ExcelReports/app/src/Vendor/EXRVendorTopList.Report.al
@@ -140,7 +140,7 @@ report 4404 "EXR Vendor Top List"
if EXTTopVendorPurchase.Read() then
repeat
InsertAggregatedPurchases(EXTTopVendorPurchase.Vendor_No, EXTTopVendorPurchase.Sum_Purch_LCY);
- VendorFilter += EXTTopVendorPurchase.Vendor_No + '|';
+ VendorFilter += EscapeVendorNoFilter(EXTTopVendorPurchase.Vendor_No) + '|';
until (not EXTTopVendorPurchase.Read());
exit(VendorFilter.TrimEnd('|'));
@@ -157,12 +157,17 @@ report 4404 "EXR Vendor Top List"
if EXTTopVendorBalance.Read() then
repeat
InsertAggregatedPurchases(EXTTopVendorBalance.Vendor_No, EXTTopVendorBalance.Balance_LCY);
- VendorFilter += EXTTopVendorBalance.Vendor_No + '|';
+ VendorFilter += EscapeVendorNoFilter(EXTTopVendorBalance.Vendor_No) + '|';
until (not EXTTopVendorBalance.Read());
exit(VendorFilter.TrimEnd('|'));
end;
+ local procedure EscapeVendorNoFilter(VendorNo: Code[20]): Text
+ begin
+ exit('''' + VendorNo + '''');
+ end;
+
local procedure ChangeShowType(NewShowType: Option)
begin
GlobalExtTopVendorReportBuffer."Ranking Based On" := NewShowType;
@@ -179,7 +184,7 @@ report 4404 "EXR Vendor Top List"
EXTTopVendorPurchase.Open();
if EXTTopVendorPurchase.Read() then
repeat
- TopVendorData.SetFilter(TopVendorData."Vendor No.", EXTTopVendorPurchase.Vendor_No);
+ TopVendorData.SetFilter(TopVendorData."Vendor No.", EscapeVendorNoFilter(EXTTopVendorPurchase.Vendor_No));
if TopVendorData.FindFirst() then begin
TopVendorData."Amount 2 (LCY)" := EXTTopVendorPurchase.Sum_Purch_LCY;
if Vendor.Get(TopVendorData."Vendor No.") then
diff --git a/Apps/W1/FieldServiceIntegration/app/.objidconfig b/Apps/W1/FieldServiceIntegration/app/.objidconfig
deleted file mode 100644
index 692e082f09..0000000000
--- a/Apps/W1/FieldServiceIntegration/app/.objidconfig
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "appPoolId": "0ef705b60e6900f11232505938e0e8a87867b9eac95b5a0d58dd87d6cbb44014"
-}
\ No newline at end of file
diff --git a/Apps/W1/FieldServiceIntegration/app/app.json b/Apps/W1/FieldServiceIntegration/app/app.json
deleted file mode 100644
index 3b530945a2..0000000000
--- a/Apps/W1/FieldServiceIntegration/app/app.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "id": "1ba1031e-eae9-4f20-b9d2-d19b6d1e3f29",
- "name": "Field Service Integration",
- "publisher": "Microsoft",
- "version": "25.0.0.0",
- "brief": "Field Service Integration",
- "description": "Field Service Integration",
- "privacyStatement": "https://go.microsoft.com/fwlink/?LinkId=724009",
- "EULA": "https://go.microsoft.com/fwlink/?linkid=2182906",
- "help": "https://go.microsoft.com/fwlink/?linkid=2206519",
- "contextSensitiveHelpUrl": "https://learn.microsoft.com/dynamics365/business-central/",
- "url": "https://go.microsoft.com/fwlink/?LinkId=724011",
- "logo": "ExtensionLogo.png",
- "dependencies": [
-
- ],
- "internalsVisibleTo": [
- {
- "id": "41b3ab6e-3f20-47c7-a67f-feccc4d58a55",
- "name": "Field Service Integration Test Library",
- "publisher": "Microsoft"
- }
- ],
- "screenshots": [
-
- ],
- "platform": "25.0.0.0",
- "idRanges": [
- {
- "from": 6610,
- "to": 6640
- }
- ],
- "target": "OnPrem",
- "resourceExposurePolicy": {
- "allowDebugging": true,
- "allowDownloadingSource": true,
- "includeSourceInSymbolFile": true
- },
- "application": "25.0.0.0",
- "features": [
- "NoImplicitWith",
- "TranslationFile"
- ]
-}
\ No newline at end of file
diff --git a/Apps/W1/FieldServiceIntegration/app/src/Codeunits/FSAssistedSetupSubscriber.Codeunit.al b/Apps/W1/FieldServiceIntegration/app/src/Codeunits/FSAssistedSetupSubscriber.Codeunit.al
deleted file mode 100644
index 1e06de493d..0000000000
--- a/Apps/W1/FieldServiceIntegration/app/src/Codeunits/FSAssistedSetupSubscriber.Codeunit.al
+++ /dev/null
@@ -1,50 +0,0 @@
-// ------------------------------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License. See License.txt in the project root for license information.
-// ------------------------------------------------------------------------------------------------
-namespace Microsoft.Integration.DynamicsFieldService;
-
-using System.Environment.Configuration;
-using System.Globalization;
-using System.Media;
-using Microsoft.Integration.D365Sales;
-
-codeunit 6613 "FS Assisted Setup Subscriber"
-{
- var
- CRMConnectionSetupTitleTxt: Label 'Set up a connection to %1', Comment = '%1 = CRM product name';
- CRMConnectionSetupShortTitleTxt: Label 'Connect to %1', Comment = '%1 = CRM product name', MaxLength = 32;
- FSConnectionSetupHelpTxt: Label 'https://go.microsoft.com/fwlink/?linkid=2270903', Locked = true;
- CRMConnectionSetupDescriptionTxt: Label 'Connect your Dynamics 365 services for better insights. Data is exchanged between the apps for better productivity.';
-
- [EventSubscriber(ObjectType::Codeunit, Codeunit::"Guided Experience", 'OnRegisterAssistedSetup', '', false, false)]
- local procedure RegisterFSAssistedSetup()
- var
- ApplicationAreaMgmtFacade: Codeunit "Application Area Mgmt. Facade";
- begin
- if not ApplicationAreaMgmtFacade.IsBasicOnlyEnabled() then
- RegisterAssistedSetup();
- end;
-
- internal procedure RegisterAssistedSetup()
- var
- GuidedExperience: Codeunit "Guided Experience";
- Language: Codeunit Language;
- CRMProductName: Codeunit "CRM Product Name";
- AssistedSetupGroup: Enum "Assisted Setup Group";
- VideoCategory: Enum "Video Category";
- GuidedExperienceType: Enum "Guided Experience Type";
- CurrentGlobalLanguage: Integer;
- begin
- CurrentGlobalLanguage := GlobalLanguage;
- if not GuidedExperience.Exists(GuidedExperienceType::"Assisted Setup", ObjectType::Page, Page::"FS Connection Setup Wizard") then begin
- GuidedExperience.InsertAssistedSetup(StrSubstNo(CRMConnectionSetupTitleTxt, CRMProductName.FSServiceName()),
- StrSubstNo(CRMConnectionSetupShortTitleTxt, CRMProductName.FSServiceName()), CRMConnectionSetupDescriptionTxt, 10, ObjectType::Page,
- Page::"FS Connection Setup Wizard", AssistedSetupGroup::Connect, '', VideoCategory::Connect, FSConnectionSetupHelpTxt);
- GlobalLanguage(Language.GetDefaultApplicationLanguageId());
- GuidedExperience.AddTranslationForSetupObjectTitle(GuidedExperienceType::"Assisted Setup", ObjectType::Page,
- Page::"FS Connection Setup Wizard", Language.GetDefaultApplicationLanguageId(), StrSubstNo(CRMConnectionSetupTitleTxt, CRMProductName.FSServiceName()));
- GlobalLanguage(CurrentGlobalLanguage);
- end;
- end;
-}
\ No newline at end of file
diff --git a/Apps/W1/FieldServiceIntegration/app/src/Codeunits/FSDataClassification.Codeunit.al b/Apps/W1/FieldServiceIntegration/app/src/Codeunits/FSDataClassification.Codeunit.al
deleted file mode 100644
index 8b333e2c78..0000000000
--- a/Apps/W1/FieldServiceIntegration/app/src/Codeunits/FSDataClassification.Codeunit.al
+++ /dev/null
@@ -1,39 +0,0 @@
-// ------------------------------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License. See License.txt in the project root for license information.
-// ------------------------------------------------------------------------------------------------
-namespace Microsoft.Integration.DynamicsFieldService;
-
-using Microsoft.Utilities;
-using System.Privacy;
-
-codeunit 6614 "FS Data Classification"
-{
- [EventSubscriber(ObjectType::Codeunit, Codeunit::"Data Classification Eval. Data", 'OnCreateEvaluationDataOnAfterClassifyTablesToNormal', '', false, false)]
- local procedure OnClassifyTables()
- begin
- ClassifyTables();
- end;
-
-
- local procedure ClassifyTables()
- var
- DataClassificationMgt: Codeunit "Data Classification Mgt.";
- begin
- DataClassificationMgt.SetTableFieldsToNormal(Database::"FS Connection Setup");
- DataClassificationMgt.SetTableFieldsToNormal(Database::"FS Bookable Resource");
- DataClassificationMgt.SetTableFieldsToNormal(Database::"FS Bookable Resource Booking");
- DataClassificationMgt.SetTableFieldsToNormal(Database::"FS BookableResourceBookingHdr");
- DataClassificationMgt.SetTableFieldsToNormal(Database::"FS Customer Asset");
- DataClassificationMgt.SetTableFieldsToNormal(Database::"FS Customer Asset Category");
- DataClassificationMgt.SetTableFieldsToNormal(Database::"FS Project Task");
- DataClassificationMgt.SetTableFieldsToNormal(Database::"FS Resource Pay Type");
- DataClassificationMgt.SetTableFieldsToNormal(Database::"FS Warehouse");
- DataClassificationMgt.SetTableFieldsToNormal(Database::"FS Work Order");
- DataClassificationMgt.SetTableFieldsToNormal(Database::"FS Work Order Product");
- DataClassificationMgt.SetTableFieldsToNormal(Database::"FS Work Order Service");
- DataClassificationMgt.SetTableFieldsToNormal(Database::"FS Work Order Incident");
- DataClassificationMgt.SetTableFieldsToNormal(Database::"FS Work Order Substatus");
- DataClassificationMgt.SetTableFieldsToNormal(Database::"FS Work Order Type");
- end;
-}
\ No newline at end of file
diff --git a/Apps/W1/FieldServiceIntegration/app/src/Codeunits/FSInstall.Codeunit.al b/Apps/W1/FieldServiceIntegration/app/src/Codeunits/FSInstall.Codeunit.al
deleted file mode 100644
index dad4a55041..0000000000
--- a/Apps/W1/FieldServiceIntegration/app/src/Codeunits/FSInstall.Codeunit.al
+++ /dev/null
@@ -1,131 +0,0 @@
-// ------------------------------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License. See License.txt in the project root for license information.
-// ------------------------------------------------------------------------------------------------
-namespace Microsoft.Integration.DynamicsFieldService;
-
-using System.Upgrade;
-using Microsoft.Integration.SyncEngine;
-using System.Environment.Configuration;
-
-codeunit 6616 "FS Install"
-{
- Subtype = Install;
-
- trigger OnInstallAppPerCompany()
- begin
- UpgradeConnectionSetup();
- UpgradeIntegrationTableMappings();
- UpgradeAssistedSetup();
- end;
-
- local procedure UpgradeConnectionSetup()
- var
- FSConnectionSetupOld: Record Microsoft.Integration.FieldService."FS Connection Setup";
- FSConnectionSetupNew: Record "FS Connection Setup";
- UpgradeTag: Codeunit "Upgrade Tag";
- begin
- if UpgradeTag.HasUpgradeTag(GetConnectionSetupUpgradeTag()) then
- exit;
-
- if FSConnectionSetupOld.FindFirst() then begin
- FSConnectionSetupNew.Init();
- FSConnectionSetupNew.TransferFields(FSConnectionSetupOld);
- FSConnectionSetupNew.Insert();
- FSConnectionSetupOld."Is Enabled" := false;
- FSConnectionSetupOld.Modify();
- end;
-
- UpgradeTag.SetUpgradeTag(GetConnectionSetupUpgradeTag());
- end;
-
- local procedure UpgradeIntegrationTableMappings()
- var
- IntegrationTableMapping: Record "Integration Table Mapping";
- UpgradeTag: Codeunit "Upgrade Tag";
- begin
- if UpgradeTag.HasUpgradeTag(GetIntegrationTableMappingsUpgradeTag()) then
- exit;
-
- IntegrationTableMapping.SetRange("Integration Table ID", Database::Microsoft.Integration.FieldService."FS Bookable Resource");
- IntegrationTableMapping.ModifyAll("Integration Table ID", Database::"FS Bookable Resource");
-
- IntegrationTableMapping.SetRange("Integration Table ID", Database::Microsoft.Integration.FieldService."FS Bookable Resource Booking");
- IntegrationTableMapping.ModifyAll("Integration Table ID", Database::"FS Bookable Resource Booking");
-
- IntegrationTableMapping.SetRange("Integration Table ID", Database::Microsoft.Integration.FieldService."FS BookableResourceBookingHdr");
- IntegrationTableMapping.ModifyAll("Integration Table ID", Database::"FS BookableResourceBookingHdr");
-
- IntegrationTableMapping.SetRange("Integration Table ID", Database::Microsoft.Integration.FieldService."FS Customer Asset");
- IntegrationTableMapping.ModifyAll("Integration Table ID", Database::"FS Customer Asset");
-
- IntegrationTableMapping.SetRange("Integration Table ID", Database::Microsoft.Integration.FieldService."FS Customer Asset Category");
- IntegrationTableMapping.ModifyAll("Integration Table ID", Database::"FS Customer Asset Category");
-
- IntegrationTableMapping.SetRange("Integration Table ID", Database::Microsoft.Integration.FieldService."FS Project Task");
- IntegrationTableMapping.ModifyAll("Integration Table ID", Database::"FS Project Task");
-
- IntegrationTableMapping.SetRange("Integration Table ID", Database::Microsoft.Integration.FieldService."FS Resource Pay Type");
- IntegrationTableMapping.ModifyAll("Integration Table ID", Database::"FS Resource Pay Type");
-
- IntegrationTableMapping.SetRange("Integration Table ID", Database::Microsoft.Integration.FieldService."FS Work Order");
- IntegrationTableMapping.ModifyAll("Integration Table ID", Database::"FS Work Order");
-
- IntegrationTableMapping.SetRange("Integration Table ID", Database::Microsoft.Integration.FieldService."FS Work Order Incident");
- IntegrationTableMapping.ModifyAll("Integration Table ID", Database::"FS Work Order Incident");
-
- IntegrationTableMapping.SetRange("Integration Table ID", Database::Microsoft.Integration.FieldService."FS Work Order Product");
- IntegrationTableMapping.ModifyAll("Integration Table ID", Database::"FS Work Order Product");
-
- IntegrationTableMapping.SetRange("Integration Table ID", Database::Microsoft.Integration.FieldService."FS Work Order Service");
- IntegrationTableMapping.ModifyAll("Integration Table ID", Database::"FS Work Order Service");
-
- IntegrationTableMapping.SetRange("Integration Table ID", Database::Microsoft.Integration.FieldService."FS Work Order Substatus");
- IntegrationTableMapping.ModifyAll("Integration Table ID", Database::"FS Work Order Substatus");
-
- IntegrationTableMapping.SetRange("Integration Table ID", Database::Microsoft.Integration.FieldService."FS Work Order Type");
- IntegrationTableMapping.ModifyAll("Integration Table ID", Database::"FS Work Order Type");
-
- UpgradeTag.SetUpgradeTag(GetIntegrationTableMappingsUpgradeTag());
- end;
-
- local procedure UpgradeAssistedSetup()
- var
- GuidedExperience: Codeunit "Guided Experience";
- UpgradeTag: Codeunit "Upgrade Tag";
- begin
- if UpgradeTag.HasUpgradeTag(GetAssistedSetupUpgradeTag()) then
- exit;
-
-#if not CLEAN25
- GuidedExperience.Remove("Guided Experience Type"::"Assisted Setup", ObjectType::Page, Page::Microsoft.Integration.FieldService."FS Connection Setup Wizard");
-#else
- GuidedExperience.Remove("Guided Experience Type"::"Assisted Setup", ObjectType::Page, 6421); // 6421 is the ID of the FS Connection Setup Wizard page in Base Application
-#endif
-
- UpgradeTag.SetUpgradeTag(GetAssistedSetupUpgradeTag());
- end;
-
- local procedure GetConnectionSetupUpgradeTag(): Code[250]
- begin
- exit('MS-527221-ConnectionSetupUpgradeTag-20240510');
- end;
-
- local procedure GetIntegrationTableMappingsUpgradeTag(): Code[250]
- begin
- exit('MS-527221-IntegrationTableMappingsUpgradeTag-20240510');
- end;
-
- local procedure GetAssistedSetupUpgradeTag(): Code[250]
- begin
- exit('MS-527221-AssistedSetupUpgradeTag-20240510');
- end;
-
- [EventSubscriber(ObjectType::Codeunit, Codeunit::"Upgrade Tag", 'OnGetPerCompanyUpgradeTags', '', false, false)]
- local procedure RegisterPerCompanyTags(var PerCompanyUpgradeTags: List of [Code[250]])
- begin
- PerCompanyUpgradeTags.Add(GetConnectionSetupUpgradeTag());
- PerCompanyUpgradeTags.Add(GetIntegrationTableMappingsUpgradeTag());
- PerCompanyUpgradeTags.Add(GetAssistedSetupUpgradeTag());
- end;
-}
\ No newline at end of file
diff --git a/Apps/W1/FieldServiceIntegration/app/src/Codeunits/FSIntTableSubscriber.Codeunit.al b/Apps/W1/FieldServiceIntegration/app/src/Codeunits/FSIntTableSubscriber.Codeunit.al
deleted file mode 100644
index 7ec11ca2a4..0000000000
--- a/Apps/W1/FieldServiceIntegration/app/src/Codeunits/FSIntTableSubscriber.Codeunit.al
+++ /dev/null
@@ -1,1200 +0,0 @@
-// ------------------------------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License. See License.txt in the project root for license information.
-// ------------------------------------------------------------------------------------------------
-namespace Microsoft.Integration.DynamicsFieldService;
-
-using Microsoft.Integration.Dataverse;
-using Microsoft.Projects.Project.Job;
-using Microsoft.Foundation.NoSeries;
-using Microsoft.Projects.Project.Setup;
-using Microsoft.Integration.SyncEngine;
-using Microsoft.Sales.Customer;
-using System.Telemetry;
-using Microsoft.Projects.Project.Posting;
-using Microsoft.Projects.Project.Journal;
-using Microsoft.Projects.Resources.Resource;
-using Microsoft.Integration.D365Sales;
-using Microsoft.Inventory.Item;
-using Microsoft.Projects.Project.Planning;
-using Microsoft.Projects.Project.Ledger;
-using Microsoft.Sales.History;
-
-codeunit 6610 "FS Int. Table Subscriber"
-{
- SingleInstance = true;
-
- var
- CDSIntegrationMgt: Codeunit "CDS Integration Mgt.";
- CDSIntegrationImpl: Codeunit "CDS Integration Impl.";
- CRMSynchHelper: Codeunit "CRM Synch. Helper";
- RecordMustBeCoupledErr: Label '%1 %2 must be coupled to %3.', Comment = '%1 = table caption, %2 = primary key value, %3 - service name';
- RecordCoupledToDeletedErr: Label '%1 %2 is coupled to a deleted record.', Comment = '%1 = table caption, %2 = primary key value';
- JobJournalIncorrectSetupErr: Label 'You must set up %1 correctly on %2.', Comment = '%1 = a table name, %2 = a table name';
- CategoryTok: Label 'AL Field Service Integration', Locked = true;
- MustBeCoupledErr: Label '%1 %2 must be coupled to a Business Central %3', Comment = '%1 = a table name, %2 - a guid, %3 = a table name';
- DoesntExistErr: Label '%1 %2 doesn''t exist in %3', Comment = '%1 = a table name, %2 - a guid, %3 = Field Service service name';
- CoupledToDeletedErr: Label '%1 %2 is coupled to a deleted Business Central %3. You must re-couple it.', Comment = '%1 = a table name, %2 - a guid, %3 = a table name';
- CoupledToNonServiceErr: Label 'To synchronize this work order service, %1 %2 must be coupled to an item whose type is not set to Inventory. It is curretly coupled to item %3.', Comment = '%1 = a table name, %2 - a guid, %3 = an item name';
- CoupledToBlockedItemErr: Label 'To synchronize this work order service, %1 %2 must be coupled to an item that is not blocked. It is curretly coupled to item %3.', Comment = '%1 = a table name, %2 - a guid, %3 = an item name';
- CoupledToItemWithWrongUOMErr: Label 'To synchronize this work order service, %1 %2 must be coupled to an item that has base unit of measure set to %4. It is curretly coupled to item %3.', Comment = '%1 = a table name, %2 - a guid, %3 = an item name, %4 - unit of measure name';
- UnableToModifyWOSTxt: Label 'Unable to update work order service.', Locked = true;
- UnableToModifyWOPTxt: Label 'Unable to update work order product.', Locked = true;
- TestServerAddressTok: Label '@@test@@', Locked = true;
- FSConnEnabledTelemetryErr: Label 'User is trying to set up the connection with Dataverse, while the existing connections with Field Service is enabled.', Locked = true;
- FSConnEnabledErr: Label 'To set up the connection with Dataverse, you must first disable the existing connection with Field Service.';
- ShowFSConnectionSetupLbl: Label 'Field Service Integration Setup';
- ShowFSConnectionSetupDescLbl: Label 'Shows Field Service Integration Setup page where you can disable the connection.';
- CompanyFilterStrengthenedQst: Label 'This will make the synchronization engine process only %1 entities that correspond to the current company. Do you want to continue?', Comment = '%1 - a table caption';
- CompanyFilterStrengthenedFSMsg: Label 'The synchronization will consider only %1 entities whose work order in %3 has an External Project that belongs to company %2.', Comment = '%1 - a table caption; %2 - current company name; %3 - Dynamics 365 service name';
- InsufficientPermissionsTxt: Label 'Insufficient permissions.', Locked = true;
- NoProjectUsageLinkTxt: Label 'Unable to find Project Usage Link.', Locked = true;
- NoProjectPlanningLineTxt: Label 'Unable to find Project Planning Line.', Locked = true;
- MultiCompanySyncEnabledTxt: Label 'Multi-Company Synch Enabled', Locked = true;
- FSEntitySynchTxt: Label 'Synching a field service entity.', Locked = true;
-
-
- [EventSubscriber(ObjectType::Table, Database::"CDS Connection Setup", 'OnEnsureConnectionSetupIsDisabled', '', false, false)]
- local procedure OnEnsureConnectionSetupIsDisabled()
- var
- FSConnectionSetup: Record "FS Connection Setup";
- ErrorInfo: ErrorInfo;
- begin
- if FSConnectionSetup.Get() then
- if FSConnectionSetup.IsEnabled() then
- if FSConnectionSetup."Server Address" <> TestServerAddressTok then begin
- Session.LogMessage('0000MQW', FSConnEnabledTelemetryErr, Verbosity::Warning, DataClassification::CustomerContent, TelemetryScope::ExtensionPublisher, 'Category', CategoryTok);
- ErrorInfo.Message := FSConnEnabledErr;
- ErrorInfo.AddNavigationAction(ShowFSConnectionSetupLbl, ShowFSConnectionSetupDescLbl);
- ErrorInfo.PageNo(Page::"FS Connection Setup");
- Error(ErrorInfo);
- end;
- end;
-
- [EventSubscriber(ObjectType::Table, Database::"Integration Table Mapping", 'OnEnableMultiCompanySynchronization', '', false, false)]
- local procedure OnEnableMultiCompanySynchronization(var IntegrationTableMapping: Record "Integration Table Mapping"; var IsHandled: Boolean)
- var
- FSConnectionSetup: Record "FS Connection Setup";
- CDSCompany: Record "CDS Company";
- FSSetupDefaults: Codeunit "FS Setup Defaults";
- CRMProductName: Codeunit "CRM Product Name";
- IntegrationRecordRef: RecordRef;
- CompanyIdFieldRef: FieldRef;
- MessageTxt: Text;
- begin
- if IsHandled then
- exit;
-
- if IntegrationTableMapping.Type <> IntegrationTableMapping.Type::Dataverse then
- exit;
-
- if not FSConnectionSetup.IsEnabled() then
- exit;
-
- if IntegrationTableMapping."Table ID" = Database::"Job Journal Line" then begin
- IsHandled := true;
- IntegrationRecordRef.Open(IntegrationTableMapping."Integration Table ID");
-
- if not CDSIntegrationMgt.FindCompanyIdField(IntegrationRecordRef, CompanyIdFieldRef) then
- exit;
-
- if not CDSIntegrationMgt.GetCDSCompany(CDSCompany) then
- exit;
-
- if GuiAllowed() then
- if not Confirm(StrSubstNo(CompanyFilterStrengthenedQst, IntegrationRecordRef.Caption())) then
- Error('');
-
- IntegrationRecordRef.SetView(IntegrationTableMapping.GetIntegrationTableFilter());
- CompanyIdFieldRef.SetRange(CDSCompany.CompanyId);
- IntegrationTableMapping.SetIntegrationTableFilter(FSSetupDefaults.GetTableFilterFromView(IntegrationTableMapping."Integration Table ID", IntegrationRecordRef.Caption(), IntegrationRecordRef.GetView()));
- MessageTxt := StrSubstNo(CompanyFilterStrengthenedFSMsg, IntegrationRecordRef.Caption(), CompanyName(), CRMProductName.FSServiceName());
- if IntegrationTableMapping.Modify() then
- if GuiAllowed() then
- if MessageTxt <> '' then
- Message(MessageTxt);
- end;
- end;
-
- [EventSubscriber(ObjectType::Codeunit, Codeunit::"Integration Rec. Synch. Invoke", 'OnBeforeTransferRecordFields', '', false, false)]
- local procedure OnBeforeTransferRecordFields(SourceRecordRef: RecordRef; var DestinationRecordRef: RecordRef)
- var
- FSConnectionSetup: Record "FS Connection Setup";
- FSProjectTask: Record "FS Project Task";
- FSWorkOrderProduct: Record "FS Work Order Product";
- FSWorkOrderService: Record "FS Work Order Service";
- CRMIntegrationRecord: Record "CRM Integration Record";
- JobJournalLine: Record "Job Journal Line";
- JobTask: Record "Job Task";
- begin
- if not FSConnectionSetup.IsEnabled() then
- exit;
-
- case GetSourceDestCode(SourceRecordRef, DestinationRecordRef) of
- 'FS Work Order Product-Job Journal Line',
- 'FS Work Order Service-Job Journal Line':
- begin
- if SourceRecordRef.Number = Database::"FS Work Order Product" then begin
- SourceRecordRef.SetTable(FSWorkOrderProduct);
- FSProjectTask.Get(FSWorkOrderProduct.ProjectTask);
- end
- else begin
- SourceRecordRef.SetTable(FSWorkOrderService);
- FSProjectTask.Get(FSWorkOrderService.ProjectTask);
- end;
-
- if not CRMIntegrationRecord.FindByCRMID(FSProjectTask.ProjectTaskId) then
- Error(RecordMustBeCoupledErr, FSProjectTask.TableCaption, Format(FSProjectTask.ProjectTaskId), 'Business Central');
-
- if not JobTask.GetBySystemId(CRMIntegrationRecord."Integration ID") then
- Error(RecordCoupledToDeletedErr, FSProjectTask.TableCaption, Format(FSProjectTask.ProjectTaskId));
-
- DestinationRecordRef.SetTable(JobJournalLine);
- JobJournalLine."Job No." := JobTask."Job No.";
- JobJournalLine."Job Task No." := JobTask."Job Task No.";
- DestinationRecordRef.GetTable(JobJournalLine);
- end;
- end;
- end;
-
- [EventSubscriber(ObjectType::Codeunit, Codeunit::"Integration Record Synch.", 'OnTransferFieldData', '', false, false)]
- local procedure OnTransferFieldData(SourceFieldRef: FieldRef; DestinationFieldRef: FieldRef; var NewValue: Variant; var IsValueFound: Boolean; var NeedsConversion: Boolean)
- var
- FSConnectionSetup: Record "FS Connection Setup";
- FSWorkOrderService: Record "FS Work Order Service";
- FSWorkOrderProduct: Record "FS Work Order Product";
- FSBookableResourceBooking: Record "FS Bookable Resource Booking";
- JobJournalLine: Record "Job Journal Line";
- SourceRecordRef: RecordRef;
- DestinationRecordRef: RecordRef;
- DurationInHours: Decimal;
- DurationInMinutes: Decimal;
- Quantity: Decimal;
- QuantityToTransferToInvoice: Decimal;
- QuantityCurrentlyConsumed: Decimal;
- QuantityCurrentlyInvoiced: Decimal;
- begin
- if not FSConnectionSetup.IsEnabled() then
- exit;
- if IsValueFound then
- exit;
-
- if SourceFieldRef.Number() = DestinationFieldRef.Number() then
- if SourceFieldRef.Record().Number() = DestinationFieldRef.Record().Number() then
- exit;
-
- if SourceFieldRef.Record().Number = Database::"FS Work Order Service" then
- case SourceFieldRef.Name() of
- FSWorkOrderService.FieldName(Duration),
- FSWorkOrderService.FieldName(DurationToBill):
- begin
- SourceRecordRef := SourceFieldRef.Record();
- SourceRecordRef.SetTable(FSWorkOrderService);
- SetCurrentProjectPlanningQuantities(SourceRecordRef, QuantityCurrentlyConsumed, QuantityCurrentlyInvoiced);
- DestinationRecordRef := DestinationFieldRef.Record();
- DestinationRecordRef.SetTable(JobJournalLine);
- if SourceFieldRef.Name() = FSWorkOrderService.FieldName(Duration) then begin
- DurationInMinutes := FSWorkOrderService.Duration;
- DurationInHours := (DurationInMinutes / 60);
- NewValue := DurationInHours - QuantityCurrentlyConsumed;
- end;
- if SourceFieldRef.Name() = FSWorkOrderService.FieldName(DurationToBill) then begin
- DurationInMinutes := FSWorkOrderService.DurationToBill;
- DurationInHours := (DurationInMinutes / 60);
- if JobJournalLine."Line Type" in [JobJournalLine."Line Type"::Budget, JobJournalLine."Line Type"::" "] then
- NewValue := 0
- else
- NewValue := DurationInHours - QuantityCurrentlyInvoiced;
- end;
- IsValueFound := true;
- NeedsConversion := false;
- exit;
- end;
- FSWorkOrderService.FieldName(Description):
- begin
- SourceRecordRef := SourceFieldRef.Record();
- SourceRecordRef.SetTable(FSWorkOrderService);
- DestinationRecordRef := DestinationFieldRef.Record();
- DestinationRecordRef.SetTable(JobJournalLine);
-
- if JobJournalLine.Type = JobJournalLine.Type::Resource then
- if FSBookableResourceBooking.Get(FSWorkOrderService.Booking) then
- if SourceFieldRef.Name() = FSWorkOrderService.FieldName(Description) then begin
- NewValue := FSBookableResourceBooking.Name;
- IsValueFound := true;
- NeedsConversion := false;
- exit;
- end;
-
- if JobJournalLine.Type = JobJournalLine.Type::Item then
- if SourceFieldRef.Name() = FSWorkOrderService.FieldName(Description) then begin
- NewValue := FSWorkOrderService.Name;
- IsValueFound := true;
- NeedsConversion := false;
- exit;
- end;
- end;
- end;
-
- if SourceFieldRef.Record().Number = Database::"FS Work Order Product" then
- case SourceFieldRef.Name() of
- FSWorkOrderProduct.FieldName(Quantity),
- FSWorkOrderProduct.FieldName(QtyToBill):
- begin
- SourceRecordRef := SourceFieldRef.Record();
- SourceRecordRef.SetTable(FSWorkOrderProduct);
- SetCurrentProjectPlanningQuantities(SourceRecordRef, QuantityCurrentlyConsumed, QuantityCurrentlyInvoiced);
- if SourceFieldRef.Name() = FSWorkOrderProduct.FieldName(Quantity) then begin
- Quantity := FSWorkOrderProduct.Quantity - QuantityCurrentlyConsumed;
- NewValue := Quantity;
- end;
- if SourceFieldRef.Name() = FSWorkOrderProduct.FieldName(QtyToBill) then begin
- QuantityToTransferToInvoice := FSWorkOrderProduct.QtyToBill - QuantityCurrentlyInvoiced;
- NewValue := QuantityToTransferToInvoice;
- end;
- IsValueFound := true;
- NeedsConversion := false;
- exit;
- end;
- FSWorkOrderProduct.FieldName(Description):
- begin
- SourceRecordRef := SourceFieldRef.Record();
- SourceRecordRef.SetTable(FSWorkOrderProduct);
-
- NewValue := FSWorkOrderProduct.Name;
- IsValueFound := true;
- NeedsConversion := false;
- exit;
- end;
- end;
- end;
-
- [EventSubscriber(ObjectType::Codeunit, Codeunit::"Integration Rec. Synch. Invoke", 'OnAfterInsertRecord', '', false, false)]
- local procedure HandleOnAfterInsertRecord(SourceRecordRef: RecordRef; DestinationRecordRef: RecordRef)
- var
- FSConnectionSetup: Record "FS Connection Setup";
- JobJournalLine: Record "Job Journal Line";
- BudgetJobJournalLine: Record "Job Journal Line";
- FSWorkOrderProduct: Record "FS Work Order Product";
- FSWorkOrderService: Record "FS Work Order Service";
- CRMIntegrationRecord: Record "CRM Integration Record";
- SalesInvoiceHeader: Record "Sales Invoice Header";
- JobPlanningLineInvoice: Record "Job Planning Line Invoice";
- JobUsageLink: Record "Job Usage Link";
- SourceDestCode: Text;
- begin
- if not FSConnectionSetup.IsEnabled() then
- exit;
-
- SourceDestCode := GetSourceDestCode(SourceRecordRef, DestinationRecordRef);
-
- case SourceDestCode of
- 'FS Work Order Product-Job Journal Line':
- begin
- SourceRecordRef.SetTable(FSWorkOrderProduct);
- DestinationRecordRef.SetTable(JobJournalLine);
- ConditionallyPostJobJournalLine(FSConnectionSetup, FSWorkOrderProduct, JobJournalLine);
- end;
- 'FS Work Order Service-Job Journal Line':
- begin
- SourceRecordRef.SetTable(FSWorkOrderService);
- DestinationRecordRef.SetTable(JobJournalLine);
- BudgetJobJournalLine.ReadIsolation(IsolationLevel::ReadCommitted);
- if BudgetJobJournalLine.Get(JobJournalLine."Journal Template Name", JobJournalLine."Journal Batch Name", JobJournalLine."Line No." - BudgetJobJournalLineNoOffset()) then
- if BudgetJobJournalLine."Line Type" = BudgetJobJournalLine."Line Type"::Budget then
- if not CRMIntegrationRecord.Get(FSWorkOrderService.WorkOrderServiceId, BudgetJobJournalLine.SystemId) then begin
- // Budget job journal line is created in the OnBeforeInsertRecord subscriber. We must couple it here.
- // If we try to couple it in the OnBeforeInsert subscriber, the synch engine will find it and just update the Integration Id with the other journal line's system id.
- // We want to commit the coupling of the budget journal line before we attempt posting, because posting could fail and roll back the coupling of the budget line
- CRMIntegrationRecord.InsertRecord(FSWorkOrderService.WorkOrderServiceId, BudgetJobJournalLine.SystemId, Database::"Job Journal Line");
- Commit();
- end;
- ConditionallyPostJobJournalLine(FSConnectionSetup, FSWorkOrderService, JobJournalLine);
- end;
- 'Sales Invoice Header-CRM Invoice':
- begin
- SourceRecordRef.SetTable(SalesInvoiceHeader);
- JobPlanningLineInvoice.ReadIsolation := JobPlanningLineInvoice.ReadIsolation::ReadCommitted;
- JobPlanningLineInvoice.SetRange("Document Type", JobPlanningLineInvoice."Document Type"::"Posted Invoice");
- JobPlanningLineInvoice.SetRange("Document No.", SalesInvoiceHeader."No.");
- if JobPlanningLineInvoice.FindSet() then
- repeat
- JobUsageLink.SetRange("Job No.", JobPlanningLineInvoice."Job No.");
- JobUsageLink.SetRange("Job Task No.", JobPlanningLineInvoice."Job Task No.");
- JobUsageLink.SetRange("Line No.", JobPlanningLineInvoice."Job Planning Line No.");
- if JobUsageLink.FindFirst() then
- if not IsNullGuid(JobUsageLink."External Id") then
- if FSWorkorderProduct.Get(JobUsageLink."External Id") then begin
- FSWorkOrderProduct.QuantityInvoiced += JobPlanningLineInvoice."Quantity Transferred";
- if not TryModifyWorkOrderProduct(FSWorkOrderProduct) then begin
- Session.LogMessage('0000MMV', UnableToModifyWOPTxt, Verbosity::Warning, DataClassification::SystemMetadata, TelemetryScope::ExtensionPublisher, 'Category', CategoryTok);
- ClearLastError();
- end;
- end
- else
- if FSWorkorderService.Get(JobUsageLink."External Id") then begin
- FSWorkorderService.DurationInvoiced += (JobPlanningLineInvoice."Quantity Transferred" * 60);
- if not TryModifyWorkOrderService(FSWorkOrderService) then begin
- Session.LogMessage('0000MMW', UnableToModifyWOSTxt, Verbosity::Warning, DataClassification::SystemMetadata, TelemetryScope::ExtensionPublisher, 'Category', CategoryTok);
- ClearLastError();
- end;
- end;
- until JobPlanningLineInvoice.Next() = 0;
- end;
- end;
- end;
-
- local procedure BudgetJobJournalLineNoOffset(): Integer
- begin
- // When a Work Order Service that has a coupled bookable resource is synchronized to BC
- // Two project journal lines are coupled: one billable line for the service item and one budget line for the resource
- // This is the offset number of the second line no. from the first line no.
- exit(37);
- end;
-
- [EventSubscriber(ObjectType::Codeunit, Codeunit::"Integration Rec. Synch. Invoke", 'OnBeforeIgnoreUnchangedRecordHandled', '', false, false)]
- local procedure HandleOnBeforeIgnoreUnchangedRecordHandled(SourceRecordRef: RecordRef; DestinationRecordRef: RecordRef)
- var
- FSConnectionSetup: Record "FS Connection Setup";
- JobJournalLine: Record "Job Journal Line";
- FSWorkOrderProduct: Record "FS Work Order Product";
- FSWorkOrderService: Record "FS Work Order Service";
- SourceDestCode: Text;
- begin
- if not FSConnectionSetup.IsEnabled() then
- exit;
-
- SourceDestCode := GetSourceDestCode(SourceRecordRef, DestinationRecordRef);
-
- case SourceDestCode of
- 'FS Work Order Product-Job Journal Line':
- begin
- SourceRecordRef.SetTable(FSWorkOrderProduct);
- DestinationRecordRef.SetTable(JobJournalLine);
- ConditionallyPostJobJournalLine(FSConnectionSetup, FSWorkOrderProduct, JobJournalLine);
- end;
- 'FS Work Order Service-Job Journal Line':
- begin
- SourceRecordRef.SetTable(FSWorkOrderService);
- DestinationRecordRef.SetTable(JobJournalLine);
- UpdateCorrelatedJobJournalLine(SourceRecordRef, DestinationRecordRef);
- ConditionallyPostJobJournalLine(FSConnectionSetup, FSWorkOrderService, JobJournalLine);
- end;
- end;
- end;
-
- [EventSubscriber(ObjectType::Codeunit, Codeunit::"Integration Rec. Synch. Invoke", 'OnBeforeModifyRecord', '', false, false)]
- local procedure HandleOnBeforeModifyRecord(IntegrationTableMapping: Record "Integration Table Mapping"; SourceRecordRef: RecordRef; var DestinationRecordRef: RecordRef)
- var
- FSConnectionSetup: Record "FS Connection Setup";
- SourceDestCode: Text;
- begin
- if not FSConnectionSetup.IsEnabled() then
- exit;
-
- SourceDestCode := GetSourceDestCode(SourceRecordRef, DestinationRecordRef);
-
- case SourceDestCode of
- 'FS Work Order Service-Job Journal Line':
- UpdateCorrelatedJobJournalLine(SourceRecordRef, DestinationRecordRef);
- end;
- end;
-
- local procedure UpdateCorrelatedJobJournalLine(var SourceRecordRef: RecordRef; var DestinationRecordRef: RecordRef)
- var
- JobJournalLine: Record "Job Journal Line";
- FSWorkOrderService: Record "FS Work Order Service";
- CorrelatedJobJournalLine: Record "Job Journal Line";
- CRMIntegrationRecord: Record "CRM Integration Record";
- CorrelatedJobJournalLineId: Guid;
- QuantityCurrentlyConsumed: Decimal;
- QuantityCurrentlyInvoiced: Decimal;
- DurationInHours: Decimal;
- begin
- // Work Order Services with coupled bookable resources couple to two Project Journal Lines: one budget (for the resource) and the other billable (for the item of type service)
- // Scheduled delta synch updates only one of them (that is how it is designed, it finds the first coupled one)
- // Therefore, we must find the other correlated line and update it here
- SourceRecordRef.SetTable(FSWorkOrderService);
- DestinationRecordRef.SetTable(JobJournalLine);
- SetCurrentProjectPlanningQuantities(SourceRecordRef, QuantityCurrentlyConsumed, QuantityCurrentlyInvoiced);
- CRMIntegrationRecord.SetRange("Table ID", Database::"Job Journal Line");
- CRMIntegrationRecord.SetRange("CRM ID", FSWorkOrderService.WorkOrderServiceId);
- if CRMIntegrationRecord.FindSet() then
- repeat
- if CRMIntegrationRecord."Integration ID" <> JobJournalLine.SystemId then
- CorrelatedJobJournalLineId := CRMIntegrationRecord."Integration ID";
- until CRMIntegrationRecord.Next() = 0;
-
- if IsNullGuid(CorrelatedJobJournalLineId) then
- exit;
-
- if not CorrelatedJobJournalLine.GetBySystemId(CorrelatedJobJournalLineId) then
- exit;
-
- DurationInHours := FSWorkOrderService.Duration;
- DurationInHours := (DurationInHours / 60);
- DurationInHours := DurationInHours - QuantityCurrentlyConsumed;
- if (CorrelatedJobJournalLine.Quantity <> DurationInHours) then begin
- CorrelatedJobJournalLine.Quantity := DurationInHours;
- CorrelatedJobJournalLine.Modify();
- end;
-
- case CorrelatedJobJournalLine."Line Type" of
- CorrelatedJobJournalLine."Line Type"::Budget,
- CorrelatedJobJournalLine."Line Type"::" ":
- if CorrelatedJobJournalLine."Qty. to Transfer to Invoice" <> 0 then begin
- CorrelatedJobJournalLine."Qty. to Transfer to Invoice" := 0;
- CorrelatedJobJournalLine.Modify();
- end;
- CorrelatedJobJournalLine."Line Type"::Billable,
- CorrelatedJobJournalLine."Line Type"::"Both Budget and Billable":
- begin
- DurationInHours := FSWorkOrderService.DurationToBill;
- DurationInHours := (DurationInHours / 60);
- DurationInHours := DurationInHours - QuantityCurrentlyInvoiced;
- if CorrelatedJobJournalLine."Qty. to Transfer to Invoice" <> DurationInHours then begin
- CorrelatedJobJournalLine."Qty. to Transfer to Invoice" := DurationInHours;
- CorrelatedJobJournalLine.Modify();
- end;
- end;
- end;
- end;
-
- [EventSubscriber(ObjectType::Codeunit, Codeunit::"Integration Rec. Synch. Invoke", 'OnAfterModifyRecord', '', false, false)]
- local procedure HandleOnAfterModifyRecord(IntegrationTableMapping: Record "Integration Table Mapping"; var SourceRecordRef: RecordRef; var DestinationRecordRef: RecordRef)
- var
- FSConnectionSetup: Record "FS Connection Setup";
- JobJournalLine: Record "Job Journal Line";
- FSWorkOrderProduct: Record "FS Work Order Product";
- FSWorkOrderService: Record "FS Work Order Service";
- SourceDestCode: Text;
- begin
- if not FSConnectionSetup.IsEnabled() then
- exit;
-
- SourceDestCode := GetSourceDestCode(SourceRecordRef, DestinationRecordRef);
-
- case SourceDestCode of
- 'FS Work Order Product-Job Journal Line':
- begin
- SourceRecordRef.SetTable(FSWorkOrderProduct);
- DestinationRecordRef.SetTable(JobJournalLine);
- ConditionallyPostJobJournalLine(FSConnectionSetup, FSWorkOrderProduct, JobJournalLine);
- end;
- 'FS Work Order Service-Job Journal Line':
- begin
- SourceRecordRef.SetTable(FSWorkOrderService);
- DestinationRecordRef.SetTable(JobJournalLine);
- ConditionallyPostJobJournalLine(FSConnectionSetup, FSWorkOrderService, JobJournalLine);
- end;
- end;
- end;
-
- local procedure ConditionallyPostJobJournalLine(var FSConnectionSetup: Record "FS Connection Setup"; var FSWorkOrderProduct: Record "FS Work Order Product"; var JobJournalLine: Record "Job Journal Line")
- var
- JobJnlPostLine: Codeunit "Job Jnl.-Post Line";
- begin
- case FSConnectionSetup."Line Post Rule" of
- "FS Work Order Line Post Rule"::LineUsed:
- if FSWorkOrderProduct.LineStatus = FSWorkOrderProduct.LineStatus::Used then
- JobJnlPostLine.RunWithCheck(JobJournalLine);
- "FS Work Order Line Post Rule"::WorkOrderCompleted:
- if FSWorkOrderProduct.WorkOrderStatus in [FSWorkOrderProduct.WorkOrderStatus::Completed] then
- JobJnlPostLine.RunWithCheck(JobJournalLine);
- else
- exit;
- end;
- end;
-
- local procedure ConditionallyPostJobJournalLine(var FSConnectionSetup: Record "FS Connection Setup"; var FSWorkOrderService: Record "FS Work Order Service"; var JobJournalLine: Record "Job Journal Line")
- begin
- case FSConnectionSetup."Line Post Rule" of
- "FS Work Order Line Post Rule"::LineUsed:
- if FSWorkOrderService.LineStatus = FSWorkOrderService.LineStatus::Used then
- PostJobJournalLine(FSWorkOrderService, JobJournalLine);
- "FS Work Order Line Post Rule"::WorkOrderCompleted:
- if FSWorkOrderService.WorkOrderStatus in [FSWorkOrderService.WorkOrderStatus::Completed] then
- PostJobJournalLine(FSWorkOrderService, JobJournalLine);
- else
- exit;
- end;
- end;
-
- local procedure PostJobJournalLine(var FSWorkOrderService: Record "FS Work Order Service"; var JobJournalLine: Record "Job Journal Line")
- var
- CRMIntegrationRecord: Record "CRM Integration Record";
- CorrelatedJobJournalLine: Record "Job Journal Line";
- JobJnlPostLine: Codeunit "Job Jnl.-Post Line";
- JobJournalLineId: Guid;
- begin
- JobJournalLineId := JobJournalLine.SystemId;
- JobJnlPostLine.RunWithCheck(JobJournalLine);
-
- // Work Order Services couple to two Project Journal Lines (one budget line for the resource and one billable line for the item of type service)
- // we must find the other coupled lines and post them as well.
- CRMIntegrationRecord.SetRange("Table ID", Database::"Job Journal Line");
- CRMIntegrationRecord.SetRange("CRM ID", FSWorkOrderService.WorkOrderServiceId);
- if CRMIntegrationRecord.FindSet() then
- repeat
- if CRMIntegrationRecord."Integration ID" <> JobJournalLine.SystemId then
- if CorrelatedJobJournalLine.GetBySystemId(CRMIntegrationRecord."Integration ID") then
- JobJnlPostLine.RunWithCheck(CorrelatedJobJournalLine);
- until CRMIntegrationRecord.Next() = 0;
- end;
-
- [EventSubscriber(ObjectType::Codeunit, Codeunit::"Integration Rec. Synch. Invoke", 'OnBeforeInsertRecord', '', false, false)]
- local procedure HandleOnBeforeInsertRecord(SourceRecordRef: RecordRef; DestinationRecordRef: RecordRef)
- var
- FSProjectTask: Record "FS Project Task";
- Customer: Record Customer;
- CRMIntegrationRecord: Record "CRM Integration Record";
- Job: Record Job;
- JobTask: Record "Job Task";
- JobJournalLine: Record "Job Journal Line";
- FSConnectionSetup: Record "FS Connection Setup";
- JobJournalBatch: Record "Job Journal Batch";
- JobJournalTemplate: Record "Job Journal Template";
- JobsSetup: Record "Jobs Setup";
- Resource: Record Resource;
- FSBookableResource: Record "FS Bookable Resource";
- LastJobJournalLine: Record "Job Journal Line";
- CRMProductName: Codeunit "CRM Product Name";
- NoSeries: Codeunit "No. Series";
- RecID: RecordId;
- SourceDestCode: Text;
- BillingAccId: Guid;
- ServiceAccId: Guid;
- Handled: Boolean;
- begin
- if not FSConnectionSetup.IsEnabled() then
- exit;
-
- SourceDestCode := GetSourceDestCode(SourceRecordRef, DestinationRecordRef);
-
- case SourceDestCode of
- 'Service Item-FS Customer Asset':
- SetCompanyId(DestinationRecordRef);
- 'FS Customer Asset-Service Item':
- begin
- SetCompanyId(SourceRecordRef);
- SourceRecordRef.Modify()
- end;
- 'Resource-FS Bookable Resource':
- begin
- SetCompanyId(DestinationRecordRef);
- SourceRecordRef.SetTable(Resource);
- DestinationRecordRef.SetTable(FSBookableResource);
- FSBookableResource.TimeZone := 92;
- case Resource.Type of
- Resource.Type::Machine:
- FSBookableResource.ResourceType := FSBookableResource.ResourceType::Equipment;
- Resource.Type::Person:
- if Resource."Vendor No." <> '' then
- FSBookableResource.ResourceType := FSBookableResource.ResourceType::Account
- else
- FSBookableResource.ResourceType := FSBookableResource.ResourceType::Generic;
- end;
- DestinationRecordRef.GetTable(FSBookableResource);
- end;
- 'FS Bookable Resource-Resource':
- begin
- SetCompanyId(SourceRecordRef);
- SourceRecordRef.SetTable(FSBookableResource);
- DestinationRecordRef.SetTable(Resource);
- case FSBookableResource.ResourceType of
- FSBookableResource.ResourceType::Equipment:
- Resource.Type := Resource.Type::Machine;
- FSBookableResource.ResourceType::Account,
- FSBookableResource.ResourceType::Generic:
- Resource.Type := Resource.Type::Person;
- end;
- Resource."Base Unit of Measure" := FSConnectionSetup."Hour Unit of Measure";
- DestinationRecordRef.GetTable(Resource);
- SourceRecordRef.Modify();
- end;
- 'Job Task-FS Project Task':
- begin
- SetCompanyId(DestinationRecordRef);
- SourceRecordRef.SetTable(JobTask);
- if Job.Get(JobTask."Job No.") then begin
- DestinationRecordRef.Field(FSProjectTask.FieldNo(ProjectDescription)).Value := Job.Description;
- if Job."Bill-to Customer No." <> '' then
- if CRMSynchHelper.FindRecordIDByPK(Database::Customer, Job."Bill-to Customer No.", RecID) then
- if CRMIntegrationRecord.FindIDFromRecordID(RecID, BillingAccId) then
- DestinationRecordRef.Field(FSProjectTask.FieldNo(BillingAccountId)).Value := BillingAccId
- else
- Error(RecordMustBeCoupledErr, Customer.TableCaption(), Job."Bill-to Customer No.", CRMProductName.CDSServiceName());
- if Job."Sell-to Customer No." <> '' then
- if CRMSynchHelper.FindRecordIDByPK(Database::Customer, Job."Sell-to Customer No.", RecID) then
- if CRMIntegrationRecord.FindIDFromRecordID(RecID, ServiceAccId) then
- DestinationRecordRef.Field(FSProjectTask.FieldNo(ServiceAccountId)).Value := ServiceAccId
- else
- Error(RecordMustBeCoupledErr, Customer.TableCaption(), Job."Bill-to Customer No.", CRMProductName.CDSServiceName())
- else
- DestinationRecordRef.Field(FSProjectTask.FieldNo(ServiceAccountId)).Value := BillingAccId;
- end;
- end;
- 'FS Work Order Product-Job Journal Line',
- 'FS Work Order Service-Job Journal Line':
- begin
- DestinationRecordRef.SetTable(JobJournalLine);
- OnSetUpNewLineOnNewLine(JobJournalLine, JobJournalTemplate, JobJournalBatch, Handled);
- if not Handled then begin
- FSConnectionSetup.Get();
- JobsSetup.Get();
- Job.Get(JobJournalLine."Job No.");
- if not JobJournalTemplate.Get(FSConnectionSetup."Job Journal Template") then
- Error(JobJournalIncorrectSetupErr, JobJournalTemplate.TableCaption(), FSConnectionSetup.TableCaption());
- if not JobJournalBatch.Get(FSConnectionSetup."Job Journal Template", FSConnectionSetup."Job Journal Batch") then
- Error(JobJournalIncorrectSetupErr, JobJournalBatch.TableCaption(), FSConnectionSetup.TableCaption());
- JobJournalLine."Journal Template Name" := JobJournalTemplate.Name;
- JobJournalLine."Journal Batch Name" := JobJournalBatch.Name;
- LastJobJournalLine.SetRange("Journal Template Name", JobJournalTemplate.Name);
- LastJobJournalLine.SetRange("Journal Batch Name", JobJournalBatch.Name);
- if LastJobJournalLine.FindLast() then begin
- JobJournalLine."Posting Date" := LastJobJournalLine."Posting Date";
- JobJournalLine."Document Date" := LastJobJournalLine."Posting Date";
- if JobsSetup."Document No. Is Job No." and (LastJobJournalLine."Document No." = '') then
- JobJournalLine."Document No." := JobJournalLine."Job No."
- else
- JobJournalLine."Document No." := LastJobJournalLine."Document No.";
- end else begin
- JobJournalLine."Posting Date" := WorkDate();
- JobJournalLine."Document Date" := WorkDate();
- if JobsSetup."Document No. Is Job No." then begin
- if JobJournalLine."Document No." = '' then
- JobJournalLine."Document No." := JobJournalLine."Job No.";
- end else
- if JobJournalBatch."No. Series" <> '' then begin
- Clear(NoSeries);
- JobJournalLine."Document No." := NoSeries.GetNextNo(JobJournalBatch."No. Series", JobJournalLine."Posting Date");
- end;
- end;
- JobJournalLine."Line No." := LastJobJournalLine."Line No." + 10000;
- JobJournalLine."Source Code" := JobJournalTemplate."Source Code";
- JobJournalLine."Reason Code" := JobJournalBatch."Reason Code";
- JobJournalLine."Posting No. Series" := JobJournalBatch."Posting No. Series";
- JobJournalLine."Price Calculation Method" := Job.GetPriceCalculationMethod();
- JobJournalLine."Cost Calculation Method" := Job.GetCostCalculationMethod();
- SetJobJournalLineTypesAndNo(FSConnectionSetup, SourceRecordRef, JobJournalLine);
- end;
- DestinationRecordRef.GetTable(JobJournalLine);
- end;
- end;
- end;
-
- [EventSubscriber(ObjectType::Codeunit, Codeunit::"Integration Rec. Synch. Invoke", 'OnDeletionConflictDetectedSetRecordStateAndSynchAction', '', false, false)]
- local procedure HandleOnDeletionConflictDetectedSetRecordStateAndSynchAction(var IntegrationTableMapping: Record "Integration Table Mapping"; var SourceRecordRef: RecordRef; var CoupledRecordRef: RecordRef; var RecordState: Option NotFound,Coupled,Decoupled; var SynchAction: Option "None",Insert,Modify,ForceModify,IgnoreUnchanged,Fail,Skip,Delete,Uncouple,Couple; var DeletionConflictHandled: Boolean)
- var
- FSConnectionSetup: Record "FS Connection Setup";
- FSWorkOrderProduct: Record "FS Work Order Product";
- FSWorkOrderService: Record "FS Work Order Service";
- CRMIntegrationRecord: Record "CRM Integration Record";
- JobJournalLine: Record "Job Journal Line";
- IntegrationRecSynchInvoke: Codeunit "Integration Rec. Synch. Invoke";
- FSQuantityToBill: Decimal;
- FSQuantity: Decimal;
- QuantityCurrentlyConsumed: Decimal;
- QuantityCurrentlyInvoiced: Decimal;
- CRMId: Guid;
- begin
- if DeletionConflictHandled then
- exit;
-
- if not FSConnectionSetup.IsEnabled() then
- exit;
-
- if IntegrationTableMapping."Table ID" <> Database::"Job Journal Line" then
- exit;
-
- if ((IntegrationTableMapping."Integration Table ID" <> Database::"FS Work Order Service") and (IntegrationTableMapping."Integration Table ID" <> Database::"FS Work Order Product")) then
- exit;
-
- SetCurrentProjectPlanningQuantities(SourceRecordRef, QuantityCurrentlyConsumed, QuantityCurrentlyInvoiced);
- case SourceRecordRef.Number() of
- Database::"FS Work Order Product":
- begin
- SourceRecordRef.SetTable(FSWorkOrderProduct);
- CRMId := FSWorkOrderProduct.WorkOrderProductId;
- FSQuantity := FSWorkOrderProduct.Quantity;
- FSQuantityToBill := FSWorkOrderProduct.QtyToBill;
- end;
- Database::"FS Work Order Service":
- begin
- SourceRecordRef.SetTable(FSWorkOrderService);
- CRMId := FSWorkOrderService.WorkOrderServiceId;
- FSQuantity := FSWorkOrderService.Duration;
- FSQuantity := (FSQuantity / 60);
- FSQuantityToBill := FSWorkOrderService.DurationToBill;
- FSQuantityToBill := (FSQuantityToBill / 60);
- end;
- else
- exit;
- end;
-
- // if quantities are equal to the current quantities in Project Planning Lines, then there is no need to create a new Project Journal Line.
- // The Project Journal LIne has been deleted because of posting, and that is fine. Just tell the synch engine to do nothing (skip)
- if (FSQuantity = QuantityCurrentlyConsumed) and (FSQuantityToBill = QuantityCurrentlyInvoiced) then begin
- RecordState := RecordState::NotFound;
- SynchAction := SynchAction::Skip;
- DeletionConflictHandled := true;
- exit;
- end;
-
- // there is a difference between currently consumed/invoiced quantities and Quantity/Quantity to Bill
- // we must instruct the synch engine to insert a new Project Journal Line (like the "Restore Record" deletion conflict strategy)
- // The OnBeforeInsert subscriber will make sure that the Quantities on the new Project Journal Line take the current quantities in consideration
- IntegrationRecSynchInvoke.PrepareNewDestination(IntegrationTableMapping, SourceRecordRef, CoupledRecordRef);
- RecordState := RecordState::Coupled;
- SynchAction := SynchAction::Insert;
-
- // delete the broken couplings (those journal lines that are coupled to this CRM Id but they can't be found by SystemId)
- CRMIntegrationRecord.SetRange("CRM ID", CRMId);
- CRMIntegrationRecord.SetRange("Table ID", Database::"Job Journal Line");
- if CRMIntegrationRecord.FindSet() then
- repeat
- if not JobJournalLine.GetBySystemId(CRMIntegrationRecord."Integration ID") then
- CRMIntegrationRecord.Delete();
- until CRMIntegrationRecord.Next() = 0;
-
- DeletionConflictHandled := true;
- end;
-
- local procedure SetCurrentProjectPlanningQuantities(var SourceRecordRef: RecordRef; var QuantityCurrentlyConsumed: Decimal; var QuantityCurrentlyInvoiced: Decimal)
- var
- FSWorkOrderProduct: Record "FS Work Order Product";
- FSWorkOrderService: Record "FS Work Order Service";
- FSBookableResourceBooking: Record "FS Bookable Resource Booking";
- CRMIntegrationRecord: Record "CRM Integration Record";
- JobUsageLink: Record "Job Usage Link";
- JobPlanningLine: Record "Job Planning Line";
- ExternalId: Guid;
- ConsideronlyBudgetLineForConsumption: Boolean;
- begin
- QuantityCurrentlyConsumed := 0;
- QuantityCurrentlyInvoiced := 0;
- case SourceRecordRef.Number() of
- Database::"FS Work Order Product":
- begin
- SourceRecordRef.SetTable(FSWorkOrderProduct);
- ExternalId := FSWorkOrderProduct.WorkOrderProductId;
- end;
- Database::"FS Work Order Service":
- begin
- SourceRecordRef.SetTable(FSWorkOrderService);
- ExternalId := FSWorkOrderService.WorkOrderServiceId;
- if not IsNullGuid(FSWorkOrderService.Booking) then
- if FSBookableResourceBooking.Get(FSWorkOrderService.Booking) then
- if CRMIntegrationRecord.FindByCRMID(FSBookableResourceBooking.Resource) then
- ConsideronlyBudgetLineForConsumption := true;
- end;
- else
- exit;
- end;
- JobUsageLink.SetRange("External Id", ExternalId);
- if JobUsageLink.FindSet() then
- repeat
- if JobPlanningLine.Get(JobUsageLink."Job No.", JobUsageLink."Job Task No.", JobUsageLink."Line No.") then begin
- JobPlanningLine.CalcFields("Qty. Invoiced", "Qty. Transferred to Invoice");
- case ConsideronlyBudgetLineForConsumption of
- true:
- if JobPlanningLine."Line Type" = JobPlanningLine."Line Type"::Budget then
- QuantityCurrentlyConsumed += JobPlanningLine.Quantity;
- false:
- QuantityCurrentlyConsumed += JobPlanningLine.Quantity;
- end;
- if JobPlanningLine."Qty. Invoiced" > 0 then
- QuantityCurrentlyInvoiced += JobPlanningLine."Qty. Invoiced"
- else begin
- // try other invoicing quantities
- ;
- if JobPlanningLine."Qty. Transferred to Invoice" > 0 then
- QuantityCurrentlyInvoiced += JobPlanningLine."Qty. Transferred to Invoice"
- else
- QuantityCurrentlyInvoiced += JobPlanningLine."Qty. to Transfer to Invoice";
- end;
- end;
- until JobUsageLink.Next() = 0;
- end;
-
- [EventSubscriber(ObjectType::Codeunit, Codeunit::"Job Link Usage", 'OnAfterApplyUsage', '', false, false)]
- local procedure HandleOnAfterApplyUsage(var JobLedgerEntry: Record "Job Ledger Entry"; var JobJournalLine: Record "Job Journal Line")
- var
- FSConnectionSetup: Record "FS Connection Setup";
- FSWorkOrderProduct: Record "FS Work Order Product";
- FSWorkOrderService: Record "FS Work Order Service";
- FSBookableResourceBooking: Record "FS Bookable Resource Booking";
- CRMIntegrationRecord: Record "CRM Integration Record";
- JobPlanningLine: Record "Job Planning Line";
- JobUsageLink: Record "Job Usage Link";
- begin
- if not FSConnectionSetup.ReadPermission() then begin
- Session.LogMessage('0000MMX', InsufficientPermissionsTxt, Verbosity::Warning, DataClassification::SystemMetadata, TelemetryScope::ExtensionPublisher, 'Category', CategoryTok);
- exit;
- end;
-
- if not FSConnectionSetup.IsEnabled() then
- exit;
-
- JobUsageLink.SetRange("Entry No.", JobLedgerEntry."Entry No.");
- if not JobUsageLink.FindFirst() then begin
- Session.LogMessage('0000MN8', NoProjectUsageLinkTxt, Verbosity::Warning, DataClassification::SystemMetadata, TelemetryScope::ExtensionPublisher, 'Category', CategoryTok);
- exit;
- end;
-
- if not JobPlanningLine.Get(JobUsageLink."Job No.", JobUsageLink."Job Task No.", JobUsageLink."Line No.") then begin
- Session.LogMessage('0000MN9', NoProjectPlanningLineTxt, Verbosity::Warning, DataClassification::SystemMetadata, TelemetryScope::ExtensionPublisher, 'Category', CategoryTok);
- exit;
- end;
-
- // set "Qty. to Transfer to Invoice" on Job Planning Line
- if JobJournalLine."Qty. to Transfer to Invoice" <> 0 then begin
- JobPlanningLine."Qty. to Transfer to Invoice" := JobJournalLine."Qty. to Transfer to Invoice";
- JobPlanningLine.Modify();
- end;
-
- // in Project Usage Link, save the id of the entity coupled to the job journal line
- if not CRMIntegrationRecord.ReadPermission() then begin
- Session.LogMessage('0000MMY', InsufficientPermissionsTxt, Verbosity::Warning, DataClassification::SystemMetadata, TelemetryScope::ExtensionPublisher, 'Category', CategoryTok);
- exit;
- end;
- if not CRMIntegrationRecord.FindByRecordID(JobJournalLine.RecordId()) then
- exit;
- JobUsageLink."External Id" := CRMIntegrationRecord."CRM ID";
- JobUsageLink.Modify();
-
- // write back consumption data to Field Service
- if not FSWorkOrderProduct.WritePermission() then
- exit;
- if not FSWorkOrderService.WritePermission() then
- exit;
- Codeunit.Run(Codeunit::"CRM Integration Management");
- if FSWorkOrderProduct.Get(CRMIntegrationRecord."CRM ID") then begin
- FSWorkOrderProduct.QuantityConsumed += JobPlanningLine.Quantity;
- if not TryModifyWorkOrderProduct(FSWorkOrderProduct) then begin
- Session.LogMessage('0000MMZ', UnableToModifyWOPTxt, Verbosity::Warning, DataClassification::SystemMetadata, TelemetryScope::ExtensionPublisher, 'Category', CategoryTok);
- ClearLastError();
- end;
- exit;
- end;
- if FSWorkOrderService.Get(CRMIntegrationRecord."CRM ID") then begin
- // if the work order service has a bookable resource that is coupled to a Business Central resource
- // then we only register consumption for the budget line
- // not for the Billable line, as this will lead to double consumption registering
- if not IsNullGuid(FSWorkOrderService.Booking) then
- if FSBookableResourceBooking.Get(FSWorkOrderService.Booking) then
- if CRMIntegrationRecord.FindByCRMID(FSBookableResourceBooking.Resource) then
- if JobPlanningLine."Line Type" <> JobPlanningLine."Line Type"::Budget then
- exit;
-
- FSWorkOrderService.DurationConsumed += (60 * JobPlanningLine.Quantity);
- if not TryModifyWorkOrderService(FSWorkOrderService) then begin
- Session.LogMessage('0000MN0', UnableToModifyWOSTxt, Verbosity::Warning, DataClassification::SystemMetadata, TelemetryScope::ExtensionPublisher, 'Category', CategoryTok);
- ClearLastError();
- end;
- end;
- end;
-
- [TryFunction]
- local procedure TryModifyWorkOrderProduct(var FSWorkOrderProduct: Record "FS Work Order Product")
- begin
- FSWorkOrderProduct.Modify();
- end;
-
- [TryFunction]
- local procedure TryModifyWorkOrderService(var FSWorkOrderService: Record "FS Work Order Service")
- begin
- FSWorkOrderService.Modify();
- end;
-
- local procedure SetJobJournalLineTypesAndNo(var FSConnectionSetup: Record "FS Connection Setup"; var SourceRecordRef: RecordRef; var JobJournalLine: Record "Job Journal Line")
- var
- CRMIntegrationRecord: Record "CRM Integration Record";
- FSBookableResourceBooking: Record "FS Bookable Resource Booking";
- FSBookableResource: Record "FS Bookable Resource";
- FSWorkOrderProduct: Record "FS Work Order Product";
- FSWorkOrderService: Record "FS Work Order Service";
- Resource: Record Resource;
- Item: Record Item;
- CRMProduct: Record "CRM Product";
- BudgetJobJournalLine: Record "Job Journal Line";
- CRMProductName: Codeunit "CRM Product Name";
- BookableResourceCoupled: Boolean;
- BookableResourceCoupledToDeleted: Boolean;
- FSQuantity: Decimal;
- FSQuantityToBill: Decimal;
- QuantityCurrentlyConsumed: Decimal;
- QuantityCurrentlyInvoiced: Decimal;
- begin
- SetCurrentProjectPlanningQuantities(SourceRecordRef, QuantityCurrentlyConsumed, QuantityCurrentlyInvoiced);
- case SourceRecordRef.Number of
- Database::"FS Work Order Product":
- begin
- JobJournalLine.Validate(Type, JobJournalLine.Type::Item);
- SourceRecordRef.SetTable(FSWorkOrderProduct);
- FSQuantity := FSWorkOrderProduct.Quantity;
- FSQuantityToBill := FSWorkOrderProduct.QtyToBill;
-
- if not CRMIntegrationRecord.FindByCRMID(FSWorkOrderProduct.Product) then
- Error(MustBeCoupledErr, FSWorkOrderProduct.FieldCaption(Product), Format(FSWorkOrderProduct.Product), Item.TableCaption());
-
- if not CRMProduct.Get(FSWorkOrderProduct.Product) then
- Error(DoesntExistErr, CRMProduct.TableCaption(), Format(FSWorkOrderProduct.Product), CRMProductName.FSServiceName());
-
- if not Item.GetBySystemId(CRMIntegrationRecord."Integration ID") then
- Error(CoupledToDeletedErr, FSWorkOrderProduct.FieldCaption(Product), Format(FSWorkOrderProduct.Product), Item.TableCaption());
-
- JobJournalLine.Validate("Entry Type", JobJournalLine."Entry Type"::Usage);
- if Item.Type = Item.Type::"Non-Inventory" then
- JobJournalLine.Validate("Line Type", JobJournalLine."Line Type"::" ")
- else
- JobJournalLine.Validate("Line Type", JobJournalLine."Line Type"::Billable);
- // set Item, but for work order products we must keep its Business Central Unit Cost
- JobJournalLine.Validate("No.", Item."No.");
- JobJournalLine.Validate("Unit Cost", Item."Unit Cost");
- JobJournalLine.Validate(Quantity, FSQuantity - QuantityCurrentlyConsumed);
- JobJournalLine.Validate("Unit Price", Item."Unit Price");
- JobJournalLine.Validate("Qty. to Transfer to Invoice", FSQuantityToBill - QuantityCurrentlyInvoiced);
- end;
- Database::"FS Work Order Service":
- begin
- SourceRecordRef.SetTable(FSWorkOrderService);
- FSQuantity := FSWorkOrderService.Duration;
- FSQuantityToBill := FSWorkOrderService.DurationToBill;
- FSQuantity := (FSQuantity / 60);
- FSQuantityToBill := (FSQuantityToBill / 60);
-
- if not CRMProduct.Get(FSWorkOrderService.Service) then
- Error(DoesntExistErr, FSWorkOrderService.FieldCaption(Service), Format(FSWorkOrderService.Service), FSConnectionSetup."Server Address");
-
- if not CRMIntegrationRecord.FindByCRMID(FSWorkOrderService.Service) then
- Error(MustBeCoupledErr, FSWorkOrderService.FieldCaption(Service), CRMProduct.ProductNumber, Item.TableCaption());
-
- if not Item.GetBySystemId(CRMIntegrationRecord."Integration ID") then
- Error(CoupledToDeletedErr, FSWorkOrderService.FieldCaption(Service), CRMProduct.ProductNumber, Item.TableCaption());
-
- if Item.Type = Item.Type::Inventory then
- Error(CoupledToNonServiceErr, FSWorkOrderService.FieldCaption(Service), CRMProduct.ProductNumber, Item."No.");
-
- if Item.Blocked then
- Error(CoupledToBlockedItemErr, FSWorkOrderService.FieldCaption(Service), CRMProduct.ProductNumber, Item."No.");
-
- if Item.Type = Item.Type::Service then
- if Item."Base Unit of Measure" <> FSConnectionSetup."Hour Unit of Measure" then
- Error(CoupledToItemWithWrongUOMErr, FSWorkOrderService.FieldCaption(Service), CRMProduct.ProductNumber, Item."No.", FSConnectionSetup."Hour Unit of Measure");
-
- JobJournalLine.Validate("Entry Type", JobJournalLine."Entry Type"::Usage);
-
- // if the work order service has a booking with a resource that is coupled to Business Central resource
- // in this case, make an extra Budget line for the resource
- // the extra line will be coupled in OnAfterInsertRecord subscriber
- if FSBookableResourceBooking.Get(FSWorkOrderService.Booking) then begin
- Clear(CRMIntegrationRecord);
- if CRMIntegrationRecord.FindByCRMID(FSBookableResourceBooking.Resource) then
- BookableResourceCoupled := true;
-
- if not Resource.GetBySystemId(CRMIntegrationRecord."Integration ID") then
- BookableResourceCoupledToDeleted := true;
-
- if not FSBookableResource.Get(FSBookableResourceBooking.Resource) then
- BookableResourceCoupledToDeleted := true;
-
- if Item.Type = Item.Type::Service then
- if BookableResourceCoupled then
- if not BookableResourceCoupledToDeleted then begin
- // insert and couple an additional budget Project Journal Line, for posting cost of the resource who is performing the service
- BudgetJobJournalLine.TransferFields(JobJournalLine, true);
- BudgetJobJournalLine."Line No." := JobJournalLine."Line No." - BudgetJobJournalLineNoOffset();
- BudgetJobJournalLine."Line Type" := JobJournalLine."Line Type"::Budget;
- BudgetJobJournalLine.Validate(Type, JobJournalLine.Type::Resource);
- BudgetJobJournalLine.Validate("No.", Resource."No.");
- BudgetJobJournalLine.Validate(Description, FSBookableResourceBooking.Name);
- BudgetJobJournalLine.Validate("Unit of Measure Code", FSConnectionSetup."Hour Unit of Measure");
- BudgetJobJournalLine.Validate("Unit Cost", Resource."Unit Cost");
- BudgetJobJournalLine.Validate(Quantity, FSQuantity - QuantityCurrentlyConsumed);
- BudgetJobJournalLine.Validate("Unit Price", 0);
- BudgetJobJournalLine.Validate("Qty. to Transfer to Invoice", 0);
- BudgetJobJournalLine.Insert(true);
- end;
- end;
-
- if Item.Type = Item.Type::"Non-Inventory" then
- JobJournalLine."Line Type" := JobJournalLine."Line Type"::" "
- else
- JobJournalLine.Validate("Line Type", JobJournalLine."Line Type"::Billable);
- JobJournalLine.Validate(Type, JobJournalLine.Type::Item);
- // set Item, but must keep its Business Central Unit Cost
- JobJournalLine.Validate("No.", Item."No.");
- JobJournalLine.Validate(Description, CopyStr(FSWorkOrderService.Name, 1, MaxStrLen(JobJournalLine.Description)));
- JobJournalLine.Validate("Unit of Measure Code", Item."Base Unit of Measure");
- JobJournalLine.Validate("Unit Cost", Item."Unit Cost");
- JobJournalLine.Validate(Quantity, FSQuantity - QuantityCurrentlyConsumed);
- JobJournalLine.Validate("Unit Price", Item."Unit Price");
- JobJournalLine.Validate("Qty. to Transfer to Invoice", FSQuantityToBill - QuantityCurrentlyInvoiced);
- end;
- end;
- end;
-
- [EventSubscriber(ObjectType::Codeunit, Codeunit::"CDS Integration Mgt.", 'OnHasCompanyIdField', '', false, false)]
- local procedure HandleOnHasCompanyIdField(TableId: Integer; var HasField: Boolean)
- var
- FSConnectionSetup: Record "FS Connection Setup";
- begin
- if not FSConnectionSetup.IsEnabled() then
- exit;
-
- case TableId of
- Database::"FS Work Order",
- Database::"FS Bookable Resource",
- Database::"FS Customer Asset",
- Database::"FS Work Order Product",
- Database::"FS Work Order Service",
- Database::"FS Resource Pay Type",
- Database::"FS Project Task",
- Database::"FS Warehouse":
- HasField := true;
- end;
- end;
-
- [EventSubscriber(ObjectType::Codeunit, Codeunit::"Int. Rec. Uncouple Invoke", 'OnBeforeUncoupleRecord', '', false, false)]
- local procedure HandleOnBeforeUncoupleRecord(IntegrationTableMapping: Record "Integration Table Mapping"; var LocalRecordRef: RecordRef; var IntegrationRecordRef: RecordRef)
- var
- FSConnectionSetup: Record "FS Connection Setup";
- HasField: Boolean;
- begin
- if not FSConnectionSetup.IsEnabled() then
- exit;
-
- CDSIntegrationMgt.OnHasCompanyIdField(IntegrationRecordRef.Number(), HasField);
- if not HasField then
- exit;
-
- if IntegrationRecordRef.IsEmpty() then
- exit;
-
- CDSIntegrationMgt.ResetCompanyId(IntegrationRecordRef);
- end;
-
- [EventSubscriber(ObjectType::Codeunit, Codeunit::"CRM Integration Table Synch.", 'OnQueryPostFilterIgnoreRecord', '', false, false)]
- local procedure OnQueryPostFilterIgnoreRecord(SourceRecordRef: RecordRef; var IgnoreRecord: Boolean)
- var
- FSConnectionSetup: Record "FS Connection Setup";
- FSBookableResource: Record "FS Bookable Resource";
- JobTask: Record "Job Task";
- Job: Record Job;
- begin
- if IgnoreRecord then
- exit;
-
- if FSConnectionSetup.IsEnabled() then
- exit;
-
- case SourceRecordRef.Number() of
- Database::"FS Bookable Resource":
- begin
- SourceRecordRef.SetTable(FSBookableResource);
- IgnoreRecord := (FSBookableResource.ResourceType in [FSBookableResource.ResourceType::Contact, FSBookableResource.ResourceType::Crew, FSBookableResource.ResourceType::Facility, FSBookableResource.ResourceType::Pool]);
- end;
- Database::"Job Task":
- begin
- SourceRecordRef.SetTable(JobTask);
- if not Job.Get(JobTask."Job No.") then begin
- IgnoreRecord := true;
- exit;
- end;
-
- if Job.Blocked <> Job.Blocked::" " then begin
- IgnoreRecord := true;
- exit;
- end;
-
- if Job.Status <> Job.Status::Open then begin
- IgnoreRecord := true;
- exit;
- end;
-
- IgnoreRecord := (not Job."Apply Usage Link");
- end;
- end;
- end;
-
- [EventSubscriber(ObjectType::Codeunit, Codeunit::"Integration Table Synch.", 'OnAfterInitSynchJob', '', true, true)]
- local procedure LogTelemetryOnAfterInitSynchJob(ConnectionType: TableConnectionType; IntegrationTableID: Integer)
- var
- FSConnectionSetup: Record "FS Connection Setup";
- IntegrationTableMapping: Record "Integration Table Mapping";
- FeatureTelemetry: Codeunit "Feature Telemetry";
- IntegrationRecordRef: RecordRef;
- TelemetryCategories: Dictionary of [Text, Text];
- IntegrationTableName: Text;
- begin
- if ConnectionType <> TableConnectionType::CRM then
- exit;
-
- if FSConnectionSetup.IsEnabled() then
- exit;
-
- IntegrationTableMapping.SetRange(Type, IntegrationTableMapping.Type::Dataverse);
- IntegrationTableMapping.SetRange("Delete After Synchronization", false);
- IntegrationTableMapping.SetRange("Multi Company Synch. Enabled", true);
- IntegrationTableMapping.SetRange("Table ID", IntegrationTableID);
- if not IntegrationTableMapping.IsEmpty() then begin
- FeatureTelemetry.LogUptake('0000LCO', 'Dataverse Multi-Company Synch', Enum::"Feature Uptake Status"::Used);
- FeatureTelemetry.LogUsage('0000LCQ', 'Dataverse Multi-Company Synch', 'Entity sync');
- Session.LogMessage('0000LCS', MultiCompanySyncEnabledTxt, Verbosity::Normal, DataClassification::SystemMetadata, TelemetryScope::ExtensionPublisher, 'Category', CategoryTok);
- end;
- IntegrationTableMapping.SetRange("Table ID");
- IntegrationTableMapping.SetRange("Integration Table ID", IntegrationTableID);
- if not IntegrationTableMapping.IsEmpty() then begin
- FeatureTelemetry.LogUptake('0000LCP', 'Dataverse Multi-Company Synch', Enum::"Feature Uptake Status"::Used);
- FeatureTelemetry.LogUsage('0000LCR', 'Dataverse Multi-Company Synch', 'Entity sync');
- Session.LogMessage('0000LCT', MultiCompanySyncEnabledTxt, Verbosity::Normal, DataClassification::SystemMetadata, TelemetryScope::ExtensionPublisher, 'Category', CategoryTok);
- end;
-
- TelemetryCategories.Add('Category', CategoryTok);
- TelemetryCategories.Add('IntegrationTableID', Format(IntegrationTableID));
- if TryCalculateTableName(IntegrationRecordRef, IntegrationTableID, IntegrationTableName) then
- TelemetryCategories.Add('IntegrationTableName', IntegrationTableName);
-
- if IntegrationTableID in [
- Database::"FS Project Task",
- Database::"FS Work Order Product",
- Database::"FS Work Order Service",
- Database::"FS Customer Asset",
- Database::"FS Bookable Resource",
- Database::"FS Resource Pay Type",
- Database::"FS Warehouse"] then begin
- Session.LogMessage('0000M9F', FSEntitySynchTxt, Verbosity::Normal, DataClassification::SystemMetadata, TelemetryScope::ExtensionPublisher, TelemetryCategories);
- FeatureTelemetry.LogUsage('0000M9E', 'Field Service Integration', 'Entity synch');
- FeatureTelemetry.LogUptake('0000M9D', 'Field Service Integration', Enum::"Feature Uptake Status"::Used);
- exit;
- end;
- end;
-
- [TryFunction]
- local procedure TryCalculateTableName(var IntegrationRecordRef: RecordRef; TableId: Integer; var TableName: Text)
- begin
- IntegrationRecordRef.Open(TableId);
- TableName := IntegrationRecordRef.Name();
- end;
-
- local procedure SetCompanyId(DestinationRecordRef: RecordRef)
- begin
- if CDSIntegrationImpl.CheckCompanyIdNoTelemetry(DestinationRecordRef) then
- exit;
-
- CDSIntegrationMgt.SetCompanyId(DestinationRecordRef);
- end;
-
- local procedure GetSourceDestCode(SourceRecordRef: RecordRef; DestinationRecordRef: RecordRef): Text
- begin
- if (SourceRecordRef.Number() <> 0) and (DestinationRecordRef.Number() <> 0) then
- exit(SourceRecordRef.Name() + '-' + DestinationRecordRef.Name());
- exit('');
- end;
-
- [IntegrationEvent(false, false)]
- local procedure OnSetUpNewLineOnNewLine(var JobJournalLine: Record "Job Journal Line"; var JobJournalTemplate: Record "Job Journal Template"; var JobJournalBatch: Record "Job Journal Batch"; var Handled: Boolean);
- begin
- end;
-}
\ No newline at end of file
diff --git a/Apps/W1/FieldServiceIntegration/app/src/Codeunits/FSIntegrationMgt.Codeunit.al b/Apps/W1/FieldServiceIntegration/app/src/Codeunits/FSIntegrationMgt.Codeunit.al
deleted file mode 100644
index 10eeca4245..0000000000
--- a/Apps/W1/FieldServiceIntegration/app/src/Codeunits/FSIntegrationMgt.Codeunit.al
+++ /dev/null
@@ -1,217 +0,0 @@
-// ------------------------------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License. See License.txt in the project root for license information.
-// ------------------------------------------------------------------------------------------------
-namespace Microsoft.Integration.DynamicsFieldService;
-
-using Microsoft.Integration.Dataverse;
-using Microsoft.Integration.D365Sales;
-using System;
-using Microsoft.Utilities;
-
-codeunit 6615 "FS Integration Mgt."
-{
- var
- CRMIntegrationManagement: Codeunit "CRM Integration Management";
- OAuthConnectionStringFormatTok: Label 'Url=%1; AccessToken=%2; ProxyVersion=%3; %4', Locked = true;
- ConnectionStringFormatTok: Label 'Url=%1; UserName=%2; Password=%3; ProxyVersion=%4; %5', Locked = true;
- UserDoesNotExistCRMErr: Label 'There is no user with email address %1 in %2. Enter a valid email address.', Comment = '%1 = User email address, %2 = Dataverse service name';
- MicrosoftDynamicsFSIntegrationTxt: Label 'bcbi_FieldServiceIntegration', Locked = true;
- TeamNotFoundErr: Label 'Cannot find the default owning team for the coupled business unit %1 selected on page %2. To continue, you can select another business unit or revert to the default business unit that was created during setup.', Comment = '%1 = business unit name, %2 = setup page caption';
- TeamNotFoundTxt: Label 'The team was not found.', Locked = true;
- CategoryTok: Label 'AL Field Service Integration', Locked = true;
- RoleNotFoundForBusinessUnitTxt: Label 'Integration role is not found for business unit.', Locked = true;
- IntegrationRoleNotFoundErr: Label 'There is no integration role %1 for business unit %2.', Comment = '%1 = role name, %2 = business unit name';
- CannotAssignRoleToTeamTxt: Label 'Cannot assign role to team.', Locked = true;
- CannotAssignRoleToTeamErr: Label 'Cannot assign role %3 to team %1 for business unit %2.', Comment = '%1 = team name, %2 = business unit name, %3 = security role name';
- FieldServiceAdministratorProfileIdLbl: label '8d988915-e392-e111-9d8c-000c2959f9b8', Locked = true;
- CannotAssignFieldSecurityProfileToUserTelemetryLbl: Label 'Cannot assign field security profile to integration user.', Locked = true;
- CannotAssignFieldSecurityProfileToUserQst: Label 'To enable the setup, you must sign in to %1 as administrator and assign the column security profile "Field Service - Administrator" to the Business Central integration user. Do you want to open the Business Central integration user card in %1?', Comment = '%1 - Dataverse environment URL';
- NoPermissionsTxt: Label 'No permissions.', Locked = true;
-
- [TryFunction]
- internal procedure ImportFSSolution(ServerAddress: Text; IntegrationUserEmail: Text; AdminUserEmail: Text; AdminUserPassword: SecretText; AccessToken: SecretText; AdminADDomain: Text; ProxyVersion: Integer; ForceRedeploy: Boolean; ImportSolutionFailed: Boolean)
- var
- CDSConnectionSetup: Record "CDS Connection Setup";
- CRMRole: Record "CRM Role";
- CDSIntegrationImpl: Codeunit "CDS Integration Impl.";
- CRMProductName: Codeunit "CRM Product Name";
- PageCDSConnectionSetup: Page "CDS Connection Setup";
- CRMHelper: DotNet CrmHelper;
- UserGUID: Guid;
- IntegrationRoleGUID: Guid;
- FieldSecurityProfileGUID: Guid;
- DefaultOwningTeamGUID: Guid;
- TempConnectionStringWithPlaceholders: Text;
- TempConnectionString: SecretText;
- SolutionInstalled: Boolean;
- SolutionOutdated: Boolean;
- ImportSolution: Boolean;
- begin
- CRMIntegrationManagement.CheckConnectRequiredFields(ServerAddress, IntegrationUserEmail);
- CDSConnectionSetup.Get();
- if not AccessToken.IsEmpty() then begin
- TempConnectionStringWithPlaceholders :=
- StrSubstNo(OAuthConnectionStringFormatTok, ServerAddress, '%1', ProxyVersion, CDSIntegrationImpl.GetAuthenticationTypeToken(CDSConnectionSetup));
- TempConnectionString := SecretStrSubstNo(TempConnectionStringWithPlaceholders, AccessToken);
- end
- else
- if AdminADDomain <> '' then begin
- TempConnectionStringWithPlaceholders := StrSubstNo(
- ConnectionStringFormatTok, ServerAddress, AdminUserEmail, '%1', ProxyVersion, CDSIntegrationImpl.GetAuthenticationTypeToken(CDSConnectionSetup, AdminADDomain));
- TempConnectionString := SecretStrSubstNo(TempConnectionStringWithPlaceholders, AdminUserPassword);
- end
- else begin
- TempConnectionStringWithPlaceholders := StrSubstNo(
- ConnectionStringFormatTok, ServerAddress, AdminUserEmail, '%1', ProxyVersion, CDSIntegrationImpl.GetAuthenticationTypeToken(CDSConnectionSetup));
- TempConnectionString := SecretStrSubstNo(TempConnectionStringWithPlaceholders, AdminUserPassword);
- end;
-
- if CDSConnectionSetup."Authentication Type" = CDSConnectionSetup."Authentication Type"::OAuth then
- TempConnectionString := CDSIntegrationImpl.ReplaceUserNamePasswordInConnectionstring(CDSConnectionSetup, AdminUserEmail, AdminUserPassword);
-
- if not InitializeFSConnection(CRMHelper, TempConnectionString) then
- CRMIntegrationManagement.ProcessConnectionFailures();
-
- UserGUID := CRMHelper.GetUserId(IntegrationUserEmail);
- if IsNullGuid(UserGUID) then
- Error(UserDoesNotExistCRMErr, IntegrationUserEmail, CRMProductName.CDSServiceName());
-
- SolutionInstalled := CRMHelper.CheckSolutionPresence(MicrosoftDynamicsFSIntegrationTxt);
- if SolutionInstalled then
- SolutionOutdated := CRMIntegrationManagement.IsSolutionOutdated(TempConnectionStringWithPlaceholders, MicrosoftDynamicsFSIntegrationTxt);
-
- if ForceRedeploy then
- ImportSolution := (not SolutionInstalled) or SolutionOutdated
- else
- ImportSolution := not SolutionInstalled;
-
- if ImportSolution then
- if not ImportDefaultFSSolution(CRMHelper) then begin
- ImportSolutionFailed := true;
- CRMIntegrationManagement.ProcessConnectionFailures();
- end;
-
- IntegrationRoleGUID := CRMHelper.GetRoleId(GetFieldServiceIntegrationRoleID());
- if not CRMHelper.CheckRoleAssignedToUser(UserGUID, IntegrationRoleGUID) then
- CRMHelper.AssociateUserWithRole(UserGUID, IntegrationRoleGUID);
-
- if CDSIntegrationImpl.IsIntegrationEnabled() then begin
- CDSIntegrationImpl.RegisterConnection();
- CDSIntegrationImpl.ActivateConnection();
- CDSConnectionSetup.Get();
- DefaultOwningTeamGUID := CDSIntegrationImpl.GetOwningTeamId(CDSConnectionSetup);
- if IsNullGuid(DefaultOwningTeamGUID) then begin
- Session.LogMessage('0000MWY', TeamNotFoundTxt, Verbosity::Normal, DataClassification::SystemMetadata, TelemetryScope::ExtensionPublisher, 'Category', CategoryTok);
- Error(TeamNotFoundErr, CDSIntegrationImpl.GetDefaultBusinessUnitName(), PageCDSConnectionSetup.Caption);
- end;
- CRMRole.SetRange(ParentRoleId, IntegrationRoleGUID);
- CRMRole.SetRange(BusinessUnitId, CDSIntegrationImpl.GetCoupledBusinessUnitId());
- if not CRMRole.FindFirst() then begin
- Session.LogMessage('0000MWZ', RoleNotFoundForBusinessUnitTxt, Verbosity::Normal, DataClassification::SystemMetadata, TelemetryScope::ExtensionPublisher, 'Category', CategoryTok);
- Error(IntegrationRoleNotFoundErr, IntegrationRoleGUID, CDSIntegrationImpl.GetDefaultBusinessUnitName());
- end;
- if not CDSIntegrationImpl.AssignTeamRole(CrmHelper, DefaultOwningTeamGUID, CRMRole.RoleId) then begin
- Session.LogMessage('0000MX0', CannotAssignRoleToTeamTxt, Verbosity::Normal, DataClassification::SystemMetadata, TelemetryScope::ExtensionPublisher, 'Category', CategoryTok);
- Error(CannotAssignRoleToTeamErr, DefaultOwningTeamGUID, CDSIntegrationImpl.GetDefaultBusinessUnitName(), CRMRole.Name);
- end;
- if not CDSIntegrationImpl.AssignTeamRole(CrmHelper, DefaultOwningTeamGUID, CRMRole.RoleId) then begin
- Session.LogMessage('0000MX1', CannotAssignRoleToTeamTxt, Verbosity::Normal, DataClassification::SystemMetadata, TelemetryScope::ExtensionPublisher, 'Category', CategoryTok);
- Error(CannotAssignRoleToTeamErr, DefaultOwningTeamGUID, CDSIntegrationImpl.GetDefaultBusinessUnitName(), CRMRole.Name);
- end;
- end;
-
- FieldSecurityProfileGUID := TextToGuid(FieldServiceAdministratorProfileIdLbl);
- if not CRMHelper.CheckFieldSecurityProfileAssignedToUser(UserGUID, FieldSecurityProfileGUID) then
- CRMHelper.AssociateUserWithFieldSecurityProfile(UserGUID, FieldSecurityProfileGUID);
-
- if not CRMHelper.CheckFieldSecurityProfileAssignedToUser(UserGUID, FieldSecurityProfileGUID) then begin
- Session.LogMessage('0000MX2', CannotAssignFieldSecurityProfileToUserTelemetryLbl, Verbosity::Warning, DataClassification::SystemMetadata, TelemetryScope::ExtensionPublisher, 'Category', CategoryTok);
- if Confirm(StrSubstNo(CannotAssignFieldSecurityProfileToUserQst, CDSConnectionSetup."Server Address")) then
- CDSIntegrationImpl.ShowIntegrationUser(CDSConnectionSetup);
- Error('');
- end
- end;
-
- [TryFunction]
- local procedure TryTouchFSSolutionEntities()
- var
- FSProjectTask: Record "FS Project Task";
- Cnt: Integer;
- begin
- Cnt := FSProjectTask.Count();
- if Cnt > 0 then
- exit;
- end;
-
- internal procedure IsFSSolutionInstalled(): Boolean
- begin
- if TryTouchFSSolutionEntities() then
- exit(true);
-
- ClearLastError();
- exit(false);
- end;
-
- [TryFunction]
- [NonDebuggable]
- local procedure InitializeFSConnection(var CRMHelper: DotNet CrmHelper; ConnectionString: SecretText)
- var
- FSConnectionSetup: Record "FS Connection Setup";
- begin
- if ConnectionString.IsEmpty() then begin
- FSConnectionSetup.Get();
- CRMHelper := CRMHelper.CrmHelper(FSConnectionSetup.GetConnectionStringWithCredentials().Unwrap());
- end else
- CRMHelper := CRMHelper.CrmHelper(ConnectionString.Unwrap());
- if not CRMIntegrationManagement.TestCRMConnection(CRMHelper) then
- CRMIntegrationManagement.ProcessConnectionFailures();
- end;
-
- [TryFunction]
- local procedure ImportDefaultFSSolution(var CRMHelper: DotNet CrmHelper)
- begin
- CRMHelper.ImportDefaultFieldServiceSolution()
- end;
-
- local procedure GetFieldServiceIntegrationRoleID(): Text
- begin
- exit('c11b4fa8-956b-439d-8b3c-021e8736a78b');
- end;
-
- local procedure TextToGuid(TextVar: Text): Guid
- var
- GuidVar: Guid;
- begin
- if not Evaluate(GuidVar, TextVar) then;
- exit(GuidVar);
- end;
-
- [EventSubscriber(ObjectType::Table, Database::"Service Connection", 'OnRegisterServiceConnection', '', false, false)]
- local procedure RegisterFSConnectionOnRegisterServiceConnection(var ServiceConnection: Record "Service Connection")
- var
- FSConnectionSetup: Record "FS Connection Setup";
- RecRef: RecordRef;
- begin
- if not FSConnectionSetup.Get() then begin
- if not FSConnectionSetup.WritePermission() then begin
- Session.LogMessage('0000MYK', NoPermissionsTxt, Verbosity::Normal, DataClassification::SystemMetadata, TelemetryScope::ExtensionPublisher, 'Category', CategoryTok);
- exit;
- end;
- FSConnectionSetup.Init();
- FSConnectionSetup.Insert();
- end;
-
- RecRef.GetTable(FSConnectionSetup);
- ServiceConnection.Status := ServiceConnection.Status::Enabled;
- if not FSConnectionSetup."Is Enabled" then
- ServiceConnection.Status := ServiceConnection.Status::Disabled
- else
- if FSConnectionSetup.TestConnection() then
- ServiceConnection.Status := ServiceConnection.Status::Connected
- else
- ServiceConnection.Status := ServiceConnection.Status::Error;
- ServiceConnection.InsertServiceConnectionExtended(
- ServiceConnection, RecRef.RecordId, FSConnectionSetup.TableCaption(), FSConnectionSetup."Server Address", Page::"FS Connection Setup", Page::"FS Connection Setup Wizard");
- end;
-}
\ No newline at end of file
diff --git a/Apps/W1/FieldServiceIntegration/app/src/Codeunits/FSLookupFSTables.Codeunit.al b/Apps/W1/FieldServiceIntegration/app/src/Codeunits/FSLookupFSTables.Codeunit.al
deleted file mode 100644
index 85d78bb769..0000000000
--- a/Apps/W1/FieldServiceIntegration/app/src/Codeunits/FSLookupFSTables.Codeunit.al
+++ /dev/null
@@ -1,81 +0,0 @@
-// ------------------------------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License. See License.txt in the project root for license information.
-// ------------------------------------------------------------------------------------------------
-namespace Microsoft.Integration.DynamicsFieldService;
-
-using Microsoft.Integration.Dataverse;
-
-codeunit 6612 "FS Lookup FS Tables"
-{
- [EventSubscriber(ObjectType::Codeunit, Codeunit::"Lookup CRM Tables", 'OnLookupCRMTables', '', false, false)]
- local procedure HandleOnLookupCRMTables(CRMTableID: Integer; NAVTableId: Integer; SavedCRMId: Guid; var CRMId: Guid; IntTableFilter: Text; var Handled: Boolean)
- var
- FSConnectionSetup: Record "FS Connection Setup";
- begin
- if Handled then
- exit;
-
- if not FSConnectionSetup.IsEnabled() then
- exit;
-
- case CRMTableID of
- Database::"FS Bookable Resource":
- if LookupFSBookableResource(SavedCRMId, CRMId, IntTableFilter) then
- Handled := true;
- Database::"FS Customer Asset":
- if LookupFSCustomerAsset(SavedCRMId, CRMId, IntTableFilter) then
- Handled := true;
- end;
- end;
-
- local procedure LookupFSCustomerAsset(SavedCRMId: Guid; var CRMId: Guid; IntTableFilter: Text): Boolean
- var
- FSCustomerAsset: Record "FS Customer Asset";
- OriginalFSCustomerAsset: Record "FS Customer Asset";
- FSCustomerAssetList: Page "FS Customer Asset List";
- begin
- if not IsNullGuid(CRMId) then begin
- if FSCustomerAsset.Get(CRMId) then
- FSCustomerAssetList.SetRecord(FSCustomerAsset);
- if not IsNullGuid(SavedCRMId) then
- if OriginalFSCustomerAsset.Get(SavedCRMId) then
- FSCustomerAssetList.SetCurrentlyCoupledFSCustomerAsset(OriginalFSCustomerAsset);
- end;
- FSCustomerAsset.SetView(IntTableFilter);
- FSCustomerAssetList.SetTableView(FSCustomerAsset);
- FSCustomerAssetList.LookupMode(true);
- Commit();
- if FSCustomerAssetList.RunModal() = Action::LookupOK then begin
- FSCustomerAssetList.GetRecord(FSCustomerAsset);
- CRMId := FSCustomerAsset.CustomerAssetId;
- exit(true);
- end;
- exit(false);
- end;
-
- local procedure LookupFSBookableResource(SavedCRMId: Guid; var CRMId: Guid; IntTableFilter: Text): Boolean
- var
- FSBookableResource: Record "FS Bookable Resource";
- OriginalFSBookableResource: Record "FS Bookable Resource";
- FSBookableResourceList: Page "FS Bookable Resource List";
- begin
- if not IsNullGuid(CRMId) then begin
- if FSBookableResource.Get(CRMId) then
- FSBookableResourceList.SetRecord(FSBookableResource);
- if not IsNullGuid(SavedCRMId) then
- if OriginalFSBookableResource.Get(SavedCRMId) then
- FSBookableResourceList.SetCurrentlyCoupledFSBookableResource(OriginalFSBookableResource);
- end;
- FSBookableResource.SetView(IntTableFilter);
- FSBookableResourceList.SetTableView(FSBookableResource);
- FSBookableResourceList.LookupMode(true);
- Commit();
- if FSBookableResourceList.RunModal() = Action::LookupOK then begin
- FSBookableResourceList.GetRecord(FSBookableResource);
- CRMId := FSBookableResource.BookableResourceId;
- exit(true);
- end;
- exit(false);
- end;
-}
\ No newline at end of file
diff --git a/Apps/W1/FieldServiceIntegration/app/src/Codeunits/FSSetupDefaults.Codeunit.al b/Apps/W1/FieldServiceIntegration/app/src/Codeunits/FSSetupDefaults.Codeunit.al
deleted file mode 100644
index e8a3142e05..0000000000
--- a/Apps/W1/FieldServiceIntegration/app/src/Codeunits/FSSetupDefaults.Codeunit.al
+++ /dev/null
@@ -1,774 +0,0 @@
-// ------------------------------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License. See License.txt in the project root for license information.
-// ------------------------------------------------------------------------------------------------
-namespace Microsoft.Integration.DynamicsFieldService;
-
-using Microsoft.Integration.Dataverse;
-using Microsoft.Integration.D365Sales;
-using Microsoft.Integration.SyncEngine;
-using Microsoft.Utilities;
-using System.Threading;
-using Microsoft.Projects.Project.Job;
-using Microsoft.Service.Item;
-using Microsoft.Projects.Resources.Resource;
-using Microsoft.Projects.Project.Journal;
-using System.Environment.Configuration;
-using Microsoft.Inventory.Location;
-
-codeunit 6611 "FS Setup Defaults"
-{
- var
- CRMProductName: Codeunit "CRM Product Name";
- JobQueueCategoryLbl: Label 'BCI INTEG', Locked = true;
- OptionJobQueueCategoryLbl: Label 'BCI OPTION', Locked = true;
- CategoryTok: Label 'AL Field Service Integration', Locked = true;
- JobQueueEntryNameTok: Label ' %1 - %2 synchronization job.', Comment = '%1 = The Integration Table Name to synchronized (ex. CUSTOMER), %2 = CRM product name';
- IntegrationTablePrefixTok: Label 'Dynamics CRM', Comment = 'Product name', Locked = true;
-
- internal procedure ResetConfiguration(var FSConnectionSetup: Record "FS Connection Setup")
- var
- CDSIntegrationMgt: Codeunit "CDS Integration Mgt.";
- IsHandled: Boolean;
- begin
- IsHandled := false;
- OnBeforeResetConfiguration(FSConnectionSetup, IsHandled);
- if IsHandled then
- exit;
-
- CDSIntegrationMgt.RegisterConnection();
- CDSIntegrationMgt.ActivateConnection();
-
- ResetProjectTaskMapping(FSConnectionSetup, 'PROJECTTASK', true);
- ResetProjectJournalLineWOProductMapping(FSConnectionSetup, 'PJLINE-WORDERPRODUCT', true);
- ResetProjectJournalLineWOServiceMapping(FSConnectionSetup, 'PJLINE-WORDERSERVICE', true);
- ResetServiceItemCustomerAssetMapping(FSConnectionSetup, 'SVCITEM-CUSTASSET', true);
- ResetResourceBookableResourceMapping(FSConnectionSetup, 'RESOURCE-BOOKABLERSC', true);
- ResetLocationMapping(FSConnectionSetup, 'LOCATION', true);
- SetCustomIntegrationsTableMappings(FSConnectionSetup);
- end;
-
- internal procedure ResetProjectTaskMapping(var FSConnectionSetup: Record "FS Connection Setup"; IntegrationTableMappingName: Code[20]; ShouldRecreateJobQueueEntry: Boolean)
- var
- IntegrationTableMapping: Record "Integration Table Mapping";
- IntegrationFieldMapping: Record "Integration Field Mapping";
- JobTask: Record "Job Task";
- FSProjectTask: Record "FS Project Task";
- IsHandled: Boolean;
- begin
- IsHandled := false;
- OnBeforeResetProjectTaskMapping(IntegrationTableMappingName, ShouldRecreateJobQueueEntry, IsHandled);
- if IsHandled then
- exit;
-
- JobTask.Reset();
- JobTask.SetRange("Job Task Type", JobTask."Job Task Type"::Posting);
- InsertIntegrationTableMapping(
- IntegrationTableMapping, IntegrationTableMappingName,
- Database::"Job Task", Database::"FS Project Task",
- FSProjectTask.FieldNo(ProjectTaskId), FSProjectTask.FieldNo(ModifiedOn),
- '', '', false);
-
- IntegrationTableMapping.SetTableFilter(
- GetTableFilterFromView(Database::"Job Task", JobTask.TableCaption(), JobTask.GetView()));
- if not ShouldResetServiceItemMapping() then
- IntegrationTableMapping."Dependency Filter" := 'CUSTOMER|RESOURCE-BOOKABLERSC'
- else
- IntegrationTableMapping."Dependency Filter" := 'CUSTOMER|RESOURCE-BOOKABLERSC|SVCITEM-CUSTASSET';
- IntegrationTableMapping.Modify();
-
- InsertIntegrationFieldMapping(
- IntegrationTableMappingName,
- JobTask.FieldNo("Job No."),
- FSProjectTask.FieldNo(ProjectNumber),
- IntegrationFieldMapping.Direction::ToIntegrationTable,
- '', true, false);
-
- InsertIntegrationFieldMapping(
- IntegrationTableMappingName,
- JobTask.FieldNo("Job Task No."),
- FSProjectTask.FieldNo(ProjectTaskNumber),
- IntegrationFieldMapping.Direction::ToIntegrationTable,
- '', true, false);
-
- InsertIntegrationFieldMapping(
- IntegrationTableMappingName,
- JobTask.FieldNo(Description),
- FSProjectTask.FieldNo(Description),
- IntegrationFieldMapping.Direction::ToIntegrationTable,
- '', true, false);
-
- RecreateJobQueueEntryFromIntTableMapping(IntegrationTableMapping, 1, ShouldRecreateJobQueueEntry, 5);
- end;
-
- internal procedure ResetProjectJournalLineWOProductMapping(var FSConnectionSetup: Record "FS Connection Setup"; IntegrationTableMappingName: Code[20]; ShouldRecreateJobQueueEntry: Boolean)
- var
- IntegrationTableMapping: Record "Integration Table Mapping";
- IntegrationFieldMapping: Record "Integration Field Mapping";
- FSWorkOrderProduct: Record "FS Work Order Product";
- JobJournalLine: Record "Job Journal Line";
- CDSCompany: Record "CDS Company";
- CDSIntegrationMgt: Codeunit "CDS Integration Mgt.";
- IsHandled: Boolean;
- EmptyGuid: Guid;
- begin
- IsHandled := false;
- OnBeforeResetProjectJournalLineWOProductMapping(IntegrationTableMappingName, ShouldRecreateJobQueueEntry, IsHandled);
- if IsHandled then
- exit;
-
- FSWorkOrderProduct.Reset();
- FSWorkOrderProduct.SetRange(StateCode, FSWorkOrderProduct.StateCode::Active);
- FSWorkOrderProduct.SetFilter(ProjectTask, '<>' + Format(EmptyGuid));
- case FSConnectionSetup."Line Synch. Rule" of
- "FS Work Order Line Synch. Rule"::LineUsed:
- FSWorkOrderProduct.SetRange(LineStatus, FSWorkOrderProduct.LineStatus::Used);
- "FS Work Order Line Synch. Rule"::WorkOrderCompleted:
- FSWorkOrderProduct.SetFilter(WorkOrderStatus, Format(FSWorkOrderProduct.WorkOrderStatus::Completed) + '|' + Format(FSWorkOrderProduct.WorkOrderStatus::Posted));
- end;
- FSWorkOrderProduct.SetFilter(ProjectTask, '<>' + Format(EmptyGuid));
- if CDSIntegrationMgt.GetCDSCompany(CDSCompany) then
- FSWorkOrderProduct.SetRange(CompanyId, CDSCompany.CompanyId);
-
- InsertIntegrationTableMapping(
- IntegrationTableMapping, IntegrationTableMappingName,
- Database::"Job Journal Line", Database::"FS Work Order Product",
- FSWorkOrderProduct.FieldNo(WorkOrderProductId), FSWorkOrderProduct.FieldNo(ModifiedOn),
- '', '', false);
-
- IntegrationTableMapping.SetIntegrationTableFilter(
- GetTableFilterFromView(Database::"FS Work Order Product", FSWorkOrderProduct.TableCaption(), FSWorkOrderProduct.GetView()));
- IntegrationTableMapping."Dependency Filter" := 'CUSTOMER|ITEM-PRODUCT';
- IntegrationTableMapping.Modify();
-
- InsertIntegrationFieldMapping(
- IntegrationTableMappingName,
- JobJournalLine.FieldNo(Description),
- FSWorkOrderProduct.FieldNo(Name),
- IntegrationFieldMapping.Direction::FromIntegrationTable,
- '', true, false);
-
- InsertIntegrationFieldMapping(
- IntegrationTableMappingName,
- JobJournalLine.FieldNo("External Document No."),
- FSWorkOrderProduct.FieldNo(WorkOrderName),
- IntegrationFieldMapping.Direction::FromIntegrationTable,
- '', true, false);
-
- InsertIntegrationFieldMapping(
- IntegrationTableMappingName,
- JobJournalLine.FieldNo(Quantity),
- FSWorkOrderProduct.FieldNo(Quantity),
- IntegrationFieldMapping.Direction::FromIntegrationTable,
- '', true, false);
-
- InsertIntegrationFieldMapping(
- IntegrationTableMappingName,
- JobJournalLine.FieldNo("Qty. to Transfer to Invoice"),
- FSWorkOrderProduct.FieldNo(QtyToBill),
- IntegrationFieldMapping.Direction::FromIntegrationTable,
- '', true, false);
-
- InsertIntegrationFieldMapping(
- IntegrationTableMappingName,
- JobJournalLine.FieldNo("Currency Code"),
- FSWorkOrderProduct.FieldNo(TransactionCurrencyId),
- IntegrationFieldMapping.Direction::FromIntegrationTable,
- '', true, false);
-
- InsertIntegrationFieldMapping(
- IntegrationTableMappingName,
- JobJournalLine.FieldNo("Location Code"),
- FSWorkOrderProduct.FieldNo(WarehouseId),
- IntegrationFieldMapping.Direction::FromIntegrationTable,
- '', true, false);
-
- OnAfterResetProjectJournalLineWOProductMapping(IntegrationTableMappingName);
-
- RecreateJobQueueEntryFromIntTableMapping(IntegrationTableMapping, 1, ShouldRecreateJobQueueEntry, 5);
- end;
-
- internal procedure ResetProjectJournalLineWOServiceMapping(var FSConnectionSetup: Record "FS Connection Setup"; IntegrationTableMappingName: Code[20]; ShouldRecreateJobQueueEntry: Boolean)
- var
- IntegrationTableMapping: Record "Integration Table Mapping";
- IntegrationFieldMapping: Record "Integration Field Mapping";
- FSWorkOrderService: Record "FS Work Order Service";
- JobJournalLine: Record "Job Journal Line";
- CDSCompany: Record "CDS Company";
- CDSIntegrationMgt: Codeunit "CDS Integration Mgt.";
- IsHandled: Boolean;
- EmptyGuid: Guid;
- begin
- IsHandled := false;
- OnBeforeResetProjectJournalLineWOServiceMapping(IntegrationTableMappingName, ShouldRecreateJobQueueEntry, IsHandled);
- if IsHandled then
- exit;
-
- FSWorkOrderService.Reset();
- FSWorkOrderService.SetRange(StateCode, FSWorkOrderService.StateCode::Active);
- FSWorkOrderService.SetFilter(ProjectTask, '<>' + Format(EmptyGuid));
- case FSConnectionSetup."Line Synch. Rule" of
- "FS Work Order Line Synch. Rule"::LineUsed:
- FSWorkOrderService.SetRange(LineStatus, FSWorkOrderService.LineStatus::Used);
- "FS Work Order Line Synch. Rule"::WorkOrderCompleted:
- FSWorkOrderService.SetFilter(WorkOrderStatus, Format(FSWorkOrderService.WorkOrderStatus::Completed) + '|' + Format(FSWorkOrderService.WorkOrderStatus::Posted));
- end;
- if CDSIntegrationMgt.GetCDSCompany(CDSCompany) then
- FSWorkOrderService.SetRange(CompanyId, CDSCompany.CompanyId);
- InsertIntegrationTableMapping(
- IntegrationTableMapping, IntegrationTableMappingName,
- Database::"Job Journal Line", Database::"FS Work Order Service",
- FSWorkOrderService.FieldNo(WorkOrderServiceId), FSWorkOrderService.FieldNo(ModifiedOn),
- '', '', false);
-
- IntegrationTableMapping.SetIntegrationTableFilter(
- GetTableFilterFromView(Database::"FS Work Order Service", FSWorkOrderService.TableCaption(), FSWorkOrderService.GetView()));
-
- IntegrationTableMapping."Dependency Filter" := 'CUSTOMER|ITEM-PRODUCT|RESOURCE-BOOKABLERSC';
- IntegrationTableMapping.Modify();
-
- InsertIntegrationFieldMapping(
- IntegrationTableMappingName,
- JobJournalLine.FieldNo(Description),
- FSWorkOrderService.FieldNo(Name),
- IntegrationFieldMapping.Direction::FromIntegrationTable,
- '', true, false);
-
- InsertIntegrationFieldMapping(
- IntegrationTableMappingName,
- JobJournalLine.FieldNo("External Document No."),
- FSWorkOrderService.FieldNo(WorkOrderName),
- IntegrationFieldMapping.Direction::FromIntegrationTable,
- '', true, false);
-
- InsertIntegrationFieldMapping(
- IntegrationTableMappingName,
- JobJournalLine.FieldNo(Quantity),
- FSWorkOrderService.FieldNo(Duration),
- IntegrationFieldMapping.Direction::FromIntegrationTable,
- '', true, false);
-
- InsertIntegrationFieldMapping(
- IntegrationTableMappingName,
- JobJournalLine.FieldNo("Qty. to Transfer to Invoice"),
- FSWorkOrderService.FieldNo(DurationToBill),
- IntegrationFieldMapping.Direction::FromIntegrationTable,
- '', true, false);
-
- InsertIntegrationFieldMapping(
- IntegrationTableMappingName,
- JobJournalLine.FieldNo("Currency Code"),
- FSWorkOrderService.FieldNo(TransactionCurrencyId),
- IntegrationFieldMapping.Direction::FromIntegrationTable,
- '', true, false);
-
- OnAfterResetProjectJournalLineWOServiceMapping(IntegrationTableMappingName);
-
- RecreateJobQueueEntryFromIntTableMapping(IntegrationTableMapping, 1, ShouldRecreateJobQueueEntry, 5);
- end;
-
- internal procedure ResetResourceBookableResourceMapping(var FSConnectionSetup: Record "FS Connection Setup"; IntegrationTableMappingName: Code[20]; ShouldRecreateJobQueueEntry: Boolean)
- var
- IntegrationTableMapping: Record "Integration Table Mapping";
- IntegrationFieldMapping: Record "Integration Field Mapping";
- FSBookableResource: Record "FS Bookable Resource";
- Resource: Record Resource;
- CDSCompany: Record "CDS Company";
- CDSIntegrationMgt: Codeunit "CDS Integration Mgt.";
- IsHandled: Boolean;
- EmptyGuid: Guid;
- begin
- IsHandled := false;
- OnBeforeResetResourceBookableResourceMapping(IntegrationTableMappingName, ShouldRecreateJobQueueEntry, IsHandled);
- if IsHandled then
- exit;
-
- Resource.SetRange(Blocked, false);
- Resource.SetRange("Use Time Sheet", false);
- Resource.SetRange("Base Unit of Measure", FSConnectionSetup."Hour Unit of Measure");
-
- FSBookableResource.Reset();
- FSBookableResource.SetRange(StateCode, FSBookableResource.StateCode::Active);
- FSBookableResource.SetFilter(ResourceType, Format(FSBookableResource.ResourceType::Generic) + '|' + Format(FSBookableResource.ResourceType::Account) + '|' + Format(FSBookableResource.ResourceType::Equipment));
- if CDSIntegrationMgt.GetCDSCompany(CDSCompany) then
- FSBookableResource.SetFilter(CompanyId, CDSCompany.CompanyId + '|' + Format(EmptyGuid));
- InsertIntegrationTableMapping(
- IntegrationTableMapping, IntegrationTableMappingName,
- Database::Resource, Database::"FS Bookable Resource",
- FSBookableResource.FieldNo(BookableResourceId), FSBookableResource.FieldNo(ModifiedOn),
- '', '', true);
-
- IntegrationTableMapping.SetTableFilter(
- GetTableFilterFromView(Database::Resource, Resource.TableCaption(), Resource.GetView()));
- IntegrationTableMapping.SetIntegrationTableFilter(
- GetTableFilterFromView(Database::"FS Bookable Resource", FSBookableResource.TableCaption(), FSBookableResource.GetView()));
- IntegrationTableMapping."Dependency Filter" := 'CUSTOMER|ITEM-PRODUCT';
- IntegrationTableMapping.Modify();
-
- InsertIntegrationFieldMapping(
- IntegrationTableMappingName,
- Resource.FieldNo(Name),
- FSBookableResource.FieldNo(Name),
- IntegrationFieldMapping.Direction::Bidirectional,
- '', true, false);
-
- InsertIntegrationFieldMapping(
- IntegrationTableMappingName,
- Resource.FieldNo("Vendor No."),
- FSBookableResource.FieldNo(AccountId),
- IntegrationFieldMapping.Direction::Bidirectional,
- '', true, false);
-
- InsertIntegrationFieldMapping(
- IntegrationTableMappingName,
- Resource.FieldNo("Unit Cost"),
- FSBookableResource.FieldNo(HourlyRate),
- IntegrationFieldMapping.Direction::Bidirectional,
- '', true, false);
-
- OnAfterResetResourceBookableResourceMapping(IntegrationTableMappingName);
-
- RecreateJobQueueEntryFromIntTableMapping(IntegrationTableMapping, 1, ShouldRecreateJobQueueEntry, 5);
- end;
-
- internal procedure ResetServiceItemCustomerAssetMapping(var FSConnectionSetup: Record "FS Connection Setup"; IntegrationTableMappingName: Code[20]; ShouldRecreateJobQueueEntry: Boolean)
- var
- IntegrationTableMapping: Record "Integration Table Mapping";
- IntegrationFieldMapping: Record "Integration Field Mapping";
- FSCustomerAsset: Record "FS Customer Asset";
- ServiceItem: Record "Service Item";
- CDSCompany: Record "CDS Company";
- CDSIntegrationMgt: Codeunit "CDS Integration Mgt.";
- EmptyGuid: Guid;
- IsHandled: Boolean;
- begin
- if not ShouldResetServiceItemMapping() then begin
- Session.LogMessage('0000MMQ', 'The current company is not eligible to synchronize service items.', Verbosity::Normal, DataClassification::SystemMetadata, TelemetryScope::ExtensionPublisher, 'Category', CategoryTok);
- exit;
- end;
-
- IsHandled := false;
- OnBeforeResetServiceItemCustomerAssetMapping(IntegrationTableMappingName, ShouldRecreateJobQueueEntry, IsHandled);
- if IsHandled then
- exit;
-
- FSCustomerAsset.Reset();
- FSCustomerAsset.SetRange(StateCode, FSCustomerAsset.StateCode::Active);
- if CDSIntegrationMgt.GetCDSCompany(CDSCompany) then
- FSCustomerAsset.SetFilter(CompanyId, CDSCompany.CompanyId + '|' + EmptyGuid);
-
- ServiceItem.Reset();
- ServiceItem.SetRange(Blocked, ServiceItem.Blocked::" ");
-
- InsertIntegrationTableMapping(
- IntegrationTableMapping, IntegrationTableMappingName,
- Database::"Service Item", Database::"FS Customer Asset",
- FSCustomerAsset.FieldNo(CustomerAssetId), FSCustomerAsset.FieldNo(ModifiedOn),
- '', '', true);
-
- IntegrationTableMapping.SetIntegrationTableFilter(
- GetTableFilterFromView(Database::"FS Customer Asset", FSCustomerAsset.TableCaption(), FSCustomerAsset.GetView()));
- IntegrationTableMapping.SetTableFilter(
- GetTableFilterFromView(Database::"Service Item", ServiceItem.TableCaption(), ServiceItem.GetView()));
- IntegrationTableMapping."Dependency Filter" := 'CUSTOMER|ITEM-PRODUCT';
- IntegrationTableMapping.Modify();
-
- InsertIntegrationFieldMapping(
- IntegrationTableMappingName,
- ServiceItem.FieldNo(Description),
- FSCustomerAsset.FieldNo(Name),
- IntegrationFieldMapping.Direction::Bidirectional,
- '', true, false);
-
- InsertIntegrationFieldMapping(
- IntegrationTableMappingName,
- ServiceItem.FieldNo("Customer No."),
- FSCustomerAsset.FieldNo(Account),
- IntegrationFieldMapping.Direction::Bidirectional,
- '', true, false);
-
- InsertIntegrationFieldMapping(
- IntegrationTableMappingName,
- ServiceItem.FieldNo("Item No."),
- FSCustomerAsset.FieldNo(Product),
- IntegrationFieldMapping.Direction::Bidirectional,
- '', true, false);
-
- OnAfterResetServiceItemCustomerAssetMapping(IntegrationTableMappingName);
-
- RecreateJobQueueEntryFromIntTableMapping(IntegrationTableMapping, 1, ShouldRecreateJobQueueEntry, 5);
- end;
-
- internal procedure ResetLocationMapping(var FSConnectionSetup: Record "FS Connection Setup"; IntegrationTableMappingName: Code[20]; ShouldRecreateJobQueueEntry: Boolean)
- var
- IntegrationTableMapping: Record "Integration Table Mapping";
- IntegrationFieldMapping: Record "Integration Field Mapping";
- Location: Record Location;
- FSWarehouse: Record "FS Warehouse";
- begin
- Location.SetRange("Use As In-Transit", false);
- Location.SetFilter("Job Consump. Whse. Handling", '''' + Format(Location."Job Consump. Whse. Handling"::"No Warehouse Handling") + '''|''' +
- Format(Location."Job Consump. Whse. Handling"::"Warehouse Pick (optional)") + '''|''' +
- Format(Location."Job Consump. Whse. Handling"::"Inventory Pick") + '''');
- Location.SetFilter("Asm. Consump. Whse. Handling", '''' + Format(Location."Asm. Consump. Whse. Handling"::"No Warehouse Handling") + '''|''' +
- Format(Location."Asm. Consump. Whse. Handling"::"Warehouse Pick (optional)") + '''|''' +
- Format(Location."Asm. Consump. Whse. Handling"::"Inventory Movement") + '''');
-
- InsertIntegrationTableMapping(
- IntegrationTableMapping, IntegrationTableMappingName,
- Database::Location, Database::"FS Warehouse",
- FSWarehouse.FieldNo(WarehouseId), FSWarehouse.FieldNo(ModifiedOn),
- '', '', false);
-
- IntegrationTableMapping.SetTableFilter(
- GetTableFilterFromView(Database::Location, Location.TableCaption(), Location.GetView()));
- IntegrationTableMapping.Modify();
-
- InsertIntegrationFieldMapping(
- IntegrationTableMappingName,
- Location.FieldNo(Code),
- FSWarehouse.FieldNo(Name),
- IntegrationFieldMapping.Direction::ToIntegrationTable,
- '', true, false);
-
- InsertIntegrationFieldMapping(
- IntegrationTableMappingName,
- Location.FieldNo(Name),
- FSWarehouse.FieldNo(Description),
- IntegrationFieldMapping.Direction::ToIntegrationTable,
- '', true, false);
-
- RecreateJobQueueEntryFromIntTableMapping(IntegrationTableMapping, 1, ShouldRecreateJobQueueEntry, 5);
- end;
-
- local procedure ShouldResetServiceItemMapping(): Boolean
- var
- ApplicationAreaMgmtFacade: Codeunit "Application Area Mgmt. Facade";
- begin
- exit(ApplicationAreaMgmtFacade.IsPremiumExperienceEnabled());
- end;
-
- local procedure InsertIntegrationTableMapping(var IntegrationTableMapping: Record "Integration Table Mapping"; MappingName: Code[20]; TableNo: Integer; IntegrationTableNo: Integer; IntegrationTableUIDFieldNo: Integer; IntegrationTableModifiedFieldNo: Integer; TableConfigTemplateCode: Code[10]; IntegrationTableConfigTemplateCode: Code[10]; SynchOnlyCoupledRecords: Boolean)
- var
- CDSIntegrationMgt: Codeunit "CDS Integration Mgt.";
- UncoupleCodeunitId: Integer;
- Direction: Integer;
- begin
- Direction := GetDefaultDirection(TableNo);
- if Direction in [IntegrationTableMapping.Direction::ToIntegrationTable, IntegrationTableMapping.Direction::Bidirectional] then
- if CDSIntegrationMgt.HasCompanyIdField(IntegrationTableNo) then
- UncoupleCodeunitId := Codeunit::"CDS Int. Table Uncouple";
- IntegrationTableMapping.CreateRecord(MappingName, TableNo, IntegrationTableNo, IntegrationTableUIDFieldNo,
- IntegrationTableModifiedFieldNo, TableConfigTemplateCode, IntegrationTableConfigTemplateCode,
- SynchOnlyCoupledRecords, Direction, IntegrationTablePrefixTok,
- Codeunit::"CRM Integration Table Synch.", UncoupleCodeunitId);
- end;
-
- local procedure InsertIntegrationFieldMapping(IntegrationTableMappingName: Code[20]; TableFieldNo: Integer; IntegrationTableFieldNo: Integer; SynchDirection: Option; ConstValue: Text; ValidateField: Boolean; ValidateIntegrationTableField: Boolean)
- var
- IntegrationFieldMapping: Record "Integration Field Mapping";
- begin
- IntegrationFieldMapping.CreateRecord(IntegrationTableMappingName, TableFieldNo, IntegrationTableFieldNo, SynchDirection,
- ConstValue, ValidateField, ValidateIntegrationTableField);
- end;
-
- internal procedure CreateJobQueueEntry(IntegrationTableMapping: Record "Integration Table Mapping"; ServiceName: Text): Boolean
- begin
- exit(CreateJobQueueEntry(IntegrationTableMapping, Codeunit::"Integration Synch. Job Runner", StrSubstNo(JobQueueEntryNameTok, IntegrationTableMapping.GetTempDescription(), ServiceName)));
- end;
-
- local procedure CreateJobQueueEntry(var IntegrationTableMapping: Record "Integration Table Mapping"; JobCodeunitId: Integer; JobDescription: Text): Boolean
- var
- JobQueueEntry: Record "Job Queue Entry";
- StartTime: DateTime;
- begin
- StartTime := CurrentDateTime() + 1000;
- JobQueueEntry.SetRange("Object Type to Run", JobQueueEntry."Object Type to Run"::Codeunit);
- JobQueueEntry.SetRange("Object ID to Run", JobCodeunitId);
- JobQueueEntry.SetRange("Record ID to Process", IntegrationTableMapping.RecordId());
- JobQueueEntry.SetRange("Job Queue Category Code", JobQueueCategoryLbl);
- JobQueueEntry.SetRange(Status, JobQueueEntry.Status::Ready);
- JobQueueEntry.SetFilter("Earliest Start Date/Time", '<=%1', StartTime);
- if not JobQueueEntry.IsEmpty() then begin
- JobQueueEntry.DeleteTasks();
- Commit();
- end;
-
- JobQueueEntry.Init();
- Clear(JobQueueEntry.ID); // "Job Queue - Enqueue" is to define new ID
- JobQueueEntry."Earliest Start Date/Time" := StartTime;
- JobQueueEntry."Object Type to Run" := JobQueueEntry."Object Type to Run"::Codeunit;
- JobQueueEntry."Object ID to Run" := JobCodeunitId;
- JobQueueEntry."Record ID to Process" := IntegrationTableMapping.RecordId();
- JobQueueEntry."Run in User Session" := false;
- JobQueueEntry."Notify On Success" := false;
- JobQueueEntry."Maximum No. of Attempts to Run" := 2;
- JobQueueEntry."Job Queue Category Code" := JobQueueCategoryLbl;
- JobQueueEntry.Status := JobQueueEntry.Status::Ready;
- JobQueueEntry."Rerun Delay (sec.)" := 30;
- JobQueueEntry.Description := CopyStr(JobDescription, 1, MaxStrLen(JobQueueEntry.Description));
- OnCreateJobQueueEntryOnBeforeJobQueueEnqueue(JobQueueEntry, IntegrationTableMapping, JobCodeunitId, JobDescription);
- exit(Codeunit.Run(Codeunit::"Job Queue - Enqueue", JobQueueEntry))
- end;
-
- local procedure RecreateJobQueueEntryFromIntTableMapping(IntegrationTableMapping: Record "Integration Table Mapping"; IntervalInMinutes: Integer; ShouldRecreateJobQueueEntry: Boolean; InactivityTimeoutPeriod: Integer)
- begin
- RecreateJobQueueEntryFromIntTableMapping(IntegrationTableMapping, IntervalInMinutes, ShouldRecreateJobQueueEntry, InactivityTimeoutPeriod, CRMProductName.CDSServiceName(), false);
- end;
-
- internal procedure RecreateJobQueueEntryFromIntTableMapping(IntegrationTableMapping: Record "Integration Table Mapping"; IntervalInMinutes: Integer; ShouldRecreateJobQueueEntry: Boolean; InactivityTimeoutPeriod: Integer; ServiceName: Text; IsOption: Boolean)
- var
- JobQueueEntry: Record "Job Queue Entry";
- begin
- JobQueueEntry.SetRange("Object Type to Run", JobQueueEntry."Object Type to Run"::Codeunit);
- JobQueueEntry.SetRange("Object ID to Run", Codeunit::"Integration Synch. Job Runner");
- JobQueueEntry.SetRange("Record ID to Process", IntegrationTableMapping.RecordId());
- JobQueueEntry.DeleteTasks();
-
- JobQueueEntry.InitRecurringJob(IntervalInMinutes);
- JobQueueEntry."Object Type to Run" := JobQueueEntry."Object Type to Run"::Codeunit;
- JobQueueEntry."Object ID to Run" := Codeunit::"Integration Synch. Job Runner";
- JobQueueEntry."Record ID to Process" := IntegrationTableMapping.RecordId();
- JobQueueEntry."Run in User Session" := false;
- JobQueueEntry.Description :=
- CopyStr(StrSubstNo(JobQueueEntryNameTok, IntegrationTableMapping.Name, ServiceName), 1, MaxStrLen(JobQueueEntry.Description));
- JobQueueEntry."Maximum No. of Attempts to Run" := 10;
- JobQueueEntry.Status := JobQueueEntry.Status::Ready;
- JobQueueEntry."Rerun Delay (sec.)" := 30;
- JobQueueEntry."Inactivity Timeout Period" := InactivityTimeoutPeriod;
- if IsOption then
- JobQueueEntry."Job Queue Category Code" := OptionJobQueueCategoryLbl;
- if ShouldRecreateJobQueueEntry then
- Codeunit.Run(Codeunit::"Job Queue - Enqueue", JobQueueEntry)
- else
- JobQueueEntry.Insert(true);
- end;
-
- [EventSubscriber(ObjectType::Codeunit, Codeunit::"CRM Setup Defaults", 'OnGetCDSTableNo', '', false, false)]
- local procedure ReturnProxyTableNoOnGetCDSTableNo(BCTableNo: Integer; var CDSTableNo: Integer; var Handled: Boolean)
- var
- FSConnectionSetup: Record "FS Connection Setup";
- begin
- if Handled then
- exit;
-
- if not FSConnectionSetup.IsEnabled() then
- exit;
-
- case BCTableNo of
- Database::Resource:
- CDSTableNo := Database::"FS Bookable Resource";
- Database::"Service Item":
- CDSTableNo := Database::"FS Customer Asset";
- Database::"Job Task":
- CDSTableNo := Database::"FS Project Task";
- Database::Location:
- CDSTableNo := Database::"FS Warehouse";
- end;
-
- if CDSTableNo <> 0 then
- Handled := true;
- end;
-
- [EventSubscriber(ObjectType::Codeunit, Codeunit::"CRM Setup Defaults", 'OnAddEntityTableMapping', '', false, false)]
- local procedure AddProxyTablesOnAddEntityTableMapping(var TempNameValueBuffer: Record "Name/Value Buffer" temporary)
- var
- FSConnectionSetup: Record "FS Connection Setup";
- CRMSetupDefaults: Codeunit "CRM Setup Defaults";
- begin
- if not FSConnectionSetup.IsEnabled() then
- exit;
-
- CRMSetupDefaults.AddEntityTableMapping('bookableresource', Database::Resource, TempNameValueBuffer);
- CRMSetupDefaults.AddEntityTableMapping('bookableresource', Database::"FS Bookable Resource", TempNameValueBuffer);
-
- CRMSetupDefaults.AddEntityTableMapping('msdyn_customerasset', Database::"Service Item", TempNameValueBuffer);
- CRMSetupDefaults.AddEntityTableMapping('msdyn_customerasset', Database::"FS Customer Asset", TempNameValueBuffer);
-
- CRMSetupDefaults.AddEntityTableMapping('bcbi_projecttask', Database::"Job Task", TempNameValueBuffer);
- CRMSetupDefaults.AddEntityTableMapping('bcbi_projecttask', Database::"FS Project Task", TempNameValueBuffer);
-
- CRMSetupDefaults.AddEntityTableMapping('msdyn_workorderproduct', Database::"Job Journal Line", TempNameValueBuffer);
- CRMSetupDefaults.AddEntityTableMapping('msdyn_workorderproduct', Database::"FS Work Order Product", TempNameValueBuffer);
-
- CRMSetupDefaults.AddEntityTableMapping('msdyn_workorderservice', Database::"Job Journal Line", TempNameValueBuffer);
- CRMSetupDefaults.AddEntityTableMapping('msdyn_workorderservice', Database::"FS Work Order Service", TempNameValueBuffer);
-
- CRMSetupDefaults.AddEntityTableMapping('msdyn_warehouse', Database::Location, TempNameValueBuffer);
- CRMSetupDefaults.AddEntityTableMapping('msdyn_warehouse', Database::"FS Warehouse", TempNameValueBuffer);
-
- TempNameValueBuffer.SetRange(Name, 'product');
- TempNameValueBuffer.SetRange(Value, Format(Database::Resource));
- if TempNameValueBuffer.FindFirst() then
- TempNameValueBuffer.Delete();
- end;
-
- [EventSubscriber(ObjectType::Codeunit, Codeunit::"CRM Setup Defaults", 'OnBeforeGetNameFieldNo', '', false, false)]
- local procedure ReturnNameFieldNoOnBeforeGetNameFieldNo(TableId: Integer; var FieldNo: Integer)
- var
- FSConnectionSetup: Record "FS Connection Setup";
- ServiceItem: Record "Service Item";
- FSCustomerAsset: Record "FS Customer Asset";
- FSBookableResource: Record "FS Bookable Resource";
- FSWorkOrderProduct: Record "FS Work Order Product";
- FSWorkOrderService: Record "FS Work Order Service";
- FSProjectTask: Record "FS Project Task";
- JobTask: Record "Job Task";
- JobJournalLine: Record "Job Journal Line";
- Location: Record Location;
- FSWarehouse: Record "FS Warehouse";
- begin
- if not FSConnectionSetup.IsEnabled() then
- exit;
-
- case TableId of
- Database::"Service Item":
- FieldNo := ServiceItem.FieldNo("No.");
- Database::"FS Customer Asset":
- FieldNo := FSCustomerAsset.FieldNo(Name);
- Database::"FS Bookable Resource":
- FieldNo := FSBookableResource.FieldNo(Name);
- Database::"FS Work Order Product":
- FieldNo := FSWorkOrderProduct.FieldNo(Name);
- Database::"FS Work Order Service":
- FieldNo := FSWorkOrderService.FieldNo(Name);
- Database::"FS Project Task":
- FieldNo := FSProjectTask.FieldNo(ProjectNumber);
- Database::"Job Task":
- FieldNo := JobTask.FieldNo("Job Task No.");
- Database::"Job Journal Line":
- FieldNo := JobJournalLine.FieldNo(Description);
- Database::"FS Warehouse":
- FieldNo := FSWarehouse.FieldNo(Name);
- Database::Location:
- FieldNo := Location.FieldNo(Code);
- end;
- end;
-
- procedure GetDefaultDirection(NAVTableID: Integer): Integer
- var
- IntegrationTableMapping: Record "Integration Table Mapping";
- begin
- case NAVTableID of
- Database::"Service Item",
- Database::"Work Type",
- Database::"Resource":
- exit(IntegrationTableMapping.Direction::Bidirectional);
- Database::"Job Task",
- Database::Location:
- exit(IntegrationTableMapping.Direction::ToIntegrationTable);
- Database::"Job Journal Line":
- exit(IntegrationTableMapping.Direction::FromIntegrationTable);
- end;
- end;
-
- internal procedure GetTableFilterFromView(TableID: Integer; Caption: Text; View: Text): Text
- var
- FilterBuilder: FilterPageBuilder;
- begin
- FilterBuilder.AddTable(Caption, TableID);
- FilterBuilder.SetView(Caption, View);
- exit(FilterBuilder.GetView(Caption, false));
- end;
-
- internal procedure SetCustomIntegrationsTableMappings(FSConnectionSetup: Record "FS Connection Setup")
- begin
- OnAfterResetConfiguration(FSConnectionSetup);
- end;
-
- [EventSubscriber(ObjectType::Codeunit, Codeunit::"CRM Integration Management", 'OnBeforeHandleCustomIntegrationTableMapping', '', false, false)]
- local procedure OnBeforeHandleCustomIntegrationTableMapping(var IsHandled: Boolean; IntegrationTableMappingName: Code[20])
- var
- FSConnectionSetup: Record "FS Connection Setup";
- IntegrationTableMapping: Record "Integration Table Mapping";
- begin
- if not FSConnectionSetup.IsEnabled() then
- exit;
-
- if not IntegrationTableMapping.Get(IntegrationTableMappingName) then
- exit;
-
- case IntegrationTableMapping."Table ID" of
- Database::Resource:
- if IntegrationTableMapping."Integration Table ID" = Database::"FS Bookable Resource" then
- ResetResourceBookableResourceMapping(FSConnectionSetup, IntegrationTableMapping.Name, true);
- Database::"Job Task":
- if IntegrationTableMapping."Integration Table ID" = Database::"FS Project Task" then
- ResetProjectTaskMapping(FSConnectionSetup, IntegrationTableMapping.Name, true);
- Database::"Service Item":
- if IntegrationTableMapping."Integration Table ID" = Database::"FS Customer Asset" then
- ResetServiceItemCustomerAssetMapping(FSConnectionSetup, IntegrationTableMapping.Name, true);
- Database::"Job Journal Line":
- begin
- if IntegrationTableMapping."Integration Table ID" = Database::"FS Work Order Product" then
- ResetProjectJournalLineWOProductMapping(FSConnectionSetup, IntegrationTableMapping.Name, true);
- if IntegrationTableMapping."Integration Table ID" = Database::"FS Work Order Service" then
- ResetProjectJournalLineWOServiceMapping(FSConnectionSetup, IntegrationTableMapping.Name, true);
- end;
- Database::Location:
- if IntegrationTableMapping."Integration Table ID" = Database::"FS Warehouse" then
- ResetLocationMapping(FSConnectionSetup, IntegrationTableMapping.Name, true);
- end;
- end;
-
- [IntegrationEvent(false, false)]
- local procedure OnAfterResetConfiguration(FSConnectionSetup: Record "FS Connection Setup")
- begin
- end;
-
- [IntegrationEvent(false, false)]
- local procedure OnAfterResetProjectJournalLineWOProductMapping(IntegrationTableMappingName: Code[20])
- begin
- end;
-
- [IntegrationEvent(false, false)]
- local procedure OnAfterResetProjectJournalLineWOServiceMapping(IntegrationTableMappingName: Code[20])
- begin
- end;
-
- [IntegrationEvent(false, false)]
- local procedure OnAfterResetServiceItemCustomerAssetMapping(IntegrationTableMappingName: Code[20])
- begin
- end;
-
- [IntegrationEvent(false, false)]
- local procedure OnAfterResetResourceBookableResourceMapping(var IntegrationTableMappingName: Code[20])
- begin
- end;
-
- [IntegrationEvent(false, false)]
- local procedure OnBeforeResetConfiguration(var FSConnectionSetup: Record "FS Connection Setup"; var IsHandled: Boolean)
- begin
- end;
-
- [IntegrationEvent(false, false)]
- local procedure OnBeforeResetProjectJournalLineWOProductMapping(var IntegrationTableMappingName: Code[20]; var ShouldRecreateJobQueueEntry: Boolean; var IsHandled: Boolean)
- begin
- end;
-
- [IntegrationEvent(false, false)]
- local procedure OnBeforeResetProjectJournalLineWOServiceMapping(var IntegrationTableMappingName: Code[20]; var ShouldRecreateJobQueueEntry: Boolean; var IsHandled: Boolean)
- begin
- end;
-
- [IntegrationEvent(false, false)]
- local procedure OnBeforeResetServiceItemCustomerAssetMapping(var IntegrationTableMappingName: Code[20]; var ShouldRecreateJobQueueEntry: Boolean; var IsHandled: Boolean)
- begin
- end;
-
- [IntegrationEvent(false, false)]
- local procedure OnBeforeResetProjectTaskMapping(var IntegrationTableMappingName: Code[20]; var ShouldRecreateJobQueueEntry: Boolean; var IsHandled: Boolean)
- begin
- end;
-
- [IntegrationEvent(false, false)]
- local procedure OnBeforeResetResourceBookableResourceMapping(var IntegrationTableMappingName: Code[20]; var ShouldRecreateJobQueueEntry: Boolean; var IsHandled: Boolean)
- begin
- end;
-
- [IntegrationEvent(false, false)]
- local procedure OnCreateJobQueueEntryOnBeforeJobQueueEnqueue(var JobQueueEntry: Record "Job Queue Entry"; var IntegrationTableMapping: Record "Integration Table Mapping"; JobCodeunitId: Integer; JobDescription: Text)
- begin
- end;
-}
-
diff --git a/Apps/W1/FieldServiceIntegration/app/src/Enums/FSWorkOrderLinePostRule.Enum.al b/Apps/W1/FieldServiceIntegration/app/src/Enums/FSWorkOrderLinePostRule.Enum.al
deleted file mode 100644
index 1cb0f201c7..0000000000
--- a/Apps/W1/FieldServiceIntegration/app/src/Enums/FSWorkOrderLinePostRule.Enum.al
+++ /dev/null
@@ -1,24 +0,0 @@
-// ------------------------------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License. See License.txt in the project root for license information.
-// ------------------------------------------------------------------------------------------------
-namespace Microsoft.Integration.DynamicsFieldService;
-
-enum 6610 "FS Work Order Line Post Rule"
-{
- AssignmentCompatibility = true;
- Extensible = true;
-
- value(0; Never)
- {
- Caption = 'I will post project journal lines manually';
- }
- value(1; LineUsed)
- {
- Caption = 'when work order product/service is used';
- }
- value(2; WorkOrderCompleted)
- {
- Caption = 'when work order is completed';
- }
-}
\ No newline at end of file
diff --git a/Apps/W1/FieldServiceIntegration/app/src/Page Extensions/FSJobJournal.PageExt.al b/Apps/W1/FieldServiceIntegration/app/src/Page Extensions/FSJobJournal.PageExt.al
deleted file mode 100644
index b8ba6ef73a..0000000000
--- a/Apps/W1/FieldServiceIntegration/app/src/Page Extensions/FSJobJournal.PageExt.al
+++ /dev/null
@@ -1,33 +0,0 @@
-// ------------------------------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License. See License.txt in the project root for license information.
-// ------------------------------------------------------------------------------------------------
-namespace Microsoft.Integration.DynamicsFieldService;
-
-using Microsoft.Projects.Project.Journal;
-
-pageextension 6618 "FS Job Journal" extends "Job Journal"
-{
- layout
- {
- addafter("Remaining Qty.")
- {
- field(FSQuantityToTransferToInvoice; Rec."Qty. to Transfer to Invoice")
- {
- ApplicationArea = Jobs;
- Visible = FSRelatedFieldsVisible;
- ToolTip = 'Specifies the number of units of the project journal''s No. field, that is, either the resource, item, or G/L account number, that applies. If you later change the value in the No. field, the quantity does not change on the journal line.';
- }
- }
- }
-
- var
- FSRelatedFieldsVisible: Boolean;
-
- trigger OnOpenPage()
- var
- FSConnectionSetup: Record "FS Connection Setup";
- begin
- FSRelatedFieldsVisible := FSConnectionSetup.IsEnabled();
- end;
-}
\ No newline at end of file
diff --git a/Apps/W1/FieldServiceIntegration/app/src/Page Extensions/FSJobProjectManagerRC.PageExt.al b/Apps/W1/FieldServiceIntegration/app/src/Page Extensions/FSJobProjectManagerRC.PageExt.al
deleted file mode 100644
index 29bb00e0fa..0000000000
--- a/Apps/W1/FieldServiceIntegration/app/src/Page Extensions/FSJobProjectManagerRC.PageExt.al
+++ /dev/null
@@ -1,42 +0,0 @@
-// ------------------------------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License. See License.txt in the project root for license information.
-// ------------------------------------------------------------------------------------------------
-namespace Microsoft.Integration.DynamicsFieldService;
-
-using Microsoft.Projects.RoleCenters;
-using Microsoft.Integration.Dataverse;
-
-pageextension 6615 "FS Job Project Manager RC" extends "Job Project Manager RC"
-{
- actions
- {
- addlast(sections)
- {
- group(GroupFS)
- {
- Caption = 'Dynamics 365 Field Service';
-
- action("Bookable Resources - Field Service")
- {
- ApplicationArea = Suite;
- Caption = 'Bookable Resources - Dynamics 365 Field Service';
- RunObject = Page "FS Bookable Resource List";
- }
- action("Customer Assets -Field Service")
- {
- ApplicationArea = Suite;
- Caption = 'Customer Assets - Dynamics 365 Field Service';
- RunObject = Page "FS Customer Asset List";
- }
- action("Records Skipped For Synch.")
- {
- ApplicationArea = Suite;
- Caption = 'Coupled Data Synchronization Errors';
- RunObject = Page "CRM Skipped Records";
- AccessByPermission = TableData "CRM Integration Record" = R;
- }
- }
- }
- }
-}
\ No newline at end of file
diff --git a/Apps/W1/FieldServiceIntegration/app/src/Page Extensions/FSJobTaskCard.PageExt.al b/Apps/W1/FieldServiceIntegration/app/src/Page Extensions/FSJobTaskCard.PageExt.al
deleted file mode 100644
index 1952251e9f..0000000000
--- a/Apps/W1/FieldServiceIntegration/app/src/Page Extensions/FSJobTaskCard.PageExt.al
+++ /dev/null
@@ -1,167 +0,0 @@
-// ------------------------------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License. See License.txt in the project root for license information.
-// ------------------------------------------------------------------------------------------------
-namespace Microsoft.Integration.DynamicsFieldService;
-
-using Microsoft.Projects.Project.Job;
-using Microsoft.Integration.Dataverse;
-
-pageextension 6610 "FS Job Task Card" extends "Job Task Card"
-{
- actions
- {
- addafter("&Job Task")
- {
- group(ActionFS)
- {
- Caption = 'Dynamics 365 Field Service';
- Enabled = FSActionGroupEnabled;
-
- action(GoToProductFS)
- {
- ApplicationArea = Suite;
- Caption = 'Project Task in Field Service';
- Image = CoupledItem;
- ToolTip = 'Open the coupled Dynamics 365 Field Service entity.';
-
- trigger OnAction()
- var
- CRMIntegrationManagement: Codeunit "CRM Integration Management";
- begin
- CRMIntegrationManagement.ShowCRMEntityFromRecordID(Rec.RecordId);
- end;
- }
- action(SynchronizeNowFS)
- {
- AccessByPermission = TableData "CRM Integration Record" = IM;
- ApplicationArea = Suite;
- Caption = 'Synchronize';
- Image = Refresh;
- ToolTip = 'Send updated data to Dynamics 365 Field Service.';
-
- trigger OnAction()
- var
- CRMIntegrationManagement: Codeunit "CRM Integration Management";
- begin
- CRMIntegrationManagement.UpdateOneNow(Rec.RecordId);
- end;
- }
- group(CouplingFS)
- {
- Caption = 'Coupling', Comment = 'Coupling is a noun';
- Image = LinkAccount;
- ToolTip = 'Create, change, or delete a coupling between the Business Central record and a Dynamics 365 Field Service record.';
- action(ManageCouplingFS)
- {
- AccessByPermission = TableData "CRM Integration Record" = IM;
- ApplicationArea = Suite;
- Caption = 'Set Up Coupling';
- Image = LinkAccount;
- ToolTip = 'Create or modify the coupling to a Dynamics 365 Field Service product.';
-
- trigger OnAction()
- var
- CRMIntegrationManagement: Codeunit "CRM Integration Management";
- begin
- CRMIntegrationManagement.DefineCoupling(Rec.RecordId);
- end;
- }
- action(DeleteCouplingFS)
- {
- AccessByPermission = TableData "CRM Integration Record" = D;
- ApplicationArea = Suite;
- Caption = 'Delete Coupling';
- Enabled = CRMIsCoupledToRecord;
- Image = UnLinkAccount;
- ToolTip = 'Delete the coupling to a Dynamics 365 Field Service entity.';
-
- trigger OnAction()
- var
- CRMCouplingManagement: Codeunit "CRM Coupling Management";
- begin
- CRMCouplingManagement.RemoveCoupling(Rec.RecordId);
- end;
- }
- }
- action(FSShowLog)
- {
- ApplicationArea = Suite;
- Caption = 'Synchronization Log';
- Image = Log;
- ToolTip = 'View integration synchronization jobs for the job task table.';
-
- trigger OnAction()
- var
- CRMIntegrationManagement: Codeunit "CRM Integration Management";
- begin
- CRMIntegrationManagement.ShowLog(Rec.RecordId);
- end;
- }
- }
- }
-
- addlast(Promoted)
- {
- group(Category_FS_Synchronize)
- {
- Caption = 'Synchronize';
- Visible = FSIntegrationEnabled;
-
- group(Category_FS_Coupling)
- {
- Caption = 'Coupling';
- ShowAs = SplitButton;
-
- actionref(ManageCouplingFS_Promoted; ManageCouplingFS)
- {
- }
- actionref(DeleteCouplingFS_Promoted; DeleteCouplingFS)
- {
- }
- }
- actionref(SynchronizeNowFS_Promoted; SynchronizeNowFS)
- {
- }
- actionref(GoToProductFS_Promoted; GoToProductFS)
- {
- }
- actionref(FSShowLog_Promoted; FSShowLog)
- {
- }
- }
- }
- }
-
-
- var
- FSActionGroupEnabled: Boolean;
- FSIntegrationEnabled: Boolean;
- CRMIsCoupledToRecord: Boolean;
- CRMIntegrationEnabled: Boolean;
-
- trigger OnAfterGetCurrRecord()
- var
- CRMCouplingManagement: Codeunit "CRM Coupling Management";
- begin
- if CRMIntegrationEnabled then
- CRMIsCoupledToRecord := CRMCouplingManagement.IsRecordCoupledToCRM(Rec.RecordId);
- end;
-
- trigger OnOpenPage()
- var
- Job: Record Job;
- FSConnectionSetup: Record "FS Connection Setup";
- CRMIntegrationManagement: Codeunit "CRM Integration Management";
- ApplyUsageLink: Boolean;
- begin
- CRMIntegrationEnabled := CRMIntegrationManagement.IsCRMIntegrationEnabled();
- if CRMIntegrationEnabled then
- FSIntegrationEnabled := FSConnectionSetup.IsEnabled();
-
- if Job.Get(Rec."Job No.") then
- ApplyUsageLink := Job."Apply Usage Link";
-
- FSActionGroupEnabled := FSIntegrationEnabled and (Rec."Job Task Type" = Rec."Job Task Type"::Posting) and ApplyUsageLink;
- end;
-}
\ No newline at end of file
diff --git a/Apps/W1/FieldServiceIntegration/app/src/Page Extensions/FSJobTaskLines.PageExt.al b/Apps/W1/FieldServiceIntegration/app/src/Page Extensions/FSJobTaskLines.PageExt.al
deleted file mode 100644
index fd98640764..0000000000
--- a/Apps/W1/FieldServiceIntegration/app/src/Page Extensions/FSJobTaskLines.PageExt.al
+++ /dev/null
@@ -1,179 +0,0 @@
-// ------------------------------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License. See License.txt in the project root for license information.
-// ------------------------------------------------------------------------------------------------
-namespace Microsoft.Integration.DynamicsFieldService;
-
-using Microsoft.Projects.Project.Job;
-using Microsoft.Integration.Dataverse;
-
-pageextension 6611 "FS Job Task Lines" extends "Job Task Lines"
-{
- layout
- {
- addlast(Control1)
- {
- field("Coupled to FS"; Rec."Coupled to FS")
- {
- ApplicationArea = Jobs;
- Visible = FSIntegrationEnabled;
- ToolTip = 'Specifies if the project task is coupled to an entity in Field Service.';
- }
- }
- }
-
- actions
- {
- addafter("&Job Task")
- {
- group(ActionFS)
- {
- Caption = 'Dynamics 365 Field Service';
- Enabled = FSActionGroupEnabled;
-
- action(GoToProductFS)
- {
- ApplicationArea = Suite;
- Caption = 'Project Task in Field Service';
- Image = CoupledItem;
- ToolTip = 'Open the coupled Dynamics 365 Field Service entity.';
-
- trigger OnAction()
- var
- CRMIntegrationManagement: Codeunit "CRM Integration Management";
- begin
- CRMIntegrationManagement.ShowCRMEntityFromRecordID(Rec.RecordId);
- end;
- }
- action(SynchronizeNowFS)
- {
- AccessByPermission = TableData "CRM Integration Record" = IM;
- ApplicationArea = Suite;
- Caption = 'Synchronize';
- Image = Refresh;
- ToolTip = 'Send updated data to Dynamics 365 Field Service.';
-
- trigger OnAction()
- var
- CRMIntegrationManagement: Codeunit "CRM Integration Management";
- begin
- CRMIntegrationManagement.UpdateOneNow(Rec.RecordId);
- end;
- }
- group(CouplingFS)
- {
- Caption = 'Coupling', Comment = 'Coupling is a noun';
- Image = LinkAccount;
- ToolTip = 'Create, change, or delete a coupling between the Business Central record and a Dynamics 365 Field Service record.';
- action(ManageCouplingFS)
- {
- AccessByPermission = TableData "CRM Integration Record" = IM;
- ApplicationArea = Suite;
- Caption = 'Set Up Coupling';
- Image = LinkAccount;
- ToolTip = 'Create or modify the coupling to a Dynamics 365 Field Service product.';
-
- trigger OnAction()
- var
- CRMIntegrationManagement: Codeunit "CRM Integration Management";
- begin
- CRMIntegrationManagement.DefineCoupling(Rec.RecordId);
- end;
- }
- action(DeleteCouplingFS)
- {
- AccessByPermission = TableData "CRM Integration Record" = D;
- ApplicationArea = Suite;
- Caption = 'Delete Coupling';
- Enabled = CRMIsCoupledToRecord;
- Image = UnLinkAccount;
- ToolTip = 'Delete the coupling to a Dynamics 365 Field Service entity.';
-
- trigger OnAction()
- var
- CRMCouplingManagement: Codeunit "CRM Coupling Management";
- begin
- CRMCouplingManagement.RemoveCoupling(Rec.RecordId);
- end;
- }
- }
- action(FSShowLog)
- {
- ApplicationArea = Suite;
- Caption = 'Synchronization Log';
- Image = Log;
- ToolTip = 'View integration synchronization jobs for the job task line table.';
-
- trigger OnAction()
- var
- CRMIntegrationManagement: Codeunit "CRM Integration Management";
- begin
- CRMIntegrationManagement.ShowLog(Rec.RecordId);
- end;
- }
- }
- }
-
- addlast(Promoted)
- {
- group(Category_FS_Synchronize)
- {
- Caption = 'Synchronize';
- Visible = FSIntegrationEnabled;
-
- group(Category_FS_Coupling)
- {
- Caption = 'Coupling';
- ShowAs = SplitButton;
-
- actionref(ManageCouplingFS_Promoted; ManageCouplingFS)
- {
- }
- actionref(DeleteCouplingFS_Promoted; DeleteCouplingFS)
- {
- }
- }
- actionref(SynchronizeNowFS_Promoted; SynchronizeNowFS)
- {
- }
- actionref(GoToProductFS_Promoted; GoToProductFS)
- {
- }
- actionref(FSShowLog_Promoted; FSShowLog)
- {
- }
- }
- }
- }
-
-
- var
- FSActionGroupEnabled: Boolean;
- FSIntegrationEnabled: Boolean;
- CRMIsCoupledToRecord: Boolean;
- CRMIntegrationEnabled: Boolean;
-
- trigger OnAfterGetCurrRecord()
- var
- Job: Record Job;
- CRMCouplingManagement: Codeunit "CRM Coupling Management";
- begin
- if FSIntegrationEnabled then
- CRMIsCoupledToRecord := CRMCouplingManagement.IsRecordCoupledToCRM(Rec.RecordId);
-
- if not Job.Get(Rec."Job No.") then
- FSActionGroupEnabled := false
- else
- FSActionGroupEnabled := FSIntegrationEnabled and (Rec."Job Task Type" = Rec."Job Task Type"::Posting) and Job."Apply Usage Link";
- end;
-
- trigger OnOpenPage()
- var
- FSConnectionSetup: Record "FS Connection Setup";
- CRMIntegrationManagement: Codeunit "CRM Integration Management";
- begin
- CRMIntegrationEnabled := CRMIntegrationManagement.IsCRMIntegrationEnabled();
- if CRMIntegrationEnabled then
- FSIntegrationEnabled := FSConnectionSetup.IsEnabled();
- end;
-}
\ No newline at end of file
diff --git a/Apps/W1/FieldServiceIntegration/app/src/Page Extensions/FSJobTaskList.PageExt.al b/Apps/W1/FieldServiceIntegration/app/src/Page Extensions/FSJobTaskList.PageExt.al
deleted file mode 100644
index 826a9ce239..0000000000
--- a/Apps/W1/FieldServiceIntegration/app/src/Page Extensions/FSJobTaskList.PageExt.al
+++ /dev/null
@@ -1,179 +0,0 @@
-// ------------------------------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License. See License.txt in the project root for license information.
-// ------------------------------------------------------------------------------------------------
-namespace Microsoft.Integration.DynamicsFieldService;
-
-using Microsoft.Projects.Project.Job;
-using Microsoft.Integration.Dataverse;
-
-pageextension 6617 "FS Job Task List" extends "Job Task List"
-{
- layout
- {
- addlast(Control1)
- {
- field("Coupled to FS"; Rec."Coupled to FS")
- {
- ApplicationArea = Jobs;
- Visible = FSIntegrationEnabled;
- ToolTip = 'Specifies if the project task is coupled to an entity in Field Service.';
- }
- }
- }
-
- actions
- {
- addafter("&Job Task")
- {
- group(ActionFS)
- {
- Caption = 'Dynamics 365 Field Service';
- Enabled = FSActionGroupEnabled;
-
- action(GoToProductFS)
- {
- ApplicationArea = Suite;
- Caption = 'Project Task in Field Service';
- Image = CoupledItem;
- ToolTip = 'Open the coupled Dynamics 365 Field Service entity.';
-
- trigger OnAction()
- var
- CRMIntegrationManagement: Codeunit "CRM Integration Management";
- begin
- CRMIntegrationManagement.ShowCRMEntityFromRecordID(Rec.RecordId);
- end;
- }
- action(SynchronizeNowFS)
- {
- AccessByPermission = TableData "CRM Integration Record" = IM;
- ApplicationArea = Suite;
- Caption = 'Synchronize';
- Image = Refresh;
- ToolTip = 'Send updated data to Dynamics 365 Field Service.';
-
- trigger OnAction()
- var
- CRMIntegrationManagement: Codeunit "CRM Integration Management";
- begin
- CRMIntegrationManagement.UpdateOneNow(Rec.RecordId);
- end;
- }
- group(CouplingFS)
- {
- Caption = 'Coupling', Comment = 'Coupling is a noun';
- Image = LinkAccount;
- ToolTip = 'Create, change, or delete a coupling between the Business Central record and a Dynamics 365 Field Service record.';
- action(ManageCouplingFS)
- {
- AccessByPermission = TableData "CRM Integration Record" = IM;
- ApplicationArea = Suite;
- Caption = 'Set Up Coupling';
- Image = LinkAccount;
- ToolTip = 'Create or modify the coupling to a Dynamics 365 Field Service product.';
-
- trigger OnAction()
- var
- CRMIntegrationManagement: Codeunit "CRM Integration Management";
- begin
- CRMIntegrationManagement.DefineCoupling(Rec.RecordId);
- end;
- }
- action(DeleteCouplingFS)
- {
- AccessByPermission = TableData "CRM Integration Record" = D;
- ApplicationArea = Suite;
- Caption = 'Delete Coupling';
- Enabled = CRMIsCoupledToRecord;
- Image = UnLinkAccount;
- ToolTip = 'Delete the coupling to a Dynamics 365 Field Service entity.';
-
- trigger OnAction()
- var
- CRMCouplingManagement: Codeunit "CRM Coupling Management";
- begin
- CRMCouplingManagement.RemoveCoupling(Rec.RecordId);
- end;
- }
- }
- action(FSShowLog)
- {
- ApplicationArea = Suite;
- Caption = 'Synchronization Log';
- Image = Log;
- ToolTip = 'View integration synchronization jobs for the job task table.';
-
- trigger OnAction()
- var
- CRMIntegrationManagement: Codeunit "CRM Integration Management";
- begin
- CRMIntegrationManagement.ShowLog(Rec.RecordId);
- end;
- }
- }
- }
-
- addlast(Promoted)
- {
- group(Category_FS_Synchronize)
- {
- Caption = 'Synchronize';
- Visible = FSIntegrationEnabled;
-
- group(Category_FS_Coupling)
- {
- Caption = 'Coupling';
- ShowAs = SplitButton;
-
- actionref(ManageCouplingFS_Promoted; ManageCouplingFS)
- {
- }
- actionref(DeleteCouplingFS_Promoted; DeleteCouplingFS)
- {
- }
- }
- actionref(SynchronizeNowFS_Promoted; SynchronizeNowFS)
- {
- }
- actionref(GoToProductFS_Promoted; GoToProductFS)
- {
- }
- actionref(FSShowLog_Promoted; FSShowLog)
- {
- }
- }
- }
- }
-
-
- var
- FSActionGroupEnabled: Boolean;
- FSIntegrationEnabled: Boolean;
- CRMIsCoupledToRecord: Boolean;
- CRMIntegrationEnabled: Boolean;
-
- trigger OnAfterGetCurrRecord()
- var
- Job: Record Job;
- CRMCouplingManagement: Codeunit "CRM Coupling Management";
- begin
- if FSIntegrationEnabled then
- CRMIsCoupledToRecord := CRMCouplingManagement.IsRecordCoupledToCRM(Rec.RecordId);
-
- if not Job.Get(Rec."Job No.") then
- FSActionGroupEnabled := false
- else
- FSActionGroupEnabled := FSIntegrationEnabled and (Rec."Job Task Type" = Rec."Job Task Type"::Posting) and Job."Apply Usage Link";
- end;
-
- trigger OnOpenPage()
- var
- FSConnectionSetup: Record "FS Connection Setup";
- CRMIntegrationManagement: Codeunit "CRM Integration Management";
- begin
- CRMIntegrationEnabled := CRMIntegrationManagement.IsCRMIntegrationEnabled();
- if CRMIntegrationEnabled then
- FSIntegrationEnabled := FSConnectionSetup.IsEnabled();
- end;
-}
\ No newline at end of file
diff --git a/Apps/W1/FieldServiceIntegration/app/src/Page Extensions/FSProjectManagerActivities.PageExt.al b/Apps/W1/FieldServiceIntegration/app/src/Page Extensions/FSProjectManagerActivities.PageExt.al
deleted file mode 100644
index feac69a9fd..0000000000
--- a/Apps/W1/FieldServiceIntegration/app/src/Page Extensions/FSProjectManagerActivities.PageExt.al
+++ /dev/null
@@ -1,51 +0,0 @@
-// ------------------------------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License. See License.txt in the project root for license information.
-// ------------------------------------------------------------------------------------------------
-namespace Microsoft.Integration.DynamicsFieldService;
-
-using Microsoft.Projects.RoleCenters;
-using Microsoft.Integration.SyncEngine;
-using Microsoft.Integration.Dataverse;
-
-pageextension 6616 "FS Project Manager Activities" extends "Project Manager Activities"
-{
- layout
- {
- addlast(content)
- {
- cuegroup("FS Data Integration")
- {
- Caption = 'Data Integration';
- Visible = ShowFSIntegrationCues;
-
- field("FS Integration Errors"; Rec."FS Int. Errors")
- {
- ApplicationArea = Basic, Suite;
- Caption = 'Integration Errors';
- DrillDownPageID = "Integration Synch. Error List";
- ToolTip = 'Specifies the number of errors related to data integration with Dynamics 365 Field Service.';
- Visible = ShowFSIntegrationCues;
- }
- field("FS Coupled Data Synch Errors"; Rec."Coupled Data Sync Errors")
- {
- ApplicationArea = RelationshipMgmt;
- Caption = 'Coupled Data Synchronization Errors';
- DrillDownPageID = "CRM Skipped Records";
- ToolTip = 'Specifies the number of errors that occurred in the latest synchronization of coupled data between Business Central and Dynamics 365 Field Service.';
- Visible = ShowFSIntegrationCues;
- }
- }
- }
- }
-
- var
- ShowFSIntegrationCues: Boolean;
-
- trigger OnOpenPage()
- var
- FSConnectionSetup: Record "FS Connection Setup";
- begin
- ShowFSIntegrationCues := FSConnectionSetup.IsEnabled();
- end;
-}
\ No newline at end of file
diff --git a/Apps/W1/FieldServiceIntegration/app/src/Page Extensions/FSResourceCard.PageExt.al b/Apps/W1/FieldServiceIntegration/app/src/Page Extensions/FSResourceCard.PageExt.al
deleted file mode 100644
index 6183b5345f..0000000000
--- a/Apps/W1/FieldServiceIntegration/app/src/Page Extensions/FSResourceCard.PageExt.al
+++ /dev/null
@@ -1,213 +0,0 @@
-// ------------------------------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License. See License.txt in the project root for license information.
-// ------------------------------------------------------------------------------------------------
-namespace Microsoft.Integration.DynamicsFieldService;
-
-using Microsoft.Integration.Dataverse;
-using Microsoft.Projects.Resources.Resource;
-using Microsoft.Integration.SyncEngine;
-
-pageextension 6612 "FS Resource Card" extends "Resource Card"
-{
- actions
- {
- modify(ActionGroupCRM)
- {
- Visible = CRMIntegrationEnabled and (not FSIntegrationEnabled);
- }
- addafter(ActionGroupCRM)
- {
- group(ActionFS)
- {
- Caption = 'Dynamics 365 Field Service';
- Visible = FSIntegrationEnabled;
- Enabled = (BlockedFilterApplied and (not Rec.Blocked)) or not BlockedFilterApplied;
-
- action(GoToProductFS)
- {
- ApplicationArea = Suite;
- Caption = 'Bookable Resource';
- Image = CoupledItem;
- ToolTip = 'Open the coupled Dynamics 365 Field Service bookable resource.';
-
- trigger OnAction()
- var
- CRMIntegrationManagement: Codeunit "CRM Integration Management";
- begin
- CRMIntegrationManagement.ShowCRMEntityFromRecordID(Rec.RecordId);
- end;
- }
- action(SynchronizeNowFS)
- {
- AccessByPermission = TableData "CRM Integration Record" = IM;
- ApplicationArea = Suite;
- Caption = 'Synchronize';
- Image = Refresh;
- ToolTip = 'Send updated data to Dynamics 365 Sales.';
-
- trigger OnAction()
- var
- Resource: Record Resource;
- CRMIntegrationManagement: Codeunit "CRM Integration Management";
- ResourceRecordRef: RecordRef;
- begin
- CurrPage.SetSelectionFilter(Resource);
- Resource.Next();
-
- if Resource.Count = 1 then
- CRMIntegrationManagement.UpdateOneNow(Resource.RecordId)
- else begin
- ResourceRecordRef.GetTable(Resource);
- CRMIntegrationManagement.UpdateMultipleNow(ResourceRecordRef);
- end
- end;
- }
- group(CouplingFS)
- {
- Caption = 'Coupling', Comment = 'Coupling is a noun';
- Image = LinkAccount;
- ToolTip = 'Create, change, or delete a coupling between the Business Central record and a Dynamics 365 Sales record.';
- action(ManageCouplingFS)
- {
- AccessByPermission = TableData "CRM Integration Record" = IM;
- ApplicationArea = Suite;
- Caption = 'Set Up Coupling';
- Image = LinkAccount;
- ToolTip = 'Create or modify the coupling to a Dynamics 365 Sales product.';
-
- trigger OnAction()
- var
- CRMIntegrationManagement: Codeunit "CRM Integration Management";
- begin
- CRMIntegrationManagement.DefineCoupling(Rec.RecordId);
- end;
- }
- action(FSMatchBasedCoupling)
- {
- AccessByPermission = TableData "CRM Integration Record" = IM;
- ApplicationArea = Suite;
- Caption = 'Match-Based Coupling';
- Image = CoupledItem;
- ToolTip = 'Couple resources to products in Dynamics 365 Sales based on matching criteria.';
-
- trigger OnAction()
- var
- Resource: Record Resource;
- CRMIntegrationManagement: Codeunit "CRM Integration Management";
- RecRef: RecordRef;
- begin
- CurrPage.SetSelectionFilter(Resource);
- RecRef.GetTable(Resource);
- CRMIntegrationManagement.MatchBasedCoupling(RecRef);
- end;
- }
- action(DeleteCouplingFS)
- {
- AccessByPermission = TableData "CRM Integration Record" = D;
- ApplicationArea = Suite;
- Caption = 'Delete Coupling';
- Enabled = CRMIsCoupledToRecord;
- Image = UnLinkAccount;
- ToolTip = 'Delete the coupling to a Dynamics 365 Sales product.';
-
- trigger OnAction()
- var
- Resource: Record Resource;
- CRMCouplingManagement: Codeunit "CRM Coupling Management";
- RecRef: RecordRef;
- begin
- CurrPage.SetSelectionFilter(Resource);
- RecRef.GetTable(Resource);
- CRMCouplingManagement.RemoveCoupling(RecRef);
- end;
- }
- }
- action(FSShowLog)
- {
- ApplicationArea = Suite;
- Caption = 'Synchronization Log';
- Image = Log;
- ToolTip = 'View integration synchronization jobs for the resource table.';
-
- trigger OnAction()
- var
- CRMIntegrationManagement: Codeunit "CRM Integration Management";
- begin
- CRMIntegrationManagement.ShowLog(Rec.RecordId);
- end;
- }
- }
- }
- addafter(Category_Synchronize)
- {
- group(Category_FS_Synchronize)
- {
- Caption = 'Synchronize';
- Visible = FSIntegrationEnabled;
-
- group(Category_FS_Coupling)
- {
- Caption = 'Coupling';
- ShowAs = SplitButton;
-
- actionref(ManageCouplingFS_Promoted; ManageCouplingFS)
- {
- }
- actionref(DeleteCouplingFS_Promoted; DeleteCouplingFS)
- {
- }
- actionref(FSMatchBasedCoupling_Promoted; FSMatchBasedCoupling)
- {
- }
- }
- actionref(SynchronizeNowFS_Promoted; SynchronizeNowFS)
- {
- }
- actionref(GoToProductFS_Promoted; GoToProductFS)
- {
- }
- actionref(FSShowLog_Promoted; FSShowLog)
- {
- }
- actionref("Unit Group_FS_Promoted"; "Unit Group")
- {
- }
- }
- }
- }
-
- var
- FSIntegrationEnabled: Boolean;
- CRMIsCoupledToRecord: Boolean;
- CRMIntegrationEnabled: Boolean;
- BlockedFilterApplied: Boolean;
-
- trigger OnAfterGetCurrRecord()
- var
- CRMCouplingManagement: Codeunit "CRM Coupling Management";
- begin
- if FSIntegrationEnabled then
- CRMIsCoupledToRecord := CRMCouplingManagement.IsRecordCoupledToCRM(Rec.RecordId);
- end;
-
- trigger OnOpenPage()
- var
- FSConnectionSetup: Record "FS Connection Setup";
- IntegrationTableMapping: Record "Integration Table Mapping";
- CRMIntegrationManagement: Codeunit "CRM Integration Management";
- begin
- CRMIntegrationEnabled := CRMIntegrationManagement.IsCRMIntegrationEnabled();
- if CRMIntegrationEnabled then begin
- FSIntegrationEnabled := FSConnectionSetup.IsEnabled();
- if FSIntegrationEnabled then begin
- IntegrationTableMapping.SetRange(Type, IntegrationTableMapping.Type::Dataverse);
- IntegrationTableMapping.SetRange("Delete After Synchronization", false);
- IntegrationTableMapping.SetRange("Table ID", Database::Resource);
- IntegrationTableMapping.SetRange("Integration Table ID", Database::"FS Bookable Resource");
- if IntegrationTableMapping.FindFirst() then
- BlockedFilterApplied := IntegrationTableMapping.GetTableFilter().Contains('Field38=1(0)');
- end;
- end;
- end;
-}
\ No newline at end of file
diff --git a/Apps/W1/FieldServiceIntegration/app/src/Page Extensions/FSResourceList.PageExt.al b/Apps/W1/FieldServiceIntegration/app/src/Page Extensions/FSResourceList.PageExt.al
deleted file mode 100644
index b63f802a2b..0000000000
--- a/Apps/W1/FieldServiceIntegration/app/src/Page Extensions/FSResourceList.PageExt.al
+++ /dev/null
@@ -1,210 +0,0 @@
-// ------------------------------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License. See License.txt in the project root for license information.
-// ------------------------------------------------------------------------------------------------
-namespace Microsoft.Integration.DynamicsFieldService;
-
-using Microsoft.Integration.Dataverse;
-using Microsoft.Projects.Resources.Resource;
-using Microsoft.Integration.SyncEngine;
-
-pageextension 6613 "FS Resource List" extends "Resource List"
-{
- actions
- {
- modify(ActionGroupCRM)
- {
- Visible = CRMIntegrationEnabled and (not FSIntegrationEnabled);
- }
- addafter(ActionGroupCRM)
- {
- group(ActionFS)
- {
- Caption = 'Dynamics 365 Field Service';
- Visible = FSIntegrationEnabled;
- Enabled = (BlockedFilterApplied and (not Rec.Blocked)) or not BlockedFilterApplied;
-
- action(GoToProductFS)
- {
- ApplicationArea = Suite;
- Caption = 'Bookable Resource';
- Image = CoupledItem;
- ToolTip = 'Open the coupled Dynamics 365 Field Service bookable resource.';
-
- trigger OnAction()
- var
- CRMIntegrationManagement: Codeunit "CRM Integration Management";
- begin
- CRMIntegrationManagement.ShowCRMEntityFromRecordID(Rec.RecordId);
- end;
- }
- action(SynchronizeNowFS)
- {
- AccessByPermission = TableData "CRM Integration Record" = IM;
- ApplicationArea = Suite;
- Caption = 'Synchronize';
- Image = Refresh;
- ToolTip = 'Send updated data to Dynamics 365 Sales.';
-
- trigger OnAction()
- var
- Resource: Record Resource;
- CRMIntegrationManagement: Codeunit "CRM Integration Management";
- ResourceRecordRef: RecordRef;
- begin
- CurrPage.SetSelectionFilter(Resource);
- Resource.Next();
-
- if Resource.Count = 1 then
- CRMIntegrationManagement.UpdateOneNow(Resource.RecordId)
- else begin
- ResourceRecordRef.GetTable(Resource);
- CRMIntegrationManagement.UpdateMultipleNow(ResourceRecordRef);
- end
- end;
- }
- group(CouplingFS)
- {
- Caption = 'Coupling', Comment = 'Coupling is a noun';
- Image = LinkAccount;
- ToolTip = 'Create, change, or delete a coupling between the Business Central record and a Dynamics 365 Sales record.';
- action(ManageCouplingFS)
- {
- AccessByPermission = TableData "CRM Integration Record" = IM;
- ApplicationArea = Suite;
- Caption = 'Set Up Coupling';
- Image = LinkAccount;
- ToolTip = 'Create or modify the coupling to a Dynamics 365 Sales product.';
-
- trigger OnAction()
- var
- CRMIntegrationManagement: Codeunit "CRM Integration Management";
- begin
- CRMIntegrationManagement.DefineCoupling(Rec.RecordId);
- end;
- }
- action(FSMatchBasedCoupling)
- {
- AccessByPermission = TableData "CRM Integration Record" = IM;
- ApplicationArea = Suite;
- Caption = 'Match-Based Coupling';
- Image = CoupledItem;
- ToolTip = 'Couple resources to products in Dynamics 365 Sales based on matching criteria.';
-
- trigger OnAction()
- var
- Resource: Record Resource;
- CRMIntegrationManagement: Codeunit "CRM Integration Management";
- RecRef: RecordRef;
- begin
- CurrPage.SetSelectionFilter(Resource);
- RecRef.GetTable(Resource);
- CRMIntegrationManagement.MatchBasedCoupling(RecRef);
- end;
- }
- action(DeleteCouplingFS)
- {
- AccessByPermission = TableData "CRM Integration Record" = D;
- ApplicationArea = Suite;
- Caption = 'Delete Coupling';
- Enabled = CRMIsCoupledToRecord;
- Image = UnLinkAccount;
- ToolTip = 'Delete the coupling to a Dynamics 365 Sales product.';
-
- trigger OnAction()
- var
- Resource: Record Resource;
- CRMCouplingManagement: Codeunit "CRM Coupling Management";
- RecRef: RecordRef;
- begin
- CurrPage.SetSelectionFilter(Resource);
- RecRef.GetTable(Resource);
- CRMCouplingManagement.RemoveCoupling(RecRef);
- end;
- }
- }
- action(FSShowLog)
- {
- ApplicationArea = Suite;
- Caption = 'Synchronization Log';
- Image = Log;
- ToolTip = 'View integration synchronization jobs for the resource table.';
-
- trigger OnAction()
- var
- CRMIntegrationManagement: Codeunit "CRM Integration Management";
- begin
- CRMIntegrationManagement.ShowLog(Rec.RecordId);
- end;
- }
- }
- }
- addafter(Category_Synchronize)
- {
- group(Category_FS_Synchronize)
- {
- Caption = 'Synchronize';
- Visible = FSIntegrationEnabled;
-
- group(Category_FS_Coupling)
- {
- Caption = 'Coupling';
- ShowAs = SplitButton;
-
- actionref(ManageCouplingFS_Promoted; ManageCouplingFS)
- {
- }
- actionref(DeleteCouplingFS_Promoted; DeleteCouplingFS)
- {
- }
- actionref(FSMatchBasedCoupling_Promoted; FSMatchBasedCoupling)
- {
- }
- }
- actionref(SynchronizeNowFS_Promoted; SynchronizeNowFS)
- {
- }
- actionref(GoToProductFS_Promoted; GoToProductFS)
- {
- }
- actionref(FSShowLog_Promoted; FSShowLog)
- {
- }
- }
- }
- }
-
- var
- FSIntegrationEnabled: Boolean;
- CRMIsCoupledToRecord: Boolean;
- CRMIntegrationEnabled: Boolean;
- BlockedFilterApplied: Boolean;
-
- trigger OnAfterGetCurrRecord()
- var
- CRMCouplingManagement: Codeunit "CRM Coupling Management";
- begin
- if FSIntegrationEnabled then
- CRMIsCoupledToRecord := CRMCouplingManagement.IsRecordCoupledToCRM(Rec.RecordId);
- end;
-
- trigger OnOpenPage()
- var
- FSConnectionSetup: Record "FS Connection Setup";
- IntegrationTableMapping: Record "Integration Table Mapping";
- CRMIntegrationManagement: Codeunit "CRM Integration Management";
- begin
- CRMIntegrationEnabled := CRMIntegrationManagement.IsCRMIntegrationEnabled();
- if CRMIntegrationEnabled then begin
- FSIntegrationEnabled := FSConnectionSetup.IsEnabled();
- if FSIntegrationEnabled then begin
- IntegrationTableMapping.SetRange(Type, IntegrationTableMapping.Type::Dataverse);
- IntegrationTableMapping.SetRange("Delete After Synchronization", false);
- IntegrationTableMapping.SetRange("Table ID", Database::Resource);
- IntegrationTableMapping.SetRange("Integration Table ID", Database::"FS Bookable Resource");
- if IntegrationTableMapping.FindFirst() then
- BlockedFilterApplied := IntegrationTableMapping.GetTableFilter().Contains('Field38=1(0)');
- end;
- end;
- end;
-}
\ No newline at end of file
diff --git a/Apps/W1/FieldServiceIntegration/app/src/Page Extensions/FSServiceConnections.PageExt.al b/Apps/W1/FieldServiceIntegration/app/src/Page Extensions/FSServiceConnections.PageExt.al
deleted file mode 100644
index 7dfbafccbd..0000000000
--- a/Apps/W1/FieldServiceIntegration/app/src/Page Extensions/FSServiceConnections.PageExt.al
+++ /dev/null
@@ -1,17 +0,0 @@
-// ------------------------------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License. See License.txt in the project root for license information.
-// ------------------------------------------------------------------------------------------------
-namespace Microsoft.Integration.DynamicsFieldService;
-
-using Microsoft.Utilities;
-
-pageextension 6622 "FS Service Connections" extends "Service Connections"
-{
- trigger OnOpenPage()
- var
- FSAssistedSetupSubscriber: Codeunit "FS Assisted Setup Subscriber";
- begin
- FSAssistedSetupSubscriber.RegisterAssistedSetup();
- end;
-}
\ No newline at end of file
diff --git a/Apps/W1/FieldServiceIntegration/app/src/Page Extensions/FSServiceItemCard.PageExt.al b/Apps/W1/FieldServiceIntegration/app/src/Page Extensions/FSServiceItemCard.PageExt.al
deleted file mode 100644
index 8d0c5e5f3d..0000000000
--- a/Apps/W1/FieldServiceIntegration/app/src/Page Extensions/FSServiceItemCard.PageExt.al
+++ /dev/null
@@ -1,186 +0,0 @@
-// ------------------------------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License. See License.txt in the project root for license information.
-// ------------------------------------------------------------------------------------------------
-namespace Microsoft.Integration.DynamicsFieldService;
-
-using Microsoft.Service.Item;
-using Microsoft.Integration.Dataverse;
-using Microsoft.Integration.SyncEngine;
-
-pageextension 6619 "FS Service Item Card" extends "Service Item Card"
-{
- actions
- {
- addafter(History)
- {
- group(ActionFS)
- {
- Caption = 'Dynamics 365 Field Service';
- Visible = FSIntegrationEnabled;
- Enabled = (BlockedFilterApplied and (Rec.Blocked = Rec.Blocked::" ")) or not BlockedFilterApplied;
-
- action(GoToProductFS)
- {
- ApplicationArea = Suite;
- Caption = 'Customer Asset';
- Image = CoupledItem;
- ToolTip = 'Open the coupled Dynamics 365 Field Service customer asset.';
-
- trigger OnAction()
- var
- CRMIntegrationManagement: Codeunit "CRM Integration Management";
- begin
- CRMIntegrationManagement.ShowCRMEntityFromRecordID(Rec.RecordId);
- end;
- }
- action(SynchronizeNowFS)
- {
- AccessByPermission = TableData "CRM Integration Record" = IM;
- ApplicationArea = Suite;
- Caption = 'Synchronize';
- Image = Refresh;
- ToolTip = 'Send updated data to Dynamics 365 Field Service.';
-
- trigger OnAction()
- var
- CRMIntegrationManagement: Codeunit "CRM Integration Management";
- begin
- CRMIntegrationManagement.UpdateOneNow(Rec.RecordId);
- end;
- }
- group(CouplingFS)
- {
- Caption = 'Coupling', Comment = 'Coupling is a noun';
- Image = LinkAccount;
- ToolTip = 'Create, change, or delete a coupling between the Business Central record and a Dynamics 365 Field Service record.';
- action(ManageCouplingFS)
- {
- AccessByPermission = TableData "CRM Integration Record" = IM;
- ApplicationArea = Suite;
- Caption = 'Set Up Coupling';
- Image = LinkAccount;
- ToolTip = 'Create or modify the coupling to a Dynamics 365 Field Service product.';
-
- trigger OnAction()
- var
- CRMIntegrationManagement: Codeunit "CRM Integration Management";
- begin
- CRMIntegrationManagement.DefineCoupling(Rec.RecordId);
- end;
- }
- action(FSMatchBasedCoupling)
- {
- AccessByPermission = TableData "CRM Integration Record" = IM;
- ApplicationArea = Suite;
- Caption = 'Match-Based Coupling';
- Image = CoupledItem;
- ToolTip = 'Couple resources to products in Field Service based on matching criteria.';
-
- trigger OnAction()
- var
- ServiceItem: Record "Service Item";
- CRMIntegrationManagement: Codeunit "CRM Integration Management";
- RecRef: RecordRef;
- begin
- CurrPage.SetSelectionFilter(ServiceItem);
- RecRef.GetTable(ServiceItem);
- CRMIntegrationManagement.MatchBasedCoupling(RecRef);
- end;
- }
- action(DeleteCouplingFS)
- {
- AccessByPermission = TableData "CRM Integration Record" = D;
- ApplicationArea = Suite;
- Caption = 'Delete Coupling';
- Enabled = CRMIsCoupledToRecord;
- Image = UnLinkAccount;
- ToolTip = 'Delete the coupling to a Dynamics 365 Field Service entity.';
-
- trigger OnAction()
- var
- CRMCouplingManagement: Codeunit "CRM Coupling Management";
- begin
- CRMCouplingManagement.RemoveCoupling(Rec.RecordId);
- end;
- }
- }
- action(FSShowLog)
- {
- ApplicationArea = Suite;
- Caption = 'Synchronization Log';
- Image = Log;
- ToolTip = 'View integration synchronization jobs for the service item table.';
-
- trigger OnAction()
- var
- CRMIntegrationManagement: Codeunit "CRM Integration Management";
- begin
- CRMIntegrationManagement.ShowLog(Rec.RecordId);
- end;
- }
- }
- }
-
- addlast(Promoted)
- {
- group(Category_FS_Synchronize)
- {
- Caption = 'Synchronize';
- Visible = FSIntegrationEnabled;
-
- group(Category_FS_Coupling)
- {
- Caption = 'Coupling';
- ShowAs = SplitButton;
-
- actionref(ManageCouplingFS_Promoted; ManageCouplingFS)
- {
- }
- actionref(DeleteCouplingFS_Promoted; DeleteCouplingFS)
- {
- }
- actionref(FSMatchBasedCoupling_Promoted; FSMatchBasedCoupling)
- {
- }
- }
- actionref(SynchronizeNowFS_Promoted; SynchronizeNowFS)
- {
- }
- actionref(GoToProductFS_Promoted; GoToProductFS)
- {
- }
- actionref(FSShowLog_Promoted; FSShowLog)
- {
- }
- }
- }
- }
-
-
- var
- FSIntegrationEnabled: Boolean;
- CRMIsCoupledToRecord: Boolean;
- CRMIntegrationEnabled: Boolean;
- BlockedFilterApplied: Boolean;
-
- trigger OnOpenPage()
- var
- FSConnectionSetup: Record "FS Connection Setup";
- IntegrationTableMapping: Record "Integration Table Mapping";
- CRMIntegrationManagement: Codeunit "CRM Integration Management";
- begin
- CRMIntegrationEnabled := CRMIntegrationManagement.IsCRMIntegrationEnabled();
- if CRMIntegrationEnabled then begin
- FSIntegrationEnabled := FSConnectionSetup.IsEnabled();
- if FSIntegrationEnabled then begin
- IntegrationTableMapping.SetRange(Type, IntegrationTableMapping.Type::Dataverse);
- IntegrationTableMapping.SetRange("Delete After Synchronization", false);
- IntegrationTableMapping.SetRange("Table ID", Database::"Service Item");
- IntegrationTableMapping.SetRange("Integration Table ID", Database::"FS Customer Asset");
- if IntegrationTableMapping.FindFirst() then
- BlockedFilterApplied := IntegrationTableMapping.GetTableFilter().Contains('Field40=1(0)');
- end;
- end;
- end;
-}
\ No newline at end of file
diff --git a/Apps/W1/FieldServiceIntegration/app/src/Page Extensions/FSServiceItemList.PageExt.al b/Apps/W1/FieldServiceIntegration/app/src/Page Extensions/FSServiceItemList.PageExt.al
deleted file mode 100644
index 6c57650a99..0000000000
--- a/Apps/W1/FieldServiceIntegration/app/src/Page Extensions/FSServiceItemList.PageExt.al
+++ /dev/null
@@ -1,200 +0,0 @@
-// ------------------------------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License. See License.txt in the project root for license information.
-// ------------------------------------------------------------------------------------------------
-namespace Microsoft.Integration.DynamicsFieldService;
-
-using Microsoft.Service.Item;
-using Microsoft.Integration.Dataverse;
-using Microsoft.Integration.SyncEngine;
-
-pageextension 6620 "FS Service Item List" extends "Service Item List"
-{
- layout
- {
- addlast(Control1)
- {
- field("Coupled to FS"; Rec."Coupled to FS")
- {
- ApplicationArea = All;
- Visible = FSIntegrationEnabled;
- ToolTip = 'Specifies if the project task is coupled to an entity in Field Service.';
- }
- }
- }
-
-
- actions
- {
- addafter(History)
- {
- group(ActionFS)
- {
- Caption = 'Dynamics 365 Field Service';
- Visible = FSIntegrationEnabled;
- Enabled = (BlockedFilterApplied and (Rec.Blocked = Rec.Blocked::" ")) or not BlockedFilterApplied;
-
- action(GoToProductFS)
- {
- ApplicationArea = Suite;
- Caption = 'Customer Asset';
- Image = CoupledItem;
- ToolTip = 'Open the coupled Dynamics 365 Field Service customer asset.';
-
- trigger OnAction()
- var
- CRMIntegrationManagement: Codeunit "CRM Integration Management";
- begin
- CRMIntegrationManagement.ShowCRMEntityFromRecordID(Rec.RecordId);
- end;
- }
- action(SynchronizeNowFS)
- {
- AccessByPermission = TableData "CRM Integration Record" = IM;
- ApplicationArea = Suite;
- Caption = 'Synchronize';
- Image = Refresh;
- ToolTip = 'Send updated data to Dynamics 365 Field Service.';
-
- trigger OnAction()
- var
- CRMIntegrationManagement: Codeunit "CRM Integration Management";
- begin
- CRMIntegrationManagement.UpdateOneNow(Rec.RecordId);
- end;
- }
- group(CouplingFS)
- {
- Caption = 'Coupling', Comment = 'Coupling is a noun';
- Image = LinkAccount;
- ToolTip = 'Create, change, or delete a coupling between the Business Central record and a Dynamics 365 Field Service record.';
- action(ManageCouplingFS)
- {
- AccessByPermission = TableData "CRM Integration Record" = IM;
- ApplicationArea = Suite;
- Caption = 'Set Up Coupling';
- Image = LinkAccount;
- ToolTip = 'Create or modify the coupling to a Dynamics 365 Field Service product.';
-
- trigger OnAction()
- var
- CRMIntegrationManagement: Codeunit "CRM Integration Management";
- begin
- CRMIntegrationManagement.DefineCoupling(Rec.RecordId);
- end;
- }
- action(FSMatchBasedCoupling)
- {
- AccessByPermission = TableData "CRM Integration Record" = IM;
- ApplicationArea = Suite;
- Caption = 'Match-Based Coupling';
- Image = CoupledItem;
- ToolTip = 'Couple resources to products in Field Service based on matching criteria.';
-
- trigger OnAction()
- var
- ServiceItem: Record "Service Item";
- CRMIntegrationManagement: Codeunit "CRM Integration Management";
- RecRef: RecordRef;
- begin
- CurrPage.SetSelectionFilter(ServiceItem);
- RecRef.GetTable(ServiceItem);
- CRMIntegrationManagement.MatchBasedCoupling(RecRef);
- end;
- }
- action(DeleteCouplingFS)
- {
- AccessByPermission = TableData "CRM Integration Record" = D;
- ApplicationArea = Suite;
- Caption = 'Delete Coupling';
- Enabled = CRMIsCoupledToRecord;
- Image = UnLinkAccount;
- ToolTip = 'Delete the coupling to a Dynamics 365 Field Service entity.';
-
- trigger OnAction()
- var
- CRMCouplingManagement: Codeunit "CRM Coupling Management";
- begin
- CRMCouplingManagement.RemoveCoupling(Rec.RecordId);
- end;
- }
- }
- action(FSShowLog)
- {
- ApplicationArea = Suite;
- Caption = 'Synchronization Log';
- Image = Log;
- ToolTip = 'View integration synchronization jobs for the service item table.';
-
- trigger OnAction()
- var
- CRMIntegrationManagement: Codeunit "CRM Integration Management";
- begin
- CRMIntegrationManagement.ShowLog(Rec.RecordId);
- end;
- }
- }
- }
-
- addlast(Promoted)
- {
- group(Category_FS_Synchronize)
- {
- Caption = 'Synchronize';
- Visible = FSIntegrationEnabled;
-
- group(Category_FS_Coupling)
- {
- Caption = 'Coupling';
- ShowAs = SplitButton;
-
- actionref(ManageCouplingFS_Promoted; ManageCouplingFS)
- {
- }
- actionref(DeleteCouplingFS_Promoted; DeleteCouplingFS)
- {
- }
- actionref(FSMatchBasedCoupling_Promoted; FSMatchBasedCoupling)
- {
- }
- }
- actionref(SynchronizeNowFS_Promoted; SynchronizeNowFS)
- {
- }
- actionref(GoToProductFS_Promoted; GoToProductFS)
- {
- }
- actionref(FSShowLog_Promoted; FSShowLog)
- {
- }
- }
- }
- }
-
-
- var
- FSIntegrationEnabled: Boolean;
- CRMIsCoupledToRecord: Boolean;
- CRMIntegrationEnabled: Boolean;
- BlockedFilterApplied: Boolean;
-
- trigger OnOpenPage()
- var
- FSConnectionSetup: Record "FS Connection Setup";
- IntegrationTableMapping: Record "Integration Table Mapping";
- CRMIntegrationManagement: Codeunit "CRM Integration Management";
- begin
- CRMIntegrationEnabled := CRMIntegrationManagement.IsCRMIntegrationEnabled();
- if CRMIntegrationEnabled then begin
- FSIntegrationEnabled := FSConnectionSetup.IsEnabled();
- if FSIntegrationEnabled then begin
- IntegrationTableMapping.SetRange(Type, IntegrationTableMapping.Type::Dataverse);
- IntegrationTableMapping.SetRange("Delete After Synchronization", false);
- IntegrationTableMapping.SetRange("Table ID", Database::"Service Item");
- IntegrationTableMapping.SetRange("Integration Table ID", Database::"FS Customer Asset");
- if IntegrationTableMapping.FindFirst() then
- BlockedFilterApplied := IntegrationTableMapping.GetTableFilter().Contains('Field40=1(0)');
- end;
- end;
- end;
-}
\ No newline at end of file
diff --git a/Apps/W1/FieldServiceIntegration/app/src/Page Extensions/FSServiceManagerRC.PageExt.al b/Apps/W1/FieldServiceIntegration/app/src/Page Extensions/FSServiceManagerRC.PageExt.al
deleted file mode 100644
index 0fde612097..0000000000
--- a/Apps/W1/FieldServiceIntegration/app/src/Page Extensions/FSServiceManagerRC.PageExt.al
+++ /dev/null
@@ -1,42 +0,0 @@
-// ------------------------------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License. See License.txt in the project root for license information.
-// ------------------------------------------------------------------------------------------------
-namespace Microsoft.Integration.DynamicsFieldService;
-
-using Microsoft.Integration.Dataverse;
-using Microsoft.Service.RoleCenters;
-
-pageextension 6621 "FS Service Manager RC" extends "Service Manager Role Center"
-{
- actions
- {
- addlast(sections)
- {
- group(GroupFS)
- {
- Caption = 'Dynamics 365 Field Service';
-
- action("Bookable Resources - Field Service")
- {
- ApplicationArea = Suite;
- Caption = 'Bookable Resources - Dynamics 365 Field Service';
- RunObject = Page "FS Bookable Resource List";
- }
- action("Customer Assets - Field Service")
- {
- ApplicationArea = Suite;
- Caption = 'Customer Assets - Dynamics 365 Field Service';
- RunObject = Page "FS Customer Asset List";
- }
- action("Records Skipped For Synch.")
- {
- ApplicationArea = Suite;
- Caption = 'Coupled Data Synchronization Errors';
- RunObject = Page "CRM Skipped Records";
- AccessByPermission = TableData "CRM Integration Record" = R;
- }
- }
- }
- }
-}
\ No newline at end of file
diff --git a/Apps/W1/FieldServiceIntegration/app/src/Pages/FSBookableResourceList.Page.al b/Apps/W1/FieldServiceIntegration/app/src/Pages/FSBookableResourceList.Page.al
deleted file mode 100644
index 829ac65f20..0000000000
--- a/Apps/W1/FieldServiceIntegration/app/src/Pages/FSBookableResourceList.Page.al
+++ /dev/null
@@ -1,166 +0,0 @@
-// ------------------------------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License. See License.txt in the project root for license information.
-// ------------------------------------------------------------------------------------------------
-namespace Microsoft.Integration.DynamicsFieldService;
-
-using Microsoft.Integration.Dataverse;
-using Microsoft.Projects.Resources.Resource;
-
-page 6610 "FS Bookable Resource List"
-{
- ApplicationArea = Suite;
- Caption = 'Bookable Resources - Dynamics 365 Field Service';
- Editable = false;
- PageType = List;
- SourceTable = "FS Bookable Resource";
- SourceTableView = sorting(Name);
- UsageCategory = Lists;
-
- layout
- {
- area(content)
- {
- repeater(Control2)
- {
- ShowCaption = false;
- field(Name; Rec.Name)
- {
- ApplicationArea = Suite;
- Caption = 'Name';
- StyleExpr = FirstColumnStyle;
- ToolTip = 'Specifies the bookable resource name.';
- }
- field(HourlyRate; Rec.HourlyRate)
- {
- ApplicationArea = Suite;
- Caption = 'Hourly Rate';
- ToolTip = 'Specifies the bookable resource hourly rate.';
- }
- field(ResourceType; Rec.ResourceType)
- {
- ApplicationArea = Suite;
- Caption = 'Resource Type';
- ToolTip = 'Specifies the bookable resource type.';
- }
- field(Coupled; Coupled)
- {
- ApplicationArea = Suite;
- Caption = 'Coupled';
- ToolTip = 'Specifies if the Dynamics 365 Field Service record is coupled to Business Central.';
- }
- }
- }
- }
-
- actions
- {
- area(processing)
- {
- action(CreateFromFS)
- {
- ApplicationArea = Suite;
- Caption = 'Create in Business Central';
- Image = NewResource;
- ToolTip = 'Generate the entity from the Field Service bookable resource.';
-
- trigger OnAction()
- var
- FSBookableResource: Record "FS Bookable Resource";
- CRMIntegrationManagement: Codeunit "CRM Integration Management";
- begin
- CurrPage.SetSelectionFilter(FSBookableResource);
- CRMIntegrationManagement.CreateNewRecordsFromSelectedCRMRecords(FSBookableResource);
- end;
- }
- action(ShowOnlyUncoupled)
- {
- ApplicationArea = Suite;
- Caption = 'Hide Coupled Records';
- Image = FilterLines;
- ToolTip = 'Do not show coupled records.';
-
- trigger OnAction()
- begin
- Rec.MarkedOnly(true);
- end;
- }
- action(ShowAll)
- {
- ApplicationArea = Suite;
- Caption = 'Show Coupled Records';
- Image = ClearFilter;
- ToolTip = 'Show coupled records.';
-
- trigger OnAction()
- begin
- Rec.MarkedOnly(false);
- end;
- }
- }
- area(Promoted)
- {
- group(Category_Process)
- {
- Caption = 'Process';
-
- actionref(CreateFromFS_Promoted; CreateFromFS)
- {
- }
- actionref(ShowOnlyUncoupled_Promoted; ShowOnlyUncoupled)
- {
- }
- actionref(ShowAll_Promoted; ShowAll)
- {
- }
- }
- }
- }
-
- trigger OnAfterGetRecord()
- var
- CRMIntegrationRecord: Record "CRM Integration Record";
- RecordID: RecordID;
- begin
- if CRMIntegrationRecord.FindRecordIDFromID(Rec.BookableResourceId, Database::Resource, RecordID) then
- if CurrentlyCoupledFSBookableResource.BookableResourceId = Rec.BookableResourceId then begin
- Coupled := 'Current';
- FirstColumnStyle := 'Strong';
- Rec.Mark(true);
- end else begin
- Coupled := 'Yes';
- FirstColumnStyle := 'Subordinate';
- Rec.Mark(false);
- end
- else begin
- Coupled := 'No';
- FirstColumnStyle := 'None';
- Rec.Mark(true);
- end;
- end;
-
- trigger OnInit()
- begin
- Codeunit.Run(Codeunit::"CRM Integration Management");
- end;
-
- trigger OnOpenPage()
- var
- LookupCRMTables: Codeunit "Lookup CRM Tables";
- begin
- Rec.FilterGroup(4);
- Rec.SetView(LookupCRMTables.GetIntegrationTableMappingView(Database::"FS Bookable Resource"));
- Rec.FilterGroup(0);
- end;
-
- var
- CurrentlyCoupledFSBookableResource: Record "FS Bookable Resource";
- Coupled: Text;
- FirstColumnStyle: Text;
-
- procedure SetCurrentlyCoupledFSBookableResource(FSBookableResource: Record "FS Bookable Resource")
- begin
- CurrentlyCoupledFSBookableResource := FSBookableResource;
- end;
-}
-
diff --git a/Apps/W1/FieldServiceIntegration/app/src/Pages/FSConnectionSetup.Page.al b/Apps/W1/FieldServiceIntegration/app/src/Pages/FSConnectionSetup.Page.al
deleted file mode 100644
index ce744c8f99..0000000000
--- a/Apps/W1/FieldServiceIntegration/app/src/Pages/FSConnectionSetup.Page.al
+++ /dev/null
@@ -1,505 +0,0 @@
-// ------------------------------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License. See License.txt in the project root for license information.
-// ------------------------------------------------------------------------------------------------
-namespace Microsoft.Integration.DynamicsFieldService;
-
-using Microsoft.Integration.Dataverse;
-using Microsoft.Integration.SyncEngine;
-using System.Environment.Configuration;
-using System.Telemetry;
-using System.Threading;
-using Microsoft.Integration.D365Sales;
-using Microsoft.Projects.Project.Journal;
-
-page 6612 "FS Connection Setup"
-{
- AccessByPermission = TableData "FS Connection Setup" = IM;
- ApplicationArea = Suite;
- Caption = 'Dynamics 365 Field Service Integration Setup';
- DeleteAllowed = false;
- InsertAllowed = false;
- LinksAllowed = false;
- ShowFilter = false;
- SourceTable = "FS Connection Setup";
- UsageCategory = Administration;
- AdditionalSearchTerms = 'Dynamics 365 Field Service Connection Setup';
-
- layout
- {
- area(content)
- {
- group(NAVToFS)
- {
- Caption = 'Connection from Dynamics 365 Business Central to Dynamics 365 Field Service';
- field("Server Address"; Rec."Server Address")
- {
- ApplicationArea = Suite;
- Editable = IsEditable;
- ToolTip = 'Specifies the URL of the environment that hosts the Dynamics 365 Field Service solution that you want to connect to.';
-
- trigger OnValidate()
- begin
- ConnectionString := Rec.GetConnectionStringAsStoredInSetup();
- end;
- }
- field("Is Enabled"; Rec."Is Enabled")
- {
- ApplicationArea = Suite;
- Caption = 'Enabled', Comment = 'Name of tickbox which shows whether the connection is enabled or disabled';
- ToolTip = 'Specifies if the connection to Dynamics 365 Field Service is enabled. When you check this checkbox, you will be prompted to sign-in to Dataverse with an administrator user account. The account will be used one time to give consent to, install and configure applications and components that the integration requires.';
-
- trigger OnValidate()
- var
- FeatureTelemetry: Codeunit "Feature Telemetry";
- CDSIntegrationImpl: Codeunit "CDS Integration Impl.";
- begin
- CurrPage.Update(true);
- if Rec."Is Enabled" then begin
- FeatureTelemetry.LogUptake('0000MB9', 'Dynamics 365 Field Service', Enum::"Feature Uptake Status"::"Set up");
- Session.LogMessage('0000MBC', CRMConnEnabledOnPageTxt, Verbosity::Normal, DataClassification::SystemMetadata, TelemetryScope::ExtensionPublisher, 'Category', CategoryTok);
-
- if (Rec."Server Address" <> '') and (Rec."Server Address" <> TestServerAddressTok) then
- if CDSIntegrationImpl.MultipleCompaniesConnected() then
- CDSIntegrationImpl.SendMultipleCompaniesNotification();
- end;
- end;
- }
- field(ScheduledSynchJobsActive; ScheduledSynchJobsRunning)
- {
- ApplicationArea = Suite;
- Caption = 'Active scheduled synchronization jobs';
- Editable = false;
- StyleExpr = ScheduledSynchJobsRunningStyleExpr;
- ToolTip = 'Specifies how many of the default integration synchronization job queue entries ready to automatically synchronize data between Business Central and Dynamics 365 Field Service.';
-
- trigger OnDrillDown()
- var
- ScheduledSynchJobsRunningMsg: Text;
- begin
- if TotalJobs = 0 then
- ScheduledSynchJobsRunningMsg := JobQueueIsNotRunningMsg
- else
- if ActiveJobs = TotalJobs then
- ScheduledSynchJobsRunningMsg := AllScheduledJobsAreRunningMsg
- else
- ScheduledSynchJobsRunningMsg := StrSubstNo(PartialScheduledJobsAreRunningMsg, ActiveJobs, TotalJobs);
- Message(ScheduledSynchJobsRunningMsg);
- end;
- }
- }
- group(FSSettings)
- {
- Caption = 'Additional Settings';
- Visible = true;
- field("Is FS Solution Installed"; Rec."Is FS Solution Installed")
- {
- ApplicationArea = Suite;
- Caption = 'Dynamics 365 Business Central Integration Solution Imported to Field Service';
- Editable = false;
- Visible = false;
- StyleExpr = CRMSolutionInstalledStyleExpr;
- ToolTip = 'Specifies if the Integration Solution is installed and configured in Dynamics 365 Field Service. You cannot change this setting.';
-
- trigger OnDrillDown()
- begin
- if Rec."Is FS Solution Installed" then
- Message(FavorableCRMSolutionInstalledMsg, PRODUCTNAME.Short(), CRMProductName.FSServiceName())
- else
- Message(UnfavorableCRMSolutionInstalledMsg, PRODUCTNAME.Short());
- end;
- }
- field("Job Journal Template"; Rec."Job Journal Template")
- {
- ApplicationArea = Suite;
- ShowMandatory = true;
- ToolTip = 'Specifies the project journal template in which project journal lines will be created and coupled to work order products and work order services.';
- }
- field("Job Journal Batch"; Rec."Job Journal Batch")
- {
- ApplicationArea = Suite;
- ShowMandatory = true;
- ToolTip = 'Specifies the project journal batch in which project journal lines will be created and coupled to work order products and work order services.';
- }
- field("Hour Unit of Measure"; Rec."Hour Unit of Measure")
- {
- ApplicationArea = Suite;
- ShowMandatory = true;
- ToolTip = 'Specifies the unit of measure that corresponds to the ''hour'' unit that is used on Dynamics 365 Field Service bookable resources.';
- }
- }
- group(SynchSettings)
- {
- Caption = 'Synchronization Settings';
- Visible = Rec."Is Enabled";
- field("Line Synch. Rule"; Rec."Line Synch. Rule")
- {
- ApplicationArea = Suite;
- ToolTip = 'Specifies when to synchronize work order products and work order services.';
-
- trigger OnValidate()
- var
- IntegrationTableMapping: Record "Integration Table Mapping";
- JobJouralLine: Record "Job Journal Line";
- FSSetupDefaults: Codeunit "FS Setup Defaults";
- begin
- if not Rec."Is Enabled" then
- exit;
-
- if not Confirm(StrSubstNo(ResetOneIntegrationTableMappingConfirmQst, JobJouralLine.TableCaption())) then
- Error('');
-
- IntegrationTableMapping.SetRange(Type, IntegrationTableMapping.Type::Dataverse);
- IntegrationTableMapping.SetRange("Delete After Synchronization", false);
- IntegrationTableMapping.SetRange("Table ID", Database::"Job Journal Line");
- IntegrationTableMapping.SetFilter("Integration Table ID", Format(Database::"FS Work Order Product") + '|' + Format(Database::"FS Work Order Service"));
- if IntegrationTableMapping.FindSet() then
- repeat
- if IntegrationTableMapping."Integration Table ID" = Database::"FS Work Order Service" then
- FSSetupDefaults.ResetProjectJournalLineWOServiceMapping(Rec, IntegrationTableMapping.Name, true);
- if IntegrationTableMapping."Integration Table ID" = Database::"FS Work Order Product" then
- FSSetupDefaults.ResetProjectJournalLineWOProductMapping(Rec, IntegrationTableMapping.Name, true);
- until IntegrationTableMapping.Next() = 0;
- end;
- }
- field("Line Post Rule"; Rec."Line Post Rule")
- {
- ApplicationArea = Suite;
- ToolTip = 'Specifies when to post project journal lines that are coupled to work order products and work order services.';
- }
- }
- }
- }
-
- actions
- {
- area(processing)
- {
- action("Assisted Setup")
- {
- ApplicationArea = Suite;
- Caption = 'Assisted Setup';
- Image = Setup;
- ToolTip = 'Runs Dynamics 365 Field Service Connection Setup Wizard.';
-
- trigger OnAction()
- var
- GuidedExperience: Codeunit "Guided Experience";
- CRMIntegrationMgt: Codeunit "CRM Integration Management";
- GuidedExperienceType: Enum "Guided Experience Type";
- begin
- CRMIntegrationMgt.RegisterAssistedSetup();
- Commit(); // Make sure all data is committed before we run the wizard
- GuidedExperience.Run(GuidedExperienceType::"Assisted Setup", ObjectType::Page, Page::"FS Connection Setup Wizard");
- CurrPage.Update(false);
- end;
- }
- action("Test Connection")
- {
- ApplicationArea = Suite;
- Caption = 'Test Connection', Comment = 'Test is a verb.';
- Image = ValidateEmailLoggingSetup;
- ToolTip = 'Tests the connection to Dynamics 365 Field Service using the specified settings.';
-
- trigger OnAction()
- begin
- Rec.PerformTestConnection();
- end;
- }
- action(IntegrationTableMappings)
- {
- ApplicationArea = Suite;
- Caption = 'Integration Table Mappings';
- Enabled = Rec."Is Enabled";
- Image = MapAccounts;
- ToolTip = 'Opens the integration table mapping list.';
-
- trigger OnAction()
- begin
- Page.Run(Page::"Integration Table Mapping List");
- end;
- }
- action("Redeploy Solution")
- {
- ApplicationArea = Suite;
- Caption = 'Redeploy Integration Solution';
- Image = Setup;
- Enabled = IsCdsIntegrationEnabled and (not Rec."Is Enabled");
- ToolTip = 'Redeploy and reconfigure the Dynamics 365 Field Service integration solution.';
-
- trigger OnAction()
- begin
- Commit();
- Rec.DeployFSSolution(true);
- end;
- }
- action(ResetConfiguration)
- {
- ApplicationArea = Suite;
- Caption = 'Use Default Synchronization Setup';
- Enabled = Rec."Is Enabled";
- Image = ResetStatus;
- ToolTip = 'Resets the integration table mappings and synchronization jobs to the default values for a connection with Dynamics 365 Field Service. All current mappings are deleted.';
-
- trigger OnAction()
- var
- FSSetupDefaults: Codeunit "FS Setup Defaults";
- begin
- Rec.EnsureCDSConnectionIsEnabled();
- Rec.EnsureCRMConnectionIsEnabled();
- if Confirm(ResetIntegrationTableMappingConfirmQst, false, CRMProductName.FSServiceName()) then begin
- FSSetupDefaults.ResetConfiguration(Rec);
- Message(SetupSuccessfulMsg, CRMProductName.FSServiceName());
- end;
- Rec.RefreshDataFromFS();
- end;
- }
- action(StartInitialSynchAction)
- {
- ApplicationArea = Suite;
- Caption = 'Run Full Synchronization';
- Enabled = Rec."Is Enabled";
- Image = RefreshLines;
- ToolTip = 'Start all the default integration jobs for synchronizing Business Central record types and Dynamics 365 Field Service entities, as defined on the Integration Table Mappings page.';
-
- trigger OnAction()
- begin
- Page.Run(Page::"CRM Full Synch. Review");
- end;
- }
- }
- area(navigation)
- {
- action("Synch. Job Queue Entries")
- {
- ApplicationArea = Suite;
- Caption = 'Synch. Job Queue Entries';
- Image = JobListSetup;
- ToolTip = 'View the job queue entries that manage the scheduled synchronization between Dynamics 365 Field Service and Business Central.';
-
- trigger OnAction()
- var
- JobQueueEntry: Record "Job Queue Entry";
- begin
- JobQueueEntry.FilterGroup := 2;
- JobQueueEntry.SetRange("Object Type to Run", JobQueueEntry."Object Type to Run"::Codeunit);
- JobQueueEntry.SetFilter("Object ID to Run", Rec.GetJobQueueEntriesObjectIDToRunFilter());
- JobQueueEntry.FilterGroup := 0;
-
- Page.Run(Page::"Job Queue Entries", JobQueueEntry);
- end;
- }
- action(SkippedSynchRecords)
- {
- ApplicationArea = Suite;
- Caption = 'Skipped Synch. Records';
- Enabled = Rec."Is Enabled";
- Image = NegativeLines;
- RunObject = Page "CRM Skipped Records";
- RunPageMode = View;
- ToolTip = 'View the list of records that will be skipped for synchronization.';
- }
- }
- area(Promoted)
- {
- group(Category_Process)
- {
- Caption = 'Connection', Comment = 'Generated from the PromotedActionCategories property index 1.';
-
- actionref("Assisted Setup_Promoted"; "Assisted Setup")
- {
- }
- actionref("Test Connection_Promoted"; "Test Connection")
- {
- }
- }
- group(Category_Report)
- {
- Caption = 'Mapping', Comment = 'Generated from the PromotedActionCategories property index 2.';
-
- actionref(IntegrationTableMappings_Promoted; IntegrationTableMappings)
- {
- }
- actionref("Redeploy Solution_Promoted"; "Redeploy Solution")
- {
- }
- }
- group(Category_Category4)
- {
- Caption = 'Synchronization', Comment = 'Generated from the PromotedActionCategories property index 3.';
-
- actionref(StartInitialSynchAction_Promoted; StartInitialSynchAction)
- {
- }
- actionref("Synch. Job Queue Entries_Promoted"; "Synch. Job Queue Entries")
- {
- }
- actionref(SkippedSynchRecords_Promoted; SkippedSynchRecords)
- {
- }
- }
- }
- }
-
- trigger OnAfterGetRecord()
- begin
- RefreshData();
- end;
-
- trigger OnInit()
- var
- ApplicationAreaMgmtFacade: Codeunit "Application Area Mgmt. Facade";
- CRMIntegrationManagement: Codeunit "CRM Integration Management";
- begin
- ApplicationAreaMgmtFacade.CheckAppAreaOnlyBasic();
- CRMIntegrationManagement.RegisterAssistedSetup();
- SetVisibilityFlags();
- end;
-
- trigger OnOpenPage()
- var
- CRMIntegrationManagement: Codeunit "CRM Integration Management";
- FeatureTelemetry: Codeunit "Feature Telemetry";
- CDSIntegrationImpl: Codeunit "CDS Integration Impl.";
- MultipleCompaniesDetected: Boolean;
- begin
- FeatureTelemetry.LogUptake('0000MBA', 'Dataverse', Enum::"Feature Uptake Status"::Discovered);
- FeatureTelemetry.LogUptake('0000MBB', 'Dynamics 365 Field Service', Enum::"Feature Uptake Status"::Discovered);
- Rec.EnsureCDSConnectionIsEnabled();
- Rec.EnsureCRMConnectionIsEnabled();
-
- if not Rec.Get() then begin
- Rec.Init();
- InitializeDefaultProxyVersion();
- Rec.Insert();
- Rec.LoadConnectionStringElementsFromCDSConnectionSetup();
- end else begin
- if not Rec."Is Enabled" then
- Rec.LoadConnectionStringElementsFromCDSConnectionSetup();
- ConnectionString := Rec.GetConnectionStringAsStoredInSetup();
- Rec.UnregisterConnection();
- if (not IsValidProxyVersion()) then begin
- if not IsValidProxyVersion() then
- InitializeDefaultProxyVersion();
- Rec.Modify();
- end;
- if Rec."Is Enabled" then begin
- // just try notifying, because the setup may be broken, and we are in OnOpenPage
- if TryDetectMultipleCompanies(MultipleCompaniesDetected) then
- if MultipleCompaniesDetected then
- CDSIntegrationImpl.SendMultipleCompaniesNotification()
-
- end else
- if Rec."Disable Reason" <> '' then
- CRMIntegrationManagement.SendConnectionDisabledNotification(Rec."Disable Reason");
- end;
- end;
-
- trigger OnQueryClosePage(CloseAction: Action): Boolean
- begin
- if not Rec."Is Enabled" then
- if not Confirm(StrSubstNo(EnableServiceQst, CurrPage.Caption), true) then
- exit(false);
- end;
-
- [TryFunction]
- local procedure TryDetectMultipleCompanies(var MultipleCompaniesDetected: Boolean)
- var
- CDSIntegrationImpl: Codeunit "CDS Integration Impl.";
- begin
- Rec.RegisterConnection();
- if (Rec."Server Address" <> '') and (Rec."Server Address" <> TestServerAddressTok) then
- MultipleCompaniesDetected := CDSIntegrationImpl.MultipleCompaniesConnected();
- end;
-
- var
- CRMProductName: Codeunit "CRM Product Name";
- ResetIntegrationTableMappingConfirmQst: Label 'This will restore the default integration table mappings and synchronization jobs for %1. All custom mappings and jobs will be deleted. The default mappings and jobs will be used the next time data is synchronized. Do you want to continue?', Comment = '%1 = CRM product name';
- ResetOneIntegrationTableMappingConfirmQst: Label 'This will restore the default integration table mappings and synchronization jobs for %1. Do you want to continue?', Comment = '%1 = CRM product name';
- UnfavorableCRMSolutionInstalledMsg: Label 'The %1 Integration Solution was not detected.', Comment = '%1 - product name';
- FavorableCRMSolutionInstalledMsg: Label 'The %1 Integration Solution is installed in %2.', Comment = '%1 - product name, %2 = CRM product name';
- ReadyScheduledSynchJobsTok: Label '%1 of %2', Comment = '%1 = Count of scheduled job queue entries in ready or in process state, %2 count of all scheduled jobs';
- ScheduledSynchJobsRunning: Text;
- EnableServiceQst: Label 'The %1 is not enabled. Are you sure you want to exit?', Comment = '%1 = This Page Caption (Microsoft Dynamics 365 Connection Setup)';
- PartialScheduledJobsAreRunningMsg: Label 'An active job queue is available but only %1 of the %2 scheduled synchronization jobs are ready or in process.', Comment = '%1 = Count of scheduled job queue entries in ready or in process state, %2 count of all scheduled jobs';
- JobQueueIsNotRunningMsg: Label 'There is no job queue started. Scheduled synchronization jobs require an active job queue to process jobs.\\Contact your administrator to get a job queue configured and started.';
- AllScheduledJobsAreRunningMsg: Label 'An job queue is started and all scheduled synchronization jobs are ready or already processing.';
- SetupSuccessfulMsg: Label 'The default setup for %1 synchronization has completed successfully.', Comment = '%1 = CRM product name';
- CategoryTok: Label 'AL Dataverse Integration', Locked = true;
- CRMConnEnabledOnPageTxt: Label 'Field Service Connection has been enabled from FS Connection Setup Page', Locked = true;
- TestServerAddressTok: Label '@@test@@', Locked = true;
- ScheduledSynchJobsRunningStyleExpr: Text;
- CRMSolutionInstalledStyleExpr: Text;
- CRMVersionStyleExpr: Text;
- ConnectionString: Text;
- ActiveJobs: Integer;
- TotalJobs: Integer;
- IsEditable: Boolean;
- IsCdsIntegrationEnabled: Boolean;
- CRMVersionStatus: Boolean;
-
- local procedure RefreshData()
- begin
- Rec.RefreshDataFromFS(false);
- RefreshSynchJobsData();
- UpdateEnableFlags();
- SetStyleExpr();
- end;
-
- local procedure RefreshSynchJobsData()
- begin
- Rec.CountCRMJobQueueEntries(ActiveJobs, TotalJobs);
- ScheduledSynchJobsRunning := StrSubstNo(ReadyScheduledSynchJobsTok, ActiveJobs, TotalJobs);
- ScheduledSynchJobsRunningStyleExpr := GetRunningJobsStyleExpr();
- end;
-
- local procedure SetStyleExpr()
- begin
- CRMSolutionInstalledStyleExpr := GetStyleExpr(Rec."Is FS Solution Installed");
- CRMVersionStyleExpr := GetStyleExpr(CRMVersionStatus);
- end;
-
- local procedure GetRunningJobsStyleExpr() StyleExpr: Text
- begin
- if ActiveJobs < TotalJobs then
- StyleExpr := 'Ambiguous'
- else
- StyleExpr := GetStyleExpr((ActiveJobs = TotalJobs) and (TotalJobs <> 0))
- end;
-
- local procedure GetStyleExpr(Favorable: Boolean) StyleExpr: Text
- begin
- if Favorable then
- StyleExpr := 'Favorable'
- else
- StyleExpr := 'Unfavorable'
- end;
-
- local procedure UpdateEnableFlags()
- var
- CDSIntegrationImpl: Codeunit "CDS Integration Impl.";
- begin
- IsEditable := not Rec."Is Enabled" and not CDSIntegrationImpl.IsIntegrationEnabled();
- end;
-
- local procedure SetVisibilityFlags()
- var
- CDSConnectionSetup: Record "CDS Connection Setup";
- begin
- if CDSConnectionSetup.Get() then
- IsCdsIntegrationEnabled := CDSConnectionSetup."Is Enabled";
- end;
-
- local procedure IsValidProxyVersion(): Boolean
- begin
- exit(Rec."Proxy Version" <> 0);
- end;
-
- local procedure InitializeDefaultProxyVersion()
- var
- CRMIntegrationManagement: Codeunit "CRM Integration Management";
- begin
- Rec.Validate("Proxy Version", CRMIntegrationManagement.GetLastProxyVersionItem());
- end;
-}
-
diff --git a/Apps/W1/FieldServiceIntegration/app/src/Pages/FSConnectionSetupWizard.Page.al b/Apps/W1/FieldServiceIntegration/app/src/Pages/FSConnectionSetupWizard.Page.al
deleted file mode 100644
index 1472bb1947..0000000000
--- a/Apps/W1/FieldServiceIntegration/app/src/Pages/FSConnectionSetupWizard.Page.al
+++ /dev/null
@@ -1,517 +0,0 @@
-// ------------------------------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License. See License.txt in the project root for license information.
-// ------------------------------------------------------------------------------------------------
-namespace Microsoft.Integration.DynamicsFieldService;
-
-using Microsoft.Integration.Dataverse;
-using System.Environment;
-using System.Environment.Configuration;
-using System.Telemetry;
-using System.Utilities;
-using Microsoft.Integration.D365Sales;
-
-page 6613 "FS Connection Setup Wizard"
-{
- Caption = 'Dynamics 365 Field Service Integration Setup';
- PageType = NavigatePage;
- SourceTable = "FS Connection Setup";
- SourceTableTemporary = true;
-
- layout
- {
- area(content)
- {
- group(BannerStandard)
- {
- Caption = '';
- Editable = false;
- Visible = TopBannerVisible and not CredentialsStepVisible;
-#pragma warning disable AA0100
- field("MediaResourcesStandard.""Media Reference"""; MediaResourcesStandard."Media Reference")
-#pragma warning restore AA0100
- {
- ApplicationArea = Suite;
- Editable = false;
- ShowCaption = false;
- }
- }
- group(BannerDone)
- {
- Caption = '';
- Editable = false;
- Visible = TopBannerVisible and CredentialsStepVisible;
-#pragma warning disable AA0100
- field("MediaResourcesDone.""Media Reference"""; MediaResourcesDone."Media Reference")
-#pragma warning restore AA0100
- {
- ApplicationArea = Suite;
- Editable = false;
- ShowCaption = false;
- }
- }
- group(Step1)
- {
- Visible = FirstStepVisible;
- group("Welcome to Dynamics 365 Connection Setup")
- {
- Caption = 'Welcome to Dynamics 365 Field Service Connection Setup';
- group(Control23)
- {
- InstructionalText = 'You can set up a Dynamics 365 Field Service connection to enable seamless coupling of data.';
- ShowCaption = false;
- }
- group(Control21)
- {
- InstructionalText = 'Start by specifying the URL to your Dynamics 365 Field Service solution, such as https://mycrm.crm4.dynamics.com';
- ShowCaption = false;
- }
- field(ServerAddress; Rec."Server Address")
- {
- ApplicationArea = Suite;
- Editable = ConnectionStringFieldsEditable;
- ToolTip = 'Specifies the URL of the environment that hosts the Dynamics 365 Field Service solution that you want to connect to.';
-
- trigger OnValidate()
- var
- CRMIntegrationManagement: Codeunit "CRM Integration Management";
- begin
- CRMIntegrationManagement.CheckModifyCRMConnectionURL(Rec."Server Address");
- end;
- }
- group(Control9)
- {
- InstructionalText = 'Once coupled, you can work with and synchronize data types that are common to both services, such as work order products, work order services, customer assets and bookable resources, and keep the data up-to-date in both locations.';
- ShowCaption = false;
- }
- }
- }
- group(Step2)
- {
- Caption = '';
- Visible = CredentialsStepVisible;
- group("Step2.1")
- {
- Caption = '';
- InstructionalText = 'Specify the user that will be used for synchronization between the two services.';
- Visible = IsUserNamePasswordVisible;
- field(Email; Rec."User Name")
- {
- ApplicationArea = Suite;
- Caption = 'Email';
- ExtendedDatatype = EMail;
- Editable = ConnectionStringFieldsEditable;
- ToolTip = 'Specifies the user name of a Dynamics 365 Field Service account.';
- }
- field(Password; Password)
- {
- ApplicationArea = Suite;
- Caption = 'Password';
- ExtendedDatatype = Masked;
- Editable = ConnectionStringFieldsEditable;
- ToolTip = 'Specifies the password of a Dynamics 365 Field Service user account.';
-
- trigger OnValidate()
- begin
- PasswordSet := true;
- end;
- }
- }
- group(Control22)
- {
- InstructionalText = 'This account must be a valid user in Dynamics 365 Field Service that does not have the System Administrator role.';
- ShowCaption = false;
- Visible = IsUserNamePasswordVisible;
- }
- group(Control20)
- {
- InstructionalText = 'To enable the connection, fill out the settings below and choose Finish. You may be asked to specify an administrative user account in Dynamics 365 Field Service.';
- ShowCaption = false;
-
- field("Job Journal Template"; Rec."Job Journal Template")
- {
- ApplicationArea = Suite;
- ShowMandatory = true;
- ToolTip = 'Specifies the project journal template in which project journal lines will be created and coupled to work order products and work order services.';
- }
- field("Job Journal Batch"; Rec."Job Journal Batch")
- {
- ApplicationArea = Suite;
- ShowMandatory = true;
- ToolTip = 'Specifies the project journal batch in which project journal lines will be created and coupled to work order products and work order services.';
- }
- field("Hour Unit of Measure"; Rec."Hour Unit of Measure")
- {
- ApplicationArea = Suite;
- ShowMandatory = true;
- ToolTip = 'Specifies the unit of measure that corresponds to the ''hour'' unit that is used on Dynamics 365 Field Service bookable resources.';
- }
- field("Line Synch. Rule"; Rec."Line Synch. Rule")
- {
- ApplicationArea = Suite;
- ToolTip = 'Specifies when to synchronize work order products and work order services.';
- }
- field("Line Post Rule"; Rec."Line Post Rule")
- {
- ApplicationArea = Suite;
- ToolTip = 'Specifies when to post project journal lines that are coupled to work order products and work order services.';
- }
- }
- group("Advanced Settings")
- {
- Caption = 'Advanced Settings';
- Visible = false;
- field(ImportFSSolution; ImportSolution)
- {
- ApplicationArea = Suite;
- Caption = 'Import Dynamics 365 Field Service Integration Solution';
- Enabled = ImportFSSolutionEnabled;
- ToolTip = 'Specifies that the solution required for integration with Dynamics 365 Field Service will be imported.';
- }
- field(EnableFSConnection; EnableFSConnection)
- {
- ApplicationArea = Suite;
- Caption = 'Enable Dynamics 365 Field Service Connection';
- Enabled = EnableFSConnectionEnabled;
- ToolTip = 'Specifies if the connection to Dynamics 365 Field Service will be enabled.';
- }
- field(SDKVersion; Rec."Proxy Version")
- {
- ApplicationArea = Suite;
- AssistEdit = true;
- Caption = 'Dynamics 365 SDK Version';
- Editable = false;
- ToolTip = 'Specifies the Microsoft Dynamics 365 (CRM) software development kit version that is used to connect to Dynamics 365 Field Service.';
-
- trigger OnAssistEdit()
- var
- TempStack: Record TempStack temporary;
- begin
- if Page.RunModal(Page::"SDK Version List", TempStack) = Action::LookupOK then begin
- Rec."Proxy Version" := TempStack.StackOrder;
- CurrPage.Update(true);
- end;
- end;
- }
- }
- }
- }
- }
-
- actions
- {
- area(processing)
- {
- action(ActionBack)
- {
- ApplicationArea = Basic, Suite;
- Caption = 'Back';
- Enabled = BackActionEnabled;
- Image = PreviousRecord;
- InFooterBar = true;
-
- trigger OnAction()
- begin
- NextStep(true);
- end;
- }
- action(ActionNext)
- {
- ApplicationArea = Basic, Suite;
- Caption = 'Next';
- Enabled = NextActionEnabled;
- Image = NextRecord;
- InFooterBar = true;
-
- trigger OnAction()
- begin
- if (Step = Step::Start) and (Rec."Server Address" = '') then
- Error(CRMURLShouldNotBeEmptyErr, CRMProductName.FSServiceName());
- NextStep(false);
- end;
- }
- action(ActionAdvanced)
- {
- ApplicationArea = Basic, Suite;
- Caption = 'Advanced';
- Image = Setup;
- InFooterBar = true;
- Visible = false;
-
- trigger OnAction()
- begin
- ShowAdvancedSettings := true;
- AdvancedActionEnabled := false;
- SimpleActionEnabled := true;
- end;
- }
- action(ActionSimple)
- {
- ApplicationArea = Basic, Suite;
- Caption = 'Simple';
- Image = Setup;
- InFooterBar = true;
- Visible = SimpleActionEnabled;
-
- trigger OnAction()
- begin
- ShowAdvancedSettings := false;
- AdvancedActionEnabled := true;
- SimpleActionEnabled := false;
- end;
- }
- action(ActionFinish)
- {
- ApplicationArea = Basic, Suite;
- Caption = 'Finish';
- Enabled = FinishActionEnabled;
- Image = Approve;
- InFooterBar = true;
-
- trigger OnAction()
- var
- FeatureTelemetry: Codeunit "Feature Telemetry";
- GuidedExperience: Codeunit "Guided Experience";
- begin
- if Rec."Authentication Type" = Rec."Authentication Type"::Office365 then
- if Rec."User Name" = '' then
- Error(CRMSynchUserCredentialsNeededErr, CRMProductName.FSServiceName());
-
- if not FinalizeSetup() then
- exit;
- Page.Run(Page::"FS Connection Setup");
- GuidedExperience.CompleteAssistedSetup(ObjectType::Page, Page::"FS Connection Setup Wizard");
- Commit();
- FeatureTelemetry.LogUptake('0000MBD', 'Dynamics 365 Field Service', Enum::"Feature Uptake Status"::"Set up");
- CurrPage.Close();
- end;
- }
- }
- }
-
- trigger OnInit()
- begin
- LoadTopBanners();
- SetVisibilityFlags();
- end;
-
- trigger OnOpenPage()
- var
- FSConnectionSetup: Record "FS Connection Setup";
- CRMConnectionSetup: Record "CRM Connection Setup";
- FeatureTelemetry: Codeunit "Feature Telemetry";
- begin
- FSConnectionSetup.EnsureCDSConnectionIsEnabled();
- FSConnectionSetup.EnsureCRMConnectionIsEnabled();
- CRMConnectionSetup.Get();
- FSConnectionSetup.LoadConnectionStringElementsFromCDSConnectionSetup();
- FeatureTelemetry.LogUptake('0000MBE', 'Dataverse', Enum::"Feature Uptake Status"::Discovered);
- FeatureTelemetry.LogUptake('0000MBF', 'Dynamics 365 Field Service', Enum::"Feature Uptake Status"::Discovered);
-
- Rec.Init();
- if FSConnectionSetup.Get() then begin
- Rec."Proxy Version" := FSConnectionSetup."Proxy Version";
- Rec."Authentication Type" := FSConnectionSetup."Authentication Type";
- Rec."Server Address" := FSConnectionSetup."Server Address";
- Rec."User Name" := FSConnectionSetup."User Name";
- Rec."User Password Key" := FSConnectionSetup."User Password Key";
- Rec."Job Journal Template" := FSConnectionSetup."Job Journal Template";
- Rec."Job Journal Batch" := FSConnectionSetup."Job Journal Batch";
- Rec."Hour Unit of Measure" := FSConnectionSetup."Hour Unit of Measure";
- Rec."Line Synch. Rule" := FSConnectionSetup."Line Synch. Rule";
- Rec."Line Post Rule" := FSConnectionSetup."Line Post Rule";
- if not FSConnectionSetup.GetPassword().IsEmpty() then
- Password := '**********';
- ConnectionStringFieldsEditable := false;
- end else begin
- InitializeDefaultAuthenticationType();
- InitializeDefaultProxyVersion();
- end;
- Rec.Insert();
- Step := Step::Start;
- EnableControls();
- end;
-
- trigger OnQueryClosePage(CloseAction: Action): Boolean
- var
- GuidedExperience: Codeunit "Guided Experience";
- begin
- if CloseAction = Action::OK then
- if GuidedExperience.AssistedSetupExistsAndIsNotComplete(ObjectType::Page, Page::"FS Connection Setup Wizard") then
- if not Confirm(ConnectionNotSetUpQst, false, CRMProductName.FSServiceName()) then
- Error('');
- end;
-
- var
- MediaRepositoryStandard: Record "Media Repository";
- MediaRepositoryDone: Record "Media Repository";
- MediaResourcesStandard: Record "Media Resources";
- MediaResourcesDone: Record "Media Resources";
- CRMProductName: Codeunit "CRM Product Name";
- ClientTypeManagement: Codeunit "Client Type Management";
- Step: Option Start,Credentials,Finish;
- TopBannerVisible: Boolean;
- ConnectionStringFieldsEditable: Boolean;
- BackActionEnabled: Boolean;
- NextActionEnabled: Boolean;
- FinishActionEnabled: Boolean;
- FirstStepVisible: Boolean;
- CredentialsStepVisible: Boolean;
- EnableFSConnection: Boolean;
- ImportSolution: Boolean;
- EnableFSConnectionEnabled: Boolean;
- ImportFSSolutionEnabled: Boolean;
- ShowAdvancedSettings: Boolean;
- AdvancedActionEnabled: Boolean;
- SimpleActionEnabled: Boolean;
- IsUserNamePasswordVisible: Boolean;
- PasswordSet: Boolean;
- [NonDebuggable]
- Password: Text;
- ConnectionNotSetUpQst: Label 'The %1 connection has not been set up.\\Are you sure you want to exit?', Comment = '%1 = CRM product name';
- CRMURLShouldNotBeEmptyErr: Label 'You must specify the URL of your %1 solution.', Comment = '%1 = CRM product name';
- CRMSynchUserCredentialsNeededErr: Label 'You must specify the credentials for the user account for synchronization with %1.', Comment = '%1 = CRM product name';
- Office365AuthTxt: Label 'AuthType=Office365', Locked = true;
-
- local procedure LoadTopBanners()
- begin
- if MediaRepositoryStandard.Get('AssistedSetup-NoText-120px.png', Format(ClientTypeManagement.GetCurrentClientType())) and
- MediaRepositoryDone.Get('AssistedSetupDone-NoText-120px.png', Format(ClientTypeManagement.GetCurrentClientType()))
- then
- if MediaResourcesStandard.Get(MediaRepositoryStandard."Media Resources Ref") and
- MediaResourcesDone.Get(MediaRepositoryDone."Media Resources Ref")
- then
- TopBannerVisible := MediaResourcesDone."Media Reference".HasValue;
- end;
-
- local procedure SetVisibilityFlags()
- var
- CDSConnectionSetup: Record "CDS Connection Setup";
- begin
- IsUserNamePasswordVisible := true;
-
- if CDSConnectionSetup.Get() then
- if CDSConnectionSetup."Authentication Type" = CDSConnectionSetup."Authentication Type"::Office365 then
- if not CDSConnectionSetup."Connection String".Contains(Office365AuthTxt) then
- IsUserNamePasswordVisible := false;
- end;
-
- local procedure NextStep(Backward: Boolean)
- begin
- if Backward then
- Step := Step - 1
- else
- Step := Step + 1;
-
- EnableControls();
- end;
-
- local procedure ResetControls()
- begin
- BackActionEnabled := false;
- NextActionEnabled := false;
- FinishActionEnabled := false;
- AdvancedActionEnabled := false;
-
- FirstStepVisible := false;
- CredentialsStepVisible := false;
-
- ImportFSSolutionEnabled := true;
- end;
-
- local procedure EnableControls()
- begin
- ResetControls();
-
- case Step of
- Step::Start:
- ShowStartStep();
- Step::Credentials:
- ShowFinishStep();
- end;
- end;
-
- local procedure ShowStartStep()
- begin
- BackActionEnabled := false;
- NextActionEnabled := true;
- FinishActionEnabled := false;
- FirstStepVisible := true;
- AdvancedActionEnabled := false;
- SimpleActionEnabled := false;
- end;
-
- local procedure ShowFinishStep()
- var
- FSConnectionSetup: Record "FS Connection Setup";
- begin
- BackActionEnabled := true;
- NextActionEnabled := false;
- AdvancedActionEnabled := not ShowAdvancedSettings;
- SimpleActionEnabled := not AdvancedActionEnabled;
- CredentialsStepVisible := true;
- FinishActionEnabled := true;
-
- EnableFSConnectionEnabled := Rec."Server Address" <> '';
- Rec."Authentication Type" := Rec."Authentication Type"::Office365;
- if FSConnectionSetup.Get() then begin
- EnableFSConnection := true;
- EnableFSConnectionEnabled := not FSConnectionSetup."Is Enabled";
- ImportSolution := true;
- if FSConnectionSetup."Is FS Solution Installed" then
- ImportFSSolutionEnabled := false;
- end else begin
- if ImportFSSolutionEnabled then
- ImportSolution := true;
- if EnableFSConnectionEnabled then
- EnableFSConnection := true;
- end;
- end;
-
- local procedure FinalizeSetup(): Boolean
- var
- FSConnectionSetup: Record "FS Connection Setup";
- FSIntegrationMgt: Codeunit "FS Integration Mgt.";
- CDSIntegrationImpl: Codeunit "CDS Integration Impl.";
- AdminEmail: Text;
- AdminPassword: SecretText;
- AccessToken: SecretText;
- AdminADDomain: Text;
- ImportSolutionFailed: Boolean;
- begin
- if ImportSolution and ImportFSSolutionEnabled then begin
- case Rec."Authentication Type" of
- Rec."Authentication Type"::Office365:
- CDSIntegrationImpl.GetAccessToken(Rec."Server Address", true, AccessToken);
- Rec."Authentication Type"::AD:
- if not Rec.PromptForCredentials(AdminEmail, AdminPassword, AdminADDomain) then
- exit(false);
- else
- if not Rec.PromptForCredentials(AdminEmail, AdminPassword) then
- exit(false);
- end;
- FSIntegrationMgt.ImportFSSolution(Rec."Server Address", Rec."User Name", AdminEmail, AdminPassword, AccessToken, AdminADDomain, Rec."Proxy Version", true, ImportSolutionFailed);
- end;
- if PasswordSet then
- FSConnectionSetup.UpdateFromWizard(Rec, Password)
- else
- FSConnectionSetup.UpdateFromWizard(Rec, FSConnectionSetup.GetPassword());
-
- if EnableFSConnection then
- FSConnectionSetup.EnableFSConnectionFromWizard();
- exit(true);
- end;
-
- local procedure InitializeDefaultAuthenticationType()
- begin
- Rec.Validate("Authentication Type", Rec."Authentication Type"::Office365);
- end;
-
- local procedure InitializeDefaultProxyVersion()
- var
- CRMIntegrationManagement: Codeunit "CRM Integration Management";
- begin
- Rec.Validate("Proxy Version", CRMIntegrationManagement.GetLastProxyVersionItem());
- end;
-}
-
diff --git a/Apps/W1/FieldServiceIntegration/app/src/Pages/FSCustomerAssetList.Page.al b/Apps/W1/FieldServiceIntegration/app/src/Pages/FSCustomerAssetList.Page.al
deleted file mode 100644
index f24dc2b353..0000000000
--- a/Apps/W1/FieldServiceIntegration/app/src/Pages/FSCustomerAssetList.Page.al
+++ /dev/null
@@ -1,184 +0,0 @@
-// ------------------------------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License. See License.txt in the project root for license information.
-// ------------------------------------------------------------------------------------------------
-namespace Microsoft.Integration.DynamicsFieldService;
-
-using Microsoft.Integration.Dataverse;
-using Microsoft.Service.Item;
-using Microsoft.Integration.D365Sales;
-using System.Environment.Configuration;
-
-page 6611 "FS Customer Asset List"
-{
- ApplicationArea = Suite;
- Caption = 'Customer Assets - Dynamics 365 Field Service';
- Editable = false;
- PageType = List;
- SourceTable = "FS Customer Asset";
- SourceTableView = sorting(Name);
- UsageCategory = Lists;
-
- layout
- {
- area(content)
- {
- repeater(Control2)
- {
- ShowCaption = false;
- field(Name; Rec.Name)
- {
- ApplicationArea = Suite;
- Caption = 'Name';
- StyleExpr = FirstColumnStyle;
- ToolTip = 'Specifies the customer asset name.';
- }
- field(AssetTag; Rec.AssetTag)
- {
- ApplicationArea = Suite;
- Caption = 'Asset Tag';
- ToolTip = 'Specifies the customer asset tag.';
- }
- field(CustomerAssetCategoryName; Rec.CustomerAssetCategoryName)
- {
- ApplicationArea = Suite;
- Caption = 'Category';
- ToolTip = 'Specifies the customer asset category name. ';
- }
- field(CustomerName; CustomerName)
- {
- ApplicationArea = Suite;
- Caption = 'Category';
- ToolTip = 'Specifies the name of the customer. ';
- }
- field(Coupled; Coupled)
- {
- ApplicationArea = Suite;
- Caption = 'Coupled';
- ToolTip = 'Specifies if the Dynamics 365 Field Service record is coupled to Business Central.';
- }
- }
- }
- }
-
- actions
- {
- area(processing)
- {
- action(CreateFromFS)
- {
- ApplicationArea = Suite;
- Caption = 'Create in Business Central';
- Image = NewItemNonStock;
- ToolTip = 'Generate the entity from the Field Service customer asset.';
- Visible = ShowCreateInBC;
-
- trigger OnAction()
- var
- FSCustomerAsset: Record "FS Customer Asset";
- CRMIntegrationManagement: Codeunit "CRM Integration Management";
- begin
- CurrPage.SetSelectionFilter(FSCustomerAsset);
- CRMIntegrationManagement.CreateNewRecordsFromSelectedCRMRecords(FSCustomerAsset);
- end;
- }
- action(ShowOnlyUncoupled)
- {
- ApplicationArea = Suite;
- Caption = 'Hide Coupled Records';
- Image = FilterLines;
- ToolTip = 'Do not show coupled records.';
-
- trigger OnAction()
- begin
- Rec.MarkedOnly(true);
- end;
- }
- action(ShowAll)
- {
- ApplicationArea = Suite;
- Caption = 'Show Coupled Records';
- Image = ClearFilter;
- ToolTip = 'Show coupled records.';
-
- trigger OnAction()
- begin
- Rec.MarkedOnly(false);
- end;
- }
- }
- area(Promoted)
- {
- group(Category_Process)
- {
- Caption = 'Process';
-
- actionref(CreateFromFS_Promoted; CreateFromFS)
- {
- }
- actionref(ShowOnlyUncoupled_Promoted; ShowOnlyUncoupled)
- {
- }
- actionref(ShowAll_Promoted; ShowAll)
- {
- }
- }
- }
- }
-
- trigger OnAfterGetRecord()
- var
- CRMIntegrationRecord: Record "CRM Integration Record";
- CRMAccount: Record "CRM Account";
- RecordID: RecordID;
- begin
- if CRMIntegrationRecord.FindRecordIDFromID(Rec.CustomerAssetId, Database::"Service Item", RecordID) then
- if CurrentlyCoupledFSCustomerAsset.CustomerAssetId = Rec.CustomerAssetId then begin
- Coupled := 'Current';
- FirstColumnStyle := 'Strong';
- Rec.Mark(true);
- end else begin
- Coupled := 'Yes';
- FirstColumnStyle := 'Subordinate';
- Rec.Mark(false);
- end
- else begin
- Coupled := 'No';
- FirstColumnStyle := 'None';
- Rec.Mark(true);
- end;
- if CRMAccount.Get(Rec.Account) then
- CustomerName := CRMAccount.Name
- else
- CustomerName := '';
- end;
-
- trigger OnInit()
- begin
- Codeunit.Run(Codeunit::"CRM Integration Management");
- end;
-
- trigger OnOpenPage()
- var
- ApplicationAreaMgmtFacade: Codeunit "Application Area Mgmt. Facade";
- LookupCRMTables: Codeunit "Lookup CRM Tables";
- begin
- Rec.FilterGroup(4);
- Rec.SetView(LookupCRMTables.GetIntegrationTableMappingView(Database::"FS Customer Asset"));
- Rec.FilterGroup(0);
- ShowCreateInBC := ApplicationAreaMgmtFacade.IsPremiumExperienceEnabled();
- end;
-
- var
- CurrentlyCoupledFSCustomerAsset: Record "FS Customer Asset";
- Coupled: Text;
- FirstColumnStyle: Text;
- CustomerName: Text;
- ShowCreateInBC: Boolean;
-
- procedure SetCurrentlyCoupledFSCustomerAsset(FSCustomerAsset: Record "FS Customer Asset")
- begin
- CurrentlyCoupledFSCustomerAsset := FSCustomerAsset;
- end;
-}
-
diff --git a/Apps/W1/FieldServiceIntegration/app/src/Pages/FSLocationList.PageExt.al b/Apps/W1/FieldServiceIntegration/app/src/Pages/FSLocationList.PageExt.al
deleted file mode 100644
index 2a0edda4f8..0000000000
--- a/Apps/W1/FieldServiceIntegration/app/src/Pages/FSLocationList.PageExt.al
+++ /dev/null
@@ -1,172 +0,0 @@
-// ------------------------------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License. See License.txt in the project root for license information.
-// ------------------------------------------------------------------------------------------------
-namespace Microsoft.Integration.DynamicsFieldService;
-
-using Microsoft.Inventory.Location;
-using Microsoft.Integration.Dataverse;
-
-pageextension 6623 "FS Location List" extends "Location List"
-{
- layout
- {
- addlast(Control1)
- {
- field("Coupled to FS"; Rec."Coupled to FS")
- {
- ApplicationArea = Jobs;
- Visible = FSIntegrationEnabled;
- ToolTip = 'Specifies if the project task is coupled to an entity in Field Service.';
- }
- }
- }
-
- actions
- {
- addafter("&Location")
- {
- group(ActionFS)
- {
- Caption = 'Dynamics 365 Field Service';
- Enabled = FSIntegrationEnabled;
-
- action(GoToProductFS)
- {
- ApplicationArea = Suite;
- Caption = 'Location in Field Service';
- Image = CoupledItem;
- ToolTip = 'Open the coupled Dynamics 365 Field Service entity.';
-
- trigger OnAction()
- var
- CRMIntegrationManagement: Codeunit "CRM Integration Management";
- begin
- CRMIntegrationManagement.ShowCRMEntityFromRecordID(Rec.RecordId);
- end;
- }
- action(SynchronizeNowFS)
- {
- AccessByPermission = TableData "CRM Integration Record" = IM;
- ApplicationArea = Suite;
- Caption = 'Synchronize';
- Image = Refresh;
- ToolTip = 'Send updated data to Dynamics 365 Field Service.';
-
- trigger OnAction()
- var
- CRMIntegrationManagement: Codeunit "CRM Integration Management";
- begin
- CRMIntegrationManagement.UpdateOneNow(Rec.RecordId);
- end;
- }
- group(CouplingFS)
- {
- Caption = 'Coupling', Comment = 'Coupling is a noun';
- Image = LinkAccount;
- ToolTip = 'Create, change, or delete a coupling between the Business Central record and a Dynamics 365 Field Service record.';
- action(ManageCouplingFS)
- {
- AccessByPermission = TableData "CRM Integration Record" = IM;
- ApplicationArea = Suite;
- Caption = 'Set Up Coupling';
- Image = LinkAccount;
- ToolTip = 'Create or modify the coupling to a Dynamics 365 Field Service product.';
-
- trigger OnAction()
- var
- CRMIntegrationManagement: Codeunit "CRM Integration Management";
- begin
- CRMIntegrationManagement.DefineCoupling(Rec.RecordId);
- end;
- }
- action(DeleteCouplingFS)
- {
- AccessByPermission = TableData "CRM Integration Record" = D;
- ApplicationArea = Suite;
- Caption = 'Delete Coupling';
- Enabled = CRMIsCoupledToRecord;
- Image = UnLinkAccount;
- ToolTip = 'Delete the coupling to a Dynamics 365 Field Service entity.';
-
- trigger OnAction()
- var
- CRMCouplingManagement: Codeunit "CRM Coupling Management";
- begin
- CRMCouplingManagement.RemoveCoupling(Rec.RecordId);
- end;
- }
- }
- action(FSShowLog)
- {
- ApplicationArea = Suite;
- Caption = 'Synchronization Log';
- Image = Log;
- ToolTip = 'View integration synchronization jobs for the location table.';
-
- trigger OnAction()
- var
- CRMIntegrationManagement: Codeunit "CRM Integration Management";
- begin
- CRMIntegrationManagement.ShowLog(Rec.RecordId);
- end;
- }
- }
- }
-
- addlast(Promoted)
- {
- group(Category_FS_Synchronize)
- {
- Caption = 'Synchronize';
- Visible = FSIntegrationEnabled;
-
- group(Category_FS_Coupling)
- {
- Caption = 'Coupling';
- ShowAs = SplitButton;
-
- actionref(ManageCouplingFS_Promoted; ManageCouplingFS)
- {
- }
- actionref(DeleteCouplingFS_Promoted; DeleteCouplingFS)
- {
- }
- }
- actionref(SynchronizeNowFS_Promoted; SynchronizeNowFS)
- {
- }
- actionref(GoToProductFS_Promoted; GoToProductFS)
- {
- }
- actionref(FSShowLog_Promoted; FSShowLog)
- {
- }
- }
- }
- }
-
-
- var
- FSIntegrationEnabled: Boolean;
- CRMIsCoupledToRecord: Boolean;
- CRMIntegrationEnabled: Boolean;
-
- trigger OnAfterGetCurrRecord()
- var
- CRMCouplingManagement: Codeunit "CRM Coupling Management";
- begin
- if FSIntegrationEnabled then
- CRMIsCoupledToRecord := CRMCouplingManagement.IsRecordCoupledToCRM(Rec.RecordId);
- end;
-
- trigger OnOpenPage()
- var
- FSConnectionSetup: Record "FS Connection Setup";
- CRMIntegrationManagement: Codeunit "CRM Integration Management";
- begin
- CRMIntegrationEnabled := CRMIntegrationManagement.IsCRMIntegrationEnabled();
- if CRMIntegrationEnabled then
- FSIntegrationEnabled := FSConnectionSetup.IsEnabled();
- end;
-}
\ No newline at end of file
diff --git a/Apps/W1/FieldServiceIntegration/app/src/Permissions/FSD365TEAMMEMBER.PermissionSetExt.al b/Apps/W1/FieldServiceIntegration/app/src/Permissions/FSD365TEAMMEMBER.PermissionSetExt.al
deleted file mode 100644
index fa5cd132bb..0000000000
--- a/Apps/W1/FieldServiceIntegration/app/src/Permissions/FSD365TEAMMEMBER.PermissionSetExt.al
+++ /dev/null
@@ -1,12 +0,0 @@
-// ------------------------------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License. See License.txt in the project root for license information.
-// ------------------------------------------------------------------------------------------------
-namespace Microsoft.Integration.DynamicsFieldService;
-
-using System.Security.AccessControl;
-
-permissionsetextension 6614 "FS D365 TEAM MEMBER" extends "D365 TEAM MEMBER"
-{
- IncludedPermissionSets = "FS - Edit";
-}
diff --git a/Apps/W1/FieldServiceIntegration/app/src/Permissions/FSEdit.PermissionSet.al b/Apps/W1/FieldServiceIntegration/app/src/Permissions/FSEdit.PermissionSet.al
deleted file mode 100644
index 70b9c6083f..0000000000
--- a/Apps/W1/FieldServiceIntegration/app/src/Permissions/FSEdit.PermissionSet.al
+++ /dev/null
@@ -1,30 +0,0 @@
-// ------------------------------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License. See License.txt in the project root for license information.
-// ------------------------------------------------------------------------------------------------
-namespace Microsoft.Integration.DynamicsFieldService;
-
-permissionset 6610 "FS - Edit"
-{
- Access = Internal;
- Assignable = false;
- Caption = 'Field Service - Edit';
-
- IncludedPermissionSets = "FS - Read";
-
- Permissions = tabledata "FS Connection Setup" = IMD,
- tabledata "FS Bookable Resource" = IMD,
- tabledata "FS Bookable Resource Booking" = IMD,
- tabledata "FS BookableResourceBookingHdr" = IMD,
- tabledata "FS Customer Asset" = IMD,
- tabledata "FS Customer Asset Category" = IMD,
- tabledata "FS Project Task" = IMD,
- tabledata "FS Resource Pay Type" = IMD,
- tabledata "FS Warehouse" = IMD,
- tabledata "FS Work Order" = IMD,
- tabledata "FS Work Order Incident" = IMD,
- tabledata "FS Work Order Product" = IMD,
- tabledata "FS Work Order Service" = IMD,
- tabledata "FS Work Order Substatus" = IMD,
- tabledata "FS Work Order Type" = IMD;
-}
diff --git a/Apps/W1/FieldServiceIntegration/app/src/Permissions/FSINTELLIGENTCLOUD.PermissionSetExt.al b/Apps/W1/FieldServiceIntegration/app/src/Permissions/FSINTELLIGENTCLOUD.PermissionSetExt.al
deleted file mode 100644
index c15d7a96b6..0000000000
--- a/Apps/W1/FieldServiceIntegration/app/src/Permissions/FSINTELLIGENTCLOUD.PermissionSetExt.al
+++ /dev/null
@@ -1,12 +0,0 @@
-// ------------------------------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License. See License.txt in the project root for license information.
-// ------------------------------------------------------------------------------------------------
-namespace Microsoft.Integration.DynamicsFieldService;
-
-using System.Security.AccessControl;
-
-permissionsetextension 6615 "FS INTELLIGENT CLOUD" extends "INTELLIGENT CLOUD"
-{
- IncludedPermissionSets = "FS - Read";
-}
diff --git a/Apps/W1/FieldServiceIntegration/app/src/Permissions/FSObjects.PermissionSet.al b/Apps/W1/FieldServiceIntegration/app/src/Permissions/FSObjects.PermissionSet.al
deleted file mode 100644
index 588a11a6be..0000000000
--- a/Apps/W1/FieldServiceIntegration/app/src/Permissions/FSObjects.PermissionSet.al
+++ /dev/null
@@ -1,39 +0,0 @@
-// ------------------------------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License. See License.txt in the project root for license information.
-// ------------------------------------------------------------------------------------------------
-namespace Microsoft.Integration.DynamicsFieldService;
-
-permissionset 6612 "FS - Objects"
-{
- Access = Public;
- Assignable = false;
- Caption = 'Field Service - Objects';
-
- Permissions = codeunit "FS Assisted Setup Subscriber" = X,
- codeunit "FS Data Classification" = X,
- codeunit "FS Install" = X,
- codeunit "FS Integration Mgt." = X,
- codeunit "FS Int. Table Subscriber" = X,
- codeunit "FS Lookup FS Tables" = X,
- codeunit "FS Setup Defaults" = X,
- page "FS Bookable Resource List" = X,
- page "FS Connection Setup" = X,
- page "FS Connection Setup Wizard" = X,
- page "FS Customer Asset List" = X,
- table "FS Bookable Resource" = X,
- table "FS Bookable Resource Booking" = X,
- table "FS BookableResourceBookingHdr" = X,
- table "FS Connection Setup" = X,
- table "FS Customer Asset" = X,
- table "FS Customer Asset Category" = X,
- table "FS Project Task" = X,
- table "FS Resource Pay Type" = X,
- table "FS Warehouse" = X,
- table "FS Work Order" = X,
- table "FS Work Order Incident" = X,
- table "FS Work Order Product" = X,
- table "FS Work Order Service" = X,
- table "FS Work Order Substatus" = X,
- table "FS Work Order Type" = X;
-}
diff --git a/Apps/W1/FieldServiceIntegration/app/src/Permissions/FSRead.PermissionSet.al b/Apps/W1/FieldServiceIntegration/app/src/Permissions/FSRead.PermissionSet.al
deleted file mode 100644
index 1f4dda8f14..0000000000
--- a/Apps/W1/FieldServiceIntegration/app/src/Permissions/FSRead.PermissionSet.al
+++ /dev/null
@@ -1,30 +0,0 @@
-// ------------------------------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License. See License.txt in the project root for license information.
-// ------------------------------------------------------------------------------------------------
-namespace Microsoft.Integration.DynamicsFieldService;
-
-permissionset 6611 "FS - Read"
-{
- Access = Internal;
- Assignable = false;
- Caption = 'Field Service - Read';
-
- IncludedPermissionSets = "FS - Objects";
-
- Permissions = tabledata "FS Connection Setup" = R,
- tabledata "FS Bookable Resource" = R,
- tabledata "FS Bookable Resource Booking" = R,
- tabledata "FS BookableResourceBookingHdr" = R,
- tabledata "FS Customer Asset" = R,
- tabledata "FS Customer Asset Category" = R,
- tabledata "FS Project Task" = R,
- tabledata "FS Resource Pay Type" = R,
- tabledata "FS Warehouse" = R,
- tabledata "FS Work Order" = R,
- tabledata "FS Work Order Incident" = R,
- tabledata "FS Work Order Product" = R,
- tabledata "FS Work Order Service" = R,
- tabledata "FS Work Order Substatus" = R,
- tabledata "FS Work Order Type" = R;
-}
diff --git a/Apps/W1/FieldServiceIntegration/app/src/Table Extensions/FSJob.TableExt.al b/Apps/W1/FieldServiceIntegration/app/src/Table Extensions/FSJob.TableExt.al
deleted file mode 100644
index d2027dc68f..0000000000
--- a/Apps/W1/FieldServiceIntegration/app/src/Table Extensions/FSJob.TableExt.al
+++ /dev/null
@@ -1,69 +0,0 @@
-// ------------------------------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License. See License.txt in the project root for license information.
-// ------------------------------------------------------------------------------------------------
-namespace Microsoft.Integration.DynamicsFieldService;
-
-using Microsoft.Projects.Project.Job;
-using Microsoft.Integration.SyncEngine;
-
-tableextension 6610 "FS Job" extends Job
-{
- fields
- {
- modify(Blocked)
- {
- trigger OnAfterValidate()
- var
- FSConnectionSetup: Record "FS Connection Setup";
- begin
- if Rec.Blocked <> Rec.Blocked::" " then
- if FSConnectionSetup.IsEnabled() then
- MoveFilterOnProjectTaskMapping();
- end;
- }
- modify("Apply Usage Link")
- {
- trigger OnAfterValidate()
- var
- FSConnectionSetup: Record "FS Connection Setup";
- begin
- if FSConnectionSetup.IsEnabled() then
- MoveFilterOnProjectTaskMapping();
- end;
- }
- }
-
- local procedure MoveFilterOnProjectTaskMapping()
- var
- IntegrationTableMapping: Record "Integration Table Mapping";
- JobTask: Record "Job Task";
- begin
- if Rec.Blocked <> Rec.Blocked::" " then
- exit;
-
- IntegrationTableMapping.SetRange(Type, IntegrationTableMapping.Type::Dataverse);
- IntegrationTableMapping.SetRange("Delete After Synchronization", false);
- IntegrationTableMapping.SetRange("Table ID", Database::"Job Task");
- IntegrationTableMapping.SetRange("Integration Table ID", Database::"FS Project Task");
- if not IntegrationTableMapping.FindFirst() then
- exit;
-
- JobTask.SetRange("Job No.", Rec."No.");
- JobTask.SetCurrentKey(SystemCreatedAt);
- JobTask.SetAscending(SystemCreatedAt, true);
- if not JobTask.FindFirst() then
- exit;
-
- if JobTask.SystemCreatedAt = 0DT then begin
- IntegrationTableMapping."Synch. Int. Tbl. Mod. On Fltr." := 0DT;
- IntegrationTableMapping.Modify();
- exit;
- end;
-
- if IntegrationTableMapping."Synch. Int. Tbl. Mod. On Fltr." > JobTask.SystemCreatedAt then begin
- IntegrationTableMapping."Synch. Int. Tbl. Mod. On Fltr." := JobTask.SystemCreatedAt;
- IntegrationTableMapping.Modify();
- end;
- end;
-}
\ No newline at end of file
diff --git a/Apps/W1/FieldServiceIntegration/app/src/Table Extensions/FSJobCue.TableExt.al b/Apps/W1/FieldServiceIntegration/app/src/Table Extensions/FSJobCue.TableExt.al
deleted file mode 100644
index abd3f3865e..0000000000
--- a/Apps/W1/FieldServiceIntegration/app/src/Table Extensions/FSJobCue.TableExt.al
+++ /dev/null
@@ -1,28 +0,0 @@
-// ------------------------------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License. See License.txt in the project root for license information.
-// ------------------------------------------------------------------------------------------------
-namespace Microsoft.Integration.DynamicsFieldService;
-
-using Microsoft.Integration.Dataverse;
-using Microsoft.Projects.RoleCenters;
-using Microsoft.Integration.SyncEngine;
-
-tableextension 6613 "FS Job Cue" extends "Job Cue"
-{
- fields
- {
- field(12000; "Coupled Data Sync Errors"; Integer)
- {
- CalcFormula = count("CRM Integration Record" where(Skipped = const(true)));
- Caption = 'Coupled Data Synch Errors';
- FieldClass = FlowField;
- }
- field(12001; "FS Int. Errors"; Integer)
- {
- CalcFormula = count("Integration Synch. Job Errors");
- Caption = 'Field Service Integration Errors';
- FieldClass = FlowField;
- }
- }
-}
\ No newline at end of file
diff --git a/Apps/W1/FieldServiceIntegration/app/src/Table Extensions/FSJobTask.TableExt.al b/Apps/W1/FieldServiceIntegration/app/src/Table Extensions/FSJobTask.TableExt.al
deleted file mode 100644
index 1e77f88101..0000000000
--- a/Apps/W1/FieldServiceIntegration/app/src/Table Extensions/FSJobTask.TableExt.al
+++ /dev/null
@@ -1,22 +0,0 @@
-// ------------------------------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License. See License.txt in the project root for license information.
-// ------------------------------------------------------------------------------------------------
-namespace Microsoft.Integration.DynamicsFieldService;
-
-using Microsoft.Integration.Dataverse;
-using Microsoft.Projects.Project.Job;
-
-tableextension 6611 "FS Job Task" extends "Job Task"
-{
- fields
- {
- field(12000; "Coupled to FS"; Boolean)
- {
- FieldClass = FlowField;
- Caption = 'Coupled to Field Service';
- Editable = false;
- CalcFormula = exist("CRM Integration Record" where("Integration ID" = field(SystemId), "Table ID" = const(Database::"Job Task")));
- }
- }
-}
\ No newline at end of file
diff --git a/Apps/W1/FieldServiceIntegration/app/src/Table Extensions/FSLocation.TableExt.al b/Apps/W1/FieldServiceIntegration/app/src/Table Extensions/FSLocation.TableExt.al
deleted file mode 100644
index 9443bf8f91..0000000000
--- a/Apps/W1/FieldServiceIntegration/app/src/Table Extensions/FSLocation.TableExt.al
+++ /dev/null
@@ -1,22 +0,0 @@
-// ------------------------------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License. See License.txt in the project root for license information.
-// ------------------------------------------------------------------------------------------------
-namespace Microsoft.Integration.DynamicsFieldService;
-
-using Microsoft.Inventory.Location;
-using Microsoft.Integration.Dataverse;
-
-tableextension 6614 "FS Location" extends Location
-{
- fields
- {
- field(12000; "Coupled to FS"; Boolean)
- {
- FieldClass = FlowField;
- Caption = 'Coupled to Field Service';
- Editable = false;
- CalcFormula = exist("CRM Integration Record" where("Integration ID" = field(SystemId), "Table ID" = const(Database::Location)));
- }
- }
-}
\ No newline at end of file
diff --git a/Apps/W1/FieldServiceIntegration/app/src/Table Extensions/FSServiceItem.TableExt.al b/Apps/W1/FieldServiceIntegration/app/src/Table Extensions/FSServiceItem.TableExt.al
deleted file mode 100644
index 52ebe79b1c..0000000000
--- a/Apps/W1/FieldServiceIntegration/app/src/Table Extensions/FSServiceItem.TableExt.al
+++ /dev/null
@@ -1,22 +0,0 @@
-// ------------------------------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License. See License.txt in the project root for license information.
-// ------------------------------------------------------------------------------------------------
-namespace Microsoft.Integration.DynamicsFieldService;
-
-using Microsoft.Integration.Dataverse;
-using Microsoft.Service.Item;
-
-tableextension 6612 "FS Service Item" extends "Service Item"
-{
- fields
- {
- field(12000; "Coupled to FS"; Boolean)
- {
- FieldClass = FlowField;
- Caption = 'Coupled to Field Service';
- Editable = false;
- CalcFormula = exist("CRM Integration Record" where("Integration ID" = field(SystemId), "Table ID" = const(Database::"Service Item")));
- }
- }
-}
\ No newline at end of file
diff --git a/Apps/W1/FieldServiceIntegration/app/src/Tables/FSBookableResource.Table.al b/Apps/W1/FieldServiceIntegration/app/src/Tables/FSBookableResource.Table.al
deleted file mode 100644
index 013ade00d3..0000000000
--- a/Apps/W1/FieldServiceIntegration/app/src/Tables/FSBookableResource.Table.al
+++ /dev/null
@@ -1,501 +0,0 @@
-// ------------------------------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License. See License.txt in the project root for license information.
-// ------------------------------------------------------------------------------------------------
-namespace Microsoft.Integration.DynamicsFieldService;
-
-using Microsoft.Integration.D365Sales;
-
-table 6610 "FS Bookable Resource"
-{
- ExternalName = 'bookableresource';
- TableType = CRM;
- Description = 'Resource that has capacity which can be allocated to work.';
- DataClassification = SystemMetadata;
-
- fields
- {
- field(1; BookableResourceId; GUID)
- {
- ExternalName = 'bookableresourceid';
- ExternalType = 'Uniqueidentifier';
- ExternalAccess = Insert;
- Description = 'Unique identifier of the resource.';
- Caption = 'Bookable Resource';
- DataClassification = SystemMetadata;
- }
- field(2; CreatedOn; Datetime)
- {
- ExternalName = 'createdon';
- ExternalType = 'DateTime';
- ExternalAccess = Read;
- Description = 'Date and time when the record was created.';
- Caption = 'Created On';
- DataClassification = SystemMetadata;
- }
- field(3; CreatedBy; GUID)
- {
- ExternalName = 'createdby';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Unique identifier of the user who created the record.';
- Caption = 'Created By';
- TableRelation = "CRM Systemuser".SystemUserId;
- DataClassification = SystemMetadata;
- }
- field(4; ModifiedOn; Datetime)
- {
- ExternalName = 'modifiedon';
- ExternalType = 'DateTime';
- ExternalAccess = Read;
- Description = 'Date and time when the record was modified.';
- Caption = 'Modified On';
- DataClassification = SystemMetadata;
- }
- field(5; ModifiedBy; GUID)
- {
- ExternalName = 'modifiedby';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Unique identifier of the user who modified the record.';
- Caption = 'Modified By';
- TableRelation = "CRM Systemuser".SystemUserId;
- DataClassification = SystemMetadata;
- }
- field(6; CreatedOnBehalfBy; GUID)
- {
- ExternalName = 'createdonbehalfby';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Unique identifier of the delegate user who created the record.';
- Caption = 'Created By (Delegate)';
- TableRelation = "CRM Systemuser".SystemUserId;
- DataClassification = SystemMetadata;
- }
- field(7; ModifiedOnBehalfBy; GUID)
- {
- ExternalName = 'modifiedonbehalfby';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Unique identifier of the delegate user who modified the record.';
- Caption = 'Modified By (Delegate)';
- TableRelation = "CRM Systemuser".SystemUserId;
- DataClassification = SystemMetadata;
- }
- field(15; OwnerId; GUID)
- {
- ExternalName = 'ownerid';
- ExternalType = 'Owner';
- Description = 'Owner Id';
- Caption = 'Owner';
- DataClassification = SystemMetadata;
- }
- field(20; OwningBusinessUnit; GUID)
- {
- ExternalName = 'owningbusinessunit';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Unique identifier for the business unit that owns the record';
- Caption = 'Owning Business Unit';
- TableRelation = "CRM Businessunit".BusinessUnitId;
- DataClassification = SystemMetadata;
- }
- field(21; OwningUser; GUID)
- {
- ExternalName = 'owninguser';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Unique identifier for the user that owns the record.';
- Caption = 'Owning User';
- TableRelation = "CRM Systemuser".SystemUserId;
- DataClassification = SystemMetadata;
- }
- field(22; OwningTeam; GUID)
- {
- ExternalName = 'owningteam';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Unique identifier for the team that owns the record.';
- Caption = 'Owning Team';
- TableRelation = "CRM Team".TeamId;
- DataClassification = SystemMetadata;
- }
- field(24; VersionNumber; BigInteger)
- {
- ExternalName = 'versionnumber';
- ExternalType = 'BigInt';
- ExternalAccess = Read;
- Description = 'Version Number';
- Caption = 'Version Number';
- DataClassification = SystemMetadata;
- }
- field(25; ImportSequenceNumber; Integer)
- {
- ExternalName = 'importsequencenumber';
- ExternalType = 'Integer';
- ExternalAccess = Insert;
- Description = 'Sequence number of the import that created this record.';
- Caption = 'Import Sequence Number';
- DataClassification = SystemMetadata;
- }
- field(26; OverriddenCreatedOn; Date)
- {
- ExternalName = 'overriddencreatedon';
- ExternalType = 'DateTime';
- ExternalAccess = Insert;
- Description = 'Date and time that the record was migrated.';
- Caption = 'Record Created On';
- DataClassification = SystemMetadata;
- }
- field(27; TimeZoneRuleVersionNumber; Integer)
- {
- ExternalName = 'timezoneruleversionnumber';
- ExternalType = 'Integer';
- Description = 'For internal use only.';
- Caption = 'Time Zone Rule Version Number';
- DataClassification = SystemMetadata;
- }
- field(28; UTCConversionTimeZoneCode; Integer)
- {
- ExternalName = 'utcconversiontimezonecode';
- ExternalType = 'Integer';
- Description = 'Time zone code that was in use when the record was created.';
- Caption = 'UTC Conversion Time Zone Code';
- DataClassification = SystemMetadata;
- }
- field(29; Name; Text[100])
- {
- ExternalName = 'name';
- ExternalType = 'String';
- Description = 'Type the name of the resource.';
- Caption = 'Name';
- DataClassification = SystemMetadata;
- }
- field(30; ProcessId; GUID)
- {
- ExternalName = 'processid';
- ExternalType = 'Uniqueidentifier';
- Description = 'Contains the id of the process associated with the entity.';
- Caption = 'Process Id';
- DataClassification = SystemMetadata;
- }
- field(31; StageId; GUID)
- {
- ExternalName = 'stageid';
- ExternalType = 'Uniqueidentifier';
- Description = 'Contains the id of the stage where the entity is located.';
- Caption = '(Deprecated) Stage Id';
- DataClassification = SystemMetadata;
- }
- field(32; TraversedPath; Text[1250])
- {
- ExternalName = 'traversedpath';
- ExternalType = 'String';
- Description = 'A comma separated list of string values representing the unique identifiers of stages in a Business Process Flow Instance in the order that they occur.';
- Caption = '(Deprecated) Traversed Path';
- DataClassification = SystemMetadata;
- }
- field(33; AccountId; GUID)
- {
- ExternalName = 'accountid';
- ExternalType = 'Lookup';
- Description = 'Select the account that represents this resource.';
- Caption = 'Account';
- TableRelation = "CRM Account".AccountId;
- DataClassification = SystemMetadata;
- }
- field(35; ContactId; GUID)
- {
- ExternalName = 'contactid';
- ExternalType = 'Lookup';
- Description = 'Select the contact that represents this resource.';
- Caption = 'Contact';
- TableRelation = "CRM Contact".ContactId;
- DataClassification = SystemMetadata;
- }
- field(36; ResourceType; Option)
- {
- ExternalName = 'resourcetype';
- ExternalType = 'Picklist';
- ExternalAccess = Insert;
- Description = 'Select whether the resource is a user, equipment, contact, account, generic resource or a group of resources.';
- Caption = 'Resource Type';
- InitValue = User;
- OptionMembers = Generic,Contact,User,Equipment,Account,Crew,Facility,Pool;
- OptionOrdinalValues = 1, 2, 3, 4, 5, 6, 7, 8;
- DataClassification = SystemMetadata;
- }
- field(38; StateCode; Option)
- {
- ExternalName = 'statecode';
- ExternalType = 'State';
- ExternalAccess = Modify;
- Description = 'Status of the Bookable Resource';
- Caption = 'Status';
- InitValue = " ";
- OptionMembers = " ",Active,Inactive;
- OptionOrdinalValues = -1, 0, 1;
- DataClassification = SystemMetadata;
- }
- field(40; StatusCode; Option)
- {
- ExternalName = 'statuscode';
- ExternalType = 'Status';
- Description = 'Reason for the status of the Bookable Resource';
- Caption = 'Status Reason';
- InitValue = " ";
- OptionMembers = " ",Active,Inactive;
- OptionOrdinalValues = -1, 1, 2;
- DataClassification = SystemMetadata;
- }
- field(42; TimeZone; Integer)
- {
- ExternalName = 'timezone';
- ExternalType = 'Integer';
- Description = 'Specifies the timezone for the resource''s working hours.';
- Caption = 'Time Zone';
- DataClassification = SystemMetadata;
- }
- field(43; UserId; GUID)
- {
- ExternalName = 'userid';
- ExternalType = 'Lookup';
- ExternalAccess = Insert;
- Description = 'Select the user who represents this resource.';
- Caption = 'User';
- TableRelation = "CRM Systemuser".SystemUserId;
- DataClassification = SystemMetadata;
- }
- field(44; ExchangeRate; Decimal)
- {
- ExternalName = 'exchangerate';
- ExternalType = 'Decimal';
- ExternalAccess = Read;
- Description = 'Exchange rate for the currency associated with the bookableresource with respect to the base currency.';
- Caption = 'ExchangeRate';
- DataClassification = SystemMetadata;
- }
- field(45; TransactionCurrencyId; GUID)
- {
- ExternalName = 'transactioncurrencyid';
- ExternalType = 'Lookup';
- Description = 'Exchange rate for the currency associated with the BookableResource with respect to the base currency.';
- Caption = 'Currency';
- TableRelation = "CRM Transactioncurrency".TransactionCurrencyId;
- DataClassification = SystemMetadata;
- }
- field(56; DeriveCapacity; Boolean)
- {
- ExternalName = 'msdyn_derivecapacity';
- ExternalType = 'Boolean';
- Description = '';
- Caption = 'Derive Capacity From Group Members';
- DataClassification = SystemMetadata;
- }
- field(58; DisplayOnScheduleAssistant; Boolean)
- {
- ExternalName = 'msdyn_displayonscheduleassistant';
- ExternalType = 'Boolean';
- Description = 'Specify if this resource should be enabled for availablity search.';
- Caption = 'Enable for Availability Search';
- DataClassification = SystemMetadata;
- }
- field(60; DisplayOnScheduleBoard; Boolean)
- {
- ExternalName = 'msdyn_displayonscheduleboard';
- ExternalType = 'Boolean';
- Description = 'Specify if this resource should be displayed on the schedule board.';
- Caption = 'Display On Schedule Board';
- DataClassification = SystemMetadata;
- }
- field(62; EndLocation; Option)
- {
- ExternalName = 'msdyn_endlocation';
- ExternalType = 'Picklist';
- Description = 'Shows the default ending location type when booking daily schedules for this resource.';
- Caption = 'End Location';
- InitValue = LocationAgnostic;
- OptionMembers = LocationAgnostic,ResourceAddress,OrganizationalUnitAddress;
- OptionOrdinalValues = 690970002, 690970000, 690970001;
- DataClassification = SystemMetadata;
- }
- field(64; GenericType; Option)
- {
- ExternalName = 'msdyn_generictype';
- ExternalType = 'Picklist';
- Description = '';
- Caption = 'Generic Type (Deprecated)';
- InitValue = " ";
- OptionMembers = " ",ServiceCenter;
- OptionOrdinalValues = -1, 690970000;
- DataClassification = SystemMetadata;
- }
- field(67; PrimaryEMail; Text[100])
- {
- ExternalName = 'msdyn_primaryemail';
- ExternalType = 'String';
- Description = '';
- Caption = 'Primary Email';
- DataClassification = SystemMetadata;
- }
- field(68; StartLocation; Option)
- {
- ExternalName = 'msdyn_startlocation';
- ExternalType = 'Picklist';
- Description = 'Shows the default starting location type when booking daily schedules for this resource.';
- Caption = 'Start Location';
- InitValue = LocationAgnostic;
- OptionMembers = LocationAgnostic,ResourceAddress,OrganizationalUnitAddress;
- OptionOrdinalValues = 690970002, 690970000, 690970001;
- DataClassification = SystemMetadata;
- }
- field(70; TargetUtilization; Integer)
- {
- ExternalName = 'msdyn_targetutilization';
- ExternalType = 'Integer';
- Description = 'Shows the target utilization for the resource.';
- Caption = 'Target Utilization';
- DataClassification = SystemMetadata;
- }
- field(72; EnableAppointments; Option)
- {
- ExternalName = 'msdyn_enableappointments';
- ExternalType = 'Picklist';
- Description = 'Enable appointments to display on the new schedule board and be considered in availability search for resources.';
- Caption = 'Include Appointments';
- InitValue = Yes;
- OptionMembers = No,Yes;
- OptionOrdinalValues = 192350000, 192350001;
- DataClassification = SystemMetadata;
- }
- field(74; EnableOutlookSchedules; Option)
- {
- ExternalName = 'msdyn_enableoutlookschedules';
- ExternalType = 'Picklist';
- Description = 'This only applies when directly calling the API. It does not apply when the Book button is clicked on the Schedule Board or on any schedulable entity.';
- Caption = 'Include Outlook Free/Busy in Search Resource Availability API';
- InitValue = Yes;
- OptionMembers = No,Yes;
- OptionOrdinalValues = 192350000, 192350001;
- DataClassification = SystemMetadata;
- }
- field(76; BookingsToDrip; Integer)
- {
- ExternalName = 'msdyn_bookingstodrip';
- ExternalType = 'Integer';
- Description = 'The number of bookings to drip on the Mobile . This field is disabled/enabled based on Enable Drip Scheduling field';
- Caption = 'Bookings To Drip';
- DataClassification = SystemMetadata;
- }
- field(77; EnabledForFieldServiceMobile; Boolean)
- {
- ExternalName = 'msdyn_enabledforfieldservicemobile';
- ExternalType = 'Boolean';
- Description = 'Set this field to Yes if this resource requires access to the legacy Field Service Mobile application.';
- Caption = 'Enable for Field Service Mobile (legacy Xamarin app)';
- DataClassification = SystemMetadata;
- }
- field(79; EnableDripScheduling; Boolean)
- {
- ExternalName = 'msdyn_enabledripscheduling';
- ExternalType = 'Boolean';
- Description = 'Enables drip scheduling on the mobile app.';
- Caption = 'Enable Drip Scheduling';
- DataClassification = SystemMetadata;
- }
- field(81; HourlyRate; Decimal)
- {
- ExternalName = 'msdyn_hourlyrate';
- ExternalType = 'Money';
- Description = '';
- Caption = 'Hourly Rate';
- DataClassification = SystemMetadata;
- }
- field(82; HourlyRate_Base; Decimal)
- {
- ExternalName = 'msdyn_hourlyrate_base';
- ExternalType = 'Money';
- ExternalAccess = Read;
- Description = 'Value of the Hourly Rate in base currency.';
- Caption = 'Hourly Rate (Base)';
- DataClassification = SystemMetadata;
- }
- field(83; TimeOffApprovalRequired; Boolean)
- {
- ExternalName = 'msdyn_timeoffapprovalrequired';
- ExternalType = 'Boolean';
- Description = 'Specifies if approval required for Time Off Requests.';
- Caption = 'Time Off Approval Required';
- DataClassification = SystemMetadata;
- }
- field(87; CrewStrategy; Option)
- {
- ExternalName = 'msdyn_crewstrategy';
- ExternalType = 'Picklist';
- Description = 'Crew Strategy';
- Caption = 'Crew Strategy';
- InitValue = " ";
- OptionMembers = " ",CrewLeaderManagement,"CrewMemberSelf-Management","CascadeAndAcceptCascadeCompletely(NotRecommended)";
- OptionOrdinalValues = -1, 192350001, 192350002, 192350000;
- DataClassification = SystemMetadata;
- }
- field(89; InternalFlags; BLOB)
- {
- ExternalName = 'msdyn_internalflags';
- ExternalType = 'Memo';
- Description = 'For internal use only.';
- Caption = 'Internal Flags';
- Subtype = Memo;
- DataClassification = SystemMetadata;
- }
- field(90; Latitude; Decimal)
- {
- ExternalName = 'msdyn_latitude';
- ExternalType = 'Double';
- Description = 'The location latitude.';
- Caption = 'Latitude';
- DataClassification = SystemMetadata;
- }
- field(91; Longitude; Decimal)
- {
- ExternalName = 'msdyn_longitude';
- ExternalType = 'Double';
- Description = 'The location longitude.';
- Caption = 'Longitude';
- DataClassification = SystemMetadata;
- }
- field(92; LocationTimestamp; Datetime)
- {
- ExternalName = 'msdyn_locationtimestamp';
- ExternalType = 'DateTime';
- Description = 'The location timestamp.';
- Caption = 'Location Timestamp';
- DataClassification = SystemMetadata;
- }
- field(93; CompanyId; GUID)
- {
- ExternalName = 'bcbi_company';
- ExternalType = 'Lookup';
- Description = 'Business Central Company';
- Caption = 'Company Id';
- TableRelation = "CDS Company".CompanyId;
- DataClassification = SystemMetadata;
- }
- }
- keys
- {
- key(PK; BookableResourceId)
- {
- Clustered = true;
- }
- key(Name; Name)
- {
- }
- }
- fieldgroups
- {
- fieldgroup(DropDown; Name)
- {
- }
- }
-}
\ No newline at end of file
diff --git a/Apps/W1/FieldServiceIntegration/app/src/Tables/FSBookableResourceBooking.Table.al b/Apps/W1/FieldServiceIntegration/app/src/Tables/FSBookableResourceBooking.Table.al
deleted file mode 100644
index f566b60040..0000000000
--- a/Apps/W1/FieldServiceIntegration/app/src/Tables/FSBookableResourceBooking.Table.al
+++ /dev/null
@@ -1,636 +0,0 @@
-// ------------------------------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License. See License.txt in the project root for license information.
-// ------------------------------------------------------------------------------------------------
-namespace Microsoft.Integration.DynamicsFieldService;
-
-using Microsoft.Integration.D365Sales;
-
-table 6611 "FS Bookable Resource Booking"
-{
- ExternalName = 'bookableresourcebooking';
- TableType = CRM;
- Description = 'Represents the line details of a resource booking.';
- DataClassification = SystemMetadata;
-
- fields
- {
- field(1; BookableResourceBookingId; GUID)
- {
- ExternalName = 'bookableresourcebookingid';
- ExternalType = 'Uniqueidentifier';
- ExternalAccess = Insert;
- Description = 'Unique identifier of the resource booking.';
- Caption = 'Bookable Resource Booking';
- DataClassification = SystemMetadata;
- }
- field(2; CreatedOn; Datetime)
- {
- ExternalName = 'createdon';
- ExternalType = 'DateTime';
- ExternalAccess = Read;
- Description = 'Date and time when the record was created.';
- Caption = 'Created On';
- DataClassification = SystemMetadata;
- }
- field(3; CreatedBy; GUID)
- {
- ExternalName = 'createdby';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Unique identifier of the user who created the record.';
- Caption = 'Created By';
- TableRelation = "CRM Systemuser".SystemUserId;
- DataClassification = SystemMetadata;
- }
- field(4; ModifiedOn; Datetime)
- {
- ExternalName = 'modifiedon';
- ExternalType = 'DateTime';
- ExternalAccess = Read;
- Description = 'Date and time when the record was modified.';
- Caption = 'Modified On';
- DataClassification = SystemMetadata;
- }
- field(5; ModifiedBy; GUID)
- {
- ExternalName = 'modifiedby';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Unique identifier of the user who modified the record.';
- Caption = 'Modified By';
- TableRelation = "CRM Systemuser".SystemUserId;
- DataClassification = SystemMetadata;
- }
- field(6; CreatedOnBehalfBy; GUID)
- {
- ExternalName = 'createdonbehalfby';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Unique identifier of the delegate user who created the record.';
- Caption = 'Created By (Delegate)';
- TableRelation = "CRM Systemuser".SystemUserId;
- DataClassification = SystemMetadata;
- }
- field(7; ModifiedOnBehalfBy; GUID)
- {
- ExternalName = 'modifiedonbehalfby';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Unique identifier of the delegate user who modified the record.';
- Caption = 'Modified By (Delegate)';
- TableRelation = "CRM Systemuser".SystemUserId;
- DataClassification = SystemMetadata;
- }
- field(15; OwnerId; GUID)
- {
- ExternalName = 'ownerid';
- ExternalType = 'Owner';
- Description = 'Owner Id';
- Caption = 'Owner';
- DataClassification = SystemMetadata;
- }
- field(20; OwningBusinessUnit; GUID)
- {
- ExternalName = 'owningbusinessunit';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Unique identifier for the business unit that owns the record';
- Caption = 'Owning Business Unit';
- TableRelation = "CRM Businessunit".BusinessUnitId;
- DataClassification = SystemMetadata;
- }
- field(21; OwningUser; GUID)
- {
- ExternalName = 'owninguser';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Unique identifier for the user that owns the record.';
- Caption = 'Owning User';
- TableRelation = "CRM Systemuser".SystemUserId;
- DataClassification = SystemMetadata;
- }
- field(22; OwningTeam; GUID)
- {
- ExternalName = 'owningteam';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Unique identifier for the team that owns the record.';
- Caption = 'Owning Team';
- TableRelation = "CRM Team".TeamId;
- DataClassification = SystemMetadata;
- }
- field(24; VersionNumber; BigInteger)
- {
- ExternalName = 'versionnumber';
- ExternalType = 'BigInt';
- ExternalAccess = Read;
- Description = 'Version Number';
- Caption = 'Version Number';
- DataClassification = SystemMetadata;
- }
- field(25; ImportSequenceNumber; Integer)
- {
- ExternalName = 'importsequencenumber';
- ExternalType = 'Integer';
- ExternalAccess = Insert;
- Description = 'Sequence number of the import that created this record.';
- Caption = 'Import Sequence Number';
- DataClassification = SystemMetadata;
- }
- field(26; OverriddenCreatedOn; Date)
- {
- ExternalName = 'overriddencreatedon';
- ExternalType = 'DateTime';
- ExternalAccess = Insert;
- Description = 'Date and time that the record was migrated.';
- Caption = 'Record Created On';
- DataClassification = SystemMetadata;
- }
- field(27; TimeZoneRuleVersionNumber; Integer)
- {
- ExternalName = 'timezoneruleversionnumber';
- ExternalType = 'Integer';
- Description = 'For internal use only.';
- Caption = 'Time Zone Rule Version Number';
- DataClassification = SystemMetadata;
- }
- field(28; UTCConversionTimeZoneCode; Integer)
- {
- ExternalName = 'utcconversiontimezonecode';
- ExternalType = 'Integer';
- Description = 'Time zone code that was in use when the record was created.';
- Caption = 'UTC Conversion Time Zone Code';
- DataClassification = SystemMetadata;
- }
- field(29; Name; Text[100])
- {
- ExternalName = 'name';
- ExternalType = 'String';
- Description = 'Type a name for the booking.';
- Caption = 'Name';
- DataClassification = SystemMetadata;
- }
- field(30; ProcessId; GUID)
- {
- ExternalName = 'processid';
- ExternalType = 'Uniqueidentifier';
- Description = 'Contains the id of the process associated with the entity.';
- Caption = 'Process Id';
- DataClassification = SystemMetadata;
- }
- field(31; StageId; GUID)
- {
- ExternalName = 'stageid';
- ExternalType = 'Uniqueidentifier';
- Description = 'Contains the id of the stage where the entity is located.';
- Caption = '(Deprecated) Stage Id';
- DataClassification = SystemMetadata;
- }
- field(32; TraversedPath; Text[1250])
- {
- ExternalName = 'traversedpath';
- ExternalType = 'String';
- Description = 'A comma separated list of string values representing the unique identifiers of stages in a Business Process Flow Instance in the order that they occur.';
- Caption = '(Deprecated) Traversed Path';
- DataClassification = SystemMetadata;
- }
- field(34; BookingType; Option)
- {
- ExternalName = 'bookingtype';
- ExternalType = 'Picklist';
- Description = 'Select whether the booking is solid or liquid. Solid bookings are firm and cannot be changed whereas liquid bookings can be changed.';
- Caption = 'Booking Type';
- InitValue = Solid;
- OptionMembers = Liquid,Solid;
- OptionOrdinalValues = 2, 1;
- DataClassification = SystemMetadata;
- }
- field(36; Duration; Integer)
- {
- ExternalName = 'duration';
- ExternalType = 'Integer';
- Description = 'Enter the duration of the booking.';
- Caption = 'Duration';
- DataClassification = SystemMetadata;
- }
- field(37; EndTime; Datetime)
- {
- ExternalName = 'endtime';
- ExternalType = 'DateTime';
- Description = 'Enter the end date and time of the booking.';
- Caption = 'End Time';
- DataClassification = SystemMetadata;
- }
- field(38; Header; GUID)
- {
- ExternalName = 'header';
- ExternalType = 'Lookup';
- Description = 'Shows the reference to the booking header record that represents the summary of bookings.';
- Caption = 'Header';
- TableRelation = "FS BookableResourceBookingHdr".BookableResourceBookingHeaderId;
- DataClassification = SystemMetadata;
- }
- field(39; Resource; GUID)
- {
- ExternalName = 'resource';
- ExternalType = 'Lookup';
- Description = 'Shows the resource that is booked.';
- Caption = 'Resource';
- TableRelation = "FS Bookable Resource".BookableResourceId;
- DataClassification = SystemMetadata;
- }
- field(40; StartTime; Datetime)
- {
- ExternalName = 'starttime';
- ExternalType = 'DateTime';
- Description = 'Enter the start date and time of the booking.';
- Caption = 'Start Time';
- DataClassification = SystemMetadata;
- }
- field(41; StateCode; Option)
- {
- ExternalName = 'statecode';
- ExternalType = 'State';
- ExternalAccess = Modify;
- Description = 'Status of the Bookable Resource Booking';
- Caption = 'Status';
- InitValue = " ";
- OptionMembers = " ",Active,Inactive;
- OptionOrdinalValues = -1, 0, 1;
- DataClassification = SystemMetadata;
- }
- field(43; StatusCode; Option)
- {
- ExternalName = 'statuscode';
- ExternalType = 'Status';
- Description = 'Reason for the status of the Bookable Resource Booking';
- Caption = 'Status Reason';
- InitValue = " ";
- OptionMembers = " ",Active,Inactive;
- OptionOrdinalValues = -1, 1, 2;
- DataClassification = SystemMetadata;
- }
- field(45; ExchangeRate; Decimal)
- {
- ExternalName = 'exchangerate';
- ExternalType = 'Decimal';
- ExternalAccess = Read;
- Description = 'Exchange rate for the currency associated with the bookableresourcebooking with respect to the base currency.';
- Caption = 'ExchangeRate';
- DataClassification = SystemMetadata;
- }
- field(46; TransactionCurrencyId; GUID)
- {
- ExternalName = 'transactioncurrencyid';
- ExternalType = 'Lookup';
- Description = 'Exchange rate for the currency associated with the BookableResourceBooking with respect to the base currency.';
- Caption = 'Currency';
- TableRelation = "CRM Transactioncurrency".TransactionCurrencyId;
- DataClassification = SystemMetadata;
- }
- field(47; ResourceName; Text[100])
- {
- FieldClass = FlowField;
- CalcFormula = lookup("FS Bookable Resource".Name where(BookableResourceId = field(Resource)));
- ExternalName = 'resourcename';
- ExternalType = 'String';
- ExternalAccess = Read;
- }
- field(48; HeaderName; Text[100])
- {
- FieldClass = FlowField;
- CalcFormula = lookup("FS BookableResourceBookingHdr".Name where(BookableResourceBookingHeaderId = field(Header)));
- ExternalName = 'headername';
- ExternalType = 'String';
- ExternalAccess = Read;
- }
- field(51; ActualArrivalTime; Datetime)
- {
- ExternalName = 'msdyn_actualarrivaltime';
- ExternalType = 'DateTime';
- Description = 'Shows the time that work started.';
- Caption = 'Actual Arrival Time';
- DataClassification = SystemMetadata;
- }
- field(52; ActualTravelDuration; Integer)
- {
- ExternalName = 'msdyn_actualtravelduration';
- ExternalType = 'Integer';
- Description = 'Shows the total travel duration. Calculated based on the difference between the Bookable Resource Booking''s start time and actual arrival time.';
- Caption = 'Actual Travel Duration';
- DataClassification = SystemMetadata;
- }
- field(53; AllowOverlapping; Boolean)
- {
- ExternalName = 'msdyn_allowoverlapping';
- ExternalType = 'Boolean';
- Description = 'Allow the time of this booking to be displayed on the schedule assistant as available.';
- Caption = 'Allow Overlapping';
- DataClassification = SystemMetadata;
- }
- field(56; BookingMethod; Option)
- {
- ExternalName = 'msdyn_bookingmethod';
- ExternalType = 'Picklist';
- Description = 'Shows the method used to create this booking.';
- Caption = 'Booking Method';
- InitValue = Manual;
- OptionMembers = ResourceSchedulingOptimization,"System-AgreementSchedule",ScheduleBoard,Mobile,Manual,ScheduleAssistant;
- OptionOrdinalValues = 192350000, 690970005, 690970001, 690970002, 690970003, 690970004;
- DataClassification = SystemMetadata;
- }
- field(59; CascadeCrewChanges; Boolean)
- {
- ExternalName = 'msdyn_cascadecrewchanges';
- ExternalType = 'Boolean';
- Description = 'Defines whether changing any of the following fields (Start Time, End Time, Status) should cascade the changes to other bookings on this requirement that have the same start and end time.';
- Caption = 'Cascade Crew Changes';
- DataClassification = SystemMetadata;
- }
- field(61; AcceptCascadeCrewChanges; Boolean)
- {
- ExternalName = 'msdyn_acceptcascadecrewchanges';
- ExternalType = 'Boolean';
- Description = 'Defines whether this booking accepts changes propagated as cascading changes';
- Caption = 'Accept Cascade Crew Changes';
- DataClassification = SystemMetadata;
- }
- field(63; effort; Decimal)
- {
- ExternalName = 'msdyn_effort';
- ExternalType = 'Decimal';
- Description = 'Capacity that needs to take from resource capacity';
- Caption = 'Capacity';
- DataClassification = SystemMetadata;
- }
- field(64; EstimatedArrivalTime; Datetime)
- {
- ExternalName = 'msdyn_estimatedarrivaltime';
- ExternalType = 'DateTime';
- Description = 'Estimated Arrival Time';
- Caption = 'Estimated Arrival Time';
- DataClassification = SystemMetadata;
- }
- field(65; EstimatedTravelDuration; Integer)
- {
- ExternalName = 'msdyn_estimatedtravelduration';
- ExternalType = 'Integer';
- Description = 'Estimated Travel Duration';
- Caption = 'Estimated Travel Duration';
- DataClassification = SystemMetadata;
- }
- field(66; URSInternalFlags; BLOB)
- {
- ExternalName = 'msdyn_ursinternalflags';
- ExternalType = 'Memo';
- Description = 'For internal use only.';
- Caption = 'Internal Flags';
- Subtype = Memo;
- DataClassification = SystemMetadata;
- }
- field(67; Latitude; Decimal)
- {
- ExternalName = 'msdyn_latitude';
- ExternalType = 'Double';
- Description = '';
- Caption = 'Latitude';
- DataClassification = SystemMetadata;
- }
- field(68; Longitude; Decimal)
- {
- ExternalName = 'msdyn_longitude';
- ExternalType = 'Double';
- Description = '';
- Caption = 'Longitude';
- DataClassification = SystemMetadata;
- }
- field(69; MilesTraveled; Decimal)
- {
- ExternalName = 'msdyn_milestraveled';
- ExternalType = 'Double';
- Description = 'In this field you can enter the total miles the resource drove to the job site';
- Caption = 'Miles Traveled';
- DataClassification = SystemMetadata;
- }
- field(71; ResourceGroup; GUID)
- {
- ExternalName = 'msdyn_resourcegroup';
- ExternalType = 'Lookup';
- Description = 'Unique identifier for Resource associated with Resource Booking';
- Caption = 'Resource Group';
- TableRelation = "FS Bookable Resource".BookableResourceId;
- DataClassification = SystemMetadata;
- }
- field(74; WorkLocation; Option)
- {
- ExternalName = 'msdyn_worklocation';
- ExternalType = 'Picklist';
- Description = '';
- Caption = 'Work Location';
- InitValue = " ";
- OptionMembers = " ",Onsite,Facility,LocationAgnostic;
- OptionOrdinalValues = -1, 690970000, 690970001, 690970002;
- DataClassification = SystemMetadata;
- }
- field(78; ResourceGroupName; Text[100])
- {
- FieldClass = FlowField;
- CalcFormula = lookup("FS Bookable Resource".Name where(BookableResourceId = field(ResourceGroup)));
- ExternalName = 'msdyn_resourcegroupname';
- ExternalType = 'String';
- ExternalAccess = Read;
- }
- field(82; BaseTravelDuration; Integer)
- {
- ExternalName = 'msdyn_basetravelduration';
- ExternalType = 'Integer';
- Description = 'The Base travel duration indicates the travel time without traffic';
- Caption = 'Base Travel Duration';
- DataClassification = SystemMetadata;
- }
- field(83; requirementgroupset; Text[40])
- {
- ExternalName = 'msdyn_requirementgroupset';
- ExternalType = 'String';
- Description = 'Requirement Group Set';
- Caption = 'Requirement Group Set';
- DataClassification = SystemMetadata;
- }
- field(84; TravelTimeCalculationType; Option)
- {
- ExternalName = 'msdyn_traveltimecalculationtype';
- ExternalType = 'Picklist';
- Description = 'Travel Time Calculation';
- Caption = 'Travel Time Calculation';
- InitValue = BingMapsWithoutHistoricalTraffic;
- OptionMembers = BingMapsWithoutHistoricalTraffic,BingMapsWithHistoricalTraffic,CustomMapProvider,Approximate;
- OptionOrdinalValues = 192350000, 192350001, 192350002, 192350003;
- DataClassification = SystemMetadata;
- }
- field(87; InternalFlags; BLOB)
- {
- ExternalName = 'msdyn_internalflags';
- ExternalType = 'Memo';
- Description = 'For internal use only.';
- Caption = 'Internal Flags';
- Subtype = Memo;
- DataClassification = SystemMetadata;
- }
- field(88; OfflineTimestamp; Datetime)
- {
- ExternalName = 'msdyn_offlinetimestamp';
- ExternalType = 'DateTime';
- Description = 'Internal Use. This field is used to capture the time when the Booking was updated on mobile offline.';
- Caption = 'Offline Timestamp';
- DataClassification = SystemMetadata;
- }
- field(89; PreventTimestampCreation; Boolean)
- {
- ExternalName = 'msdyn_preventtimestampcreation';
- ExternalType = 'Boolean';
- Description = 'Prevents time stamp creation if the time stamp was already created on a mobile device.';
- Caption = 'Prevent Timestamp Creation';
- DataClassification = SystemMetadata;
- }
- field(91; Signature; BLOB)
- {
- ExternalName = 'msdyn_signature';
- ExternalType = 'Memo';
- Description = 'This field is used for capturing signature on Mobile (using the Pen Control)';
- Caption = 'Signature';
- Subtype = Memo;
- DataClassification = SystemMetadata;
- }
- field(92; SlotText; BLOB)
- {
- ExternalName = 'msdyn_slottext';
- ExternalType = 'Memo';
- Description = 'Shows the automatically generated text of the time slot on the schedule board.';
- Caption = 'Slot Text';
- Subtype = Memo;
- DataClassification = SystemMetadata;
- }
- field(93; TotalBillableDuration; Integer)
- {
- ExternalName = 'msdyn_totalbillableduration';
- ExternalType = 'Integer';
- Description = 'Shows the total billable duration. If you leave this field blank the system automatically determines the billable duration by calculating the resource journal details.';
- Caption = 'Total Billable Duration';
- DataClassification = SystemMetadata;
- }
- field(94; TotalBreakDuration; Integer)
- {
- ExternalName = 'msdyn_totalbreakduration';
- ExternalType = 'Integer';
- Description = 'Shows the total break duration. If you leave this field blank the system automatically determines the break duration by calculating the resource journal details.';
- Caption = 'Total Break Duration';
- DataClassification = SystemMetadata;
- }
- field(95; TotalCost; Decimal)
- {
- ExternalName = 'msdyn_totalcost';
- ExternalType = 'Money';
- Description = 'Shows the total cost for this booking.';
- Caption = 'Total Cost';
- DataClassification = SystemMetadata;
- }
- field(96; totalcost_Base; Decimal)
- {
- ExternalName = 'msdyn_totalcost_base';
- ExternalType = 'Money';
- ExternalAccess = Read;
- Description = 'Value of the Total Cost in base currency.';
- Caption = 'Total Cost (Base)';
- DataClassification = SystemMetadata;
- }
- field(97; TotalDurationInProgress; Integer)
- {
- ExternalName = 'msdyn_totaldurationinprogress';
- ExternalType = 'Integer';
- Description = 'Shows the total duration that this booking was in progress.';
- Caption = 'Total Duration In Progress';
- DataClassification = SystemMetadata;
- }
- field(98; TravelTimeRescheduling; Boolean)
- {
- ExternalName = 'msdyn_traveltimerescheduling';
- ExternalType = 'Boolean';
- Description = '';
- Caption = 'Travel Time Rescheduling (Deprecated)';
- DataClassification = SystemMetadata;
- }
- field(100; WorkOrder; GUID)
- {
- ExternalName = 'msdyn_workorder';
- ExternalType = 'Lookup';
- Description = 'Unique identifier for Work Order associated with Resource Booking.';
- Caption = 'Work Order';
- TableRelation = "FS Work Order".WorkOrderId;
- DataClassification = SystemMetadata;
- }
- field(102; WorkOrderName; Text[100])
- {
- FieldClass = FlowField;
- CalcFormula = lookup("FS Work Order".Name where(WorkOrderId = field(WorkOrder)));
- ExternalName = 'msdyn_workordername';
- ExternalType = 'String';
- ExternalAccess = Read;
- }
- field(103; Crew; GUID)
- {
- ExternalName = 'msdyn_crew';
- ExternalType = 'Lookup';
- Description = 'This field is populated by the Field Service solution to define to which crew a booking is connected.';
- Caption = 'Crew';
- TableRelation = "FS Bookable Resource".BookableResourceId;
- DataClassification = SystemMetadata;
- }
- field(104; CrewMemberType; Option)
- {
- ExternalName = 'msdyn_crewmembertype';
- ExternalType = 'Picklist';
- Description = 'Crew Member Type';
- Caption = 'Crew Member Type';
- InitValue = " ";
- OptionMembers = " ",Leader,Member,None;
- OptionOrdinalValues = -1, 192350000, 192350001, 192350002;
- DataClassification = SystemMetadata;
- }
- field(106; QuickNoteAction; Option)
- {
- ExternalName = 'msdyn_quickNoteAction';
- ExternalType = 'Picklist';
- Description = 'Internal For Quick note pcf control actions';
- Caption = 'Quick note actions';
- InitValue = None;
- OptionMembers = None,Text,Photo,Video,Audio,File;
- OptionOrdinalValues = 100000000, 100000001, 100000002, 100000003, 100000004, 100000005;
- DataClassification = SystemMetadata;
- }
- field(108; CrewName; Text[100])
- {
- FieldClass = FlowField;
- CalcFormula = lookup("FS Bookable Resource".Name where(BookableResourceId = field(Crew)));
- ExternalName = 'msdyn_crewname';
- ExternalType = 'String';
- ExternalAccess = Read;
- }
- }
- keys
- {
- key(PK; BookableResourceBookingId)
- {
- Clustered = true;
- }
- key(Name; Name)
- {
- }
- }
- fieldgroups
- {
- fieldgroup(DropDown; Name)
- {
- }
- }
-}
\ No newline at end of file
diff --git a/Apps/W1/FieldServiceIntegration/app/src/Tables/FSBookableResourceBookingHdr.Table.al b/Apps/W1/FieldServiceIntegration/app/src/Tables/FSBookableResourceBookingHdr.Table.al
deleted file mode 100644
index 8a12e8c01c..0000000000
--- a/Apps/W1/FieldServiceIntegration/app/src/Tables/FSBookableResourceBookingHdr.Table.al
+++ /dev/null
@@ -1,308 +0,0 @@
-// ------------------------------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License. See License.txt in the project root for license information.
-// ------------------------------------------------------------------------------------------------
-namespace Microsoft.Integration.DynamicsFieldService;
-
-using Microsoft.Integration.D365Sales;
-
-table 6612 "FS BookableResourceBookingHdr"
-{
- ExternalName = 'bookableresourcebookingheader';
- TableType = CRM;
- Description = 'Reservation entity representing the summary of the associated resource bookings.';
- DataClassification = SystemMetadata;
-
- fields
- {
- field(1; BookableResourceBookingHeaderId; GUID)
- {
- ExternalName = 'bookableresourcebookingheaderid';
- ExternalType = 'Uniqueidentifier';
- ExternalAccess = Insert;
- Description = 'Unique identifier of the resource booking header.';
- Caption = 'Bookable Resource Booking Header';
- DataClassification = SystemMetadata;
- }
- field(2; CreatedOn; Datetime)
- {
- ExternalName = 'createdon';
- ExternalType = 'DateTime';
- ExternalAccess = Read;
- Description = 'Date and time when the record was created.';
- Caption = 'Created On';
- DataClassification = SystemMetadata;
- }
- field(3; CreatedBy; GUID)
- {
- ExternalName = 'createdby';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Unique identifier of the user who created the record.';
- Caption = 'Created By';
- TableRelation = "CRM Systemuser".SystemUserId;
- DataClassification = SystemMetadata;
- }
- field(4; ModifiedOn; Datetime)
- {
- ExternalName = 'modifiedon';
- ExternalType = 'DateTime';
- ExternalAccess = Read;
- Description = 'Date and time when the record was modified.';
- Caption = 'Modified On';
- DataClassification = SystemMetadata;
- }
- field(5; ModifiedBy; GUID)
- {
- ExternalName = 'modifiedby';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Unique identifier of the user who modified the record.';
- Caption = 'Modified By';
- TableRelation = "CRM Systemuser".SystemUserId;
- DataClassification = SystemMetadata;
- }
- field(6; CreatedOnBehalfBy; GUID)
- {
- ExternalName = 'createdonbehalfby';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Unique identifier of the delegate user who created the record.';
- Caption = 'Created By (Delegate)';
- TableRelation = "CRM Systemuser".SystemUserId;
- DataClassification = SystemMetadata;
- }
- field(7; ModifiedOnBehalfBy; GUID)
- {
- ExternalName = 'modifiedonbehalfby';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Unique identifier of the delegate user who modified the record.';
- Caption = 'Modified By (Delegate)';
- TableRelation = "CRM Systemuser".SystemUserId;
- DataClassification = SystemMetadata;
- }
- field(15; OwnerId; GUID)
- {
- ExternalName = 'ownerid';
- ExternalType = 'Owner';
- Description = 'Owner Id';
- Caption = 'Owner';
- DataClassification = SystemMetadata;
- }
- field(20; OwningBusinessUnit; GUID)
- {
- ExternalName = 'owningbusinessunit';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Unique identifier for the business unit that owns the record';
- Caption = 'Owning Business Unit';
- TableRelation = "CRM Businessunit".BusinessUnitId;
- DataClassification = SystemMetadata;
- }
- field(21; OwningUser; GUID)
- {
- ExternalName = 'owninguser';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Unique identifier for the user that owns the record.';
- Caption = 'Owning User';
- TableRelation = "CRM Systemuser".SystemUserId;
- DataClassification = SystemMetadata;
- }
- field(22; OwningTeam; GUID)
- {
- ExternalName = 'owningteam';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Unique identifier for the team that owns the record.';
- Caption = 'Owning Team';
- TableRelation = "CRM Team".TeamId;
- DataClassification = SystemMetadata;
- }
- field(24; VersionNumber; BigInteger)
- {
- ExternalName = 'versionnumber';
- ExternalType = 'BigInt';
- ExternalAccess = Read;
- Description = 'Version Number';
- Caption = 'Version Number';
- DataClassification = SystemMetadata;
- }
- field(25; ImportSequenceNumber; Integer)
- {
- ExternalName = 'importsequencenumber';
- ExternalType = 'Integer';
- ExternalAccess = Insert;
- Description = 'Sequence number of the import that created this record.';
- Caption = 'Import Sequence Number';
- DataClassification = SystemMetadata;
- }
- field(26; OverriddenCreatedOn; Date)
- {
- ExternalName = 'overriddencreatedon';
- ExternalType = 'DateTime';
- ExternalAccess = Insert;
- Description = 'Date and time that the record was migrated.';
- Caption = 'Record Created On';
- DataClassification = SystemMetadata;
- }
- field(27; TimeZoneRuleVersionNumber; Integer)
- {
- ExternalName = 'timezoneruleversionnumber';
- ExternalType = 'Integer';
- Description = 'For internal use only.';
- Caption = 'Time Zone Rule Version Number';
- DataClassification = SystemMetadata;
- }
- field(28; UTCConversionTimeZoneCode; Integer)
- {
- ExternalName = 'utcconversiontimezonecode';
- ExternalType = 'Integer';
- Description = 'Time zone code that was in use when the record was created.';
- Caption = 'UTC Conversion Time Zone Code';
- DataClassification = SystemMetadata;
- }
- field(29; Name; Text[100])
- {
- ExternalName = 'name';
- ExternalType = 'String';
- Description = 'The name of the booking summary.';
- Caption = 'Name';
- DataClassification = SystemMetadata;
- }
- field(30; ProcessId; GUID)
- {
- ExternalName = 'processid';
- ExternalType = 'Uniqueidentifier';
- Description = 'Contains the id of the process associated with the entity.';
- Caption = 'Process Id';
- DataClassification = SystemMetadata;
- }
- field(31; StageId; GUID)
- {
- ExternalName = 'stageid';
- ExternalType = 'Uniqueidentifier';
- Description = 'Contains the id of the stage where the entity is located.';
- Caption = '(Deprecated) Stage Id';
- DataClassification = SystemMetadata;
- }
- field(32; TraversedPath; Text[1250])
- {
- ExternalName = 'traversedpath';
- ExternalType = 'String';
- Description = 'A comma separated list of string values representing the unique identifiers of stages in a Business Process Flow Instance in the order that they occur.';
- Caption = '(Deprecated) Traversed Path';
- DataClassification = SystemMetadata;
- }
- field(33; Duration; Integer)
- {
- ExternalName = 'duration';
- ExternalType = 'Integer';
- Description = 'Shows the aggregate duration of the linked bookings.';
- Caption = 'Duration';
- DataClassification = SystemMetadata;
- }
- field(34; EndTime; Datetime)
- {
- ExternalName = 'endtime';
- ExternalType = 'DateTime';
- Description = 'Shows the end date and time of the booking summary.';
- Caption = 'End Time';
- DataClassification = SystemMetadata;
- }
- field(35; StartTime; Datetime)
- {
- ExternalName = 'starttime';
- ExternalType = 'DateTime';
- Description = 'Shows the start date and time of the booking summary.';
- Caption = 'Start Time';
- DataClassification = SystemMetadata;
- }
- field(36; StateCode; Option)
- {
- ExternalName = 'statecode';
- ExternalType = 'State';
- ExternalAccess = Modify;
- Description = 'Status of the Bookable Resource Booking Header';
- Caption = 'Status';
- InitValue = " ";
- OptionMembers = " ",Active,Inactive;
- OptionOrdinalValues = -1, 0, 1;
- DataClassification = SystemMetadata;
- }
- field(38; StatusCode; Option)
- {
- ExternalName = 'statuscode';
- ExternalType = 'Status';
- Description = 'Reason for the status of the Bookable Resource Booking Header';
- Caption = 'Status Reason';
- InitValue = " ";
- OptionMembers = " ",Active,Inactive;
- OptionOrdinalValues = -1, 1, 2;
- DataClassification = SystemMetadata;
- }
- field(40; ExchangeRate; Decimal)
- {
- ExternalName = 'exchangerate';
- ExternalType = 'Decimal';
- ExternalAccess = Read;
- Description = 'Exchange rate for the currency associated with the bookableresourcebookingheader with respect to the base currency.';
- Caption = 'ExchangeRate';
- DataClassification = SystemMetadata;
- }
- field(41; TransactionCurrencyId; GUID)
- {
- ExternalName = 'transactioncurrencyid';
- ExternalType = 'Lookup';
- Description = 'Exchange rate for the currency associated with the BookableResourceBookingHeader with respect to the base currency.';
- Caption = 'Currency';
- TableRelation = "CRM Transactioncurrency".TransactionCurrencyId;
- DataClassification = SystemMetadata;
- }
- field(43; BookableResourceId; GUID)
- {
- ExternalName = 'msdyn_bookableresourceid';
- ExternalType = 'Lookup';
- Description = 'Bookable Resource';
- Caption = 'Bookable Resource';
- TableRelation = "FS Bookable Resource".BookableResourceId;
- DataClassification = SystemMetadata;
- }
- field(45; BookingType; Option)
- {
- ExternalName = 'msdyn_bookingtype';
- ExternalType = 'Picklist';
- Description = 'Select whether the booking is solid or liquid. Solid bookings are firm and cannot be changed whereas liquid bookings can be changed.';
- Caption = 'Booking Type';
- InitValue = Solid;
- OptionMembers = Solid,Liquid;
- OptionOrdinalValues = 1, 2;
- DataClassification = SystemMetadata;
- }
- field(48; BookableResourceIdName; Text[100])
- {
- FieldClass = FlowField;
- CalcFormula = lookup("FS Bookable Resource".Name where(BookableResourceId = field(BookableResourceId)));
- ExternalName = 'msdyn_bookableresourceidname';
- ExternalType = 'String';
- ExternalAccess = Read;
- }
- }
- keys
- {
- key(PK; BookableResourceBookingHeaderId)
- {
- Clustered = true;
- }
- key(Name; Name)
- {
- }
- }
- fieldgroups
- {
- fieldgroup(DropDown; Name)
- {
- }
- }
-}
\ No newline at end of file
diff --git a/Apps/W1/FieldServiceIntegration/app/src/Tables/FSConnectionSetup.Table.al b/Apps/W1/FieldServiceIntegration/app/src/Tables/FSConnectionSetup.Table.al
deleted file mode 100644
index 1aa8d0defe..0000000000
--- a/Apps/W1/FieldServiceIntegration/app/src/Tables/FSConnectionSetup.Table.al
+++ /dev/null
@@ -1,1054 +0,0 @@
-// ------------------------------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License. See License.txt in the project root for license information.
-// ------------------------------------------------------------------------------------------------
-namespace Microsoft.Integration.DynamicsFieldService;
-
-using Microsoft.CRM.Outlook;
-using Microsoft.Foundation.UOM;
-using Microsoft.Integration.Dataverse;
-using Microsoft.Integration.D365Sales;
-using Microsoft.Integration.SyncEngine;
-using Microsoft.Service.Item;
-using Microsoft.Projects.Project.Job;
-using Microsoft.Projects.Project.Journal;
-using System.Environment;
-using System.Environment.Configuration;
-using System.Security.Encryption;
-using System.Threading;
-using Microsoft.Projects.Resources.Resource;
-
-table 6623 "FS Connection Setup"
-{
- Caption = 'Dynamics 365 Field Service Integration Setup';
- Permissions = tabledata "FS Connection Setup" = r;
- InherentEntitlements = rX;
- InherentPermissions = rX;
- DataClassification = CustomerContent;
- ReplicateData = true;
-
- fields
- {
- field(1; "Primary Key"; Code[20])
- {
- DataClassification = SystemMetadata;
- Caption = 'Primary Key';
- }
- field(2; "Server Address"; Text[250])
- {
- DataClassification = OrganizationIdentifiableInformation;
- Caption = 'Field Service URL';
-
- trigger OnValidate()
- var
- EnvironmentInfo: Codeunit "Environment Information";
- begin
- CRMIntegrationManagement.CheckModifyCRMConnectionURL("Server Address");
-
- if "Server Address" <> '' then
- if EnvironmentInfo.IsSaaS() or (StrPos("Server Address", '.dynamics.com') > 0) then
- "Authentication Type" := "Authentication Type"::Office365
- else
- "Authentication Type" := "Authentication Type"::AD;
- UpdateConnectionString();
- end;
- }
- field(3; "User Name"; Text[250])
- {
- Caption = 'User Name';
- DataClassification = EndUserIdentifiableInformation;
-
- trigger OnValidate()
- begin
- "User Name" := DelChr("User Name", '<>');
- CheckUserName();
- UpdateDomainName();
- UpdateConnectionString();
- end;
- }
- field(4; "User Password Key"; Guid)
- {
- Caption = 'User Password Key';
- DataClassification = EndUserPseudonymousIdentifiers;
-
- trigger OnValidate()
- begin
- if not IsTemporary() then
- if "User Password Key" <> xRec."User Password Key" then
- xRec.DeletePassword();
- end;
- }
- field(59; "Restore Connection"; Boolean)
- {
- DataClassification = SystemMetadata;
- Caption = 'Restore Connection';
- }
- field(60; "Is Enabled"; Boolean)
- {
- DataClassification = SystemMetadata;
- Caption = 'Is Enabled';
-
- trigger OnValidate()
- var
- CRMConnectionSetup: Record "CRM Connection Setup";
- FSSetupDefaults: Codeunit "FS Setup Defaults";
- CRMConnectionSetupPage: Page "CRM Connection Setup";
- begin
- if "Is Enabled" then begin
- TestField("Job Journal Template");
- TestField("Job Journal Batch");
- if not CRMConnectionSetup.IsEnabled() then
- Error(CRMConnSetupMustBeEnabledErr, CRMConnectionSetupPage.Caption());
- if "Hour Unit of Measure" = '' then
- Error(HourUnitOfMeasureMustBePickedErr);
- if not RemoveExistingCouplingOfResources() then
- Error('');
- end;
- UpdateConnectionDetails();
- RefreshDataFromFS();
- if "Is Enabled" then begin
- TestIntegrationUserRequirements();
- FSSetupDefaults.ResetConfiguration(Rec);
- Session.LogMessage('0000MAT', CRMConnEnabledTxt, Verbosity::Normal, DataClassification::SystemMetadata, TelemetryScope::ExtensionPublisher, 'Category', CategoryTok);
- end else
- Session.LogMessage('0000MAU', CRMConnDisabledTxt, Verbosity::Normal, DataClassification::SystemMetadata, TelemetryScope::ExtensionPublisher, 'Category', CategoryTok);
- end;
- }
- field(63; "FS Version"; Text[30])
- {
- DataClassification = SystemMetadata;
- Caption = 'Field Service Version';
- }
- field(67; "Is FS Solution Installed"; Boolean)
- {
- DataClassification = SystemMetadata;
- Caption = 'Is CRM Solution Installed';
- }
- field(76; "Proxy Version"; Integer)
- {
- Caption = 'Proxy Version';
- DataClassification = SystemMetadata;
-
- trigger OnValidate()
- begin
- UpdateProxyVersionInConnectionString();
- end;
- }
- field(118; CurrencyDecimalPrecision; Integer)
- {
- DataClassification = SystemMetadata;
- Caption = 'Currency Decimal Precision';
- Description = 'Number of decimal places that can be used for currency.';
- }
- field(124; BaseCurrencyId; Guid)
- {
- DataClassification = SystemMetadata;
- Caption = 'Currency';
- Description = 'Unique identifier of the base currency of the organization.';
- TableRelation = "CRM Transactioncurrency".TransactionCurrencyId;
- }
- field(133; BaseCurrencyPrecision; Integer)
- {
- DataClassification = SystemMetadata;
- Caption = 'Base Currency Precision';
- Description = 'Number of decimal places that can be used for the base currency.';
- MaxValue = 4;
- MinValue = 0;
- }
- field(134; BaseCurrencySymbol; Text[5])
- {
- DataClassification = SystemMetadata;
- Caption = 'Base Currency Symbol';
- Description = 'Symbol used for the base currency.';
- }
- field(135; "Authentication Type"; Option)
- {
- DataClassification = SystemMetadata;
- Caption = 'Authentication Type';
- OptionCaption = 'OAuth 2.0,AD,IFD,OAuth';
- OptionMembers = Office365,AD,IFD,OAuth;
-
- trigger OnValidate()
- begin
- case "Authentication Type" of
- "Authentication Type"::Office365:
- Domain := '';
- "Authentication Type"::AD:
- UpdateDomainName();
- end;
- UpdateConnectionString();
- end;
- }
- field(136; "Connection String"; Text[250])
- {
- DataClassification = OrganizationIdentifiableInformation;
- Caption = 'Connection String';
- }
- field(137; Domain; Text[250])
- {
- Caption = 'Domain';
- DataClassification = OrganizationIdentifiableInformation;
- Editable = false;
- }
- field(138; "Server Connection String"; BLOB)
- {
- DataClassification = OrganizationIdentifiableInformation;
- Caption = 'Server Connection String';
- }
- field(139; "Disable Reason"; Text[250])
- {
- DataClassification = SystemMetadata;
- Caption = 'Disable Reason';
- }
- field(200; "Job Journal Template"; Code[10])
- {
- DataClassification = SystemMetadata;
- Caption = 'Project Journal Template';
- TableRelation = "Job Journal Template";
- }
- field(201; "Job Journal Batch"; Code[10])
- {
- DataClassification = SystemMetadata;
- Caption = 'Project Journal Batch';
- TableRelation = "Job Journal Batch".Name where("Journal Template Name" = field("Job Journal Template"));
- }
- field(202; "Hour Unit of Measure"; Code[10])
- {
- DataClassification = SystemMetadata;
- Caption = 'Hour Unit of Measure';
- TableRelation = "Unit of Measure";
- }
- field(203; "Line Synch. Rule"; Enum "FS Work Order Line Synch. Rule")
- {
- DataClassification = SystemMetadata;
- Caption = 'Synchronize work order products/services';
- }
- field(204; "Line Post Rule"; Enum "FS Work Order Line Post Rule")
- {
- DataClassification = SystemMetadata;
- Caption = 'Automatically post project journal lines';
- }
- }
-
- keys
- {
- key(Key1; "Primary Key")
- {
- Clustered = true;
- }
- }
-
- fieldgroups
- {
- }
-
- trigger OnModify()
- begin
- if IsTemporary() then
- exit;
- if "User Password Key" <> xRec."User Password Key" then
- xRec.DeletePassword();
- end;
-
- trigger OnDelete()
- begin
- if IsTemporary() then
- exit;
- DeletePassword();
- end;
-
- var
- CRMIntegrationManagement: Codeunit "CRM Integration Management";
- FSIntegrationMgt: Codeunit "FS Integration Mgt.";
- CDSIntegrationImpl: Codeunit "CDS Integration Impl.";
- CRMProductName: Codeunit "CRM Product Name";
- IsolatedStorageManagement: Codeunit "Isolated Storage Management";
- TempUserPassword: SecretText;
- ConnectionErr: Label 'The connection setup cannot be validated. Verify the settings and try again.\Detailed error description: %1.', Comment = '%1 Error message from the provider (.NET exception message)';
- ConnectionStringFormatTok: Label 'Url=%1; UserName=%2; Password=%3; ProxyVersion=%4; %5', Locked = true;
- ConnectionSuccessMsg: Label 'The connection test was successful. The settings are valid.';
- DetailsMissingErr: Label 'A %1 URL and user name are required to enable a connection.', Comment = '%1 = CRM product name';
- MissingUsernameTok: Label '{USER}', Locked = true;
- MissingPasswordTok: Label '{PASSWORD}', Locked = true;
- AccessTokenTok: Label 'AccessToken', Locked = true;
- ClientSecretConnectionStringFormatTxt: Label '%1; Url=%2; ClientId=%3; ClientSecret=%4; ProxyVersion=%5', Locked = true;
- ClientSecretAuthTxt: Label 'AuthType=ClientSecret', Locked = true;
- ClientSecretTok: Label '{CLIENTSECRET}', Locked = true;
- CertificateConnectionStringFormatTxt: Label '%1; Url=%2; ClientId=%3; Certificate=%4; ProxyVersion=%5', Locked = true;
- CertificateAuthTxt: Label 'AuthType=Certificate', Locked = true;
- CertificateTok: Label '{CERTIFICATE}', Locked = true;
- ClientIdTok: Label '{CLIENTID}', Locked = true;
- UserNameMustIncludeDomainErr: Label 'The user name must include the domain when the authentication type is set to Active Directory.';
- UserNameMustBeEmailErr: Label 'The user name must be a valid email address when the authentication type is set to Office 365.';
- ConnectionStringPwdPlaceHolderMissingErr: Label 'The connection string must include the password placeholder {PASSWORD}.';
- ConnectionStringPwdOrClientSecretPlaceHolderMissingErr: Label 'The connection string must include either the password placeholder {PASSWORD}, the client secret placeholder {CLIENTSECRET} or the certificate placeholder {CERTIFICATE}.', Comment = '{PASSWORD}, {CERTIFICATE} and {CLIENTSECRET} are locked strings - do not translate them.';
- SystemAdminRoleTemplateIdTxt: Label '{627090FF-40A3-4053-8790-584EDC5BE201}', Locked = true;
- SystemAdminErr: Label 'User %1 has the %2 role on server %3.\\You must choose a user that does not have the %2 role.', Comment = '%1 user name, %2 - security role name, %3 - server address';
- BCRolesErr: Label 'User %1 does not have the required roles on server %4.\\You must choose a user that has the roles %2 and %3.', Comment = '%1 user name, %2 - security role name, %3 - security role name, %4 - server address';
- UserNotLicensedErr: Label 'User %1 is not licensed on server %2.', Comment = '%1 user name, %2 - server address';
- UserNotActiveErr: Label 'User %1 is disabled on server %2.', Comment = '%1 user name, %2 - server address';
- UserHasNoRolesErr: Label 'User %1 has no user roles assigned on server %2.', Comment = '%1 user name, %2 - server address';
- BCIntegrationUserFSRoleIdTxt: Label '{c11b4fa8-956b-439d-8b3c-021e8736a78b}', Locked = true;
- CDSConnectionMustBeEnabledErr: Label 'You must enable the connection to Dataverse before you can set up the connection to %1.\\Choose ''Set up Dataverse connection'' in %2 page.', Comment = '%1 = CRM product name, %2 = Assisted Setup page caption.';
- CRMConnectionMustBeEnabledErr: Label 'You must enable the connection to Dynamics 365 Field Service before you can set up the connection to %1.\\Choose ''Set up a connection to Dynamics 365 Field Service'' in %2 page.', Comment = '%1 = CRM product name, %2 = Assisted Setup page caption.';
- ShowDataverseConnectionSetupLbl: Label 'Show Dataverse Connection Setup';
- ShowCRMConnectionSetupLbl: Label 'Show Microsoft Dynamics 365 Connection Setup';
- DeploySucceedMsg: Label 'The solution, user roles, and entities have been deployed.';
- DeployFailedMsg: Label 'The deployment of the solution succeeded, but the deployment of user roles failed.';
- DeploySolutionFailedMsg: Label 'The deployment of the solution failed.';
- CategoryTok: Label 'AL Field Service Integration', Locked = true;
- CRMConnDisabledTxt: Label 'Field Service connection has been disabled.', Locked = true;
- CRMConnEnabledTxt: Label 'Field Service connection has been enabled.', Locked = true;
- DefaultingToDataverseServiceClientTxt: Label 'Defaulting to DataverseServiceClient', Locked = true;
- CRMConnSetupMustBeEnabledErr: label 'You must enable the connection in page %1', Comment = '%1 - page caption';
- HourUnitOfMeasureMustBePickedErr: label 'Field Service uses a fixed unit of measure for bookable resources - hour. You must pick a corresponding resource unit of measure.';
- UncoupleResourcesQst: label 'The current coupling of Resource records to Product entity will be removed. New mapping will be set up between Resource table and Bookable Resource entity. All resources will be uncoupled, but not deleted. Do you want to continue?';
-
- local procedure RemoveExistingCouplingOfResources(): Boolean
- var
- IntegrationTableMapping: Record "Integration Table Mapping";
- CRMIntegrationRecord: Record "CRM Integration Record";
- begin
- IntegrationTableMapping.SetRange("Table ID", Database::Resource);
- IntegrationTableMapping.SetRange("Integration Table ID", Database::"CRM Product");
- IntegrationTableMapping.SetRange(Type, IntegrationTableMapping.Type::Dataverse);
- IntegrationTableMapping.SetRange("Delete After Synchronization", false);
-
- CRMIntegrationRecord.SetRange("Table ID", Database::Resource);
-
- if IntegrationTableMapping.IsEmpty() and CRMIntegrationRecord.IsEmpty() then
- exit(true);
-
- if not Confirm(UncoupleResourcesQst) then
- exit(false);
-
- if not IntegrationTableMapping.IsEmpty() then
- CRMIntegrationRecord.DeleteAll();
-
- IntegrationTableMapping.DeleteAll(true);
- exit(true);
- end;
-
- internal procedure EnsureCDSConnectionIsEnabled();
- var
- CDSConnectionSetup: Record "CDS Connection Setup";
- begin
- if Get() then
- if "Is Enabled" then
- exit;
-
- if CDSConnectionSetup.Get() then
- if CDSConnectionSetup."Is Enabled" then
- exit;
-
- CDSConnectionNotEnabledError();
- end;
-
- internal procedure EnsureCRMConnectionIsEnabled();
- var
- CRMConnectionSetup: Record "CRM Connection Setup";
- begin
- if Get() then
- if "Is Enabled" then
- exit;
-
- if CRMConnectionSetup.Get() then
- if CRMConnectionSetup."Is Enabled" then
- exit;
-
- CRMConnectionNotEnabledError();
- end;
-
- internal procedure LoadConnectionStringElementsFromCDSConnectionSetup();
- var
- CDSConnectionSetup: Record "CDS Connection Setup";
- begin
- if Get() then
- if "Is Enabled" then
- exit;
-
- if CDSConnectionSetup.Get() then
- if CDSConnectionSetup."Is Enabled" then begin
- "Server Address" := CDSConnectionSetup."Server Address";
- "User Name" := CDSConnectionSetup."User Name";
- "User Password Key" := CDSConnectionSetup."User Password Key";
- "Authentication Type" := CDSConnectionSetup."Authentication Type";
- "Proxy Version" := CDSConnectionSetup."Proxy Version";
- if not Modify() then
- Insert();
- SetConnectionString(CDSConnectionSetup."Connection String");
- exit;
- end;
-
- CDSConnectionNotEnabledError();
- end;
-
- internal procedure DeployFSSolution(ForceRedeploy: Boolean);
- var
- DummyCRMConnectionSetup: Record "CRM Connection Setup";
- AdminEmail: Text;
- AdminPassword: SecretText;
- AccessToken: SecretText;
- AdminADDomain: Text;
- ImportSolutionFailed: Boolean;
- begin
- if not ForceRedeploy and FSIntegrationMgt.IsFSSolutionInstalled() then
- exit;
-
- DummyCRMConnectionSetup.EnsureCDSConnectionIsEnabled();
- case "Authentication Type" of
- "Authentication Type"::Office365:
- CDSIntegrationImpl.GetAccessToken("Server Address", true, AccessToken);
- "Authentication Type"::AD:
- if not PromptForCredentials(AdminEmail, AdminPassword, AdminADDomain) then
- exit;
- else
- if not PromptForCredentials(AdminEmail, AdminPassword) then
- exit;
- end;
-
- if FSIntegrationMgt.ImportFSSolution("Server Address", "User Name", AdminEmail, AdminPassword, AccessToken, AdminADDomain, GetProxyVersion(), ForceRedeploy, ImportSolutionFailed) then
- Message(DeploySucceedMsg)
- else
- if ImportSolutionFailed then
- Message(DeploySolutionFailedMsg)
- else
- Message(DeployFailedMsg);
- end;
-
- internal procedure CountCRMJobQueueEntries(var ActiveJobs: Integer; var TotalJobs: Integer)
- var
- JobQueueEntry: Record "Job Queue Entry";
- begin
- if not "Is Enabled" then begin
- TotalJobs := 0;
- ActiveJobs := 0;
- end else begin
- if "Is FS Solution Installed" then
- JobQueueEntry.SetFilter("Object ID to Run", GetJobQueueEntriesObjectIDToRunFilter())
- else
- JobQueueEntry.SetRange("Object ID to Run", Codeunit::"Integration Synch. Job Runner");
- TotalJobs := JobQueueEntry.Count();
-
- JobQueueEntry.SetFilter(Status, '%1|%2', JobQueueEntry.Status::Ready, JobQueueEntry.Status::"In Process");
- ActiveJobs := JobQueueEntry.Count();
- end;
- end;
-
- internal procedure SetPassword(PasswordText: SecretText)
- begin
- if IsTemporary() then begin
- TempUserPassword := PasswordText;
- exit;
- end;
- if IsNullGuid("User Password Key") then
- "User Password Key" := CreateGuid();
-
- IsolatedStorageManagement.Set("User Password Key", PasswordText, DATASCOPE::Company);
- end;
-
- internal procedure DeletePassword()
- begin
- if IsTemporary() then begin
- Clear(TempUserPassword);
- exit;
- end;
-
- if IsNullGuid("User Password Key") then
- exit;
-
- IsolatedStorageManagement.Delete(Format("User Password Key"), DATASCOPE::Company);
- end;
-
- internal procedure RegisterConnection()
- begin
- if not HasTableConnection(TableConnectionType::CRM, "Primary Key") then
- RegisterConnectionWithName("Primary Key");
- end;
-
- [NonDebuggable]
- internal procedure RegisterConnectionWithName(ConnectionName: Text)
- begin
- RegisterTableConnection(TableConnectionType::CRM, ConnectionName, GetConnectionStringWithCredentials().Unwrap());
- SetDefaultTableConnection(TableConnectionType::CRM, GetDefaultFSConnection(ConnectionName));
- end;
-
- internal procedure UnregisterConnection(): Boolean
- begin
- exit(UnregisterConnectionWithName("Primary Key"));
- end;
-
- [TryFunction]
- internal procedure UnregisterConnectionWithName(ConnectionName: Text)
- begin
- UnregisterTableConnection(TableConnectionType::CRM, ConnectionName);
- end;
-
- [NonDebuggable]
- internal procedure GetConnectionStringWithCredentials() ConnectionString: SecretText
- var
- ConnectionStringWithPlaceholders: Text;
- PasswordPlaceHolderPos: Integer;
- begin
- ConnectionStringWithPlaceholders := GetConnectionStringAsStoredInSetup();
-
- // if the setup record is temporary and connection string contains access token, this is a temp setup record constructed for the admin log-on
- // in this case just use the connection string
- if IsTemporary() and ConnectionStringWithPlaceholders.Contains(AccessTokenTok) then
- exit(ConnectionStringWithPlaceholders);
-
- if ConnectionStringWithPlaceholders = '' then
- ConnectionStringWithPlaceholders := UpdateConnectionString();
-
- // if auth type is Office365 and connection string contains {ClientSecret} token
- // then we will connect via OAuth client credentials grant flow, and construct the connection string accordingly, with the actual client secret
- if "Authentication Type" = "Authentication Type"::Office365 then begin
- if ConnectionStringWithPlaceholders.Contains(ClientSecretTok) then begin
- ConnectionStringWithPlaceholders := StrSubstNo(ClientSecretConnectionStringFormatTxt, ClientSecretAuthTxt, "Server Address", CDSIntegrationImpl.GetCDSConnectionClientId(), '%1', GetProxyVersion());
- ConnectionString := SecretStrSubstNo(ConnectionStringWithPlaceholders, CDSIntegrationImpl.GetCDSConnectionClientSecret());
- exit(ConnectionString);
- end;
-
- if ConnectionStringWithPlaceholders.Contains(CertificateTok) then begin
- ConnectionString := StrSubstNo(CertificateConnectionStringFormatTxt, CertificateAuthTxt, "Server Address", CDSIntegrationImpl.GetCDSConnectionFirstPartyAppId(), CDSIntegrationImpl.GetCDSConnectionFirstPartyAppCertificate(), GetProxyVersion());
- exit(ConnectionString);
- end;
- end;
-
- PasswordPlaceHolderPos := StrPos(ConnectionStringWithPlaceholders, MissingPasswordTok);
- ConnectionStringWithPlaceholders :=
- CopyStr(ConnectionStringWithPlaceholders, 1, PasswordPlaceHolderPos - 1) + '%1' +
- CopyStr(ConnectionStringWithPlaceholders, PasswordPlaceHolderPos + StrLen(MissingPasswordTok));
- ConnectionString := SecretStrSubstNo(ConnectionStringWithPlaceholders, GetPassword());
- end;
-
- [NonDebuggable]
- internal procedure GetPassword(): SecretText
- var
- Value: SecretText;
- begin
- if IsTemporary() then
- exit(TempUserPassword);
- if not IsNullGuid("User Password Key") then
- IsolatedStorageManagement.Get("User Password Key", DATASCOPE::Company, Value);
- exit(Value);
- end;
-
- local procedure GetUserName() UserName: Text
- begin
- if "User Name" = '' then
- UserName := MissingUsernameTok
- else
- UserName := CopyStr("User Name", StrPos("User Name", '\') + 1);
- end;
-
- internal procedure GetJobQueueEntriesObjectIDToRunFilter(): Text
- begin
- exit(
- StrSubstNo(
- '%1|%2|%3|%4|%5|%6',
- Codeunit::"Integration Synch. Job Runner",
- Codeunit::"CRM Statistics Job",
- Codeunit::"Auto Create Sales Orders",
- Codeunit::"Auto Process Sales Quotes",
- Codeunit::"Int. Uncouple Job Runner",
- Codeunit::"Int. Coupling Job Runner"));
- end;
-
- internal procedure PerformTestConnection()
- begin
- VerifyTestConnection();
- Message(ConnectionSuccessMsg);
- end;
-
- internal procedure VerifyTestConnection(): Boolean
- begin
- if ("Server Address" = '') or ("User Name" = '') then
- Error(DetailsMissingErr, CRMProductName.FSServiceName());
-
- CRMIntegrationManagement.ClearState();
-
- if not TestConnection() then
- Error(ConnectionErr, CRMIntegrationManagement.GetLastErrorMessage());
-
- TestIntegrationUserRequirements();
-
- exit(true);
- end;
-
- internal procedure TestConnection() Success: Boolean
- var
- TestConnectionName: Text;
- begin
- TestConnectionName := Format(CreateGuid());
- UnregisterConnectionWithName(TestConnectionName);
- RegisterConnectionWithName(TestConnectionName);
- SetDefaultTableConnection(
- TableConnectionType::CRM, GetDefaultFSConnection(TestConnectionName), true);
- Success := TryReadSystemUsers();
-
- UnregisterConnectionWithName(TestConnectionName);
- end;
-
- internal procedure TestIntegrationUserRequirements()
- var
- CRMRole: Record "CRM Role";
- TempCRMRole: Record "CRM Role" temporary;
- CRMSystemuserroles: Record "CRM Systemuserroles";
- CRMSystemuser: Record "CRM Systemuser";
- BCIntAdminCRMRoleName: Text;
- BCIntUserCRMRoleName: Text;
- SystemAdminCRMRoleName: Text;
- TestConnectionName: Text;
- BCIntegrationAdminRoleDeployed: Boolean;
- BCIntegrationRolesDeployed: Boolean;
- ChosenUserIsSystemAdmin: Boolean;
- ChosenUserHasBCFSSecurityRole: Boolean;
- begin
- TestConnectionName := Format(CreateGuid());
- UnregisterConnectionWithName(TestConnectionName);
- RegisterConnectionWithName(TestConnectionName);
- SetDefaultTableConnection(
- TableConnectionType::CRM, GetDefaultFSConnection(TestConnectionName), true);
-
- if CRMRole.FindSet() then
- repeat
- TempCRMRole.TransferFields(CRMRole);
- TempCRMRole.Insert();
- if LowerCase(Format(TempCRMRole.RoleId)) = BCIntegrationUserFSRoleIdTxt then begin
- BCIntegrationAdminRoleDeployed := true;
- BCIntAdminCRMRoleName := TempCRMRole.Name;
- end;
- until CRMRole.Next() = 0;
-
- BCIntegrationRolesDeployed := BCIntegrationAdminRoleDeployed;
-
- CRMSystemuser.SetFilter(InternalEMailAddress, StrSubstNo('@%1', "User Name"));
- if CRMSystemuser.FindFirst() then begin
- if CRMSystemuser.IsDisabled then
- Error(UserNotActiveErr, "User Name", "Server Address");
- if "Authentication Type" <> "Authentication Type"::Office365 then
- if not CRMSystemuser.IsLicensed then
- Error(UserNotLicensedErr, "User Name", "Server Address");
-
- CRMSystemuserroles.SetRange(SystemUserId, CRMSystemuser.SystemUserId);
- if CRMSystemuserroles.FindSet() then
- repeat
- if TempCRMRole.Get(CRMSystemuserroles.RoleId) then begin
- if UpperCase(Format(TempCRMRole.RoleTemplateId)) = SystemAdminRoleTemplateIdTxt then begin
- ChosenUserIsSystemAdmin := true;
- SystemAdminCRMRoleName := TempCRMRole.Name
- end;
- if LowerCase(Format(TempCRMRole.RoleId)) = BCIntegrationUserFSRoleIdTxt then
- ChosenUserHasBCFSSecurityRole := true;
- end;
- until CRMSystemuserroles.Next() = 0
- else
- if ("Server Address" <> '') and ("Server Address" <> '@@test@@') then
- Error(UserHasNoRolesErr, "User Name", "Server Address");
-
- if ChosenUserIsSystemAdmin then
- Error(SystemAdminErr, "User Name", SystemAdminCRMRoleName, "Server Address");
-
- if BCIntegrationRolesDeployed and not ChosenUserHasBCFSSecurityRole then
- Error(BCRolesErr, "User Name", BCIntAdminCRMRoleName, BCIntUserCRMRoleName, "Server Address");
- end;
-
- UnregisterConnectionWithName(TestConnectionName);
- end;
-
- [TryFunction]
- internal procedure TryReadSystemUsers()
- var
- CRMSystemuser: Record "CRM Systemuser";
- begin
- if CRMSystemuser.Count() > 0 then
- exit;
- end;
-
- internal procedure UpdateFromWizard(var SourceFSConnectionSetup: Record "FS Connection Setup"; PasswordText: SecretText)
- begin
- if not Get() then begin
- Init();
- Insert();
- end;
- Validate("Server Address", SourceFSConnectionSetup."Server Address");
- Validate("Authentication Type", "Authentication Type"::Office365);
- Validate("User Name", SourceFSConnectionSetup."User Name");
- SetPassword(PasswordText);
- Validate("Proxy Version", SourceFSConnectionSetup."Proxy Version");
- Validate("Job Journal Template", SourceFSConnectionSetup."Job Journal Template");
- Validate("Job Journal Batch", SourceFSConnectionSetup."Job Journal Batch");
- Validate("Hour Unit of Measure", SourceFSConnectionSetup."Hour Unit of Measure");
- Validate("Line Synch. Rule", SourceFSConnectionSetup."Line Synch. Rule");
- Validate("Line Post Rule", SourceFSConnectionSetup."Line Post Rule");
- Modify(true);
- end;
-
- internal procedure EnableFSConnectionFromWizard()
- begin
- Get();
- Validate("Is Enabled", true);
- Modify(true);
- end;
-
- local procedure UpdateConnectionDetails()
- begin
- if "Is Enabled" = xRec."Is Enabled" then
- exit;
-
- if not UnregisterConnection() then
- ClearLastError();
-
- if "Is Enabled" then begin
- VerifyTestConnection();
- RegisterConnection();
- InstallIntegrationSolution();
- EnableIntegrationTables();
- if "Disable Reason" <> '' then
- Clear("Disable Reason");
- end else begin
- "FS Version" := '';
- "Is FS Solution Installed" := false;
- CurrencyDecimalPrecision := 0;
- Clear(BaseCurrencyId);
- BaseCurrencyPrecision := 0;
- BaseCurrencySymbol := '';
- UpdateFSJobQueueEntriesStatus();
- end;
- end;
-
- local procedure InstallIntegrationSolution()
- var
- AdminEmail: Text;
- AdminPassword: SecretText;
- AccessToken: SecretText;
- AdminADDomain: Text;
- ImportSolutionFailed: Boolean;
- begin
- if FSIntegrationMgt.IsFSSolutionInstalled() then
- exit;
-
- case "Authentication Type" of
- "Authentication Type"::Office365:
- CDSIntegrationImpl.GetAccessToken("Server Address", true, AccessToken);
- "Authentication Type"::AD:
- if not PromptForCredentials(AdminEmail, AdminPassword, AdminADDomain) then
- exit;
- else
- if not PromptForCredentials(AdminEmail, AdminPassword) then
- exit;
- end;
-
- FSIntegrationMgt.ImportFSSolution(
- "Server Address", "User Name", AdminEmail, AdminPassword, AccessToken, AdminADDomain, GetProxyVersion(), false, ImportSolutionFailed);
- end;
-
- local procedure EnableIntegrationTables()
- var
- FSSetupDefaults: Codeunit "FS Setup Defaults";
- begin
- Modify(); // Job Queue to read "Is Enabled"
- Commit();
- FSSetupDefaults.ResetConfiguration(Rec);
- end;
-
- internal procedure RefreshDataFromFS()
- begin
- RefreshDataFromFS(true);
- end;
-
- internal procedure RefreshDataFromFS(ResetSalesOrderMappingConfiguration: Boolean)
- begin
- if "Is Enabled" then begin
- "Is FS Solution Installed" := FSIntegrationMgt.IsFSSolutionInstalled();
- if not TryRefreshFSSettings() then
- exit;
- end;
- end;
-
- [TryFunction]
- local procedure TryRefreshFSSettings()
- var
- CRMOrganization: Record "CRM Organization";
- begin
- if CRMOrganization.FindFirst() then begin
- CurrencyDecimalPrecision := CRMOrganization.CurrencyDecimalPrecision;
- BaseCurrencyId := CRMOrganization.BaseCurrencyId;
- BaseCurrencyPrecision := CRMOrganization.BaseCurrencyPrecision;
- BaseCurrencySymbol := CRMOrganization.BaseCurrencySymbol;
- end
- end;
-
- [NonDebuggable]
- internal procedure PromptForCredentials(var AdminEmail: Text; var AdminPassword: SecretText): Boolean
- var
- TempOfficeAdminCredentials: Record "Office Admin. Credentials" temporary;
- begin
- if TempOfficeAdminCredentials.IsEmpty() then begin
- TempOfficeAdminCredentials.Init();
- TempOfficeAdminCredentials.Insert(true);
- Commit();
- if Page.RunModal(Page::"Dynamics CRM Admin Credentials", TempOfficeAdminCredentials) <> Action::LookupOK then
- exit(false);
- end;
- if (not TempOfficeAdminCredentials.FindFirst()) or
- (TempOfficeAdminCredentials.Email = '') or (TempOfficeAdminCredentials.Password = '')
- then begin
- TempOfficeAdminCredentials.DeleteAll(true);
- exit(false);
- end;
-
- AdminEmail := TempOfficeAdminCredentials.Email;
- AdminPassword := TempOfficeAdminCredentials.Password;
- exit(true);
- end;
-
- [NonDebuggable]
- internal procedure PromptForCredentials(var AdminEmail: Text; var AdminPassword: SecretText; var AdminADDomain: Text): Boolean
- var
- TempOfficeAdminCredentials: Record "Office Admin. Credentials" temporary;
- BackslashPos: Integer;
- begin
- if TempOfficeAdminCredentials.IsEmpty() then begin
- TempOfficeAdminCredentials.Init();
- TempOfficeAdminCredentials.Insert(true);
- Commit();
- if Page.RunModal(Page::"Dynamics CRM Admin Credentials", TempOfficeAdminCredentials) <> Action::LookupOK then
- exit(false);
- end;
- if (not TempOfficeAdminCredentials.FindFirst()) or
- (TempOfficeAdminCredentials.Email = '') or (TempOfficeAdminCredentials.Password = '')
- then begin
- TempOfficeAdminCredentials.DeleteAll(true);
- exit(false);
- end;
-
- BackslashPos := StrPos(TempOfficeAdminCredentials.Email, '\');
- if (BackslashPos <= 1) or (BackslashPos = StrLen(TempOfficeAdminCredentials.Email)) then
- Error(UserNameMustIncludeDomainErr);
- AdminADDomain := CopyStr(TempOfficeAdminCredentials.Email, 1, BackslashPos - 1);
- AdminEmail := CopyStr(TempOfficeAdminCredentials.Email, BackslashPos + 1);
- AdminPassword := TempOfficeAdminCredentials.Password;
- exit(true);
- end;
-
- local procedure GetDefaultFSConnection(ConnectionName: Text): Text
- begin
- OnGetDefaultFSConnection(ConnectionName);
- exit(ConnectionName);
- end;
-
- [IntegrationEvent(false, false)]
- local procedure OnGetDefaultFSConnection(var ConnectionName: Text)
- begin
- end;
-
- local procedure CrmAuthenticationType(): Text
- begin
- case "Authentication Type" of
- "Authentication Type"::Office365:
- exit('AuthType=Office365;');
- "Authentication Type"::AD:
- exit('AuthType=AD;' + GetDomain());
- "Authentication Type"::IFD:
- exit('AuthType=IFD;' + GetDomain() + 'HomeRealmUri= ;');
- "Authentication Type"::OAuth:
- exit('AuthType=OAuth;' + 'AppId= ;' + 'RedirectUri= ;' + 'TokenCacheStorePath= ;' + 'LoginPrompt=Auto;');
- end;
- end;
-
- internal procedure UpdateConnectionString() ConnectionString: Text
- begin
- if "Authentication Type" <> "Authentication Type"::Office365 then
- ConnectionString := StrSubstNo(ConnectionStringFormatTok, "Server Address", GetUserName(), MissingPasswordTok, GetProxyVersion(), CrmAuthenticationType())
- else
- if CDSIntegrationImpl.GetCDSConnectionFirstPartyAppId() <> '' then
- ConnectionString := StrSubstNo(CertificateConnectionStringFormatTxt, CertificateAuthTxt, "Server Address", ClientIdTok, CertificateTok, GetProxyVersion())
- else
- ConnectionString := StrSubstNo(ClientSecretConnectionStringFormatTxt, ClientSecretAuthTxt, "Server Address", ClientIdTok, ClientSecretTok, GetProxyVersion());
-
- SetConnectionString(ConnectionString);
- end;
-
- local procedure UpdateProxyVersionInConnectionString() ConnectionString: Text
- var
- LeftPart: Text;
- RightPart: Text;
- ProxyVersionTok: Text;
- IndexOfProxyVersion: Integer;
- begin
- ProxyVersionTok := 'ProxyVersion=';
- ConnectionString := GetConnectionStringAsStoredInSetup();
-
- // if the connection string is empty, just initialize it the standard way
- if ConnectionString = '' then begin
- ConnectionString := UpdateConnectionString();
- exit;
- end;
-
- IndexOfProxyVersion := ConnectionString.IndexOf(ProxyVersionTok);
-
- // if there is no proxy version in the connection string, just add it to the end
- if IndexOfProxyVersion = 0 then begin
- ConnectionString += ('; ' + ProxyVersionTok + Format(GetProxyVersion()));
- SetConnectionString(ConnectionString);
- exit;
- end;
-
- LeftPart := CopyStr(ConnectionString, 1, IndexOfProxyVersion - 1);
- RightPart := CopyStr(ConnectionString, IndexOfProxyVersion);
-
- // RightPart starts with ProxyVersion=
- // if there is no ; in it, then this is the end of the original connection string
- // just add proxy version to the end of LeftPart
- if RightPart.IndexOf(';') = 0 then begin
- ConnectionString := LeftPart + ProxyVersionTok + Format(GetProxyVersion());
- SetConnectionString(ConnectionString);
- exit;
- end;
-
- // in the remaining case, ProxyVersion=XYZ is in the middle of the string
- RightPart := CopyStr(RightPart, RightPart.IndexOf(';'));
- ConnectionString := LeftPart + ProxyVersionTok + Format(GetProxyVersion()) + RightPart;
- SetConnectionString(ConnectionString);
- end;
-
- local procedure UpdateDomainName()
- begin
- if "User Name" <> '' then
- if StrPos("User Name", '\') > 0 then
- Validate(Domain, CopyStr("User Name", 1, StrPos("User Name", '\') - 1))
- else
- Domain := '';
- end;
-
- local procedure CheckUserName()
- begin
- if "User Name" <> '' then
- case "Authentication Type" of
- "Authentication Type"::AD:
- if StrPos("User Name", '\') = 0 then
- Error(UserNameMustIncludeDomainErr);
- "Authentication Type"::Office365:
- if StrPos("User Name", '@') = 0 then
- Error(UserNameMustBeEmailErr);
- end;
- end;
-
- local procedure GetDomain(): Text
- var
- DomainLbl: Label 'Domain=%1;', Locked = true;
- begin
- if Domain <> '' then
- exit(StrSubstNo(DomainLbl, Domain));
- end;
-
- local procedure UpdateFSJobQueueEntriesStatus()
- var
- IntegrationTableMapping: Record "Integration Table Mapping";
- JobQueueEntry: Record "Job Queue Entry";
- NewStatus: Option;
- begin
- if "Is Enabled" then
- NewStatus := JobQueueEntry.Status::Ready
- else
- NewStatus := JobQueueEntry.Status::"On Hold";
- IntegrationTableMapping.SetRange(Type, IntegrationTableMapping.Type::Dataverse);
- IntegrationTableMapping.SetRange("Synch. Codeunit ID", Codeunit::"CRM Integration Table Synch.");
- IntegrationTableMapping.SetRange("Delete After Synchronization", false);
- if CDSIntegrationImpl.IsIntegrationEnabled() then
- IntegrationTableMapping.SetFilter("Table ID", StrSubstNo('<>%1&<>%2&<>%3&<>%4', Database::"Job Journal Line", Database::"Job Task", Database::Resource, Database::"Service Item"));
- if IntegrationTableMapping.FindSet() then
- repeat
- JobQueueEntry.SetRange("Record ID to Process", IntegrationTableMapping.RecordId);
- if JobQueueEntry.FindSet() then
- repeat
- JobQueueEntry.SetStatus(NewStatus);
- until JobQueueEntry.Next() = 0;
- until IntegrationTableMapping.Next() = 0;
- end;
-
- internal procedure GetConnectionStringAsStoredInSetup() ConnectionString: Text
- var
- CRMConnectionSetup: Record "CRM Connection Setup";
- InStream: InStream;
- begin
- if CRMConnectionSetup.Get("Primary Key") then
- CalcFields("Server Connection String");
- "Server Connection String".CreateInStream(InStream);
- InStream.ReadText(ConnectionString);
- end;
-
- internal procedure SetConnectionString(ConnectionString: Text)
- var
- OutStream: OutStream;
- begin
- if ConnectionString = '' then
- Clear("Server Connection String")
- else begin
- if "Authentication Type" <> "Authentication Type"::Office365 then
- if StrPos(ConnectionString, MissingPasswordTok) = 0 then
- Error(ConnectionStringPwdPlaceHolderMissingErr);
-
- if "Authentication Type" = "Authentication Type"::Office365 then
- if (StrPos(ConnectionString, MissingPasswordTok) = 0) and (StrPos(ConnectionString, ClientSecretTok) = 0) and (StrPos(ConnectionString, CertificateTok) = 0) then
- Error(ConnectionStringPwdOrClientSecretPlaceHolderMissingErr);
-
- Clear("Server Connection String");
- "Server Connection String".CreateOutStream(OutStream);
- OutStream.WriteText(ConnectionString);
- end;
- if not Modify() then;
- end;
-
- internal procedure IsEnabled(): Boolean
- begin
- if not Get() then
- exit(false);
- exit("Is Enabled");
- end;
-
- internal procedure GetProxyVersion(): Integer
- var
- EnvironmentInformation: Codeunit "Environment Information";
- begin
- if "Proxy Version" >= 100 then
- exit("Proxy Version");
-
- if not EnvironmentInformation.IsSaaS() then
- exit("Proxy Version");
-
- Session.LogMessage('0000K7P', DefaultingToDataverseServiceClientTxt, Verbosity::Normal, DataClassification::SystemMetadata, TelemetryScope::ExtensionPublisher, 'Category', CategoryTok);
- exit(100);
- end;
-
- local procedure CDSConnectionNotEnabledError()
- var
- AssistedSetup: Page "Assisted Setup";
- CDSConnectionNotEnabledErrorInfo: ErrorInfo;
- begin
- CDSConnectionNotEnabledErrorInfo.DataClassification := CDSConnectionNotEnabledErrorInfo.DataClassification::SystemMetadata;
- CDSConnectionNotEnabledErrorInfo.ErrorType := CDSConnectionNotEnabledErrorInfo.ErrorType::Client;
- CDSConnectionNotEnabledErrorInfo.Verbosity := CDSConnectionNotEnabledErrorInfo.Verbosity::Error;
- CDSConnectionNotEnabledErrorInfo.Message := StrSubstNo(CDSConnectionMustBeEnabledErr, CRMProductName.FSServiceName(), AssistedSetup.Caption());
- CDSConnectionNotEnabledErrorInfo.AddNavigationAction(ShowDataverseConnectionSetupLbl);
- CDSConnectionNotEnabledErrorInfo.PageNo(Page::"CDS Connection Setup Wizard");
- Error(CDSConnectionNotEnabledErrorInfo);
- end;
-
- local procedure CRMConnectionNotEnabledError()
- var
- AssistedSetup: Page "Assisted Setup";
- CRMConnectionNotEnabledErrorInfo: ErrorInfo;
- begin
- CRMConnectionNotEnabledErrorInfo.DataClassification := CRMConnectionNotEnabledErrorInfo.DataClassification::SystemMetadata;
- CRMConnectionNotEnabledErrorInfo.ErrorType := CRMConnectionNotEnabledErrorInfo.ErrorType::Client;
- CRMConnectionNotEnabledErrorInfo.Verbosity := CRMConnectionNotEnabledErrorInfo.Verbosity::Error;
- CRMConnectionNotEnabledErrorInfo.Message := StrSubstNo(CRMConnectionMustBeEnabledErr, CRMProductName.FSServiceName(), AssistedSetup.Caption());
- CRMConnectionNotEnabledErrorInfo.AddNavigationAction(ShowCRMConnectionSetupLbl);
- CRMConnectionNotEnabledErrorInfo.PageNo(Page::"CRM Connection Setup Wizard");
- Error(CRMConnectionNotEnabledErrorInfo);
- end;
-}
-
diff --git a/Apps/W1/FieldServiceIntegration/app/src/Tables/FSCustomerAsset.Table.al b/Apps/W1/FieldServiceIntegration/app/src/Tables/FSCustomerAsset.Table.al
deleted file mode 100644
index f7abe0f081..0000000000
--- a/Apps/W1/FieldServiceIntegration/app/src/Tables/FSCustomerAsset.Table.al
+++ /dev/null
@@ -1,423 +0,0 @@
-// ------------------------------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License. See License.txt in the project root for license information.
-// ------------------------------------------------------------------------------------------------
-namespace Microsoft.Integration.DynamicsFieldService;
-
-using Microsoft.Integration.D365Sales;
-
-table 6613 "FS Customer Asset"
-{
- ExternalName = 'msdyn_customerasset';
- TableType = CRM;
- Description = 'Specify Customer Asset.';
- DataClassification = SystemMetadata;
-
- fields
- {
- field(1; CustomerAssetId; GUID)
- {
- ExternalName = 'msdyn_customerassetid';
- ExternalType = 'Uniqueidentifier';
- ExternalAccess = Insert;
- Description = 'Shows the entity instances.';
- Caption = 'Customer Asset';
- DataClassification = SystemMetadata;
- }
- field(2; CreatedOn; Datetime)
- {
- ExternalName = 'createdon';
- ExternalType = 'DateTime';
- ExternalAccess = Read;
- Description = 'Shows the date and time when the record was created. The date and time are displayed in the time zone selected in Microsoft Dynamics 365 options.';
- Caption = 'Created On';
- DataClassification = SystemMetadata;
- }
- field(3; CreatedBy; GUID)
- {
- ExternalName = 'createdby';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Unique identifier of the user who created the record.';
- Caption = 'Created By';
- TableRelation = "CRM Systemuser".SystemUserId;
- DataClassification = SystemMetadata;
- }
- field(4; ModifiedOn; Datetime)
- {
- ExternalName = 'modifiedon';
- ExternalType = 'DateTime';
- ExternalAccess = Read;
- Description = 'Shows the date and time when the record was last updated. The date and time are displayed in the time zone selected in Microsoft Dynamics 365 options.';
- Caption = 'Modified On';
- DataClassification = SystemMetadata;
- }
- field(5; ModifiedBy; GUID)
- {
- ExternalName = 'modifiedby';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Unique identifier of the user who modified the record.';
- Caption = 'Modified By';
- TableRelation = "CRM Systemuser".SystemUserId;
- DataClassification = SystemMetadata;
- }
- field(6; CreatedOnBehalfBy; GUID)
- {
- ExternalName = 'createdonbehalfby';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Shows who created the record on behalf of another user.';
- Caption = 'Created By (Delegate)';
- TableRelation = "CRM Systemuser".SystemUserId;
- DataClassification = SystemMetadata;
- }
- field(7; ModifiedOnBehalfBy; GUID)
- {
- ExternalName = 'modifiedonbehalfby';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Shows who last updated the record on behalf of another user.';
- Caption = 'Modified By (Delegate)';
- TableRelation = "CRM Systemuser".SystemUserId;
- DataClassification = SystemMetadata;
- }
- field(16; OwnerId; GUID)
- {
- ExternalName = 'ownerid';
- ExternalType = 'Owner';
- Description = 'Owner Id';
- Caption = 'Owner';
- DataClassification = SystemMetadata;
- }
- field(21; OwningBusinessUnit; GUID)
- {
- ExternalName = 'owningbusinessunit';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Unique identifier for the business unit that owns the record';
- Caption = 'Owning Business Unit';
- TableRelation = "CRM Businessunit".BusinessUnitId;
- DataClassification = SystemMetadata;
- }
- field(22; OwningUser; GUID)
- {
- ExternalName = 'owninguser';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Unique identifier for the user that owns the record.';
- Caption = 'Owning User';
- TableRelation = "CRM Systemuser".SystemUserId;
- DataClassification = SystemMetadata;
- }
- field(23; OwningTeam; GUID)
- {
- ExternalName = 'owningteam';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Unique identifier for the team that owns the record.';
- Caption = 'Owning Team';
- TableRelation = "CRM Team".TeamId;
- DataClassification = SystemMetadata;
- }
- field(25; StateCode; Option)
- {
- ExternalName = 'statecode';
- ExternalType = 'State';
- ExternalAccess = Modify;
- Description = 'Status of the Customer Asset';
- Caption = 'Status';
- InitValue = " ";
- OptionMembers = " ",Active,Inactive;
- OptionOrdinalValues = -1, 0, 1;
- DataClassification = SystemMetadata;
- }
- field(27; StatusCode; Option)
- {
- ExternalName = 'statuscode';
- ExternalType = 'Status';
- Description = 'Reason for the status of the Customer Asset';
- Caption = 'Status Reason';
- InitValue = " ";
- OptionMembers = " ",Active,Inactive;
- OptionOrdinalValues = -1, 1, 2;
- DataClassification = SystemMetadata;
- }
- field(29; VersionNumber; BigInteger)
- {
- ExternalName = 'versionnumber';
- ExternalType = 'BigInt';
- ExternalAccess = Read;
- Description = 'Version Number';
- Caption = 'Version Number';
- DataClassification = SystemMetadata;
- }
- field(30; ImportSequenceNumber; Integer)
- {
- ExternalName = 'importsequencenumber';
- ExternalType = 'Integer';
- ExternalAccess = Insert;
- Description = 'Shows the sequence number of the import that created this record.';
- Caption = 'Import Sequence Number';
- DataClassification = SystemMetadata;
- }
- field(31; OverriddenCreatedOn; Date)
- {
- ExternalName = 'overriddencreatedon';
- ExternalType = 'DateTime';
- ExternalAccess = Insert;
- Description = 'Shows the date and time that the record was migrated.';
- Caption = 'Record Created On';
- DataClassification = SystemMetadata;
- }
- field(32; TimeZoneRuleVersionNumber; Integer)
- {
- ExternalName = 'timezoneruleversionnumber';
- ExternalType = 'Integer';
- Description = 'For internal use only.';
- Caption = 'Time Zone Rule Version Number';
- DataClassification = SystemMetadata;
- }
- field(33; UTCConversionTimeZoneCode; Integer)
- {
- ExternalName = 'utcconversiontimezonecode';
- ExternalType = 'Integer';
- Description = 'Shows the time zone code that was in use when the record was created.';
- Caption = 'UTC Conversion Time Zone Code';
- DataClassification = SystemMetadata;
- }
- field(34; Name; Text[100])
- {
- ExternalName = 'msdyn_name';
- ExternalType = 'String';
- Description = 'Enter the name of the custom entity.';
- Caption = 'Name';
- DataClassification = SystemMetadata;
- }
- field(36; Account; GUID)
- {
- ExternalName = 'msdyn_account';
- ExternalType = 'Lookup';
- Description = 'Parent Customer of this Asset';
- Caption = 'Account';
- TableRelation = "CRM Account".AccountId;
- DataClassification = SystemMetadata;
- }
- field(37; CustomerAssetCategory; GUID)
- {
- ExternalName = 'msdyn_customerassetcategory';
- ExternalType = 'Lookup';
- Description = 'The category of the customer asset';
- Caption = 'Category';
- TableRelation = "FS Customer Asset Category".CustomerAssetCategoryId;
- DataClassification = SystemMetadata;
- }
- field(38; Latitude; Decimal)
- {
- ExternalName = 'msdyn_latitude';
- ExternalType = 'Double';
- Description = '';
- Caption = 'Latitude';
- DataClassification = SystemMetadata;
- }
- field(39; Longitude; Decimal)
- {
- ExternalName = 'msdyn_longitude';
- ExternalType = 'Double';
- Description = '';
- Caption = 'Longitude';
- DataClassification = SystemMetadata;
- }
- field(40; MasterAsset; GUID)
- {
- ExternalName = 'msdyn_masterasset';
- ExternalType = 'Lookup';
- Description = 'Top-Level Asset, (if this asset is a sub asset)';
- Caption = 'Top-Level Asset';
- TableRelation = "FS Customer Asset".CustomerAssetId;
- DataClassification = SystemMetadata;
- }
- field(41; ParentAsset; GUID)
- {
- ExternalName = 'msdyn_parentasset';
- ExternalType = 'Lookup';
- Description = 'Parent Asset';
- Caption = 'Parent Asset';
- TableRelation = "FS Customer Asset".CustomerAssetId;
- DataClassification = SystemMetadata;
- }
- field(42; Product; GUID)
- {
- ExternalName = 'msdyn_product';
- ExternalType = 'Lookup';
- Description = 'Reference to Product associated with this Asset';
- Caption = 'Product';
- TableRelation = "CRM Product".ProductId;
- DataClassification = SystemMetadata;
- }
- field(46; MasterAssetName; Text[100])
- {
- FieldClass = FlowField;
- CalcFormula = lookup("FS Customer Asset".Name where(CustomerAssetId = field(MasterAsset)));
- ExternalName = 'msdyn_masterassetname';
- ExternalType = 'String';
- ExternalAccess = Read;
- }
- field(47; ParentAssetName; Text[100])
- {
- FieldClass = FlowField;
- CalcFormula = lookup("FS Customer Asset".Name where(CustomerAssetId = field(ParentAsset)));
- ExternalName = 'msdyn_parentassetname';
- ExternalType = 'String';
- ExternalAccess = Read;
- }
- field(48; CustomerAssetCategoryName; Text[100])
- {
- FieldClass = FlowField;
- CalcFormula = lookup("FS Customer Asset Category".Name where(CustomerAssetCategoryId = field(CustomerAssetCategory)));
- ExternalName = 'msdyn_customerassetcategoryname';
- ExternalType = 'String';
- ExternalAccess = Read;
- }
- field(50; DeviceId; Text[100])
- {
- ExternalName = 'msdyn_deviceid';
- ExternalType = 'String';
- Description = 'Device ID used to register with the IoT provider. This will not be used if there are two or more connected devices for this asset. This value will be updated based on the connected devices.';
- Caption = 'Device ID';
- DataClassification = SystemMetadata;
- }
- field(52; LastCommandSentTime; Date)
- {
- ExternalName = 'msdyn_lastcommandsenttime';
- ExternalType = 'DateTime';
- Description = 'The timestamp of the last command sent for any of the connected devices for this asset.';
- Caption = 'Last Command Sent Time';
- DataClassification = SystemMetadata;
- }
- field(53; RegistrationStatus; Option)
- {
- ExternalName = 'msdyn_registrationstatus';
- ExternalType = 'Picklist';
- Description = 'A status field that denotes whether all the devices connected to this asset are registered with the IoT provider.';
- Caption = 'Registration Status';
- InitValue = " ";
- OptionMembers = " ",Unknown,Unregistered,InProgress,Registered,Error;
- OptionOrdinalValues = -1, 192350000, 192350001, 192350002, 192350003, 192350004;
- DataClassification = SystemMetadata;
- }
- field(56; Alert; Boolean)
- {
- ExternalName = 'msdyn_alert';
- ExternalType = 'Boolean';
- ExternalAccess = Read;
- Description = 'If active parent alerts exist for the customer asset';
- Caption = 'Active or in-progress alerts';
- DataClassification = SystemMetadata;
- }
- field(58; AlertCount; Integer)
- {
- ExternalName = 'msdyn_alertcount';
- ExternalType = 'Integer';
- ExternalAccess = Read;
- Description = 'Count of parent alerts for this customer asset';
- Caption = 'Alert Count';
- DataClassification = SystemMetadata;
- }
- field(59; AalertCount_Date; Datetime)
- {
- ExternalName = 'msdyn_alertcount_date';
- ExternalType = 'DateTime';
- ExternalAccess = Read;
- Description = 'Last Updated time of rollup field Alert Count.';
- Caption = 'Alert Count (Last Updated On)';
- DataClassification = SystemMetadata;
- }
- field(60; AlertCount_State; Integer)
- {
- ExternalName = 'msdyn_alertcount_state';
- ExternalType = 'Integer';
- ExternalAccess = Read;
- Description = 'State of rollup field Alert Count.';
- Caption = 'Alert Count (State)';
- DataClassification = SystemMetadata;
- }
- field(61; LastAlertTime; Datetime)
- {
- ExternalName = 'msdyn_lastalerttime';
- ExternalType = 'DateTime';
- ExternalAccess = Read;
- Description = '';
- Caption = 'Last active alert time';
- DataClassification = SystemMetadata;
- }
- field(62; LastAlertTime_Date; Datetime)
- {
- ExternalName = 'msdyn_lastalerttime_date';
- ExternalType = 'DateTime';
- ExternalAccess = Read;
- Description = 'Last Updated time of rollup field Last active alert time.';
- Caption = 'Last active alert time (Last Updated On)';
- DataClassification = SystemMetadata;
- }
- field(63; LastAlertTime_State; Integer)
- {
- ExternalName = 'msdyn_lastalerttime_state';
- ExternalType = 'Integer';
- ExternalAccess = Read;
- Description = 'State of rollup field Last active alert time.';
- Caption = 'Last active alert time (State)';
- DataClassification = SystemMetadata;
- }
- field(64; AssetTag; Text[100])
- {
- ExternalName = 'msdyn_assettag';
- ExternalType = 'String';
- Description = '';
- Caption = 'Asset Tag';
- DataClassification = SystemMetadata;
- }
- field(66; WorkOrderProduct; GUID)
- {
- ExternalName = 'msdyn_workorderproduct';
- ExternalType = 'Lookup';
- Description = 'Indicates a link to the Work Order Product from where this Asset was auto created by the system.';
- Caption = 'Work Order Product';
- TableRelation = "FS Work Order Product".WorkOrderProductId;
- DataClassification = SystemMetadata;
- }
- field(67; WorkOrderProductName; Text[200])
- {
- FieldClass = FlowField;
- CalcFormula = lookup("FS Work Order Product".Name where(WorkOrderProductId = field(WorkOrderProduct)));
- ExternalName = 'msdyn_workorderproductname';
- ExternalType = 'String';
- ExternalAccess = Read;
- }
- field(68; CompanyId; GUID)
- {
- ExternalName = 'bcbi_company';
- ExternalType = 'Lookup';
- Description = 'Business Central Company';
- Caption = 'Company Id';
- TableRelation = "CDS Company".CompanyId;
- DataClassification = SystemMetadata;
- }
- }
- keys
- {
- key(PK; customerassetId)
- {
- Clustered = true;
- }
- key(Name; Name)
- {
- }
- }
- fieldgroups
- {
- fieldgroup(DropDown; Name)
- {
- }
- }
-}
\ No newline at end of file
diff --git a/Apps/W1/FieldServiceIntegration/app/src/Tables/FSCustomerAssetCategory.Table.al b/Apps/W1/FieldServiceIntegration/app/src/Tables/FSCustomerAssetCategory.Table.al
deleted file mode 100644
index 07936c2617..0000000000
--- a/Apps/W1/FieldServiceIntegration/app/src/Tables/FSCustomerAssetCategory.Table.al
+++ /dev/null
@@ -1,214 +0,0 @@
-// ------------------------------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License. See License.txt in the project root for license information.
-// ------------------------------------------------------------------------------------------------
-namespace Microsoft.Integration.DynamicsFieldService;
-
-using Microsoft.Integration.D365Sales;
-
-table 6614 "FS Customer Asset Category"
-{
- ExternalName = 'msdyn_customerassetcategory';
- TableType = CRM;
- Description = 'The Category of Customer Asset.';
- DataClassification = SystemMetadata;
-
- fields
- {
- field(1; CustomerAssetCategoryId; GUID)
- {
- ExternalName = 'msdyn_customerassetcategoryid';
- ExternalType = 'Uniqueidentifier';
- ExternalAccess = Insert;
- Description = 'Unique identifier for entity instances';
- Caption = 'Customer Asset Category';
- DataClassification = SystemMetadata;
- }
- field(2; CreatedOn; Datetime)
- {
- ExternalName = 'createdon';
- ExternalType = 'DateTime';
- ExternalAccess = Read;
- Description = 'Date and time when the record was created.';
- Caption = 'Created On';
- DataClassification = SystemMetadata;
- }
- field(3; CreatedBy; GUID)
- {
- ExternalName = 'createdby';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Unique identifier of the user who created the record.';
- Caption = 'Created By';
- TableRelation = "CRM Systemuser".SystemUserId;
- DataClassification = SystemMetadata;
- }
- field(4; ModifiedOn; Datetime)
- {
- ExternalName = 'modifiedon';
- ExternalType = 'DateTime';
- ExternalAccess = Read;
- Description = 'Date and time when the record was modified.';
- Caption = 'Modified On';
- DataClassification = SystemMetadata;
- }
- field(5; ModifiedBy; GUID)
- {
- ExternalName = 'modifiedby';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Unique identifier of the user who modified the record.';
- Caption = 'Modified By';
- TableRelation = "CRM Systemuser".SystemUserId;
- DataClassification = SystemMetadata;
- }
- field(6; CreatedOnBehalfBy; GUID)
- {
- ExternalName = 'createdonbehalfby';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Unique identifier of the delegate user who created the record.';
- Caption = 'Created By (Delegate)';
- TableRelation = "CRM Systemuser".SystemUserId;
- DataClassification = SystemMetadata;
- }
- field(7; ModifiedOnBehalfBy; GUID)
- {
- ExternalName = 'modifiedonbehalfby';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Unique identifier of the delegate user who modified the record.';
- Caption = 'Modified By (Delegate)';
- TableRelation = "CRM Systemuser".SystemUserId;
- DataClassification = SystemMetadata;
- }
- field(16; OwnerId; GUID)
- {
- ExternalName = 'ownerid';
- ExternalType = 'Owner';
- Description = 'Owner Id';
- Caption = 'Owner';
- DataClassification = SystemMetadata;
- }
- field(21; OwningBusinessUnit; GUID)
- {
- ExternalName = 'owningbusinessunit';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Unique identifier for the business unit that owns the record';
- Caption = 'Owning Business Unit';
- TableRelation = "CRM Businessunit".BusinessUnitId;
- DataClassification = SystemMetadata;
- }
- field(22; OwningUser; GUID)
- {
- ExternalName = 'owninguser';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Unique identifier for the user that owns the record.';
- Caption = 'Owning User';
- TableRelation = "CRM Systemuser".SystemUserId;
- DataClassification = SystemMetadata;
- }
- field(23; OwningTeam; GUID)
- {
- ExternalName = 'owningteam';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Unique identifier for the team that owns the record.';
- Caption = 'Owning Team';
- TableRelation = "CRM Team".TeamId;
- DataClassification = SystemMetadata;
- }
- field(25; StateCode; Option)
- {
- ExternalName = 'statecode';
- ExternalType = 'State';
- ExternalAccess = Modify;
- Description = 'Status of the Customer Asset Category';
- Caption = 'Status';
- InitValue = " ";
- OptionMembers = " ",Active,Inactive;
- OptionOrdinalValues = -1, 0, 1;
- DataClassification = SystemMetadata;
- }
- field(27; StatusCode; Option)
- {
- ExternalName = 'statuscode';
- ExternalType = 'Status';
- Description = 'Reason for the status of the Customer Asset Category';
- Caption = 'Status Reason';
- InitValue = " ";
- OptionMembers = " ",Active,Inactive;
- OptionOrdinalValues = -1, 1, 2;
- DataClassification = SystemMetadata;
- }
- field(29; VersionNumber; BigInteger)
- {
- ExternalName = 'versionnumber';
- ExternalType = 'BigInt';
- ExternalAccess = Read;
- Description = 'Version Number';
- Caption = 'Version Number';
- DataClassification = SystemMetadata;
- }
- field(30; ImportSequenceNumber; Integer)
- {
- ExternalName = 'importsequencenumber';
- ExternalType = 'Integer';
- ExternalAccess = Insert;
- Description = 'Sequence number of the import that created this record.';
- Caption = 'Import Sequence Number';
- DataClassification = SystemMetadata;
- }
- field(31; OverriddenCreatedOn; Date)
- {
- ExternalName = 'overriddencreatedon';
- ExternalType = 'DateTime';
- ExternalAccess = Insert;
- Description = 'Date and time that the record was migrated.';
- Caption = 'Record Created On';
- DataClassification = SystemMetadata;
- }
- field(32; TimeZoneRuleVersionNumber; Integer)
- {
- ExternalName = 'timezoneruleversionnumber';
- ExternalType = 'Integer';
- Description = 'For internal use only.';
- Caption = 'Time Zone Rule Version Number';
- DataClassification = SystemMetadata;
- }
- field(33; UTCConversionTimeZoneCode; Integer)
- {
- ExternalName = 'utcconversiontimezonecode';
- ExternalType = 'Integer';
- Description = 'Time zone code that was in use when the record was created.';
- Caption = 'UTC Conversion Time Zone Code';
- DataClassification = SystemMetadata;
- }
- field(34; Name; Text[100])
- {
- ExternalName = 'msdyn_name';
- ExternalType = 'String';
- Description = 'The name of the custom entity.';
- Caption = 'Name';
- DataClassification = SystemMetadata;
- }
- }
- keys
- {
- key(PK; CustomerAssetCategoryId)
- {
- Clustered = true;
- }
- key(Name; Name)
- {
- }
- }
- fieldgroups
- {
- fieldgroup(DropDown; Name)
- {
- }
- }
-}
\ No newline at end of file
diff --git a/Apps/W1/FieldServiceIntegration/app/src/Tables/FSProjectTask.Table.al b/Apps/W1/FieldServiceIntegration/app/src/Tables/FSProjectTask.Table.al
deleted file mode 100644
index 838b8f7f89..0000000000
--- a/Apps/W1/FieldServiceIntegration/app/src/Tables/FSProjectTask.Table.al
+++ /dev/null
@@ -1,259 +0,0 @@
-// ------------------------------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License. See License.txt in the project root for license information.
-// ------------------------------------------------------------------------------------------------
-namespace Microsoft.Integration.DynamicsFieldService;
-
-using Microsoft.Integration.D365Sales;
-
-table 6615 "FS Project Task"
-{
- ExternalName = 'bcbi_projecttask';
- TableType = CRM;
- Description = 'An entity for storing the Microsoft Dynamics 365 Business Central project task.';
- DataClassification = SystemMetadata;
-
- fields
- {
- field(1; ProjectTaskId; GUID)
- {
- ExternalName = 'bcbi_projecttaskid';
- ExternalType = 'Uniqueidentifier';
- ExternalAccess = Insert;
- Description = 'Unique identifier for entity instances.';
- Caption = 'Business Central Project Task';
- DataClassification = SystemMetadata;
- }
- field(2; CreatedOn; Datetime)
- {
- ExternalName = 'createdon';
- ExternalType = 'DateTime';
- ExternalAccess = Read;
- Description = 'Date and time when the record was created.';
- Caption = 'Created On';
- DataClassification = SystemMetadata;
- }
- field(3; CreatedBy; GUID)
- {
- ExternalName = 'createdby';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Unique identifier of the user who created the record.';
- Caption = 'Created By';
- TableRelation = "CRM SystemUser".SystemUserId;
- DataClassification = SystemMetadata;
- }
- field(4; ModifiedOn; Datetime)
- {
- ExternalName = 'modifiedon';
- ExternalType = 'DateTime';
- ExternalAccess = Read;
- Description = 'Date and time when the record was modified.';
- Caption = 'Modified On';
- DataClassification = SystemMetadata;
- }
- field(5; ModifiedBy; GUID)
- {
- ExternalName = 'modifiedby';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Unique identifier of the user who modified the record.';
- Caption = 'Modified By';
- TableRelation = "CRM SystemUser".SystemUserId;
- DataClassification = SystemMetadata;
- }
- field(6; CreatedOnBehalfBy; GUID)
- {
- ExternalName = 'createdonbehalfby';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Unique identifier of the delegate user who created the record.';
- Caption = 'Created By (Delegate)';
- TableRelation = "CRM SystemUser".SystemUserId;
- DataClassification = SystemMetadata;
- }
- field(7; ModifiedOnBehalfBy; GUID)
- {
- ExternalName = 'modifiedonbehalfby';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Unique identifier of the delegate user who modified the record.';
- Caption = 'Modified By (Delegate)';
- TableRelation = "CRM SystemUser".SystemUserId;
- DataClassification = SystemMetadata;
- }
- field(8; CreatedByName; Text[200])
- {
- FieldClass = FlowField;
- CalcFormula = lookup("CRM SystemUser".FullName where(SystemUserId = field(CreatedBy)));
- ExternalName = 'createdbyname';
- ExternalType = 'String';
- ExternalAccess = Read;
- }
- field(10; CreatedOnBehalfByName; Text[200])
- {
- FieldClass = FlowField;
- CalcFormula = lookup("CRM SystemUser".FullName where(SystemUserId = field(CreatedOnBehalfBy)));
- ExternalName = 'createdonbehalfbyname';
- ExternalType = 'String';
- ExternalAccess = Read;
- }
- field(12; ModifiedByName; Text[200])
- {
- FieldClass = FlowField;
- CalcFormula = lookup("CRM Systemuser".FullName where(SystemUserId = field(ModifiedBy)));
- ExternalName = 'modifiedbyname';
- ExternalType = 'String';
- ExternalAccess = Read;
- }
- field(14; ModifiedOnBehalfByName; Text[200])
- {
- FieldClass = FlowField;
- CalcFormula = lookup("CRM Systemuser".FullName where(SystemUserId = field(ModifiedOnBehalfBy)));
- ExternalName = 'modifiedonbehalfbyname';
- ExternalType = 'String';
- ExternalAccess = Read;
- }
- field(18; StateCode; Option)
- {
- ExternalName = 'statecode';
- ExternalType = 'State';
- ExternalAccess = Modify;
- Description = 'Status of the Business Central Project Task';
- Caption = 'Status';
- InitValue = " ";
- OptionMembers = " ",Active,Inactive;
- OptionOrdinalValues = -1, 0, 1;
- DataClassification = SystemMetadata;
- }
- field(20; StatusCode; Option)
- {
- ExternalName = 'statuscode';
- ExternalType = 'Status';
- Description = 'Reason for the status of the Business Central Project Task';
- Caption = 'Status Reason';
- InitValue = " ";
- OptionMembers = " ",Active,Inactive;
- OptionOrdinalValues = -1, 1, 2;
- DataClassification = SystemMetadata;
- }
- field(22; VersionNumber; BigInteger)
- {
- ExternalName = 'versionnumber';
- ExternalType = 'BigInt';
- ExternalAccess = Read;
- Description = 'Version Number';
- Caption = 'Version Number';
- DataClassification = SystemMetadata;
- }
- field(23; ImportSequenceNumber; Integer)
- {
- ExternalName = 'importsequencenumber';
- ExternalType = 'Integer';
- ExternalAccess = Insert;
- Description = 'Sequence number of the import that created this record.';
- Caption = 'Import Sequence Number';
- DataClassification = SystemMetadata;
- }
- field(24; OverriddenCreatedOn; Date)
- {
- ExternalName = 'overriddencreatedon';
- ExternalType = 'DateTime';
- ExternalAccess = Insert;
- Description = 'Date and time that the record was migrated.';
- Caption = 'Record Created On';
- DataClassification = SystemMetadata;
- }
- field(25; TimeZoneRuleVersionNumber; Integer)
- {
- ExternalName = 'timezoneruleversionnumber';
- ExternalType = 'Integer';
- Description = 'For internal use only.';
- Caption = 'Time Zone Rule Version Number';
- DataClassification = SystemMetadata;
- }
- field(26; UTCConversionTimeZoneCode; Integer)
- {
- ExternalName = 'utcconversiontimezonecode';
- ExternalType = 'Integer';
- Description = 'Time zone code that was in use when the record was created.';
- Caption = 'UTC Conversion Time Zone Code';
- DataClassification = SystemMetadata;
- }
- field(27; Description; Text[250])
- {
- ExternalName = 'bcbi_projecttaskdescription';
- ExternalType = 'String';
- Description = 'Business Central Project Task Description';
- Caption = 'Business Central Project Task Description';
- DataClassification = SystemMetadata;
- }
- field(28; ProjectNumber; Text[250])
- {
- ExternalName = 'bcbi_projectnumber';
- ExternalType = 'String';
- Description = 'Business Central Project Number';
- Caption = 'Business Central Project Number';
- DataClassification = SystemMetadata;
- }
- field(29; ProjectTaskNumber; Text[250])
- {
- ExternalName = 'bcbi_projecttasknumber';
- ExternalType = 'String';
- Description = 'Business Central Project Task Number';
- Caption = 'Business Central Project Task Number';
- DataClassification = SystemMetadata;
- }
- field(30; ProjectDescription; Text[250])
- {
- ExternalName = 'bcbi_projectdescription';
- ExternalType = 'String';
- Description = 'Business Central Project Description';
- Caption = 'Business Central Project Description';
- DataClassification = SystemMetadata;
- }
- field(31; ServiceAccountId; GUID)
- {
- ExternalName = 'bcbi_serviceaccountid';
- ExternalType = 'Lookup';
- Description = 'Account to be serviced';
- Caption = 'Service Account';
- TableRelation = "CRM Account".AccountId;
- DataClassification = SystemMetadata;
- }
- field(32; BillingAccountId; GUID)
- {
- ExternalName = 'bcbi_billingaccountid';
- ExternalType = 'Lookup';
- Description = 'Account to be billed';
- Caption = 'Billing Account';
- TableRelation = "CRM Account".AccountId;
- DataClassification = SystemMetadata;
- }
- field(33; CompanyId; GUID)
- {
- ExternalName = 'bcbi_companyid';
- ExternalType = 'Lookup';
- Description = 'The unique identifier of the company associated with the project task.';
- Caption = 'Company';
- TableRelation = "CDS Company".CompanyId;
- DataClassification = SystemMetadata;
- }
- }
- keys
- {
- key(PK; ProjectTaskId)
- {
- Clustered = true;
- }
- key(Name; Description)
- {
- }
- }
- fieldgroups
- {
- fieldgroup(DropDown; Description)
- {
- }
- }
-}
\ No newline at end of file
diff --git a/Apps/W1/FieldServiceIntegration/app/src/Tables/FSResourcePayType.Table.al b/Apps/W1/FieldServiceIntegration/app/src/Tables/FSResourcePayType.Table.al
deleted file mode 100644
index ac2279ceee..0000000000
--- a/Apps/W1/FieldServiceIntegration/app/src/Tables/FSResourcePayType.Table.al
+++ /dev/null
@@ -1,261 +0,0 @@
-// ------------------------------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License. See License.txt in the project root for license information.
-// ------------------------------------------------------------------------------------------------
-namespace Microsoft.Integration.DynamicsFieldService;
-
-using Microsoft.Integration.D365Sales;
-
-table 6616 "FS Resource Pay Type"
-{
- ExternalName = 'msdyn_resourcepaytype';
- TableType = CRM;
- Description = 'Pay Types of resources hourly rate to calculate the resource cost';
- DataClassification = SystemMetadata;
-
- fields
- {
- field(1; ResourcePayTypeId; GUID)
- {
- ExternalName = 'msdyn_resourcepaytypeid';
- ExternalType = 'Uniqueidentifier';
- ExternalAccess = Insert;
- Description = 'Shows the entity instances.';
- Caption = 'Resource Pay Type';
- DataClassification = SystemMetadata;
- }
- field(2; CreatedOn; Datetime)
- {
- ExternalName = 'createdon';
- ExternalType = 'DateTime';
- ExternalAccess = Read;
- Description = 'Shows the date and time when the record was created. The date and time are displayed in the time zone selected in Microsoft Dynamics 365 options.';
- Caption = 'Created On';
- DataClassification = SystemMetadata;
- }
- field(3; CreatedBy; GUID)
- {
- ExternalName = 'createdby';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Unique identifier of the user who created the record.';
- Caption = 'Created By';
- TableRelation = "CRM Systemuser".SystemUserId;
- }
- field(4; ModifiedOn; Datetime)
- {
- ExternalName = 'modifiedon';
- ExternalType = 'DateTime';
- ExternalAccess = Read;
- Description = 'Shows the date and time when the record was last updated. The date and time are displayed in the time zone selected in Microsoft Dynamics 365 options.';
- Caption = 'Modified On';
- DataClassification = SystemMetadata;
- }
- field(5; ModifiedBy; GUID)
- {
- ExternalName = 'modifiedby';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Unique identifier of the user who modified the record.';
- Caption = 'Modified By';
- TableRelation = "CRM Systemuser".SystemUserId;
- DataClassification = SystemMetadata;
- }
- field(6; CreatedOnBehalfBy; GUID)
- {
- ExternalName = 'createdonbehalfby';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Shows who created the record on behalf of another user.';
- Caption = 'Created By (Delegate)';
- TableRelation = "CRM Systemuser".SystemUserId;
- DataClassification = SystemMetadata;
- }
- field(7; ModifiedOnBehalfBy; GUID)
- {
- ExternalName = 'modifiedonbehalfby';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Shows who last updated the record on behalf of another user.';
- Caption = 'Modified By (Delegate)';
- TableRelation = "CRM Systemuser".SystemUserId;
- DataClassification = SystemMetadata;
- }
- field(8; CreatedByName; Text[200])
- {
- FieldClass = FlowField;
- CalcFormula = lookup("CRM Systemuser".FullName where(SystemUserId = field(CreatedBy)));
- ExternalName = 'createdbyname';
- ExternalType = 'String';
- ExternalAccess = Read;
- }
- field(10; CreatedOnBehalfByName; Text[200])
- {
- FieldClass = FlowField;
- CalcFormula = lookup("CRM Systemuser".FullName where(SystemUserId = field(CreatedOnBehalfBy)));
- ExternalName = 'createdonbehalfbyname';
- ExternalType = 'String';
- ExternalAccess = Read;
- }
- field(12; ModifiedByName; Text[200])
- {
- FieldClass = FlowField;
- CalcFormula = lookup("CRM Systemuser".FullName where(SystemUserId = field(ModifiedBy)));
- ExternalName = 'modifiedbyname';
- ExternalType = 'String';
- ExternalAccess = Read;
- }
- field(14; ModifiedOnBehalfByName; Text[200])
- {
- FieldClass = FlowField;
- CalcFormula = lookup("CRM Systemuser".FullName where(SystemUserId = field(ModifiedOnBehalfBy)));
- ExternalName = 'modifiedonbehalfbyname';
- ExternalType = 'String';
- ExternalAccess = Read;
- }
- field(16; OwnerId; GUID)
- {
- ExternalName = 'ownerid';
- ExternalType = 'Owner';
- Description = 'Owner Id';
- Caption = 'Owner';
- DataClassification = SystemMetadata;
- }
- field(21; OwningBusinessUnit; GUID)
- {
- ExternalName = 'owningbusinessunit';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Unique identifier for the business unit that owns the record';
- Caption = 'Owning Business Unit';
- TableRelation = "CRM BusinessUnit".BusinessUnitId;
- DataClassification = SystemMetadata;
- }
- field(22; OwningUser; GUID)
- {
- ExternalName = 'owninguser';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Unique identifier for the user that owns the record.';
- Caption = 'Owning User';
- TableRelation = "CRM Systemuser".SystemUserId;
- DataClassification = SystemMetadata;
- }
- field(23; OwningTeam; GUID)
- {
- ExternalName = 'owningteam';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Unique identifier for the team that owns the record.';
- Caption = 'Owning Team';
- TableRelation = "CRM Team".TeamId;
- DataClassification = SystemMetadata;
- }
- field(24; OwningBusinessUnitName; Text[200])
- {
- FieldClass = FlowField;
- CalcFormula = lookup("CRM BusinessUnit".Name where(BusinessUnitId = field(OwningBusinessUnit)));
- ExternalName = 'owningbusinessunitname';
- ExternalType = 'String';
- ExternalAccess = Read;
- }
- field(25; statecode; Option)
- {
- ExternalName = 'statecode';
- ExternalType = 'State';
- ExternalAccess = Modify;
- Description = 'Status of the Resource Pay Type';
- Caption = 'Status';
- InitValue = " ";
- OptionMembers = " ",Active,Inactive;
- OptionOrdinalValues = -1, 0, 1;
- DataClassification = SystemMetadata;
- }
- field(27; statuscode; Option)
- {
- ExternalName = 'statuscode';
- ExternalType = 'Status';
- Description = 'Reason for the status of the Resource Pay Type';
- Caption = 'Status Reason';
- InitValue = " ";
- OptionMembers = " ",Active,Inactive;
- OptionOrdinalValues = -1, 1, 2;
- DataClassification = SystemMetadata;
- }
- field(29; VersionNumber; BigInteger)
- {
- ExternalName = 'versionnumber';
- ExternalType = 'BigInt';
- ExternalAccess = Read;
- Description = 'Version Number';
- Caption = 'Version Number';
- DataClassification = SystemMetadata;
- }
- field(30; ImportSequenceNumber; Integer)
- {
- ExternalName = 'importsequencenumber';
- ExternalType = 'Integer';
- ExternalAccess = Insert;
- Description = 'Shows the sequence number of the import that created this record.';
- Caption = 'Import Sequence Number';
- DataClassification = SystemMetadata;
- }
- field(31; OverriddenCreatedOn; Date)
- {
- ExternalName = 'overriddencreatedon';
- ExternalType = 'DateTime';
- ExternalAccess = Insert;
- Description = 'Shows the date and time that the record was migrated.';
- Caption = 'Record Created On';
- DataClassification = SystemMetadata;
- }
- field(32; TimeZoneRuleVersionNumber; Integer)
- {
- ExternalName = 'timezoneruleversionnumber';
- ExternalType = 'Integer';
- Description = 'For internal use only.';
- Caption = 'Time Zone Rule Version Number';
- DataClassification = SystemMetadata;
- }
- field(33; UTCConversionTimeZoneCode; Integer)
- {
- ExternalName = 'utcconversiontimezonecode';
- ExternalType = 'Integer';
- Description = 'Shows the time zone code that was in use when the record was created.';
- Caption = 'UTC Conversion Time Zone Code';
- DataClassification = SystemMetadata;
- }
- field(34; Name; Text[200])
- {
- ExternalName = 'msdyn_name';
- ExternalType = 'String';
- Description = 'Enter the resource pay type name.';
- Caption = 'Name';
- DataClassification = SystemMetadata;
- }
- field(35; msdyn_HourlyMarkup; Decimal)
- {
- ExternalName = 'msdyn_hourlymarkup';
- ExternalType = 'Double';
- Description = 'Enter the markup percentage on the resource hourly cost. Use a value greater than 100% to mark it up and a value less than 100% to mark it down.';
- Caption = 'Hourly Markup %';
- DataClassification = SystemMetadata;
- }
- }
- keys
- {
- key(PK; ResourcePayTypeId)
- {
- Clustered = true;
- }
- key(Name; Name)
- {
- }
- }
- fieldgroups
- {
- fieldgroup(DropDown; Name)
- {
- }
- }
-}
\ No newline at end of file
diff --git a/Apps/W1/FieldServiceIntegration/app/src/Tables/FSWarehouse.Table.al b/Apps/W1/FieldServiceIntegration/app/src/Tables/FSWarehouse.Table.al
deleted file mode 100644
index a36c232f06..0000000000
--- a/Apps/W1/FieldServiceIntegration/app/src/Tables/FSWarehouse.Table.al
+++ /dev/null
@@ -1,222 +0,0 @@
-// ------------------------------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License. See License.txt in the project root for license information.
-// ------------------------------------------------------------------------------------------------
-namespace Microsoft.Integration.DynamicsFieldService;
-
-using Microsoft.Integration.D365Sales;
-
-table 6624 "FS Warehouse"
-{
- ExternalName = 'msdyn_warehouse';
- TableType = CRM;
- Description = 'An entity for storing the Microsoft Dynamics 365 Business Central location.';
- DataClassification = SystemMetadata;
-
- fields
- {
- field(1; WarehouseId; Guid)
- {
- Caption = 'Warehouse';
- Description = 'Unique identifier of the warehouse.';
- ExternalAccess = Insert;
- ExternalName = 'msdyn_warehouseid';
- ExternalType = 'Uniqueidentifier';
- }
- field(2; CreatedOn; Datetime)
- {
- ExternalName = 'createdon';
- ExternalType = 'DateTime';
- ExternalAccess = Read;
- Description = 'Date and time when the record was created.';
- Caption = 'Created On';
- DataClassification = SystemMetadata;
- }
- field(3; CreatedBy; GUID)
- {
- ExternalName = 'createdby';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Unique identifier of the user who created the record.';
- Caption = 'Created By';
- TableRelation = "CRM SystemUser".SystemUserId;
- DataClassification = SystemMetadata;
- }
- field(4; ModifiedOn; Datetime)
- {
- ExternalName = 'modifiedon';
- ExternalType = 'DateTime';
- ExternalAccess = Read;
- Description = 'Date and time when the record was modified.';
- Caption = 'Modified On';
- DataClassification = SystemMetadata;
- }
- field(5; ModifiedBy; GUID)
- {
- ExternalName = 'modifiedby';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Unique identifier of the user who modified the record.';
- Caption = 'Modified By';
- TableRelation = "CRM SystemUser".SystemUserId;
- DataClassification = SystemMetadata;
- }
- field(6; CreatedOnBehalfBy; GUID)
- {
- ExternalName = 'createdonbehalfby';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Unique identifier of the delegate user who created the record.';
- Caption = 'Created By (Delegate)';
- TableRelation = "CRM SystemUser".SystemUserId;
- DataClassification = SystemMetadata;
- }
- field(7; ModifiedOnBehalfBy; GUID)
- {
- ExternalName = 'modifiedonbehalfby';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Unique identifier of the delegate user who modified the record.';
- Caption = 'Modified By (Delegate)';
- TableRelation = "CRM SystemUser".SystemUserId;
- DataClassification = SystemMetadata;
- }
- field(8; CreatedByName; Text[200])
- {
- FieldClass = FlowField;
- CalcFormula = lookup("CRM SystemUser".FullName where(SystemUserId = field(CreatedBy)));
- ExternalName = 'createdbyname';
- ExternalType = 'String';
- ExternalAccess = Read;
- }
- field(10; CreatedOnBehalfByName; Text[200])
- {
- FieldClass = FlowField;
- CalcFormula = lookup("CRM SystemUser".FullName where(SystemUserId = field(CreatedOnBehalfBy)));
- ExternalName = 'createdonbehalfbyname';
- ExternalType = 'String';
- ExternalAccess = Read;
- }
- field(12; ModifiedByName; Text[200])
- {
- FieldClass = FlowField;
- CalcFormula = lookup("CRM Systemuser".FullName where(SystemUserId = field(ModifiedBy)));
- ExternalName = 'modifiedbyname';
- ExternalType = 'String';
- ExternalAccess = Read;
- }
- field(14; ModifiedOnBehalfByName; Text[200])
- {
- FieldClass = FlowField;
- CalcFormula = lookup("CRM Systemuser".FullName where(SystemUserId = field(ModifiedOnBehalfBy)));
- ExternalName = 'modifiedonbehalfbyname';
- ExternalType = 'String';
- ExternalAccess = Read;
- }
- field(18; StateCode; Option)
- {
- ExternalName = 'statecode';
- ExternalType = 'State';
- ExternalAccess = Modify;
- Description = 'Status of the Business Central Location';
- Caption = 'Status';
- InitValue = " ";
- OptionMembers = " ",Active,Inactive;
- OptionOrdinalValues = -1, 0, 1;
- DataClassification = SystemMetadata;
- }
- field(20; StatusCode; Option)
- {
- ExternalName = 'statuscode';
- ExternalType = 'Status';
- Description = 'Reason for the status of the Business Central Location';
- Caption = 'Status Reason';
- InitValue = " ";
- OptionMembers = " ",Active,Inactive;
- OptionOrdinalValues = -1, 1, 2;
- DataClassification = SystemMetadata;
- }
- field(22; VersionNumber; BigInteger)
- {
- ExternalName = 'versionnumber';
- ExternalType = 'BigInt';
- ExternalAccess = Read;
- Description = 'Version Number';
- Caption = 'Version Number';
- DataClassification = SystemMetadata;
- }
- field(23; ImportSequenceNumber; Integer)
- {
- ExternalName = 'importsequencenumber';
- ExternalType = 'Integer';
- ExternalAccess = Insert;
- Description = 'Sequence number of the import that created this record.';
- Caption = 'Import Sequence Number';
- DataClassification = SystemMetadata;
- }
- field(24; OverriddenCreatedOn; Date)
- {
- ExternalName = 'overriddencreatedon';
- ExternalType = 'DateTime';
- ExternalAccess = Insert;
- Description = 'Date and time that the record was migrated.';
- Caption = 'Record Created On';
- DataClassification = SystemMetadata;
- }
- field(25; TimeZoneRuleVersionNumber; Integer)
- {
- ExternalName = 'timezoneruleversionnumber';
- ExternalType = 'Integer';
- Description = 'For internal use only.';
- Caption = 'Time Zone Rule Version Number';
- DataClassification = SystemMetadata;
- }
- field(26; UTCConversionTimeZoneCode; Integer)
- {
- ExternalName = 'utcconversiontimezonecode';
- ExternalType = 'Integer';
- Description = 'Time zone code that was in use when the record was created.';
- Caption = 'UTC Conversion Time Zone Code';
- DataClassification = SystemMetadata;
- }
- field(27; Name; Text[20])
- {
- Caption = 'Name';
- Description = 'Type location code.';
- ExternalName = 'msdyn_name';
- ExternalType = 'String';
- }
- field(28; Description; Text[100])
- {
- Caption = 'Description';
- Description = 'Type location description.';
- ExternalName = 'msdyn_description';
- ExternalType = 'String';
- }
- field(33; CompanyId; GUID)
- {
- ExternalName = 'bcbi_companyid';
- ExternalType = 'Lookup';
- Description = 'The unique identifier of the company associated with the location.';
- Caption = 'Company';
- TableRelation = "CDS Company".CompanyId;
- DataClassification = SystemMetadata;
- }
- }
- keys
- {
- key(PK; WarehouseId)
- {
- Clustered = true;
- }
- key(Name; Description)
- {
- }
- }
- fieldgroups
- {
- fieldgroup(DropDown; Description)
- {
- }
- }
-}
\ No newline at end of file
diff --git a/Apps/W1/FieldServiceIntegration/app/src/Tables/FSWorkOrder.Table.al b/Apps/W1/FieldServiceIntegration/app/src/Tables/FSWorkOrder.Table.al
deleted file mode 100644
index fa94ea702b..0000000000
--- a/Apps/W1/FieldServiceIntegration/app/src/Tables/FSWorkOrder.Table.al
+++ /dev/null
@@ -1,906 +0,0 @@
-// ------------------------------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License. See License.txt in the project root for license information.
-// ------------------------------------------------------------------------------------------------
-namespace Microsoft.Integration.DynamicsFieldService;
-
-using Microsoft.Integration.D365Sales;
-
-table 6617 "FS Work Order"
-{
- ExternalName = 'msdyn_workorder';
- TableType = CRM;
- Description = 'Work orders store all information about the job performed for an account. Stores incident details, resource, expenses, tasks, communications, billing and more';
- DataClassification = SystemMetadata;
-
- fields
- {
- field(1; WorkOrderId; GUID)
- {
- ExternalName = 'msdyn_workorderId';
- ExternalType = 'Uniqueidentifier';
- ExternalAccess = Insert;
- Description = 'Shows the entity instances.';
- Caption = 'WO Number';
- DataClassification = SystemMetadata;
- }
- field(2; CreatedOn; Datetime)
- {
- ExternalName = 'createdon';
- ExternalType = 'DateTime';
- ExternalAccess = Read;
- Description = 'Shows the date and time when the record was created. The date and time are displayed in the time zone selected in Microsoft Dynamics 365 options.';
- Caption = 'Created On';
- DataClassification = SystemMetadata;
- }
- field(3; CreatedBy; GUID)
- {
- ExternalName = 'createdby';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Unique identifier of the user who created the record.';
- Caption = 'Created By';
- TableRelation = "CRM Systemuser".SystemUserId;
- DataClassification = SystemMetadata;
- }
- field(4; ModifiedOn; Datetime)
- {
- ExternalName = 'modifiedon';
- ExternalType = 'DateTime';
- ExternalAccess = Read;
- Description = 'Shows the date and time when the record was last updated. The date and time are displayed in the time zone selected in Microsoft Dynamics 365 options.';
- Caption = 'Modified On';
- DataClassification = SystemMetadata;
- }
- field(5; ModifiedBy; GUID)
- {
- ExternalName = 'modifiedby';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Unique identifier of the user who modified the record.';
- Caption = 'Modified By';
- TableRelation = "CRM Systemuser".SystemUserId;
- DataClassification = SystemMetadata;
- }
- field(6; CreatedOnBehalfBy; GUID)
- {
- ExternalName = 'createdonbehalfby';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Shows who created the record on behalf of another user.';
- Caption = 'Created By (Delegate)';
- TableRelation = "CRM Systemuser".SystemUserId;
- DataClassification = SystemMetadata;
- }
- field(7; ModifiedOnBehalfBy; GUID)
- {
- ExternalName = 'modifiedonbehalfby';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Shows who last updated the record on behalf of another user.';
- Caption = 'Modified By (Delegate)';
- TableRelation = "CRM Systemuser".SystemUserId;
- DataClassification = SystemMetadata;
- }
- field(16; OwnerId; GUID)
- {
- ExternalName = 'ownerid';
- ExternalType = 'Owner';
- Description = 'Owner Id';
- Caption = 'Owner';
- DataClassification = SystemMetadata;
- }
- field(21; OwningBusinessUnit; GUID)
- {
- ExternalName = 'owningbusinessunit';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Unique identifier for the business unit that owns the record';
- Caption = 'Owning Business Unit';
- TableRelation = "CRM Businessunit".BusinessUnitId;
- DataClassification = SystemMetadata;
- }
- field(22; OwningUser; GUID)
- {
- ExternalName = 'owninguser';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Unique identifier for the user that owns the record.';
- Caption = 'Owning User';
- TableRelation = "CRM Systemuser".SystemUserId;
- DataClassification = SystemMetadata;
- }
- field(23; OwningTeam; GUID)
- {
- ExternalName = 'owningteam';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Unique identifier for the team that owns the record.';
- Caption = 'Owning Team';
- TableRelation = "CRM Team".TeamId;
- DataClassification = SystemMetadata;
- }
- field(25; StateCode; Option)
- {
- ExternalName = 'statecode';
- ExternalType = 'State';
- ExternalAccess = Modify;
- Description = 'Status of the Work Order';
- Caption = 'Status';
- InitValue = " ";
- OptionMembers = " ",Active,Inactive;
- OptionOrdinalValues = -1, 0, 1;
- DataClassification = SystemMetadata;
- }
- field(27; StatusCode; Option)
- {
- ExternalName = 'statuscode';
- ExternalType = 'Status';
- Description = 'Reason for the status of the Work Order';
- Caption = 'Status Reason';
- InitValue = " ";
- OptionMembers = " ",Active,Inactive;
- OptionOrdinalValues = -1, 1, 2;
- DataClassification = SystemMetadata;
- }
- field(29; VersionNumber; BigInteger)
- {
- ExternalName = 'versionnumber';
- ExternalType = 'BigInt';
- ExternalAccess = Read;
- Description = 'Version Number';
- Caption = 'Version Number';
- DataClassification = SystemMetadata;
- }
- field(30; ImportSequenceNumber; Integer)
- {
- ExternalName = 'importsequencenumber';
- ExternalType = 'Integer';
- ExternalAccess = Insert;
- Description = 'Shows the sequence number of the import that created this record.';
- Caption = 'Import Sequence Number';
- DataClassification = SystemMetadata;
- }
- field(31; OverriddenCreatedOn; Date)
- {
- ExternalName = 'overriddencreatedon';
- ExternalType = 'DateTime';
- ExternalAccess = Insert;
- Description = 'Shows the date and time that the record was migrated.';
- Caption = 'Record Created On';
- DataClassification = SystemMetadata;
- }
- field(32; TimeZoneRuleVersionNumber; Integer)
- {
- ExternalName = 'timezoneruleversionnumber';
- ExternalType = 'Integer';
- Description = 'For internal use only.';
- Caption = 'Time Zone Rule Version Number';
- DataClassification = SystemMetadata;
- }
- field(33; UTCConversionTimeZoneCode; Integer)
- {
- ExternalName = 'utcconversiontimezonecode';
- ExternalType = 'Integer';
- Description = 'Shows the time zone code that was in use when the record was created.';
- Caption = 'UTC Conversion Time Zone Code';
- DataClassification = SystemMetadata;
- }
- field(34; Name; Text[100])
- {
- ExternalName = 'msdyn_name';
- ExternalType = 'String';
- Description = 'Enter the name of the custom entity.';
- Caption = 'Work Order Number';
- DataClassification = SystemMetadata;
- }
- field(35; ProcessId; GUID)
- {
- ExternalName = 'processid';
- ExternalType = 'Uniqueidentifier';
- Description = 'Shows the ID of the process associated with the entity.';
- Caption = 'Process Id';
- DataClassification = SystemMetadata;
- }
- field(36; StageId; GUID)
- {
- ExternalName = 'stageid';
- ExternalType = 'Uniqueidentifier';
- Description = 'Shows the ID of the stage where the entity is located.';
- Caption = 'Stage Id';
- DataClassification = SystemMetadata;
- }
- field(37; TraversedPath; Text[1250])
- {
- ExternalName = 'traversedpath';
- ExternalType = 'String';
- Description = 'Shows a comma-separated list of string values representing the unique identifiers of stages in a business process flow instance in the order that they occur.';
- Caption = 'Traversed Path';
- DataClassification = SystemMetadata;
- }
- field(38; Address1; Text[250])
- {
- ExternalName = 'msdyn_address1';
- ExternalType = 'String';
- Caption = 'Street 1';
- DataClassification = SystemMetadata;
- }
- field(39; Address2; Text[250])
- {
- ExternalName = 'msdyn_address2';
- ExternalType = 'String';
- Caption = 'Street 2';
- DataClassification = SystemMetadata;
- }
- field(40; Address3; Text[250])
- {
- ExternalName = 'msdyn_address3';
- ExternalType = 'String';
- Caption = 'Street 3';
- DataClassification = SystemMetadata;
- }
- field(41; AddressName; Text[250])
- {
- ExternalName = 'msdyn_addressname';
- ExternalType = 'String';
- Caption = 'Address Name';
- DataClassification = SystemMetadata;
- }
- field(43; AutoNumbering; Text[100])
- {
- ExternalName = 'msdyn_autonumbering';
- ExternalType = 'String';
- Description = 'Internal field used to generate the next name upon entity creation. It is optionally copied to the msdyn_name field.';
- Caption = 'Auto-Numbering';
- DataClassification = SystemMetadata;
- }
- field(44; BillingAccount; GUID)
- {
- ExternalName = 'msdyn_billingaccount';
- ExternalType = 'Lookup';
- Description = 'Account to be billed. If a billing account has been set on service account it will be populated by default. Otherwise, the billing account will be the same as the service account.';
- Caption = 'Billing Account';
- TableRelation = "CRM Account".AccountId;
- DataClassification = SystemMetadata;
- }
- field(45; BookingSummary; BLOB)
- {
- ExternalName = 'msdyn_bookingsummary';
- ExternalType = 'Memo';
- Description = 'For internal use only.';
- Caption = 'Booking Summary';
- Subtype = Memo;
- DataClassification = SystemMetadata;
- }
- field(46; ChildIndex; Integer)
- {
- ExternalName = 'msdyn_childindex';
- ExternalType = 'Integer';
- Caption = 'Child Index';
- DataClassification = SystemMetadata;
- }
- field(47; City; Text[80])
- {
- ExternalName = 'msdyn_city';
- ExternalType = 'String';
- Caption = 'City';
- DataClassification = SystemMetadata;
- }
- field(48; ClosedBy; GUID)
- {
- ExternalName = 'msdyn_closedby';
- ExternalType = 'Lookup';
- Description = 'The user that last closed this work order';
- Caption = 'Closed By';
- TableRelation = "CRM Systemuser".SystemUserId;
- DataClassification = SystemMetadata;
- }
- field(49; Country; Text[80])
- {
- ExternalName = 'msdyn_country';
- ExternalType = 'String';
- Caption = 'Country/Region';
- DataClassification = SystemMetadata;
- }
- field(50; CustomerAsset; GUID)
- {
- ExternalName = 'msdyn_customerasset';
- ExternalType = 'Lookup';
- Description = 'Customer Asset related to this incident reported';
- Caption = 'Primary Incident Customer Asset';
- TableRelation = "FS Customer Asset".CustomerAssetId;
- DataClassification = SystemMetadata;
- }
- field(51; DateWindowEnd; Date)
- {
- ExternalName = 'msdyn_datewindowend';
- ExternalType = 'DateTime';
- Caption = 'Date Window End';
- DataClassification = SystemMetadata;
- }
- field(52; DateWindowStart; Date)
- {
- ExternalName = 'msdyn_datewindowstart';
- ExternalType = 'DateTime';
- Caption = 'Date Window Start';
- DataClassification = SystemMetadata;
- }
- field(53; EstimateSubtotalAmount; Decimal)
- {
- ExternalName = 'msdyn_estimatesubtotalamount';
- ExternalType = 'Money';
- Description = 'Enter the summary of total estimated billing amount for this work order';
- Caption = 'Estimate Subtotal Amount';
- DataClassification = SystemMetadata;
- }
- field(54; TransactionCurrencyId; GUID)
- {
- ExternalName = 'transactioncurrencyid';
- ExternalType = 'Lookup';
- Description = 'Unique identifier of the currency associated with the entity.';
- Caption = 'Currency';
- TableRelation = "CRM Transactioncurrency".TransactionCurrencyId;
- DataClassification = SystemMetadata;
- }
- field(56; ExchangeRate; Decimal)
- {
- ExternalName = 'exchangerate';
- ExternalType = 'Decimal';
- ExternalAccess = Read;
- Description = 'Shows the exchange rate for the currency associated with the entity with respect to the base currency.';
- Caption = 'Exchange Rate';
- DataClassification = SystemMetadata;
- }
- field(57; EstimateSubtotalAmount_Base; Decimal)
- {
- ExternalName = 'msdyn_estimatesubtotalamount_base';
- ExternalType = 'Money';
- ExternalAccess = Read;
- Description = 'Shows the value of the estimate subtotal amount in the base currency.';
- Caption = 'Estimate Subtotal Amount (Base)';
- DataClassification = SystemMetadata;
- }
- field(58; FollowUpNote; BLOB)
- {
- ExternalName = 'msdyn_followupnote';
- ExternalType = 'Memo';
- Description = 'Indicate the details of the follow up work';
- Caption = 'Follow Up Note (Deprecated)';
- Subtype = Memo;
- DataClassification = SystemMetadata;
- }
- field(59; FollowUpRequired; Boolean)
- {
- ExternalName = 'msdyn_followuprequired';
- ExternalType = 'Boolean';
- Description = 'Allows indication if follow up work is required for a work order.';
- Caption = 'Follow Up Required (Deprecated)';
- DataClassification = SystemMetadata;
- }
- field(61; Instructions; BLOB)
- {
- ExternalName = 'msdyn_instructions';
- ExternalType = 'Memo';
- Description = 'Shows instructions for booked resources. By default, this information is taken from the work order instructions field on the service account.';
- Caption = 'Instructions';
- Subtype = Memo;
- DataClassification = SystemMetadata;
- }
- field(62; InternalFlags; BLOB)
- {
- ExternalName = 'msdyn_internalflags';
- ExternalType = 'Memo';
- Description = 'For internal use only.';
- Caption = 'Internal Flags';
- Subtype = Memo;
- DataClassification = SystemMetadata;
- }
- field(63; IsFollowUp; Boolean)
- {
- ExternalName = 'msdyn_isfollowup';
- ExternalType = 'Boolean';
- Caption = 'Is FollowUp (Deprecated)';
- DataClassification = SystemMetadata;
- }
- field(65; IsMobile; Boolean)
- {
- ExternalName = 'msdyn_ismobile';
- ExternalType = 'Boolean';
- Caption = 'Is Mobile';
- DataClassification = SystemMetadata;
- }
- field(67; Latitude; Decimal)
- {
- ExternalName = 'msdyn_latitude';
- ExternalType = 'Double';
- Description = '';
- Caption = 'Latitude';
- DataClassification = SystemMetadata;
- }
- field(68; Longitude; Decimal)
- {
- ExternalName = 'msdyn_longitude';
- ExternalType = 'Double';
- Description = '';
- Caption = 'Longitude';
- DataClassification = SystemMetadata;
- }
- field(69; MapControl; Text[100])
- {
- ExternalName = 'msdyn_mapcontrol';
- ExternalType = 'String';
- ExternalAccess = Read;
- Description = '';
- Caption = 'This field should only be used to load the custom map control';
- DataClassification = SystemMetadata;
- }
- field(70; OpportunityId; GUID)
- {
- ExternalName = 'msdyn_opportunityid';
- ExternalType = 'Lookup';
- Description = 'Unique identifier for Opportunity associated with Work Order.';
- Caption = 'Opportunity';
- TableRelation = "CRM Opportunity".OpportunityId;
- DataClassification = SystemMetadata;
- }
- field(71; ParentWorkOrder; GUID)
- {
- ExternalName = 'msdyn_parentworkorder';
- ExternalType = 'Lookup';
- Description = 'Unique identifier for Work Order associated with Work Order.';
- Caption = 'Parent Work Order';
- TableRelation = "FS Work Order".WorkOrderId;
- DataClassification = SystemMetadata;
- }
- field(72; PostalCode; Text[20])
- {
- ExternalName = 'msdyn_postalcode';
- ExternalType = 'String';
- Caption = 'Postal Code';
- DataClassification = SystemMetadata;
- }
- field(73; PreferredResource; GUID)
- {
- ExternalName = 'msdyn_preferredresource';
- ExternalType = 'Lookup';
- Description = 'The customer Preferred Resource to work on this job. Should be taken into consideration while scheduling resources';
- Caption = 'Preferred Resource (Deprecated)';
- TableRelation = "FS Bookable Resource".BookableResourceId;
- DataClassification = SystemMetadata;
- }
- field(74; PriceList; GUID)
- {
- ExternalName = 'msdyn_pricelist';
- ExternalType = 'Lookup';
- Description = 'Price List that controls pricing for products / services added to this work order. By default the system will use the Price List specified on the account';
- Caption = 'Price List';
- TableRelation = "CRM Pricelevel".PriceLevelId;
- DataClassification = SystemMetadata;
- }
- field(75; PrimaryIncidentDescription; BLOB)
- {
- ExternalName = 'msdyn_primaryincidentdescription';
- ExternalType = 'Memo';
- Description = 'Incident description';
- Caption = 'Primary Incident Description';
- Subtype = Memo;
- DataClassification = SystemMetadata;
- }
- field(76; PrimaryIncidentEstimatedDuration; Integer)
- {
- ExternalName = 'msdyn_primaryincidentestimatedduration';
- ExternalType = 'Integer';
- Description = 'Shows the time estimated to resolve this incident.';
- Caption = 'Primary Incident Estimated Duration';
- DataClassification = SystemMetadata;
- }
- field(79; ReportedByContact; GUID)
- {
- ExternalName = 'msdyn_reportedbycontact';
- ExternalType = 'Lookup';
- Description = 'The contact that reported this Work Order';
- Caption = 'Reported By Contact';
- TableRelation = "CRM Contact".ContactId;
- DataClassification = SystemMetadata;
- }
- field(80; ServiceAccount; GUID)
- {
- ExternalName = 'msdyn_serviceaccount';
- ExternalType = 'Lookup';
- Description = 'Account to be serviced';
- Caption = 'Service Account';
- TableRelation = "CRM Account".AccountId;
- DataClassification = SystemMetadata;
- }
- field(81; ServiceRequest; GUID)
- {
- ExternalName = 'msdyn_servicerequest';
- ExternalType = 'Lookup';
- Description = 'Case of which this work order originates from';
- Caption = 'Case';
- TableRelation = "CRM Incident".IncidentId;
- DataClassification = SystemMetadata;
- }
- field(83; StateOrProvince; Text[50])
- {
- ExternalName = 'msdyn_stateorprovince';
- ExternalType = 'String';
- Caption = 'State Or Province';
- DataClassification = SystemMetadata;
- }
- field(84; SubStatus; GUID)
- {
- ExternalName = 'msdyn_substatus';
- ExternalType = 'Lookup';
- Description = 'Work Order subsstatus';
- Caption = 'Substatus';
- TableRelation = "FS Work Order Substatus".WorkOrderSubstatusId;
- DataClassification = SystemMetadata;
- }
- field(85; SubtotalAmount; Decimal)
- {
- ExternalName = 'msdyn_subtotalamount';
- ExternalType = 'Money';
- Description = 'Enter the summary of subtotal billing amount excluding tax for this work order.';
- Caption = 'Subtotal Amount';
- DataClassification = SystemMetadata;
- }
- field(86; SubTotalAmount_Base; Decimal)
- {
- ExternalName = 'msdyn_subtotalamount_base';
- ExternalType = 'Money';
- ExternalAccess = Read;
- Description = 'Shows the value of the subtotal amount in the base currency.';
- Caption = 'Subtotal Amount (Base)';
- DataClassification = SystemMetadata;
- }
- field(87; SupportContact; GUID)
- {
- ExternalName = 'msdyn_supportcontact';
- ExternalType = 'Lookup';
- Description = 'A support contact can be specified so that the individual working on the work order has someone to contact for assistance.';
- Caption = 'Support Contact';
- TableRelation = "FS Bookable Resource".BookableResourceId;
- DataClassification = SystemMetadata;
- }
- field(88; SystemStatus; Option)
- {
- ExternalName = 'msdyn_systemstatus';
- ExternalType = 'Picklist';
- Description = 'Tracks the current system status.';
- Caption = 'System Status';
- InitValue = " ";
- OptionMembers = " ",Unscheduled,Scheduled,InProgress,Completed,Posted,Canceled;
- OptionOrdinalValues = -1, 690970000, 690970001, 690970002, 690970003, 690970004, 690970005;
- DataClassification = SystemMetadata;
- }
- field(90; Taxable; Boolean)
- {
- ExternalName = 'msdyn_taxable';
- ExternalType = 'Boolean';
- Description = 'Shows whether sales tax is to be charged for this work order.';
- Caption = 'Taxable';
- DataClassification = SystemMetadata;
- }
- field(93; TimeClosed; Datetime)
- {
- ExternalName = 'msdyn_timeclosed';
- ExternalType = 'DateTime';
- Description = 'Enter the time this work order was last closed.';
- Caption = 'Closed On';
- DataClassification = SystemMetadata;
- }
- field(94; TimeFromPromised; Datetime)
- {
- ExternalName = 'msdyn_timefrompromised';
- ExternalType = 'DateTime';
- Description = 'Enter the starting range of the time promised to the account that incidents will be resolved.';
- Caption = 'Time From Promised';
- DataClassification = SystemMetadata;
- }
- field(97; TimeToPromised; Datetime)
- {
- ExternalName = 'msdyn_timetopromised';
- ExternalType = 'DateTime';
- Description = 'Enter the ending range of the time promised to the account that incidents will be resolved.';
- Caption = 'Time To Promised';
- DataClassification = SystemMetadata;
- }
- field(98; TimeWindowEnd; Datetime)
- {
- ExternalName = 'msdyn_timewindowend';
- ExternalType = 'DateTime';
- Caption = 'Time Window End';
- DataClassification = SystemMetadata;
- }
- field(99; TimeWindowStart; Datetime)
- {
- ExternalName = 'msdyn_timewindowstart';
- ExternalType = 'DateTime';
- Caption = 'Time Window Start';
- DataClassification = SystemMetadata;
- }
- field(100; TotalAmount; Decimal)
- {
- ExternalName = 'msdyn_totalamount';
- ExternalType = 'Money';
- Description = 'Enter the summary of total billing amount for this work order.';
- Caption = 'Total Amount';
- DataClassification = SystemMetadata;
- }
- field(101; TotalAmount_Base; Decimal)
- {
- ExternalName = 'msdyn_totalamount_base';
- ExternalType = 'Money';
- ExternalAccess = Read;
- Description = 'Shows the value of the total amount in the base currency.';
- Caption = 'Total Amount (Base)';
- DataClassification = SystemMetadata;
- }
- field(102; TotalSalesTax; Decimal)
- {
- ExternalName = 'msdyn_totalsalestax';
- ExternalType = 'Money';
- Description = 'Enter the summary of total sales tax charged for this work order.';
- Caption = 'Total Sales Tax';
- DataClassification = SystemMetadata;
- }
- field(103; TotalSalesTax_Base; Decimal)
- {
- ExternalName = 'msdyn_totalsalestax_base';
- ExternalType = 'Money';
- ExternalAccess = Read;
- Description = 'Shows the value of the total sales tax in the base currency.';
- Caption = 'Total Sales Tax (Base)';
- DataClassification = SystemMetadata;
- }
- field(105; WorkLocation; Option)
- {
- ExternalName = 'msdyn_worklocation';
- ExternalType = 'Picklist';
- Caption = 'Work Location';
- InitValue = Onsite;
- OptionMembers = Onsite,Facility,LocationAgnostic;
- OptionOrdinalValues = 690970000, 690970001, 690970002;
- DataClassification = SystemMetadata;
- }
- field(109; WorkOrderSummary; BLOB)
- {
- ExternalName = 'msdyn_workordersummary';
- ExternalType = 'Memo';
- Description = 'Type a summary description of the job.';
- Caption = 'Work Order Summary';
- Subtype = Memo;
- DataClassification = SystemMetadata;
- }
- field(110; WorkOrderType; GUID)
- {
- ExternalName = 'msdyn_workordertype';
- ExternalType = 'Lookup';
- Description = 'Work Order Type';
- Caption = 'Work Order Type';
- TableRelation = "FS Work Order Type".WorkOrderTypeId;
- DataClassification = SystemMetadata;
- }
- field(115; PreferredResourceName; Text[100])
- {
- FieldClass = FlowField;
- CalcFormula = lookup("FS Bookable Resource".Name where(BookableResourceId = field(PreferredResource)));
- ExternalName = 'msdyn_preferredresourcename';
- ExternalType = 'String';
- ExternalAccess = Read;
- }
- field(116; SupportContactName; Text[100])
- {
- FieldClass = FlowField;
- CalcFormula = lookup("FS Bookable Resource".Name where(BookableResourceId = field(SupportContact)));
- ExternalName = 'msdyn_supportcontactname';
- ExternalType = 'String';
- ExternalAccess = Read;
- }
- field(121; CustomerAssetName; Text[100])
- {
- FieldClass = FlowField;
- CalcFormula = lookup("FS Customer Asset".Name where(CustomerAssetId = field(CustomerAsset)));
- ExternalName = 'msdyn_customerassetname';
- ExternalType = 'String';
- ExternalAccess = Read;
- }
- field(128; ParentWorkOrderName; Text[100])
- {
- FieldClass = FlowField;
- CalcFormula = lookup("FS Work Order".Name where(WorkOrderId = field(ParentWorkOrder)));
- ExternalName = 'msdyn_parentworkordername';
- ExternalType = 'String';
- ExternalAccess = Read;
- }
- field(129; SubStatusName; Text[100])
- {
- FieldClass = FlowField;
- CalcFormula = lookup("FS Work Order Substatus".Name where(WorkOrderSubstatusId = field(SubStatus)));
- ExternalName = 'msdyn_substatusname';
- ExternalType = 'String';
- ExternalAccess = Read;
- }
- field(130; WorkOrderTypeName; Text[100])
- {
- FieldClass = FlowField;
- CalcFormula = lookup("FS Work Order Type".Name where(WorkOrderTypeId = field(WorkOrderType)));
- ExternalName = 'msdyn_workordertypename';
- ExternalType = 'String';
- ExternalAccess = Read;
- }
- field(138; completedon; Datetime)
- {
- ExternalName = 'msdyn_completedon';
- ExternalType = 'DateTime';
- Description = 'When Bookings are used on a Work Order, this field is auto-populated based on the latest End Time from the related Bookings. Otherwise, this field is populated based on the change of System Status.';
- Caption = 'Completed On';
- DataClassification = SystemMetadata;
- }
- field(139; CostNTEPercent; Integer)
- {
- ExternalName = 'msdyn_costntepercent';
- ExternalType = 'Integer';
- Description = 'Indicates the percentage proximity or overage of the work order cost based on applied Cost not-to-exceed (rounded up to the nearest whole number).';
- Caption = 'Cost not-to-exceed';
- DataClassification = SystemMetadata;
- }
- field(140; firstarrivedon; Datetime)
- {
- ExternalName = 'msdyn_firstarrivedon';
- ExternalType = 'DateTime';
- Description = 'When Bookings are used on a Work Order, this field is auto-populated based on the earliest Actual Arrival Time from the related Bookings.';
- Caption = 'First Arrived On';
- DataClassification = SystemMetadata;
- }
- field(142; NotToExceedCostAmount; Decimal)
- {
- ExternalName = 'msdyn_nottoexceedcostamount';
- ExternalType = 'Money';
- Description = 'The value of not-to-exceed cost for the work order in base currency.';
- Caption = 'Cost not-to-exceed';
- DataClassification = SystemMetadata;
- }
- field(143; NotToExceedCostAmount_Base; Decimal)
- {
- ExternalName = 'msdyn_nottoexceedcostamount_base';
- ExternalType = 'Money';
- ExternalAccess = Read;
- Description = 'Value of the Cost not-to-exceed in base currency.';
- Caption = 'Cost not-to-exceed (Base)';
- DataClassification = SystemMetadata;
- }
- field(144; NotToExceedPriceAmount; Decimal)
- {
- ExternalName = 'msdyn_nottoexceedpriceamount';
- ExternalType = 'Money';
- Description = 'The value of not-to-exceed price for the work order in base currency.';
- Caption = 'Price not-to-exceed';
- DataClassification = SystemMetadata;
- }
- field(145; NotToExceedPriceAmount_Base; Decimal)
- {
- ExternalName = 'msdyn_nottoexceedpriceamount_base';
- ExternalType = 'Money';
- ExternalAccess = Read;
- Description = 'Value of the Price not-to-exceed in base currency.';
- Caption = 'Price not-to-exceed (Base)';
- DataClassification = SystemMetadata;
- }
- field(146; PhoneNumber; Text[250])
- {
- ExternalName = 'msdyn_phoneNumber';
- ExternalType = 'String';
- Caption = 'Customer Phone Number';
- DataClassification = SystemMetadata;
- }
- field(147; PriceNTEPercent; Integer)
- {
- ExternalName = 'msdyn_pricentepercent';
- ExternalType = 'Integer';
- Description = 'Indicates the percentage proximity or overage of the work order price based on applied Price not-to-exceed (rounded up to the nearest whole number).';
- Caption = 'Price not-to-exceed';
- DataClassification = SystemMetadata;
- }
- field(149; ProductsServicesCost; Decimal)
- {
- ExternalName = 'msdyn_productsservicescost';
- ExternalType = 'Money';
- Description = 'The total actual cost of the products and services';
- Caption = 'Total Cost';
- DataClassification = SystemMetadata;
- }
- field(150; ProductsServicesCost_Base; Decimal)
- {
- ExternalName = 'msdyn_productsservicescost_base';
- ExternalType = 'Money';
- Description = 'Value of the Total Cost in base currency.';
- Caption = 'Total Cost (Base)';
- DataClassification = SystemMetadata;
- }
- field(151; ProductsServicesEstimatedCost; Decimal)
- {
- ExternalName = 'msdyn_productsservicesestimatedcost';
- ExternalType = 'Money';
- Description = 'The total estimated cost of the products and services';
- Caption = 'Total Estimated Cost';
- DataClassification = SystemMetadata;
- }
- field(152; ProductsServicesEstimatedCost_Base; Decimal)
- {
- ExternalName = 'msdyn_productsservicesestimatedcost_base';
- ExternalType = 'Money';
- Description = 'Value of the Total Estimated Cost in base currency.';
- Caption = 'Total Estimated Cost (Base)';
- DataClassification = SystemMetadata;
- }
- field(153; TotalEstimatedAfterTaxPrice; Decimal)
- {
- ExternalName = 'msdyn_totalestimatedaftertaxprice';
- ExternalType = 'Money';
- Description = 'The estimated price after adding tax to the subtotal';
- Caption = 'Total Estimated After Tax Price';
- DataClassification = SystemMetadata;
- }
- field(154; TotalEstimatedAfterTaxPrice_Base; Decimal)
- {
- ExternalName = 'msdyn_totalestimatedaftertaxprice_base';
- ExternalType = 'Money';
- Description = 'Value of the Total Estimated After Tax Price in base currency.';
- Caption = 'Total Estimated After Tax Price (Base)';
- DataClassification = SystemMetadata;
- }
- field(155; TotalEstimatedDuration; Integer)
- {
- ExternalName = 'msdyn_totalestimatedduration';
- ExternalType = 'Integer';
- Description = 'Calculated from the estimated duration of Work Order Incidents and Work Order Service Tasks not related to a Work Order Incident on the Work Order. Intended to be read-only.';
- Caption = 'Total Estimated Duration';
- DataClassification = SystemMetadata;
- }
- field(162; DisplayAddress; Text[2048])
- {
- ExternalName = 'msdyn_displayaddress';
- ExternalType = 'String';
- ExternalAccess = Read;
- Description = 'Combined address field suitable for display';
- Caption = 'Display Address';
- DataClassification = SystemMetadata;
- }
- field(163; ProjectTask; GUID)
- {
- ExternalName = 'bcbi_businesscentralprojecttask';
- ExternalType = 'Lookup';
- Description = 'Business Central Project Task';
- Caption = 'Business Central Project Task';
- TableRelation = "FS Project Task".ProjectTaskId;
- DataClassification = SystemMetadata;
- }
- field(164; CompanyId; GUID)
- {
- ExternalName = 'bcbi_company';
- ExternalType = 'Lookup';
- Description = 'Business Central Company';
- Caption = 'Company Id';
- TableRelation = "CDS Company".CompanyId;
- DataClassification = SystemMetadata;
- }
- }
- keys
- {
- key(PK; WorkOrderId)
- {
- Clustered = true;
- }
- key(Name; Name)
- {
- }
- }
- fieldgroups
- {
- fieldgroup(DropDown; Name)
- {
- }
- }
-}
\ No newline at end of file
diff --git a/Apps/W1/FieldServiceIntegration/app/src/Tables/FSWorkOrderIncident.Table.al b/Apps/W1/FieldServiceIntegration/app/src/Tables/FSWorkOrderIncident.Table.al
deleted file mode 100644
index 6837e3621c..0000000000
--- a/Apps/W1/FieldServiceIntegration/app/src/Tables/FSWorkOrderIncident.Table.al
+++ /dev/null
@@ -1,312 +0,0 @@
-// ------------------------------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License. See License.txt in the project root for license information.
-// ------------------------------------------------------------------------------------------------
-namespace Microsoft.Integration.DynamicsFieldService;
-
-using Microsoft.Integration.D365Sales;
-
-table 6618 "FS Work Order Incident"
-{
- ExternalName = 'msdyn_workorderincident';
- TableType = CRM;
- Description = 'Specify work order incidents reported to you by the client. These are also referred to as problem codes.';
- DataClassification = SystemMetadata;
-
- fields
- {
- field(1; WorkOrderIncidentId; GUID)
- {
- ExternalName = 'msdyn_workorderincidentid';
- ExternalType = 'Uniqueidentifier';
- ExternalAccess = Insert;
- Description = 'Shows the entity instances.';
- Caption = 'Work Order Incident';
- DataClassification = SystemMetadata;
- }
- field(2; CreatedOn; Datetime)
- {
- ExternalName = 'createdon';
- ExternalType = 'DateTime';
- ExternalAccess = Read;
- Description = 'Shows the date and time when the record was created. The date and time are displayed in the time zone selected in Microsoft Dynamics 365 options.';
- Caption = 'Created On';
- DataClassification = SystemMetadata;
- }
- field(3; CreatedBy; GUID)
- {
- ExternalName = 'createdby';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Unique identifier of the user who created the record.';
- Caption = 'Created By';
- TableRelation = "CRM Systemuser".SystemUserId;
- DataClassification = SystemMetadata;
- }
- field(4; ModifiedOn; Datetime)
- {
- ExternalName = 'modifiedon';
- ExternalType = 'DateTime';
- ExternalAccess = Read;
- Description = 'Shows the date and time when the record was last updated. The date and time are displayed in the time zone selected in Microsoft Dynamics 365 options.';
- Caption = 'Modified On';
- DataClassification = SystemMetadata;
- }
- field(5; ModifiedBy; GUID)
- {
- ExternalName = 'modifiedby';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Unique identifier of the user who modified the record.';
- Caption = 'Modified By';
- TableRelation = "CRM Systemuser".SystemUserId;
- DataClassification = SystemMetadata;
- }
- field(6; CreatedOnBehalfBy; GUID)
- {
- ExternalName = 'createdonbehalfby';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Shows who created the record on behalf of another user.';
- Caption = 'Created By (Delegate)';
- TableRelation = "CRM Systemuser".SystemUserId;
- DataClassification = SystemMetadata;
- }
- field(7; ModifiedOnBehalfBy; GUID)
- {
- ExternalName = 'modifiedonbehalfby';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Shows who last updated the record on behalf of another user.';
- Caption = 'Modified By (Delegate)';
- TableRelation = "CRM Systemuser".SystemUserId;
- DataClassification = SystemMetadata;
- }
- field(16; OwnerId; GUID)
- {
- ExternalName = 'ownerid';
- ExternalType = 'Owner';
- Description = 'Owner Id';
- Caption = 'Owner';
- DataClassification = SystemMetadata;
- }
- field(21; OwningBusinessUnit; GUID)
- {
- ExternalName = 'owningbusinessunit';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Unique identifier for the business unit that owns the record';
- Caption = 'Owning Business Unit';
- TableRelation = "CRM Businessunit".BusinessUnitId;
- DataClassification = SystemMetadata;
- }
- field(22; OwningUser; GUID)
- {
- ExternalName = 'owninguser';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Unique identifier for the user that owns the record.';
- Caption = 'Owning User';
- TableRelation = "CRM Systemuser".SystemUserId;
- DataClassification = SystemMetadata;
- }
- field(23; OwningTeam; GUID)
- {
- ExternalName = 'owningteam';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Unique identifier for the team that owns the record.';
- Caption = 'Owning Team';
- TableRelation = "CRM Team".TeamId;
- DataClassification = SystemMetadata;
- }
- field(25; StateCode; Option)
- {
- ExternalName = 'statecode';
- ExternalType = 'State';
- ExternalAccess = Modify;
- Description = 'Status of the Work Order Incident';
- Caption = 'Status';
- InitValue = " ";
- OptionMembers = " ",Active,Inactive;
- OptionOrdinalValues = -1, 0, 1;
- DataClassification = SystemMetadata;
- }
- field(27; StatusCode; Option)
- {
- ExternalName = 'statuscode';
- ExternalType = 'Status';
- Description = 'Reason for the status of the Work Order Incident';
- Caption = 'Status Reason';
- InitValue = " ";
- OptionMembers = " ",Active,Inactive;
- OptionOrdinalValues = -1, 1, 2;
- DataClassification = SystemMetadata;
- }
- field(29; VersionNumber; BigInteger)
- {
- ExternalName = 'versionnumber';
- ExternalType = 'BigInt';
- ExternalAccess = Read;
- Description = 'Version Number';
- Caption = 'Version Number';
- DataClassification = SystemMetadata;
- }
- field(30; ImportSequenceNumber; Integer)
- {
- ExternalName = 'importsequencenumber';
- ExternalType = 'Integer';
- ExternalAccess = Insert;
- Description = 'Shows the sequence number of the import that created this record.';
- Caption = 'Import Sequence Number';
- DataClassification = SystemMetadata;
- }
- field(31; OverriddenCreatedOn; Date)
- {
- ExternalName = 'overriddencreatedon';
- ExternalType = 'DateTime';
- ExternalAccess = Insert;
- Description = 'Shows the date and time that the record was migrated.';
- Caption = 'Record Created On';
- DataClassification = SystemMetadata;
- }
- field(32; TimeZoneRuleVersionNumber; Integer)
- {
- ExternalName = 'timezoneruleversionnumber';
- ExternalType = 'Integer';
- Description = 'For internal use only.';
- Caption = 'Time Zone Rule Version Number';
- DataClassification = SystemMetadata;
- }
- field(33; UTCConversionTimeZoneCode; Integer)
- {
- ExternalName = 'utcconversiontimezonecode';
- ExternalType = 'Integer';
- Description = 'Shows the time zone code that was in use when the record was created.';
- Caption = 'UTC Conversion Time Zone Code';
- DataClassification = SystemMetadata;
- }
- field(34; Name; Text[100])
- {
- ExternalName = 'msdyn_name';
- ExternalType = 'String';
- Description = 'Enter the name of the custom entity.';
- Caption = 'Name';
- DataClassification = SystemMetadata;
- }
- field(36; CustomerAsset; GUID)
- {
- ExternalName = 'msdyn_customerasset';
- ExternalType = 'Lookup';
- Description = 'Customer Asset related to this incident reported';
- Caption = 'Customer Asset';
- TableRelation = "FS Customer Asset".CustomerAssetId;
- DataClassification = SystemMetadata;
- }
- field(37; Description; BLOB)
- {
- ExternalName = 'msdyn_description';
- ExternalType = 'Memo';
- Description = 'Incident description';
- Caption = 'Description';
- Subtype = Memo;
- DataClassification = SystemMetadata;
- }
- field(38; EstimatedDuration; Integer)
- {
- ExternalName = 'msdyn_estimatedduration';
- ExternalType = 'Integer';
- Description = 'Shows the time estimated to resolve this incident.';
- Caption = 'Estimated Duration';
- DataClassification = SystemMetadata;
- }
- field(39; IncidentResolved; Boolean)
- {
- ExternalName = 'msdyn_incidentresolved';
- ExternalType = 'Boolean';
- Description = 'Shows if the incident has been resolved by one of its related tasks.';
- Caption = 'Incident Resolved';
- DataClassification = SystemMetadata;
- }
- field(42; InternalFlags; BLOB)
- {
- ExternalName = 'msdyn_internalflags';
- ExternalType = 'Memo';
- Description = 'For internal use only.';
- Caption = 'Internal Flags';
- Subtype = Memo;
- DataClassification = SystemMetadata;
- }
- field(43; IsMobile; Boolean)
- {
- ExternalName = 'msdyn_ismobile';
- ExternalType = 'Boolean';
- Caption = 'Is Mobile';
- DataClassification = SystemMetadata;
- }
- field(45; IsPrimary; Boolean)
- {
- ExternalName = 'msdyn_isprimary';
- ExternalType = 'Boolean';
- Description = '';
- Caption = 'Is Primary';
- DataClassification = SystemMetadata;
- }
- field(47; ItemsPopulated; Boolean)
- {
- ExternalName = 'msdyn_itemspopulated';
- ExternalType = 'Boolean';
- Caption = 'Items Populated';
- DataClassification = SystemMetadata;
- }
- field(50; TasksPercentCompleted; Decimal)
- {
- ExternalName = 'msdyn_taskspercentcompleted';
- ExternalType = 'Double';
- Description = 'Shows the percent completed on associated tasks. This indicates the total of completed tasks, but not if the incident was resolved.';
- Caption = 'Tasks % Completed';
- DataClassification = SystemMetadata;
- }
- field(51; WorkOrder; GUID)
- {
- ExternalName = 'msdyn_workorder';
- ExternalType = 'Lookup';
- Description = 'Parent Work Order where incident was reported on';
- Caption = 'Work Order';
- TableRelation = "FS Work Order".WorkOrderId;
- DataClassification = SystemMetadata;
- }
- field(53; CustomerAssetName; Text[100])
- {
- FieldClass = FlowField;
- CalcFormula = lookup("FS Customer Asset".Name where(CustomerAssetId = field(CustomerAsset)));
- ExternalName = 'msdyn_customerassetname';
- ExternalType = 'String';
- ExternalAccess = Read;
- }
- field(56; WorkOrderName; Text[100])
- {
- FieldClass = FlowField;
- CalcFormula = lookup("FS Work Order".Name where(WorkOrderId = field(WorkOrder)));
- ExternalName = 'msdyn_workordername';
- ExternalType = 'String';
- ExternalAccess = Read;
- }
- }
- keys
- {
- key(PK; WorkOrderIncidentId)
- {
- Clustered = true;
- }
- key(Name; Name)
- {
- }
- }
- fieldgroups
- {
- fieldgroup(DropDown; Name)
- {
- }
- }
-}
\ No newline at end of file
diff --git a/Apps/W1/FieldServiceIntegration/app/src/Tables/FSWorkOrderProduct.Table.al b/Apps/W1/FieldServiceIntegration/app/src/Tables/FSWorkOrderProduct.Table.al
deleted file mode 100644
index aff2eaf9fd..0000000000
--- a/Apps/W1/FieldServiceIntegration/app/src/Tables/FSWorkOrderProduct.Table.al
+++ /dev/null
@@ -1,726 +0,0 @@
-// ------------------------------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License. See License.txt in the project root for license information.
-// ------------------------------------------------------------------------------------------------
-namespace Microsoft.Integration.DynamicsFieldService;
-
-using Microsoft.Integration.D365Sales;
-
-table 6619 "FS Work Order Product"
-{
- ExternalName = 'msdyn_workorderproduct';
- TableType = CRM;
- Description = 'In this entity you record all the products proposed and used for a work order';
- DataClassification = SystemMetadata;
-
- fields
- {
- field(1; WorkOrderProductId; GUID)
- {
- ExternalName = 'msdyn_workorderproductid';
- ExternalType = 'Uniqueidentifier';
- ExternalAccess = Insert;
- Description = 'Shows the entity instances.';
- Caption = 'Work Order Product';
- DataClassification = SystemMetadata;
- }
- field(2; CreatedOn; Datetime)
- {
- ExternalName = 'createdon';
- ExternalType = 'DateTime';
- ExternalAccess = Read;
- Description = 'Shows the date and time when the record was created. The date and time are displayed in the time zone selected in Microsoft Dynamics 365 options.';
- Caption = 'Created On';
- DataClassification = SystemMetadata;
- }
- field(3; CreatedBy; GUID)
- {
- ExternalName = 'createdby';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Unique identifier of the user who created the record.';
- Caption = 'Created By';
- TableRelation = "CRM Systemuser".SystemUserId;
- DataClassification = SystemMetadata;
- }
- field(4; ModifiedOn; Datetime)
- {
- ExternalName = 'modifiedon';
- ExternalType = 'DateTime';
- ExternalAccess = Read;
- Description = 'Shows the date and time when the record was last updated. The date and time are displayed in the time zone selected in Microsoft Dynamics 365 options.';
- Caption = 'Modified On';
- DataClassification = SystemMetadata;
- }
- field(5; ModifiedBy; GUID)
- {
- ExternalName = 'modifiedby';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Unique identifier of the user who modified the record.';
- Caption = 'Modified By';
- TableRelation = "CRM Systemuser".SystemUserId;
- DataClassification = SystemMetadata;
- }
- field(6; CreatedOnBehalfBy; GUID)
- {
- ExternalName = 'createdonbehalfby';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Shows who created the record on behalf of another user.';
- Caption = 'Created By (Delegate)';
- TableRelation = "CRM Systemuser".SystemUserId;
- DataClassification = SystemMetadata;
- }
- field(7; ModifiedOnBehalfBy; GUID)
- {
- ExternalName = 'modifiedonbehalfby';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Shows who last updated the record on behalf of another user.';
- Caption = 'Modified By (Delegate)';
- TableRelation = "CRM Systemuser".SystemUserId;
- DataClassification = SystemMetadata;
- }
- field(16; OwnerId; GUID)
- {
- ExternalName = 'ownerid';
- ExternalType = 'Owner';
- Description = 'Owner Id';
- Caption = 'Owner';
- DataClassification = SystemMetadata;
- }
- field(21; OwningBusinessUnit; GUID)
- {
- ExternalName = 'owningbusinessunit';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Unique identifier for the business unit that owns the record';
- Caption = 'Owning Business Unit';
- TableRelation = "CRM Businessunit".BusinessUnitId;
- DataClassification = SystemMetadata;
- }
- field(22; OwningUser; GUID)
- {
- ExternalName = 'owninguser';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Unique identifier for the user that owns the record.';
- Caption = 'Owning User';
- TableRelation = "CRM Systemuser".SystemUserId;
- DataClassification = SystemMetadata;
- }
- field(23; OwningTeam; GUID)
- {
- ExternalName = 'owningteam';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Unique identifier for the team that owns the record.';
- Caption = 'Owning Team';
- TableRelation = "CRM Team".TeamId;
- DataClassification = SystemMetadata;
- }
- field(25; StateCode; Option)
- {
- ExternalName = 'statecode';
- ExternalType = 'State';
- ExternalAccess = Modify;
- Description = 'Status of the Work Order Product';
- Caption = 'Status';
- InitValue = " ";
- OptionMembers = " ",Active,Inactive;
- OptionOrdinalValues = -1, 0, 1;
- DataClassification = SystemMetadata;
- }
- field(27; StatusCode; Option)
- {
- ExternalName = 'statuscode';
- ExternalType = 'Status';
- Description = 'Reason for the status of the Work Order Product';
- Caption = 'Status Reason';
- InitValue = " ";
- OptionMembers = " ",Active,Inactive;
- OptionOrdinalValues = -1, 1, 2;
- DataClassification = SystemMetadata;
- }
- field(29; VersionNumber; BigInteger)
- {
- ExternalName = 'versionnumber';
- ExternalType = 'BigInt';
- ExternalAccess = Read;
- Description = 'Version Number';
- Caption = 'Version Number';
- DataClassification = SystemMetadata;
- }
- field(30; ImportSequenceNumber; Integer)
- {
- ExternalName = 'importsequencenumber';
- ExternalType = 'Integer';
- ExternalAccess = Insert;
- Description = 'Shows the sequence number of the import that created this record.';
- Caption = 'Import Sequence Number';
- DataClassification = SystemMetadata;
- }
- field(31; OverriddenCreatedOn; Date)
- {
- ExternalName = 'overriddencreatedon';
- ExternalType = 'DateTime';
- ExternalAccess = Insert;
- Description = 'Shows the date and time that the record was migrated.';
- Caption = 'Record Created On';
- DataClassification = SystemMetadata;
- }
- field(32; TimeZoneRuleVersionNumber; Integer)
- {
- ExternalName = 'timezoneruleversionnumber';
- ExternalType = 'Integer';
- Description = 'For internal use only.';
- Caption = 'Time Zone Rule Version Number';
- DataClassification = SystemMetadata;
- }
- field(33; UTCConversionTimeZoneCode; Integer)
- {
- ExternalName = 'utcconversiontimezonecode';
- ExternalType = 'Integer';
- Description = 'Shows the time zone code that was in use when the record was created.';
- Caption = 'UTC Conversion Time Zone Code';
- DataClassification = SystemMetadata;
- }
- field(34; Name; Text[200])
- {
- ExternalName = 'msdyn_name';
- ExternalType = 'String';
- Description = 'Enter the name of the custom entity.';
- Caption = 'Name';
- DataClassification = SystemMetadata;
- }
- field(35; AdditionalCost; Decimal)
- {
- ExternalName = 'msdyn_additionalcost';
- ExternalType = 'Money';
- Description = 'Enter any additional costs associated with this product. The values are manually entered. Note: additional cost is not unit dependent.';
- Caption = 'Additional Cost';
- DataClassification = SystemMetadata;
- }
- field(36; TransactionCurrencyId; GUID)
- {
- ExternalName = 'transactioncurrencyid';
- ExternalType = 'Lookup';
- Description = 'Unique identifier of the currency associated with the entity.';
- Caption = 'Currency';
- TableRelation = "CRM Transactioncurrency".TransactionCurrencyId;
- DataClassification = SystemMetadata;
- }
- field(38; ExchangeRate; Decimal)
- {
- ExternalName = 'exchangerate';
- ExternalType = 'Decimal';
- ExternalAccess = Read;
- Description = 'Shows the exchange rate for the currency associated with the entity with respect to the base currency.';
- Caption = 'Exchange Rate';
- DataClassification = SystemMetadata;
- }
- field(39; additionalcost_Base; Decimal)
- {
- ExternalName = 'msdyn_additionalcost_base';
- ExternalType = 'Money';
- ExternalAccess = Read;
- Description = 'Shows the value of the additional cost in the base currency.';
- Caption = 'Additional Cost (Base)';
- DataClassification = SystemMetadata;
- }
- field(40; WarehouseId; GUID)
- {
- ExternalName = 'msdyn_warehouse';
- ExternalType = 'Lookup';
- Description = 'Unique identifier of the warehouse associated with the entity.';
- Caption = 'Warehouse';
- TableRelation = "FS Warehouse".WarehouseId;
- DataClassification = SystemMetadata;
- }
- field(41; Allocated; Boolean)
- {
- ExternalName = 'msdyn_allocated';
- ExternalType = 'Boolean';
- Caption = 'Allocated';
- DataClassification = SystemMetadata;
- }
- field(43; Booking; GUID)
- {
- ExternalName = 'msdyn_booking';
- ExternalType = 'Lookup';
- Description = 'The booking where this product was added';
- Caption = 'Booking';
- TableRelation = "FS Bookable Resource Booking".BookableResourceBookingId;
- DataClassification = SystemMetadata;
- }
- field(44; CommissionCosts; Decimal)
- {
- ExternalName = 'msdyn_commissioncosts';
- ExternalType = 'Money';
- Description = 'Enter the commission costs associated with this product. The value is manually specified and isn''t automatically calculated.';
- Caption = 'Commission Costs';
- DataClassification = SystemMetadata;
- }
- field(45; commissioncosts_Base; Decimal)
- {
- ExternalName = 'msdyn_commissioncosts_base';
- ExternalType = 'Money';
- ExternalAccess = Read;
- Description = 'Shows the value of the commission costs in the base currency.';
- Caption = 'Commission Costs (Base)';
- DataClassification = SystemMetadata;
- }
- field(46; CustomerAsset; GUID)
- {
- ExternalName = 'msdyn_customerasset';
- ExternalType = 'Lookup';
- Description = 'Unique identifier for Customer Asset associated with Work Order Product.';
- Caption = 'Customer Asset';
- TableRelation = "FS Customer Asset".CustomerAssetId;
- DataClassification = SystemMetadata;
- }
- field(47; Description; BLOB)
- {
- ExternalName = 'msdyn_description';
- ExternalType = 'Memo';
- Description = 'Enter the description of the product as presented to the customer. The value defaults to the description defined on the product.';
- Caption = 'Description';
- Subtype = Memo;
- DataClassification = SystemMetadata;
- }
- field(48; DisableEntitlement; Boolean)
- {
- ExternalName = 'msdyn_disableentitlement';
- ExternalType = 'Boolean';
- Description = 'Choose whether to disable entitlement selection for this work order product.';
- Caption = 'Disable Entitlement';
- DataClassification = SystemMetadata;
- }
- field(50; DiscountAmount; Decimal)
- {
- ExternalName = 'msdyn_discountamount';
- ExternalType = 'Money';
- Description = 'Specify any discount amount on this product. Note: If you enter a discount amount you cannot enter a discount %';
- Caption = 'Discount Amount';
- DataClassification = SystemMetadata;
- }
- field(51; DiscountAmount_Base; Decimal)
- {
- ExternalName = 'msdyn_discountamount_base';
- ExternalType = 'Money';
- ExternalAccess = Read;
- Description = 'Shows the value of the discount amount in the base currency.';
- Caption = 'Discount Amount (Base)';
- DataClassification = SystemMetadata;
- }
- field(52; DiscountPercent; Decimal)
- {
- ExternalName = 'msdyn_discountpercent';
- ExternalType = 'Float';
- Description = 'Specify any discount % on this product. Note: If you enter a discount % it will overwrite the discount $';
- Caption = 'Discount %';
- DataClassification = SystemMetadata;
- }
- field(54; EstimateDiscountAmount; Decimal)
- {
- ExternalName = 'msdyn_estimatediscountamount';
- ExternalType = 'Money';
- Description = 'Enter a discount amount on the subtotal amount. Note: If you enter a discount amount you cannot enter a discount %';
- Caption = 'Estimate Discount Amount';
- DataClassification = SystemMetadata;
- }
- field(55; EstimateDiscountAmount_Base; Decimal)
- {
- ExternalName = 'msdyn_estimatediscountamount_base';
- ExternalType = 'Money';
- ExternalAccess = Read;
- Description = 'Shows the value of the estimate discount amount in the base currency.';
- Caption = 'Estimate Discount Amount (Base)';
- DataClassification = SystemMetadata;
- }
- field(56; EstimateDiscountPercent; Decimal)
- {
- ExternalName = 'msdyn_estimatediscountpercent';
- ExternalType = 'Float';
- Description = 'Enter a discount % on the subtotal amount. Note: If you enter a discount % it will overwrite the discount $';
- Caption = 'Estimate Discount %';
- DataClassification = SystemMetadata;
- }
- field(57; EstimateQuantity; Decimal)
- {
- ExternalName = 'msdyn_estimatequantity';
- ExternalType = 'Float';
- Description = 'Enter the estimated required quantity of this product.';
- Caption = 'Estimate Quantity';
- DataClassification = SystemMetadata;
- }
- field(58; EstimateSubtotal; Decimal)
- {
- ExternalName = 'msdyn_estimatesubtotal';
- ExternalType = 'Money';
- Description = 'Shows the total amount for this product, excluding discounts.';
- Caption = 'Estimate Subtotal';
- DataClassification = SystemMetadata;
- }
- field(59; EstimateSubtotal_Base; Decimal)
- {
- ExternalName = 'msdyn_estimatesubtotal_base';
- ExternalType = 'Money';
- ExternalAccess = Read;
- Description = 'Shows the value of the estimate subtotal in the base currency.';
- Caption = 'Estimate Subtotal (Base)';
- DataClassification = SystemMetadata;
- }
- field(60; EstimateTotalAmount; Decimal)
- {
- ExternalName = 'msdyn_estimatetotalamount';
- ExternalType = 'Money';
- Description = 'Shows the estimated total amount of this product, including discounts.';
- Caption = 'Estimate Total Amount';
- DataClassification = SystemMetadata;
- }
- field(61; EstimateTotalAmount_Base; Decimal)
- {
- ExternalName = 'msdyn_estimatetotalamount_base';
- ExternalType = 'Money';
- ExternalAccess = Read;
- Description = 'Shows the value of the estimate total amount in the base currency.';
- Caption = 'Estimate Total Amount (Base)';
- DataClassification = SystemMetadata;
- }
- field(62; EstimateTotalCost; Decimal)
- {
- ExternalName = 'msdyn_estimatetotalcost';
- ExternalType = 'Money';
- Description = 'Shows the estimated total cost of this product.';
- Caption = 'Estimate Total Cost';
- DataClassification = SystemMetadata;
- }
- field(63; EtimateTotalCost_Base; Decimal)
- {
- ExternalName = 'msdyn_estimatetotalcost_base';
- ExternalType = 'Money';
- ExternalAccess = Read;
- Description = 'Shows the value of the estimate total cost in the base currency.';
- Caption = 'Estimate Total Cost (Base)';
- DataClassification = SystemMetadata;
- }
- field(64; EstimateUnitAmount; Decimal)
- {
- ExternalName = 'msdyn_estimateunitamount';
- ExternalType = 'Money';
- Description = 'Shows the estimated sale amount per unit.';
- Caption = 'Estimate Unit Amount';
- DataClassification = SystemMetadata;
- }
- field(65; EstimateUnitAmount_Base; Decimal)
- {
- ExternalName = 'msdyn_estimateunitamount_base';
- ExternalType = 'Money';
- ExternalAccess = Read;
- Description = 'Shows the value of the estimate unit amount in the base currency.';
- Caption = 'Estimate Unit Amount (Base)';
- DataClassification = SystemMetadata;
- }
- field(66; EstimateUnitCost; Decimal)
- {
- ExternalName = 'msdyn_estimateunitcost';
- ExternalType = 'Money';
- Description = 'Shows the estimated cost amount per unit.';
- Caption = 'Estimate Unit Cost';
- DataClassification = SystemMetadata;
- }
- field(67; EstimateUnitCost_Base; Decimal)
- {
- ExternalName = 'msdyn_estimateunitcost_base';
- ExternalType = 'Money';
- ExternalAccess = Read;
- Description = 'Shows the value of the estimate unit cost in the base currency.';
- Caption = 'Estimate Unit Cost (Base)';
- DataClassification = SystemMetadata;
- }
- field(68; InternalDescription; BLOB)
- {
- ExternalName = 'msdyn_internaldescription';
- ExternalType = 'Memo';
- Description = 'Enter any internal notes you want to track on this product.';
- Caption = 'Internal Description';
- Subtype = Memo;
- DataClassification = SystemMetadata;
- }
- field(69; InternalFlags; BLOB)
- {
- ExternalName = 'msdyn_internalflags';
- ExternalType = 'Memo';
- Description = 'For internal use only.';
- Caption = 'Internal Flags';
- Subtype = Memo;
- DataClassification = SystemMetadata;
- }
- field(70; LineOrder; Integer)
- {
- ExternalName = 'msdyn_lineorder';
- ExternalType = 'Integer';
- Description = '';
- Caption = 'Line Order';
- DataClassification = SystemMetadata;
- }
- field(71; LineStatus; Option)
- {
- ExternalName = 'msdyn_linestatus';
- ExternalType = 'Picklist';
- Description = 'Enter the current status of the line, estimate or used.';
- Caption = 'Line Status';
- InitValue = Estimated;
- OptionMembers = Estimated,Used;
- OptionOrdinalValues = 690970000, 690970001;
- DataClassification = SystemMetadata;
- }
- field(73; PriceList; GUID)
- {
- ExternalName = 'msdyn_pricelist';
- ExternalType = 'Lookup';
- Description = 'Price List that determines the pricing for this product';
- Caption = 'Price List';
- TableRelation = "CRM Pricelevel".PriceLevelId;
- DataClassification = SystemMetadata;
- }
- field(74; Product; GUID)
- {
- ExternalName = 'msdyn_product';
- ExternalType = 'Lookup';
- Description = 'Product to use';
- Caption = 'Product';
- TableRelation = "CRM Product".ProductId;
- DataClassification = SystemMetadata;
- }
- field(76; QtyToBill; Decimal)
- {
- ExternalName = 'msdyn_qtytobill';
- ExternalType = 'Float';
- Description = 'Enter the quantity you wish to bill the customer for. By default, this will default to the same value as "Quantity."';
- Caption = 'Quantity To Bill';
- DataClassification = SystemMetadata;
- }
- field(77; Quantity; Decimal)
- {
- ExternalName = 'msdyn_quantity';
- ExternalType = 'Float';
- Description = 'Shows the actual quantity of the product.';
- Caption = 'Quantity';
- DataClassification = SystemMetadata;
- }
- field(78; Subtotal; Decimal)
- {
- ExternalName = 'msdyn_subtotal';
- ExternalType = 'Money';
- Description = 'Enter the total amount excluding discounts.';
- Caption = 'Subtotal';
- DataClassification = SystemMetadata;
- }
- field(79; Subtotal_Base; Decimal)
- {
- ExternalName = 'msdyn_subtotal_base';
- ExternalType = 'Money';
- ExternalAccess = Read;
- Description = 'Shows the value of the subtotal in the base currency.';
- Caption = 'Subtotal (Base)';
- DataClassification = SystemMetadata;
- }
- field(80; Taxable; Boolean)
- {
- ExternalName = 'msdyn_taxable';
- ExternalType = 'Boolean';
- Description = 'Specify if product is taxable. If you do not wish to charge tax set this field to No.';
- Caption = 'Taxable';
- DataClassification = SystemMetadata;
- }
- field(82; TotalAmount; Decimal)
- {
- ExternalName = 'msdyn_totalamount';
- ExternalType = 'Money';
- Description = 'Enter the total amount charged to the customer.';
- Caption = 'Total Amount';
- DataClassification = SystemMetadata;
- }
- field(83; TotalAmount_Base; Decimal)
- {
- ExternalName = 'msdyn_totalamount_base';
- ExternalType = 'Money';
- ExternalAccess = Read;
- Description = 'Shows the value of the total amount in the base currency.';
- Caption = 'Total Amount (Base)';
- DataClassification = SystemMetadata;
- }
- field(84; TotalCost; Decimal)
- {
- ExternalName = 'msdyn_totalcost';
- ExternalType = 'Money';
- Description = 'Shows the total cost of this product. This is calculated by (Unit Cost * Units) + Additional Cost + Commission Costs.';
- Caption = 'Total Cost';
- DataClassification = SystemMetadata;
- }
- field(85; TotalCost_Base; Decimal)
- {
- ExternalName = 'msdyn_totalcost_base';
- ExternalType = 'Money';
- ExternalAccess = Read;
- Description = 'Shows the value of the total cost in the base currency.';
- Caption = 'Total Cost (Base)';
- DataClassification = SystemMetadata;
- }
- field(86; Unit; GUID)
- {
- ExternalName = 'msdyn_unit';
- ExternalType = 'Lookup';
- Description = 'The unit that determines the pricing and final quantity for this product';
- Caption = 'Unit';
- TableRelation = "CRM Uom".UoMId;
- DataClassification = SystemMetadata;
- }
- field(87; UnitAmount; Decimal)
- {
- ExternalName = 'msdyn_unitamount';
- ExternalType = 'Money';
- Description = 'Enter the amount you want to charge the customer per unit. By default, this is calculated based on the selected price list. The amount can be changed.';
- Caption = 'Unit Amount';
- DataClassification = SystemMetadata;
- }
- field(88; UnitAmount_Base; Decimal)
- {
- ExternalName = 'msdyn_unitamount_base';
- ExternalType = 'Money';
- ExternalAccess = Read;
- Description = 'Shows the value of the unit amount in the base currency.';
- Caption = 'Unit Amount (Base)';
- DataClassification = SystemMetadata;
- }
- field(89; UnitCost; Decimal)
- {
- ExternalName = 'msdyn_unitcost';
- ExternalType = 'Money';
- Description = 'Shows the actual cost per unit.';
- Caption = 'Unit Cost';
- DataClassification = SystemMetadata;
- }
- field(90; UnitCost_Base; Decimal)
- {
- ExternalName = 'msdyn_unitcost_base';
- ExternalType = 'Money';
- ExternalAccess = Read;
- Description = 'Shows the value of the unit cost in the base currency.';
- Caption = 'Unit Cost (Base)';
- DataClassification = SystemMetadata;
- }
- field(92; WorkOrder; GUID)
- {
- ExternalName = 'msdyn_workorder';
- ExternalType = 'Lookup';
- Description = 'Unique identifier for Work Order associated with Work Order Product.';
- Caption = 'Work Order';
- TableRelation = "FS Work Order".WorkOrderId;
- DataClassification = SystemMetadata;
- }
- field(93; WorkOrderIncident; GUID)
- {
- ExternalName = 'msdyn_workorderincident';
- ExternalType = 'Lookup';
- Description = 'The Incident related to this product';
- Caption = 'Work Order Incident';
- TableRelation = "FS Work Order Incident".WorkOrderIncidentId;
- DataClassification = SystemMetadata;
- }
- field(94; BookingName; Text[100])
- {
- FieldClass = FlowField;
- CalcFormula = lookup("FS Bookable Resource Booking".Name where(BookableResourceBookingId = field(Booking)));
- ExternalName = 'msdyn_bookingname';
- ExternalType = 'String';
- ExternalAccess = Read;
- }
- field(97; CustomerAssetName; Text[100])
- {
- FieldClass = FlowField;
- CalcFormula = lookup("FS Customer Asset".Name where(CustomerAssetId = field(CustomerAsset)));
- ExternalName = 'msdyn_customerassetname';
- ExternalType = 'String';
- ExternalAccess = Read;
- }
- field(100; WorkOrderName; Text[100])
- {
- FieldClass = FlowField;
- CalcFormula = lookup("FS Work Order".Name where(WorkOrderId = field(WorkOrder)));
- ExternalName = 'msdyn_workordername';
- ExternalType = 'String';
- ExternalAccess = Read;
- }
- field(101; WorkOrderIncidentName; Text[100])
- {
- FieldClass = FlowField;
- CalcFormula = lookup("FS Work Order Incident".Name where(WorkOrderIncidentId = field(WorkOrderIncident)));
- ExternalName = 'msdyn_workorderincidentname';
- ExternalType = 'String';
- ExternalAccess = Read;
- }
- field(105; ProjectTask; GUID)
- {
- ExternalName = 'bcbi_projecttask';
- ExternalType = 'Lookup';
- Description = 'Business Central Project Task';
- Caption = 'External Project';
- TableRelation = "FS Project Task".ProjectTaskId;
- DataClassification = SystemMetadata;
- }
- field(106; WorkOrderStatus; Option)
- {
- ExternalName = 'bcbi_workorderstatus';
- ExternalType = 'Picklist';
- Description = 'The status of the work order';
- Caption = 'Work Order Status';
- InitValue = " ";
- OptionMembers = " ",Unscheduled,Scheduled,InProgress,Completed,Posted,Canceled;
- OptionOrdinalValues = -1, 690970000, 690970001, 690970002, 690970003, 690970004, 690970005;
- DataClassification = SystemMetadata;
- }
- field(108; CompanyId; GUID)
- {
- ExternalName = 'bcbi_company';
- ExternalType = 'Lookup';
- Description = 'Business Central Company';
- Caption = 'Company Id';
- TableRelation = "CDS Company".CompanyId;
- DataClassification = SystemMetadata;
- }
- field(111; QuantityConsumed; Decimal)
- {
- ExternalName = 'bcbi_quantityconsumed';
- ExternalType = 'Float';
- Description = 'Quantity consumed in Dynamics 365 Business Central';
- Caption = 'Quantity Consumed';
- }
- field(112; QuantityInvoiced; Decimal)
- {
- ExternalName = 'bcbi_quantityinvoiced';
- ExternalType = 'Float';
- Description = 'Quantity invoiced in Dynamics 365 Business Central. When this value is different than 0, you can no longer edit the work order product.';
- Caption = 'Quantity Invoiced';
- }
- }
- keys
- {
- key(PK; workorderproductId)
- {
- Clustered = true;
- }
- key(Name; Name)
- {
- }
- }
- fieldgroups
- {
- fieldgroup(DropDown; Name)
- {
- }
- }
-}
\ No newline at end of file
diff --git a/Apps/W1/FieldServiceIntegration/app/src/Tables/FSWorkOrderService.Table.al b/Apps/W1/FieldServiceIntegration/app/src/Tables/FSWorkOrderService.Table.al
deleted file mode 100644
index 4830d0383b..0000000000
--- a/Apps/W1/FieldServiceIntegration/app/src/Tables/FSWorkOrderService.Table.al
+++ /dev/null
@@ -1,767 +0,0 @@
-// ------------------------------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License. See License.txt in the project root for license information.
-// ------------------------------------------------------------------------------------------------
-namespace Microsoft.Integration.DynamicsFieldService;
-
-using Microsoft.Integration.D365Sales;
-
-table 6620 "FS Work Order Service"
-{
- ExternalName = 'msdyn_workorderservice';
- TableType = CRM;
- Description = 'Record all services proposed and performed for work order';
- DataClassification = SystemMetadata;
-
- fields
- {
- field(1; WorkOrderServiceId; GUID)
- {
- ExternalName = 'msdyn_workorderserviceid';
- ExternalType = 'Uniqueidentifier';
- ExternalAccess = Insert;
- Description = 'Shows the entity instances.';
- Caption = 'Work Order Service';
- DataClassification = SystemMetadata;
- }
- field(2; CreatedOn; Datetime)
- {
- ExternalName = 'createdon';
- ExternalType = 'DateTime';
- ExternalAccess = Read;
- Description = 'Shows the date and time when the record was created. The date and time are displayed in the time zone selected in Microsoft Dynamics 365 options.';
- Caption = 'Created On';
- DataClassification = SystemMetadata;
- }
- field(3; CreatedBy; GUID)
- {
- ExternalName = 'createdby';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Unique identifier of the user who created the record.';
- Caption = 'Created By';
- TableRelation = "CRM Systemuser".SystemUserId;
- DataClassification = SystemMetadata;
- }
- field(4; ModifiedOn; Datetime)
- {
- ExternalName = 'modifiedon';
- ExternalType = 'DateTime';
- ExternalAccess = Read;
- Description = 'Shows the date and time when the record was last updated. The date and time are displayed in the time zone selected in Microsoft Dynamics 365 options.';
- Caption = 'Modified On';
- DataClassification = SystemMetadata;
- }
- field(5; ModifiedBy; GUID)
- {
- ExternalName = 'modifiedby';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Unique identifier of the user who modified the record.';
- Caption = 'Modified By';
- TableRelation = "CRM Systemuser".SystemUserId;
- DataClassification = SystemMetadata;
- }
- field(6; CreatedOnBehalfBy; GUID)
- {
- ExternalName = 'createdonbehalfby';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Shows who created the record on behalf of another user.';
- Caption = 'Created By (Delegate)';
- TableRelation = "CRM Systemuser".SystemUserId;
- DataClassification = SystemMetadata;
- }
- field(7; ModifiedOnBehalfBy; GUID)
- {
- ExternalName = 'modifiedonbehalfby';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Shows who last updated the record on behalf of another user.';
- Caption = 'Modified By (Delegate)';
- TableRelation = "CRM Systemuser".SystemUserId;
- DataClassification = SystemMetadata;
- }
- field(16; OwnerId; GUID)
- {
- ExternalName = 'ownerid';
- ExternalType = 'Owner';
- Description = 'Owner Id';
- Caption = 'Owner';
- DataClassification = SystemMetadata;
- }
- field(21; OwningBusinessUnit; GUID)
- {
- ExternalName = 'owningbusinessunit';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Unique identifier for the business unit that owns the record';
- Caption = 'Owning Business Unit';
- TableRelation = "CRM Businessunit".BusinessUnitId;
- DataClassification = SystemMetadata;
- }
- field(22; OwningUser; GUID)
- {
- ExternalName = 'owninguser';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Unique identifier for the user that owns the record.';
- Caption = 'Owning User';
- TableRelation = "CRM Systemuser".SystemUserId;
- DataClassification = SystemMetadata;
- }
- field(23; OwningTeam; GUID)
- {
- ExternalName = 'owningteam';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Unique identifier for the team that owns the record.';
- Caption = 'Owning Team';
- TableRelation = "CRM Team".TeamId;
- DataClassification = SystemMetadata;
- }
- field(25; StateCode; Option)
- {
- ExternalName = 'statecode';
- ExternalType = 'State';
- ExternalAccess = Modify;
- Description = 'Status of the Work Order Service';
- Caption = 'Status';
- InitValue = " ";
- OptionMembers = " ",Active,Inactive;
- OptionOrdinalValues = -1, 0, 1;
- DataClassification = SystemMetadata;
- }
- field(27; StatusCode; Option)
- {
- ExternalName = 'statuscode';
- ExternalType = 'Status';
- Description = 'Reason for the status of the Work Order Service';
- Caption = 'Status Reason';
- InitValue = " ";
- OptionMembers = " ",Active,Inactive;
- OptionOrdinalValues = -1, 1, 2;
- DataClassification = SystemMetadata;
- }
- field(29; VersionNumber; BigInteger)
- {
- ExternalName = 'versionnumber';
- ExternalType = 'BigInt';
- ExternalAccess = Read;
- Description = 'Version Number';
- Caption = 'Version Number';
- DataClassification = SystemMetadata;
- }
- field(30; ImportSequenceNumber; Integer)
- {
- ExternalName = 'importsequencenumber';
- ExternalType = 'Integer';
- ExternalAccess = Insert;
- Description = 'Shows the sequence number of the import that created this record.';
- Caption = 'Import Sequence Number';
- DataClassification = SystemMetadata;
- }
- field(31; OverriddenCreatedOn; Date)
- {
- ExternalName = 'overriddencreatedon';
- ExternalType = 'DateTime';
- ExternalAccess = Insert;
- Description = 'Shows the date and time that the record was migrated.';
- Caption = 'Record Created On';
- DataClassification = SystemMetadata;
- }
- field(32; TimeZoneRuleVersionNumber; Integer)
- {
- ExternalName = 'timezoneruleversionnumber';
- ExternalType = 'Integer';
- Description = 'For internal use only.';
- Caption = 'Time Zone Rule Version Number';
- DataClassification = SystemMetadata;
- }
- field(33; UTCConversionTimeZoneCode; Integer)
- {
- ExternalName = 'utcconversiontimezonecode';
- ExternalType = 'Integer';
- Description = 'Shows the time zone code that was in use when the record was created.';
- Caption = 'UTC Conversion Time Zone Code';
- DataClassification = SystemMetadata;
- }
- field(34; Name; Text[200])
- {
- ExternalName = 'msdyn_name';
- ExternalType = 'String';
- Description = 'Enter the name of the custom entity.';
- Caption = 'Name';
- DataClassification = SystemMetadata;
- }
- field(35; AdditionalCost; Decimal)
- {
- ExternalName = 'msdyn_additionalcost';
- ExternalType = 'Money';
- Description = 'Enter any additional costs associated with this service. The values are manually entered. Note: additional cost is not unit dependent.';
- Caption = 'Additional Cost';
- DataClassification = SystemMetadata;
- }
- field(36; TransactionCurrencyId; GUID)
- {
- ExternalName = 'transactioncurrencyid';
- ExternalType = 'Lookup';
- Description = 'Unique identifier of the currency associated with the entity.';
- Caption = 'Currency';
- TableRelation = "CRM Transactioncurrency".TransactionCurrencyId;
- DataClassification = SystemMetadata;
- }
- field(38; ExchangeRate; Decimal)
- {
- ExternalName = 'exchangerate';
- ExternalType = 'Decimal';
- ExternalAccess = Read;
- Description = 'Shows the exchange rate for the currency associated with the entity with respect to the base currency.';
- Caption = 'Exchange Rate';
- DataClassification = SystemMetadata;
- }
- field(39; AdditionalCost_Base; Decimal)
- {
- ExternalName = 'msdyn_additionalcost_base';
- ExternalType = 'Money';
- ExternalAccess = Read;
- Description = 'Shows the value of the additional cost in the base currency.';
- Caption = 'Additional Cost (Base)';
- DataClassification = SystemMetadata;
- }
- field(41; Booking; GUID)
- {
- ExternalName = 'msdyn_booking';
- ExternalType = 'Lookup';
- Description = 'Shows the resource booking detail where this product was added.';
- Caption = 'Booking';
- TableRelation = "FS Bookable Resource Booking".BookableResourceBookingId;
- DataClassification = SystemMetadata;
- }
- field(42; CalculatedUnitAmount; Decimal)
- {
- ExternalName = 'msdyn_calculatedunitamount';
- ExternalType = 'Money';
- Description = 'Shows the sale amount per unit calculated by the system considering the minimum charge, if applicable.';
- Caption = 'Calculated Unit Amount';
- DataClassification = SystemMetadata;
- }
- field(43; CalculatedUnitAmount_Base; Decimal)
- {
- ExternalName = 'msdyn_calculatedunitamount_base';
- ExternalType = 'Money';
- ExternalAccess = Read;
- Description = 'Shows the value of the calculated unit amount in the base currency.';
- Caption = 'Calculated Unit Amount (Base)';
- DataClassification = SystemMetadata;
- }
- field(44; CommissionCosts; Decimal)
- {
- ExternalName = 'msdyn_commissioncosts';
- ExternalType = 'Money';
- Description = 'Enter the commission costs associated with this service. The value is manually specified and isn''t automatically calculated.';
- Caption = 'Commission Costs';
- DataClassification = SystemMetadata;
- }
- field(45; CommissionCosts_Base; Decimal)
- {
- ExternalName = 'msdyn_commissioncosts_base';
- ExternalType = 'Money';
- ExternalAccess = Read;
- Description = 'Shows the value of the commission costs in the base currency.';
- Caption = 'Commission Costs (Base)';
- DataClassification = SystemMetadata;
- }
- field(46; CustomerAsset; GUID)
- {
- ExternalName = 'msdyn_customerasset';
- ExternalType = 'Lookup';
- Description = 'Unique identifier for Customer Asset associated with Work Order Service.';
- Caption = 'Customer Asset';
- TableRelation = "FS Customer Asset".CustomerAssetId;
- DataClassification = SystemMetadata;
- }
- field(47; Description; BLOB)
- {
- ExternalName = 'msdyn_description';
- ExternalType = 'Memo';
- Description = 'Enter the description of the service as presented to the customer. The value defaults to the description defined on the service.';
- Caption = 'Description';
- Subtype = Memo;
- DataClassification = SystemMetadata;
- }
- field(48; DisableEntitlement; Boolean)
- {
- ExternalName = 'msdyn_disableentitlement';
- ExternalType = 'Boolean';
- Description = 'Choose whether to disable entitlement selection for this work order service.';
- Caption = 'Disable Entitlement';
- DataClassification = SystemMetadata;
- }
- field(50; DiscountAmount; Decimal)
- {
- ExternalName = 'msdyn_discountamount';
- ExternalType = 'Money';
- Description = 'Specify any discount amount on this service. Note: If you enter a discount amount you cannot enter a discount %';
- Caption = 'Discount Amount';
- DataClassification = SystemMetadata;
- }
- field(51; DiscountAmount_Base; Decimal)
- {
- ExternalName = 'msdyn_discountamount_base';
- ExternalType = 'Money';
- ExternalAccess = Read;
- Description = 'Shows the value of the discount Amount in the base currency.';
- Caption = 'Discount Amount (Base)';
- DataClassification = SystemMetadata;
- }
- field(52; DiscountPercent; Decimal)
- {
- ExternalName = 'msdyn_discountpercent';
- ExternalType = 'Float';
- Description = 'Specify any discount % on this service. Note: If you enter a discount % it will overwrite the discount $';
- Caption = 'Discount %';
- DataClassification = SystemMetadata;
- }
- field(53; Duration; Integer)
- {
- ExternalName = 'msdyn_duration';
- ExternalType = 'Integer';
- Description = 'Shows the actual duration of service.';
- Caption = 'Duration';
- DataClassification = SystemMetadata;
- }
- field(54; DurationToBill; Integer)
- {
- ExternalName = 'msdyn_durationtobill';
- ExternalType = 'Integer';
- Description = 'Enter the quantity you wish to bill the customer for. By default, this will default to the same value as "Quantity."';
- Caption = 'Duration To Bill';
- DataClassification = SystemMetadata;
- }
- field(56; EstimateCalculatedUnitAmount; Decimal)
- {
- ExternalName = 'msdyn_estimatecalculatedunitamount';
- ExternalType = 'Money';
- Description = 'Shows the estimated sale amount per unit calculated by the system considering the initial charge (if applicable).';
- Caption = 'Estimate Calculated Unit Amount';
- DataClassification = SystemMetadata;
- }
- field(57; EstimateCalculatedUnitAmount_Base; Decimal)
- {
- ExternalName = 'msdyn_estimatecalculatedunitamount_base';
- ExternalType = 'Money';
- ExternalAccess = Read;
- Description = 'Shows the value of the estimate calculated unit amount in the base currency.';
- Caption = 'Estimate Calculated Unit Amount (Base)';
- DataClassification = SystemMetadata;
- }
- field(58; EstimateDiscountAmount; Decimal)
- {
- ExternalName = 'msdyn_estimatediscountamount';
- ExternalType = 'Money';
- Description = 'Enter a discount amount on the subtotal amount. Note: If you enter a discount amount you cannot enter a discount %';
- Caption = 'Estimate Discount Amount';
- DataClassification = SystemMetadata;
- }
- field(59; EstimateDiscountAmount_Base; Decimal)
- {
- ExternalName = 'msdyn_estimatediscountamount_base';
- ExternalType = 'Money';
- ExternalAccess = Read;
- Description = 'Shows the value of the estimate discount amount in the base currency.';
- Caption = 'Estimate Discount Amount (Base)';
- DataClassification = SystemMetadata;
- }
- field(60; EstimateDiscountPercent; Decimal)
- {
- ExternalName = 'msdyn_estimatediscountpercent';
- ExternalType = 'Float';
- Description = 'Enter a discount % on the subtotal amount. Note: If you enter a discount % it will overwrite the discount $';
- Caption = 'Estimate Discount %';
- DataClassification = SystemMetadata;
- }
- field(61; EstimateDuration; Integer)
- {
- ExternalName = 'msdyn_estimateduration';
- ExternalType = 'Integer';
- Description = 'Enter the estimated duration of this service.';
- Caption = 'Estimate Duration';
- DataClassification = SystemMetadata;
- }
- field(62; EstimateSubtotal; Decimal)
- {
- ExternalName = 'msdyn_estimatesubtotal';
- ExternalType = 'Money';
- Description = 'Shows the total amount for this service, excluding discounts.';
- Caption = 'Estimate Subtotal';
- DataClassification = SystemMetadata;
- }
- field(63; EstimateSubtotal_Base; Decimal)
- {
- ExternalName = 'msdyn_estimatesubtotal_base';
- ExternalType = 'Money';
- ExternalAccess = Read;
- Description = 'Shows the value of the estimate subtotal in the base currency.';
- Caption = 'Estimate Subtotal (Base)';
- DataClassification = SystemMetadata;
- }
- field(64; EstimateTotalAmount; Decimal)
- {
- ExternalName = 'msdyn_estimatetotalamount';
- ExternalType = 'Money';
- Description = 'Shows the estimated total amount of this service, including discounts.';
- Caption = 'Estimate Total Amount';
- DataClassification = SystemMetadata;
- }
- field(65; EstimateTotalAmount_Base; Decimal)
- {
- ExternalName = 'msdyn_estimatetotalamount_base';
- ExternalType = 'Money';
- ExternalAccess = Read;
- Description = 'Shows the value of the estimate total amount in the base currency.';
- Caption = 'Estimate Total Amount (Base)';
- DataClassification = SystemMetadata;
- }
- field(66; EstimateTotalCost; Decimal)
- {
- ExternalName = 'msdyn_estimatetotalcost';
- ExternalType = 'Money';
- Description = 'Shows the estimated total cost of this service.';
- Caption = 'Estimate Total Cost';
- DataClassification = SystemMetadata;
- }
- field(67; EstimateTotalCost_Base; Decimal)
- {
- ExternalName = 'msdyn_estimatetotalcost_base';
- ExternalType = 'Money';
- ExternalAccess = Read;
- Description = 'Shows the value of the estimate total cost in the base currency.';
- Caption = 'Estimate Total Cost (Base)';
- DataClassification = SystemMetadata;
- }
- field(68; EstimateUnitAmount; Decimal)
- {
- ExternalName = 'msdyn_estimateunitamount';
- ExternalType = 'Money';
- Description = 'Shows the estimated sale amount per unit.';
- Caption = 'Estimate Unit Amount';
- DataClassification = SystemMetadata;
- }
- field(69; EtimateUnitAmount_Base; Decimal)
- {
- ExternalName = 'msdyn_estimateunitamount_base';
- ExternalType = 'Money';
- ExternalAccess = Read;
- Description = 'Shows the value of the estimate unit amount in the base currency.';
- Caption = 'Estimate Unit Amount (Base)';
- DataClassification = SystemMetadata;
- }
- field(70; EstimateUnitCost; Decimal)
- {
- ExternalName = 'msdyn_estimateunitcost';
- ExternalType = 'Money';
- Description = 'Shows the estimated cost amount per unit.';
- Caption = 'Estimate Unit Cost';
- DataClassification = SystemMetadata;
- }
- field(71; EstimateUnitCost_Base; Decimal)
- {
- ExternalName = 'msdyn_estimateunitcost_base';
- ExternalType = 'Money';
- ExternalAccess = Read;
- Description = 'Shows the value of the estimate unit cost in the base currency.';
- Caption = 'Estimate Unit Cost (Base)';
- DataClassification = SystemMetadata;
- }
- field(72; InternalDescription; BLOB)
- {
- ExternalName = 'msdyn_internaldescription';
- ExternalType = 'Memo';
- Description = 'Enter any internal notes you want to track on this service.';
- Caption = 'Internal Description';
- Subtype = Memo;
- DataClassification = SystemMetadata;
- }
- field(73; InternalFlags; BLOB)
- {
- ExternalName = 'msdyn_internalflags';
- ExternalType = 'Memo';
- Description = '';
- Caption = 'Internal Flags';
- Subtype = Memo;
- DataClassification = SystemMetadata;
- }
- field(74; LineOrder; Integer)
- {
- ExternalName = 'msdyn_lineorder';
- ExternalType = 'Integer';
- Caption = 'Line Order';
- DataClassification = SystemMetadata;
- }
- field(75; LineStatus; Option)
- {
- ExternalName = 'msdyn_linestatus';
- ExternalType = 'Picklist';
- Description = 'Enter the current status of the line, estimate or used.';
- Caption = 'Line Status';
- InitValue = Estimated;
- OptionMembers = Estimated,Used;
- OptionOrdinalValues = 690970000, 690970001;
- DataClassification = SystemMetadata;
- }
- field(77; MinimumChargeAmount; Decimal)
- {
- ExternalName = 'msdyn_minimumchargeamount';
- ExternalType = 'Money';
- Description = 'Enter the amount charged as a minimum charge.';
- Caption = 'Minimum Charge Amount';
- DataClassification = SystemMetadata;
- }
- field(78; MinimumChargeAmount_Base; Decimal)
- {
- ExternalName = 'msdyn_minimumchargeamount_base';
- ExternalType = 'Money';
- ExternalAccess = Read;
- Description = 'Shows the value of the minimum charge amount in the base currency.';
- Caption = 'Minimum Charge Amount (Base)';
- DataClassification = SystemMetadata;
- }
- field(79; MinimumChargeDuration; Integer)
- {
- ExternalName = 'msdyn_minimumchargeduration';
- ExternalType = 'Integer';
- Description = 'Enter the duration of up to how long the minimum charge applies.';
- Caption = 'Minimum Charge Duration';
- DataClassification = SystemMetadata;
- }
- field(80; PriceList; GUID)
- {
- ExternalName = 'msdyn_pricelist';
- ExternalType = 'Lookup';
- Description = 'Price List that determines the pricing for this service';
- Caption = 'Price List';
- TableRelation = "CRM Pricelevel".PriceLevelId;
- DataClassification = SystemMetadata;
- }
- field(81; Service; GUID)
- {
- ExternalName = 'msdyn_service';
- ExternalType = 'Lookup';
- Description = 'Service proposed or used for this work order';
- Caption = 'Service';
- TableRelation = "CRM Product".ProductId;
- DataClassification = SystemMetadata;
- }
- field(82; Subtotal; Decimal)
- {
- ExternalName = 'msdyn_subtotal';
- ExternalType = 'Money';
- Description = 'Enter the total amount excluding discounts.';
- Caption = 'Subtotal';
- DataClassification = SystemMetadata;
- }
- field(83; Subtotal_Base; Decimal)
- {
- ExternalName = 'msdyn_subtotal_base';
- ExternalType = 'Money';
- ExternalAccess = Read;
- Description = 'Shows the value of the subtotal in the base currency.';
- Caption = 'Subtotal (Base)';
- DataClassification = SystemMetadata;
- }
- field(84; Taxable; Boolean)
- {
- ExternalName = 'msdyn_taxable';
- ExternalType = 'Boolean';
- Description = 'Specify if service is taxable. If you do not wish to charge tax set this field to No.';
- Caption = 'Taxable';
- DataClassification = SystemMetadata;
- }
- field(86; TotalAmount; Decimal)
- {
- ExternalName = 'msdyn_totalamount';
- ExternalType = 'Money';
- Caption = 'Total Amount';
- DataClassification = SystemMetadata;
- }
- field(87; TotalAmount_Base; Decimal)
- {
- ExternalName = 'msdyn_totalamount_base';
- ExternalType = 'Money';
- ExternalAccess = Read;
- Description = 'Shows the value of the total amount in the base currency.';
- Caption = 'Total Amount (Base)';
- DataClassification = SystemMetadata;
- }
- field(88; TotalCost; Decimal)
- {
- ExternalName = 'msdyn_totalcost';
- ExternalType = 'Money';
- Description = 'Shows the total cost of this service. This is calculated by (Unit Cost * Units) + Additional Cost + Commission Costs.';
- Caption = 'Total Cost';
- DataClassification = SystemMetadata;
- }
- field(89; TotalCost_Base; Decimal)
- {
- ExternalName = 'msdyn_totalcost_base';
- ExternalType = 'Money';
- ExternalAccess = Read;
- Description = 'Shows the value of the total cost in the base currency.';
- Caption = 'Total Cost (Base)';
- DataClassification = SystemMetadata;
- }
- field(90; Unit; GUID)
- {
- ExternalName = 'msdyn_unit';
- ExternalType = 'Lookup';
- Description = 'The unit that determines the final quantity for this service';
- Caption = 'Unit';
- TableRelation = "CRM Uom".UoMId;
- DataClassification = SystemMetadata;
- }
- field(91; UnitAmount; Decimal)
- {
- ExternalName = 'msdyn_unitamount';
- ExternalType = 'Money';
- Description = 'Enter the amount you want to charge the customer per unit. By default, this is calculated based on the selected price list. The amount can be changed.';
- Caption = 'Unit Amount';
- DataClassification = SystemMetadata;
- }
- field(92; UnitAmount_Base; Decimal)
- {
- ExternalName = 'msdyn_unitamount_base';
- ExternalType = 'Money';
- ExternalAccess = Read;
- Description = 'Shows the value of the unit amount in the base currency.';
- Caption = 'Unit Amount (Base)';
- DataClassification = SystemMetadata;
- }
- field(93; UnitCost; Decimal)
- {
- ExternalName = 'msdyn_unitcost';
- ExternalType = 'Money';
- Description = 'Shows the actual cost per unit.';
- Caption = 'Unit Cost';
- DataClassification = SystemMetadata;
- }
- field(94; UnitCost_Base; Decimal)
- {
- ExternalName = 'msdyn_unitcost_base';
- ExternalType = 'Money';
- ExternalAccess = Read;
- Description = 'Shows the value of the unit cost in the base currency.';
- Caption = 'Unit Cost (Base)';
- DataClassification = SystemMetadata;
- }
- field(95; WorkOrder; GUID)
- {
- ExternalName = 'msdyn_workorder';
- ExternalType = 'Lookup';
- Description = 'The work order this service relates to';
- Caption = 'Work Order';
- TableRelation = "FS Work Order".WorkOrderId;
- DataClassification = SystemMetadata;
- }
- field(96; WorkOrderIncident; GUID)
- {
- ExternalName = 'msdyn_workorderincident';
- ExternalType = 'Lookup';
- Description = 'The Incident related to this product';
- Caption = 'Work Order Incident';
- TableRelation = "FS Work Order Incident".WorkOrderIncidentId;
- DataClassification = SystemMetadata;
- }
- field(97; BookingName; Text[100])
- {
- FieldClass = FlowField;
- CalcFormula = lookup("FS Bookable Resource Booking".Name where(BookableResourceBookingId = field(Booking)));
- ExternalName = 'msdyn_bookingname';
- ExternalType = 'String';
- ExternalAccess = Read;
- }
- field(100; CustomerAssetName; Text[100])
- {
- FieldClass = FlowField;
- CalcFormula = lookup("FS Customer Asset".Name where(CustomerAssetId = field(CustomerAsset)));
- ExternalName = 'msdyn_customerassetname';
- ExternalType = 'String';
- ExternalAccess = Read;
- }
- field(101; WorkOrderName; Text[100])
- {
- FieldClass = FlowField;
- CalcFormula = lookup("FS Work Order".Name where(WorkOrderId = field(WorkOrder)));
- ExternalName = 'msdyn_workordername';
- ExternalType = 'String';
- ExternalAccess = Read;
- }
- field(102; WorkOrderIncidentName; Text[100])
- {
- FieldClass = FlowField;
- CalcFormula = lookup("FS Work Order Incident".Name where(WorkOrderIncidentId = field(WorkOrderIncident)));
- ExternalName = 'msdyn_workorderincidentname';
- ExternalType = 'String';
- ExternalAccess = Read;
- }
- field(106; CompanyId; GUID)
- {
- ExternalName = 'bcbi_company';
- ExternalType = 'Lookup';
- Description = 'Business Central Company';
- Caption = 'Company Id';
- TableRelation = "CDS Company".CompanyId;
- DataClassification = SystemMetadata;
- }
- field(107; ProjectTask; GUID)
- {
- ExternalName = 'bcbi_projecttask';
- ExternalType = 'Lookup';
- Description = 'Business Central Project Task';
- Caption = 'External Project';
- TableRelation = "FS Project Task".ProjectTaskId;
- DataClassification = SystemMetadata;
- }
- field(108; WorkOrderStatus; Option)
- {
- ExternalName = 'bcbi_workorderstatus';
- ExternalType = 'Picklist';
- Description = 'The system status of the work order';
- Caption = 'Work Order Status';
- InitValue = " ";
- OptionMembers = " ",Unscheduled,Scheduled,InProgress,Completed,Posted,Canceled;
- OptionOrdinalValues = -1, 690970000, 690970001, 690970002, 690970003, 690970004, 690970005;
- DataClassification = SystemMetadata;
- }
- field(112; DurationConsumed; Integer)
- {
- ExternalName = 'bcbi_durationconsumed';
- ExternalType = 'Integer';
- Description = 'Duration consumed in Dynamics 365 Business Central';
- Caption = 'Duration Consumed';
- }
- field(113; DurationInvoiced; Integer)
- {
- ExternalName = 'bcbi_durationinvoiced';
- ExternalType = 'Integer';
- Description = 'Duration invoiced in Dynamics 365 Business Central. When this value is different than 0, you can no longer edit the work order service.';
- Caption = 'Duration Invoiced';
- }
- }
- keys
- {
- key(PK; workorderserviceId)
- {
- Clustered = true;
- }
- key(Name; Name)
- {
- }
- }
- fieldgroups
- {
- fieldgroup(DropDown; Name)
- {
- }
- }
-}
\ No newline at end of file
diff --git a/Apps/W1/FieldServiceIntegration/app/src/Tables/FSWorkOrderSubstatus.Table.al b/Apps/W1/FieldServiceIntegration/app/src/Tables/FSWorkOrderSubstatus.Table.al
deleted file mode 100644
index 62b6e4fd77..0000000000
--- a/Apps/W1/FieldServiceIntegration/app/src/Tables/FSWorkOrderSubstatus.Table.al
+++ /dev/null
@@ -1,233 +0,0 @@
-// ------------------------------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License. See License.txt in the project root for license information.
-// ------------------------------------------------------------------------------------------------
-namespace Microsoft.Integration.DynamicsFieldService;
-
-using Microsoft.Integration.D365Sales;
-
-table 6621 "FS Work Order Substatus"
-{
- ExternalName = 'msdyn_workordersubstatus';
- TableType = CRM;
- Description = 'Specify custom work order substatuses, which can be used to specify the current work order status more precisely.';
- DataClassification = SystemMetadata;
-
- fields
- {
- field(1; WorkOrderSubstatusId; GUID)
- {
- ExternalName = 'msdyn_workordersubstatusid';
- ExternalType = 'Uniqueidentifier';
- ExternalAccess = Insert;
- Description = 'Shows the entity instances.';
- Caption = 'Work Order Substatus';
- DataClassification = SystemMetadata;
- }
- field(2; CreatedOn; Datetime)
- {
- ExternalName = 'createdon';
- ExternalType = 'DateTime';
- ExternalAccess = Read;
- Description = 'Shows the date and time when the record was created. The date and time are displayed in the time zone selected in Microsoft Dynamics 365 options.';
- Caption = 'Created On';
- DataClassification = SystemMetadata;
- }
- field(3; CreatedBy; GUID)
- {
- ExternalName = 'createdby';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Unique identifier of the user who created the record.';
- Caption = 'Created By';
- TableRelation = "CRM Systemuser".SystemUserId;
- DataClassification = SystemMetadata;
- }
- field(4; ModifiedOn; Datetime)
- {
- ExternalName = 'modifiedon';
- ExternalType = 'DateTime';
- ExternalAccess = Read;
- Description = 'Shows the date and time when the record was last updated. The date and time are displayed in the time zone selected in Microsoft Dynamics 365 options.';
- Caption = 'Modified On';
- DataClassification = SystemMetadata;
- }
- field(5; ModifiedBy; GUID)
- {
- ExternalName = 'modifiedby';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Unique identifier of the user who modified the record.';
- Caption = 'Modified By';
- TableRelation = "CRM Systemuser".SystemUserId;
- DataClassification = SystemMetadata;
- }
- field(6; CreatedOnBehalfBy; GUID)
- {
- ExternalName = 'createdonbehalfby';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Shows who created the record on behalf of another user.';
- Caption = 'Created By (Delegate)';
- TableRelation = "CRM Systemuser".SystemUserId;
- DataClassification = SystemMetadata;
- }
- field(7; ModifiedOnBehalfBy; GUID)
- {
- ExternalName = 'modifiedonbehalfby';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Shows who last updated the record on behalf of another user.';
- Caption = 'Modified By (Delegate)';
- TableRelation = "CRM Systemuser".SystemUserId;
- DataClassification = SystemMetadata;
- }
- field(16; OwnerId; GUID)
- {
- ExternalName = 'ownerid';
- ExternalType = 'Owner';
- Description = 'Owner Id';
- Caption = 'Owner';
- DataClassification = SystemMetadata;
- }
- field(21; OwningBusinessUnit; GUID)
- {
- ExternalName = 'owningbusinessunit';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Unique identifier for the business unit that owns the record';
- Caption = 'Owning Business Unit';
- TableRelation = "CRM Businessunit".BusinessUnitId;
- DataClassification = SystemMetadata;
- }
- field(22; OwningUser; GUID)
- {
- ExternalName = 'owninguser';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Unique identifier for the user that owns the record.';
- Caption = 'Owning User';
- TableRelation = "CRM Systemuser".SystemUserId;
- DataClassification = SystemMetadata;
- }
- field(23; OwningTeam; GUID)
- {
- ExternalName = 'owningteam';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Unique identifier for the team that owns the record.';
- Caption = 'Owning Team';
- TableRelation = "CRM Team".TeamId;
- DataClassification = SystemMetadata;
- }
- field(25; StateCode; Option)
- {
- ExternalName = 'statecode';
- ExternalType = 'State';
- ExternalAccess = Modify;
- Description = 'Status of the Work Order Substatus';
- Caption = 'Status';
- InitValue = " ";
- OptionMembers = " ",Active,Inactive;
- OptionOrdinalValues = -1, 0, 1;
- DataClassification = SystemMetadata;
- }
- field(27; StatusCode; Option)
- {
- ExternalName = 'statuscode';
- ExternalType = 'Status';
- Description = 'Reason for the status of the Work Order Substatus';
- Caption = 'Status Reason';
- InitValue = " ";
- OptionMembers = " ",Active,Inactive;
- OptionOrdinalValues = -1, 1, 2;
- DataClassification = SystemMetadata;
- }
- field(29; VersionNumber; BigInteger)
- {
- ExternalName = 'versionnumber';
- ExternalType = 'BigInt';
- ExternalAccess = Read;
- Description = 'Version Number';
- Caption = 'Version Number';
- DataClassification = SystemMetadata;
- }
- field(30; ImportSequenceNumber; Integer)
- {
- ExternalName = 'importsequencenumber';
- ExternalType = 'Integer';
- ExternalAccess = Insert;
- Description = 'Shows the sequence number of the import that created this record.';
- Caption = 'Import Sequence Number';
- DataClassification = SystemMetadata;
- }
- field(31; OverriddenCreatedOn; Date)
- {
- ExternalName = 'overriddencreatedon';
- ExternalType = 'DateTime';
- ExternalAccess = Insert;
- Description = 'Shows the date and time that the record was migrated.';
- Caption = 'Record Created On';
- DataClassification = SystemMetadata;
- }
- field(32; TimeZoneRuleVersionNumber; Integer)
- {
- ExternalName = 'timezoneruleversionnumber';
- ExternalType = 'Integer';
- Description = 'For internal use only.';
- Caption = 'Time Zone Rule Version Number';
- DataClassification = SystemMetadata;
- }
- field(33; UTCConversionTimeZoneCode; Integer)
- {
- ExternalName = 'utcconversiontimezonecode';
- ExternalType = 'Integer';
- Description = 'Shows the time zone code that was in use when the record was created.';
- Caption = 'UTC Conversion Time Zone Code';
- DataClassification = SystemMetadata;
- }
- field(34; Name; Text[100])
- {
- ExternalName = 'msdyn_name';
- ExternalType = 'String';
- Description = 'Shows the work order status name.';
- Caption = 'Name';
- DataClassification = SystemMetadata;
- }
- field(35; DefaultSubStatus; Boolean)
- {
- ExternalName = 'msdyn_defaultsubstatus';
- ExternalType = 'Boolean';
- Description = 'Specify whether this substatus should be the default substatus for this status type.';
- Caption = 'Default Substatus';
- DataClassification = SystemMetadata;
- }
- field(37; SystemStatus; Option)
- {
- ExternalName = 'msdyn_systemstatus';
- ExternalType = 'Picklist';
- Description = 'Specify the system status.';
- Caption = 'System Status';
- InitValue = " ";
- OptionMembers = " ",Unscheduled,Scheduled,InProgress,Completed,Posted,Canceled;
- OptionOrdinalValues = -1, 690970000, 690970001, 690970002, 690970003, 690970004, 690970005;
- DataClassification = SystemMetadata;
- }
- }
- keys
- {
- key(PK; WorkOrderSubstatusId)
- {
- Clustered = true;
- }
- key(Name; Name)
- {
- }
- }
- fieldgroups
- {
- fieldgroup(DropDown; Name)
- {
- }
- }
-}
\ No newline at end of file
diff --git a/Apps/W1/FieldServiceIntegration/app/src/Tables/FSWorkOrderType.Table.al b/Apps/W1/FieldServiceIntegration/app/src/Tables/FSWorkOrderType.Table.al
deleted file mode 100644
index 5929311a8b..0000000000
--- a/Apps/W1/FieldServiceIntegration/app/src/Tables/FSWorkOrderType.Table.al
+++ /dev/null
@@ -1,239 +0,0 @@
-// ------------------------------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License. See License.txt in the project root for license information.
-// ------------------------------------------------------------------------------------------------
-namespace Microsoft.Integration.DynamicsFieldService;
-
-using Microsoft.Integration.D365Sales;
-
-table 6622 "FS Work Order Type"
-{
- ExternalName = 'msdyn_workordertype';
- TableType = CRM;
- Description = 'Create different work order types to reflect the different types of work that your company offers. Work Order types are used to control various settings on a work order.';
- DataClassification = SystemMetadata;
-
- fields
- {
- field(1; WorkOrderTypeId; GUID)
- {
- ExternalName = 'msdyn_workordertypeid';
- ExternalType = 'Uniqueidentifier';
- ExternalAccess = Insert;
- Description = 'Shows the entity instances.';
- Caption = 'Work Order Type';
- DataClassification = SystemMetadata;
- }
- field(2; CreatedOn; Datetime)
- {
- ExternalName = 'createdon';
- ExternalType = 'DateTime';
- ExternalAccess = Read;
- Description = 'Shows the date and time when the record was created. The date and time are displayed in the time zone selected in Microsoft Dynamics 365 options.';
- Caption = 'Created On';
- DataClassification = SystemMetadata;
- }
- field(3; CreatedBy; GUID)
- {
- ExternalName = 'createdby';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Unique identifier of the user who created the record.';
- Caption = 'Created By';
- TableRelation = "CRM Systemuser".SystemUserId;
- DataClassification = SystemMetadata;
- }
- field(4; ModifiedOn; Datetime)
- {
- ExternalName = 'modifiedon';
- ExternalType = 'DateTime';
- ExternalAccess = Read;
- Description = 'Shows the date and time when the record was last updated. The date and time are displayed in the time zone selected in Microsoft Dynamics 365 options.';
- Caption = 'Modified On';
- DataClassification = SystemMetadata;
- }
- field(5; ModifiedBy; GUID)
- {
- ExternalName = 'modifiedby';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Unique identifier of the user who modified the record.';
- Caption = 'Modified By';
- TableRelation = "CRM Systemuser".SystemUserId;
- DataClassification = SystemMetadata;
- }
- field(6; CreatedOnBehalfBy; GUID)
- {
- ExternalName = 'createdonbehalfby';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Shows who created the record on behalf of another user.';
- Caption = 'Created By (Delegate)';
- TableRelation = "CRM Systemuser".SystemUserId;
- DataClassification = SystemMetadata;
- }
- field(7; ModifiedOnBehalfBy; GUID)
- {
- ExternalName = 'modifiedonbehalfby';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Shows who last updated the record on behalf of another user.';
- Caption = 'Modified By (Delegate)';
- TableRelation = "CRM Systemuser".SystemUserId;
- DataClassification = SystemMetadata;
- }
- field(16; OwnerId; GUID)
- {
- ExternalName = 'ownerid';
- ExternalType = 'Owner';
- Description = 'Owner Id';
- Caption = 'Owner';
- DataClassification = SystemMetadata;
- }
- field(21; OwningBusinessUnit; GUID)
- {
- ExternalName = 'owningbusinessunit';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Unique identifier for the business unit that owns the record';
- Caption = 'Owning Business Unit';
- TableRelation = "CRM Businessunit".BusinessUnitId;
- DataClassification = SystemMetadata;
- }
- field(22; OwningUser; GUID)
- {
- ExternalName = 'owninguser';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Unique identifier for the user that owns the record.';
- Caption = 'Owning User';
- TableRelation = "CRM Systemuser".SystemUserId;
- DataClassification = SystemMetadata;
- }
- field(23; OwningTeam; GUID)
- {
- ExternalName = 'owningteam';
- ExternalType = 'Lookup';
- ExternalAccess = Read;
- Description = 'Unique identifier for the team that owns the record.';
- Caption = 'Owning Team';
- TableRelation = "CRM Team".TeamId;
- DataClassification = SystemMetadata;
- }
- field(25; StateCode; Option)
- {
- ExternalName = 'statecode';
- ExternalType = 'State';
- ExternalAccess = Modify;
- Description = 'Status of the Work Order Type';
- Caption = 'Status';
- InitValue = " ";
- OptionMembers = " ",Active,Inactive;
- OptionOrdinalValues = -1, 0, 1;
- DataClassification = SystemMetadata;
- }
- field(27; StatusCode; Option)
- {
- ExternalName = 'statuscode';
- ExternalType = 'Status';
- Description = 'Reason for the status of the Work Order Type';
- Caption = 'Status Reason';
- InitValue = " ";
- OptionMembers = " ",Active,Inactive;
- OptionOrdinalValues = -1, 1, 2;
- DataClassification = SystemMetadata;
- }
- field(29; VersionNumber; BigInteger)
- {
- ExternalName = 'versionnumber';
- ExternalType = 'BigInt';
- ExternalAccess = Read;
- Description = 'Version Number';
- Caption = 'Version Number';
- DataClassification = SystemMetadata;
- }
- field(30; ImportSequenceNumber; Integer)
- {
- ExternalName = 'importsequencenumber';
- ExternalType = 'Integer';
- ExternalAccess = Insert;
- Description = 'Shows the sequence number of the import that created this record.';
- Caption = 'Import Sequence Number';
- DataClassification = SystemMetadata;
- }
- field(31; OverriddenCreatedOn; Date)
- {
- ExternalName = 'overriddencreatedon';
- ExternalType = 'DateTime';
- ExternalAccess = Insert;
- Description = 'Shows the date and time that the record was migrated.';
- Caption = 'Record Created On';
- DataClassification = SystemMetadata;
- }
- field(32; TimeZoneRuleVersionNumber; Integer)
- {
- ExternalName = 'timezoneruleversionnumber';
- ExternalType = 'Integer';
- Description = 'For internal use only.';
- Caption = 'Time Zone Rule Version Number';
- DataClassification = SystemMetadata;
- }
- field(33; UTCConversionTimeZoneCode; Integer)
- {
- ExternalName = 'utcconversiontimezonecode';
- ExternalType = 'Integer';
- Description = 'Shows the time zone code that was in use when the record was created.';
- Caption = 'UTC Conversion Time Zone Code';
- DataClassification = SystemMetadata;
- }
- field(34; Name; Text[100])
- {
- ExternalName = 'msdyn_name';
- ExternalType = 'String';
- Description = 'Type the name of the work order type.';
- Caption = 'Name';
- DataClassification = SystemMetadata;
- }
- field(35; IncidentRequired; Boolean)
- {
- ExternalName = 'msdyn_incidentrequired';
- ExternalType = 'Boolean';
- Description = 'Select whether work orders of this type require an incident to be recorded on the work order.';
- Caption = 'Incident Required';
- DataClassification = SystemMetadata;
- }
- field(37; PriceList; GUID)
- {
- ExternalName = 'msdyn_pricelist';
- ExternalType = 'Lookup';
- Description = 'Default Price List to be used on Work Orders linked to this Work Order Type. Please review the help for further details on Price Lists';
- Caption = 'Price List';
- TableRelation = "CRM Pricelevel".PriceLevelId;
- DataClassification = SystemMetadata;
- }
- field(38; Taxable; Boolean)
- {
- ExternalName = 'msdyn_taxable';
- ExternalType = 'Boolean';
- Description = 'Select whether work orders of this type are taxable.';
- Caption = 'Taxable';
- DataClassification = SystemMetadata;
- }
- }
- keys
- {
- key(PK; workordertypeId)
- {
- Clustered = true;
- }
- key(Name; Name)
- {
- }
- }
- fieldgroups
- {
- fieldgroup(DropDown; Name)
- {
- }
- }
-}
\ No newline at end of file
diff --git a/Apps/W1/FieldServiceIntegration/test library/ExtensionLogo.png b/Apps/W1/FieldServiceIntegration/test library/ExtensionLogo.png
deleted file mode 100644
index 4d2c9a626c..0000000000
Binary files a/Apps/W1/FieldServiceIntegration/test library/ExtensionLogo.png and /dev/null differ
diff --git a/Apps/W1/FieldServiceIntegration/test library/app.json b/Apps/W1/FieldServiceIntegration/test library/app.json
deleted file mode 100644
index 8cb20a4d39..0000000000
--- a/Apps/W1/FieldServiceIntegration/test library/app.json
+++ /dev/null
@@ -1,43 +0,0 @@
-{
- "id": "41b3ab6e-3f20-47c7-a67f-feccc4d58a55",
- "name": "Field Service Integration Test Library",
- "publisher": "Microsoft",
- "brief": "Test library for the Field Service Integration extension.",
- "description": "Test library for the Field Service Integration extension.",
- "version": "25.0.0.0",
- "privacyStatement": "https://go.microsoft.com/fwlink/?LinkId=724009",
- "EULA": "https://go.microsoft.com/fwlink/?linkid=2182906",
- "help": "https://go.microsoft.com/fwlink/?linkid=2206519",
- "contextSensitiveHelpUrl": "https://learn.microsoft.com/dynamics365/business-central/",
- "url": "https://go.microsoft.com/fwlink/?LinkId=724011",
- "logo": "ExtensionLogo.png",
- "dependencies": [
- {
- "id": "1ba1031e-eae9-4f20-b9d2-d19b6d1e3f29",
- "name": "Field Service Integration",
- "publisher": "Microsoft",
- "version": "25.0.0.0"
- }
- ],
- "screenshots": [
-
- ],
- "platform": "25.0.0.0",
- "target": "OnPrem",
- "resourceExposurePolicy": {
- "allowDebugging": false,
- "allowDownloadingSource": true,
- "includeSourceInSymbolFile": true
- },
- "application": "25.0.0.0",
- "idRanges": [
- {
- "from": 139205,
- "to": 139205
- }
- ],
- "features": [
- "NoImplicitWith",
- "TranslationFile"
- ]
-}
\ No newline at end of file
diff --git a/Apps/W1/FieldServiceIntegration/test library/src/FSIntegrationTestLibrary.Codeunit.al b/Apps/W1/FieldServiceIntegration/test library/src/FSIntegrationTestLibrary.Codeunit.al
deleted file mode 100644
index dcc5054f25..0000000000
--- a/Apps/W1/FieldServiceIntegration/test library/src/FSIntegrationTestLibrary.Codeunit.al
+++ /dev/null
@@ -1,30 +0,0 @@
-// ------------------------------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License. See License.txt in the project root for license information.
-// ------------------------------------------------------------------------------------------------
-namespace Microsoft.TestLibraries.DynamicsFieldService;
-
-using Microsoft.Integration.DynamicsFieldService;
-
-codeunit 139205 "FS Integration Test Library"
-{
- procedure RegisterConnection(var FSConnectionSetup: Record "FS Connection Setup")
- begin
- FSConnectionSetup.RegisterConnection();
- end;
-
- procedure UnregisterConnection(var FSConnectionSetup: Record "FS Connection Setup")
- begin
- FSConnectionSetup.UnregisterConnection();
- end;
-
- procedure SetPassword(var FSConnectionSetup: Record "FS Connection Setup"; Password: SecretText)
- begin
- FSConnectionSetup.SetPassword(Password);
- end;
-
- procedure PerformTestConnection(var FSConnectionSetup: Record "FS Connection Setup")
- begin
- FSConnectionSetup.PerformTestConnection();
- end;
-}
\ No newline at end of file
diff --git a/Apps/W1/INTaxEngine/app/TaxEngine-PostingHandler/src/PostingManagement/codeunit/TaxPostingBufferMgmt.Codeunit.al b/Apps/W1/INTaxEngine/app/TaxEngine-PostingHandler/src/PostingManagement/codeunit/TaxPostingBufferMgmt.Codeunit.al
index cb79447f8d..74b491eb06 100644
--- a/Apps/W1/INTaxEngine/app/TaxEngine-PostingHandler/src/PostingManagement/codeunit/TaxPostingBufferMgmt.Codeunit.al
+++ b/Apps/W1/INTaxEngine/app/TaxEngine-PostingHandler/src/PostingManagement/codeunit/TaxPostingBufferMgmt.Codeunit.al
@@ -231,6 +231,7 @@ codeunit 20343 "Tax Posting Buffer Mgmt."
TempGroupTaxPostingBuffer.SetRange("Gen. Prod. Posting Group", TempTaxPostingBuffer."Gen. Prod. Posting Group");
TempGroupTaxPostingBuffer.SetRange("Component ID", TempTaxPostingBuffer."Component ID");
TempGroupTaxPostingBuffer.SetRange("Dimension Set ID", TempTaxPostingBuffer."Dimension Set ID");
+ OnFindTempGroupTaxPostingBuffer(TempGroupTaxPostingBuffer, TempTaxPostingBuffer, Quantity, InvoiceQty);
if not TempGroupTaxPostingBuffer.FindFirst() then begin
TempGroupTaxPostingBuffer := TempTaxPostingBuffer;
TempGroupTaxPostingBuffer."Group ID" := CreateGuid();
@@ -254,10 +255,16 @@ codeunit 20343 "Tax Posting Buffer Mgmt."
end;
procedure GetGroupTaxJournal(TaxID: Guid; var TempGroupTaxPostingBuffer2: Record "Transaction Posting Buffer")
+ var
+ IsHandled: Boolean;
begin
TempGroupTaxPostingBuffer2.Reset();
TempGroupTaxPostingBuffer2.DeleteAll();
+ OnBeforeInitTempGroupTaxPostingBuffer2(TempGroupTaxPostingBuffer2, TempGroupTaxPostingBuffer, TaxID, IsHandled);
+ if IsHandled then
+ exit;
+
TempGroupTaxPostingBuffer.Reset();
TempGroupTaxPostingBuffer.SetRange("Tax Id", TaxID);
TempGroupTaxPostingBuffer.SetRange("Skip Posting", false);
@@ -442,6 +449,16 @@ codeunit 20343 "Tax Posting Buffer Mgmt."
begin
end;
+ [IntegrationEvent(true, false)]
+ local procedure OnFindTempGroupTaxPostingBuffer(var TempGroupTaxPostingBuffer: Record "Transaction Posting Buffer" temporary; TempTaxPostingBuffer: Record "Transaction Posting Buffer" temporary; Quantity: Decimal; InvoiceQty: Decimal)
+ begin
+ end;
+
+ [IntegrationEvent(true, false)]
+ local procedure OnBeforeInitTempGroupTaxPostingBuffer2(var TempGroupTaxPostingBuffer2: Record "Transaction Posting Buffer" temporary; var TempGroupTaxPostingBuffer: Record "Transaction Posting Buffer" temporary; TaxID: Guid; var IsHandled: Boolean)
+ begin
+ end;
+
var
TempTaxPostingBuffer: Record "Transaction Posting Buffer" temporary;
TempGroupTaxPostingBuffer: Record "Transaction Posting Buffer" temporary;
diff --git a/Apps/W1/INTaxEngine/app/TaxEngine-PostingHandler/src/PostingManagement/table/TransactionPostingBuffer.Table.al b/Apps/W1/INTaxEngine/app/TaxEngine-PostingHandler/src/PostingManagement/table/TransactionPostingBuffer.Table.al
index 520b7fd85e..8b2c71ae2a 100644
--- a/Apps/W1/INTaxEngine/app/TaxEngine-PostingHandler/src/PostingManagement/table/TransactionPostingBuffer.Table.al
+++ b/Apps/W1/INTaxEngine/app/TaxEngine-PostingHandler/src/PostingManagement/table/TransactionPostingBuffer.Table.al
@@ -13,7 +13,6 @@ table 20336 "Transaction Posting Buffer"
Caption = 'Transaction Posting Buffer';
DataClassification = EndUserIdentifiableInformation;
TableType = Temporary;
- Access = Internal;
Extensible = false;
fields
{
diff --git a/Apps/W1/Intrastat/app/src/IntrastatReportManagement.Codeunit.al b/Apps/W1/Intrastat/app/src/IntrastatReportManagement.Codeunit.al
index e37fb6774f..dccb13b89c 100644
--- a/Apps/W1/Intrastat/app/src/IntrastatReportManagement.Codeunit.al
+++ b/Apps/W1/Intrastat/app/src/IntrastatReportManagement.Codeunit.al
@@ -107,9 +107,15 @@ codeunit 4810 IntrastatReportManagement
var
IntrastatReportSetup: Record "Intrastat Report Setup";
Job: Record Job;
+ IsHandled: Boolean;
begin
IntrastatReportSetup.Get();
+ IsHandled := false;
+ OnBeforeGetIntrastatBaseCountryCodeFromJLE(JobLedgerEntry, IntrastatReportSetup, CountryCode, IsHandled);
+ if IsHandled then
+ exit(CountryCode);
+
CountryCode := JobLedgerEntry."Country/Region Code";
if Job.Get(JobLedgerEntry."Job No.") then
@@ -130,9 +136,15 @@ codeunit 4810 IntrastatReportManagement
PurchCrMemoHdr: Record "Purch. Cr. Memo Hdr.";
SalesInvHeader: Record "Sales Invoice Header";
SalesCrMemoHeader: Record "Sales Cr.Memo Header";
+ IsHandled: Boolean;
begin
IntrastatReportSetup.Get();
+ IsHandled := false;
+ OnBeforeGetIntrastatBaseCountryCodeFromFALE(FALedgerEntry, IntrastatReportSetup, CountryCode, IsHandled);
+ if IsHandled then
+ exit(CountryCode);
+
CountryCode := '';
if FALedgerEntry."FA Posting Type" = FALedgerEntry."FA Posting Type"::"Acquisition Cost" then
@@ -383,6 +395,7 @@ codeunit 4810 IntrastatReportManagement
CompanyInformation.Get();
if not IntrastatReportSetup.Get() then
exit(CompanyInformation."VAT Registration No.");
+ OnGetCompanyVATRegNoOnAfterGetIntrastatReportSetup(CompanyInformation, IntrastatReportSetup);
exit(
GetVATRegNo(
CompanyInformation."Country/Region Code", CompanyInformation."VAT Registration No.",
@@ -539,6 +552,7 @@ codeunit 4810 IntrastatReportManagement
end;
IntrastatReportSetup.Get();
+ OnExportWithDataExchOnAfterGetIntrastatReportSetup(IntrastatReportSetup, IntrastatReportHeader);
if IntrastatReportSetup."Split Files" then begin
IntrastatReportSetup.TestField("Data Exch. Def. Code - Receipt");
IntrastatReportSetup.TestField("Data Exch. Def. Code - Shpt.");
@@ -1119,4 +1133,24 @@ codeunit 4810 IntrastatReportManagement
local procedure OnBeforeGetIntrastatBaseCountryCode(var ItemLedgerEntry: Record "Item Ledger Entry"; var IntrastatReportSetup: Record "Intrastat Report Setup"; var CountryCode: Code[10]; var IsHandled: Boolean)
begin
end;
+
+ [IntegrationEvent(false, false)]
+ local procedure OnBeforeGetIntrastatBaseCountryCodeFromJLE(var JobLedgerEntry: Record "Job Ledger Entry"; var IntrastatReportSetup: Record "Intrastat Report Setup"; var CountryCode: Code[10]; var IsHandled: Boolean)
+ begin
+ end;
+
+ [IntegrationEvent(false, false)]
+ local procedure OnBeforeGetIntrastatBaseCountryCodeFromFALE(var FALedgerEntry: Record "FA Ledger Entry"; var IntrastatReportSetup: Record "Intrastat Report Setup"; var CountryCode: Code[10]; var IsHandled: Boolean)
+ begin
+ end;
+
+ [IntegrationEvent(false, false)]
+ local procedure OnGetCompanyVATRegNoOnAfterGetIntrastatReportSetup(var CompanyInformation: Record "Company Information"; var IntrastatReportSetup: Record "Intrastat Report Setup")
+ begin
+ end;
+
+ [IntegrationEvent(false, false)]
+ local procedure OnExportWithDataExchOnAfterGetIntrastatReportSetup(var IntrastatReportSetup: Record "Intrastat Report Setup"; var IntrastatReportHeader: Record "Intrastat Report Header")
+ begin
+ end;
}
\ No newline at end of file
diff --git a/Apps/W1/MasterDataManagement/app/src/pages/MasterDataSynchTables.Page.al b/Apps/W1/MasterDataManagement/app/src/pages/MasterDataSynchTables.Page.al
index 0357b0ceca..e59083811e 100644
--- a/Apps/W1/MasterDataManagement/app/src/pages/MasterDataSynchTables.Page.al
+++ b/Apps/W1/MasterDataManagement/app/src/pages/MasterDataSynchTables.Page.al
@@ -323,7 +323,7 @@ page 7233 "Master Data Synch. Tables"
{
ApplicationArea = Suite;
Caption = 'Synchronize Modified Records';
- Enabled = HasRecords and (Rec."Parent Name" = '');
+ Enabled = HasRecords and (Rec."Parent Name" = '') and DataSynchEnabled;
Image = Refresh;
ToolTip = 'Synchronize records that have been modified since the last time they were synchronized.';
@@ -352,7 +352,7 @@ page 7233 "Master Data Synch. Tables"
{
ApplicationArea = Suite;
Caption = 'Run Full Synchronization';
- Enabled = HasRecords and (Rec."Parent Name" = '');
+ Enabled = HasRecords and (Rec."Parent Name" = '') and DataSynchEnabled;
Image = RefreshLines;
ToolTip = 'Start a job for full synchronization from records in the chosen source company for each of the selected tables.';
@@ -377,8 +377,7 @@ page 7233 "Master Data Synch. Tables"
{
ApplicationArea = Suite;
Caption = 'Integration Uncouple Job Log';
- Enabled = HasRecords;
- Visible = DataSynchEnabled;
+ Enabled = HasRecords and DataSynchEnabled;
Image = Log;
ToolTip = 'View the status of jobs for uncoupling records.';
@@ -394,8 +393,7 @@ page 7233 "Master Data Synch. Tables"
{
ApplicationArea = Suite;
Caption = 'Integration Coupling Job Log';
- Enabled = HasRecords;
- Visible = DataSynchEnabled;
+ Enabled = HasRecords and DataSynchEnabled;
Image = Log;
ToolTip = 'View the status of jobs for match-based coupling of records.';
@@ -411,8 +409,7 @@ page 7233 "Master Data Synch. Tables"
{
ApplicationArea = Suite;
Caption = 'Delete Couplings';
- Enabled = HasRecords and (Rec."Parent Name" = '');
- Visible = DataSynchEnabled;
+ Enabled = HasRecords and (Rec."Parent Name" = '') and DataSynchEnabled;
Image = UnLinkAccount;
ToolTip = 'Delete couplings for the selected tables.';
@@ -464,8 +461,7 @@ page 7233 "Master Data Synch. Tables"
{
ApplicationArea = Suite;
Caption = 'Match-Based Coupling';
- Enabled = HasRecords and (Rec."Parent Name" = '');
- Visible = DataSynchEnabled;
+ Enabled = HasRecords and (Rec."Parent Name" = '') and DataSynchEnabled;
Image = LinkAccount;
ToolTip = 'Couple existing records in the selected tables based on matching criteria.';
@@ -508,6 +504,9 @@ page 7233 "Master Data Synch. Tables"
actionref(SynchronizeNow_Promoted; SynchronizeNow)
{
}
+ actionref(MatchBasedCoupling_Promoted; MatchBasedCoupling)
+ {
+ }
actionref(JobQueueEntry_Promoted; JobQueueEntry)
{
}
diff --git a/Apps/W1/MicrosoftUniversalPrint/app/src/UniversalPrintGraphHelper.Codeunit.al b/Apps/W1/MicrosoftUniversalPrint/app/src/UniversalPrintGraphHelper.Codeunit.al
index 4d4875a310..8c785298f0 100644
--- a/Apps/W1/MicrosoftUniversalPrint/app/src/UniversalPrintGraphHelper.Codeunit.al
+++ b/Apps/W1/MicrosoftUniversalPrint/app/src/UniversalPrintGraphHelper.Codeunit.al
@@ -102,7 +102,6 @@ codeunit 2752 "Universal Print Graph Helper"
ResponseContent: Text;
begin
BodyConfigJsonObject.Add('outputBin', UniversalPrinterSettings."Paper Tray");
- BodyConfigJsonObject.Add('mediaSize', this.ConvertPaperSizeToUniversalPrintMediaSize(UniversalPrinterSettings."Paper Size"));
if UniversalPrinterSettings.Landscape then
BodyConfigJsonObject.Add('orientation', this.GetOrientationName(Enum::"Universal Printer Orientation"::landscape));
@@ -278,40 +277,6 @@ codeunit 2752 "Universal Print Graph Helper"
RequestId := ResponseHeaders.Get('Request-Id');
end;
- local procedure ConvertPaperSizeToUniversalPrintMediaSize(PaperSize: Enum "Printer Paper Kind"): Text
- var
- UniversalPrintMediaSize: Text;
- begin
- // For universal print supported media sizes, refer https://learn.microsoft.com/en-us/graph/api/resources/printercapabilities?view=graph-rest-1.0#mediasizes-values
- case PaperSize of
- PaperSize::A3:
- UniversalPrintMediaSize := A3SizeTxt;
- PaperSize::A4:
- UniversalPrintMediaSize := A4SizeTxt;
- PaperSize::A5:
- UniversalPrintMediaSize := A5SizeTxt;
- PaperSize::A6:
- UniversalPrintMediaSize := A6SizeTxt;
- PaperSize::JapanesePostcard:
- UniversalPrintMediaSize := JPNHagakiSizeTxt;
- PaperSize::Executive:
- UniversalPrintMediaSize := NorthAmericaExecutiveSizeTxt;
- PaperSize::Ledger:
- UniversalPrintMediaSize := NorthAmericaLedgerSizeTxt;
- PaperSize::Legal:
- UniversalPrintMediaSize := NorthAmericaLegalSizeTxt;
- PaperSize::Letter:
- UniversalPrintMediaSize := NorthAmericaLetterSizeTxt;
- PaperSize::Statement:
- UniversalPrintMediaSize := NorthAmericaInvoiceSizeTxt
- else
- // Use the name value of the enum
- UniversalPrintMediaSize := Format(PaperSize);
- end;
-
- exit(UniversalPrintMediaSize);
- end;
-
internal procedure GetPaperSizeFromUniversalPrintMediaSize(textValue: Text): Enum "Printer Paper Kind"
var
PrinterPaperKind: Enum "Printer Paper Kind";
@@ -465,10 +430,6 @@ codeunit 2752 "Universal Print Graph Helper"
InvokeWebRequestFailedTelemetryTxt: Label 'Invoking web request has failed. Status %1, Message %2, RequestId %3', Locked = true;
NotFoundTelemetryTxt: Label 'Not Found.', Locked = true;
UniversalPrintPortalUrlTxt: Label 'https://go.microsoft.com/fwlink/?linkid=2153618', Locked = true;
- A3SizeTxt: Label 'A3', Locked = true;
- A4SizeTxt: Label 'A4', Locked = true;
- A5SizeTxt: Label 'A5', Locked = true;
- A6SizeTxt: Label 'A6', Locked = true;
JPNHagakiSizeTxt: Label 'JPN Hagaki', Locked = true;
NorthAmericaExecutiveSizeTxt: Label 'North America Executive', Locked = true;
NorthAmericaInvoiceSizeTxt: Label 'North America Invoice', Locked = true;
diff --git a/Apps/W1/SalesLinesSuggestions/app/Attachment/FieldMapper/AttachmentMapping.Table.al b/Apps/W1/SalesLinesSuggestions/app/Attachment/FieldMapper/AttachmentMapping.Table.al
new file mode 100644
index 0000000000..72c350d6f5
--- /dev/null
+++ b/Apps/W1/SalesLinesSuggestions/app/Attachment/FieldMapper/AttachmentMapping.Table.al
@@ -0,0 +1,84 @@
+// ------------------------------------------------------------------------------------------------
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License. See License.txt in the project root for license information.
+// ------------------------------------------------------------------------------------------------
+namespace Microsoft.Sales.Document.Attachment;
+
+table 7277 "Attachment Mapping"
+{
+ InherentEntitlements = X;
+ InherentPermissions = X;
+ TableType = Temporary;
+ Access = Internal;
+
+ fields
+ {
+ field(1; "Entry No."; Integer)
+ {
+ Caption = 'Entry No.';
+ DataClassification = SystemMetadata;
+ }
+ field(2; "Column Name"; Text[2048])
+ {
+ Caption = 'Column Name';
+ DataClassification = SystemMetadata;
+ }
+ field(3; "Column Type"; Enum "Column Type")
+ {
+ Caption = 'Column Type';
+ DataClassification = SystemMetadata;
+ }
+ field(4; "Column Action"; Enum "Column Action")
+ {
+ Caption = 'Column Action';
+ DataClassification = SystemMetadata;
+
+ trigger OnValidate()
+ var
+ TempAttachmentMapping: Record "Attachment Mapping" temporary;
+ begin
+ if Rec."Column Action" = xRec."Column Action" then
+ exit;
+
+ if Rec."Column Action" = Rec."Column Action"::"Quantity Info." then begin
+ if Rec."Column Type" <> Rec."Column Type"::Number then
+ if not Confirm(MismatchColumnTypeQst, false, Rec.FieldCaption("Column Type")) then
+ Error(''); // Cancel the action
+ TempAttachmentMapping.Copy(Rec, true);
+ TempAttachmentMapping.SetFilter("Entry No.", '<> %1', Rec."Entry No.");
+ TempAttachmentMapping.SetRange("Column Action", TempAttachmentMapping."Column Action"::"Quantity Info.");
+ TempAttachmentMapping.ModifyAll("Column Action", Rec."Column Action"::Ignore);
+ end;
+
+ if Rec."Column Action" = Rec."Column Action"::"UoM Info." then begin
+ TempAttachmentMapping.Copy(Rec, true);
+ TempAttachmentMapping.SetFilter("Entry No.", '<> %1', Rec."Entry No.");
+ TempAttachmentMapping.SetRange("Column Action", TempAttachmentMapping."Column Action"::"UoM Info.");
+ TempAttachmentMapping.ModifyAll("Column Action", Rec."Column Action"::Ignore);
+ end
+ end;
+ }
+ }
+
+ keys
+ {
+ key(PK; "Entry No.")
+ {
+ Clustered = true;
+ }
+ }
+
+ internal procedure IncrementEntryNumber()
+ var
+ TempAttachmentMappingPart: Record "Attachment Mapping" temporary;
+ begin
+ TempAttachmentMappingPart.Copy(Rec, true);
+ if TempAttachmentMappingPart.FindLast() then
+ Rec."Entry No." := TempAttachmentMappingPart."Entry No." + 1
+ else
+ Rec."Entry No." := 1;
+ end;
+
+ var
+ MismatchColumnTypeQst: Label 'The %1 is not of type numeric. Do you want to continue?', Comment = '%1 = column type field caption';
+}
\ No newline at end of file
diff --git a/Apps/W1/SalesLinesSuggestions/app/Attachment/FieldMapper/AttachmentMappingPart.Page.al b/Apps/W1/SalesLinesSuggestions/app/Attachment/FieldMapper/AttachmentMappingPart.Page.al
new file mode 100644
index 0000000000..896f67f871
--- /dev/null
+++ b/Apps/W1/SalesLinesSuggestions/app/Attachment/FieldMapper/AttachmentMappingPart.Page.al
@@ -0,0 +1,257 @@
+// ------------------------------------------------------------------------------------------------
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License. See License.txt in the project root for license information.
+// ------------------------------------------------------------------------------------------------
+namespace Microsoft.Sales.Document.Attachment;
+
+page 7289 "Attachment Mapping Part"
+{
+ Caption = 'Attachment Mapping';
+ PageType = ListPart;
+ ApplicationArea = All;
+ ModifyAllowed = true;
+ InsertAllowed = false;
+ DeleteAllowed = false;
+ InherentPermissions = X;
+ InherentEntitlements = X;
+ SourceTable = "Attachment Mapping";
+ SourceTableTemporary = true;
+ Extensible = false;
+
+ layout
+ {
+ area(Content)
+ {
+ field(ColumnSeparator; GlobalColumnSeparator)
+ {
+ Caption = 'Column Separator';
+ ToolTip = 'Specifies the character that separates each column in the attached file.';
+ Importance = Additional;
+ Visible = false;
+ }
+ field(DecimalSeparator; GlobalDecimalSeparator)
+ {
+ Caption = 'Decimal Separator';
+ ToolTip = 'Specifies the character that separates integer and fractional part of number.';
+ Importance = Additional;
+ Visible = false;
+ }
+ repeater(PreviewRepeater)
+ {
+ field("Entry No"; Rec."Entry No.")
+ {
+ ApplicationArea = Suite;
+ Editable = false;
+ ShowCaption = false;
+ Visible = false;
+ ToolTip = 'Specifies the line number from the attached file.';
+ }
+ field(PreviewColumnName; Rec."Column Name")
+ {
+ ApplicationArea = Suite;
+ Editable = false;
+ Style = Strong;
+ Caption = 'Column Name';
+ ToolTip = 'Specifies the column name from the attached file.';
+ }
+ field(ColumnAction; Rec."Column Action")
+ {
+ ApplicationArea = Suite;
+ Caption = 'Column action';
+ ToolTip = 'Specifies the sample row data for each column from the attached file.';
+ Style = Strong;
+ StyleExpr = Rec."Column Action" <> Rec."Column Action"::Ignore;
+ }
+ field(SampleValue; SampleValue)
+ {
+ ApplicationArea = Suite;
+ Caption = 'Sample Value';
+ ToolTip = 'Specifies whether the column contains the quantity.';
+ Editable = false;
+ }
+ field(ColumnValues; ColumnValuesCaptionTok)
+ {
+ ApplicationArea = Suite;
+ Caption = 'Column values';
+ ToolTip = 'Specifies whether the column contains product information.';
+
+ trigger OnDrillDown()
+ var
+ TempItemInfoFromFile: Page "Item Info. From File";
+ SelectedColumns: List of [Integer];
+ begin
+ Clear(SelectedColumns);
+ SelectedColumns.AddRange(GlobalProductInformationColumns);
+ SelectedColumns.Add(GlobalQuantityColumn);
+ SelectedColumns.Add(GlobalUoMColumn);
+ TempItemInfoFromFile.LoadData(GlobalFileContentAsTable, GlobalFileParserResult, SelectedColumns, Rec."Entry No.");
+ TempItemInfoFromFile.RunModal();
+ end;
+ }
+ field(ColumnType; Rec."Column Type")
+ {
+ ApplicationArea = Suite;
+ Caption = 'Column Type';
+ ToolTip = 'Specifies the data type of the column from the attached file.';
+ }
+ }
+ }
+ }
+
+ trigger OnAfterGetRecord()
+ begin
+ LoadSampleRowDataForPreview();
+ end;
+
+ local procedure BuildRecordForPreview(var FileDataAsTable: List of [List of [Text]]; var ProductInformationColumns: List of [Integer]; QuantityColumn: Integer; UoMColumn: Integer)
+ var
+ ColumnHeader: Text;
+ ColumnHeaderRow: List of [Text];
+ begin
+ Rec.Reset();
+ Rec.DeleteAll();
+
+ if FileDataAsTable.Count() > 0 then begin
+ if GlobalFileParserResult.GetContainsHeaderRow() then
+ ColumnHeaderRow := FileDataAsTable.Get(1)
+ else
+ ColumnHeaderRow := GlobalFileParserResult.GetColumnNames();
+ foreach ColumnHeader in ColumnHeaderRow do begin // Considering the first line is header. Change the logic to make it more generic to handle lines without header.
+ Rec.Init();
+ Rec.IncrementEntryNumber();
+ Rec."Column Name" := CopyStr(ColumnHeader, 1, MaxStrLen(Rec."Column Name"));
+ // Set the boolean values by reading the mapping
+ if ProductInformationColumns.Contains(Rec."Entry No.") then
+ Rec."Column Action" := Rec."Column Action"::"Product Info.";
+
+ if QuantityColumn = Rec."Entry No." then
+ Rec."Column Action" := Rec."Column Action"::"Quantity Info.";
+
+ if UoMColumn = Rec."Entry No." then
+ Rec."Column Action" := Rec."Column Action"::"UoM Info.";
+
+ Rec."Column Type" := GlobalColumnType.Get(Rec."Entry No.");
+
+ Rec.Insert();
+ end;
+ end;
+ end;
+
+ internal procedure LoadCSVAndGetProductInfo(var FileContentAsTable: List of [List of [Text]]; var FileParserResult: Codeunit "File Handler Result")
+ begin
+ GlobalFileParserResult := FileParserResult;
+ GlobalProductInformationColumns := GlobalFileParserResult.GetProductColumnIndex();
+ GlobalQuantityColumn := GlobalFileParserResult.GetQuantityColumnIndex();
+ GlobalUoMColumn := GlobalFileParserResult.GetUoMColumnIndex();
+ GlobalColumnType := GetColumnTypesFromText(GlobalFileParserResult.GetColumnTypes());
+
+ GlobalFileContentAsTable := FileContentAsTable;
+ BuildRecordForPreview(GlobalFileContentAsTable, GlobalProductInformationColumns, GlobalQuantityColumn, GlobalUoMColumn);
+ end;
+
+ internal procedure ColumnMappingHasChanged(var NewProductInformationColumns: List of [Integer]; var NewQuantityColumn: Integer; var NewUoMColumn: Integer): Boolean
+ var
+ ColumnIndex: Integer;
+ begin
+ GetMappingSetup(NewProductInformationColumns, NewQuantityColumn, NewUoMColumn);
+
+ if GlobalProductInformationColumns.Count() <> NewProductInformationColumns.Count() then begin
+ SaveColumnMapping(NewProductInformationColumns, NewQuantityColumn, NewUoMColumn);
+ exit(true);
+ end;
+
+ foreach ColumnIndex in GlobalProductInformationColumns do
+ if not NewProductInformationColumns.Contains(ColumnIndex) then begin
+ SaveColumnMapping(NewProductInformationColumns, NewQuantityColumn, NewUoMColumn);
+ exit(true);
+ end;
+
+ if GlobalQuantityColumn <> NewQuantityColumn then begin
+ SaveColumnMapping(NewProductInformationColumns, NewQuantityColumn, NewUoMColumn);
+ exit(true);
+ end;
+
+ if GlobalUoMColumn <> NewUoMColumn then begin
+ SaveColumnMapping(NewProductInformationColumns, NewQuantityColumn, NewUoMColumn);
+ exit(true);
+ end;
+ end;
+
+ local procedure SaveColumnMapping(NewProductInformationColumns: List of [Integer]; NewQuantityColumn: Integer; NewUoMColumn: Integer)
+ begin
+ GlobalProductInformationColumns := NewProductInformationColumns;
+ GlobalQuantityColumn := NewQuantityColumn;
+ GlobalUoMColumn := NewUoMColumn;
+ end;
+
+ internal procedure GetMappingSetup(var ProductInformationColumns: List of [Integer]; var QuantityColumn: Integer; var UoMColumn: Integer)
+ var
+ TempAttachmentMapping: Record "Attachment Mapping" temporary;
+ begin
+ TempAttachmentMapping.Copy(Rec, true);
+ TempAttachmentMapping.SetRange("Column Action", TempAttachmentMapping."Column Action"::"Product Info.");
+
+ if TempAttachmentMapping.FindSet() then
+ repeat
+ ProductInformationColumns.Add(TempAttachmentMapping."Entry No.");
+ until TempAttachmentMapping.Next() = 0;
+
+ TempAttachmentMapping.Reset();
+ TempAttachmentMapping.SetRange("Column Action", TempAttachmentMapping."Column Action"::"Quantity Info.");
+ if TempAttachmentMapping.FindFirst() then
+ QuantityColumn := TempAttachmentMapping."Entry No.";
+
+ TempAttachmentMapping.Reset();
+ TempAttachmentMapping.SetRange("Column Action", TempAttachmentMapping."Column Action"::"UoM Info.");
+ if TempAttachmentMapping.FindFirst() then
+ UoMColumn := TempAttachmentMapping."Entry No.";
+ end;
+
+ local procedure LoadSampleRowDataForPreview()
+ begin
+ if Rec."Entry No." > 0 then begin
+ GlobalPreviewSampleDataTxt := '';
+
+ if GlobalFileParserResult.GetContainsHeaderRow() then
+ SampleValue := CopyStr(GlobalFileContentAsTable.Get(2).Get(Rec."Entry No."), 1, MaxStrLen(SampleValue))
+ else
+ SampleValue := CopyStr(GlobalFileContentAsTable.Get(1).Get(Rec."Entry No."), 1, MaxStrLen(SampleValue));
+ end
+ end;
+
+ local procedure GetColumnTypesFromText(ColumnTypesAsText: List of [Text]) ColumnTypes: List of [Enum "Column Type"]
+ var
+ ColumnTypeTxt: Text;
+ begin
+ Clear(ColumnTypes);
+
+ foreach ColumnTypeTxt in ColumnTypesAsText do
+ case ColumnTypeTxt.ToLower() of
+ 'text', 'string':
+ ColumnTypes.Add(Enum::"Column Type"::Text);
+ 'number', 'numeric', 'num', 'integer', 'int', 'float', 'double', 'decimal':
+ ColumnTypes.Add(Enum::"Column Type"::Number);
+ 'date':
+ ColumnTypes.Add(Enum::"Column Type"::Date);
+ 'boolean', 'bool':
+ ColumnTypes.Add(Enum::"Column Type"::Boolean);
+ else
+ ColumnTypes.Add(Enum::"Column Type"::Unknown);
+ end;
+ exit(ColumnTypes)
+
+ end;
+
+ var
+ GlobalFileParserResult: Codeunit "File Handler Result";
+ GlobalFileContentAsTable: List of [List of [Text]];
+ GlobalColumnSeparator: Text;
+ GlobalDecimalSeparator: Text;
+ GlobalPreviewSampleDataTxt: Text;
+ GlobalProductInformationColumns: List of [Integer];
+ GlobalQuantityColumn: Integer;
+ GlobalUoMColumn: Integer;
+ GlobalColumnType: List of [Enum "Column Type"];
+ SampleValue: Text[100];
+ ColumnValuesCaptionTok: Label 'See all';
+}
\ No newline at end of file
diff --git a/Apps/W1/SalesLinesSuggestions/app/Attachment/FieldMapper/ColumnAction.Enum.al b/Apps/W1/SalesLinesSuggestions/app/Attachment/FieldMapper/ColumnAction.Enum.al
new file mode 100644
index 0000000000..d7f541b462
--- /dev/null
+++ b/Apps/W1/SalesLinesSuggestions/app/Attachment/FieldMapper/ColumnAction.Enum.al
@@ -0,0 +1,31 @@
+// ------------------------------------------------------------------------------------------------
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License. See License.txt in the project root for license information.
+// ------------------------------------------------------------------------------------------------
+namespace Microsoft.Sales.Document.Attachment;
+
+enum 7278 "Column Action"
+{
+ Extensible = false;
+ Access = Internal;
+
+ value(0; Ignore)
+ {
+ Caption = 'Ignore';
+ }
+
+ value(10; "Product Info.")
+ {
+ Caption = 'Use (Product)';
+ }
+
+ value(20; "Quantity Info.")
+ {
+ Caption = 'Use (Quantity)';
+ }
+
+ value(30; "UoM Info.")
+ {
+ Caption = 'Use (Unit of Measure)';
+ }
+}
\ No newline at end of file
diff --git a/Apps/W1/SalesLinesSuggestions/app/Attachment/FieldMapper/ColumnType.Enum.al b/Apps/W1/SalesLinesSuggestions/app/Attachment/FieldMapper/ColumnType.Enum.al
new file mode 100644
index 0000000000..0178d11f76
--- /dev/null
+++ b/Apps/W1/SalesLinesSuggestions/app/Attachment/FieldMapper/ColumnType.Enum.al
@@ -0,0 +1,36 @@
+// ------------------------------------------------------------------------------------------------
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License. See License.txt in the project root for license information.
+// ------------------------------------------------------------------------------------------------
+namespace Microsoft.Sales.Document.Attachment;
+
+enum 7280 "Column Type"
+{
+ Extensible = false;
+ Access = Internal;
+
+ value(0; Unknown)
+ {
+ Caption = 'Unknown';
+ }
+
+ value(10; Boolean)
+ {
+ Caption = 'Boolean';
+ }
+
+ value(20; Number)
+ {
+ Caption = 'Number';
+ }
+
+ value(30; Text)
+ {
+ Caption = 'Text';
+ }
+
+ value(40; Date)
+ {
+ Caption = 'Date';
+ }
+}
\ No newline at end of file
diff --git a/Apps/W1/SalesLinesSuggestions/app/Attachment/FieldMapper/ItemInfoFromFile.Page.al b/Apps/W1/SalesLinesSuggestions/app/Attachment/FieldMapper/ItemInfoFromFile.Page.al
new file mode 100644
index 0000000000..b339c91dde
--- /dev/null
+++ b/Apps/W1/SalesLinesSuggestions/app/Attachment/FieldMapper/ItemInfoFromFile.Page.al
@@ -0,0 +1,346 @@
+// ------------------------------------------------------------------------------------------------
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License. See License.txt in the project root for license information.
+// ------------------------------------------------------------------------------------------------
+namespace Microsoft.Sales.Document.Attachment;
+
+using System.Utilities;
+
+page 7286 "Item Info. From File"
+{
+ Caption = 'Mapped & Selected column values in the file';
+ PageType = List;
+ ApplicationArea = All;
+ ModifyAllowed = false;
+ InsertAllowed = false;
+ DeleteAllowed = false;
+ InherentPermissions = X;
+ InherentEntitlements = X;
+ SourceTable = Integer;
+ SourceTableTemporary = true;
+ SourceTableView = where(Number = filter(1 ..));
+ Editable = false;
+ Extensible = false;
+
+ layout
+ {
+ area(Content)
+ {
+ repeater(Rep)
+ {
+ field(Id; Rec.Number)
+ {
+ Caption = ' ';
+ ApplicationArea = All;
+ Visible = NoOfColumnsVisible > 10;
+ ToolTip = 'Specifies the line number.';
+ }
+ field(Column0; GetCellValue(Rec.Number, LeftMostColumnIndex))
+ {
+ CaptionClass = '3,' + GetColumnHeading(LeftMostColumnIndex);
+ ApplicationArea = All;
+ Visible = ColumnVisible1;
+ StyleExpr = StyleExpression1;
+#pragma warning disable AA0219
+ ToolTip = 'This is a generated column and does not have a tooltip.';
+#pragma warning restore AA0219
+ }
+ field(Column1; GetCellValue(Rec.Number, LeftMostColumnIndex + 1))
+ {
+ CaptionClass = '3,' + GetColumnHeading(LeftMostColumnIndex + 1);
+ ApplicationArea = All;
+ Visible = ColumnVisible2;
+ StyleExpr = StyleExpression2;
+#pragma warning disable AA0219
+ ToolTip = 'This is a generated column and does not have a tooltip.';
+#pragma warning restore AA0219
+ }
+ field(Column2; GetCellValue(Rec.Number, LeftMostColumnIndex + 2))
+ {
+ CaptionClass = '3,' + GetColumnHeading(LeftMostColumnIndex + 2);
+ ApplicationArea = All;
+ Visible = ColumnVisible3;
+ StyleExpr = StyleExpression3;
+#pragma warning disable AA0219
+ ToolTip = 'This is a generated column and does not have a tooltip.';
+#pragma warning restore AA0219
+ }
+ field(Colum3; GetCellValue(Rec.Number, LeftMostColumnIndex + 3))
+ {
+ CaptionClass = '3,' + GetColumnHeading(LeftMostColumnIndex + 3);
+ ApplicationArea = All;
+ Visible = ColumnVisible4;
+ StyleExpr = StyleExpression4;
+#pragma warning disable AA0219
+ ToolTip = 'This is a generated column and does not have a tooltip.';
+#pragma warning restore AA0219
+ }
+ field(Column4; GetCellValue(Rec.Number, LeftMostColumnIndex + 4))
+ {
+ CaptionClass = '3,' + GetColumnHeading(LeftMostColumnIndex + 4);
+ ApplicationArea = All;
+ Visible = ColumnVisible5;
+ StyleExpr = StyleExpression5;
+#pragma warning disable AA0219
+ ToolTip = 'This is a generated column and does not have a tooltip.';
+#pragma warning restore AA0219
+ }
+ field(Column5; GetCellValue(Rec.Number, LeftMostColumnIndex + 5))
+ {
+ CaptionClass = '3,' + GetColumnHeading(LeftMostColumnIndex + 5);
+ ApplicationArea = All;
+ Visible = ColumnVisible6;
+ StyleExpr = StyleExpression6;
+#pragma warning disable AA0219
+ ToolTip = 'This is a generated column and does not have a tooltip.';
+#pragma warning restore AA0219
+ }
+ field(Column6; GetCellValue(Rec.Number, LeftMostColumnIndex + 6))
+ {
+ CaptionClass = '3,' + GetColumnHeading(LeftMostColumnIndex + 6);
+ ApplicationArea = All;
+ Visible = ColumnVisible7;
+ StyleExpr = StyleExpression7;
+#pragma warning disable AA0219
+ ToolTip = 'This is a generated column and does not have a tooltip.';
+#pragma warning restore AA0219
+ }
+ field(Column7; GetCellValue(Rec.Number, LeftMostColumnIndex + 7))
+ {
+ CaptionClass = '3,' + GetColumnHeading(LeftMostColumnIndex + 7);
+ ApplicationArea = All;
+ Visible = ColumnVisible8;
+ StyleExpr = StyleExpression8;
+#pragma warning disable AA0219
+ ToolTip = 'This is a generated column and does not have a tooltip.';
+#pragma warning restore AA0219
+ }
+ field(Column8; GetCellValue(Rec.Number, LeftMostColumnIndex + 8))
+ {
+ CaptionClass = '3,' + GetColumnHeading(LeftMostColumnIndex + 8);
+ ApplicationArea = All;
+ Visible = ColumnVisible9;
+ StyleExpr = StyleExpression9;
+#pragma warning disable AA0219
+ ToolTip = 'This is a generated column and does not have a tooltip.';
+#pragma warning restore AA0219
+ }
+ field(Column9; GetCellValue(Rec.Number, LeftMostColumnIndex + 9))
+ {
+ CaptionClass = '3,' + GetColumnHeading(LeftMostColumnIndex + 9);
+ ApplicationArea = All;
+ Visible = ColumnVisible10;
+ StyleExpr = StyleExpression10;
+#pragma warning disable AA0219
+ ToolTip = 'This is a generated column and does not have a tooltip.';
+#pragma warning restore AA0219
+ }
+ }
+ }
+ }
+ actions
+ {
+ area(Processing)
+ {
+ action(Left)
+ {
+ Caption = 'Scroll Left';
+ ApplicationArea = all;
+ Promoted = true;
+ PromotedCategory = Process;
+ PromotedOnly = true;
+ Image = PreviousRecord;
+ Visible = NoOfColumnsVisible > 10;
+ ToolTip = 'Scroll to the left to view more columns.';
+
+ trigger OnAction()
+ begin
+ if LeftMostColumnIndex > 1 then
+ LeftMostColumnIndex -= 1;
+ end;
+ }
+ action(Right)
+ {
+ Caption = 'Scroll Right';
+ ApplicationArea = all;
+ Promoted = true;
+ PromotedCategory = Process;
+ PromotedOnly = true;
+ Image = NextRecord;
+ Visible = NoOfColumnsVisible > 10;
+ ToolTip = 'Scroll to the right to view more columns.';
+
+ trigger OnAction()
+ begin
+ LeftMostColumnIndex += 1;
+ end;
+ }
+ }
+ }
+
+ trigger OnOpenPage()
+ begin
+ LeftMostColumnIndex := 1;
+ end;
+
+ var
+ GlobalFileHandlerResult: Codeunit "File Handler Result";
+ GlobalFileContentAsTable: List of [List of [Text]];
+ LeftMostColumnIndex: Integer;
+ GlobalMappedColumns: List of [Integer];
+ GlobalVisibleColumns: List of [Integer];
+ GlobalCurrentColumn: Integer;
+ NoOfColumnsVisible: Integer;
+ CurrentColumnIsInMappedColumns: Boolean;
+ ColumnVisible1, ColumnVisible2, ColumnVisible3, ColumnVisible4, ColumnVisible5, ColumnVisible6, ColumnVisible7, ColumnVisible8, ColumnVisible9, ColumnVisible10 : Boolean;
+ ColumnVisible: array[10] of Boolean;
+ StyleExpression1, StyleExpression2, StyleExpression3, StyleExpression4, StyleExpression5, StyleExpression6, StyleExpression7, StyleExpression8, StyleExpression9, StyleExpression10 : Text;
+ StyleExpression: array[10] of Text;
+
+ internal procedure ScrollLeft()
+ begin
+ if NoOfColumnsVisible <= 10 then
+ exit;
+ if LeftMostColumnIndex > 1 then
+ LeftMostColumnIndex -= 1;
+ end;
+
+ internal procedure ScrollRight()
+ var
+ HeaderRow: List of [Text];
+ begin
+ if NoOfColumnsVisible <= 10 then
+ exit;
+ if GlobalFileContentAsTable.Count() > 0 then begin
+ HeaderRow := GlobalFileContentAsTable.Get(1);
+ if LeftMostColumnIndex + 5 <= HeaderRow.Count() then
+ LeftMostColumnIndex += 1;
+ end;
+ end;
+
+ internal procedure LoadData(Data: List of [List of [Text]]; FileHandlerResult: Codeunit "File Handler Result"; SelectedColumns: List of [Integer]; CurrentColumn: Integer)
+ var
+ i: Integer;
+ MaxDataRows: Integer;
+ begin
+ Clear(GlobalFileContentAsTable);
+ Clear(GlobalMappedColumns);
+ Clear(GlobalVisibleColumns);
+ Clear(GlobalCurrentColumn);
+ Clear(CurrentColumnIsInMappedColumns);
+ Clear(ColumnVisible);
+ Clear(StyleExpression);
+ Clear(GlobalFileHandlerResult);
+ NoOfColumnsVisible := 0;
+ GlobalFileContentAsTable := Data;
+ GlobalMappedColumns := SelectedColumns;
+ GlobalCurrentColumn := CurrentColumn;
+ GlobalFileHandlerResult := FileHandlerResult;
+
+ CurrentColumnIsInMappedColumns := GlobalMappedColumns.Contains(GlobalCurrentColumn);
+ NoOfColumnsVisible := NumberOfColumnsToShow();
+ GlobalVisibleColumns := GlobalMappedColumns;
+ GlobalVisibleColumns.Add(GlobalCurrentColumn);
+ SetColumnVisibility();
+ SetStyleExpressions();
+ Clear(Rec);
+ if GlobalFileHandlerResult.GetContainsHeaderRow() then
+ MaxDataRows := Data.Count() - 1
+ else
+ MaxDataRows := Data.Count();
+ for i := 1 to MaxDataRows do begin
+ Rec.Number := i;
+ Rec.Insert();
+ end;
+ end;
+
+ local procedure NumberOfColumnsToShow(): Integer
+ begin
+ if CurrentColumnIsInMappedColumns then
+ exit(GlobalMappedColumns.Count())
+ else
+ exit(GlobalMappedColumns.Count() + 1);
+ end;
+
+ local procedure GetColumnHeading(ColumnNumber: Integer): Text
+ var
+ ColumnName: Text;
+ HeaderRow: List of [Text];
+ begin
+ if (GlobalFileContentAsTable.Count() > 0) and (ColumnNumber > 0) then begin
+ if GlobalFileHandlerResult.GetContainsHeaderRow() then
+ HeaderRow := GlobalFileContentAsTable.Get(1)
+ else
+ HeaderRow := GlobalFileHandlerResult.GetColumnNames();
+ if ColumnNumber <= GlobalMappedColumns.Count then
+ ColumnName := HeaderRow.Get(GlobalMappedColumns.Get(ColumnNumber));
+ end;
+ exit(ColumnName);
+ end;
+
+ local procedure GetCellValue(Row: Integer; Column: Integer): Text
+ var
+ ColumnValue: Text;
+ RowValue: List of [Text];
+ begin
+ if GlobalFileHandlerResult.GetContainsHeaderRow() then
+ Row := Row + 1;
+ if Row <= GlobalFileContentAsTable.Count() then begin
+ RowValue := GlobalFileContentAsTable.Get(Row);
+ if Column <= GlobalMappedColumns.Count then
+ ColumnValue := RowValue.Get(GlobalMappedColumns.Get(Column));
+ end;
+ exit(ColumnValue);
+ end;
+
+ local procedure SetColumnVisibility()
+ var
+ i: Integer;
+ NoOfColumns: Integer;
+ begin
+ Clear(ColumnVisible);
+
+ if NoOfColumnsVisible > 10 then
+ NoOfColumns := 10
+ else
+ NoOfColumns := NoOfColumnsVisible;
+
+ for i := 1 to NoOfColumns do
+ ColumnVisible[i] := true;
+
+ ColumnVisible1 := ColumnVisible[1];
+ ColumnVisible2 := ColumnVisible[2];
+ ColumnVisible3 := ColumnVisible[3];
+ ColumnVisible4 := ColumnVisible[4];
+ ColumnVisible5 := ColumnVisible[5];
+ ColumnVisible6 := ColumnVisible[6];
+ ColumnVisible7 := ColumnVisible[7];
+ ColumnVisible8 := ColumnVisible[8];
+ ColumnVisible9 := ColumnVisible[9];
+ ColumnVisible10 := ColumnVisible[10];
+ end;
+
+ local procedure SetStyleExpressions()
+ var
+ Index: Integer;
+ begin
+ Clear(StyleExpression);
+
+ Index := GlobalVisibleColumns.IndexOf(GlobalCurrentColumn);
+ if CurrentColumnIsInMappedColumns then
+ StyleExpression[Index] := 'Strong'
+ else
+ StyleExpression[Index] := 'Subordinate';
+
+ StyleExpression1 := StyleExpression[1];
+ StyleExpression2 := StyleExpression[2];
+ StyleExpression3 := StyleExpression[3];
+ StyleExpression4 := StyleExpression[4];
+ StyleExpression5 := StyleExpression[5];
+ StyleExpression6 := StyleExpression[6];
+ StyleExpression7 := StyleExpression[7];
+ StyleExpression8 := StyleExpression[8];
+ StyleExpression9 := StyleExpression[9];
+ StyleExpression10 := StyleExpression[10];
+ end;
+}
\ No newline at end of file
diff --git a/Apps/W1/SalesLinesSuggestions/app/Attachment/FieldMapper/MappingCache.Table.al b/Apps/W1/SalesLinesSuggestions/app/Attachment/FieldMapper/MappingCache.Table.al
new file mode 100644
index 0000000000..e947de29dc
--- /dev/null
+++ b/Apps/W1/SalesLinesSuggestions/app/Attachment/FieldMapper/MappingCache.Table.al
@@ -0,0 +1,33 @@
+// ------------------------------------------------------------------------------------------------
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License. See License.txt in the project root for license information.
+// ------------------------------------------------------------------------------------------------
+namespace Microsoft.Sales.Document.Attachment;
+table 7278 "Mapping Cache"
+{
+ InherentEntitlements = X;
+ InherentPermissions = X;
+ Access = Internal;
+
+ fields
+ {
+ field(1; "File Identity Hash"; Text[1024])
+ {
+ Caption = 'File Identity Hash';
+ DataClassification = SystemMetadata;
+ }
+ field(2; Mapping; Blob)
+ {
+ Caption = 'Mapping';
+ DataClassification = SystemMetadata;
+ }
+ }
+
+ keys
+ {
+ key(PK; "File Identity Hash")
+ {
+ Clustered = true;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Apps/W1/SalesLinesSuggestions/app/Attachment/FieldMapper/MappingCacheManagement.Codeunit.al b/Apps/W1/SalesLinesSuggestions/app/Attachment/FieldMapper/MappingCacheManagement.Codeunit.al
new file mode 100644
index 0000000000..5317a96fce
--- /dev/null
+++ b/Apps/W1/SalesLinesSuggestions/app/Attachment/FieldMapper/MappingCacheManagement.Codeunit.al
@@ -0,0 +1,66 @@
+// ------------------------------------------------------------------------------------------------
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License. See License.txt in the project root for license information.
+// ------------------------------------------------------------------------------------------------
+namespace Microsoft.Sales.Document.Attachment;
+
+using System.Security.Encryption;
+codeunit 7297 "Mapping Cache Management"
+{
+ internal procedure MappingExists(FileIdentityHash: Text): Boolean
+ var
+ MappingCache: Record "Mapping Cache";
+ begin
+ exit(MappingCache.Get(FileIdentityHash));
+ end;
+
+ internal procedure GetMapping(FileIdentityHash: Text; var SavedMappingAsText: Text): Boolean
+ var
+ MappingCache: Record "Mapping Cache";
+ InStream: InStream;
+ StreamLength: Integer;
+ begin
+ if MappingCache.Get(FileIdentityHash) then begin
+ MappingCache.CalcFields(Mapping);
+ if not MappingCache.Mapping.HasValue then begin
+ MappingCache.Delete();
+ exit(false);
+ end;
+ MappingCache.Mapping.CreateInStream(InStream, TextEncoding::UTF8);
+ StreamLength := InStream.ReadText(SavedMappingAsText);
+ if (StreamLength <= 0) or (SavedMappingAsText = '') then begin
+ MappingCache.Delete();
+ exit(false);
+ end;
+ exit(true);
+ end;
+ exit(false);
+ end;
+
+ internal procedure SaveMapping(FileIdentityHash: Text; MappingAsText: Text)
+ var
+ MappingCache: Record "Mapping Cache";
+ OutStream: OutStream;
+ begin
+ if MappingCache.Get(FileIdentityHash) then begin
+ Clear(MappingCache.Mapping);
+ MappingCache.Mapping.CreateOutStream(OutStream, TextEncoding::UTF8);
+ OutStream.WriteText(MappingAsText);
+ MappingCache.Modify();
+ end else begin
+ MappingCache.Init();
+ MappingCache."File Identity Hash" := CopyStr(FileIdentityHash, 1, MaxStrLen(MappingCache."File Identity Hash"));
+ MappingCache.Mapping.CreateOutStream(OutStream);
+ OutStream.WriteText(MappingAsText);
+ MappingCache.Insert();
+ end;
+ end;
+
+ internal procedure GenerateFileHashInHex(TextToHash: Text): Text[1024]
+ var
+ CryptographyManagement: Codeunit "Cryptography Management";
+ HashAlgorithmType: Option MD5,SHA1,SHA256,SHA384,SHA512;
+ begin
+ exit(CopyStr(CryptographyManagement.GenerateHash(TextToHash, HashAlgorithmType::SHA256), 1, 1024));
+ end;
+}
\ No newline at end of file
diff --git a/Apps/W1/SalesLinesSuggestions/app/Attachment/FileHandlers/CSVHandler.Codeunit.al b/Apps/W1/SalesLinesSuggestions/app/Attachment/FileHandlers/CSVHandler.Codeunit.al
new file mode 100644
index 0000000000..8c87794dca
--- /dev/null
+++ b/Apps/W1/SalesLinesSuggestions/app/Attachment/FileHandlers/CSVHandler.Codeunit.al
@@ -0,0 +1,152 @@
+// ------------------------------------------------------------------------------------------------
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License. See License.txt in the project root for license information.
+// ------------------------------------------------------------------------------------------------
+namespace Microsoft.Sales.Document.Attachment;
+
+using Microsoft.Sales.Document;
+using System.IO;
+
+codeunit 7293 "Csv Handler" implements "File Handler"
+{
+ Access = Internal;
+
+ var
+ CsvFileStream: InStream;
+ isIntialized: Boolean;
+ FirstLineAsHash: Text;
+ ConcatTwoLinesLbl: Label '%1\n%2', Comment = '%1 = first line, %2 = second line.';
+ InvalidCsvDataErr: Label 'Cannot process input data. Either the data is not in a valid CSV format or data is missing.';
+ HandlerNotInitializedErr: Label 'Handler not initialized';
+ InvalidFileConfigurationErr: Label 'Invalid File Configuration';
+
+ internal procedure Process(var FileInputStream: InStream): Variant
+ var
+ MappingCacheManagement: Codeunit "Mapping Cache Management";
+ FileHandlerResult: Codeunit "File Handler Result";
+ CsvInput: Text;
+ FirstLine: Text;
+ SavedMappingAsText: Text;
+ JsonObject: JsonObject;
+ begin
+ CsvFileStream := FileInputStream;
+
+ // Load mappings from csv if available
+ FirstLine := ReadLines(CsvFileStream, 1, true);
+ FirstLineAsHash := MappingCacheManagement.GenerateFileHashInHex(FirstLine);
+
+ if MappingCacheManagement.GetMapping(FirstLineAsHash, SavedMappingAsText) then begin
+ JsonObject.ReadFrom(SavedMappingAsText);
+ FileHandlerResult.FromJson(JsonObject);
+ isIntialized := true;
+ exit(FileHandlerResult);
+ end;
+
+ // Else get LLM to generate mapping
+ CsvInput := ReadLines(CsvFileStream, 11, true); // Read first 11 lines assuming first line is header line
+ FileHandlerResult := GenerateCsvMappingSuggestionFromAttachment(CsvInput);
+ isIntialized := true;
+ exit(FileHandlerResult);
+ end;
+
+ internal procedure GetFileData(FileHandlerResultVariant: Variant): List of [List of [Text]]
+ var
+ TempCSVBuffer: Record "CSV Buffer" temporary;
+ FileHandlerResult: Codeunit "File Handler Result";
+ ColumnSeparatorChar: Char;
+ Row: List of [Text];
+ AllRows: List of [List of [Text]];
+ i: Integer;
+ j: Integer;
+ begin
+ if not isIntialized then
+ Error(HandlerNotInitializedErr);
+
+ if not FileHandlerResultVariant.IsCodeunit() then
+ Error(InvalidFileConfigurationErr);
+
+ FileHandlerResult := FileHandlerResultVariant;
+
+ CsvFileStream.ResetPosition();
+
+ ColumnSeparatorChar := FileHandlerResult.GetColumnDelimiter() [1];
+
+ TempCSVBuffer.InitializeReaderFromStream(CsvFileStream, ColumnSeparatorChar);
+
+ if TempCSVBuffer.ReadLines(0) then begin // reads all lines
+ // Assuming the first line is header.
+ // Rows
+ for i := 1 to TempCSVBuffer.GetNumberOfLines() do begin
+ Clear(Row);
+
+ // Columns
+ for j := 1 to TempCSVBuffer.GetNumberOfColumns() do
+ Row.Add(TempCSVBuffer.GetValue(i, j));
+ AllRows.Add(Row);
+ end;
+
+ if AllRows.Count <= 1 then
+ Error(InvalidCsvDataErr);
+ exit(AllRows);
+ end;
+ end;
+
+ internal procedure Finalize(FileHandlerResultVariant: Variant)
+ var
+ MappingCacheManagement: Codeunit "Mapping Cache Management";
+ FileHandlerResult: Codeunit "File Handler Result";
+ JsonObject: JsonObject;
+ JsonAsText: Text;
+ begin
+ if not isIntialized then
+ Error(HandlerNotInitializedErr);
+
+ if not FileHandlerResultVariant.IsCodeunit() then
+ Error(InvalidFileConfigurationErr);
+
+ FileHandlerResult := FileHandlerResultVariant;
+
+ if not FileHandlerResult.GetContainsHeaderRow() then
+ exit;
+ JsonObject := FileHandlerResult.ToJson();
+ JsonObject.WriteTo(JsonAsText);
+ MappingCacheManagement.SaveMapping(FirstLineAsHash, JsonAsText);
+ end;
+
+ local procedure ReadLines(var FileInStream: InStream; NoOfLinesToRead: Integer; FromBeginning: Boolean): Text
+ begin
+ if FromBeginning then
+ FileInStream.ResetPosition();
+ exit(ReadLines(FileInStream, NoOfLinesToRead));
+ end;
+
+ local procedure ReadLines(var FileInStream: InStream; NoOfLinesToRead: Integer): Text
+ var
+ Line: Text;
+ LineCounter: Integer;
+ Lines: Text;
+ begin
+ while not FileInStream.EOS() do begin
+ FileInStream.ReadText(Line);
+ Lines := StrSubstNo(ConcatTwoLinesLbl, Lines, Line);
+ LineCounter += 1;
+ if LineCounter >= NoOfLinesToRead then
+ exit(Lines);
+ end;
+ exit(Lines);
+ end;
+
+ local procedure GenerateCsvMappingSuggestionFromAttachment(CsvData: Text): Codeunit "File Handler Result"
+ var
+ Prompt: Codeunit "SLS Prompts";
+ LookupItemsFromCsvFunction: Codeunit "Lookup Items From Csv Function";
+ SalesLineAISuggestionImpl: Codeunit "Sales Lines Suggestions Impl.";
+ FileHandlerResult: Codeunit "File Handler Result";
+ UserInput: Text;
+ CompletionText: Text;
+ begin
+ UserInput := StrSubstNo(Prompt.GetParsingCsvTemplateUserInputPrompt(), CsvData);
+ FileHandlerResult := SalesLineAISuggestionImpl.AICall(Prompt.GetAttachmentSystemPrompt(), UserInput, LookupItemsFromCsvFunction, CompletionText);
+ exit(FileHandlerResult);
+ end;
+}
\ No newline at end of file
diff --git a/Apps/W1/SalesLinesSuggestions/app/Attachment/FileHandlers/FileHandler.Interface.al b/Apps/W1/SalesLinesSuggestions/app/Attachment/FileHandlers/FileHandler.Interface.al
new file mode 100644
index 0000000000..4398aa82c4
--- /dev/null
+++ b/Apps/W1/SalesLinesSuggestions/app/Attachment/FileHandlers/FileHandler.Interface.al
@@ -0,0 +1,33 @@
+// ------------------------------------------------------------------------------------------------
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License. See License.txt in the project root for license information.
+// ------------------------------------------------------------------------------------------------
+namespace Microsoft.Sales.Document.Attachment;
+
+///
+/// Specifies the interface for File Handler implementations.
+///
+interface "File Handler"
+{
+ Access = Internal;
+
+ ///
+ /// Processes the file input stream that is passed to the function.
+ ///
+ /// InStream pointing to the file content.
+ /// Result of the file processing.
+ procedure Process(var FileInputStream: InStream): Variant
+
+ ///
+ /// Gets the data as a table from the file based on the file handler result.
+ ///
+ /// Result of the file processing.
+ /// List of rows where each row is a list of columns.
+ procedure GetFileData(FileHandlerResultVariant: Variant): List of [List of [Text]]
+
+ ///
+ /// Finalizes the file handler.
+ ///
+ /// Result of the file processing.
+ procedure Finalize(FileHandlerResultVariant: Variant)
+}
\ No newline at end of file
diff --git a/Apps/W1/SalesLinesSuggestions/app/Attachment/FileHandlers/FileHandlerFactory.Codeunit.al b/Apps/W1/SalesLinesSuggestions/app/Attachment/FileHandlers/FileHandlerFactory.Codeunit.al
new file mode 100644
index 0000000000..0183114b2b
--- /dev/null
+++ b/Apps/W1/SalesLinesSuggestions/app/Attachment/FileHandlers/FileHandlerFactory.Codeunit.al
@@ -0,0 +1,25 @@
+// ------------------------------------------------------------------------------------------------
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License. See License.txt in the project root for license information.
+// ------------------------------------------------------------------------------------------------
+namespace Microsoft.Sales.Document.Attachment;
+
+using System.IO;
+
+codeunit 7294 "File Handler Factory"
+{
+ Access = Internal;
+
+ procedure GetFileHandler(var FileParser: interface "File Handler"; FileName: Text)
+ var
+ FileManagement: Codeunit "File Management";
+ FileParserType: Enum "File Handler Type";
+ begin
+ case FileManagement.GetFileNameMimeType(FileName) of
+ 'text/csv':
+ FileParser := FileParserType::"CSV Handler";
+ else
+ Error('Unsupported file type');
+ end;
+ end;
+}
\ No newline at end of file
diff --git a/Apps/W1/SalesLinesSuggestions/app/Attachment/FileHandlers/FileHandlerResult.Codeunit.al b/Apps/W1/SalesLinesSuggestions/app/Attachment/FileHandlers/FileHandlerResult.Codeunit.al
new file mode 100644
index 0000000000..969e515282
--- /dev/null
+++ b/Apps/W1/SalesLinesSuggestions/app/Attachment/FileHandlers/FileHandlerResult.Codeunit.al
@@ -0,0 +1,221 @@
+// ------------------------------------------------------------------------------------------------
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License. See License.txt in the project root for license information.
+// ------------------------------------------------------------------------------------------------
+namespace Microsoft.Sales.Document.Attachment;
+
+codeunit 7295 "File Handler Result"
+{
+ Access = Internal;
+
+ var
+ ColumnDelimiter: Text;
+ ColumnDelimiterLbl: Label 'Column_Delimiter', Locked = true;
+ DecimalSeparator: Text;
+ ProductColumnIndex: List of [Integer];
+ ProductColumnIndexLbl: Label 'Product_Column_Index', Locked = true;
+ QuantityColumnIndex: Integer;
+ QuantityColumnIndexLbl: Label 'Quantity_Column_Index', Locked = true;
+ UoMColumnIndex: Integer;
+ UoMColumnIndexLbl: Label 'UoM_Column_Index', Locked = true;
+ ContainsHeaderRow: Boolean;
+ ContainsHeaderRowLbl: Label 'Contains_Header_Row', Locked = true;
+ ColumnNames: List of [Text];
+ ColumnNamesLbl: Label 'Column_Names', Locked = true;
+ ColumnTypes: List of [Text];
+ ColumnTypesLbl: Label 'Column_Types', Locked = true;
+
+ internal procedure AddProductColumnIndex(ColumnIndex: Integer)
+ begin
+ ProductColumnIndex.Add(ColumnIndex);
+ end;
+
+ internal procedure SetProductColumnIndex(ColumnIndex: Integer)
+ begin
+ Clear(ProductColumnIndex);
+ ProductColumnIndex.Add(ColumnIndex);
+ end;
+
+ internal procedure SetProductColumnIndex(ColumnIndex: List of [Integer])
+ begin
+ Clear(ProductColumnIndex);
+ ProductColumnIndex := ColumnIndex;
+ end;
+
+ internal procedure SetQuantityColumnIndex(ColumnIndex: Integer)
+ begin
+ QuantityColumnIndex := ColumnIndex;
+ end;
+
+ internal procedure SetUoMColumnIndex(ColumnIndex: Integer)
+ begin
+ UoMColumnIndex := ColumnIndex;
+ end;
+
+ internal procedure GetProductColumnIndex(): List of [Integer]
+ begin
+ exit(ProductColumnIndex);
+ end;
+
+ internal procedure GetQuantityColumnIndex(): Integer
+ begin
+ exit(QuantityColumnIndex);
+ end;
+
+ internal procedure GetUoMColumnIndex(): Integer
+ begin
+ exit(UoMColumnIndex);
+ end;
+
+ internal procedure SetColumnDelimiter(Delimiter: Text)
+ begin
+ ColumnDelimiter := Delimiter;
+ end;
+
+ internal procedure GetColumnDelimiter(): Text
+ begin
+ exit(ColumnDelimiter);
+ end;
+
+ internal procedure SetDecimalSeparator(Separator: Text)
+ begin
+ DecimalSeparator := Separator;
+ end;
+
+ internal procedure GetDecimalSeparator(): Text
+ begin
+ exit(DecimalSeparator);
+ end;
+
+ internal procedure SetContainsHeaderRow(ContainsHeader: Boolean)
+ begin
+ ContainsHeaderRow := ContainsHeader;
+ end;
+
+ internal procedure GetContainsHeaderRow(): Boolean
+ begin
+ exit(ContainsHeaderRow);
+ end;
+
+ internal procedure SetColumnNames(Names: List of [Text])
+ begin
+ ColumnNames := Names;
+ end;
+
+ internal procedure GetColumnNames(): List of [Text]
+ begin
+ exit(ColumnNames);
+ end;
+
+ internal procedure SetColumnTypes(Types: List of [Text])
+ begin
+ ColumnTypes := Types;
+ end;
+
+ internal procedure GetColumnTypes(): List of [Text]
+ begin
+ exit(ColumnTypes);
+ end;
+
+ internal procedure ToJson(): JsonObject
+ var
+ JsonObject: JsonObject;
+ JsonArray: JsonArray;
+ ColumnIndex: Integer;
+ ColumnValue: Text;
+
+ begin
+ // ColumnDelimiter
+ JsonObject.Add(ColumnDelimiterLbl, ColumnDelimiter);
+
+ // ProductColumnIndex
+ foreach ColumnIndex in ProductColumnIndex do
+ JsonArray.Add(ColumnIndex);
+ JsonObject.Add(ProductColumnIndexLbl, JsonArray);
+
+ // QuantityColumnIndex
+ JsonObject.Add(QuantityColumnIndexLbl, QuantityColumnIndex);
+
+ // UoMColumnIndex
+ JsonObject.Add(UoMColumnIndexLbl, UoMColumnIndex);
+
+ // ContainsHeaderRow
+ if ContainsHeaderRow then
+ JsonObject.Add(ContainsHeaderRowLbl, 1)
+ else
+ JsonObject.Add(ContainsHeaderRowLbl, 0);
+
+ // ColumnNames
+ Clear(JsonArray);
+ foreach ColumnValue in ColumnNames do
+ JsonArray.Add(ColumnValue);
+ JsonObject.Add(ColumnNamesLbl, JsonArray);
+
+ // ColumnTypes
+ Clear(JsonArray);
+ foreach ColumnValue in ColumnTypes do
+ JsonArray.Add(ColumnValue);
+ JsonObject.Add(ColumnTypesLbl, JsonArray);
+
+ exit(JsonObject);
+ end;
+
+ internal procedure FromJson(JsonObject: JsonObject)
+ var
+ JsonArray: JsonArray;
+ JsonToken: JsonToken;
+ Index: Integer;
+ begin
+ // Clear existing values
+ Clear(ColumnDelimiter);
+ Clear(ProductColumnIndex);
+ Clear(QuantityColumnIndex);
+ Clear(UoMColumnIndex);
+ Clear(ContainsHeaderRow);
+ Clear(ColumnNames);
+ Clear(ColumnTypes);
+
+ // ColumnDelimiter
+ JsonObject.Get(ColumnDelimiterLbl, JsonToken);
+ ColumnDelimiter := JsonToken.AsValue().AsText();
+
+ // ProductColumnIndex
+ JsonObject.Get(ProductColumnIndexLbl, JsonToken);
+ JsonArray := JsonToken.AsArray();
+ for Index := 0 to JsonArray.Count - 1 do begin
+ JsonArray.Get(Index, JsonToken);
+ ProductColumnIndex.Add(JsonToken.AsValue().AsInteger());
+ end;
+
+ // QuantityColumnIndex
+ JsonObject.Get(QuantityColumnIndexLbl, JsonToken);
+ QuantityColumnIndex := JsonToken.AsValue().AsInteger();
+
+ // UoMColumnIndex
+ JsonObject.Get(UoMColumnIndexLbl, JsonToken);
+ UoMColumnIndex := JsonToken.AsValue().AsInteger();
+
+ // ContainsHeaderRow
+ JsonObject.Get(ContainsHeaderRowLbl, JsonToken);
+ if JsonToken.AsValue().AsInteger() = 1 then
+ ContainsHeaderRow := true
+ else
+ ContainsHeaderRow := false;
+
+ // ColumnNames
+ JsonObject.Get(ColumnNamesLbl, JsonToken);
+ JsonArray := JsonToken.AsArray();
+ for Index := 0 to JsonArray.Count - 1 do begin
+ JsonArray.Get(Index, JsonToken);
+ ColumnNames.Add(JsonToken.AsValue().AsText());
+ end;
+
+ // ColumnTypes
+ JsonObject.Get(ColumnTypesLbl, JsonToken);
+ JsonArray := JsonToken.AsArray();
+ for Index := 0 to JsonArray.Count - 1 do begin
+ JsonArray.Get(Index, JsonToken);
+ ColumnTypes.Add(JsonToken.AsValue().AsText());
+ end;
+ end;
+}
\ No newline at end of file
diff --git a/Apps/W1/FieldServiceIntegration/app/src/Permissions/FSD365DYNCRMMGT.PermissionSetExt.al b/Apps/W1/SalesLinesSuggestions/app/Attachment/FileHandlers/FileHandlerType.Enum.al
similarity index 59%
rename from Apps/W1/FieldServiceIntegration/app/src/Permissions/FSD365DYNCRMMGT.PermissionSetExt.al
rename to Apps/W1/SalesLinesSuggestions/app/Attachment/FileHandlers/FileHandlerType.Enum.al
index 46dfc933c1..0f3873431f 100644
--- a/Apps/W1/FieldServiceIntegration/app/src/Permissions/FSD365DYNCRMMGT.PermissionSetExt.al
+++ b/Apps/W1/SalesLinesSuggestions/app/Attachment/FileHandlers/FileHandlerType.Enum.al
@@ -2,11 +2,15 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
// ------------------------------------------------------------------------------------------------
-namespace Microsoft.Integration.DynamicsFieldService;
+namespace Microsoft.Sales.Document.Attachment;
-using System.Security.AccessControl;
-
-permissionsetextension 6611 "FS D365 DYN CRM MGT" extends "D365 DYN CRM MGT"
+enum 7275 "File Handler Type" implements "File Handler"
{
- IncludedPermissionSets = "FS - Edit";
-}
+ Extensible = false;
+ Access = Internal;
+
+ value(0; "CSV Handler")
+ {
+ Implementation = "File Handler" = "Csv Handler";
+ }
+}
\ No newline at end of file
diff --git a/Apps/W1/SalesLinesSuggestions/app/SalesLineAISuggestionsSub.Page.al b/Apps/W1/SalesLinesSuggestions/app/Attachment/SalesLineAISuggestionsSub.Page.al
similarity index 94%
rename from Apps/W1/SalesLinesSuggestions/app/SalesLineAISuggestionsSub.Page.al
rename to Apps/W1/SalesLinesSuggestions/app/Attachment/SalesLineAISuggestionsSub.Page.al
index ed9165dfda..36bda6ccf7 100644
--- a/Apps/W1/SalesLinesSuggestions/app/SalesLineAISuggestionsSub.Page.al
+++ b/Apps/W1/SalesLinesSuggestions/app/Attachment/SalesLineAISuggestionsSub.Page.al
@@ -31,6 +31,7 @@ page 7276 "Sales Line AI Suggestions Sub"
{
Editable = false;
ToolTip = 'Specifies the item number of the suggested result.';
+ StyleExpr = Rec."Line Style";
}
field("Variant Code"; Rec."Variant Code")
{
@@ -38,6 +39,7 @@ page 7276 "Sales Line AI Suggestions Sub"
ShowMandatory = IsVariantCodeMandatory;
Visible = IsVariantCodeVisible;
ToolTip = 'Specifies the variant code of the suggested result.';
+ StyleExpr = Rec."Line Style";
trigger OnValidate()
var
@@ -52,18 +54,22 @@ page 7276 "Sales Line AI Suggestions Sub"
Editable = false;
Visible = false;
ToolTip = 'Specifies the line number of the suggested result.';
+ StyleExpr = Rec."Line Style";
}
field("Description"; Rec."Description")
{
ToolTip = 'Specifies the description of the suggested result.';
+ StyleExpr = Rec."Line Style";
}
field("Quantity"; Rec.Quantity)
{
ToolTip = 'Specifies the quantity of the suggested result.';
+ StyleExpr = Rec."Line Style";
}
field("Unit of Measure Code"; Rec."Unit of Measure Code")
{
ToolTip = 'Specifies the unit of measure code of the suggested result.';
+ StyleExpr = Rec."Line Style";
}
field(Confidence; Rec.Confidence)
{
@@ -78,6 +84,7 @@ page 7276 "Sales Line AI Suggestions Sub"
Caption = 'Search Terms';
ToolTip = 'Specifies the search terms that were used to find the suggested results.';
Visible = AdditionalInformationVisible;
+ StyleExpr = Rec."Line Style";
}
}
}
diff --git a/Apps/W1/SalesLinesSuggestions/app/Attachment/SalesLineFromAttachment.Codeunit.al b/Apps/W1/SalesLinesSuggestions/app/Attachment/SalesLineFromAttachment.Codeunit.al
new file mode 100644
index 0000000000..71f2adedc2
--- /dev/null
+++ b/Apps/W1/SalesLinesSuggestions/app/Attachment/SalesLineFromAttachment.Codeunit.al
@@ -0,0 +1,68 @@
+// ------------------------------------------------------------------------------------------------
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License. See License.txt in the project root for license information.
+// ------------------------------------------------------------------------------------------------
+namespace Microsoft.Sales.Document.Attachment;
+
+using Microsoft.Sales.Document;
+using System.AI;
+using System.IO;
+using System.Utilities;
+
+codeunit 7292 "Sales Line From Attachment"
+{
+ Access = Internal;
+
+ var
+ SupportedFileFilterCaptionLbl: Label 'csv files (*.csv)|*.csv', Locked = true;
+ SupportedFileFilterLbl: Label '*.csv', Locked = true;
+ FileUploadCaptionLbl: Label 'Select a file to upload';
+
+ internal procedure AttachAndSuggest(SalesHeader: Record "Sales Header")
+ begin
+ AttachAndSuggest(SalesHeader, PromptMode::Generate);
+ end;
+
+ internal procedure AttachAndSuggest(SalesHeader: Record "Sales Header"; NewMode: PromptMode)
+ var
+ AzureOpenAI: Codeunit "Azure OpenAI";
+ FileHandlerFactory: Codeunit "File Handler Factory";
+ TempBlob: Codeunit "Temp Blob";
+ SalesLineFromAttachment: Page "Sales Line From Attachment";
+ FileHandler: interface "File Handler";
+ FileName: Text;
+ begin
+ SalesHeader.TestStatusOpen();
+ if not AzureOpenAI.IsEnabled(Enum::"Copilot Capability"::"Sales Lines Suggestions") then
+ exit;
+
+ if Upload(TempBlob, FileName) then begin
+ if FileName = '' then
+ exit;
+ FileHandlerFactory.GetFileHandler(FileHandler, FileName);
+
+ SalesLineFromAttachment.LoadData(FileHandler, FileName, TempBlob, SalesHeader);
+ SalesLineFromAttachment.SetPromptMode(NewMode);
+ SalesLineFromAttachment.Run();
+ end;
+ end;
+
+ internal procedure AttachAndSuggest(SalesLine: Record "Sales Line")
+ var
+ SalesHeader: Record "Sales Header";
+ begin
+ if SalesHeader.Get(SalesLine."Document Type", SalesLine."Document No.") then
+ AttachAndSuggest(SalesHeader);
+ end;
+
+ [TryFunction]
+ local procedure Upload(var TempBlob: Codeunit "Temp Blob"; var FileName: Text)
+ var
+ FileManagement: Codeunit "File Management";
+ begin
+ Clear(TempBlob);
+
+ FileName := FileManagement.BLOBImportWithFilter(TempBlob, FileUploadCaptionLbl, FileName, SupportedFileFilterCaptionLbl, SupportedFileFilterLbl);
+ end;
+
+}
\ No newline at end of file
diff --git a/Apps/W1/SalesLinesSuggestions/app/Attachment/SalesLineFromAttachment.Page.al b/Apps/W1/SalesLinesSuggestions/app/Attachment/SalesLineFromAttachment.Page.al
new file mode 100644
index 0000000000..495c6bed42
--- /dev/null
+++ b/Apps/W1/SalesLinesSuggestions/app/Attachment/SalesLineFromAttachment.Page.al
@@ -0,0 +1,303 @@
+// ------------------------------------------------------------------------------------------------
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License. See License.txt in the project root for license information.
+// ------------------------------------------------------------------------------------------------
+namespace Microsoft.Sales.Document.Attachment;
+
+using Microsoft.Sales.Document;
+using System.Utilities;
+
+page 7290 "Sales Line From Attachment"
+{
+ Caption = 'Suggest sales lines from file';
+ DataCaptionExpression = PageCaptionTxt;
+ PageType = PromptDialog;
+ IsPreview = true;
+ Extensible = false;
+ ApplicationArea = All;
+ Editable = true;
+ InherentEntitlements = X;
+ InherentPermissions = X;
+
+ layout
+ {
+ area(Prompt)
+ {
+ label(AttachmentMappingLbl)
+ {
+ CaptionClass = GeneratedCaption;
+ ApplicationArea = All;
+ }
+ part(AttachmentMappingPart; "Attachment Mapping Part")
+ {
+ Caption = 'Column Mapping';
+ ApplicationArea = All;
+ }
+ }
+ area(Content)
+ {
+ label(SuggestionStatusLbl)
+ {
+ CaptionClass = SuggestionStatusTxt;
+ Style = Strong;
+ ApplicationArea = All;
+ }
+
+ part(SalesLinesSub; "Sales Line AI Suggestions Sub")
+ {
+ Caption = 'Suggested sales lines';
+ ShowFilter = false;
+ ApplicationArea = All;
+ }
+ }
+ area(PromptOptions)
+ {
+ field(MatchingStyle; SearchStyle)
+ {
+ Caption = 'Matching';
+ ApplicationArea = All;
+ ToolTip = 'Specifies the search confidence to use when generating sales line suggestions.';
+ trigger OnValidate()
+ begin
+ if SearchStyle = SearchStyle::Permissive then
+ ViewOptions := ViewOptions::"Lines and Confidence";
+ end;
+ }
+ field(ViewOptions; ViewOptions)
+ {
+ Caption = 'View';
+ ApplicationArea = All;
+ ToolTip = 'Specifies whether to show lines or lines and confidence about the sales line suggestions when possible.';
+ OptionCaption = 'Lines only, Lines and Confidence';
+ }
+ }
+ }
+
+ actions
+ {
+ area(SystemActions)
+ {
+ systemaction(Generate)
+ {
+ Caption = 'Generate';
+ ToolTip = 'Generate sales line suggestions from Copilot.';
+
+ trigger OnAction()
+ var
+ NotificationManager: Codeunit "Notification Manager";
+ begin
+ NotificationManager.RecallNotification();
+ GenerateSalesLineSuggestions();
+ end;
+ }
+ systemaction(OK)
+ {
+ Caption = 'Insert';
+ ToolTip = 'Keep sales line suggestions proposed by Copilot.';
+ }
+ systemaction(Cancel)
+ {
+ Caption = 'Discard';
+ ToolTip = 'Discard sales line suggestions proposed by Copilot.';
+ }
+ }
+ }
+
+ trigger OnOpenPage()
+ var
+ ProgressDialog: Dialog;
+ begin
+ SearchStyle := Enum::"Search Style"::Balanced;
+ GlobalTempBlob.CreateInStream(GlobalFileInstream);
+
+ ProgressDialog.Open(FetchingSearchTermsProgressLbl);
+ // LLM call or loading from cache to fetch the FileHandlerResult
+ GlobalFileHandlerResult := GlobalFileHandler.Process(GlobalFileInstream);
+ GlobalFileData := GlobalFileHandler.GetFileData(GlobalFileHandlerResult); // Read file data based on the FileHandlerResult
+ CurrPage.AttachmentMappingPart.Page.LoadCSVAndGetProductInfo(GlobalFileData, GlobalFileHandlerResult);
+ ProgressDialog.Close();
+
+ SummarizePromptAndPageCaption();
+ end;
+
+ trigger OnQueryClosePage(CloseAction: Action): Boolean
+ var
+ SalesLineUtility: Codeunit "Sales Line Utility";
+ TotalCopiedLines: Integer;
+ begin
+ TotalCopiedLines := 0;
+ if CloseAction = CloseAction::OK then begin
+ TotalCopiedLines := TempGlobalSalesLineAISuggestion.Count();
+ if TotalCopiedLines > 0 then
+ SalesLineUtility.CopySalesLineToDoc(GlobalSalesHeader, TempGlobalSalesLineAISuggestion);
+ // Save the mapping used for generating the sales lines
+ GlobalFileHandler.Finalize(GlobalFileHandlerResult);
+ end;
+ end;
+
+ local procedure GenerateSalesLineSuggestions()
+ var
+ SalesLinesSuggestionsImpl: Codeunit "Sales Lines Suggestions Impl.";
+ NewProductInformationColumns: List of [Integer];
+ NewQuantityColumn: Integer;
+ NewUoMColumn: Integer;
+ ProgressDialog: Dialog;
+ SearchQuery: Text;
+ NoOfDataLinesInFile: Integer;
+ begin
+ TempGlobalSalesLineAISuggestion.DeleteAll();
+ Clear(TempGlobalSalesLineAISuggestion);
+ if CurrPage.AttachmentMappingPart.Page.ColumnMappingHasChanged(NewProductInformationColumns, NewQuantityColumn, NewUoMColumn) then begin
+ GlobalFileHandlerResult.SetProductColumnIndex(NewProductInformationColumns);
+ GlobalFileHandlerResult.SetQuantityColumnIndex(NewQuantityColumn);
+ GlobalFileHandlerResult.SetUoMColumnIndex(NewUoMColumn);
+ end;
+ if GlobalFileHandlerResult.GetContainsHeaderRow() then
+ NoOfDataLinesInFile := GlobalFileData.Count() - 1
+ else
+ NoOfDataLinesInFile := GlobalFileData.Count();
+ ProgressDialog.Open(FetchingSearchTermsProgressLbl);
+ SearchQuery := BuildSearchQuery(GlobalFileData, GlobalFileHandlerResult);
+ ProgressDialog.Close();
+ ProgressDialog.Open(GeneratingSalesLinesProgressLbl);
+ SalesLinesSuggestionsImpl.GenerateSalesLineSuggestions(SearchQuery, SearchStyle, GlobalSalesHeader, TempGlobalSalesLineAISuggestion);
+ SuggestionStatusTxt := StrSubstNo(SuggestionStatusTok, TempGlobalSalesLineAISuggestion.Count(), NoOfDataLinesInFile);
+ CurrPage.SalesLinesSub.Page.Load(TempGlobalSalesLineAISuggestion, ViewOptions);
+ ProgressDialog.Close();
+ SummarizePromptAndPageCaption();
+ end;
+
+ local procedure BuildSearchQuery(FileData: List of [List of [Text]]; FileParserResult: Codeunit "File Handler Result"): Text
+ var
+ SLSPrompts: Codeunit "SLS Prompts";
+ ProductInfoAsText: Text;
+ HeaderRow: List of [Text];
+ SearchQuery: Text;
+ Rows: Text;
+ StartIndex, Index1, Index2 : Integer;
+ begin
+ // Add header row
+ if FileParserResult.GetContainsHeaderRow() then begin
+ HeaderRow := FileData.Get(1);
+ StartIndex := 2
+ end else begin
+ HeaderRow := FileParserResult.GetColumnNames();
+ StartIndex := 1;
+ end;
+
+ // Add header row
+ ProductInfoAsText := ProductInfoTok;
+ if FileParserResult.GetQuantityColumnIndex() <> 0 then
+ ProductInfoAsText := StrSubstNo('%1%2%3', ProductInfoAsText, FileParserResult.GetColumnDelimiter(), QuantityTok);
+ if FileParserResult.GetUoMColumnIndex() <> 0 then
+ ProductInfoAsText := StrSubstNo('%1%2%3', ProductInfoAsText, FileParserResult.GetColumnDelimiter(), UoMTok);
+
+ // Add new line character
+ ProductInfoAsText := StrSubstNo('%1%2', ProductInfoAsText, '\n');
+ Rows := ProductInfoAsText;
+ // Add data to the list
+ Clear(ProductInfoAsText);
+ for Index1 := StartIndex to FileData.Count() do begin
+ Clear(ProductInfoAsText);
+ foreach Index2 in FileParserResult.GetProductColumnIndex() do
+ if ProductInfoAsText = '' then
+ ProductInfoAsText := FileData.Get(Index1).Get(Index2)
+ else
+ ProductInfoAsText := StrSubstNo('%1 %2', ProductInfoAsText, FileData.Get(Index1).Get(Index2));
+
+ if FileParserResult.GetQuantityColumnIndex() <> 0 then
+ ProductInfoAsText := StrSubstNo('%1%2%3', ProductInfoAsText, FileParserResult.GetColumnDelimiter(), FileData.Get(Index1).Get(FileParserResult.GetQuantityColumnIndex()));
+
+ if FileParserResult.GetUoMColumnIndex() <> 0 then
+ ProductInfoAsText := StrSubstNo('%1%2%3', ProductInfoAsText, FileParserResult.GetColumnDelimiter(), FileData.Get(Index1).Get(FileParserResult.GetUoMColumnIndex()));
+ ProductInfoAsText := StrSubstNo('%1%2', ProductInfoAsText, '\n');
+ Rows += ProductInfoAsText;
+ end;
+
+ SearchQuery := StrSubstNo(SLSPrompts.GetProductFromCsvTemplateUserInputPrompt(), Rows);
+ exit(SearchQuery);
+ end;
+
+ internal procedure LoadData(var FileHandler: interface "File Handler"; FileName: Text; var LoadedTempBlob: Codeunit "Temp Blob"; SalesHeader: Record "Sales Header")
+ begin
+ GlobalFileHandler := FileHandler;
+ GlobalFileName := FileName;
+ GlobalTempBlob := LoadedTempBlob;
+ GlobalSalesHeader := SalesHeader;
+ end;
+
+ internal procedure SetPromptMode(NewMode: PromptMode)
+ begin
+ CurrPage.PromptMode := NewMode;
+ end;
+
+ local procedure SummarizePromptAndPageCaption()
+ var
+ ProductInfoColumnCaption: Text;
+ QuantityColumnCaption: Text;
+ UoMColumnCaption: Text;
+ LoopIndex: Integer;
+ TabLbl: Label '', Comment = 'Tab character.', Locked = true;
+ TabChar: Char;
+ begin
+ // GeneratedCaption will be of the format "Suggest sales lines from Sample.csv. Use ; as a column separator."
+ TabChar := 9;
+ GeneratedCaption := StrSubstNo(PromptPart1Lbl, GlobalFileName);
+ if GlobalFileHandlerResult.GetColumnDelimiter() <> '' then
+ if GlobalFileHandlerResult.GetColumnDelimiter() = TabChar then
+ GeneratedCaption := GeneratedCaption + StrSubstNo(PromptPart2Lbl, TabLbl)
+ else
+ GeneratedCaption := GeneratedCaption + StrSubstNo(PromptPart2Lbl, GlobalFileHandlerResult.GetColumnDelimiter());
+
+ PageCaptionTxt := GeneratedCaption;
+ if GlobalFileHandlerResult.GetProductColumnIndex().Count > 0 then begin
+ for LoopIndex := 1 to GlobalFileHandlerResult.GetProductColumnIndex().Count do
+ if ProductInfoColumnCaption = '' then
+ ProductInfoColumnCaption := GlobalFileHandlerResult.GetColumnNames().Get(GlobalFileHandlerResult.GetProductColumnIndex().Get(LoopIndex))
+ else
+ ProductInfoColumnCaption := StrSubstNo('%1, %2', ProductInfoColumnCaption, GlobalFileHandlerResult.GetColumnNames().Get(GlobalFileHandlerResult.GetProductColumnIndex().Get(LoopIndex)));
+ // ProductInfoColumnCaption will be of the format "Product Information: Product Name, Product No."
+ ProductInfoColumnCaption := StrSubstNo(MappedInfoLbl, ProductInfoTok, ProductInfoColumnCaption);
+
+ if GlobalFileHandlerResult.GetQuantityColumnIndex() <> 0 then begin
+ QuantityColumnCaption := StrSubstNo(MappedInfoLbl, QuantityTok, GlobalFileHandlerResult.GetColumnNames().Get(GlobalFileHandlerResult.GetQuantityColumnIndex()));
+ // ProductInfoColumnCaption will be of the format "Product Information: Product Name, Product No. Quantity: Quantity"
+ ProductInfoColumnCaption := StrSubstNo('%1 %2', ProductInfoColumnCaption, QuantityColumnCaption);
+ end;
+
+ if GlobalFileHandlerResult.GetUoMColumnIndex() <> 0 then begin
+ UoMColumnCaption := StrSubstNo(MappedInfoLbl, UoMTok, GlobalFileHandlerResult.GetColumnNames().Get(GlobalFileHandlerResult.GetUoMColumnIndex()));
+ ProductInfoColumnCaption := StrSubstNo('%1 %2', ProductInfoColumnCaption, UoMColumnCaption);
+ end;
+ // ProductInfoColumnCaption will be of the format "Mapped columns Product Information: Product Name, Product No. Quantity: Quantity UoM: UoM"
+ ProductInfoColumnCaption := StrSubstNo(AttachmentMappingLbl, ProductInfoColumnCaption);
+ // PageCaptionTxt will be of the format "Suggest sales lines from Sample.csv. Use ; as a column separator. Mapped columns Product Information: Product Name, Product No. Quantity: Quantity UoM: UoM"
+ PageCaptionTxt := StrSubstNo('%1 %2', PageCaptionTxt, ProductInfoColumnCaption);
+ end;
+ end;
+
+ var
+ TempGlobalSalesLineAISuggestion: Record "Sales Line AI Suggestions" temporary;
+ GlobalSalesHeader: Record "Sales Header";
+ GlobalFileHandlerResult: Codeunit "File Handler Result";
+ GlobalTempBlob: Codeunit "Temp Blob";
+ GlobalFileHandler: interface "File Handler";
+ PageCaptionTxt: Text;
+ GlobalFileName: Text;
+ GlobalFileInstream: Instream;
+ GlobalFileData: List of [List of [Text]];
+ FetchingSearchTermsProgressLbl: Label 'Fetching search terms from file...';
+ GeneratingSalesLinesProgressLbl: Label 'Generating sales line suggestions from the search terms...';
+ SuggestionStatusTok: Label '%1 suggestions were generated from %2 lines in the file.', Comment = '%1 = number of suggestions, %2 = number of lines in the file.';
+ SuggestionStatusTxt: Text;
+ SearchStyle: Enum "Search Style";
+ ViewOptions: Option "Lines only","Lines and Confidence";
+ GeneratedCaption: Text;
+ PromptPart1Lbl: Label 'Suggest sales lines from data in %1. ', Comment = '%1 = file name.';
+ PromptPart2Lbl: Label 'Use %1 as the column separator.', Comment = '%1 = column separator.';
+ AttachmentMappingLbl: Label 'Mapped columns %1.', Comment = '%1 = all mapped column captions.';
+ MappedInfoLbl: Label '%1: %2', Comment = '%1 = column caption, %2 = column value.';
+ ProductInfoTok: Label 'Product Information';
+ QuantityTok: Label 'Quantity';
+ UoMTok: Label 'Unit of Measure';
+}
\ No newline at end of file
diff --git a/Apps/W1/SalesLinesSuggestions/app/BaseAppExtensions/SalesInvoiceSubFormExt.PageExt.al b/Apps/W1/SalesLinesSuggestions/app/BaseAppExtensions/SalesInvoiceSubFormExt.PageExt.al
index 311df7f0ad..3728e7cd66 100644
--- a/Apps/W1/SalesLinesSuggestions/app/BaseAppExtensions/SalesInvoiceSubFormExt.PageExt.al
+++ b/Apps/W1/SalesLinesSuggestions/app/BaseAppExtensions/SalesInvoiceSubFormExt.PageExt.al
@@ -16,7 +16,6 @@ pageextension 7277 "Sales Invoice Sub Form Ext" extends "Sales Invoice Subform"
Caption = 'Suggest sales lines';
Image = SparkleFilled;
ToolTip = 'Get sales lines suggestions from Copilot';
- Visible = SLSActionVisibility;
trigger OnAction()
begin
@@ -32,7 +31,6 @@ pageextension 7277 "Sales Invoice Sub Form Ext" extends "Sales Invoice Subform"
Caption = 'Suggest sales lines';
Image = SparkleFilled;
ToolTip = 'Get sales lines suggestions from Copilot';
- Visible = SLSActionVisibility;
trigger OnAction()
begin
@@ -42,12 +40,6 @@ pageextension 7277 "Sales Invoice Sub Form Ext" extends "Sales Invoice Subform"
}
}
- trigger OnOpenPage()
- begin
- SLSActionVisibility := SalesLineAISuggestionImp.CheckSupportedLanguages()
- end;
-
var
SalesLineAISuggestionImp: Codeunit "Sales Lines Suggestions Impl.";
- SLSActionVisibility: Boolean;
}
\ No newline at end of file
diff --git a/Apps/W1/SalesLinesSuggestions/app/BaseAppExtensions/SalesOrderSubFormExt.PageExt.al b/Apps/W1/SalesLinesSuggestions/app/BaseAppExtensions/SalesOrderSubFormExt.PageExt.al
index 348135bfd0..4169a2895a 100644
--- a/Apps/W1/SalesLinesSuggestions/app/BaseAppExtensions/SalesOrderSubFormExt.PageExt.al
+++ b/Apps/W1/SalesLinesSuggestions/app/BaseAppExtensions/SalesOrderSubFormExt.PageExt.al
@@ -4,6 +4,8 @@
// ------------------------------------------------------------------------------------------------
namespace Microsoft.Sales.Document;
+using Microsoft.Sales.Document.Attachment;
+
pageextension 7278 "Sales Order Sub Form Ext" extends "Sales Order Subform"
{
actions
@@ -16,39 +18,63 @@ pageextension 7278 "Sales Order Sub Form Ext" extends "Sales Order Subform"
Caption = 'Suggest sales lines';
Image = SparkleFilled;
ToolTip = 'Get sales lines suggestions from Copilot';
- Visible = SLSActionVisibility;
trigger OnAction()
begin
SalesLineAISuggestionImp.GetLinesSuggestions(Rec);
end;
}
- }
- addlast(processing)
- {
- action("Suggest Sales Lines")
+ action("Attach Prompting")
{
ApplicationArea = All;
- Caption = 'Suggest sales lines';
+ Caption = 'Suggest sales lines from file';
+ Ellipsis = true;
Image = SparkleFilled;
- ToolTip = 'Get sales lines suggestions from Copilot';
- Visible = SLSActionVisibility;
+ ToolTip = 'Get sales lines from file with Copilot';
trigger OnAction()
begin
- SalesLineAISuggestionImp.GetLinesSuggestions(Rec);
+ SalesLineFromAttachment.AttachAndSuggest(Rec);
end;
}
}
- }
+ addlast(processing)
+ {
+ group("Copilot")
+ {
+ Image = SparkleFilled;
+ ShowAs = SplitButton;
- trigger OnOpenPage()
- begin
- SLSActionVisibility := SalesLineAISuggestionImp.CheckSupportedLanguages()
- end;
+ action("Suggest Sales Lines")
+ {
+ ApplicationArea = All;
+ Caption = 'Suggest sales lines';
+ Image = SparkleFilled;
+ ToolTip = 'Get sales lines suggestions from Copilot';
+
+ trigger OnAction()
+ begin
+ SalesLineAISuggestionImp.GetLinesSuggestions(Rec);
+ end;
+ }
+ action(Attach)
+ {
+ ApplicationArea = All;
+ Caption = 'Suggest sales lines from file';
+ Ellipsis = true;
+ Image = SparkleFilled;
+ ToolTip = 'Get sales lines from file with Copilot';
+
+ trigger OnAction()
+ begin
+ SalesLineFromAttachment.AttachAndSuggest(Rec);
+ end;
+ }
+ }
+ }
+ }
var
SalesLineAISuggestionImp: Codeunit "Sales Lines Suggestions Impl.";
-
- SLSActionVisibility: Boolean;
+ SalesLineFromAttachment: Codeunit "Sales Line From Attachment";
}
\ No newline at end of file
diff --git a/Apps/W1/SalesLinesSuggestions/app/BaseAppExtensions/SalesQuoteSubFormExt.PageExt.al b/Apps/W1/SalesLinesSuggestions/app/BaseAppExtensions/SalesQuoteSubFormExt.PageExt.al
index 6f50984169..e96e0ebfe2 100644
--- a/Apps/W1/SalesLinesSuggestions/app/BaseAppExtensions/SalesQuoteSubFormExt.PageExt.al
+++ b/Apps/W1/SalesLinesSuggestions/app/BaseAppExtensions/SalesQuoteSubFormExt.PageExt.al
@@ -16,7 +16,6 @@ pageextension 7279 "Sales Quote Sub Form Ext" extends "Sales Quote Subform"
Caption = 'Suggest sales lines';
Image = SparkleFilled;
ToolTip = 'Get sales lines suggestions from Copilot';
- Visible = SLSActionVisibility;
trigger OnAction()
begin
@@ -32,7 +31,6 @@ pageextension 7279 "Sales Quote Sub Form Ext" extends "Sales Quote Subform"
Caption = 'Suggest sales lines';
Image = SparkleFilled;
ToolTip = 'Get sales lines suggestions from Copilot';
- Visible = SLSActionVisibility;
trigger OnAction()
begin
@@ -41,13 +39,7 @@ pageextension 7279 "Sales Quote Sub Form Ext" extends "Sales Quote Subform"
}
}
}
- trigger OnOpenPage()
- begin
- SLSActionVisibility := SalesLineAISuggestionImp.CheckSupportedLanguages()
- end;
var
SalesLineAISuggestionImp: Codeunit "Sales Lines Suggestions Impl.";
-
- SLSActionVisibility: Boolean;
}
\ No newline at end of file
diff --git a/Apps/W1/SalesLinesSuggestions/app/SLSPrompts.Codeunit.al b/Apps/W1/SalesLinesSuggestions/app/SLSPrompts.Codeunit.al
index 12c9dd81a4..bb86914d2f 100644
--- a/Apps/W1/SalesLinesSuggestions/app/SLSPrompts.Codeunit.al
+++ b/Apps/W1/SalesLinesSuggestions/app/SLSPrompts.Codeunit.al
@@ -31,7 +31,7 @@ codeunit 7276 "SLS Prompts"
BCSLSTaskPrompt: Text;
begin
GetAzureKeyVaultSecret(BCSLSMetaPrompt, 'BCSLSMetaPrompt');
- GetAzureKeyVaultSecret(BCSLSTaskPrompt, 'BCSLSTaskPrompt');
+ GetAzureKeyVaultSecret(BCSLSTaskPrompt, 'BCSLSTaskPrompt-V250');
exit(BCSLSMetaPrompt + StrSubstNo(BCSLSTaskPrompt, Format(Today, 0, 4)));
end;
@@ -76,6 +76,48 @@ codeunit 7276 "SLS Prompts"
exit(BCSLSMagicFunctionPrompt);
end;
+ [NonDebuggable]
+ internal procedure GetAttachmentSystemPrompt(): Text
+ var
+ BCSLSMetaPrompt: Text;
+ BCSLSAttachmentTaskPrompt: Text;
+ begin
+ GetAzureKeyVaultSecret(BCSLSMetaPrompt, 'BCSLSMetaPrompt');
+ GetAzureKeyVaultSecret(BCSLSAttachmentTaskPrompt, 'BCSLSAttachmentTaskPrompt');
+
+ exit(BCSLSMetaPrompt + BCSLSAttachmentTaskPrompt);
+ end;
+
+ [NonDebuggable]
+ internal procedure GetParsingCsvPrompt(): Text
+ var
+ BCSLSParseCsvPrompt: Text;
+ begin
+ GetAzureKeyVaultSecret(BCSLSParseCsvPrompt, 'BCSLSParseCsvPrompt');
+
+ exit(BCSLSParseCsvPrompt);
+ end;
+
+ [NonDebuggable]
+ internal procedure GetParsingCsvTemplateUserInputPrompt(): Text
+ var
+ BCSLSParseCsvTemplateUserInputPrompt: Text;
+ begin
+ GetAzureKeyVaultSecret(BCSLSParseCsvTemplateUserInputPrompt, 'BCSLSParseCsvTemplateUserInputPrompt');
+
+ exit(BCSLSParseCsvTemplateUserInputPrompt);
+ end;
+
+ [NonDebuggable]
+ internal procedure GetProductFromCsvTemplateUserInputPrompt(): Text
+ var
+ BCSLSGetProductFromCsvTemplateUserInputPrompt: Text;
+ begin
+ GetAzureKeyVaultSecret(BCSLSGetProductFromCsvTemplateUserInputPrompt, 'BCSLSGetProductFromCsvTemplateUserInputPrompt');
+
+ exit(BCSLSGetProductFromCsvTemplateUserInputPrompt);
+ end;
+
var
ConstructingPromptFailedErr: label 'There was an error with sending the call to Copilot. Log a Business Central support request about this.', Comment = 'Copilot is a Microsoft service name and must not be translated';
TelemetryConstructingPromptFailedErr: label 'There was an error with constructing the chat completion prompt from the Key Vault.', Locked = true;
diff --git a/Apps/W1/SalesLinesSuggestions/app/SalesAzureOpenAITools/FunctionsImpl/LookupItemsFromCsvFunction.Codeunit.al b/Apps/W1/SalesLinesSuggestions/app/SalesAzureOpenAITools/FunctionsImpl/LookupItemsFromCsvFunction.Codeunit.al
new file mode 100644
index 0000000000..926f7ff691
--- /dev/null
+++ b/Apps/W1/SalesLinesSuggestions/app/SalesAzureOpenAITools/FunctionsImpl/LookupItemsFromCsvFunction.Codeunit.al
@@ -0,0 +1,113 @@
+// ------------------------------------------------------------------------------------------------
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License. See License.txt in the project root for license information.
+// ------------------------------------------------------------------------------------------------
+namespace Microsoft.Sales.Document.Attachment;
+
+using System.AI;
+using Microsoft.Sales.Document;
+
+codeunit 7296 "Lookup Items From Csv Function" implements "AOAI Function"
+{
+ Access = Internal;
+
+ var
+ FunctionNameLbl: Label 'extract_information_from_csv', Locked = true;
+
+ [NonDebuggable]
+ procedure GetPrompt(): JsonObject
+ var
+ Prompt: Codeunit "SLS Prompts";
+ PromptJson: JsonObject;
+ begin
+ PromptJson.ReadFrom(Prompt.GetParsingCsvPrompt());
+ exit(PromptJson);
+ end;
+
+ [NonDebuggable]
+ procedure Execute(Arguments: JsonObject): Variant
+ var
+ FileHandlerResult: Codeunit "File Handler Result";
+ ColumnDelimiter: Text;
+ DecimalSeparator: Text;
+ ContainsHeaderRow: Boolean;
+ ProductInfoColumnIndex: List of [Integer];
+ QuantityColumnIndex: Integer;
+ UoMColumnIndex: Integer;
+ ColumnNames: List of [Text];
+ ColumnTypes: List of [Text];
+ begin
+ if GetDetailsFromUserQuery(ColumnDelimiter, DecimalSeparator, ContainsHeaderRow, ProductInfoColumnIndex, QuantityColumnIndex, UoMColumnIndex, ColumnNames, ColumnTypes, Arguments) then begin
+ FileHandlerResult.SetColumnDelimiter(ColumnDelimiter);
+ FileHandlerResult.SetDecimalSeparator(DecimalSeparator);
+ FileHandlerResult.SetContainsHeaderRow(ContainsHeaderRow);
+ FileHandlerResult.SetProductColumnIndex(ProductInfoColumnIndex);
+ FileHandlerResult.SetQuantityColumnIndex(QuantityColumnIndex);
+ FileHandlerResult.SetUoMColumnIndex(UoMColumnIndex);
+ FileHandlerResult.SetColumnNames(ColumnNames);
+ FileHandlerResult.SetColumnTypes(ColumnTypes);
+ end;
+ exit(FileHandlerResult);
+ end;
+
+ procedure GetName(): Text
+ begin
+ exit(FunctionNameLbl);
+ end;
+
+ [TryFunction]
+ local procedure GetDetailsFromUserQuery(var ColumnDelimiter: Text; var DecimalSeparator: Text; var ContainsHeaderRow: Boolean; var ProductInfoColumnIndex: List of [Integer]; var QuantityColumnIndex: Integer; var UoMColumnIndex: Integer; var ColumnNames: List of [Text]; var ColumnTypes: List of [Text]; Arguments: JsonObject)
+ var
+ JsonItem: JsonToken;
+ DecimalSeparatorToken: JsonToken;
+ ColumnDelimiterToken: JsonToken;
+ ContainsHeaderRowToken: JsonToken;
+ ProductInfoColumnIndexArrayToken: JsonArray;
+ ProductInfoColumnIndexToken: JsonToken;
+ ProductInfoColumnIndexChildToken: JsonToken;
+ QuantityColumnIndexToken: JsonToken;
+ UoMColumnIndexToken: JsonToken;
+ ColumnsToken: JsonToken;
+ ColumnArrayToken: JsonArray;
+ ColumnToken: JsonToken;
+ ColumnNameToken: JsonToken;
+ ColumnTypeToken: JsonToken;
+ LoopIndex: Integer;
+ begin
+ JsonItem := Arguments.AsToken();
+ if JsonItem.AsObject().Get('column_delimiter', ColumnDelimiterToken) then
+ ColumnDelimiter := ColumnDelimiterToken.AsValue().AsText();
+
+ if JsonItem.AsObject().Get('decimal_separator', DecimalSeparatorToken) then
+ DecimalSeparator := DecimalSeparatorToken.AsValue().AsText();
+
+ if JsonItem.AsObject().Get('csv_has_header_row', ContainsHeaderRowToken) then
+ ContainsHeaderRow := ContainsHeaderRowToken.AsValue().AsBoolean();
+
+ if JsonItem.AsObject().Get('product_info_column_index', ProductInfoColumnIndexToken) then begin
+ ProductInfoColumnIndexArrayToken := ProductInfoColumnIndexToken.AsArray();
+ for LoopIndex := 0 to ProductInfoColumnIndexArrayToken.Count() - 1 do begin
+ ProductInfoColumnIndexArrayToken.Get(LoopIndex, ProductInfoColumnIndexChildToken);
+ ProductInfoColumnIndex.Add(ProductInfoColumnIndexChildToken.AsValue().AsInteger());
+ end;
+ end;
+
+ if JsonItem.AsObject().Get('quantity_column_index', QuantityColumnIndexToken) then
+ QuantityColumnIndex := QuantityColumnIndexToken.AsValue().AsInteger();
+
+ if JsonItem.AsObject().Get('unit_of_measure_column_index', UoMColumnIndexToken) then
+ if not UoMColumnIndexToken.AsValue().IsNull then
+ UoMColumnIndex := UoMColumnIndexToken.AsValue().AsInteger();
+
+ if JsonItem.AsObject().Get('csv_columns', ColumnsToken) then begin
+ ColumnArrayToken := ColumnsToken.AsArray();
+ for LoopIndex := 0 to ColumnArrayToken.Count() - 1 do begin
+ ColumnArrayToken.Get(LoopIndex, ColumnToken);
+ if ColumnToken.AsObject().Get('column_name', ColumnNameToken) then
+ ColumnNames.Add(ColumnNameToken.AsValue().AsText());
+ if ColumnToken.AsObject().Get('column_type', ColumnTypeToken) then
+ ColumnTypes.Add(ColumnTypeToken.AsValue().AsText());
+ end;
+ end;
+ end;
+}
\ No newline at end of file
diff --git a/Apps/W1/SalesLinesSuggestions/app/SalesLineAISuggestions.Page.al b/Apps/W1/SalesLinesSuggestions/app/SalesLineAISuggestions.Page.al
index 15c209d193..fd3ab15c2d 100644
--- a/Apps/W1/SalesLinesSuggestions/app/SalesLineAISuggestions.Page.al
+++ b/Apps/W1/SalesLinesSuggestions/app/SalesLineAISuggestions.Page.al
@@ -5,6 +5,7 @@
namespace Microsoft.Sales.Document;
using System.Telemetry;
+using Microsoft.Sales.Document.Attachment;
page 7275 "Sales Line AI Suggestions"
{
@@ -115,7 +116,6 @@ page 7275 "Sales Line AI Suggestions"
GenerateSalesLineSuggestions(SearchQueryTxt, SearchStyle);
end;
-
}
systemaction(OK)
{
@@ -128,6 +128,19 @@ page 7275 "Sales Line AI Suggestions"
Caption = 'Discard';
ToolTip = 'Discard sales line suggestions proposed by Copilot.';
}
+ systemaction(Attach)
+ {
+ Caption = 'Attach';
+ ToolTip = 'Attach a file to get sales line suggestions from Copilot.';
+
+ trigger OnAction()
+ var
+ SalesLineFromAttachment: Codeunit "Sales Line From Attachment";
+ begin
+ CurrPage.Close();
+ SalesLineFromAttachment.AttachAndSuggest(GlobalSalesHeader, PromptMode::Prompt);
+ end;
+ }
}
area(PromptGuide)
{
@@ -275,6 +288,10 @@ page 7275 "Sales Line AI Suggestions"
TotalCopiedLines := TempSalesLineAISuggestion.Count();
if TotalCopiedLines > 0 then begin
SalesLineUtility.CopySalesLineToDoc(GlobalSalesHeader, TempSalesLineAISuggestion);
+ if CheckIfSuggestedLinesContainErrors() then begin
+ CurrPage.Update(false);
+ exit(false);
+ end;
FeatureTelemetry.LogUptake('0000ME4', SalesLineAISuggestionImpl.GetFeatureName(), Enum::"Feature Uptake Status"::Used);
end;
end;
@@ -380,6 +397,17 @@ page 7275 "Sales Line AI Suggestions"
Result := Result.TrimEnd(', ');
end;
+ local procedure CheckIfSuggestedLinesContainErrors(): Boolean
+ var
+ TempSalesLineSuggestion: Record "Sales Line AI Suggestions" temporary;
+ begin
+ TempSalesLineSuggestion.Copy(TempSalesLineAISuggestion, true);
+ TempSalesLineSuggestion.Reset();
+ TempSalesLineSuggestion.SetRange("Line Style", 'Unfavorable');
+ if not TempSalesLineSuggestion.IsEmpty() then
+ exit(true);
+ end;
+
var
TempSalesLineAISuggestion: Record "Sales Line AI Suggestions" temporary;
GlobalSalesHeader: Record "Sales Header";
diff --git a/Apps/W1/SalesLinesSuggestions/app/SalesLineAISuggestions.Table.al b/Apps/W1/SalesLinesSuggestions/app/SalesLineAISuggestions.Table.al
index cad8a6533f..12f331f1f4 100644
--- a/Apps/W1/SalesLinesSuggestions/app/SalesLineAISuggestions.Table.al
+++ b/Apps/W1/SalesLinesSuggestions/app/SalesLineAISuggestions.Table.al
@@ -64,6 +64,10 @@ table 7275 "Sales Line AI Suggestions"
{
Caption = 'Source Line Record ID';
}
+ field(35; "Line Style"; Text[30])
+ {
+ Caption = 'Line Style';
+ }
field(5407; "Unit of Measure Code"; Code[10])
{
Caption = 'Unit of Measure Code';
diff --git a/Apps/W1/SalesLinesSuggestions/app/SalesLinesSuggestionsImpl.Codeunit.al b/Apps/W1/SalesLinesSuggestions/app/SalesLinesSuggestionsImpl.Codeunit.al
index 2da6b0d708..2fe4759064 100644
--- a/Apps/W1/SalesLinesSuggestions/app/SalesLinesSuggestionsImpl.Codeunit.al
+++ b/Apps/W1/SalesLinesSuggestions/app/SalesLinesSuggestionsImpl.Codeunit.al
@@ -8,7 +8,7 @@ using System;
using System.AI;
using System.Telemetry;
using System.Environment;
-using System.Globalization;
+using Microsoft.Sales.Document.Attachment;
codeunit 7275 "Sales Lines Suggestions Impl."
{
@@ -112,7 +112,7 @@ codeunit 7275 "Sales Lines Suggestions Impl."
exit;
// Generate OpenAI Completion
- AzureOpenAI.SetAuthorization(Enum::"AOAI Model Type"::"Chat Completions", AOAIDeployments.GetGPT4Latest());
+ AzureOpenAI.SetAuthorization(Enum::"AOAI Model Type"::"Chat Completions", AOAIDeployments.GetGPT4Preview());
AzureOpenAI.SetCopilotCapability(Enum::"Copilot Capability"::"Sales Lines Suggestions");
AOAIChatCompletionParams.SetMaxTokens(MaxTokens());
@@ -161,18 +161,79 @@ codeunit 7275 "Sales Lines Suggestions Impl."
exit(CompletionAnswer);
end;
- procedure CheckSupportedLanguages(): Boolean
+ [NonDebuggable]
+ internal procedure AICall(SystemPromptTxt: SecretText; SearchQuery: Text; AOAIFunction: interface "AOAI Function"; var CompletionAnswer: Text): Variant
var
- LanguageSelection: Record "Language Selection";
- UserSessionSettings: SessionSettings;
+ AzureOpenAI: Codeunit "Azure OpenAi";
+ AOAIDeployments: Codeunit "AOAI Deployments";
+ AOAIOperationResponse: Codeunit "AOAI Operation Response";
+ AOAIFunctionResponse: Codeunit "AOAI Function Response";
+ AOAIChatCompletionParams: Codeunit "AOAI Chat Completion Params";
+ AOAIChatMessages: Codeunit "AOAI Chat Messages";
+ MagicFunction: Codeunit "Magic Function";
+ FeatureTelemetry: Codeunit "Feature Telemetry";
+ NotificationManager: Codeunit "Notification Manager";
+ FileHandlerResult: Codeunit "File Handler Result";
+ FunctionResponseVariant: Variant;
+ TelemetryCD: Dictionary of [Text, Text];
+ StartDateTime: DateTime;
+ DurationAsBigInt: BigInteger;
+ EmptyArguments: JsonObject;
+ ResponseTelemetryErr: Label 'Response error code: %1', Comment = '%1 = Error code', Locked = true;
begin
- UserSessionSettings.Init();
- LanguageSelection.SetLoadFields("Language Tag");
- LanguageSelection.SetRange("Language ID", UserSessionSettings.LanguageId());
- if LanguageSelection.FindFirst() then
- if LanguageSelection."Language Tag".StartsWith('pt-') then
- exit(false);
- exit(true);
+ if not AzureOpenAI.IsEnabled(Enum::"Copilot Capability"::"Sales Lines Suggestions") then
+ exit;
+
+ // Generate OpenAI Completion
+ AzureOpenAI.SetAuthorization(Enum::"AOAI Model Type"::"Chat Completions", AOAIDeployments.GetGPT4Latest());
+ AzureOpenAI.SetCopilotCapability(Enum::"Copilot Capability"::"Sales Lines Suggestions");
+
+ AOAIChatCompletionParams.SetMaxTokens(MaxTokens());
+ AOAIChatCompletionParams.SetTemperature(0);
+
+ AOAIChatMessages.AddTool(MagicFunction);
+ AOAIChatMessages.AddTool(AOAIFunction);
+ AOAIChatMessages.SetToolChoice('auto');
+
+ AOAIChatMessages.SetPrimarySystemMessage(SystemPromptTxt);
+ AOAIChatMessages.AddUserMessage(SearchQuery);
+
+ StartDateTime := CurrentDateTime();
+ AzureOpenAI.GenerateChatCompletion(AOAIChatMessages, AOAIChatCompletionParams, AOAIOperationResponse);
+ DurationAsBigInt := CurrentDateTime() - StartDateTime;
+ TelemetryCD.Add('Response time', Format(DurationAsBigInt));
+
+ if AOAIOperationResponse.IsSuccess() then begin
+ CompletionAnswer := AOAIOperationResponse.GetResult();
+ if AOAIOperationResponse.IsFunctionCall() then begin
+ AOAIFunctionResponse := AOAIOperationResponse.GetFunctionResponse();
+ FeatureTelemetry.LogUsage('0000MZC', GetFeatureName(), 'Call Chat Completion API', TelemetryCD);
+
+ if AOAIFunctionResponse.IsSuccess() then begin
+ FunctionResponseVariant := AOAIFunctionResponse.GetResult();
+ if FunctionResponseVariant.IsCodeunit() then
+ FileHandlerResult := AOAIFunctionResponse.GetResult()
+ else begin
+ MagicFunction.Execute(EmptyArguments);
+ FeatureTelemetry.LogError('0000N6J', GetFeatureName(), 'Process function_call', 'Function not supported, defaulting to magic_function');
+ end;
+ end else begin
+ MagicFunction.Execute(EmptyArguments);
+ FeatureTelemetry.LogError('0000MZ8', GetFeatureName(), 'Process function_call', 'Function not supported, defaulting to magic_function');
+ end
+ end else begin
+ if AOAIOperationResponse.GetResult() = '' then
+ FeatureTelemetry.LogError('0000MZ9', GetFeatureName(), 'Call Chat Completion API', 'Completion answer is empty', '', TelemetryCD)
+ else
+ FeatureTelemetry.LogError('0000MZA', GetFeatureName(), 'Process function_call', 'function_call not found in the completion answer');
+ NotificationManager.SendNotification(ChatCompletionResponseErr);
+ end;
+ end else begin
+ FeatureTelemetry.LogError('0000MZB', GetFeatureName(), 'Call Chat Completion API', StrSubstNo(ResponseTelemetryErr, AOAIOperationResponse.GetStatusCode()), '', TelemetryCD);
+ NotificationManager.SendNotification(ChatCompletionResponseErr);
+ end;
+
+ exit(FileHandlerResult);
end;
procedure RegisterCapability()
diff --git a/Apps/W1/SalesLinesSuggestions/app/Search/Search.Codeunit.al b/Apps/W1/SalesLinesSuggestions/app/Search/Search.Codeunit.al
index 40632f761a..db209c5b0f 100644
--- a/Apps/W1/SalesLinesSuggestions/app/Search/Search.Codeunit.al
+++ b/Apps/W1/SalesLinesSuggestions/app/Search/Search.Codeunit.al
@@ -62,7 +62,7 @@ codeunit 7282 "Search"
//Add ALSearch Options
ALSearchOptions := ALSearchOptions.SearchOptions();
ALSearchOptions.IncludeSynonyms := IncludeSynonyms;
- ALSearchOptions.UseContextAwareRanking := UseContextAwareRanking;
+ ALSearchOptions.UseContextAwareRanking := UseContextAwareRanking and (ItemResultsArray.Count() < 10);
//Add Search Filters
SearchFilter := SearchFilter.SearchFilter();
@@ -82,7 +82,7 @@ codeunit 7282 "Search"
ALSearchOptions.AddSearchFilter(SearchFilter);
//Add Search Ranking Context
- if UseContextAwareRanking then begin
+ if UseContextAwareRanking and (ItemResultsArray.Count() < 10) then begin
ALSearchRankingContext := ALSearchRankingContext.SearchRankingContext();
ALSearchRankingContext.Intent := Intent;
ALSearchRankingContext.UserMessage := SearchQuery;
@@ -155,15 +155,15 @@ codeunit 7282 "Search"
ALSearchQuery := ALSearchQuery.SearchQuery(ItemNameHASH);
foreach Keyword in SearchPrimaryKeyWords do
- ALSearchQuery.AddRequiredTerm(Keyword);
+ ALSearchQuery.AddRequiredTerm(Keyword.ToLower());
case SearchStyle of
"Search Style"::Precise:
foreach Keyword in SearchAdditionalKeyWords do
- ALSearchQuery.AddRequiredTerm(Keyword);
+ ALSearchQuery.AddRequiredTerm(Keyword.ToLower());
else
foreach Keyword in SearchAdditionalKeyWords do
- ALSearchQuery.AddOptionalTerm(Keyword);
+ ALSearchQuery.AddOptionalTerm(Keyword.ToLower());
end;
case SearchStyle of
diff --git a/Apps/W1/SalesLinesSuggestions/app/Utilities/SalesLineUtility.Codeunit.al b/Apps/W1/SalesLinesSuggestions/app/Utilities/SalesLineUtility.Codeunit.al
index d96d8420f9..2426f24ab0 100644
--- a/Apps/W1/SalesLinesSuggestions/app/Utilities/SalesLineUtility.Codeunit.al
+++ b/Apps/W1/SalesLinesSuggestions/app/Utilities/SalesLineUtility.Codeunit.al
@@ -17,7 +17,6 @@ codeunit 7280 "Sales Line Utility"
PreparingSalesLineLbl: Label 'Preparing %1 of %2', Comment = '%1 = Counter, %2 = Total Lines';
InsertingSalesLineLbl: Label 'Inserting %1 of %2', Comment = '%1 = Counter, %2 = Total Lines';
CopyingFromBlanketOrderLbl: Label 'Copying from Blanket Order...';
- SalesLineValidationErr: Label 'There was an error while validating the line with No. %1, Description %2.\Error: %3', Comment = '%1 = No., %2 = Description, %3 = Error Message';
SalesLineCopyErr: Label 'There was an error while copying the line with No. %1, Description %2, Quantity %3.', Comment = '%1 = No., %2 = Description, %3 = Quantity';
procedure CopySalesLineToDoc(SalesHeader: Record "Sales Header"; var TempSalesLineAiSuggestion: Record "Sales Line AI Suggestions" temporary)
@@ -39,7 +38,8 @@ codeunit 7280 "Sales Line Utility"
if IsBlanketOrder(TempSalesLineAiSuggestion) then
CreateFromBlanketOrder(SalesHeader, TempSalesLineAiSuggestion, NextLineNo)
else begin
- PrepareSalesLine(SalesHeader, TempFromSalesLine, TempSalesLineAiSuggestion, NextLineNo);
+ if PrepareSalesLine(SalesHeader, TempFromSalesLine, TempSalesLineAiSuggestion, NextLineNo) then
+ exit;
CopySalesLineToDoc(SalesHeader, TempFromSalesLine, LinesNotCopied, NextLineNo);
end;
end;
@@ -124,12 +124,13 @@ codeunit 7280 "Sales Line Utility"
end;
end;
- local procedure PrepareSalesLine(SalesHeader: Record "Sales Header"; var TempSalesLine: Record "Sales Line" temporary; var TempSalesLineAiSuggestion: Record "Sales Line AI Suggestions" temporary; LineNo: Integer)
+ local procedure PrepareSalesLine(SalesHeader: Record "Sales Header"; var TempSalesLine: Record "Sales Line" temporary; var TempSalesLineAiSuggestion: Record "Sales Line AI Suggestions" temporary; LineNo: Integer) HasErrors: Boolean
var
TempPreparedSalesLine: Record "Sales Line" temporary;
PrepareSalesLineForCopying: Codeunit "Prepare Sales Line For Copying";
SalesLineAISuggestionImpl: Codeunit "Sales Lines Suggestions Impl.";
FeatureTelemetry: Codeunit "Feature Telemetry";
+ NotificationManager: Codeunit "Notification Manager";
ProgressDialog: Dialog;
TotalLines: Integer;
Counter: Integer;
@@ -151,7 +152,10 @@ codeunit 7280 "Sales Line Utility"
end
else begin
FeatureTelemetry.LogError('0000MMM', SalesLineAISuggestionImpl.GetFeatureName(), 'Prepare Sales Lines before inserting', '', GetLastErrorCallStack());
- Error(SalesLineValidationErr, TempSalesLineAiSuggestion."No.", TempSalesLineAiSuggestion.Description, GetLastErrorText());
+ NotificationManager.SendNotification(GetLastErrorText());
+ TempSalesLineAiSuggestion."Line Style" := 'Unfavorable';
+ TempSalesLineAiSuggestion.Modify();
+ HasErrors := true;
end;
until TempSalesLineAiSuggestion.Next() = 0;
ProgressDialog.Close();
@@ -163,5 +167,4 @@ codeunit 7280 "Sales Line Utility"
ProgressDialog.Open(ProcessingLinesLbl);
ProgressDialog.Update(1, '');
end;
-
}
\ No newline at end of file
diff --git a/Apps/W1/SalesLinesSuggestions/app/app.json b/Apps/W1/SalesLinesSuggestions/app/app.json
index 2e447d6c4f..32a681d151 100644
--- a/Apps/W1/SalesLinesSuggestions/app/app.json
+++ b/Apps/W1/SalesLinesSuggestions/app/app.json
@@ -19,7 +19,7 @@
"idRanges": [
{
"from": 7275,
- "to": 7291
+ "to": 7297
}
],
"resourceExposurePolicy": {
diff --git a/Apps/W1/SalesLinesSuggestions/test/SaveFileMappingTest.Codeunit.al b/Apps/W1/SalesLinesSuggestions/test/SaveFileMappingTest.Codeunit.al
new file mode 100644
index 0000000000..4b97674874
--- /dev/null
+++ b/Apps/W1/SalesLinesSuggestions/test/SaveFileMappingTest.Codeunit.al
@@ -0,0 +1,146 @@
+namespace Microsoft.Sales.Document.Test;
+
+using Microsoft.Sales.Document.Attachment;
+
+codeunit 139788 "Save File Mapping Test"
+{
+ Subtype = Test;
+ TestPermissions = Disabled;
+
+ trigger OnRun()
+ begin
+ // [FEATURE] [Sales with AI]:[Attachment]
+ end;
+
+ var
+ Assert: Codeunit Assert;
+
+ [Test]
+ procedure SaveToJsonTest()
+ var
+ FileHandlerResult: Codeunit "File Handler Result";
+ ColumnNames: List of [Text];
+ ColumnTypes: List of [Text];
+ MappingAsJsonObject: JsonObject;
+ MappingAsJsonString: Text;
+ ExpectedJsonStringLbl: Label '{"Column_Delimiter":"$","Product_Column_Index":[20,30,40],"Quantity_Column_Index":60,"UoM_Column_Index":70,"Contains_Header_Row":1,"Column_Names":["Column1","Column2","Column3"],"Column_Types":["Text","Boolean","Random text"]}', Locked = true;
+ begin
+ // [FEATURE] [Sales Line From Attachment with AI]
+ // [SCENARIO] FileHandlerResult can be converted to a jsonobject and saved as a jsonstring.
+
+ // [GIVEN] Create a new file handler result with column delimiter '$', product column indexes 20, 30, 40, quantity column index 60, UoM column index 70, contains header row true, column names and column types
+ Clear(FileHandlerResult);
+ FileHandlerResult.SetColumnDelimiter('$');
+ FileHandlerResult.AddProductColumnIndex(20);
+ FileHandlerResult.AddProductColumnIndex(30);
+ FileHandlerResult.AddProductColumnIndex(40);
+ FileHandlerResult.SetQuantityColumnIndex(60);
+ FileHandlerResult.SetUoMColumnIndex(70);
+ FileHandlerResult.SetContainsHeaderRow(true);
+ ColumnNames.Add('Column1');
+ ColumnNames.Add('Column2');
+ ColumnNames.Add('Column3');
+ FileHandlerResult.SetColumnNames(ColumnNames);
+ ColumnTypes.Add('Text');
+ ColumnTypes.Add('Boolean');
+ ColumnTypes.Add('Random text');
+ FileHandlerResult.SetColumnTypes(ColumnTypes);
+
+ // [WHEN] Save the file handler result as a json object
+ MappingAsJsonObject := FileHandlerResult.ToJson();
+
+ // [THEN] Check the json object is valid
+ Assert.IsTrue(MappingAsJsonObject.WriteTo(MappingAsJsonString), 'Mapping Json object is not valid');
+ // [THEN] Check the json string is as expected
+ Assert.AreEqual(ExpectedJsonStringLbl, MappingAsJsonString, 'Mapping Json string is not expected');
+ end;
+
+ [Test]
+ procedure LoadFileHandlerResultFromJsonTest()
+ var
+ FileHandlerResult: Codeunit "File Handler Result";
+ ExpectedColumnNames: List of [Text];
+ ExpectedColumnTypes: List of [Text];
+ ExpectedProductColumnIndex: List of [Integer];
+ MappingAsJsonObject: JsonObject;
+ ExpectedJsonStringLbl: Label '{"Column_Delimiter":"$","Product_Column_Index":[20,30,40],"Quantity_Column_Index":60,"UoM_Column_Index":70,"Contains_Header_Row":1,"Column_Names":["Column1","Column2","Column3"],"Column_Types":["Text","Boolean","Random text"]}', Locked = true;
+ ArrayElementText: Text;
+ ArrayElementInt: Integer;
+ begin
+ // [FEATURE] [Sales Line From Attachment with AI]
+ // [SCENARIO] FileHandlerResult can be initialized from a jsonobject.
+
+ // [GIVEN] Create a json object from json string
+ MappingAsJsonObject.ReadFrom(ExpectedJsonStringLbl);
+
+ // [WHEN] Initialize the file handler result from the json object
+ FileHandlerResult.FromJson(MappingAsJsonObject);
+
+ // [THEN] Properties on the File handler result is as expected
+ Assert.AreEqual('$', FileHandlerResult.GetColumnDelimiter(), 'Column delimiter is not expected');
+ Assert.AreEqual(3, FileHandlerResult.GetProductColumnIndex().Count(), 'Product column indexes are not expected');
+ ExpectedProductColumnIndex.Add(20);
+ ExpectedProductColumnIndex.Add(40);
+ ExpectedProductColumnIndex.Add(30);
+ foreach ArrayElementInt in ExpectedProductColumnIndex do
+ Assert.IsTrue(FileHandlerResult.GetProductColumnIndex().Contains(ArrayElementInt), 'Product column index is not expected');
+ Assert.AreEqual(60, FileHandlerResult.GetQuantityColumnIndex(), 'Quantity column index is not expected');
+ Assert.AreEqual(70, FileHandlerResult.GetUoMColumnIndex(), 'UoM column index is not expected');
+ Assert.AreEqual(true, FileHandlerResult.GetContainsHeaderRow(), 'Contains header row is not expected');
+ Assert.AreEqual(3, FileHandlerResult.GetColumnNames().Count(), 'Column names are not expected');
+ ExpectedColumnNames.Add('Column1');
+ ExpectedColumnNames.Add('Column2');
+ ExpectedColumnNames.Add('Column3');
+ foreach ArrayElementText in ExpectedColumnNames do
+ Assert.IsTrue(FileHandlerResult.GetColumnNames().Contains(ArrayElementText), 'Column names are not expected');
+ Assert.AreEqual(3, FileHandlerResult.GetColumnTypes().Count(), 'Column types are not expected');
+ ExpectedColumnTypes.Add('Text');
+ ExpectedColumnTypes.Add('Boolean');
+ ExpectedColumnTypes.Add('Random text');
+ foreach ArrayElementText in ExpectedColumnTypes do
+ Assert.IsTrue(FileHandlerResult.GetColumnTypes().Contains(ArrayElementText), 'Column types are not expected');
+ end;
+
+ [Test]
+ procedure MappingCacheManagementTest()
+ var
+ MappingCache: Record "Mapping Cache";
+ FileHandlerResult: Codeunit "File Handler Result";
+ MappingCacheManagement: Codeunit "Mapping Cache Management";
+ MappingAsJsonObject: JsonObject;
+ FileHandlerResultJsonStringLbl: Label '{"Column_Delimiter":"$","Product_Column_Index":[20,30,40],"Quantity_Column_Index":60,"UoM_Column_Index":70,"Contains_Header_Row":1,"Column_Names":["Column1","Column2","Column3"],"Column_Types":["Text","Boolean","Random text"]}', Locked = true;
+ PartOfFileToSaveLbl: Label 'Column1,Column2,Column3,Column4,Column5', Locked = true;
+ FileInfoAsHash: Text;
+ ExpectedMappingAsJsonText: Text;
+ begin
+ // [FEATURE] [Sales Line From Attachment with AI]
+ // [SCENARIO] MappingCacheManagement functions help in saving and restoring the mappings.
+
+ // [GIVEN] Create a hash of the passed text. In the product, it would typically be the text in the first line when header is present
+ FileInfoAsHash := MappingCacheManagement.GenerateFileHashInHex(PartOfFileToSaveLbl);
+ if MappingCache.Get(FileInfoAsHash) then // Ensure cache is empty
+ MappingCache.Delete();
+
+ // [WHEN] MappingExists method is run in the MappingCacheMapping codeunit.
+ // [THEN] Mapping should not exist
+ Assert.IsFalse(MappingCacheManagement.MappingExists(FileInfoAsHash), 'Mapping should not exist');
+
+ // [WHEN] GetMapping method is run in the MappingCacheMapping codeunit.
+ // [THEN] Mapping should not exist
+ Assert.IsFalse(MappingCacheManagement.GetMapping(FileInfoAsHash, ExpectedMappingAsJsonText), 'Mapping should exist');
+
+ // [GIVEN] Save the file handler result json string to the mapping cache
+ MappingCacheManagement.SaveMapping(FileInfoAsHash, FileHandlerResultJsonStringLbl);
+ // [WHEN] MappingExists method is run in the MappingCacheMapping codeunit.
+ // [THEN] Mapping should exist
+ Assert.IsTrue(MappingCacheManagement.MappingExists(FileInfoAsHash), 'Mapping should not exist');
+ // [WHEN] GetMapping method is run in the MappingCacheMapping codeunit.
+ // [THEN] Mapping should exist
+ Assert.IsTrue(MappingCacheManagement.GetMapping(FileInfoAsHash, ExpectedMappingAsJsonText), 'Mapping should exist');
+
+ // [WHEN] The cache value is loaded to a JsonObject
+ // [THEN] The JsonObject should be valid
+ MappingAsJsonObject.ReadFrom(ExpectedMappingAsJsonText);
+ FileHandlerResult.FromJson(MappingAsJsonObject);
+ end;
+}
\ No newline at end of file
diff --git a/Apps/W1/SalesLinesSuggestions/test/SearchItemTest.Codeunit.al b/Apps/W1/SalesLinesSuggestions/test/SearchItemTest.Codeunit.al
index 994658c913..6658e7c55c 100644
--- a/Apps/W1/SalesLinesSuggestions/test/SearchItemTest.Codeunit.al
+++ b/Apps/W1/SalesLinesSuggestions/test/SearchItemTest.Codeunit.al
@@ -29,6 +29,7 @@ codeunit 139780 "Search Item Test"
QuantityIsIncorrectErr: Label 'Quantity is incorrect!';
NeedThreeItemButOneNotExistingLbl: Label 'I need one bike, one table and one Model Took Kit';
NeedItemInNonEnglishLbl: Label 'I need one bicikl.';
+ InvalidPrecisionErr: Label 'The value %1 in field %2 is of lesser precision than expected. \\Note: Default rounding precision of %3 is used if a rounding precision is not defined.', Comment = '%1 - decimal value, %2 - field name, %3 - default rounding precision.';
[Test]
@@ -703,6 +704,42 @@ codeunit 139780 "Search Item Test"
CheckSalesLineContent(SalesHeader."No.");
end;
+ [Test]
+ [HandlerFunctions('InvokeGenerateAndCheckItemsFound,SendNotificationHandler')]
+ procedure SalesLineIsNotInsertedIfErrorOccursOnInsertSuggestedLine()
+ var
+ SalesHeader: Record "Sales Header";
+ Item: Record Item;
+ SalesLineAISuggestions: Page "Sales Line AI Suggestions";
+ UserInput: Text;
+ Quantity: Text;
+ begin
+ // [SCENARIO 507779] If error occurs on insert suggested lines, notification is thrown and lines are not inserted
+ Initialize();
+
+ // [GIVEN] Find first Item
+ Item.FindFirst();
+ UpdateRoundingPrecisonForItem(Item);
+
+ // [GIVEN] Create user input
+ Quantity := '2.5';
+ UserInput := GlobalUserInput;
+ UserInput += Quantity + ' quantity of ' + Item."No." + '; ';
+
+ LibraryVariableStorage.Enqueue(UserInput);
+ LibraryVariableStorage.Enqueue(1);
+ EnqueueOneItemAndQty(Item.Description, 2.5);
+
+ LibraryVariableStorage.Enqueue(StrSubstNo(InvalidPrecisionErr, Quantity, 'Quantity', '0.00001'));
+
+ // [WHEN] AI suggestions should generate sales line
+ // [HANDLER] Show a notification, it is handled in the handler function 'SendNotificationHandler'
+ CreateNewSalesOrderAndRunSalesLineAISuggestionsPage(SalesHeader, SalesLineAISuggestions);
+
+ // [THEN] No line is inserted in the sales line
+ CheckSalesLineContent(SalesHeader."No.");
+ end;
+
local procedure CreateSalesOrderWithSalesLine(var SalesHeader: Record "Sales Header"; var SalesLine: Record "Sales Line")
var
Customer: Record Customer;
@@ -796,7 +833,7 @@ codeunit 139780 "Search Item Test"
LibraryVariableStorage.AssertEmpty();
end;
- local procedure EnqueueOneItemAndQty(ItemDesc: Text; Qty: Integer)
+ local procedure EnqueueOneItemAndQty(ItemDesc: Text; Qty: Decimal)
begin
LibraryVariableStorage.Enqueue(ItemDesc);
LibraryVariableStorage.Enqueue(Qty);
@@ -814,6 +851,19 @@ codeunit 139780 "Search Item Test"
ExtText := ExtendedTextLine.Text;
end;
+ local procedure UpdateRoundingPrecisonForItem(var Item: Record Item)
+ var
+ ItemUnitOfMeasure: Record "Item Unit of Measure";
+ begin
+ ItemUnitOfMeasure.SetRange("Item No.", Item."No.");
+ ItemUnitOfMeasure.SetRange(Code, Item."Base Unit of Measure");
+ if ItemUnitOfMeasure.FindSet() then
+ repeat
+ ItemUnitOfMeasure."Qty. Rounding Precision" := 1;
+ ItemUnitOfMeasure.Modify();
+ until ItemUnitOfMeasure.Next() = 0;
+ end;
+
[ModalPageHandler]
procedure InvokeGenerateAndNoItemFound(var SalesLineAISuggestions: TestPage "Sales Line AI Suggestions")
begin
@@ -827,7 +877,7 @@ codeunit 139780 "Search Item Test"
procedure InvokeGenerateAndCheckItemsFound(var SalesLineAISuggestions: TestPage "Sales Line AI Suggestions")
var
ItemCount: Integer;
- quantityInSalesLineSub: Integer;
+ quantityInSalesLineSub: Decimal;
i: Integer;
begin
// Description for this queue:
@@ -842,7 +892,7 @@ codeunit 139780 "Search Item Test"
for i := 1 to ItemCount do begin
Assert.AreEqual(LibraryVariableStorage.DequeueText(), SalesLineAISuggestions.SalesLinesSub.Description.Value(), DescriptionIsIncorrectErr);
Evaluate(quantityInSalesLineSub, SalesLineAISuggestions.SalesLinesSub.Quantity.Value());
- Assert.AreEqual(LibraryVariableStorage.DequeueInteger(), quantityInSalesLineSub, QuantityIsIncorrectErr);
+ Assert.AreEqual(LibraryVariableStorage.DequeueDecimal(), quantityInSalesLineSub, QuantityIsIncorrectErr);
SalesLineAISuggestions.SalesLinesSub.Next();
end;
SalesLineAISuggestions.OK.Invoke();
diff --git a/Apps/W1/SalesLinesSuggestions/test/app.json b/Apps/W1/SalesLinesSuggestions/test/app.json
index 63af9ec0fb..1097f3a873 100644
--- a/Apps/W1/SalesLinesSuggestions/test/app.json
+++ b/Apps/W1/SalesLinesSuggestions/test/app.json
@@ -36,7 +36,7 @@
"idRanges": [
{
"from": 139780,
- "to": 139787
+ "to": 139788
}
],
"runtime": "13.0",
diff --git a/Apps/W1/SalesOrderTakingAgent/app/ExtensionLogo.png b/Apps/W1/SalesOrderTakingAgent/app/ExtensionLogo.png
new file mode 100644
index 0000000000..f53be3156b
Binary files /dev/null and b/Apps/W1/SalesOrderTakingAgent/app/ExtensionLogo.png differ
diff --git a/Apps/W1/SalesOrderTakingAgent/app/app.json b/Apps/W1/SalesOrderTakingAgent/app/app.json
new file mode 100644
index 0000000000..844251aea2
--- /dev/null
+++ b/Apps/W1/SalesOrderTakingAgent/app/app.json
@@ -0,0 +1,24 @@
+{
+ "id": "23b1772f-b8b8-4e87-9339-9ff7cbb2364b",
+ "name": "Sales Order Taker Agent",
+ "publisher": "Microsoft",
+ "brief": "The Sales Order Taker agent is handling the end-to-end sales order capturing process.",
+ "description": "Sales Order Taker agent handles the end-to-end sales order capturing process, from taking the customer’s order by e-mail, preparing the quote with requested items, checking the availability of the items, sending the quote to the customer for approval, and finally converting the quote to a sales order upon receiving customer confirmation.",
+ "version": "25.0.0.0",
+ "privacyStatement": "https://go.microsoft.com/fwlink/?LinkId=724009",
+ "EULA": "https://go.microsoft.com/fwlink/?LinkId=847985",
+ "help": "https://go.microsoft.com/fwlink/?LinkId=849257",
+ "url": "https://go.microsoft.com/fwlink/?LinkId=724011",
+ "contextSensitiveHelpUrl": "https://go.microsoft.com/fwlink/?LinkId=849257",
+ "logo": "ExtensionLogo.png",
+ "application": "25.0.0.0",
+ "screenshots": [],
+ "platform": "25.0.0.0",
+ "target": "OnPrem",
+ "idRanges": [{"from": 3000, "to": 5000}],
+ "propagateDependencies": true,
+ "features": [
+ "TranslationFile",
+ "NoImplicitWith"
+ ]
+}
\ No newline at end of file
diff --git a/Apps/W1/SalesOrderTakingAgent/app/src/AgentsSystemApp/AgentSetup/AgentAccessControl.Page.al b/Apps/W1/SalesOrderTakingAgent/app/src/AgentsSystemApp/AgentSetup/AgentAccessControl.Page.al
new file mode 100644
index 0000000000..493f1990c1
--- /dev/null
+++ b/Apps/W1/SalesOrderTakingAgent/app/src/AgentsSystemApp/AgentSetup/AgentAccessControl.Page.al
@@ -0,0 +1,132 @@
+// ------------------------------------------------------------------------------------------------
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License. See License.txt in the project root for license information.
+// ------------------------------------------------------------------------------------------------
+
+namespace System.Agents;
+
+using System.Security.AccessControl;
+
+page 4320 "Agent Access Control"
+{
+ PageType = ListPart;
+ ApplicationArea = All;
+ SourceTable = "Agent Access Control";
+ Caption = 'Agent Access Control';
+ MultipleNewLines = false;
+ Extensible = false;
+
+ layout
+ {
+ area(Content)
+ {
+ repeater(Main)
+ {
+ field(UserName; UserName)
+ {
+ Caption = 'User Name';
+ ToolTip = 'Specifies the name of the User that can access the agent.';
+ TableRelation = User;
+
+ trigger OnValidate()
+ begin
+ ValidateUserName(UserName);
+ end;
+ }
+ field(UserFullName; UserFullName)
+ {
+ Caption = 'User Full Name';
+ ToolTip = 'Specifies the Full Name of the User that can access the agent.';
+ Editable = false;
+ }
+ field(Access; Rec.Access)
+ {
+ Caption = 'Access';
+ Tooltip = 'Specifies the access level for the user for this agent.';
+
+ trigger OnValidate()
+ var
+ AgentImpl: Codeunit "Agent Impl.";
+ begin
+ if Rec.Access = Rec.Access::User then
+ AgentImpl.EnsureOwnerExists(Rec);
+ end;
+ }
+ }
+ }
+ }
+
+ trigger OnAfterGetRecord()
+ begin
+ UpdateGlobalVariables();
+ end;
+
+ trigger OnAfterGetCurrRecord()
+ begin
+ UpdateGlobalVariables();
+ end;
+
+ trigger OnDeleteRecord(): Boolean
+ var
+ AgentImpl: Codeunit "Agent Impl.";
+ begin
+ AgentImpl.EnsureOwnerExists(Rec);
+ end;
+
+ local procedure ValidateUserName(NewUserName: Text)
+ var
+ User: Record "User";
+ UserGuid: Guid;
+ begin
+ if Evaluate(UserGuid, NewUserName) then begin
+ User.Get(UserGuid);
+ UpdateUser(User."User Security ID");
+ UpdateGlobalVariables();
+ exit;
+ end;
+
+ User.SetRange("User Name", NewUserName);
+ if not User.FindFirst() then begin
+ User.SetFilter("User Name", '@*''''' + NewUserName + '''''*');
+ User.FindFirst();
+ end;
+
+ UpdateUser(User."User Security ID");
+ UpdateGlobalVariables();
+ end;
+
+ local procedure UpdateUser(NewUserID: Guid)
+ var
+ RecordExists: Boolean;
+ begin
+ RecordExists := Rec.Find();
+
+ if RecordExists then
+ Error(CannotUpdateUserErr);
+
+ Rec."User Security ID" := NewUserID;
+ Rec.Insert(true);
+ end;
+
+ local procedure UpdateGlobalVariables()
+ var
+ User: Record "User";
+ begin
+ Clear(UserFullName);
+ Clear(UserName);
+
+ if IsNullGuid(Rec."User Security ID") then
+ exit;
+
+ if not User.Get(Rec."User Security ID") then
+ exit;
+
+ UserName := User."User Name";
+ UserFullName := User."Full Name";
+ end;
+
+ var
+ UserFullName: Text[80];
+ UserName: Code[50];
+ CannotUpdateUserErr: Label 'You cannot change the User. Delete and create the entry again.';
+}
\ No newline at end of file
diff --git a/Apps/W1/SalesOrderTakingAgent/app/src/AgentsSystemApp/AgentSetup/AgentCard.Page.al b/Apps/W1/SalesOrderTakingAgent/app/src/AgentsSystemApp/AgentSetup/AgentCard.Page.al
new file mode 100644
index 0000000000..154b55f42a
--- /dev/null
+++ b/Apps/W1/SalesOrderTakingAgent/app/src/AgentsSystemApp/AgentSetup/AgentCard.Page.al
@@ -0,0 +1,223 @@
+// ------------------------------------------------------------------------------------------------
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License. See License.txt in the project root for license information.
+// ------------------------------------------------------------------------------------------------
+
+namespace System.Agents;
+
+using System.Security.User;
+using System.Environment.Configuration;
+
+page 4315 "Agent Card"
+{
+ PageType = Card;
+ ApplicationArea = All;
+ SourceTable = Agent;
+ Caption = 'Agent Card';
+ RefreshOnActivate = true;
+ DataCaptionExpression = Rec."User Name";
+ Extensible = false;
+
+ layout
+ {
+ area(Content)
+ {
+ group(General)
+ {
+ Caption = 'General';
+
+ field(UserName; Rec."User Name")
+ {
+ ShowMandatory = true;
+ ApplicationArea = Basic, Suite;
+ Caption = 'User Name';
+ Tooltip = 'Specifies the name of the user that is associated with the agent.';
+ Editable = ControlsEditable;
+
+ trigger OnValidate()
+ begin
+ CurrPage.Update(false);
+ end;
+ }
+
+ field(DisplayName; Rec."Display Name")
+ {
+ ShowMandatory = true;
+ ApplicationArea = Basic, Suite;
+ Caption = 'Display Name';
+ Tooltip = 'Specifies the display name of the user that is associated with the agent.';
+ Editable = ControlsEditable;
+ }
+ group(UserSettingsGroup)
+ {
+ ShowCaption = false;
+ field(AgentProfile; ProfileDisplayName)
+ {
+ ApplicationArea = Basic, Suite;
+ Caption = 'Profile';
+ ToolTip = 'Specifies the profile that is associated with the agent.';
+ Editable = false;
+
+ trigger OnAssistEdit()
+ var
+ AgentImpl: Codeunit "Agent Impl.";
+ begin
+ if AgentImpl.ProfileLookup(UserSettingsRecord) then
+ AgentImpl.UpdateAgentUserSettings(UserSettingsRecord);
+ end;
+ }
+ }
+ field(State; Rec.State)
+ {
+ ApplicationArea = Basic, Suite;
+ Importance = Standard;
+ Caption = 'State';
+ ToolTip = 'Specifies if the agent is enabled or disabled.';
+ trigger OnValidate()
+ begin
+ UpdateControls();
+ end;
+ }
+ }
+ group(InstructionsGroup)
+ {
+ Caption = 'Instructions';
+ Visible = Rec."Setup Page ID" = 0;
+ Enabled = AgentRecordExists;
+ field(Instructions; InstructionsTxt)
+ {
+ ApplicationArea = All;
+ Caption = 'Instructions';
+ ShowCaption = false;
+ ExtendedDatatype = RichContent;
+ MultiLine = true;
+ Editable = ControlsEditable;
+ ToolTip = 'Specifies the instructions for the agent.';
+
+ trigger OnValidate()
+ var
+ AgentImpl: Codeunit "Agent Impl.";
+ begin
+ AgentImpl.SetInstructions(Rec, InstructionsTxt);
+ end;
+ }
+ }
+ part(Permissions; "User Subform")
+ {
+ ApplicationArea = Basic, Suite;
+ Caption = 'Agent Permission Sets';
+ Enabled = AgentRecordExists;
+ Editable = ControlsEditable;
+ SubPageLink = "User Security ID" = field("User Security ID");
+ }
+ part(UserAccess; "Agent Access Control")
+ {
+ Enabled = AgentRecordExists;
+ ApplicationArea = Basic, Suite;
+ Caption = 'User Access';
+ SubPageLink = "Agent User Security ID" = field("User Security ID");
+ }
+ }
+ }
+ actions
+ {
+ area(Navigation)
+ {
+ action(UserSettingsAction)
+ {
+ ApplicationArea = Basic, Suite;
+ Caption = 'User Settings';
+ ToolTip = 'Set up the profile and regional settings for the agent.';
+ Image = SetupLines;
+
+ trigger OnAction()
+ var
+ UserSettings: Codeunit "User Settings";
+ begin
+ Rec.TestField("User Security ID");
+ UserSettings.GetUserSettings(Rec."User Security ID", UserSettingsRecord);
+ Commit();
+ Page.RunModal(Page::"User Settings", UserSettingsRecord);
+ end;
+ }
+ action(AgentTasks)
+ {
+ ApplicationArea = All;
+ Caption = 'Agent Tasks';
+ ToolTip = 'View agent tasks';
+ Image = Log;
+
+ trigger OnAction()
+ var
+ AgentTask: Record "Agent Task";
+ begin
+ AgentTask.SetRange("Agent User Security ID", Rec."User Security ID");
+ Page.Run(Page::"Agent Task List", AgentTask);
+ end;
+ }
+ }
+ area(Promoted)
+ {
+ group(Category_Process)
+ {
+ actionref(UserSettings_Promoted; UserSettingsAction)
+ {
+ }
+ actionref(AgentTasks_Promoted; AgentTasks)
+ {
+ }
+ }
+ }
+ }
+
+ local procedure UpdateControls()
+ var
+ AgentImpl: Codeunit "Agent Impl.";
+ UserSettings: Codeunit "User Settings";
+ begin
+ AgentRecordExists := true;
+ if IsNullGuid(Rec."User Security ID") then
+ AgentRecordExists := false;
+ ControlsEditable := Rec.State = Rec.State::Disabled;
+ ShowEnableWarning := '';
+ if CurrPage.Editable and (Rec.State = Rec.State::Enabled) then
+ ShowEnableWarning := EnabledWarningTok;
+
+ InstructionsTxt := AgentImpl.GetInstructions(Rec);
+
+ if not IsNullGuid(Rec."User Security ID") then begin
+ UserSettings.GetUserSettings(Rec."User Security ID", UserSettingsRecord);
+ ProfileDisplayName := AgentImpl.GetProfileName(UserSettingsRecord.Scope, UserSettingsRecord."App ID", UserSettingsRecord."Profile ID");
+ end;
+ end;
+
+ trigger OnAfterGetCurrRecord()
+ begin
+ UpdateControls();
+ end;
+
+ trigger OnNewRecord(BelowxRec: Boolean)
+ begin
+ Rec.State := Rec.State::Disabled;
+ InstructionsTxt := '';
+ end;
+
+ trigger OnInsertRecord(BelowxRec: Boolean): Boolean
+ var
+ AgentImpl: Codeunit "Agent Impl.";
+ begin
+ Rec.Insert(true);
+ AgentImpl.InsertCurrentOwnerIfNoOwnersDefined(Rec);
+ CurrPage.Update(false);
+ exit(false);
+ end;
+
+ var
+ UserSettingsRecord: Record "User Settings";
+ EnabledWarningTok: Label 'You must set the State field to Disabled before you can make changes to this app.';
+ ControlsEditable: Boolean;
+ ShowEnableWarning: Text;
+ AgentRecordExists: Boolean;
+ InstructionsTxt: Text;
+ ProfileDisplayName: Text;
+}
\ No newline at end of file
diff --git a/Apps/W1/SalesOrderTakingAgent/app/src/AgentsSystemApp/AgentSetup/AgentImpl.Codeunit.al b/Apps/W1/SalesOrderTakingAgent/app/src/AgentsSystemApp/AgentSetup/AgentImpl.Codeunit.al
new file mode 100644
index 0000000000..eaec867303
--- /dev/null
+++ b/Apps/W1/SalesOrderTakingAgent/app/src/AgentsSystemApp/AgentSetup/AgentImpl.Codeunit.al
@@ -0,0 +1,158 @@
+// ------------------------------------------------------------------------------------------------
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License. See License.txt in the project root for license information.
+// ------------------------------------------------------------------------------------------------
+
+namespace System.Agents;
+
+using System.Environment.Configuration;
+using System.Reflection;
+using System.Environment;
+using System.Security.AccessControl;
+
+codeunit 4301 "Agent Impl."
+{
+ Access = Internal;
+ Permissions = tabledata "All Profile" = r,
+ tabledata Company = r,
+ tabledata "Application User Settings" = rim,
+ tabledata User = r,
+ tabledata "User Personalization" = rim;
+
+ internal procedure SetInstructions(var Agent: Record Agent; Instructions: Text)
+ var
+ InstructionsOutStream: OutStream;
+ begin
+ Clear(Agent.Instructions);
+ Agent.Instructions.CreateOutStream(InstructionsOutStream, GetDefaultEncoding());
+ InstructionsOutStream.Write(Instructions);
+ Agent.Modify(true);
+ end;
+
+ internal procedure GetInstructions(var Agent: Record Agent): Text
+ var
+ InstructionsInStream: InStream;
+ InstructionsText: Text;
+ begin
+ if IsNullGuid(Agent."User Security ID") then
+ exit;
+
+ Agent.CalcFields(Instructions);
+ if not Agent.Instructions.HasValue() then
+ exit('');
+
+ Agent.Instructions.CreateInStream(InstructionsInStream, GetDefaultEncoding());
+ InstructionsInStream.Read(InstructionsText);
+ exit(InstructionsText);
+ end;
+
+ internal procedure InsertCurrentOwnerIfNoOwnersDefined(var Agent: Record Agent)
+ var
+ AgentAccessControl: Record "Agent Access Control";
+ begin
+ SetOwnerFilters(AgentAccessControl);
+ AgentAccessControl.SetRange("Agent User Security ID", Agent."User Security ID");
+ if not AgentAccessControl.IsEmpty() then
+ exit;
+
+ AgentAccessControl.Access := AgentAccessControl.Access::UserAndOwner;
+ AgentAccessControl."Agent User Security ID" := Agent."User Security ID";
+ AgentAccessControl."User Security ID" := UserSecurityId();
+ AgentAccessControl.Insert();
+ end;
+
+ internal procedure EnsureOwnerExists(AgentAccessControlModified: Record "Agent Access Control")
+ var
+ ExistingAgentAccessControl: Record "Agent Access Control";
+ begin
+ if (AgentAccessControlModified.Access = ExistingAgentAccessControl.Access::Owner) or (AgentAccessControlModified.Access = ExistingAgentAccessControl.Access::UserAndOwner) then
+ exit;
+
+ SetOwnerFilters(ExistingAgentAccessControl);
+ ExistingAgentAccessControl.SetFilter("User Security ID", '<>%1', AgentAccessControlModified."User Security ID");
+ ExistingAgentAccessControl.SetRange("Agent User Security ID", AgentAccessControlModified."Agent User Security ID");
+
+ if ExistingAgentAccessControl.IsEmpty() then
+ Error(OneOwnerMustBeDefinedForAgentErr);
+ end;
+
+ # Region TODO: Update System App signatures to use the codeunit 9175 "User Settings Impl."
+ internal procedure UpdateAgentUserSettings(NewUserSettings: Record "User Settings")
+ var
+ UserPersonalization: Record "User Personalization";
+ begin
+ UserPersonalization.Get(NewUserSettings."User Security ID");
+
+ UserPersonalization."Language ID" := NewUserSettings."Language ID";
+ UserPersonalization."Locale ID" := NewUserSettings."Locale ID";
+ UserPersonalization.Company := NewUserSettings.Company;
+ UserPersonalization."Time Zone" := NewUserSettings."Time Zone";
+ UserPersonalization."Profile ID" := NewUserSettings."Profile ID";
+#pragma warning disable AL0432 // All profiles are now in the tenant scope
+ UserPersonalization.Scope := NewUserSettings.Scope;
+#pragma warning restore AL0432
+ UserPersonalization."App ID" := NewUserSettings."App ID";
+ UserPersonalization.Modify();
+ end;
+
+ procedure ProfileLookup(var UserSettingsRec: Record "User Settings"): Boolean
+ var
+ TempAllProfile: Record "All Profile" temporary;
+ begin
+ PopulateProfiles(TempAllProfile);
+
+ if TempAllProfile.Get(UserSettingsRec.Scope, UserSettingsRec."App ID", UserSettingsRec."Profile ID") then;
+ if Page.RunModal(Page::Roles, TempAllProfile) = Action::LookupOK then begin
+ UserSettingsRec."Profile ID" := TempAllProfile."Profile ID";
+ UserSettingsRec."App ID" := TempAllProfile."App ID";
+ UserSettingsRec.Scope := TempAllProfile.Scope;
+ exit(true);
+ end;
+ exit(false);
+ end;
+
+ procedure PopulateProfiles(var TempAllProfile: Record "All Profile" temporary)
+ var
+ AllProfile: Record "All Profile";
+ DescriptionFilterTxt: Label 'Navigation menu only.';
+ UserCreatedAppNameTxt: Label '(User-created)';
+ begin
+ TempAllProfile.Reset();
+ TempAllProfile.DeleteAll();
+ AllProfile.SetRange(Enabled, true);
+ AllProfile.SetFilter(Description, '<> %1', DescriptionFilterTxt);
+ if AllProfile.FindSet() then
+ repeat
+ TempAllProfile := AllProfile;
+ if IsNullGuid(TempAllProfile."App ID") then
+ TempAllProfile."App Name" := UserCreatedAppNameTxt;
+ TempAllProfile.Insert();
+ until AllProfile.Next() = 0;
+ end;
+
+ procedure GetProfileName(Scope: Option System,Tenant; AppID: Guid; ProfileID: Code[30]) ProfileName: Text
+ var
+ AllProfile: Record "All Profile";
+ begin
+ // If current profile has been changed, then find it and update the description; else, get the default
+ if not AllProfile.Get(Scope, AppID, ProfileID) then
+ exit;
+
+ ProfileName := AllProfile.Caption;
+ end;
+ #endregion
+
+ local procedure SetOwnerFilters(var AgentAccessControl: Record "Agent Access Control")
+ begin
+ AgentAccessControl.SetFilter(Access, '%1|%2', AgentAccessControl.Access::Owner, AgentAccessControl.Access::UserAndOwner);
+ end;
+
+ local procedure GetDefaultEncoding(): TextEncoding
+ begin
+ exit(TextEncoding::UTF8);
+ end;
+
+ var
+ OneOwnerMustBeDefinedForAgentErr: Label 'One owner must be defined for the agent.';
+
+}
\ No newline at end of file
diff --git a/Apps/W1/SalesOrderTakingAgent/app/src/AgentsSystemApp/AgentSetup/AgentList.Page.al b/Apps/W1/SalesOrderTakingAgent/app/src/AgentsSystemApp/AgentSetup/AgentList.Page.al
new file mode 100644
index 0000000000..6c1ddf682a
--- /dev/null
+++ b/Apps/W1/SalesOrderTakingAgent/app/src/AgentsSystemApp/AgentSetup/AgentList.Page.al
@@ -0,0 +1,72 @@
+// ------------------------------------------------------------------------------------------------
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License. See License.txt in the project root for license information.
+// ------------------------------------------------------------------------------------------------
+
+namespace System.Agents;
+
+page 4316 "Agent List"
+{
+ PageType = List;
+ ApplicationArea = All;
+ UsageCategory = Administration;
+ SourceTable = "Agent";
+ Caption = 'Agents';
+ CardPageId = "Agent Card";
+ AdditionalSearchTerms = 'Agent, Agents, Copilot, Automation, AI';
+ Extensible = false;
+
+ layout
+ {
+ area(Content)
+ {
+ repeater(Main)
+ {
+ Editable = false;
+
+ field(UserName; Rec."User Name")
+ {
+ Caption = 'User Name';
+ }
+ field(DisplayName; Rec."Display Name")
+ {
+ Caption = 'Display Name';
+ }
+ field(State; Rec.State)
+ {
+ Caption = 'State';
+ }
+ }
+ }
+ }
+ actions
+ {
+ area(Processing)
+ {
+ action(AgentTasks)
+ {
+ ApplicationArea = All;
+ Caption = 'Agent Tasks';
+ ToolTip = 'View agent tasks';
+ Image = Log;
+
+ trigger OnAction()
+ var
+ AgentTask: Record "Agent Task";
+ begin
+ AgentTask.SetRange("Agent User Security ID", Rec."User Security ID");
+ Page.Run(Page::"Agent Task List", AgentTask);
+ end;
+ }
+ }
+ area(Promoted)
+ {
+ group(Category_Process)
+ {
+ actionref(AgentTasks_Promoted; AgentTasks)
+ {
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Apps/W1/SalesOrderTakingAgent/app/src/AgentsSystemApp/Monitoring/AgentMonitoringImpl.Codeunit.al b/Apps/W1/SalesOrderTakingAgent/app/src/AgentsSystemApp/Monitoring/AgentMonitoringImpl.Codeunit.al
new file mode 100644
index 0000000000..99088bd66f
--- /dev/null
+++ b/Apps/W1/SalesOrderTakingAgent/app/src/AgentsSystemApp/Monitoring/AgentMonitoringImpl.Codeunit.al
@@ -0,0 +1,163 @@
+// ------------------------------------------------------------------------------------------------
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License. See License.txt in the project root for license information.
+// ------------------------------------------------------------------------------------------------
+
+namespace System.Agents;
+
+codeunit 4300 "Agent Monitoring Impl."
+{
+ Access = Internal;
+
+ internal procedure GetMessageText(var AgentTaskMessage: Record "Agent Task Message"): Text
+ var
+ ContentInStream: InStream;
+ ContentText: Text;
+ begin
+ AgentTaskMessage.CalcFields(Content);
+ AgentTaskMessage.Content.CreateInStream(ContentInStream, GetDefaultEncoding());
+ ContentInStream.Read(ContentText);
+ exit(ContentText);
+ end;
+
+ internal procedure IsMessageEditable(var AgentTaskMessage: Record "Agent Task Message"): Boolean
+ begin
+ if AgentTaskMessage.Type <> AgentTaskMessage.Type::Output then
+ exit(false);
+
+ exit(AgentTaskMessage.Status = AgentTaskMessage.Status::Draft);
+ end;
+
+ internal procedure SetMessageText(var AgentTaskMessage: Record "Agent Task Message"; MessageText: Text)
+ var
+ ContentOutStream: OutStream;
+ begin
+ Clear(AgentTaskMessage.Content);
+ AgentTaskMessage.Content.CreateOutStream(ContentOutStream, GetDefaultEncoding());
+ ContentOutStream.Write(MessageText);
+ AgentTaskMessage.Modify(true);
+ end;
+
+ internal procedure GetStepsDoneCount(var AgentTask: Record "Agent Task"): Integer
+ var
+ AgentTaskStep: Record "Agent Task Step";
+ begin
+ AgentTaskStep.SetRange("Task ID", AgentTask."ID");
+ AgentTaskStep.ReadIsolation := IsolationLevel::ReadCommitted;
+ exit(AgentTaskStep.Count());
+ end;
+
+ internal procedure GetDetailsForAgentTaskStep(var AgentTaskStep: Record "Agent Task Step"): Text
+ var
+ ContentInStream: InStream;
+ ContentText: Text;
+ begin
+ AgentTaskStep.CalcFields(Details);
+ AgentTaskStep.Details.CreateInStream(ContentInStream, GetDefaultEncoding());
+ ContentInStream.Read(ContentText);
+ exit(ContentText);
+ end;
+
+ internal procedure ShowTaskSteps(var AgentTask: Record "Agent Task")
+ var
+ AgentTaskStep: Record "Agent Task Step";
+ begin
+ AgentTaskStep.SetRange("Task ID", AgentTask.ID);
+ Page.Run(Page::"Agent Task Step List", AgentTaskStep);
+ end;
+
+ internal procedure CreateTaskMessage(MessageText: Text; var CurrentAgentTask: Record "Agent Task")
+ var
+ AgentTask: Record "Agent Task";
+ AgentTaskMessage: Record "Agent Task Message";
+ begin
+ if MessageText = '' then
+ Error(MessageTextMustBeProvidedErr);
+
+ if not AgentTask.Get(CurrentAgentTask.RecordId) then begin
+ AgentTask."Agent User Security ID" := CurrentAgentTask."Agent User Security ID";
+ AgentTask."Created By" := UserSecurityId();
+ AgentTask.Status := AgentTask.Status::Stopped;
+ AgentTask.Insert();
+ end;
+
+ AgentTaskMessage."Task ID" := AgentTask.ID;
+ AgentTaskMessage."Type" := AgentTaskMessage."Type"::Input;
+ AgentTaskMessage.Insert();
+
+ SetMessageText(AgentTaskMessage, MessageText);
+
+ AgentTask.Status := AgentTask.Status::Ready;
+ AgentTask.Modify(true);
+ end;
+
+ internal procedure CreateUserInterventionTaskStep(TaskID: BigInteger; UserInput: Text)
+ var
+ AgentTask: Record "Agent Task";
+ AgentTaskStep: Record "Agent Task Step";
+ DetailsOutStream: OutStream;
+ DetailsJson: JsonObject;
+ begin
+
+ AgentTask.Get(TaskID);
+
+ AgentTaskStep."Task ID" := AgentTask.ID;
+ AgentTaskStep."Type" := AgentTaskStep."Type"::"User Intervention";
+ AgentTaskStep.Description := 'User intervention';
+ if (UserInput <> '') then begin
+ DetailsJson.Add('userInput', UserInput);
+ AgentTaskStep.CalcFields(Details);
+ Clear(AgentTaskStep.Details);
+ AgentTaskStep.Details.CreateOutStream(DetailsOutStream, GetDefaultEncoding());
+ DetailsJson.WriteTo(DetailsOutStream);
+ end;
+ AgentTaskStep.Insert();
+
+ AgentTask.Status := AgentTask.Status::Ready;
+ AgentTask.Modify(true);
+ end;
+
+ internal procedure StopTask(var AgentTask: Record "Agent Task")
+ begin
+ if not Confirm(AreYouSureThatYouWantToStopTheTaskQst) then
+ exit;
+
+ AgentTask.Status := AgentTask.Status::Stopped;
+ AgentTask.Modify(true);
+ end;
+
+ internal procedure RestartTask(var AgentTask: Record "Agent Task")
+ begin
+ if not Confirm(AreYouSureThatYouWantToRestartTheTaskQst) then
+ exit;
+
+ AgentTask.Status := AgentTask.Status::Ready;
+ AgentTask.Modify(true);
+ end;
+
+ internal procedure SelectAgent(var Agent: Record "Agent")
+ begin
+ Agent.SetRange(State, Agent.State::Enabled);
+ if Agent.Count() = 0 then
+ Error(NoActiveAgentsErr);
+
+ if Agent.Count() = 1 then begin
+ Agent.FindFirst();
+ exit;
+ end;
+
+ if not (Page.RunModal(Page::"Agent List", Agent) in [Action::LookupOK, Action::OK]) then
+ Error('');
+ end;
+
+ local procedure GetDefaultEncoding(): TextEncoding
+ begin
+ exit(TextEncoding::UTF8);
+ end;
+
+ var
+ MessageTextMustBeProvidedErr: Label 'You must provide a message text.';
+ AreYouSureThatYouWantToRestartTheTaskQst: Label 'Are you sure that you want to restart the task?';
+ AreYouSureThatYouWantToStopTheTaskQst: Label 'Are you sure that you want to stop the task?';
+ NoActiveAgentsErr: Label 'There are no active agents setup on the system.';
+}
\ No newline at end of file
diff --git a/Apps/W1/SalesOrderTakingAgent/app/src/AgentsSystemApp/Monitoring/AgentNewTaskMessage.Page.al b/Apps/W1/SalesOrderTakingAgent/app/src/AgentsSystemApp/Monitoring/AgentNewTaskMessage.Page.al
new file mode 100644
index 0000000000..71dedb7d46
--- /dev/null
+++ b/Apps/W1/SalesOrderTakingAgent/app/src/AgentsSystemApp/Monitoring/AgentNewTaskMessage.Page.al
@@ -0,0 +1,53 @@
+// ------------------------------------------------------------------------------------------------
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License. See License.txt in the project root for license information.
+// ------------------------------------------------------------------------------------------------
+
+namespace System.Agents;
+
+page 4302 "Agent New Task Message"
+{
+ PageType = StandardDialog;
+ ApplicationArea = All;
+ UsageCategory = Administration;
+ Caption = 'Create message';
+ DataCaptionExpression = '';
+
+ layout
+ {
+ area(Content)
+ {
+ group(Message)
+ {
+ ShowCaption = false;
+ field(MessageText; MessageText)
+ {
+ Caption = 'Message Text';
+ ToolTip = 'Specifies the text of the message.';
+ MultiLine = true;
+ ExtendedDatatype = RichContent;
+ }
+ }
+ }
+ }
+
+ trigger OnQueryClosePage(CloseAction: Action): Boolean
+ var
+ AgentMonitoringImpl: Codeunit "Agent Monitoring Impl.";
+ begin
+ if not (CloseAction in [Action::Ok, Action::LookupOK, Action::Yes]) then
+ exit(true);
+
+ AgentMonitoringImpl.CreateTaskMessage(MessageText, AgentTask);
+ exit(true);
+ end;
+
+ procedure SetAgentTask(var NewAgentTask: Record "Agent Task")
+ begin
+ AgentTask.Copy(NewAgentTask);
+ end;
+
+ var
+ AgentTask: Record "Agent Task";
+ MessageText: Text;
+}
\ No newline at end of file
diff --git a/Apps/W1/SalesOrderTakingAgent/app/src/AgentsSystemApp/Monitoring/AgentTaskList.Page.al b/Apps/W1/SalesOrderTakingAgent/app/src/AgentsSystemApp/Monitoring/AgentTaskList.Page.al
new file mode 100644
index 0000000000..08b73192d2
--- /dev/null
+++ b/Apps/W1/SalesOrderTakingAgent/app/src/AgentsSystemApp/Monitoring/AgentTaskList.Page.al
@@ -0,0 +1,238 @@
+// ------------------------------------------------------------------------------------------------
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License. See License.txt in the project root for license information.
+// ------------------------------------------------------------------------------------------------
+
+namespace System.Agents;
+
+page 4300 "Agent Task List"
+{
+ PageType = List;
+ ApplicationArea = All;
+ UsageCategory = Administration;
+ SourceTable = "Agent Task";
+ Caption = 'Agent Tasks';
+ InsertAllowed = false;
+ ModifyAllowed = false;
+ DeleteAllowed = false;
+ AdditionalSearchTerms = 'Agent Tasks, Agent Task, Agent, Agent Log, Agent Logs';
+ Extensible = false;
+
+ layout
+ {
+ area(Content)
+ {
+ repeater(AgentConversations)
+ {
+ field(LastStepTimestamp; Rec."Last Step Timestamp")
+ {
+ Caption = 'Last Updated';
+ }
+ field(LastStepNumber; Rec."Last Step Number")
+ {
+ }
+ field(Status; Rec.Status)
+ {
+ Caption = 'Status';
+ ToolTip = 'Specifies the status of the agent task.';
+ }
+ field(CreatedAt; Rec.SystemCreatedAt)
+ {
+ Caption = 'Created at';
+ ToolTip = 'Specifies the date and time when the agent task was created.';
+ }
+ field(ID; Rec.ID)
+ {
+ Caption = 'ID';
+ trigger OnDrillDown()
+ begin
+ ShowTaskMessages();
+ end;
+ }
+ field(NumberOfStepsDone; NumberOfStepsDone)
+ {
+ Caption = 'Steps Done';
+ ToolTip = 'Specifies the number of steps that have been done for the specific task.';
+
+ trigger OnDrillDown()
+ var
+ AgentMonitoringImpl: Codeunit "Agent Monitoring Impl.";
+ begin
+ AgentMonitoringImpl.ShowTaskSteps(Rec);
+ end;
+ }
+ field("Created By"; Rec."Created By Full Name")
+ {
+ Caption = 'Created by';
+ Tooltip = 'Specifies the full name of the user that created the agent task.';
+ }
+ field("Agent Display Name"; Rec."Agent Display Name")
+ {
+ Caption = 'Agent';
+ ToolTip = 'Specifies the agent that is associated with the task.';
+ }
+ field(CreatedByID; Rec."Created By")
+ {
+ Visible = false;
+ }
+ field(AgentUserSecurityID; Rec."Agent User Security ID")
+ {
+ Visible = false;
+ }
+ }
+ }
+ }
+ actions
+ {
+ area(Processing)
+ {
+ action(CreateTask)
+ {
+ ApplicationArea = All;
+ Caption = 'Create task';
+ ToolTip = 'Create a new task.';
+ Image = New;
+
+ trigger OnAction()
+ var
+ Agent: Record Agent;
+ NewAgentTask: Record "Agent Task";
+ AgentMonitoringImpl: Codeunit "Agent Monitoring Impl.";
+ AgentNewTask: Page "Agent New Task Message";
+ begin
+ if Rec.GetFilter("Agent User Security ID") <> '' then begin
+ Agent.SetRange("User Security ID", Rec.GetFilter("Agent User Security ID"));
+ Agent.FindFirst();
+ end else
+ AgentMonitoringImpl.SelectAgent(Agent);
+
+ NewAgentTask."Agent User Security ID" := Agent."User Security ID";
+ AgentNewTask.SetAgentTask(NewAgentTask);
+ AgentNewTask.RunModal();
+ CurrPage.Update(false);
+ end;
+ }
+ action(ViewTaskMessage)
+ {
+ ApplicationArea = All;
+ Caption = 'View messages';
+ ToolTip = 'Show messages for the selected task.';
+ Image = ShowList;
+
+ trigger OnAction()
+ begin
+ ShowTaskMessages();
+ end;
+ }
+ action(ViewTaskSteps)
+ {
+ ApplicationArea = All;
+ Caption = 'View steps';
+ ToolTip = 'Show steps for the selected task.';
+ Image = TaskList;
+
+ trigger OnAction()
+ var
+ AgentMonitoringImpl: Codeunit "Agent Monitoring Impl.";
+ begin
+ AgentMonitoringImpl.ShowTaskSteps(Rec);
+ end;
+ }
+ action(Stop)
+ {
+ ApplicationArea = All;
+ Caption = 'Stop';
+ ToolTip = 'Stop the selected task.';
+ Image = Stop;
+
+ trigger OnAction()
+ var
+ AgentMonitoringImpl: Codeunit "Agent Monitoring Impl.";
+ begin
+ AgentMonitoringImpl.StopTask(Rec);
+ CurrPage.Update(false);
+ end;
+ }
+ action(Restart)
+ {
+ ApplicationArea = All;
+ Caption = 'Restart';
+ ToolTip = 'Restart the selected task.';
+ Image = Restore;
+
+ trigger OnAction()
+ var
+ AgentMonitoringImpl: Codeunit "Agent Monitoring Impl.";
+ begin
+ AgentMonitoringImpl.RestartTask(Rec);
+ CurrPage.Update(false);
+ end;
+ }
+ action(UserIntervention)
+ {
+ ApplicationArea = All;
+ Caption = 'User Intervention';
+ ToolTip = 'Provide the required user intervention.';
+ Image = Restore;
+ Enabled = UserInterventionEnabled;
+
+ trigger OnAction()
+ var
+ UserInterventionRequestStep: Record "Agent Task Step";
+ AgentUserIntervention: Page "Agent User Intervention";
+ begin
+ Rec.CalcFields("Last Step Number");
+ UserInterventionRequestStep.Get(Rec.ID, Rec."Last Step Number");
+ AgentUserIntervention.SetUserInterventionRequestStep(UserInterventionRequestStep);
+ AgentUserIntervention.RunModal();
+ CurrPage.Update(false);
+ end;
+ }
+ }
+ area(Promoted)
+ {
+ group(Category_Process)
+ {
+ actionref(ViewTaskMessage_Promoted; ViewTaskMessage)
+ {
+ }
+ actionref(ViewTaskSteps_Promoted; ViewTaskSteps)
+ {
+ }
+ actionref(CreateTask_Promoted; CreateTask)
+ {
+ }
+ }
+ }
+ }
+
+ trigger OnAfterGetRecord()
+ begin
+ UpdateControls();
+ end;
+
+ trigger OnAfterGetCurrRecord()
+ begin
+ UpdateControls();
+ end;
+
+ local procedure UpdateControls()
+ var
+ AgentMonitoringImpl: Codeunit "Agent Monitoring Impl.";
+ begin
+ NumberOfStepsDone := AgentMonitoringImpl.GetStepsDoneCount(Rec);
+ UserInterventionEnabled := Rec.Status = Rec.Status::"Pending User Intervention";
+ end;
+
+ local procedure ShowTaskMessages()
+ var
+ AgentTaskMessage: Record "Agent Task Message";
+ begin
+ AgentTaskMessage.SetRange("Task ID", Rec.ID);
+ Page.Run(Page::"Agent Task Message List", AgentTaskMessage);
+ end;
+
+ var
+ NumberOfStepsDone: Integer;
+ UserInterventionEnabled: Boolean;
+}
\ No newline at end of file
diff --git a/Apps/W1/SalesOrderTakingAgent/app/src/AgentsSystemApp/Monitoring/AgentTaskMessageCard.Page.al b/Apps/W1/SalesOrderTakingAgent/app/src/AgentsSystemApp/Monitoring/AgentTaskMessageCard.Page.al
new file mode 100644
index 0000000000..8171152e65
--- /dev/null
+++ b/Apps/W1/SalesOrderTakingAgent/app/src/AgentsSystemApp/Monitoring/AgentTaskMessageCard.Page.al
@@ -0,0 +1,95 @@
+// ------------------------------------------------------------------------------------------------
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License. See License.txt in the project root for license information.
+// ------------------------------------------------------------------------------------------------
+
+namespace System.Agents;
+
+page 4308 "Agent Task Message Card"
+{
+ PageType = Card;
+ ApplicationArea = All;
+ SourceTable = "Agent Task Message";
+ InsertAllowed = false;
+ ModifyAllowed = false;
+ DeleteAllowed = false;
+ Caption = 'Agent Task Message';
+ DataCaptionExpression = '';
+ Extensible = false;
+ SourceTableView = sorting(SystemModifiedAt) order(descending);
+
+ layout
+ {
+ area(Content)
+ {
+ group(General)
+ {
+ field(LastModifiedAt; Rec.SystemModifiedAt)
+ {
+ Caption = 'Last modified at';
+ ToolTip = 'Specifies the date and time when the message was last modified.';
+ }
+ field(CreatedAt; Rec.SystemCreatedAt)
+ {
+ Caption = 'Created at';
+ ToolTip = 'Specifies the date and time when the message was created.';
+ }
+ field(TaskID; Rec."Task Id")
+ {
+ Caption = 'Task ID';
+ Visible = false;
+ }
+ field(MessageID; Rec."ID")
+ {
+ Caption = 'ID';
+ Visible = false;
+ }
+ field(MessageType; Rec.Type)
+ {
+ Caption = 'Type';
+ }
+ field(Status; Rec.Status)
+ {
+ Caption = 'Status';
+ }
+ }
+
+ group(Message)
+ {
+ Caption = 'Message';
+ Editable = IsMessageEditable;
+ field(MessageText; GlobalMessageText)
+ {
+ ShowCaption = false;
+ Caption = 'Message';
+ ToolTip = 'Specifies the message text.';
+ MultiLine = true;
+ ExtendedDatatype = RichContent;
+ Editable = true;
+ }
+ }
+ }
+ }
+
+ trigger OnAfterGetRecord()
+ begin
+ UpdateControls();
+ end;
+
+ trigger OnAfterGetCurrRecord()
+ begin
+ UpdateControls();
+ end;
+
+ local procedure UpdateControls()
+ var
+ AgentMonitoringImpl: Codeunit "Agent Monitoring Impl.";
+ begin
+ GlobalMessageText := AgentMonitoringImpl.GetMessageText(Rec);
+ IsMessageEditable := AgentMonitoringImpl.IsMessageEditable(Rec);
+ end;
+
+ var
+ GlobalMessageText: Text;
+ IsMessageEditable: Boolean;
+}
\ No newline at end of file
diff --git a/Apps/W1/SalesOrderTakingAgent/app/src/AgentsSystemApp/Monitoring/AgentTaskMessageList.Page.al b/Apps/W1/SalesOrderTakingAgent/app/src/AgentsSystemApp/Monitoring/AgentTaskMessageList.Page.al
new file mode 100644
index 0000000000..cd802cb22f
--- /dev/null
+++ b/Apps/W1/SalesOrderTakingAgent/app/src/AgentsSystemApp/Monitoring/AgentTaskMessageList.Page.al
@@ -0,0 +1,127 @@
+// ------------------------------------------------------------------------------------------------
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License. See License.txt in the project root for license information.
+// ------------------------------------------------------------------------------------------------
+
+namespace System.Agents;
+
+page 4301 "Agent Task Message List"
+{
+ PageType = List;
+ ApplicationArea = All;
+ Caption = 'Agent Task Messages';
+ UsageCategory = Administration;
+ SourceTable = "Agent Task Message";
+ CardPageId = "Agent Task Message Card";
+ InsertAllowed = false;
+ ModifyAllowed = false;
+ DeleteAllowed = false;
+ Editable = false;
+ Extensible = false;
+
+ layout
+ {
+ area(Content)
+ {
+ repeater(GroupName)
+ {
+ field(LastModifiedAt; Rec.SystemModifiedAt)
+ {
+ Caption = 'Last modified at';
+ ToolTip = 'Specifies the date and time when the message was last modified.';
+ }
+ field(CreatedAt; Rec.SystemCreatedAt)
+ {
+ Caption = 'Created at';
+ ToolTip = 'Specifies the date and time when the message was created.';
+ }
+ field(Status; Rec.Status)
+ {
+ Caption = 'Status';
+ BlankZero = true;
+ BlankNumbers = BlankZero;
+ }
+ field("Created By Full Name"; Rec."Created By Full Name")
+ {
+ Caption = 'Created by';
+ }
+ field(MessageType; Rec.Type)
+ {
+ Caption = 'Type';
+ }
+ field(MessageText; GlobalMessageText)
+ {
+ Caption = 'Message';
+ ToolTip = 'Specifies the message text.';
+
+ trigger OnDrillDown()
+ begin
+ Message(GlobalMessageText);
+ end;
+ }
+ field(TaskID; Rec."Task Id")
+ {
+ Visible = false;
+ Caption = 'Task ID';
+ }
+ field(MessageId; Rec."ID")
+ {
+ Caption = 'ID';
+ }
+ }
+ }
+ }
+ actions
+ {
+ area(Processing)
+ {
+ action(AddMessage)
+ {
+ ApplicationArea = All;
+ Caption = 'Create new message';
+ ToolTip = 'Create a new message.';
+ Image = Task;
+
+ trigger OnAction()
+ var
+ CurrentAgentTask: Record "Agent Task";
+ AgentNewTaskMessage: Page "Agent New Task Message";
+ begin
+ CurrentAgentTask.Get(Rec."Task ID");
+ AgentNewTaskMessage.SetAgentTask(CurrentAgentTask);
+ AgentNewTaskMessage.RunModal();
+ CurrPage.Update(false);
+ end;
+ }
+ }
+ area(Promoted)
+ {
+ group(Category_Process)
+ {
+ actionref(AddMessage_Promoted; AddMessage)
+ {
+ }
+ }
+ }
+ }
+
+ trigger OnAfterGetRecord()
+ begin
+ UpdateControls();
+ end;
+
+ trigger OnAfterGetCurrRecord()
+ begin
+ UpdateControls();
+ end;
+
+ local procedure UpdateControls()
+ var
+ AgentMonitoringImpl: Codeunit "Agent Monitoring Impl.";
+ begin
+ GlobalMessageText := AgentMonitoringImpl.GetMessageText(Rec);
+ end;
+
+ var
+ GlobalMessageText: Text;
+}
\ No newline at end of file
diff --git a/Apps/W1/SalesOrderTakingAgent/app/src/AgentsSystemApp/Monitoring/AgentTaskStepList.Page.al b/Apps/W1/SalesOrderTakingAgent/app/src/AgentsSystemApp/Monitoring/AgentTaskStepList.Page.al
new file mode 100644
index 0000000000..6de3a250ba
--- /dev/null
+++ b/Apps/W1/SalesOrderTakingAgent/app/src/AgentsSystemApp/Monitoring/AgentTaskStepList.Page.al
@@ -0,0 +1,80 @@
+// ------------------------------------------------------------------------------------------------
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License. See License.txt in the project root for license information.
+// ------------------------------------------------------------------------------------------------
+
+namespace System.Agents;
+
+page 4303 "Agent Task Step List"
+{
+ PageType = List;
+ ApplicationArea = All;
+ UsageCategory = Administration;
+ SourceTable = "Agent Task Step";
+ Caption = 'Agent Task Steps';
+ InsertAllowed = false;
+ ModifyAllowed = false;
+ DeleteAllowed = false;
+ Editable = false;
+ SourceTableView = sorting("Step Number") order(descending);
+ Extensible = false;
+
+ layout
+ {
+ area(Content)
+ {
+ repeater(AgentConversationActionLog)
+ {
+ field(StepNumber; Rec."Step Number")
+ {
+ Caption = 'Step Number';
+ }
+ field(TaskID; Rec."Task ID")
+ {
+ Visible = false;
+ Caption = 'Task ID';
+ }
+ field(Description; Rec.Description)
+ {
+ Caption = 'Description';
+ }
+ field(Details; DetailsTxt)
+ {
+ Caption = 'Details';
+ ToolTip = 'Specifies the step details.';
+
+ trigger OnDrillDown()
+ begin
+ Message(DetailsTxt);
+ end;
+ }
+ field("User Full Name"; Rec."User Full Name")
+ {
+ Caption = 'User Full Name';
+ Tooltip = 'Specifies the full name of the user that was involved in performing the step..';
+ }
+
+ }
+ }
+ }
+
+ trigger OnAfterGetRecord()
+ begin
+ UpdateControls();
+ end;
+
+ trigger OnAfterGetCurrRecord()
+ begin
+ UpdateControls();
+ end;
+
+ local procedure UpdateControls()
+ var
+ AgentMonitoringImpl: Codeunit "Agent Monitoring Impl.";
+ begin
+ DetailsTxt := AgentMonitoringImpl.GetDetailsForAgentTaskStep(Rec);
+ end;
+
+ var
+ DetailsTxt: Text;
+}
\ No newline at end of file
diff --git a/Apps/W1/SalesOrderTakingAgent/app/src/AgentsSystemApp/Monitoring/AgentUserIntervention.Page.al b/Apps/W1/SalesOrderTakingAgent/app/src/AgentsSystemApp/Monitoring/AgentUserIntervention.Page.al
new file mode 100644
index 0000000000..8fc473d6fb
--- /dev/null
+++ b/Apps/W1/SalesOrderTakingAgent/app/src/AgentsSystemApp/Monitoring/AgentUserIntervention.Page.al
@@ -0,0 +1,91 @@
+// ------------------------------------------------------------------------------------------------
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License. See License.txt in the project root for license information.
+// ------------------------------------------------------------------------------------------------
+
+namespace System.Agents;
+
+page 4305 "Agent User Intervention"
+{
+ PageType = StandardDialog;
+ ApplicationArea = All;
+ UsageCategory = Administration;
+ Caption = 'User Intervention';
+ DataCaptionExpression = '';
+
+ layout
+ {
+ area(Content)
+ {
+ group(Details)
+ {
+ Caption = 'User Intervention Request Details';
+ field(Type; RequestType)
+ {
+ Caption = 'Type';
+ ToolTip = 'Specifies the type of user intervention request.';
+ Editable = false;
+ }
+ field(Title; RequestTitle)
+ {
+ Caption = 'Title';
+ ToolTip = 'Specifies the title of the user intervention request.';
+ Editable = false;
+ MultiLine = true;
+ }
+ field(Message; RequestMessage)
+ {
+ Caption = 'Message';
+ ToolTip = 'Specifies the message of the user intervention request.';
+ Editable = false;
+ MultiLine = true;
+ }
+ }
+ group(Input)
+ {
+ ShowCaption = false;
+ field(UserInput; UserInput)
+ {
+ Caption = 'Input';
+ ToolTip = 'Specifies the input to provide to the agent.';
+ MultiLine = true;
+ }
+ }
+ }
+ }
+
+ trigger OnQueryClosePage(CloseAction: Action): Boolean
+ var
+ AgentMonitoringImpl: Codeunit "Agent Monitoring Impl.";
+ begin
+ if not (CloseAction in [Action::Ok, Action::LookupOK, Action::Yes]) then
+ exit(true);
+
+ AgentMonitoringImpl.CreateUserInterventionTaskStep(TaskID, UserInput);
+ exit(true);
+ end;
+
+ procedure SetUserInterventionRequestStep(var UserInterventionRequestStep: Record "Agent Task Step")
+ var
+ AgentMonitoringImpl: Codeunit "Agent Monitoring Impl.";
+ DetailsJson: JsonObject;
+ JsonToken: JsonToken;
+ begin
+ TaskID := UserInterventionRequestStep."Task ID";
+ DetailsJson.ReadFrom(AgentMonitoringImpl.GetDetailsForAgentTaskStep(UserInterventionRequestStep));
+ DetailsJson.Get('type', JsonToken);
+ RequestType := JsonToken.AsValue().AsText();
+ DetailsJson.Get('title', JsonToken);
+ RequestTitle := JsonToken.AsValue().AsText();
+ DetailsJson.Get('message', JsonToken);
+ RequestMessage := JsonToken.AsValue().AsText();
+ end;
+
+ var
+ TaskID: BigInteger;
+ UserInput: Text;
+ RequestType: Text;
+ RequestTitle: Text;
+ RequestMessage: Text;
+
+}
\ No newline at end of file
diff --git a/Apps/W1/SalesOrderTakingAgent/app/src/AgentsSystemApp/Permissions/AgentObjects.PermissionSet.al b/Apps/W1/SalesOrderTakingAgent/app/src/AgentsSystemApp/Permissions/AgentObjects.PermissionSet.al
new file mode 100644
index 0000000000..af98bc4dab
--- /dev/null
+++ b/Apps/W1/SalesOrderTakingAgent/app/src/AgentsSystemApp/Permissions/AgentObjects.PermissionSet.al
@@ -0,0 +1,22 @@
+// ------------------------------------------------------------------------------------------------
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License. See License.txt in the project root for license information.
+// ------------------------------------------------------------------------------------------------
+
+namespace System.Agents;
+
+permissionset 4300 "Agent - Objects"
+{
+ Assignable = true;
+
+ Permissions = codeunit "Agent Monitoring Impl." = X,
+ page "Agent Access Control" = X,
+ page "Agent Card" = X,
+ page "Agent List" = X,
+ page "Agent Task List" = X,
+ page "Agent Task Message Card" = X,
+ page "Agent Task Message List" = X,
+ page "Agent Task Step List" = X,
+ page "Agent New Task Message" = X,
+ codeunit "Agent Impl." = X;
+}
\ No newline at end of file
diff --git a/Apps/W1/SalesOrderTakingAgent/app/src/Instructions/SOADemoPrompt.Codeunit.al b/Apps/W1/SalesOrderTakingAgent/app/src/Instructions/SOADemoPrompt.Codeunit.al
new file mode 100644
index 0000000000..dfa96c7c1f
--- /dev/null
+++ b/Apps/W1/SalesOrderTakingAgent/app/src/Instructions/SOADemoPrompt.Codeunit.al
@@ -0,0 +1,206 @@
+namespace Agent.SalesOrderTaker.Instructions;
+
+codeunit 4306 "SOA Demo Prompt"
+{
+ trigger OnRun()
+ begin
+ CreateFullSalesOrderTakerSetup();
+ end;
+
+ var
+ SOAInstructionTemplate: Record "SOA Instruction Template";
+ SOAInstructionPhase: Record "SOA Instruction Phase";
+ SOAInstructionTaskPolicy: Record "SOA Instruction Task/Policy";
+ SOAInstructionPhaseStep: Record "SOA Instruction Phase Step";
+ SOAInstructionPrompt: Record "SOA Instruction Prompt";
+ SOAInstructionsMgt: Codeunit "SOA Instructions Mgt.";
+ TemplateLbl: Label 'SALES ORDER TAKER';
+ TemplateDescLbl: Label 'Sales order taking agent';
+ TaskPromptLbl: Label 'TASK';
+ TaskPromptTextLbl: Label '**Task**%1You are acting as a sales order taker in the sales department running on Business Central. You are responsible for handling incoming sales quote requests via email. Follow these detailed steps to process a sales quote request and convert it to a sales order upon approval:%1<>%1<>%1<>%1<>%1<>%1Make sure to follow the steps meticulously to ensure accuracy and efficiency in creating and processing sales quotes in Business Central.%1', Comment = '%1: NewLine';
+ Prompt11Lbl: Label '1-1 RECEIVE EMAIL';
+ Prompt11TextLbl: Label '**Email Reception:**%1- Monitor the shared inbox for incoming emails.%1- Identify emails requesting a sales quote by analyzing the content. Look for specific mentions of products, desired quantities, dates, and any additional information.%1', Comment = '%1: NewLine';
+ Prompt12Lbl: Label '1-2 ANALYZE EXTRACT';
+ Prompt12TextLbl: Label '**Analyze and Extract Information:**%1- Extract the product names, quantities, units of measure, requested delivery dates, and any other pertinent information from the email.%1- Ensure that both the product name and quantity are present, as they are essential for creating the sales quote. If either is missing, then request assistance.%1', Comment = '%1: NewLine';
+ Prompt13Lbl: Label '1-3 FIND CONTACT';
+ Prompt13TextLbl: Label '**Find Contact or Customer in Business Central:**%1- First, search for the Contact in Business Central. Use details from the email message, such as the sender''s name, email address, company name, phone number.%1', Comment = '%1: NewLine';
+ Prompt14Lbl: Label '1-4 FIND CUSTOMER';
+ Prompt14TextLbl: Label '- If the contact is not found, search for the Customer instead.%1- If neither Contact nor Customer is found, then request assistance.%1', Comment = '%1: NewLine';
+ Prompt15Lbl: Label '1-5 VERIFY PARTNER';
+ Prompt15TextLbl: Label '- Verify the credit limit for the contact or customer and ensure that all posting fields are correctly filled.%1', Comment = '%1: NewLine';
+ Prompt21Lbl: Label '2-1 CREATE QUOTE';
+ Prompt21TextLbl: Label '**Create Sales Quote:**%1- Based on the Contact or Customer found, navigate to their card and select "Sales Quote" action in "New Document" group to initiate a new sales quote.%1- A new sales quote form will open, pre-filled with the contact or customer''s information.%1', Comment = '%1: NewLine';
+ Prompt31Lbl: Label '3-1 ADD DETAILS';
+ Prompt31TextLbl: Label '**Populate Sales Quote Details:**%1', Comment = '%1: NewLine';
+ Prompt32Lbl: Label '3-2 ADD DATE';
+ Prompt32TextLbl: Label '- If the email specifies a "Requested Delivery Date," populate this field accordingly.%1', Comment = '%1: NewLine';
+ Prompt33Lbl: Label '3-3 VERIFY CUST NO';
+ Prompt33TextLbl: Label '- Verify that Customer No. and Customer Name are filled in on the sales quote form.%1', Comment = '%1: NewLine';
+ Prompt34Lbl: Label '3-4 VERIFY ADDRESS';
+ Prompt34TextLbl: Label '- Ensure that address fields are filled in.%1', Comment = '%1: NewLine';
+ Prompt35Lbl: Label '3-5 ADD LINES';
+ Prompt35TextLbl: Label '- Add sales quote lines:%1 - Set the line type to "Item."%1 - Populate the "No.", "Variant Code", "Quantity", and "Unit of Measure Code" fields with the information extracted from the email.%1- Business Central will automatically calculate prices and taxes.%1', Comment = '%1: NewLine';
+ Prompt41Lbl: Label '4-1 SEND REPLY';
+ Prompt41TextLbl: Label '**Send Sales Quote to Customer:**%1- Convert the newly created sales quote to a PDF document.%1- Reply to the original email with the following text: "We sent you a quote, check your email titled "Quote XXXX" and confirm if you want to proceed."%1- Attach the PDF document to this email.%1%1**Example Email Template**%1Subject: Sales Quote XXXX%1Body:%1Dear [Customer Name],%1Thank you for your request. We have generated a sales quote based on the details provided. Please find the attached PDF document titled "Quote XXXX".%1Kindly review the quote and confirm if you wish to proceed with the order.%1Best regards,%1[Your Company Name]%1', Comment = '%1: NewLine';
+ Prompt51Lbl: Label '5-1 QUOTE TO ORDER';
+ Prompt51TextLbl: Label '**Convert Quote to Sales Order:**%1- Once the customer approves the quote, select "Make Order" to convert the sales quote into a sales order in Business Central.%1', Comment = '%1: NewLine';
+ Task11Lbl: Label 'Monitor and read emails';
+ Task12Lbl: Label 'Extract data from email';
+ Task13Lbl: Label 'Find contact';
+ Policy14Lbl: Label 'Contact not found, find customer';
+ Policy15Lbl: Label 'Verify found contact or customer';
+ Task21Lbl: Label 'Create sales quote';
+ Task31Lbl: Label 'Populate sales quote details';
+ Policy32Lbl: Label 'Add requested delivery date';
+ Policy33Lbl: Label 'Verify customer number and name';
+ Policy34Lbl: Label 'Verify address';
+ Task35Lbl: Label 'Add sales quote lines';
+ Task41Lbl: Label 'Send sales quote to customer';
+ Task51Lbl: Label 'Convert quote to sales order';
+
+ procedure CreateFullSalesOrderTakerSetup()
+ begin
+ DeleteExistingSetup();
+
+ CreatePrompts();
+ CreateTasksAndPolicies();
+ CreateTemplates();
+ CreatePhases();
+ CreatePhaseSteps();
+ end;
+
+ local procedure DeleteExistingSetup()
+ begin
+ SOAInstructionPrompt.Reset();
+ SOAInstructionPrompt.DeleteAll();
+ SOAInstructionTaskPolicy.Reset();
+ SOAInstructionTaskPolicy.DeleteAll();
+ SOAInstructionTemplate.Reset();
+ SOAInstructionTemplate.DeleteAll();
+ SOAInstructionPhase.Reset();
+ SOAInstructionPhase.DeleteAll();
+ SOAInstructionPhaseStep.Reset();
+ SOAInstructionPhaseStep.DeleteAll();
+ end;
+
+ local procedure CreatePrompts()
+ begin
+ CreatePrompt(TaskPromptLbl, TaskPromptTextLbl, "SOA Yes/No Toggle State"::Yes);
+ CreatePrompt(Prompt11Lbl, Prompt11TextLbl, "SOA Yes/No Toggle State"::Yes);
+ CreatePrompt(Prompt12Lbl, Prompt12TextLbl, "SOA Yes/No Toggle State"::Yes);
+ CreatePrompt(Prompt13Lbl, Prompt13TextLbl, "SOA Yes/No Toggle State"::Yes);
+ CreatePrompt(Prompt14Lbl, Prompt14TextLbl, "SOA Yes/No Toggle State"::Yes);
+ CreatePrompt(Prompt15Lbl, Prompt15TextLbl, "SOA Yes/No Toggle State"::Yes);
+ CreatePrompt(Prompt21Lbl, Prompt21TextLbl, "SOA Yes/No Toggle State"::Yes);
+ CreatePrompt(Prompt31Lbl, Prompt31TextLbl, "SOA Yes/No Toggle State"::Yes);
+ CreatePrompt(Prompt32Lbl, Prompt32TextLbl, "SOA Yes/No Toggle State"::Yes);
+ CreatePrompt(Prompt33Lbl, Prompt33TextLbl, "SOA Yes/No Toggle State"::Yes);
+ CreatePrompt(Prompt34Lbl, Prompt34TextLbl, "SOA Yes/No Toggle State"::Yes);
+ CreatePrompt(Prompt35Lbl, Prompt35TextLbl, "SOA Yes/No Toggle State"::Yes);
+ CreatePrompt(Prompt41Lbl, Prompt41TextLbl, "SOA Yes/No Toggle State"::Yes);
+ CreatePrompt(Prompt51Lbl, Prompt51TextLbl, "SOA Yes/No Toggle State"::Yes);
+ end;
+
+ local procedure CreatePrompt(Name: Code[20]; PromptText: Text; Enabled: Enum "SOA Yes/No Toggle State")
+ var
+ NewLine: Text[2];
+ begin
+ SOAInstructionPrompt.Init();
+ SOAInstructionPrompt.Code := Name;
+ SOAInstructionPrompt.Enabled := Enabled;
+ SOAInstructionPrompt.Insert();
+
+ NewLine := ' ';
+ NewLine[1] := 13;
+ NewLine[2] := 10;
+
+ SOAInstructionsMgt.SetPrompt(SOAInstructionPrompt, StrSubstNo(PromptText, NewLine));
+ SOAInstructionPrompt.Modify();
+ end;
+
+ local procedure CreateTasksAndPolicies()
+ begin
+ CreateTaskAndPolicy(1, "SOA Phase Step Type"::Task, Task11Lbl, Prompt11Lbl, "SOA Yes/No Toggle State"::Yes);
+ CreateTaskAndPolicy(2, "SOA Phase Step Type"::Task, Task12Lbl, Prompt12Lbl, "SOA Yes/No Toggle State"::Yes);
+ CreateTaskAndPolicy(3, "SOA Phase Step Type"::Task, Task13Lbl, Prompt13Lbl, "SOA Yes/No Toggle State"::Yes);
+ CreateTaskAndPolicy(4, "SOA Phase Step Type"::Policy, Policy14Lbl, Prompt14Lbl, "SOA Yes/No Toggle State"::Yes);
+ CreateTaskAndPolicy(5, "SOA Phase Step Type"::Policy, Policy15Lbl, Prompt15Lbl, "SOA Yes/No Toggle State"::Yes);
+ CreateTaskAndPolicy(6, "SOA Phase Step Type"::Task, Task21Lbl, Prompt21Lbl, "SOA Yes/No Toggle State"::Yes);
+ CreateTaskAndPolicy(7, "SOA Phase Step Type"::Task, Task31Lbl, Prompt31Lbl, "SOA Yes/No Toggle State"::Yes);
+ CreateTaskAndPolicy(8, "SOA Phase Step Type"::Policy, Policy32Lbl, Prompt32Lbl, "SOA Yes/No Toggle State"::Yes);
+ CreateTaskAndPolicy(9, "SOA Phase Step Type"::Policy, Policy33Lbl, Prompt33Lbl, "SOA Yes/No Toggle State"::Yes);
+ CreateTaskAndPolicy(10, "SOA Phase Step Type"::Policy, Policy34Lbl, Prompt34Lbl, "SOA Yes/No Toggle State"::Yes);
+ CreateTaskAndPolicy(11, "SOA Phase Step Type"::Task, Task35Lbl, Prompt35Lbl, "SOA Yes/No Toggle State"::Yes);
+ CreateTaskAndPolicy(12, "SOA Phase Step Type"::Task, Task41Lbl, Prompt41Lbl, "SOA Yes/No Toggle State"::Yes);
+ CreateTaskAndPolicy(13, "SOA Phase Step Type"::Task, Task51Lbl, Prompt51Lbl, "SOA Yes/No Toggle State"::Yes);
+ end;
+
+ local procedure CreateTaskAndPolicy(SortingOrderNo: Integer; Type: Enum "SOA Phase Step Type"; Name: Text; PromptCode: Code[20]; Enabled: Enum "SOA Yes/No Toggle State")
+ begin
+ SOAInstructionTaskPolicy.Init();
+ SOAInstructionTaskPolicy."Sorting Order No." := SortingOrderNo;
+ SOAInstructionTaskPolicy.Type := Type;
+ SOAInstructionTaskPolicy.Name := CopyStr(Name, 1, MaxStrLen(SOAInstructionTaskPolicy.Name));
+ SOAInstructionTaskPolicy."Prompt Code" := PromptCode;
+ SOAInstructionTaskPolicy.Enabled := Enabled;
+ SOAInstructionTaskPolicy.Insert();
+ end;
+
+ local procedure CreatePhases()
+ begin
+ CreatePhase(1, "SOA Phases"::"Identify Business Partner", "SOA Yes/No Toggle State"::Yes);
+ CreatePhase(2, "SOA Phases"::"Create Sales Document", "SOA Yes/No Toggle State"::Yes);
+ CreatePhase(3, "SOA Phases"::"Add Details to Sales Document", "SOA Yes/No Toggle State"::Yes);
+ CreatePhase(4, "SOA Phases"::"Send Sales Document", "SOA Yes/No Toggle State"::Yes);
+ CreatePhase(5, "SOA Phases"::"Process Response", "SOA Yes/No Toggle State"::Yes);
+ end;
+
+ local procedure CreatePhase(PhaseOrderNo: Integer; Phase: Enum "SOA Phases"; Enabled: Enum "SOA Yes/No Toggle State")
+ begin
+ SOAInstructionPhase.Init();
+ SOAInstructionPhase."Template Name" := SOAInstructionTemplate.Name;
+ SOAInstructionPhase.Phase := Phase;
+ SOAInstructionPhase."Phase Order No." := PhaseOrderNo;
+ SOAInstructionPhase.Enabled := Enabled;
+ SOAInstructionPhase.Insert();
+ end;
+
+ local procedure CreatePhaseSteps()
+ begin
+ CreatePhaseStep("SOA Phases"::"Identify Business Partner", 1, "SOA Phase Step Type"::Task, Task11Lbl, 0, "SOA Yes/No Toggle State"::Yes);
+ CreatePhaseStep("SOA Phases"::"Identify Business Partner", 2, "SOA Phase Step Type"::Task, Task12Lbl, 0, "SOA Yes/No Toggle State"::Yes);
+ CreatePhaseStep("SOA Phases"::"Identify Business Partner", 3, "SOA Phase Step Type"::Task, Task13Lbl, 0, "SOA Yes/No Toggle State"::Yes);
+ CreatePhaseStep("SOA Phases"::"Identify Business Partner", 4, "SOA Phase Step Type"::Policy, Policy14Lbl, 1, "SOA Yes/No Toggle State"::Yes);
+ CreatePhaseStep("SOA Phases"::"Identify Business Partner", 5, "SOA Phase Step Type"::Policy, Policy15Lbl, 1, "SOA Yes/No Toggle State"::Yes);
+ CreatePhaseStep("SOA Phases"::"Create Sales Document", 1, "SOA Phase Step Type"::Task, Task21Lbl, 0, "SOA Yes/No Toggle State"::Yes);
+ CreatePhaseStep("SOA Phases"::"Add Details to Sales Document", 1, "SOA Phase Step Type"::Task, Task31Lbl, 0, "SOA Yes/No Toggle State"::Yes);
+ CreatePhaseStep("SOA Phases"::"Add Details to Sales Document", 2, "SOA Phase Step Type"::Policy, Policy32Lbl, 1, "SOA Yes/No Toggle State"::Yes);
+ CreatePhaseStep("SOA Phases"::"Add Details to Sales Document", 3, "SOA Phase Step Type"::Policy, Policy33Lbl, 1, "SOA Yes/No Toggle State"::Yes);
+ CreatePhaseStep("SOA Phases"::"Add Details to Sales Document", 4, "SOA Phase Step Type"::Policy, Policy34Lbl, 1, "SOA Yes/No Toggle State"::Yes);
+ CreatePhaseStep("SOA Phases"::"Add Details to Sales Document", 5, "SOA Phase Step Type"::Task, Task35Lbl, 0, "SOA Yes/No Toggle State"::Yes);
+ CreatePhaseStep("SOA Phases"::"Send Sales Document", 1, "SOA Phase Step Type"::Task, Task41Lbl, 0, "SOA Yes/No Toggle State"::Yes);
+ CreatePhaseStep("SOA Phases"::"Process Response", 1, "SOA Phase Step Type"::Task, Task51Lbl, 0, "SOA Yes/No Toggle State"::Yes);
+ end;
+
+ local procedure CreatePhaseStep(Phase: Enum "SOA Phases"; StepNo: Integer; StepType: Enum "SOA Phase Step Type"; StepName: Text; Indentation: Integer; Enabled: Enum "SOA Yes/No Toggle State")
+ begin
+ SOAInstructionPhaseStep.Init();
+ SOAInstructionPhaseStep.Phase := Phase;
+ SOAInstructionPhaseStep."Step No." := StepNo;
+ SOAInstructionPhaseStep."Step Type" := StepType;
+ SOAInstructionPhaseStep."Step Name" := CopyStr(StepName, 1, MaxStrLen(SOAInstructionPhaseStep."Step Name"));
+ SOAInstructionPhaseStep.Indentation := Indentation;
+ SOAInstructionPhaseStep.Enabled := Enabled;
+ SOAInstructionPhaseStep.Insert();
+ end;
+
+ local procedure CreateTemplates()
+ begin
+ SOAInstructionTemplate.Init();
+ SOAInstructionTemplate.Name := TemplateLbl;
+ SOAInstructionTemplate.Description := TemplateDescLbl;
+ SOAInstructionTemplate.Enabled := "SOA Yes/No Toggle State"::Yes;
+ SOAInstructionTemplate."Prompt Code" := TaskPromptLbl;
+ SOAInstructionTemplate.Insert();
+ end;
+}
\ No newline at end of file
diff --git a/Apps/W1/SalesOrderTakingAgent/app/src/Instructions/SOAInstructTasksPolicies.Page.al b/Apps/W1/SalesOrderTakingAgent/app/src/Instructions/SOAInstructTasksPolicies.Page.al
new file mode 100644
index 0000000000..d345f96af8
--- /dev/null
+++ b/Apps/W1/SalesOrderTakingAgent/app/src/Instructions/SOAInstructTasksPolicies.Page.al
@@ -0,0 +1,76 @@
+// ------------------------------------------------------------------------------------------------
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License. See License.txt in the project root for license information.
+// ------------------------------------------------------------------------------------------------
+
+namespace Agent.SalesOrderTaker.Instructions;
+
+page 4310 "SOA Instruct. Tasks/Policies"
+{
+ PageType = List;
+ ApplicationArea = All;
+ SourceTable = "SOA Instruction Task/Policy";
+ SourceTableView = sorting("Sorting Order No.");
+ Caption = 'Instruction Tasks and Policies';
+ PopulateAllFields = true;
+ DelayedInsert = true;
+
+ layout
+ {
+ area(Content)
+ {
+ repeater(TasksPolicies)
+ {
+ field(Type; Rec.Type)
+ {
+ Caption = 'Type';
+ ToolTip = 'Specifies if the step is a task or a policy.';
+ }
+ field(Name; Rec.Name)
+ {
+ Caption = 'Name';
+ ToolTip = 'Specifies the name of the task or policy.';
+ }
+ field("Sorting Order No."; Rec."Sorting Order No.")
+ {
+ Caption = 'Sorting Order No.';
+ ToolTip = 'Specifies the order number of the task or policy.';
+ Visible = false;
+ }
+ field(Enabled; Rec.Enabled)
+ {
+ Caption = 'Enabled';
+ ToolTip = 'Specifies if the task or policy is enabled.';
+ ValuesAllowed = No, Yes;
+ }
+ field("Prompt Code"; Rec."Prompt Code")
+ {
+ Caption = 'Prompt Code';
+ ToolTip = 'Specifies the code of the prompt.';
+ }
+ }
+ }
+ }
+
+ actions
+ {
+ area(Processing)
+ {
+ action("Show Prompt")
+ {
+ Caption = 'Show Prompt';
+ ToolTip = 'Show the prompt for the selected task or policy';
+ Image = ViewDescription;
+
+ trigger OnAction()
+ begin
+ Rec.ShowPrompt();
+ end;
+ }
+ }
+ area(Promoted)
+ {
+ actionref("Show Prompt_Promoted"; "Show Prompt") { }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Apps/W1/SalesOrderTakingAgent/app/src/Instructions/SOAInstructionPhase.Table.al b/Apps/W1/SalesOrderTakingAgent/app/src/Instructions/SOAInstructionPhase.Table.al
new file mode 100644
index 0000000000..ad956bd5a8
--- /dev/null
+++ b/Apps/W1/SalesOrderTakingAgent/app/src/Instructions/SOAInstructionPhase.Table.al
@@ -0,0 +1,102 @@
+// ------------------------------------------------------------------------------------------------
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License. See License.txt in the project root for license information.
+// ------------------------------------------------------------------------------------------------
+
+namespace Agent.SalesOrderTaker.Instructions;
+
+table 4306 "SOA Instruction Phase"
+{
+ DataClassification = CustomerContent;
+ Caption = 'Sales Order Taking Agent Instruction Phase';
+ ReplicateData = false;
+
+ fields
+ {
+ field(1; "Template Name"; Code[20])
+ {
+ DataClassification = CustomerContent;
+ Caption = 'Template Name';
+ NotBlank = true;
+ ToolTip = 'Specifies the name of the instruction template.';
+ TableRelation = "SOA Instruction Template".Name;
+ }
+ field(2; "Phase Order No."; Integer)
+ {
+ DataClassification = CustomerContent;
+ Caption = 'Phase Order No.';
+ NotBlank = true;
+ ToolTip = 'Specifies the order number of the instruction phase.';
+ }
+ field(3; Phase; Enum "SOA Phases")
+ {
+ DataClassification = CustomerContent;
+ Caption = 'Phase';
+ ToolTip = 'Specifies the phase of the instruction.';
+ }
+ field(4; Description; Text[250])
+ {
+ DataClassification = CustomerContent;
+ Caption = 'Description';
+ ToolTip = 'Specifies the description of the instruction phase.';
+ }
+ field(10; Enabled; Enum "SOA Yes/No Toggle State")
+ {
+ DataClassification = CustomerContent;
+ Caption = 'Enabled';
+ ToolTip = 'Specifies if the instruction phase is enabled.';
+ InitValue = Yes;
+ }
+ field(20; "Prompt Code"; Code[20])
+ {
+ DataClassification = CustomerContent;
+ Caption = 'Prompt Code';
+ ToolTip = 'Specifies the code of the prompt.';
+ TableRelation = "SOA Instruction Prompt".Code;
+ }
+ }
+
+ keys
+ {
+ key(PK; "Template Name", "Phase Order No.")
+ {
+ Clustered = true;
+ }
+ }
+
+ var
+ EditingNotAllowedErr: Label 'You cannot edit this instruction phase.';
+
+ trigger OnInsert()
+ begin
+
+ end;
+
+ trigger OnModify()
+ begin
+ if not CanEdit() then
+ Error(EditingNotAllowedErr);
+ end;
+
+ trigger OnDelete()
+ var
+ InstructionPhaseStep: Record "SOA Instruction Phase Step";
+ begin
+ InstructionPhaseStep.SetRange(Phase, Rec.Phase);
+ InstructionPhaseStep.DeleteAll(true);
+ end;
+
+ local procedure CanEdit(): Boolean
+ begin
+ exit(Rec.Enabled <> Rec.Enabled::"Yes (Read-only)");
+ end;
+
+ procedure ShowPrompt()
+ var
+ InstructionMgt: Codeunit "SOA Instructions Mgt.";
+ InstructionPromptCard: Page "SOA Instruction Prompt Card";
+ begin
+ InstructionPromptCard.SetRec(Rec."Prompt Code", InstructionMgt.GetPromptText(Rec), true);
+ InstructionPromptCard.RunModal();
+ end;
+}
\ No newline at end of file
diff --git a/Apps/W1/SalesOrderTakingAgent/app/src/Instructions/SOAInstructionPhaseStep.Table.al b/Apps/W1/SalesOrderTakingAgent/app/src/Instructions/SOAInstructionPhaseStep.Table.al
new file mode 100644
index 0000000000..9399ca2559
--- /dev/null
+++ b/Apps/W1/SalesOrderTakingAgent/app/src/Instructions/SOAInstructionPhaseStep.Table.al
@@ -0,0 +1,96 @@
+// ------------------------------------------------------------------------------------------------
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License. See License.txt in the project root for license information.
+// ------------------------------------------------------------------------------------------------
+
+namespace Agent.SalesOrderTaker.Instructions;
+
+table 4307 "SOA Instruction Phase Step"
+{
+ DataClassification = CustomerContent;
+ Caption = 'Sales Order Taking Agent Instruction Task/Policy';
+ LookupPageId = "SOA Instruction Phase Steps";
+ ReplicateData = false;
+
+ fields
+ {
+ field(1; Phase; Enum "SOA Phases")
+ {
+ DataClassification = CustomerContent;
+ Caption = 'Phase';
+ ToolTip = 'Specifies the phase of the instruction.';
+ }
+ field(2; "Step No."; Integer)
+ {
+ DataClassification = CustomerContent;
+ Caption = 'Step No.';
+ ToolTip = 'Specifies the step number of the task or policy in the phase.';
+ }
+ field(3; "Step Type"; Enum "SOA Phase Step Type")
+ {
+ DataClassification = CustomerContent;
+ Caption = 'Step Type';
+ ToolTip = 'Specifies if the step is a task or a policy.';
+ }
+ field(4; "Step Name"; Text[250])
+ {
+ DataClassification = CustomerContent;
+ Caption = 'Step Name';
+ ToolTip = 'Specifies the name of the task or policy.';
+ TableRelation = "SOA Instruction Task/Policy".Name where(Type = field("Step Type"));
+ }
+ field(9; Indentation; Integer)
+ {
+ DataClassification = CustomerContent;
+ Caption = 'Indentation';
+ ToolTip = 'Specifies the indentation level of the task or policy.';
+ }
+ field(10; Enabled; Enum "SOA Yes/No Toggle State")
+ {
+ DataClassification = CustomerContent;
+ Caption = 'Enabled';
+ ToolTip = 'Specifies if the instruction phase is enabled.';
+ InitValue = Yes;
+ }
+ }
+
+ keys
+ {
+ key(PK; Phase, "Step No.")
+ {
+ Clustered = true;
+ }
+ }
+
+ var
+ EditingNotAllowedErr: Label 'You cannot edit this phase step.';
+
+ trigger OnInsert()
+ begin
+
+ end;
+
+ trigger OnModify()
+ begin
+ if not CanEdit() then
+ Error(EditingNotAllowedErr);
+ end;
+
+ trigger OnDelete()
+ begin
+
+ end;
+
+ local procedure CanEdit(): Boolean
+ begin
+ exit(Rec.Enabled <> Rec.Enabled::"Yes (Read-only)");
+ end;
+
+ procedure ShowPrompt()
+ var
+ InstructionTaskPolicy: Record "SOA Instruction Task/Policy";
+ begin
+ InstructionTaskPolicy.Get(Rec."Step Type", Rec."Step Name");
+ InstructionTaskPolicy.ShowPrompt();
+ end;
+}
\ No newline at end of file
diff --git a/Apps/W1/SalesOrderTakingAgent/app/src/Instructions/SOAInstructionPhaseSteps.Page.al b/Apps/W1/SalesOrderTakingAgent/app/src/Instructions/SOAInstructionPhaseSteps.Page.al
new file mode 100644
index 0000000000..bc1d0d6771
--- /dev/null
+++ b/Apps/W1/SalesOrderTakingAgent/app/src/Instructions/SOAInstructionPhaseSteps.Page.al
@@ -0,0 +1,128 @@
+// ------------------------------------------------------------------------------------------------
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License. See License.txt in the project root for license information.
+// ------------------------------------------------------------------------------------------------
+
+namespace Agent.SalesOrderTaker.Instructions;
+
+page 4309 "SOA Instruction Phase Steps"
+{
+ PageType = List;
+ ApplicationArea = All;
+ SourceTable = "SOA Instruction Phase Step";
+ Caption = 'Instruction Phase Steps';
+ PopulateAllFields = true;
+ DelayedInsert = true;
+
+ layout
+ {
+ area(Content)
+ {
+ repeater(PhaseSteps)
+ {
+ IndentationColumn = Indent;
+ IndentationControls = "Step Name";
+
+ field(Phase; Rec.Phase)
+ {
+ Caption = 'Phase';
+ ToolTip = 'Specifies the phase of the instruction.';
+ }
+ field("Step No."; Rec."Step No.")
+ {
+ Caption = 'Step No.';
+ ToolTip = 'Specifies the step number of the task or policy in the phase.';
+ }
+ field(Step; Step)
+ {
+ Caption = 'Step';
+ ToolTip = 'Specifies the task or policy in the phase.';
+ Editable = false;
+ AssistEdit = true;
+
+ trigger OnAssistEdit()
+ begin
+ LookUpPhaseStep();
+ CurrPage.Update();
+ end;
+ }
+ field("Step Type"; Rec."Step Type")
+ {
+ Caption = 'Step Type';
+ ToolTip = 'Specifies if the step is a task or a policy.';
+ Visible = false;
+ }
+ field("Step Name"; Rec."Step Name")
+ {
+ Caption = 'Step Name';
+ ToolTip = 'Specifies the name of the task or policy.';
+ Visible = false;
+ }
+ field(Indentation; Rec.Indentation)
+ {
+ Caption = 'Indentation';
+ ToolTip = 'Specifies the indentation level of the task or policy.';
+ Visible = false;
+ }
+ field(Enabled; Rec.Enabled)
+ {
+ Caption = 'Enabled';
+ ToolTip = 'Specifies if the instruction phase is enabled.';
+ ValuesAllowed = No, Yes;
+ }
+ }
+ }
+ }
+
+ actions
+ {
+ area(Processing)
+ {
+ action("Show Prompt")
+ {
+ Caption = 'Show Prompt';
+ Image = Action;
+ ToolTip = 'Show the prompt for the selected task or policy.';
+
+ trigger OnAction()
+ begin
+ Rec.ShowPrompt();
+ end;
+ }
+ }
+ area(Promoted)
+ {
+ actionref("Show Prompt_Promoted"; "Show Prompt") { }
+ }
+ }
+
+ var
+ Indent: Integer;
+ Step: Text;
+
+ trigger OnAfterGetRecord()
+ var
+ InstructionTaskPolicy: Record "SOA Instruction Task/Policy";
+ begin
+ if InstructionTaskPolicy.Get(Rec."Step Type", Rec."Step Name") then
+ Step := StrSubstNo('%1: %2', InstructionTaskPolicy.Type, InstructionTaskPolicy.Name);
+
+ Indent := Rec.Indentation;
+ end;
+
+ trigger OnNewRecord(BelowxRec: Boolean)
+ begin
+ Indent := 0;
+ Step := '';
+ end;
+
+ local procedure LookUpPhaseStep()
+ var
+ InstructionTaskPolicy: Record "SOA Instruction Task/Policy";
+ begin
+ if Page.RunModal(0, InstructionTaskPolicy) = Action::LookupOK then begin
+ Rec.Validate("Step Type", InstructionTaskPolicy.Type);
+ Rec.Validate("Step Name", InstructionTaskPolicy.Name);
+ end;
+ end;
+}
\ No newline at end of file
diff --git a/Apps/W1/SalesOrderTakingAgent/app/src/Instructions/SOAInstructionPhases.Page.al b/Apps/W1/SalesOrderTakingAgent/app/src/Instructions/SOAInstructionPhases.Page.al
new file mode 100644
index 0000000000..bbc91aefa0
--- /dev/null
+++ b/Apps/W1/SalesOrderTakingAgent/app/src/Instructions/SOAInstructionPhases.Page.al
@@ -0,0 +1,73 @@
+// ------------------------------------------------------------------------------------------------
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License. See License.txt in the project root for license information.
+// ------------------------------------------------------------------------------------------------
+
+namespace Agent.SalesOrderTaker.Instructions;
+
+page 4312 "SOA Instruction Phases"
+{
+ PageType = ListPart;
+ ApplicationArea = All;
+ SourceTable = "SOA Instruction Phase";
+ Caption = 'Instruction Phases';
+
+ layout
+ {
+ area(Content)
+ {
+ repeater(PhaseSteps)
+ {
+ ShowCaption = false;
+
+ field("Phase Order No."; Rec."Phase Order No.")
+ {
+ Caption = 'Phase Order No.';
+ ToolTip = 'Specifies the order number of the phase.';
+ }
+ field(Phase; Rec.Phase)
+ {
+ Caption = 'Phase';
+ ToolTip = 'Specifies the phase of the instruction.';
+ }
+ field(Enabled; Rec.Enabled)
+ {
+ Caption = 'Enabled';
+ ToolTip = 'Specifies if the instruction phase is enabled.';
+ ValuesAllowed = No, Yes;
+ }
+ field("Prompt Code"; Rec."Prompt Code")
+ {
+ Caption = 'Prompt Code';
+ ToolTip = 'Specifies the code of the prompt.';
+ }
+ }
+ }
+ }
+
+ actions
+ {
+ area(Processing)
+ {
+ action("Tasks and policies")
+ {
+ Caption = 'Tasks and policies';
+ Image = Task;
+ ToolTip = 'Show the tasks and policies for the selected phase.';
+ RunObject = page "SOA Instruction Phase Steps";
+ RunPageLink = Phase = field(Phase);
+ }
+ action("Show Prompt")
+ {
+ Caption = 'Show Prompt';
+ Image = Action;
+ ToolTip = 'Show the prompt for the selected phase.';
+
+ trigger OnAction()
+ begin
+ Rec.ShowPrompt();
+ end;
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Apps/W1/SalesOrderTakingAgent/app/src/Instructions/SOAInstructionPrompt.Table.al b/Apps/W1/SalesOrderTakingAgent/app/src/Instructions/SOAInstructionPrompt.Table.al
new file mode 100644
index 0000000000..1a18a6202e
--- /dev/null
+++ b/Apps/W1/SalesOrderTakingAgent/app/src/Instructions/SOAInstructionPrompt.Table.al
@@ -0,0 +1,79 @@
+// ------------------------------------------------------------------------------------------------
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License. See License.txt in the project root for license information.
+// ------------------------------------------------------------------------------------------------
+
+namespace Agent.SalesOrderTaker.Instructions;
+
+table 4309 "SOA Instruction Prompt"
+{
+ DataClassification = CustomerContent;
+ Caption = 'Sales Order Taking Agent Instruction Prompt';
+ LookupPageId = "SOA Instruction Prompt List";
+ ReplicateData = false;
+
+ fields
+ {
+ field(1; Code; Code[20])
+ {
+ DataClassification = CustomerContent;
+ Caption = 'Code';
+ NotBlank = true;
+ ToolTip = 'Specifies the code of the prompt.';
+ }
+ field(2; Prompt; Blob)
+ {
+ DataClassification = CustomerContent;
+ Caption = 'Prompt';
+ ToolTip = 'Specifies the prompt.';
+ }
+ field(10; Enabled; Enum "SOA Yes/No Toggle State")
+ {
+ DataClassification = CustomerContent;
+ Caption = 'Enabled';
+ ToolTip = 'Specifies if the prompt is enabled.';
+ InitValue = Yes;
+ }
+ }
+
+ keys
+ {
+ key(PK; Code)
+ {
+ Clustered = true;
+ }
+ }
+
+ var
+ EditingNotAllowedErr: Label 'You cannot edit this prompt.';
+
+ trigger OnInsert()
+ begin
+
+ end;
+
+ trigger OnModify()
+ begin
+ if not CanEdit() then
+ Error(EditingNotAllowedErr);
+ end;
+
+ trigger OnDelete()
+ begin
+
+ end;
+
+ local procedure CanEdit(): Boolean
+ begin
+ exit(Rec.Enabled <> Rec.Enabled::"Yes (Read-only)");
+ end;
+
+ procedure ShowPrompt()
+ var
+ InstructionMgt: Codeunit "SOA Instructions Mgt.";
+ InstructionPromptCard: Page "SOA Instruction Prompt Card";
+ begin
+ InstructionPromptCard.SetRec(Rec.Code, InstructionMgt.GetPromptText(Rec), false);
+ InstructionPromptCard.RunModal();
+ end;
+}
\ No newline at end of file
diff --git a/Apps/W1/SalesOrderTakingAgent/app/src/Instructions/SOAInstructionPromptCard.Page.al b/Apps/W1/SalesOrderTakingAgent/app/src/Instructions/SOAInstructionPromptCard.Page.al
new file mode 100644
index 0000000000..fde2d290ed
--- /dev/null
+++ b/Apps/W1/SalesOrderTakingAgent/app/src/Instructions/SOAInstructionPromptCard.Page.al
@@ -0,0 +1,131 @@
+// ------------------------------------------------------------------------------------------------
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License. See License.txt in the project root for license information.
+// ------------------------------------------------------------------------------------------------
+
+namespace Agent.SalesOrderTaker.Instructions;
+
+page 4318 "SOA Instruction Prompt Card"
+{
+ PageType = Card;
+ SourceTable = "SOA Instruction Prompt";
+ Caption = 'Instruction Prompt';
+ SourceTableTemporary = true;
+ ApplicationArea = All;
+
+ layout
+ {
+ area(Content)
+ {
+ field(Code; Rec.Code)
+ {
+ Caption = 'Code';
+ ToolTip = 'Specifies the code of the prompt.';
+ Visible = not ReadOnly;
+ }
+ field(Enabled; Rec.Enabled)
+ {
+ Caption = 'Enabled';
+ ToolTip = 'Specifies if the prompt is enabled.';
+ ValuesAllowed = No, Yes;
+ Visible = not ReadOnly;
+ }
+ group(PromptText)
+ {
+ Caption = 'Prompt Text';
+ Visible = not ReadOnly;
+
+ field("Prompt Text"; PromptText)
+ {
+ ShowCaption = false;
+ ToolTip = 'Specifies the full prompt.';
+ MultiLine = true;
+
+ trigger OnValidate()
+ begin
+ if not ReadOnly then
+ SaveRec();
+ end;
+ }
+ }
+ group(PromptRichText)
+ {
+ Caption = 'Prompt Text';
+ Visible = ReadOnly;
+ Editable = false;
+
+ field("Prompt Rich Text"; PromptText)
+ {
+ ExtendedDatatype = RichContent;
+ ShowCaption = false;
+ ToolTip = 'Specifies the full prompt.';
+ MultiLine = true;
+ }
+ }
+ }
+ }
+
+ var
+ PromptText: Text;
+ ReadOnly: Boolean;
+
+ trigger OnInsertRecord(BelowxRec: Boolean): Boolean
+ begin
+ if not ReadOnly then
+ SaveRec();
+ end;
+
+ trigger OnModifyRecord(): Boolean
+ begin
+ if not ReadOnly then
+ SaveRec();
+ end;
+
+ trigger OnDeleteRecord(): Boolean
+ begin
+ if not ReadOnly then
+ DeleteRec();
+ end;
+
+ procedure SetRec(PromptCode: Code[20]; NewPromptText: Text; NewReadOnly: Boolean)
+ var
+ InstructionPrompt: Record "SOA Instruction Prompt";
+ begin
+ if InstructionPrompt.Get(PromptCode) then
+ Rec.Copy(InstructionPrompt)
+ else
+ Rec.Init();
+ Rec.Insert();
+ PromptText := NewPromptText;
+
+ ReadOnly := NewReadOnly;
+ end;
+
+ local procedure SaveRec()
+ var
+ InstructionPrompt: Record "SOA Instruction Prompt";
+ InstructionsMgt: Codeunit "SOA Instructions Mgt.";
+ begin
+ if not InstructionPrompt.Get(Rec.Code) then begin
+ InstructionPrompt := Rec;
+ InstructionPrompt.Insert();
+ end else begin
+ InstructionPrompt := Rec;
+ InstructionPrompt.Modify();
+ end;
+ InstructionsMgt.SetPrompt(InstructionPrompt, PromptText);
+ InstructionPrompt.Modify();
+ Commit();
+
+ Rec.Copy(InstructionPrompt);
+ end;
+
+ local procedure DeleteRec()
+ var
+ InstructionPrompt: Record "SOA Instruction Prompt";
+ begin
+ if InstructionPrompt.Get(Rec.Code) then
+ InstructionPrompt.Delete();
+ end;
+
+}
\ No newline at end of file
diff --git a/Apps/W1/SalesOrderTakingAgent/app/src/Instructions/SOAInstructionPromptList.Page.al b/Apps/W1/SalesOrderTakingAgent/app/src/Instructions/SOAInstructionPromptList.Page.al
new file mode 100644
index 0000000000..7ea72fc3e6
--- /dev/null
+++ b/Apps/W1/SalesOrderTakingAgent/app/src/Instructions/SOAInstructionPromptList.Page.al
@@ -0,0 +1,74 @@
+// ------------------------------------------------------------------------------------------------
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License. See License.txt in the project root for license information.
+// ------------------------------------------------------------------------------------------------
+
+namespace Agent.SalesOrderTaker.Instructions;
+
+page 4311 "SOA Instruction Prompt List"
+{
+ PageType = List;
+ ApplicationArea = All;
+ SourceTable = "SOA Instruction Prompt";
+ Caption = 'Instruction Prompts';
+ DelayedInsert = true;
+
+ layout
+ {
+ area(Content)
+ {
+ repeater(Prompts)
+ {
+ field(Code; Rec.Code)
+ {
+ Caption = 'Code';
+ ToolTip = 'Specifies the code of the prompt.';
+ }
+ field("Prompt Text"; PromptText)
+ {
+ Caption = 'Prompt';
+ ToolTip = 'Specifies the prompt.';
+ Editable = false;
+ }
+ field(Enabled; Rec.Enabled)
+ {
+ Caption = 'Enabled';
+ ToolTip = 'Specifies if the prompt is enabled.';
+ ValuesAllowed = No, Yes;
+ }
+ }
+ }
+ }
+
+ actions
+ {
+ area(Processing)
+ {
+ action("Show Prompt")
+ {
+ Caption = 'Edit Prompt';
+ Image = Action;
+ ToolTip = 'Edit the current prompt';
+
+ trigger OnAction()
+ begin
+ Rec.ShowPrompt();
+ end;
+ }
+ }
+ }
+
+ var
+ InstructionsMgt: Codeunit "SOA Instructions Mgt.";
+ PromptText: Text;
+
+ trigger OnAfterGetRecord()
+ begin
+ PromptText := InstructionsMgt.GetPromptText(Rec);
+ end;
+
+ trigger OnNewRecord(BelowxRec: Boolean)
+ begin
+ PromptText := '';
+ end;
+}
\ No newline at end of file
diff --git a/Apps/W1/SalesOrderTakingAgent/app/src/Instructions/SOAInstructionTaskPolicy.Table.al b/Apps/W1/SalesOrderTakingAgent/app/src/Instructions/SOAInstructionTaskPolicy.Table.al
new file mode 100644
index 0000000000..713357a13d
--- /dev/null
+++ b/Apps/W1/SalesOrderTakingAgent/app/src/Instructions/SOAInstructionTaskPolicy.Table.al
@@ -0,0 +1,102 @@
+// ------------------------------------------------------------------------------------------------
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License. See License.txt in the project root for license information.
+// ------------------------------------------------------------------------------------------------
+
+namespace Agent.SalesOrderTaker.Instructions;
+
+table 4308 "SOA Instruction Task/Policy"
+{
+ DataClassification = CustomerContent;
+ Caption = 'Sales Order Taking Agent Instruction Task/Policy';
+ LookupPageId = "SOA Instruct. Tasks/Policies";
+ ReplicateData = false;
+
+ fields
+ {
+ field(1; Type; Enum "SOA Phase Step Type")
+ {
+ DataClassification = CustomerContent;
+ Caption = 'Type';
+ ToolTip = 'Specifies if this is a task or a policy.';
+ }
+ field(2; Name; Text[250])
+ {
+ DataClassification = CustomerContent;
+ Caption = 'Name';
+ ToolTip = 'Specifies the name of the task or policy.';
+ }
+ field(5; "Sorting Order No."; Integer)
+ {
+ DataClassification = CustomerContent;
+ Caption = 'Sorting Order No.';
+ ToolTip = 'Specifies the sorting order number of the task or policy.';
+ }
+ field(10; Enabled; Enum "SOA Yes/No Toggle State")
+ {
+ DataClassification = CustomerContent;
+ Caption = 'Enabled';
+ ToolTip = 'Specifies if the task or policy is enabled.';
+ InitValue = Yes;
+ }
+ field(20; "Prompt Code"; Code[20])
+ {
+ DataClassification = CustomerContent;
+ Caption = 'Prompt Code';
+ ToolTip = 'Specifies the code of the prompt.';
+ TableRelation = "SOA Instruction Prompt".Code;
+ }
+ }
+
+ keys
+ {
+ key(PK; Type, Name)
+ {
+ Clustered = true;
+ }
+ key(Key2; "Sorting Order No.")
+ {
+
+ }
+ }
+
+ var
+ EditingNotAllowedErr: Label 'You cannot edit this task or policy.';
+
+ trigger OnInsert()
+ begin
+
+ end;
+
+ trigger OnModify()
+ begin
+ if not CanEdit() then
+ Error(EditingNotAllowedErr);
+ end;
+
+ trigger OnDelete()
+ var
+ InstructionPhaseStep: Record "SOA Instruction Phase Step";
+ begin
+ InstructionPhaseStep.SetRange("Step Type", Rec.Type);
+ InstructionPhaseStep.SetRange("Step Name", Rec.Name);
+ InstructionPhaseStep.DeleteAll(true);
+ end;
+
+ local procedure CanEdit(): Boolean
+ begin
+ exit(Rec.Enabled <> Rec.Enabled::"Yes (Read-only)");
+ end;
+
+ procedure ShowPrompt()
+ var
+ InstructionMgt: Codeunit "SOA Instructions Mgt.";
+ InstructionPromptCard: Page "SOA Instruction Prompt Card";
+ begin
+ if Rec."Prompt Code" = '' then
+ exit;
+
+ InstructionPromptCard.SetRec(Rec."Prompt Code", InstructionMgt.GetPromptText(Rec), false);
+ InstructionPromptCard.RunModal();
+ end;
+}
\ No newline at end of file
diff --git a/Apps/W1/SalesOrderTakingAgent/app/src/Instructions/SOAInstructionTemplate.Table.al b/Apps/W1/SalesOrderTakingAgent/app/src/Instructions/SOAInstructionTemplate.Table.al
new file mode 100644
index 0000000000..a30b38b0ff
--- /dev/null
+++ b/Apps/W1/SalesOrderTakingAgent/app/src/Instructions/SOAInstructionTemplate.Table.al
@@ -0,0 +1,115 @@
+// ------------------------------------------------------------------------------------------------
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License. See License.txt in the project root for license information.
+// ------------------------------------------------------------------------------------------------
+
+namespace Agent.SalesOrderTaker.Instructions;
+
+table 4305 "SOA Instruction Template"
+{
+ DataClassification = CustomerContent;
+ Caption = 'Sales Order Taking Agent Instruction Template';
+ LookupPageId = "SOA Instruction Templates";
+ ReplicateData = false;
+
+ fields
+ {
+ field(1; Name; Code[20])
+ {
+ DataClassification = CustomerContent;
+ Caption = 'Name';
+ NotBlank = true;
+ ToolTip = 'Specifies the name of the instruction template.';
+ }
+ field(2; Description; Text[250])
+ {
+ DataClassification = CustomerContent;
+ Caption = 'Description';
+ ToolTip = 'Specifies the description of the instruction template.';
+ }
+ field(10; Enabled; Enum "SOA Yes/No Toggle State")
+ {
+ DataClassification = CustomerContent;
+ Caption = 'Enabled';
+ ToolTip = 'Specifies if the instruction template is enabled.';
+ InitValue = Yes;
+
+ trigger OnValidate()
+ var
+ InstructionTemplate: Record "SOA Instruction Template";
+ begin
+ InstructionTemplate.SetFilter(Name, '<>%1', Name);
+ InstructionTemplate.SetFilter(Enabled, '%1|%2', InstructionTemplate.Enabled::Yes, InstructionTemplate.Enabled::"Yes (Read-only)");
+ if not InstructionTemplate.IsEmpty() then
+ Error(OnlyOneEnabledErr);
+ end;
+ }
+ field(20; "Prompt Code"; Code[20])
+ {
+ DataClassification = CustomerContent;
+ Caption = 'Prompt Code';
+ ToolTip = 'Specifies the code of the prompt.';
+ TableRelation = "SOA Instruction Prompt".Code;
+ }
+ field(21; "Meta Prompt Code"; Code[20])
+ {
+ DataClassification = CustomerContent;
+ Caption = 'Meta Prompt Code';
+ ToolTip = 'Specifies the code of the meta prompt.';
+ TableRelation = "SOA Instruction Prompt".Code;
+ }
+ }
+
+ keys
+ {
+ key(PK; Name)
+ {
+ Clustered = true;
+ }
+ }
+
+ var
+ EditingNotAllowedErr: Label 'You cannot edit this instruction template.';
+ OnlyOneEnabledErr: Label 'Only one instruction template can be enabled.';
+
+ trigger OnInsert()
+ begin
+ end;
+
+ trigger OnModify()
+ begin
+ if not CanEdit() then
+ Error(EditingNotAllowedErr);
+ end;
+
+ trigger OnDelete()
+ var
+ InstructionPhase: Record "SOA Instruction Phase";
+ begin
+ InstructionPhase.SetRange("Template Name", Rec.Name);
+ InstructionPhase.DeleteAll(true);
+ end;
+
+ local procedure CanEdit(): Boolean
+ begin
+ exit(Rec.Enabled <> Rec.Enabled::"Yes (Read-only)");
+ end;
+
+ procedure ShowPrompt()
+ var
+ InstructionMgt: Codeunit "SOA Instructions Mgt.";
+ InstructionPromptCard: Page "SOA Instruction Prompt Card";
+ begin
+ InstructionPromptCard.SetRec(Rec."Prompt Code", InstructionMgt.GetPromptText(Rec), true);
+ InstructionPromptCard.RunModal();
+ end;
+
+ procedure ShowMetaPrompt()
+ var
+ InstructionMgt: Codeunit "SOA Instructions Mgt.";
+ InstructionPromptCard: Page "SOA Instruction Prompt Card";
+ begin
+ InstructionPromptCard.SetRec(Rec."Meta Prompt Code", InstructionMgt.GetMetaPromptText(Rec), true);
+ InstructionPromptCard.RunModal();
+ end;
+}
\ No newline at end of file
diff --git a/Apps/W1/SalesOrderTakingAgent/app/src/Instructions/SOAInstructionTemplates.Page.al b/Apps/W1/SalesOrderTakingAgent/app/src/Instructions/SOAInstructionTemplates.Page.al
new file mode 100644
index 0000000000..90987d4f9b
--- /dev/null
+++ b/Apps/W1/SalesOrderTakingAgent/app/src/Instructions/SOAInstructionTemplates.Page.al
@@ -0,0 +1,92 @@
+// ------------------------------------------------------------------------------------------------
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License. See License.txt in the project root for license information.
+// ------------------------------------------------------------------------------------------------
+
+namespace Agent.SalesOrderTaker.Instructions;
+
+page 4304 "SOA Instruction Templates"
+{
+ PageType = List;
+ ApplicationArea = All;
+ UsageCategory = Lists;
+ SourceTable = "SOA Instruction Template";
+ Caption = 'Sales Order Taking Agent Instruction Templates';
+
+ layout
+ {
+ area(Content)
+ {
+ repeater(Templates)
+ {
+ field(Name; Rec.Name)
+ {
+ Caption = 'Name';
+ ToolTip = 'Specifies the name of the instruction template.';
+ }
+ field(Description; Rec.Description)
+ {
+ Caption = 'Description';
+ ToolTip = 'Specifies the description of the instruction template.';
+ }
+ field(Enabled; Rec.Enabled)
+ {
+ Caption = 'Enabled';
+ ToolTip = 'Specifies if the instruction template is enabled.';
+ ValuesAllowed = No, Yes;
+ }
+ field("Prompt Code"; Rec."Prompt Code")
+ {
+ Caption = 'Prompt Code';
+ ToolTip = 'Specifies the code of the prompt.';
+ }
+ }
+ }
+ }
+
+ actions
+ {
+ area(Processing)
+ {
+ action("Edit Template")
+ {
+ Caption = 'Edit Template';
+ ToolTip = 'Edit the selected template.';
+ Image = Edit;
+ RunObject = page "SOA Instructions";
+ RunPageOnRec = true;
+ }
+ action("Show Prompt")
+ {
+ Caption = 'Show Prompt';
+ ToolTip = 'Show the prompt for the selected template';
+ Image = ViewDescription;
+
+ trigger OnAction()
+ begin
+ Rec.ShowPrompt();
+ end;
+ }
+ action("Initial Setup")
+ {
+ Caption = 'Initial Setup';
+ Image = Setup;
+ ToolTip = 'Setup the sales order taking agent instructions.';
+ Visible = false;
+
+ trigger OnAction()
+ var
+ SOADemoPrompt: Codeunit "SOA Demo Prompt";
+ begin
+ SOADemoPrompt.Run();
+ CurrPage.Update();
+ end;
+ }
+ }
+ area(Promoted)
+ {
+ actionref("Edit Template_Promoted"; "Edit Template") { }
+ actionref("Show Prompt_Promoted"; "Show Prompt") { }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Apps/W1/SalesOrderTakingAgent/app/src/Instructions/SOAInstructions.Page.al b/Apps/W1/SalesOrderTakingAgent/app/src/Instructions/SOAInstructions.Page.al
new file mode 100644
index 0000000000..1c0ae94d42
--- /dev/null
+++ b/Apps/W1/SalesOrderTakingAgent/app/src/Instructions/SOAInstructions.Page.al
@@ -0,0 +1,115 @@
+// ------------------------------------------------------------------------------------------------
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License. See License.txt in the project root for license information.
+// ------------------------------------------------------------------------------------------------
+
+namespace Agent.SalesOrderTaker.Instructions;
+
+page 4317 "SOA Instructions"
+{
+ PageType = Document;
+ ApplicationArea = All;
+ SourceTable = "SOA Instruction Template";
+ Caption = 'Sales Order Taking Agent Instructions';
+
+ layout
+ {
+ area(Content)
+ {
+ group(Template)
+ {
+ field(Name; Rec.Name)
+ {
+ Caption = 'Name';
+ ToolTip = 'Specifies the name of the instruction template.';
+ }
+ field(Description; Rec.Description)
+ {
+ Caption = 'Description';
+ ToolTip = 'Specifies the description of the instruction template.';
+ }
+ field(Enabled; Rec.Enabled)
+ {
+ Caption = 'Enabled';
+ ToolTip = 'Specifies if the instruction template is enabled.';
+ ValuesAllowed = No, Yes;
+ }
+ field("Meta Prompt Code"; Rec."Meta Prompt Code")
+ {
+ Caption = 'Metaprompt Code';
+ ToolTip = 'Specifies the code of the metaprompt.';
+ }
+ field("Prompt Code"; Rec."Prompt Code")
+ {
+ Caption = 'Prompt Code';
+ ToolTip = 'Specifies the code of the prompt.';
+ }
+ }
+ part("Phases"; "SOA Instruction Phases")
+ {
+ SubPageLink = "Template Name" = field(Name);
+ Editable = Rec.Name <> '';
+ UpdatePropagation = Both;
+ }
+ }
+ }
+
+ actions
+ {
+ area(Processing)
+ {
+ action("Show Metaprompt")
+ {
+ Caption = 'Show Metaprompt';
+ Image = Action;
+ ToolTip = 'Show the metaprompt for the selected template';
+
+ trigger OnAction()
+ begin
+ Rec.ShowMetaPrompt();
+ end;
+ }
+ action("Show Prompt")
+ {
+ Caption = 'Show Prompt';
+ Image = Action;
+ ToolTip = 'Show the prompt for the selected template';
+
+ trigger OnAction()
+ begin
+ Rec.ShowPrompt();
+ end;
+ }
+ }
+ area(Navigation)
+ {
+ action("All tasks and policies")
+ {
+ Caption = 'All tasks and policies';
+ Image = TaskList;
+ ToolTip = 'Show all tasks and policies.';
+ RunObject = page "SOA Instruct. Tasks/Policies";
+ }
+ action("All prompts")
+ {
+ Caption = 'All prompts';
+ Image = Action;
+ ToolTip = 'Show all prompts.';
+ RunObject = page "SOA Instruction Prompt List";
+ }
+ }
+ area(Promoted)
+ {
+ group(Prompts)
+ {
+ actionref("Show Metaprompt_Promoted"; "Show Metaprompt") { }
+ actionref("Show Prompt_Promoted"; "Show Prompt") { }
+ }
+ group(Navigate)
+ {
+ actionref("All tasks and policies_Promoted"; "All tasks and policies") { }
+ actionref("All prompts_Promoted"; "All prompts") { }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Apps/W1/SalesOrderTakingAgent/app/src/Instructions/SOAInstructionsMgt.Codeunit.al b/Apps/W1/SalesOrderTakingAgent/app/src/Instructions/SOAInstructionsMgt.Codeunit.al
new file mode 100644
index 0000000000..372bc2b471
--- /dev/null
+++ b/Apps/W1/SalesOrderTakingAgent/app/src/Instructions/SOAInstructionsMgt.Codeunit.al
@@ -0,0 +1,162 @@
+// ------------------------------------------------------------------------------------------------
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License. See License.txt in the project root for license information.
+// ------------------------------------------------------------------------------------------------
+
+namespace Agent.SalesOrderTaker.Instructions;
+using System.Reflection;
+using System.Utilities;
+
+codeunit 4305 "SOA Instructions Mgt."
+{
+ trigger OnRun()
+ begin
+
+ end;
+
+ var
+ PromptTok: Label 'Prompt';
+
+ procedure SetPrompt(var InstructionPrompt: Record "SOA Instruction Prompt"; PromptTextToBlob: Text)
+ var
+ TempBlob: Codeunit "Temp Blob";
+ RecRef: RecordRef;
+ PromptStream: OutStream;
+ begin
+ RecRef.GetTable(InstructionPrompt);
+ TempBlob.CreateOutStream(PromptStream, TextEncoding::UTF8);
+ PromptStream.Write(PromptTextToBlob);
+ TempBlob.ToRecordRef(RecRef, InstructionPrompt.FieldNo(Prompt));
+ RecRef.SetTable(InstructionPrompt);
+ end;
+
+ procedure GetPromptText(InstructionPrompt: Record "SOA Instruction Prompt") Result: Text
+ var
+ TempBlob: Codeunit "Temp Blob";
+ begin
+ TempBlob.FromRecord(InstructionPrompt, InstructionPrompt.FieldNo(Prompt));
+ if not TempBlob.HasValue() then
+ exit;
+
+ Result := GetPromptTextFromBlob(TempBlob);
+ end;
+
+ procedure GetPromptText(InstructionTaskPolicy: Record "SOA Instruction Task/Policy") Result: Text
+ var
+ InstructionPrompt: Record "SOA Instruction Prompt";
+ TempBlob: Codeunit "Temp Blob";
+ begin
+ Result := '';
+
+ if not InstructionPrompt.Get(InstructionTaskPolicy."Prompt Code") then
+ exit;
+
+ TempBlob.FromRecord(InstructionPrompt, InstructionPrompt.FieldNo(Prompt));
+ if not TempBlob.HasValue() then
+ exit;
+
+ Result := GetPromptTextFromBlob(TempBlob);
+ end;
+
+ procedure GetPromptText(InstructionPhase: Record "SOA Instruction Phase") Result: Text
+ var
+ InstructionPhaseStep: Record "SOA Instruction Phase Step";
+ InstructionTaskPolicy: Record "SOA Instruction Task/Policy";
+ InstructionPrompt: Record "SOA Instruction Prompt";
+ TempBlob: Codeunit "Temp Blob";
+ TextBuilder: TextBuilder;
+ PromptText: Text;
+ begin
+ Result := '';
+
+ if InstructionPrompt.Get(InstructionPhase."Prompt Code") then begin
+ TempBlob.FromRecord(InstructionPrompt, InstructionPrompt.FieldNo(Prompt));
+ if TempBlob.HasValue() then begin
+ PromptText := GetPromptTextFromBlob(TempBlob);
+ TextBuilder.AppendLine(PromptText);
+ end;
+ end;
+
+ InstructionPhaseStep.SetRange(Phase, InstructionPhase.Phase);
+ InstructionPhaseStep.SetFilter(Enabled, '<>%1', InstructionPhaseStep.Enabled::No);
+ if InstructionPhaseStep.FindSet() then
+ repeat
+ InstructionTaskPolicy.Get(InstructionPhaseStep."Step Type", InstructionPhaseStep."Step Name");
+ PromptText := GetPromptText(InstructionTaskPolicy);
+ TextBuilder.AppendLine(PromptText);
+ until InstructionPhaseStep.Next() = 0;
+
+ Result := TextBuilder.ToText();
+ end;
+
+ procedure GetPromptText(InstructionTemplate: Record "SOA Instruction Template") Result: Text
+ var
+ InstructionPhase: Record "SOA Instruction Phase";
+ InstructionPrompt: Record "SOA Instruction Prompt";
+ TempBlob: Codeunit "Temp Blob";
+ TemplatePromptText: Text;
+ PhasePromptText: Text;
+ PhasePlaceholderTok: Label '<>', Locked = true;
+ begin
+ Result := '';
+
+ if not InstructionPrompt.Get(InstructionTemplate."Prompt Code") then
+ exit;
+
+ TempBlob.FromRecord(InstructionPrompt, InstructionPrompt.FieldNo(Prompt));
+ if not TempBlob.HasValue() then
+ exit;
+
+ TemplatePromptText := GetPromptTextFromBlob(TempBlob);
+
+ InstructionPhase.SetRange("Template Name", InstructionTemplate.Name);
+ if InstructionPhase.FindSet() then
+ repeat
+ if InstructionPhase.Enabled = InstructionPhase.Enabled::No then
+ PhasePromptText := ''
+ else
+ PhasePromptText := GetPromptText(InstructionPhase);
+ TemplatePromptText := TemplatePromptText.Replace(StrSubstNo(PhasePlaceholderTok, InstructionPhase."Phase Order No."), PhasePromptText);
+ until InstructionPhase.Next() = 0;
+
+ Result := TemplatePromptText;
+ end;
+
+ procedure GetMetaPromptText(InstructionTemplate: Record "SOA Instruction Template") Result: Text
+ var
+ InstructionPrompt: Record "SOA Instruction Prompt";
+ TempBlob: Codeunit "Temp Blob";
+ begin
+ Result := '';
+
+ if not InstructionPrompt.Get(InstructionTemplate."Meta Prompt Code") then
+ exit;
+
+ TempBlob.FromRecord(InstructionPrompt, InstructionPrompt.FieldNo(Prompt));
+ if not TempBlob.HasValue() then
+ exit;
+
+ Result := GetPromptTextFromBlob(TempBlob);
+ end;
+
+ local procedure GetPromptTextFromBlob(var TempBlob: Codeunit "Temp Blob"): Text
+ var
+ TypeHelper: Codeunit "Type Helper";
+ PromptStream: InStream;
+ begin
+ TempBlob.CreateInStream(PromptStream, TextEncoding::UTF8);
+ exit(TypeHelper.TryReadAsTextWithSepAndFieldErrMsg(PromptStream, TypeHelper.LFSeparator(), PromptTok));
+ end;
+
+ [EventSubscriber(ObjectType::Table, Database::"SOA Instruction Prompt", OnAfterDeleteEvent, '', false, false)]
+ local procedure ClearPromptLinks(var Rec: Record "SOA Instruction Prompt")
+ var
+ InstructionTemplate: Record "SOA Instruction Template";
+ InstructionPhase: Record "SOA Instruction Phase";
+ begin
+ InstructionTemplate.SetRange("Prompt Code", Rec.Code);
+ InstructionTemplate.ModifyAll("Prompt Code", '', false);
+ InstructionPhase.SetRange("Prompt Code", Rec.Code);
+ InstructionPhase.ModifyAll("Prompt Code", '', false);
+ end;
+}
\ No newline at end of file
diff --git a/Apps/W1/SalesOrderTakingAgent/app/src/Instructions/SOAPhaseStepType.Enum.al b/Apps/W1/SalesOrderTakingAgent/app/src/Instructions/SOAPhaseStepType.Enum.al
new file mode 100644
index 0000000000..3825f91da8
--- /dev/null
+++ b/Apps/W1/SalesOrderTakingAgent/app/src/Instructions/SOAPhaseStepType.Enum.al
@@ -0,0 +1,21 @@
+// ------------------------------------------------------------------------------------------------
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License. See License.txt in the project root for license information.
+// ------------------------------------------------------------------------------------------------
+
+namespace Agent.SalesOrderTaker.Instructions;
+
+enum 4308 "SOA Phase Step Type"
+{
+ Extensible = false;
+ Caption = 'Sales Order Taking Agent Phase Step Type';
+
+ value(0; "Task")
+ {
+ Caption = 'Task';
+ }
+ value(1; "Policy")
+ {
+ Caption = 'Policy';
+ }
+}
\ No newline at end of file
diff --git a/Apps/W1/SalesOrderTakingAgent/app/src/Instructions/SOAPhases.Enum.al b/Apps/W1/SalesOrderTakingAgent/app/src/Instructions/SOAPhases.Enum.al
new file mode 100644
index 0000000000..3283dd8820
--- /dev/null
+++ b/Apps/W1/SalesOrderTakingAgent/app/src/Instructions/SOAPhases.Enum.al
@@ -0,0 +1,33 @@
+// ------------------------------------------------------------------------------------------------
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License. See License.txt in the project root for license information.
+// ------------------------------------------------------------------------------------------------
+
+namespace Agent.SalesOrderTaker.Instructions;
+
+enum 4307 "SOA Phases"
+{
+ Extensible = false;
+ Caption = 'Sales Order Taking Agent Phases';
+
+ value(1; "Identify Business Partner")
+ {
+ Caption = 'Identify business partner';
+ }
+ value(2; "Create Sales Document")
+ {
+ Caption = 'Create sales document';
+ }
+ value(3; "Add Details to Sales Document")
+ {
+ Caption = 'Add details to sales document';
+ }
+ value(4; "Send Sales Document")
+ {
+ Caption = 'Send sales document';
+ }
+ value(5; "Process Response")
+ {
+ Caption = 'Process response';
+ }
+}
\ No newline at end of file
diff --git a/Apps/W1/FieldServiceIntegration/app/src/Enums/FSWorkOrderLineSynchRule.Enum.al b/Apps/W1/SalesOrderTakingAgent/app/src/Instructions/SOAYesNoToggleState.Enum.al
similarity index 53%
rename from Apps/W1/FieldServiceIntegration/app/src/Enums/FSWorkOrderLineSynchRule.Enum.al
rename to Apps/W1/SalesOrderTakingAgent/app/src/Instructions/SOAYesNoToggleState.Enum.al
index 130c53ff08..98b54a6242 100644
--- a/Apps/W1/FieldServiceIntegration/app/src/Enums/FSWorkOrderLineSynchRule.Enum.al
+++ b/Apps/W1/SalesOrderTakingAgent/app/src/Instructions/SOAYesNoToggleState.Enum.al
@@ -2,19 +2,24 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
// ------------------------------------------------------------------------------------------------
-namespace Microsoft.Integration.DynamicsFieldService;
-enum 6611 "FS Work Order Line Synch. Rule"
+namespace Agent.SalesOrderTaker.Instructions;
+
+enum 4305 "SOA Yes/No Toggle State"
{
- AssignmentCompatibility = true;
- Extensible = true;
+ Extensible = false;
+ Caption = 'Sales Order Taking Agent Yes/No Toggle State';
- value(0; LineUsed)
+ value(0; No)
+ {
+ Caption = 'No';
+ }
+ value(1; Yes)
{
- Caption = 'when work order product/service is used';
+ Caption = 'Yes';
}
- value(1; WorkOrderCompleted)
+ value(2; "Yes (Read-only)")
{
- Caption = 'when work order is completed';
+ Caption = 'Yes (Read-only)';
}
}
\ No newline at end of file
diff --git a/Apps/W1/SalesOrderTakingAgent/app/src/Permissions/SOAEdit.permissionset.al b/Apps/W1/SalesOrderTakingAgent/app/src/Permissions/SOAEdit.permissionset.al
new file mode 100644
index 0000000000..122f639581
--- /dev/null
+++ b/Apps/W1/SalesOrderTakingAgent/app/src/Permissions/SOAEdit.permissionset.al
@@ -0,0 +1,19 @@
+
+// ------------------------------------------------------------------------------------------------
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License. See License.txt in the project root for license information.
+// ------------------------------------------------------------------------------------------------
+
+namespace Agent.SalesOrderTaker;
+
+using System.Security.AccessControl;
+
+permissionset 4330 "SOA - Edit"
+{
+ Caption = 'Sales Order Taker Agent - Edit';
+ Assignable = true;
+ IncludedPermissionSets = LOGIN,
+ "Webhook - Edit",
+ "D365 SALES",
+ "SOA - Read";
+}
\ No newline at end of file
diff --git a/Apps/W1/SalesOrderTakingAgent/app/src/Permissions/SOAInstructionsEdit.permissionset.al b/Apps/W1/SalesOrderTakingAgent/app/src/Permissions/SOAInstructionsEdit.permissionset.al
new file mode 100644
index 0000000000..0ce1619b68
--- /dev/null
+++ b/Apps/W1/SalesOrderTakingAgent/app/src/Permissions/SOAInstructionsEdit.permissionset.al
@@ -0,0 +1,22 @@
+// ------------------------------------------------------------------------------------------------
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License. See License.txt in the project root for license information.
+// ------------------------------------------------------------------------------------------------
+
+namespace Agent.SalesOrderTaker;
+
+using Agent.SalesOrderTaker.Instructions;
+
+permissionset 4335 "SOA Instructions - Edit"
+{
+ Caption = 'Sales Order Taker Agent Instructions - Edit';
+ Assignable = false;
+ IncludedPermissionSets = "SOA Instructions - Read";
+
+ Permissions =
+ tabledata "SOA Instruction Phase" = IMD,
+ tabledata "SOA Instruction Phase Step" = IMD,
+ tabledata "SOA Instruction Prompt" = IMD,
+ tabledata "SOA Instruction Task/Policy" = IMD,
+ tabledata "SOA Instruction Template" = IMD;
+}
\ No newline at end of file
diff --git a/Apps/W1/SalesOrderTakingAgent/app/src/Permissions/SOAInstructionsRead.permissionset.al b/Apps/W1/SalesOrderTakingAgent/app/src/Permissions/SOAInstructionsRead.permissionset.al
new file mode 100644
index 0000000000..e2031d27ed
--- /dev/null
+++ b/Apps/W1/SalesOrderTakingAgent/app/src/Permissions/SOAInstructionsRead.permissionset.al
@@ -0,0 +1,22 @@
+// ------------------------------------------------------------------------------------------------
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License. See License.txt in the project root for license information.
+// ------------------------------------------------------------------------------------------------
+
+namespace Agent.SalesOrderTaker;
+
+using Agent.SalesOrderTaker.Instructions;
+
+permissionset 4333 "SOA Instructions - Read"
+{
+ Caption = 'Sales Order Taker Agent Instructions - Read';
+ Assignable = false;
+ IncludedPermissionSets = "SOA - Objects";
+
+ Permissions =
+ tabledata "SOA Instruction Phase" = R,
+ tabledata "SOA Instruction Phase Step" = R,
+ tabledata "SOA Instruction Prompt" = R,
+ tabledata "SOA Instruction Task/Policy" = R,
+ tabledata "SOA Instruction Template" = R;
+}
\ No newline at end of file
diff --git a/Apps/W1/SalesOrderTakingAgent/app/src/Permissions/SOAInstructionsView.permissionset.al b/Apps/W1/SalesOrderTakingAgent/app/src/Permissions/SOAInstructionsView.permissionset.al
new file mode 100644
index 0000000000..f3652944d3
--- /dev/null
+++ b/Apps/W1/SalesOrderTakingAgent/app/src/Permissions/SOAInstructionsView.permissionset.al
@@ -0,0 +1,22 @@
+// ------------------------------------------------------------------------------------------------
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License. See License.txt in the project root for license information.
+// ------------------------------------------------------------------------------------------------
+
+namespace Agent.SalesOrderTaker;
+
+using Agent.SalesOrderTaker.Instructions;
+
+permissionset 4334 "SOA Instructions - View"
+{
+ Caption = 'Sales Order Taker Agent Instructions - View';
+ Assignable = false;
+ IncludedPermissionSets = "SOA Instructions - Read";
+
+ Permissions =
+ tabledata "SOA Instruction Phase" = imd,
+ tabledata "SOA Instruction Phase Step" = imd,
+ tabledata "SOA Instruction Prompt" = imd,
+ tabledata "SOA Instruction Task/Policy" = imd,
+ tabledata "SOA Instruction Template" = imd;
+}
\ No newline at end of file
diff --git a/Apps/W1/SalesOrderTakingAgent/app/src/Permissions/SOAObjects.PermissionSet.al b/Apps/W1/SalesOrderTakingAgent/app/src/Permissions/SOAObjects.PermissionSet.al
new file mode 100644
index 0000000000..8677dd12d8
--- /dev/null
+++ b/Apps/W1/SalesOrderTakingAgent/app/src/Permissions/SOAObjects.PermissionSet.al
@@ -0,0 +1,38 @@
+
+// ------------------------------------------------------------------------------------------------
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License. See License.txt in the project root for license information.
+// ------------------------------------------------------------------------------------------------
+
+namespace Agent.SalesOrderTaker;
+
+using Agent.SalesOrderTaker.Instructions;
+using Microsoft.CRM.Contact;
+using Microsoft.Sales.Document;
+using Microsoft.Inventory.Item;
+using Microsoft.Sales.Customer;
+
+permissionset 4331 "SOA - Objects"
+{
+ Caption = 'Sales Order Taker Agent - Objects';
+ Assignable = false;
+
+ Permissions =
+ codeunit "SOA Instructions Mgt." = X,
+ page "Contact Card" = X,
+ page "Contact List" = X,
+ page "Customer Card" = X,
+ page "Customer List" = X,
+ page "Item List" = X,
+ page "Item Lookup" = X,
+ page "Sales Quote" = X,
+ page "Sales Quotes" = X,
+ page "Sales Quote Subform" = X,
+ page "SOA Instruction Phases" = X,
+ page "SOA Instruction Phase Steps" = X,
+ page "SOA Instruction Prompt Card" = X,
+ page "SOA Instruction Prompt List" = X,
+ page "SOA Instructions" = X,
+ page "SOA Instruction Templates" = X,
+ page "SOA Instruct. Tasks/Policies" = X;
+}
\ No newline at end of file
diff --git a/Apps/W1/SalesOrderTakingAgent/app/src/Permissions/SOARead.permissionset.al b/Apps/W1/SalesOrderTakingAgent/app/src/Permissions/SOARead.permissionset.al
new file mode 100644
index 0000000000..67bd9d924a
--- /dev/null
+++ b/Apps/W1/SalesOrderTakingAgent/app/src/Permissions/SOARead.permissionset.al
@@ -0,0 +1,19 @@
+
+// ------------------------------------------------------------------------------------------------
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License. See License.txt in the project root for license information.
+// ------------------------------------------------------------------------------------------------
+
+namespace Agent.SalesOrderTaker;
+
+using Microsoft.Warehouse.Activity;
+
+permissionset 4332 "SOA - Read"
+{
+ Caption = 'Sales Order Taker Agent - Read';
+ Assignable = true;
+ IncludedPermissionSets = "SOA - Objects";
+
+ Permissions =
+ tabledata "Warehouse Activity Line" = R;
+}
\ No newline at end of file
diff --git a/Apps/W1/SalesOrderTakingAgent/app/src/Profile/PageCustomizations/SOAContactCard.PageCust.al b/Apps/W1/SalesOrderTakingAgent/app/src/Profile/PageCustomizations/SOAContactCard.PageCust.al
new file mode 100644
index 0000000000..104d9acd1f
--- /dev/null
+++ b/Apps/W1/SalesOrderTakingAgent/app/src/Profile/PageCustomizations/SOAContactCard.PageCust.al
@@ -0,0 +1,123 @@
+// ------------------------------------------------------------------------------------------------
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License. See License.txt in the project root for license information.
+// ------------------------------------------------------------------------------------------------
+
+namespace Agent.SalesOrderTaker;
+
+using Microsoft.CRM.Contact;
+
+pagecustomization "SOA Contact Card" customizes "Contact Card"
+{
+ ClearActions = true;
+ ClearLayout = true;
+
+ layout
+ {
+ modify("No.")
+ {
+ Visible = true;
+ Editable = false;
+ }
+ modify("Name")
+ {
+ Visible = true;
+ }
+ modify("Name 2")
+ {
+ Visible = true;
+ }
+ modify(Type)
+ {
+ Visible = true;
+ }
+ modify("Company No.")
+ {
+ Visible = true;
+ }
+ modify("Company Name")
+ {
+ Visible = true;
+ }
+ modify("Job Title")
+ {
+ Visible = true;
+ }
+ modify("Salutation Code")
+ {
+ Visible = true;
+ }
+ modify(Address)
+ {
+ Visible = true;
+ }
+ modify("Address 2")
+ {
+ Visible = true;
+ }
+ modify("Country/Region Code")
+ {
+ Visible = true;
+ }
+ modify("Post Code")
+ {
+ Visible = true;
+ }
+ modify(City)
+ {
+ Visible = true;
+ }
+ modify("Phone No.")
+ {
+ Visible = true;
+ }
+ modify("Mobile Phone No.")
+ {
+ Visible = true;
+ }
+ modify("E-Mail")
+ {
+ Visible = true;
+ }
+ modify("Fax No.")
+ {
+ Visible = true;
+ }
+ modify("Home Page")
+ {
+ Visible = true;
+ }
+ modify("Correspondence Type")
+ {
+ Visible = true;
+ }
+ }
+
+ actions
+ {
+ modify("Co&mments")
+ {
+ Visible = true;
+ }
+ modify("Co&mments_Promoted")
+ {
+ Visible = true;
+ }
+ modify(SalesQuotes)
+ {
+ Visible = true;
+ }
+ modify(SalesQuotes_Promoted)
+ {
+ Visible = true;
+ }
+ modify(NewSalesQuote)
+ {
+ Visible = true;
+ }
+ modify(NewSalesQuote_Promoted)
+ {
+ Visible = true;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Apps/W1/SalesOrderTakingAgent/app/src/Profile/PageCustomizations/SOAContactList.PageCust.al b/Apps/W1/SalesOrderTakingAgent/app/src/Profile/PageCustomizations/SOAContactList.PageCust.al
new file mode 100644
index 0000000000..d4feac255b
--- /dev/null
+++ b/Apps/W1/SalesOrderTakingAgent/app/src/Profile/PageCustomizations/SOAContactList.PageCust.al
@@ -0,0 +1,83 @@
+// ------------------------------------------------------------------------------------------------
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License. See License.txt in the project root for license information.
+// ------------------------------------------------------------------------------------------------
+
+namespace Agent.SalesOrderTaker;
+
+using Microsoft.CRM.Contact;
+
+pagecustomization "SOA Contact List" customizes "Contact List"
+{
+ ClearActions = true;
+ ClearLayout = true;
+
+ layout
+ {
+ modify("No.")
+ {
+ Visible = true;
+ Editable = false;
+ }
+ modify("Name")
+ {
+ Visible = true;
+ }
+ modify("Name 2")
+ {
+ Visible = true;
+ }
+ modify("Company Name")
+ {
+ Visible = true;
+ }
+ modify("Job Title")
+ {
+ Visible = true;
+ }
+ modify("Country/Region Code")
+ {
+ Visible = true;
+ }
+ modify("Post Code")
+ {
+ Visible = true;
+ }
+ modify("Phone No.")
+ {
+ Visible = true;
+ }
+ modify("Mobile Phone No.")
+ {
+ Visible = true;
+ }
+ modify("E-Mail")
+ {
+ Visible = true;
+ }
+ modify("Fax No.")
+ {
+ Visible = true;
+ }
+ }
+
+ actions
+ {
+ modify("Co&mments")
+ {
+ Visible = true;
+ }
+ modify("Co&mments_Promoted")
+ {
+ Visible = true;
+ }
+ modify(NewSalesQuote)
+ {
+ Visible = true;
+ }
+ modify(NewSalesQuote_Promoted)
+ {
+ Visible = true;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Apps/W1/SalesOrderTakingAgent/app/src/Profile/PageCustomizations/SOACustomerCard.PageCust.al b/Apps/W1/SalesOrderTakingAgent/app/src/Profile/PageCustomizations/SOACustomerCard.PageCust.al
new file mode 100644
index 0000000000..05dab4be06
--- /dev/null
+++ b/Apps/W1/SalesOrderTakingAgent/app/src/Profile/PageCustomizations/SOACustomerCard.PageCust.al
@@ -0,0 +1,140 @@
+// ------------------------------------------------------------------------------------------------
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License. See License.txt in the project root for license information.
+// ------------------------------------------------------------------------------------------------
+
+namespace Agent.SalesOrderTaker;
+
+using Microsoft.Sales.Customer;
+
+pagecustomization "SOA Customer Card" customizes "Customer Card"
+{
+ ClearActions = true;
+ ClearLayout = true;
+
+ layout
+ {
+ modify("No.")
+ {
+ Visible = true;
+ Editable = false;
+ }
+ modify(Name)
+ {
+ Visible = true;
+ }
+ modify("Name 2")
+ {
+ Visible = true;
+ }
+ modify(Blocked)
+ {
+ Visible = true;
+ Editable = false;
+ }
+ modify(Address)
+ {
+ Visible = true;
+ }
+ modify("Address 2")
+ {
+ Visible = true;
+ }
+ modify("Country/Region Code")
+ {
+ Visible = true;
+ }
+ modify(City)
+ {
+ Visible = true;
+ }
+ modify(County)
+ {
+ Visible = true;
+ }
+ modify("Post Code")
+ {
+ Visible = true;
+ }
+ modify("Phone No.")
+ {
+ Visible = true;
+ }
+ modify(MobilePhoneNo)
+ {
+ Visible = true;
+ }
+ modify("E-Mail")
+ {
+ Visible = true;
+ }
+ modify("Fax No.")
+ {
+ Visible = true;
+ }
+ modify("Home Page")
+ {
+ Visible = true;
+ }
+ modify("Primary Contact No.")
+ {
+ Visible = true;
+ }
+ modify(ContactName)
+ {
+ Visible = true;
+ }
+ modify("Bill-to Customer No.")
+ {
+ Visible = true;
+ }
+ modify("Gen. Bus. Posting Group")
+ {
+ Visible = true;
+ }
+ modify("VAT Bus. Posting Group")
+ {
+ Visible = true;
+ }
+ modify("Customer Posting Group")
+ {
+ Visible = true;
+ }
+ modify("Payment Terms Code")
+ {
+ Visible = true;
+ }
+ }
+
+ actions
+ {
+ modify(Contact)
+ {
+ Visible = true;
+ }
+ modify(Contact_Promoted)
+ {
+ Visible = true;
+ }
+ modify(ApplyTemplate)
+ {
+ Visible = true;
+ }
+ modify(ApplyTemplate_Promoted)
+ {
+ Visible = true;
+ }
+ modify(NewSalesQuote)
+ {
+ Visible = true;
+ }
+ modify(NewSalesQuote_Promoted)
+ {
+ Visible = true;
+ }
+ modify(Quotes)
+ {
+ Visible = true;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Apps/W1/SalesOrderTakingAgent/app/src/Profile/PageCustomizations/SOACustomerList.PageCust.al b/Apps/W1/SalesOrderTakingAgent/app/src/Profile/PageCustomizations/SOACustomerList.PageCust.al
new file mode 100644
index 0000000000..fefa0e38a7
--- /dev/null
+++ b/Apps/W1/SalesOrderTakingAgent/app/src/Profile/PageCustomizations/SOACustomerList.PageCust.al
@@ -0,0 +1,97 @@
+// ------------------------------------------------------------------------------------------------
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License. See License.txt in the project root for license information.
+// ------------------------------------------------------------------------------------------------
+
+namespace Agent.SalesOrderTaker;
+
+using Microsoft.Sales.Customer;
+
+pagecustomization "SOA Customer List" customizes "Customer List"
+{
+ ClearActions = true;
+ ClearLayout = true;
+ ClearViews = true;
+
+ layout
+ {
+ modify("No.")
+ {
+ Visible = true;
+ Editable = false;
+ }
+ modify(Name)
+ {
+ Visible = true;
+ }
+ modify("Name 2")
+ {
+ Visible = true;
+ }
+ modify(Blocked)
+ {
+ Visible = true;
+ Editable = false;
+ }
+ modify("Country/Region Code")
+ {
+ Visible = true;
+ }
+ modify("Post Code")
+ {
+ Visible = true;
+ }
+ modify("Phone No.")
+ {
+ Visible = true;
+ }
+ modify("Gen. Bus. Posting Group")
+ {
+ Visible = true;
+ }
+ modify("VAT Bus. Posting Group")
+ {
+ Visible = true;
+ }
+ modify("Customer Posting Group")
+ {
+ Visible = true;
+ }
+ modify("Payment Terms Code")
+ {
+ Visible = true;
+ }
+ addafter(Name)
+ {
+ field("E-Mail"; Rec."E-Mail")
+ {
+ ApplicationArea = All;
+ Caption = 'E-Mail';
+ }
+ }
+ }
+
+ actions
+ {
+ modify(ApplyTemplate)
+ {
+ Visible = true;
+ }
+ modify(ApplyTemplate_Promoted)
+ {
+ Visible = true;
+ }
+ modify(NewSalesQuote)
+ {
+ Visible = true;
+ }
+ modify(NewSalesQuote_Promoted)
+ {
+ Visible = true;
+ }
+ modify(Quotes)
+ {
+ Visible = true;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Apps/W1/SalesOrderTakingAgent/app/src/Profile/PageCustomizations/SOAItemList.PageCust.al b/Apps/W1/SalesOrderTakingAgent/app/src/Profile/PageCustomizations/SOAItemList.PageCust.al
new file mode 100644
index 0000000000..de87c3c68a
--- /dev/null
+++ b/Apps/W1/SalesOrderTakingAgent/app/src/Profile/PageCustomizations/SOAItemList.PageCust.al
@@ -0,0 +1,97 @@
+// ------------------------------------------------------------------------------------------------
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License. See License.txt in the project root for license information.
+// ------------------------------------------------------------------------------------------------
+
+namespace Agent.SalesOrderTaker;
+
+using Microsoft.Inventory.Item;
+
+pagecustomization "SOA Item List" customizes "Item List"
+{
+ ClearActions = true;
+ ClearLayout = true;
+ ClearViews = true;
+
+ layout
+ {
+ modify("No.")
+ {
+ Visible = true;
+ }
+ modify(Description)
+ {
+ Visible = true;
+ }
+ modify("Description 2")
+ {
+ Visible = true;
+ }
+ modify(Type)
+ {
+ Visible = true;
+ }
+ modify("Substitutes Exist")
+ {
+ Visible = true;
+ }
+ modify("Stockkeeping Unit Exists")
+ {
+ Visible = true;
+ }
+ modify("Base Unit of Measure")
+ {
+ Visible = true;
+ }
+ modify("Unit Cost")
+ {
+ Visible = true;
+ }
+ modify("Unit Price")
+ {
+ Visible = true;
+ }
+ modify(InventoryField)
+ {
+ Visible = true;
+ }
+ modify("Inventory Posting Group")
+ {
+ Visible = true;
+ }
+ modify("Gen. Prod. Posting Group")
+ {
+ Visible = true;
+ }
+ modify("VAT Prod. Posting Group")
+ {
+ Visible = true;
+ }
+ modify("Item Disc. Group")
+ {
+ Visible = true;
+ }
+ modify("Item Category Code")
+ {
+ Visible = true;
+ }
+ modify(Blocked)
+ {
+ Visible = true;
+ Editable = false;
+ }
+ modify("Sales Unit of Measure")
+ {
+ Visible = true;
+ }
+ modify("Item Tracking Code")
+ {
+ Visible = true;
+ }
+ }
+
+ actions
+ {
+
+ }
+}
\ No newline at end of file
diff --git a/Apps/W1/SalesOrderTakingAgent/app/src/Profile/PageCustomizations/SOAItemLookup.PageCust.al b/Apps/W1/SalesOrderTakingAgent/app/src/Profile/PageCustomizations/SOAItemLookup.PageCust.al
new file mode 100644
index 0000000000..3401d94591
--- /dev/null
+++ b/Apps/W1/SalesOrderTakingAgent/app/src/Profile/PageCustomizations/SOAItemLookup.PageCust.al
@@ -0,0 +1,68 @@
+// ------------------------------------------------------------------------------------------------
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License. See License.txt in the project root for license information.
+// ------------------------------------------------------------------------------------------------
+
+namespace Agent.SalesOrderTaker;
+
+using Microsoft.Inventory.Item;
+
+pagecustomization "SOA Item Lookup" customizes "Item Lookup"
+{
+ ClearActions = true;
+ ClearLayout = true;
+ ClearViews = true;
+
+ layout
+ {
+ modify("No.")
+ {
+ Visible = true;
+ }
+ modify(Description)
+ {
+ Visible = true;
+ }
+ modify("Base Unit of Measure")
+ {
+ Visible = true;
+ }
+ modify("Unit Cost")
+ {
+ Visible = true;
+ }
+ modify("Unit Price")
+ {
+ Visible = true;
+ }
+ modify(InventoryCtrl)
+ {
+ Visible = true;
+ }
+ modify("Item Category Code")
+ {
+ Visible = true;
+ }
+ modify(Blocked)
+ {
+ Visible = true;
+ Editable = false;
+ }
+ modify("Sales Unit of Measure")
+ {
+ Visible = true;
+ }
+ }
+
+ actions
+ {
+ modify(ItemList)
+ {
+ Visible = true;
+ }
+ modify(ItemList_Promoted)
+ {
+ Visible = true;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Apps/W1/SalesOrderTakingAgent/app/src/Profile/PageCustomizations/SOASalesQuote.PageCust.al b/Apps/W1/SalesOrderTakingAgent/app/src/Profile/PageCustomizations/SOASalesQuote.PageCust.al
new file mode 100644
index 0000000000..5aa0e77679
--- /dev/null
+++ b/Apps/W1/SalesOrderTakingAgent/app/src/Profile/PageCustomizations/SOASalesQuote.PageCust.al
@@ -0,0 +1,185 @@
+// ------------------------------------------------------------------------------------------------
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License. See License.txt in the project root for license information.
+// ------------------------------------------------------------------------------------------------
+
+namespace Agent.SalesOrderTaker;
+
+using Microsoft.Sales.Document;
+
+pagecustomization "SOA Sales Quote" customizes "Sales Quote"
+{
+ ClearActions = true;
+ ClearLayout = true;
+
+ layout
+ {
+ modify("No.")
+ {
+ Visible = true;
+ Editable = false;
+ }
+ modify("Sell-to Customer No.")
+ {
+ Visible = true;
+ }
+ modify("Sell-to Customer Name")
+ {
+ Visible = true;
+ }
+ modify("External Document No.")
+ {
+ Visible = true;
+ }
+ modify("Your Reference")
+ {
+ Visible = true;
+ }
+ modify("Salesperson Code")
+ {
+ Visible = true;
+ }
+ modify("Sell-to Address")
+ {
+ Visible = true;
+ }
+ modify("Sell-to Address 2")
+ {
+ Visible = true;
+ }
+ modify("Sell-to City")
+ {
+ Visible = true;
+ }
+ modify("Sell-to County")
+ {
+ Visible = true;
+ }
+ modify("Sell-to Post Code")
+ {
+ Visible = true;
+ }
+ modify("Sell-to Country/Region Code")
+ {
+ Visible = true;
+ }
+ modify("Sell-to Contact No.")
+ {
+ Visible = true;
+ }
+ modify(SellToPhoneNo)
+ {
+ Visible = true;
+ }
+ modify(SellToMobilePhoneNo)
+ {
+ Visible = true;
+ }
+ modify(SellToEmail)
+ {
+ Visible = true;
+ }
+ modify("Sell-to Contact")
+ {
+ Visible = true;
+ }
+ modify("Order Date")
+ {
+ Visible = true;
+ }
+ modify("Document Date")
+ {
+ Visible = true;
+ }
+ modify("Due Date")
+ {
+ Visible = true;
+ }
+ modify("Requested Delivery Date")
+ {
+ Visible = true;
+ }
+ modify(Status)
+ {
+ Visible = true;
+ }
+ modify("Prices Including VAT")
+ {
+ Visible = true;
+ }
+ modify("Payment Terms Code")
+ {
+ Visible = true;
+ }
+ modify("Tax Liable")
+ {
+ Visible = true;
+ }
+ modify("Tax Area Code")
+ {
+ Visible = true;
+ }
+ modify("Shipment Date")
+ {
+ Visible = true;
+ }
+
+ // parts
+ modify(SalesLines)
+ {
+ Visible = true;
+ }
+ }
+
+ actions
+ {
+ modify(Customer)
+ {
+ Visible = true;
+ }
+ modify(Customer_Promoted)
+ {
+ Visible = true;
+ }
+ modify("C&ontact")
+ {
+ Visible = true;
+ }
+ modify("C&ontact_Promoted")
+ {
+ Visible = true;
+ }
+ modify("Co&mments")
+ {
+ Visible = true;
+ }
+ modify("Co&mments_Promoted")
+ {
+ Visible = true;
+ }
+ modify(DocAttach)
+ {
+ Visible = true;
+ }
+ modify(DocAttach_Promoted)
+ {
+ Visible = true;
+ }
+ modify(MakeOrder)
+ {
+ Visible = true;
+ }
+ modify(MakeOrder_Promoted)
+ {
+ Visible = true;
+ }
+ modify(SendApprovalRequest)
+ {
+ Visible = true;
+ }
+ modify(SendApprovalRequest_Promoted)
+ {
+ Visible = true;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Apps/W1/SalesOrderTakingAgent/app/src/Profile/PageCustomizations/SOASalesQuoteSubform.PageCust.al b/Apps/W1/SalesOrderTakingAgent/app/src/Profile/PageCustomizations/SOASalesQuoteSubform.PageCust.al
new file mode 100644
index 0000000000..448e2eddb9
--- /dev/null
+++ b/Apps/W1/SalesOrderTakingAgent/app/src/Profile/PageCustomizations/SOASalesQuoteSubform.PageCust.al
@@ -0,0 +1,85 @@
+// ------------------------------------------------------------------------------------------------
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License. See License.txt in the project root for license information.
+// ------------------------------------------------------------------------------------------------
+
+namespace Agent.SalesOrderTaker;
+
+using Microsoft.Sales.Document;
+
+pagecustomization "SOA Sales Quote Subform" customizes "Sales Quote Subform"
+{
+ ClearActions = true;
+ ClearLayout = true;
+
+ layout
+ {
+ modify("No.")
+ {
+ Visible = true;
+ }
+ modify("Item Reference No.")
+ {
+ Visible = true;
+ }
+ modify("Variant Code")
+ {
+ Visible = true;
+ }
+ modify("Description")
+ {
+ Visible = true;
+ }
+ modify(Quantity)
+ {
+ Visible = true;
+ }
+ modify("Unit of Measure Code")
+ {
+ Visible = true;
+ }
+ modify("Unit Price")
+ {
+ Visible = true;
+ }
+ modify("Tax Liable")
+ {
+ Visible = true;
+ }
+ modify("Tax Area Code")
+ {
+ Visible = true;
+ }
+ modify("Tax Group Code")
+ {
+ Visible = true;
+ }
+ modify("Line Amount")
+ {
+ Visible = true;
+ }
+
+ // totals
+ modify("Subtotal Excl. VAT")
+ {
+ Visible = true;
+ }
+ modify("Total Amount Excl. VAT")
+ {
+ Visible = true;
+ }
+ modify("Total VAT Amount")
+ {
+ Visible = true;
+ }
+ modify("Total Amount Incl. VAT")
+ {
+ Visible = true;
+ }
+ }
+
+ actions
+ {
+
+ }
+}
\ No newline at end of file
diff --git a/Apps/W1/SalesOrderTakingAgent/app/src/Profile/PageCustomizations/SOASalesQuotes.PageCust.al b/Apps/W1/SalesOrderTakingAgent/app/src/Profile/PageCustomizations/SOASalesQuotes.PageCust.al
new file mode 100644
index 0000000000..f8511a1048
--- /dev/null
+++ b/Apps/W1/SalesOrderTakingAgent/app/src/Profile/PageCustomizations/SOASalesQuotes.PageCust.al
@@ -0,0 +1,111 @@
+// ------------------------------------------------------------------------------------------------
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License. See License.txt in the project root for license information.
+// ------------------------------------------------------------------------------------------------
+
+namespace Agent.SalesOrderTaker;
+
+using Microsoft.Sales.Document;
+
+pagecustomization "SOA Sales Quotes" customizes "Sales Quotes"
+{
+ ClearActions = true;
+ ClearLayout = true;
+ ClearViews = true;
+
+ layout
+ {
+ modify("No.")
+ {
+ Visible = true;
+ }
+ modify("Sell-to Customer No.")
+ {
+ Visible = true;
+ }
+ modify("Sell-to Customer Name")
+ {
+ Visible = true;
+ }
+ modify("External Document No.")
+ {
+ Visible = true;
+ }
+ modify("Your Reference")
+ {
+ Visible = true;
+ }
+ modify("Salesperson Code")
+ {
+ Visible = true;
+ }
+ modify("Sell-to Post Code")
+ {
+ Visible = true;
+ }
+ modify("Sell-to Country/Region Code")
+ {
+ Visible = true;
+ }
+ modify("Sell-to Contact")
+ {
+ Visible = true;
+ }
+ modify("Document Date")
+ {
+ Visible = true;
+ }
+ modify("Due Date")
+ {
+ Visible = true;
+ }
+ modify("Requested Delivery Date")
+ {
+ Visible = true;
+ }
+ modify(Status)
+ {
+ Visible = true;
+ }
+ }
+
+ actions
+ {
+ modify(Customer)
+ {
+ Visible = true;
+ }
+ modify(Customer_Promoted)
+ {
+ Visible = true;
+ }
+ modify("C&ontact")
+ {
+ Visible = true;
+ }
+ modify("C&ontact_Promoted")
+ {
+ Visible = true;
+ }
+ modify("Co&mments")
+ {
+ Visible = true;
+ }
+ modify("Co&mments_Promoted")
+ {
+ Visible = true;
+ }
+ modify(MakeOrder)
+ {
+ Visible = true;
+ }
+ modify(MakeOrder_Promoted)
+ {
+ Visible = true;
+ }
+ modify(SendApprovalRequest)
+ {
+ Visible = true;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Apps/W1/SalesOrderTakingAgent/app/src/Profile/SalesOrderTakerAgent.Profile.al b/Apps/W1/SalesOrderTakingAgent/app/src/Profile/SalesOrderTakerAgent.Profile.al
new file mode 100644
index 0000000000..8c23eb8cfd
--- /dev/null
+++ b/Apps/W1/SalesOrderTakingAgent/app/src/Profile/SalesOrderTakerAgent.Profile.al
@@ -0,0 +1,22 @@
+// ------------------------------------------------------------------------------------------------
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License. See License.txt in the project root for license information.
+// ------------------------------------------------------------------------------------------------
+
+namespace Agent.SalesOrderTaker;
+
+profile "Sales Order Taker Agent"
+{
+ Caption = 'Sales Order Taker Agent';
+ Description = 'Page customizations for Sales Order Taker Agent';
+ RoleCenter = "SOA Role Center";
+ Customizations = "SOA Customer Card",
+ "SOA Customer List",
+ "SOA Item List",
+ "SOA Item Lookup",
+ "SOA Sales Quote",
+ "SOA Sales Quotes",
+ "SOA Sales Quote Subform",
+ "SOA Contact Card",
+ "SOA Contact List";
+}
\ No newline at end of file
diff --git a/Apps/W1/SalesOrderTakingAgent/app/src/RoleCenter/SOARoleCenter.Page.al b/Apps/W1/SalesOrderTakingAgent/app/src/RoleCenter/SOARoleCenter.Page.al
new file mode 100644
index 0000000000..e64a1f3a87
--- /dev/null
+++ b/Apps/W1/SalesOrderTakingAgent/app/src/RoleCenter/SOARoleCenter.Page.al
@@ -0,0 +1,109 @@
+// ------------------------------------------------------------------------------------------------
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License. See License.txt in the project root for license information.
+// ------------------------------------------------------------------------------------------------
+
+namespace Agent.SalesOrderTaker;
+
+using Microsoft.Sales.Document;
+using Microsoft.CRM.Contact;
+using Microsoft.Sales.Customer;
+using Microsoft.Inventory.Item;
+
+page 4313 "SOA Role Center"
+{
+ PageType = RoleCenter;
+ Caption = 'Sales Order Taker Agent';
+
+ layout
+ {
+ area(rolecenter)
+ {
+ }
+ }
+
+ actions
+ {
+ area(embedding)
+ {
+ ToolTip = 'Manage sales processes, view KPIs, and access your favorite items and customers.';
+ action(Items)
+ {
+ ApplicationArea = Basic, Suite;
+ Caption = 'Items';
+ Image = Item;
+ RunObject = Page "Item List";
+ ToolTip = 'View or edit detailed information for the products that you trade in. The item card can be of type Inventory or Service to specify if the item is a physical unit or a labor time unit. Here you also define if items in inventory or on incoming orders are automatically reserved for outbound documents and whether order tracking links are created between demand and supply to reflect planning actions.';
+ }
+ action(Customers)
+ {
+ ApplicationArea = Basic, Suite;
+ Caption = 'Customers';
+ Image = Customer;
+ RunObject = Page "Customer List";
+ ToolTip = 'View or edit detailed information for the customers that you trade with. From each customer card, you can open related information, such as sales statistics and ongoing orders, and you can define special prices and line discounts that you grant if certain conditions are met.';
+ }
+ action(Contacts)
+ {
+ ApplicationArea = Basic, Suite;
+ Caption = 'Contacts';
+ Image = ContactReference;
+ RunObject = Page "Contact List";
+ ToolTip = 'View or edit detailed information for the contacts that you trade with. From each contact card, you can open related information, such as sales statistics and ongoing orders, and you can define special prices and line discounts that you grant if certain conditions are met.';
+ }
+ action(SalesQuotes)
+ {
+ ApplicationArea = Basic, Suite;
+ Caption = 'Sales Quotes';
+ Image = Quote;
+ RunObject = Page "Sales Quotes";
+ ToolTip = 'View or edit the existing Sales Quotes.';
+ }
+ }
+ area(sections)
+ {
+ group(SalesActions)
+ {
+ Caption = 'Sales';
+ Image = Sales;
+ ToolTip = 'Make quotes, orders, and credit memos to customers. Manage customers and view transaction history.';
+
+ action("Sales Quotes")
+ {
+ ApplicationArea = Basic, Suite;
+ Caption = 'Sales Quotes';
+ RunObject = Page "Sales Quotes";
+ ToolTip = 'Make offers to customers to sell certain products on certain delivery and payment terms. While you negotiate with a customer, you can change and resend the sales quote as much as needed. When the customer accepts the offer, you convert the sales quote to a sales invoice or a sales order in which you process the sale.';
+ }
+ action("Sales Orders")
+ {
+ ApplicationArea = Basic, Suite;
+ Caption = 'Sales Orders';
+ RunObject = Page "Sales Order List";
+ ToolTip = 'Record your agreements with customers to sell certain products on certain delivery and payment terms. Sales orders, unlike sales invoices, allow you to ship partially, deliver directly from your vendor to your customer, initiate warehouse handling, and print various customer-facing documents. Sales invoicing is integrated in the sales order process.';
+ }
+ }
+ }
+ area(creation)
+ {
+ action("Sales &Quote")
+ {
+ ApplicationArea = Basic, Suite;
+ Caption = 'Sales &Quote';
+ Image = NewSalesQuote;
+ RunObject = Page "Sales Quote";
+ RunPageMode = Create;
+ ToolTip = 'Create a new sales quote to offer items or services to a customer.';
+ }
+ action("Sales &Order")
+ {
+ ApplicationArea = Basic, Suite;
+ Caption = 'Sales &Order';
+ Image = Document;
+ RunObject = Page "Sales Order";
+ RunPageMode = Create;
+ ToolTip = 'Create a new sales order for items or services.';
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Apps/W1/Shopify/app/src/Base/Enums/ShpfyReturnLocationPriority.Enum.al b/Apps/W1/Shopify/app/src/Base/Enums/ShpfyReturnLocationPriority.Enum.al
new file mode 100644
index 0000000000..06e112299d
--- /dev/null
+++ b/Apps/W1/Shopify/app/src/Base/Enums/ShpfyReturnLocationPriority.Enum.al
@@ -0,0 +1,16 @@
+namespace Microsoft.Integration.Shopify;
+
+enum 30162 "Shpfy Return Location Priority"
+{
+ Access = Public;
+ Extensible = false;
+
+ value(0; "Default Return Location")
+ {
+ Caption = 'Default Return Location';
+ }
+ value(1; "Original -> Default Location")
+ {
+ Caption = 'Original -> Default Location';
+ }
+}
\ No newline at end of file
diff --git a/Apps/W1/Shopify/app/src/Base/Pages/ShpfyShopCard.Page.al b/Apps/W1/Shopify/app/src/Base/Pages/ShpfyShopCard.Page.al
index 18fa93e076..3c71c716ed 100644
--- a/Apps/W1/Shopify/app/src/Base/Pages/ShpfyShopCard.Page.al
+++ b/Apps/W1/Shopify/app/src/Base/Pages/ShpfyShopCard.Page.al
@@ -540,6 +540,12 @@ page 30101 "Shpfy Shop Card"
ShowCaption = false;
Visible = IsReturnRefundsVisible;
+ field("Return Location Priority"; Rec."Return Location Priority")
+ {
+ ApplicationArea = All;
+ Caption = 'Return Location Priority';
+ ToolTip = 'Specifies the priority of the return location.';
+ }
field("Location Code of Returns"; Rec."Return Location")
{
ApplicationArea = All;
diff --git a/Apps/W1/Shopify/app/src/Base/Tables/ShpfyShop.Table.al b/Apps/W1/Shopify/app/src/Base/Tables/ShpfyShop.Table.al
index d521572415..05bf12e5ad 100644
--- a/Apps/W1/Shopify/app/src/Base/Tables/ShpfyShop.Table.al
+++ b/Apps/W1/Shopify/app/src/Base/Tables/ShpfyShop.Table.al
@@ -233,8 +233,8 @@ table 30102 "Shpfy Shop"
ObsoleteState = Pending;
ObsoleteTag = '24.0';
#else
- ObsoleteState = Removed;
- ObsoleteTag = '27.0';
+ ObsoleteState = Removed;
+ ObsoleteTag = '27.0';
#endif
}
field(30; "Shopify Can Update Customer"; Boolean)
@@ -511,7 +511,7 @@ table 30102 "Shpfy Shop"
}
field(73; "Return Location"; Code[10])
{
- Caption = 'Return Location';
+ Caption = 'Default Return Location';
DataClassification = CustomerContent;
TableRelation = Location where("Use As In-Transit" = const(false));
}
@@ -778,6 +778,11 @@ table 30102 "Shpfy Shop"
end;
#endif
}
+ field(128; "Return Location Priority"; Enum "Shpfy Return Location Priority")
+ {
+ Caption = 'Return Location Priority';
+ DataClassification = CustomerContent;
+ }
field(200; "Shop Id"; Integer)
{
DataClassification = SystemMetadata;
diff --git a/Apps/W1/Shopify/app/src/GraphQL/Codeunits/ShpfyGQLFFOrdersFromOrder.Codeunit.al b/Apps/W1/Shopify/app/src/GraphQL/Codeunits/ShpfyGQLFFOrdersFromOrder.Codeunit.al
index 0d64623eda..9679ddbb71 100644
--- a/Apps/W1/Shopify/app/src/GraphQL/Codeunits/ShpfyGQLFFOrdersFromOrder.Codeunit.al
+++ b/Apps/W1/Shopify/app/src/GraphQL/Codeunits/ShpfyGQLFFOrdersFromOrder.Codeunit.al
@@ -10,7 +10,7 @@ codeunit 30267 "Shpfy GQL FFOrdersFromOrder" implements "Shpfy IGraphQL"
/// Return value of type Text.
internal procedure GetGraphQL(): Text
begin
- exit('{"query":"{order(id: \"gid:\/\/shopify\/Order\/{{OrderId}}\") { legacyResourceId fulfillmentOrders(first: 25, query:\"-status:closed\") { pageInfo { hasNextPage } edges { cursor node { id updatedAt status assignedLocation {location {legacyResourceId}} order {legacyResourceId} deliveryMethod {methodType}}}}}}"}');
+ exit('{"query":"{order(id: \"gid:\/\/shopify\/Order\/{{OrderId}}\") { legacyResourceId fulfillmentOrders(first: 25) { pageInfo { hasNextPage } edges { cursor node { id updatedAt status assignedLocation {location {legacyResourceId}} order {legacyResourceId} deliveryMethod {methodType}}}}}}"}');
end;
///
diff --git a/Apps/W1/Shopify/app/src/GraphQL/Codeunits/ShpfyGQLNextFFOrdersFromOrd.Codeunit.al b/Apps/W1/Shopify/app/src/GraphQL/Codeunits/ShpfyGQLNextFFOrdersFromOrd.Codeunit.al
index 9757e81dd0..2e887d20df 100644
--- a/Apps/W1/Shopify/app/src/GraphQL/Codeunits/ShpfyGQLNextFFOrdersFromOrd.Codeunit.al
+++ b/Apps/W1/Shopify/app/src/GraphQL/Codeunits/ShpfyGQLNextFFOrdersFromOrd.Codeunit.al
@@ -10,7 +10,7 @@ codeunit 30268 "Shpfy GQL NextFFOrdersFromOrd" implements "Shpfy IGraphQL"
/// Return value of type Text.
internal procedure GetGraphQL(): Text
begin
- exit('{"query":"{order(id: \"gid:\/\/shopify\/Order\/{{OrderId}}\") { legacyResourceId fulfillmentOrders(first: 25, after:\"{{After}}\", query:\"-status:closed\") { pageInfo { hasNextPage } edges { cursor node { id updatedAt assignedLocation {location {legacyResourceId}} order {legacyResourceId} deliveryMethod {methodType}}}}}}"}');
+ exit('{"query":"{order(id: \"gid:\/\/shopify\/Order\/{{OrderId}}\") { legacyResourceId fulfillmentOrders(first: 25, after:\"{{After}}\") { pageInfo { hasNextPage } edges { cursor node { id updatedAt status assignedLocation {location {legacyResourceId}} order {legacyResourceId} deliveryMethod {methodType}}}}}}"}');
end;
///
diff --git a/Apps/W1/Shopify/app/src/GraphQL/Codeunits/ShpfyGQLNextRefundLines.Codeunit.al b/Apps/W1/Shopify/app/src/GraphQL/Codeunits/ShpfyGQLNextRefundLines.Codeunit.al
index 69a0ca1fd1..426d81629f 100644
--- a/Apps/W1/Shopify/app/src/GraphQL/Codeunits/ShpfyGQLNextRefundLines.Codeunit.al
+++ b/Apps/W1/Shopify/app/src/GraphQL/Codeunits/ShpfyGQLNextRefundLines.Codeunit.al
@@ -5,7 +5,7 @@ codeunit 30232 "Shpfy GQL NextRefundLines" implements "Shpfy IGraphQL"
internal procedure GetGraphQL(): Text
begin
- exit('{"query":"{ refund(id: \"gid://shopify/Refund/{{RefundId}}\") { refundLineItems(first: 10, after:\"{{After}}\") { pageInfo { endCursor hasNextPage } nodes { lineItem { id } quantity restockType restocked priceSet { presentmentMoney { amount } shopMoney { amount }} subtotalSet { presentmentMoney { amount } shopMoney { amount }} totalTaxSet { presentmentMoney { amount } shopMoney { amount }}}}}}"}');
+ exit('{"query":"{ refund(id: \"gid://shopify/Refund/{{RefundId}}\") { refundLineItems(first: 10, after:\"{{After}}\") { pageInfo { endCursor hasNextPage } nodes { lineItem { id } quantity restockType location { legacyResourceId } restocked priceSet { presentmentMoney { amount } shopMoney { amount }} subtotalSet { presentmentMoney { amount } shopMoney { amount }} totalTaxSet { presentmentMoney { amount } shopMoney { amount }}}}}}"}');
end;
internal procedure GetExpectedCost(): Integer
diff --git a/Apps/W1/Shopify/app/src/GraphQL/Codeunits/ShpfyGQLNextRevFulfillOrdLns.Codeunit.al b/Apps/W1/Shopify/app/src/GraphQL/Codeunits/ShpfyGQLNextRevFulfillOrdLns.Codeunit.al
new file mode 100644
index 0000000000..a5e508b6a2
--- /dev/null
+++ b/Apps/W1/Shopify/app/src/GraphQL/Codeunits/ShpfyGQLNextRevFulfillOrdLns.Codeunit.al
@@ -0,0 +1,27 @@
+namespace Microsoft.Integration.Shopify;
+
+///
+/// Codeunit Shpfy GQL NextRevFulfillOrdLns (ID 30349) implements Interface Shpfy IGraphQL.
+///
+codeunit 30349 "Shpfy GQL NextRevFulfillOrdLns" implements "Shpfy IGraphQL"
+{
+ Access = Internal;
+
+ ///
+ /// GetGraphQL.
+ ///
+ /// Return value of type Text.
+ internal procedure GetGraphQL(): Text
+ begin
+ exit('{"query":"{ reverseFulfillmentOrder(id: \"{{FulfillOrderId}}\") { lineItems(first: 10, after:\"{{After}}\") { pageInfo { endCursor hasNextPage } nodes { id fulfillmentLineItem { id lineItem { id name } } dispositions { id quantity type location { id legacyResourceId } } } } } }"}');
+ end;
+
+ ///
+ /// GetExpectedCost.
+ ///
+ /// Return value of type Integer.
+ internal procedure GetExpectedCost(): Integer
+ begin
+ exit(15);
+ end;
+}
diff --git a/Apps/W1/Shopify/app/src/GraphQL/Codeunits/ShpfyGQLNextRevFulfillOrders.Codeunit.al b/Apps/W1/Shopify/app/src/GraphQL/Codeunits/ShpfyGQLNextRevFulfillOrders.Codeunit.al
new file mode 100644
index 0000000000..126f0ffab7
--- /dev/null
+++ b/Apps/W1/Shopify/app/src/GraphQL/Codeunits/ShpfyGQLNextRevFulfillOrders.Codeunit.al
@@ -0,0 +1,28 @@
+namespace Microsoft.Integration.Shopify;
+
+///
+/// Codeunit Shpfy GQL NextRevFulfillOrders (ID 30347) implements Interface Shpfy IGraphQL.
+///
+codeunit 30347 "Shpfy GQL NextRevFulfillOrders" implements "Shpfy IGraphQL"
+{
+ Access = Internal;
+
+ ///
+ /// GetGraphQL.
+ ///
+ /// Return value of type Text.
+ internal procedure GetGraphQL(): Text
+ begin
+ exit('{"query":"{ return(id: \"gid://shopify/Return/{{ReturnId}}\") { reverseFulfillmentOrders(first: 10, after:\"{{After}}\") { pageInfo { endCursor hasNextPage } nodes { id } } } }"}');
+
+ end;
+
+ ///
+ /// GetExpectedCost.
+ ///
+ /// Return value of type Integer.
+ internal procedure GetExpectedCost(): Integer
+ begin
+ exit(7);
+ end;
+}
diff --git a/Apps/W1/Shopify/app/src/GraphQL/Codeunits/ShpfyGQLOrderTransactions.Codeunit.al b/Apps/W1/Shopify/app/src/GraphQL/Codeunits/ShpfyGQLOrderTransactions.Codeunit.al
new file mode 100644
index 0000000000..e48d7b6b0d
--- /dev/null
+++ b/Apps/W1/Shopify/app/src/GraphQL/Codeunits/ShpfyGQLOrderTransactions.Codeunit.al
@@ -0,0 +1,27 @@
+namespace Microsoft.Integration.Shopify;
+
+///
+/// Codeunit Shpfy GQL OrderTransactions (ID 30312) implements Interface Shpfy IGraphQL.
+///
+codeunit 30312 "Shpfy GQL OrderTransactions" implements "Shpfy IGraphQL"
+{
+ Access = Internal;
+
+ ///
+ /// GetGraphQL.
+ ///
+ /// Return value of type Text.
+ internal procedure GetGraphQL(): Text
+ begin
+ exit('{"query":"{ order(id: \"gid://shopify/Order/{{OrderId}}\") { transactions { authorizationCode createdAt errorCode formattedGateway gateway id kind paymentId receiptJson status test amountSet { presentmentMoney { amount currencyCode } shopMoney { amount currencyCode }} paymentDetails { ... on CardPaymentDetails { avsResultCode bin cvvResultCode number company }}}}}"}');
+ end;
+
+ ///
+ /// GetExpectedCost.
+ ///
+ /// Return value of type Integer.
+ internal procedure GetExpectedCost(): Integer
+ begin
+ exit(3);
+ end;
+}
diff --git a/Apps/W1/Shopify/app/src/GraphQL/Codeunits/ShpfyGQLRefundLines.Codeunit.al b/Apps/W1/Shopify/app/src/GraphQL/Codeunits/ShpfyGQLRefundLines.Codeunit.al
index bb11635ff8..29649cb17f 100644
--- a/Apps/W1/Shopify/app/src/GraphQL/Codeunits/ShpfyGQLRefundLines.Codeunit.al
+++ b/Apps/W1/Shopify/app/src/GraphQL/Codeunits/ShpfyGQLRefundLines.Codeunit.al
@@ -5,7 +5,7 @@ codeunit 30230 "Shpfy GQL RefundLines" implements "Shpfy IGraphQL"
internal procedure GetGraphQL(): Text
begin
- exit('{"query":"{ refund(id: \"gid://shopify/Refund/{{RefundId}}\") { refundLineItems(first: 10) { pageInfo { endCursor hasNextPage } nodes { lineItem { id } quantity restockType restocked priceSet { presentmentMoney { amount } shopMoney { amount }} subtotalSet { presentmentMoney { amount } shopMoney { amount }} totalTaxSet { presentmentMoney { amount } shopMoney { amount }}}}}}"}');
+ exit('{"query":"{ refund(id: \"gid://shopify/Refund/{{RefundId}}\") { refundLineItems(first: 10) { pageInfo { endCursor hasNextPage } nodes { lineItem { id } quantity restockType location { legacyResourceId } restocked priceSet { presentmentMoney { amount } shopMoney { amount }} subtotalSet { presentmentMoney { amount } shopMoney { amount }} totalTaxSet { presentmentMoney { amount } shopMoney { amount }}}}}}"}');
end;
internal procedure GetExpectedCost(): Integer
diff --git a/Apps/W1/Shopify/app/src/GraphQL/Codeunits/ShpfyGQLRevFulfillOrderLines.Codeunit.al b/Apps/W1/Shopify/app/src/GraphQL/Codeunits/ShpfyGQLRevFulfillOrderLines.Codeunit.al
new file mode 100644
index 0000000000..f4e6ac63e5
--- /dev/null
+++ b/Apps/W1/Shopify/app/src/GraphQL/Codeunits/ShpfyGQLRevFulfillOrderLines.Codeunit.al
@@ -0,0 +1,27 @@
+namespace Microsoft.Integration.Shopify;
+
+///
+/// Codeunit Shpfy GQL RevFulfillOrderLines (ID 30348) implements Interface Shpfy IGraphQL.
+///
+codeunit 30348 "Shpfy GQL RevFulfillOrderLines" implements "Shpfy IGraphQL"
+{
+ Access = Internal;
+
+ ///
+ /// GetGraphQL.
+ ///
+ /// Return value of type Text.
+ internal procedure GetGraphQL(): Text
+ begin
+ exit('{"query":"{ reverseFulfillmentOrder(id: \"{{FulfillOrderId}}\") { id lineItems(first: 10) { nodes { id fulfillmentLineItem { id lineItem { id name } } dispositions { id quantity type location { id legacyResourceId } } } } } }"}');
+ end;
+
+ ///
+ /// GetExpectedCost.
+ ///
+ /// Return value of type Integer.
+ internal procedure GetExpectedCost(): Integer
+ begin
+ exit(15);
+ end;
+}
diff --git a/Apps/W1/Shopify/app/src/GraphQL/Codeunits/ShpfyGQLRevFulfillOrders.Codeunit.al b/Apps/W1/Shopify/app/src/GraphQL/Codeunits/ShpfyGQLRevFulfillOrders.Codeunit.al
new file mode 100644
index 0000000000..29dd45361e
--- /dev/null
+++ b/Apps/W1/Shopify/app/src/GraphQL/Codeunits/ShpfyGQLRevFulfillOrders.Codeunit.al
@@ -0,0 +1,28 @@
+namespace Microsoft.Integration.Shopify;
+
+///
+/// Codeunit Shpfy GQL RevFulfillOrders (ID 30346) implements Interface Shpfy IGraphQL.
+///
+codeunit 30346 "Shpfy GQL RevFulfillOrders" implements "Shpfy IGraphQL"
+{
+ Access = Internal;
+
+ ///
+ /// GetGraphQL.
+ ///
+ /// Return value of type Text.
+ internal procedure GetGraphQL(): Text
+ begin
+ exit('{"query":"{ return(id: \"gid://shopify/Return/{{ReturnId}}\") { reverseFulfillmentOrders(first: 10) { pageInfo { endCursor hasNextPage } nodes { id } } } }"}');
+
+ end;
+
+ ///
+ /// GetExpectedCost.
+ ///
+ /// Return value of type Integer.
+ internal procedure GetExpectedCost(): Integer
+ begin
+ exit(7);
+ end;
+}
diff --git a/Apps/W1/Shopify/app/src/GraphQL/Enums/ShpfyGraphQLType.Enum.al b/Apps/W1/Shopify/app/src/GraphQL/Enums/ShpfyGraphQLType.Enum.al
index 4315a4f5e6..031d9283ae 100644
--- a/Apps/W1/Shopify/app/src/GraphQL/Enums/ShpfyGraphQLType.Enum.al
+++ b/Apps/W1/Shopify/app/src/GraphQL/Enums/ShpfyGraphQLType.Enum.al
@@ -400,4 +400,29 @@ enum 30111 "Shpfy GraphQL Type" implements "Shpfy IGraphQL"
Caption = 'Get Next Catalog Products';
Implementation = "Shpfy IGraphQL" = "Shpfy GQL NextCatalogProducts";
}
+ value(78; GetOrderTransactions)
+ {
+ Caption = 'Get Order Transactions';
+ Implementation = "Shpfy IGraphQL" = "Shpfy GQL OrderTransactions";
+ }
+ value(87; GetReverseFulfillmentOrders)
+ {
+ Caption = 'Get Reverse Fulfillment Orders';
+ Implementation = "Shpfy IGraphQL" = "Shpfy GQL RevFulfillOrders";
+ }
+ value(88; GetNextReverseFulfillmentOrders)
+ {
+ Caption = 'Get Next Reverse Fulfillment Orders';
+ Implementation = "Shpfy IGraphQL" = "Shpfy GQL NextRevFulfillOrders";
+ }
+ value(89; GetReverseFulfillmentOrderLines)
+ {
+ Caption = 'Get Reverse Fulfillment Order Lines';
+ Implementation = "Shpfy IGraphQL" = "Shpfy GQL RevFulfillOrderLines";
+ }
+ value(90; GetNextReverseFulfillmentOrderLines)
+ {
+ Caption = 'Get Next Reverse Fulfillment Order Lines';
+ Implementation = "Shpfy IGraphQL" = "Shpfy GQL NextRevFulfillOrdLns";
+ }
}
diff --git a/Apps/W1/Shopify/app/src/Order Fulfillments/Codeunits/ShpfyFulfillmentOrdersAPI.Codeunit.al b/Apps/W1/Shopify/app/src/Order Fulfillments/Codeunits/ShpfyFulfillmentOrdersAPI.Codeunit.al
index 2dae5f1e26..0e570c6b50 100644
--- a/Apps/W1/Shopify/app/src/Order Fulfillments/Codeunits/ShpfyFulfillmentOrdersAPI.Codeunit.al
+++ b/Apps/W1/Shopify/app/src/Order Fulfillments/Codeunits/ShpfyFulfillmentOrdersAPI.Codeunit.al
@@ -168,6 +168,7 @@ codeunit 30238 "Shpfy Fulfillment Orders API"
FulfillmentOrderLine."Shopify Variant Id" := JsonHelper.GetValueAsBigInteger(JNode, 'lineItem.variant.legacyResourceId');
FulfillmentOrderLine."Total Quantity" := JsonHelper.GetValueAsDecimal(JNode, 'totalQuantity');
FulfillmentOrderLine."Remaining Quantity" := JsonHelper.GetValueAsDecimal(JNode, 'remainingQuantity');
+ FulfillmentOrderLine."Fulfillment Status" := FulfillmentOrderHeader.Status;
FulfillmentOrderLine.Insert();
end else begin
Modified := false;
diff --git a/Apps/W1/Shopify/app/src/Order Fulfillments/Tables/ShpfyFulFillmentOrderLine.Table.al b/Apps/W1/Shopify/app/src/Order Fulfillments/Tables/ShpfyFulFillmentOrderLine.Table.al
index 23f4136743..0857dfb0d2 100644
--- a/Apps/W1/Shopify/app/src/Order Fulfillments/Tables/ShpfyFulFillmentOrderLine.Table.al
+++ b/Apps/W1/Shopify/app/src/Order Fulfillments/Tables/ShpfyFulFillmentOrderLine.Table.al
@@ -58,6 +58,10 @@ table 30144 "Shpfy FulFillment Order Line"
DataClassification = SystemMetadata;
Editable = false;
}
+ field(11; "Fulfillment Status"; Text[50])
+ {
+ DataClassification = CustomerContent;
+ }
}
keys
{
diff --git a/Apps/W1/Shopify/app/src/Order Refunds/Codeunits/ShpfyRefundsAPI.Codeunit.al b/Apps/W1/Shopify/app/src/Order Refunds/Codeunits/ShpfyRefundsAPI.Codeunit.al
index 97cd67b4f4..6b5b9e943c 100644
--- a/Apps/W1/Shopify/app/src/Order Refunds/Codeunits/ShpfyRefundsAPI.Codeunit.al
+++ b/Apps/W1/Shopify/app/src/Order Refunds/Codeunits/ShpfyRefundsAPI.Codeunit.al
@@ -31,11 +31,14 @@ codeunit 30228 "Shpfy Refunds API"
RefundHeader: Record "Shpfy Refund Header";
GraphQLType: Enum "Shpfy GraphQL Type";
Parameters: Dictionary of [text, Text];
+ ReturnLocations: Dictionary of [BigInteger, BigInteger];
JResponse: JsonToken;
JLines: JsonArray;
JLine: JsonToken;
begin
GetRefundHeader(RefundId, UpdatedAt, RefundHeader);
+ ReturnLocations := CollectReturnLocations(RefundHeader."Return Id");
+
Parameters.Add('RefundId', Format(RefundId));
GraphQLType := "Shpfy GraphQL Type"::GetRefundLines;
repeat
@@ -46,8 +49,9 @@ codeunit 30228 "Shpfy Refunds API"
Parameters.Set('After', JsonHelper.GetValueAsText(JResponse, 'data.refund.refundLineItems.pageInfo.endCursor'))
else
Parameters.Add('After', JsonHelper.GetValueAsText(JResponse, 'data.refund.refundLineItems.pageInfo.endCursor'));
+
foreach JLine in JLines do
- FillInRefundLine(RefundId, JLine.AsObject(), RefundHeader."Total Refunded Amount" > 0);
+ FillInRefundLine(RefundId, JLine.AsObject(), IsNonZeroOrReturnRefund(RefundHeader), ReturnLocations);
until not JsonHelper.GetValueAsBoolean(JResponse, 'data.refund.refundLineItems.pageInfo.hasNextPage');
end;
@@ -88,21 +92,34 @@ codeunit 30228 "Shpfy Refunds API"
DataCapture.Add(Database::"Shpfy Refund Header", RefundHeader.SystemId, JResponse);
end;
- local procedure FillInRefundLine(RefundId: BigInteger; JLine: JsonObject; NonZeroRefund: Boolean)
+
+ local procedure CollectReturnLocations(ReturnId: BigInteger): Dictionary of [BigInteger, BigInteger]
+ var
+ ReturnsAPI: Codeunit "Shpfy Returns API";
+ begin
+ if ReturnId <> 0 then
+ exit(ReturnsAPI.GetReturnLocations(ReturnId));
+ end;
+
+ local procedure FillInRefundLine(RefundId: BigInteger; JLine: JsonObject; NonZeroOrReturnRefund: Boolean; ReturnLocations: Dictionary of [BigInteger, BigInteger])
var
DataCapture: Record "Shpfy Data Capture";
RefundLine: Record "Shpfy Refund Line";
RefundLineRecordRef: RecordRef;
Id: BigInteger;
+ ReturnLocation: BigInteger;
begin
Id := CommunicationMgt.GetIdOfGId(JsonHelper.GetValueAsText(JLine, 'lineItem.id'));
+
if not RefundLine.Get(RefundId, Id) then begin
RefundLine."Refund Line Id" := Id;
RefundLine."Refund Id" := RefundId;
RefundLine."Order Line Id" := Id;
RefundLine.Insert();
end;
+
RefundLine."Restock Type" := RefundEnumConvertor.ConvertToReStockType(JsonHelper.GetValueAsText(JLine, 'restockType'));
+
RefundLineRecordRef.GetTable(RefundLine);
JsonHelper.GetValueIntoField(JLine, 'quantity', RefundLineRecordRef, RefundLine.FieldNo(Quantity));
JsonHelper.GetValueIntoField(JLine, 'restocked', RefundLineRecordRef, RefundLine.FieldNo(Restocked));
@@ -113,9 +130,23 @@ codeunit 30228 "Shpfy Refunds API"
JsonHelper.GetValueIntoField(JLine, 'totalTaxSet.shopMoney.amount', RefundLineRecordRef, RefundLine.FieldNo("Total Tax Amount"));
JsonHelper.GetValueIntoField(JLine, 'totalTaxSet.presentmentMoney.amount', RefundLineRecordRef, RefundLine.FieldNo("Presentment Total Tax Amount"));
RefundLineRecordRef.SetTable(RefundLine);
- RefundLine."Can Create Credit Memo" := NonZeroRefund;
+
+ RefundLine."Can Create Credit Memo" := NonZeroOrReturnRefund;
+ RefundLine."Location Id" := JsonHelper.GetValueAsBigInteger(JLine, 'location.legacyResourceId');
+
+ // If refund was created from a return, the location needs to come from the return
+ // If Item was restocked to multiple locations, the return location is not known
+ if (RefundLine."Location Id" = 0) and (ReturnLocations.Get(RefundLine."Order Line Id", ReturnLocation)) then
+ RefundLine."Location Id" := ReturnLocation;
+
RefundLine.Modify();
+
RefundLineRecordRef.Close();
DataCapture.Add(Database::"Shpfy Refund Line", RefundLine.SystemId, JLine);
end;
+
+ internal procedure IsNonZeroOrReturnRefund(RefundHeader: Record "Shpfy Refund Header"): Boolean
+ begin
+ exit((RefundHeader."Return Id" > 0) or (RefundHeader."Total Refunded Amount" > 0));
+ end;
}
\ No newline at end of file
diff --git a/Apps/W1/Shopify/app/src/Order Refunds/Tables/ShpfyRefundLine.Table.al b/Apps/W1/Shopify/app/src/Order Refunds/Tables/ShpfyRefundLine.Table.al
index 65d2030dfc..59248c70da 100644
--- a/Apps/W1/Shopify/app/src/Order Refunds/Tables/ShpfyRefundLine.Table.al
+++ b/Apps/W1/Shopify/app/src/Order Refunds/Tables/ShpfyRefundLine.Table.al
@@ -115,6 +115,12 @@ table 30145 "Shpfy Refund Line"
CalcFormula = lookup("Shpfy Order Line"."Gift Card" where("Line Id" = field("Order Line Id")));
Editable = false;
}
+ field(105; "Location Id"; BigInteger)
+ {
+ Caption = 'Location Id';
+ DataClassification = SystemMetadata;
+ Editable = false;
+ }
}
keys
{
diff --git a/Apps/W1/Shopify/app/src/Order Return Refund Processing/Codeunits/ShpfyCreateSalesDocRefund.Codeunit.al b/Apps/W1/Shopify/app/src/Order Return Refund Processing/Codeunits/ShpfyCreateSalesDocRefund.Codeunit.al
index 4c05820e44..8d2a888d1c 100644
--- a/Apps/W1/Shopify/app/src/Order Return Refund Processing/Codeunits/ShpfyCreateSalesDocRefund.Codeunit.al
+++ b/Apps/W1/Shopify/app/src/Order Return Refund Processing/Codeunits/ShpfyCreateSalesDocRefund.Codeunit.al
@@ -111,7 +111,6 @@ codeunit 30246 "Shpfy Create Sales Doc. Refund"
SalesHeader.Validate("Document Date", DT2Date(RefundHeader."Created At"));
if OrderMgt.FindTaxArea(OrderHeader, ShopifyTaxArea) and (ShopifyTaxArea."Tax Area Code" <> '') then
SalesHeader.Validate("Tax Area Code", ShopifyTaxArea."Tax Area Code");
- SalesHeader.Validate("Location Code", Shop."Return Location");
end;
SalesHeader."Shpfy Refund Id" := RefundHeader."Refund Id";
SalesHeader.Modify(true);
@@ -143,6 +142,7 @@ codeunit 30246 "Shpfy Create Sales Doc. Refund"
RefundLine: Record "Shpfy Refund Line";
ReturnLine: Record "Shpfy Return Line";
GiftCard: Record "Shpfy Gift Card";
+ ShopLocation: Record "Shpfy Shop Location";
LineNo: Integer;
OpenAmount: Decimal;
IsHandled: Boolean;
@@ -181,7 +181,13 @@ codeunit 30246 "Shpfy Create Sales Doc. Refund"
SalesLine.Validate("No.", RefundLine."Item No.");
if RefundLine."Variant Code" <> '' then
SalesLine.Validate("Variant Code", RefundLine."Variant Code");
- SalesLine.Validate("Location Code", Shop."Return Location");
+
+ if ShopLocation.Get(Shop.Code, RefundLine."Location Id") then
+ SalesLine.Validate("Location Code", ShopLocation."Default Location Code");
+
+ If (Shop."Return Location Priority" = "Shpfy Return Location Priority"::"Default Return Location") or (SalesLine."Location Code" = '') then
+ SalesLine.Validate("Location Code", Shop."Return Location");
+
end;
SalesLine.Validate(Quantity, RefundLine.Quantity);
SalesLine.Validate("Unit Price", RefundLine.Amount);
@@ -233,7 +239,13 @@ codeunit 30246 "Shpfy Create Sales Doc. Refund"
SalesLine.Validate("No.", ReturnLine."Item No.");
if ReturnLine."Variant Code" <> '' then
SalesLine.Validate("Variant Code", ReturnLine."Variant Code");
- SalesLine.Validate("Location Code", Shop."Return Location");
+
+ if ShopLocation.Get(Shop.Code, ReturnLine."Location Id") then
+ SalesLine.Validate("Location Code", ShopLocation."Default Location Code");
+
+ If (Shop."Return Location Priority" = "Shpfy Return Location Priority"::"Default Return Location") or (SalesLine."Location Code" = '') then
+ SalesLine.Validate("Location Code", Shop."Return Location");
+
SalesLine.Validate(Quantity, ReturnLine.Quantity);
SalesLine.Validate("Unit Price", ReturnLine."Discounted Total Amount" / ReturnLine.Quantity);
end;
diff --git a/Apps/W1/Shopify/app/src/Order Returns/Codeunits/ShpfyReturnsAPI.Codeunit.al b/Apps/W1/Shopify/app/src/Order Returns/Codeunits/ShpfyReturnsAPI.Codeunit.al
index 688a377c28..5de1dc01bb 100644
--- a/Apps/W1/Shopify/app/src/Order Returns/Codeunits/ShpfyReturnsAPI.Codeunit.al
+++ b/Apps/W1/Shopify/app/src/Order Returns/Codeunits/ShpfyReturnsAPI.Codeunit.al
@@ -32,23 +32,26 @@ codeunit 30250 "Shpfy Returns API"
var
GraphQLType: Enum "Shpfy GraphQL Type";
LineParameters: Dictionary of [text, Text];
+ ReturnLocations: Dictionary of [BigInteger, BigInteger];
JResponse: JsonToken;
JLines: JsonArray;
JLine: JsonToken;
begin
GetReturnHeader(ReturnId);
+ ReturnLocations := GetReturnLocations(ReturnId);
+
LineParameters.Add('ReturnId', Format(ReturnId));
GraphQLType := "Shpfy GraphQL Type"::GetReturnLines;
repeat
JResponse := CommunicationMgt.ExecuteGraphQL(GraphQLType, LineParameters);
GraphQLType := "Shpfy GraphQL Type"::GetNextReturnLines;
JLines := JsonHelper.GetJsonArray(JResponse, 'data.return.returnLineItems.nodes');
- if Parameters.ContainsKey('After') then
- Parameters.Set('After', JsonHelper.GetValueAsText(JResponse, 'data.return.returnLineItems.pageInfo.endCursor'))
+ if LineParameters.ContainsKey('After') then
+ LineParameters.Set('After', JsonHelper.GetValueAsText(JResponse, 'data.return.returnLineItems.pageInfo.endCursor'))
else
- Parameters.Add('After', JsonHelper.GetValueAsText(JResponse, 'data.return.returnLineItems.pageInfo.endCursor'));
+ LineParameters.Add('After', JsonHelper.GetValueAsText(JResponse, 'data.return.returnLineItems.pageInfo.endCursor'));
foreach JLine in JLines do
- FillInReturnLine(ReturnId, JLine.AsObject());
+ FillInReturnLine(ReturnId, JLine.AsObject(), ReturnLocations);
until not JsonHelper.GetValueAsBoolean(JResponse, 'data.return.returnLineItems.pageInfo.hasNextPage');
end;
@@ -81,12 +84,96 @@ codeunit 30250 "Shpfy Returns API"
DataCapture.Add(Database::"Shpfy Return Header", ReturnHeader.SystemId, JResponse);
end;
- local procedure FillInReturnLine(ReturnId: BigInteger; JLine: JsonObject)
+ ///
+ /// Get the return locations for return lines.
+ ///
+ /// Id of the return.
+ ///
+ /// If item was restocked to multiple locations, we cannot determine the return location for the return line,
+ /// and the order line id will not be included in the return locations.
+ ///
+ /// Dictionary of Order Line Id and Location Id.
+ internal procedure GetReturnLocations(ReturnId: BigInteger) ReturnLocations: Dictionary of [BigInteger, BigInteger]
+ var
+ GraphQLType: Enum "Shpfy GraphQL Type";
+ LineParameters: Dictionary of [text, Text];
+ JResponse: JsonToken;
+ JOrders: JsonArray;
+ JOrder: JsonToken;
+ begin
+ LineParameters.Add('ReturnId', Format(ReturnId));
+ GraphQLType := "Shpfy GraphQL Type"::GetReverseFulfillmentOrders;
+ repeat
+ JResponse := CommunicationMgt.ExecuteGraphQL(GraphQLType, LineParameters);
+
+ GraphQLType := "Shpfy GraphQL Type"::GetNextReverseFulfillmentOrders;
+ JOrders := JsonHelper.GetJsonArray(JResponse, 'data.return.reverseFulfillmentOrders.nodes');
+ if Parameters.ContainsKey('After') then
+ Parameters.Set('After', JsonHelper.GetValueAsText(JResponse, 'data.return.reverseFulfillmentOrders.pageInfo.endCursor'))
+ else
+ Parameters.Add('After', JsonHelper.GetValueAsText(JResponse, 'data.return.reverseFulfillmentOrders.pageInfo.endCursor'));
+
+ foreach JOrder in JOrders do
+ GetReturnLocationsFromReturnFulfillOrder(JsonHelper.GetValueAsText(JOrder, 'id'), ReturnLocations);
+ until not JsonHelper.GetValueAsBoolean(JResponse, 'data.return.reverseFulfillmentOrders.pageInfo.hasNextPage');
+ end;
+
+ local procedure GetReturnLocationsFromReturnFulfillOrder(FulfillOrderId: Text; var ReturnLocations: Dictionary of [BigInteger, BigInteger])
+ var
+ GraphQLType: Enum "Shpfy GraphQL Type";
+ LineParameters: Dictionary of [text, Text];
+ JResponse: JsonToken;
+ JLines: JsonArray;
+ JLine: JsonToken;
+ begin
+ LineParameters.Add('FulfillOrderId', FulfillOrderId);
+ GraphQLType := "Shpfy GraphQL Type"::GetReverseFulfillmentOrderLines;
+ repeat
+ JResponse := CommunicationMgt.ExecuteGraphQL(GraphQLType, LineParameters);
+
+ GraphQLType := "Shpfy GraphQL Type"::GetNextReverseFulfillmentOrders;
+ JLines := JsonHelper.GetJsonArray(JResponse, 'data.reverseFulfillmentOrder.lineItems.nodes');
+ if Parameters.ContainsKey('After') then
+ Parameters.Set('After', JsonHelper.GetValueAsText(JResponse, 'data.reverseFulfillmentOrder.lineItems.pageInfo.endCursor'))
+ else
+ Parameters.Add('After', JsonHelper.GetValueAsText(JResponse, 'data.reverseFulfillmentOrder.lineItems.pageInfo.endCursor'));
+
+ foreach JLine in JLines do
+ CollectLocationsFromLineDispositions(JLine, ReturnLocations);
+ until not JsonHelper.GetValueAsBoolean(JResponse, 'data.reverseFulfillmentOrder.lineItems.pageInfo.hasNextPage');
+ end;
+
+ local procedure CollectLocationsFromLineDispositions(JLine: JsonToken; ReturnLocations: Dictionary of [BigInteger, BigInteger])
+ var
+ OrderLineId: BigInteger;
+ LocationId: BigInteger;
+ Dispositions: JsonArray;
+ Disposition: JsonToken;
+ begin
+ OrderLineId := CommunicationMgt.GetIdOfGId(JsonHelper.GetValueAsText(JLine, 'fulfillmentLineItem.lineItem.id'));
+
+ Dispositions := JsonHelper.GetJsonArray(JLine, 'dispositions');
+ if Dispositions.Count = 0 then
+ exit;
+
+ // If dispositions have different locations (Item was restocked to multiple locations),
+ // we cannot determine the return location for the line
+ Dispositions.Get(0, Disposition);
+ LocationId := JsonHelper.GetValueAsBigInteger(Disposition, 'location.legacyResourceId');
+ foreach Disposition in Dispositions do
+ if LocationId <> JsonHelper.GetValueAsBigInteger(Disposition, 'location.legacyResourceId') then
+ exit;
+
+ ReturnLocations.Add(OrderLineId, LocationId);
+ end;
+
+ local procedure FillInReturnLine(ReturnId: BigInteger; JLine: JsonObject; ReturnLocations: Dictionary of [BigInteger, BigInteger])
var
DataCapture: Record "Shpfy Data Capture";
ReturnLine: Record "Shpfy Return Line";
ReturnLineRecordRef: RecordRef;
Id: BigInteger;
+ ReturnLocation: BigInteger;
begin
Id := CommunicationMgt.GetIdOfGId(JsonHelper.GetValueAsText(JLine, 'id'));
if not ReturnLine.Get(Id) then begin
@@ -97,8 +184,13 @@ codeunit 30250 "Shpfy Returns API"
ReturnLine.Insert();
end;
ReturnLine."Return Reason" := ReturnEnumConvertor.ConvertToReturnReason(JsonHelper.GetValueAsText(JLine, 'returnReason'));
+ // If item was restocked to multiple locations, we cannot determine the return location for the line
+ if ReturnLocations.Get(ReturnLine."Order Line Id", ReturnLocation) then
+ ReturnLine."Location Id" := ReturnLocation;
+
ReturnLine.SetReturnReasonNote(JsonHelper.GetValueAsText(JLine, 'returnReasonNote'));
ReturnLine.SetCustomerNote(JsonHelper.GetValueAsText(JLine, 'customerNote'));
+
ReturnLineRecordRef.GetTable(ReturnLine);
JsonHelper.GetValueIntoField(JLine, 'quantity', ReturnLineRecordRef, ReturnLine.FieldNo(Quantity));
JsonHelper.GetValueIntoField(JLine, 'refundableQuantity', ReturnLineRecordRef, ReturnLine.FieldNo("Refundable Quantity"));
diff --git a/Apps/W1/Shopify/app/src/Order Returns/Tables/ShpfyReturnLine.Table.al b/Apps/W1/Shopify/app/src/Order Returns/Tables/ShpfyReturnLine.Table.al
index 9150f4d570..3598ff4855 100644
--- a/Apps/W1/Shopify/app/src/Order Returns/Tables/ShpfyReturnLine.Table.al
+++ b/Apps/W1/Shopify/app/src/Order Returns/Tables/ShpfyReturnLine.Table.al
@@ -112,6 +112,12 @@ table 30141 "Shpfy Return Line"
FieldClass = FlowField;
CalcFormula = lookup("Shpfy Order Line"."Variant Code" where("Line Id" = field("Order Line Id")));
}
+ field(104; "Location Id"; BigInteger)
+ {
+ Caption = 'Location Id';
+ DataClassification = SystemMetadata;
+ Editable = false;
+ }
}
keys
{
diff --git a/Apps/W1/Shopify/app/src/Order handling/Codeunits/ShpfyImportOrder.Codeunit.al b/Apps/W1/Shopify/app/src/Order handling/Codeunits/ShpfyImportOrder.Codeunit.al
index 7fbd4921da..86b44abdca 100644
--- a/Apps/W1/Shopify/app/src/Order handling/Codeunits/ShpfyImportOrder.Codeunit.al
+++ b/Apps/W1/Shopify/app/src/Order handling/Codeunits/ShpfyImportOrder.Codeunit.al
@@ -833,11 +833,23 @@ codeunit 30161 "Shpfy Import Order"
local procedure UpdateLocationIdAndDeliveryMethodOnOrderLine(var OrderLine: Record "Shpfy Order Line")
var
FulfillmentOrderLine: Record "Shpfy FulFillment Order Line";
- TotalQuantity: Integer;
begin
FulfillmentOrderLine.Reset();
FulfillmentOrderLine.SetRange("Shopify Order Id", OrderLine."Shopify Order Id");
FulfillmentOrderLine.SetRange("Shopify Variant Id", OrderLine."Shopify Variant Id");
+ FulfillmentOrderLine.SetFilter("Fulfillment Status", '<>%1', 'CLOSED');
+ if FulfillmentOrderLine.FindSet() then
+ UpdateLocationIdAndDeliveryMethodOnOrderLines(OrderLine, FulfillmentOrderLine)
+ else begin
+ FulfillmentOrderLine.SetRange("Fulfillment Status");
+ UpdateLocationIdAndDeliveryMethodOnOrderLines(OrderLine, FulfillmentOrderLine);
+ end;
+ end;
+
+ local procedure UpdateLocationIdAndDeliveryMethodOnOrderLines(var OrderLine: Record "Shpfy Order Line"; var FulfillmentOrderLine: Record "Shpfy FulFillment Order Line")
+ var
+ TotalQuantity: Integer;
+ begin
if FulfillmentOrderLine.FindSet() then begin
repeat
TotalQuantity += FulfillmentOrderLine."Total Quantity";
diff --git a/Apps/W1/Shopify/app/src/Order handling/Codeunits/ShpfyOrderEvents.Codeunit.al b/Apps/W1/Shopify/app/src/Order handling/Codeunits/ShpfyOrderEvents.Codeunit.al
index 2bcf4bc5b1..7ec64dae1c 100644
--- a/Apps/W1/Shopify/app/src/Order handling/Codeunits/ShpfyOrderEvents.Codeunit.al
+++ b/Apps/W1/Shopify/app/src/Order handling/Codeunits/ShpfyOrderEvents.Codeunit.al
@@ -161,7 +161,7 @@ codeunit 30162 "Shpfy Order Events"
/// Parameter of type Record "Shopify Order Header".
/// Parameter of type Record "Sales Header".
/// Parameter of type Boolean.
- internal procedure OnBeforeCreateSalesHeader(ShopifyOrderHeader: Record "Shpfy Order Header"; var SalesHeader: Record "Sales Header"; var Handled: Boolean)
+ internal procedure OnBeforeCreateSalesHeader(ShopifyOrderHeader: Record "Shpfy Order Header"; var SalesHeader: Record "Sales Header"; var LastCreatedDocumentId: Guid; var Handled: Boolean)
begin
end;
diff --git a/Apps/W1/Shopify/app/src/Order handling/Codeunits/ShpfyOrdersAPI.Codeunit.al b/Apps/W1/Shopify/app/src/Order handling/Codeunits/ShpfyOrdersAPI.Codeunit.al
index a2e7904454..47658f4248 100644
--- a/Apps/W1/Shopify/app/src/Order handling/Codeunits/ShpfyOrdersAPI.Codeunit.al
+++ b/Apps/W1/Shopify/app/src/Order handling/Codeunits/ShpfyOrdersAPI.Codeunit.al
@@ -309,12 +309,9 @@ codeunit 30165 "Shpfy Orders API"
CommunicationMgt.SetShop(ShopifyShop);
GraphQLType := "Shpfy GraphQL Type"::OrderCancel;
Parameters.Add('OrderId', Format(OrderId));
- case CancelReason of
- CancelReason::" ", CancelReason::Unknown:
- Parameters.Add('CancelReason', Format(CancelReason::Other).ToUpper());
- else
- Parameters.Add('CancelReason', Format(CancelReason).ToUpper());
- end;
+ if CancelReason in [CancelReason::" ", CancelReason::Unknown] then
+ CancelReason := CancelReason::Other;
+ Parameters.Add('CancelReason', CancelReason.Names().Get(CancelReason.Ordinals().IndexOf(CancelReason.AsInteger())).ToUpper());
Parameters.Add('NotifyCustomer', CommunicationMgt.ConvertBooleanToText(NotifyCustomer));
Parameters.Add('Refund', CommunicationMgt.ConvertBooleanToText(Refund));
Parameters.Add('Restock', CommunicationMgt.ConvertBooleanToText(Restock));
diff --git a/Apps/W1/Shopify/app/src/Order handling/Codeunits/ShpfyProcessOrder.Codeunit.al b/Apps/W1/Shopify/app/src/Order handling/Codeunits/ShpfyProcessOrder.Codeunit.al
index 82209b7f75..a9ea62de6b 100644
--- a/Apps/W1/Shopify/app/src/Order handling/Codeunits/ShpfyProcessOrder.Codeunit.al
+++ b/Apps/W1/Shopify/app/src/Order handling/Codeunits/ShpfyProcessOrder.Codeunit.al
@@ -65,7 +65,7 @@ codeunit 30166 "Shpfy Process Order"
BCDocumentTypeConvert: Codeunit "Shpfy BC Document Type Convert";
IsHandled: Boolean;
begin
- OrderEvents.OnBeforeCreateSalesHeader(ShopifyOrderHeader, SalesHeader, IsHandled);
+ OrderEvents.OnBeforeCreateSalesHeader(ShopifyOrderHeader, SalesHeader, LastCreatedDocumentId, IsHandled);
if not IsHandled then begin
ShopifyOrderHeader.TestField("Sell-to Customer No.");
SalesHeader.Init();
diff --git a/Apps/W1/Shopify/app/src/PermissionSets/ShpfyObjects.PermissionSet.al b/Apps/W1/Shopify/app/src/PermissionSets/ShpfyObjects.PermissionSet.al
index 4565a80012..21ac49f7ad 100644
--- a/Apps/W1/Shopify/app/src/PermissionSets/ShpfyObjects.PermissionSet.al
+++ b/Apps/W1/Shopify/app/src/PermissionSets/ShpfyObjects.PermissionSet.al
@@ -193,6 +193,7 @@ permissionset 30104 "Shpfy - Objects"
codeunit "Shpfy GQL OrderHeader" = X,
codeunit "Shpfy GQL OrderLines" = X,
codeunit "Shpfy GQL OrderRisks" = X,
+ codeunit "Shpfy GQL OrderTransactions" = X,
codeunit "Shpfy GQL OrdersToImport" = X,
codeunit "Shpfy GQL ProductById" = X,
codeunit "Shpfy GQL ProductIds" = X,
diff --git a/Apps/W1/Shopify/app/src/Products/Codeunits/ShpfyProductEvents.Codeunit.al b/Apps/W1/Shopify/app/src/Products/Codeunits/ShpfyProductEvents.Codeunit.al
index ea60be918c..a2129c6823 100644
--- a/Apps/W1/Shopify/app/src/Products/Codeunits/ShpfyProductEvents.Codeunit.al
+++ b/Apps/W1/Shopify/app/src/Products/Codeunits/ShpfyProductEvents.Codeunit.al
@@ -382,4 +382,14 @@ codeunit 30177 "Shpfy Product Events"
internal procedure OnAfterUpdateItemPicture(var Item: Record Item; ImageUrl: Text; InStream: InStream)
begin
end;
+
+ [IntegrationEvent(false, false)]
+ ///
+ /// Raised After Shopify Product fields are filled from Business Central Item. These fields are sent to Shopify when creating or updating a product.
+ ///
+ /// Parameter of type Record Item.
+ /// Parameter of Record "Shopify Product".
+ internal procedure OnAfterFillInShopifyProductFields(Item: Record Item; var ShopifyProduct: Record "Shpfy Product")
+ begin
+ end;
}
\ No newline at end of file
diff --git a/Apps/W1/Shopify/app/src/Products/Codeunits/ShpfyProductExport.Codeunit.al b/Apps/W1/Shopify/app/src/Products/Codeunits/ShpfyProductExport.Codeunit.al
index 1316e56c3d..213e7e7286 100644
--- a/Apps/W1/Shopify/app/src/Products/Codeunits/ShpfyProductExport.Codeunit.al
+++ b/Apps/W1/Shopify/app/src/Products/Codeunits/ShpfyProductExport.Codeunit.al
@@ -278,6 +278,7 @@ codeunit 30178 "Shpfy Product Export"
Shop."Action for Removed Products"::StatusToDraft:
ShopifyProduct.Status := ShopifyProduct.Status::Draft;
end;
+ ProductEvents.OnAfterFillInShopifyProductFields(Item, ShopifyProduct);
end;
///
diff --git a/Apps/W1/Shopify/app/src/Shipping/Codeunits/ShpfyExportShipments.Codeunit.al b/Apps/W1/Shopify/app/src/Shipping/Codeunits/ShpfyExportShipments.Codeunit.al
index f1b3197515..16fb7a9f9b 100644
--- a/Apps/W1/Shopify/app/src/Shipping/Codeunits/ShpfyExportShipments.Codeunit.al
+++ b/Apps/W1/Shopify/app/src/Shipping/Codeunits/ShpfyExportShipments.Codeunit.al
@@ -181,6 +181,7 @@ codeunit 30190 "Shpfy Export Shipments"
FulfillmentOrderLine.SetRange("Shopify Location Id", OrderLine."Location Id");
FulfillmentOrderLine.SetRange("Delivery Method Type", OrderLine."Delivery Method Type");
FulfillmentOrderLine.SetFilter("Remaining Quantity", '>=%1', Round(SalesShipmentLine.Quantity, 1, '='));
+ FulfillmentOrderLine.SetFilter("Fulfillment Status", '<>%1', 'CLOSED');
if FulfillmentOrderLine.FindFirst() then
exit(true);
end;
diff --git a/Apps/W1/Shopify/app/src/Transactions/Codeunits/ShpfyTransactions.Codeunit.al b/Apps/W1/Shopify/app/src/Transactions/Codeunits/ShpfyTransactions.Codeunit.al
index 9bf30ef463..bede5737e5 100644
--- a/Apps/W1/Shopify/app/src/Transactions/Codeunits/ShpfyTransactions.Codeunit.al
+++ b/Apps/W1/Shopify/app/src/Transactions/Codeunits/ShpfyTransactions.Codeunit.al
@@ -11,7 +11,7 @@ codeunit 30194 "Shpfy Transactions"
CommunicationMgt: Codeunit "Shpfy Communication Mgt.";
JsonHelper: Codeunit "Shpfy Json Helper";
- local procedure ConvertToTranscationStatus(Value: Text): Enum "Shpfy Transaction Status"
+ local procedure ConvertToTransactionStatus(Value: Text): Enum "Shpfy Transaction Status"
begin
Value := CommunicationMgt.ConvertToCleanOptionValue(Value);
if Enum::"Shpfy Transaction Status".Names().Contains(Value) then
@@ -20,7 +20,7 @@ codeunit 30194 "Shpfy Transactions"
exit(Enum::"Shpfy Transaction Status"::" ");
end;
- local procedure ConvertToTranscationType(Value: Text): Enum "Shpfy Transaction Type"
+ local procedure ConvertToTransactionType(Value: Text): Enum "Shpfy Transaction Type"
begin
Value := CommunicationMgt.ConvertToCleanOptionValue(Value);
if Enum::"Shpfy Transaction Type".Names().Contains(Value) then
@@ -29,10 +29,6 @@ codeunit 30194 "Shpfy Transactions"
exit(Enum::"Shpfy Transaction Type"::" ");
end;
- ///
- /// Description for UpdateTransactionInfos.
- ///
- /// Parameter of type BigInteger.
internal procedure UpdateTransactionInfos(OrderId: BigInteger)
var
OrderHeader: Record "Shpfy Order Header";
@@ -41,11 +37,24 @@ codeunit 30194 "Shpfy Transactions"
UpdateTransactionInfos(OrderHeader);
end;
- ///
- /// Description for UpdateTransactionInfos.
- ///
- /// Parameter of type Record "Shopify Order Header".
internal procedure UpdateTransactionInfos(OrderHeader: Record "Shpfy Order Header")
+ var
+ GraphQLType: Enum "Shpfy GraphQL Type";
+ JResponse: JsonToken;
+ JOrderTransaction: JsonToken;
+ JOrderTransactions: JsonArray;
+ Parameters: Dictionary of [Text, Text];
+ begin
+ CommunicationMgt.SetShop(OrderHeader."Shop Code");
+ GraphQLType := "Shpfy GraphQL Type"::GetOrderTransactions;
+ Parameters.Add('OrderId', Format(OrderHeader."Shopify Order Id"));
+ JResponse := CommunicationMgt.ExecuteGraphQL(GraphQLType, Parameters);
+ if JsonHelper.GetJsonArray(JResponse, JOrderTransactions, 'data.order.transactions') then
+ foreach JOrderTransaction in JOrderTransactions do
+ ExtractShopifyOrderTransaction(JOrderTransaction, OrderHeader);
+ end;
+
+ local procedure ExtractShopifyOrderTransaction(JOrderTransaction: JsonToken; OrderHeader: Record "Shpfy Order Header")
var
CreditCardCompany: Record "Shpfy Credit Card Company";
DataCapture: Record "Shpfy Data Capture";
@@ -55,74 +64,70 @@ codeunit 30194 "Shpfy Transactions"
RecordRef: RecordRef;
Id: BigInteger;
IsNew: Boolean;
- JTransactions: JsonArray;
- JResponse: JsonToken;
- JToken: JsonToken;
- Url: Text;
- OrderTransactionsUrlTxt: Label 'orders/%1/transactions.json', Comment = '%1 = Shopify order id', Locked = true;
+ JObject: JsonObject;
+ ReceiptJson: Text;
begin
- CommunicationMgt.SetShop(OrderHeader."Shop Code");
- Url := CommunicationMgt.CreateWebRequestURL(StrSubstNo(OrderTransactionsUrlTxt, OrderHeader."Shopify Order Id"));
- JResponse := CommunicationMgt.ExecuteWebRequest(Url, 'GET', JToken);
- if JsonHelper.GetJsonArray(JResponse, JTransactions, 'transactions') then
- foreach JToken in JTransactions do begin
- Id := JsonHelper.GetValueAsBigInteger(JToken, 'id');
- IsNew := not OrderTransaction.Get(Id);
- if IsNew then begin
- Clear(OrderTransaction);
- OrderTransaction."Shopify Transaction Id" := Id;
- end;
- OrderTransaction.Status := ConvertToTranscationStatus(JsonHelper.GetValueAsText(JToken, 'status'));
- OrderTransaction.Type := ConvertToTranscationType(JsonHelper.GetValueAsText(JToken, 'kind'));
- RecordRef.GetTable(OrderTransaction);
- JsonHelper.GetValueIntoField(JToken, 'order_id', RecordRef, OrderTransaction.FieldNo("Shopify Order Id"));
- JsonHelper.GetValueIntoField(JToken, 'gateway', RecordRef, OrderTransaction.FieldNo(Gateway));
- JsonHelper.GetValueIntoField(JToken, 'message', RecordRef, OrderTransaction.FieldNo(Message));
- JsonHelper.GetValueIntoField(JToken, 'created_at', RecordRef, OrderTransaction.FieldNo("Created At"));
- JsonHelper.GetValueIntoField(JToken, 'test', RecordRef, OrderTransaction.FieldNo(Test));
- JsonHelper.GetValueIntoField(JToken, 'authorization', RecordRef, OrderTransaction.FieldNo(Authorization));
- JsonHelper.GetValueIntoField(JToken, 'receipt.gift_card_id', RecordRef, OrderTransaction.FieldNo("Gift Card Id"));
- JsonHelper.GetValueIntoField(JToken, 'error_code', RecordRef, OrderTransaction.FieldNo("Error Code"));
- JsonHelper.GetValueIntoField(JToken, 'source_name', RecordRef, OrderTransaction.FieldNo("Source Name"));
- JsonHelper.GetValueIntoField(JToken, 'amount', RecordRef, OrderTransaction.FieldNo(Amount));
- JsonHelper.GetValueIntoField(JToken, 'currency', RecordRef, OrderTransaction.FieldNo(Currency));
- JsonHelper.GetValueIntoField(JToken, 'payment_id', RecordRef, OrderTransaction.FieldNo("Payment Id"));
- JsonHelper.GetValueIntoField(JToken, 'payment_details.credit_card_bin', RecordRef, OrderTransaction.FieldNo("Credit Card Bin"));
- JsonHelper.GetValueIntoField(JToken, 'payment_details.avs_result_code', RecordRef, OrderTransaction.FieldNo("AVS Result Code"));
- JsonHelper.GetValueIntoField(JToken, 'payment_details.cvv_result_code', RecordRef, OrderTransaction.FieldNo("CVV Result Code"));
- JsonHelper.GetValueIntoField(JToken, 'payment_details.credit_card_number', RecordRef, OrderTransaction.FieldNo("Credit Card Number"));
- JsonHelper.GetValueIntoField(JToken, 'payment_details.credit_card_company', RecordRef, OrderTransaction.FieldNo("Credit Card Company"));
- if IsNew then
- RecordRef.Insert()
- else
- RecordRef.Modify();
- RecordRef.SetTable(OrderTransaction);
- RecordRef.Close();
- if OrderTransaction.Gateway <> '' then begin
- Clear(TransactionGateway);
- TransactionGateway.SetRange(Name, OrderTransaction.Gateway);
- if TransactionGateway.IsEmpty then begin
- TransactionGateway.Name := OrderTransaction.Gateway;
- TransactionGateway.Insert();
- end;
- Clear(CreditCardCompany);
- end;
- if OrderTransaction."Credit Card Company" <> '' then begin
- CreditCardCompany.SetRange(Name, OrderTransaction."Credit Card Company");
- if CreditCardCompany.IsEmpty then begin
- CreditCardCompany.Name := OrderTransaction."Credit Card Company";
- CreditCardCompany.Insert();
- end;
- end;
- if not PaymentMethodMapping.Get(OrderHeader."Shop Code", OrderTransaction.Gateway, OrderTransaction."Credit Card Company") then begin
- Clear(PaymentMethodMapping);
- PaymentMethodMapping."Shop Code" := OrderHeader."Shop Code";
- PaymentMethodMapping.Gateway := OrderTransaction.Gateway;
- PaymentMethodMapping."Credit Card Company" := CopyStr(OrderTransaction."Credit Card Company", 1, MaxStrLen(PaymentMethodMapping."Credit Card Company"));
- PaymentMethodMapping.Insert();
- end;
+ Id := CommunicationMgt.GetIdOfGId(JsonHelper.GetValueAsText(JOrderTransaction, 'id'));
+ IsNew := not OrderTransaction.Get(Id);
+ if IsNew then begin
+ Clear(OrderTransaction);
+ OrderTransaction."Shopify Transaction Id" := Id;
+ end;
+ OrderTransaction.Status := ConvertToTransactionStatus(JsonHelper.GetValueAsText(JOrderTransaction, 'status'));
+ OrderTransaction.Type := ConvertToTransactionType(JsonHelper.GetValueAsText(JOrderTransaction, 'kind'));
+ OrderTransaction."Shopify Order Id" := OrderHeader."Shopify Order Id";
+ RecordRef.GetTable(OrderTransaction);
+ JsonHelper.GetValueIntoField(JOrderTransaction, 'gateway', RecordRef, OrderTransaction.FieldNo(Gateway));
+ JsonHelper.GetValueIntoField(JOrderTransaction, 'formattedGateway', RecordRef, OrderTransaction.FieldNo(Message));
+ JsonHelper.GetValueIntoField(JOrderTransaction, 'createdAt', RecordRef, OrderTransaction.FieldNo("Created At"));
+ JsonHelper.GetValueIntoField(JOrderTransaction, 'test', RecordRef, OrderTransaction.FieldNo(Test));
+ JsonHelper.GetValueIntoField(JOrderTransaction, 'authorizationCode', RecordRef, OrderTransaction.FieldNo(Authorization));
+ JsonHelper.GetValueIntoField(JOrderTransaction, 'errorCode', RecordRef, OrderTransaction.FieldNo("Error Code"));
+ JsonHelper.GetValueIntoField(JOrderTransaction, 'paymentId', RecordRef, OrderTransaction.FieldNo("Payment Id"));
+ JsonHelper.GetValueIntoField(JOrderTransaction, 'amountSet.shopMoney.amount', RecordRef, OrderTransaction.FieldNo(Amount));
+ JsonHelper.GetValueIntoField(JOrderTransaction, 'amountSet.shopMoney.currencyCode', RecordRef, OrderTransaction.FieldNo(Currency));
+
+ ReceiptJson := JsonHelper.GetValueAsText(JOrderTransaction, 'receiptJson');
+ if JObject.ReadFrom(ReceiptJson) then
+ JsonHelper.GetValueIntoField(JObject, 'gift_card_id', RecordRef, OrderTransaction.FieldNo("Gift Card Id"));
- DataCapture.Add(Database::"Shpfy Order Transaction", OrderTransaction.SystemId, JToken);
+ if JsonHelper.GetJsonObject(JOrderTransaction, JObject, 'paymentDetails') then begin
+ JsonHelper.GetValueIntoField(JOrderTransaction, 'paymentDetails.bin', RecordRef, OrderTransaction.FieldNo("Credit Card Bin"));
+ JsonHelper.GetValueIntoField(JOrderTransaction, 'paymentDetails.avsResultCode', RecordRef, OrderTransaction.FieldNo("AVS Result Code"));
+ JsonHelper.GetValueIntoField(JOrderTransaction, 'paymentDetails.cvvResultCode', RecordRef, OrderTransaction.FieldNo("CVV Result Code"));
+ JsonHelper.GetValueIntoField(JOrderTransaction, 'paymentDetails.number', RecordRef, OrderTransaction.FieldNo("Credit Card Number"));
+ JsonHelper.GetValueIntoField(JOrderTransaction, 'paymentDetails.company', RecordRef, OrderTransaction.FieldNo("Credit Card Company"));
+ end;
+ if IsNew then
+ RecordRef.Insert()
+ else
+ RecordRef.Modify();
+ RecordRef.SetTable(OrderTransaction);
+ RecordRef.Close();
+ if OrderTransaction.Gateway <> '' then begin
+ Clear(TransactionGateway);
+ TransactionGateway.SetRange(Name, OrderTransaction.Gateway);
+ if TransactionGateway.IsEmpty then begin
+ TransactionGateway.Name := OrderTransaction.Gateway;
+ TransactionGateway.Insert();
+ end;
+ Clear(CreditCardCompany);
+ end;
+ if OrderTransaction."Credit Card Company" <> '' then begin
+ CreditCardCompany.SetRange(Name, OrderTransaction."Credit Card Company");
+ if CreditCardCompany.IsEmpty then begin
+ CreditCardCompany.Name := OrderTransaction."Credit Card Company";
+ CreditCardCompany.Insert();
end;
+ end;
+ if not PaymentMethodMapping.Get(OrderHeader."Shop Code", OrderTransaction.Gateway, OrderTransaction."Credit Card Company") then begin
+ Clear(PaymentMethodMapping);
+ PaymentMethodMapping."Shop Code" := OrderHeader."Shop Code";
+ PaymentMethodMapping.Gateway := OrderTransaction.Gateway;
+ PaymentMethodMapping."Credit Card Company" := CopyStr(OrderTransaction."Credit Card Company", 1, MaxStrLen(PaymentMethodMapping."Credit Card Company"));
+ PaymentMethodMapping.Insert();
+ end;
+
+ DataCapture.Add(Database::"Shpfy Order Transaction", OrderTransaction.SystemId, JOrderTransaction);
end;
}
\ No newline at end of file
diff --git a/Apps/W1/Shopify/app/src/Transactions/Enums/ShpfyTransactionStatus.Enum.al b/Apps/W1/Shopify/app/src/Transactions/Enums/ShpfyTransactionStatus.Enum.al
index 7b90d1b5de..eef9efa675 100644
--- a/Apps/W1/Shopify/app/src/Transactions/Enums/ShpfyTransactionStatus.Enum.al
+++ b/Apps/W1/Shopify/app/src/Transactions/Enums/ShpfyTransactionStatus.Enum.al
@@ -28,5 +28,12 @@ enum 30133 "Shpfy Transaction Status"
{
Caption = 'Error';
}
-
+ value(5; "Awaiting Response")
+ {
+ Caption = 'Awaiting Response';
+ }
+ value(6; "Unknown")
+ {
+ Caption = 'Unknown';
+ }
}
diff --git a/Apps/W1/Shopify/app/src/Transactions/Pages/ShpfyTransactions.Page.al b/Apps/W1/Shopify/app/src/Transactions/Pages/ShpfyTransactions.Page.al
index b0e18daaac..33bc90e495 100644
--- a/Apps/W1/Shopify/app/src/Transactions/Pages/ShpfyTransactions.Page.al
+++ b/Apps/W1/Shopify/app/src/Transactions/Pages/ShpfyTransactions.Page.al
@@ -47,11 +47,17 @@ page 30134 "Shpfy Transactions"
ApplicationArea = All;
ToolTip = 'Specifies the name of the gateway the transaction was issued through.';
}
+#if not CLEAN25
field(SourceName; Rec."Source Name")
{
ApplicationArea = All;
ToolTip = 'Specifies the origin of the transaction. This is set by Shopify. Example values: web, pos, iphone, android.';
+ Visible = false;
+ ObsoleteReason = 'Source name is no longer used.';
+ ObsoleteState = Pending;
+ ObsoleteTag = '25.0';
}
+#endif
field(Amount; Rec.Amount)
{
ApplicationArea = All;
diff --git a/Apps/W1/Shopify/app/src/Transactions/Tables/ShpfyOrderTransaction.Table.al b/Apps/W1/Shopify/app/src/Transactions/Tables/ShpfyOrderTransaction.Table.al
index 71b8aef427..88cc00d74b 100644
--- a/Apps/W1/Shopify/app/src/Transactions/Tables/ShpfyOrderTransaction.Table.al
+++ b/Apps/W1/Shopify/app/src/Transactions/Tables/ShpfyOrderTransaction.Table.al
@@ -93,6 +93,14 @@ table 30133 "Shpfy Order Transaction"
DataClassification = SystemMetadata;
Editable = false;
Access = Internal;
+ ObsoleteReason = 'Source name is no longer used.';
+#if not CLEAN25
+ ObsoleteState = Pending;
+ ObsoleteTag = '25.0';
+#else
+ ObsoleteState = Removed;
+ ObsoleteTag = '28.0';
+#endif
}
field(16; "Credit Card Bin"; Code[10])
{
diff --git a/Apps/W1/Shopify/test/Order Handling/ShpfyOrdersAPISubscriber.Codeunit.al b/Apps/W1/Shopify/test/Order Handling/ShpfyOrdersAPISubscriber.Codeunit.al
new file mode 100644
index 0000000000..aabc6b8659
--- /dev/null
+++ b/Apps/W1/Shopify/test/Order Handling/ShpfyOrdersAPISubscriber.Codeunit.al
@@ -0,0 +1,46 @@
+codeunit 139649 "Shpfy Orders API Subscriber"
+{
+ SingleInstance = true;
+ EventSubscriberInstance = Manual;
+
+ [EventSubscriber(ObjectType::Codeunit, Codeunit::"Shpfy Communication Events", 'OnClientSend', '', true, false)]
+ local procedure OnClientSend(HttpRequestMessage: HttpRequestMessage; var HttpResponseMessage: HttpResponseMessage)
+ begin
+ MakeResponse(HttpRequestMessage, HttpResponseMessage);
+ end;
+
+ [EventSubscriber(ObjectType::Codeunit, Codeunit::"Shpfy Communication Events", 'OnGetContent', '', true, false)]
+ local procedure OnGetContent(HttpResponseMessage: HttpResponseMessage; var Response: Text)
+ begin
+ HttpResponseMessage.Content.ReadAs(Response);
+ end;
+
+ local procedure MakeResponse(HttpRequestMessage: HttpRequestMessage; var HttpResponseMessage: HttpResponseMessage)
+ var
+ Uri: Text;
+ GraphQlQuery: Text;
+ GraphQLCmdMsg: Label '{ transactions { authorizationCode createdAt errorCode formattedGateway gateway id kind paymentId receiptJson status test amountSet { presentmentMoney { amount currencyCode } shopMoney { amount currencyCode }} paymentDetails { ... on CardPaymentDetails { avsResultCode bin cvvResultCode number company }}}', Locked = true;
+ GraphQLCmdTxt: Label '/graphql.json', Locked = true;
+ begin
+ case HttpRequestMessage.Method of
+ 'POST':
+ begin
+ Uri := HttpRequestMessage.GetRequestUri();
+ if Uri.EndsWith(GraphQLCmdTxt) then
+ if HttpRequestMessage.Content.ReadAs(GraphQlQuery) then
+ if GraphQlQuery.Contains(GraphQLCmdMsg) then
+ HttpResponseMessage := GetOrderTransactionResult();
+ end;
+ end;
+ end;
+
+ local procedure GetOrderTransactionResult(): HttpResponseMessage;
+ var
+ HttpResponseMessage: HttpResponseMessage;
+ Body: Text;
+ begin
+ Body := '{"data":{"order":{"transactions":[{"authorizationCode":"53433","createdAt":"2024-06-11T09:58:22Z","errorCode":null,"formattedGateway":"(For Testing) Bogus Gateway","gateway":"bogus","id":"gid://shopify/OrderTransaction/6657081606262","kind":"SALE","paymentId":"rhVoj2pg5L3vVrybtYswqKnju","receiptJson":"{}","status":"SUCCESS","test":true,"amountSet":{"presentmentMoney":{"amount":"679.0","currencyCode":"DKK"},"shopMoney":{"amount":"679.0","currencyCode":"DKK"}},"paymentDetails":{"avsResultCode":null,"bin":"1","cvvResultCode":null,"number":"•••• •••• •••• 1","company":"Bogus"}}]}},"extensions":{"cost":{"requestedQueryCost":3,"actualQueryCost":3,"throttleStatus":{"maximumAvailable":2000.0,"currentlyAvailable":1997,"restoreRate":100.0}}}}';
+ HttpResponseMessage.Content.WriteFrom(Body);
+ exit(HttpResponseMessage);
+ end;
+}
diff --git a/Apps/W1/Shopify/test/Order Handling/ShpfyOrdersAPITest.Codeunit.al b/Apps/W1/Shopify/test/Order Handling/ShpfyOrdersAPITest.Codeunit.al
index a11aacb37a..5b53b399d1 100644
--- a/Apps/W1/Shopify/test/Order Handling/ShpfyOrdersAPITest.Codeunit.al
+++ b/Apps/W1/Shopify/test/Order Handling/ShpfyOrdersAPITest.Codeunit.al
@@ -20,7 +20,7 @@ codeunit 139608 "Shpfy Orders API Test"
begin
// [SCENARIO] Create a randpom expected Json structure for the OrdersToImport and see of all orders are available in the "Shpfy Orders to Import" table.
// [SCENARIO] At start we reset the "Shpfy Orders to Import" table so we can see how many record are added.
- Codeunit.Run(Codeunit::"Shpfy Initialize Test");
+ Initialize();
Clear(OrdersToImport);
if not OrdersToImport.IsEmpty then
OrdersToImport.DeleteAll();
@@ -56,7 +56,7 @@ codeunit 139608 "Shpfy Orders API Test"
begin
// [SCENARIO] Create a randpom expected Json structure for the OrdersToImport and see of all orders are available in the "Shpfy Orders to Import" table.
// [SCENARIO] At start we reset the "Shpfy Orders to Import" table so we can see how many record are added.
- Codeunit.Run(Codeunit::"Shpfy Initialize Test");
+ Initialize();
Clear(OrdersToImport);
if not OrdersToImport.IsEmpty then
OrdersToImport.DeleteAll();
@@ -90,7 +90,7 @@ codeunit 139608 "Shpfy Orders API Test"
JShopifyLineItems: JsonArray;
begin
// [SCENARIO] Import a Shopify order from the "Shpfy Orders to Import" record.
- Codeunit.Run(Codeunit::"Shpfy Initialize Test");
+ Initialize();
// [GIVEN] Shopify Shop
Shop := CommunicationMgt.GetShopRecord();
@@ -128,7 +128,7 @@ codeunit 139608 "Shpfy Orders API Test"
JShopifyLineItems: JsonArray;
begin
// [SCENARIO] Import a Shopify order from the "Shpfy Orders to Import" record.
- Codeunit.Run(Codeunit::"Shpfy Initialize Test");
+ Initialize();
// [GIVEN] Shopify Shop
Shop := CommunicationMgt.GetShopRecord();
@@ -168,7 +168,7 @@ codeunit 139608 "Shpfy Orders API Test"
begin
// [SCENARIO] Creating a random Shopify Order and try to map customer and product data.
// [SCENARIO] If everithing succeed the function will return true.
- Codeunit.Run(Codeunit::"Shpfy Initialize Test");
+ Initialize();
// [GIVEN] Shopify Shop
Shop := CommunicationMgt.GetShopRecord();
@@ -199,7 +199,7 @@ codeunit 139608 "Shpfy Orders API Test"
begin
// [SCENARIO] Creating a random Shopify Order and try to map customer and product data.
// [SCENARIO] If everithing succeed the function will return true.
- Codeunit.Run(Codeunit::"Shpfy Initialize Test");
+ Initialize();
// [GIVEN] Shopify Shop
Shop := CommunicationMgt.GetShopRecord();
@@ -230,7 +230,7 @@ codeunit 139608 "Shpfy Orders API Test"
begin
// [SCENARIO] Creating a random Shopify Order and try to map customer and product data.
// [SCENARIO] When the sales document is created, everything will be mapped and the sales document must exist.
- Codeunit.Run(Codeunit::"Shpfy Initialize Test");
+ Initialize();
// [GIVEN] Shopify Shop
Shop := CommunicationMgt.GetShopRecord();
@@ -275,7 +275,7 @@ codeunit 139608 "Shpfy Orders API Test"
begin
// [SCENARIO] Creating a random Shopify Order and try to map customer and product data.
// [SCENARIO] When the sales document is created, everything will be mapped and the sales document must exist.
- Codeunit.Run(Codeunit::"Shpfy Initialize Test");
+ Initialize();
// [GIVEN] Shopify Shop
Shop := CommunicationMgt.GetShopRecord();
@@ -321,7 +321,7 @@ codeunit 139608 "Shpfy Orders API Test"
ProcessOrders: Codeunit "Shpfy Process Orders";
begin
// [SCENARIO] When the sales document is created, tax priority is taken from the shop.
- Codeunit.Run(Codeunit::"Shpfy Initialize Test");
+ Initialize();
// [GIVEN] Shopify Shop
Shop := CommunicationMgt.GetShopRecord();
@@ -365,7 +365,7 @@ codeunit 139608 "Shpfy Orders API Test"
ProcessOrders: Codeunit "Shpfy Process Orders";
begin
// [SCENARIO] When the sales document is created, tax priority is taken from the shop
- Codeunit.Run(Codeunit::"Shpfy Initialize Test");
+ Initialize();
// [GIVEN] Shopify Shop
Shop := CommunicationMgt.GetShopRecord();
@@ -409,7 +409,7 @@ codeunit 139608 "Shpfy Orders API Test"
ProcessOrders: Codeunit "Shpfy Process Orders";
begin
// [SCENARIO] When the sales document is created, tax area is empty if there is no mapping
- Codeunit.Run(Codeunit::"Shpfy Initialize Test");
+ Initialize();
// [GIVEN] Shopify Shop
Shop := CommunicationMgt.GetShopRecord();
@@ -486,4 +486,12 @@ codeunit 139608 "Shpfy Orders API Test"
JShopifyOrder := OrderHandlingHelper.CreateShopifyOrderAsJson(Shop, OrdersToImport, JShopifyLineItems, B2B);
ImportShopifyOrder(Shop, OrderHeader, OrdersToImport, ImportOrder, JShopifyOrder, JShopifyLineItems);
end;
+
+ local procedure Initialize()
+ var
+ OrdersAPISubscriber: Codeunit "Shpfy Orders API Subscriber";
+ begin
+ Codeunit.Run(Codeunit::"Shpfy Initialize Test");
+ if BindSubscription(OrdersAPISubscriber) then;
+ end;
}
\ No newline at end of file
diff --git a/Apps/W1/Shopify/test/Order Refunds/ShpfyOrderRefundTest.Codeunit.al b/Apps/W1/Shopify/test/Order Refunds/ShpfyOrderRefundTest.Codeunit.al
index e77b8f835a..98f60f979a 100644
--- a/Apps/W1/Shopify/test/Order Refunds/ShpfyOrderRefundTest.Codeunit.al
+++ b/Apps/W1/Shopify/test/Order Refunds/ShpfyOrderRefundTest.Codeunit.al
@@ -44,7 +44,7 @@ codeunit 139611 "Shpfy Order Refund Test"
CanCreateDocument: boolean;
ErrorInfo: ErrorInfo;
begin
- // [SCENARION] Create a Credit Memo from a Shopify Refund where the item is totally refunded.
+ // [SCENARIO] Create a Credit Memo from a Shopify Refund where the item is totally refunded.
Codeunit.Run(Codeunit::"Shpfy Initialize Test");
Initialize();
@@ -81,7 +81,7 @@ codeunit 139611 "Shpfy Order Refund Test"
CanCreateDocument: boolean;
ErrorInfo: ErrorInfo;
begin
- // [SCENARION] Create a Credit Memo from a Shopify Refund where only the shipment is refunded.
+ // [SCENARIO] Create a Credit Memo from a Shopify Refund where only the shipment is refunded.
Codeunit.Run(Codeunit::"Shpfy Initialize Test");
Initialize();
@@ -118,7 +118,7 @@ codeunit 139611 "Shpfy Order Refund Test"
CanCreateDocument: boolean;
ErrorInfo: ErrorInfo;
begin
- // [SCENARION] Create a Credit Memo from a Shopify Refund where the item is not refunded.
+ // [SCENARIO] Create a Credit Memo from a Shopify Refund where the item is not refunded.
Codeunit.Run(Codeunit::"Shpfy Initialize Test");
Initialize();
@@ -146,6 +146,37 @@ codeunit 139611 "Shpfy Order Refund Test"
ResetProccesOnRefund(RefundId);
end;
+ [Test]
+ procedure UnitTestCanCreateCreditMemo()
+ var
+ RefundsAPI: Codeunit "Shpfy Refunds API";
+ RefundId1: BigInteger;
+ RefundId2: BigInteger;
+ RefundId3: BigInteger;
+ begin
+ // [SCENARIO] Can create credit memo check returns
+ // Non-zero refund = true
+ // Linked return refund = true
+ // Zero and not linked refund = false
+ Codeunit.Run(Codeunit::"Shpfy Initialize Test");
+ Initialize();
+
+ // [GIVEN] Non-zero refund
+ RefundId1 := ShopifyIds.Get('Refund').Get(5);
+ // [GIVEN] Linked return refund
+ RefundId2 := ShopifyIds.Get('Refund').Get(4);
+ // [GIVEN] Zero and not linked refund
+ RefundId3 := ShopifyIds.Get('Refund').Get(6);
+
+ // [WHEN] Execute VerifyRefundCanCreateCreditMemo
+ RefundsAPI.VerifyRefundCanCreateCreditMemo(RefundId1);
+ RefundsAPI.VerifyRefundCanCreateCreditMemo(RefundId2);
+ asserterror RefundsAPI.VerifyRefundCanCreateCreditMemo(RefundId3);
+
+ // [THEN] Only RefundId3 throws an error
+ LibraryAssert.ExpectedError('The refund imported from Shopify can''t be used to create a credit memo. Only refunds for paid items can be used to create credit memos.');
+ end;
+
var
ShopifyIds: Dictionary of [Text, List Of [BigInteger]];
IsInitialized: Boolean;
diff --git a/Apps/W1/Shopify/test/Order Refunds/ShpfyOrderRefundsHelper.Codeunit.al b/Apps/W1/Shopify/test/Order Refunds/ShpfyOrderRefundsHelper.Codeunit.al
index 8abb79482b..bff99f3c1f 100644
--- a/Apps/W1/Shopify/test/Order Refunds/ShpfyOrderRefundsHelper.Codeunit.al
+++ b/Apps/W1/Shopify/test/Order Refunds/ShpfyOrderRefundsHelper.Codeunit.al
@@ -52,6 +52,19 @@ codeunit 139564 "Shpfy Order Refunds Helper"
RefundId := CreateRefundHeader(OrderId, ShopifyIds.Get('Return').Get(2), 0);
CreateRefundLine(RefundId, ShopifyIds.Get('OrderLine').Get(2));
ShopifyIds.Get('Refund').Add(RefundId);
+
+ RefundId := CreateRefundHeader(OrderId, Any.IntegerInRange(100000, 999999), 0);
+ CreateRefundLine(RefundId, Any.IntegerInRange(100000, 999999));
+ ShopifyIds.Get('Refund').Add(RefundId); // 4th refund - linked zero
+
+ RefundId := CreateRefundHeader(OrderId, 0, 150);
+ CreateRefundLine(RefundId, Any.IntegerInRange(100000, 999999));
+ ShopifyIds.Get('Refund').Add(RefundId); // 5th refund - non linked non zero
+
+ RefundId := CreateRefundHeader(OrderId, 0, 0);
+ CreateRefundLine(RefundId, Any.IntegerInRange(100000, 999999));
+ ShopifyIds.Get('Refund').Add(RefundId); // 6th refund - not linked zero
+
Commit();
end;
@@ -197,8 +210,11 @@ codeunit 139564 "Shpfy Order Refunds Helper"
local procedure CreateRefundLine(RefundId: BigInteger; OrderLineId: BigInteger)
var
RefundLine: Record "Shpfy Refund Line";
+ RefundHeader: Record "Shpfy Refund Header";
+ RefundsAPI: Codeunit "Shpfy Refunds API";
RefundEnumConvertor: Codeunit "Shpfy Refund Enum Convertor";
begin
+ RefundHeader.Get(RefundId);
RefundLine."Refund Line Id" := Any.IntegerInRange(100000, 999999);
RefundLine."Refund Id" := RefundId;
RefundLine."Order Line Id" := OrderLineId;
@@ -207,7 +223,7 @@ codeunit 139564 "Shpfy Order Refunds Helper"
RefundLine.Restocked := true;
RefundLine.Amount := 156.38;
RefundLine."Subtotal Amount" := 156.38;
- RefundLine."Can Create Credit Memo" := true;
+ RefundLine."Can Create Credit Memo" := RefundsAPI.IsNonZeroOrReturnRefund(RefundHeader);
RefundLine.Insert();
end;
diff --git a/Apps/W1/Sustainability/app/src/Calculation/SustainabilityCalcMgt.Codeunit.al b/Apps/W1/Sustainability/app/src/Calculation/SustainabilityCalcMgt.Codeunit.al
index 4644c8733d..35add37418 100644
--- a/Apps/W1/Sustainability/app/src/Calculation/SustainabilityCalcMgt.Codeunit.al
+++ b/Apps/W1/Sustainability/app/src/Calculation/SustainabilityCalcMgt.Codeunit.al
@@ -70,7 +70,7 @@ codeunit 6218 "Sustainability Calc. Mgt."
begin
FilterGLEntry(SustainAccountCategory, FromDate, ToDate, GLEntry);
GLEntry.CalcSums(Amount);
- exit(GLEntry.Amount);
+ exit(Abs(GLEntry.Amount));
end;
internal procedure CollectGeneralLedgerAmount(var SustainabilityJnlLine: Record "Sustainability Jnl. Line")
diff --git a/Apps/W1/Sustainability/app/src/Journal/SustainabilityJnlBatches.Page.al b/Apps/W1/Sustainability/app/src/Journal/SustainabilityJnlBatches.Page.al
index f61ad8c7a3..f69e81f89b 100644
--- a/Apps/W1/Sustainability/app/src/Journal/SustainabilityJnlBatches.Page.al
+++ b/Apps/W1/Sustainability/app/src/Journal/SustainabilityJnlBatches.Page.al
@@ -41,4 +41,29 @@ page 6216 "Sustainability Jnl. Batches"
}
}
}
+ actions
+ {
+ area(processing)
+ {
+ action(EditJournal)
+ {
+ ApplicationArea = Basic, Suite;
+ Caption = 'Edit Journal';
+ Image = OpenJournal;
+ ShortCutKey = 'Return';
+ ToolTip = 'Open a journal based on the journal batch.';
+
+ trigger OnAction()
+ var
+ SustainabilityJnlTemplate: Record "Sustainability Jnl. Template";
+ SustainabilityJournalMgt: Codeunit "Sustainability Journal Mgt.";
+
+ begin
+ SustainabilityJnlTemplate.Get(Rec."Journal Template Name");
+ SustainabilityJournalMgt.OpenJournalPageFromBatch(Rec, SustainabilityJnlTemplate);
+ end;
+ }
+ }
+ }
+
}
\ No newline at end of file
diff --git a/Apps/W1/Sustainability/app/src/Journal/SustainabilityJournalMgt.Codeunit.al b/Apps/W1/Sustainability/app/src/Journal/SustainabilityJournalMgt.Codeunit.al
index dc00c792bf..d591155018 100644
--- a/Apps/W1/Sustainability/app/src/Journal/SustainabilityJournalMgt.Codeunit.al
+++ b/Apps/W1/Sustainability/app/src/Journal/SustainabilityJournalMgt.Codeunit.al
@@ -116,6 +116,25 @@ codeunit 6211 "Sustainability Journal Mgt."
end;
end;
+ ///
+ /// Open the Sustainability Journal for the active Sustainability Batch.
+ /// Specifies the Sustainability Journal Batch.
+ /// Specifies the "Sustainability Jnl. Template"
+ ///
+ procedure OpenJournalPageFromBatch(SustainabilityJnlBatch: Record "Sustainability Jnl. Batch"; SustainabilityJnlTemplate: Record "Sustainability Jnl. Template")
+ var
+ SustainabilityJnlLine: Record "Sustainability Jnl. Line";
+ begin
+ SustainabilityJnlLine.FilterGroup := 2;
+ SustainabilityJnlLine.SetRange("Journal Template Name", SustainabilityJnlTemplate.Name);
+ SustainabilityJnlLine.FilterGroup := 0;
+
+ SustainabilityJnlLine."Journal Template Name" := '';
+ SustainabilityJnlLine."Journal Batch Name" := SustainabilityJnlBatch.Name;
+ PAGE.Run(Page::"Sustainability Journal", SustainabilityJnlLine);
+ end;
+
+
internal procedure SelectBatch(SustainabilityJnlTemplate: Record "Sustainability Jnl. Template"; PreviousBatchName: Code[10]) SustainabilityJnlBatch: Record "Sustainability Jnl. Batch"
begin
SustainabilityJnlBatch.SetRange("Journal Template Name", SustainabilityJnlTemplate.Name);
diff --git a/Apps/W1/Sustainability/test/src/SustainabilityJournalTest.Codeunit.al b/Apps/W1/Sustainability/test/src/SustainabilityJournalTest.Codeunit.al
index 54ca91b65b..bfae0fd4c7 100644
--- a/Apps/W1/Sustainability/test/src/SustainabilityJournalTest.Codeunit.al
+++ b/Apps/W1/Sustainability/test/src/SustainabilityJournalTest.Codeunit.al
@@ -5,9 +5,13 @@ codeunit 148181 "Sustainability Journal Test"
var
Assert: Codeunit Assert;
+ LibraryERM: Codeunit "Library - ERM";
+ LibraryRandom: Codeunit "Library - Random";
LibrarySustainability: Codeunit "Library - Sustainability";
+ LibraryUtility: Codeunit "Library - Utility";
OneDefaultTemplateShouldBeCreatedLbl: Label 'One default template should be created after page is opened', Locked = true;
OneDefaultBatchShouldBeCreatedLbl: Label 'One default batch should be created after page is opened', Locked = true;
+ CustomAmountMustBePositiveLbl: Label 'The custom amount must be positive', Locked = true;
[Test]
procedure TestDefaultTemplateAndBatchSuccessfullyInserted()
@@ -100,4 +104,46 @@ codeunit 148181 "Sustainability Journal Test"
// [THEN] The Check should fail
asserterror SustainabilityJournalMgt.CheckScopeMatchWithBatch(SustainabilityJournalLine);
end;
+
+ [Test]
+ procedure TestCustomAmountIsPositiveForNegativeTotalOfGL()
+ var
+ SustainAccountCategory: Record "Sustain. Account Category";
+ GenJournalBatch: Record "Gen. Journal Batch";
+ GenJouralLine: Record "Gen. Journal Line";
+ SustainabilityCalcMgt: Codeunit "Sustainability Calc. Mgt.";
+ GenJournalTemplateCode: Code[10];
+ GLAccountNo: Code[20];
+ GLAmount, CustomAmount : Decimal;
+ begin
+ // [SCENARIO 540221] Test that the custom amount is positive when the total of the GL is negative
+
+ // [GIVEN] G/L Account exists
+ GLAccountNo := LibraryERM.CreateGLAccountNoWithDirectPosting();
+
+ // [GIVEN] G/L Batch and Template exist
+ GenJournalTemplateCode := LibraryERM.SelectGenJnlTemplate();
+ LibraryERM.CreateGenJournalBatch(GenJournalBatch, GenJournalTemplateCode);
+
+ // [GIVEN] G/L Entry with Amount = -1000 for the G/L Account
+ GLAmount := -LibraryRandom.RandDec(1000, 2);
+ LibraryERM.CreateGeneralJnlLine2WithBalAcc(GenJouralLine, GenJournalTemplateCode, GenJournalBatch.Name, GenJouralLine."Document Type"::Payment, GenJouralLine."Account Type"::"G/L Account", GLAccountNo, GenJouralLine."Account Type"::"G/L Account", LibraryERM.CreateGLAccountNoWithDirectPosting(), GLAmount);
+ LibraryERM.PostGeneralJnlLine(GenJouralLine);
+
+ // [GIVEN] Sustain Account Category with the G/L Account calculation foundation
+ SustainAccountCategory := CreateSustAccountCategoryWithGLAccountNo(GLAccountNo);
+
+ // [WHEN] Getting the collectable amount for sustanability account category
+ CustomAmount := SustainabilityCalcMgt.GetCollectableGLAmount(SustainAccountCategory, 0D, 0D);
+
+ // [THEN] The custom amount = 1000
+ Assert.AreEqual(Abs(GLAmount), CustomAmount, CustomAmountMustBePositiveLbl);
+ end;
+
+ local procedure CreateSustAccountCategoryWithGLAccountNo(GLAccountNo: Code[20]) SustainAccountCategory: Record "Sustain. Account Category"
+ begin
+ SustainAccountCategory := LibrarySustainability.InsertAccountCategory(LibraryUtility.GenerateGUID(), LibraryUtility.GenerateGUID(), Enum::"Emission Scope"::"Scope 2", Enum::"Calculation Foundation"::Custom, true, true, true, 'GL', true);
+ SustainAccountCategory."G/L Account Filter" := GLAccountNo;
+ SustainAccountCategory.Modify(true);
+ end;
}
\ No newline at end of file
diff --git a/Apps/W1/TransactionStorage/app/src/TransactStorageExportData.Codeunit.al b/Apps/W1/TransactionStorage/app/src/TransactStorageExportData.Codeunit.al
index 66e5ab363c..7354663de8 100644
--- a/Apps/W1/TransactionStorage/app/src/TransactStorageExportData.Codeunit.al
+++ b/Apps/W1/TransactionStorage/app/src/TransactStorageExportData.Codeunit.al
@@ -1263,6 +1263,6 @@ codeunit 6202 "Transact. Storage Export Data"
local procedure GetRecordChunkSize(): Integer
begin
- exit(200000);
+ exit(100000);
end;
}
\ No newline at end of file
diff --git a/Apps/W1/TransactionStorage/app/src/TransactionStorageABS.Codeunit.al b/Apps/W1/TransactionStorage/app/src/TransactionStorageABS.Codeunit.al
index 18b2e29f44..d8511395f0 100644
--- a/Apps/W1/TransactionStorage/app/src/TransactionStorageABS.Codeunit.al
+++ b/Apps/W1/TransactionStorage/app/src/TransactionStorageABS.Codeunit.al
@@ -32,6 +32,7 @@ codeunit 6205 "Transaction Storage ABS"
TransactionStorageTok: Label 'Transaction Storage', Locked = true;
JsonContentTypeHeaderTok: Label 'application/json', Locked = true;
ExportLogFileNameTxt: Label 'ExportLog', Locked = true;
+ MetadataFileNameTxt: Label 'metadata', Locked = true;
SendBlobBlockForTableTok: Label 'Send blob block for table %1 with name %2 to Azure Function', Comment = '%1 - table id, %2 - blob name', Locked = true;
ExportOfIncomingDocTok: Label 'Export of incoming document %1 with name %2', Comment = '%1 - incoming document file name, %2 - blob name', Locked = true;
IncomingDocsExportedTxt: Label 'Incoming documents were exported.', Locked = true;
@@ -80,6 +81,7 @@ codeunit 6205 "Transaction Storage ABS"
WriteJsonBlobsToABS(AzureFunctionsAuthForJson, CurrentDate, ExportLog);
WriteIncomingDocumentsToABS(IncomingDocs, AzureFunctionsAuthForDoc, CurrentDate, ExportLog);
WriteExportLog(ExportLog, AzureFunctionsAuthForJson, CurrentDate);
+ WriteMetadata(AzureFunctionsAuthForJson, CurrentDate);
FeatureTelemetry.LogUsage('0000LQ4', TransactionStorageTok, ExportedToABSTxt);
end;
@@ -153,6 +155,7 @@ codeunit 6205 "Transaction Storage ABS"
IncomingDocKey: Text;
BlobFolder: Text;
BlobName: Text;
+ BlobNameToLog: Text;
AttachmentName: Text;
FileExtension: Text;
ContainerName: Text;
@@ -184,8 +187,10 @@ codeunit 6205 "Transaction Storage ABS"
AttachmentName := RemoveProhibitedChars(IncomingDocAttachment.Name);
FileExtension := RemoveProhibitedChars(IncomingDocAttachment."File Extension");
BlobName := StrSubstNo(IncomingDocBlobNameTxt, BlobFolder, IncomingDocKey, AttachmentName, FileExtension);
+ BlobNameToLog := StrSubstNo(IncomingDocBlobNameTxt, BlobFolder, IncomingDocKey, EncodeDocName(AttachmentName), FileExtension);
AzureFunctionsResponse := SendDocumentToAzureFunction(AzureFunctionsAuth, ContainerName, BlobName, TempBlob, BlobExpirationDate);
- HandleAzureFunctionResponse(AzureFunctionsResponse, StrSubstNo(ExportOfIncomingDocTok, IncomingDocAttachment.Name, BlobName), 0);
+ HandleAzureFunctionResponse(
+ AzureFunctionsResponse, StrSubstNo(ExportOfIncomingDocTok, EncodeDocName(IncomingDocAttachment.Name), BlobNameToLog), 0);
ExportedDocCount += 1;
end;
until IncomingDocAttachment.Next() = 0;
@@ -215,6 +220,34 @@ codeunit 6205 "Transaction Storage ABS"
SendJsonTextToAzureFunction(AzureFunctionsAuth, ContainerName, BlobName, JsonData, BlobExpirationDate);
end;
+ [NonDebuggable]
+ local procedure WriteMetadata(AzureFunctionsAuth: Interface "Azure Functions Authentication"; CurrentDate: Date)
+ var
+ Metadata: JsonObject;
+ AppInfo: ModuleInfo;
+ BlobExpirationDate: Date;
+ ContainerName: Text;
+ BlobFolder: Text;
+ BlobName: Text;
+ JsonData: Text;
+ begin
+ NavApp.GetCurrentModuleInfo(AppInfo);
+ ContainerName := GetCompanyCVRNumber();
+ BlobFolder := GetBlobFolder(CurrentDate);
+ BlobExpirationDate := GetBlobExpirationDate(CurrentDate);
+ BlobName := StrSubstNo(JsonBlobNameTxt, BlobFolder, MetadataFileNameTxt);
+ Metadata.Add('aadTenantId', GetAadTenantId());
+ Metadata.Add('environmentName', GetEnvironmentName());
+ Metadata.Add('companyName', CompanyName());
+ Metadata.Add('vatRegistrationNo', GetCompanyVATRegistrationNo());
+ Metadata.Add('cvrNo', GetCompanyCVRNumber());
+ Metadata.Add('bcVersion', Format(AppInfo.DataVersion()));
+ Metadata.Add('exportDate', CurrentDate);
+ Metadata.Add('expirationDate', BlobExpirationDate);
+ Metadata.WriteTo(JsonData);
+ SendJsonTextToAzureFunction(AzureFunctionsAuth, ContainerName, BlobName, JsonData, BlobExpirationDate);
+ end;
+
[NonDebuggable]
local procedure SendJsonTextToAzureFunction(var AzureFunctionsAuth: Interface "Azure Functions Authentication"; ContainerName: Text; BlobName: Text; JsonText: Text; BlobExpirationDate: Date) AzureFunctionsResponse: Codeunit "Azure Functions Response"
var
@@ -421,4 +454,22 @@ codeunit 6205 "Transaction Storage ABS"
// remove consecutive hypens
OutputValue := Regex.Replace(OutputValue, '-+', '-');
end;
+
+ [NonDebuggable]
+ local procedure EncodeDocName(InputValue: Text) OutputValue: Text
+ var
+ Ch: Char;
+ begin
+ foreach Ch in InputValue do
+ case true of
+ (Ch >= 'a') and (Ch <= 'z'):
+ OutputValue += 'a';
+ (Ch >= 'A') and (Ch <= 'Z'):
+ OutputValue += 'A';
+ (Ch >= '0') and (Ch <= '9'):
+ OutputValue += '0';
+ else
+ OutputValue += Ch;
+ end;
+ end;
}
diff --git a/Build/Packages.json b/Build/Packages.json
index d85aa4c888..3ee793130b 100644
--- a/Build/Packages.json
+++ b/Build/Packages.json
@@ -4,7 +4,7 @@
"Source": "NuGet.org"
},
"AppBaselines-BCArtifacts": {
- "Version": "24.2.19548.0",
+ "Version": "24.3.21374.21695",
"Source": "BCArtifacts",
"_comment": "Used to fetch app baselines from BC artifacts"
}