Histórico da Página
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. |
---|