Árvore de páginas

EXECAUTO MATA103 - Documento de Entrada (Exemplo com Código de Retorno SEFAZ)

Produto:

Protheus

Versões:

Todas

Ocorrência:

Rotina Automática - MATA103 (Execauto)

Ambiente:

SIGACOM - Compras

Descrição:Exemplo da Rotina automática que possui o Código de retorno SEFAZ .
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.
ExpA5ArrayParâmetro de uso interno TOTVS.
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:

//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 nOpc := 3
Local cNum := ""
Local nX := 0
Local cCODRSEF := '100'


Conout("Inicio: " + Time())

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

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

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})

         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

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

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

ConOut("Fim: " + Time())

RESET ENVIRONMENT

Return

Observações:

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})