Árvore de páginas

EXECAUTO MATA103 - Documento de Entrada

Produto:

Protheus

Versões:

Todas

Ocorrência:

Rotina Automática - MATA103 (Execauto)

Ambiente:

SIGACOM - Compras

Descrição:Rotina automática que permite a inclusão de documentos entrada em grande quantidade.
Parâmetros:
NomeTipoDescriçãoConteúdo Default
ExpA1ArrayArray contendo os dados do cabeçalho da Nota Fiscal de Entrada.
ExpA2

Array

Array contendo os itens da Nota Fiscal de Entrada.
ExpN1NuméricoOpção desejada: 3-Inclusão; 4-Classificação; 5-Exclusão3
ExpL1LógicoIndica se Apresenta ou não a Dialog da Rotina em Rotina Automática..F.
ExpA3

Array

Array contendo os valores de Impostos que irão sobrepor valores calculados. (Opcional)
ExpA4ArrayParâmetro de uso interno TOTVS.
ExpA5ArrayArray com os perguntes MTA103 que a rotina automática atualiza em tempo de execução.
ExpA6ArrayArray contendo os dados do rateio por centro de custo
ExpL2LógicoParâmetro de uso interno TOTVS.
ExpC1CaracterCódigo de retorno SEFAZ que será gravado no campo F3_CODRSEF
ExpA7ArrayArray contendo a informação se gera DIRF e os códigos de retenção por imposto
ExpA8ArrayArray contendo informação de Aposentadoria Especial
ExpA9ArrayReservado
ExpA10ArrayArray Integração com SIGAPFS
ExpA11ArrayArray contendo informação que sera gravada na tabela complementar dos itens da NF (DKD)
ExpL3LógicoIndica se realiza a gravação da Classificação para posterior atualização. Uso em Rotina Automática..F.

Passo a passo:

Documento Tipo Normal
#Include "Protheus.ch"
#Include "RwMake.ch"
#Include "TbiConn.ch"

User Function EXEC103()

Local aCab := {}
Local aItem := {}
Local aItens := {}
Local aAutoImp := {}
Local aItensRat := {}
Local aCodRet := {}
Local aParamAux := {}
Local nOpc := 3
Local cNum := ""
Local nI := 0
Local nX := 0
Local nReg := 1

Conout("Inicio: " + Time())

Private lMsErroAuto := .F.
Private lMsHelpAuto := .T.

PREPARE ENVIRONMENT EMPRESA "32" FILIAL "6597" MODULO "COM" FUNNAME "MATA103"

cNum := GetSxeNum("SF1","F1_DOC")
SF1->(dbSetOrder(1))
While SF1->(dbSeek(xFilial("SF1")+cNum))
ConfirmSX8()
cNum := GetSxeNum("SF1","F1_DOC")
EndDo

//Cabeçalho
aadd(aCab,{"F1_TIPO" ,"N" ,NIL})
aadd(aCab,{"F1_FORMUL" ,"N" ,NIL})
aadd(aCab,{"F1_DOC" ,cNum ,NIL})
aadd(aCab,{"F1_SERIE" ,"1 " ,NIL})
aadd(aCab,{"F1_EMISSAO" ,DDATABASE ,NIL})
aadd(aCab,{"F1_DTDIGIT" ,DDATABASE ,NIL})
aadd(aCab,{"F1_FORNECE" ,"001 " ,NIL})
aadd(aCab,{"F1_LOJA" ,"01" ,NIL})
aadd(aCab,{"F1_ESPECIE" ,"CTE" ,NIL})
aadd(aCab,{"F1_COND" ,"001" ,NIL})
aadd(aCab,{"F1_DESPESA" ,10 ,NIL})
aadd(aCab,{"F1_DESCONT" , 0 ,Nil})
aadd(aCab,{"F1_SEGURO" , 0 ,Nil})
aadd(aCab,{"F1_FRETE" , 0 ,Nil})
aadd(aCab,{"F1_MOEDA" , 1 ,Nil})
aadd(aCab,{"F1_TXMOEDA" , 1 ,Nil})
aadd(aCab,{"F1_STATUS" , "A" ,Nil})

//Itens
For nX := 1 To 1
          aItem := {}
          aadd(aItem,{"D1_ITEM" ,StrZero(nX,4) ,NIL})
          aadd(aItem,{"D1_COD" ,PadR("0001",TamSx3("D1_COD")[1]) ,NIL})
          aadd(aItem,{"D1_UM" ,"UN" ,NIL})
          aadd(aItem,{"D1_LOCAL" ,"01" ,NIL})
          aadd(aItem,{"D1_QUANT" ,1 ,NIL})
          aadd(aItem,{"D1_VUNIT" ,7508.33 ,NIL})
          aadd(aItem,{"D1_TOTAL" ,7508.33 ,NIL})
          aadd(aItem,{"D1_TES" ,"001" ,NIL})
          aadd(aItem,{"D1_RATEIO" ,"1" ,NIL})

         if(nOpc == 4)//Se for classificação deve informar a variável LINPOS

              aAdd(aItem, {"LINPOS" , "D1_ITEM",  StrZero(nX,4)}) //ou SD1->D1_ITEM  se estiver posicionado.

         endIf


       aAdd(aItens,aItem)
Next nX

//Rateio de Centro de Custo
aItem := {}
aAdd(aItensRat, Array(2))
aItensRat[Len(aItensRat)][1] := "0001"
aItensRat[Len(aItensRat)][2] := {}

aAdd(aItem, {"DE_FILIAL" , xFilial("SDE") , Nil})
aAdd(aItem, {"DE_ITEM" , StrZero(1,TamSx3("DE_ITEM")[1]) , Nil})
aAdd(aItem, {"DE_DOC" , cNum , Nil})
aAdd(aItem, {"DE_SERIE" , "1" , Nil})
aAdd(aItem, {"DE_FORNECE" , "001 " , Nil})
aAdd(aItem, {"DE_LOJA" , "01" , Nil})
aAdd(aItem, {"DE_ITEMNF" , "0001" , Nil})
aAdd(aItem, {"DE_PERC" , 100 , Nil})
aAdd(aItem, {"DE_CC" , "01" , Nil})
aAdd(aItensRat[Len(aItensRat)][2], aClone(aItem))

//Array contendo a informação se gera DIRF e os códigos de retenção por imposto
aAdd( aCodRet, {01, "0297", 1, "..."} )
aAdd( aCodRet, {02, "0297", 1, "IRR"} )
aAdd( aCodRet, {03, "5979", 1, "PIS"} )
aAdd( aCodRet, {04, "5960", 1, "COF"} )
aAdd( aCodRet, {05, "5987", 1, "CSL"} )

// Exemplo para manipular o pergunte MTA103
aAdd(aParamAux, {"MV_PAR01", 2}) //-- Mostra Lanc. Contabil? 1 = Sim, 2 = Não
aAdd(aParamAux, {"MV_PAR06", 1}) //-- Contabilizacao Online? 1 = Sim, 2 = Não



//3-Inclusão / 4-Classificação / 5-Exclusão
MSExecAuto({|x,y,z,k,a,b| MATA103(x,y,z,,,,k,a,,,b)},aCab,aItens,nOpc,aParamAux,aItensRat,aCodRet)

If !lMsErroAuto
ConOut(" Incluido NF: " + cNum)
Else
MostraErro()
ConOut("Erro na inclusao!")
EndIf

ConOut("Fim: " + Time())

RESET ENVIRONMENT

Return
Documento Tipo Complemento
#Include "Protheus.ch"
#Include "RwMake.ch"
#Include "TbiConn.ch"

User Function EXEC103()

Local aCab := {}
Local aItem := {}
Local aItens := {}
Local nOpc := 3
Local cNum := ""
Local nI := 0
Local nX := 0

Conout("Inicio: " + Time())

Private lMsErroAuto := .F.
Private lMsHelpAuto := .T.

PREPARE ENVIRONMENT EMPRESA "32" FILIAL "6597" MODULO "COM" FUNNAME "MATA103"

cNum := GetSxeNum("SF1","F1_DOC")
SF1->(dbSetOrder(1))
While SF1->(dbSeek(xFilial("SF1")+cNum))
ConfirmSX8()
cNum := GetSxeNum("SF1","F1_DOC")
EndDo

//Cabeçalho
aadd(aCab,{"F1_TIPO" ,"C" ,NIL})
aadd(aCab,{"F1_TPCOMPL" ,"3" ,NIL})
aadd(aCab,{"F1_DOC" ,cNum ,NIL})
aadd(aCab,{"F1_SERIE" ,"1 " ,NIL})
aadd(aCab,{"F1_FORNECE" ,"001 " ,NIL})
aadd(aCab,{"F1_LOJA" ,"01" ,NIL})
aadd(aCab,{"F1_EMISSAO" ,DDATABASE ,NIL})
aadd(aCab,{"F1_DTDIGIT" ,DDATABASE ,NIL})
aadd(aCab,{"F1_FORMUL" ,"N" ,NIL})
aadd(aCab,{"F1_ESPECIE" ,"CTE" ,NIL})
aadd(aCab,{"F1_COND" ,"001" ,NIL})
aadd(aCab,{"F1_MODAL" ,"01" ,NIL})
aadd(aCab,{"F1_TPFRETE" ,"C" ,NIL})
aadd(aCab,{"F1_TPCTE" ,"N" ,NIL})
aadd(aCab,{"F1_EST" ,"SP" ,NIL})
aadd(aCab,{"F1_DESCONT" , 0 , Nil})
aadd(aCab,{"F1_SEGURO" , 0 , Nil})
aadd(aCab,{"F1_FRETE" , 0 , Nil})
aadd(aCab,{"F1_MOEDA" , 1 , Nil})
aadd(aCab,{"F1_TXMOEDA" , 1 , Nil})
aadd(aCab,{"F1_STATUS" , "A" , Nil})

//Itens
For nX := 1 To 1
aItem := {}
aadd(aItem,{"D1_ITEM" ,StrZero(nX,4) ,NIL})
aadd(aItem,{"D1_COD" ,PadR("0001",TamSx3("D1_COD")[1]) ,NIL})
aadd(aItem,{"D1_UM" ,"UN" ,NIL})
aadd(aItem,{"D1_LOCAL" ,"01" ,NIL})
aadd(aItem,{"D1_VUNIT" ,1000 ,NIL})
aadd(aItem,{"D1_TOTAL" ,1000 ,NIL})
aadd(aItem,{"D1_TES" ,"001" ,NIL})
aadd(aItem,{"D1_NFORI" ,"000009015" ,NIL})
aadd(aItem,{"D1_SERIORI" ,"1 " ,NIL})
aadd(aItem,{"D1_ITEMORI" ,"0001" ,NIL})
aAdd(aItens,aItem)
Next nX




//Impostos (Informar a referência do imposto, que consta no valid do campo)

//Para impostos de cabeçalho informar: referência, valor  
aAutoImp := { {"NF_FRETE" ,  10},;
                         {"NF_VALIPI",  15},;
                         {"NF_VALICM",7}}

//Para impostos de Itens informar: referência, valor, número da linha
aAdd(aAutoImp, {'IT_BASEICM', 100, 1}) //Base

