Páginas filhas
  • ER_MANFIN01-402_ FIN30135_Ajuste_cadastro_de_prefeitura_x_pctISS_+_tipo_despesa

 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

Tributos e Impostos

Segmento Executor

Supply Chain - Inovação

Projeto1

MANFIN001

IRM/Epic1

MANFIN001-402 FIN30135 Ajuste cadastro de prefeitura x pctISS + tipo de despesa

Requisito/Story1

MANFIN001-383

Subtarefa1

MANFIN-410

Chamado2

TSRHNG

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


Possibilitar que seja incluído o relacionamento automático entre os tipos de despesas cadastrados que possuam controle de retenção de ISS com o tipo de valor e prefeitura. Este relacionamento era opcional na versão 10.02 e tornou-se obrigatório a partir da versão 12 

 

(Obrigatório)

Definição da Regra de Negócio

 

 A partir da versão metadados, o relacionamento entre os tipos de despesas x prefeituras x pct ISS se tornou obrigatório, não permitindo a inclusão de documentos que não possuam este relacionamento. O programa fin30135 será alterado para prever a inclusão de todos os relacionamentos, sendo previsto as seguintes alterações:


1 - No Zoom dos tipos de despesas, serão selecionados apenas os registros que possuam a trava de retenção do ISS ativa. 


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

  FUNCTION fin30135_before_zoom_tip_desp()

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

  DEFINE l_where_clause CHAR(1000)

  LET l_where_clause = ' cod_empresa    = "',p_cod_empresa,'" '

    LET l_where_clause = l_where_clause CLIPPED, ' AND cod_tip_despesa IN (SELECT tip_despesa FROM cap_par_tip_desp ',

                                               ' WHERE empresa =  "',p_cod_empresa,'" ',

                                               ' AND parametro = "usa_ctrl_trava_iss" ',

                                               ' AND parametro_booleano <> "0") '

  CALL LOG_zoom_set_where_clause(l_where_clause)

  RETURN TRUE

END FUNCTION


2 - Será criada uma nova função no FIN30135 para verificar no final da inclusão, se ficou faltando relacionar tipos de despesas com obrigatoriedade de retenção do ISS. caso encontre mostrará a mensagem questionando o usuário se não deseja que a inclusão dos demais relacionamentos seja feita automaticamente. Esta lógica deverá ser incluída antes da função de replicação dos dados para as demais empresas. 

#-----------------------------------------#
FUNCTION fin30135_confirm_create()
#-----------------------------------------#
DEFINE l_where_clause CHAR(1000)

#Arthur
#--# Cadastra os tipos de despesas não informados automoaticamente #--#
CALL fin30135_insere_relac_retencao_iss_autom("I")
RETURNING m_status, m_msg

IF NOT m_status THEN
    RETURN FALSE, m_msg
END IF

#--# Replica para outras empresas #--#
CALL fin30135_replica_dados('I')
RETURNING m_status, m_msg
IF NOT m_status THEN
    CALL log_show_status_bar_text(m_form,m_msg CLIPPED,'ERROR_TEXT')
RETURN FALSE
END IF

LET l_where_clause = ' mest.empresa = "',ma_relac_pref[1].empresa CLIPPED,'"',
' AND mest.tip_val = ',ma_relac_pref[1].tip_val

LET m_status = _ADVPL_get_property(m_form,"EXECUTE_OPERATION","FIND",l_where_clause)
CALL log_show_status_bar_text(m_form, 'Inclusão efetuada com sucesso','INFO_TEXT')

RETURN TRUE

END FUNCTION

 

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

FUNCTION fin30135_confirm_update()
#-----------------------------------------#

DEFINE l_ind SMALLINT
#Arthur
#--# Cadastra os tipos de despesas não informados automoaticamente #--#
CALL fin30135_insere_relac_retencao_iss_autom("A")
RETURNING m_status, m_msg

IF NOT m_status THEN
RETURN FALSE, m_msg
END IF


#--# Replica para outras empresas #--#
CALL fin30135_replica_dados('A')
RETURNING m_status, m_msg

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 fin30135_insere_relac_retencao_iss_autom(l_opcao)
#---------------------------------------------------------#
DEFINE l_progress_bar VARCHAR(30),
l_max_value INTEGER

DEFINE lr_cap_pct_iss_municipio RECORD LIKE cap_pct_iss_municipio.*,
              lr_cap_iss_municipio RECORD LIKE cap_iss_municipio.*,
              lr_tipo_despesa RECORD LIKE tipo_despesa.*

DEFINE l_cod_cidade LIKE fornecedor.cod_cidade

