Árvore de páginas

 Este documento é material de especificação dos requisitos de inovação, trata-se de conteúdo extremamente técnico.                                                             

  

Informações Gerais

 

Especificação

Produto

 Datasul

Módulo

Vendas, Compras e Armazenagem de Grãos

Segmento Executor

 Agroindústria

Projeto1

Integrar Originação de Grãos ao Sistema Externo Hedge Moeda 2a fase

IRM1

AGROG01-5

Requisito1

AGROG01-2

Subtarefa1


Chamado2


País

( X ) Brasil  (  ) Argentina  (  ) Mexico  (  ) Chile  (  ) Paraguai  (  ) Equador

(  ) USA  (  ) Colombia   (  ) Outro _____________.

Outros

<Caso necessário informe outras referências que sejam pertinentes a esta especificação. Exemplo: links de outros documentos ou subtarefas relacionadas>.

   Legenda: 1 – Inovação 2 – Manutenção (Os demais campos devem ser preenchidos para ambos os processos). 

Objetivo

 

O projeto integração com Hedge moeda surgiu da necessidade de ter a garantia que de todos os processos de compra e venda (TradeSlip) de grãos terem seus valores (em reais) com hedges executados. Essa execução hoje é feita de forma manual e deverá ser feita automaticamente entre o Datasul e sistema hedge moeda do cliente para assegurar que as informações estejam iguais nos dois sistemas.


 

Esta 2ª fase compreende:

 

  • Cancelamento de Fixação através de Trade Slip, com opção de pagamento ou recebimento de Multa;

  • Baixa Hedge nos pagamentos;

  • Baixa Hedge Manual;
  • Rolagem;
  • Alteração de Trade Slip, com opção para trava de cotação pagamentos e valor componentes;
  • Mudança de Execução;

  • Integração destas operações com o sistema de Hedge Moeda;
  • Relatório Informações Diárias de Exposição



Definição da Regra de Negócio

Rotina

Tipo de Operação

Opção de Menu

Regras de Negócio

GG1014-Componentes de Preço

Alteração

Cadastros

-

GG0103-Registro Negócios

Alteração

Tarefas

-

GG0104-Monitor Hedge

Alteração

Tarefas

-

GG0105-Baixa Hedge por Pagamento 

Criação

 Tarefas-
GG4013-Acompanhamento Diário Hedge MoedaCriaçãoRelatório-


1) Cancelamento de Fixações


Objetivo: Permitir o cancelamento de fixações através da rotina de trade Slip. Esta opção será utilizada tanto para cancelamento de pequenas quantidades para quantidades mais expressivas, que poderá envolver uma Multa, caracterizando um Washout.


O cancelamento poderá ser utilizado para:

  • Cancelar contratos fixos, tanto a quantidade contratada como a quantidade fixada;
  • Cancelar fixação de contratos fixos, total ou parcial;
  • Cancelar total ou parcial fixação de preço em contrato a fixar;
  • Cancelar total ou parcial fixação de componente em contrato a fixar;


Considerações:

  • Fluxo da situação do TS de cancelamento:
    • Incluir -> Pendente;
    • Aprova TS -> Aprovação Banking (se tiver hedge ou aprov Bank no gg1005), integrar com sistema hedge moeda cliente;
    • Aprova Bank -> Aprovação Margem (se tiver hedge ou fix preço);
    • Aprova Margem -> Atualizado (cancela contrato/fix contrato, gera título de multa no financeiro);

  • Situações do Trade Slip, onde não é permitido o cancelamento:
    • Aprovação Banking (com exceção se não utilizar integração com sistema externo);
    • Cancelado;

  • Situação do Trade Slip, onde o cancelamento é realizado sobre o próprio Trade Slip:
    • Pendente;
    • Completar (sem nenhuma fixação de componente ou preço);
    • Atualizado (sem nenhuma fixação de componente ou preço);

  • Situação do Trade Slip, onde o cancelamento é realizado através de um novo Trade Slip, com nova versão, do tipo Cancelamento:
    • Aprovação de Margem;
    • Completar (com fixação de componente ou preço);
    • Atualizado (com fixação de componente ou preço);
      ** Quando o TS a ser cancelado for do tipo Alteração (ind-trade=4) ou Mudança de Execução (ind-trade=7) será permitido o cancelamento apenas quando a situação estiver Atualizado.

  • Para cancelar, o usuário seleciona o TS que quer cancelar na tela do gg0103 e aciona o botão Cancelar. Quando a situação do TS estiver como Aprovação de Margem, Completar ou Atualizado. É apresentada a tela para inclusão do TS de versão (gg0103d/gg0103e) com a ação Cancelamento. Somente aceito para este cancelamento TS relacionado com tipo (ind-trade) igual a NOVO, Fixação ou Alteração. TS de cancelamento ou rolagem, não pode ser cancelado, caso necessário terá que ser feito nova alteração/rolagem.


  • Ao entrar na tela de inclusão do TS (gg0103d/gg0103e, ggapi034/ggapi035), carregar os dados do TS, mantendo o número e criando uma versão nova, bem como guardando nos campos gg-negocio.num-trade-slip-relac e num-versao-relac o número do TS selecionado. O campo gg-negocio/gg-negocio-vmi.ind-trade deve ser = cancelamento.

  • Validações:
    • Caso tiver algum outro TS, com o mesmo TS relacionado, que esteja com situação Pendente, aprovação Margem, Completar, aprovação banking, não deve permitir Continuar. Mensagem “Já existe outro Trade Slip não atualizado” + número e versão do TS encontrado;
    • Caso tiver contrato, e existir um outro TS com o mesmo contrato, que esteja com situação Pendente, aprovação Margem, Completar, aprovação banking, não deve permitir Continuar. Mensagem “Já existe outro Trade Slip para este contrato e não está atualizado” + número e versão do TS;

  • Quanto ao Tipo do cancelamento:

- Se o TS selecionado para cancelar estiver com situação Aprovação de Margem, Completar, ou Atualizado sem contrato, o tipo de cancelamento será Total. Neste caso vai cancelar todo o TS, a parte contratada e a parte fixada, não faz sentido cancelar parcial, se o processo está na metade, e não chegou a atualizar ainda o contrato. Quando terminar as aprovações do TS de Cancelamento, simplesmente atualiza o status do TS, sem fazer nada no contrato.

-Se o TS selecionado para cancelar, estiver com status Atualizado, já tiver contrato (ind-trade = novo, ind-motivo = fixação preço, tipo de preço Fixo), o usuário poderá selecionar em tela o tipo de cancelamento se Contrato ou Fixação. Essa é a única opção que o usuário poderá selecionar o tipo de cancelamento.

-Se o TS selecionado para cancelar, estiver com status Atualizado, já tiver contrato, ind-trade = fixação, o tipo de cancelamento será sempre = Fixação.


  • Quanto a quantidade:

- Se tiver fixação no TS a ser cancelado, verificar no contrato o saldo que permite cancelar, como exemplo no compras:

Ler gg-contrato-pre, com ep-codigo, contrato, num-seq = gg-negocio.num-seq-pre, e poderá cancelar: gg-contrato-pre.qtd-fixada – gg-contrato-pre.qtd-paga – gg-contrato-pre.qtd-alocada-fechto.

- Se for um TS de fixação de componente, verificar no contrato o saldo de cada componente que permite cancelar: gg-contrato-fixacao.qtd-fixada – gg-contrato-fixação.qtd-alocada.

- Se não tiver quantidade para cancelar, apresentar mensagem de bloqueio e não permitir. Essa validação pode ser na API da confirmação dos dados principais do TS de cancelamento (ggapi034/ggapi035).

- Se for um cancelamento Total, então ver a quantidade do contrato, caso tenha contrato: gg-contrato.qtd-contrato – gg-contrato.qtd-entrega.

Nas API's de confirmação do TS, antes de passar das temp-table's para as tabelas do banco, efetuar validações destas quantidades, pois o usuário em tela poderá alterar, e logo pode acabar informando uma quantidade maior que o saldo disponível a cancelar ou mesmo zero, que não faz sentido o cancelamento.


  • Ao abrir a tela de inclusão do trade Slip (gg0103d/gg0103e), deve solicitar novos campos: Data Multa, Motivo cancelamento (colocar zoom, e descrição do motivo de cancelamento, do cadastro que já é utilizado no gg1001b, pasta movimentos, botão cancelar) e tipo do cancelamento (quando for contrato novo, fixo, e com contrato, os demais casos desabilitado).

  • Quanto as parcelas de pagamento:

- Trazer do TS relacionado ao cancelamento e não permitir alterar.

- Também não poderá alterar os dados do TS, datas, nada. Somente poderá alterar no TS, os campos específicos do cancelamento, e data do trade slip.


  • Quanto aos componentes:

- Deve buscar os componentes válidos para o TS, como se fosse fazer um novo TS, trazendo também os componentes do TS original (pode acontecer de algum componente estar inativo, porém precisa ser de qualquer forma cancelado), porém buscar mais os componentes marcados como Multa no gg1014.

