6.1 PROCESO DE IMPLEMENTACIÓN

Para la ejecución de las rutinas de forma automática, es necesario utilizar el modelo definido para el documento de entrada.

En el modelo del documento fiscal, se definen todos los campos de la tablas de Encabezado de documentos de entrada(SF1) y Items de documentos de entrada (SD1).



Es importante que al momento de informar los valores en el modelo, se indiquen solo las propiedades que pertenecen al país donde se vaya a ejecutar el "Commit" del modelo, ya que si se informan algún otro campo que no existe para dicho país se detonará error en la ejecución.

  1. Compilar la rutina que contenga la Función de Usuario con el ExecAuto a la rutina Modelo del documento de entrada.
  2. En el módulo Configurador (SIGACFG) desde el menú EntornoArchivos Menú (CFGX013)
    • Incluir en el menú la rutina para generación del documento por medio de rutina automática.


  1. Ir al menú donde se agregó la rutina con la Función de Usuario y ejecutar el proceso.
  2. Una vez finalizado, verificar la grabación correcta del recibo de cobro.

6.2 EJEMPLO DE UTILIZACIÓN


A continuación se muestran algunos ejemplos para ejecutar las operaciones de INSERT, DELETE del modelo.

En el modelo de los documentos fiscales de entrada, existen los siguientes grid para informar los datos del documento:

SF1_MASTER - Grid para informar los datos del encabezado (SF1).

SD1_DETAIL - Grid para informar los datos de los items (SD1).


Static Function LOCX60AUTO()
Local oMdlTab
Local aError    := {}
Local cMsj      := "Registrado con éxito."
Local cFornece  := "000001"
Local cLoja     := "01"
Local cDoc      := "090420240001"
Local cSerie    := "R"
      
    SetFunName("COMA221")
 
    // Se define el modelo LOCX60  
    oMdlTab  := FwLoadModel("LOCX60")
   
    // Se define la operación INSERT en el modelo
    oMdlTab:SetOperation(MODEL_OPERATION_INSERT)
  
    // Se activa el modelo
    oMdlTab:Activate()
   
    //Encabezado - SF1
    oMdlTab:SetValue('SF1_MASTER', "F1_FILIAL"  ,   xFilial("SF1"))
    oMdlTab:SetValue('SF1_MASTER', "F1_FORNECE" ,   cFornece )
    oMdlTab:SetValue('SF1_MASTER', "F1_LOJA"    ,   cLoja )
    oMdlTab:SetValue('SF1_MASTER', "F1_DOC"     ,   cDoc)
    oMdlTab:SetValue('SF1_MASTER', "F1_SERIE"   ,   cSerie)
    oMdlTab:SetValue('SF1_MASTER', "F1_EMISSAO" ,   dDataBase)
    oMdlTab:SetValue('SF1_MASTER', "F1_MOEDA"   ,   1)
    oMdlTab:SetValue('SF1_MASTER', "F1_PROVENT" ,   "BA" )
    oMdlTab:SetValue('SF1_MASTER', "F1_FRETE"   ,   100 )
    oMdlTab:SetValue('SF1_MASTER', "F1_SEGURO " ,   200 )
    oMdlTab:SetValue('SF1_MASTER', "F1_DESPESA" ,   300 )
    oMdlTab:SetValue('SF1_MASTER', "F1_DESCONT" ,   200 )
	
 	//Detalle Items - SD1
    oMdlTab:SetValue('SD1_DETAIL', "D1_FILIAL"  ,   xFilial("SF1"))
    oMdlTab:SetValue('SD1_DETAIL', "D1_ITEM"    ,   "0001" )
    oMdlTab:SetValue('SD1_DETAIL', "D1_COD"     ,   "000001" )
    oMdlTab:SetValue('SD1_DETAIL', "D1_DOC"     ,   cDoc)
    oMdlTab:SetValue('SD1_DETAIL', "D1_QUANT"   ,   1)
    oMdlTab:SetValue('SD1_DETAIL', "D1_VUNIT"   ,   1000)
    oMdlTab:SetValue('SD1_DETAIL', "D1_TOTAL"   ,   1000)
    oMdlTab:SetValue('SD1_DETAIL', "D1_TES"     ,   "001")
    oMdlTab:SetValue('SD1_DETAIL', "D1_CF"      ,   "112")

    oMdlTab:GetModel('SD1_DETAIL' ):AddLine()

    oMdlTab:SetValue('SD1_DETAIL', "D1_FILIAL"  ,   xFilial("SF1"))
    oMdlTab:SetValue('SD1_DETAIL', "D1_ITEM"    ,   "0002" )
    oMdlTab:SetValue('SD1_DETAIL', "D1_COD"     ,   "000002" )
    oMdlTab:SetValue('SD1_DETAIL', "D1_DOC"     ,   cDoc)
    oMdlTab:SetValue('SD1_DETAIL', "D1_QUANT"   ,   1)
    oMdlTab:SetValue('SD1_DETAIL', "D1_VUNIT"   ,   1000)
    oMdlTab:SetValue('SD1_DETAIL', "D1_TOTAL"   ,   1000)
    oMdlTab:SetValue('SD1_DETAIL', "D1_TES"     ,   "001")
    oMdlTab:SetValue('SD1_DETAIL', "D1_CF"      ,   "112")

    //Se ejecuta el commit
    If oMdlTab:VldData() // Se detonan las validaciones del modelo
        // Si pasa las validaciones, se ejecutara el CommitData del modelo para guardar los datos.
        oMdlTab:CommitData()
    Endif

    // Se obtienen los errores del modelo
    aError := oMdlTab:GetErrorMessage()
    If alltrim(aError[6]) <> ""
        cMsj := aError[6]
    Endif
    ConOut("Mensaje de proceso: " + cMsj)
     
    oMdlTab:DeActivate()
