Módulo: DOC. IMPORTAÇÃO
Funcionalidade: Nota Fiscal Complementar
Data/Hora da Publicação: 07/12/2006 00:00:00
Data/Hora Última Alteração: 23/02/2011 09:12:46
Descrição da Nota: NF COMPLEMENTAR VALOR PIS COFINS E ICMS ERRADO
Sintoma
1) Ao gerar a NF Complementar no valor de R$ 1.000,00 - o valor de pis cofins e icms está sendo
gerado incorretamente - o sistema deverá realizar os calculos conforme a NF Global, ou seja:
utilizar as mesmas alíquotas de pis cofins e icms da DI. Segue planilha utilizada para conferencia
dos calculos.
2) Verificado parâmetro na tabela zycit398 e o Pis e o Cofins não estão sendo destacados na NF
Complementar.
Solução
Atualização do programa de nota fiscal complementar para fazer tratamento igual a nota fiscal
global.
6.0
Produto:
Nota
Descrição
Informações Complementares
----------------------------------------------------------------------------------------------------
Nota Número 02635 Data: 07/12/2006 Hora: 16:37:15
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
Nota Número : 02635
Categoria : Erro de Programa
Prioridade : Média
Versão PW.CE : 6.0
Pacote : 00025
Agrupamento : 00142
----------------------------------------------------------------------------------------------------
Referência às notas relacionadas:
Número - Ordem - Versão - Pacote - Descrição Breve
02340 - 00001 - 6.0 - 00025 - TRATAR SUSPENSÃO DE REGIME TRIBUTÁRIO NAS NOTAS FISCAIS.
----------------------------------------------------------------------------------------------------
NF COMPLEMENTAR VALOR PIS COFINS E ICMS ERRADO
----------------------------------------------------------------------------------------------------
Palavras Chave:
NFC - PIS - COFINS - ICMS
----------------------------------------------------------------------------------------------------
Objetos da nota:
REPS /PWS/MZYCI029F01
REPS /PWS/MZYCI029TOP
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI029F01
...
ENDLOOP.
ENDFORM.
FORM collect_despesas.
DATA: v_soma1 LIKE /pws/zycit053-vlreal,
v_soma2 LIKE /pws/zycit053-vlreal,
* >> Início da exclusão: FORM COLLECT_DESPESAS
v_fator_y TYPE p DECIMALS 9.
* << Fim da exclusão
* >> Início da inclusão: FORM COLLECT_DESPESAS
v_fator_y TYPE p DECIMALS 9,
v_nova TYPE c.
* << Fim da inclusão
CLEAR: itab_zycit053_b, itab_zycit036_b, itab_zycit053_c,
itab_zycit036_c, itab_zycit036_d, itab_zycit053_d,
itab_zycit053_e, itab_zycit053r, itab_zycit265_c.
REFRESH: itab_zycit053_b, itab_zycit036_b, itab_zycit053_c,
itab_zycit036_c, itab_zycit036_d, itab_zycit053_d,
...
...
READ TABLE itab_zycit019 WITH KEY
codigo = itab_zycit053_c-codigo.
CLEAR: v_pis, v_cofins, v_fator_y.
IF NOT itab_zycit100-codregtripiscofi EQ '5' AND
/pws/zycit062-susp_nf NE 'S'.
* >> Início da inclusão: FORM COLLECT_DESPESAS
IF /pws/zycie085-nrseqdi IS INITIAL.
SELECT SINGLE * FROM /pws/zycit085
INTO /pws/zycie085
WHERE nrseqdi EQ itab_zycit100-nrseqdi.
ENDIF.
IF itab_zycit438[] IS INITIAL.
SELECT * FROM /pws/zycit438 INTO TABLE itab_zycit438
WHERE regio = v_regio
AND lei = 'MP252'.
IF sy-subrc NE 0.
SELECT * FROM /pws/zycit438 INTO TABLE itab_zycit438
WHERE regio = ' '
AND lei = 'MP252'.
ENDIF.
SELECT * FROM /pws/zycit438 APPENDING TABLE itab_zycit438
WHERE regio = v_regio
AND lei = 'MP255'.
IF sy-subrc NE 0.
SELECT * FROM /pws/zycit438 APPENDING TABLE itab_zycit438
WHERE regio = ' '
AND lei = 'MP255'.
ENDIF.
ENDIF.
IF NOT itab_zycit438[] IS INITIAL.
IF NOT /pws/zycie085-dtreg IS INITIAL.
READ TABLE itab_zycit438 WITH KEY lei = 'MP252'.
IF sy-subrc EQ 0.
IF itab_zycit438-vigencia <= /pws/zycie085-dtreg AND
itab_zycit438-vigencia_ate >= /pws/zycie085-dtreg AND
NOT itab_zycit438-vigencia IS INITIAL.
v_nova = 'X'.
ELSE.
READ TABLE itab_zycit438 WITH KEY lei = 'MP255'.
IF sy-subrc EQ 0.
IF itab_zycit438-vigencia <= /pws/zycie085-dtreg AND
itab_zycit438-vigencia_ate >= /pws/zycie085-dtreg AND
NOT itab_zycit438-vigencia IS INITIAL.
v_nova = 'X'.
ENDIF.
ENDIF.
ENDIF.
ELSE.
READ TABLE itab_zycit438 WITH KEY lei = 'MP255'.
IF sy-subrc EQ 0.
IF itab_zycit438-vigencia <= /pws/zycie085-dtreg AND
itab_zycit438-vigencia_ate >= /pws/zycie085-dtreg AND
NOT itab_zycit438-vigencia IS INITIAL.
v_nova = 'X'.
ENDIF.
ENDIF.
ENDIF.
ELSE.
READ TABLE itab_zycit438 WITH KEY lei = 'MP252'.
IF sy-subrc EQ 0.
IF itab_zycit438-vigencia <= /pws/zycie085-dtuserc AND
itab_zycit438-vigencia_ate >= /pws/zycie085-dtuserc AND
NOT itab_zycit438-vigencia IS INITIAL.
v_nova = 'X'.
ELSE.
READ TABLE itab_zycit438 WITH KEY lei = 'MP255'.
IF sy-subrc EQ 0.
IF itab_zycit438-vigencia <= /pws/zycie085-dtuserc AND
itab_zycit438-vigencia_ate >= /pws/zycie085-dtuserc AND
NOT itab_zycit438-vigencia IS INITIAL.
v_nova = 'X'.
ENDIF.
ENDIF.
ENDIF.
ELSE.
READ TABLE itab_zycit438 WITH KEY lei = 'MP255'.
IF sy-subrc EQ 0.
IF itab_zycit438-vigencia <= /pws/zycie085-dtuserc AND
itab_zycit438-vigencia_ate >= /pws/zycie085-dtuserc AND
NOT itab_zycit438-vigencia IS INITIAL.
v_nova = 'X'.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ELSE.
CLEAR v_nova.
ENDIF.
IF NOT v_nova IS INITIAL.
PERFORM mp_nova.
IF /pws/zycit000-flagpiscof EQ 'X'.
itab_zycit265_c-vldp_pis = itab_zycit265_c-vldp_pis +
( itab_zycit100-advalpis / 100 ) *
itab_zycit100-basepis.
itab_zycit265_c-vldp_cofins =
itab_zycit265_c-vldp_cofins +
( itab_zycit100-advalcofins / 100 ) *
itab_zycit100-basecofins.
ENDIF.
ELSE.
* << Fim da inclusão
v_fator_y = ( itab_zycit003-advalicms / 100 ) /
( ( 100 - itab_zycit003-advalicms -
itab_zycit100-advalpis - itab_zycit100-advalcofins )
/ 100 ).
v_pis = v_cofins = itab_zycit053_c-vlcompl * v_fator_y.
* >> Início da exclusão: FORM COLLECT_DESPESAS
IF itab_zycit020-baseicms EQ 'X' AND
/pws/zycit000-flagpiscof EQ 'X'.
* << Fim da exclusão
* >> Início da inclusão: FORM COLLECT_DESPESAS
IF /pws/zycit000-flagpiscof EQ 'X'.
* << Fim da inclusão
itab_zycit265_c-vldp_pis = itab_zycit265_c-vldp_pis +
( itab_zycit100-advalpis / 100 ) * v_pis.
ENDIF.
* >> Início da exclusão: FORM COLLECT_DESPESAS
IF itab_zycit020-baseicms EQ 'X' AND
/pws/zycit000-flagpiscof EQ 'X'.
* << Fim da exclusão
* >> Início da inclusão: FORM COLLECT_DESPESAS
IF /pws/zycit000-flagpiscof EQ 'X'.
* << Fim da inclusão
itab_zycit265_c-vldp_cofins = itab_zycit265_c-vldp_cofins +
( itab_zycit100-advalcofins / 100 ) * v_cofins.
* >> Início da inclusão: FORM COLLECT_DESPESAS
ENDIF.
* << Fim da inclusão
ENDIF.
MODIFY itab_zycit265_c TRANSPORTING vldp_pis vldp_cofins
WHERE nrseq = itab_zycit053_e-nrseq
AND ebeln = itab_zycit053_e-ebeln
AND ebelp = itab_zycit053_e-ebelp.
...
...
WHEN '0200'.
SET PF-STATUS '0200'.
SET TITLEBAR '0200'.
ENDCASE.
ENDFORM.
* >> Início da inclusão:
FORM mp_nova.
DATA: v_pisred TYPE /pws/zycie085-vlfob,
v_cofred TYPE /pws/zycie085-vlfob,
v_calcpc TYPE /pws/zycit100-basepis.
DATA: v_advii LIKE /pws/zycie085-vlfob,
v_advipi LIKE /pws/zycie085-vlfob,
v_advicms LIKE /pws/zycie085-vlfob,
v_advpis LIKE /pws/zycie085-vlfob,
v_advcof LIKE /pws/zycie085-vlfob,
v_divisor LIKE /pws/zycie085-vlfob,
v_redpis LIKE /pws/zycie085-vlfob,
v_redcof LIKE /pws/zycie085-vlfob.
DATA: v_calcpc_ant TYPE /pws/zycit100-basepis.
CLEAR: itab_zycit100-basecofins ,
itab_zycit100-basepis .
IF itab_zycit100-basredpis >= '100'.
itab_zycit100-basredpis = '0'.
ENDIF.
IF itab_zycit100-basredcof >= '100'.
itab_zycit100-basredcof = '0'.
ENDIF.
IF /pws/zycit062-bs_pis_cof IS INITIAL.
IF NOT itab_zycit003-basred IS INITIAL OR
NOT itab_zycit003-basred EQ '100'.
v_advicms = ( ( itab_zycit003-advalicms / 100 ) *
( itab_zycit003-basred / 100 ) ) .
ELSE.
v_advicms = ( itab_zycit003-advalicms / 100 ).
ENDIF.
ELSE.
v_advicms = ( itab_zycit003-advalicms / 100 ).
ENDIF.
IF itab_zycit100-codregtri EQ '4'.
v_advii = itab_zycit100-reduzida / 100 .
IF itab_zycit100-reduzida IS INITIAL.
v_advii = itab_zycit003-advalii / 100 .
ENDIF.
ENDIF.
IF itab_zycit100-codregtriipi EQ '2'.
v_advipi = itab_zycit100-reduzidaipi / 100.
IF itab_zycit100-reduzidaipi IS INITIAL.
v_advipi = itab_zycit003-advalipi / 100.
ENDIF.
ELSEIF itab_zycit100-codregtriipi EQ '4' AND
itab_zycit003-advalipi IS INITIAL.
v_advipi = itab_zycit100-vlipi / itab_zycit100-baseipi .
ENDIF.
CASE itab_zycit100-codregtripiscofi.
WHEN '4'.
IF itab_zycit100-basredpis IS INITIAL OR
itab_zycit100-basredpis GT '100' .
v_pisred = ( itab_zycit100-advalpis / 100 ).
ELSE.
v_pisred = ( itab_zycit100-basredpis / 100 ).
ENDIF.
IF itab_zycit100-basredcof IS INITIAL OR
itab_zycit100-basredcof GT '100'.
v_cofred = ( itab_zycit100-advalcofins / 100 ).
ELSE.
v_cofred = ( itab_zycit100-basredcof / 100 ).
ENDIF.
WHEN '1' OR '3' OR '5'.
IF itab_zycit100-aliqpis IS INITIAL.
v_pisred = ( itab_zycit100-advalpis / 100 ).
ELSE.
v_pisred = ( itab_zycit100-aliqpis / 100 ).
ENDIF.
IF itab_zycit100-aliqcof IS INITIAL.
v_cofred = ( itab_zycit100-advalcofins / 100 ).
ELSE.
v_cofred = ( itab_zycit100-aliqcof / 100 ).
ENDIF.
ENDCASE.
IF ( NOT v_pisred IS INITIAL ) OR ( NOT v_cofred IS INITIAL ) .
v_advpis = v_pisred.
v_advcof = v_cofred.
ENDIF.
v_calcpc_ant = v_calcpc.
v_calcpc = ( itab_zycit053_c-vlcompl *
( ( 1 + v_advicms * ( v_advii + v_advipi *
( 1 + v_advii ) ) ) / ( ( 1 - v_advpis - v_advcof ) *
( 1 - v_advicms ) ) ) ).
IF v_calcpc LT '0'.
CLEAR : itab_zycit100-basredpis, itab_zycit100-basredcof,
v_calcpc.
MESSAGE s015 WITH text-239 text-240.
itab_zycit100-basecofins = itab_zycit100-basepis =
itab_zycit100-basecofins = itab_zycit100-basepis = v_calcpc_ant.
ELSE.
IF NOT itab_zycit100-percreduzpc IS INITIAL.
v_calcpc = v_calcpc - ( v_calcpc *
( ( 100 - itab_zycit100-percreduzpc ) / 100 ) ).
ENDIF.
itab_zycit100-basecofins = itab_zycit100-basepis = v_calcpc.
ENDIF.
ENDFORM.
* << Fim da inclusão
...
CLEAR itab_zyglt100 .
READ TABLE itab_zyglt100 WITH KEY zexit = 'NFC004'.
IF NOT itab_zyglt100-zexit_ativa IS INITIAL.
PERFORM (itab_zyglt100-formulario) IN PROGRAM
(itab_zyglt100-programa) IF FOUND.
IF e_subrc EQ '8'.
EXIT.
ENDIF.
ENDIF.
IF e_subrc EQ '0'.
* >> Início da exclusão: FORM CONTABILIZA_IMPOSTO
CALL FUNCTION '/PWS/ZYCB_TRANSACAO_F_02B'
* << Fim da exclusão
* >> Início da inclusão: FORM CONTABILIZA_IMPOSTO
CALL FUNCTION '/PWS/ZYCI_TRANSACAO_F_02C'
* << Fim da inclusão
EXPORTING
v_modo = v_modo_bi
TABLES
t_dados = itab_zycbe033
t_campo = itab_zycbt034
t_zycbt032 = itab_zycbt032
t_contas = itab_contas
EXCEPTIONS
campo_em_branco = 1
periodo_fechado = 2
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI029TOP
...
DATA: BEGIN OF itab_matuse OCCURS 0.
DATA: ebeln LIKE ekpo-ebeln,
ebelp LIKE ekpo-ebelp,
j_1bmatuse LIKE ekpo-j_1bmatuse.
DATA: END OF itab_matuse .
* >> Início da inclusão:
DATA: BEGIN OF itab_zycit438 OCCURS 0 .
INCLUDE STRUCTURE /pws/zycit438.
DATA: END OF itab_zycit438.
* << Fim da inclusão
DATA: wa_zycit048 LIKE /pws/zycit048.
DATA: wa_zycit019 LIKE /pws/zycit019.
DATA: wa_zyglt369 LIKE /pws/zyglt369.
DATA: okcode LIKE sy-ucomm,
v_adrnr LIKE j_1bbranch-adrnr,
...
------------------------------------------------------------------------
Incluído símbolo de texto:
Idioma: PT
Símbolo: 239
Texto: (34 caracteres)
"Valor da Base Pis/Cofins negativo."
Comprimento máximo: 34
------------------------------------------------------------------------
Incluído símbolo de texto:
Idioma: PT
Símbolo: 240
Texto: (26 caracteres)
"Favor verificar alíquotas."
Comprimento máximo: 26