ÍNDICE

  1. Visión general
  2. Ejemplo de utilización


01. VISIÓN GENERAL

         Ejemplo de utilización de la rutina automática ATFA271 - Grupos de bienes.


02. EJEMPLO DE UTILIZACIÓN


MyATF271Inc - INCLUSIÓN
#INCLUDE "PROTHEUS.CH"
#INCLUDE "FWMVCDEF.CH"
#INCLUDE "rwmake.ch"
#include 'totvs.ch'
#include 'tbiconn.ch'

Static __oModelAut := NIL //variable oModel para sustituir msexecauto en MVC

User Function MyATF271Inc()
Local oSNGMASTER 
Local oFNGDETAIL
Local lRet := .T.
Local nX := 0
Local aLog := {}
Local cLog := "" 
Local cNG_GRUPO :=  "ATF4"
Local cNG_DESCRIC := "Grupo ATF01- CT001"
Local dNG_DTBLOQ := CtOD("01/01/2020")
Local cNG_CCUSTO := "CTB000000"
Local cNG_SUBCTA := "CTB000003"
Local cNG_CLVL    := "CTB000000"
Local cNG_TPSALDO := "1"  
Local cNG_TPDEPR  := "1"

//Cuentas contables
Local cNG_CCONTAB:= "CTB00000000000000000"
Local cNG_CDEPREC:="CTB00000000000000001"
Local cNG_CCDEPR:="CTB00000000000000002"
Local cNG_CDESP:="CTB00000000000000003"
Local cNG_CCORREC:="CTB00000000000000004"

//Centros de costo
Local cNG_CUSTBEM:="CTB000001"
Local cNG_CCDESP :="CTB000002"
Local cNG_CCCDEP :="CTB000003"
Local cNG_CCCDES :="CTB000004"
Local cNG_CCCORR :="CTB000005"

//Ítems contables
Local cNG_SUBCCON:="CTB000003"
Local cNG_SUBCDEP:="CTB000004"
Local cNG_SUBCCDE:="CTB000005"
Local cNG_SUBCDES:="CTB000006"
Local cNG_SUBCCOR:="CTB000007"

//Clases de valor
Local cNG_CLVLCON:="CTB000001"
Local cNG_CLVLDEP:="CTB000002"
Local cNG_CLVLCDE:="CTB000003"
Local cNG_CLVLDES:="CTB000004"
Local cNG_CLVLCOR:="CTB000005"

//Solapa Otros
Local cNG_TAXAPAD:="ATF001"
Local cNG_DETPATR:="03"
Local cNG_UTIPATR:="2"

//GRID
Local cFNG_TIPO:="01"
Local cFNG_HISTOR:="CT001"


PREPARE ENVIRONMENT EMPRESA 'T1' FILIAL 'D MG 01' TABLES 'SNG','FNG' MODULO 'ATF'

If __oModelAut == Nil //solamente carga una vez el modelo
__oModelAut := FWLoadModel( 'ATFA271' )
EndIf

__oModelAut:SetOperation(MODEL_OPERATION_INSERT)
__oModelAut:Activate()

oSNGMASTER := __oModelAut:GetModel('SNGMASTER')
//-- Solapa principal
oSNGMASTER:SetValue('NG_GRUPO',cNG_GRUPO) 
oSNGMASTER:SetValue('NG_DESCRIC',cNG_DESCRIC)
oSNGMASTER:SetValue('NG_DTBLOQ',dNG_DTBLOQ)
oSNGMASTER:SetValue('NG_CCUSTO',cNG_CCUSTO)
oSNGMASTER:SetValue('NG_SUBCTA',cNG_SUBCTA)
oSNGMASTER:SetValue('NG_CLVL',cNG_CLVL)
oSNGMASTER:SetValue('NG_TPSALDO',cNG_TPSALDO)
oSNGMASTER:SetValue('NG_TPDEPR',cNG_TPDEPR)