Return   
#INCLUDE 'protheus.ch'  

User Function LOCX60AUTO()
Local oMdlTab
Local cMsj := "Registro borrado con éxito."

    SetFunName("COMA221")
     
    oMdlTab := FwLoadModel("LOCX60")
    DbSelectArea("SF1")
    SF1->(DbSetOrder(1)) //F1_FILIAL+F1_DOC+F1_SERIE+F1_FORNECE+F1_LOJA+F1_TIPO                                                                                                                                                                                                                                       
    If SF1->(MsSeek(xFilial("SF1") + "090420240001" + "R  " + "000001" + "01" + "N",.T.))
        oMdlTab:SetOperation(MODEL_OPERATION_DELETE)
        oMdlTab:Activate()
        If oMdlTab:VldData()
            oMdlTab:CommitData()
        Endif  
    EndIf
 
    aError := oMdlTab:GetErrorMessage()
    If alltrim(aError[6]) <> ""
        cMsj := aError[6]
    Endif
    CONOUT("Mensaje de proceso: "+cMsj) 
     
    oMdlTab:DeActivate()
 
Return 

Para los países de México, Colombia, Paraguay y Perú se debe considerar el nombre que actualmente se tiene en el menú "Movimientos": Remisión, para EUA y Republica Dominicana: Conduce, para el país de Chile : Guía de Despacho, para el país de Ecuador: Form. de Recepción y para el resto debe ser Remito de Entrada.

UserFunction LOCX10AUTO()
Local oMdlTab
Local aError    := {}
Local cMsj      := "Registrado con éxito."
Local cFornece  := "000025"
Local cLoja     := "01"
Local cDoc      := "090420240002"
Local cSerie    := "A"
      
    SetFunName("COMA222")
 
    // Se define el modelo LOCX10  
    oMdlTab  := FwLoadModel("LOCX10")
   
    // Se define la operación INSERT en el modelo
    oMdlTab:SetOperation(MODEL_OPERATION_INSERT)
  
    // Se activa el modelo
    oMdlTab:Activate()
   
    //Encabezado - SF1
    oMdlTab:SetValue('SF1_MASTER', "F1_FILIAL"  ,   xFilial("SF1"))
    oMdlTab:SetValue('SF1_MASTER', "F1_FORNECE" ,   cFornece )
    oMdlTab:SetValue('SF1_MASTER', "F1_LOJA"    ,   cLoja )
    oMdlTab:SetValue('SF1_MASTER', "F1_DOC"     ,   cDoc)
    oMdlTab:SetValue('SF1_MASTER', "F1_SERIE"   ,   cSerie)
    oMdlTab:SetValue('SF1_MASTER', "F1_EMISSAO" ,   dDataBase)
    oMdlTab:SetValue('SF1_MASTER', "F1_MOEDA"   ,   1)
    oMdlTab:SetValue('SF1_MASTER', "F1_PROVENT" ,   "BA" )
    oMdlTab:SetValue('SF1_MASTER', "F1_COND"    ,   "001" )
    oMdlTab:SetValue('SF1_MASTER', "F1_FRETE"   ,   100 )
    oMdlTab:SetValue('SF1_MASTER', "F1_SEGURO " ,   200 )
    oMdlTab:SetValue('SF1_MASTER', "F1_DESPESA" ,   300 )
    oMdlTab:SetValue('SF1_MASTER', "F1_DESCONT" ,   200 )

 	//Detalle Items - SD1
    oMdlTab:SetValue('SD1_DETAIL', "D1_FILIAL"  ,   xFilial("SF1"))
    oMdlTab:SetValue('SD1_DETAIL', "D1_ITEM"    ,   "0001" )
    oMdlTab:SetValue('SD1_DETAIL', "D1_COD"     ,   "000001" )
    oMdlTab:SetValue('SD1_DETAIL', "D1_DOC"     ,   cDoc)
    oMdlTab:SetValue('SD1_DETAIL', "D1_QUANT"   ,   1)
    oMdlTab:SetValue('SD1_DETAIL', "D1_VUNIT"   ,   1000)
    oMdlTab:SetValue('SD1_DETAIL', "D1_TOTAL"   ,   1000)
    oMdlTab:SetValue('SD1_DETAIL', "D1_TES"     ,   "175")
    oMdlTab:SetValue('SD1_DETAIL', "D1_CF"      ,   "112")

    oMdlTab:GetModel('SD1_DETAIL' ):AddLine()

    oMdlTab:SetValue('SD1_DETAIL', "D1_FILIAL"  ,   xFilial("SF1"))
    oMdlTab:SetValue('SD1_DETAIL', "D1_ITEM"    ,   "0002" )
    oMdlTab:SetValue('SD1_DETAIL', "D1_COD"     ,   "000002" )
    oMdlTab:SetValue('SD1_DETAIL', "D1_DOC"     ,   cDoc)
    oMdlTab:SetValue('SD1_DETAIL', "D1_QUANT"   ,   1)
    oMdlTab:SetValue('SD1_DETAIL', "D1_VUNIT"   ,   1000)
    oMdlTab:SetValue('SD1_DETAIL', "D1_TOTAL"   ,   1000)
    oMdlTab:SetValue('SD1_DETAIL', "D1_TES"     ,   "175")
    oMdlTab:SetValue('SD1_DETAIL', "D1_CF"      ,   "112")

    oMdlTab:GetModel('SD1_DETAIL' ):AddLine()

    oMdlTab:SetValue('SD1_DETAIL', "D1_FILIAL"  ,   xFilial("SF1"))
    oMdlTab:SetValue('SD1_DETAIL', "D1_ITEM"    ,   "0003" )
    oMdlTab:SetValue('SD1_DETAIL', "D1_COD"     ,   "000003" )
    oMdlTab:SetValue('SD1_DETAIL', "D1_DOC"     ,   cDoc)
    oMdlTab:SetValue('SD1_DETAIL', "D1_QUANT"   ,   1)
    oMdlTab:SetValue('SD1_DETAIL', "D1_VUNIT"   ,   1000)
    oMdlTab:SetValue('SD1_DETAIL', "D1_TOTAL"   ,   1000)
    oMdlTab:SetValue('SD1_DETAIL', "D1_TES"     ,   "175")
    oMdlTab:SetValue('SD1_DETAIL', "D1_CF"      ,   "112")

    //Se ejecuta el commit
    If oMdlTab:VldData() // Se detonan las validaciones del modelo
        // Si pasa las validaciones, se ejecutara el CommitData del modelo para guardar los datos.
        oMdlTab:CommitData()
    Endif

    // Se obtienen los errores del modelo
    aError := oMdlTab:GetErrorMessage()
    If alltrim(aError[6]) <> ""
        cMsj := aError[6]
    Endif
    ConOut("Mensaje de proceso: " + cMsj)
     
    oMdlTab:DeActivate()
