Page tree

 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

Logix

Módulo

Contas a Pagar

Segmento Executor

 

Projeto1

  1. MANFIN01 - Projeto Desenvolvimento Finanças

IRM1

MANFIN01-103 - Pequenas melhorias - Financeiro

Requisito1

  1. MANFIN01-640 - FIN30160 - Possibilitar o filtro de seleção das APs pelo favorecido

Subtarefa1

MANFIN01-640 - FIN30160 - Possibilitar o filtro de seleção das APs pelo favorecido

Chamado2

TVIEZP

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). 

(Obrigatório)

Objetivo

 Alterar o fin30060 (Preparação de pagamentos) para prever a seleção das APs pelo favorecido.

 

(Obrigatório)

Definição da Regra de Negócio

 

- Será criado novo campo na tela do fin30060 para possibilitar ao usuário informar o código
do favorecido para seleção dos dados. Este novo campo poderá selecionar o código do fornecedor
pelo zoom dos fornecedor.

 

- Incluir campo favorecido na varável ma_prep_fin

 

DEFINE ma_prep_fin ARRAY[1000] OF RECORD
               cod_empresa LIKE empresa.cod_empresa,
              den_empresa LIKE empresa.den_empresa,
              cod_fornecedor LIKE fornecedor.cod_fornecedor,
              raz_social LIKE fornecedor.raz_social,
              cod_favorecido LIKE fornecedor.cod_fornecedor,
              raz_social_fav LIKE fornecedor.raz_social,
              cod_tip_despesa LIKE tipo_despesa.cod_tip_despesa,
              nom_tip_despesa LIKE tipo_despesa.nom_tip_despesa,
              cod_lote_pgto LIKE lote_pagamento.cod_lote_pgto,
              nom_lote LIKE lote_pagamento.nom_lote
END RECORD


- Alterar a função fin30060_carrega_temporarias() prevendo a criação e carga da tabela temporária  dos favorecidos.


#--# Favorecido #--#
WHENEVER ERROR CONTINUE
DELETE FROM w_cod_favorecido
WHENEVER ERROR STOP
IF sqlca.sqlcode <> 0 THEN
### Não consistir
END IF

 

WHENEVER ERROR CONTINUE
DROP TABLE w_cod_favorecido
WHENEVER ERROR STOP

 

WHENEVER ERROR CONTINUE
CREATE TEMP TABLE w_cod_favorecido
(cod_favorecido CHAR(15),
raz_social_fav CHAR(50)) WITH NO LOG
WHENEVER ERROR STOP
IF sqlca.sqlcode <> 0 THEN
### Não consistir
END IF

IF ma_prep_fin[l_ind].cod_favorecido IS NOT NULL THEN
     #--# Inclui favorecido #--#
      WHENEVER ERROR CONTINUE
       SELECT 1
          FROM w_cod_favorecido
       WHERE cod_favorecido = ma_prep_fin[l_ind].cod_favorecido
       WHENEVER ERROR STOP

      IF sqlca.sqlcode = NOTFOUND THEN
          WHENEVER ERROR CONTINUE
          INSERT INTO w_cod_favorecido (cod_fornecedor,
                                                                    raz_social_fav)
                                                    VALUES (ma_prep_fin[l_ind].cod_favorecido,
                                                                     ma_prep_fin[l_ind].raz_social_fav)
           WHENEVER ERROR STOP
           IF sqlca.sqlcode <> 0 THEN
                CALL log003_err_sql('INSERT','w_cod_favorecido')
           END IF
      END IF
END IF

 

- Será alterada a função fin30060_processa_dados prevendo na montagem do sql a inclusão do filtro
da tabela ap_favorecido, caso o usuário tenha informado.