//-Solapa otros
oSNGMASTER:SetValue('NG_TAXAPAD',cNG_TAXAPAD)
oSNGMASTER:SetValue('NG_DETPATR',cNG_DETPATR)
oSNGMASTER:SetValue('NG_UTIPATR',cNG_UTIPATR)

//Cuentas contables
oSNGMASTER:SetValue('NG_CCONTAB',cNG_CCONTAB)
oSNGMASTER:SetValue('NG_CDEPREC',cNG_CDEPREC)
oSNGMASTER:SetValue('NG_CCDEPR',cNG_CCDEPR)
oSNGMASTER:SetValue('NG_CDESP',cNG_CDESP)
oSNGMASTER:SetValue('NG_CCORREC',cNG_CCORREC)

//Centros de costo
oSNGMASTER:SetValue('NG_CUSTBEM',cNG_CUSTBEM )
oSNGMASTER:SetValue('NG_CCDESP',cNG_CCDESP )
oSNGMASTER:SetValue('NG_CCCDEP',cNG_CCCDEP)
oSNGMASTER:SetValue('NG_CCCDES',cNG_CCCDES)
oSNGMASTER:SetValue('NG_CCCORR',cNG_CCCORR)

//Ítem contable
oSNGMASTER:SetValue('NG_SUBCCON',cNG_SUBCCON)
oSNGMASTER:SetValue('NG_SUBCDEP',cNG_SUBCDEP)
oSNGMASTER:SetValue('NG_SUBCCDE',cNG_SUBCCDE)
oSNGMASTER:SetValue('NG_SUBCDES',cNG_SUBCDES)
oSNGMASTER:SetValue('NG_SUBCCOR',cNG_SUBCCOR)

//Clase de valor
oSNGMASTER:SetValue('NG_CLVLCON',cNG_CLVLCON)
oSNGMASTER:SetValue('NG_CLVLDEP',cNG_CLVLDEP)
oSNGMASTER:SetValue('NG_CLVLCDE',cNG_CLVLCDE)
oSNGMASTER:SetValue('NG_CLVLDES',cNG_CLVLDES)
oSNGMASTER:SetValue('NG_CLVLCOR',cNG_CLVLCOR)

//GRID
oFNGDETAIL := __oModelAut:GetModel('FNGDETAIL') 
oFNGDETAIL:SetValue('FNG_TIPO',cFNG_TIPO)
oFNGDETAIL:SetValue('FNG_HISTOR',cFNG_HISTOR)

If __oModelAut:VldData() //validación de los datos por el modelo

	__oModelAut:CommitData() //grabación de los datos

Else
	aLog := __oModelAut:GetErrorMessage() //Recupera el error del model cuando no pasó en el VldData
	//bucle para grabar en string cLog contenido del array aLog
	For nX := 1 to Len(aLog)
		If !Empty(aLog[nX])
			cLog += Alltrim(aLog[nX]) + CRLF
		EndIf
	Next nX

	lMsErroAuto := .T. //flecha variable private como error
	AutoGRLog(cLog) //graba log para mostrar con función mostraerro
	mostraerro()
	lRet := .F. //devuelve false
Endif


__oModelAut:DeActivate() //desactiva modelo

Return( lRet )
   
MyATF271Alt - MODIFICACIÓN
#INCLUDE "PROTHEUS.CH"
#INCLUDE "FWMVCDEF.CH"
#INCLUDE "rwmake.ch"
#include 'totvs.ch'
#include 'tbiconn.ch'

Static __oModelAut := NIL //variable oModel para sustituir msexecauto en MVC

User Function MyATF271Alt()
Local oSNGMASTER 
Local lRet := .T.
Local nX := 0
Local aLog := {}
Local cLog := ""
Local lFound := .F.
Local cNG_GRUPO :=  "ATF4"
Local cNG_DESCRIC := "Grupo ATF4- PRUEBA"
Local dNG_DTBLOQ := CtOD("02/02/2020")


