# EDI

> O nosso sistema de pedidos de compra por Intercâmbio Eletrónico de Dados (EDI) simplifica a forma como recebe pedidos, enviando-os diretamente para o seu ERP ou sistema de gestão de encomendas.

Source: https://www.purchaseplus.com/pt/docs/for-suppliers/electronic-data-interchange-edi-purchase-orders

Markdown: https://www.purchaseplus.com/pt/docs/for-suppliers/electronic-data-interchange-edi-purchase-orders.md

# EDI
Ir para:

-   [Visão Geral](#Overview)
-   [Benefícios](#Benefits)
-   [Primeiros Passos](#GettingStartedWithEDI)
-   [Formatos de Dados Suportados](#SupportedFormats)
-   [Exemplo de Payload JSON](#SampleJSONPayload)
-   [Campos Importantes](#ImportantFields)

### Visão Geral

O nosso sistema de pedidos de compra por Intercâmbio Eletrónico de Dados (EDI) simplifica a forma como recebe pedidos, enviando-os diretamente para o seu ERP ou sistema de gestão de encomendas, eliminando a necessidade de introdução manual de dados.

Recomendamos o EDI para a receção de pedidos de compra, particularmente para fornecedores de média a grande dimensão e aqueles com fortes capacidades de integração.

### Benefícios

Os pedidos de compra por EDI ajudam os fornecedores a trabalhar de forma mais eficiente, eliminando a necessidade de introduzir manualmente pedidos de compra num sistema de Enterprise Resource Planning (ERP) ou de Gestão de Encomendas. Também melhoram a precisão ao reduzir os erros manuais e aceleram o processamento de encomendas entre compradores e fornecedores. Acreditamos que uma troca de dados mais rápida e precisa resulta em menos problemas nas encomendas, o que beneficia compradores, fornecedores e a nós próprios.

No passado, tivemos problemas em que os fornecedores não recebiam os pedidos de compra por e-mail porque os filtros de spam os bloqueavam incorretamente. Embora utilizemos um serviço de e-mail gerido, estes e-mails podem, ocasionalmente, continuar a ser bloqueados.

Acreditamos também que o HTTPS ou SFTP, os protocolos utilizados para o EDI, oferecem uma forma mais robusta e segura de trocar informações sensíveis de encomendas do que o e-mail.

### Primeiros Passos

1.  Configurar um endpoint: Precisará de configurar um endpoint para receber encomendas. Em alternativa, você ou nós podemos configurar um diretório SFTP.
    
2.  Entrar em contacto: Assim que o seu endpoint estiver pronto (ou se pretender que configuremos um diretório SFTP), entre em contacto com a nossa equipa através de [help.suppliers@purchaseplus.com](mailto:help.suppliers@purchaseplus.com) indicando os detalhes do seu endpoint.
    
3.  Integração: Iremos adicionar o seu endpoint ao nosso sistema.
    
4.  Testes: Para garantir uma transição suave, podemos realizar um pequeno teste mudando um ou dois compradores para o novo endpoint. Em alternativa, podemos executar o e-mail e o EDI em simultâneo durante um período experimental.
    
5.  Piloto: Trabalharemos consigo para selecionar um pequeno grupo de clientes de teste que serão transferidos para o novo endpoint.
    
6.  Implementação completa: Assim que estiver confortável, transferiremos todas as suas encomendas para EDI.
    

### Formatos de Dados Suportados

Suportamos primariamente JSON para transações de EDI. Também podemos enviar XML e fornecer um payload de exemplo a pedido, mas não suportamos cXML.

### Exemplo de Payload JSON

`{     "purchase_orders": [       {         "purchase_order": {           "identity": "singer.test.sleep",           "purchaser": {             "id": 262388,             "name": "Sample Purchaser",             "customer_number": "PUR12345",             "requestor": "Han Solo",             "phone": "1300 123 456",             "email": "han.solo@purchaseplus.com"           },           "supplier": {             "name": "Sample Supplier",             "vendor_number": "SUP98765"           },           "purchase_order_number": "PO00001",           "purchaser_reference": "Daily food order",           "supplier_reference": null,           "expected_delivery_date": "2025-03-15",           "sent_date": "2025-03-15T05:51:57.122Z",           "cancelled": false,           "comments": [],           "confirmation_instructions": "Confirmation instructions example.",           "delivery_instructions": "Delivery instructions example.",           "delivery_address": {             "location_name": "Default",             "line1": "Level 4, 11 York Street",             "line2": "",             "city": "Sydney",             "state_province": "NSW",             "postal_code": "2000",             "country_code": "AU"           },           "currency": "AUD",           "net_amount": 826.1,           "delivery_amount": 0,           "tax_amount": 20.25,           "gross_amount": 846.35,           "lines": [             {               "code": "YOGH",               "brand": "Farmers Union",               "item_description": "Greek Style Yoghurt : Natural",               "item_size": 1,               "item_measure": "lt",               "item_package": "tub",               "pack_quantity": 1,               "pack_name": "each",               "gs1_code": null,               "order_instruction": null,               "unit_price": 6.75,               "quantity": 30,               "net_amount": 202.5,               "tax_amount": 20.25,               "gross_amount": 222.75,               "is_purchaser_price": true             },             {               "code": "WMBD",               "brand": "Mighty Soft",               "item_description": "Bread Sliced Wholemeal Sandwich Frozen",               "item_size": 650,               "item_measure": "g",               "item_package": null,               "pack_quantity": 10,               "pack_name": "carton",               "gs1_code": null,               "order_instruction": null,               "unit_price": 20,               "quantity": 25,               "net_amount": 500,               "tax_amount": 0,               "gross_amount": 500,               "is_purchaser_price": true             },             {               "code": "MILK",               "brand": "Pauls - Professional",               "item_description": "Milk : Full Cream",               "item_size": 3,               "item_measure": "lt",               "item_package": "bottle",               "pack_quantity": 6,               "pack_name": "carton",               "gs1_code": null,               "order_instruction": null,               "unit_price": 8.24,               "quantity": 15,               "net_amount": 123.6,               "tax_amount": 0,               "gross_amount": 123.6,               "is_purchaser_price": true             }           ]         }       }     ]   }` 

### Gestão de Cancelamentos

Ocasionalmente, um comprador cancelará uma encomenda através da interface de utilizador e optará por enviar um aviso de cancelamento. Isto envia uma cópia duplicada do payload do webhook com o campo `cancelled` definido como `true`.

Certifique-se de que filtra estes pedidos na totalidade ou que os gere com uma notificação para a sua equipa de suporte.

Formamos os utilizadores para entrarem em contacto direto com o fornecedor caso pretendam cancelar ou modificar uma encomenda, uma vez que os sistemas nem sempre gerem isto de forma fiável.

### Campos Importantes

| **Campo** | **Descrição** |
| --- | --- |
| `identity` | Um identificador exclusivo de três palavras que representa a relação entre uma conta de fornecedor específica e uma conta de comprador. Este identificador é exclusivo para cada combinação comprador-fornecedor e pode ser utilizado como a `identity` ao enviar faturas para o PurchasePlus. |
| `vendor_number` | Um identificador exclusivo que atribui a cada comprador dentro do seu sistema. Isto permite cruzar a referência dos compradores entre diferentes sistemas. Este campo pode ser atualizado no portal PurchasePlus. |
| `purchase_order_number` | O número do pedido de compra atribuído pelo comprador. Embora não seja globalmente exclusivo, é exclusivo no contexto de um único comprador. Para criar uma chave exclusiva, concatene este campo com o campo vendor_number. Importante: Se o utilizador do PurchasePlus deixar o campo ‘Purchaser Code’ em branco, utilizar esta concatenação para uma chave exclusiva pode causar problemas. |
| `cancelled` | Um indicador booleano que indica se o pedido de compra foi cancelado pelo comprador na IU do MarketBoomer. Se for `true`, o pedido de compra foi cancelado. O MarketBoomer reenviará o pedido de compra com este campo definido como `true` aquando do cancelamento. O tratamento deste campo é opcional se o seu sistema não suportar cancelamentos de encomendas, mas é uma boa prática. |
| `lines.code` | O código de produto exclusivo que atribui a cada produto no nosso sistema. Este campo corresponde ao "owner code" no PurchasePlus ou ao "supplier code" no Legacy PurchasePlus. Pode atualizar este código dentro das respetivas interfaces do P+. |

O código de produto exclusivo que atribui a cada produto no nosso sistema. Este campo corresponde ao "owner code" no PurchasePlus ou ao "supplier code" no Legacy PurchasePlus. Pode atualizar este código dentro das respetivas interfaces do P+.