LET l_sql_stmt = ' SELECT ap.* ',
                                ' FROM ap ',
                              ' WHERE cod_empresa IN (SELECT cod_empresa FROM w_empresas) ',
                                   ' AND dat_vencto_s_desc >= "', mr_prep_fin.dat_vencto_ini,'"',
                                   ' AND dat_vencto_s_desc <= "', mr_prep_fin.dat_vencto_fim,'"',
                                   ' AND ies_versao_atual = "S" ',
                                  ' AND dat_pgto IS NULL ',
                                  ' AND ies_lib_pgto_sup = "S" ',
                                  ' AND ies_lib_pgto_cap <> "B" ',
                                  ' AND status_rem = 0 ',
                                  ' AND val_nom_ap <= ',log2260_troca_virgula_por_ponto(mr_prep_fin.val_max_titulos)

                                    #--# Desfazer proposta #--#

        IF mr_prep_fin.ind_proposta = "3" THEN
             LET l_sql_stmt = l_sql_stmt CLIPPED, ' AND dat_proposta >= "', mr_prep_fin.dat_proposta_ini,'"',
                                                                                ' AND dat_proposta <= "', mr_prep_fin.dat_proposta_fim,'"',
                                                                                ' AND dat_proposta IS NOT NULL '
        ELSE
              # Chamado TRNEZG - Alterado o programa de preparação de APs para criação de um novo campo "Considerar APs sem
              # proposta?", indicando se deverá considerar as APs sem data de proposta. O novo campo terá seu valor padrão
              # como marcado. Se o usuário desejar desconsiderar as APs sem data de proposta, deverá desmarcar o campo.
             IF mr_prep_fin.cons_ap_sem_proposta = "S" THEN
                  LET l_sql_stmt = l_sql_stmt CLIPPED, ' AND ((dat_proposta >= "', mr_prep_fin.dat_proposta_ini,'"',
                                                                                     ' AND dat_proposta <= "', mr_prep_fin.dat_proposta_fim,'")',
                                                                                     ' OR dat_proposta IS NULL) '
             ELSE
                    LET l_sql_stmt = l_sql_stmt CLIPPED, ' AND dat_proposta >= "', mr_prep_fin.dat_proposta_ini,'"',
                                                                                      ' AND dat_proposta <= "', mr_prep_fin.dat_proposta_fim,'"',
                                                                                      ' AND dat_proposta IS NOT NULL '

 

            END IF
       END IF

 

       #--# Filtrar por lote de pagamento #--#
      WHENEVER ERROR CONTINUE
       SELECT 1
         FROM w_cod_lote_pgto
       WHENEVER ERROR STOP

        IF sqlca.sqlcode <> NOTFOUND THEN
            LET l_sql_stmt = l_sql_stmt CLIPPED,' AND cod_lote_pgto IN (SELECT cod_lote_pgto FROM w_cod_lote_pgto) '
        END IF

        #--# Filtrar por fornecedor #--#

         WHENEVER ERROR CONTINUE
         SELECT 1
            FROM w_cod_fornecedor
         WHENEVER ERROR STOP
         IF sqlca.sqlcode <> NOTFOUND THEN
             LET l_sql_stmt = l_sql_stmt CLIPPED,' AND cod_fornecedor IN (SELECT cod_fornecedor FROM w_cod_fornecedor) '
         END IF

         #--# Filtrar por favorecido #--#
         WHENEVER ERROR CONTINUE
          SELECT 1
             FROM w_cod_favorecido
          WHENEVER ERROR STOP
          IF sqlca.sqlcode <> NOTFOUND THEN
               LET l_sql_stmt = l_sql_stmt CLIPPED,' AND EXISTS (SELECT cod_fornecedor ',
                                                                                                             ' FROM ap_favorecido fav, w_cod_favorecido ',
                                                                                                          ' WHERE fav.cod_empresa = ap.cod_empresa ',
                                                                                                                ' AND fav.num_ap          = ap.num_ap ,

                                                                                                                 ' and fav.cod_fornecedor = w_cod_favorecido.cod_favorecido  ) '

           END IF

 

           IF mr_prep_fin.ind_liberacao = "3" THEN
               LET l_sql_stmt = l_sql_stmt CLIPPED, ' AND ies_lib_pgto_cap = "S" '
           END IF

 

        CASE mr_prep_fin.ind_ordenacao

           WHEN '1'
                  LET l_sql_stmt = l_sql_stmt CLIPPED, ' ORDER BY num_ap '
           WHEN '2'
                   LET l_sql_stmt = l_sql_stmt CLIPPED, ' ORDER BY cod_fornecedor '
           WHEN '3'
                   LET l_sql_stmt = l_sql_stmt CLIPPED, ' ORDER BY dat_proposta '
           WHEN '4'
                   LET l_sql_stmt = l_sql_stmt CLIPPED, ' ORDER BY dat_vencto_s_desc '
            WHEN '5'
                   LET l_sql_stmt = l_sql_stmt CLIPPED, ' ORDER BY cod_tip_despesa '
            WHEN '6'
                  LET l_sql_stmt = l_sql_stmt CLIPPED, ' ORDER BY cod_lote_pgto '
            WHEN '7'
                  LET l_sql_stmt = l_sql_stmt CLIPPED, ' ORDER BY val_nom_ap '
        END CASE

 

        LET l_sql_stmt = log0810_prepare_sql(l_sql_stmt)

 

- Criar funções para possibilitar a utilização do popup de fornecedores para seleção do favorecido e validação do código informado na tela.

#--------------------------------------------#
FUNCTION fin30060_after_zoom_cod_favorecido()
#--------------------------------------------#

DEFINE l_multi_reference VARCHAR(10),

l_arr_curr SMALLINT

LET l_multi_reference = _ADVPL_get_property(m_form,"MULTI_VALUED_TABLE_REFERENCE")

