Módulo: DOC. IMPORTAÇÃO
Funcionalidade: Nota Fiscal Complementar
Data/Hora da Publicação: 28/11/2008 00:00:00
Data/Hora Última Alteração: 23/02/2011 09:18:10
Descrição da Nota: AJUSTES PARA REALIZAR O LANÇAMENTO DE PIS E COFINS NA NF COMPL.
Sintoma
Ajustes para lançar os valores de PIS e COFINS na pasta impostos da nota fiscal complementar.
Solução
Ajustes para lançar os valores de PIS e COFINS na pasta impostos da nota fiscal complementar.
Informações Complementares
----------------------------------------------------------------------------------------------------
Nota Número 07667 Data: 28/11/2008 Hora: 09:58:07
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
Nota Número : 07667
Categoria : Melhoria
Prioridade : Média
Versão PW.CE : 7.0
Pacote : 00007
Agrupamento : 00075
----------------------------------------------------------------------------------------------------
Referência às notas relacionadas:
Número - Ordem - Versão - Pacote - Descrição Breve
03255 - 00001 - 6.0 - 00026 - NA NF COMPLEMENTAR ESTÁ LEVANDO VALOR DE PIS E COFINS ISENTO
05719 - 00002 - 7.0 - 00004 - OPERAÇÃO FUNDAP (PARTE II)
----------------------------------------------------------------------------------------------------
AJUSTES PARA REALIZAR O LANÇAMENTO DE PIS E COFINS NA NF COMPL.
----------------------------------------------------------------------------------------------------
Palavras Chave:
NOTA - FISCAL - COMPLEMENTAR - PIS - COFINS - IMPOSTOS - DESENVOLVIMENTO
/PWS/SAPMZYCI029 - /PWS/SAPMZYCI079
----------------------------------------------------------------------------------------------------
Objetos da nota:
REPS /PWS/MZYCI029F01
REPS /PWS/MZYCI029X01
REPS /PWS/MZYCI079F01
REPS /PWS/MZYCI079X01
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI029F01
...
READ TABLE itab_zycit100 WITH KEY
ebeln = itab_zycit053_e-ebeln
ebelp = itab_zycit053_e-ebelp.
READ TABLE itab_zycit265_c WITH KEY
nrseq = itab_zycit053_e-nrseq
ebeln = itab_zycit053_e-ebeln
ebelp = itab_zycit053_e-ebelp.
READ TABLE itab_zycit019 WITH KEY
codigo = itab_zycit053_c-codigo.
CLEAR: v_pis, v_cofins, v_fator_y.
* >> Início da exclusão: FORM COLLECT_DESPESAS
IF NOT itab_zycit100-codregtripiscofi EQ '5' AND
/pws/zycit062-susp_nf NE 'S'.
IF /pws/zycie085-nrseqdi IS INITIAL.
* << Fim da exclusão
* >> Início da inclusão: FORM COLLECT_DESPESAS
IF /pws/zycie085-nrseqdi IS INITIAL OR
/pws/zycie085-dtuserc IS INITIAL.
* << Fim da inclusão
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
...
...
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ELSE.
CLEAR v_nova.
ENDIF.
IF NOT v_nova IS INITIAL.
PERFORM mp_nova.
IF /pws/zycit000-flagpiscof EQ 'X'.
* >> Início da inclusão: FORM COLLECT_DESPESAS
itab_zycit265_c-basepis_cof =
itab_zycit265_c-basepis_cof + itab_zycit100-basecofins.
* << Fim da inclusão
IF NOT '35' CA itab_zycit100-codregtripiscofi.
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.
ENDIF.
ELSE.
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 inclusão: FORM COLLECT_DESPESAS
itab_zycit265_c-basepis_cof = itab_zycit265_c-basepis_cof +
v_pis.
* << Fim da inclusão
IF /pws/zycit000-flagpiscof EQ 'X'.
IF NOT '35' CA itab_zycit100-codregtripiscofi.
itab_zycit265_c-vldp_pis = itab_zycit265_c-vldp_pis +
( itab_zycit100-advalpis / 100 ) * v_pis.
itab_zycit265_c-vldp_cofins = itab_zycit265_c-vldp_cofins +
( itab_zycit100-advalcofins / 100 ) * v_cofins.
ENDIF.
ENDIF.
ENDIF.
MODIFY itab_zycit265_c TRANSPORTING vldp_pis vldp_cofins
* >> Início da inclusão: FORM COLLECT_DESPESAS
basepis_cof
* << Fim da inclusão
WHERE nrseq = itab_zycit053_e-nrseq
AND ebeln = itab_zycit053_e-ebeln
AND ebelp = itab_zycit053_e-ebelp.
* >> Início da exclusão: FORM COLLECT_DESPESAS
ENDIF.
* << Fim da exclusão
IF itab_zycit020-baseicms = 'X' OR itab_zycit020-baseii = 'X'.
itab_zycit053_c-contabiliza = 'X'.
ELSE.
CLEAR itab_zycit053_c-contabiliza.
...
...
it_zycee005-pstdat = sy-datum.
ENDIF.
ENDFORM.
FORM itens_nfc.
DATA:
v_material LIKE j_1bnflin-maktx ,
v_tabix_exit LIKE sy-tabix ,
v_vlpis LIKE /pws/zycit100-vlpis ,
v_vlcofins LIKE /pws/zycit100-vlcofins.
DATA: itab_zycit398 LIKE /pws/zycit398 OCCURS 0 WITH HEADER LINE.
* >> Início da inclusão: FORM ITENS_NFC
DATA: v_montante1 LIKE j_1bdytax-base.
* << Fim da inclusão
IF /pws/zycbt007-waersb IS INITIAL.
SELECT SINGLE * FROM /pws/zycbt007
WHERE bukrs EQ /pws/zycie264-bukrs.
ENDIF.
SELECT * FROM /pws/zycit398
INTO TABLE itab_zycit398
WHERE bukrs EQ /pws/zycie264-bukrs
AND clnf EQ itab_zycit033-clnf
AND tpnf EQ itab_zycit033-tpnf
AND ( tributos EQ 'PIS' OR
...
...
CLEAR: itab_zycit001, itab_zycit480.
READ TABLE itab_zycit001 WITH KEY
nrseq = itab_zycit265_c2-nrseq.
IF itab_zycit001-modalidade EQ '05'.
READ TABLE itab_zycit480 WITH KEY
nrseq = itab_zycit265_c2-nrseq
ebeln = itab_zycit265_c2-ebeln
ebelp = itab_zycit265_c2-ebelp.
IF sy-subrc EQ 0.
itab_zycit003-advalicms = itab_zycit480-vl_aliqicms.
* >> Início da inclusão: FORM ITENS_NFC
ENDIF.
ENDIF.
READ TABLE itab_zycit265_c WITH KEY
nrseq = itab_zycit265_c2-nrseq
ebeln = itab_zycit265_c2-ebeln
ebelp = itab_zycit265_c2-ebelp
nrseqc = itab_zycit265_c2-nrseqc.
READ TABLE itab_zycit398 WITH KEY tributos = 'PIS'.
IF sy-subrc EQ 0.
it_zycee007-leipis = itab_zycit398-leipis.
it_zycee007-taxtyp_pis = itab_zycit398-taxtyp.
ELSE.
CLEAR it_zycee007-taxtyp_pis.
ENDIF.
IF NOT itab_zycit100-vlpis IS INITIAL.
it_zycee007-taxval_pis = itab_zycit265_c2-vldp_pis.
ELSE.
CLEAR it_zycee007-taxval_pis .
ENDIF.
IF NOT it_zycee007-taxval_pis IS INITIAL.
it_zycee007-rate_pis = itab_zycit100-advalpis.
ENDIF.
CASE itab_zycit398-tribpiscof.
WHEN 1.
it_zycee007-base_pis = itab_zycit265_c-basepis_cof.
WHEN 2.
it_zycee007-pis_excbas = itab_zycit265_c-basepis_cof.
CLEAR: it_zycee007-taxval_pis, it_zycee007-rate_pis.
WHEN 3.
it_zycee007-othbas_pis = itab_zycit265_c-basepis_cof.
ENDCASE.
READ TABLE itab_zycit398 WITH KEY tributos = 'COFINS'.
IF sy-subrc EQ 0.
it_zycee007-leicofins = itab_zycit398-leicofins.
it_zycee007-taxtyp_cof = itab_zycit398-taxtyp.
ELSE.
CLEAR it_zycee007-taxtyp_cof.
* << Fim da inclusão
ENDIF.
* >> Início da inclusão: FORM ITENS_NFC
IF NOT itab_zycit100-vlcofins IS INITIAL.
it_zycee007-taxval_cof = itab_zycit265_c2-vldp_cofins.
ELSE .
CLEAR it_zycee007-taxval_cof .
* << Fim da inclusão
ENDIF.
* >> Início da inclusão: FORM ITENS_NFC
IF NOT it_zycee007-taxval_cof IS INITIAL.
it_zycee007-rate_cof = itab_zycit100-advalcofins.
ENDIF.
CASE itab_zycit398-tribpiscof.
WHEN 1.
it_zycee007-base_cof = itab_zycit265_c-basepis_cof.
WHEN 2.
it_zycee007-cof_excbas = itab_zycit265_c-basepis_cof.
CLEAR: it_zycee007-taxval_cof, it_zycee007-rate_cof.
WHEN 3.
it_zycee007-othbas_cof = itab_zycit265_c-basepis_cof.
ENDCASE.
* << Fim da inclusão
IF itab_zycit100-icms_dif = 'X'.
itab_zycit003-basred = '100'.
ENDIF.
it_zycee007-rate = itab_zycit003-advalicms.
it_zycee007-taxtyp = itab_zycit033-taxtyp.
CLEAR it_zycee007-taxval.
CASE itab_zycit033-tribicms.
WHEN 1.
IF ( /pws/zycit062-susp_nf EQ 'S' AND
itab_zycit100-codregtriicms EQ '5' ) OR
...
...
itab_zycit100-codregtriicms EQ '5' ) OR
/pws/zycit062-flag_icms NE 'X' OR
( /pws/zycit062-bs_cheia_dif NE 'X' AND
itab_zycit100-icms_dif EQ 'X' ) OR
itab_zycit100-codregtriicms EQ '3' .
it_zycee007-c_excbas = itab_zycit265_c2-vldp_dif -
it_zycee007-othbas.
ELSE.
it_zycee007-c_excbas = ( itab_zycit265_c2-vldp_dif -
itab_zycit265_c2-vldp_dif_icms ) +
* >> Início da exclusão: FORM ITENS_NFC
( itab_zycit265_c2-vldp_dif_icms /
* << Fim da exclusão
* >> Início da inclusão: FORM ITENS_NFC
( ( itab_zycit265_c2-vldp_dif_icms +
itab_zycit265_c2-vldp_pis + itab_zycit265_c2-vldp_cofins ) /
* << Fim da inclusão
( ( 100 - itab_zycit003-advalicms ) / 100 ) )
- it_zycee007-othbas.
ENDIF.
ENDCASE.
IF itab_zycit100-codregtriicms = '3' OR
itab_zycit100-codregtriicms = '5'.
CLEAR it_zycee007-taxval.
ENDIF.
CASE itab_zycit033-tribipi.
WHEN 1.
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI029X01
...
DATA: BEGIN OF itab_zycit265_c OCCURS 0.
INCLUDE STRUCTURE /pws/zycit265.
DATA: vldp_dif_icms LIKE /pws/zycit265-vldp_dif,
processado,
* >> Início da inclusão:
basepis_cof TYPE j_1bdytax-base,
* << Fim da inclusão
END OF itab_zycit265_c.
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI079F01
...
ebeln = itab_zycit053_e-ebeln
ebelp = itab_zycit053_e-ebelp.
READ TABLE itab_zycit019 WITH KEY
codigo = itab_zycit053_c-codigo.
CLEAR: v_pis, v_cofins, v_fator_y.
v_fator_y = ( itab_zycit003-advalicms / 100 ) /
( ( 100 - itab_zycit003-advalicms -
itab_zycit443-advalpis - itab_zycit443-advalcofins )
/ 100 ).
v_pis = v_cofins = itab_zycit053_c-vlcompl * v_fator_y.
* >> Início da inclusão: FORM COLLECT_DESPESAS
itab_zycit265_c-basepis_cof = itab_zycit265_c-basepis_cof +
v_pis.
* << Fim da inclusão
IF itab_zycit020-baseicms EQ 'X' AND
/pws/zycit000-flagpiscof EQ 'X'.
itab_zycit265_c-vldp_pis = itab_zycit265_c-vldp_pis +
( itab_zycit443-advalpis / 100 ) * v_pis.
ENDIF.
IF itab_zycit020-baseicms EQ 'X' AND
/pws/zycit000-flagpiscof EQ 'X'.
itab_zycit265_c-vldp_cofins = itab_zycit265_c-vldp_cofins +
( itab_zycit443-advalcofins / 100 ) * v_cofins.
ENDIF.
MODIFY itab_zycit265_c TRANSPORTING vldp_pis vldp_cofins
* >> Início da inclusão: FORM COLLECT_DESPESAS
basepis_cof
* << Fim da inclusão
WHERE nrseq = itab_zycit053_e-nrseq
AND ebeln = itab_zycit053_e-ebeln
AND ebelp = itab_zycit053_e-ebelp.
IF itab_zycit020-baseicms = 'X' OR itab_zycit020-baseii = 'X'.
itab_zycit053_c-contabiliza = 'X'.
ELSE.
CLEAR itab_zycit053_c-contabiliza.
ENDIF.
ELSEIF sy-subrc = 0 AND
( itab_zycit053_c-codigo = 'FOB' OR
...
...
ELSE.
it_zycee005-pstdat = sy-datum.
ENDIF.
ENDFORM.
FORM itens_nfc.
DATA:
v_material LIKE j_1bnflin-maktx ,
v_tabix_exit LIKE sy-tabix ,
v_vlpis LIKE /pws/zycit443-vlpis ,
v_vlcofins LIKE /pws/zycit443-vlcofins.
* >> Início da inclusão: FORM ITENS_NFC
DATA: itab_zycit398 LIKE /pws/zycit398 OCCURS 0 WITH HEADER LINE.
* << Fim da inclusão
IF /pws/zycbt007-waersb IS INITIAL.
SELECT SINGLE * FROM /pws/zycbt007
WHERE bukrs EQ /pws/zycie264-bukrs.
ENDIF.
it_zycee007-tcode = text-003.
it_zycee007-tabela = text-004.
it_zycee007-cpochv = /pws/zycie264-nrseqc.
it_zycee007-itmtyp = itab_zycit033-tpmat.
READ TABLE itab_ekpo WITH KEY ebeln = itab_zycit265_c2-ebeln
ebelp = itab_zycit265_c2-ebelp.
...
...
it_zycee007-ownpro2 = 'X'.
ENDIF.
READ TABLE itab_zycit443 WITH KEY
nrseq = itab_zycit265_c2-nrseq
ebeln = itab_zycit265_c2-ebeln
ebelp = itab_zycit265_c2-ebelp.
READ TABLE itab_zycit003 WITH KEY
nrseq = itab_zycit265_c2-nrseq
ebeln = itab_zycit265_c2-ebeln
ebelp = itab_zycit265_c2-ebelp.
* >> Início da inclusão: FORM ITENS_NFC
SELECT * FROM /pws/zycit398
INTO TABLE itab_zycit398
WHERE bukrs EQ /pws/zycie264-bukrs
AND clnf EQ itab_zycit033-clnf
AND tpnf EQ itab_zycit033-tpnf
AND ( tributos EQ 'PIS' OR
tributos EQ 'COFINS' ).
READ TABLE itab_zycit265_c WITH KEY
nrseq = itab_zycit265_c2-nrseq
ebeln = itab_zycit265_c2-ebeln
ebelp = itab_zycit265_c2-ebelp
nrseqc = itab_zycit265_c2-nrseqc.
READ TABLE itab_zycit398 WITH KEY tributos = 'PIS'.
IF sy-subrc EQ 0.
it_zycee007-leipis = itab_zycit398-leipis.
it_zycee007-taxtyp_pis = itab_zycit398-taxtyp.
ELSE.
CLEAR it_zycee007-taxtyp_pis.
ENDIF.
IF NOT itab_zycit443-vlpis IS INITIAL.
it_zycee007-taxval_pis = itab_zycit265_c2-vldp_pis.
ELSE.
CLEAR it_zycee007-taxval_pis .
ENDIF.
IF NOT it_zycee007-taxval_pis IS INITIAL.
it_zycee007-rate_pis = itab_zycit443-advalpis.
ENDIF.
CASE itab_zycit398-tribpiscof.
WHEN 1.
it_zycee007-base_pis = itab_zycit265_c-basepis_cof.
WHEN 2.
it_zycee007-pis_excbas = itab_zycit265_c-basepis_cof.
CLEAR: it_zycee007-taxval_pis, it_zycee007-rate_pis.
WHEN 3.
it_zycee007-othbas_pis = itab_zycit265_c-basepis_cof.
ENDCASE.
READ TABLE itab_zycit398 WITH KEY tributos = 'COFINS'.
IF sy-subrc EQ 0.
it_zycee007-leicofins = itab_zycit398-leicofins.
it_zycee007-taxtyp_cof = itab_zycit398-taxtyp.
ELSE.
CLEAR it_zycee007-taxtyp_cof.
ENDIF.
IF NOT itab_zycit443-vlcofins IS INITIAL.
it_zycee007-taxval_cof = itab_zycit265_c2-vldp_cofins.
ELSE .
CLEAR it_zycee007-taxval_cof .
ENDIF.
IF NOT it_zycee007-taxval_cof IS INITIAL.
it_zycee007-rate_cof = itab_zycit443-advalcofins.
ENDIF.
CASE itab_zycit398-tribpiscof.
WHEN 1.
it_zycee007-base_cof = itab_zycit265_c-basepis_cof.
WHEN 2.
it_zycee007-cof_excbas = itab_zycit265_c-basepis_cof.
CLEAR: it_zycee007-taxval_cof, it_zycee007-rate_cof.
WHEN 3.
it_zycee007-othbas_cof = itab_zycit265_c-basepis_cof.
ENDCASE.
* << Fim da inclusão
it_zycee007-rate = itab_zycit003-advalicms.
it_zycee007-taxtyp = itab_zycit033-taxtyp.
CLEAR it_zycee007-taxval.
CASE itab_zycit033-tribicms.
WHEN 1.
IF /pws/zycit062-flag_icms = 'X'.
IF itab_zycit443-icms_dif NE 'X'.
it_zycee007-taxval = ( itab_zycit265_c2-vldp_dif_icms +
itab_zycit265_c2-vldp_pis + itab_zycit265_c2-vldp_cofins )
/ ( ( 100 - itab_zycit003-advalicms ) / 100 ) .
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI079X01
...
data: begin of itab_zycit265_c occurs 0.
include structure /pws/zycit265.
data: vldp_dif_icms like /pws/zycit265-vldp_dif,
processado,
* >> Início da inclusão:
basepis_cof TYPE j_1bdytax-base,
* << Fim da inclusão
end of itab_zycit265_c.
...