Return  
Static Function LOCX10AUTO()
Local oMdlTab
Local aError    := {}
Local cMsj      := "Registrado con éxito."
Local cFornece  := "000025"
Local cLoja     := "01"
Local cDoc      := "090420240003"
Local cSerie    := "A"
      
    SetFunName("COMA222")
 
    // Se define el modelo LOCX10  
    oMdlTab  := FwLoadModel("LOCX10")
   
    // Se define la operación INSERT en el modelo
    oMdlTab:SetOperation(MODEL_OPERATION_INSERT)
  
    // Se activa el modelo
    oMdlTab:Activate()
   
    //Encabezado - SF1
    oMdlTab:SetValue('SF1_MASTER', "F1_FILIAL"  ,   xFilial("SF1"))
    oMdlTab:SetValue('SF1_MASTER', "F1_FORNECE" ,   cFornece )
    oMdlTab:SetValue('SF1_MASTER', "F1_LOJA"    ,   cLoja )
    oMdlTab:SetValue('SF1_MASTER', "F1_DOC"     ,   cDoc)
    oMdlTab:SetValue('SF1_MASTER', "F1_SERIE"   ,   cSerie)
    oMdlTab:SetValue('SF1_MASTER', "F1_EMISSAO" ,   dDataBase)
    oMdlTab:SetValue('SF1_MASTER', "F1_MOEDA"   ,   2)
    oMdlTab:SetValue('SF1_MASTER', "F1_TXMOEDA" ,   10)
    oMdlTab:SetValue('SF1_MASTER', "F1_PROVENT" ,   "BA" )
    oMdlTab:SetValue('SF1_MASTER', "F1_COND"    ,   "001" )
    oMdlTab:SetValue('SF1_MASTER', "F1_FRETE"   ,   100 )
    oMdlTab:SetValue('SF1_MASTER', "F1_SEGURO " ,   200 )
    oMdlTab:SetValue('SF1_MASTER', "F1_DESPESA" ,   300 )
    oMdlTab:SetValue('SF1_MASTER', "F1_DESCONT" ,   200 )

 	//Detalle Items - SD1
    oMdlTab:SetValue('SD1_DETAIL', "D1_FILIAL"  ,   xFilial("SF1"))
    oMdlTab:SetValue('SD1_DETAIL', "D1_ITEM"    ,   "0001" )
    oMdlTab:SetValue('SD1_DETAIL', "D1_COD"     ,   "000001" )
    oMdlTab:SetValue('SD1_DETAIL', "D1_DOC"     ,   cDoc)
    oMdlTab:SetValue('SD1_DETAIL', "D1_QUANT"   ,   1)
    oMdlTab:SetValue('SD1_DETAIL', "D1_VUNIT"   ,   1000)
    oMdlTab:SetValue('SD1_DETAIL', "D1_TOTAL"   ,   1000)
    oMdlTab:SetValue('SD1_DETAIL', "D1_TES"     ,   "175")
    oMdlTab:SetValue('SD1_DETAIL', "D1_CF"      ,   "112")

    oMdlTab:GetModel('SD1_DETAIL' ):AddLine()

    oMdlTab:SetValue('SD1_DETAIL', "D1_FILIAL"  ,   xFilial("SF1"))
    oMdlTab:SetValue('SD1_DETAIL', "D1_ITEM"    ,   "0002" )
    oMdlTab:SetValue('SD1_DETAIL', "D1_COD"     ,   "000002" )
    oMdlTab:SetValue('SD1_DETAIL', "D1_DOC"     ,   cDoc)
    oMdlTab:SetValue('SD1_DETAIL', "D1_QUANT"   ,   1)
    oMdlTab:SetValue('SD1_DETAIL', "D1_VUNIT"   ,   1000)
    oMdlTab:SetValue('SD1_DETAIL', "D1_TOTAL"   ,   1000)
    oMdlTab:SetValue('SD1_DETAIL', "D1_TES"     ,   "175")
    oMdlTab:SetValue('SD1_DETAIL', "D1_CF"      ,   "112")

    oMdlTab:GetModel('SD1_DETAIL' ):AddLine()

    oMdlTab:SetValue('SD1_DETAIL', "D1_FILIAL"  ,   xFilial("SF1"))
    oMdlTab:SetValue('SD1_DETAIL', "D1_ITEM"    ,   "0003" )
    oMdlTab:SetValue('SD1_DETAIL', "D1_COD"     ,   "000003" )
    oMdlTab:SetValue('SD1_DETAIL', "D1_DOC"     ,   cDoc)
    oMdlTab:SetValue('SD1_DETAIL', "D1_QUANT"   ,   1)
    oMdlTab:SetValue('SD1_DETAIL', "D1_VUNIT"   ,   1000)
    oMdlTab:SetValue('SD1_DETAIL', "D1_TOTAL"   ,   1000)
    oMdlTab:SetValue('SD1_DETAIL', "D1_TES"     ,   "175")
    oMdlTab:SetValue('SD1_DETAIL', "D1_CF"      ,   "112")

    //Se ejecuta el commit
    If oMdlTab:VldData() // Se detonan las validaciones del modelo
        // Si pasa las validaciones, se ejecutara el CommitData del modelo para guardar los datos.
        oMdlTab:CommitData()
    Endif

    // Se obtienen los errores del modelo
    aError := oMdlTab:GetErrorMessage()
    If alltrim(aError[6]) <> ""
        cMsj := aError[6]
    Endif
    ConOut("Mensaje de proceso: " + cMsj)
     
    oMdlTab:DeActivate()
Return 
#INCLUDE 'protheus.ch'  
User Function LOCX10AUTO()
Local oMdlTab
Local cMsj := "Registro borrado con éxito."

    SetFunName("COMA222")
     
    oMdlTab := FwLoadModel("LOCX10")
    DbSelectArea("SF1")
    SF1->(DbSetOrder(1)) //F1_FILIAL+F1_DOC+F1_SERIE+F1_FORNECE+F1_LOJA+F1_TIPO                                                                                                                                                                                                                                       
    If SF1->(MsSeek(xFilial("SF1") + "090420240002" + "A  " + "000025" + "01" + "N",.T.))
        oMdlTab:SetOperation(MODEL_OPERATION_DELETE)
        oMdlTab:Activate()
        If oMdlTab:VldData()
            oMdlTab:CommitData()
        Endif  
    EndIf
 
    aError := oMdlTab:GetErrorMessage()
    If alltrim(aError[6]) <> ""
        cMsj := aError[6]
    Endif
    CONOUT("Mensaje de proceso: "+cMsj) 
     
    oMdlTab:DeActivate()
 
Return 
#INCLUDE 'protheus.ch'

UserFunction LOCX09AUTO()
Local oMdlTab
Local aError    := {}
Local cMsj      := "Registrado con éxito."
Local cFornece  := "000025"
Local cLoja     := "01"
Local cDoc      := "090420240004"
Local cSerie    := "A"
      
    SetFunName("COMA223")
 
    // Se define el modelo LOCX09  
    oMdlTab  := FwLoadModel("LOCX09")
   
    // Se define la operación INSERT en el modelo
    oMdlTab:SetOperation(MODEL_OPERATION_INSERT)
  
    // Se activa el modelo
    oMdlTab:Activate()
   
    //Encabezado - SF1
    oMdlTab:SetValue('SF1_MASTER', "F1_FILIAL"  ,   xFilial("SF1"))
    oMdlTab:SetValue('SF1_MASTER', "F1_FORNECE" ,   cFornece )
    oMdlTab:SetValue('SF1_MASTER', "F1_LOJA"    ,   cLoja )
    oMdlTab:SetValue('SF1_MASTER', "F1_DOC"     ,   cDoc)
    oMdlTab:SetValue('SF1_MASTER', "F1_SERIE"   ,   cSerie)
    oMdlTab:SetValue('SF1_MASTER', "F1_EMISSAO" ,   dDataBase)
    oMdlTab:SetValue('SF1_MASTER', "F1_MOEDA"   ,   1)
    oMdlTab:SetValue('SF1_MASTER', "F1_PROVENT" ,   "BA" )
    oMdlTab:SetValue('SF1_MASTER', "F1_COND"    ,   "001" )
    oMdlTab:SetValue('SF1_MASTER', "F1_FRETE"   ,   100 )
    oMdlTab:SetValue('SF1_MASTER', "F1_SEGURO " ,   200 )
    oMdlTab:SetValue('SF1_MASTER', "F1_DESPESA" ,   300 )
    oMdlTab:SetValue('SF1_MASTER', "F1_DESCONT" ,   200 )

 	//Detalle Items - SD1
    oMdlTab:SetValue('SD1_DETAIL', "D1_FILIAL"  ,   xFilial("SF1"))
    oMdlTab:SetValue('SD1_DETAIL', "D1_ITEM"    ,   "0001" )
    oMdlTab:SetValue('SD1_DETAIL', "D1_COD"     ,   "000001" )
    oMdlTab:SetValue('SD1_DETAIL', "D1_DOC"     ,   cDoc)
    oMdlTab:SetValue('SD1_DETAIL', "D1_QUANT"   ,   1)
    oMdlTab:SetValue('SD1_DETAIL', "D1_VUNIT"   ,   1000)
    oMdlTab:SetValue('SD1_DETAIL', "D1_TOTAL"   ,   1000)
    oMdlTab:SetValue('SD1_DETAIL', "D1_TES"     ,   "175")
    oMdlTab:SetValue('SD1_DETAIL', "D1_CF"      ,   "112")

    oMdlTab:GetModel('SD1_DETAIL' ):AddLine()

    oMdlTab:SetValue('SD1_DETAIL', "D1_FILIAL"  ,   xFilial("SF1"))
    oMdlTab:SetValue('SD1_DETAIL', "D1_ITEM"    ,   "0002" )
    oMdlTab:SetValue('SD1_DETAIL', "D1_COD"     ,   "000002" )
    oMdlTab:SetValue('SD1_DETAIL', "D1_DOC"     ,   cDoc)
    oMdlTab:SetValue('SD1_DETAIL', "D1_QUANT"   ,   1)
    oMdlTab:SetValue('SD1_DETAIL', "D1_VUNIT"   ,   1000)
    oMdlTab:SetValue('SD1_DETAIL', "D1_TOTAL"   ,   1000)
    oMdlTab:SetValue('SD1_DETAIL', "D1_TES"     ,   "175")
    oMdlTab:SetValue('SD1_DETAIL', "D1_CF"      ,   "112")

    oMdlTab:GetModel('SD1_DETAIL' ):AddLine()

    oMdlTab:SetValue('SD1_DETAIL', "D1_FILIAL"  ,   xFilial("SF1"))
    oMdlTab:SetValue('SD1_DETAIL', "D1_ITEM"    ,   "0003" )
    oMdlTab:SetValue('SD1_DETAIL', "D1_COD"     ,   "000003" )
    oMdlTab:SetValue('SD1_DETAIL', "D1_DOC"     ,   cDoc)
    oMdlTab:SetValue('SD1_DETAIL', "D1_QUANT"   ,   1)
    oMdlTab:SetValue('SD1_DETAIL', "D1_VUNIT"   ,   1000)
    oMdlTab:SetValue('SD1_DETAIL', "D1_TOTAL"   ,   1000)
    oMdlTab:SetValue('SD1_DETAIL', "D1_TES"     ,   "175")
    oMdlTab:SetValue('SD1_DETAIL', "D1_CF"      ,   "112")

    //Se ejecuta el commit
    If oMdlTab:VldData() // Se detonan las validaciones del modelo
        // Si pasa las validaciones, se ejecutara el CommitData del modelo para guardar los datos.
        oMdlTab:CommitData()
    Endif

    // Se obtienen los errores del modelo
    aError := oMdlTab:GetErrorMessage()
    If alltrim(aError[6]) <> ""
        cMsj := aError[6]
    Endif
    ConOut("Mensaje de proceso: " + cMsj)
     
    oMdlTab:DeActivate()
Return  
#INCLUDE 'protheus.ch'

User Function LOCX09AUTO()
Local oMdlTab
Local aError    := {}
Local cMsj      := "Registrado con éxito."
Local cFornece  := "000025"
Local cLoja     := "01"
Local cDoc      := "090420240005"
Local cSerie    := "A"
      
    SetFunName("COMA223")
 
    // Se define el modelo LOCX09  
    oMdlTab  := FwLoadModel("LOCX09")
   
    // Se define la operación INSERT en el modelo
    oMdlTab:SetOperation(MODEL_OPERATION_INSERT)
  
    // Se activa el modelo
    oMdlTab:Activate()
   
    //Encabezado - SF1
    oMdlTab:SetValue('SF1_MASTER', "F1_FILIAL"  ,   xFilial("SF1"))
    oMdlTab:SetValue('SF1_MASTER', "F1_FORNECE" ,   cFornece )
    oMdlTab:SetValue('SF1_MASTER', "F1_LOJA"    ,   cLoja )
    oMdlTab:SetValue('SF1_MASTER', "F1_DOC"     ,   cDoc)
    oMdlTab:SetValue('SF1_MASTER', "F1_SERIE"   ,   cSerie)
    oMdlTab:SetValue('SF1_MASTER', "F1_EMISSAO" ,   dDataBase)
    oMdlTab:SetValue('SF1_MASTER', "F1_MOEDA"   ,   2)
    oMdlTab:SetValue('SF1_MASTER', "F1_TXMOEDA" ,   10)
    oMdlTab:SetValue('SF1_MASTER', "F1_PROVENT" ,   "BA" )
    oMdlTab:SetValue('SF1_MASTER', "F1_COND"    ,   "001" )
    oMdlTab:SetValue('SF1_MASTER', "F1_FRETE"   ,   100 )
    oMdlTab:SetValue('SF1_MASTER', "F1_SEGURO " ,   200 )
    oMdlTab:SetValue('SF1_MASTER', "F1_DESPESA" ,   300 )
    oMdlTab:SetValue('SF1_MASTER', "F1_DESCONT" ,   200 )

 	//Detalle Items - SD1
    oMdlTab:SetValue('SD1_DETAIL', "D1_FILIAL"  ,   xFilial("SF1"))
    oMdlTab:SetValue('SD1_DETAIL', "D1_ITEM"    ,   "0001" )
    oMdlTab:SetValue('SD1_DETAIL', "D1_COD"     ,   "000001" )
    oMdlTab:SetValue('SD1_DETAIL', "D1_DOC"     ,   cDoc)
    oMdlTab:SetValue('SD1_DETAIL', "D1_QUANT"   ,   1)
    oMdlTab:SetValue('SD1_DETAIL', "D1_VUNIT"   ,   1000)
    oMdlTab:SetValue('SD1_DETAIL', "D1_TOTAL"   ,   1000)
    oMdlTab:SetValue('SD1_DETAIL', "D1_TES"     ,   "175")
    oMdlTab:SetValue('SD1_DETAIL', "D1_CF"      ,   "112")

    oMdlTab:GetModel('SD1_DETAIL' ):AddLine()

    oMdlTab:SetValue('SD1_DETAIL', "D1_FILIAL"  ,   xFilial("SF1"))
    oMdlTab:SetValue('SD1_DETAIL', "D1_ITEM"    ,   "0002" )
    oMdlTab:SetValue('SD1_DETAIL', "D1_COD"     ,   "000002" )
    oMdlTab:SetValue('SD1_DETAIL', "D1_DOC"     ,   cDoc)
    oMdlTab:SetValue('SD1_DETAIL', "D1_QUANT"   ,   1)
    oMdlTab:SetValue('SD1_DETAIL', "D1_VUNIT"   ,   1000)
    oMdlTab:SetValue('SD1_DETAIL', "D1_TOTAL"   ,   1000)
    oMdlTab:SetValue('SD1_DETAIL', "D1_TES"     ,   "175")
    oMdlTab:SetValue('SD1_DETAIL', "D1_CF"      ,   "112")

    oMdlTab:GetModel('SD1_DETAIL' ):AddLine()

    oMdlTab:SetValue('SD1_DETAIL', "D1_FILIAL"  ,   xFilial("SF1"))
    oMdlTab:SetValue('SD1_DETAIL', "D1_ITEM"    ,   "0003" )
    oMdlTab:SetValue('SD1_DETAIL', "D1_COD"     ,   "000003" )
    oMdlTab:SetValue('SD1_DETAIL', "D1_DOC"     ,   cDoc)
    oMdlTab:SetValue('SD1_DETAIL', "D1_QUANT"   ,   1)
    oMdlTab:SetValue('SD1_DETAIL', "D1_VUNIT"   ,   1000)
    oMdlTab:SetValue('SD1_DETAIL', "D1_TOTAL"   ,   1000)
    oMdlTab:SetValue('SD1_DETAIL', "D1_TES"     ,   "175")
    oMdlTab:SetValue('SD1_DETAIL', "D1_CF"      ,   "112")

    //Se ejecuta el commit
    If oMdlTab:VldData() // Se detonan las validaciones del modelo
        // Si pasa las validaciones, se ejecutara el CommitData del modelo para guardar los datos.
        oMdlTab:CommitData()
    Endif

    // Se obtienen los errores del modelo
    aError := oMdlTab:GetErrorMessage()
    If alltrim(aError[6]) <> ""
        cMsj := aError[6]
    Endif
    ConOut("Mensaje de proceso: " + cMsj)
     
    oMdlTab:DeActivate()
