Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

EXECAUTO MATA103 - Documento de Entrada

User Function ExecAu103()

Local aCabec := {}
Local aItens := {}
Local aLinha := {}
Local aColsCC := {}
Local aCodRet := {}
Local nX := 0
Local nY := 0
Local cDoc := ""
Local lOk := .T.
Private lMsErroAuto := .F.
Private lMsHelpAuto := .T.

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Abertura do ambiente |
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
ConOut(Repl("-",80))
ConOut(PadC("Teste de Inclusao de 1000 documentos de entrada com 20 itens cada",80))

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Verificacao do ambiente para teste |
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
dbSelectArea("SB1")
dbSetOrder(1)
If !SB1->(MsSeek(xFilial("SB1")+"001 ")) //Verificar a existência do produto
lOk := .F.
ConOut("Cadastrar produto: 001")
EndIf

dbSelectArea("SF4")
dbSetOrder(1)
If !SF4->(MsSeek(xFilial("SF4")+"001")) //Verificar a existência do tes
lOk := .F.
ConOut("Cadastrar TES: 001")
EndIf

dbSelectArea("SE4")
dbSetOrder(1)
If !SE4->(MsSeek(xFilial("SE4")+"001")) //Verificar a existência do condição de pagamento 
lOk := .F.
ConOut("Cadastrar condicao de pagamento: 001")
EndIf

dbSelectArea("SA2")
dbSetOrder(1)
If !SA2->(MsSeek(xFilial("SA2")+"001 ")) //Verificar a existência do fornecedor 
lOk := .F.
ConOut("Cadastrar fornecedor: 001 ")
EndIf

If lOk
ConOut("Inicio: "+Time())
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Verifica o último documento valido para um fornecedor |
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
dbSelectArea("SF1")
dbSetOrder(2)
MsSeek(xFilial("SF1")+"000001z",.T.)
dbSkip(-1)
cDoc := SF1->F1_DOC

For nY := 1 To 1000  //Altere  para a quantidade desejada
aCabec := {}
aItens := {}
If Empty(cDoc)
cDoc := StrZero(1,Len(SD1->D1_DOC))
Else
cDoc := Soma1(cDoc)
EndIf 
//ExpA1 - Array contendo os dados do cabeçalho da Nota Fiscal de Entrada.
aadd(aCabec,{"F1_TIPO" , "N" , Nil})
aadd(aCabec,{"F1_FORMUL" , "N" , Nil})
aadd(aCabec,{"F1_DOC" , cDoc , Nil})
aadd(aCabec,{"F1_SERIE" , "UNI" , Nil})
aadd(aCabec,{"F1_EMISSAO" , dDataBase , Nil})
aadd(aCabec,{"F1_DESPESA" , 12 , Nil})
aadd(aCabec,{"F1_FORNECE" , "001 " , Nil})
aadd(aCabec,{"F1_LOJA" , SA2->A2_LOJA, Nil})
aadd(aCabec,{"F1_ESPECIE" , "NFE " , Nil})
aadd(aCabec,{"F1_COND" , "001" , Nil})
aadd(aCabec,{"F1_DESCONT" , 0 , Nil})
aadd(aCabec,{"F1_SEGURO" , 0 , Nil})
aadd(aCabec,{"F1_FRETE" , 0 , Nil})
aadd(aCabec,{"F1_VALMERC" , 100 , Nil})
aadd(aCabec,{"F1_VALBRUT" , 100 , Nil}) 
aadd(aCabec,{"F1_MOEDA" , 2 , Nil}) 
aadd(aCabec,{"F1_TXMOEDA" , 3 , Nil}) 
aadd(aCabec,{"F1_STATUS" , "A" , Nil})
//ExpA2- Array contendo os itens da Nota Fiscal de Entrada.
For nX := 1 To 20  //Altere  para a quantidade desejada
aLinha := {}
aadd(aLinha,{"D1_COD" , "001" , Nil})
aadd(aLinha,{"D1_QUANT" , 1 , Nil})
aadd(aLinha,{"D1_VUNIT" , 100 , Nil})
aadd(aLinha,{"D1_TOTAL" , 100 , Nil})
aadd(aLinha,{"D1_TES" , "001" , Nil})
aadd(aLinha,{"D1_SEGURO" , 0 , Nil})
aadd(aLinha,{"D1_VALFRE" , 0 , Nil})
aadd(aLinha,{"D1_DESPESA" , 4 , Nil})
aadd(aLinha,{"AUTDELETA" , "N" , Nil}) // Incluir sempre no último elemento do array de cada item
aadd(aItens,aLinha)
Next nX

//ExpA6 - Array contendo os dados do rateio por centro de custo

If Empty(aColsCC)
   dbSelectArea("SDE")
   AADD(aColsCC,{SDE->DE_ITEMNF,{}})
   For nX := 1 To 5
    AADD(aColsCC[1][2],    {{"DE_ITEM"    ,"0"+Alltrim(STR(nX))}    ,;
                                 {"DE_PERC"    ,20}                        ,;
                                 {"DE_CC"        ,"CC00"+Alltrim(STR(nX))},;
                                 {"DE_CONTA"    ,""}                        ,;
                                 {"DE_ITEMCTA",""}                        ,;
                                 {"DE_CLVL"    ,""}})
    Next nX
EndIf

//ExpA7 - 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"} )

