Árvore de páginas

Versões comparadas

Chave

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


01. VISÃO GERAL

Exemplos de execução via rotina automática na rotina de lançamentos contábeis Extemporâneos (CTBS460), mostrando exemplos de utilização e tabelas relacionadas.

02. EXEMPLO DE UTILIZAÇÃO

Abaixo mostraremos exemplos de utilização.


Aviso
titleAviso

A Execução automática As Execuções Automáticas demonstradas abaixo são apenas um exemplo.


Inclusão

...


Bloco de código
languagevbpy
themeMidnight
titleMyCtbs460Inc
linenumberstrue
collapsetrue
#INCLUDE "PROTHEUS.CH"
#INCLUDE "FWMVCDEF.CH"
#INCLUDE "rwmake.ch"
#include 'totvs.ch'
#include 'tbiconn.ch'

Static __oModelAut := NIL //variavel oModel para substituir msexecauto em 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 //somente uma unica vez carrega o 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 - Lançamento em Contas de Patrimônio/ 2 - Lançamento em Contas de Resultado

If __oModelAut:VldData() //validacao dos dados pelo modelo

	__oModelAut:CommitData() //gravacao dos dados

Else
	aLog := __oModelAut:GetErrorMessage() //Recupera o erro do model quando nao passou no VldData
	//laco para gravar em string cLog conteudo do array aLog
	For nX := 1 to Len(aLog)
		If !Empty(aLog[nX])
			cLog += Alltrim(aLog[nX]) + CRLF
		EndIf
	Next nX

	lMsErroAuto := .T. //seta variavel private como erro
	AutoGRLog(cLog) //grava log para exibir com funcao mostraerro
	mostraerro()
	lRet := .F. //retorna false
Endif


__oModelAut:DeActivate() //desativa modelo

Return( lRet )
 

...


Alteração


Bloco de código
languagepy
themeMidnight
titleMyCTBA102Inc()MyCtbs460Alt
collapsetrue
#INCLUDE "PROTHEUS.CH"
#INCLUDE 
//-------------------------------------------------------------------
/*/{Protheus.doc} MyCTBA102Inc   
  
 Inclusão de Lançamento Automático CTBA102
  
@author Totvs
@since 23/06/2022
@version 2.0
  
/*/
//-------------------------------------------------------------------"FWMVCDEF.CH"
#INCLUDE "rwmake.ch"
#include 'totvs.ch'
#include 'tbiconn.ch'

Static __oModelAut := NIL //variavel oModel para substituir msexecauto em MVC

User Function MyCTBA102IncMyCtbs460Alt() 


Local aArealFound  := GetArea().F.
Local aCab   := {}oModelCSQ
Local aItens := {}nX
Local nLinha := 2aLog
Local nX cLog    := 0""
 
Private lMsErroAuto := .F.
Private lMsHelpAuto := .T.
Private CTF_LOCK   Local lRet := 0
Private lSubLote    := .T.
 

PREPARE ENVIRONMENT   RpcSetType(3)
    RpcSetEnv( EMPRESA 'T1', FILIAL 'D MG 01' TABLES ',,,CSQ','CT2' MODULO 'CTB')

    aAdd(aCab, {'DDATALANC' ,dDataBase ,NIL} While CT2->(!Eof()) .AND. lFound == .F.
	CSQ->(dbSetOrder(1))
    aAdd(aCab, {'CLOTE' ,'333333' ,NIL} )
    aAdd(aCab, {'CSUBLOTE' ,'001' ,NIL} )
    aAdd(aCab, {'CPADRAO' ,'' ,NIL} )
    aAdd(aCab, {'NTOTINF' ,0 ,NIL} )
    aAdd(aCab, {'NTOTINFLOT' ,0 ,NIL} )

    For nX := 1 To nLinha
        aAdd(aItens,  {;
            {'CT2_FILIAL' , xFilial('CT2')                       , NIL},;
            {'CT2_LINHA'  , StrZero(nX,3)                        , NIL},;
            {'CT2_MOEDLC' ,'01'                                  , NIL},;
            {'CT2_DC'     ,'3'                                   , NIL},;
            {'CT2_DEBITO' ,'101010100'                           , NIL},;
            {'CT2_CREDIT' ,'201010100'                           , NIL},;
            {'CT2_VALOR'  , 3000                                 , NIL},;
            {'CT2_ORIGEM' ,'MSEXECAUT'                           , NIL},;
            {'CT2_HP'     ,''                                    , NIL},;
            {'CT2_CONVER' ,'11'                                  , NIL},;
            {'CT2_HIST'   ,'MSEXECCT LANCAMENTO '+cValtoChar(nX) , NIL} })
    Next nX
 
    MSExecAuto({|x, y,z| CTBA102(x,y,z)}, aCab ,aItens, 3)
    
    If lMsErroAuto
        lMsErroAuto := .F.
        MostraErro()
    EndIf


RestArea(aArea)
 
ReturnlFound  :=  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 //somente uma unica vez carrega o 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() //validacao dos dados pelo modelo

	__oModelAut:CommitData() //gravacao dos dados

Else
	aLog := __oModelAut:GetErrorMessage() //Recupera o erro do model quando nao passou no VldData
	//laco para gravar em string cLog conteudo do array aLog
	For nX := 1 to Len(aLog)
		If !Empty(aLog[nX])
			cLog += Alltrim(aLog[nX]) + CRLF
		EndIf
	Next nX

	lMsErroAuto := .T. //seta variavel private como erro
	AutoGRLog(cLog) //grava log para exibir com funcao mostraerro
	mostraerro()
	lRet := .F. //retorna false
Endif


__oModelAut:DeActivate() //desativa modelo

Return( lRet )


Exclusão


Bloco de código
languagepy
themeMidnight
titleMyCtbs460Exl
collapsetrue
#INCLUDE "PROTHEUS.CH"
#INCLUDE "FWMVCDEF.CH"
#INCLUDE "rwmake.ch"
#include 'totvs.ch'
#include 'tbiconn.ch'

Static __oModelAut := NIL //variavel oModel para substituir msexecauto em 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 //somente uma unica vez carrega o modelo CTBS460
__oModelAut := FWLoadModel( 'CTBS460' )
EndIf

__oModelAut:SetOperation(MODEL_OPERATION_DELETE)
__oModelAut:Activate()

If __oModelAut:VldData() //validacao dos dados pelo modelo

	__oModelAut:CommitData() //gravacao dos dados

Else
	aLog := __oModelAut:GetErrorMessage() //Recupera o erro do model quando nao passou no VldData
	//laco para gravar em string cLog conteudo do array aLog
	For nX := 1 to Len(aLog)
		If !Empty(aLog[nX])
			cLog += Alltrim(aLog[nX]) + CRLF
		EndIf
	Next nX

	lMsErroAuto := .T. //seta variavel private como erro
	AutoGRLog(cLog) //grava log para exibir com funcao mostraerro
	mostraerro()
	lRet := .F. //retorna false
Endif


__oModelAut:DeActivate() //desativa modelo

Return( lRet )
  


03. TABELAS UTILIZADAS

  • CT2- Lançamentos Contábeis
  • CSQ - Lançamento Extemporâneo       

04. DEMAIS ASSUNTOS


HTML
<!-- esconder o menu --> 


<style>
div.theme-default .ia-splitter #main {
    margin-left: 0px;
}
.ia-fixed-sidebar, .ia-splitter-left {
    display: none;
}
#main {
    padding-left: 10px;
    padding-right: 10px;
    overflow-x: hidden;
}

.aui-header-primary .aui-nav,  .aui-page-panel {
    margin-left: 0px !important;
}
.aui-header-primary .aui-nav {
    margin-left: 0px !important;
}
</style>

...