Árvore de páginas

Versões comparadas

Chave

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

...

  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

01. VISÃO GERAL

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

...

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 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")     
        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



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>