IF l_multi_reference IS NOT NULL THEN
     LET l_arr_curr = _ADVPL_get_property(l_multi_reference,"ROW_SELECTED")
ELSE
     LET l_arr_curr = 1
END IF

#--# Valida e carrega descrição favorecido #--#
CALL fin80030_carrega_valida_fornecedor(ma_prep_fin[l_arr_curr].cod_favorecido)
RETURNING m_status, m_msg, ma_prep_fin[l_arr_curr].raz_social_fav

RETURN TRUE

END FUNCTION

#--------------------------------------------#

FUNCTION fin30060_valid_cod_fornecedor()
#--------------------------------------------#

DEFINE l_multi_reference VARCHAR(10),
              l_arr_curr SMALLINT

 

         LET l_multi_reference = _ADVPL_get_property(m_form,"MULTI_VALUED_TABLE_REFERENCE")

         IF l_multi_reference IS NOT NULL THEN
              LET l_arr_curr = _ADVPL_get_property(l_multi_reference,"ROW_SELECTED")
         ELSE
                LET l_arr_curr = 1
         END IF

          #--# Valida e carrega descrição favorecido #--#
         CALL fin80030_carrega_valida_fornecedor(ma_prep_fin[l_arr_curr].cod_favorecido)
              RETURNING m_status, m_msg, ma_prep_fin[l_arr_curr].raz_social_fav

          IF NOT m_status THEN
               CALL log_show_status_bar_text(m_form, m_msg CLIPPED,'ERROR_TEXT')
               RETURN FALSE
          END IF

          RETURN TRUE

END FUNCTION

#---------------------------------------------#
FUNCTION fin30060_after_field_cod_favorecidoo()
#---------------------------------------------#
DEFINE l_multi_reference VARCHAR(10),
               l_arr_curr SMALLINT

 

               LET l_multi_reference = _ADVPL_get_property(m_form,"MULTI_VALUED_TABLE_REFERENCE")

               IF l_multi_reference IS NOT NULL THEN
                    LET l_arr_curr = _ADVPL_get_property(l_multi_reference,"ROW_SELECTED")
               ELSE
                     LET l_arr_curr = 1
               END IF

              IF ma_prep_fin[l_arr_curr].cod_favorecido IS NULL THEN
                   LET ma_prep_fin[l_arr_curr].raz_social_fav = ' '
              END IF

              RETURN TRUE

END FUNCTION

 

<Na tabela abaixo informe quais são as rotinas envolvidas, o tipo de operação, a opção de menu e se necessário uma breve descrição das regras de negócio relacionadas a rotina>.

 

Rotina

Tipo de Operação

Opção de Menu

Regras de Negócio

[FIN30060 - Preparação de Pagamentos]

[Alteração]

 

-

    

 

Exemplo de Aplicação:

  • Criar o campo “% Mínimo Espécie” (AAA_PERESP) onde o usuário informará o % que o aluno pagará em dinheiro. Esse % poderá ser alterado durante a negociação.
  • Criar o campo “Referência Mínima para Cálculo” (AAA_REFCAL) onde o usuário informará um dos 4 valores disponíveis para pagamento das mensalidades  como a referência mínima para calcular o débito total do aluno.
  • Criar o parâmetro MV_ACPARNE que definirá se as informações de “% Mínimo Espécie” e “Referência Mínima para Cálculo” serão obrigatórias.
  • O parâmetro MV_ACPARNE deve ter as seguintes opções: 1=Obrigatório e 2=Opcional. Deve ser inicializado como opcional>.

 

Tabelas Utilizadas

  • SE2 – Cadastro de Contas a Pagar
  • FI9 – Controle de Emissão de DARF>.

Opcional

Protótipo de Tela

 

<Caso necessário inclua protótipos de telas com o objetivo de facilitar o entendimento do requisito, apresentar conceitos e funcionalidades do software>.

 

Protótipo 01

 

 

 

 

 

 

 

 

 

Opcional

Fluxo do Processo

 

<Nesta etapa incluir representações gráficas que descrevam o problema a ser resolvido e o sistema a ser desenvolvido. Exemplo: Diagrama - Caso de Uso, Diagrama de Atividades, Diagrama de Classes, Diagrama de Entidade e Relacionamento e Diagrama de Sequência>. 

Opcional

Dicionário de Dados

 

Arquivo ou Código do Script: AAA – Negociação Financeira / *Versao=CP.2014.12_03*/

  

Índice

Chave

01

<FI9_FILIAL+FI9_IDDARF+FI9_STATUS>

02

<FI9_FILIAL+FI9_FORNEC+ FI9_LOJA+FI9_EMISS+FI9_IDDARF>

03

<FI9_FILIAL+FI9_FORNEC+ FI9_LOJA+FI9_PREFIX+FI9_NUM+FI9_PARCEL+FI9_TIPO>

Campo

