EXECAUTO MATA103 - Documento de entrada

Producto:

Protheus

Versiones:

Todas

Ocurrencia:

Rutina automática - MATA103 (Execauto)

Entorno:

SIGACOM - Compras

Descripción:Rutina automática que permite la inclusión de documentos entrada en gran cantidad.
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

Array con las preguntas MATA103 que la rutina automática actualiza en tiempo de ejecución.


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


ExpA8

Array

Array con información de Jubilación especial


ExpA9

Array

Reservado


ExpA10

Array

Array Integración con SIGAPFS


ExpA11

Array

Array con información que se grabará en la tabla complementaria de los ítems de la Factura (DKD)


ExpL3

Lógico

Indica si realiza la grabación de la Clasificación para posterior actualización. Utilización en Rutina automática.

.F.

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 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" SUCURSAL "6597" MÓDULO "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)//Si fuera clasificación, debe informar la variable LINPOS

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

         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 con la información si se genera DIRF y los códigos de retención por impuesto
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"} )

// Ejemplo para manejar la pregunta MTA103
aAdd(aParamAux, {"MV_PAR01", 2}) //-- ¿Muestra Asto. Contable? 1 = Sí, 2 = No
aAdd(aParamAux, {"MV_PAR06", 1}) //-- ¿Contabilidad online? 1 = Sí, 2 = No



//3-Inclusión / 4-Clasificación / 5-Borrado
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("¡Error en la inclusión!")
EndIf

ConOut("Final: " + 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" SUCURSAL "6597" MÓDULO "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})

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




//Impuestos (Informe la referencia del impuesto, que consta en el valid del campo)

//Para impuestos de encabezado informe: referencia, valor  
aAutoImp := { {"NF_FRETE" ,  10},;
                         {"NF_VALIPI",  15},;
                         {"NF_VALICM",7}}

//Para impuestos de ítems informe: referencia, valor, número de la línea
aAdd(aAutoImp, {'IT_BASEICM', 100, 1}) //Base

aAdd(aAutoImp, {'IT_ALIQICM',12,    1}) //Porcentaje impuesto

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




//3-Inclusión / 4-Clasificación / 5-Borrado
MSExecAuto({|x,y,z,a,b| MATA103(x,y,z,,a,,,,,)},aCabec,aItens,3,aAutoImp)

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

ConOut("Fim: " + Time())

RESET ENVIRONMENT

Return
Documento tipo normal vinculado al 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" SUCURSAL "6597" MÓDULO "COM" FUNNAME "MATA103"

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)
          aadd(aItens[Len(aItens)], {'D1_PEDIDO ', '000034' ,}) // Número del pedido de compras
          aadd(aItens[Len(aItens)], {'D1_ITEMPC ', '0001' ,}) // Ítem del pedido de compras

         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 seleccionado.

         endIf

Next nX

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

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

ConOut("Final: " + Time())

RESET ENVIRONMENT

Return
Documento tipo devolución
#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" SUCURSAL "6597" MÓDULO "COM" FUNNAME "MATA103"

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

//Í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_LOTECTL" ,"123456" ,NIL}) //Si el producto tuviera lote, informe el número.
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-Inclusión / 4-Clasificación / 5-Borrado
MSExecAuto({|x,y,z| MATA103(x,y,z)},aCab,aItens,nOpc)

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

