feat(conciliacion): filtro autocomplete en columna Banco de conciliadas
This commit is contained in:
@@ -40,8 +40,8 @@ function FilterHeader({
|
|||||||
}: {
|
}: {
|
||||||
label: string;
|
label: string;
|
||||||
filterKey: string;
|
filterKey: string;
|
||||||
filters: { rfcEmisor: string; nombreEmisor: string; rfcReceptor: string; nombreReceptor: string };
|
filters: Record<string, string>;
|
||||||
setFilters: React.Dispatch<React.SetStateAction<{ rfcEmisor: string; nombreEmisor: string; rfcReceptor: string; nombreReceptor: string }>>;
|
setFilters: any;
|
||||||
openFilter: string | null;
|
openFilter: string | null;
|
||||||
setOpenFilter: (v: string | null) => void;
|
setOpenFilter: (v: string | null) => void;
|
||||||
suggestions: string[];
|
suggestions: string[];
|
||||||
@@ -145,7 +145,7 @@ export default function ConciliacionPage() {
|
|||||||
const [openFilterPendientes, setOpenFilterPendientes] = useState<string | null>(null);
|
const [openFilterPendientes, setOpenFilterPendientes] = useState<string | null>(null);
|
||||||
|
|
||||||
// Filtros por columna — Conciliadas
|
// Filtros por columna — Conciliadas
|
||||||
const [filtersConciliadas, setFiltersConciliadas] = useState({ rfcEmisor: '', nombreEmisor: '', rfcReceptor: '', nombreReceptor: '' });
|
const [filtersConciliadas, setFiltersConciliadas] = useState({ rfcEmisor: '', nombreEmisor: '', rfcReceptor: '', nombreReceptor: '', banco: '' });
|
||||||
const [openFilterConciliadas, setOpenFilterConciliadas] = useState<string | null>(null);
|
const [openFilterConciliadas, setOpenFilterConciliadas] = useState<string | null>(null);
|
||||||
|
|
||||||
const { user } = useAuthStore();
|
const { user } = useAuthStore();
|
||||||
@@ -174,6 +174,7 @@ export default function ConciliacionPage() {
|
|||||||
nombreEmisor: [...new Set(allCfdis.map((c: any) => c.nombreEmisor).filter(Boolean))].sort(),
|
nombreEmisor: [...new Set(allCfdis.map((c: any) => c.nombreEmisor).filter(Boolean))].sort(),
|
||||||
rfcReceptor: [...new Set(allCfdis.map((c: any) => c.rfcReceptor).filter(Boolean))].sort(),
|
rfcReceptor: [...new Set(allCfdis.map((c: any) => c.rfcReceptor).filter(Boolean))].sort(),
|
||||||
nombreReceptor: [...new Set(allCfdis.map((c: any) => c.nombreReceptor).filter(Boolean))].sort(),
|
nombreReceptor: [...new Set(allCfdis.map((c: any) => c.nombreReceptor).filter(Boolean))].sort(),
|
||||||
|
banco: [...new Set(conciliadas.map((c: any) => c.conciliacion?.banco).filter(Boolean))].sort(),
|
||||||
};
|
};
|
||||||
|
|
||||||
// Score cards — tipo P usa monto_pago_mxn, otros usan total_mxn
|
// Score cards — tipo P usa monto_pago_mxn, otros usan total_mxn
|
||||||
@@ -188,7 +189,7 @@ export default function ConciliacionPage() {
|
|||||||
setSortConciliadas(null);
|
setSortConciliadas(null);
|
||||||
setFiltersPendientes({ rfcEmisor: '', nombreEmisor: '', rfcReceptor: '', nombreReceptor: '' });
|
setFiltersPendientes({ rfcEmisor: '', nombreEmisor: '', rfcReceptor: '', nombreReceptor: '' });
|
||||||
setOpenFilterPendientes(null);
|
setOpenFilterPendientes(null);
|
||||||
setFiltersConciliadas({ rfcEmisor: '', nombreEmisor: '', rfcReceptor: '', nombreReceptor: '' });
|
setFiltersConciliadas({ rfcEmisor: '', nombreEmisor: '', rfcReceptor: '', nombreReceptor: '', banco: '' });
|
||||||
setOpenFilterConciliadas(null);
|
setOpenFilterConciliadas(null);
|
||||||
}, [activeTab, fechaInicio, fechaFin, regimenSeleccionado]);
|
}, [activeTab, fechaInicio, fechaFin, regimenSeleccionado]);
|
||||||
|
|
||||||
@@ -238,12 +239,13 @@ export default function ConciliacionPage() {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
function matchesColumnFilters(c: any, filters: { rfcEmisor: string; nombreEmisor: string; rfcReceptor: string; nombreReceptor: string }) {
|
function matchesColumnFilters(c: any, filters: Record<string, string>) {
|
||||||
const rfcEmisorMatch = !filters.rfcEmisor || (c.rfcEmisor || '').toLowerCase().includes(filters.rfcEmisor.toLowerCase());
|
const rfcEmisorMatch = !filters.rfcEmisor || (c.rfcEmisor || '').toLowerCase().includes(filters.rfcEmisor.toLowerCase());
|
||||||
const nombreEmisorMatch = !filters.nombreEmisor || (c.nombreEmisor || '').toLowerCase().includes(filters.nombreEmisor.toLowerCase());
|
const nombreEmisorMatch = !filters.nombreEmisor || (c.nombreEmisor || '').toLowerCase().includes(filters.nombreEmisor.toLowerCase());
|
||||||
const rfcReceptorMatch = !filters.rfcReceptor || (c.rfcReceptor || '').toLowerCase().includes(filters.rfcReceptor.toLowerCase());
|
const rfcReceptorMatch = !filters.rfcReceptor || (c.rfcReceptor || '').toLowerCase().includes(filters.rfcReceptor.toLowerCase());
|
||||||
const nombreReceptorMatch = !filters.nombreReceptor || (c.nombreReceptor || '').toLowerCase().includes(filters.nombreReceptor.toLowerCase());
|
const nombreReceptorMatch = !filters.nombreReceptor || (c.nombreReceptor || '').toLowerCase().includes(filters.nombreReceptor.toLowerCase());
|
||||||
return rfcEmisorMatch && nombreEmisorMatch && rfcReceptorMatch && nombreReceptorMatch;
|
const bancoMatch = !filters.banco || ((c.conciliacion?.banco || '') + ' ****' + (c.conciliacion?.terminacionCuenta || '')).toLowerCase().includes(filters.banco.toLowerCase());
|
||||||
|
return rfcEmisorMatch && nombreEmisorMatch && rfcReceptorMatch && nombreReceptorMatch && bancoMatch;
|
||||||
}
|
}
|
||||||
|
|
||||||
function sortCfdis(list: any[], sort: { field: 'fecha' | 'total'; dir: 'asc' | 'desc' } | null) {
|
function sortCfdis(list: any[], sort: { field: 'fecha' | 'total'; dir: 'asc' | 'desc' } | null) {
|
||||||
@@ -519,7 +521,7 @@ export default function ConciliacionPage() {
|
|||||||
<span className="flex items-center justify-center gap-1">Total MXN <ArrowUpDown className="h-3 w-3" /></span>
|
<span className="flex items-center justify-center gap-1">Total MXN <ArrowUpDown className="h-3 w-3" /></span>
|
||||||
</th>
|
</th>
|
||||||
<th className="pb-3 font-medium">Fecha Pago</th>
|
<th className="pb-3 font-medium">Fecha Pago</th>
|
||||||
<th className="pb-3 font-medium">Banco</th>
|
<th className="pb-3 font-medium"><FilterHeader label="Banco" filterKey="banco" filters={filtersConciliadas} setFilters={setFiltersConciliadas} openFilter={openFilterConciliadas} setOpenFilter={setOpenFilterConciliadas} suggestions={uniqueSuggestions.banco} /></th>
|
||||||
<th className="pb-3"></th>
|
<th className="pb-3"></th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
|
|||||||
Reference in New Issue
Block a user