- O TS de cancelamento deve ter apenas qtd-a-fixar, e val-a-fixar, não usar os campos qtd-fixada, e val-fixada, mesmo que o TS original selecionado tenha componente com qtd-fixada. Poderá ter valor fixado, caso no ts a ser cancelado tenha feito alocação em fixação de componente.


  • Quanto ao componente do tipo Multa:

- Poderão ter um ou mais componentes do tipo Multa, e cada componente poderá está ligado a uma espécie/conta do APB ou ACR.

- No cadastro gg1014, um componente do tipo Multa não pode estar ligado a uma espécie ACR e APB ao mesmo tempo. Ou pode ser informado dados para geração no contas a receber, ou no módulo de contas a pagar.

- exemplo de cadastro de Multa: MULTA RECEBER, MULTA PAGAR.

Contabilização do Movimento de implantação do título de Multa no módulo de Contas a Pagar:

CR - Conta Saldo informada para espécie (Esp APB) e grupo cliente

DB - Conta informada Multa Washout APB (GG1014)


Exemplo cadastro Conta Saldo Espécie e Grupo Fornecedor:




Contabilização do Movimento de implantação do título de Multa no módulo de Contas a Receber:

DB - Conta informada Multa Washout ACR (GG1014)

CR - Conta Saldo informada para espécie (Esp ACR) e grupo fornecedor


Exemplo cadastro Conta Saldo Espécie e Grupo Cliente:


- Componente Multa, não terá um tratamento ou cálculo automático, seguirá a parametrização do cadastro, podendo ser tabelado ou não, ou ainda ter um programa específico de cálculo relacionado. O programa específico de cálculo poderá ser desenvolvido pelo cliente em progress, e compilado na versão do ERP para execução. É liberado o código fonte do programa de exemplo.


  • Quanto as integrações com sistema externo hedge moeda cliente:

- Ao digitar o TS de cancelamento, terá solicitação de pré-taxa, nos mesmos moldes de um TS novo ou fixação.

- Após aprovar um TS pendente de cancelamento, deve criar a tabela gg-hedge-mov, com transação Baixa por Cancelamento, relacionado ao gg-hedge do TS original relacionado, para cada componente e valor que estiver no TS de cancelamento. Deve gravar na gg-hedge-mov, em um campo livre, o TS e a versão do TS de cancelamento. Deve verificar se o movimento de hedge possui saldo, e criar a baixa apenas para quando tiver saldo.

- Criando os registros gg-hedge-mov, irá para o sistema externo hedge moeda cliente as baixas/reversões informando o componente, valor e boleto.

- Caso tiver multa, deverá criar uma solicitação de hedge ao sistema externo hedge moeda cliente da Multa, no layout de createHedge.

- No retorno da baixa do sistema externo hedge moeda cliente, deve ler o TS de cancelamento (pelo campo livre que gravou qual o TS do cancelamento), e atualizar neste TS de cancelamento as taxas.

- No retorno da Multa, atualizar a taxa no TS para o componente.

- Após confirmar retorno das baixas e da Multa, calcular a margem deste TS de cancelamento. Ou seja, o retorno da taxa no TS de cancelamento, mais a taxa da multa, deverá ser usada para recalcular a margem do ts de cancelamento.


  • Quanto a aprovação de Margem:

- Um TS de cancelamento sofrerá aprovação Margem da mesma forma.


  • Quanto a atualização do TS de cancelamento no contrato (após as aprovações):

- Quando for efetuar a atualização no contrato, após as aprovações, deve cancelar a quantidade contratada (conforme o caso, e criando movimento gg-contrato-mov), diminuir a quantidade da fixação de preço(gg-contrato-pre) e diminuir a fixação de componente (gg-contrato-fixacao).

- Incluir na i01gg040.i uma transsação para o campo gg-contrato-mov.ind-trasacao .

     22 - Multa Cancelamento

     Esta transação de cancelamento será gerada no TS de cancelamento, após sua confirmação, bem como o titulo para pagamento ou cobrança.

- Caso tiver componente de multa, verificar se no cadastro de componente tem parametrização de Espécie, Série, Conta no gg1014 para APB, e gerar um titulo no contas a pagar, ou ACR, gerando também no gg-contrato-mov, um movimento para guardar o ID deste titulo gerado. Este titulo deve ficar relacionado ao contrato (gg-ext-tit-ap) e também na própria tit_ap, nos campos novos de contrato e safra que o financeiro possui.

- Ajustar Detalhes do contrato, no gg1001b/gg1091, para mostrar o novo tipo de transação (gg-contrato-mov.ind-transacao) que será usado para o titulo de multa. Também vendas gg1091.


  • Quanto a consulta do Título da Multa:

- Na linha do componente de multa, incluir menu para acesso a consulta do titulo financeiro:


Consulta do contrato após cancelamento:



2) GG0105 - Baixa Hedge por Pagamento


Objetivo: Permitir efetuar a baixa de Hedge Moeda pela programação de pagamentos e recebimentos no financeiro.


Tabelas Utilizadas:

  • Tit_ap
  • Tit_acr
  • Gg-hedge
  • Gg-hedge-mov

 

Considerações:

  • Frete, Produto, Impostos Retidos, Fobbings. Para cada tipo poderão ser parametrizadas espécies.
  • A baixa por pagamento será feita com base nos títulos a vencer, conforme seleção.
  • Vincular o fornecedor a um porto, a fim de quando tiver um adto de elevação, poder relacionar aos contratos com aquele porto.


Baixas Controladas através dos Títulos:

  1. Fatura Rodoviária (Contas a Pagar).
  2. Fatura Ferroviária (Contas a Pagar).
  3. Nota Fiscal Fobbings (Contas a Pagar).
  4. Pagamento Contrato Compra (Contas a Pagar).
  5. Adiantamento Contrato Compra (Contas a Pagar).
  6. Impostos Retidos Compra (Contas a Pagar).
  7. Multa Whashout (Contas a Pagar).
  8. Multa Whashout (Contas a Receber).  
  9. Nota Fiscal Entrega Futura (Contas a Pagar). 
  10. Cobrança contrato vendas (Contas a Receber).  
  11. Fatura Hidroviária (Contas a Pagar).

Para cada tipo de título é necessário parametrizar na rotina de Baixa Hedge por Pagamento, qual componente de preço que tem o Boleto de Hedge para baixar, e qual espécie de título:

Exemplo:

Importante: para cada tipo, o melhor é ter uma espécie de título específica para o caso, pois isso trará maior segurança e performance. Caso não seja possível, também será feita a pesquisa, porém pode perder em performance.

Lay Out:

  • Esboço Tela:


  • Botão Parâmetros[P]

Poderá incluir, excluir e alterar.

Campos:

Espécie: validar que seja uma válida no financeiro (exemplo gg1005, gg1014), colocar descrição.

Componente: validar que esteja na tabela gg-comp-preco, colocar pesquisa, e descrição ao lado (exemplo gg1014).

Tipo Pagto: solicitar uma das opções abaixo:

01-  Fatura Rodoviária

02-  Fatura Ferroviária

03-  Nota Fiscal Fobbings

04-  Pagamento Contrato Compra

05-  Adiantamento Contrato Compra

06-  Impostos Retidos Compra /* fatura geradas pelos impostos:Funrual, Facs, Fethab, Fundersul*/

07-  Multa Receber Contrato Compra

08-  Multa Pagar Contrato Compra

09-  Cobrança Contrato Vendas

10-  Nota Fiscal Global Entrega Futura

11-  Fatura Hidroviária


Depois que solicitar, salvar na tabela gg-parâmetros, onde:

gg-parametros.CodParam = GG0105 + sequencial  Exemplo: GG01050001

gg-parametros.paramValue = espécie

gg-parametros.char-1 = componente

gg-parametros.char-2 = tipo pagamento


  • Botão Filtro [F]:


  • Botão Atualizar [A]

Este botão é para fazer a carrega dos dados da tela, conforme filtro.

Criar uma procedure no ggp701za ou ggp702za, onde recebe os parâmetros da seleção e as espécies dos parâmetros.

Deve retornar:

- temp-table com os títulos encontrados

- temp-table com os títulos originais, em caso de ser um título substituído.


Deve pesquisar da tit_ap

For each estabelecimento considerar seleção inicial a final

     And cod_empresa = variável global empresa logada:

     for each tt-param-espec

         where tt-param-espc.cod-esp conforme selecao

         and tt-param-espc.tipo-pagto <> 8:

         for each tit_ap

             Where cod-estab = estabelecimento.cod_estab

               And cod_espec_docto = tt-param-espec.cod-esp

               And log_inter_cfl_atlzdo = yes

                And dat_prev_pagto >= data inicial selecao

                And dat_prev_pagto <= data final selecao

                And cod_fornec conforme seleção 

                And val_sdo_tit_ap > 0


Retornar em uma temp-table

Modulo = “APB”

Cod_tit_ap

Cod_espec_docto

