import { SpainTaxCatalogProvider } from '@erp/core'; import { MultiSelect } from "@repo/rdx-ui/components"; import { cn } from "@repo/shadcn-ui/lib/utils"; import { useCallback, useMemo } from 'react'; import { useTranslation } from "../i18n"; interface CustomerInvoiceTaxesMultiSelect { value?: string[]; onChange: (selectedValues: string[]) => void; className?: string; inputId?: string; [key: string]: any; // Allow other props to be passed } export const CustomerInvoiceTaxesMultiSelect = (props: CustomerInvoiceTaxesMultiSelect) => { const { value, onChange, className, inputId, ...otherProps } = props; const { t } = useTranslation(); const taxCatalog = useMemo(() => SpainTaxCatalogProvider(), []); const catalogLookup = useMemo(() => SpainTaxCatalogProvider().toOptionLookup(), []); /** * Filtra para mantener solo un elemento por grupo. * Si hay duplicados dentro del mismo grupo, se queda con el Ășltimo. */ const filterSelectedByGroup = useCallback((selectedValues: string[]) => { const groupMap = new Map(); selectedValues.forEach((code) => { const item = taxCatalog.findByCode(code).getOrUndefined(); const group = item?.group ?? "ungrouped"; groupMap.set(group, code); // Sobrescribe el anterior del mismo grupo }); return Array.from(groupMap.values()); }, [taxCatalog]); return (
); };