aAdd(aAutoImp, {'IT_ALIQICM',12,    1}) //Porcentagem Imposto

aAdd(aAutoImp, {'IT_VALICM', 12,     1}) //Valor imposto 




//3-Inclusão / 4-Classificação / 5-Exclusão
MSExecAuto({|x,y,z,a,b| MATA103(x,y,z,,a,,,,,)},aCabec,aItens,3,aAutoImp)

If !lMsErroAuto
ConOut(" Incluido NF: " + cNum)
Else
MostraErro()
ConOut("Erro na inclusao!")
EndIf

ConOut("Fim: " + Time())

RESET ENVIRONMENT

Return
Documento Tipo Normal Vinculado ao Pedido de Compras
#Include "Protheus.ch"
#Include "RwMake.ch"
#Include "TbiConn.ch"

User Function EXEC103()

Local aCab := {}
Local aItem := {}
Local aItens := {}
Local aAutoImp := {}
Local aItensRat := {}
Local aCodRet := {}
Local aParamAux := {}
Local nOpc := 3
Local cNum := ""
Local nI := 0
Local nX := 0
Local nReg := 1

Conout("Inicio: " + Time())

Private lMsErroAuto := .F.
Private lMsHelpAuto := .T.

PREPARE ENVIRONMENT EMPRESA "32" FILIAL "6597" MODULO "COM" FUNNAME "MATA103"

cNum := GetSxeNum("SF1","F1_DOC")
SF1->(dbSetOrder(1))
While SF1->(dbSeek(xFilial("SF1")+cNum))
ConfirmSX8()
cNum := GetSxeNum("SF1","F1_DOC")
EndDo

//Cabeçalho
aadd(aCab,{"F1_TIPO" ,"N" ,NIL})
aadd(aCab,{"F1_FORMUL" ,"N" ,NIL})
aadd(aCab,{"F1_DOC" ,cNum ,NIL})
aadd(aCab,{"F1_SERIE" ,"1 " ,NIL})
aadd(aCab,{"F1_EMISSAO" ,DDATABASE ,NIL})
aadd(aCab,{"F1_DTDIGIT" ,DDATABASE ,NIL})
aadd(aCab,{"F1_FORNECE" ,"001 " ,NIL})
aadd(aCab,{"F1_LOJA" ,"01" ,NIL})
aadd(aCab,{"F1_ESPECIE" ,"CTE" ,NIL})
aadd(aCab,{"F1_COND" ,"001" ,NIL})
aadd(aCab,{"F1_DESPESA" ,10 ,NIL})
aadd(aCab,{"F1_DESCONT" , 0 ,Nil})
aadd(aCab,{"F1_SEGURO" , 0 ,Nil})
aadd(aCab,{"F1_FRETE" , 0 ,Nil})
aadd(aCab,{"F1_MOEDA" , 1 ,Nil})
aadd(aCab,{"F1_TXMOEDA" , 1 ,Nil})
aadd(aCab,{"F1_STATUS" , "A" ,Nil})

//Itens
For nX := 1 To 1
          aItem := {}
          aadd(aItem,{"D1_ITEM" ,StrZero(nX,4) ,NIL})
          aadd(aItem,{"D1_COD" ,PadR("0001",TamSx3("D1_COD")[1]) ,NIL})
          aadd(aItem,{"D1_UM" ,"UN" ,NIL})
          aadd(aItem,{"D1_LOCAL" ,"01" ,NIL})
          aadd(aItem,{"D1_QUANT" ,1 ,NIL})
          aadd(aItem,{"D1_VUNIT" ,7508.33 ,NIL})
          aadd(aItem,{"D1_TOTAL" ,7508.33 ,NIL})
          aadd(aItem,{"D1_TES" ,"001" ,NIL})
          aadd(aItens,aItem)
          aadd(aItens[Len(aItens)], {'D1_PEDIDO ', '000034' ,}) // Número do Pedido de Compras
          aadd(aItens[Len(aItens)], {'D1_ITEMPC ', '0001' ,}) // Item do Pedido de Compras

         if(nOpc == 4)//Se for classificação deve informar a variável LINPOS

              aAdd(aItem, {"LINPOS" , "D1_ITEM",  StrZero(nX,4)}) //ou SD1->D1_ITEM  se estiver posicionado.

         endIf

Next nX

//3-Inclusão / 4-Classificação / 5-Exclusão
MSExecAuto({|x,y,z,k,a,b| MATA103(x,y,z,,,,k,a,,,b)},aCab,aItens,nOpc,aParamAux,aItensRat,aCodRet)

If !lMsErroAuto
ConOut(" Incluido NF: " + cNum)
Else
MostraErro()
ConOut("Erro na inclusao!")
EndIf

ConOut("Fim: " + Time())

RESET ENVIRONMENT

Return
Documento Tipo Devolução
#Include "Protheus.ch"
#Include "RwMake.ch"
#Include "TbiConn.ch"

User Function EXEC103()

Local aCab := {}
Local aItem := {}
Local aItens := {}
Local nOpc := 3
Local cNum := ""
Local nI := 0
Local nX := 0

Conout("Inicio: " + Time())

Private lMsErroAuto := .F.
Private lMsHelpAuto := .T.

PREPARE ENVIRONMENT EMPRESA "32" FILIAL "6597" MODULO "COM" FUNNAME "MATA103"

cNum := GetSxeNum("SF1","F1_DOC")
SF1->(dbSetOrder(1))
While SF1->(dbSeek(xFilial("SF1")+cNum))
ConfirmSX8()
cNum := GetSxeNum("SF1","F1_DOC")
EndDo

//Cabeçalho
aadd(aCab,{"F1_TIPO" ,"D" ,NIL})
aadd(aCab,{"F1_DOC" ,cNum ,NIL})
aadd(aCab,{"F1_SERIE" ,"1 " ,NIL})
aadd(aCab,{"F1_FORNECE" ,"001 " ,NIL})
aadd(aCab,{"F1_LOJA" ,"01" ,NIL})
aadd(aCab,{"F1_EMISSAO" ,DDATABASE ,NIL})
aadd(aCab,{"F1_DTDIGIT" ,DDATABASE ,NIL})
aadd(aCab,{"F1_FORMUL" ,"N" ,NIL})
aadd(aCab,{"F1_ESPECIE" ,"NFE" ,NIL})
aadd(aCab,{"F1_COND" ,"001" ,NIL})
aadd(aCab,{"F1_EST" ,"SP" ,NIL})
aadd(aCab,{"F1_DESCONT" , 0 , Nil})
aadd(aCab,{"F1_SEGURO" , 0 , Nil})
aadd(aCab,{"F1_FRETE" , 0 , Nil})
aadd(aCab,{"F1_MOEDA" , 1 , Nil})
aadd(aCab,{"F1_TXMOEDA" , 1 , Nil})
aadd(aCab,{"F1_STATUS" , "A" , Nil})

//Itens
For nX := 1 To 1
aItem := {}

aadd(aItem,{"D1_ITEM" ,StrZero(nX,4) ,NIL})
aadd(aItem,{"D1_COD" ,PadR("0001",TamSx3("D1_COD")[1]) ,NIL})
aadd(aItem,{"D1_UM" ,"UN" ,NIL})
aadd(aItem,{"D1_LOCAL" ,"01" ,NIL})
aadd(aItem,{"D1_LOTECTL" ,"123456" ,NIL}) //Caso produto possua lote, informar o numero.
aadd(aItem,{"D1_QUANT" ,1 ,NIL})
aadd(aItem,{"D1_VUNIT" ,1000 ,NIL})
aadd(aItem,{"D1_TOTAL" ,1000 ,NIL})
aadd(aItem,{"D1_TES" ,"001" ,NIL})
aadd(aItem,{"D1_NFORI" ,"000009015" ,NIL})
aadd(aItem,{"D1_SERIORI" ,"1 " ,NIL})
aadd(aItem,{"D1_ITEMORI" ,"0001" ,NIL})

aAdd(aItens,aItem)
Next nX




//3-Inclusão / 4-Classificação / 5-Exclusão
MSExecAuto({|x,y,z| MATA103(x,y,z)},aCab,aItens,nOpc)

If !lMsErroAuto
ConOut(" Incluido NF: " + cNum)
Else
MostraErro()
ConOut("Erro na inclusao!")
EndIf

ConOut("Fim: " + Time())

RESET ENVIRONMENT

Return
Documento Vincular (SDH)
#Include "Protheus.ch"
#Include "RwMake.ch"
#Include "TbiConn.ch"

User Function EXECSDH()

Local aDadosVin := {}

Local cDocOri   := "000130   "
Local cSerOri    := "1  "
Local cForn     := "001   "
Local cLoja     := "01"
Local cProduto  := "0001"
Local cSeqOri   := ""
Local cNumSeq   := ""
Local cDocDef   := "200001   "
Local cSerDef   := "1  "
Local cDHOper   := "1"
Local cCodCli   := ""
Local cLojaCli  := ""
Local cTES      := "001"
Local nQuantidad:= 2
Local nOpcX     := 2 //2-Inclui / 3-Exclui
Local nRecno    := 0

Private lMsErroAuto := .F.

PREPARE ENVIRONMENT EMPRESA "01" FILIAL "1001" MODULO "COM" FUNNAME "MATA103"

cDocOri     := Padr(cDocOri,TamSX3("DH_DOC")[1])
cSerOri     := Padr(cSerOri,TamSX3("DH_SERIE")[1])
cForn       := Padr(cForn,TamSX3("DH_FORNECE")[1])
cLoja       := Padr(cLoja,TamSX3("DH_LOJAFOR")[1])
cProduto    := Padr(cProduto,TamSX3("DH_PRODUTO")[1])
cSeqOri     := Padr("0001",TamSX3("DH_ITEM")[1])
cDocDef     := Padr(cDocDef,TamSX3("DH_DOC")[1])
cSerDef     := Padr(cSerDef,TamSX3("DH_SERIE")[1])