MATA103(aCabec,aItens,3,,,,,aColsCC,,,aCodRet) //ExpN1 - Opção desejada: 3-Inclusão; 4-Alteração ; 5-Exclusão
If !lMsErroAuto
ConOut("Incluido com sucesso! "+cDoc)
Else
MostraErro()
ConOut("Erro na inclusao!")
EndIf
Next nY
ConOut("Fim : "+Time())

EndIf

Return

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.

Produto:

Microsiga 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-
Alteração
Classificação; 5-Exclusão3
ExpL1LógicoIndica se Apresenta ou não a Dialog da Rotina em Rotina Automática..F.
ExpA3

Array

Parâmetro de uso interno TOTVS.
Array contendo os valores de Impostos que irão sobrepor valores calculados. (Opcional)
ExpA4ArrayParâmetro de uso interno TOTVS.
ExpA5Array
Parâmetro de uso interno TOTVS
Array 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

Passo a passo:


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:

Bloco de código
languagedelphi
themeMidnight
titleDocumento Tipo Normal
collapsetrue
#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
Bloco de código
languagedelphi
themeMidnight
titleDocumento Tipo Complemento
collapsetrue
#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
Bloco de código
languagedelphi
themeMidnight
titleDocumento Tipo Normal Vinculado ao Pedido de Compras
collapsetrue
#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
Bloco de código
languagedelphi
themeMidnight
titleDocumento Tipo Devolução
collapsetrue
#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
Bloco de código
languagedelphi
themeMidnight
titleDocumento Vincular (SDH)
collapsetrue
#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
Bloco de código
languagedelphi
themeMidnight
titleDocumento Cobertura
collapsetrue
#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
Bloco de código
languagedelphi
themeMidnight
titleDocumento Tipo Normal com Aposentadoria Especial
collapsetrue
#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
Bloco de código
languagedelphi
themeMidnight
titleDocumento Devolução - Terceiros
collapsetrue
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.)
Bloco de código
languagedelphi
themeMidnight
titleDocumento Beneficiamento - Terceiros
collapsetrue
#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
Bloco de código
languagedelphi
themeMidnight
titleDocumento Complementar ICMS ou IPI
collapsetrue
#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
Bloco de código
languagedelphi
themeMidnight
titleDocumento com Complemento de Itens da NF (DKD)
collapsetrue
#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
Bloco de código
languagedelphi
themeMidnight
titleDocumento Entrega Futura (DHQ)
collapsetrue
#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
Bloco de código
languagedelphi
themeMidnight
titleGuarda Fiscal - Gravar Dados da Classificação do Documento para Futura finalização da Classificação
collapsetrue
#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.
Bloco de código
languagedelphi
themeMidnight
titleInclusão - Entrega por Terceiros
collapsetrue
#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.
Bloco de código
languagedelphi
themeMidnight
titleExclusão de Doc de Entrada (com Abertura de Tela)
collapsetrue
#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
Bloco de código
languagedelphi
themeMidnight
titleInclusão com alíquota ISS sendo calculado através do FISA052
collapsetrue
#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



Informações
titleATENÇÃ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. 

Informações
titleImportante:

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.

Informações
titlePara 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:

Bloco de código
languagedelphi
titleLINPOS
aAdd(aLinha, {"LINPOS"	,		"D1_ITEM",                 SD1->D1_ITEM})
Informações
titlePara 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.

Bloco de código
languagedelphi
titleLINPOS
aadd(aCab,{"F1_CHVNFE"    ,""       ,NIL})
aAdd(aCab, {"VLDAMNFE"	,		"S",                 Nil})
Informações
titlePara 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)

Bloco de código
languagedelphi
titleLINPOS
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})

Informações
titlePara 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)

Bloco de código
languagedelphi
titleLINPOS
aAdd(aItem, {"D1_PEDIDO","000105",Nil})
aAdd(aItem, {"D1_ITEMPC","0001",Nil})
aAdd(aItem, {"D1_TES",010,Nil})
Informações
titlePara 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.

Bloco de código
languagedelphi
titleLINPOS
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



Informações
titlePara 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 )

Bloco de código
languagedelphi
titleLINPOS
cSerie := "001"
cNum   := NxtSX5Nota(cSerie )


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



Informações
titlePara 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 )

Bloco de código
languagedelphi
titleLINPOS
cSerie := "001"
cNum   := NxtSX5Nota(cSerie )


aAdd(aCab,{"F1_DOC" ,cNum ,NIL})
aAdd(aCab,{"F1_SERIE" ,cSerie ,NIL})
Informações
titleEntrega 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

Bloco de código
languagedelphi
titleParâ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})
Informações
iconfalse
titleEntrega 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 


Bloco de código
languagedelphi
title AUT_ENTFUT
cDocOrg := "DOCSMPFAT"
cSerOrg := "001"
cItem   := "0001"  
cFornec	:= "LF030"
cLoja 	:= "00"

aAdd(aItem, {"AUT_ENTFUT", {cDocOrg , cSerOrg , cItem , 0 , cItem , cFornec , cLoja},NIL})
Informações
titleAlí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:


Bloco de código
languagedelphi
titleAliq ISS - FISA052
aAutoImp := { {"NF_UFPREISS" ,  "SP"},;
						{"NF_CODMUN",  "18800"}}

Observações:

Execauto para realizar a inclusão de documento de entrada em grande quantidade. No exemplo acima serão inclusos 1000 documentos com 20 itens cada.

O comando "For" pode ser alterado para determinar a quantidade de inclusão nas tabelas  SF1 (Cabeçalho) e SD1 (Itens).

O parâmetro ExpA7 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. 

Informações
titleImportante: