Liquidación Sector Pecuario


Solicitud
LOCAL loHttp, loUrl, loData, loResponse

* Deben cambiar los datos de "params" por los que correspondan. 
* Esta request de ejemplo incluye todos posibles valores para 
* llamar al metodo generarAjusteAvicola, puede que algun valor sea opcional.
LOCAL loDataObject
loDataObject = CREATEOBJECT("JSONObject")
    loDataObject.set("environment", "prod")
    loDataObject.set("method", "generarAjusteAvicola")
    loDataObject.set("wsid", "wslsp")
    LOCAL params
    params = CREATEOBJECT("JSONObject")
    loDataObject.set("params", params)
        LOCAL auth
        auth = CREATEOBJECT("JSONObject")
        params.set("auth", auth)
            auth.set("token", "string")
            auth.set("sign", "string")
            auth.set("cuit", 1)
        LOCAL solicitud
        solicitud = CREATEOBJECT("JSONObject")
        params.set("solicitud", solicitud)
            solicitud.set("tipoAjuste", "string")
            solicitud.set("fechaComprobante", "YYYY-MM-DD")
            LOCAL emisor
            emisor = CREATEOBJECT("JSONObject")
            solicitud.set("emisor", emisor)
                emisor.set("puntoVenta", 1)
                emisor.set("nroComprobante", 1)
                LOCAL comprobanteAAjustar
                comprobanteAAjustar = CREATEOBJECT("JSONObject")
                emisor.set("comprobanteAAjustar", comprobanteAAjustar)
                    comprobanteAAjustar.set("tipoComprobante", 1)
                    comprobanteAAjustar.set("puntoVenta", 1)
                    comprobanteAAjustar.set("nroComprobante", 1)
            LOCAL itemDetalleAjusteLiquidacion
            itemDetalleAjusteLiquidacion = CREATEOBJECT("JSONArray")
            solicitud.set("itemDetalleAjusteLiquidacion", itemDetalleAjusteLiquidacion)
                LOCAL itemDetalleAjusteLiquidacion0
                itemDetalleAjusteLiquidacion0 = CREATEOBJECT("JSONObject")
                itemDetalleAjusteLiquidacion.add(itemDetalleAjusteLiquidacion0)
                    itemDetalleAjusteLiquidacion0.set("nroItemAjustar", 1)
                    LOCAL ajusteFisico
                    ajusteFisico = CREATEOBJECT("JSONObject")
                    itemDetalleAjusteLiquidacion0.set("ajusteFisico", ajusteFisico)
                        ajusteFisico.set("cantidad", 1)
                        ajusteFisico.set("cantidadCabezas", 1)
                        ajusteFisico.set("cantidadKgVivo", 1)
                    LOCAL ajusteMonetario
                    ajusteMonetario = CREATEOBJECT("JSONObject")
                    itemDetalleAjusteLiquidacion0.set("ajusteMonetario", ajusteMonetario)
                        ajusteMonetario.set("precioUnitario", 1.5)
                    LOCAL ajusteCompraAsociada
                    ajusteCompraAsociada = CREATEOBJECT("JSONArray")
                    itemDetalleAjusteLiquidacion0.set("ajusteCompraAsociada", ajusteCompraAsociada)
                        LOCAL ajusteCompraAsociada0
                        ajusteCompraAsociada0 = CREATEOBJECT("JSONObject")
                        ajusteCompraAsociada.add(ajusteCompraAsociada0)
                            ajusteCompraAsociada0.set("tipoComprobante", 1)
                            ajusteCompraAsociada0.set("puntoVenta", 1)
                            ajusteCompraAsociada0.set("nroComprobante", 1)
                            ajusteCompraAsociada0.set("nroItem", 1)
                            ajusteCompraAsociada0.set("cantidadAsociada", 1)
            LOCAL bonificacionesPenalizaciones
            bonificacionesPenalizaciones = CREATEOBJECT("JSONArray")
            solicitud.set("bonificacionesPenalizaciones", bonificacionesPenalizaciones)
                LOCAL bonificacionesPenalizaciones0
                bonificacionesPenalizaciones0 = CREATEOBJECT("JSONObject")
                bonificacionesPenalizaciones.add(bonificacionesPenalizaciones0)
                    bonificacionesPenalizaciones0.set("codigo", 1)
                    bonificacionesPenalizaciones0.set("detalle", "string")
                    bonificacionesPenalizaciones0.set("importe", 1.5)
            LOCAL ajusteFinanciero
            ajusteFinanciero = CREATEOBJECT("JSONObject")
            solicitud.set("ajusteFinanciero", ajusteFinanciero)
                LOCAL gasto
                gasto = CREATEOBJECT("JSONArray")
                ajusteFinanciero.set("gasto", gasto)
                    LOCAL gasto0
                    gasto0 = CREATEOBJECT("JSONObject")
                    gasto.add(gasto0)
                        gasto0.set("codGasto", 1)
                        gasto0.set("descripcion", "string")
                        gasto0.set("baseImponible", 1.5)
                        gasto0.set("alicuota", 1.5)
                        gasto0.set("importe", 1.5)
                        gasto0.set("alicuotaIVA", 1.5)
                        gasto0.set("tipoIVANulo", "string")
                LOCAL tributo
                tributo = CREATEOBJECT("JSONArray")
                ajusteFinanciero.set("tributo", tributo)
                    LOCAL tributo0
                    tributo0 = CREATEOBJECT("JSONObject")
                    tributo.add(tributo0)
                        tributo0.set("codTributo", 1)
                        tributo0.set("descripcion", "string")
                        tributo0.set("baseImponible", 1.5)
                        tributo0.set("alicuota", 1.5)
                        tributo0.set("importe", 1.5)
            solicitud.set("datosAdicionales", "string")

