Error en Factura C IVA

RunLLM
RunLLM

El error (10246) indica que, según la Resolución General N° 5616, ahora es obligatorio informar el campo "Condición Frente al IVA del receptor" al emitir comprobantes, incluyendo Factura C. Debes agregar el campo CondicionIVAReceptorId con el valor correspondiente al tipo de receptor (por ejemplo, 5 para Consumidor Final) en la data del comprobante; puedes consultar los valores válidos usando el método FEParamGetCondicionIvaReceptor del SDK o API de AFIP/ARCA. Más detalles y ejemplos en la documentación oficial y en la guía de solución al error 10242, que aplica igual para este caso por la misma normativa y campo requerido.

¿Te gustaría ver un ejemplo de código para agregar este campo o necesitas ayuda para consultar los valores válidos de condición IVA?

Sources:

San
San

@user

RunLLM
RunLLM
San
San

@user async function generateInvoiceC(req, res, next) { try { // Obtener datos del cuerpo de la solicitud const invoiceParams = req.body || {};

// Validar los datos de entrada
if (invoiceParams.ImpNeto && isNaN(parseFloat(invoiceParams.ImpNeto))) {
  return res.status(400).json({
    success: false,
    message: 'El importe neto debe ser un número válido'
  });
}

if (invoiceParams.DocNro && isNaN(parseInt(invoiceParams.DocNro))) {
  return res.status(400).json({
    success: false,
    message: 'El número de documento debe ser un número válido'
  });
}

// Generar la factura con los datos proporcionados
const invoiceData = await invoiceService.generateInvoiceC(invoiceParams);
const qrData = await invoiceService.generateQRForInvoice(invoiceData, 'C');
const pdfData = await invoiceService.createPDFForInvoice(invoiceData, qrData, 'C');

// Guardar la factura en la base de datos
const saveResult = await dbService.saveInvoice(invoiceData, qrData, pdfData, 'C');

res.status(200).json({
  success: true,
  data: {
    invoice: invoiceData,
    qr: qrData,
    pdf: pdfData,
    dbSave: saveResult
  }
});

} catch (error) { console.error('Error en el controlador de Factura C:', error.message); next(error); } }

RunLLM
RunLLM

El error ocurre porque falta incluir el campo obligatorio CondicionIVAReceptorId en los datos de la factura. Desde la Resolución General 5616, este campo es requerido para emitir comprobantes electrónicos, incluyendo Factura C. Debes agregarlo en invoiceParams antes de llamar a generateInvoiceC, usando el valor correspondiente según el tipo de receptor (por ejemplo, 5 para Consumidor Final) y puedes obtener la lista de valores válidos con el método FEParamGetCondicionIvaReceptor del SDK.

¿Quieres un ejemplo de cómo agregar este campo en tu función o cómo consultar los valores válidos?

Sources:

San
San

@user async function generateInvoiceC(invoiceData = {}) { try { // Obtener el punto de venta desde los datos o usar el predeterminado const ptoVta = invoiceData.PtoVta || puntoDeVenta;

const lastVoucher = await afip.ElectronicBilling.getLastVoucher(ptoVta, tipoDeFacturaC);
const nextVoucher = invoiceData.CbteDesde || (lastVoucher + 1);

console.log(`Creando Factura C número: ${nextVoucher}`);

const today = new Date();
const formattedDate = formatDate(today);

// Para Factura C, el ImpIVA es siempre 0 y el ImpTotal es igual al ImpNeto
const impNeto = invoiceData.ImpNeto || 100;
const impTotal = invoiceData.ImpTotal || impNeto;

const data = {
  CantReg: 1,
  PtoVta: ptoVta,
  CbteTipo: tipoDeFacturaC,
  Concepto: 1,
  DocTipo: invoiceData.DocTipo || 99,
  DocNro: invoiceData.DocNro || 0,
  CbteDesde: nextVoucher,
  CbteHasta: nextVoucher,
  CbteFch: parseInt(formattedDate.replace(/-/g, '')),
  FchServDesde: null,
  FchServHasta: null,
  FchVtoPago: null,
  ImpTotal: impTotal,
  ImpTotConc: 0,
  ImpNeto: impNeto,
  ImpOpEx: 0,
  ImpIVA: 0,
  ImpTrib: 0,
  MonId: 'PES',
  MonCotiz: 1
};

const response = await afip.ElectronicBilling.createVoucher(data);

console.log('Datos de Factura C:', data);
console.log(`CAE asignado: ${response.CAE}`);
console.log(`Fecha de vencimiento del CAE: ${response.CAEFchVto.substring(0, 4)}-${response.CAEFchVto.substring(4, 6)}-${response.CAEFchVto.substring(6, 8)}`);

return {
  ...data,
  CAE: response.CAE,
  CAEFchVto: response.CAEFchVto,
  formattedDate
};

} catch (error) { console.error('Error al generar Factura C:', error.message); throw error; } }

RunLLM
RunLLM

El error se produce porque falta el campo obligatorio CondicionIVAReceptorId en el objeto data. Desde la RG 5616, este campo debe enviarse siempre al emitir una Factura C, indicando la condición frente al IVA del receptor (por ejemplo, 5 para Consumidor Final). Debes agregar "CondicionIVAReceptorId": valor en el objeto data antes de llamar a createVoucher.

¿Te gustaría ver el fragmento de código corregido con este campo incluido?

Sources:

San
San

@user y para factura a y b con cual seria la condicion frente al iva del receptor

RunLLM
RunLLM

Para Factura A y B, la condición frente al IVA del receptor depende del tipo de cliente: por ejemplo, 1 para "IVA Responsable Inscripto", 6 para "Responsable Monotributo", 4 para "IVA Sujeto Exento", 5 para "Consumidor Final", entre otros. Debes usar el valor que corresponda según la situación fiscal del receptor y siempre incluir el campo CondicionIVAReceptorId en la solicitud.

¿Te gustaría la lista completa de valores posibles y sus descripciones?

Sources: