Emitir nota de crdito dbito

RunLLM
RunLLM

Para emitir una nota de crédito o débito con Afip SDK, debes usar el método createVoucher y cambiar el campo CbteTipo según el tipo de comprobante: por ejemplo, 3 para Nota de Crédito A, 8 para Nota de Crédito B, 13 para Nota de Crédito C, y el código correspondiente para nota de débito. Los campos principales son: CantReg, PtoVta, CbteTipo, Concepto, DocTipo, DocNro, CbteDesde, CbteHasta, CbteFch, importes (ImpTotal, ImpNeto, ImpIVA, etc.), moneda (MonId, MonCotiz), condición IVA del receptor, y el campo CbtesAsoc para asociar la nota a la factura original. Para notas de crédito/débito, se debe asociar siempre a la factura que se anula o ajusta, usando el campo CbtesAsoc con los datos de la factura original. El resto de los campos se completan igual que una factura, ajustando los importes según corresponda.

Ejemplo: primero emites una factura (por ejemplo, Factura B, CbteTipo: 6), luego para anularla o ajustarla emites una Nota de Crédito B (CbteTipo: 8) asociada a esa factura. El campo CbtesAsoc debe contener el tipo, punto de venta y número de la factura original. Aquí tienes un ejemplo en Python para una Nota de Crédito B:

from datetime import datetime
punto_de_venta = 1
tipo_de_nota = 8  # Nota de Crédito B
last_voucher = afip.ElectronicBilling.getLastVoucher(punto_de_venta, tipo_de_nota)
punto_factura_asociada = 1
tipo_factura_asociada = 6  # Factura B
numero_factura_asociada = 1
concepto = 1
tipo_de_documento = 99
numero_de_documento = 0
numero_de_nota = last_voucher + 1
fecha = int(datetime.today().strftime("%Y%m%d"))
importe_gravado = 100
importe_exento_iva = 0
importe_iva = 21
condicion_iva_receptor = 5
data = {
    "CantReg": 1,
    "PtoVta": punto_de_venta,
    "CbteTipo": tipo_de_nota,
    "Concepto": concepto,
    "DocTipo": tipo_de_documento,
    "DocNro": numero_de_documento,
    "CbteDesde": numero_de_nota,
    "CbteHasta": numero_de_nota,
    "CbteFch": fecha,
    "ImpTotal": importe_gravado + importe_iva + importe_exento_iva,
    "ImpTotConc": 0,
    "ImpNeto": importe_gravado,
    "ImpOpEx": importe_exento_iva,
    "ImpIVA": importe_iva,
    "ImpTrib": 0,
    "MonId": "PES",
    "MonCotiz": 1,
    "CondicionIVAReceptorId": condicion_iva_receptor,
    "CbtesAsoc": [
        {"Tipo": tipo_factura_asociada, "PtoVta": punto_factura_asociada, "Nro": numero_factura_asociada}
    ],
    "Iva": [
        {"Id": 5, "BaseImp": importe_gravado, "Importe": importe_iva}
    ]
}
res = afip.ElectronicBilling.createVoucher(data)
print({"cae": res["CAE"], "vencimiento": res["CAEFchVto"]})

Para nota de débito, solo cambia el valor de CbteTipo por el correspondiente. ¿Te gustaría ver el ejemplo para nota de débito o para otro tipo de comprobante?

Sources: