From a91a2f415df0bb5da275f9161c3ac83d4ee5128b Mon Sep 17 00:00:00 2001 From: Horux Dev Date: Fri, 22 May 2026 23:20:36 +0000 Subject: [PATCH] =?UTF-8?q?feat(facturacion):=20cuenta=20predial=20para=20?= =?UTF-8?q?r=C3=A9gimen=20606=20(arrendamiento)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Frontend: muestra input 'No. Cuenta Predial' en sección 'Datos del Inmueble' cuando el régimen del emisor es 606 (Arrendamiento), antes de Conceptos - Frontend: incluye cuentaPredial en payload; se resetea al cambiar contribuyente - Backend: pasa property_tax_account a nivel de cada item en Facturapi para facturapi.service.ts y contribuyente-facturapi.service.ts - Build y deploy exitosos --- .../contribuyente-facturapi.service.ts | 1 + apps/api/src/services/facturapi.service.ts | 1 + apps/web/app/(dashboard)/facturacion/page.tsx | 27 +++++++++++++++++++ apps/web/lib/api/facturacion.ts | 1 + 4 files changed, 30 insertions(+) diff --git a/apps/api/src/services/contribuyente-facturapi.service.ts b/apps/api/src/services/contribuyente-facturapi.service.ts index 49fc197..a9b6f34 100644 --- a/apps/api/src/services/contribuyente-facturapi.service.ts +++ b/apps/api/src/services/contribuyente-facturapi.service.ts @@ -443,6 +443,7 @@ export async function createInvoiceContribuyente( ...(t.withholding ? { withholding: true } : {}), })) || [{ type: 'IVA', rate: 0.16 }], }, + ...(data.cuentaPredial ? { property_tax_account: data.cuentaPredial } : {}), })); } diff --git a/apps/api/src/services/facturapi.service.ts b/apps/api/src/services/facturapi.service.ts index 4fc7f3e..205dce1 100644 --- a/apps/api/src/services/facturapi.service.ts +++ b/apps/api/src/services/facturapi.service.ts @@ -323,6 +323,7 @@ export async function createInvoice( ...(t.withholding ? { withholding: true } : {}), })) || [{ type: 'IVA', rate: 0.16 }], }, + ...((data as any).cuentaPredial ? { property_tax_account: (data as any).cuentaPredial } : {}), })); } diff --git a/apps/web/app/(dashboard)/facturacion/page.tsx b/apps/web/app/(dashboard)/facturacion/page.tsx index 8371e8c..f55fbcf 100644 --- a/apps/web/app/(dashboard)/facturacion/page.tsx +++ b/apps/web/app/(dashboard)/facturacion/page.tsx @@ -303,6 +303,7 @@ export default function FacturacionPage() { const [serie, setSerie] = useState(''); const [folio, setFolio] = useState(''); const [condiciones, setCondiciones] = useState(''); + const [cuentaPredial, setCuentaPredial] = useState(''); const [fechaEmision, setFechaEmision] = useState(() => { const d = new Date(); d.setHours(12, 0, 0, 0); @@ -349,6 +350,7 @@ export default function FacturacionPage() { setSerie(''); setFolio(''); setCondiciones(''); + setCuentaPredial(''); setConceptos([{ ...emptyConcepto, unitKey: defaultUnit }]); setRelatedUuid(''); setRelatedRelationship('01'); @@ -658,6 +660,7 @@ export default function FacturacionPage() { if (serie) data.series = serie; if (folio) data.folioNumber = parseInt(folio) || undefined; if (condiciones) data.conditions = condiciones; + if (cuentaPredial) data.cuentaPredial = cuentaPredial; // Validar fecha de emisión para I, E, T if (tipoComprobante !== 'P' && fechaEmision) { @@ -1345,6 +1348,30 @@ export default function FacturacionPage() { )} + {/* Cuenta Predial — solo régimen 606 (Arrendamiento) */} + {emisorRegimen === '606' && config.needsConceptos && ( + + + Datos del Inmueble + Obligatorio para arrendamiento (SAT) + + +
+ + setCuentaPredial(e.target.value.replace(/[^0-9a-zA-Z]/g, '').toUpperCase())} + placeholder="Ej. 15956011002" + maxLength={150} + /> +

+ Número de cuenta predial del inmueble arrendado. Si contiene letras o guiones, sustitúyalos por "0". +

+
+
+
+ )} + {/* Conceptos (Ingreso, Egreso, Traslado) */} {config.needsConceptos && ( diff --git a/apps/web/lib/api/facturacion.ts b/apps/web/lib/api/facturacion.ts index a623544..51e71cf 100644 --- a/apps/web/lib/api/facturacion.ts +++ b/apps/web/lib/api/facturacion.ts @@ -70,6 +70,7 @@ export interface InvoiceData { folioNumber?: number; conditions?: string; fechaEmision?: string; + cuentaPredial?: string; } export interface InvoiceResult {