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) + + + + No. Cuenta Predial + 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 {
+ Número de cuenta predial del inmueble arrendado. Si contiene letras o guiones, sustitúyalos por "0". +