* Convertimos el objeto en JSON
loData = json_encode(loDataObject)

* Creamos un cliente HTTP para llamar a la API
loHttp = CREATEOBJECT("Msxml2.XMLHTTP")
loUrl = "https://app.afipsdk.com/api/v1/afip/requests"

* Realizamos la llamada a la API
loHttp.Open("POST", loUrl, .F.)
loHttp.setRequestHeader("Content-Type", "application/json")

* Reemplazar con tu access_token obtenido de https://app.afipsdk.com
LOCAL accessToken
accessToken = "TU_TOKEN_AQUI"
loHttp.setRequestHeader("Authorization", "Bearer " + accessToken)

loHttp.Send(loData)

* En caso de error lo mostramos por pantalla
IF loHttp.Status <> 200
    ? STR(loHttp.responseText)
    RETURN
ENDIF

* Convertimos la respuesta en un objeto
loResponse = json_decode(loHttp.responseText)

* Mostramos la respuesta por pantalla
? loHttp.responseText
Respuesta
{
    "respuesta": {
        "cabecera": {
            "codOperacion": "integer",
            "cae": "long",
            "fechaVencimientoCae": "date",
            "nroCodigoBarras": "string",
            "fechaProcesoAFIP": "date"
        },
        "emisor": {
            "puntoVenta": "integer",
            "tipoComprobante": "integer",
            "nroComprobante": "integer",
            "codCaracter": "integer",
            "fechaInicioActividades": "date",
            "razonSocial": "string",
            "iibb": "string",
            "domicilioPuntoVenta": "string",
            "situacionIVA": "string",
            "nroRUCA": "integer",
            "nroRenspa": "string"
        },
        "receptor": {
            "codCaracter": "integer",
            "tipoDoc": "string",
            "nroDoc": "long",
            "nombre": "string",
            "situacionIVA": "string",
            "iibb": "string",
            "domicilio": "string",
            "nombreLocalidad": "string",
            "codProvincia": "integer",
            "codigoPostal": "integer",
            "nroRUCA": "integer",
            "nroRenspa": "string"
        },
        "datosLiquidacion": {
            "fechaComprobante": "date",
            "fechaOperacion": "date",
            "codMotivo": "integer",
            "condicionVenta": [
                {
                    "codigo": "integer",
                    "detalle": "string"
                }
            ],
            "granja": {
                "nroGranja": "long",
                "denominacionGranja": "string",
                "nroLoteCrianza": "long",
                "renspaGranja": "string",
                "domicilioGranja": "string",
                "partidoGranja": "string",
                "codLocalidadGranja": "integer",
                "codProvinciaGranja": "short",
                "codigoPostalGranja": "short",
                "latitudGranja": "decimal",
                "longitudGranja": "decimal"
            }
        },
        "dte": [
            {
                "tipoDTE": "string",
                "nroDTE": "string"
            }
        ],
        "remito": [
            {
                "nroRemito": "string"
            }
        ],
        "itemDetalleLiquidacion": [
            {
                "nroItem": "integer",
                "cuitCliente": "long",
                "codCategoria": "integer",
                "cantidad": "integer",
                "cantidadCabezas": "integer",
                "tipoLiquidacion": "integer",
                "precioUnitario": "decimal",
                "alicuotaIVA": "decimal",
                "cantidadKgVivo": "integer",
                "cantidadKgCarne": "integer",
                "tipoCarneAviar": "integer",
                "rendimiento": "integer",
                "importeBruto": "decimal",
                "importeIVA": "decimal",
                "importeTotal": "decimal",
                "liquidacionCompraAsociada": [
                    {
                        "tipoComprobante": "short",
                        "puntoVenta": "integer",
                        "nroComprobante": "integer",
                        "nroItem": "short",
                        "cantidadAsociada": "integer"
                    }
                ]
            }
        ],
        "resultadoProductivo": {
            "bbIngresados": "integer",
            "cantidadCabezasAvesVivasSalidas": "integer",
            "cantidadKilosAvesVivasSalidas": "integer",
            "pesoPromedio": "decimal",
            "cantidadCabezasAvesFaenadas": "integer",
            "cantidadKilosAvesFaenadas": "integer",
            "cantidadCabezasMortandad": "integer",
            "porcentajeMortandad": "decimal",
            "edad": "integer",
            "diferenciaAves": "integer",
            "porcentajeDiferenciaAves": "decimal",
            "kilosConsumoAlimentoBalanceado": "integer",
            "conversion": "decimal",
            "fep": "decimal"
        },
        "bonificacionPenalizacion": [
            {
                "codigo": "integer",
                "detalle": "string",
                "importe": "decimal"
            }
        ],
        "gasto": [
            {
                "codGasto": "integer",
                "descripcion": "string",
                "baseImponible": "decimal",
                "alicuota": "decimal",
                "importe": "decimal",
                "alicuotaIVA": "decimal",
                "importeIVA": "decimal",
                "tipoIVANulo": "string"
            }
        ],
        "tributo": [
            {
                "codTributo": "integer",
                "descripcion": "string",
                "baseImponible": "decimal",
                "alicuota": "decimal",
                "importe": "decimal"
            }
        ],
        "datosAdicionales": "string",
        "resumenTotales": {
            "importeBruto": "decimal",
            "importeIVASobreBruto": "decimal",
            "importeTotalGastos": "decimal",
            "importeIVASobreGastos": "decimal",
            "importeTotalTributos": "decimal",
            "importeBonificaciones": "decimal",
            "importePenalizaciones": "decimal",
            "importeTotalNeto": "decimal"
        },
        "pdf": "base64String",
        "errores": {
            "error": [
                {
                    "codigo": "string",
                    "descripcion": "string"
                }
            ]
        },
        "metadata": {
            "servidor": "string",
            "fechaHora": "datetime"
        }
    }
}