Cod_ser_docto

Cod_estab

Parcela

Dat_prev_pagto

Dat_transacao

Cdn_fornec

Cod_indic_econ /* traduzir para moeda do ems2, mas guardar em temp-table para que a cada título não seja necessário traduzir novamente, assim ganha-se performance */

Val_sdo_tit_ap

Num_id_tit_ap

tit_ap.ind_origin_tit_ap

Log-subst   = flag na tt de retorno para identificar que teve substituição.


Caso ter substituição, criar outra tt para retorno com os títulos que deram origem a este titulo novo.

Para saber se o titulo teve origem numa substituição:

If tit_ap.ind_origin_tit_ap = “APB”

and can-FIND(FIRST movto_tit_ap OF tit_ap NO-Lock

where movto_tit_ap.ind_trans_ap_abrev = “SBND”)


Para ler as origens do titulo substituído:

for each estabelecimento no-lock

   where estabelecimento.cod_empresa = v_cod_empres_usuar:

                    for each movto_tit_ap no-lock

      where movto_tit_ap.cod_estab          = estabelecimento.cod_estab

        and movto_tit_ap.cod_refer          = tit_ap.cod_refer

        and movto_tit_ap.num_id_tit_ap     <> tit_ap.num_id_tit_ap

        and movto_tit_ap.ind_trans_ap_abrev = "BXSB":

                find b_tit_ap no-lock

                    where b_tit_ap.num_id_tit_ap = movto_tit_ap.num_id_tit_ap

     and b_tit_ap.cod_estab     = movto_tit_ap.cod_estab no-error.


Deve pesquisar da tit_acr

For each estabelecimento considerar seleção inicial a final

     And cod_empresa = variável global empresa logada:

     for each tt-param-espec

         where tt-param-espc.cod-esp conforme selecao

         and tt-param-espc.tipo-pagto = 8:

         for each tit_acr

             Where cod_estab = estabelecimento.cod_estab

               And cod_espec_docto = tt-param-espec.cod-esp

               And log_inter_cfl_atlzdo = yes

                And dat_fluxo_tit_acr >= data inicial selecao

                And dat_fluxo_tit_acr <= data final selecao

                And cod_fornec conforme seleção 

                And val_sdo_tit_acr > 0

                                               Retornar em uma temp-table

                                               Modulo = “ACR”

                                               Cod_tit_acr

                                               Cod_espec_docto

                                               Cod_ser_docto

                                               Cod_estab

                                               Parcela

                                               Dat_fluxo_tit_acr

                                               Dat_transacao

                                               Cdn_cliente

                                               Cod_indic_econ /* traduzir para moeda do ems2, mas guardar em temp-table para que a cada título não seja necessário traduzir novamente, assim ganha-se performance */

                                               Val_sdo_tit_acr

                                               Num_id_tit_acr

                                               tit_ap.ind_origin_tit_acr

                                               Log-subst   = flag na tt de retorno para identificar que teve substituição.


Caso ter substituição, criar outra tt para retorno com os títulos que deram origem a este titulo novo, assim como no contas a pagar.

Para saber se o titulo teve origem numa substituição:

If tit_ap.ind_origin_tit_acr = “ACR” and

   Can-FIND(FIRST movto_tit_acr OF tit_acr NO-Lock

    where movto_tit_acr.ind_trans_abrev = “SBND”)


Para ler as origens do titulo substituído:

/* Procura as Notas da Duplicata */

for each movto_tit_acr no-lock

   where movto_tit_acr.cod_estab          = tit_acr.cod_estab

     and movto_tit_acr.cod_refer          = tit_acr.cod_refer

             and movto_tit_acr.num_id_tit_acr     <> tit_acr.num_id_tit_acr

                   and   movto_tit_acr.ind_trans_acr_abrev = "BXSB"  :

        find first b_tit_acr no-lock

             where b_tit_acr.num_id_tit_acr = movto_tit_acr.num_id_tit_acr

             and   b_tit_acr.cod_estab     = movto_tit_acr.cod_estab no-error.


Exemplos de pesquisas no financeiro:pi_consult_tit_acr_aberto / ggp702za e pi_ggp_retornar_titulos_em_aberto ggp701za.


Após retornar do financeiro, para cada titulo a ser pago ou cobrado verificar se já foi realizada a baixa do hedge:

Se for APB:

   Assign i-modul = 1 /* compras*/

Else

   Assign i-modul = 2 /* vendas */


If can-find(first gg-hedge-mov no-lock

         Where gg-hegge-mov.nro-docto = tt-titulo.cod-tit

             And gg-hedge-mov.serie-docto = tt-titulo.cod-ser-docto

             And gg-hedge-mov.cod-emitente = tt-titulo.cod-emitente

             And gg-hedge-mov.cod-estabel = tt-titulo.cod-estabel

             And gg-hedge-mov.cod-esp       = tt-titulo.cod-esp

             And gg-hedge-mov.parcela        = tt-titulo.parcela

             And gg-hedge-mov.idi-modul     = i-modul) then next.  /* desconsiderar pois já atualizou a baixa de hedge */


Conforme o tipo da espécie, deve ser efetuada pesquisa no hedge, para popular uma temp-table tt-hedge-mov, que deve estar relacionada ao titulo (modulo+ cod-estabel+ num-id-tit).


Tipo 4 Pagamento Contrato Compra:

Os pagamentos registrados no Fechamento Financeiro (GG8000), que tiverem Hedge de Produto, serão baixados do Boleto relacionado ao Trade Slip no contrato.

Para que seja executada a rotina para este tipo de pagamento, é necessário parametrizar (GG0105, botão parâmetros) qual componente de preço que possui Boletos de hedge e qual espécie de título. No caso do pagamento contrato compra, será a espécie de previsão.


PROCEDURE piOrigemPagtoGraos:

  /* verificar nos pagamentos do fechamento */

  FIND FIRST gg-fecha-pagto-tit NO-LOCK

       WHERE gg-fecha-pagto-tit.cod-modul-dtsul = "APB":U

         AND gg-fecha-pagto-tit.cod-estab       = tt-tit-ap.cod-estab    

         AND gg-fecha-pagto-tit.num-id-tit      = tt-tit-ap.num-id-tit-ap NO-ERROR.

  IF  AVAIL gg-fecha-pagto-tit THEN DO:

      ASSIGN l-encontrou = YES. /* se encontrou o pagamento entÆo considera-se que ‚ deste tipo, porque pode nÆo encontrar a origem, se for em dolar  */

 

      IF  tt-tit-ap.moeda = 0 /* moeda corrente */ THEN DO:

          ASSIGN de-val-baixar = tt-tit-ap.valor-saldo.

          /* VERIFICAR O TITULO DE PREVISAO RELACIONADO */

          FOR FIRST gg-fecha-contrat-pagto NO-LOCK OF gg-fecha-pagto-tit:

              FOR FIRST gg-fecha-contrat NO-LOCK OF gg-fecha-contrat-pagto:

                  b-fix-fechto:

                  FOR each gg-fecha-contrat-pre NO-LOCK OF gg-fecha-contrat: 

   

                     FOR EACH gg-hedge NO-LOCK

                        WHERE gg-hedge.ep-codigo     = gg-fecha-contrat-pre.ep-codigo

                          AND gg-hedge.num-trad-slip = gg-fecha-contrat-pre.num-trad-slip

                          AND gg-hedge.num-vers      = gg-fecha-contrat-pre.num-vers

                          AND gg-hedge.idi-modul     = 1 /* compras*/

                          AND gg-hedge.cod-comp      = gg-parametros.char-1

                          AND gg-hedge.log-saldo     = YES

                          AND gg-hedge.ind-situacao  = 4 /* confirmado */

                           BY gg-hedge.dat-hedge:  /* mais antiga */


Tipo 5 Adiantamento Contrato Compra:

Os adiantamentos registrados no contrato de compra, que tiverem Hedge de Produto, serão baixados do Boleto relacionado ao Trade Slip no contrato.

Para que seja executada a rotina para este tipo de pagamento, é necessário parametrizar (GG0105, botão parâmetros) qual componente de preço que possui Boletos de hedge e qual espécie de título. No caso do adiantamento em Valor, em contratos de compras, será a espécie de previsão.

Os adiantamentos são registrados no detalhe do contrato de compras (GG1001b):

