Árvore de páginas

Versões comparadas

Chave

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

CONTEÚDO

  1. Visão Geral
  2. Medição com Planilha Fixa com Cronograma
  3. Medição com Planilha Fixa sem Cronograma
  4. Estornando uma medição
  5. Encerrando uma medição
  6. Excluindo uma medição

01. VISÃO GERAL

Objetivo desse documento é exemplificar a utilização do ExecAuto da rotina de Medições(CNTA120). 

02. Medição com Planilha Fixa com Cronograma


Bloco de código
titleMedição com Planilha Fixa com Cronograma
linenumberstrue
#include 'protheus.ch'
#include 'parmtype.ch'
#INCLUDE "TBICONN.CH"

User Function ExCNT120()
    Local nRet      :=  0
        
    PREPARE ENVIRONMENT EMPRESA "T1" FILIAL "D MG 01 " MODULO "GCT" TABLES "CNDT10"               
        ConOut("INICIO TESTE")		
		Exemplo1() //Planilha Fixa com Cronograma        
        ConOut("FIM TESTE")
    RESET ENVIRONMENT
Return nRet

Static Function Exemplo1()
    Local aCab     := {}//Cabecalho
	Local aItens    := {}//Itens
    Local cContra	:= ""//<--Informar o numero do contrato
	Local cRevisa	:= ""//<--Informar a revisão do contrato
	Local cCompet	:= ""//<--Informar a competência(formato MM/AAAA)
	Local cPlan		:= ""//<--Informar o numero do contrato
	Local cParcel	:= ""//<--Informar o numero do contrato
    Private lMsErroAuto		:= .F.

    aCab := {}
    aAdd(aCab,{"CND_CONTRA",cContra,NIL})
    aAdd(aCab,{"CND_REVISA",cRevisa,NIL})
    aAdd(aCab,{"CND_PARCEL",cParcel,NIL})
    aAdd(aCab,{"CND_COMPET",cCompet,NIL})
    aAdd(aCab,{"CND_NUMERO",cPlan,NIL})

    /*Não é necessario informar itens no array <aItens>, pois eles serão carregados automaticamente*/
    MSExecAuto({|x,y|CNTA120(x,y,3,.F.)},aCab, aItens)//Executa rotina automatica para gerar as medicoes

    if lMsErroAuto
        if !IsBlind()
            MostraErro()
        else            
            aEval(GetAutoGrLog(),{|x|ConOut(x)})            
        endif
    endif
Return

03. Medição com Planilha Fixa sem Cronograma

Bloco de código
titleExemplo Medição com Planilha Fixa sem Cronograma
linenumberstrue
User Function ExCNT120()
    Local nRet      :=  0
        
    PREPARE ENVIRONMENT EMPRESA "T1" FILIAL "D MG 01 " MODULO "GCT" TABLES "CNDT10"               
        ConOut("INICIO TESTE")
        Exemplo2() //Planilha Fixa sem Cronograma
        ConOut("FIM TESTE")
    RESET ENVIRONMENT
Return nRet

Static Function Exemplo2()
    Local aCab     := {}//Cabecalho
	Local aItens    := {}//Itens
	Local aItem    := {}//Itens
    Local cContra	:= ""//<--Informar o numero do contrato
	Local cRevisa	:= "   "//<--Informar a revisao do contrato
	Local cCompet	:= ""//<--Informar a competencia(formato MM/AAAA)
	Local cPlan		:= ""//<--Informar o numero do contrato
    Local cParcel	:= ""//<--Informar o numero do contrato
    Private lMsErroAuto		:= .F.

    aCab := {}
    aAdd(aCab,{"CND_CONTRA",cContra,NIL})
    aAdd(aCab,{"CND_REVISA",cRevisa,NIL})    
    aAdd(aCab,{"CND_COMPET",cCompet,NIL})
    aAdd(aCab,{"CND_NUMERO",cPlan,NIL})
    aAdd(aCab,{"CND_PARCEL",cParcel,NIL}) //<-- É preciso informar a parcela, mesmo não tendo cronograma.
    
    aItens := {} //Quando não há cronograma, é necessario informar <aItens>, pois precisamos preencher a quantidade
    aAdd(aItem,{"CNE_ITEM","001",NIL})
    aAdd(aItem,{"CNE_PRODUT","GCT001                        ",NIL})
    aAdd(aItem,{"CNE_QUANT",1,NIL})

    aAdd(aItens, aItem)

    MSExecAuto({|x,y|CNTA120(x,y,3,.F.)},aCab, aItens)//Executa rotina automatica para gerar as medicoes

    if lMsErroAuto
        if !IsBlind()
            MostraErro()
        else            
            aEval(GetAutoGrLog(),{|x|ConOut(x)})            
        endif
    endif