PREPARE ENVIRONMENT EMPRESA 'T1' SUCURSAL 'D MG 01' TABLES 'SNG','FNG' MÓDULO 'ATF'

While SNG->(!Eof()) .AND. lFound == .F.
	SNG->(dbSetOrder(1))
    lFound  :=  SNG->(dbSeek(SNG->NG_FILIAL+cNG_GRUPO))
	If lFound
	    Loop
	else
		SNG->( dbSkip() )
	Endif
	
Enddo

If __oModelAut == Nil //solamente carga una vez el modelo
__oModelAut := FWLoadModel( 'ATFA271' )
EndIf

__oModelAut:SetOperation(MODEL_OPERATION_UPDATE)
__oModelAut:Activate()

oSNGMASTER := __oModelAut:GetModel('SNGMASTER')
//-- Solapa principal
oSNGMASTER:SetValue('NG_DESCRIC',cNG_DESCRIC)
oSNGMASTER:SetValue('NG_DTBLOQ',dNG_DTBLOQ)


If __oModelAut:VldData() //validación de los datos por el modelo

	__oModelAut:CommitData() //grabación de los datos

Else
	aLog := __oModelAut:GetErrorMessage() //Recupera el error del model cuando no pasó en el VldData
	//bucle para grabar en string cLog contenido del array aLog
	For nX := 1 to Len(aLog)
		If !Empty(aLog[nX])
			cLog += Alltrim(aLog[nX]) + CRLF
		EndIf
	Next nX

	lMsErroAuto := .T. //flecha variable private como error
	AutoGRLog(cLog) //graba log para mostrar con función mostraerro
	mostraerro()
	lRet := .F. //devuelve false
Endif


__oModelAut:DeActivate() //desactiva modelo

Return( lRet )
 
MyATF271Del - BORRADO
#INCLUDE "PROTHEUS.CH"
#INCLUDE "FWMVCDEF.CH"
#INCLUDE "rwmake.ch"
#include 'totvs.ch'
#include 'tbiconn.ch'

Static __oModelAut := NIL //variable oModel para sustituir msexecauto en MVC

User Function MyATF271Del()
Local lRet := .T.
Local nX := 0
Local aLog := {}
Local cLog := ""
Local lFound := .F.
Local cNG_GRUPO :=  "ATF4"

PREPARE ENVIRONMENT EMPRESA 'T1' SUCURSAL 'D MG 01' TABLES 'SNG','FNG' MÓDULO 'ATF'

While SNG->(!Eof()) .AND. lFound == .F.
	SNG->(dbSetOrder(1))
    lFound  :=  SNG->(dbSeek(SNG->NG_FILIAL+cNG_GRUPO))
	If lFound
	    Loop
	else
		SNG->( dbSkip() )
	Endif
	
Enddo

If __oModelAut == Nil //solamente carga una vez el modelo
__oModelAut := FWLoadModel( 'ATFA271' )
EndIf

__oModelAut:SetOperation(MODEL_OPERATION_DELETE)
__oModelAut:Activate()

If __oModelAut:VldData() //validación de los datos por el modelo

	__oModelAut:CommitData() //grabación de los datos

Else
	aLog := __oModelAut:GetErrorMessage() //Recupera el error del model cuando no pasó en el VldData
	//bucle para grabar en string cLog contenido del array aLog
	For nX := 1 to Len(aLog)
		If !Empty(aLog[nX])
			cLog += Alltrim(aLog[nX]) + CRLF
		EndIf
	Next nX

	lMsErroAuto := .T. //flecha variable private como error
	AutoGRLog(cLog) //graba log para mostrar con función mostraerro
	mostraerro()
	lRet := .F. //devuelve false
Endif


__oModelAut:DeActivate() //desactiva modelo

Return( lRet )
 


05. TABLAS UTILIZADAS

  • SNG
  • FNG