DEFINE l_tot_regs INTEGER,
               l_reg_curr INTEGER,
               l_ind INTEGER,
               l_opcao CHAR(01),
               l_qtd_munic INTEGER,
               l_cod_munic LIKE cap_pct_iss_municipio.municipio_iss


   IF NOT log_question('Deseja efetuar o relacionamento automático para todos os tipo de despesa que controlam ISS ?') THEN
        RETURNFALSE, ' '  
   END IF

   # CALL fin30135_gauge_inicializa()

   LET l_max_value = 0

   WHENEVER ERROR CONTINUE
   SELECT COUNT(*)
        INTO l_max_value
      FROM tipo_despesa
    WHERE cod_empresa = ma_relac_pref[1].empresa
  WHENEVER ERROR STOP
   IF sqlca.sqlcode <> 0 THEN 
        CALL log003_err_sql("SELECT","TIPO_DESPESA")
         RETURN FALSE
   END IF

    FOR l_ind = 1 TO 500
          IF ma_relac_pref[l_ind].empresa IS NOT NULL THEN
               IF l_ind = 1 THEN
                   LET l_qtd_munic = 1
                  LET l_cod_munic = ma_relac_pref[l_ind].municipio_iss
               END IF

               IF l_cod_munic <> ma_relac_pref[l_ind].municipio_iss THEN
                   LET l_qtd_munic = l_qtd_munic + 1
                   LET l_cod_munic = ma_relac_pref[l_ind].municipio_iss
               END IF
         ELSE
               EXIT FOR
         END IF
    END FOR

    LET l_max_value = l_max_value * l_qtd_munic
     # CALL _ADVPL_set_property(m_progress_bar_reference,"MAX_VALUE",l_max_value)

     # CALL fin30135_gauge_total_processos(l_max_value)

     IF l_opcao = "A" THEN
         WHENEVER ERROR CONTINUE
         DELETE FROM cap_pct_iss_municipio
          WHERE cap_pct_iss_municipio.empresa = ma_relac_pref[1].empresa
                AND cap_pct_iss_municipio.tip_val = ma_relac_pref[1].tip_val
        WHENEVER ERROR STOP
 

         IF sqlca.SQLCODE <> 0 THEN
              RETURN FALSE, "Problema na exclusão do registro de municipio!"
         END IF
END IF