DbSelectArea("SD1")
SD1->(DbSetOrder(1))
If SD1->(DbSeek(xFilial("SD1") + cDocOri + cSerOri + cForn + cLoja + cProduto + cSeqOri))
    cNumSeq := SD1->D1_NUMSEQ

    If nOpcx == 3 //Exclusao
        DbSelectArea("SDH")
        SDH->(DbSetOrder(1))
        If SDH->(DbSeek(xFilial("SDH") + cNumSeq))
            nRecno := SDH->(Recno())
        Endif
    Endif

    aAdd(aDadosVin,{'DH_DOC'            , cDocDef                                       , Nil})
    aAdd(aDadosVin,{'DH_SERIE'           , cSerDef                                   , Nil})
    aAdd(aDadosVin,{'DH_TES'              , cTES                                      , Nil})
    aAdd(aDadosVin,{'DH_FORNECE'    , Padr(cForn,TamSX3("DH_FORNECE")[1])               , Nil})
    aAdd(aDadosVin,{'DH_LOJAFOR'     , Padr(cLoja,TamSX3("DH_LOJAFOR")[1])               , Nil})
    aAdd(aDadosVin,{'DH_PRODUTO'    , Padr(cProduto,TamSX3("DH_PRODUTO")[1])        , Nil})
    aAdd(aDadosVin,{'DH_ITEM'            , cSeqOri       , Nil})
    aAdd(aDadosVin,{'DH_IDENTNF'     , Padr(cNumSeq,TamSX3("DH_IDENTNF")[1])  , Nil})
    aAdd(aDadosVin,{'DH_TPMOV'       , Padr('1',TamSX3("DH_TPMOV")[1])               , Nil})
    aadd(aDadosVin,{'DH_OPER'           , Padr( cDHOper,        TamSX3("DH_OPER")[1] )  , Nil})
    aAdd(aDadosVin,{'DH_CLIENTE'      , cCodCli                                       , Nil})
    aAdd(aDadosVin,{'DH_LOJACLI'      , cLojaCli                                      , Nil})
    aAdd(aDadosVin,{'DH_QUANT'       , nQuantidad                                , Nil})
    aAdd(aDadosVin,{'DH_ITEMCOB'    , StrZero(1,TamSX3("DH_ITEMCOB")[1]), Nil})
    

    If nOpcx == 3 //Exclusão
        aAdd(aDadosVin,{'DH_REC_WT' , nRecno, Nil})
    Endif

    MSExecAuto({|a,b,c,d,e| NfeDocVin(a,b,c,d,e)},,,nOpcx,,aDadosVin) 

    If lMsErroAuto 
        MostraErro()
    Else
        Conout("Inserido Vinculo: " + cDocDef)
    Endif
Endif

RESET ENVIRONMENT

Return
Documento Cobertura
#Include "Protheus.ch"
#Include "RwMake.ch"
#Include "TbiConn.ch"

#Include "Coverege.ch"




User Function EXECCOB()

Local cDocDef   := "200001   "
Local cSerDef   := "1  "
Local cForn     := "001   "
Local cLoja     := "01"
Local cProduto  := "0001"
Local nQuantidad:= 2 

Local cDocOri   := "000130   "
Local cSerOri   := "1  "
Local cSeqOri   := ""
Local cTpMov    := "1"
Local cCodCli   := ""
Local cLojCli   := ""
Local cDHOper   := "1"
Local aCab103   := {}
Local aDadosCob := {}
Local cTes      := "001"
Local nOpcX     := 3 //3-Inclui / 5-Exclui

Private lMsErroAuto := .F.

PREPARE ENVIRONMENT EMPRESA "01" FILIAL "1001" MODULO "COM" FUNNAME "MATA103"

cDocDef     := Padr(cDocDef,TamSX3("DH_DOC")[1])
cSerDef     := Padr(cSerDef,TamSX3("DH_SERIE")[1])
cForn       := Padr(cForn,TamSX3("DH_FORNECE")[1])
cLoja       := Padr(cLoja,TamSX3("DH_LOJAFOR")[1])
cProduto    := Padr(cProduto,TamSX3("DH_PRODUTO")[1])

cDocOri     := Padr(cDocOri,TamSX3("DH_DOC")[1])
cSerOri     := Padr(cSerOri,TamSX3("DH_SERIE")[1])
cSeqOri     := Padr("0001",TamSX3("DH_ITEM")[1])
cCodCli     := Padr(cCodCli,TamSX3("DH_CLIENTE")[1])
cLojCli     := Padr(cLojCli,TamSX3("DH_LOJACLI")[1])
cTpMov      := Padr('1',TamSX3("DH_TPMOV")[1])
cDHOper     := Padr( cDHOper,        TamSX3("DH_OPER")[1] )

DbSelectArea("SDH")
SDH->(DbSetOrder(2))
If SDH->(DbSeek(xFilial('SDH')+cTpMov+cSerDef+cDocDef+cSeqOri+cCodCli+cLojCli+cForn+cLoja+cDHOper))
                            
    aAdd(aCab103,{"F1_DOC"    , cDocDef     , Nil})
    aAdd(aCab103,{"F1_SERIE"  , cSerDef     , Nil})
    aAdd(aCab103,{"F1_TIPO"   , "N"         , Nil})
    aAdd(aCab103,{"F1_FORNECE", cForn       , Nil})
    aAdd(aCab103,{"F1_LOJA"   , cLoja   , Nil})
    aAdd(aCab103,{"F1_EMISSAO", dDataBase, Nil})
    aAdd(aCab103,{"F1_DTDIGIT", dDataBase, Nil})
    aAdd(aCab103,{"F1_FORMUL" , "N"         , Nil})
    aAdd(aCab103,{"F1_ESPECIE", "NFE"   , Nil})
    aAdd(aCab103,{"F1_COND"   , "001"   , Nil})

    aAdd(aDadosCob,Array(CB_MAXCOL))  
                                                                    
    aTail(aDadosCob)[CB_DOC]        := cDocOri
    aTail(aDadosCob)[CB_SERIE]      := cSerOri
    aTail(aDadosCob)[CB_SEQ]        := cSeqOri
    aTail(aDadosCob)[CB_VLRUNIT]    := 1000
    aTail(aDadosCob)[CB_TES]        := cTes
    aTail(aDadosCob)[CB_REGSDH]     := SDH->(Recno())
    aTail(aDadosCob)[CB_PRODUTO]    := cProduto      
    aTail(aDadosCob)[CB_QUANT]      := nQuantidad      
    aTail(aDadosCob)[CB_BASIPI]     := 0        
    aTail(aDadosCob)[CB_TAXIPI]     := 0        
    aTail(aDadosCob)[CB_VALIPI]     := 0        
    aTail(aDadosCob)[CB_BASICM]     := 0        
    aTail(aDadosCob)[CB_TAXICM]     := 0        
    aTail(aDadosCob)[CB_VALICM]     := 0        
    aTail(aDadosCob)[CB_VALDES]     := 0       
    aTail(aDadosCob)[CB_CFOP]       := GetAdvFVal("SF4","F4_CF",xFilial("SF4") + cTes)
    aTail(aDadosCob)[CB_LOCAL]      := GetAdvFVal("SB1","B1_LOCPAD",xFilial("SB1") + cProduto)

    MSExecAuto({|a,b,c,d,e,f,g| NfeNfeCob(a,b,c,d,e,f,g)},,,nOpcX,,aCab103,aDadosCob)
    
    If lMsErroAuto 
        MostraErro()
    Else
        Conout("Inserido Cobertura: " + cDocDef)
    Endif
Endif

RESET ENVIRONMENT

Return
Documento Tipo Normal com Aposentadoria Especial
#Include "Protheus.ch"
#Include "RwMake.ch"
#Include "TbiConn.ch"

User Function EXEC103()

Local aCab          := {}
Local aItem         := {}
Local aItens        := {}
Local aItensApo     := {}
Local nOpc          := 3
Local cNum          := ""
Local nI            := 0
Local nX            := 0
Local nReg          := 1

Private lMsErroAuto := .F.
Private lMsHelpAuto := .T.

PREPARE ENVIRONMENT EMPRESA "01" FILIAL "1001" MODULO "COM" FUNNAME "MATA103" 

    If nOpc == 3
        cNum := GetSxeNum("SF1","F1_DOC")   
        SF1->(dbSetOrder(1))        
        While SF1->(dbSeek(xFilial("SF1")+cNum))            
            ConfirmSX8()            
            cNum := GetSxeNum("SF1","F1_DOC")       
        EndDo
    Elseif nOpc == 5
       cNum := "000000004"
    Endif       

    aadd(aCab,{"F1_DOC"         ,cNum       ,NIL})
    aadd(aCab,{"F1_SERIE"       ,"1  "      ,NIL})
    aadd(aCab,{"F1_FORNECE"     ,"001   " ,NIL})
    aadd(aCab,{"F1_LOJA"        ,"01"         ,NIL})
    aadd(aCab,{"F1_EMISSAO"     ,DDATABASE  ,NIL})
    aadd(aCab,{"F1_DTDIGIT"     ,DDATABASE  ,NIL})
    aadd(aCab,{"F1_TIPO"        ,"N"        ,NIL})
    aadd(aCab,{"F1_FORMUL"      ,"N"        ,NIL})
    aadd(aCab,{"F1_ESPECIE"     ,"NFE"      ,NIL})
    aadd(aCab,{"F1_COND"        ,"001"      ,NIL})
    aadd(aCab,{"F1_EST"         ,"SP"       ,NIL})
    aadd(aCab,{"F1_DESPESA" , 0 , Nil})
    aadd(aCab,{"F1_DESCONT" , 0 , Nil})
    aadd(aCab,{"F1_SEGURO" , 0 , Nil})
    aadd(aCab,{"F1_FRETE" , 0 , Nil})
    aadd(aCab,{"F1_MOEDA" , 1 , Nil})
    aadd(aCab,{"F1_TXMOEDA" , 1 , Nil})
    aadd(aCab,{"F1_STATUS" , "A" , Nil})
    aadd(aCab,{"F1_VOLUME1",0, Nil})
    aadd(aCab,{"F1_PLIQUI",0, Nil})
    aadd(aCab,{"F1_PBRUTO",0, Nil})
    
    For nX := 1 To 1
        cProd1 :="0001            " 
        
        aItem := {}
        aadd(aItem,{"D1_ITEM"       ,StrZero(nX,4) ,NIL})
        aadd(aItem,{"D1_COD"        ,PadR(cProd1,TamSx3("D1_COD")[1]) ,NIL})
        aadd(aItem,{"D1_UM"         ,"UN"   ,NIL}) 
        aadd(aItem,{"D1_LOCAL"      ,"01"   ,NIL})
        aadd(aItem,{"D1_QUANT"      ,1      ,NIL}) 
        aadd(aItem,{"D1_VUNIT"      ,1000     ,NIL}) 
        aadd(aItem,{"D1_TOTAL"      ,1000      ,NIL})
        aadd(aItem,{"D1_TES"        ,"001"  ,NIL})
        aAdd(aItens,aItem)
    Next nX
    
    If nOpc == 3
        aItem := {}
        aAdd(aItensApo, Array(2))
        aItensApo[Len(aItensApo)][1] := "0001"
        aItensApo[Len(aItensApo)][2] := {}
    
        aAdd(aItem, {"DHP_FILIAL"   , xFilial("DHP")                    , Nil})
        aAdd(aItem, {"DHP_DOC"      , cNum                              , Nil})
        aAdd(aItem, {"DHP_SERIE"    , "1"                               , Nil})
        aAdd(aItem, {"DHP_FORNECE"  , "001   "                          , Nil})
        aAdd(aItem, {"DHP_LOJA"     , "01"                              , Nil})
        aAdd(aItem, {"DHP_FAIXA1"   , 10                                , Nil})
        aAdd(aItem, {"DHP_FAIXA2"   , 20                                , Nil})
        aAdd(aItem, {"DHP_FAIXA3"   , 30                                , Nil})
        aAdd(aItensApo[Len(aItensApo)][2], aClone(aItem))
    Endif
    
    MSExecAuto({|x,y,z,a| MATA103(x,y,z,,,,,,,,,a)},aCab,aItens,nOpc,aItensApo)
    
    If !lMsErroAuto
        ConOut("    Incluido NF: " + cNum) 
    Else
        MostraErro()
        ConOut("Erro na inclusao!")
        Exit
    EndIf
