Módulo: CÂMBIO FINANCEIRO
Funcionalidade: Remessa
Data/Hora da Publicação: 06/12/2005 00:00:00
Data/Hora Última Alteração: 18/02/2011 11:39:17
Descrição da Nota: EXIT NA REMESSA FINANCEIRA DE PAGAMENTO PARA CÁLCULO DO CIDE E ISS
Sintoma
Exit na remessa financeira de pagamento, para calcular a base de calculo do CIDE e ISS através um
desenvolvimento específico.
Solução
Inserido pontos de exit no momento do cálculo da "base de cálculo" do CIDE e ISS.
6.0
Informações Complementares
----------------------------------------------------------------------------------------------------
Nota Número 00399 Data: 06/12/2005 Hora: 08:55:10
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
Nota Número : 00399
Categoria : Melhoria
Prioridade : Média
Versão PW.CE : 6.0
Pacote : 00022
Agrupamento : 00093
----------------------------------------------------------------------------------------------------
Referência às notas relacionadas:
Número - Ordem - Descrição Breve
----------------------------------------------------------------------------------------------------
EXIT NA REMESSA FINANCEIRA DE PAGAMENTO PARA CÁLCULO DO CIDE E ISS
----------------------------------------------------------------------------------------------------
Palavras Chave:
EXIT REM003 CIDE ISS REMESSA
----------------------------------------------------------------------------------------------------
Objetos da nota:
REPS /PWS/MZYCA109I01
REPS /PWS/MZYCA109TOP
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCA109I01
Contexto: MODULE controla_impostos INPUT.
CHECK v_status_s NE '0'.
* >> Início da Inclusão
* Ch. 274018 - 05/12/2005 - Início
FREE itab_zyglt100.
v_syrepid = sy-repid.
* Busca as Exit's ativas
CALL FUNCTION '/PWS/ZYGL_BUSCA_EXIT_CLIENTE'
EXPORTING
i_codmod = 'F' "Módulo da Exit
i_func = v_syrepid
TABLES
itab_zyglt100 = itab_zyglt100
EXCEPTIONS
i_codmod_nao_encontrado = 1
i_func_nao_encontrado = 2
i_zexit_nao_encontrado = 3
OTHERS = 4.
* Ch. 274018 - 05/12/2005 - Fim
* >> Fim da Inclusão
SORT itab_zycat025 BY tpimp.
DELETE ADJACENT DUPLICATES FROM itab_zycat025 COMPARING tpimp.
* Recalcula valores dos impostos que dependem de informações de outros
* impostos da table, para atualizar diretamente sem a necessidade de
* passar novamente pelo PAI
itab_zycat025_aux2[] = itab_zycat025[].
* CIDE******************************************************************
READ TABLE itab_zycat025 WITH KEY tpimp = 'CIDE'.
IF sy-subrc = 0.
* Base de Cálculo
* Chamado 223057 - Renato Mendes - Inicio
v_control_ci = v_control_ci + 1.
* Chamado 223057 - Renato Mendes - Fim
READ TABLE itab_zycat024 WITH KEY bukrs = /pws/zycbe124-bukrs
tpimp = itab_zycat025-tpimp.
IF sy-subrc EQ 0 AND
* Chamado 223057 - Renato Mendes - Inicio
( ( itab_zycat024-altera_base IS INITIAL OR
itab_zycat025-basecalc IS INITIAL ) OR
( v_control_ci EQ 1 AND
sy-tcode EQ '/PWS/ZYCB109_C' ) ).
* Chamado 223057 - Renato Mendes - Fim
READ TABLE itab_zycat025_aux2 WITH KEY tpimp = 'IRRF'.
IF sy-subrc = 0 AND itab_zycat025_aux2-dedfat = 'X' AND
/pws/zycbe124-vlme => itab_zycat025_aux2-vlimpme.
v_valorme = /pws/zycbe124-vlme - itab_zycat025_aux2-vlimpme.
ELSE.
v_valorme = /pws/zycbe124-vlme.
ENDIF.
* >> Início da Inclusão
* Ch. 274018 - 05/12/2005 - Início
READ TABLE itab_zyglt100 WITH KEY zexit = 'REM003' BINARY SEARCH.
IF sy-subrc EQ 0.
* Verifica se a Exit está ativa.
IF NOT itab_zyglt100-zexit_ativa IS INITIAL.
PERFORM (itab_zyglt100-formulario)
IN PROGRAM (itab_zyglt100-programa).
ENDIF.
ELSE.
* Ch. 274018 - 05/12/2005 - Fim
* >> Fim da Inclusão
IF itab_zycat025-reajbase = 'X'.
itab_zycat025-basecalc = v_valorme /
( ( 100 - itab_zycat025-advalorem ) / 100 ).
ELSE.
itab_zycat025-basecalc = v_valorme.
ENDIF.
ENDIF.
* >> Início da Inclusão
ENDIF. "274018 - 05/12/2005
* >> Fim da Inclusão
v_basecalc_cide = itab_zycat025-basecalc.
* Valor Imposto ME
itab_zycat025-vlimpme =
itab_zycat025-basecalc * ( itab_zycat025-advalorem / 100 ).
* CHAMADO 221566 - 24/03/2005 - INICIO
** Valor Imposto MI
* IF NOT /pws/zycbe124-kursf IS INITIAL.
* itab_zycat025-vlimpmi =
* itab_zycat025-vlimpme * /pws/zycbe124-kursf.
* ELSE.
* itab_zycat025-vlimpmi = itab_zycat025-vlimpme * v_kursf.
* ENDIF.
IF tcurx-currdec = 0.
v_vlme = itab_zycat025-vlimpme / ( 10 ** ( tcurx-currdec - 2 ) ).
ELSE.
v_vlme = itab_zycat025-vlimpme.
ENDIF.
itab_zycat025-vlimpmi = ( ( v_kursf / v_defator ) * v_parafator )
* v_vlme.
* CHAMADO 221566 - 24/03/2005 - FIM
MODIFY itab_zycat025 TRANSPORTING basecalc vlimpme vlimpmi
WHERE tpimp = 'CIDE'.
ENDIF.
* ISS*******************************************************************
READ TABLE itab_zycat025 WITH KEY tpimp = 'ISS'.
IF sy-subrc = 0.
* Base de Cálculo
* Chamado 223057 - Renato Mendes - Inicio
v_control_is = v_control_is + 1.
* Chamado 223057 - Renato Mendes - Fim
* >> Início da Inclusão
* Ch. 274018 - 05/12/2005 - Início
READ TABLE itab_zyglt100 WITH KEY zexit = 'REM003' BINARY SEARCH.
IF sy-subrc EQ 0.
* Verifica se a Exit está ativa.
IF itab_zyglt100-zexit_ativa IS INITIAL.
PERFORM (itab_zyglt100-formulario)
IN PROGRAM (itab_zyglt100-programa).
ENDIF.
ELSE.
* Ch. 274018 - 05/12/2005 - Fim
* >> Fim da Inclusão
READ TABLE itab_zycat024 WITH KEY bukrs = /pws/zycbe124-bukrs
tpimp = itab_zycat025-tpimp.
IF sy-subrc EQ 0 AND
* Chamado 223057 - Renato Mendes - Inicio
( ( itab_zycat024-altera_base IS INITIAL OR
itab_zycat025-basecalc IS INITIAL ) OR
( v_control_is EQ 1 AND
sy-tcode EQ '/PWS/ZYCB109_C' ) ).
* Chamado 223057 - Renato Mendes - Fim
itab_zycat025-basecalc = /pws/zycbe124-vlme.
ENDIF.
* >> Início da Inclusão
ENDIF. "274018 - 05/12/2005
* >> Fim da Inclusão
v_basecalc_iss = itab_zycat025-basecalc.
* Valor Imposto ME
itab_zycat025-vlimpme =
itab_zycat025-basecalc * ( itab_zycat025-advalorem / 100 ).
* Valor Imposto MI
* CHAMADO 221566 - 24/03/2005 - INICIO
* IF NOT /pws/zycbe124-kursf IS INITIAL.
* itab_zycat025-vlimpmi =
* itab_zycat025-vlimpme * /pws/zycbe124-kursf.
* ELSE.
* itab_zycat025-vlimpmi = itab_zycat025-vlimpme * v_kursf.
* ENDIF.
IF tcurx-currdec = 0.
v_vlme = itab_zycat025-vlimpme / ( 10 ** ( tcurx-currdec - 2 ) ).
ELSE.
v_vlme = itab_zycat025-vlimpme.
ENDIF.
itab_zycat025-vlimpmi = ( ( v_kursf / v_defator ) * v_parafator )
* v_vlme.
* CHAMADO 221566 - 24/03/2005 - FIM
MODIFY itab_zycat025 TRANSPORTING basecalc vlimpme vlimpmi
WHERE tpimp = 'ISS'.
ENDIF.
...
ENDMODULE. " controla_impostos INPUT
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCA109TOP
...
* Variáveis
DATA:
v_nrseq LIKE /pws/zycbt124-nrseq, " Guarda nº seq. despesa
v_nrseqview(10) TYPE c, " Visão p/ campo NRSEQ
ok_code LIKE sy-ucomm,
ok_code1 LIKE sy-ucomm,
ok_code2 LIKE sy-ucomm,
v_answer, " Resposta do usuário
mark(1),
mark1(1) TYPE c,
...
v_ano LIKE t009b-bdatj,
v_monat LIKE t001b-frpe1,
v_lib(1) TYPE c, "Estratégia de Liberação para contabilizar
* >> Início da Inclusão
* Ch. 274018 - 05/12/2005 - Início
okcode LIKE sy-ucomm,
* Ch. 274018 - 05/12/2005 - Fim
* >> Fim da Inclusão
v_totdep LIKE /pws/zyglt342-valorinc,
v_aliqpis LIKE /pws/zycbt124-aliqpis,
v_aliqcofins LIKE /pws/zycbt124-aliqcofins,
v_aliqiss LIKE /pws/zycbt124-aliqiss,
...
v_control_co(10) TYPE n, "Controle p cálculo COFINS
* Chamado 223057 - Renato Mendes - Fim
* Chamado 269883 - Renato - 16.11.2005 - Inicio
v_indice TYPE i.
* Chamado 269883 - Renato - 16.11.2005 - Fim
DATA: v_nome_campo(35) TYPE c,
v_comp(35) TYPE c,
v_cod_grupo LIKE /pws/zyglt320-cod_grupo,
cont TYPE i VALUE 0,
v_tela LIKE sy-ucomm,
wa_zycbe141_aux LIKE /pws/zycbe141,
v_dtlanc(10) TYPE c.
* Chamado 239757 - Renato - 20.06.2005 - Inicio
DATA: e_subrc LIKE sy-subrc.
* Chamado 239757 - Renato - 20.06.2005 - Fim
* Chamado 239757 - Renato - 20.06.2005 - Fim