#Arthur
FOR l_ind = 1 TO 300
        IF ma_relac_pref[l_ind].empresa IS NOT NULL THEN

            # CALL fin30135_gauge_incrementa()

            WHENEVER ERROR CONTINUE
            DECLARE cq_tipo_despesa CURSOR WITH HOLD FOR
              SELECT cod_tip_despesa
                 FROM tipo_despesa, cap_par_tip_desp
              WHERE tipo_despesa.cod_empresa = p_cod_empresa
                    AND cap_par_tip_desp.empresa = tipo_despesa.cod_empresa
                    AND cap_par_tip_desp.parametro = 'usa_ctrl_trava_iss'
                    AND cap_par_tip_desp.tip_despesa = tipo_despesa.cod_tip_despesa
                    AND cap_par_tip_desp.parametro_booleano <> "0"
            WHENEVER ERROR STOP
 

             IF sqlca.sqlcode <> 0 THEN
                 CLOSE cq_tipo_despesa
                 FREE cq_tipo_despesa
                 RETURN FALSE, "Problema na busca dos registros de Tipo de Despesa - Rotina antiga"
             END IF

             WHENEVER ERROR CONTINUE
             FOREACH cq_tipo_despesa INTO lr_tipo_despesa.cod_tip_despesa
                        IF sqlca.sqlcode <> 0 THEN
                             CLOSE cq_tipo_despesa
                             FREE cq_tipo_despesa
                            RETURN FALSE, "Problema na busca dos registros de Tipo de Despesa - Rotina antiga"
                         END IF

                        LET lr_cap_pct_iss_municipio.empresa = ma_relac_pref[l_ind].empresa
                        LET lr_cap_pct_iss_municipio.municipio_iss = ma_relac_pref[l_ind].municipio_iss
                        LET lr_cap_pct_iss_municipio.fornecedor_municipio_iss = ma_relac_pref[l_ind].fornecedor_municipio_iss
                        LET lr_cap_pct_iss_municipio.tip_desp = lr_tipo_despesa.cod_tip_despesa
                        LET lr_cap_pct_iss_municipio.tip_val = ma_relac_pref[l_ind].tip_val
                        LET lr_cap_pct_iss_municipio.eh_isento = ma_relac_pref[l_ind].eh_isento
                        LET lr_cap_pct_iss_municipio.dia_vencimento = ma_relac_pref[l_ind].dia_vencimento
                        LET lr_cap_pct_iss_municipio.qtde_meses_vencimento = ma_relac_pref[l_ind].qtde_meses_vencimento

                        CASE l_opcao
                           WHEN 'I'

                                  IF NOT (lr_cap_pct_iss_municipio.empresa = ma_relac_pref[l_ind].empresa AND
                                       lr_cap_pct_iss_municipio.municipio_iss = ma_relac_pref[l_ind].municipio_iss AND
                                       lr_cap_pct_iss_municipio.fornecedor_municipio_iss = ma_relac_pref[l_ind].fornecedor_municipio_iss AND
                                       lr_cap_pct_iss_municipio.tip_desp = ma_relac_pref[l_ind].tip_desp AND
                                       lr_cap_pct_iss_municipio.tip_val = ma_relac_pref[l_ind].tip_val AND
                                       lr_cap_pct_iss_municipio.eh_isento = ma_relac_pref[l_ind].eh_isento AND
                                       lr_cap_pct_iss_municipio.dia_vencimento = ma_relac_pref[l_ind].dia_vencimento AND
                                      lr_cap_pct_iss_municipio.qtde_meses_vencimento = ma_relac_pref[l_ind].qtde_meses_vencimento) THEN
                                     

                                       WHENEVER ERROR CONTINUE
                                       INSERT INTO cap_pct_iss_municipio (empresa,
                                                                                                         municipio_iss,
                                                                                                         fornecedor_municipio_iss,
                                                                                                         tip_desp,
                                                                                                          tip_val,
                                                                                                          eh_isento,
                                                                                                          dia_vencimento,
                                                                                                          qtde_meses_vencimento)
                                                                                          VALUES (lr_cap_pct_iss_municipio.empresa,
                                                                                                           lr_cap_pct_iss_municipio.municipio_iss,
                                                                                                           lr_cap_pct_iss_municipio.fornecedor_municipio_iss,
                                                                                                           lr_cap_pct_iss_municipio.tip_desp,
                                                                                                           lr_cap_pct_iss_municipio.tip_val,
                                                                                                           lr_cap_pct_iss_municipio.eh_isento,
                                                                                                           lr_cap_pct_iss_municipio.dia_vencimento,
                                                                                                           lr_cap_pct_iss_municipio.qtde_meses_vencimento)
                                           WHENEVER ERROR STOP

                                          IF sqlca.sqlcode <> 0 THEN
                                               IF sqlca.sqlcode = -239 OR sqlca.sqlcode = -268 THEN
                                               ELSE
                                                       RETURN FALSE, "Problema na inclusão no novo registro de municipio!"
                                               END IF
                                        END IF
                             END IF

                 WHEN 'A'

                          WHENEVER ERROR CONTINUE
                                 INSERT INTO cap_pct_iss_municipio (empresa,
                                                                                                  municipio_iss,
                                                                                                  fornecedor_municipio_iss,
                                                                                                  tip_desp,
                                                                                                  tip_val,
                                                                                                  eh_isento,
                                                                                                  dia_vencimento,
                                                                                                  qtde_meses_vencimento)
                                                                                  VALUES (lr_cap_pct_iss_municipio.empresa,
                                                                                                   lr_cap_pct_iss_municipio.municipio_iss,
                                                                                                   lr_cap_pct_iss_municipio.fornecedor_municipio_iss,
                                                                                                   lr_cap_pct_iss_municipio.tip_desp,
                                                                                                   lr_cap_pct_iss_municipio.tip_val,
                                                                                                   lr_cap_pct_iss_municipio.eh_isento,
                                                                                                   lr_cap_pct_iss_municipio.dia_vencimento,
                                                                                                   lr_cap_pct_iss_municipio.qtde_meses_vencimento)
                           WHENEVER ERROR STOP
 

                          IF sqlca.sqlcode <> 0 THEN
                                  IF sqlca.sqlcode = -239 OR sqlca.sqlcode = -268 THEN
                                  ELSE
                                       RETURN FALSE, "Problema na inclusão no novo registro de municipio!"
                                 END IF
                         END IF

             END CASE
      END FOREACH
      FREE cq_tipo_despesa
      WHENEVER ERROR STOP
  END IF
END FOR

RETURN TRUE, ' '

END FUNCTION

 

Rotina

Tipo de Operação

Opção de Menu

Regras de Negócio

FIN30135 – Relacionamento entre Prefeitura x pctISS x tipo de despesa

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