Next nI

RESET ENVIRONMENT

Return
Documento Devolução - Terceiros
User Function EXEC103()

Local aCabec := {}
Local aItens := {}
Local aLinha := {}
Local cDoc := ""
PRIVATE lMsErroAuto := .F.

ConOut(PadC(OemToAnsi("Teste de Inclusao de NFE DEVOLUCAO COM NOTA DE ORIGEM NFS"),80))

PREPARE ENVIRONMENT EMPRESA "99" FILIAL "01" MODULO "COM" FUNNAME "MATA103"

cDoc := "DEV000002"
aCabec := {}
aItens := {}

aadd(aCabec,{"F1_TIPO" ,"D" })
aadd(aCabec,{"F1_FORMUL" ,"N" })
aadd(aCabec,{"F1_DOC" ,cDoc })
aadd(aCabec,{"F1_SERIE" ,"000" })
aadd(aCabec,{"F1_EMISSAO" ,dDataBase })
aadd(aCabec,{"F1_FORNECE" ,"2 " })
aadd(aCabec,{"F1_LOJA" ,"1 " })
aadd(aCabec,{"F1_ESPECIE" ,"NFE" })


aLinha := {}
aadd(aLinha,{"D1_ITEM" ,"001" ,Nil})
aadd(aLinha,{"D1_COD" ,"2 " ,Nil})
aadd(aLinha,{"D1_QUANT" ,1 ,Nil})
aadd(aLinha,{"D1_VUNIT" ,10 ,Nil})
aadd(aLinha,{"D1_TOTAL" ,10 ,Nil})
aadd(aLinha,{"D1_TES" ,"101" ,Nil})//TES DEVOLUÇÃO
aAdd(aLinha,{"D1_CF" ,"000 " ,Nil})
aAdd(aLinha,{"D1_DOC" ,cDoc ,Nil}) // *
aAdd(aLinha,{"D1_SERIE" ,"000" ,Nil}) // *
aAdd(aLinha,{"D1_EMISSAO",dDataBase ,Nil}) // ADICIONEI
aadd(aLinha,{"D1_NFORI" ,"000005 " ,Nil}) // nota de origem
aadd(aLinha,{"D1_SERIORI","1 " ,Nil})
aadd(aLinha,{"D1_ITEMORI","01" ,Nil})
AAdd(aLinha,{"D1_IDENTB6","000334" ,Nil}) // d2_nunseq
aadd(aLinha,{"AUTDELETA" ,"N" ,Nil})
aadd(aItens,aLinha)

MSExecAuto({|x,y,z| mata103(x,y,z)},aCabec,aItens,3)

If !lMsErroAuto
ConOut("Incluido com sucesso! "+cDoc)
Else
ConOut("Erro na inclusao!")
mostraerro()
EndIf

ConOut(OemToAnsi("Fim : ")+Time())

RESET ENVIRONMENT

Return(.T.)
Documento Beneficiamento - Terceiros
#Include "Protheus.ch"
#Include "RwMake.ch"
#Include "TbiConn.ch"

User Function EXEC103()

Local aCab          := {}
Local aItem         := {}
Local aItens        := {}
Local nOpc          := 3
Local cNum          := ""
Local nI            := 0
Local nX            := 0
Local nReg          := 1
Local cInicio       := Time()

Private lMsErroAuto := .F.
Private lMsHelpAuto := .T.

PREPARE ENVIRONMENT EMPRESA "01" FILIAL "1001" MODULO "COM" FUNNAME "MATA103"

For nI := 1 To nReg
    lMsErroAuto := .F.  
    aCab := {}
    aItem := {}
    aItens := {}
   
    If nOpc == 3
        cNum := GetSxeNum("SF1","F1_DOC")  
        SF1->(dbSetOrder(1))        
        While SF1->(dbSeek(xFilial("SF1")+cNum))            
            ConfirmSX8()            
            cNum := GetSxeNum("SF1","F1_DOC")      
        EndDo
    Endif      

    aadd(aCab,{"F1_DOC"         ,cNum       ,NIL})
    aadd(aCab,{"F1_SERIE"       ,"1  "      ,NIL})
    aadd(aCab,{"F1_FORNECE"     ,"001   "   ,NIL})
    aadd(aCab,{"F1_LOJA"        ,"01"       ,NIL})
    aadd(aCab,{"F1_EMISSAO"     ,DDATABASE  ,NIL})
    aadd(aCab,{"F1_DTDIGIT"     ,DDATABASE  ,NIL})
    aadd(aCab,{"F1_TIPO"        ,"B"        ,NIL})
    aadd(aCab,{"F1_FORMUL"      ,"N"        ,NIL})
    aadd(aCab,{"F1_ESPECIE"     ,"NFE"      ,NIL})
    aadd(aCab,{"F1_COND"        ,"001"      ,NIL})
    aadd(aCab,{"F1_DESPESA" , 0 , Nil})
    aadd(aCab,{"F1_DESCONT" , 0 , Nil})
    aadd(aCab,{"F1_SEGURO" , 0 , Nil})
    aadd(aCab,{"F1_FRETE" , 0 , Nil})
    aadd(aCab,{"F1_MOEDA" , 1 , Nil})
    aadd(aCab,{"F1_TXMOEDA" , 1 , Nil})
    aadd(aCab,{"F1_STATUS" , "A" , Nil})
    aadd(aCab,{"F1_VOLUME1",0, Nil})
    aadd(aCab,{"F1_PLIQUI",0, Nil})
    aadd(aCab,{"F1_PBRUTO",0, Nil})
   
    For nX := 1 To 1
        cProd1 := "0001           "
       
        aItem := {}
        aadd(aItem,{"D1_ITEM"       ,"0001" ,NIL})
        aadd(aItem,{"D1_COD"        ,PadR(cProd1,TamSx3("D1_COD")[1]) ,NIL})
        aadd(aItem,{"D1_UM"         ,"UN"   ,NIL})
        aadd(aItem,{"D1_LOCAL"      ,"01"   ,NIL})
        aadd(aItem,{"D1_QUANT"      ,10     ,NIL})
        aadd(aItem,{"D1_VUNIT"      ,10     ,NIL})
        aadd(aItem,{"D1_TOTAL"      ,100        ,NIL})
        aadd(aItem,{"D1_NFORI"      ,"000132   ",NIL})
        aadd(aItem,{"D1_SERIORI"    ,"1  " ,NIL})
        aadd(aItem,{"D1_ITEMORI"    ,"01" ,NIL})
        aadd(aItem,{"D1_IDENTB6"    ,"000755" ,NIL})
        aadd(aItem,{"D1_TES"        ,"022"  ,NIL}) //TES DEVOLUCAO - Poder3
        aAdd(aItens,aItem)
       
    Next nX
   
    /*If nOpc == 3
        aItem := {}
        aAdd(aItensRat, Array(2))
        aItensRat[Len(aItensRat)][1] := "0001"
        aItensRat[Len(aItensRat)][2] := {}
   
        aAdd(aItem, {"DE_FILIAL"    , xFilial("SDE")                    , Nil})
        aAdd(aItem, {"DE_ITEM"      , StrZero(1,TamSx3("DE_ITEM")[1])   , Nil})
        aAdd(aItem, {"DE_DOC"       , cNum                              , Nil})
        aAdd(aItem, {"DE_SERIE"     , "1"                               , Nil})
        aAdd(aItem, {"DE_FORNECE"   , "001   "                          , Nil})
        aAdd(aItem, {"DE_LOJA"      , "01"                              , Nil})
        aAdd(aItem, {"DE_ITEMNF"    , "0001"                            , Nil})
        aAdd(aItem, {"DE_PERC"      , 100                               , Nil})
        aAdd(aItem, {"DE_CC"        , "01"                              , Nil})
        aAdd(aItensRat[Len(aItensRat)][2], aClone(aItem))
    Endif */

    MSExecAuto({|x,y,z,a| MATA103(x,y,z)},aCab,aItens,nOpc)
    

    If !lMsErroAuto
        ConOut("    Incluido NF: " + cNum)  
    Else
        MostraErro()
        ConOut("Erro na inclusao!")
        Exit
    EndIf
Next nI

Conout("Inicio: " + cInicio)
ConOut("Fim: " + Time())

RESET ENVIRONMENT

Return
Documento Complementar ICMS ou IPI
#Include "Protheus.ch"
#Include "RwMake.ch"
#Include "TbiConn.ch"

User Function EXEC103()

Local aCab          := {}
Local aItem         := {}
Local aItens        := {}
Local nOpc          := 3
Local nI            := 0
Local nX            := 0
Local nReg          := 1
Local cInicio       := Time()

Private lMsErroAuto := .F.
Private lMsHelpAuto := .T.

PREPARE ENVIRONMENT EMPRESA "01" FILIAL "1001" MODULO "COM" FUNNAME "MATA103"

