Serviç os da Web de distribuiç ã o digital (DDWS ... · de ordem de compra, número do pedido de...

26
Serviç os da Web de distribuiç ã o digital (DDWS) GetInvoice - Manual do serviço

Transcript of Serviç os da Web de distribuiç ã o digital (DDWS ... · de ordem de compra, número do pedido de...

Page 1: Serviç os da Web de distribuiç ã o digital (DDWS ... · de ordem de compra, número do pedido de vendas específico, ... sku Número do material sku_description Texto curto para

Serviç os da Web de distribuiç ã o digital (DDWS) GetInvoice - Manual do serviço

Page 2: Serviç os da Web de distribuiç ã o digital (DDWS ... · de ordem de compra, número do pedido de vendas específico, ... sku Número do material sku_description Texto curto para

2 | Manual de referê ncia do serviç o da Web

ÍNDICE Histórico de revisão ............................................................................................................................................... 3

1 Introdução ...................................................................................................................................................... 3

1.1 Visão geral ............................................................................................................................................. 3

1.2 Documentos de suporte ........................................................................................................................ 3

2 Introdução ...................................................................................................................................................... 4

3 Visão geral do serviço Obter fatura ................................................................................................................ 4

3.1 GetInvoiceList ........................................................................................................................................ 6

3.2 GetInvoiceDetails .................................................................................................................................. 6

3.3 Vantagens do serviço GetInvoice .......................................................................................................... 6

4 Informações de referência do serviço GetInvoice .......................................................................................... 6

4.1 Nota sobre vários CSNs ........................................................................................................................ 6

4.2 Esquema de solicitação ......................................................................................................................... 7

4.3 Esquema de resposta ............................................................................................................................ 8

4.3.1 GetInvoiceList .................................................................................................................................... 8

4.3.2 GetInvoiceDetails .............................................................................................................................. 8

4.4 Esquema de erro ................................................................................................................................. 11

4.5 Mensagem de solicitação .................................................................................................................... 11

4.5.1 Mensagem de solicitação - GetInvoiceList ...................................................................................... 11

4.5.2 Mensagem de solicitação - GetInvoiceDetails ................................................................................ 12

4.6 Mensagem de resposta ....................................................................................................................... 13

4.6.1 Mensagem de resposta - GetInvoiceList ......................................................................................... 13

4.6.2 Mensagem de resposta - GetInvoiceDetails ................................................................................... 13

4.7 Mensagens de erro .............................................................................................................................. 18

4.7.1 Amostra de resposta de erro ........................................................................................................... 19

5 Apêndice ...................................................................................................................................................... 19

5.1 Código C# para inserir vários CSNs ................................................................................................... 19

5.1.1 Programa principal .......................................................................................................................... 19

5.1.2 Classe de Utilitários ......................................................................................................................... 20

5.1.3 POCOs ............................................................................................................................................ 24

Page 3: Serviç os da Web de distribuiç ã o digital (DDWS ... · de ordem de compra, número do pedido de vendas específico, ... sku Número do material sku_description Texto curto para

3 | Manual de referê ncia do serviç o da Web

Histórico de revisão Versão Data Autor Comentários

2.1 22/10/2015 AR Seção Histórico de revisão adicionada

2.2 14/12/2015 AR Foram adicionados os campos adsk_vat_number, recurring_po, total_amount sob o invoice_header para a resposta de GetInvoiceDetails na seção 4.3

2.3 22/12/2015 AR Seção 4.2, o comprimento máximo de purchase_order_number foi substituído para 35 caracteres

2.4 23/02/2016 RL Adicione os campos bill_per_start_dt e bill_per_end_dt a invoice_items.

2.5 23/02/2016 ER Atualizar descrição de contract_end

1 Introdução

1.1 Visão geral

A plataforma do Serviço da Web de distribuição digital (DDWS) é uma solução para realização de pedidos criada diretamente por nossos Parceiros para a Autodesk, com pouco toque dos Parceiros e nenhum toque da Autodesk.Este novo recurso de negócios permitirá as transações de serviço Web B2B verdadeiras entre os Parceiros e a Autodesk.

Para os Parceiros têm a implementação efetiva da Plataforma de serviços digitais da Autodesk, as afiliadas precisarão ter familiaridade com os serviços da Web REST, o OAuth e o JSON. Uma amostra de um aplicativo de cliente é fornecida (gravado na linguagem Ruby) em um documento Guia de programação, que ajudarão os chamados desenvolvedores afiliados a consumirem a API do serviço digital.

1.2 Documentos de suporte

Guia do desenvolvedor para parceiros da Autodesk: este guia ajuda os Parceiros no processo de apresentação e no acesso aos serviços do DDWS. O guia também serve para apresentar aos Parceiros a Plataforma de serviços digitais da Autodesk, usando instruções passo a passo que os orientam nas atividades iniciais necessárias para integração.

Page 4: Serviç os da Web de distribuiç ã o digital (DDWS ... · de ordem de compra, número do pedido de vendas específico, ... sku Número do material sku_description Texto curto para

4 | Manual de referê ncia do serviç o da Web

Documentação da API de autenticação: este documento orientará os Parceiros pelo processo de geração de credenciais, assinaturas e tokens de acesso necessários para usar as APIs do serviço. Ele também contém informações para o desenvolvimento de um aplicativo de integração de um Parceiro. Ele fornece a compreensão básica da integração do serviço da Web e demonstra o desenvolvimento de um aplicativo típico.

2 Introdução

Como parte do processo de apresentação, os Parceiros serão associados a um único Número específico do cliente (CSN) e terão seu aplicativo registrado com a Autodesk. Para obter mais detalhes sobre o processo de integração, consulte o Guia do desenvolvedor para parceiros da Autodesk.

3 Visão geral do serviço Obter fatura

Pode haver situações em que o solicitante que faz a entrada tem um intervalo de datas (de data e para data). Nesse caso, o serviço não pode fornecer todos os detalhes da fatura para um determinado período, pois há uma chance de ter uma quantidade enorme de faturas durante um determinado período.

Há duas operações definidas neste serviço para pesquisa de faturas:

getInvoiceList

getInvoiceDetails

Page 5: Serviç os da Web de distribuiç ã o digital (DDWS ... · de ordem de compra, número do pedido de vendas específico, ... sku Número do material sku_description Texto curto para

5 | Manual de referê ncia do serviç o da Web

O diagrama acima é uma indicação do serviço getInvoice. Ao implementar a plataforma de serviços digitais da Autodesk, você pode tornar seus processos mais eficientes. A próxima série de gráficos ilustra uma experiência do usuário com a loja da Web. Esta primeira captura de tela mostra como a operação getInvoiceList será chamada. Os clientes vão inserir um intervalo de datas para obter as faturas correspondentes a um determinado período. Com base nessa entrada, todas as faturas que estão nesse intervalo de datas serão exibidas para o cliente.

Depois de obter a lista de faturas, os clientes podem obter os detalhes da fatura para um número de fatura, número de ordem de compra, número do pedido de vendas específico, como mostrado a seguir na captura de tela.

Page 6: Serviç os da Web de distribuiç ã o digital (DDWS ... · de ordem de compra, número do pedido de vendas específico, ... sku Número do material sku_description Texto curto para

6 | Manual de referê ncia do serviç o da Web

3.1 GetInvoiceList

A finalidade desta operação é obter a lista de faturas de um sistema de back-end se a entrada inclui somente um intervalo de datas. Depois que o solicitante receber a resposta, ele(a) chamará getInvoiceDetails usando Número da fatura / Número da ordem de compra / Número do pedido de vendas como entrada. As seguintes entradas são necessárias para executar o serviço:

1. customer_number

2. invoice_date_from

3. invoice_date_to

3.2 GetInvoiceDetails

A finalidade desta operação é obter os detalhes da fatura de uma entrada especificada. Esta operação pode ser chamada usando os seguintes conjuntos de entradas:

1. customer_number e purchase_order_number/ invoice_number / sales_order_number

Se todos os três parâmetros (po_number, invoice_number e order_number) estão presentes em uma solicitação de serviço, a prioridade dos critérios de pesquisa será definida da seguinte maneira:

1. invoice_number (baixo)

2. purchase_order_number

3. sales_order_number (baixo)

Nota: apenas uma fatura válida será preenchida como parte da resposta da API GetInvoice.

3.3 Vantagens do serviço GetInvoice

1. Um serviço da Web REST leve que podem ser consumido facilmente em qualquer aplicativo por meio

da conexão HTTP(s).

2. A capacidade de recuperar as informações da fatura por Parceiros quando necessário, eliminando a

necessidade de procurar as faturas em PDF em e-mails ou dados de EDI IDoc.

3. O serviço fornece flexibilidade para os Parceiros procurarem faturas dentro de intervalos de datas

específicos ou fornecendo números de fatura, de ordem de compra ou de pedido

4. Os Parceiros podem personalizar a data da fatura e o plug-in do sistema interno conforme necessário.

4 Informações de referência do serviço GetInvoice

4.1 Nota sobre vários CSNs

O serviço GetInvoice oferece suporte a apenas um único customer_number (CSN) por solicitação. Se um Parceiro tiver vários CSNs, esse Parceiro deverá poder chamar o serviço várias vezes para obter as informações correspondentes. Uma forma de fazer isso seriar programa um loop em sua conexão de aplicativo que executa o serviço GetInvoice uma vez para cada CSN disponível. É importante que um script assim também controle a geração de credenciais e os tokens de acesso de cada chamada. Um exemplo de um script assim pode ser encontrado na seção Apêndice deste Manual de referência do serviço. Abaixo, incluímos o segmento relevante do dito exemplo.

Page 7: Serviç os da Web de distribuiç ã o digital (DDWS ... · de ordem de compra, número do pedido de vendas específico, ... sku Número do material sku_description Texto curto para

7 | Manual de referê ncia do serviç o da Web

// Looping through each CSN var container = new List<ResponseContainer>(); foreach (var csn in credentials.CSNs) { // Signing partner's credentials var firstSignature = Utils.GetFirstSignature(credentials); // Sending request to OAuth server to generate an Access Token var tokenDetails = Utils.CallOAuthEndPoint(firstSignature); // Signing Access Token var secondSignature = Utils.GetSecondSignature(tokenDetails, credentials); // Calling Get Invoice WebService var endPoint = string.Format("https://enterprise-api-stg.autodesk.com/v1/invoices?customer_number={0}&invoice_date_from=2015-08-01&invoice_date_to=2015-09-01", csn); var invoice = Utils.GetInvoices(endPoint, secondSignature, csn); // Storing WebService's response var invoiceContainer = JsonConvert.DeserializeObject<InvoiceContainer>(invoice); container.Add(new ResponseContainer { CSN = csn, Response = invoiceContainer }); } // Writing response to file var json = JsonConvert.SerializeObject(container, Formatting.Indented); Utils.WriteJsonToFile(json);

4.2 Esquema de solicitação

Os detalhes dos Parâmetros de mensagem de solicitação na tabela a seguir para getInvoiceList() e getInvoiceDetails().

Elemento Tipo de campo

Comprimento/formato de entrada

Utilização

Ele

men

tos d

e

getIn

vo

iceL

ist(

)

customer_number Sequência de

caracteres Comprimento:

máx. 10 caracteres Obrigatório

Invoice_date_from Data Formato: ISO 8601

AAAA-MM-DD Obrigatório

invoice_date_to Data Formato: ISO 8601

AAAA-MM-DD Obrigatório

Page 8: Serviç os da Web de distribuiç ã o digital (DDWS ... · de ordem de compra, número do pedido de vendas específico, ... sku Número do material sku_description Texto curto para

8 | Manual de referê ncia do serviç o da Web

Ele

me

nto

s d

e

ge

tIIn

vo

iceD

eta

ils

()

customer_number Sequência de

caracteres Comprimento:

máx. 10 caracteres Obrigatório

invoice_number Sequência de

caracteres Comprimento:

máx. 10 caracteres Qualquer um ou todos podem ser passados com o

customer_number

purchase_order_number Sequência de

caracteres Comprimento:

máx. 35 caracteres

sales_order_number Sequência de

caracteres Comprimento:

máx. 10 caracteres

4.3 Esquema de resposta

4.3.1 GetInvoiceList

Nome do campo Descrição

invoice_number Número da fatura

bill_to_customer Número do cliente 1

purchase_order_number Número da ordem de compra do cliente

invoice_date Data de publicação no documento Formato: ISO 8601 AAAA-MM-DD

transaction_type Descrição do tipo de documento

invoice_total_amount Quantidade na moeda do documento

invoice_currency Chave da moeda

account_doc_description Texto do item

customer_po_number Número da ordem de compra do cliente

sales_order_number Número do documento de vendas e distribuição

4.3.2 GetInvoiceDetails

Nome do campo Descrição

invoice_bankinfo

invoice_number Número do documento de vendas e distribuição

name Nome do banco

bank_keys Chaves do banco

bank_number Número do banco

bank_branchid Agência bancária

bank_account_number Número da conta bancária

currency Moeda do banco

alternative_bank_account Número de conta bancária alternativa (para números de conta ambíguos)

lockbox_number Número de LockBox

swiftcode Código SWIFT para pagamentos internacionais

iban IBAN (Número de conta bancária nternacional)

bank_control_key Chave de controle do banco

country País

address Endereço do banco

Page 9: Serviç os da Web de distribuiç ã o digital (DDWS ... · de ordem de compra, número do pedido de vendas específico, ... sku Número do material sku_description Texto curto para

9 | Manual de referê ncia do serviç o da Web

city Cidade

district Distrito

region Região (Estado, Província e País)

postalcode CEP / Caixa postal

tel_number Nº do telefone

fax_number Nº do fax

additional Código info-ABI/código CAB/GIRO/código de classificação etc. adicional.

invoice_header

invoice_date Data de cobrança para o índice de cobrança e a impressão Formato: ISO 8601

invoice_number Número do documento de vendas e distribuição

po_date Data da ordem de compra do cliente Formato: ISO 8601

order_date Data do pedido de vendas Formato: ISO 8601 AAAA-MM-DD

purchase_order_number Número da ordem de compra do cliente

customer_po_number Número da ordem de compra das informações de envio

transaction_type 20 caracteres

ship_date Data Formato: ISO 8601 AAAA-MM-DD

invoice_currency Moeda do documento SD

sales_order_number Pedido

contract_number Referência interna do cliente ou fornecedor

payment_term Termos de pagamento

payment_due Data de vencimento do pagamento Formato: ISO 8601 AAAA-MM-DD

local_currency Chave da moeda

exchange_rate Taxa de troca para determinação de preços

vat_number Número de registro IVA

delivery_code Incoterms (parte 1)

delivery_description Incoterms (parte 2)

delivery_number Entrega

numbers_item Número natural

tax_amount Valor de impostos na moeda do documento

tax_type Tipo de taxa

tax_rate Taxa de impostos

freight_charge Custo de frete

tracking_number Número do Waybill

opportunity_id ID da oportunidade

extra_po_identifier Identificador de compra adicional

invoice_amount Valor líquido na moeda do documento

weight_total Peso total

weight_uom Unidade de peso

reserve_header_field Campo de cabeçalho de backup

adsk_vat_number Número de registro IVA da Autodesk

recurring_po Pedido de compra sob assinatura recorrente

Page 10: Serviç os da Web de distribuiç ã o digital (DDWS ... · de ordem de compra, número do pedido de vendas específico, ... sku Número do material sku_description Texto curto para

10 | Manual de referê ncia do serviç o da Web

total_amount Valor líquido + impostos

invoice_items

invoice_number Documento de cobrança

line_number Item de cobrança

sku Número do material

sku_description Texto curto para o item do pedido de vendas

physical_media Valor de ELD do valor de caractere

invoice_currency Moeda do documento SD

contract_start Data de início do contrato Formato: ISO 8601 AAAA-MM-DD

contract_end Data de término do contrato Formato: ISO 8601 AAAA-MM-DD Para recorrente (mensal e anual), as regras a seguir se aplicam. Quando o contrato é cancelado, o campo contract_end mostra a data de cancelamento. Quando o contrato está ativo, o campo contract_end mostra o o texto “Contrato de renovação automática”.

quantity Quantidade cobrada realmente

quantity_uom Unidade de medida base

seats Número natural

unit_price Preço unitário

unit_discount Desconto da unidade

net_value Valor líquido do item de cobrança na moeda do documento

serial_number Número de série

current_serial_number Número de série atual

old_serial_number Número de série antigo

partner_subs_id N° de Subs do parceiro

vat_description Texto de IVA

reserve_item_field Campo de item de backup

bill_per_start_dt Data de início do período de cobrança

bill_per_end_dt Data de término do período de cobrança

invoice_partners

invoice_number Número do documento de vendas e distribuição

line_number Item de cobrança

partner_type Tipo de cliente

partner_number Número do cliente 1

contact_number Número da pessoa de contato

partner_name Nome

street Rua e número da residência

po_box Caixa postal

city Cidade

postal_code CEP

pobox_postal_code CEP da caixa postal

country Nome do país

tel_number Primeiro número de telefone

fax_number Número do fax

district Distrito

Page 11: Serviç os da Web de distribuiç ã o digital (DDWS ... · de ordem de compra, número do pedido de vendas específico, ... sku Número do material sku_description Texto curto para

11 | Manual de referê ncia do serviç o da Web

region Região (Estado, Província e País)

country_iso Código de país ISO

4.4 Esquema de erro

Nome do campo Descrição

status Resposta de confirmação: "OK", "FALHA", "ERRO"

message Mensagem de falha ou erros

transactionid ID exclusivo de transação (combinação de número da fatura e registro de data e hora)

4.5 Mensagem de solicitação

Em função dos parâmetros de entrada, a operação getInvoiceList() ou getInvoiceDetails() será executada. Se a entrada tiver os parâmetros "de data" e "para data", getInvoiceList() será executado. Se a entrada tiver o Número da ordem de compra, o Número da fatura ou o Número do pedido de vendas, getInvoiceDetails() será executado. Abaixo estão as solicitações de amostra para as operações.

4.5.1 Mensagem de solicitação – GetInvoiceList

http://enterprise-api-stg.autodesk.com/v1/invoices?customer_number=5117338390&invoice_date_from=2014-06-01&invoice_date_to=2014-06-30 Message Headers Content-Type: application/json Authorization: Bearer <<Access Token>> CSN: <<CSN>> signature: <<Signed Access Token>> timestamp: <<Timestamp for the signed Access Token>>

Page 12: Serviç os da Web de distribuiç ã o digital (DDWS ... · de ordem de compra, número do pedido de vendas específico, ... sku Número do material sku_description Texto curto para

12 | Manual de referê ncia do serviç o da Web

4.5.2 Mensagem de solicitação – GetInvoiceDetails

http://enterprise-api-stg.autodesk.com/v1/invoices?customer_number=5163338143&invoice_number=9052068717 Message Headers Content-Type: application/json Authorization: Bearer <<Access Token>> CSN: <<CSN>> signature: <<Signed Access Token>> timestamp: <<Timestamp for the signed Access Token>> OR http://enterprise-api-stg.autodesk.com/v1/invoices?customer_number=5163338143&invoice_number=9052068717&sales_order_number=7355393800 Message Headers Content-Type: application/json Authorization: Bearer <<Access Token>> CSN: <<CSN>> signature: <<Signed Access Token>> timestamp: <<Timestamp for the signed Access Token>> OR http://enterprise-api-stg.autodesk.com/v1/invoices?customer_number=5163338143&invoice_number=905206871&purchase_order_number=712100000424 Message Headers Content-Type: application/json Authorization: Bearer <<Access Token>> CSN: <<CSN>> signature: <<Signed Access Token>> timestamp: <<Timestamp for the signed Access Token>> OR http://enterprise-api-stg.autodesk.com/v1/invoices?customer_number=5163338143&invoice_number=9052068717&sales_order_number=7355393800&purchase_order_number=712100000424 Message Headers Content-Type: application/json Authorization: Bearer <<Access Token>> CSN: <<CSN>> signature: <<Signed Access Token>> timestamp: <<Timestamp for the signed Access Token>>

Page 13: Serviç os da Web de distribuiç ã o digital (DDWS ... · de ordem de compra, número do pedido de vendas específico, ... sku Número do material sku_description Texto curto para

13 | Manual de referê ncia do serviç o da Web

4.6 Mensagem de resposta

Nota: a Autodesk enviará uma resposta com a estrutura a seguir. Os Parceiros podem reformatar para diferentes estruturas de acordo com suas necessidades.

4.6.1 Mensagem de resposta - GetInvoiceList

{ "status": "OK", "transaction_id": "INV701765101433844843", "message": [ { "invoice_number": "9052238559", "purchase_order_number": "9833356789", "bill_to_customer": "5163338143", "invoice_date": "2014-06-11”, "customer_po_number": "", "transaction_type": "Invoice", "invoice_total_amount": 328.5, "invoice_currency": "USD", "account_doc_description": "", "sales_order_number": "7333403750" }, { "invoice_number": "9052158556", "purchase_order_number ": "7865345690", "bill_to_customer ": "5163268143", "invoice_date": "2014-06-24", "customer_po_number ": "", "transaction_type": "Invoice", "invoice_total_amount: 2161.53, "invoice_currency": "USD", "account_doc_description ": "", "sales_order_number ": "7052971819" } ] }

4.6.2 Mensagem de resposta - GetInvoiceDetails

{ "status": "OK", "transaction_id": "INV701765101433844843", "message": [ { "invoice_bankinfo": [ { “invoice_number”:” 9044468717”,

Page 14: Serviç os da Web de distribuiç ã o digital (DDWS ... · de ordem de compra, número do pedido de vendas específico, ... sku Número do material sku_description Texto curto para

14 | Manual de referê ncia do serviç o da Web

"name": "Merghle", "bank_keys": "", "bank_number": "", "bank_branchid": "", "bank_account_number": "", "currency": "", "alternative_bank_account": "", "lockbox_number": "", "swiftcode": "", “iban": "", "bank_control_key": "", "country": "", "address": "", "city": "Carol Stream, IL 60132-2188", “district”:””, "region": "", "postalcode": "", "tel_number":”", "fax_number ": "", "additional": "MAIL PAYMENTS TO: AUTODESK, INC. C/O MERGHLE" }, { “invoice_number”:” 9054468717”, "name": "Merghle", "bank_keys": "", "bank_number": "", "bank_branchid": "", "bank_account_number": "40574469", "currency": "", "alternative_bank_account": "", "lockbox_number": "", "swiftcode": "", "iban": "", "bank_control_key": "", "country": "", "address": "", "city": "", “district”:””, "region": "", "postalcode": "", "tel_number":”", "fax_number ": "", "additional": "ABA# 021000089/WIRE PAYMENTS TO:" } ], "invoice_header": [ { "invoice_date": "2014-10-24", "invoice_number": "9052333717", "po_date": "2014-07-09", "order_date": "2014-09-24", "purchase_order_number": "D20000036_R2D2", "customer_po_number": "",

Page 15: Serviç os da Web de distribuiç ã o digital (DDWS ... · de ordem de compra, número do pedido de vendas específico, ... sku Número do material sku_description Texto curto para

15 | Manual de referê ncia do serviç o da Web

"transaction_type": "Invoice", "ship_date": null, "invoice_currency": "USD", "sales_order_number": "7354493780", "contract_number": "D44000442", "payment_term": "30", "payment_due": "Up to 11/23/2014 without deduction", "local_currency": "USD", "exchange_rate": 1, "vat_number": "", "delivery_code": "CIF", "delivery_description": "FOB Origin", "delivery_number": "", "numbers_of_items": 1, "tax_amount": 0, "tax_type": "TPS;TVQ", "tax_rate": "7.975%;7%", "tracking_number": "1ZR43W412049469", "extra_po_identifier": "", "freight_charge": 0, "opportunity_id": "", " invoice_amount": 30, "weight_total": 0, "weight_uom": "", "reserve_header_field": "" } ], "invoice_items": [ { "invoice_number": "9033338717", "line_number": "000050", "sku": "961F1-WW6573-L994", "sku_description": "ADSKFD 2014 TL:MT SUB WW ELD",

“physical_media”:””,

"invoice_currency": "USD", "contract_start": "2014-09-24", "contract_end": "2015-12-31", "quantity": 1, "quantity_uom": "EA", "seats": 0, "unit_price": 30, "unit_discount": 0, "net_value": 30, "serial_number": "364-72262293", "current_serial_number": "", "old_serial_number": "", "partner_subs_id": "", “vat_description”:””, "reserve_item_field": "", "bill_per_start_dt": "2016-02-22T00:00:00+0000", "bill_per_end_dt": "2016-03-21T00:00:00+0000" } ],

Page 16: Serviç os da Web de distribuiç ã o digital (DDWS ... · de ordem de compra, número do pedido de vendas específico, ... sku Número do material sku_description Texto curto para

16 | Manual de referê ncia do serviç o da Web

"invoice_partners": [ { "invoice_number": "9052222717", "line_number": "000000", "partner_type": "", "partner_number": "", "contact_number": "0000000000", "partner_name": "Autochair Inc.", "street": "McInnis Parkway", "po_box": "", "city": "SAN ROFFEL", "postal_code": "94903", "pobox_postal_code": "", "country": "USA", "tel_number": "415-507-5000", "fax_number": "", "district": "MARIN", "region": "CA" }, { "invoice_number": "9033368717", "line_number": "000000", "partner_type": "Sold to", "partner_number": "5162644143", "contact_number": "0000000000", "partner_name": "Quechua Rentals", "street": "410 Terry Ave N", "po_box": "", "city": "Seattle", "postal_code": "98109-5210", "pobox_postal_code": "", "country": "USA", "tel_number": "", "fax_number": "", "district": "KING", "region": "WA" }, { "invoice_number": "9054558717", "line_number": "000000", "partner_type": "Bill to", "partner_number": "5163268143", "contact_number": "0000000000", "partner_name": "Quechua Rentals", "street": "410 Terry Ave N", "po_box": "", "city": "Seattle", "postal_code": "93109-5210", "pobox_postal_code": "", "country": "USA", "tel_number": "", "fax_number": "", "district": "KING",

Page 17: Serviç os da Web de distribuiç ã o digital (DDWS ... · de ordem de compra, número do pedido de vendas específico, ... sku Número do material sku_description Texto curto para

17 | Manual de referê ncia do serviç o da Web

"region": "WA" }, { "invoice_number": "9053338717", "line_number": "000000", "partner_type": "Ship to", "partner_number": "5166668390", "contact_number": "0000000000", "partner_name": "Quechua Rentals", "street": "410 Terry Ave N", "po_box": "", "city": "Seattle", "postal_code": "98209-5210", "pobox_postal_code": "", "country": "USA", "tel_number": "", "fax_number": "", "district": "KING", "region": "WA" }, { "invoice_number": "9053368717", "line_number": "000050", "partner_type": "Reseller", "partner_number": "5162644143", "contact_number": "0000000000", "partner_name": "Quechua Rentals", "street": "410 Terry Ave N", "po_box": "", "city": "Seattle", "postal_code": "98229-5210", "pobox_postal_code": "", "country": "USA", "tel_number": "", "fax_number": "", "district": "KING", "region": "WA" } ] } ] }

Nota: no caso de vários tipos de impostos e taxas de impostos, o serviço retornará os dados como mostrado abaixo.

Aqui os valores são separados por ';', e tax_type e tax_rate serão fornecidos na sequência (por exemplo, tax_rate de 7,975% corresponde ao tipo de impostos "TPS" e tax_rate de 7% corresponde ao tax_type "TVQ")

Page 18: Serviç os da Web de distribuiç ã o digital (DDWS ... · de ordem de compra, número do pedido de vendas específico, ... sku Número do material sku_description Texto curto para

18 | Manual de referê ncia do serviç o da Web

4.7 Mensagens de erro

A tabela a seguir mostra os códigos de erro e as respectivas mensagens de erro presentes na resposta mensagens caso um erro seja encontrado:

Mensagem de erro Código de erro Descrição do erro

Insira o Número do cliente UAN-GEN-00108 Número do cliente com valor em branco

O campo não pode ser deixado em branco. Insira a data

UAN-GEN-00108

De data da fatura / Para data da fatura com valor em branco

O intervalo de datas não deve ter mais de 90 dias. Verifique sua entrada e tente novamente

UAN-GEN-00141

Para verificar se um intervalo de datas tem mais de 90 dias

O número do cliente não pode ter mais de 10 caracteres. Verifique sua entrada e tente novamente

UAN-GEN-00123

Para verificar se o Número do cliente tem mais de 10 caracteres

Insira a De data válida no formato AAAA-MM-DD

UAN-GEN-00119

Para verificar o formato de data

Insira a Para data válida no formato AAAA-MM-DD

UAN-GEN-00119

Para verificar o formato de data

Problema do sistema que impede o processamento. Tente novamente mais tarde

UAN-GEN-00122

Exceção técnica

Número da fatura deve ter exatos 10 caracteres. Verifique sua entrada e tente novamente

UAN-GEN-00123

Para verificar se o número da fatura menos ou mais de 10 caracteres

O Número do pedido de vendas deve ter exatos 10 caracteres. Verifique sua entrada e tente novamente

UAN-GEN-00123

Para verificar se o número do pedido de vendas é menor ou mais de 10 caracteres

De data da fatura deve ser anterior à Para data da fatura

UAN-INV-00002

Para verificar se o valor De data da fatura é anterior à Para data da fatura

O Número do cliente fornecido é inválido.

APG-DWS-INV-002

Se o CSN enviado pelo parceiro for inválido

{ "status": "OK", "transaction_id": "INV701111351434507983", "message": [] }

- A camada do serviço para responder com a mensagem em branco se não houver nenhum registro encontrado para a pesquisa atual

Page 19: Serviç os da Web de distribuiç ã o digital (DDWS ... · de ordem de compra, número do pedido de vendas específico, ... sku Número do material sku_description Texto curto para

19 | Manual de referê ncia do serviç o da Web

4.7.1 Amostra de resposta de erro

5 Apêndice

5.1 Código C# para inserir vários CSNs

O seguinte é um exemplo de script que os Parceiros podem gravar para inserir vários CSNs no serviço GetInvoice. Já que o serviço GetInvoice só pode processar um único CSN por solicitação, é necessário programar seu aplicativo com isso em mente. Uma forma de fazer isso é programar um loop que faz uma solicitação para cada CSN fornecido, levando em consideração a geração de assinaturas e tokens de acesso. Um exemplo de código que faz isso é mostrado abaixo.

5.1.1 Programa principal

using System; using System.Collections.Generic; using System.Text; using MultipleInvoiceCallPoC.POCOs; using Newtonsoft.Json; using System.Diagnostics; using System.Threading; namespace MultipleInvoiceCallPoC { class Program { static void Main(string[] args) { //"Acquiring credentials var credentials = new Credentials { BasePath = "https://www.example.com", ConsumerKey = "AbM03alqHyT3uv3D3cYQV0gq8K0kkKNf", ConsumerSecret = "SCqY7IKSoIZ1ZbY5", CSNs = new List<string>() { "51626566",

{ "status": "Error", "transactionid": "INV51046287871433503736", "message": [ { "error_code": "UAN-GEN-00108", "error_message": "Please enter Customer Number" } ] }

Page 20: Serviç os da Web de distribuiç ã o digital (DDWS ... · de ordem de compra, número do pedido de vendas específico, ... sku Número do material sku_description Texto curto para

20 | Manual de referê ncia do serviç o da Web

"51626567", "51626568", "51626569", "51626570" } }; // Looping through each CSN var container = new List<ResponseContainer>(); foreach (var csn in credentials.CSNs) { // Signing partner's credentials var firstSignature = Utils.GetFirstSignature(credentials); // Sending request to OAuth server to generate an Access Token var tokenDetails = Utils.CallOAuthEndPoint(firstSignature); // Signing Access Token var secondSignature = Utils.GetSecondSignature(tokenDetails, credentials); // Calling Get Invoice WebService var endPoint = string.Format("https://enterprise-api-stg.autodesk.com/v1/invoices?customer_number={0}&invoice_date_from=2015-08-01&invoice_date_to=2015-09-01", csn); var invoice = Utils.GetInvoices(endPoint, secondSignature, csn); // Storing WebService's response var invoiceContainer = JsonConvert.DeserializeObject<InvoiceContainer>(invoice); container.Add(new ResponseContainer { CSN = csn, Response = invoiceContainer }); } // Writing response to file var json = JsonConvert.SerializeObject(container, Formatting.Indented); Utils.WriteJsonToFile(json); } } }

5.1.2 Classe de Utilitários

public class Utils { /// <summary> /// Sets up the OAuth URL end-point and headers to be send in the request in order to /// generate the Access Token /// </summary> /// <param name="url">String that contains the OAuth URL end-point</param>

Page 21: Serviç os da Web de distribuiç ã o digital (DDWS ... · de ordem de compra, número do pedido de vendas específico, ... sku Número do material sku_description Texto curto para

21 | Manual de referê ncia do serviç o da Web

/// <param name="firstSignature">Class that contains Partner's signed credentials</param> /// <returns>String with a JSON object</returns> public static string GetAccesToken(string url, FirstSignature firstSignature) { var request = (HttpWebRequest)WebRequest.Create(url); request.Method = "POST"; request.ContentType = "application/json"; request.Headers.Add("Authorization", string.Format("Basic {0}", firstSignature.Base64Credentials)); request.Headers.Add("signature", firstSignature.SignedSignature); request.Headers.Add("timestamp", string.Format("{0}", firstSignature.Timestamp)); return GetResponse(request); } /// <summary> /// Sets up the GetInvoice URL end-point, headers for the request and a particular CSN /// </summary> /// <param name="url">String that contains the GetInvoices end-point</param> /// <param name="secondSignature">Class that contains a signed Access Token</param> /// <param name="csn">String that contains CSN</param> /// <returns>String with a JSON object</returns> public static string GetInvoices(string url, SecondSignature secondSignature, string csn) { var request = (HttpWebRequest)WebRequest.Create(url); request.Method = "GET"; request.ContentType = "application/json"; request.Headers.Add("Authorization", secondSignature.Authorization); request.Headers.Add("CSN", csn); request.Headers.Add("signature", secondSignature.SignedSignature); request.Headers.Add("timestamp", string.Format("{0}", secondSignature.Timestamp)); return GetResponse(request); } /// <summary> /// Gets a response from an Internet resource /// </summary> /// <param name="request">Requet data </param> /// <returns>String with a JSON object</returns> public static string GetResponse(HttpWebRequest request) { try { var response = (HttpWebResponse)request.GetResponse(); var enc = System.Text.Encoding.GetEncoding("utf-8"); var responseStream = new StreamReader(response.GetResponseStream(), enc); var result = string.Empty; result = responseStream.ReadToEnd();

Page 22: Serviç os da Web de distribuiç ã o digital (DDWS ... · de ordem de compra, número do pedido de vendas específico, ... sku Número do material sku_description Texto curto para

22 | Manual de referê ncia do serviç o da Web

response.Close(); return result; } catch (Exception e) { Trace.WriteLine(e.Message); return string.Empty; } } /// <summary> /// Calls Invoices Endpoint and retrieves a list of invoices /// </summary> /// <param name="firstSignature">Class that contains Partner's signed credentials</param> /// <returns>Class with access token data</returns> public static AccessToken CallOAuthEndPoint(FirstSignature firstSignature) { var url = "https://enterprise-api-dev.autodesk.com/v2/oauth/generateaccesstoken?grant_type=client_credentials"; var details = Utils.GetAccesToken(url, firstSignature); var tokenDetails = JsonConvert.DeserializeObject<AccessToken>(details); return tokenDetails; } /// <summary> /// Takes Partner's credentials and signs them /// </summary> /// <param name="credentials">Class with partner's credentials data</param> /// <returns>class containing partner's signed credentials</returns> public static FirstSignature GetFirstSignature(Credentials credentials) { var credTemp = string.Format("{0}:{1}", credentials.ConsumerKey, credentials.ConsumerSecret); var firstSignature = new FirstSignature { Base64Credentials = Base64Encode(credTemp), Timestamp = GetEpochTimestamp() }; var message = string.Format("{0}{1}{2}", credentials.BasePath, credentials.ConsumerKey, firstSignature.Timestamp); firstSignature.SignedSignature = GenerateSignature(message, credentials.ConsumerSecret); return firstSignature; } /// <summary> /// Takes Access Token and signs it /// </summary> /// <param name="token">Class with access token data</param> /// <param name="credentials">Class with partner's credentials data</param> /// <returns>classs containing a signed access token</returns>

Page 23: Serviç os da Web de distribuiç ã o digital (DDWS ... · de ordem de compra, número do pedido de vendas específico, ... sku Número do material sku_description Texto curto para

23 | Manual de referê ncia do serviç o da Web

public static SecondSignature GetSecondSignature(AccessToken token, Credentials credentials) { var secondSignature = new SecondSignature { Timestamp = GetEpochTimestamp(), CSN = credentials.CSN, Authorization = string.Format("Bearer {0}", token.access_token) }; var message = string.Format("{0}{1}{2}", credentials.BasePath, token.access_token, secondSignature.Timestamp); secondSignature.SignedSignature = GenerateSignature(message, credentials.ConsumerSecret); return secondSignature; } /// <summary> /// Encode string to base64 /// </summary> /// <param name="plainText">String to be encoded</param> /// <returns>Enconded string</returns> public static string Base64Encode(string plainText) { var plainTextBytes = System.Text.Encoding.UTF8.GetBytes(plainText); return System.Convert.ToBase64String(plainTextBytes); } /// <summary> /// Decodes base64 string /// </summary> /// <param name="base64EncodedData">String to be decoded</param> /// <returns>Decoded string</returns> public static string Base64Decode(string base64EncodedData) { var base64EncodedBytes = System.Convert.FromBase64String(base64EncodedData); return System.Text.Encoding.UTF8.GetString(base64EncodedBytes); } /// <summary> /// Gets Epoch Unix timestamp /// </summary> /// <returns>Epoch Unix timestamp</returns> public static int GetEpochTimestamp() { return (int)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds; } /// <summary> /// Hashing of the signature using HMACSHA256 /// </summary> /// <param name="message">String with the message to be hashed</param> /// <param name="secret">String with the consumer secret</param> /// <returns>Hashed string</returns> public static string GenerateSignature(string message, string secret)

Page 24: Serviç os da Web de distribuiç ã o digital (DDWS ... · de ordem de compra, número do pedido de vendas específico, ... sku Número do material sku_description Texto curto para

24 | Manual de referê ncia do serviç o da Web

{ var encoding = new System.Text.ASCIIEncoding(); byte[] keyByte = encoding.GetBytes(secret); byte[] messageBytes = encoding.GetBytes(message); using (var hmacsha256 = new HMACSHA256(keyByte)) { byte[] hashmessage = hmacsha256.ComputeHash(messageBytes); return Convert.ToBase64String(hashmessage); } } /// <summary> /// Prints a JSON object to a file /// </summary> /// <param name="json">String with a JSON Object</param> public static void WriteJsonToFile(string json) { using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\temp\json.txt")) { file.WriteLine(json); } } }

5.1.3 POCOs

namespace MultipleInvoiceCallPoC { /// <summary> /// Class used to store Access Token data /// </summary> public class AccessToken { public string access_token { get; set; } public string expires_in { get; set; } public string token_type { get; set; } } } namespace MultipleInvoiceCallPoC.POCOs { /// <summary> /// Class used to encapsulate the Partner's credentials data /// </summary> public class Credentials { public string BasePath { get; set; } public string CSN { get; set; } public List<string> CSNs { get; set; } public string ConsumerKey { get; set; } public string ConsumerSecret { get; set; } }

Page 25: Serviç os da Web de distribuiç ã o digital (DDWS ... · de ordem de compra, número do pedido de vendas específico, ... sku Número do material sku_description Texto curto para

25 | Manual de referê ncia do serviç o da Web

} namespace MultipleInvoiceCallPoC.POCOs { /// <summary> /// Class used to encapsulate the Partner's signed credentials /// </summary> public class FirstSignature { public string Base64Credentials { get; set; } public int Timestamp { get; set; } public string SignedSignature { get; set; } } }

namespace MultipleInvoiceCallPoC.POCOs { /// <summary> /// Class used to encapsulate a signed Access Token /// </summary> public class SecondSignature { public string SignedSignature { get; set; } public int Timestamp { get; set; } public string Authorization { get; set; } public string CSN { get; set; } } } namespace MultipleInvoiceCallPoC.POCOs { /// <summary> /// Class that represents an Invoice /// </summary> public class Invoice { public string invoice_number { get; set; } public string purchase_order_number { get; set; } public string sales_order_number { get; set; } public string bill_to_customer { get; set; } public string invoice_date { get; set; } public string transaction_type { get; set; } public string invoice_total_amount { get; set; } public string invoice_currency { get; set; } public string account_doc_description { get; set; } public string customer_po_number { get; set; } } /// <summary> /// Class used to contain Invoice data retreived from calling GetInvoices end-point /// </summary> public class InvoiceContainer { public string status { get; set; } public string transaction_id { get; set; }

Page 26: Serviç os da Web de distribuiç ã o digital (DDWS ... · de ordem de compra, número do pedido de vendas específico, ... sku Número do material sku_description Texto curto para

26 | Manual de referê ncia do serviç o da Web

public Invoice[] message { get; set; } } /// <summary> /// Auxiliary class for display purposes used to contain Invoice data for a particular CSN /// </summary> public class ResponseContainer { public string CSN { get; set; } public InvoiceContainer Response{get; set;} } }

Nota: este Manual de referência do serviço é para uso exclusivo pelos destinatários pretendidos e pode conter informações proprietárias e/ou confidenciais que podem ser privilegiadas ou protegidas contra divulgação. Qualquer revisão, utilização, divulgação ou distribuição não autorizada é proibida.