64 lines
2.8 KiB
TypeScript
64 lines
2.8 KiB
TypeScript
import { prisma, tenantDb } from '../src/config/database.js';
|
|
|
|
const uuid = (process.argv[2] || '5c874749-748f-11f0-96b1-2b9310891836').toLowerCase();
|
|
|
|
async function main() {
|
|
const tenants = await prisma.tenant.findMany({
|
|
where: { active: true },
|
|
select: { id: true, rfc: true, databaseName: true },
|
|
});
|
|
for (const t of tenants) {
|
|
const pool = await tenantDb.getPool(t.id, t.databaseName);
|
|
const { rows } = await pool.query(
|
|
`SELECT
|
|
c.uuid, c.total_mxn,
|
|
COALESCE((
|
|
SELECT SUM(COALESCE(p.monto_pago_mxn, 0))
|
|
FROM cfdis p
|
|
WHERE p.tipo_comprobante = 'P'
|
|
AND LOWER(COALESCE(p.uuid_relacionado, '')) LIKE '%' || LOWER(c.uuid) || '%'
|
|
AND p.status NOT IN ('Cancelado', '0')
|
|
), 0) AS pagos_p,
|
|
COALESCE((
|
|
SELECT SUM(COALESCE(e.total_mxn, 0))
|
|
FROM cfdis e
|
|
WHERE e.tipo_comprobante = 'E'
|
|
AND COALESCE(e.cfdi_tipo_relacion, '') <> '07'
|
|
AND e.cfdis_relacionados IS NOT NULL
|
|
AND LOWER(c.uuid) = ANY(string_to_array(LOWER(e.cfdis_relacionados), '|'))
|
|
AND e.status NOT IN ('Cancelado', '0')
|
|
), 0) AS ncs,
|
|
CASE WHEN c.cfdi_tipo_relacion = '07' AND c.cfdis_relacionados IS NOT NULL THEN
|
|
COALESCE((
|
|
SELECT SUM(COALESCE(a.total_mxn, 0))
|
|
FROM cfdis a
|
|
WHERE LOWER(a.uuid) = ANY(string_to_array(LOWER(c.cfdis_relacionados), '|'))
|
|
AND a.status NOT IN ('Cancelado', '0')
|
|
), 0) ELSE 0 END AS anticipo_aplicado,
|
|
(
|
|
COALESCE(c.total_mxn, 0)
|
|
- COALESCE((SELECT SUM(COALESCE(p.monto_pago_mxn, 0)) FROM cfdis p
|
|
WHERE p.tipo_comprobante = 'P'
|
|
AND LOWER(COALESCE(p.uuid_relacionado, '')) LIKE '%' || LOWER(c.uuid) || '%'
|
|
AND p.status NOT IN ('Cancelado', '0')), 0)
|
|
- COALESCE((SELECT SUM(COALESCE(e.total_mxn, 0)) FROM cfdis e
|
|
WHERE e.tipo_comprobante = 'E' AND COALESCE(e.cfdi_tipo_relacion,'') <> '07'
|
|
AND e.cfdis_relacionados IS NOT NULL
|
|
AND LOWER(c.uuid) = ANY(string_to_array(LOWER(e.cfdis_relacionados), '|'))
|
|
AND e.status NOT IN ('Cancelado','0')), 0)
|
|
- CASE WHEN c.cfdi_tipo_relacion = '07' AND c.cfdis_relacionados IS NOT NULL THEN
|
|
COALESCE((SELECT SUM(COALESCE(a.total_mxn,0)) FROM cfdis a
|
|
WHERE LOWER(a.uuid) = ANY(string_to_array(LOWER(c.cfdis_relacionados),'|'))
|
|
AND a.status NOT IN ('Cancelado','0')), 0)
|
|
ELSE 0 END
|
|
) AS saldo_computado
|
|
FROM cfdis c WHERE LOWER(c.uuid) = $1`,
|
|
[uuid],
|
|
);
|
|
if (rows.length === 0) continue;
|
|
console.log(`[${t.rfc}]`, rows[0]);
|
|
}
|
|
await prisma.$disconnect();
|
|
}
|
|
main().catch(async (e) => { console.error(e); await prisma.$disconnect().catch(() => {}); process.exit(1); });
|