For nI := 1 To nReg
    lMsErroAuto := .F.  
    aCab := {}
    aItem := {}
    aItens := {}
   
    If nOpc == 3

    aadd(aCab,{"F1_SERIE"       ,"1  "      ,NIL})
    aadd(aCab,{"F1_FORNECE"     ,"001   "   ,NIL})
    aadd(aCab,{"F1_LOJA"        ,"01"       ,NIL})
    aadd(aCab,{"F1_EMISSAO"     ,DDATABASE  ,NIL})
    aadd(aCab,{"F1_DTDIGIT"     ,DDATABASE  ,NIL})
    aadd(aCab,{"F1_TIPO"        ,"I"        ,NIL}) // I - Complemento ICMS / P - Complemento IPI
    aadd(aCab,{"F1_FORMUL"      ,"S"        ,NIL})
    aadd(aCab,{"F1_ESPECIE"     ,"NFE"      ,NIL})
    aadd(aCab,{"F1_COND"        ,"001"      ,NIL})
    aadd(aCab,{"F1_DESPESA" , 0 , Nil})
    aadd(aCab,{"F1_DESCONT" , 0 , Nil})
    aadd(aCab,{"F1_SEGURO" , 0 , Nil})
    aadd(aCab,{"F1_FRETE" , 0 , Nil})
    aadd(aCab,{"F1_MOEDA" , 1 , Nil})
    aadd(aCab,{"F1_TXMOEDA" , 1 , Nil})
    aadd(aCab,{"F1_STATUS" , "A" , Nil})
    aadd(aCab,{"F1_VOLUME1",0, Nil})
    aadd(aCab,{"F1_PLIQUI",0, Nil})
    aadd(aCab,{"F1_PBRUTO",0, Nil})
   
    For nX := 1 To 1
        cProd1 := "0001           "
       
        aItem := {}
        aadd(aItem,{"D1_ITEM"       ,"0001" ,NIL})
        aadd(aItem,{"D1_COD"        ,PadR(cProd1,TamSx3("D1_COD")[1]) ,NIL})
        aadd(aItem,{"D1_UM"         ,"UN"   ,NIL})
        aadd(aItem,{"D1_LOCAL"      ,"01"   ,NIL})
        aadd(aItem,{"D1_VUNIT"      ,10     ,NIL})
        aadd(aItem,{"D1_TOTAL"      ,100        ,NIL})
        aadd(aItem,{"D1_NFORI"      ,"000132   ",NIL})
        aadd(aItem,{"D1_SERIORI"    ,"1  " ,NIL})
        aadd(aItem,{"D1_ITEMORI"    ,"01" ,NIL})
        aadd(aItem,{"D1_TES"        ,"066"  ,NIL}) 
        aAdd(aItens,aItem)
       
    Next nX


    MSExecAuto({|x,y,z,a| MATA103(x,y,z)},aCab,aItens,nOpc)
    

    If !lMsErroAuto
        ConOut("   NF_incluída)  
    Else
        MostraErro()
        ConOut("Erro na inclusao!")
        Exit
    EndIf
Next nI

Conout("Inicio: " + cInicio)
ConOut("Fim: " + Time())

RESET ENVIRONMENT

Return
Documento com Complemento de Itens da NF (DKD)
#Include "Protheus.ch"
#Include "RwMake.ch"
#Include "TbiConn.ch"

User Function EXEC103()

Local aCab := {}
Local aItem := {}
Local aItens := {}
Local aAutoImp := {}
Local aItensRat := {}
Local aCodRet := {}
Local aParamAux := {}
Local nOpc := 3
Local cNum := ""
Local nI := 0
Local nX := 0
Local nReg := 1
Local aAuxItDKD := {}
Local aAuxDKD := {}

Conout("Inicio: " + Time())

Private lMsErroAuto := .F.
Private lMsHelpAuto := .T.

PREPARE ENVIRONMENT EMPRESA "32" FILIAL "6597" MODULO "COM" FUNNAME "MATA103"

cNum := GetSxeNum("SF1","F1_DOC")
SF1->(dbSetOrder(1))
While SF1->(dbSeek(xFilial("SF1")+cNum))
ConfirmSX8()
cNum := GetSxeNum("SF1","F1_DOC")
EndDo

//Cabeçalho
aadd(aCab,{"F1_TIPO" ,"N" ,NIL})
aadd(aCab,{"F1_FORMUL" ,"N" ,NIL})
aadd(aCab,{"F1_DOC" ,cNum ,NIL})
aadd(aCab,{"F1_SERIE" ,"1 " ,NIL})
aadd(aCab,{"F1_EMISSAO" ,DDATABASE ,NIL})
aadd(aCab,{"F1_DTDIGIT" ,DDATABASE ,NIL})
aadd(aCab,{"F1_FORNECE" ,"001 " ,NIL})
aadd(aCab,{"F1_LOJA" ,"01" ,NIL})
aadd(aCab,{"F1_ESPECIE" ,"NFE" ,NIL})
aadd(aCab,{"F1_COND" ,"001" ,NIL})
aadd(aCab,{"F1_MOEDA" , 1 ,Nil})
aadd(aCab,{"F1_TXMOEDA" , 1 ,Nil})
aadd(aCab,{"F1_STATUS" , "A" ,Nil})

//Itens
For nX := 1 To 1
          aItem := {}
          aadd(aItem,{"D1_ITEM" ,StrZero(nX,4) ,NIL})
          aadd(aItem,{"D1_COD" ,PadR("0001",TamSx3("D1_COD")[1]) ,NIL})
          aadd(aItem,{"D1_UM" ,"UN" ,NIL})
          aadd(aItem,{"D1_LOCAL" ,"01" ,NIL})
          aadd(aItem,{"D1_QUANT" ,1 ,NIL})
          aadd(aItem,{"D1_VUNIT" ,7508.33 ,NIL})
          aadd(aItem,{"D1_TOTAL" ,7508.33 ,NIL})
          aadd(aItem,{"D1_TES" ,"001" ,NIL})
          aAdd(aItens,aItem)

                   

          aAuxItDKD := {}
          aadd(aAuxItDKD,{"DKD_ITEM"          ,StrZero(nX,TamSx3("D1_ITEM")[1])   ,NIL})
          aadd(aAuxItDKD,{"DKD_TSTNUM"    ,150                                ,NIL})                              //Campo customizado criado na nova tabela complementar DKD
          aAdd(aAuxDKD,aAuxItDKD)


Next nX

//3-Inclusão / 4-Classificação / 5-Exclusão

MSExecAuto({|x,y,z,b,a| MATA103(x,y,z,b,,,,,,,,,,,a)},aCab,aItens,nOpc,.F.,aAuxDKD)

If !lMsErroAuto
ConOut(" Incluido NF: " + cNum)
Else
MostraErro()
ConOut("Erro na inclusao!")
EndIf

ConOut("Fim: " + Time())

RESET ENVIRONMENT

Return
Documento Entrega Futura (DHQ)
#Include "Protheus.ch"
#Include "RwMake.ch"
#Include "TbiConn.ch"

User Function EXECFUT()

Local aCab          := {}
Local cNum         := "COM000"
Local cNum1        := "COM001"
Local aItem         := {}
Local aItens        := {}
Local cSerie    := "100"
Local cFornec   := "000005"
Local cLoja     := "01"
Local cEspecie  := "NFE  " 
Local cProd1    := "001               "
Local nX            := 0
Local cTes       := "043"
Local cPedido      := "TIR469"

Local nOpc     := 3 //3-Inclui / 5-Exclui

Private lMsErroAuto := .F.




PREPARE ENVIRONMENT EMPRESA "99" FILIAL "01" MODULO "COM" FUNNAME "MATA103"

  If nOpc == 3

// Compra com Entrega Futura (simples faturamento)


    aadd(aCab,{"F1_DOC"           ,cNum            ,NIL})
    aadd(aCab,{"F1_SERIE"          ,cSerie            ,NIL})
    aadd(aCab,{"F1_FORNECE"   ,cFornec         ,NIL})
    aadd(aCab,{"F1_LOJA"          ,cLoja              ,NIL})
    aadd(aCab,{"F1_EMISSAO"   ,DDATABASE   ,NIL})
    aadd(aCab,{"F1_DTDIGIT"     ,DDATABASE   ,NIL})
    aadd(aCab,{"F1_TIPO"        ,"N"                   ,NIL})
    aadd(aCab,{"F1_FORMUL"      ,"N"              ,NIL})
    aadd(aCab,{"F1_ESPECIE"     ,cEspecie        ,NIL})
    aadd(aCab,{"F1_COND"        ,"001"            ,NIL})
    aadd(aCab,{"F1_EST"           ,"SP"               ,NIL})
    aadd(aCab,{"F1_DESPESA" , 0                     ,NIL})
    aadd(aCab,{"F1_DESCONT" , 0                   ,NIL})
    aadd(aCab,{"F1_SEGURO" , 0                     ,NIL})
    aadd(aCab,{"F1_FRETE" , 0                        ,NIL})
    aadd(aCab,{"F1_MOEDA" , 1                     ,NIL})
    aadd(aCab,{"F1_TXMOEDA" , 1                 ,NIL})
    aadd(aCab,{"F1_STATUS" , "A"                  ,NIL})
    aadd(aCab,{"F1_VOLUME1",0                   ,NIL})
    aadd(aCab,{"F1_PLIQUI",0                        ,NIL})
    aadd(aCab,{"F1_PBRUTO",0                     ,NIL})

    For nX := 1 To 1
        cProd1 :="001             " 
        
        aItem := {}
        aadd(aItem,{"D1_ITEM"       ,StrZero(nX,4) ,NIL})
        aadd(aItem,{"D1_COD"        ,PadR(cProd1,TamSx3("D1_COD")[1]) ,NIL})
        aadd(aItem,{"D1_UM"         ,"UN"   ,NIL}) 
        aadd(aItem,{"D1_LOCAL"      ,"01"   ,NIL})
        aAdd(aItem, {"D1_PEDIDO" ,cPedido,Nil})
        aAdd(aItem, {"D1_ITEMPC", "0001",Nil})
        aadd(aItem,{"D1_QUANT"      ,100    ,NIL}) 
        aadd(aItem,{"D1_VUNIT"      ,100     ,NIL}) 
        aadd(aItem,{"D1_TOTAL"      ,10000      ,NIL})
        aadd(aItem,{"D1_TES"         ,cTes  ,NIL})
        aAdd(aItens,aItem)
    Next nX


   MSExecAuto({|x,y,z| MATA103(x,y,z)},aCab,aItens,nOpc)
    
    If lMsErroAuto 
        MostraErro()
    Else
        Conout("Entrega Futura incluída: " + cNum)
    Endif
Endif




/***********************************************************************/

// Documento de Entrada representando a remessa da mercadoria

aCab          := {}
aItem         := {}
aItens        := {}
nX            := 0


 If nOpc == 3

    aadd(aCab,{"F1_DOC"         ,cNum1    ,NIL})
    aadd(aCab,{"F1_SERIE"       ,cSerie     ,NIL})
    aadd(aCab,{"F1_FORNECE"     ,cFornec    ,NIL})
    aadd(aCab,{"F1_LOJA"        ,cLoja      ,NIL})
    aadd(aCab,{"F1_EMISSAO"     ,DDATABASE  ,NIL})
    aadd(aCab,{"F1_DTDIGIT"     ,DDATABASE  ,NIL})
    aadd(aCab,{"F1_TIPO"        ,"N"        ,NIL})
    aadd(aCab,{"F1_FORMUL"      ,"N"        ,NIL})
    aadd(aCab,{"F1_ESPECIE"     ,cEspecie   ,NIL})
    aadd(aCab,{"F1_COND"        ,"001"      ,NIL})
    aadd(aCab,{"F1_EST"         ,"SP"       ,NIL})
    aadd(aCab,{"F1_DESPESA" , 0 , Nil})
    aadd(aCab,{"F1_DESCONT" , 0 , Nil})
    aadd(aCab,{"F1_SEGURO" , 0 , Nil})
    aadd(aCab,{"F1_FRETE" , 0 , Nil})
    aadd(aCab,{"F1_MOEDA" , 1 , Nil})
    aadd(aCab,{"F1_TXMOEDA" , 1 , Nil})
    aadd(aCab,{"F1_STATUS" , "A" , Nil})
    aadd(aCab,{"F1_VOLUME1",0, Nil})
    aadd(aCab,{"F1_PLIQUI",0, Nil})
    aadd(aCab,{"F1_PBRUTO",0, Nil})

    For nX := 1 To 1
        cProd1 :="001             " 
        
        aItem := {}
        aadd(aItem,{"D1_ITEM"       ,StrZero(nX,4) ,NIL})
        aadd(aItem,{"D1_COD"        ,PadR(cProd1,TamSx3("D1_COD")[1]) ,NIL})
        aadd(aItem,{"D1_UM"         ,"UN"   ,NIL}) 
        aadd(aItem,{"D1_LOCAL"      ,"01"   ,NIL})
        aadd(aItem,{"D1_QUANT"      ,50     ,NIL}) 
        aadd(aItem,{"D1_VUNIT"      ,100    ,NIL}) 
        aadd(aItem,{"D1_TOTAL"      ,5000   ,NIL})
        aadd(aItem,{"D1_TES"        ,"496"  ,NIL})
        aadd(aItem,{"AUT_ENTFUT", {cNum,"100","0001",0,"0001",cFornec,cLoja},Nil})//Dados para nota fiscal de origem

        aAdd(aItens,aItem)
    Next nX


   MSExecAuto({|x,y,z| MATA103(x,y,z)},aCab,aItens,nOpc)
    
    If lMsErroAuto 
        MostraErro()
    Else
        Conout("Remessa Entrega Futura incluida: " + cNum1)
    Endif

Endif
RESET ENVIRONMENT

Return
Guarda Fiscal - Gravar Dados da Classificação do Documento para Futura finalização da Classificação
#Include "Protheus.ch"
#Include "RwMake.ch"
#Include "TbiConn.ch"

User Function EXEC103()

Local aCab := {}
Local aItem := {}
Local aItens := {}
Local nOpc := 3
Local cNum := ""
Local nI := 0
Local nX := 0
Local nReg := 1
Local cInicio := Time() 

Private lMsErroAuto := .F.
Private lMsHelpAuto := .T.
Private lTemF1GFE := .F. 

PREPARE ENVIRONMENT EMPRESA "T1" FILIAL "D MG 01 " MODULO "COM" FUNNAME "MATA103"

Conout( Replicate( '=', 30 ))
Conout("Inicio: " + cInicio)

For nI := 1 To nReg
    lMsErroAuto := .F.  
    aCab := {}
    aItem := {}
    aItens := {}

    nOpc := 3
    
    If nOpc == 3 
        cNum := GetSxeNum("SF1","F1_DOC")    
        SF1->(dbSetOrder(1))        
        While SF1->(dbSeek(xFilial("SF1")+cNum))            
            ConfirmSX8()            
            cNum := GetSxeNum("SF1","F1_DOC")        
        EndDo
    ElseIf nOpc == 4 .Or. nOpc == 5
        cNum := "COMSP137 " 
    EndIf

    Conout("Documento: " + cNum)

    aadd( aCab, { "F1_FORMUL"      , "N"         ,NIL } )
    aadd( aCab, { "F1_DOC"        , cNum        ,NIL } )
    aadd( aCab, { "F1_SERIE"      , "1  "          ,NIL } )
    aadd( aCab, { "F1_FORNECE"    , "000001"    ,NIL } )
    aadd( aCab, { "F1_LOJA"       , "01"      ,NIL } )
    aadd( aCab, { "F1_EMISSAO"    , DDATABASE    ,NIL } )
    aadd( aCab, { "F1_DTDIGIT"    , DDATABASE    ,NIL } )
    aadd( aCab, { "F1_TIPO"       , "N"         ,NIL } )
    aadd( aCab, { "F1_ESPECIE"     , "NFE"        ,NIL } )
    aadd( aCab, { "F1_COND"       , "000"     ,NIL } ) 

    cProd1 := "000001"
    cItem := StrZero(nX,TamSx3("D1_ITEM")[1])
    aItem := {}
    aadd( aItem, { "D1_ITEM"    , cItem                                , NIL } )
    aadd( aItem, { "D1_COD"       , PadR(cProd1,TamSx3("D1_COD")[1])  , NIL } )
    aadd( aItem, { "D1_UM"      , "UN"                                , NIL } )
    aadd( aItem, { "D1_LOCAL"      , "01"                              , NIL } )
    aadd( aItem, { "D1_QUANT"     , 10                                  , NIL } )
    aadd( aItem, { "D1_VUNIT"      , 1000                                , NIL } )
    aadd( aItem, { "D1_TOTAL"      , 10000                                , NIL } )

    aAdd(aItens,aItem)
    
    MSExecAuto( { |x,y,z| MATA140( x, y, z ) }, aCab, aItens, nOpc ) // Inclusão Pré Nota
    
    If !lMsErroAuto 
        ConOut( "Incluido Pre Nota: " + cNum )
        aItens := {}
        aItem := {}
        aadd( aItem, { "D1_ITEM"    , cItem                                , NIL } )
        aadd( aItem, { "D1_COD"       , PadR(cProd1,TamSx3("D1_COD")[1])  , NIL } )
        aadd( aItem, { "D1_UM"      , "UN"                                , NIL } )
        aadd( aItem, { "D1_LOCAL"      , "01"                              , NIL } )
        aadd( aItem, { "D1_QUANT"     , 10                                  , NIL } )
        aadd( aItem, { "D1_VUNIT"      , 1500                                , NIL } )
        aadd( aItem, { "D1_TOTAL"      , 15000                                , NIL } )
        aadd( aItem, { "D1_TES"       , "001"                             , NIL } )

        aAdd(aItens,aItem)

        nOpc := 4 //Classificação
        lGrvGF := .T.

        MSExecAuto( { |a, b, c, d| MATA103( a, b, c, , , , , , , , , , , , , d ) }, aCab, aItens, nOpc, lGrvGF ) // Realiza a gravação dos dados alterados sem finalizar a Classificação

        If !lMsErroAuto 
            ConOut( "Classificado Documento Fiscal: " + cNum )
        Else
            MostraErro()

            ConOut( "Erro na inclusao!" ) 
            Exit
        EndIf
    Else
        MostraErro()

        ConOut( "Erro na inclusao!" ) 
        Exit
    EndIf
Next nI 


ConOut("Fim: " + Time())
Conout( Replicate( '=', 30 ))

RESET ENVIRONMENT

Return .T.
Inclusão - Entrega por Terceiros
#Include "Protheus.ch"
#Include "RwMake.ch"
#Include "TbiConn.ch"

User Function EXEC103()

Local aCab := {}
Local aItem := {}
Local aItens := {}
Local nOpc := 3
Local cNum := ""
Local nI := 0
Local nX := 0
Local nReg := 1
Local cInicio := Time() 

Private lMsErroAuto := .F.
Private lMsHelpAuto := .T.
Private lTemF1GFE := .F. 

PREPARE ENVIRONMENT EMPRESA "T1" FILIAL "D MG 01 " MODULO "COM" FUNNAME "MATA103"

Conout( Replicate( '=', 30 ))
Conout("Inicio: " + cInicio)

For nI := 1 To nReg
    lMsErroAuto := .F.  
    aCab := {}
    aItem := {}
    aItens := {}

    nOpc := 3
    
    If nOpc == 3 
        cNum := GetSxeNum("SF1","F1_DOC")    
        SF1->(dbSetOrder(1))        
        While SF1->(dbSeek(xFilial("SF1")+cNum))            
            ConfirmSX8()            
            cNum := GetSxeNum("SF1","F1_DOC")        
        EndDo
    ElseIf nOpc == 4 .Or. nOpc == 5
        cNum := "COMSP137 " 
    EndIf

    Conout("Documento: " + cNum)

    aadd( aCab, { "F1_FORMUL"      , "N"         ,NIL } )
    aadd( aCab, { "F1_DOC"        , cNum        ,NIL } )
    aadd( aCab, { "F1_SERIE"      , "1  "          ,NIL } )
    aadd( aCab, { "F1_FORNECE"    , "000001"    ,NIL } )
    aadd( aCab, { "F1_LOJA"       , "01"      ,NIL } )
    aadd( aCab, { "F1_EMISSAO"    , DDATABASE    ,NIL } )
    aadd( aCab, { "F1_DTDIGIT"    , DDATABASE    ,NIL } )
    aadd( aCab, { "F1_TIPO"       , "N"         ,NIL } )
    aadd( aCab, { "F1_ESPECIE"     , "NFE"        ,NIL } )
    aadd( aCab, { "F1_COND"       , "000"     ,NIL } ) 

    cProd1 := "000001"
    cItem := StrZero(nX,TamSx3("D1_ITEM")[1])
    aItem := {}
    aadd( aItem, { "D1_ITEM"    , cItem                                , NIL } )
    aadd( aItem, { "D1_COD"       , PadR(cProd1,TamSx3("D1_COD")[1])  , NIL } )
    aadd( aItem, { "D1_UM"      , "UN"                                , NIL } )
    aadd( aItem, { "D1_LOCAL"      , "01"                              , NIL } )
    aadd( aItem, { "D1_QUANT"     , 10                                  , NIL } )
    aadd( aItem, { "D1_VUNIT"      , 1000                                , NIL } )
    aadd( aItem, { "D1_TOTAL"      , 10000                                , NIL } )

    aAdd(aItens,aItem)
    
    MSExecAuto( { |x,y,z| MATA140( x, y, z ) }, aCab, aItens, nOpc ) // Inclusão Pré Nota
    
    If !lMsErroAuto 
        ConOut( "Incluido Pre Nota: " + cNum )
        aItens := {}
        aItem := {}
        aadd( aItem, { "D1_ITEM"    , cItem                                , NIL } )
        aadd( aItem, { "D1_COD"       , PadR(cProd1,TamSx3("D1_COD")[1])  , NIL } )
        aadd( aItem, { "D1_UM"      , "UN"                                , NIL } )
        aadd( aItem, { "D1_LOCAL"      , "01"                              , NIL } )
        aadd( aItem, { "D1_QUANT"     , 10                                  , NIL } )
        aadd( aItem, { "D1_VUNIT"      , 1500                                , NIL } )
        aadd( aItem, { "D1_TOTAL"      , 15000                                , NIL } )
        aadd( aItem, { "D1_TES"       , "001"                             , NIL } )

        aAdd(aItens,aItem)

        nOpc := 4 //Classificação
        lGrvGF := .T.

        MSExecAuto( { |a, b, c, d| MATA103( a, b, c, , , , , , , , , , , , , d ) }, aCab, aItens, nOpc, lGrvGF ) // Realiza a gravação dos dados alterados sem finalizar a Classificação

        If !lMsErroAuto 
            ConOut( "Classificado Documento Fiscal: " + cNum )
        Else
            MostraErro()

            ConOut( "Erro na inclusao!" ) 
            Exit
        EndIf
    Else
        MostraErro()

        ConOut( "Erro na inclusao!" ) 
        Exit
    EndIf
Next nI 


ConOut("Fim: " + Time())
Conout( Replicate( '=', 30 ))

RESET ENVIRONMENT

Return .T.
Exclusão de Doc de Entrada (com Abertura de Tela)
#INCLUDE "RWMAKE.CH"
#INCLUDE "TBICONN.CH"
 
User Function EXEC103() 
    Local cNumDoc 	:= "M103CTELA"
    Local cSerie    := "001"
    Local cForn     := "000001"
    Local cLoja     := "01"
    
    Local nOpc      := 5
    Local aCab    	:= {}
    Local aItens  	:= {}
    Local aLinha  	:= {}
    
    Private lMsErroAuto := .F.
    
    
    DbSelectArea("SF1")
    SF1->(DbSetOrder(1))
    SF1->(DbSeek(xFilial("SF1") + cNumDoc + cSerie + cForn + cLoja ))

    aadd(aCab,{"F1_TIPO" ,      "N" ,NIL})
    aadd(aCab,{"F1_FORMUL" ,    "N" ,NIL})
    aadd(aCab,{"F1_DOC" ,       SF1->F1_DOC,NIL})
    aadd(aCab,{"F1_SERIE" ,     SF1->F1_SERIE ,NIL})
    aadd(aCab,{"F1_EMISSAO" ,   dDataBase,NIL})
    aadd(aCab,{"F1_DTDIGIT" ,   dDataBase,NIL})
    aadd(aCab,{"F1_FORNECE" ,   SF1->F1_FORNECE ,NIL})
    aadd(aCab,{"F1_LOJA" ,      SF1->F1_LOJA ,NIL})
    aadd(aCab,{"F1_ESPECIE" ,   SF1->F1_ESPECIE ,NIL})

    dbSelectArea("SD1")
    SD1->(dbSetOrder(1))
    SD1->(DbSeek(xFilial("SD1")+SF1->F1_DOC+SF1->F1_SERIE+SF1->F1_FORNECE+SF1->F1_LOJA))
    
    While !Eof() .And. SD1->D1_FILIAL+SD1->D1_DOC+SD1->D1_SERIE+SD1->D1_FORNECE+SD1->D1_LOJA == ;
    SF1->F1_FILIAL+SF1->F1_DOC+SF1->F1_SERIE+SF1->F1_FORNECE+SF1->F1_LOJA         
        aItens := {}
        aAdd(aItens,{'D1_DOC',SD1->D1_DOC       ,NIL})
        aAdd(aItens,{'D1_SERIE',SD1->D1_SERIE   ,NIL})
        aAdd(aItens,{'D1_FORNECE',SD1->D1_FORNECE,NIL})
        aAdd(aItens,{'D1_LOJA',SD1->D1_LOJA     ,NIL})
        aadd(aItens,{"D1_ITEM",SD1->D1_ITEM     ,NIL})
        aadd(aItens,{"D1_COD" ,SD1->D1_COD      ,NIL})
        aadd(aItens,{"D1_UM"  ,SD1->D1_UM       ,NIL})
        aadd(aItens,{"D1_LOCAL",SD1->D1_LOCAL   ,NIL})
        aadd(aItens,{"D1_QUANT",SD1->D1_QUANT   ,NIL})
        aadd(aItens,{"D1_VUNIT",SD1->D1_VUNIT   ,NIL})
        aadd(aItens,{"D1_TOTAL",SD1->D1_TOTAL   ,NIL})
        aadd(aItens,{"D1_TES"  ,SD1->D1_TES     ,NIL})
            
        aAdd(aLinha,aItens)
        SD1->(dbSkip())
    EndDo 
      
    
    MSExecAuto({|x,y,z,b,a| MATA103(x,y,z,b,,,,,,,,,,,a)},aCab,aLinha,nOpc,.T.,)
    
    If lMsErroAuto
        MostraErro()
    EndIf

Return
Inclusão com alíquota ISS sendo calculado através do FISA052
#Include "RwMake.ch"
#Include "TbiConn.ch"
 
User Function INC103IMP()
    Local nX        As Numeric
    Local cTipo     As Character
    Local cFormul   As Character
    Local cNum      As Character
    Local cSerie    As Character
    Local cFornec   As Character
    Local cLoja     As Character
    Local cEspecie  As Character
    Local cCondPgt  As Character
    Local cStatus   As Character
    Local cNaturez  As Character
 
    Local cProd     As Character
    Local cUnid     As Character
    Local cArmz     As Character
    Local cTes      As Character
    Local nQuant    As Numeric
    Local nPrcUnit  As Numeric
    Local nVlTot    As Numeric
 
 
    Local aCab          As Array
    Local aItem         As Array
    Local aItens        As Array
    Local aAutoImp      As Array
    Local aItensRat     As Array
    Local aCodRet       As Array
    Local aParamAux     As Array
    Local nOpc          As Numeric 
 
    Private lMsErroAuto As Logical
    Private lMsHelpAuto As Logical
	
	nX 			:= 1 
    cTipo       := "N"
    cFormul     := "N"
    cSerie      := "001"
    cFornec     := "FGFISS"
    cLoja       := "01"
    cEspecie    := "NFS"
    cCondPgt    := "000"
    cStatus     := "A"
    cNaturez    := "014"
 
 
    cProd       := "COMSP0000000000000000000000004"
    cUnid       := "UN"
    cArmz       := "01"
    cTes        := "015"
    nQuant      :=  10
    nPrcUnit    :=  100
    nVlTot      :=  1000
 
 
    aCab        := {}
    aItem       := {}
    aItens      := {}
    aAutoImp    := {}
    nOpc        := 3
    lMsErroAuto := .F.
    lMsHelpAuto := .T.
 
    Conout("Inicio: " + Time())
 
    PREPARE ENVIRONMENT EMPRESA "T1" FILIAL "D MG 01" MODULO "COM" FUNNAME "MATA103"
 
		cNum := GetSxeNum("SF1","F1_DOC")
			
		SF1->(dbSetOrder(1))
		While SF1->(dbSeek(xFilial("SF1")+cNum))
			ConfirmSX8()
			cNum := GetSxeNum("SF1","F1_DOC")
		EndDo

		//Cabeçalho
		aCab := {}

		aadd(aCab,{"F1_TIPO"    ,cTipo                                  ,NIL})
		aadd(aCab,{"F1_FORMUL"  ,cFormul                                ,NIL})
		aadd(aCab,{"F1_DOC"     ,cNum                                   ,NIL})
		aadd(aCab,{"F1_SERIE"   ,cSerie                                 ,NIL})
		aadd(aCab,{"F1_EMISSAO" ,dDataBase                              ,NIL})
		aadd(aCab,{"F1_DTDIGIT" ,dDataBase                              ,NIL})
		aadd(aCab,{"F1_FORNECE" ,cFornec                                ,NIL})
		aadd(aCab,{"F1_LOJA"    ,cLoja                                  ,NIL})
		aadd(aCab,{"F1_ESPECIE" ,cEspecie                               ,NIL})
		aadd(aCab,{"F1_COND"    ,cCondPgt                               ,NIL})
		aadd(aCab,{"F1_MOEDA"   ,1                                      ,Nil})
		aadd(aCab,{"F1_TXMOEDA" ,1                                      ,Nil})
		aadd(aCab,{"F1_STATUS" ,cStatus                                 ,Nil})
		aadd(aCab,{"E2_NATUREZ",PadR(cNaturez,TamSx3("ED_CODIGO")[1])   ,Nil})

		//Itens
		aItem := {}

		aadd(aItem,{"D1_ITEM"   ,StrZero(nX,4)                          ,NIL})
		aadd(aItem,{"D1_COD"    ,PadR(cProd,TamSx3("D1_COD")[1])        ,NIL})
		aadd(aItem,{"D1_UM"     ,cUnid                                  ,NIL})
		aadd(aItem,{"D1_LOCAL"  ,cArmz                                  ,NIL})
		aadd(aItem,{"D1_QUANT" ,nQuant                                  ,NIL})
		aadd(aItem,{"D1_VUNIT" ,nPrcUnit                                ,NIL})
		aadd(aItem,{"D1_TOTAL" ,nVlTot                                  ,NIL})
		aadd(aItem,{"D1_TES" ,cTes                                      ,NIL})

		aAdd(aItens,aItem)

		//Impostos (Informar a referência do imposto, que consta no valid do campo)
		//Para impostos de cabeçalho informar: referência, valor 
		aAutoImp := { {"NF_UFPREISS" ,  "SP"},;
						{"NF_CODMUN",  "18800"}}
			
		//3-Inclusão
		MSExecAuto({|x,y,z,a,b| MATA103(x,y,z,a,b,,,,,)},aCab,aItens,nOpc,.F.,aAutoImp)
			
		aItens := {}
			
		If !lMsErroAuto
			ConOut(" Incluido NF: " + cNum)
		Else
			MostraErro()
			ConOut("Erro na inclusao!")
		EndIf

		ConOut("Fim: " + Time())
             
 
    RESET ENVIRONMENT
 
	FwFreeArray(aCab)
	FwFreeArray(aItem)
	FwFreeArray(aAutoImp)
	FwFreeArray(aItens)
 
Return
Documento Tipo Normal - Com Rateio de CC com N itens
#Include "Protheus.ch"
#Include "RwMake.ch"
#Include "TbiConn.ch"
#Include "Coverage.ch"

User Function EXEC103() 

Local aCab			:= {}
Local aItem			:= {}
Local aItens		:= {}
Local aItensRat		:= {}
Local nOpc			:= 3
Local cNum			:= ""
Local cSer			:= "   "
Local cProd1		:= "LF005"
Local cProd2		:= "LF006"
Local nX			:= 0
Local nY			:= 0
Local cInicio		:= Time()


Private lMsErroAuto := .F.
Private lMsHelpAuto := .F.
Private lTemF1GFE	:= .F. 

PREPARE ENVIRONMENT EMPRESA "T1" FILIAL "D MG 01" MODULO "COM" FUNNAME "MATA103"

lMsErroAuto := .F.  
aCab := {}
aItem := {}
aItens := {} 

If nOpc == 3
	cNum := GetSxeNum("SF1","F1_DOC")	
	SF1->(dbSetOrder(1))		
	While SF1->(dbSeek(xFilial("SF1")+cNum))			
		ConfirmSX8()			
		cNum := GetSxeNum("SF1","F1_DOC")		
	EndDo
Endif		

aadd(aCab,{"F1_FORMUL"  	,"N"	 	,NIL})
aadd(aCab,{"F1_DOC"			,cNum		,NIL})
aadd(aCab,{"F1_SERIE"  		,cSer	  	,NIL})
aadd(aCab,{"F1_FORNECE"		,"COM002"	,NIL})
aadd(aCab,{"F1_LOJA"   		,"01"  		,NIL})
aadd(aCab,{"F1_EMISSAO"		,DDATABASE	,NIL})
aadd(aCab,{"F1_DTDIGIT"		,DDATABASE	,NIL})
aadd(aCab,{"F1_TIPO"   		,"N"	 	,NIL})
aadd(aCab,{"F1_ESPECIE" 	,"NFE"		,NIL})
aadd(aCab,{"F1_COND"   		,"000" 		,NIL}) 
aadd(aCab,{"F1_STATUS" 		, "A" 		, Nil})

For nX := 1 To 2
	aItem := {}
	aadd(aItem,{"D1_ITEM"		,StrZero(nX,TamSx3("D1_ITEM")[1]) ,NIL})
	If nX == 1
		aadd(aItem,{"D1_COD"   		,PadR(cProd1,TamSx3("D1_COD")[1]) ,NIL})
	Elseif nX == 2
		aadd(aItem,{"D1_COD"   		,PadR(cProd2,TamSx3("D1_COD")[1]) ,NIL})
	Endif

	aadd(aItem,{"D1_UM"  		,"UN"	,NIL}) 
	aadd(aItem,{"D1_LOCAL"  	,"01"  	,NIL})
	aadd(aItem,{"D1_QUANT" 		,10	  	,NIL}) 
	aadd(aItem,{"D1_VUNIT"  	,1000	,NIL}) 
	aadd(aItem,{"D1_TOTAL"  	,10000	,NIL})
	aadd(aItem,{"D1_TES"   		,"001" 	,NIL})
	aadd(aItem,{"D1_RATEIO"		,"1" 	,NIL}) 
	aAdd(aItens,aItem)

	aAdd(aItensRat, Array(2))
	aItensRat[Len(aItensRat)][1] := StrZero(nX,TamSx3("D1_ITEM")[1])
	aItensRat[Len(aItensRat)][2] := {}

	For nY := 1 To 2
		aItem := {}
		aAdd(aItem, {"DE_FILIAL"	, xFilial("SDE")					, Nil})
		aAdd(aItem, {"DE_ITEM"		, StrZero(nY,TamSx3("DE_ITEM")[1])	, Nil})
		aAdd(aItem, {"DE_DOC"		, cNum								, Nil})
		aAdd(aItem, {"DE_SERIE"		, cSer								, Nil})
		aAdd(aItem, {"DE_FORNECE"	, "COM002"							, Nil})
		aAdd(aItem, {"DE_LOJA"		, "01"								, Nil})
		aAdd(aItem, {"DE_ITEMNF"	, StrZero(nX,TamSx3("D1_ITEM")[1])  , Nil})
		If nY == 1
			aAdd(aItem, {"DE_PERC"		, 60								, Nil})
			aAdd(aItem, {"DE_CC"		, "CC01" 							, Nil})
		Else
			aAdd(aItem, {"DE_PERC"		, 40								, Nil})
			aAdd(aItem, {"DE_CC"		, "01"	 							, Nil})
		Endif
		
		aAdd(aItensRat[Len(aItensRat)][2], aClone(aItem))
	Next nY
	
Next nX

MSExecAuto({|x,y,z,a,b| MATA103(x,y,z,a,,,,b)},aCab,aItens,nOpc,.F.,aItensRat)

If !lMsErroAuto 
	ConOut("	Incluido NF: " + cNum)  
Else
	MostraErro() 

	ConOut("Erro na inclusao!") 
EndIf

Conout("Inicio: " + cInicio)
ConOut("Fim: " + Time())
Conout("Tempo: " + ElapTime(cInicio,Time()))

RESET ENVIRONMENT

Return

ATENÇÃO!

Não se esqueça de conferir as observações! 

Observações:

Em todo PREPARE ENVIRONMENT deve-se informar o FUNNAME da rotina, para que não haja problema durante a inclusão/alteração/exclusão do documento.

Ex:

PREPARE ENVIRONMENT EMPRESA "01" FILIAL "1001" MODULO "COM" FUNNAME "MATA103"

Link: https://centraldeatendimento.totvs.com/hc/pt-br/articles/360028078052-MP-ADVPL-Comportamento-da-fun%C3%A7%C3%A3o-FUNNAME-


O parâmetro aCodRet contendo o array com os códigos de retenção pode ser referenciado com um ou mais impostos ou com a referencia genérica "..." assim como aparece na aba de impostos da nota fiscal de entrada. 
Para gravar os códigos de retenção é necessário habilitar o parâmetro MV_VISDIRF. 

Importante:

Não deve-se utilizar o campo D1_ITEM no comando "For". O uso desse campo no array que trás as informações dos itens do documento de entrada, impede a execução correta do Excecauto.

Para opção Classificação

Quando a rotina automática de Documentos de Entrada(MATA103) for chamada com a opção 4 = Classificação, deve-se necessariamente informar a variável LINPOS, conforme exemplo abaixo:

LINPOS
aAdd(aLinha, {"LINPOS"	,		"D1_ITEM",                 SD1->D1_ITEM})

Para opção Inclusão

Validar chave NFE, o usuário terá que passar no array do cabeçalho a nomenclatura VLDAMNFE indicando se deve ou não fazer a validação da chave juntamente com o campo da chave da NFE  F1_CHVNFE.

LINPOS
aadd(aCab,{"F1_CHVNFE"    ,""       ,NIL})
aAdd(aCab, {"VLDAMNFE"	,		"S",                 Nil})

Para opção Inclusão

Ao vincular pedido de compra ao documento, se houver necessidade de alterar a quantidade/valor/total, deve-se informar no array dos itens os campos de pedido (D1_PEDIDO / D1_ITEMPC) antes do campos de quantidade/valor/total (D1_QUANT / D1_VUNIT / D1_TOTAL)

LINPOS
aAdd(aItem, {"D1_PEDIDO","000105",Nil})
aAdd(aItem, {"D1_ITEMPC","0001",Nil})
aAdd(aItem, {"D1_QUANT",1,Nil})
aAdd(aItem, {"D1_VUNIT",100,Nil})
aAdd(aItem, {"D1_TOTAL",100,Nil})

Para opção Inclusão

Ao vincular pedido de compra ao documento, se houver necessidade de alterar a TES, deve-se informar no array dos itens os campos de pedido (D1_PEDIDO / D1_ITEMPC) antes do campo de TES (D1_TES)

LINPOS
aAdd(aItem, {"D1_PEDIDO","000105",Nil})
aAdd(aItem, {"D1_ITEMPC","0001",Nil})
aAdd(aItem, {"D1_TES",010,Nil})

Para opção Inclusão - Controle de numeração com uso de SD9 (MV_TPNRNFS)

Quando utilizado  a opção de Controle de numeração com uso de SD9 (MV_TPNRNFS = 3), através de Execauto, deve-se sempre informar conforme exemplo abaixo, para que seja implementada corretamente a numeração nas tabelas SD1, SF1 e SD9.

LINPOS
aAdd(aCabec,{'F1_FORMUL'    ,'S'                ,NIL})  

Não informar o campo F1_DOC.

Para para informações sobre a sequência automática, utilizando o parâmetro MV_TPNRNFS, consultar o link abaixo: 
FAT0049 Controle de Numeração do Documento



Para opção Inclusão

Quando utilizado o Formulário Próprio = "S e caso seja enviado o Número do Documento / Nota Fiscal, sistema irá acatar o número enviado pelo Execauto. 


Obs: Utilizar função NxtSX5Nota para ter retorno da numeração do documento

Exemplo:

cNumDoc := NxtSX5Nota(cSerie )

LINPOS
cSerie := "001"
cNum   := NxtSX5Nota(cSerie )


aAdd(aCab,{"F1_DOC" ,cNum ,NIL})
aAdd(aCab,{"F1_SERIE" ,cSerie ,NIL})



Para opção Inclusão

Quando utilizado o Formulário Próprio = "S e caso seja enviado o Número do Documento / Nota Fiscal, sistema irá acatar o número enviado pelo Execauto. 


Obs: Utilizar função NxtSX5Nota para ter retorno da numeração do documento

Exemplo:

cNumDoc := NxtSX5Nota(cSerie )

LINPOS
cSerie := "001"
cNum   := NxtSX5Nota(cSerie )


aAdd(aCab,{"F1_DOC" ,cNum ,NIL})
aAdd(aCab,{"F1_SERIE" ,cSerie ,NIL})

Entrega Terceiros

Para cenários de ExecAuto de Entrega por Terceiros, o parâmetro MV_FORPCNF deverá estar ativo (MV_FORPCNF = T) e possuir previamente cadastrado os dados de Entrega por terceiros (COMA001) configurado. 

Exemplo : 

Feito a inclusão do pedido de Compra (MATA120) abaixo :   

C7_NUM = PCGF01
C7_FORNECEDOR = LF007
C7_LOJA = 00

Cadastro Entrega por terceiro (COMA001)
CPW_CODIGO (Código) = LF007
CPW_LOJA (Loja) = 00

CPX_CODFOR (Fornecedor) = LF009
CPX_LOJA (Loja) = 00
CPX_CODFOR (Fornecedor) = LF010
CPX_LOJA (Loja) = 00

Parâmetros
cSerie 	:= "001"
cFornec	:= "LF009 "
cLoja 	:= "00"
cNumPC  := "PCGF01"

aAdd(aCab,{"F1_SERIE" 	,cSerie 	,NIL})
aAdd(aCab,{"F1_FORNECE" ,cFornec	,NIL})
aAdd(aCab,{"F1_LOJA" 	, cLoja 	,NIL})

aAdd(aItem, {"D1_PEDIDO",cNumPC	,Nil})
aAdd(aItem, {"D1_ITEMPC","0001"	,Nil})
aAdd(aItem, {"D1_TES"	,"001"	,Nil})

Entrega Futura - Remessa

Segue detalhamento dos parâmetros do array AUT_ENTFUT que deve ser passado quando utilizado o ExecAuto para remessa de mercadorias referente a entrega Futura.
 

1° Posição  : Documento de Simples Faturamento               - DHQ
2° Posição  : Serie do Documento de Simples Faturamento - DHQ 
3° Posição  : Item do Documento de Simples Faturamento  - DHQ 
4° Posição  : Não utilizado, mas por conta do legado passar como 0 
5° Posição  : Item do Documento de Remessa
6° Posição  : Fornecedor 
7° Posição  : Loja do Fornecedor 


AUT_ENTFUT
cDocOrg := "DOCSMPFAT"
cSerOrg := "001"
cItem   := "0001"  
cFornec	:= "LF030"
cLoja 	:= "00"

aAdd(aItem, {"AUT_ENTFUT", {cDocOrg , cSerOrg , cItem , 0 , cItem , cFornec , cLoja},NIL})

Alíquota ISS - FISA052

Para garantir o correto cálculo da alíquota do ISS relacionada ao cadastro FISA052 o parametro MV_ISSXMUN deve estar habilitado, apresentamos a seguir um exemplo de como informar o Estado e o Código do Município:


Aliq ISS - FISA052
aAutoImp := { {"NF_UFPREISS" ,  "SP"},;
						{"NF_CODMUN",  "18800"}}



Configurador de Tributos

A Rotina de Documento de Entrada já está prepara para ser utilizada com o Configurador de Tributos.


Portanto, caso deseje realizar através do mesmo deve ser passados a informação abaixo: Fornecedor,Produto e Cfop (com esse podendo ser informado diretamente ou informando uma TES que contenha o Cfop desejado) 

aadd(aCab,{"F1_FORNECE"   ,"FUT001"              ,NIL})
aadd(aCab,{"F1_LOJA"      ,"01"                  ,NIL}) 

aadd(aItem,{"D1_COD"        ,"01"                                 ,NIL}) 
aadd(aItem,{"D1_TES"        ,"001"                               ,NIL})
aadd(aItem,{"D1_CF"         ,"1111"                              ,NIL})

Caso esteja passando o Cfop diretamente ele será o priorizado para o calculo. 

Array - aAutoImp

O array aAutoImp pode ser preenchido com referencias do documento (NF) ou por item (IT).

Para informar referência do documento (NF), são 2 posições:

1 - Referência

2 - Valor


Ja para informar referencia dos itens (IT), são 3 posições:

1 - Referência

2 - Valor

3 - Item


Para facilitar a saber qual a referencia fiscal de um campo da SF1 (NF) ou SD1 (IT), verificar o campo Valid na função MaFisRef, onde terá o nome da referencia fiscal do campo em questão.

Exemplos:
aAutoImp := { {"NF_UFPREISS" ,  "SP"   },;
              {"NF_CODMUN"   ,  "18800"},;
              {"IT_PRCUNI"   ,  50     ,2}}