ConOut("Final: " + 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-Incluye / 3-Borrad
Local nRecno    := 0

Private lMsErroAuto := .F.

PREPARE ENVIRONMENT EMPRESA "01" SUCURSAL "1001" MÓDULO "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 //Borrado
        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 //Borrado
        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("Incluido vínculo: " + 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-Incluye / 5-Borra

Private lMsErroAuto := .F.

PREPARE ENVIRONMENT EMPRESA "01" SUCURSAL "1001" MÓDULO "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 con jubilación 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" SUCURSAL "1001" MÓDULO "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("    Incluida Fact: " + cNum) 
    Else
        MostraErro()
        ConOut("¡Error en la inclusión!")
        Exit
    EndIf
Next nI

RESET ENVIRONMENT

Return
Documento devolución - Terceros
User Function EXEC103()

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

ConOut(PadC(OemToAnsi("Prueba de inclusión de NFE DEVOLUCIÓN CON FACTURA DE ORIGEM NFS"),80))

PREPARE ENVIRONMENT EMPRESA "99" SUCURSAL "01" MÓDULO "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 DEVOLUCIÓN
aAdd(aLinha,{"D1_CF" ,"000 " ,Nil})
aAdd(aLinha,{"D1_DOC" ,cDoc ,Nil}) // *
aAdd(aLinha,{"D1_SERIE" ,"000" ,Nil}) // *
aAdd(aLinha,{"D1_EMISSAO",dDataBase ,Nil}) // AGREGUÉ
aadd(aLinha,{"D1_NFORI" ,"000005 " ,Nil}) // factura de origen
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 con éxito! "+cDoc)
Else
ConOut("¡Error en la inclusión!")
mostraerro()
EndIf

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

RESET ENVIRONMENT

Return(.T.)
Documento mejora - terceros
#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" SUCURSAL "1001" MÓDULO "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 DEVOLUCIÓN - 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("    Incluida Fact: " + cNum)  
    Else
        MostraErro()
        ConOut("¡Error en la inclusión!")
        Exit
    EndIf
Next nI

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

RESET ENVIRONMENT

Return
Documento complementario ICMS o 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" SUCURSAL "1001" MÓDULO "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("¡Error en la inclusión!")
        Exit
    EndIf
Next nI

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

RESET ENVIRONMENT

Return
Documento con complemento de ítems de la Fact (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" SUCURSAL "6597" MÓDULO "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})

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

                   

          aAuxItDKD := {}
          aadd(aAuxItDKD,{"DKD_ITEM"          ,StrZero(nX,TamSx3("D1_ITEM")[1])   ,NIL})
          aadd(aAuxItDKD,{"DKD_TSTNUM"    ,150                                ,NIL})                              //Campo personalizado creado en la nueva tabla complementaria DKD
          aAdd(aAuxDKD,aAuxItDKD)


Next nX

//3-Inclusión / 4-Clasificación / 5-Borrado

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("¡Error en la inclusión!")
EndIf

ConOut("Final: " + 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-Incluye / 5-Borra

Private lMsErroAuto := .F.




PREPARE ENVIRONMENT EMPRESA "99" SUCURSAL "01" MÓDULO "COM" FUNNAME "MATA103"

  If nOpc == 3

// Compra con entrega futura (simple facturación)


    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 incluida: " + cNum)
    Endif
Endif




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

// Documento de entrada representando el envío de la mercadería

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})//Datos para factura de origen

        aAdd(aItens,aItem)
    Next nX


   MSExecAuto({|x,y,z| MATA103(x,y,z)},aCab,aItens,nOpc)
    
    If lMsErroAuto 
        MostraErro()
    Else
        Conout("Envío entrega futura incluida: " + cNum1)
    Endif

Endif
RESET ENVIRONMENT

