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 |
---|---|---|
PARAMIXB | Array 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.
Visão Geral
Import HTML Content
Conteúdo das Ferramentas
Tarefas