Passar para o conteúdo principal
Pontos de Entrada Disponíveis

Veja as configurações dos pontos de entrada disponíveis do Monitor DFe

F
Escrito por Felipe Machado de Oliveira
Atualizado há mais de 4 meses

A seguir você verá as configurações de pontos de entrada do Monitor DFe Protheus.

Para encontrar de forma mais fácil o que você procura, acesse as configurações do que procura direto pelos links abaixo:

GT1FORNEC

Descrição

Utilizado para filtrar o browse de NFe e CTe, informando o CNPJ dos fornecedores os quais são visíveis para o usuário.

Parâmetros

Nenhum

Retorno

Caractere, Lista de CNPJs separados por vírgula.

Exemplo

User Function GT1FORNEC() 
Local cCodUser := RetCodUsr()
Local cFornDispo := ""

Do Case
Case cCodUser == "000000" // Administrador
cFornDispo := ""
Case cCodUser == "000001" // Usuário 1
cFornDispo := "64260896000392,72285216000151,82161944000105"

Case cCodUser == "000002" // Usuário 2
cFornDispo := "64260896000392,72285216000151,82161944000105"
EndCase

Return cFornDispo

GT1CODPRF

Descrição

Utilizado para formatar o código de produto do fornecedor com alguma regra específica, impactando na relação produto x fornecedor (SA5).

Parâmetros

PARAMIXB[1], Caractere, Código de produto do fornecedor.

PARAMIXB[2], Caractere, CNPJ/CPF do fornecedor.

Retorno

Caractere, Código de produto formatado do fornecedor.

Exemplo

User Function GT1CodPRF()
Local cCodXML := PARAMIXB[1]
Local cCGCEmi := PARAMIXB[2]

If cCGCEmi == "99999999999999"
cCodPRF := "XXXXXX"
Else
If Len(cCodXML) < 6
cCodPRF := REPLICATE("0",6-Len(cCodXML) ) + cCodXML
ElseIf Len(cCodXML) > 6
cCodPRF := SubStr(cCodXML,Len(cCodXML)-5,Len(cCodXML))
Else
cCodPRF := cCodXML
EndIf
EndIf


Return cCodPRF

GT1CPS

Descrição

Utilizado para habilitar a edição de campos customizados criados na tabela 2, contida no parâmetro MV_XGTTAB2. Os campos informados neste ponto de entrada devem ser a partir do underline, conforme exemplo.

Parâmetros

Nenhum

Retorno

Array, Campos que permitem edição.

Exemplo

User Function GT1CPS()
Local aAdItem := {}

aAdd(aAdItem, "_CONTA")

Return(aAdItem)

GT1ITEM

Descrição

Utilizado para levar campos customizados ao Documento de Entrada. Este ponto de entrada é chamado para cada item do XML (linha do browse).

Parâmetros

PARAMIXB, Array, Array contendo os itens da linha corrente.

Retorno

Array, Array contendo informações do campo e valor que

devem ser adicionados ao array levado ao documento de

entrada.

Exemplo

User Function GT1ITEM()
Local aParam := PARAMIXB
Local aAdItem := {}
Local _nPosConta := aScan(aHeader, {|x| x[2] == PadR("Z2_CONTA", 10)})

If _nPosConta > 0
aAdd(aAdItem, {"D1_CONTA", aParam[_nPosConta], Nil})
EndIf

Return(aAdItem)

GATIPED

Descrição

Utilizado para apresentar outros campos do pedido de compra (SC7) na consulta de pedidos em aberto. Botão ‘Ped. Compra’.

Parâmetros

Nenhum

Retorno

Array, Array contendo os campos da tabela SC7 que devem ser apresentados no browse.

Exemplo

User Function GATIPED()
Local aCampos := {}

aAdd(aCampos, {'Vencimento', SC7->C7_VENCTO, "C7_VENCTO"})
aAdd(aCampos, {'Conta Contábil', SC7->C7_CONTA, "C7_CONTA"})

Return aCampos

GT1VALCP

Descrição

Utilizado para preencher automaticamente algum campo do XML ao carregar a primeira tela da importação.

Parâmetros

PARAMIXB[1], Array, Array contendo informações do item atual.

PARAMIXB[2], Numérico, Número da linha do browse.

PARAMIXB[3], Caractere, Código que indica qual momento que está

sendo chamado, sendo eles:

1=NFe tipo Normal

2=NFe tipo Devolução/Beneficiamento/Retorno

3=NFe tipo Complemento de IPI/Preço/ICMS

4=NFSe tipo Serviço

Retorno

Nulo, Nenhum

Exemplo

User Function GT1VALCP()
Local aItens := PARAMIXB[1]
Local nLinha := PARAMIXB[2]
Local _nPosLote := AScan(aHeader, {|x| x[2] == PadR("Z2_LOTECTL", 10)})
Local cLote := ""

If _nPosLote > 0
If At("LOTE",Upper(aItens[nLinha, 2])) != 0
cLote := SubStr(aItens[nLinha,2],At("LOTE",Upper(aItens[nLinha, 2]))+5,;
Len(aItens[nLinha, 2]))

aCols[nLinha, _nPosLote] := PadR(AllTrim(cLote),TamSx3("D1_LOTECTL")[1])
EndIf
EndIf

Return

GTPRDFOR

Descrição

Utilizado para executar alguma regra após a gravação/atualização da relação produto x fornecedor (SA5) ou produto x cliente (SA7).

Parâmetros

PARAMIXB[1], Numérico, Código indicativo do tipo de arquivo que acabou de incluir, sendo eles:
1=SA5 (Produto x Fornecedor)

2=SA7 (Produto x Cliente)

PARAMIXB[2], Caractere, Código do fornecedor.

PARAMIXB[3], Caractere, Código da loja.

PARAMIXB[4], Caractere, Código do produto do fornecedor.

PARAMIXB[5], Caractere, Código do produto do Protheus.

Retorno

Nulo, Nenhum

Exemplo

User Function GTPRDFOR()
Local cTipo := PARAMIXB[1]
Local cCodFor := PARAMIXB[2]
Local cLoja := PARAMIXB[3]
Local cCodPRF := PARAMIXB[4]
Local cCod := PARAMIXB[5]

Do Case
Case cTipo == 1 // SA5
Reclock("SA5",.F.)
SA5->A5_SKIPLOT := "1"
SA5->(MsUnlock())

Case cTipo == 2 // SA7
Reclock("SA7",.F.)
SA7->A7_SERVTIM := "032"
SA7->(MsUnlock())
EndCase

Return

GTPOSREL

Descrição

Utilizado para executar alguma regra após a relação do pedido de compra, como por exemplo preencher algum campo do cabeçalho da nota fiscal.

Parâmetros

PARAMIXB[1], Caractere, Código do pedido de compra selecionado.

PARAMIXB[1], Caractere, Item do pedido de compra selecionado.

Retorno

Nulo, Nenhum

Exemplo

User Function GTPOSREL()
Local cPedido := PARAMIXB[1]
Local cItem := PARAMIXB[2]
Local aAreaAnt := GetArea()
Local aAreaSC7 := SC7->(GetArea())

SC7->(dbSetOrder(1))
If SC7->(dbSeek(xFilial("SC7") + PadR(cPedido,TamSx3("C7_NUM")[1]) + ;
PadR(cItem,TamSx3("C7_ITEM")[1]) ))