Return
Resguardo fiscal - Grabar datos de la clasificación del documento para futura finalización de la clasificación
#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" SUCURSAL "D MG 01 " MÓDULO "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 ) // Inclusión factura previa
    
    If !lMsErroAuto 
        ConOut( "Incluida factura previa: " + 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 //Clasificación
        lGrvGF := .T.

        MSExecAuto( { |a, b, c, d| MATA103( a, b, c, , , , , , , , , , , , , d ) }, aCab, aItens, nOpc, lGrvGF ) // Realiza la grabación de los datos modificados sin finalizar la clasificación

        If !lMsErroAuto 
            ConOut( "Clasificado documento fiscal: " + cNum )
        Else
            MostraErro()

            ConOut( "¡Error en la inclusión!" ) 
            Exit
        EndIf
    Else
        MostraErro()

        ConOut( "¡Error en la inclusión!" ) 
        Exit
    EndIf
Next nI 


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

RESET ENVIRONMENT

Return .T.
Inclusión - Entrega por terceros
#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" SUCURSAL "D MG 01 " MÓDULO "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 ) // Inclusión factura previa
    
    If !lMsErroAuto 
        ConOut( "Incluida factura previa: " + 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 //Clasificación
        lGrvGF := .T.

        MSExecAuto( { |a, b, c, d| MATA103( a, b, c, , , , , , , , , , , , , d ) }, aCab, aItens, nOpc, lGrvGF ) // Realiza la grabación de los datos modificados sin finalizar la clasificación

        If !lMsErroAuto 
            ConOut( "Clasificado documento fiscal: " + cNum )
        Else
            MostraErro()

            ConOut( "¡Error en la inclusión!" ) 
            Exit
        EndIf
    Else
        MostraErro()

        ConOut( "¡Error en la inclusión!" ) 
        Exit
    EndIf
Next nI 


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

RESET ENVIRONMENT

Return .T.
Borrado de Doc de entrada (con apertura de pantalla)
#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
Inclusión con alícuota ISS, calculándose por medio del 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" SUCURSAL "D MG 01" MÓDULO "COM" FUNNAME "MATA103"
 
		cNum := GetSxeNum("SF1","F1_DOC")
			
		SF1->(dbSetOrder(1))
		While SF1->(dbSeek(xFilial("SF1")+cNum))
			ConfirmSX8()
			cNum := GetSxeNum("SF1","F1_DOC")
		EndDo

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

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

		//Impuestos (Informe la referencia del impuesto, que consta en el valid del campo)
		//Para impuestos de encabezado informe: referencia, valor 
		aAutoImp := { {"NF_UFPREISS" ,  "SP"},;
						{"NF_CODMUN",  "18800"}}
			
		//3-Inclusión
		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("¡Error en la inclusión!")
		EndIf

		ConOut("Final: " + 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" SUCURSAL "D MG 01" MÓDULO "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" 	,"EFACT"		,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("	Se incluyó Fact: " + cNum)  
Else
	MostraErro() 

	ConOut("¡Error en la inclusión!") 
EndIf

Conout("Inicio: " + cInicio)
ConOut("Final: " + Time())
Conout("Tiempo: " + ElapTime(cInicio,Time()))

RESET ENVIRONMENT

Return
Documento Tipo Devolução - Classificação utilizando o aAutoImp para modificar as informações de Impostos
#Include "Protheus.ch"
#Include "RwMake.ch"
#Include "TbiConn.ch"

User Function CSL103()

	Local aCab      := {}
	Local aLinha    := {}
	Local aItens    := {}
    Local aParamAux := {}
    Local aAutoImp  := {}
    
    Local cDoc      := "DOCS0D   "
    Local cSerie    := "001"
    Local cForn     := "CLISUP"
    Local cLoja     := "01"
    Local cDocOrig  := "DOCS0B   "
    Local cSerOrig  := "001"
    Local cItemOrig := "01  "
    Local cTes      := "001"
    Local cCondPag  := "000"
	Local nOpc      := 4 // CLASIFICACIÓN
	Local lTela     := .F.

	Private lMsErroAuto := .F.

	PREPARE ENVIRONMENT EMPRESA "T1" SUCURSAL "D MG 01" MÓDULO "COM"
    
    dDataBase := cTod("27/01/2025")

    DbSelectArea("SF1")
    SF1->(DbSetOrder(1))
    SF1->(DbSeek(xFilial("SF1") + cDoc + cSerie + cForn + cLoja ))
    
    aadd(aCab,{"F1_TIPO" ,      SF1->F1_TIPO    ,   NIL})
    aadd(aCab,{"F1_TPCOMPL" ,   SF1->F1_TPCOMPL ,   NIL})
    aadd(aCab,{"F1_FORMUL" ,    SF1->F1_FORMUL  ,   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})
    aadd(aCab,{"F1_COND" ,      cCondPag        ,   NIL})

    dbSelectArea("SD1")
    SD1->(dbSetOrder(1))
    SD1->(DbSeek(xFilial("SD1")+SF1->F1_DOC+SF1->F1_SERIE+SF1->F1_FORNECE+SF1->F1_LOJA))

    While SD1->(!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 		
        
        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"  ,    cTes            ,   NIL})
        aadd(aItens,{"D1_NFORI" ,   cDocOrig        ,    NIL})
        aadd(aItens,{"D1_SERIORI",  cSerOrig        ,    NIL})
        aadd(aItens,{"D1_ITEMORI" , cItemOrig       ,    NIL})
        aadd(aItens,{"D1_RATEIO" ,  SD1->D1_RATEIO  ,    NIL})

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

            aAdd(aItens, {"LINPOS" , "D1_ITEM", SD1->D1_ITEM }) //o SD1->D1_ITEM  si estuviera seleccionado.

        EndIf

        aAdd(aLinha,aItens)
        
        aItens := {}
        SD1->(dbSkip())
    EndDo 

    //Impuestos (Informe la referencia del impuesto, que consta en el valid del campo)
    //Para impuestos de encabezado informe: referencia, valor  
	aAutoImp := { {"NF_TOTAL" ,        1}}

    //Para impuestos de Ítems informe: referencia, valor, número de la línea
	aAdd(aAutoImp,{"IT_BASEICM", 361.21 , 1}) // Base ICMS
    aAdd(aAutoImp,{"IT_ALIQICM", 12     , 1}) // Porcentaje ICMS
    aAdd(aAutoImp,{"IT_VALICM" , 43.35  , 1}) // Valor ICMS
    aAdd(aAutoImp,{"IT_BASESOL", 480.41 , 1}) // Base ICMS ST
    aAdd(aAutoImp,{"IT_ALIQSOL", 12     , 1}) // Porcentaje ICMS


    // Ejemplo para manejar la pregunta MTA103
	aAdd(aParamAux, {"MV_PAR01", 2}) //-- ¿Muestra Asto. Contable? 1 = Sí, 2 = No
	aAdd(aParamAux, {"MV_PAR06", 2}) //-- ¿Contabilidad online? 1 = Sí, 2 = No


    //3-Inclusión / 4-Clasificación / 5-Borrado
	MSExecAuto({|x,y,z,a,b,c,d| MATA103(x,y,z,a,b,c,d,,,)},aCab,aLinha,nOpc,lTela,aAutoImp,,aParamAux)

	If lMsErroAuto
		MostraErro()
		ConOut("¡Error en la clasificación!")
	EndIf
    
    dDataBase := Date()

	RESET ENVIRONMENT

Return
Documento Tipo Normal - Inclusão com aAutoImp e informando desconto,despesas,frete e seguro do cabeçalho do documento.
#Include "Protheus.ch"
#Include "RwMake.ch"
#Include "TbiConn.ch"   

User Function INC103IMP()
 
    Local aCab      := {}
    Local aItens    := {}
    Local aLinha    := {}
    Local aParamAux := {}
    Local aAutoImp  := {}

    Local cTipo     := "N"
    Local cFormul   := "N" 
    Local cDoc      := "DOCIMP1"
    Local cSerie    := "001"
    Local cForn     := "000001"
    Local cLoja     := "01"
    Local cEspec    := "EFACT"
    Local cCondPag  := "000"
    Local cStatus   := "A"
    Local cProd     := "01"
    Local cUni      := "CX"
    Local cLocal    := "01"
    Local cTes      := "001"
    Local nX 
    Local nOpc      := 3 // INCLUSIÓN
    Local lTela     := .F.
 
    Private lMsErroAuto := .F.
 
    PREPARE ENVIRONMENT EMPRESA "T1" SUCURSAL "D MG 01" MÓDULO "COM"
     
    dDataBase := cTod("06/02/2025")
    
    //Encabezado
    aadd(aCab,{"F1_TIPO"        ,   PadR(cTipo,TamSx3("F1_TIPO")[1])        ,NIL})
    aadd(aCab,{"F1_FORMUL"      ,   PadR(cFormul,TamSx3("F1_FORMUL")[1])    ,NIL})
    aadd(aCab,{"F1_DOC"         ,   PadR(cDoc,TamSx3("F1_DOC")[1])          ,NIL})
    aadd(aCab,{"F1_SERIE"       ,   PadR(cSerie,TamSx3("F1_SERIE")[1])      ,NIL})
    aadd(aCab,{"F1_EMISSAO"     ,   dDataBase                               ,NIL})
    aadd(aCab,{"F1_DTDIGIT"     ,   dDataBase                               ,NIL})
    aadd(aCab,{"F1_FORNECE"     ,   PadR(cForn,TamSx3("F1_FORNECE")[1])     ,NIL})
    aadd(aCab,{"F1_LOJA"        ,   PadR(cLoja,TamSx3("F1_LOJA")[1])        ,NIL})
    aadd(aCab,{"F1_ESPECIE"     ,   PadR(cEspec,TamSx3("F1_ESPECIE")[1])    ,NIL})
    aadd(aCab,{"F1_COND"        ,   PadR(cCondPag,TamSx3("F1_COND")[1])     ,NIL})
    aadd(aCab,{"F1_MOEDA"       ,   1                                       ,Nil})
    aadd(aCab,{"F1_TXMOEDA"     ,   1                                       ,Nil})
    aadd(aCab,{"F1_STATUS"      ,   PadR(cStatus,TamSx3("F1_STATUS")[1])    ,NIL})

    For nX := 1 to 1
        aLinha := {} 
        aadd(aLinha,{"D1_DOC"       ,   PadR(cDoc,TamSx3("D1_DOC")[1])          ,NIL})
        aadd(aLinha,{"D1_SERIE"     ,   PadR(cSerie,TamSx3("D1_SERIE")[1])      ,NIL})
        aadd(aLinha,{"D1_FORNECE"   ,   PadR(cForn,TamSx3("D1_FORNECE")[1])     ,NIL})
        aadd(aLinha,{"D1_LOJA"      ,   PadR(cLoja,TamSx3("D1_LOJA")[1])        ,NIL})
        aadd(aLinha,{"D1_ITEM"      ,   "0001"                                  ,NIL})
        aadd(aLinha,{"D1_COD"       ,   PadR(cProd,TamSx3("D1_COD")[1])         ,NIL})
        aadd(aLinha,{"D1_UM"        ,   PadR(cUni,TamSx3("D1_UM")[1])           ,NIL})
        aadd(aLinha,{"D1_LOCAL"     ,   PadR(cLocal,TamSx3("D1_LOCAL")[1])      ,NIL})
        aadd(aLinha,{"D1_QUANT"     ,   1                                       ,NIL})
        aadd(aLinha,{"D1_VUNIT"     ,   100                                     ,NIL})
        aadd(aLinha,{"D1_TOTAL"     ,   100                                     ,NIL})
        aadd(aLinha,{"D1_TES"       ,   PadR(cTes,TamSx3("D1_TES")[1])          ,NIL})
        
        aAdd(aItens,aLinha)

    Next nX 

    //Impuestos (Informe la referencia del impuesto, que consta en el valid del campo)
    //Para impuestos de encabezado informe: referencia, valor 
    aAutoImp := { {"NF_DESCONTO" ,  1 },;
                  {"NF_DESPESA"  ,  2 },;
                  {"NF_FRETE"    ,  3 },; 
                  {"NF_SEGURO"   ,  4 }}

    //Para impuestos de Ítems informe: referencia, valor, número de la línea
    aAdd(aAutoImp,{"IT_BASEICM", 50 , 1}) // Base ICMS
    aAdd(aAutoImp,{"IT_ALIQICM", 4  , 1}) // Porcentaje ICMS
    aAdd(aAutoImp,{"IT_VALICM" , 2  , 1}) // Valor ICMS
    aAdd(aAutoImp,{"IT_BASESOL", 9  , 1}) // Base ICMS ST
    aAdd(aAutoImp,{"IT_ALIQSOL", 14 , 1}) // Porcentaje ICMS
 
 
    // Ejemplo para manejar la pregunta MTA103
    aAdd(aParamAux, {"MV_PAR01", 2}) //-- ¿Muestra Asto. Contable? 1 = Sí, 2 = No
    aAdd(aParamAux, {"MV_PAR06", 2}) //-- ¿Contabilidad online? 1 = Sí, 2 = No
 
    //3-Inclusión / 4-Clasificación / 5-Borrado
    MSExecAuto({|x,y,z,a,b,c,d| MATA103(x,y,z,a,b,c,d,,,)},aCab,aItens,nOpc,lTela,aAutoImp,,aParamAux)
 
    If lMsErroAuto
        MostraErro()
        ConOut("Error en la inclusión ")
    EndIf
     
    dDataBase := Date()
 
    RESET ENVIRONMENT
 
Return
Documento Tipo Normal - Inclusión con aAutoImp - PIS, COFINS y CSLL
#Include "TOTVS.ch"
#Include "TbiConn.ch"
 
User Function EXEC103()
Local aCab      := {}
Local aItem     := {}
Local aItens    := {}
Local aAutoImp  := {}
Local nOpc      := 3 //3-Inclusión / 4-Clasificación / 5-Borrado
Local cNum      := ""
Local nX        := 0

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

PREPARE ENVIRONMENT EMPRESA "T1" SUCURSAL "D MG 01 " MÓDULO "COM" FUNNAME "MATA103"

cNum := GetSxeNum("SF1","F1_DOC")

DBSelectArea("SF1")
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"   ,PadR("1",TamSx3("F1_SERIE")[1])        ,NIL})
aadd(aCab,{"F1_EMISSAO" ,DDATABASE                              ,NIL})
aadd(aCab,{"F1_DTDIGIT" ,DDATABASE                              ,NIL})
aadd(aCab,{"F1_FORNECE" ,PadR("110000",TamSx3("F1_FORNECE")[1]) ,NIL})
aadd(aCab,{"F1_LOJA"    ,PadR("01",TamSx3("F1_LOJA")[1])        ,NIL})
aadd(aCab,{"F1_ESPECIE" ,PadR("NFE",TamSx3("F1_ESPECIE")[1])    ,NIL})
aadd(aCab,{"F1_COND"    ,PadR("000",TamSx3("F1_COND")[1])       ,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,TamSx3("D1_ITEM")[1])       ,NIL})
    aadd(aItem,{"D1_COD"    ,PadR("PRODPCC",TamSx3("D1_COD")[1])    ,NIL})
    aadd(aItem,{"D1_UM"     ,"UN"                                   ,NIL})
    aadd(aItem,{"D1_LOCAL"  ,PadR("01",TamSx3("D1_LOCAL")[1])       ,NIL})
    aadd(aItem,{"D1_QUANT"  ,1                                      ,NIL})
    aadd(aItem,{"D1_VUNIT"  ,10000                                  ,NIL})
    aadd(aItem,{"D1_TOTAL"  ,10000                                  ,NIL})
    aadd(aItem,{"D1_TES"    ,PadR("308",TamSx3("D1_TES")[1])        ,NIL})

    aAdd(aItens,aItem)

Next nX

//Impuestos (Informar la referencia del impuesto, que consta en el valid del campo)

//Para impuestos de Ítems informar: referencia, valor, número de la línea

//PIS
aAdd(aAutoImp, {'IT_BASEPIS'    ,10000  ,1}) //Base
aAdd(aAutoImp, {'IT_ALIQPIS'    ,1.76   ,1}) //Porcentaje impuesto
aAdd(aAutoImp, {'IT_VALPIS'     ,176    ,1}) //Valor impuesto

//COFINS
aAdd(aAutoImp, {'IT_BASECOF'    ,10000  ,1}) //Base
aAdd(aAutoImp, {'IT_ALIQCOF'    ,8.2    ,1}) //Porcentaje impuesto
aAdd(aAutoImp, {'IT_VALCOF'     ,820    ,1}) //Valor impuesto

//CSLL
aAdd(aAutoImp, {'IT_BASECSL'    ,10000  ,1}) //Base
aAdd(aAutoImp, {'IT_ALIQCSL'    ,10     ,1}) //Porcentaje impuesto
aAdd(aAutoImp, {'IT_VALCSL'     ,1000   ,1}) //Valor impuesto


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

If !lMsErroAuto
    ConOut(" Incluido NF: " + cNum)
Else
    MostraErro()
    ConOut("Error en la inclusión")
EndIf

RESET ENVIRONMENT

Return

¡ATENCIÓN!

¡No se olvide de verificar las observaciones! 

Observaciones:

En todo PREPARE ENVIRONMENT debe informarse el FUNNAME de la rutina para que no haya problema durante la inclusión/modificación/borrado del documento.

Ej.:

PREPARE ENVIRONMENT EMPRESA "01" SUCURSAL "1001" MÓDULO "CON" FUNNAME "MATA103"

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


El parámetro aCodRet que contiene el array con los códigos de retención puede ser referido con uno o más impuestos o con la referencia genérica "..." como aparece en la solapa de impuestos de la factura de entrada. 
Para grabar los códigos de retención es necesario habilitar el parámetro MV_VISDIRF. 

Importante:

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.

Para 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:

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

Para la opción Inclusión

Valide la clave EFACT, el usuario tendrá que pasar en el array del encabezado la nomenclatura VLDAMNFE indicando si debe o no realizar la validación de la clave junto con el campo de la clave de la EFACT  F1_CHVNFE.

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

Para la opción Inclusión

Al vincular el pedido de compra al documento, si hubiera necesidad de modificar la cantidad/valor/total, debe informarse en el array de los ítems los campos del pedido (D1_PEDIDO / D1_ITEMPC) antes de los campos de cantidad/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 la opción Inclusión

Al vincular el pedido de compra al documento, si hubiera necesidad de modificar la TES, debe informarse en el array de los ítems los campos de pedido (D1_PEDIDO / D1_ITEMPC) antes del 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 la opción Inclusión - Control de numeración con uso de SD9 (MV_TPNRNFS)

Al utilizar la opción de Control de numeración con utilización de SD9 (MV_TPNRNFS = 3), por medio de Execauto, siempre debe informarse de acuerdo con el siguiente ejemplo, para que se implemente correctamente la numeración en las tablas SD1, SF1 y SD9.

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

No informe el campo F1_DOC.

Para más información sobre la secuencia automática utilizando el parámetro MV_TPNRNFS, consulte el siguiente enlace: 

FAT0049 Control de numeración del documento



Para la opción Inclusión

Para la opción Inclusión

Al utilizar el Formulario propio = "S" y si se enviara el Número del documento / Factura, el sistema acatará el número enviado por el Execauto. 

 

Obs.: Utilice la función NxtSX5Nota para tener la devolución de la numeración del documento

Ejemplo:

cNumDoc := NxtSX5Nota(cSerie )

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


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



Para la opción Inclusión

Al utilizar el Formulario propio = "S" y si se enviara el Número del documento / Factura, el sistema acatará el número enviado por el Execauto. 

 

Obs.: Utilice la función NxtSX5Nota para tener la devolución de la numeración del documento

Ejemplo:

cNumDoc := NxtSX5Nota(cSerie )

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


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

Entrega terceros

Para escenarios de ExecAuto de Entrega por terceros, el parámetro MV_FORPCNF debe estar activo (MV_FORPCNF = T) y tener previamente registrados los datos de Entrega por terceros (COMA001) configurados. 

Ejemplo: 

Se realizó la inclusión del pedido de Compra (MATA120) siguiente:   

C7_NUM = PCGF01
C7_FORNECEDOR = LF007
C7_LOJA = 00

Registro entrega por tercero (COMA001)
CPW_CODIGO (Código) = LF007
CPW_LOJA (Tienda) = 00

CPX_CODFOR (Proveedor) = LF009
CPX_LOJA (Tienda) = 00
CPX_CODFOR (Proveedor) = LF010
CPX_LOJA (Tienda) = 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 - Envío

A continuación, se detallan los parámetros del array AUT_ENTFUT, que deben comunicarse cuando se utiliza el ExecAuto para envío de mercaderías referentes a la entrega Futura.
 

1° Posición  : Documento de simple facturación               - DHQ
2° Posición  : Serie del documento de simple facturación - DHQ 
3° Posición  : Ítem del documento de simple facturación  - DHQ 
4° Posición  : No se utiliza, pero por cuenta del legado informe como 0 
5° Posición  : Ítem del documento de envío
6° Posición  : Proveedor 
7° Posición  : Tienda del proveedor 


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ícuota ISS - FISA052

Para garantizar el cálculo correcto de la alícuota del ISS relacionada con el registro FISA052 el parámetro MV_ISSXMUN debe estar habilitado, presentamos a continuación un ejemplo sobre cómo informar el Estado/Provincia/Región y el Código del municipio:


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



Configurador de tributos

La rutina Documento de entrada ya está preparada para que se utilice con el Configurador de tributos.

 

Por lo tanto, si desea realizar por medio de este, debe informarse lo siguiente: Proveedor, Producto y Cfop (con este puede informarse directamente o informar una TES que contenga el Cfop deseado) 

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

Si se estuviera informando el Cfop directamente, este se priorizará para el cálculo. 

Array - aAutoImp

El array aAutoImp puede completarse con referencias del documento (FACT) o por ítem (ÍT).

Para informar la referencia del documento (FACT), son 2 posiciones:

1 - Referencia

2 - Valor


Para informar la referencia de los ítems (IT), son 3 posiciones:

1 - Referencia

2 - Valor

3 - Ítem


Para facilitar para saber cuál es la referencia fiscal de un campo de SF1 (FACT) o SD1 (ÍT), verificar el campo Valid en la función MaFisRef, donde tendrá el nombre de la referencia fiscal del referido campo.

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