Pagamentos

Os pagamentos seguem a mesma estrutura anteriormente definida: São compostos por um cabeçalho, e linhas. Nesta nova versão, é possível criar ambas as componentes num só pedido, descrito de seguida.

Criar Cabeçalho de sPagamento

Os detalhes do pedido POST para a criação de recibos estão descritos de seguida, em formato OpenAPI, e em cURL.

Criar Cabeçalho de Pagamentos

Criar Cabeçalho de Pagamentos

POST/api/v1/commercial_purchases_payments
Body
cash_account_idnumber
check_numbernullable any
company_idnumber
country_idnumber
currency_conversion_ratenumber
currency_idnumber
datestring
document_series_idnumber
gross_totalnumber
internal_observationsstring
net_totalnumber
observationsstring
payment_mechanismstring
supplier_idnumber
third_party_idnullable any
third_party_typenullable any
Response
Request
const response = await fetch('/api/v1/commercial_purchases_payments', {
    method: 'POST',
    headers: {
      "Content-Type": "application/json"
    },
    body: JSON.stringify({
      "cash_account_id": 2,
      "check_number": null,
      "company_id": 800000046,
      "country_id": 1,
      "currency_conversion_rate": 1,
      "currency_id": 1,
      "date": "2024-02-29",
      "document_series_id": 12,
      "gross_total": 11.3,
      "internal_observations": "Comentário interno",
      "net_total": 0,
      "observations": "Comentários visíveis",
      "payment_mechanism": "MO",
      "supplier_id": 9,
      "third_party_id": null,
      "third_party_type": null
    }),
});
const data = await response.json();

Este pedido permite criar um pagamento, e respetivas linhas, em simultâneo.

curl -v -X POST -H 'Content-Type: application/vnd.api+json' -H 'Accept: application/json' -H 'Authorization: Bearer <access_token>' -d '<payload JSON>' '<API_URL>/v1/commercial_purchases_payments'

Neste, o payload JSON deverá vir no seguinte formato

{
    "id":2,
    "lines": [
       {
            "payment_id": 2,
            "payable_type": "Purchases::Document",
            "payable_id": 2,
            "paid_value": 200,
            "settlement_percentage": 1.0,
            "cashed_vat_amount": null,
            "gross_total": 9.65,
            "settlement_amount": 0.0,
            "net_total": 5.0,
            "retention_total": 0.0,
        }
    ]
}

Anulação de um Pagamento

Anular Documentos de Compra

Anular Documentos de Compra

PATCH/api/v1/commercial_purchases_documents/{id}/void
Path parameters
id*string
Response
Request
const response = await fetch('/api/v1/commercial_purchases_documents/{id}/void', {
    method: 'PATCH',
    headers: {},
});
const data = await response.json();

Atualizar Pagamento

O seguinte pedido pode ser realizado, após a criação do documento, e permite alterar informações sobre o documento. A estrutura do payload é a mesma do POST de criação. Neste, deverá enviar no id do pedido o id do documento a alterar. Os atributos enviados no body irão substituir os guardados no momento, e cada linha enviada dentro de lines irá substituir os dados guardados na linha com id especificado em payment_line_id

Atualizar Pagamento

Atualizar Pagamento

PATCH/api/commercial_purchases_payments/{id}
Path parameters
id*string

TODO

Body
dataobject
Response
Request
const response = await fetch('/api/commercial_purchases_payments/{id}', {
    method: 'PATCH',
    headers: {
      "Content-Type": "application/json"
    },
    body: JSON.stringify({
      "data": {
        "attributes": {
          "check_number": null,
          "currency_conversion_rate": 1,
          "date": "2024-02-29",
          "deleted": false,
          "document_no": "PF 2023/2",
          "document_series_id": 12,
          "gross_total": 0,
          "internal_observations": "Comentário interno",
          "net_total": 0,
          "observations": "Comentários visíveis",
          "payment_mechanism": "MO",
          "standalone": true,
          "third_party_id": null,
          "third_party_type": ""
        },
        "id": "4",
        "type": "commercial_purchases_payments"
      }
    }),
});
const data = await response.json();

Adicionar Linhas ao Pagamento

Adicionar Linha a Pagamentos

Adicionar Linha a Pagamentos

POST/api/commercial_purchases_payment_lines
Body
dataobject
Response
Request
const response = await fetch('/api/commercial_purchases_payment_lines', {
    method: 'POST',
    headers: {
      "Content-Type": "application/json"
    },
    body: JSON.stringify({
      "data": {
        "attributes": {
          "paid_value": 50,
          "payable_id": 2,
          "payable_type": "Purchases::Document",
          "settlement_percentage": 3
        },
        "type": "commercial_purchases_payment_lines"
      }
    }),
});
const data = await response.json();
Payload
{
  "data": {
    "type": "commercial_purchases_payment_lines",
    "attributes": {
      "payable_id": "<id do documento de compra a pagar>",
      "payable_type": "Purchases::Document",
      //"payment_id": "<id do pagamento a que pertence esta linha>"
     
      "paid_value": 50, // Valor total a pagar (não é necessário pagar a totalidade do documento, ou pode pagar-se mais do que um documento)
      // Indicar o atributo seguinte apenas se existir desconto no pagamento (3%, neste exemplo)
      "settlement_percentage": 3
    }
  }
}

NOTA: É na linha que se indica qual o documento de compra (FC ou DSP) a pagar. Se necessário, podem criar-se mais do que uma linha (e nesse caso o pagamento é feito de uma só vez para todos os documentos)

Remover Linhas de Pagamento

Do mesmo modo, caso pretenda remover linhas de um documento, pode utilizar a seguinte rota, onde apenas tem de indicar o id da linha a remover, no path.

Remover Linhas de Pagamento

Remover Linhas de Pagamento

DELETE/api/commercial_purchases_payment_lines
Response
Request
const response = await fetch('/api/commercial_purchases_payment_lines', {
    method: 'DELETE',
    headers: {},
});
const data = await response.json();

Obter Pagamento por Id

Por fim, se pretender obter informações sobre um dado documento, pode utilizar a seguinte rota, onde deverá especificar o id do documento a analisar no path.

Obter Pagamento

Obter Pagamento

GET/api/commercial_purchases_payments/{id}
Path parameters
id*string

TODO

Response
Request
const response = await fetch('/api/commercial_purchases_payments/{id}', {
    method: 'GET',
    headers: {},
});
const data = await response.json();

Obter Todos os Pagamentos

Obter Pagamentos

Obter Pagamentos

GET/api/v1/commercial_purchases_payments/
Response
Request
const response = await fetch('/api/v1/commercial_purchases_payments/', {
    method: 'GET',
    headers: {},
});
const data = await response.json();

Last updated