PROCEDURE piOrigemPagtoAdtoGraos:

 

  /* encontrar o adiantamento no contrato */

  For FIRST gg-contrato-ant NO-LOCK

      WHERE gg-contrato-ant.cod-estabel       = tt-tit-ap.cod-estab   

        AND gg-contrato-ant.num-id-tit-gerado = tt-tit-ap.num-id-tit-ap:

      ASSIGN l-encontrou = YES. /* se encontrou o adiantamento então considera-se que ‚ deste tipo, porque pode não encontrar a origem, se for em dolar  */

       IF  tt-tit-ap.moeda = 0 /* moeda corrente */ THEN DO:

          ASSIGN de-val-baixar = tt-tit-ap.valor-saldo.

          b-ant-ctr:

          FOR EACH gg-contrat-pre-cotac NO-LOCK

             WHERE gg-contrat-pre-cotac.ep-codigo    = gg-contrato-ant.ep-codigo

               AND gg-contrat-pre-cotac.cod-contrato = gg-contratoa-nt.cod-contrato

               AND gg-contrat-pre-cotac.num-seq-pre  = gg-contrato-ant.num-seq:

             FOR EACH gg-hedge NO-LOCK

                WHERE gg-hedge.ep-codigo     = gg-contrat-pre-cotac.ep-codigo  

                  AND gg-hedge.num-trad-slip = gg-contrat-pre-cotac.num-livre-1

                  AND gg-hedge.num-vers      = gg-contrat-pre-cotac.num-livre-2

                  AND gg-hedge.idi-modul     = 1 /* compras*/

                  AND gg-hedge.cod-comp      = gg-parametros.char-1

                  AND gg-hedge.log-saldo     = YES

                  AND gg-hedge.ind-situacao  = 4 /* confirmado */

                   BY gg-hedge.dat-hedge:  /* mais antiga */


Tipo 6 Impostos Retidos Compra:


As faturas referentes impostos retidos, geradas por substituição no Contas a Pagar, vinculados a contrato de compra, que tiverem Hedge de Produto, serão baixados do Boleto relacionado ao Trade Slip no contrato.

Para que seja executada a rotina para este tipo de pagamento, é necessário parametrizar (GG0105, botão parâmetros) qual componente de preço que possui Boletos de hedge e qual espécie de título. No caso de faturas referente impostos retidos, em contratos de compras, será a espécie utilizada na geração da fatura.

Os títulos de impostos são gerados no módulo de contas a pagar a partir das notas fiscais relacionadas a compra, que podem ser:

    • Nota Fiscal que acompanha a entrega física (GG2000);
    • Nota Fiscal compra global, para entrega futura (RE1001);
    • Nota Fiscal complemento de preço de uma compra (GG2000);


Ao chegar próximo ao vencimento dos títulos de impostos retidos (Funrural, Facs, Fethab, Fundersul), é feito o registro da fatura no módulo de contas a pagar.

PROCEDURE piOrigemImptoGraos:


IF  ttTitulosEncontrados.codModul = "APB"  THEN DO:

      /* encontrar os titulos originais dos impostos */

      FOR EACH ttTitulosSubsEncontr

         WHERE ttTitulosSubsEncontr.codModul       = "APB"

           AND ttTitulosSubsEncontr.codEstabelPai  = ttTitulosEncontrados.codEstabel

           AND ttTitulosSubsEncontr.numIdTituloPai = ttTitulosEncontrados.numIdTitulo:


          IF  ttTitulosSubsEncontr.ind_tip_espec_docto = "Imposto Retido":U THEN DO:

              /* buscar o titulo original relacionado */

              ASSIGN l-encontrou = YES. /* se encontrou o adiantamento então considera-se que ‚ deste tipo, porque pode não encontrar a origem, se for em dolar  */


              ASSIGN de-val-baixar = ttTitulosSubsEncontr.valSdoTitulo /* valor da parte substituida do titulo original */


              /* Procura pelos movimentos de Impostos Geradores */

              b-origem-impto:

              FOR each compl_impto_retid_ap no-lock

                 where compl_impto_retid_ap.num_id_tit_ap = tit_ap.num_id_tit_ap

                   and compl_impto_retid_ap.cod_estab     = tit_ap.cod_estab:


                 find first b_movto_tit_ap no-lock

                      where b_movto_tit_ap.cod_estab           = compl_impto_retid_ap.cod_estab

                        and b_movto_tit_ap.num_id_movto_tit_ap = compl_impto_retid_ap.num_id_movto_tit_ap_pai no-error.

                 if  avail b_movto_tit_ap then do:

                     find b_tit_ap no-lock

                          where b_tit_ap.cod_estab     = b_movto_tit_ap.cod_estab

                            and b_tit_ap.num_id_tit_ap = b_movto_tit_ap.num_id_tit_ap no-error.

                     IF AVAIL b_tit_ap THEN DO:

                         /* procurar o titulo da entrega no contrato */

                         ASSIGN l-entr-ctr = NO.

                         FOR EACH gg-contrato-mov NO-LOCK

                            WHERE gg-contrato-mov.cod-estabel   = b_tit_ap.cod_estab   

                              AND gg-contrato-mov.num-id-tit-ap = b_tit_ap.num_id_tit_ap

                              AND gg-contrato-mov.ind-transacao = 1: /* entrega*/


                             ASSIGN l-entr-ctr = YES.

                             /* procurar as fixa‡äes do contrato */

                             FOR EACH gg-contrato-pre NO-LOCK

                                WHERE gg-contrato-pre.ep-codigo    = gg-contrato-mov.ep-codigo

                                  AND gg-contrato-pre.cod-contrato = gg-contrato-mov.cod-contrato:


                                FOR EACH gg-hedge NO-LOCK

                                   WHERE gg-hedge.ep-codigo     = gg-contrato-pre.ep-codigo  

                                     AND gg-hedge.num-trad-slip = gg-contrato-pre.num-trade-slip

                                     AND gg-hedge.num-vers      = gg-contrato-pre.num-versao

                                     AND gg-hedge.idi-modul     = 1 /* compras*/

                                     AND gg-hedge.cod-comp      = gg-parametros.char-1

                                     AND gg-hedge.log-saldo     = YES

                                     AND gg-hedge.ind-situacao  = 4 /* confirmado */

                                      BY gg-hedge.dat-hedge:  /* mais antiga */



Tipo 2 Fatura Ferroviária:


Para que seja executada a rotina para este tipo de pagamento, é necessário parametrizar (GG0105, botão parâmetros) qual componente de preço que possui Boletos de hedge e qual espécie de título. No caso de fatura de Frete Ferro, será a espécie da fatura gerada.


procedure piOrigemFreteFerro:

Ferro:

Fatura gera... ESLG2122, log-ope-vagao-nf, para cada registro da log-ope-ferroviaria, tamb‚m com CF, e o financeiro gera uma fatura/substituição gerando uma RF.

Será verificado até o 1º nível, não poderá ser feito substituição da substituição.


Sequencia de leitura:

- tit-ap

- relacionamento substitui‡Æo

- log-ope-ferroviaria

- log-ope-vagao-nf

- log-ope-operacao

- se for fob tem o contrato na OL, se não for ler tabela de relacionamento com contratos cif.


Tipo 1 Fatura Rodoviária:


Para que seja executada a rotina para este tipo de pagamento, é necessário parametrizar (GG0105, botão parâmetros) qual componente de preço que possui Boletos de hedge e qual espécie de título. No caso de fatura de Frete Rodo, será a espécie da fatura gerada.



procedure piOrigemFreteRodo:


Rodo:

Fatura gera...ESLG2000, substituição de títulos, com espécie CF e que seja um titulo gerado por substituição. Log-ope-ctrc-terc.

Verificar para usar uma espécie diferente, exemplo FF.

A busca ser  restrita a um nível.


Sequencia de leitura:

- tit-ap

- relacionamento substituição

- log-ope-ctrc-terc

- log-ope-operacao

- se for fob tem o contrato na OL, se não for ler tabela de relacionamento com contratos cif.


Tipo 7 e 8 Multa Receber e Pagar Contrato Compra:


As Multas registradas nos Trade Slips de Cancelamento (GG0103), que tiverem Hedge, serão baixadas do Boleto relacionado ao Trade Slip do contrato.

Para que seja executada a rotina para este tipo de pagamento, é necessário parametrizar (GG0105, botão parâmetros) qual componente de preço que possui Boletos de hedge e qual espécie de título. No caso da Multa, será a espécie informada no cadastro do componente de preço.


