Para a utilização de alguns recursos do Guardião XML, é necessária a aplicação de alguns pontos de entrada.
Necessário analisar o seu projeto de fontes e adequar os pontos de entrada aos já existentes, tomando o cuidado de não sobreescrever as informações.
#Include 'Protheus.ch'
User Function MT100TOK()
Local aArea := GetArea()
Local lRet := .T.
if ISINCALLSTACK("U_FXREPDFE")
lRet := U_FXDFEAUDIT()
endif
RestArea(aArea)
Return lRet
#Include 'Protheus.ch'
User Function MT100AGR()
if (FunName() == 'FXREPDFE' .or. FunName() == 'MATA103') .and. upper(alltrim(cEspecie)) == 'SPED' .and. (INCLUI .or. ALTERA) .and. CFORMUL == 'N'
cCGCEmit := FBUSCACPO("SA2", 1 , xfilial("SA2") + SF1->F1_FORNECE + SF1->F1_LOJA, "A2_CGC")
cIEEmit := FBUSCACPO("SA2", 1 , xfilial("SA2") + SF1->F1_FORNECE + SF1->F1_LOJA, "A2_INSCR")
cNomeEmit := FBUSCACPO("SA2", 1 , xfilial("SA2") + SF1->F1_FORNECE + SF1->F1_LOJA, "A2_NOME")
U_FXMANIFE(1,F1_CHVNFE,cSerie,cNFiscal,dDEmissao,dDEmissao, SF1->F1_VALBRUT, cNomeEmit,cCGCEmit,cIEEmit, .F.,"210200","")
endif
Return
#Include 'Protheus.ch'
User Function M103FILB()
Local cFiltro := ""
if IsInCallStack("U_FXREPDFE")
cFiltro := U_FX103FTR()
endif
Return cFiltro
#Include 'Protheus.ch'
User Function MT140FIL()
Local cFiltro := ""
if IsInCallStack("U_FXREPDFE")
cFiltro := U_FX140FIL()
endif
Return cFiltro
#Include 'Protheus.ch'
User Function MT120FIL()
Local cRet := ""
if IsInCallStack("U_FXREPDFE")
cRet := U_FX120FIL()
endif
Return cRet
#Include 'Protheus.ch'
User Function A103CLAS()
if ISINCALLSTACK("U_FXREPDFE")
U_FXSETTES()
endif
Return
#Include 'Protheus.ch'
User Function MTCOLSE2()
Local aColsE2 := PARAMIXB[1] //aCols de duplicatas
Local nOpc := PARAMIXB[2] //0-Tela de visualização / 1-Inclusão ou Classificação
Private lDtVenc := SuperGetMv("FXT_DTVENC",.F.,.T.) //mostra campo para informar a data de vencimento para os ctes em lote
if (funname() == 'FXREPDFE' .or. funname() == 'MATA103') .and. ALLTRIM(CESPECIE)='SPED' .and. (inclui .or. altera) .and. nOpc == 1 .and. cTipo != "D" //.and. ZX1->ZX1_PAGATU != "S"
aColsE2 := U_FXPARSE2(aColsE2)
endif
if IsInCallStack("ProcCTeLT") .AND. Type("_dCteDtLt") == "D" .AND. len(aColsE2) == 1 .and. !Empty(_dCteDtLt) .and. lDtVenc
aColsE2[1,2] := _dCteDtLt
endif
//Cte sobre compra modo automatico
if !(IsInCallStack("ProcCTeLT")) .and. isincallStack("PROCCTE") .and. !(isincallStack("MT116TEL")) .AND. Type("_dCteDtLt") == "D" .AND. len(aColsE2) == 1 .and. !Empty(_dCteDtLt) .and. lDtVenc
aColsE2[1,2] := _dCteDtLt
endif
Return aColsE2
#Include 'Protheus.ch'
User Function MA103BUT()
Local aButtons := {}
aADD(aButtons, {'GXML - Reseta Duplicatas', {|| U_FXRESDUP(cNfiscal,cSerie,ca100for,cLoja) }, 'GXML - Reseta Duplicatas'})
Return (aButtons)
#Include 'Protheus.ch'
User Function MT116SD1()
if FunName() == 'FXREPDFE'
U_FX116()
endif
Return Nil
#Include 'Protheus.ch'
User Function MT103FIN()
//F4_AGRPEDG - Agrega pedagio
//1= Agrega na base do ICMS
//2= Agrega somente no total da NF
//3= Nao considera
//4= Agrega no PIS/COFINS
//5= Agrega no PIS/COFINS e ICMS
Local lRet := .T.
Local aLocCols := PARAMIXB[2]
Local lLocRet := PARAMIXB[3]
Local nSomaParc := 0
Local nSomaTot := 0
Local nSomaICM := 0
Local nX := 0
Local lDedPedgV := SuperGetMv("FXT_DEDPGV",.F.,.F.) //Deduz pedágios nos CTes de vendas
if IsInCallStack("U_FXREPDFE") .and. IsInCallStack("MATA116")
cAgrPedg := FBUSCACPO("SF4", 1 , xfilial("SF4") + aParametros[12], "F4_AGRPEDG")
nPosTot := aScan(aHeader,{|x| alltrim(x[2]) == "D1_TOTAL"})
nPosICM := aScan(aHeader,{|x| alltrim(x[2]) == "D1_BASEICM"})
if aNfeDanfe[15] > 0 .and. cAgrPedg $ "1-2-4-5"
//SOMA PARCELAS
for nX := 1 to len(aLocCols)
nSomaParc += aLocCols[nX,3]
next
//SOMA TOTAL DO FRETE
for nX := 1 to len(aCols)
nSomaTot += aCols[nX,nPosTot]
next
//SOMA BASE ICMS
for nX := 1 to len(aCols)
nSomaICM += aCols[nX,nPosICM]
next
if nSomaParc <= nSomaTot
Processa({|| AtuPedg()}, "Atualizando pedágio...")
Processa({|| AtuPedg()}, "Atualizando duplicatas...")
sleep(1000)
msginfo("As duplicatas foram atualizadas por favor verifique os valores.")
Eval(bRefresh)
Eval(bGdRefresh)
lRet := .F.
endif
endif
elseif IsInCallStack("U_FXREPDFE") .and. lDedPedgV
nPosTes := aScan(aHeader,{|x| alltrim(x[2]) == "D1_TES"})
cAgrPedg := FBUSCACPO("SF4", 1 , xfilial("SF4") + aCols[1,nPosTes], "F4_AGRPEDG")
nPosTot := aScan(aHeader,{|x| alltrim(x[2]) == "D1_TOTAL"})
nPosICM := aScan(aHeader,{|x| alltrim(x[2]) == "D1_BASEICM"})
if aNfeDanfe[15] > 0 .and. cAgrPedg $ "1-2-4-5"
//SOMA PARCELAS
for nX := 1 to len(aLocCols)
nSomaParc += aLocCols[nX,3]
next
//SOMA TOTAL DO FRETE
for nX := 1 to len(aCols)
nSomaTot += aCols[nX,nPosTot]
next
//SOMA BASE ICMS
for nX := 1 to len(aCols)
nSomaICM += aCols[nX,nPosICM]
next
if nSomaParc <= nSomaTot
Processa({|| AtuPedg()}, "Atualizando pedágio...")
Processa({|| AtuPedg()}, "Atualizando duplicatas...")
sleep(1000)
msginfo("As duplicatas foram atualizadas por favor verifique os valores.")
Eval(bRefresh)
Eval(bGdRefresh)
lRet := .F.
endif
endif
endif
RETURN lRet
static function AtuPedg()
MaFisAlt("NF_VALPEDG",aNfeDanfe[15])
MaFisToCols(aHeader,aCols,,"MT100")
Eval(bRefresh)
Eval(bGdRefresh)
sleep(2000)
return
#Include 'Protheus.ch'
User Function MT116FTR()
Local cRet := ""
if FunName() == 'FXREPDFE'
cRet := U_FX116FTR()
endif
Return cRet
#Include 'Protheus.ch'
User Function MT116TEL()
if FunName() == 'FXREPDFE'
lRet := U_FX116TEL()
endif
Return lRet
#Include 'Protheus.ch'
User Function MT116TOK()
Local aArea := GetArea()
Local lRet := .T.
if FunName() == 'FXREPDFE' .or. FunName() == 'MATA116'
lRet := U_FXAUDITCTE()
endif
RestArea(aArea)
Return lRet
User Function FX_PEP140()
Local nConv := 0
Local tpConv := ""
Local cSegum := ""
cSegum := FBUSCACPO("SB1", 1 , xfilial("SB1") + aItens[Val(SD1->D1_ITEM)][_nPosCod][2], "B1_SEGUM")
if _nPosVTot > 0
if aScan(aItens[Val(SD1->D1_ITEM)],{|x| x[01]=="D1_QTSEGUM"}) > 0
SD1->D1_PRUNISE := aItens[Val(SD1->D1_ITEM)][_nPosVTot][2]/aItens[Val(SD1->D1_ITEM)][_nPosSegUn][2]
endif
endif
if !empty(cSegum)
nConv := FBUSCACPO("SB1", 1 , xfilial("SB1") + aItens[Val(SD1->D1_ITEM)][_nPosCod][2], "B1_CONV")
tpConv := FBUSCACPO("SB1", 1 , xfilial("SB1") + aItens[Val(SD1->D1_ITEM)][_nPosCod][2], "B1_TIPCONV")
if tpConv == "D"
SD1->D1_QTSEGUM := SD1->D1_QUANT / nConv
else
SD1->D1_QTSEGUM := SD1->D1_QUANT * nConv
endif
endif
return
User Function FX_POP140()
Local nX:=0
aPerg := {}
aParImp := {}
if cFinNFE != "4"
return
endif
cMot := Space(TamSX3('D1_MOTRET')[1])
aADD(aPerg,{1,"Motivo Retorno" ,cMot ,"","Vazio().or.ExistCpo('DHI')","DHI" ,,80,.T.})
if Parambox(aPerg, "Informa Campos", @aParImp,,,,,,,,.T.)
dbselectarea("SD1")
SD1->(dbsetorder(1)) //D1_FILIAL+D1_DOC+D1_SERIE+D1_FORNECE+D1_LOJA+D1_COD+D1_ITEM
_nPosCod := aScan(aItens,{|x| alltrim(x[1][1]) == "D1_COD"})
for nX:=1 to len(aItens)
if SD1->(MsSeek(xFilial("SD1")+ZX1->ZX1_DOC+ZX1->ZX1_SERIE+ZX1->ZX1_CLIFOR+ZX1->ZX1_LOJA+aItens[nX,_nPosCod][2]+STRZERO(nX,4)))
RecLock("SD1",.F.)
SD1->D1_MOTRET:= alltrim(aParImp[1])
SD1->(MsUnLock())
endif
next
endif
return
User Function FX_PEUM()
Local cUmPrd := Alltrim(PARAMIXB[1])
Local cSegUmPrd := Alltrim(PARAMIXB[2])
Local cUmXml := Alltrim(PARAMIXB[3])
Local cUmRet := ""
If UPPER(cUmXml) == "M"
If cUmPrd == "MT"
cUmRet := "1"
ElseIf cSegUmPrd == "MT"
cUmRet := "2"
Endif
elseIf UPPER(cUmXml) == "ML"
If cUmPrd == "MI"
cUmRet := "1"
ElseIf cSegUmPrd == "MI"
cUmRet := "2"
Endif
Endif
Return cUmRet
user Function FX_GXMLPC()
Local _lPedFound := .T.
Local cFil := PARAMIXB[1]
Local cPed := PARAMIXB[2]
Local cIt := PARAMIXB[3]
DbSelectArea("SC7")
SC7->(DbOrderNickName("PEDCLI"))
if SC7->(MsSeek(cFil+cPed+cIt))
if !(SC7->C7_QUANT > (SC7->C7_QUJE+SC7->C7_QTDACLA) .and. empty(SC7->C7_RESIDUO) .AND. SC7->C7_CONAPRO != "B" .OR. (SC7->C7_TIPO==2 .AND. !empty(SC7->C7_APROV)) .AND. empty(SC7->C7_ENCER))
_lPedFound := .F.
endif
else
_lPedFound := .F.
endif
return _lPedFound
user Function FX_GPCNUM()
Local _lPedFound := .T.
Local cFil := PARAMIXB[1]
Local cPed := PARAMIXB[2]
Local cIt := PARAMIXB[3]
Local aPedCli := {}
DbSelectArea("SC7")
SC7->(DbOrderNickName("_XPED"))
if SC7->(MsSeek(cFil+Left(cPed+Space(Len(SC7->C7_XPED)),Len(SC7->C7_XPED))+STRZERO(val(cIt),4)))
aadd(aPedCli,SC7->C7_FILIAL)
aadd(aPedCli,SC7->C7_NUM)
aadd(aPedCli,SC7->C7_ITEM)
endif
return aPedCli
user function FXPEACTE()
Local nPosCC := aScan(aItens[1],{|x| Alltrim(x[01]) == "D1_CC"}) // como nos ctes em lote vem somente uma posição no array coloco fixo 1
Local cUnNeg := ""
Local cCC := ""
cCgc := AllTrim(IIf(Type("oDestCT:_CPF")=="U",oDestCT:_CNPJ:TEXT,oDestCT:_CPF:TEXT))
cUnNeg := FBUSCACPO("SA1", 3 , xfilial("SA1") + cCgc, "A1_XITEMCT")
if (IsInCallStack("ProcCTeLT"))
if alltrim(cUnNeg) == "101"
cCC := "302002"
elseif alltrim(cUnNeg) == "102"
cCC := "302010"
elseif alltrim(cUnNeg) == "103"
cCC := "302017"
elseif alltrim(cUnNeg) == "104"
cCC := "302011"
elseif alltrim(cUnNeg) == "105"
cCC := "302022"
else
cCC := ""
endif
if nPosCC > 0
aItens[1,nPosCC][2] := cCC
endif
endif
return