Sí, es posible generar facturas con percepciones utilizando Afip SDK. Debes incluir el campo "ImpTrib" (importe total de tributos) y detallar las percepciones en la estructura correspondiente al tributo dentro del objeto de la factura, siguiendo los ejemplos oficiales del SDK para PHP o JS, como se indica en este ejemplo de AfipSDK y en la documentación de la API.
¿Te gustaría ver un ejemplo concreto de cómo estructurar el campo de percepciones en el código?
Sources:
@user podrias hacerme un ejemplo de como tiene que ser el data para usar percepciones
Claro. Para agregar percepciones, debes usar el campo "Tributos" en el array de datos. Por ejemplo, en PHP:
$data = array(
'CantReg' => 1,
'PtoVta' => 1,
'CbteTipo' => 6,
'Concepto' => 1,
'DocTipo' => 80,
'DocNro' => 20111111112,
'CbteDesde' => 1,
'CbteHasta' => 1,
'CbteFch' => intval(date('Ymd')),
'ImpTotal' => 200,
'ImpTotConc' => 0,
'ImpNeto' => 150,
'ImpOpEx' => 0,
'ImpIVA' => 21,
'ImpTrib' => 29, // Total de tributos (percepciones)
'MonId' => 'PES',
'MonCotiz' => 1,
'Iva' => array(
array('Id' => 5, 'BaseImp' => 150, 'Importe' => 21)
),
'Tributos' => array(
array(
'Id' => 99, // 99 = Otro (puedes usar 1, 2, 3, 4 según corresponda)
'Desc' => 'Percepción IIBB',
'BaseImp' => 150,
'Alic' => 5.2,
'Importe' => 7.8
),
array(
'Id' => 1, // 1 = Impuestos nacionales
'Desc' => 'Percepción IVA',
'BaseImp' => 150,
'Alic' => 14,
'Importe' => 21.2
)
)
);
Puedes ver ejemplos similares en afip.php y afip.js.
¿Te gustaría el ejemplo en otro lenguaje o necesitas más detalles?
Sources:
@user hacelo en javascript node
Por supuesto, aquí tienes un ejemplo en JavaScript (Node.js) usando Afip SDK, donde se agregan percepciones en el campo Tributos:
const Afip = require('@afipsdk/afip.js');
const date = new Date(Date.now() - ((new Date()).getTimezoneOffset() * 60000)).toISOString().split('T')[0];
const data = {
'CantReg': 1,
'PtoVta': 1,
'CbteTipo': 6,
'Concepto': 1,
'DocTipo': 80,
'DocNro': 20111111112,
'CbteDesde': 1,
'CbteHasta': 1,
'CbteFch': parseInt(date.replace(/-/g, '')),
'ImpTotal': 200,
'ImpTotConc': 0,
'ImpNeto': 150,
'ImpOpEx': 0,
'ImpIVA': 21,
'ImpTrib': 29, // Suma de percepciones
'MonId': 'PES',
'MonCotiz': 1,
'Iva': [
{ 'Id': 5, 'BaseImp': 150, 'Importe': 21 }
],
'Tributos': [
{
'Id': 99, // Otro tributo
'Desc': 'Percepción IIBB',
'BaseImp': 150,
'Alic': 5.2,
'Importe': 7.8
},
{
'Id': 1, // Impuestos nacionales
'Desc': 'Percepción IVA',
'BaseImp': 150,
'Alic': 14,
'Importe': 21.2
}
]
};
const afip = new Afip({ CUIT: 20111111112 });
afip.ElectronicBilling.createVoucher(data).then(res => {
console.log(res);
});
Este ejemplo está basado en el ejemplo oficial de afip.js.
¿Necesitás que te explique algún campo en particular?
Sources: