01. VISIÓN GENERAL
Ejemplos de ejecución vía rutina automática en la rutina de asientos contables Extemporáneos (CTBS460), mostrando ejemplos de utilización y tablas relacionadas.
02. EJEMPLO DE UTILIZACIÓN
A continuación se muestran algunos ejemplos de utilización.
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 MyCtbs460Inc()
Local lNotFound := .F.
Local oModelCSQ
Local nX
Local aLog
Local cLog :=""
Local lRet := .T.
PREPARE ENVIRONMENT EMPRESA 'T1' FILIAL 'D MG 01' TABLES 'CSQ','CT2' MODULO 'CTB'
While CT2->(!Eof()) .AND. lNotFound == .F.
CSQ->(dbSetOrder(1))
lNotFound := !CSQ->(dbSeek(CT2->CT2_FILIAL+DTOS(CT2->CT2_DATA)+CT2->CT2_LOTE+CT2->CT2_SBLOTE+CT2->CT2_DOC+CT2->CT2_LINHA+CT2->CT2_EMPORI+CT2->CT2_FILORI))
If lNotFound
Loop
else
CT2->( dbSkip() )
Endif
Enddo
If __oModelAut == Nil //solamente una única vez carga el modelo CTBS460
__oModelAut := FWLoadModel( 'CTBS460' )
EndIf
__oModelAut:SetOperation(MODEL_OPERATION_INSERT)
__oModelAut:Activate()
oModelCSQ := __oModelAut:GetModel('CSQMASTER')
oModelCSQ:SetValue("CSQ_FILIAL",CT2->CT2_FILIAL)
oModelCSQ:SetValue("CSQ_DATA",CT2->CT2_DATA)
oModelCSQ:SetValue("CSQ_LOTE",CT2->CT2_LOTE)
oModelCSQ:SetValue("CSQ_SBLOTE",CT2->CT2_SBLOTE)
oModelCSQ:SetValue("CSQ_DOC",CT2->CT2_DOC)
oModelCSQ:SetValue("CSQ_LINHA",CT2->CT2_LINHA)
oModelCSQ:SetValue("CSQ_EMPORI",CT2->CT2_EMPORI)
oModelCSQ:SetValue("CSQ_FILORI",CT2->CT2_FILORI)
oModelCSQ:SetValue("CSQ_DTEXT",Stod("20230723"))
oModelCSQ:SetValue("CSQ_NATLCT","1") // 1 - Registro en Cuentas de patrimonio/ 2 - Registro en Cuentas de resultado
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 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 )
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 MyCtbs460Alt()
Local lFound := .F.
Local oModelCSQ
Local nX
Local aLog
Local cLog :=""
Local lRet := .T.
PREPARE ENVIRONMENT EMPRESA 'T1' FILIAL 'D MG 01' TABLES 'CSQ','CT2' MODULO 'CTB'
While CT2->(!Eof()) .AND. lFound == .F.
CSQ->(dbSetOrder(1))
lFound := CSQ->(dbSeek(CT2->CT2_FILIAL+DTOS(CT2->CT2_DATA)+CT2->CT2_LOTE+CT2->CT2_SBLOTE+CT2->CT2_DOC+CT2->CT2_LINHA+CT2->CT2_EMPORI+CT2->CT2_FILORI))
If lFound
Loop
else
CT2->( dbSkip() )
Endif
Enddo
If __oModelAut == Nil //solamente una única vez carga el modelo CTBS460
__oModelAut := FWLoadModel( 'CTBS460' )
EndIf
__oModelAut:SetOperation(MODEL_OPERATION_UPDATE)
__oModelAut:Activate()
oModelCSQ := __oModelAut:GetModel('CSQMASTER')
oModelCSQ:SetValue("CSQ_DTEXT",Stod("20230823"))
If __oModelAut:VldData() //validación de los datos por el modelo
__oModelAut:CommitData() //grabación de los dados
Else
aLog := __oModelAut:GetErrorMessage() //Recupera el error del model cuando no pasó en 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 )
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 MyCtbs460Exl()
Local lFound := .F.
Local nX
Local aLog
Local cLog :=""
Local lRet := .T.
PREPARE ENVIRONMENT EMPRESA 'T1' FILIAL 'D MG 01' TABLES 'CSQ','CT2' MODULO 'CTB'
While CT2->(!Eof()) .AND. lFound == .F.
CSQ->(dbSetOrder(1))
lFound := CSQ->(dbSeek(CT2->CT2_FILIAL+DTOS(CT2->CT2_DATA)+CT2->CT2_LOTE+CT2->CT2_SBLOTE+CT2->CT2_DOC+CT2->CT2_LINHA+CT2->CT2_EMPORI+CT2->CT2_FILORI))
If lFound
Loop
else
CT2->( dbSkip() )
Endif
Enddo
If __oModelAut == Nil //solamente una única vez carga el modelo CTBS460
__oModelAut := FWLoadModel( 'CTBS460' )
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 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 )
03. TABLAS UTILIZADAS
- CT2- Asientos contables
- CSQ - Registro extemporáneo
04. OTROS ASUNTOS