#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