Return  
#INCLUDE 'protheus.ch'

User Function LOCX09AUTO()
Local oMdlTab
Local cMsj := "Registro borrado con éxito."

    SetFunName("COMA223")
     
    oMdlTab := FwLoadModel("LOCX09")
    DbSelectArea("SF1")
    SF1->(DbSetOrder(1)) //F1_FILIAL+F1_DOC+F1_SERIE+F1_FORNECE+F1_LOJA+F1_TIPO                                                                                                                                                                                                                                       
    If SF1->(MsSeek(xFilial("SF1") + "090420240004" + "A  " + "000025" + "01" + "C",.T.))
        oMdlTab:SetOperation(MODEL_OPERATION_DELETE)
        oMdlTab:Activate()
        If oMdlTab:VldData()
            oMdlTab:CommitData()
        Endif  
    EndIf
 
    aError := oMdlTab:GetErrorMessage()
    If alltrim(aError[6]) <> ""
        cMsj := aError[6]
    Endif
    CONOUT("Mensaje de proceso: "+cMsj) 
     
    oMdlTab:DeActivate()
 
Return   
#INCLUDE 'protheus.ch'

User Function LOCX08AUTO()
Local oMdlTab
Local aError    := {}
Local cMsj      := "Registrado con éxito."
Local cFornece  := "000001"
Local cLoja     := "01"
Local cDoc      := "000100000250"
Local cSerie    := "A"
      
    SetFunName("COMA224")
 
    // Se define el modelo LOCX08  
    oMdlTab  := FwLoadModel("LOCX08")
   
    // Se define la operación INSERT en el modelo
    oMdlTab:SetOperation(MODEL_OPERATION_INSERT)
  
    // Se activa el modelo
    oMdlTab:Activate()
   
    //Encabezado - SF1
    oMdlTab:SetValue('SF1_MASTER', "F1_FILIAL"  ,   xFilial("SF1"))
    oMdlTab:SetValue('SF1_MASTER', "F1_PV"      ,   "0001" ) //Campo para Argentina, este campo debe ser informado antes de los demás.
    oMdlTab:SetValue('SF1_MASTER', "F1_FORNECE" ,   cFornece )
    oMdlTab:SetValue('SF1_MASTER', "F1_LOJA"    ,   cLoja )
    oMdlTab:SetValue('SF1_MASTER', "F1_SERIE"   ,   cSerie)
    oMdlTab:SetValue('SF1_MASTER', "F1_DOC"     ,   cDoc)
    oMdlTab:SetValue('SF1_MASTER', "F1_EMISSAO" ,   dDataBase)
    oMdlTab:SetValue('SF1_MASTER', "F1_MOEDA"   ,   1)
    oMdlTab:SetValue('SF1_MASTER', "F1_PROVENT" ,   "BA" )
    oMdlTab:SetValue('SF1_MASTER', "F1_TPVENT"  ,   "B" )
    oMdlTab:SetValue('SF1_MASTER', "F1_COND"    ,   "001" )
    oMdlTab:SetValue('SF1_MASTER', "F1_FRETE"   ,   100 )
    oMdlTab:SetValue('SF1_MASTER', "F1_SEGURO " ,   200 )
    oMdlTab:SetValue('SF1_MASTER', "F1_DESPESA" ,   300 )
    oMdlTab:SetValue('SF1_MASTER', "F1_DESCONT" ,   200 )

 	//Detalle Items - SD1
    oMdlTab:SetValue('SD1_DETAIL', "D1_FILIAL"  ,   xFilial("SF1"))
    oMdlTab:SetValue('SD1_DETAIL', "D1_ITEM"    ,   "0001" )
    oMdlTab:SetValue('SD1_DETAIL', "D1_COD"     ,   "000001" )
    oMdlTab:SetValue('SD1_DETAIL', "D1_DOC"     ,   cDoc)
    oMdlTab:SetValue('SD1_DETAIL', "D1_QUANT"   ,   1)
    oMdlTab:SetValue('SD1_DETAIL', "D1_VUNIT"   ,   1000)
    oMdlTab:SetValue('SD1_DETAIL', "D1_TOTAL"   ,   1000)
    oMdlTab:SetValue('SD1_DETAIL', "D1_TES"     ,   "175")
    oMdlTab:SetValue('SD1_DETAIL', "D1_CF"      ,   "112")

    oMdlTab:GetModel('SD1_DETAIL' ):AddLine()

    oMdlTab:SetValue('SD1_DETAIL', "D1_FILIAL"  ,   xFilial("SF1"))
    oMdlTab:SetValue('SD1_DETAIL', "D1_ITEM"    ,   "0002" )
    oMdlTab:SetValue('SD1_DETAIL', "D1_COD"     ,   "000002" )
    oMdlTab:SetValue('SD1_DETAIL', "D1_DOC"     ,   cDoc)
    oMdlTab:SetValue('SD1_DETAIL', "D1_QUANT"   ,   1)
    oMdlTab:SetValue('SD1_DETAIL', "D1_VUNIT"   ,   1000)
    oMdlTab:SetValue('SD1_DETAIL', "D1_TOTAL"   ,   1000)
    oMdlTab:SetValue('SD1_DETAIL', "D1_TES"     ,   "175")
    oMdlTab:SetValue('SD1_DETAIL', "D1_CF"      ,   "112")

    oMdlTab:GetModel('SD1_DETAIL' ):AddLine()

    oMdlTab:SetValue('SD1_DETAIL', "D1_FILIAL"  ,   xFilial("SF1"))
    oMdlTab:SetValue('SD1_DETAIL', "D1_ITEM"    ,   "0003" )
    oMdlTab:SetValue('SD1_DETAIL', "D1_COD"     ,   "000003" )
    oMdlTab:SetValue('SD1_DETAIL', "D1_DOC"     ,   cDoc)
    oMdlTab:SetValue('SD1_DETAIL', "D1_QUANT"   ,   1)
    oMdlTab:SetValue('SD1_DETAIL', "D1_VUNIT"   ,   1000)
    oMdlTab:SetValue('SD1_DETAIL', "D1_TOTAL"   ,   1000)
    oMdlTab:SetValue('SD1_DETAIL', "D1_TES"     ,   "175")
    oMdlTab:SetValue('SD1_DETAIL', "D1_CF"      ,   "112")

    //Se ejecuta el commit
    If oMdlTab:VldData() // Se detonan las validaciones del modelo
        // Si pasa las validaciones, se ejecutara el CommitData del modelo para guardar los datos.
        oMdlTab:CommitData()
    Endif

    // Se obtienen los errores del modelo
    aError := oMdlTab:GetErrorMessage()
    If alltrim(aError[6]) <> ""
        cMsj := aError[6]
    Endif
    ConOut("Mensaje de proceso: " + cMsj)
     
    oMdlTab:DeActivate()