M->&(_cCmp1 + "_NATFIN") := SC7->C7_NATUREZ
EndIf

RestArea(aAreaSC7)
RestArea(aAreaAnt)
Return Nil

GTITEMCT

Descrição

Utilizado para levar campos customizados ao Documento de Entrada para o tipo de documento CTe (Conhecimento de Transporte). Este ponto de entrada é chamado para cada item do CTe.

Parâmetros

PARAMIXB[1], Caractere, Código do tipo de CTe, sendo eles:

1=Entrada

2=Saída

PARAMIXB[2], Array, Array que contém algumas informações do cabeçalho do CTe.

PARAMIXB[3], Array, Array que contém o item corrente do CTe.

Retorno

Array, Array contendo informações do campo e valor que

devem ser adicionados ao array levado ao documento de entrada.

Exemplo

User Function GTITEMCT()
Local aAreaAnt := GetArea()
Local cTipo := PARAMIXB[1] // "1" Entrada // "2" Saída
Local aCabecCTe := PARAMIXB[2]
Local aItensCTe := PARAMIXB[3]
Local aAddCampo := {}

Do Case
Case cTipo == "1"
aAdd(aAddCampo,{"D1_LOCAL", SD1->D1_LOCAL, Nil})
Case cTipo == "2"
aAdd(aAddCampo,{"D1_LOCAL", SD2->D2_LOCAL, Nil})
EndCase

RestArea(aAreaAnt)
Return aAddCampo

GT1ALTPC

Descrição

Utilizado para alterar alguma informação do pedido de compra, como, por exemplo, a conversão da moeda.

Parâmetros

PARAMIXB[1], Caractere, Código do pedido de compra selecionado.

PARAMIXB[2], Caractere, Item do pedido de compra selecionado.

Retorno

Nulo, Nenhum

Exemplo

User Function GT1ALTPC()
Local cPedido := PARAMIXB[1]
Local cItem := PARAMIXB[2]
Local aAreaAnt := GetArea()
Local aAreaSC7 := SC7->(GetArea())

SC7->(dbSetOrder(1))
If SC7->(dbSeek(xFilial("SC7") + PadR(cPedido,TamSx3("C7_NUM")[1]) +;
PadR(cItem,TamSx3("C7_ITEM")[1]) ))

RecLock("SC7",.F.)
SC7->C7_TXMOEDA := (4.25)
SC7->(MsUnlock())
EndIf

RestArea(aAreaSC7)
RestArea(aAreaAnt)
Return

GT1ALTIT

Descrição

Utilizado para alterar alguma informação do array de itens antes de levá-lo ao Documento de Entrada. Este ponto de entrada sobrepõe o array do programa pelo definido na função.

Parâmetros

PARAMIXB, Array, Array com todos os itens do browse.

Retorno

Array, Array de itens que será considerado para levar ao Documento de Entrada.

Exemplo

User Function GT1ALTIT()
Local aAreaAnt := GetArea()
Local aItens := PARAMIXB // Array onde contém os itens