Return

04. Estornando uma medição

Bloco de código
titleExemplo de estorno de medição
linenumberstrue
User Function ExCNT120()
    Local nRet      :=  0
         
    PREPARE ENVIRONMENT EMPRESA "T1" FILIAL "D MG 01 " MODULO "GCT" TABLES "CNDT10"              
        ConOut("INICIO TESTE")     
        Exemplo3() //Estorno de uma medição
        ConOut("FIM TESTE")
    RESET ENVIRONMENT
Return nRet
 
Static Function Exemplo3()
    Local aCab     := {}//Cabecalho
    Local aItens    := {}//Itens
    Local cContra   := ""//<--Informar o numero do contrato
    Local cRevisa   := "   "//<--Informar a revisão do contrato
    Local cNumPla   := StrZero(1, Len(CND->CND_NUMERO))//<--Informar o número da planilha
    Local cNumMed   := ""//<--Informar o número da medição
    Local cChave    := ""
    Private lMsErroAuto     := .F.

    CND->(DbSetOrder(1)) //CND_FILIAL+CND_CONTRA+CND_REVISA+CND_NUMERO+CND_NUMMED
    cChave := xFilial("CND") + cContra + cRevisa + cNumPla + cNumMed
    if CND->(DbSeek(cChave))
        
        aCab := {}
        aAdd(aCab,{"CND_NUMMED",CND->CND_NUMMED,NIL})
        aAdd(aCab,{"CND_CONTRA",CND->CND_CONTRA,NIL})
        aAdd(aCab,{"CND_REVISA",CND->CND_REVISA,NIL})
        aAdd(aCab,{"CND_NUMERO",CND->CND_NUMERO,NIL})
        aAdd(aCab,{"CND_PARCEL",CND->CND_PARCEL,NIL})
        aAdd(aCab,{"CND_COMPET",CND->CND_COMPET,NIL})
    
        /*Não é necessario informar itens no array <aItens>, pois eles serão carregados automaticamente*/
        MSExecAuto({|x,y|CNTA120(x,y,7,.F.)},aCab, aItens)//Executa rotina automática para estornar a medição(nOpc=7)
    
        if lMsErroAuto
            if !IsBlind()
                MostraErro()
            else           
                aEval(GetAutoGrLog(),{|x|ConOut(x)})           
            endif
        endif
    endif
 
Return

05. Encerrando uma medição

Bloco de código
titleExemplo encerramento de medição
linenumberstrue
User Function ExCNT120()
    Local nRet      :=  0
         
    PREPARE ENVIRONMENT EMPRESA "T1" FILIAL "D MG 01 " MODULO "GCT" TABLES "CNDT10"              
        ConOut("INICIO TESTE")     
        Exemplo5() //Encerramento de uma medição
        ConOut("FIM TESTE")
    RESET ENVIRONMENT
Return nRet