PROCEDURE piOrigemMulta:

  IF  ttTitulosEncontrados.codModul = "APB"  THEN DO:

      FIND FIRST gg-ext-tit-ap NO-LOCK

           WHERE gg-ext-tit-ap.cod-estab     = ttTitulosEncontrados.codEstabel

             AND gg-ext-tit-ap.num-id-tit-ap = ttTitulosEncontrados.numIdTitulo NO-ERROR.

      IF  AVAIL gg-ext-tit-ap AND gg-ext-tit-ap.cod-contrato <> "" THEN DO:


          ASSIGN de-val-baixar = ttTitulosEncontrados.valSdoTitulo. /* valor da parte substituida do titulo original */


          FOR first gg-contrato-mov NO-LOCK

              WHERE gg-contrato-mov.cod-estabel   = gg-ext-tit-ap.cod-estab    

                AND gg-contrato-mov.num-id-tit-ap = gg-ext-tit-ap.num-id-tit-ap

                AND gg-contrato-mov.ind-transacao = 22: /* multa cancelamento ???? verificar se vai ficar este número mesmo */


              ASSIGN l-encontrou = YES. /* se encontrou o adiantamento então considera-se que ‚ deste tipo, porque pode não encontrar a origem, se for em dolar  */


              b-origem-multaApb:

              FOR EACH gg-hedge NO-LOCK

                 WHERE gg-hedge.ep-codigo     = gg-contrato-mov.ep-codigo  

                   AND gg-hedge.num-trad-slip = gg-contrato-mov.num-trade-slip

                   AND gg-hedge.num-vers      = gg-contrato-mov.num-versao

                   AND gg-hedge.idi-modul     = 1 /* compras*/

                   AND gg-hedge.cod-comp      = gg-parametros.char-1   /* componente da espécie */

                   AND gg-hedge.log-saldo     = YES

                   AND gg-hedge.ind-situacao  = 4 /* confirmado */

                    BY gg-hedge.dat-hedge:  /* mais antiga */

               

  ELSE DO:

      FIND FIRST gg-ext-titulo NO-LOCK

           WHERE gg-ext-titulo.cod-estab     = ttTitulosEncontrados.codEstabel

             AND gg-ext-titulo.num-id-tit-ap = ttTitulosEncontrados.numIdTitulo NO-ERROR.

      IF  AVAIL gg-ext-titulo AND gg-ext-titulo.cod-contrato <> "" THEN DO:


          ASSIGN de-val-baixar = ttTitulosEncontrados.valSdoTitulo. /* valor da parte substituida do titulo original */


          FOR first gg-contrato-mov NO-LOCK

              WHERE gg-contrato-mov.cod-estabel   = gg-ext-titulo.cod-estab    

                AND gg-contrato-mov.num-id-tit-ap = gg-ext-titulo.num-id-titulo

                AND gg-contrato-mov.ind-transacao = 22: /* multa cancelamento ???? verificar se vai ficar este número mesmo */


              ASSIGN l-encontrou = YES. /* se encontrou o adiantamento então considera-se que ‚ deste tipo, porque pode não encontrar a origem, se for em dolar  */


              b-origem-multaAcr:

              FOR EACH gg-hedge NO-LOCK

                 WHERE gg-hedge.ep-codigo     = gg-contrato-mov.ep-codigo  

                   AND gg-hedge.num-trad-slip = gg-contrato-mov.num-trade-slip

                   AND gg-hedge.num-vers      = gg-contrato-mov.num-versao

                   AND gg-hedge.idi-modul     = 1 /* compras*/

                   AND gg-hedge.cod-comp      = gg-parametros.char-1   /* componente da espécie */

                   AND gg-hedge.log-saldo     = YES

                   AND gg-hedge.ind-situacao  = 4 /* confirmado */

                    BY gg-hedge.dat-hedge:  /* mais antiga */


Tipo 3 Nota Fiscal Fobbings:


Os títulos com origem em notas fiscais referente serviços de Elevação, que tiverem Hedge, serão baixados do Boleto relacionado ao Trade Slip nos contratos com saldo deste tipo de componente de preço.

Para que seja executada a rotina para este tipo de pagamento, é necessário parametrizar (GG0105, botão parâmetros) qual componente de preço que possui Boletos de hedge e qual espécie de título. No caso do pagamento Elevação, será a espécie do título gerado através da nota fiscal emitida pelo fornecedor do serviço.

Além do parâmetro da espécie e componente, será necessário vincular os fornecedores de serviços de elevação a um porto:

Esta informação do porto vinculado ao fornecedor é importante para a busca dos saldos de Hedge de elevação para efetuar a baixa/reversão.

Critérios da busca dos contratos com Boletos de Elevação que tenham saldo:

    • Boletos de Hedge com status Atualizado;
    • Contratos do Porto relacionado ao fornecedor do serviço (CD0401);
    • Contratos (compra ou venda) com entregas físicas já registradas;
    • Data de Vencimento Boleto mais antiga (FIFO);


As notas de serviço de Elevação podem ser digitadas no Recebimento (RE1001):

Após confirmar e atualizar o documento fiscal no recebimento, o título referente ao pagamento é atualizado no financeiro Contas a Pagar.


PROCEDURE piOrigemFobbings:

  IF  ttTitulosEncontrados.codModul = "APB"  THEN DO:

      FOR first gg-ext-emitente NO-LOCK

          WHERE gg-ext-emitente.cod-emitente = ttTitulosEncontrados.cdnFornecedor:


         /* fornecedor relacionado a um porto entÆo ‚ fobbings */

         Igg-ext-emitente.int-1 <> 0 THEN DO:

             ASSIGN l-encontrou = YES. /* se encontrou o adiantamento entÆo considera-se que ‚ deste tipo, porque pode nÆo encontrar a origem, se for em dolar  */

             ASSIGN de-val-baixar = ttTitulosEncontrados.valSdoTitulo. /* valor da parte substituida do titulo original */


             b-origem-fobb:

             FOR EACH gg-hedge NO-LOCK

                WHERE gg-hedge.cod-comp      = gg-parametros.char-1   /* componente da esp‚cie */

                  AND gg-hedge.log-sdo       = YES

                  AND gg-hedge.num-livre-2   = gg-ext-emitente.int-1 /* cod-porto relacionado ao fornecedor da nota fiscal */

                  AND gg-hedge.idi-modul     = 1 /* compras*/

                  AND gg-hedge.ind-situacao  = 4 /* confirmado */,

                   BY gg-hedge.dat-hedge:  /* mais antiga */


            - Baixa Pagamentos Fobbings, buscar somente os contratos que já tiveram entrega, não pode buscar contrato que não tenha nenhuma entrega.

                      

            Se for compras:            

                If not can-find( First gg-contrato no-lock

              Where gg-contrato.ep-codigo = gg-hedge.ep-codigo

                       And gg-contrato.cod-contrato = gg-hedge.cod-contrato

                       And gg-contrato.qtd-entrega > 0)  then next.

             Se for vendas:

                If not can-find( First gg-contrato-prod no-lock

              Where gg-contrato-prod.ep-codigo = gg-hedge.ep-codigo

                       And gg-contrato-prod.cod-contrato = gg-hedge.cod-contrato

                       And gg-contrato-prod.qtd-entrega > 0)  then next.


Tipo 9 Nota Fiscal Entrega Futura:


Os títulos com origem em notas fiscais referente compra global para entrega via remessa futura, que tiverem Hedge, serão baixados do Boleto relacionado ao Trade Slip no contrato relacionado a esta nota fiscal.

Para que seja executada a rotina para este tipo de pagamento, é necessário parametrizar (GG0105, botão parâmetros) qual componente de preço que possui Boletos de hedge e qual espécie de título. No caso do pagamento da compra global, será a espécie do título gerado através da nota fiscal.

A nota global da compra para remessa futura é digitada no recebimento (RE1001). Importante que ao digitar esta nota no recebimento, seja informado junto ao item da nota, o contrato de compra originação que se refere esta nota fiscal.

Após confirmar e atualizar o documento fiscal no recebimento, o título referente ao pagamento é atualizado no financeiro Contas a Pagar.


Tipo 10 cobrança contrato vendas:


A cobrança do contrato de vendas é efetuada através dos títulos gerados no faturamento dos pedidos (FT4001/FT4002/FT4003/GG2000) ou na programação de cobrança (GG2035).

Para que seja executada a rotina para este tipo de pagamento, é necessário parametrizar (GG0105, botão parâmetros) qual componente de preço que possui Boletos de hedge e qual espécie de título.

Após acontecer o faturamento, os títulos são gerados no financeiro, contas a receber.


Após encontrar o hedge, então listar os dados na tela, no 2º browser.


  • 2º Browser “Movimentos Hedge Moeda”

Trader todos tt-hedge-mov, referente ao título a ser pago, que estiver selecionado no 1º browser:

Cod-contrato

Num-trade-slip /* like gg-hedge.num-trade-slip */

Num-versao /* like gg-hedge.num-versao */

tt-hedge-mov.val-movto FORMAT "->>>,>>>,>>9.9999" LABEL "Val Movto"

tt-hedge-mov.val-pagto FORMAT "->>>,>>>,>>9.9999" LABEL "Val Pagto"

tt-hedge-mov.num-boleto

tt-hedge-mov.dat-mov FORMAT "99/99/9999" LABEL "Data Movimento"

tt-hedge-mov.qtd-movto FORMAT "->>>,>>>,>>9.9999" LABEL "Qdt Mov"

tt-hedge-mov.cod-estabel FORMAT "x(5)" LABEL "Estabelecimento"

tt-hedge-mov.cod-esp FORMAT "x(2)" LABEL "Esp"

tt-hedge-mov.serie-docto FORMAT "x(5)" LABEL "Série"

tt-hedge-mov.nro-docto FORMAT "x(16)" LABEL "Nro Docto"

tt-hedge-mov.cod-emitente FORMAT ">>>>>>>>9" LABEL "Emitente"

tt-hedge-mov.it-codigo FORMAT "x(16)" LABEL "Item"

tt-hedge-mov.cod-parcela FORMAT "x(02)" LABEL "Parcela"