Return


#INCLUDE 'protheus.ch'

User Function LOCX08AUTO()
Local oMdlTab
Local aError    := {}
Local cMsj      := "Registrado con éxito."
Local cFornece  := "000001"
Local cLoja     := "01"
Local cDoc      := "000100000251"
Local cSerie    := "A"
      
    SetFunName("COMA224")
 
    // Se define el modelo LOCX08  
    oMdlTab  := FwLoadModel("LOCX08")
   
    // Se define la operación INSERT en el modelo
    oMdlTab:SetOperation(MODEL_OPERATION_INSERT)
  
    // Se activa el modelo
    oMdlTab:Activate()
   
    //Encabezado - SF1
    oMdlTab:SetValue('SF1_MASTER', "F1_FILIAL"  ,   xFilial("SF1"))
    oMdlTab:SetValue('SF1_MASTER', "F1_PV"      ,   "0001" ) //Campo para Argentina, este campo debe ser informado antes de los demás.
    oMdlTab:SetValue('SF1_MASTER', "F1_FORNECE" ,   cFornece )
    oMdlTab:SetValue('SF1_MASTER', "F1_LOJA"    ,   cLoja )
    oMdlTab:SetValue('SF1_MASTER', "F1_SERIE"   ,   cSerie)
    oMdlTab:SetValue('SF1_MASTER', "F1_DOC"     ,   cDoc)
    oMdlTab:SetValue('SF1_MASTER', "F1_EMISSAO" ,   dDataBase)
    oMdlTab:SetValue('SF1_MASTER', "F1_MOEDA"   ,   2)
    oMdlTab:SetValue('SF1_MASTER', "F1_TXMOEDA" ,   10)
    oMdlTab:SetValue('SF1_MASTER', "F1_PROVENT" ,   "BA" )
    oMdlTab:SetValue('SF1_MASTER', "F1_TPVENT"  ,   "B" )
    oMdlTab:SetValue('SF1_MASTER', "F1_COND"    ,   "001" )
    oMdlTab:SetValue('SF1_MASTER', "F1_FRETE"   ,   100 )
    oMdlTab:SetValue('SF1_MASTER', "F1_SEGURO " ,   200 )
    oMdlTab:SetValue('SF1_MASTER', "F1_DESPESA" ,   300 )
    oMdlTab:SetValue('SF1_MASTER', "F1_DESCONT" ,   200 )

 	//Detalle Items - SD1
    oMdlTab:SetValue('SD1_DETAIL', "D1_FILIAL"  ,   xFilial("SF1"))
    oMdlTab:SetValue('SD1_DETAIL', "D1_ITEM"    ,   "0001" )
    oMdlTab:SetValue('SD1_DETAIL', "D1_COD"     ,   "000001" )
    oMdlTab:SetValue('SD1_DETAIL', "D1_DOC"     ,   cDoc)
    oMdlTab:SetValue('SD1_DETAIL', "D1_QUANT"   ,   1)
    oMdlTab:SetValue('SD1_DETAIL', "D1_VUNIT"   ,   1000)
    oMdlTab:SetValue('SD1_DETAIL', "D1_TOTAL"   ,   1000)
    oMdlTab:SetValue('SD1_DETAIL', "D1_TES"     ,   "175")
    oMdlTab:SetValue('SD1_DETAIL', "D1_CF"      ,   "112")

    oMdlTab:GetModel('SD1_DETAIL' ):AddLine()

    oMdlTab:SetValue('SD1_DETAIL', "D1_FILIAL"  ,   xFilial("SF1"))
    oMdlTab:SetValue('SD1_DETAIL', "D1_ITEM"    ,   "0002" )
    oMdlTab:SetValue('SD1_DETAIL', "D1_COD"     ,   "000002" )
    oMdlTab:SetValue('SD1_DETAIL', "D1_DOC"     ,   cDoc)
    oMdlTab:SetValue('SD1_DETAIL', "D1_QUANT"   ,   1)
    oMdlTab:SetValue('SD1_DETAIL', "D1_VUNIT"   ,   1000)
    oMdlTab:SetValue('SD1_DETAIL', "D1_TOTAL"   ,   1000)
    oMdlTab:SetValue('SD1_DETAIL', "D1_TES"     ,   "175")
    oMdlTab:SetValue('SD1_DETAIL', "D1_CF"      ,   "112")

    oMdlTab:GetModel('SD1_DETAIL' ):AddLine()

    oMdlTab:SetValue('SD1_DETAIL', "D1_FILIAL"  ,   xFilial("SF1"))
    oMdlTab:SetValue('SD1_DETAIL', "D1_ITEM"    ,   "0003" )
    oMdlTab:SetValue('SD1_DETAIL', "D1_COD"     ,   "000003" )
    oMdlTab:SetValue('SD1_DETAIL', "D1_DOC"     ,   cDoc)
    oMdlTab:SetValue('SD1_DETAIL', "D1_QUANT"   ,   1)
    oMdlTab:SetValue('SD1_DETAIL', "D1_VUNIT"   ,   1000)
    oMdlTab:SetValue('SD1_DETAIL', "D1_TOTAL"   ,   1000)
    oMdlTab:SetValue('SD1_DETAIL', "D1_TES"     ,   "175")
    oMdlTab:SetValue('SD1_DETAIL', "D1_CF"      ,   "112")

    //Se ejecuta el commit
    If oMdlTab:VldData() // Se detonan las validaciones del modelo
        // Si pasa las validaciones, se ejecutara el CommitData del modelo para guardar los datos.
        oMdlTab:CommitData()
    Endif

    // Se obtienen los errores del modelo
    aError := oMdlTab:GetErrorMessage()
    If alltrim(aError[6]) <> ""
        cMsj := aError[6]
    Endif
    ConOut("Mensaje de proceso: " + cMsj)
     
    oMdlTab:DeActivate()
Return


#INCLUDE 'protheus.ch'

User Function LOCX08AUTO()
Local oMdlTab
Local cMsj := "Registro borrado con éxito."

    SetFunName("COMA224")
     
    oMdlTab := FwLoadModel("LOCX08")
    DbSelectArea("SF1")
    SF1->(DbSetOrder(1)) //F1_FILIAL+F1_DOC+F1_SERIE+F1_FORNECE+F1_LOJA+F1_TIPO                                                                                                                                                                                                                                       
    If SF1->(MsSeek(xFilial("SF1") + "000100000250" + "A  " + "000001" + "01" + "C",.T.))
        oMdlTab:SetOperation(MODEL_OPERATION_DELETE)
        oMdlTab:Activate()
        If oMdlTab:VldData()
            oMdlTab:CommitData()
        Endif  
    EndIf
 
    aError := oMdlTab:GetErrorMessage()
    If alltrim(aError[6]) <> ""
        cMsj := aError[6]
    Endif
    CONOUT("Mensaje de proceso: "+cMsj) 
     
    oMdlTab:DeActivate()
 
Return