// Pega a posição do código específico da lente
Local _nPosCod := aScan(aItens[1], {|x| AllTrim(x[1]) == "D1_COD" }
Local nI := 1

For nI := 1 To Len(aItens)
If _nPosCod > 0 .And. !Empty(aItens[nI][_nPosCod][2]) .And. ;
(Posicione("SB1",1,xFilial("SB1") + aItens[nI][_nPosCod][2],"B1_TIPO") $;
"LP|BL" )

aItens[nI][_nPosCod][2] := SubStr(aItens[nI][_nPosCod][2],1,7)

EndIf
Next nI

RestArea(aAreaAnt)
Return aItens

GT1LDPED

Descrição

Utilizado para preencher algum campo da nota fiscal com informação a nível de item do pedido de compra selecionado.

Parâmetros

Nenhum

Retorno

Array, Array com a relação campo SC7 x Tabela 2 do importador (contida em MV_XGTTAB2).

Exemplo

User Function GT1LDPED()
Local aAdItem := {}

// A função deverá retornar esta estrutura:
//
// Primeira posição é o campo customizado da SC7
// Segundo é o campo correspondente na tabela 2 do importador de
// notas
// Terceiro é o valor que será armazenado no array (para controle
// interno)
//
// Conforme exemplo:
// aAdd(aAdItem, {"C7_XCMP1","Z2_XCMP1",Nil})
//

aAdd(aAdItem, {"C7_DESCRI","Z2_DSPROD",Nil})

Return aAdItem

GT1MENU

Descrição

Utilizado para adicionar botões no menu principal do importador, localizado em Outras Ações.

Parâmetros

Nenhum

Retorno

Nulo, Nenhum

Exemplo

User Function GT1MENU()

aAdd(aRotina,{ "Botão Customizado" , "u_funcao", 0 , 2, 0, .F.})

Return

GT1RATCT

Descrição

Utilizado para personalizar o rateio no conhecimento de transporte.

Parâmetros

PARAMIXB[1], Caractere, Código do tipo de CTe, sendo eles:

1=Entrada

2=Saída

PARAMIXB[2], Array, Array com informações do cabeçalho.

PARAMIXB[3], Array, Array com informações dos itens.

PARAMIXB[4], Array, Array com valores do ICMS.

Retorno

Array, Array que contém os itens com os valores alterados.

Exemplo

User Function GT1RATCT()
Local nTipCTe := PARAMIXB[1] // "1"- CTe de Compra, "2" - CTe de Venda
Local aCabecCTe := PARAMIXB[2] // Cabeçalho CTE
Local aItens := PARAMIXB[3] // Itens do CTe
Local aICMS := PARAMIXB[4] // ICMS do XML
Local nPosPalt := aScan(aItens[1],{|x| AllTrim(x[1])=="D1_QTDPALE" })
Local nPosVlUn := aScan(aItens[1],{|x| AllTrim(x[1])=="D1_VUNIT" })
Local nPosValt := aScan(aItens[1],{|x| AllTrim(x[1])=="D1_TOTAL" })

// VALOR DO CONHECIMENTO
Local nPosVlConh := aScan(aCabecCTe, {|x| x[1] == "MV_PAR21"})
Local nTotalPlt := 0
Local nVlConhe := 0
Local nI := 0

If nPosPalt <= 0
Aviso("GT1RATCT", "Não foi encontrado o campo 'Qtde Palete'",{"Fechar"}, 2)
Return Nil
EndIf

If nPosVlUn <= 0
Aviso("GT1RATCT", "Não foi encontrado o campo 'Valor Unitário'",{"Fechar"}, 2)
Return Nil
EndIf

If nPosValt <= 0
Aviso("GT1RATCT", "Não foi encontrado o campo 'Valor Total'",{"Fechar"}, 2)
Return Nil
EndIf

// Percorre os itens para puxar o total de paletes
For nI := 1 To Len(aItens)
nTotalPlt += aItens[nI][nPosPalt][2]
Next nI

// Total do Frete
If nPosVlConh > 0
nVlConhe := aCabecCTe[nPosVlConh][2]
EndIf

If nVlConhe <= 0
// Contingência caso não seja possível consultar o total do
// conhecimento de frete, pega o valor do ICMS
nVlConhe := aICMS[4]

If nVlConhe <= 0
Aviso("GT1RATCT", "Não foi possível fazer a leitura do valor"+;
" do conhecimento.", {"Fechar"}, 2)

Return Nil
EndIf
EndIf

// Rateio pelo palete
For nI := 1 To Len(aItens)
// VALOR DO FRETE * QTD PALETE / TOTAL PALETE
// (VALOR * CRITÉRIO / TOTAL DO CRITÉRIO = VALOR PONDERADO)

nVlPonde := Round((nVlConhe * aItens[nI][nPosPalt][2]) / nTotalPlt, 2

If nVlPonde <= 0
// Quando não existe quantidade de palete, joga 0,00001
// com base no decimal

nVlPonde := (1 / (10 ** (TamSx3("D1_VUNIT")[2])))
EndIf

aItens[nI][nPosVlUn][2] := nVlPonde // VALOR UNITÁRIO
aItens[nI][nPosValt][2] := nVlPonde // VALOR TOTAL
Next nI

Return aItens

GT1BTNFE

Descrição

Utilizado para adicionar botões na primeira tela da importação da NFe tipo Normal.

Parâmetros

Nenhum

Retorno

Array, Array contendo informações do botão.

Exemplo

User Function GT1BTNFE()
Local aButtons := {}

aAdd(aButtons,{"Gerar Pedido",{|| U_GerarPed()},"Gerar o pedido de"+;
" compra com base no XML"})

Return aButtons

GT1LGEND

Descrição

Utilizado para personalizar as legendas do browse principal.

Parâmetros

PARAMIXB[1], Caractere, Nome do browse

PARAMIXB[1], Objeto, Objeto do browse

Retorno

Nulo, Nenhum

Exemplo

User Function GT1LGEND()
Local cBrowse := PARAMIXB[1] // Browse que será apresentado, NFE ou CTe
Local oBrowse := PARAMIXB[2] // Objeto do browse para adicionara legenda

oBrowse:oBrowse:AddLegend("StaticCall(GT1LGEND,GetLegend,SZ1->Z1_XML)"+;
" == '1'","PINK" ,"Pedido preenchido no XML","4")

oBrowse:oBrowse:AddLegend("StaticCall(GT1LGEND,GetLegend,SZ1->Z1_XML)"+;
" == '2'","ORANGE","Pedido preenchido no XML porém inválido","4")

oBrowse:oBrowse:AddLegend("StaticCall(GT1LGEND,GetLegend,SZ1->Z1_XML)"+;
" == '3'","WHITE" ,"Pedido não preenchido no XML","4")

Return

//////////////

Static Function GetLegend(cXml)
Local aAreaAnt := GetArea()
Local oXmlLegend := Nil
Local xRet := Nil
Local cRet := ""
Local cPed := ""
Local cItem := ""
Local nI := 0
Local lFound := .F.
Local lFoundXPed := .F.
Local lFoundItemPed := .F.
Local cQuery := ""
Local cAliasQry := ""

oXmlLegend := TXmlManager():New()

If !(xRet := oXmlLegend:Parse( cXml ))
Conout( "Error: " + oXmlLegend:Error() )
Return "3"
EndIf

oXmlLegend:DOMChildNode() // <NFe>
oXmlLegend:DOMChildNode() // <infNFe>
oXmlLegend:DOMChildNode() // <ide>

lFound := .F.
nI := 0

// Pula para o próximo que é <emit> e assim por diante
Do While oXmlLegend:DOMNextNode() .And. !lFound
nI++

// Quando encontrar <det> que são os itens
If oXmlLegend:CNAME == "det"

// Entra no primeiro produto
oXmlLegend:DOMChildNode()
//

If oXmlLegend:CNAME == "prod"
lFound := .T.
lFoundXPed := .F.
lFoundItemPed := .F.

// Entra nos atributos do produto
oXmlLegend:DOMChildNode()
//

Do While oXmlLegend:DOMNextNode() .And. (!lFoundXPed .Or.;
!lFoundItemPed)

If oXmlLegend:CNAME == "xPed"
lFoundXPed := .T.
cPed := oXmlLegend:CTEXT
EndIf

If oXmlLegend:CNAME == "nItemPed"
lFoundItemPed := .T.
cItem := oXmlLegend:CTEXT
EndIf
EndDo
EndIf
EndIf
EndDo

If lFoundXPed .And. lFoundItemPed
cRet := "1" // Contém
cQuery := "SELECT 1"
cQuery += " FROM " + RetSqlName("SC7") + " SC7"
cQuery += " WHERE SC7.C7_FILIAL = '"+xFilial("SC7")+"'"
cQuery += " AND SC7.C7_NUM = '"+cPed+"'"
cQuery += " AND SC7.C7_ITEM = '"+cItem+"'"
cQuery += " AND SC7.D_E_L_E_T_ = ' '"
cAliasQry := GetNextAlias()
dbUseArea(.T., "TOPCONN", TCGENQRY(, , cQuery), cAliasQry, .F.,.T.)

If (cAliasQry)->(Eof())
(cAliasQry)->(dbCloseArea())

If Len(AllTrim(cPed)) < TamSX3("C7_NUM")[1]
cPed := PADL(AllTrim(cPed),TamSX3("C7_NUM")[1],"0")
Else
cPed := Right(AllTrim(cPed),TamSX3("C7_NUM")[1])
EndIf

If Len(AllTrim(cItem)) < TamSX3("C7_ITEM")[1]
cItem := PADL(AllTrim(cItem),TamSX3("C7_ITEM")[1],"0")
Else
cItem := Right(AllTrim(cItem),TamSX3("C7_ITEM")[1])
EndIf

cQuery := "SELECT 1"
cQuery += " FROM " + RetSqlName("SC7") + " SC7"
cQuery += " WHERE SC7.C7_FILIAL = '"+xFilial("SC7")+"'"
cQuery += " AND SC7.C7_NUM = '"+cPed+"'"
cQuery += " AND SC7.C7_ITEM = '"+cItem+"'"
cQuery += " AND SC7.D_E_L_E_T_ = ' '"
cAliasQry := GetNextAlias()
dbUseArea(.T., "TOPCONN", TCGENQRY(, , cQuery), cAliasQry,.F., .T.)

If (cAliasQry)->(Eof())
cRet := "2" // Contém inválido
EndIf
EndIf

(cAliasQry)->(dbCloseArea())
Else
cRet := "3" // Não Contém
EndIf

oXmlLegend := Nil

RestArea(aAreaAnt)
return cRet

GT1TOLER

Descrição

Utilizado para especificar uma tolerância nas validações da quantidade e valor unitário realizadas no vínculo com o pedido de compra.

Parâmetros

PARAMIXB[1], Caractere, Código do fornecedor.

PARAMIXB[2], Caractere, Código da loja.

PARAMIXB[3], Caractere, Código do produto.

PARAMIXB[4], Caractere, Código do grupo do produto.

PARAMIXB[5], Numérico, Quantidade do item no pedido de compra.

PARAMIXB[6], Numérico, Valor unitário do item no pedido de compra.

PARAMIXB[7], Numérico, Quantidade do item no XML.

PARAMIXB[8], Numérico, Valor unitário do item no XML.

Retorno

Array, Array contendo a quantidade e valor máximo permitido que seja diferente.

Exemplo

User Function GT1TOLER()

// {Quantidade,Preço R$}

Return {0,3}

GT1VLPED

Descrição

Utilizado para executar alguma validação no vínculo com o pedido de compra.

Parâmetros

PARAMIXB[1], Array, Array contendo os itens do browse principal.

PARAMIXB[2], Array, Array contendo informações dos campos do browse (aHeader).

Retorno

Lógico, Verdadeiro para prosseguir com o vínculo e Falso para bloquear o vínculo com o pedido de compra.

Exemplo

User Function GT1VLPED()
Local aAreaAnt := GetArea()
Local aColsImp := PARAMIXB[1]
Local aHeadCols := PARAMIXB[2]

Aviso("GT1VLPED - Validação específica", "Validação está retornando"+;
" falso!", {"Fechar"}, 3)

lRet := .F.

RestArea(aAreaAnt)
Return lRet

GT1PFRET

Descrição

Utilizado para mudar o produto padrão na importação do CTe.

Parâmetros

PARAMIXB[1], Caractere, Código do tipo de CTe, sendo eles:

1=Entrada

2=Saída

PARAMIXB[1], Array, Array contendo informações do cabeçalho.

Retorno

Caractere, Código do produto que será considerado no lançamento do CTe.

Exemplo

User Function GT1PFRET
Local aAreaAnt := GetArea()
Local cTipoCTe := PARAMIXB[1] // "1" Entrada // "2" Saída
Local aCabecCTe := PARAMIXB[2] //

If cTipoCTe == "2"
If cEmpAnt == "02"
cProdFrete := "4136" // Frete Interconpany
Else
cProdFrete := "0463" // Frete sobre Venda.
EndIf
EndIf

RestArea(aAreaAnt)
Return cProdFrete

GT1AICTE

Descrição

Utilizado para alterar qualquer informação nos itens do CTe antes de levá-los para o Documento de Entrada.

Parâmetros

PARAMIXB[1], Caractere, Código do tipo de CTe, sendo eles:

1=Entrada

2=Saída

PARAMIXB[2], Array, Array com informações do cabeçalho.

PARAMIXB[3], Array, Array com informações dos itens.

PARAMIXB[4], Array, Array com valores do ICMS.

Retorno

Array, Array com todos os itens do CTe alterados.

Exemplo

User Function GT1AICTE()
Local nTipCTe := PARAMIXB[1] // "1"- CTe de Compra, "2" - CTe de Venda
Local aCabecCTe := PARAMIXB[2] // Cabeçalho CTE
Local aItens := PARAMIXB[3] // Itens do CTe
Local aICMS := PARAMIXB[4] // ICMS do XML
Local nPosCC := aScan(aItens[1],{|x| AllTrim(x[1])=="D1_CC" })
Local nPosConta := aScan(aItens[1],{|x| AllTrim(x[1])=="D1_CONTA" })
Local nI := 0

// Conhecimento de Transporte relacionado a VENDA
If nTipCTe == "2"
For nI := 1 To Len(aItens)
If nPosCC > 0
aItens[nI][nPosCC][2] := "350851"
EndIf

If nPosConta > 0
aItens[nI][nPosConta][2] := "4420603"
EndIf
Next nI
EndIf

Return aItens

GT1VLNFE

Descrição

Utilizado para executar alguma validação após a confirmação da primeira tela da importação, dentro da importação de uma nota fiscal eletrônica.

Parâmetros

PARAMIXB[1], Array, Array contendo os itens do browse principal.

Retorno

Lógico, Verdadeiro para prosseguir com a importação e Falso para bloquear a importação.

Exemplo

User Function GT1VLNFE()

MsgAlert("Validação do PE GT1VLNFE")

Return .F.

GT1VCTE

Descrição

Utilizado para executar alguma validação após a confirmação da primeira tela da importação, dentro da importação de um conhecimento de transporte.

Parâmetros

PARAMIXB[1], Caractere, Código do tipo de CTe, sendo eles:

1=Entrada

2=Saída

PARAMIXB[2], Array, Array contendo o cabeçalho do CTe.

PARAMIXB[3], Array, Array contendo as notas de origem do CTe.

Retorno

Lógico, Verdadeiro para prosseguir com a importação e Falso para bloquear a importação.

Exemplo

User Function GT1VCTE()
Local aAreaAnt := GetArea()
Local lRet := .T.
Local cTipCte := PARAMIXB[1]
Local aCab := PARAMIXB[2]
Local aNFOri := PARAMIXB[3]

Do Case
Case cTipCte == "1"
For nA := 1 To Len(aNFOri)
// Numero + Serie + Fornecedor + Loja + Tipo da Nota
SF1->( dbSetOrder(1) )
// Posiciona na SF1
If SF1->( dbSeek(xFilial("SF1") + aNFOri[nA][1][2]) )
If Empty(SF1->F1_STATUS)
MsgAlert("Não é possível importar CTe vinculado a"+;
" nota fiscal de origem como pré-nota.")
Return .F.
EndIf
EndIf
Next nA
EndCase

RestArea(aAreaAnt)
Return .T.

GT1QRYPED

Descrição

Utilizado para adicionar alguma condição na query de busca do pedido de compra, no preenchimento manual.

Parâmetros

Nenhum

Retorno

Caractere, Pedaço da query que será adicionada a query principal.

Exemplo

User Function GT1QRYPED()
Local cFiltro := ""

cFiltro += " AND C7_EMISSAO >= '20200101'"

Return cFiltro

GT1CTCAB

Descrição

Utilizado para manipular o cabeçalho do conhecimento de transporte antes da importação.

Parâmetros

PARAMIXB[1], Caractere, Código do tipo de CTe, sendo eles:

1=Entrada

2=Saída

PARAMIXB[2], Array, Array contendo o cabeçalho do CTe.

PARAMIXB[3], Array, Array contendo as notas de origem do CTe.

Retorno

Array, Array com informações do cabeçalho que será substituído no programa.

Exemplo

User Function GT1CTCAB()
Local cTipoCTe := PARAMIXB[1]
Local aCab := PARAMIXB[2]
Local aNotas := PARAMIXB[3]
Local nPosTpFret := aScan(aCab,{|x| AllTrim(x[1]) == "F1_TPFRETE" })

Do Case
Case cTipoCTe == "1" // Compra
If nPosTpFret > 0
aCab[nPosTpFret][2] := "F" // FOB
EndIf

Case cTipoCTe == "2" // Venda
If nPosTpFret > 0
aCab[nPosTpFret][2] := "C" // CIF
EndIf
EndCase

Return aCab

GT1CAB

Descrição

Utilizado para manipular o cabeçalho da nota fiscal.

Parâmetros

PARAMIXB[1], Array, Array com informações do cabeçalho.

Retorno

Array, Array com informações do cabeçalho que será substituído no programa.

Exemplo

User Function GT1CAB() 
Local aCab := PARAMIXB
Local nPosTipo := aScan(aCab,{|x| AllTrim(x[1]) == "F1_TIPO" })
Local cTipoNF := "N"

If nPosTipo > 0
cTipoNF := aCab[nPosTipo][2]
EndIf

Do Case
Case cTipoNF == "N"
aAdd(aCab,{"F1_MENNOTA","Observacao no cabecalho nota"+;
" Normal",Nil,Nil})

Case cTipoNF == "D"
aAdd(aCab,{"F1_MENNOTA","Observacao no cabecalho nota"+;
" Devolucao",Nil,Nil})

Otherwise
aAdd(aCab,{"F1_MENNOTA","Observacao no cabecalho nota"+;
" Outros",Nil,Nil})

EndCase

Return(aCab)

GT1DIVPD

Descrição

Utilizado para manipular o array contendo as divergências entre pedido de compra e XML, na impressão do relatório.

No exemplo abaixo é utilizado para excluir as divergência a partir de uma tolerância.

Parâmetros

PARAMIXB[1], Array, Array com divergências encontradas.

Retorno

Array, Array que será substituído para impressão do relatório.

Exemplo

User Function GT1DIVPD()
Local aDiver := PARAMIXB[1]
Local nI := 0
Local nValorXml := 0
Local nValorPed := 0
Local nDiferenca := 0
Local nToler := 0

For nI := 1 To Len(aDiver)

If "VALOR" $ Upper(aDiver[nI][1])

nValorXml := Val(StrTran(aDiver[nI][8],",","."))

nValorPed := Val(StrTran(aDiver[nI][9],",","."))

nDiferenca := Abs(nValorXml - nValorPed)

nToler := ((1 / 100) * nValorPed)

If nDiferenca <= nToler
aDiver[nI][1] := "DELETAR"
EndIf
EndIf
Next nI

nI := 1

Do While Len(aDiver) > 0
If nI > Len(aDiver)
Exit
EndIf

If aDiver[nI][1] == "DELETAR"
aDel(aDiver,nI)
aSize(aDiver,Len(aDiver)-1)
Else
nI++
EndIf
EndDo

Return aDiver

GT1CLIFOR

Descrição

Manipula a query de busca do fornecedor/cliente para adicionar condições na busca do fornecedor/cliente.

Parâmetros

PARAMIXB[1], Caractere, Tipo de busca:

1=Fornecedor

2=Cliente

Retorno

Caracter, Condição para adicionar a query.

Exemplo

User Function GT1CLIFOR()
Local lCliente := (PARAMIXB[1] == "2")
Local cWhere := ""

// Parametro para indicar códigos não utilizados
// Exemplo com código + loja
// "'01234501','09876502',..."
Local cCodigos := GetNewPar("MV_????","")

// Condição somente na busca de fornecedores
If !lCliente
cWhere := " AND SA2.A2_COD + SA2.A2_LOJA NOT IN ("+cCodigos+")"
EndIf

Return cWhere

GT1NFRET

Descrição

Personaliza a busca automática da nota de origem para a importação do retorno em poder de terceiros.

Parâmetros

PARAMIXB[1], Numérico, Número da linha da grid.

Retorno

Array, Array contendo o código do produto e nota(s) para o vínculo ({"produto",aNotas}).

Exemplo

User Function GT1NFRET()
Local nItem := PARAMIXB[1]
Local aRet := {"",{}}
Local cxPed := ""
Local nItemPed := ""
Local oXmlMan := Nil

// Retorna o objeto TXmlManager do Xml
oXmlMan := U_CXTranXml( (_cTab1)->&(_cCmp1 + "_XML") )

// Posiciona na tag <xPed> com função do ConexãoNF-e

If U_CXPosXML(oXmlMan,Separa(">nfeProc/>NFe/>infNFe/?det@nItem="+cValtoChar(nItem)+"/?prod/?xPed","/"))
// Captura conteúdo da tag posicionada
cxPed := oXmlMan:cText

// Verifica se tem mais uma tag
If oXmlMan:DOMHasNextNode()
// Posiciona na próxima tag
oXmlMan:DOMNextNode()

// Captura a informação da tag posicionada, que deve ser <nItemPed>
nItemPed := oXmlMan:cText
EndIf
EndIf

If !Empty(cxPed) .And. !Empty(nItemPed)
// Informações que deve ser retornadas:
// aRet[1] = Código do produto
// aRet[2] = array com informaçãoes da SD2:
// aAdd(aNotas,{D2_DOC,D2_SERIE,D2_CLIENTE,D2_LOJA,D2_COD,D2_ITEM,B6_SALDO,D2_PRCVEN,D2_NUMSEQ,D2_LOTECTL,D2_DTVALID,D2_TES,D2_IDENTB6,D2_LOCAL,D2_VALIPI,D2_EMISSAO,0})
EndIf

Return aRet

GT1VLPRD

Descrição

Indica se apresenta ou não as validações entre produto xml e cadastro ao importar uma NFe.

Parâmetros

PARAMIXB[1], Numérico, Código para o tipo de validação:

1=NCM,2=Origem,3=CEST,4=EAN,5=CFOP.

PARAMIXB[2], Array, Array com os itens do grid.

PARAMIXB[3], Numérico, Número da linha posicionada.

Retorno

Lógico, Verdadeiro para realizar a validação e Falso para não validar.

Exemplo

User Function GT1VLPRD()
Local aAreaAnt := GetArea()
Local nTipoVld := PARAMIXB[1] // 1=NCM, 2=Origem, 3=CEST, 4=EAN, 5=CFOP
Local aItens := PARAMIXB[2] // Itens da grid
Local nLinha := PARAMIXB[3] // Linha posicionada
Local lRet := .T.

Do Case
Case nTipoVld == 1 // NCM
// Quando o tipo de produto for ATIVO IMOBILIZADO|BENEFICIAMENTO|EMBALAGEM, não faz validação do NCM
If Posicione("SB1",1,xFilial("SB1") + aItens[nLinha][_nPosProdu],"B1_TIPO") $ "AI|BN|EM"
lRet := .F.
Endif

Case nTipoVld == 2 // Origem

Case nTipoVld == 3 // CEST

Case nTipoVld == 4 // EAN

Case nTipoVld == 5 // CFOP

Otherwise
lRet := .T.

EndCase

RestArea(aAreaAnt)

Return lRet

GT1BRWCHG

Descrição

Ponto de chamada após a troca de linha do browse de documentos pendentes de importação.

Utilizar variável cCombo1 para manipular o tipo de nota e cCombo2 para manipular o tipo de frete.

Parâmetros

Nenhum

Retorno

Nulo, Nenhum

Exemplo

User Function GT1BRWCHG()

// Seta o tipo de frete para CIF
cCombo2 := "C"

Return

GT1FILBRW

Descrição

Permite manipilar o filtro do browse principal.

Parâmetros

Nenhum

Retorno

Caractere, Condição para adicionar a query.

Exemplo

User Function GT1FILBRW()
Local cFiltro := ""

// Ignora notas de um determinado fornecedor
cFiltro := " AND Z1_CGCEMI NOT IN ('12345678910123','98765432109876')"

Return cFiltro

GT1CMPCT

Descrição

Permite adicionar campos para preencher na importação do CTe. Campos a nível de documento de origem.

Parâmetros

Nenhum

Retorno

Array, Array com informações do(s) campo(s) adicionado(s).

Exemplo

User Function GT1CMPCT()
Local aFields := {}

aAdd(aFields,{;
{"Classe Valor","DX_CLVL","@!",TamSx3("D1_CLVL")[1],0,"",,"C","CTH",},; // {X3_TITULO,X3_CAMPO,X3_PICTURE,X3_TAMANHO,X3_DECIMAL,X3_VALID,X3_USADO,X3_TIPO,X3_F3,X3_CONTEXT}
{"D1_CLVL"/*Campo SD1*/,""/*Valor Padrão*/};
})

aAdd(aFields,{;
{"Item CTa","DX_ITEMCTA","@!",TamSx3("D1_ITEMCTA")[1],0,"",,"C","CTD",},; // {X3_TITULO,X3_CAMPO,X3_PICTURE,X3_TAMANHO,X3_DECIMAL,X3_VALID,X3_USADO,X3_TIPO,X3_F3,X3_CONTEXT}
{"D1_ITEMCTA"/*Campo SD1*/,""/*Valor Padrão*/};
})

aAdd(aFields,{;
{"Conta Contábil","DX_CONTA","@!",TamSx3("D1_CONTA")[1],0,"",,"C","CT1",},; // {X3_TITULO,X3_CAMPO,X3_PICTURE,X3_TAMANHO,X3_DECIMAL,X3_VALID,X3_USADO,X3_TIPO,X3_F3,X3_CONTEXT}
{"D1_CONTA"/*Campo SD1*/,""/*Valor Padrão*/};
})

Return aFields

GT1PCAUT

Descrição

Permite definir quais pedidos de compra devem ser considerados na busca automática.

Parâmetros

Nenhum

Retorno

Array, Array com informações de pedido de compra para consideração.

Exemplo

User Function GT1PCAUT()
Local aPedPE := {}
Local cQuery := ""
Local cAliasSC7 := ""
Local cRestNFe := SuperGetMV("MV_RESTNFE")

cQuery := " SELECT SC7.R_E_C_N_O_ RECNOC7"
cQuery += " FROM " + RetSqlName("SC7") + " SC7"
cQuery += " WHERE SC7.C7_FILENT = '" + xFilial("SC7") + "'"

If cRestNFe == "S"
cQuery += " AND SC7.C7_CONAPRO NOT IN ('B','R')"
Endif

// Verifica se tem saldo
cQuery += " AND (SC7.C7_QUANT - SC7.C7_QUJE - SC7.C7_QTDACLA) > 0"
cQuery += " AND SC7.C7_RESIDUO = ' '"
cQuery += " AND SC7.C7_TPOP <> 'P'"
cQuery += " AND SC7.D_E_L_E_T_ = ' '"
cQuery += " ORDER BY C7_NUM, C7_PRODUTO, C7_DATPRF, C7_ITEM"
cQuery := ChangeQuery(cQuery)
cAliasSC7 := GetNextAlias()
dbUseArea(.T., "TOPCONN", TcGenQry(, , cQuery), cAliasSC7, .F., .T.)

Do While (cAliasSC7)->(!Eof())
SC7->(dbGoTo( (cAliasSC7)->RECNOC7 ))

aAdd(aPedPE, {.F.,; // 1
SC7->C7_NUM,; // 2
SC7->C7_ITEM,; // 3
SC7->C7_EMISSAO,; // 4
SC7->C7_PRODUTO,; // 5
SC7->C7_UM,; // 6
(SC7->C7_QUANT - SC7->C7_QUJE - SC7->C7_QTDACLA),; // 7
SC7->C7_DESCRI,; // 8
SC7->C7_PRECO,; // 9
SC7->C7_TES,; // 10
SC7->C7_PICM,; // 11
SC7->C7_IPI,; // 12
0,; // 13
SC7->C7_LOJA,; // 14
SC7->C7_COND,; // 15
SC7->C7_DATPRF,; // 16
SC7->C7_ITEMGRD,; // 17
SC7->C7_VLDESC}) // 18

(cAliasSC7)->(dbSkip())
EndDo
(cAliasSC7)->(dbCloseArea())

If Len(aPedPE) == 0
// Altera para nulo para o sistema procurar de forma padrão.
aPedPE := Nil
EndIf

Return aPedPE

GT1INIT

Descrição

Ponto para executar alguma função antes de entrar o programa.

Parâmetros

Nenhum

Retorno

Nulo, Nenhum

Exemplo

User Function GT1INIT()

MsAguarde({|| Processo() }, "Carregando Registros", "Sincronização produto x fornecedor (ZB0 x ZC6)")

Return Nil

GT1PEDCT

Descrição

Ponto para definir o pedido de compra para a importação do CTe.

Parâmetros

Nenhum

Retorno

Array, Array com informações do pedido de compra.

Exemplo

User Function GT1PEDCT()
Local aAreaAnt := GetArea()
Local cQuery := ''
Local cAliasQry := ''
Local aPedCTE := {}

cQuery := "SELECT SC7.C7_NUM,"
cQuery += " SC7.C7_ITEM,"
cQuery += " SC7.C7_PRODUTO,"
cQuery += " SC7.C7_DESCRI"
cQuery += " FROM " + RetSqlName('ZZU') + " ZZU"
cQuery += " INNER JOIN " + RetSqlName('SC7') + " SC7"
cQuery += " ON SC7.C7_FILENT = '" + xFilial('SC7') + "'"
cQuery += " AND SC7.C7_NUM = ZZU.ZZU_PC"
cQuery += " AND SC7.C7_ITEM = '0001'"
cQuery += " AND SC7.D_E_L_E_T_ = ' '"
cQuery += " WHERE ZZU.ZZU_FILIAL = '" + xFilial('ZZU') + "'"
cQuery += " AND ZZU.ZZU_NUMPF = '" + (_cTab1)->&(_cCmp1 + "_PEDFRT") + "'"
cQuery += " AND ZZU.ZZU_SEQ = " + cValToChar( (_cTab1)->&(_cCmp1 + "_SEQFRT") )
cQuery += " AND ZZU.D_E_L_E_T_ = ' '"
cQuery := ChangeQuery(cQuery)
cAliasQry := GetNextAlias()
dbUseArea(.T., 'TOPCONN', TcGenQry(, , cQuery), cAliasQry, .F., .T.)

If (cAliasQry)->(!Eof())
(cAliasQry)->( aAdd(aPedCTE,{""/*Chave*/,C7_NUM,C7_ITEM,C7_PRODUTO,C7_DESCRI, (_cTab1)->&(_cCmp1 + "_TOTVAL") }) )
EndIf

(cAliasQry)->(dbCloseArea())

RestArea(aAreaAnt)
Return aPedCTE

GT1VLNFS

Descrição

Permite adicionar validações na confirmação da importação da NFSe.

Parâmetros

Nenhum

Retorno

Lógico, Verdadeiro para permitir importação, Falso para impedir.

Exemplo

User Function GT1VLNFS()

MsgAlert("Validação do PE GT1VLNFS")

Return .F.

GT1CMPLT

Descrição

Permite adicionar campos na importação do CTe em lote.

Parâmetros

Nenhum

Retorno

Array, Array com informações do(s) campo(s) adicionados.

Exemplo

User Function GT1CMPLT()

Local aCampos := {}

// Tabela, Campo , Título , F3 , Nil <reservado para conteúdo>
aAdd(aCampos,{"SF1" ,"F1_MENNOTA","Observ." ,"" ,Nil})
aAdd(aCampos,{"SD1" ,"D1_OP" ,"Cod. OP" ,"SC2",Nil})
aAdd(aCampos,{"SD1" ,"D1_XDESCRI","Desc. XML","" ,Nil})
aAdd(aCampos,{"SD1" ,"D1_XUM" ,"UM XML" ,"" ,Nil})
aAdd(aCampos,{"SD1" ,"D1_XQTDE" ,"Qtde. XML","" ,Nil})
aAdd(aCampos,{"SD1" ,"D1_DTVALID","Dt. Valid","" ,Nil})

Return aCampos

GTNUMNFS

Descrição

Ponto para manipular o número da nota fiscal de serviço.

Parâmetros

PARAMIXB, Caractere, Número da nota fiscal de serviço do XML.

Retorno

Caractere, Número da nota fiscal de serviço formatado.

Exemplo

User Function GTNUMNFS()
Local cNumNFS := Paramixb
Local cNumAux := ""
Local cNumAux2 := ""

If Len(cNumNFS) > 9
cNumAux := SubStr(cNumNFS,1,4)

// Pega as 9 posições da direita para esquerda
cNumAux2 := Right(Alltrim(cNumNFS),9)

// Remove zeros a esquerda
Do While Len(cNumAux2) > 0 .And. SubStr(cNumAux2,1,1) == "0"
cNumAux2 := SubStr(cNumAux2,2)
EndDo

// Incrementa 2021 + 503 = 2021503
cNumAux += PadL(AllTrim(cNumAux2),5,"0")
Else
cNumAux := cNumNFS
EndIf

Return cNumAux

CXMANDOC

Descrição

Ponto para manipular o número da NFe, NFSe, CTe e CTe OS.

Parâmetros

PARAMIXB[1], Caractere, Número do documento do XML.

PARAMIXB[2], Caractere, Conteúdo do XML.

PARAMIXB[3], Carecrete, Tipo de XML:

1=NFe

2=CTe

4=NFSe

6=CTe OS

Retorno

Caractere, Número do documento formatado.

Exemplo

User Function CXMANDOC()
Local cDoc := PARAMIXB[1] // Número do documento
Local cXml := PARAMIXB[2] // XML
Local cTipo := PARAMIXB[3] // Tipo de XML 1=NFe;2=CTe;4=NFSe;5=Cancelamento;6=CTe OS
Local cCNPJ := ""

If cTipo == "4" // NFSe
// Captura o CNPJ do tomador do XML NFSe
cCNPJ := U_CXCgcDe(cXml,cTipo)

// Manipula os zeros a esquerda
If AllTrim(SubStr(cCNPJ,1,8)) == "01234567"
// Retira os zeros a esquerda
Do While Len(cDoc) > 0 .And. SubStr(cDoc,1,1) == "0"
cDoc := SubStr(cDoc,2)
EndDo
EndIf
EndIf

Return cDoc

CXMANSER

Descrição

Ponto para manipular a série dos documentos.

Parâmetros

PARAMIXB[1], Caractere, Número da série do XML.

PARAMIXB[1], Caractere, Conteúdo do XML.

PARAMIXB[1], Caractere, Tipo de XML:

1=NFe

2=CTe

4=NFSe

6=CTe OS

Retorno

Caractere, Número da série formatada.

Exemplo

User Function CXMANSER()
Local cSerie := PARAMIXB[1]
Local cXml := PARAMIXB[2]
Local cTipo := PARAMIXB[3]
Local cCNPJ := ""
Local oXmlMan := U_CXTranXml(cXml) // Instancia o objeto do XML

If cTipo == "1" // NFe
// Captura o CNPJ do emissor do XML NFe
If Empty(cCNPJ := U_CXSeekXml(oXmlMan,Separa(">nfeProc/>NFe/>infNFe/?emit/?CNPJ","/")))

cCNPJ := U_CXSeekXml(oXmlMan,Separa(">nfeProc/>NFe/>infNFe/?emit/?CPF","/"))
EndIf

// Manipula a série para o fornecedor x
If AllTrim(cCNPJ) == "01234567891234"
// Adiciona zeros a esquerda
cSerie := PadL(AllTrim(cSerie),3,"0")
EndIf
EndIf

Return cSerie

CXNFDESX

Descrição

Permite definir regra para desconsiderar algum XML.

Deve também manipular o tipo do XML para 0=Desonciderado e gravar erro no campo _CCECOR.

Parâmetros

Nenhum

Retorno

Lógico, Verdadeiro para considerar, Falso para desconsiderar.

Exemplo

User Function CXNFDESX()
Local aAreaAnt := GetArea()
Local lOk := .T.
Local cTab1 := ""
Local cCmp1 := ""
Local cTipoXml := ""

cTab1 := Upper(AllTrim(GetNewPar("MV_XGTTAB1", ""))) // Cabecalho XML

cCmp1 := IIf(SubStr(cTab1, 1, 1) == "S", SubStr(cTab1, 2, 2), cTab1)

cTipoXml := (cTab1)->&(cCmp1 + "_TIPO")

If cTipoXml == "1" // NFe
// [...]

If !lOk
// Altera situação do XML para 0=Desconsiderado

RecLock(cTab1,.F.)
(cTab1)->&(cCmp1 + "_SIT") := "0" // Desconsiderado
(cTab1)->&(cCmp1 + "_CCECOR") := "XML desconsiderado por se tratar de Encargos de Transmissão"
(cTab1)->(MsUnLock())
EndIf
EndIf

RestArea(aAreaAnt)
Return lOk

CXVALXML

Descrição

Ponto de entrada para adicionar validações na primeira camada.

Parâmetros

Nenhum

Retorno

Array, Array com indicação se bloqueia a importação e com o texto da mensagem ({.T.,""}).

Exemplo

User Function CXVALXML()
Local aAreaAnt := GetArea()
Local aRet := {.T.,""}
Local cTab1 := ""
Local cCmp1 := ""
Local dDtEmis := Nil
Local nTipo := "1"
Local cForMail := ""
Local cTextoEml := ""

cTab1 := Upper(AllTrim(GetNewPar("MV_XGTTAB1", ""))) // Cabecalho XML
cCmp1 := IIf(SubStr(cTab1, 1, 1) == "S", SubStr(cTab1, 2, 2), cTab1)
dDtEmis := (cTab1)->&(cCmp1 + "_DTEMIS")
nTipo := (cTab1)->&(cCmp1 + "_TIPO") // 1 = NFe, 2 = CTe, 4 = NFSe

// Quando a nota for emitida depois do dia 25, envia notificação para o fornecedor
If nTipo $ "1|4" .And. Day(dDtEmis) > 25 .And. Day(dDtEmis) <= 31
cForMail := AllTrim(Posicione("SA2",1,xFilial("SA2") + (cTab1)->&(cCmp1 + "_CODEMI") + (cTab1)->&(cCmp1 + "_LOJEMI"),"A2_EMAIL"))
cTextoEml := GetNewPar("MV_XGTMSGE","")
cTextoEml := Mensagem(cTextoEml,cTab1,cCmp1)

If (cTab1)->(U_CXFieldP(cCmp1 + "_EMLFOR")) == 0
MsgAlert("Não foi encontrado o campo " + cCmp1 + "_EMLFOR" + " para notificação de e-mail ao fornecedor.", "E-mail ao Fornecedor")
Else
// Só envia a primeira vez
If Empty((cTab1)->&(cCmp1 + "_EMLFOR")) .Or. (cTab1)->&(cCmp1 + "_EMLFOR") == "2"
// Envia o e-mail para fornecedor cadastrado na SA2
If EnvEmail(cForMail,cTextoEml)
// Marca como e-mail já enviado
RecLock(cTab1,.F.)
(cTab1)->&(cCmp1 + "_EMLFOR") := "1" // Sim
(cTab1)->(MsUnlock())
Else
// Marca como e-mail ainda não enviado
RecLock(cTab1,.F.)
(cTab1)->&(cCmp1 + "_EMLFOR") := "2" // Não
(cTab1)->(MsUnlock())
EndIf
EndIf
EndIf

aRet := {.F.,"Emissão posterior ao dia 25."}
EndIf

RestArea(aAreaAnt)
Return aRet

GT1OPDF

Descrição

Ponto para alterar informações da tabela AC9 (Base Conhecimento) no anexo automático do DANFE.

Parâmetros

Nenhum

Retorno

Nulo, Nenhum

Exemplo

User Function GT1OPDF()

Reclock("AC9",.F.)
AC9->AC9_CODOBJ := "Alterado"
AC9->(MsUnlock())

Return Nil

GTAVICMS

Descrição

Ponto para alterar o valor do parâmetro MV_XGTVICD.

Parâmetros

Nenhum

Retorno

Caractere, Opção de resposta a pergunta do sistema.

Exemplo

User Function GTAVICMS()
Local cRetOp := Nil

// Verifica o código da TES digitado, caso seja para consumo próprio, altera para sempre
// manter o valor digitado em tela (valor ICMS igual a zero)
If M->&(_cCmp1 + "_TES") == "173"
cRetOP := "1" // Manter digitado
EndIf

Return cRetOP

GT1CPRPA

Descrição

Ponto para adicionar campos (SB1 ou SC7) no filtro da regra automática.

Parâmetros

Nenhum

Retorno

Array, Array com relação de campos para utilizar no filtro:

aCampos[x][1] -> Campo da tabela 8 [Regra Automática]

aCampos[x][2] -> Nome da tabela de referência [SB1 ou SC7]

aCampos[x][3] -> Nome do campo da tabela de referencia

Exemplo

User Function GT1CPRPA()
Local aCampos := ""

// aCampos[x][1] -> Campo da tabela 8 [Regra Automática]
// aCampos[x][2] -> Nome da tabela de referência [SB1 ou SC7]
// aCampos[x][3] -> Nome do campo da tabela de referencia

aCampos := { {"ZA8_ESTOQ" , "SB1", "B1_ESTOQUE"},;
{"ZA8_APLICA", "SC7", "C7_APLIC"} }

Return aCampos

CXEMPAUT

Descrição

Ponto para permitir informar quais empresas estão autorizadas para utilização dos serviços de gerenciamento de XMLs, separados por ; e conforme estrutura <empresa>+<filial>;<empresa>+<filial>.

Utilizado quando conteúdo excede o tamanho do parâmetro MV_CXNFEMP.

Parâmetros

Nenhum

Retorno

Carectere, Texto com sequencia de empresas autorizadas, separadas por ; (ponto e vírgula).

Exemplo

User Function CXEMPAUT()
Local cConteudo := ""

// Formato <empresa><filial>, onde 99 é empresa e 01 a filial
cConteudo := "9901;9902"

Return cConteudo

GT1MENUDI

Descrição

Ponto utilizado para adicionar botões no menu de Outras Ações no painel de documentos importados.

Parâmetros

Nenhum

Retorno

Array, Array contendo informações do botão.

Exemplo

User Function GT1MENUDI()
Local aButtons := {}

// FWFormBrowse(): AddButton ( < cTitle>, [ xAction], [ uParam1], [ nOption], [ nVerify] )
aAdd(aButtons,{"Titulo","U_FUNCAO(cParam)",,4,0})

Return aButtons

CXDEFFIL

Descrição

Ponto de entrada para definir a filial na qual o XML pertence, chamado na função de busca da filial pelo CNPJ.

Parâmetros

PARAMIXB[1], Caractere, CNPJ do destinatário/tomador do XML.

PARAMIXB[2], Caractere, Inscrição Estadual do destinatário/tomador do XML.

PARAMIXB[3], Caractere, Código do município do destinatário/tomador do XML.

PARAMIXB[4], Caractere, CEP do destinatário/tomador do XML.

PARAMIXB[5], Caractere, Conteúdo do XML.

Retorno

Array, Array contendo o código da empresa na primeira posição e o código da filial na segunda: {"99","01"}.

Exemplo

User Function CXDEFFIL()
Local cCNPJ := PARAMIXB[1]
Local cInsEst := PARAMIXB[2]
Local cCodMun := PARAMIXB[3]
Local cCEP := PARAMIXB[4]
Local cXML := PARAMIXB[5]
Local aSalvSM0 := {}
Local aEmpSM0 := {"",""}

OpenSm0()
aSalvSM0 := SM0->( GetArea() )
SM0->(dbGoTop())
Do While SM0->(!Eof())

If AllTrim(cCNPJ) == AllTrim(SM0->M0_CGC)
SM0->(aAdd(aEmpSM0,{AllTrim(M0_CODIGO),AllTrim(M0_CODFIL)}))
EndIf

SM0->(dbSkip())
EndDo
RestArea(aSalvSM0)

Return aEmpSM0

GT1CBAVR

Descrição

Ponto de entrada utilizado para adicionar e manipular os campos enviados para a importação de um aviso de recebimento.

Parâmetros

PARAMIXB[1], Array, Cabeçalho do aviso de recebimento (DB1).

PARAMIXB[1], Caractere, Conteúdo do XML.

PARAMIXB[1], Caractere, Tipo do XML:

1 - NFe

2 - CTe

4 - NFSe

6 - CTe OS

Retorno

Array, Array contendo o cabeçalho do aviso de recebimento (DB1) alterado pelo usuário.

Exemplo

User Function GT1CBAVR()
Local aDB1 := PARAMIXB[1]
Local cXml := PARAMIXB[2]
Local cTipoXml := PARAMIXB[3]

aAdd(aDB1,{"DB1_VOLUME",3,Nil})
aAdd(aDB1,{"DB1_ESPECIE","SPED",Nil})

Return aDB1

GT1CPCRG

Descrição

Ponto de entrada utilizado para levar os valores da Regra Automática para o Documento de entrada (SF1/SD1).

Parâmetros

Nenhum

Retorno

Array, Array com relação de campos para utilizar no filtro:

aCampos[x][1] -> Campo da tabela 8 [Regra Automática]

aCampos[x][2] -> Nome da tabela de referência [SF1 ou SD1]

aCampos[x][3] -> Nome do campo da tabela de referencia

Exemplo

User Function GT1CPCRG()
Local aCampos:= {}
// aCampos[x][1] -> Campo da tabela 8 [Regra Automática]
// aCampos[x][2] -> Nome da tabela de referência [SF1 ou SD1]
// aCampos[x][3] -> Nome do campo da tabela de referencia

aCampos := { {"ZH_OBS" , "SF1", "F1_OBS"},;
{"ZH_CODREG", "SF1", "F1_OBS2"},;
{"ZH_CODREG", "SD1", "D1_REGUTI"},;
{"ZH_DESCRG","SD1","D1_DESCREG"} }

Return aCampos

GT1DCNLAN

Descrição

Ponto utilizado para definir quais CNPJs de emissores não serão efetuados validação do Doc. Origem.

Parâmetros

Nenhum

Retorno

Carectere, String contendo informações dos CNPJs.

Exemplo

User Function GT1DCNLAN ()
Local cConteudo := ""

cConteudo := "40437843000174;19702321000166;63481505000135"

Return cConteudo

Respondeu à sua pergunta?