Árvore de páginas

01. DADOS GERAIS

Linha de Produto:

Linha Protheus

Segmento:

Backoffice

Módulo:

TOTVS Backoffice (Linha Protheus) - Financeiro (SIGAFIN)

Função:FINA989 - Extrator Financeiro
Requisito/Story/Issue:

Não Há

02. DESCRIÇÃO

O ponto de entrada F989T158 será acionado durante o processamento do Extrator Fiscal (rotina EXTFISXTAF), especificamente quando coletar os dados dos impostos com o fato gerador no pagamento, permitindo que sejam ajustados esses dados antes da integração com o TAF.

Importante

A execução deste ponto de entrada ocorrerá a cada baixa sofrida pelo título selecionado.

Os dados serão disponibilizados para alteração através de um array e seus dados terão impacto na integração dos registros T158AA (Naturezas de rendimento do pagamento), T158AB (Tributos do Pagamento) e T158AC (Suspensão de exigibilidade do tributo do pagamento).

Obs: Consulte o layout único de integração com o TAF para conhecer melhor a estrutura.

03. PARÂMETROS

Nome

Tipo

Descrição

cIdFK7

Caracter

Identificador do título a pagar na tabela FK7 (FK7_IDDOC)

cIdFK2

Caracter

Identificador da baixa do título a pagar na tabela FK2 (FK2_IDFK2)

aDados

Array

Dados dos registros T158AA, T158AB e T158AC

Obs: Quando o pagamento for através de um título de adiantamento (E2_TIPO=PA), não há um registro na FK2 ref. a essa movimentação, então para esse caso a variável "cIdFK2" terá o mesmo conteúdo da "cIdFK7".

04. RETORNO

Nome

Tipo

Descrição

aDados

Array

Dados a serem considerados nos registros T158AA, T158AB e T158AC

05. EXEMPLO DE UTILIZAÇÃO

F989CRQY
#INCLUDE "PROTHEUS.CH"
  
User Function F989T158()

    Local cIdFK7 := ParamIxb[1] //Identificador do título a pagar na tabela FK7 (FK7_IDDOC)
    Local cIdFK2 := ParamIxb[2] //Identificador da baixa do título a pagar na tabela FK2 (FK2_IDFK2)
    Local aDados := aClone(ParamIxb[3]) //Dados coletados para gerar os registros T158AA, T158AB e T158AC
    Local nX := 0
    Local lPermAgreg := .F.
    Local aAreaFK7	 :=	FK7->( getArea() )
    Local aAreaSE2	 :=	SE2->( getArea() )
    Local aAreaSED	 :=	SED->( getArea() )

    /*--------------------------------------------------------------------------------------------|
    | Composição do array aDados:	 															  |
    |                                                                                             | 
    | aDados[nX][1]  - Codigo do tributo no layout TAF: 										  |
	|                           10=PIS;								                              |
	|                           11=Cofins;							                              |
	|                           12=IR emissão;					 	                              |
	|                           13=INSS;								                          |
	|                           18=CSLL;								                          |	
	|                           28=IR baixa 							                          |
	|                           29=CSRF(PIS/COFINS/CSLL agregados)                                |
	|                           30=COSIRF(IR/PIS/COFINS/CSLL agregados)                           |
    | aDados[nX][2]  - Código da natureza de rendimento conforme tabela 01 da EFD-Reinf		  |
    | aDados[nX][3]  - Rendimento bruto														  |
    | aDados[nX][4]  - Rendimento tributavel ou isento										  |
    | aDados[nX][5]  - Valor do tributo retido ou isento 										  |
    | aDados[nX][6]  - Identificação do processo judicial/adminXstrativo ou ato concessório     |
    | aDados[nX][7]  - Origem do processo(0-SEFAZ;1-Just.Fed.;2-Just.Est.;3–Secret.RFB;9–Outros)|
    | aDados[nX][8]  - Código do Indicativo da Suspensão										  |	
    | aDados[nX][09] - Valor da retenção que deixou de ser efetuada por um processo adm/judicial|
    | aDados[nX][10] - Valor da base de cálculo com exigibilidade suspensa ou isenção			  |
    ----------------------------------------------------------------------------------------------*/		
    
    DBSelectArea("FK7")
    FK7->(DbSetOrder(1))
    FK7->(MsSeek(xFilial("FK7") + cIdFK7))

    DBSelectArea("SE2") 
    SE2->(DbSetOrder(1))
    SE2->(MsSeek(RTrim(FinFK7Key(FK7->FK7_CHAVE,''))))

    DBSelectArea("SED") 
    SED->(DbSetOrder(1))
    SED->(MsSeek(xFilial("SED")+SE2->E2_NATUREZ))

    If SED->ED_PERCCSL == 5.85  //Verifica se a natureza (SED) foi configurada com a aliquota do IR/PCC somadas em um só campo
        If SE2->E2_CSLL > 0 .And. SE2->E2_PIS+SE2->E2_COFINS+SE2->E2_IRRF == 0 //Verifica se o título calculou só o CSLL conforme a natureza
            For nX := 1 To Len(aDados)
                DBSelectArea("FKX") 
                FKX->(DbSetOrder(1))
                FKX->(MsSeek(xFilial("FKX")+aDados[nX][2]))
                lPermAgreg := FKX->FKX_TRIBUT $ "2|8" //Verifica se a Nat. Rendimento permite agregação de impostos

                If aDados[nX][1] == "18" .And. lPermAgreg
                    aDados[nX][1] := "30" //Considerar o tributo como COSIRF (IRRF/PIS/COFINS/CSLL agregados)
                EndIf
            Next nX
        EndIf
    EndIf

    RestArea( aAreaFK7 )
    RestArea( aAreaSE2 )
    RestArea( aAreaSED )

Return aDados