feat(facturacion): cuenta predial para régimen 606 (arrendamiento)

- 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
This commit is contained in:
Horux Dev
2026-05-22 23:20:36 +00:00
parent 0c8ae05919
commit a91a2f415d
4 changed files with 30 additions and 0 deletions

View File

@@ -443,6 +443,7 @@ export async function createInvoiceContribuyente(
...(t.withholding ? { withholding: true } : {}),
})) || [{ type: 'IVA', rate: 0.16 }],
},
...(data.cuentaPredial ? { property_tax_account: data.cuentaPredial } : {}),
}));
}

View File

@@ -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 } : {}),
}));
}

View File

@@ -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() {
</Card>
)}
{/* Cuenta Predial — solo régimen 606 (Arrendamiento) */}
{emisorRegimen === '606' && config.needsConceptos && (
<Card>
<CardHeader>
<CardTitle className="text-base">Datos del Inmueble</CardTitle>
<CardDescription>Obligatorio para arrendamiento (SAT)</CardDescription>
</CardHeader>
<CardContent>
<div className="space-y-2">
<Label>No. Cuenta Predial</Label>
<Input
value={cuentaPredial}
onChange={e => setCuentaPredial(e.target.value.replace(/[^0-9a-zA-Z]/g, '').toUpperCase())}
placeholder="Ej. 15956011002"
maxLength={150}
/>
<p className="text-xs text-muted-foreground">
Número de cuenta predial del inmueble arrendado. Si contiene letras o guiones, sustitúyalos por "0".
</p>
</div>
</CardContent>
</Card>
)}
{/* Conceptos (Ingreso, Egreso, Traslado) */}
{config.needsConceptos && (
<Card>

View File

@@ -70,6 +70,7 @@ export interface InvoiceData {
folioNumber?: number;
conditions?: string;
fechaEmision?: string;
cuentaPredial?: string;
}
export interface InvoiceResult {