tt-hedge-mov.num-id-hedge FORMAT ">>>>>>>>>9" LABEL "Num id"


  • Botão Confirmar [C]

O usuário poderá selecionar um ou mais registros, e para cada selecionado, chamar um API para efetuar a gravação dos registros de movimentos de baixa de hedge.

Esta api deve prever retorno de erros.


  • Botão atalho para atualização Batch [B].

As baixas podem ser programadas para executar diariamente em servidor de rpw (Batch).

Chamar programa GG0105T, que é um programa novo a ser criado em template de relatório. Não necessário passar parâmetros.


Criar Novo programa GG0105T.

Conforme seleção e Parâmetros deve efetuar pesquisa dos títulos no ACR e APB e efetuar a atualização, bem como listar relatório do que foi possível atualizar e o que não foi possível, por não localizar os hedges.

Para a data, calcular today + número de dias informado em tela. 

Na tela de Baixa por pagamentos (GG0105) tem atalho para o programa que pode ser executado em Batch (GG0105T):

Nota: Em parâmetros é importante indicar a quantidade de dias para busca dos títulos a vencer. No exemplo abaixo está indicando dois dias, ou seja, sempre que for executado será considerado o vencimento da data atual + 2 dias.


Após a execução, é gerado um relatório do que foi efetuada a reversão, bem como erros retornados da tentativa de chamar a integração com sistema externo hedge de moeda, caso utilizar integração automática.



  • Vínculo Fornecedor ao Porto:


Precisa ajustar a appc que temos no cadastro de clientes CD0401 e também a mesma viewer é usada no CD0704.


DE:

PARA:

- Mudar o nome da pasta.

- Alguns campos foram retirados da tela, pois não são usados e conflitam com outros.

- Ajustado os retângulos

- Incluso novo campo Porto, que não é obrigatório, passa com 0 (zero) ou precisa estar cadastrada na gg-porto-base, mostrar descrição ao lado, e pesquisa.

- Gravar novo campo em gg-ext-emitente. Int-1 /* conferir se não está sendo usado, pela pesquisa que eu fiz não está */

 



3) Baixa Manual (GG0104)


Objetivo: Permitir efetuar a baixa de Hedge Moeda de forma Manual, ou seja, quando não for possível através dos pagamentos (gg0105).


Tabelas Utilizadas:

  • Gg-hedge
  • Gg-hedge-mov

 

Considerações:

  • Esta opção poderá ser usada para Baixar resíduos, ou pequenos valores de saldo.
  • Quando criar novos componentes, e precisar efetuar baixa, que não esteja prevista no programa de baixa por pagamentos gg0105.

 

No gg0104, uma opção para selecionar os gg-hedge (seleção múltipla), e efetuar a baixa manual do hedge.


Sendo assim teremos as opções de baixa:

  • Baixa por Pagamento (origem no gg0105)
  • Baixa por cancelamento (origem no gg0103)
  • Baixa por Rolagem (opção no gg0104)
  • Baixa Manual, onde poderá ser informado o tipo de transação Pagamento ou Cancelamento


Estes tipos acima devem estar no campo transação que tem na gg-hedge-mov.


Para fazer a baixa manual, então será filtrado os gg-hedge que tenham saldo, e pode ser feito seleção múltipla, mas todos devem ter o mesmo componente. No filtro, vai ter a opção de filtrar só componente frete, por exemplo (inicial a final) e assim só serão listados gg-hedge que tenham saldo e que sejam do componente frete. Isso acho que já até tínhamos falado.


No gg0104, o usuário vai selecionar um ou mais registros da gg-hedge-mov, e vai clicar em um botão, onde será solicitado: data da baixa, valor total, e um texto para histórico, sendo que vai trazer a data do dia como default e o valor total de saldo dos registros selecionados como default. A data não pode ser futura, e o valor informado não pode ser zero e não pode ser maior que o saldo.

Ao confirmar, gerar gg-hedge-mov com transação manual para os registros, efetuando um fifo (data vencimento do hedge) até chegar no valor informado em tela.  Gerar histórico no TS (gg-negocio-hist) com o texto informado.

Esses registros gg-hedge-mov, vão então para o sistema externo hedge moeda cliente, solicitando a baixa/reversão.


Com isso, eles podem efetuar baixas das sobras, e também de outros componentes novos que venham a criar e que não estejam previstos no GG0105.


4) Relatório Acompanhamento Diário Hedge Moeda (GG4103):


Objetivo: Demonstrar as informações diárias de movimentações dos negócios efetuados que tenham Hedge de Moeda. Este relatório terá apenas a opção de exportação para planilha, pois há grande quantidade de colunas.


Tabelas Principais Utilizadas:

  • Compras: gg-negocio, gg-negocio-comp
  • Vendas: gg-negocio-vmi, gg-negocio-vmi-comp
  • Hedge: gg-hedge, gg-hedge-mov

 

Considerações:

Seleção:

Item: Inicial a final

Estabelecimento: Inicial a Final

Safra: inicial a final

Estado:

Trade Slip: Inicial a Final

Contrato: Inicial a final

Componente: Inicial a final

Finalidade:   Inicial a Final /* monstar combo-box idem filtro gg0103 */

Data Negoc: Inicial a Final

Data Vencto: Inicial a Final

Data Movimentação: Inicial a Final


Parâmetros:

Tipo de Contrato:


Situação Trade Slip:

Obs.: Cancelados pode retirar dos parâmetros, tela acima apenas para exemplo.


  • Como exemplo para opção exportar, podemos usar gg4052rp.p.
  • Efetuar as leituras com base nas tabelas gg-negocio e gg-negocio-vmi, realizando a seleção e parâmetros.
  • Quanto a seleção de data de vencimento do hedge é necessária verificar a data nas parcelas de pagamento, e nos componentes.
  • Um trade slip que esteja pendente, ou seja ainda não fez a solicitação do hedge, pode também ser listado, conforme os parâmetros de situação, logo mesmo que ainda não tenha a tabela gg-hedge, deve listar se o parâmetro de situação pendente estiver marcado.
  • Colunas a serem impressas:

Dt Mov-> data do movimento

=> Este campo deve conter a informação da data que ocorreu o evento, conforme a busca das movimentações. Exemplo: data da criação do trade slip, data do retorno da confirmação do hedge moeda, data do cancelamento, data do pagamento, data da rolagem.

Hr Mov-> hora do movimento

=> Este campo deve conter a informação da hora que ocorreu o evento, conforme a busca das movimentações. 

St TS-> Situação do Trade Slip

=>  Gg-negocio.ind-situacao ou gg-negocio-vmi-ind-situacao

Componente-> código do componente de preço

=> Gg-negocio-comp.cod-comp ou gg-negocio-vmi.cod-comp

Ação-> Qual ação ocorreu na Movimentação, será um campo tratado para o relatório, que vai identificar a origem da movimentação que está sendo listada. 

=>  Situações possíveis: Hedge (quando TS está pendente ou para indicar a inclusão do hedge), Pagamento (baixa/reversão por pagamento), cancelamento (baixa/reversão por cancelamento), rolagem (baixa/reversão por rolagem).

Item-> código do item

=> Gg-negocio.it-codigo ou gg-negocio-vmi-prod.it-codigo

Vl Movimento-> Valor do movimento

=> Valor do movimento, conforme a origem da informação que está sendo listada. Pode ser o valor inicial da criação do hedge, ou o valor de um cancelamento, pagamento, rolagem.

Cotação Mov-> Cotação do Movimento

=> Valor da cotação do hedge de moeda. Quando o trade slip está pendente será a pré-taxa (gg-negocio-comp.dec-1 ou gg-negocio-pag.val-cotac, ou gg-negocio-vmi-comp.dec-1 ou gg-negocio-vmi-cond.val-cotac). Quando for uma movimentação de cancelamento ou pagamento, será a cotação do movimento (gg-hedge-mov.val-cotac).

Dt Vencto-> Data do vencimento do Hedge para o componente

=> Gg-negocio-comp.data-1 ou gg-negocio-vmi-comp.dat-1, ou gg-negocio-pag.dat-vencto ou gg-negocio-cond.dat-vencto.

Tp Ctr-> Tipo do contrato

=> C para compras e V para vendas

Trade Slip-> Número do Trade slip

=> Gg-negocio.num-trade-slip gg-negocio-vmi.num-trade-slip

V-> versão do trade slip

=> Gg-negocio.num-versão gg-negocio-vmi.num-versao

Estab-> código do estabelecimento

=> Gg-negocio.cod-estabel gg-negocio-vmi.cod-estabel

Estado-> sigla do estado do trade slip

=> Gg-negocio.estado-orig gg-negocio-vmi.estado-orig (ver campo livre no vendas)

Safra-> código da safra do trade slip

=> Gg-negocio.des-safra gg-negocio-vmi.des-safra

Finalidade-> descrição da finalidade

=> A descrição do campo Gg-negocio.des-finalid ou gg-negocio-vmi.des-finalid

Vl Comp-> Valor unitário do componente

