CONTEÚDO
- Visão Geral
- Medição com Planilha Fixa com Cronograma
- Medição com Planilha Fixa sem Cronograma
- Estornando uma medição
- Encerrando uma medição
- Excluindo uma medição
Atenção: Devido a descontinuidade da rotina CNTA120 a partir de 04/04/2022, será necessário utilizar o ExecAuto da nova rotina de Medição, CNTA121, conforme o link ExecAuto CNTA121
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
Medição com Planilha Fixa com Cronograma
#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
Exemplo Medição com Planilha Fixa sem Cronograma
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
Exemplo de estorno de medição
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
Exemplo encerramento de medição
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
Exemplo de exclusão de medição
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
Visão Geral
Import HTML Content
Conteúdo das Ferramentas
Tarefas