From 4bff3361ee2d739c48cf540de5e9e91fcc2cb378 Mon Sep 17 00:00:00 2001
From: Dima Rifai <dima.rifai@gmail.com>
Date: Mon, 17 Mar 2025 12:31:58 +0200
Subject: [PATCH] Issue #486 - Handle Select Financial

---
 components/OperationTypesDialog.tsx | 33 ++++++++++++++++++++++++++++-
 1 file changed, 32 insertions(+), 1 deletion(-)

diff --git a/components/OperationTypesDialog.tsx b/components/OperationTypesDialog.tsx
index 507165f0..4c6a0bfd 100644
--- a/components/OperationTypesDialog.tsx
+++ b/components/OperationTypesDialog.tsx
@@ -17,7 +17,7 @@ import Chip from "./Chip";
 import { categorizedOperationTypes } from "@/utils/CategorizedOperationTypes";
 import Explorer from "@/types/Explorer";
 import { ChevronDown, Search } from "lucide-react";
-
+import { FinancialOperationTypes } from "@/utils/FinancialOperationTypes";
 type OperationTypesDialogProps = {
   operationTypes?: Explorer.ExtendedOperationTypePattern[];
   triggerTitle: string;
@@ -187,6 +187,30 @@ const OperationTypesDialog: React.FC<OperationTypesDialogProps> = ({
     setExpandedSections(allMatchingCategories);
   };
 
+  const selectFinancial = () => {
+    const financialOperationTypePatterns = operationTypes?.filter(operationType =>
+      FinancialOperationTypes.includes(operationType.operation_name)
+    );
+
+    if (!financialOperationTypePatterns) {
+        return;
+    }
+
+    const financialIds = financialOperationTypePatterns
+      .filter(filterOperations)
+      .map((operationType) => operationType.op_type_id);
+
+    let finaList = [...financialIds, ...selectedOperationsIds];
+    finaList = finaList.filter((id, index) => finaList.indexOf(id) === index);
+    setSelectedOperationsIds([...finaList]);
+    const allMatchingCategories = getCategoriesToExpand(
+      finaList,
+      operationTypes,
+      categorizedOperationTypes
+    );
+    setExpandedSections(allMatchingCategories);
+  };
+
   const selectVirtual = () => {
     const virtualIds = virtualOperations
       .filter(filterOperations)
@@ -448,6 +472,13 @@ const OperationTypesDialog: React.FC<OperationTypesDialogProps> = ({
               >
                 Virtual
               </Button>
+              <Button
+                type="button"
+                className="operations-button text-xs"
+                onClick={selectFinancial}
+              >
+                Financial
+              </Button>
               <Button
                 type="button"
                 className="operations-button text-xs"
-- 
GitLab