=> Gg-negocio-comp.val-a-fixar ou gg-negocio-vmi-comp.val-a-fixar

Vl Saldo-> Valor Saldo do componente

=> Será um campo calculado.

=> Quando for a linha de inclusão do TS (ação Hedge) será o mesmo valor do movimento. Quando não for, será a linha anterior, menos o valor do movimento.

Quantidade-> Quantidade do movimento

=> Quando for inclusão do TS (ação Hedge) será a quantidade do componente (gg-negocio-comp.qtd-a-fixa ou gg-negocio-pag.qtd-fixacao ou gg-negocio-vmi-comp.qtd-a-fixar ou gg-negocio-vmi-cond.qtd-fixada ou campo livre). Quando for um movimento de hedge, será a quantidade do movimento (gg-hedge-mov.qtd-mov).

Dt Ret Hedge-> Data do retorno da confirmação do sitema externo hedge moeda

=> Gg-hedge.dat-ret ou gg-hedge-mov.dat-hedge

Hr Ret Hedge-> Data do retorno da confirmação do sitema externo hedge moeda

=> Gg-hedge.dat-ret ou gg-hedge-mov.dat-hedge

Num Boleto-> Número do Boleto

=> Gg-hedge.num-boleto

St Hedge-> Situação do Retorno do Hedge no Sistema externo

=> Gg-hedge.ind-situacao ou gg-hedge-mov.ind-situacao, conforme o caso.

Ação Hedge-> Qual ação ocorreu na Movimentação do Hedge, será um campo tratado para o relatório, que vai identificar a origem da movimentação retornada do sistema externo que está sendo listada. 

=> Situações possíveis: Hedge (quando ts está pendente ou para indicar a inclusão do hedge), Reversão (baixa/reversão por pagamento, cancelamento ou rolagem.

Vl Movimento Hedge-> Valor do movimento que ocorreu no sistema externo de hedge moeda.

=> Valor do movimento, conforme a origem da informação que está sendo listada. Pode ser o valor inicial do retorno da criação do hedge, ou o valor de um cancelamento, pagamento, rolagem. Só deve ser listado quando já teve o retorno do sistema externo.

Vl Saldo Hedge-> Valor Saldo do componente após retorno do sistema externo hedge moeda

=> Será um campo calculado.

=> Quando for a linha de inclusão do TS (ação Hedge) será o mesmo valor do movimento, se tiver retorno. Quando não for, será a linha anterior, menos o valor do movimento que teve retorno sistema externo.




5) Rolagem (GG0104)


Objetivo: Permitir verificar os pagamentos vencidos ou a vencer dentro de um limite, e efetuar a alteração em lote, informando uma nova data.


Rolagem:

- É quando a alteração é somente de datas.

- Não recalcula margem, somente e precisa guardar a taxa do cancelamento e da nova nos movimentos da gg-hedge e gg-hedge-mov.


Tabelas Principais Envolvidas:

  • Gg-hedge
  • Gg-hedge-mov
  • Gg-contrato-ant
  • Gg-negocio-pag
  • Gg-negocio-vmi-cond


Considerações:

  • Somente Boleto com Saldo pode ser feito rolagem
  • Somente poderá ser feito rolagem em Boletos relacionados a Trade Slip que esteja atualizado e confirmado no Contrato.
  • A data de vencimento não poderá ser menor que a data atual do sistema (today) e deverá ser em dia útil.
  • Não terá recalculo de Margem nos Trade Slip devido a alteração de vencimento de algum Boleto relacionado. As taxas serão armazenadas para fins de relatório.


Exemplo:

1. Criação do TS fixo

Criar gg-hedge – preço produto – 20/02/2017  - ID 1001 – valor R$ 1.000,00

Criar gg-hedge – elevação – 04/03/2017 – ID 1002 – valor R$ 500,00

Criar gg-hedge – frete         - 04/03/2017  - ID 1003 – valor R$ 100,00

Encaminhar registros criados gg-hedge para sistema externo hedge moeda cliente no lay out de solicitação de hedge


2. Retorno sistema externo hedge moeda cliente da criação do Hedge

Recebe do sistema externo hedge moeda cliente os retornos dos hedges criados

Alterar gg-hedge – preço produto – 20/02/2017  - ID 1001 – valor R$ 1.000,00  - Boleto B001 – cotação 3,5

Alterar gg-hedge – elevação – 04/03/2017 – ID 1002 – valor R$ 500,00 – Boleto B002 – cotação 3,6

Alterar gg-hedge – frete         - 04/03/2017  - ID 1003 – valor R$ 100,00 – Boleto B003 – cotação 3,7

Recalcular a Margem do TS (ggapi037/ggapi038)


3. Completar o TS (depois de aprovar  a margem)

Ggapi037/ggapi038

Criar o contrato (se for automático) gg-contrato.

Criar a fixação e preço no contrato gg-contrato-pre/gg-contrato-pre-comp/gg-contrato-pre-comp-fix.

Criar os componentes no contrato gg-contrato-fixação.

Criar a previsão de pagamento no contrato gg-contrato-ant, R$ 1.000,00 – data 20/02/2017.


4. ROLAGEM - Alterar data de pagamento do produto, de 20/02/2017 para 30/03/2017, de R$ 600,00.

Criar gg-hedge-mov - preço produto – transação “Baixa Rolagem”, 20/02/2017  - ID MOV 3000 – valor R$ 600,00 – Boleto B001.

Alterar gg-hedge – preço produto – 20/02/2017  - ID 1001 – Saldo de R$ 1.000,00 para R$ 400,00

Criar gg-hedge – preço produto – 30/03/2017  - ID 1004 – valor R$ 600,00. Este movimento não deve ir ao sistema externo hedge moeda cliente, porém necessário guardar o ID do movimento de Baixa MOV ID 3000, e também no movimento de baixa o ID deste, assim ficam relacionados.

Alterar gg-hedge-mov - preço produto – transação “Baixa Rolagem”, 20/02/2017  - ID MOV 3000 – valor R$ 600,00 – Boleto B001, para guardar ID do novo registro da gg-hedge ID 1004 em campo livre.

Encaminhar registros criados gg-hedge-mov ID MOV 3000 – Boleto B001, para sistema externo hedge moeda cliente no lay out de rolagem. Atenção: gg-hedge ID 1004 NÃO DEVE ir para o sistema externo hedge moeda cliente criar novo hedge pois na rolagem o sistema externo hedge moeda cliente  já vai fazer isso.


5. Retorno sistema externo hedge moeda cliente ref. rolagem do ID MOV 3000 – Boleto B001

Alterar gg-hedge-mov - preço produto – transação “Baixa Rolagem”, 20/02/2017  - ID MOV 3000 – Boleto B001 - valor R$ 600,00 – Cotação 3,8.

Alterar gg-hedge – preço produto – 30/03/2017  - ID 1004 – valor R$ 600,00 – Boleto B004 – cotação 3,85 . Para encontrar este registro, olhar dentro do gg-hedge-mov ID MOV 3000, no campo livre que tem o ID 1004 guardado.

** como pode ser visto acima, o retorno da rolagem o sistema externo hedge moeda cliente vai mandar duas taxas 3,8 para a parte da baixa, e 3,85 para a criação do novo Boleto B004.


(ggapi037/ggapi038) Não deve recalcular margem, somente atualizar no contrato a nova data da previsão (gg-contrato-ant), porém como foi parcial, terá que:

- gg-contrato-ant que já existe alterar de R$ 1.000,00 para R$ 400,00 – data 20/02/2017.

- criar novo gg-contrato-ant com valor de R$ 600,00 – data 30/03/2017


Implementações:

- no botão da rolagem no gg0104, deixar duas colunas de datas: Nova Dt Venc e Dt Venc Orig, sendo que somente a Nova Dt Venc que fica habilitada. Ver cor de fundo, com tem no gg8000 para o campo editável.

- no campo abaixo onde tem aplicação múltipla de vencimento, deixar só uma data, que seria Nova Dt Venc.

- ajustar as colunas do browser com os labels que foram ajustados na tela gg0104, para ficar igual, bem coo deixar o saldo do lado do campo de valor.

- ao confirmar, executar a newHedgeRollover da ggapi036, passando uma temp-table com o id da gg-hedge, nova data, componente, pode ser até a mesma tt que mostra na tela para facilitar.


Processo Rolagem:

1) Selecionar Boleto a ser feito rolagem na tela monitor Hedge (GG0104), podendo ser um registro ou vários:


2) Ao acionar o botão para solicitar Rolagem de Boletos, será apresentada tela para informar a nova data. Poderá ser informado linha a linha ou uma única data para todos. 

A nova data deverá ser em dia útil, e ser igual ou superior a data atual do sistema.


3) Após confirmar a rolagem será criado movimento de reversão por rolagem dos boletos originais:


4) E será solicitado um novo Boleto, com a nova data:


