Árvore de páginas

01. DADOS GERAIS



Linha de Produto:Microsiga Protheus®
Segmento:Serviços
Módulo:Fiscal


02. DESCRIÇÃO

Permite tratar origem e processamento das informações relativas ao registro Tipo 05 - Linha de registro da tabela de Documentos Fiscais Recebidos do arquivo magnético DIEF-RJ. A fonte original das informações tratadas no registro tipo 05 é a tabela SE2, recomenda-se então apenas utilizar este ponto de entrada clientes que por algum motivo não gravam dados nessa tabela.

Parâmetros do ponto de entrada:

DIEFRJPG( <dDataIni>, <dDataFin> ) 

Nome

Tipo

Descrição

PARAMIXBArray of Record

[1] = Código do Produto

[2] = Alíquota ICMS (com base na tabela SB1)

Retorno:

Nome

Tipo

Descrição


Não se aplica

Não se aplica

04. EXEMPLO DE UTILIZAÇÃO

DIEFRJPG.PRW
#Include "Protheus.Ch"

User Function DIEFRJPG()         
    Local dDataIni 		:= paramixb[1]    
    Local dDataFin 		:= paramixb[2]    	
    Local cAliasSE2		:= "SE2"	
    Local cISSRet		:= ""	
    Local cAutoriza		:= ""	
    Local cDestaque		:= ""
    Local cMunic		:= GetNewPar("MV_CIDADE","")	
    Local cIsento		:= ""         	
    Local cDRJSIT		:= GetNewPar("MV_DRJSIT","")	
    Local cDRJSUB	 	:= GetNewPar("MV_DRJSUB","")	
    Local cMun			:= ""	
    Local cUF			:= ""	
    Local cTipo			:= ""	
    Local cSituacao 	:= ""	
    Local cMotivo		:= ""	
    Local cDocSub		:= ""	
    Local cPrestacao 	:= ""		
    Local lQuery		:= .F.	
    Local lIssRet		:= GetNewPar("MV_F3RECIS",.F.)	
    Local lIssMat		:= SF3->(FieldPos("F3_ISSMAT")) > 0	
    Local lCNAE			:= SF3->(FieldPos("F3_CNAE")) > 0	
    Local lPagamento	:= .F.	
    Local lDRJSIT		:= !Empty(cDRJSIT) .And. SF3->(FieldPos(cDRJSIT)) > 0
    Local lDRJSUB 		:= !Empty(cDRJSUB) .And. SF3->(FieldPos(cDRJSUB)) > 0
    Local nId			:= 0	
    Local nDeducao		:= 0              	
    Local nTributavel	:= 0	
    Local nRetido		:= 0			

    #IFDEF TOP			
        Local aCamposSF3	:= {}		
        Local aStruSF3		:= {}		
        Local aCamposSE2	:= {}		
        Local aStruSE2		:= {}				
        Local cCampos		:= ""		
        Local cCodISS		:= ""				
        Local nX			:= 0		
    #ELSE			
        Local cArqInd		:= ""		
        Local cChave		:= ""		
        Local cFiltro		:= ""        			
    #ENDIF

    //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
    //³Processamento dos documentos Fiscais de Entrada                         ³
    //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
	
	dbSelectArea("SE2")	
	dbSetOrder(1)		
	#IFDEF TOP	  	    
        If TcSrvType()<>"AS/400"   	    	   		
            lQuery 		:= .T.			
            cAliasSE2	:= GetNextAlias()   	    			
            BeginSql Alias cAliasSE2				
                COLUMN E2_BAIXA AS DATE				
                SELECT 
                    SE2.E2_BAIXA, 
                    SE2.E2_FORNECE, 
                    SE2.E2_LOJA, 
                    SE2.E2_NUM,
                    SE2.E2_PREFIXO									
                FROM %table:SE2% SE2										
                WHERE 
                    SE2.E2_FILIAL = %xFilial:SE2% AND 				
                    SE2.E2_BAIXA >= %Exp:dDataIni% AND				
                    SE2.E2_BAIXA <= %Exp:dDataFin% AND 				
                    SE2.E2_TIPO = "NF " AND				
                    SE2.%NotDel%				
                ORDER BY SE2.E2_FORNECE,SE2.E2_LOJA,SE2.E2_NUM,SE2.E2_PREFIXO
            EndSql	    			
            dbSelectArea(cAliasSE2)		
        Else		
	#ENDIF

	cArqInd	:=	CriaTrab(NIL,.F.)			
	cChave	:=	"E2_FORNECE,E2_LOJA,E2_NUM,E2_PREFIXO"			
	cFiltro :=  "E2_FILIAL == '" + xFilial("SE2") + "' .AND. E2_TIPO == 'NF ' .AND.			cFiltro	+=	"DtoS(E2_BAIXA) >= '" + DtoS(dDataIni) + "' .And. DtoS(E2_BAIXA) <= '" + DtoS(dDataFin) + "'"
	IndRegua(cAliasSE2,cArqInd,cChave,,cFiltro,"Selecionando Registros")

	#IFNDEF TOP				
	    DbSetIndex(cArqInd+OrdBagExt())			
	#ENDIF

	(cAliasSE2)->(dbGotop())		
	
    #IFDEF TOP		
	    Endif    	
	#ENDIF		
	
	SA2->(dbSetOrder(1))		
	dbSelectArea(cAliasSE2)	
	ProcRegua(LastRec())	
	(cAliasSE2)->(DbGoTop())		
	
    While (cAliasSE2)->(!Eof())
	    SF3->(DbSetOrder(4))	
        SF3->(DbSeek(xFilial("SF3")+(cAliasSE2)->E2_FORNECE+(cAliasSE2)->E2_LOJA+(cAliasSE2)->E2_NUM+(cAliasSE2)->E2_PREFIXO))			
	
        If (SF3->F3_CLIEFOR+SF3->F3_LOJA+SF3->F3_NFISCAL+SF3->F3_SERIE)==(cAliasSE2)->E2_FORNECE+(cAliasSE2)->E2_LOJA+(cAliasSE2)->E2_NUM+(cAliasSE2)->E2_PREFIXO;
            .And. (SF3->F3_TIPO == "S" .Or. (SF3->F3_TIPO == "L" .And. !EMPTY(SF3->F3_CODISS))) .And. SubStr(SF3->F3_CFO,1,1) $ "123"				
	        IncProc()
            //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿			
            //³Verifica o fornecedor do movimento³
            //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ			
            cCNPJ		:= ""			
            If !(SA2->(dbSeek(xFilial("SA2")+SF3->F3_CLIEFOR+SF3->F3_LOJA)))				
                SF3->(dbSkip())				
                Loop			
            Endif 			
	        cCNPJ		:= SA2->A2_CGC			
	        cISSRet 	:= SA2->A2_RECISS			
	
            If Empty(cISSRet)				
	            cISSRet := "1"			
	        Endif			
            
            cMun		:= SA2->A2_MUN			
            cUF			:= SA2->A2_EST			
            cTipo		:= RetPessoa(SA2->A2_CGC)			
            cTpNota		:= "E"						
            
            If lIssRet       				
                cISSRet := SF3->F3_RECISS			
            Endif

            //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿			
            //³Verifica se o movimento e isento de ISS³			
            //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ			
            If SF3->F3_ISENICM > 0				
                cIsento := "S"			
            Else				
                cIsento	:= "N"			
            Endif						
            
            //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿			
            //³Destaque do ISS³			
            //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ			
            If cISSRet $ "1S" 				
                cDestaque := "2"			
            Else				
                cDestaque := "1"			
            Endif

            //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿			
            //³Verifica se o imposto sera pago fora do municipio³			
            //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ	
            If !Empty(SF3->F3_ISSST) .And. SF3->F3_ISSST == "2" .And. !(cMunic$cMun)				
                lPagamento := .T.			
            Else				
                lPagamento := .F.			
            Endif

            //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿			
            //³Verifica se existem deducoes legais³			
            //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
            nDeducao := 0			
            nDeducao += SF3->F3_ISSSUB			
            If lIssMat                            				
                nDeducao += SF3->F3_ISSMAT			
            Endif

            //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿			
            //³Valor tributado no movimento³			
            //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ			
            If Year(dDataIni) > 2006				
                nTributavel := 0			
            Else
                If cDestaque == "1"					
                    nTributavel := SF3->F3_VALCONT				
                Else 					
                    nTributavel := 0				
                Endif			
	        Endif						
	
            //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿			
            //³Cabecalho do documento³			
            //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ			
            If !RJ2->(dbSeek(DTOS(SF3->F3_ENTRADA)+SF3->F3_NFISCAL+SF3->F3_ESPECIE+SF3->F3_SERIE+cTpNota))									
                RecLock("RJ2",.T.)								
                nId += 1								
                RJ2->ID_CAB		:= StrZero(nId,10)				
                RJ2->TIPO		:= cTpNota				
                RJ2->EMISSAO	:= SF3->F3_ENTRADA				
                RJ2->ESPECIE	:= RetMod(SF3->F3_ESPECIE)				
                RJ2->ESPECF3	:= SF3->F3_ESPECIE				
                RJ2->SERIE		:= SF3->F3_SERIE				
                RJ2->DOCTO		:= SF3->F3_NFISCAL				
                RJ2->DOCOR		:= SF3->F3_DOCOR				
                RJ2->DTPAGTO    := (cAliasSE2)->E2_BAIXA    								
                
                If !Empty(SF3->F3_DOCOR)					
                    RJ2->TIPOTOM := "0"				
                Else					
                    If cUF == "EX"						
                        RJ2->TIPOTOM := "3"					
                    Else						
                        If cTipo == "J"							
                            RJ2->TIPOTOM := "2"						
                        Else							
                            RJ2->TIPOTOM :="1"						
                        Endif					
                    Endif				
                Endif								
        
                If !Empty(SF3->F3_DOCOR)					
                    RJ2->CNPJ	:= "0"				
                Else					
                    RJ2->CNPJ	:= cCNPJ				
                Endif								
        
                RJ2->IDENTAUT	:= cAutoriza								
        
                If Year(dDataIni) > 2006					
                    RJ2->DESTAQUE	:= "2"        				
                Else					
                    RJ2->DESTAQUE	:= cDestaque
                Endif     								
                
                cPrestacao := "1"								
	
                If !Empty(SF3->F3_DTCANC)					
                    RJ2->DTCANC 	:= SF3->F3_DTCANC										
                    If lDRJSIT						
                        cSituacao	:= SF3->&(cDRJSIT)					
                    Else						
                        cSituacao	:= "4"
                    Endif										
                    
                    If lDRJSUB        						
                        cDocSub		:= SF3->&(cDRJSUB)
                    Else                   						
                        cDocSub		:= "0"
                    Endif										
                    
                    //Preenchimento padrao quando nao ha informacao no SF3					
                    If Empty(cSituacao)						
                        cSituacao := "4"
                    Endif
                    
                    If Empty(cDocSub)						
                        cDocSub := "0"					
                    Endif              										
                    
                    cMotivo	:= SF3->F3_OBSERV										
        
                    Do Case						
                        Case cSituacao == "1"							
                            cMotivo		:= ""							
                            cDocSub		:= "0"							
                            cSituacao	:= "2"							
                            cPrestacao	:= "2"						
                        Case cSituacao == "2"							
                            cMotivo		:= ""							
                            cDocSub		:= "0"							
                            cPrestacao	:= "2"						
                        Case cSituacao == "3"  							
                            cDocSub		:= "0"							
                            cPrestacao	:= "2"						
                        Case cSituacao == "4"
                    EndCase

                    RJ2->SITUACAO 	:= cSituacao 					
                    RJ2->DOCSUB		:= cDocSub
                    RJ2->MOTIVO		:= cMotivo									
                Endif				       				
                
                RJ2->PRESTSERV	:= cPrestacao								
                MsUnLock()							
            Endif						
	
            //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿			
            //³Aliquotas do movimento³			
            //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ			
            RecLock("RJ3",.T.)						
            RJ3->ID_CAB := StrZero(nId,10)                                     					
        
            If lPagamento				
                RJ3->ALIQ	:= "08"			
            Else 				
                RJ3->ALIQ	:= RetCAliq(SF3->F3_ALIQICM,cIsento)
            Endif

            If lCNAE				
                RJ3->ATIVID		:= SF3->F3_CNAE			
            Else  				
                RJ3->ATIVID		:= "0"
            Endif                    						
	
            RJ3->VALSERV	:= SF3->F3_VALCONT			
            RJ3->VALDED		:= nDeducao

            If lPagamento .And. cTpNota == "S"				
                nRetido	:= 0			
            Else				
                If cISSRet $ "1S"					
                    nRetido	:= 0				
                Else					
                    nRetido	:= SF3->F3_VALICM				
                Endif                  			
            Endif

            RJ3->VALRET := nRetido						
            MsUnLock()

            //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿			
            //³Totais do documento³			
            //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ			
            If RJ4->(dbSeek(StrZero(nId,10)))				
                RecLock("RJ4",.F.)             				
                RJ4->TOTTRIB 	+= nTributavel				
                RJ4->SERVICO	+= SF3->F3_VALCONT				
                RJ4->RETIDO		+= nRetido                				
                RJ4->TOTDOC		+= SF3->F3_VALCONT			
            Else                  				
                RecLock("RJ4",.T.)				
                RJ4->ID_CAB 	:= StrZero(nId,10) 				
                RJ4->TOTTRIB 	:= nTributavel				
                RJ4->TOTDOC		:= SF3->F3_VALCONT				
                RJ4->SERVICO	:= SF3->F3_VALCONT				
                RJ4->RETIDO		:= nRetido			
            Endif					
	        MsUnLock()				
	    Endif			
	    (cAliasSE2)->(dbSkip())		
	Enddo          		
	
	If !lQuery		
	    RetIndex("SE2")			
	    dbClearFilter()			
	    Ferase(cArqInd+OrdBagExt())	
	Else		
	    dbSelectArea(cAliasSE2)		
	    dbCloseArea()	
	Endif 	
	
    msgAlert("Passou pelo PE DIEFRJPG")
Return


05. DEMAIS INFORMAÇÕES

Não se aplica.