Árvore de páginas

Versões comparadas

Chave

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


Propriedades de página

CONTEÚDO

  1. Visão Geral
  2. Exemplo de utilização
    1. Inclusão
    2. Inclusão com mais de um Lançamento
  3. Tabelas utilizada

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
languagepy
themeMidnight
titlemyctba102incMyCtbs460Inc
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 EXECINCLCSQMyCtbs460Inc() 
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""
Local 
Private lMsErroAutolRet := .F.
Private lMsHelpAuto := .T.
Private CTF_LOCK    := 0
Private lSubLote    := .T.
 

    RpcSetType(3)
    RpcSetEnv( 'T1',
PREPARE ENVIRONMENT 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>

...