Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

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

  

(Obrigatório)

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

PCREQ-9370

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 Hedge Traceability 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 SBM 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-


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 SBM;
    • 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:

Image Modified


- O 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 fonte do programa de exemplo.

Image Added

Image Added


  • Quanto as integrações com sistema externo SBM:

- 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 SBM as baixas/reversões informando o componente, valor e boleto.

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

- No retorno da baixa do SBM, 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.

Image Added

Image Added


  • Quanto a aprovação de Margem:

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

Image Added


  • 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 deve 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:

Image Added

Image Added

 

Consulta do contrato após cancelamento:

Image Added



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:

Image Added

Exemplo:

Image Added

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:

Image Added


  • Botão Parâmetros[P]

Image Added

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]:

Image Added


  • Botão Atualizar [A]

Este botão é para fazer carregar os dados da tela, conforme filtro.

Criar uma procedure no ggp701za ou ggp702za, onde recebe os parâmetros da seleção e as espécies do 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).







 

 

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