Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
{
  "schedule": {
    "Item": {
      "scheduleLineDate": "",
      "salesDocumentItem": "000150",
      "orderQuantityInSalesUnits": "1"
    }
  },
    "rotationHeader": {
    "yourReference": "HUB",
    "salesDocumentType": "ZCPI",
    "valueShipping": "0",
    "valueAccessoryCosts": "0",
    "termsOfPaymentKey": "B028",
    "shippingConditions": "Standard",
    "sdDocumentCurrency": "BRL",
    "salesOrganization": "DC01",
    "salesOffice": "DB03",
    "salesGroup": "091",
    "salesDistrict": "Deca - MG Região 07",
    "requestedDeliveryDate": "",
    "priceListType": "Não",
    "incotermsPart2": "CIF - Custo, seguro & frete",
    "incotermsPart1": "CIF - Custo, seguro & frete", 
    "division": "MS",
    "distributionChannel": "40",
    "dateForPricingAndExchangeRate": null,
    "customerPurchaseOrderNumber": "",
    "customerPurchaseOrderDate": "2020-07-30",
    "customerGroup": "false",
    "cup": "Revenda",
    "completeDeliveryDefinedForEachSalesOrder": ""
  },
  "quotePartners": {
    "Item": {
      "partnerFunction": "EmissorOrdem",
      "customerNumber": "0000032611"
    }
  },
  "quoteItems": {
    "Item": {
      "salesDocumentItem": "000150",
      "rateConditionRound": "0",
      "rateConditionAmountOrPercentage": "0.00",
      "plant": "D085",
      "materialNumber": "4688.931"
    }
  },
  "guuid": None,
  "extension": {
    "Item": {
      "dataPartOfBapiExtensionParameter3": None,
      "dataPartOfBapiExtensionParameter2": "",
      "dataPartOfBapiExtensionParameter1": None,
      "dataPartOfBapiExtensionParameter": ""
    }
  }
}

Os campos do payload podem ser especificados abaixo:

A Execução do Payload pode ser visto no comando abaixo. Para este caso, a chamada dos preços, vendas totais e impostos serão para o documento ZDX.

...

Code Block
payload_chamada = json.dumps({
    "schedule": {
        "Item": {
            "scheduleLineDate": "",
            "salesDocumentItem": "000150",
            "orderQuantityInSalesUnits": "10"
        }
    },
    "rotationHeader": {
        "yourReference": "SF",
        "valueShipping": "0",
        "valueAccessoryCosts": "0",
        "termsOfPaymentKey": "B028",
        "shippingConditions": "Standard",
        "sdDocumentCurrency": "BRL",
        "salesOrganization": "DC01",
        "salesOffice": "DB03",
        "salesGroup": "091",
        "salesDocumentType": "ZDX - Venda Normal",
        "salesDistrict": "Deca - MG Região 07",
        "requestedDeliveryDate": "",
        "priceListType": "Não",
        "incotermsPart2": "CIF - Custo, seguro & frete",
        "incotermsPart1": "CIF - Custo, seguro & frete",
        "division": "MS",
        "distributionChannel": "40",
        "dateForPricingAndExchangeRate": None,
        "customerPurchaseOrderNumber": "",
        "customerPurchaseOrderDate": "2020-07-30",
        "customerGroup": "false",
        "cup": "Revenda",
        "completeDeliveryDefinedForEachSalesOrder": ""

     },
    "quotePartners": {
        "Item": {
            "partnerFunction": "EmissorOrdem",
            "customerNumber": "0000032611"
        }
    },
    "quoteItems": {
        "Item": {
            "salesDocumentItem": "000150",
            "rateConditionRound": "0",
            "rateConditionAmountOrPercentage": "0.00",
            "plant": "D085",
            "materialNumber": "4688.931"
        }
    },
    "guuid": None,
    "extension": {
        "Item": {
            "dataPartOfBapiExtensionParameter3": None,
            "dataPartOfBapiExtensionParameter2": "",
            "dataPartOfBapiExtensionParameter1": None,
            "dataPartOfBapiExtensionParameter": ""
        }
    }
})

payload_chamada_json = json.loads(payload_chamada)

...

Utilizar apenas este parâmetro para validar não significa muito em relação ao retorno da chamada se ocorrerá com êxito. Para isso, é preciso verificar se o retorno, para os parâmetros que foram especificados, estão com valores conforme na figura abaixo. Caso dê problemas no retorno da chamada, os valores estão zerados. Isso pode estar associado com a adoção do valor do parâmetro None para “null” e caso do case sensitive do SF.

...

Verificação do retorno do Payload

Conforme discutido, o desenvolvimento do notebook do Databricks para a validação da chamada simulate espera-se o retorno no formato Json. Caso este formato não seja respeitado, o retorno dos preços, vendas totais e impostos para os tipos de documento estarão nulas. Para tanto, a validação do retorno pode ser definida na verificação do formato xml. Caso esteja, atribuirá os valores de acordo com a especificação do payload de retorno com os valores zerados. Isso significa que a API apresenta um bug que precisa ser consertado.

Code Block
if (payload_retorno_str[:5] == "<?xml"):
            print("Verificado que o formato está em XML e dará problema")
            payload_retorno_str = payload_retorno
            payload_retorno_str = payload_retorno_str.replace("Sem Erros!", "ERRO: Retorno enviado em XML!")
            payload_retorno_str = payload_retorno_str[:-1]
            payload_retorno_str = payload_retorno_str[1:]
            payload_chamada_str = payload_chamada_str[:-1]
        else : 
            print("Comportamento esperado")
            payload_chamada_str = payload_chamada_str[:-1]
            payload_retorno_str = payload_retorno_str[:-2]
            payload_retorno_str = payload_retorno_str[2:]

De acordo com a Figura abaixo pode-se a validação do retorno que ocorreu em xml e que identificamos que havia um bug na API.

...