...
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.
...