5) Quando tiver integração automática, ao retornar a reversão, serão atualizados o novo Boleto, com sua taxa, e também a taxa da reversão, ao mesmo tempo.


 6) Quando for integração manual, será necessário atualizar a informação da reversão:


7) E também o Boleto e taxa da nova solicitação:


8) No Trade Slip será gerado um histórico, informando da rolagem:


9) Após fazer uma rolagem, o mesmo boleto não poderá ter outra rolagem, pois teve seu saldo liquidado:


10) Porém o Novo Boleto originado de uma rolagem, poderá sofrer outra alteração de vencimento:


11) Quando a rolagem se tratar de um componente do tipo Preço Produto, ao registrar uma rolagem, a informação do vencimento será atualizada no Trade Slip e na previsão de pagamento no contrato:



6) Alteração de Trade Slip

 

Objetivo: Permitir a inclusão de um trade slip, para efetuar a alteração de fixações de preço, componente, ou trava de câmbio para preço produto.  


Tabelas Utilizadas:

  • Gg-negocio
  • Gg-negocio-comp
  • Gg-negocio-pag
  • Gg-negocio-vmi
  • Gg-negocio-vmi-comp
  • Gg-negocio-cond


Considerações:

  • Trade Slips que podem ser alterados:

=> Somente Trade slip com status: Atualizado

=> Que possuem saldo a ser alterado. A quantidade já paga, não pode sofrer alteração. Pode alterar uma quantidade que já tenha recebimento/faturamento.

  • Trade Slips que não podem ser alterados:

=> Trade slip com status: Pendente, Aprov Banking, Aprov Margem, Aprov Componente, Completar, Cancelado.

=> Que já estejam com quantidade totalmente paga, no caso de fixação de preço, ou já totalmente alocados, no caso de fixação de componente.

  • Trava de Câmbio apenas para compras, pois no processo de Vendas hoje o sistema de originação não contempla esta funcionalidade.
  • Validações:
    • Caso tiver algum outro TS, com o mesmo TS relacionado, que esteja com situação Pendente, aprovação Margem, Completar, aprovação banking, não deve permitir Continuar. Mensagem “Já existe outro Trade Slip não atualizado ” + número e versão do TS encontrado + “ situação ” + situação do TS encontrado.
    • Caso tiver contrato, e existir um outro TS com o mesmo contrato, que esteja com situação Pendente, aprovação Margem, Completar, aprovação banking, não deve permitir Continuar. Mensagem “Já existe outro Trade Slip para este contrato e não está atualizado ” + número e versão do TS encontrado + “ situação ” + situação do TS encontrado.
  • Fluxo de Alteração de Trade Slip:
    • Selecionar Trade Slip atualizado no contrato, e contrato já fechado/liberado.
    • Abrir tela para inclusão do  TS de alteração (gg0103e /gg0103d)
    • Informar/alterar dados principais do TS, e confirmar para trazer componentes
    • Alterar aocmponentes (opcional)
    • Confirmar taxa e totais (opcional)
    • Concluir o TS de alteração, acionando o gatilho.
    • Aprovar Trade Slip
    • Aprovar Banking ou aguardar aprovação via integração
    • Aprovar Margem, e com isso efetuará a atualização no contrato.
  • Importante:

=> Preço Fixado nunca pode ser alterado, com exceção de trava do cotação quando o preço já fixado estiver em moeda diferente de corrente.

=> Datas de Pagamento, nunca podem ser alteradas em processo de alteração. Para alterar deve ser utilizada rolagem.

=> Se entrar para efetuar alteração e apenas alterar a data de execução, e não alterar nenhum valor de ecomponente, não haverá ajustes no Hedge de Moeda. Para ajuste de vencimento dos boletos utilizar a rolagem.

=> Nas alterações, os valores de componentes deve trazer os mesmos da alteração, e apenas se desejar, alterar.

=> As cotações devem ser também atualizadas com base no TS relacionado/original, e somente quando for alterado o valor, deve solicitar nova taxa.

=> Ao confirmar a alteração quanto ao Hedge irá criar um vboleto complementar, se o valor for maior, ou irá efetuar uma reversão, caso o valor seja menor. Os componentes que tiverem valores iguais não serão alterados.

=> Caso alterar alguma informação, como exemplo porto, que faça surgir novos componentes, e se estes tiverem Hedge, será gerado um novo Boleto. Caso a alteração, retire algum componente que tinha hedge no ts original, então será efetuado reversão total, proporcional a quantidade alterada.

  • Campos da pasta Trade Slip que podem ser alterados:

  • Não poderão ser alterados os campos da pasta Pagto:

  • Campos da pasta Contrato que podem ser alterados:

  • Alteração do componente de Preço (.ind-calculo = 7), quando a moeda do TS é diferente de corrente <> 0:
  • Não pode ocorrer alteração do componente de Preço (.ind-calculo = 7), quando a moeda do TS é igual a corrente =  0.
  • Alteração de componente de preço que não seja Preço Proposto (.ind-calculo <> 7), numa fixação de preço:


  • Alteração de componente de preço que não seja Preço Proposto (.ind-calculo <> 7), numa fixação de componente:


7) Alteração para Trava de Cotação

 

Objetivo: Permitir a alteração do trade slip de Compras, para trava de cotação, em contratos em outras moedas (ex. dólar), ou seja, transformar uma fixação de preço em outra moeda para a moeda corrente. Ao realizar uma programação de pagamento atravésdo fechamento financeiro, o preço travado na moeda corrente será utilizado. Trade Slip de Vendas não terá está opção de trava de cotação.


Tabelas Utilizadas:

  • Gg-negocio
  • Gg-negocio-comp
  • Gg-negocio-pag
  • Gg-negocio-vmi
  • Gg-negocio-vmi-comp
  • Gg-negocio-cond

 
 Considerações:

  • A trava de cotação negociada é apenas para alterações de trade slip do tipo Fixação, motivo Preço, e que tenham moeda do componente de preço diferente da moeda corrente.
  • Quando a moeda do contrato é diferente de corrente (<> 0), é permitido alterar a moeda do componente de preço que representa o preço proposto (ind-calculo = 7). Quando o tipo de trade slip for alteração (ind-trade = 4), e for alterada a moeda do componente de preço, deve também permitir alterar a cotação da negociação (gg-negocio-comp.val-cotac).
  • A cotação negociada indica a cotação negociada com o produtor. Não é a cotação para o hedge ou para a margem. Para margem e hedge continua sendo a cotação recebida do sistema externo de hedge moeda ou informada manual.
  • Ao informar a cotação negociada, buscar o valor fixado para o componente de preço do ts relacionado e calcular o novo valor: valor fixado do ts relacionado * cotação negociada. Exemplo: valor fixado no ts relacionado U$ 30,00/saca, cotação negociada informada 3,000000, novo valor fixado R$ 90,00/saca (30 * 3 = 90).
  • Ao informar o valor de preço, buscar o valor fixado para o componente de preço do ts relacionado e calcular a cotação negociada: valor informado / valor fixado do ts relacionado. Exemplo: valor fixado no ts relacionado U$ 30,00/saca, novo valor informado R$ 90,00, nova cotação negociada 3,000000 (90 / 30 = 3).
  • Ao aprovar a Margem de um ts de alteração, que tenha informação da cotação negociada (gg-negocio-comp.val-cotac, quando gg-negocio-comp.ind-calculo = 7, o mesmo para vendas), deve ser gerada solicitação para hedge de moeda.
  • Após retorno do hedge de moeda, necessário efetuar o recálculo da margem.
  • Após a aprovação da Margem é necessário atualizar o contrato:
    • Se a quantidade do ts de alteração for igual a quantidade da fixação de preço (gg-negocio-comp.qtd-a-fixar = gg-contrato-pre.qtd-fixada), então alterar a versão da fixação de preço no contrato (gg-contrato-pre.num-versão), e atualizar as informações de moeda, preço fixado e cotação negociada.
    • Se a quantidade do ts de alteração for menor, então criar uma fixação de preço no contrato (gg-contrato-pre), com as informações do TS de alteração e alterar a fixação anterior no contrato, para a quantidade restante.
  • Ao tentar alterar/cancelar o TS original, só pode permitir para a quantidade que restou, e pode não ter restado nenhuma quantidade. Pode ser feita validação com base no número e versão do TS, se encontrar, porém com outra versão é porque o TS foi totalmente alterado em outro TS, e assim pode ser apresentada mensagem ao usuário, impedindo de continuar.


8) Alteração Execução


Objetivo: Permitir alterar a finalidade de um TS. Segue o mesmo fluxo da alteração, porém sempre deverá mudar a finalidade.


Diferenças com relação ao TS de alteração:

  • Obriga alterar o campo de finalidade
  • Não pode ser usado para alterar o preço do produto ou trava de cambio.
  • Somente para TS de compras. Vendas não tem alteração de execução.
  • Quanto ao Hedge irá estornar os valores do TS relacionado e irá criar novos boletos conforme os novos componentes e/ou valores.



 Este documento é material de especificação dos requisitos de inovação, trata-se de conteúdo extremamente técnico.