Vinculação de Contrato x Fatura
VinculacaoContratoXFatura
Rotina do módulo Financeiro (área de Câmbio/Comex) que permite vincular um Contrato de Câmbio a uma ou mais faturas (títulos a receber) do cliente, associando o valor recebido em moeda estrangeira do contrato à liquidação das faturas correspondentes.
Visão Geral
Rotina do módulo Financeiro (área de Câmbio/Comex) que permite vincular um Contrato de Câmbio a uma ou mais faturas (títulos a receber) do cliente, associando o valor recebido em moeda estrangeira do contrato à liquidação das faturas correspondentes. É o mecanismo usado para “baixar” faturas de exportação usando o valor de um contrato de câmbio já fechado.
Endpoints
[GET] /VinculacaoContratoXFatura/ListarContratos
Lista os contratos de câmbio disponíveis para vinculação (ou desvinculação) de faturas, aplicando os filtros informados pelo usuário. Antes de consultar, o sistema grava em tela os últimos filtros usados pelo usuário (campo/valor padrão de busca por contrato), para reaproveitá-los na próxima consulta.
Permissão: coberta pela permissão de acesso à rotina “Vinculação de fatura” (ID 3053, ver seção Permissões) — ação de leitura sem entrada própria.
Parâmetros:
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| extGrid | ConfiguracaoDeGrid | Sim | Configuração de paginação/ordenação da grade |
| contrato | string | Não | Filtro por número/código do contrato |
| codigoCarteira | int? | Não | Filtro por carteira |
| ehVinculacao | bool? | Não | Indica se a consulta é para vincular (true) ou desvincular (false) faturas |
| valorDeConsulta | string | Não | Valor de busca livre (usado junto com campoPadrao) |
| campoPadrao | string | Não | Nome do campo padrão de busca do usuário (ex: data de abertura) |
| valorPadrao | string | Não | Valor padrão de busca associado a campoPadrao |
| dataEmissaoInicial / dataEmissaoFinal | DateTime? | Não | Intervalo de data de emissão do contrato |
| tipoModeloContrato | string | Não | Filtro por tipo de modelo do contrato |
| modeloContrato | string | Não | Filtro por modelo do contrato |
| codigoCarteiraOrigem | int? | Não | Filtro por carteira de origem |
| tipoDoContrato | string | Não | Filtro por tipo do contrato |
“` GET /VinculacaoContratoXFatura/ListarContratos?ehVinculacao=true&contrato=12345 “`
“`json { “total”: 0, “rows”: [] } “`
[GET] /VinculacaoContratoXFatura/ListarTitulos
Lista as faturas (títulos a receber) disponíveis para serem vinculadas a um contrato de câmbio, conforme os filtros de cliente, datas e valor. Também grava os filtros usados na configuração do usuário para reaproveitá-los depois.
Permissão: coberta pela permissão de acesso à rotina “Vinculação de fatura” (ID 3053) — ação de leitura sem entrada própria.
Parâmetros:
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| extGrid | ConfiguracaoDeGrid | Sim | Configuração de paginação/ordenação da grade |
| codigoCliente | int? | Não | Filtro por código do cliente |
| clienteFantasia | string | Não | Filtro por nome fantasia do cliente |
| dataEmissao / dataEmissaoFinal | DateTime? | Não | Intervalo de data de emissão da fatura |
| dataVencimento / dataVencimentoFinal | DateTime? | Não | Intervalo de data de vencimento da fatura |
| numeroDoTitulo | string | Não | Filtro por número do título |
| valorDeConsulta | string | Não | Valor de busca livre |
| valor | decimal? | Não | Filtro por valor da fatura |
“` GET /VinculacaoContratoXFatura/ListarTitulos?codigoCliente=100&numeroDoTitulo=FAT-001 “`
“`json { “total”: 0, “rows”: [] } “`
[GET] /VinculacaoContratoXFatura/ObterFiltrosParaBuscaDeContratos
Recupera o último campo e valor padrão usados pelo usuário para buscar contratos (persistidos anteriormente por ListarContratos), para reexibi-los na tela ao reabrir a rotina.
Permissão: coberta pela permissão de acesso à rotina “Vinculação de fatura” (ID 3053).
Parâmetros: nenhum.
“` GET /VinculacaoContratoXFatura/ObterFiltrosParaBuscaDeContratos “`
“`json { “success”: true, “campoPadraoContrato”: “”, “valorPadraoContrato”: “” } “`
[GET] /VinculacaoContratoXFatura/ObterFiltrosParaBuscaDeContratosXFatura
Recupera os últimos campos e valores padrão (dois pares campo/valor) usados na busca de contratos especificamente na tela de vinculação de fatura (parâmetros com sufixo “ACCTrava”), para reexibi-los ao usuário.
Permissão: coberta pela permissão de acesso à rotina “Vinculação de fatura” (ID 3053).
Parâmetros: nenhum.
“` GET /VinculacaoContratoXFatura/ObterFiltrosParaBuscaDeContratosXFatura “`
“`json { “success”: true, “campoPadraoContrato”: “”, “valorPadraoContrato”: “”, “campoPadrao2Contrato”: “”, “valorPadrao2Contrato”: “” } “`
[GET] /VinculacaoContratoXFatura/ObterUltimosParametros
Recupera o último filtro salvo (campo de busca configurado) do usuário, para reexibição na tela.
Permissão: coberta pela permissão de acesso à rotina “Vinculação de fatura” (ID 3053).
Parâmetros: nenhum.
“` GET /VinculacaoContratoXFatura/ObterUltimosParametros “`
“`json { “success”: true, “filtro”: “” } “`
[POST] /VinculacaoContratoXFatura/Salvar
Vincula uma ou mais faturas (títulos a receber) ao contrato de câmbio informado, associando a cada fatura o valor (em moeda nacional e em moeda estrangeira) a ser considerado como recebido através daquele contrato. Após vincular, retorna o contrato atualizado (valor total, valor já vinculado, saldo) e a lista de faturas vinculadas.
Permissão: “VinculacaoContratoXFatura/Salvar” (ID 3053) — nomeada na tela como “Vinculação de fatura”
Parâmetros:
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| dto | DTODeContratoCambio | Sim | Contrato de câmbio, incluindo a lista `Faturas` (uma ou mais `DTODeContratoFatura`) a vincular |
“` POST /VinculacaoContratoXFatura/Salvar { “ID”: “000000001”, “Faturas”: [ { “IdDaFatura”: “12345”, “ValorVinculadoMoeda”: 1000.00 } ] } “`
“`json { “success”: true, “retorno”: { “codigoContrato”: “000123”, “valorMoeda”: 10000.00, “valorVinculado”: 1000.00, “valorSaldo”: 9000.00, “faturas”: [] } } “`
[POST] /VinculacaoContratoXFatura/Imprimir
Gera (ou reaproveita, se já existir) o arquivo de comprovante de câmbio (“ComprovanteCambio.rpt”) a partir de um modelo padrão, copiando-o para a pasta do cliente para impressão/exibição.
Permissão: “VinculacaoContratoXFatura/Imprimir” (ID 3056) — nomeada na tela como “Vinculação de fatura”
Parâmetros: nenhum (usa o contexto do relatório já configurado no servidor).
“` POST /VinculacaoContratoXFatura/Imprimir “`
“`json { “success”: true } “`
Modelos de Dados
DTODeContratoCambio (contrato)
| Campo | Tipo | Descrição |
|---|---|---|
| ID | string (9) | Chave de fato do contrato (obrigatório) |
| IDDoTipo | string | Tipo do contrato |
| IDDoModelo | string | Modelo do contrato |
| Codigo | string (10) | Código do contrato de câmbio |
| DataAbertura | DateTime? | Data de abertura do contrato |
| DataVencimento | DateTime? | Data de vencimento do contrato |
| Valor / ValorMoeda | decimal? | Valor do contrato em moeda nacional / em moeda estrangeira |
| IDDoStatus | string (1) | Status do contrato (obrigatório) |
| Observacao | string (255) | Observação livre |
| ValorVinculadoMoeda | decimal? | Total já vinculado a faturas, em moeda estrangeira |
| ValoSaldoMoeda | decimal? | Saldo do contrato ainda não vinculado, em moeda estrangeira |
| SaldoAVincular | decimal? | Saldo disponível para nova vinculação |
| SaldoALiquidar | decimal? | Saldo disponível para liquidação |
| Faturas | lista de DTODeContratoFatura | Faturas a vincular/desvincular nesta operação |
DTODeContratoFatura (fatura vinculada)
| Campo | Tipo | Descrição |
|---|---|---|
| IdDoContrato | string | ID do contrato ao qual a fatura pertence |
| IdDaFatura | string | ID da fatura (título a receber) a vincular |
| ValorVinculado | decimal? | Valor vinculado em moeda nacional (calculado a partir do valor em moeda e da cotação da fatura) |
| ValorVinculadoMoeda | decimal? | Valor a vincular, em moeda estrangeira (informado pelo usuário) |
| ValorDeCotacao | decimal? | Cotação usada na conversão |
| CodigoOperacao | int | Código da operação (vínculo/desvínculo) |
| Operacao | string | Descrição da operação |
| NumeroTitulo | string (calculado) | Identificação completa do título (filial-documento-série-número/parcela) |
| Carteira / Participante | string (calculado) | Carteira e participante (cliente) da fatura |
Regras de Negócio
- Só é possível vincular faturas a um contrato existente. Se o contrato informado não for encontrado, a operação é bloqueada.Mensagem exibida: “Não foi possível vincular Faturas — Contrato {0} não encontrado — Verifique o contrato e informe corretamente” (onde {0} é o ID do contrato informado)
- É obrigatório informar ao menos uma fatura para vincular. Se a lista de faturas vier vazia, a operação é bloqueada tanto no controller quanto na camada de serviço.Mensagem exibida (serviço): “Não foi possível vincular Faturas — Nenhuma fatura informada — Informe uma fatura valida e tente novamente”
Mensagem exibida (controller, quando o modelo enviado não possui faturas): “Não foi possível Salvar — Os dados informados podem estar incorretos — Verifique se os dados informados estão corretos.” - O valor total vinculado a um contrato nunca pode ultrapassar o valor do próprio contrato. O sistema soma o valor já vinculado ao novo valor informado e compara com o valor total do contrato antes de gravar.Mensagem exibida: “Não foi possível validar valor a vincular — Valor a vincular ultrapassa valor do contrato. Valor do contrato : {0} Total vinculado : {1} Valor a vincular : {2} — Informe um valor que não ultrapasse o valor do contrato”
- Somente faturas do tipo de documento “FAT” podem ser vinculadas a um contrato de câmbio. Qualquer outro tipo de documento é rejeitado.Mensagem exibida: “Não foi possível obter Fatura — Apenas faturas do documento FAT podem ser vinculadas. Fatura incorreta : {0} — Informe faturas do documento FAT para operação”
- A fatura precisa ter moeda estrangeira definida para poder ser vinculada a um contrato de câmbio.Mensagem exibida: “Não foi possível obter Fatura — Fatura {0} Não possui moeda. — Informe fatura que possui moeda ou edite a fatura desejada”
- O valor a vincular de uma fatura não pode ser maior que o valor total do título.Mensagem exibida: “Não foi possível obter Fatura — Valor a vincular da Fatura {0} é maior que o valor do título. — Informe valor a vincular que não seje maior que o valor do títulos”
- A moeda da fatura precisa ser a mesma moeda do contrato de câmbio. Não é permitido vincular fatura em moeda diferente da moeda do contrato.Mensagem exibida: “Não foi possível obter Fatura — Moeda da fatura {0} é diferente da moeda do contrato. Moeda do contrato : {1} Moeda da fatura : {2} — Infome moeda da fatura igual a moeda do contrato”
- É obrigatório informar um valor a vincular maior que zero para cada fatura selecionada.Mensagem exibida: “Não foi possível obter Fatura — Fatura {0} não possui valor a vincular. — Vincule um valor a fatura e tente novamente”
- A fatura informada precisa existir no cadastro de títulos a receber.Mensagem exibida: “Não foi possível obter Fatura — A Fatura {0} não foi encontrada — Verifique e informe a fatura corretamente”
- O valor total vinculado a uma mesma fatura (somando vinculações anteriores e descontando desvinculações) não pode ultrapassar o valor do título. O sistema recalcula esse total considerando o histórico de vínculos/desvínculos já registrados para o contrato.Mensagem exibida: “Não foi possível validar valor da fatura — Valor informado para Fatura {0} ultrapassa o valor do título, Saldo disponível : {1} – {2} — Informe um valor para fatura que não ultrapasse o valor do título”
- A vinculação é persistida de forma transacional: somente após todas as faturas informadas passarem pelas validações acima é que a operação é confirmada (commit) na base de dados; qualquer falha em uma fatura interrompe a gravação de todo o lote.
- A ação “Imprimir” gera o comprovante de câmbio a partir de um modelo padrão (“ComprovanteCambio.rpt”), copiando-o para a pasta do cliente apenas se ainda não existir — não gera um novo arquivo a cada impressão.
Permissões
Acesso à rotina: não há uma permissão “ListView” própria registrada em RecursosGeraisFinanceiro.cs para esta rotina — o acesso de leitura/consulta (ListarContratos, ListarTitulos e as consultas de filtro) não exige permissão granular específica; as ações de escrita (“Salvar” e “Imprimir”) possuem permissão própria e são o que efetivamente controla o acesso à funcionalidade.
| Ação | Permissão | ID |
|---|---|---|
| Salvar (vincular faturas) | “VinculacaoContratoXFatura/Salvar” — “Vinculação de fatura” | 3053 |
| Imprimir | “VinculacaoContratoXFatura/Imprimir” — “Vinculação de fatura” | 3056 |
| ListarContratos, ListarTitulos, ObterFiltrosParaBuscaDeContratos, ObterFiltrosParaBuscaDeContratosXFatura, ObterUltimosParametros | (ações de leitura, sem permissão própria) | — |