<AAA_PERESP>

Tipo

<N>

Tamanho

<6>

Valor Inicial

<Varia de acordo com o tipo informado. Por exemplo, quando o campo “tipo” for date, neste campo pode ser informado uma data>. 

Mandatório

Sim (  ) Não (  )

Descrição

<Referência Mínima para Cálculo>

Título

<Ref.Calc.>

Picture

<@E999.99>

Help de Campo

<Informar o % que o aluno pagará em dinheiro. Esse % poderá ser alterado durante a negociação>

 

(Opcional)

Grupo de Perguntas

 

<Informações utilizadas na linha Protheus>.

 

Nome: FINSRF2

X1_ORDEM

01

X1_PERGUNT

Emissão De

X1_TIPO

D

X1_TAMANHO

8

X1_GSC

G

X1_VAR01

MV_PAR01

X1_DEF01

Comum

X1_CNT01

'01/01/08'

X1_HELP

Data inicial do intervalo de emissões das guias de DARF a serem consideradas na seleção dos dados para o relatório 

 

(Opcional)

Consulta Padrão

<Informações utilizadas na linha Protheus>

 

Consulta: AMB

Descrição

Configurações de Planejamento

Tipo

Consulta Padrão

Tabela

“AMB”

Índice

“Código”

Campo

“Código”; ”Descrição”

Retorno

AMB->AMB_CODIGO

 

(Opcional)

Estrutura de Menu

 

<Informações utilizadas na linha Datasul>.

 

Procedimentos

 

Procedimento

 

 

 

Descrição

(Max 40 posições)

(Max 40 posições)

(Max 40 posições)

Módulo

 

 

 

Programa base

 

 

 

Nome Menu

(Max 32 posições)

(Max 32 posições)

(Max 32 posições)

Interface

GUI/WEB/ChUI/Flex

GUI/WEB/ChUI/Flex

GUI/WEB/ChUI/Flex

Registro padrão

Sim

Sim

Sim

Visualiza Menu

Sim/Não

Sim/Não

Sim/Não

Release de Liberação

 

 

 

 

 

 

Programas

 

Programa

 

 

 

Descrição

(Max 40 posições)

(Max 40 posições)

(Max 40 posições)

Nome Externo

 

 

 

Nome Menu/Programa

(Max 32 posições)

(Max 32 posições)

(Max 32 posições)

Nome Verbalizado[1]

(Max 254 posições)

(Max 254 posições)

(Max 254 posições)

Procedimento

 

 

 

Template

(Verificar lista de opções no man01211)

(Verificar lista de opções no man01211)

(Verificar lista de opções no man01211)

Tipo[2]

Consulta/Manutenção/ Relatório/Tarefas

Consulta/Manutenção/ Relatório/Tarefas

Consulta/Manutenção/ Relatório/Tarefas

Interface

GUI/WEB/ChUI/Flex

GUI/WEB/ChUI/Flex

GUI/WEB/ChUI/Flex

Categoria[3]

 

 

 

Executa via RPC

Sim/Não

Sim/Não

Sim/Não

Registro padrão

Sim

Sim

Sim

Outro Produto

Não

Não

Não

Visualiza Menu

Sim/Não

Sim/Não

Sim/Não

Query on-line

Sim/Não

Sim/Não

Sim/Não

Log Exec.

Sim/Não

Sim/Não

Sim/Não

Rotina (EMS)

 

 

 

Sub-Rotina (EMS)

 

 

 

Localização dentro da Sub Rotina (EMS)

 

 

 

Compact[4]

Sim/Não

Sim/Não

Sim/Não

Home[5]

Sim/Não

Sim/Não

Sim/Não

Posição do Portlet[6]

0 – Top Left

1 – Top Right

2 – Bottom Left

3 – Bottom Right

0 – Top Left

1 – Top Right

2 – Bottom Left

3 – Bottom Right

0 – Top Left

1 – Top Right

2 – Bottom Left

3 – Bottom Right

Informar os papeis com os quais o programa deve ser vinculado

 

 

 

 

Cadastro de Papéis

<O cadastro de papéis é obrigatório para os projetos de desenvolvimento FLEX a partir do Datasul 10>.

<Lembrete: o nome dos papeis em inglês descrito neste ponto do documento, devem ser homologados pela equipe de tradução>.

 

Código Papel

(máx 3 posições)

Descrição em Português*

 

Descrição em Inglês*

 


[1] Nome Verbalizado é obrigatório para desenvolvimentos no Datasul 10 em diante.

[2] Tipo é obrigatório para desenvolvimento no Datasul 10 em diante

[3] Categorias são obrigatórias para os programas FLEX.

[4] Obrigatório quando o projeto for FLEX

[5] Obrigatório quando o projeto for FLEX

[6] Obrigatório quando o projeto for FLEX

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