Static Function Exemplo5()
    Local aCab     := {}//Cabecalho
    Local aItens    := {}//Itens
    Local cContra   := ""//<--Informar o numero do contrato
    Local cRevisa   := ""//<--Informar a revisão do contrato
    Local cNumPla   := StrZero(1, Len(CND->CND_NUMERO))//<--Informar o número da planilha
    Local cNumMed   := ""//<--Informar o número da medição
    Local cChave    := ""
    Private lMsErroAuto     := .F.

    CND->(DbSetOrder(1)) //CND_FILIAL+CND_CONTRA+CND_REVISA+CND_NUMERO+CND_NUMMED
    cChave := xFilial("CND") + cContra + cRevisa + cNumPla + cNumMed
    if CND->(DbSeek(cChave))
        
        aCab := {}
        aAdd(aCab,{"CND_NUMMED",CND->CND_NUMMED,NIL})
        aAdd(aCab,{"CND_CONTRA",CND->CND_CONTRA,NIL})
        aAdd(aCab,{"CND_REVISA",CND->CND_REVISA,NIL})
        aAdd(aCab,{"CND_NUMERO",CND->CND_NUMERO,NIL})
        aAdd(aCab,{"CND_PARCEL",CND->CND_PARCEL,NIL})
        aAdd(aCab,{"CND_COMPET",CND->CND_COMPET,NIL})
    
        /*Não é necessario informar itens no array <aItens>, pois eles serão carregados automaticamente*/
        MSExecAuto({|x,y|CNTA120(x,y,6,.F.)},aCab, aItens)//Executa rotina automatica para encerrar a medição(nOpc=6)
    
        if lMsErroAuto
            if !IsBlind()
                MostraErro()
            else           
                aEval(GetAutoGrLog(),{|x|ConOut(x)})           
            endif
        endif
    endif
 
Return

06. Excluindo uma medição

Bloco de código
titleExemplo de exclusão de medição
linenumberstrue
User Function ExCNT120()
    Local nRet      :=  0
         
    PREPARE ENVIRONMENT EMPRESA "T1" FILIAL "D MG 01 " MODULO "GCT" TABLES "CNDT10"              
        ConOut("INICIO TESTE")        
        Exemplo6() //Exclui medição
        ConOut("FIM TESTE")
    RESET ENVIRONMENT
Return nRet
 
Static Function Exemplo6()
    Local aCab     := {}//Cabecalho
    Local aItens    := {}//Itens
    Local cContra   := ""//<--Informar o numero do contrato
    Local cRevisa   := ""//<--Informar a revisão do contrato
    Local cNumPla   := StrZero(1, Len(CND->CND_NUMERO))//<--Informar o número da planilha
    Local cNumMed   := ""//<--Informar o número da medição
    Local cChave    := ""
    Private lMsErroAuto     := .F.

    CND->(DbSetOrder(1)) //CND_FILIAL+CND_CONTRA+CND_REVISA+CND_NUMERO+CND_NUMMED
    cChave := xFilial("CND") + cContra + cRevisa + cNumPla + cNumMed
    if CND->(DbSeek(cChave))
        
        aCab := {}
        aAdd(aCab,{"CND_NUMMED",CND->CND_NUMMED,NIL})
        aAdd(aCab,{"CND_CONTRA",CND->CND_CONTRA,NIL})
        aAdd(aCab,{"CND_REVISA",CND->CND_REVISA,NIL})
        aAdd(aCab,{"CND_NUMERO",CND->CND_NUMERO,NIL})
        aAdd(aCab,{"CND_PARCEL",CND->CND_PARCEL,NIL})
        aAdd(aCab,{"CND_COMPET",CND->CND_COMPET,NIL})
    
        /*Não é necessario informar itens no array <aItens>, pois eles serão carregados automaticamente*/
        MSExecAuto({|x,y|CNTA120(x,y,5,.F.)},aCab, aItens)//Executa rotina automatica para excluir a medição(nOpc=5)
    
        if lMsErroAuto
            if !IsBlind()
                MostraErro()
            else           
                aEval(GetAutoGrLog(),{|x|ConOut(x)})           
            endif
        endif
    endif
 
Return
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>