Versões comparadas

Chave

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

EXECAUTO MATA103 -  a SEFAZ)


Producto:

Protheus

Versiones:

Todas

Ocurrencia:

Rutina automática - MATA103 (Execauto)

Entorno:

SIGACOM - Compras

Descripción:

Ejemplo de la rutina automática que tiene el código de devolución SEFAZ .

Parámetros:

Nombre

Tipo

Descripción

Contenido estándar

ExpA1

Array

Array con los datos del encabezado de la Factura de entrada.


ExpA2

Array

Array con los ítems de la Factura de entrada.


ExpN1

Numérico

Opción deseada: 3-Inclusión; 4-Clasificación; 5-Borrado

3

ExpL1

Lógico

Indica si muestra o no la Dialog de la rutina en Rutina automática.

.F.

ExpA3

Array

Array con los valores de Impuestos que sobrescribirán los valores calculados. (Opcional)


ExpA4

Array

Parámetro de uso interno TOTVS.


ExpA5

Array

Parámetro de uso interno TOTVS.


ExpA6

Array

Array con los datos del prorrateo por centro de costo


ExpL2

Lógico

Parámetro de uso interno TOTVS.


ExpC1

Carácter

Código de devolución Fisco que se grabará en el campo F3_CODRSEF


ExpA7

Array

Array con la información si genera el DIRF y los códigos de retención por impuesto


Paso a paso:

//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

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

//Ítems
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)

         if(nOpc == 4)//Si fuera clasificación debe informar la variable LINPOS

              aAdd(aItem, {"LINPOS" , "D1_ITEM",  StrZero(nX,4)}) //o SD1->D1_ITEM  si estuviera marcado.

         endIf


       aAdd(aItens,aItem)
Next nX

//3-Inclusión / 4-Clasificación / 5-Borrado
MSExecAuto({|x,y,z,k| MATA103(x,y,z,,,,,,,k)},aCab,aItens,nOpc,cCodRSef)

If !lMsErroAuto
ConOut(" Incluir Fact.: " + cNum)
Else
MostraErro()
ConOut("¡Error en la inclusión!")
EndIf

ConOut("Final: " + Time())

RESET ENVIRONMENT

Return

Observaciones:

Informações
titleImportante:

No se debe utilizar el campo D1_ITEM en el comando "For". El uso de este campo en el array que trae la información de los ítems del documento de entrada, impide la correcta ejecución del Excecauto.

Informações
titlePara la opción Clasificación

Si la rutina automática de Documentos de entrada(MATA103) fuera activada con la opción 4 = Clasificación, debe necesariamente informar la variable LINPOS, de acuerdo con el siguiente ejemplo:

Bloco de código
languagedelphi
titleLINPOS
aAdd(aLinha, {"LINPOS"	,		"D1_ITEM",