Pagetitle |
---|
| CNTA120 - Medição do contrato |
---|
| CNTA120 - Medição do contrato |
---|
|
Função: CNTA120 - Medição do contrato
Abrangências: | Protheus 10 | Versões: | Protheus 10 | Compatível Países: | Todos | Sistemas Operacionais: | Todos | Compatível às Bases de Dados: | Todos | Nível de Acesso: | Nível 1 (Acesso Clientes) | Idiomas: | Espanhol , Inglês |
Descrição:Esta rotina é utilizada para cadastrar a medição do contrato. A medição, na verdade, funciona como uma previsão da nota fiscal que deverá ser emitida pelo fornecedor/empresa quando dono faturamento e é sempre anterior a este. No momento do cadastro de cada medição, o usuário deverádeve, obrigatoriamente, indicar todos os campos quantitativos para àquela etapa do contrato.
Sintaxe: CNTA120 - Medição do contrato ( [ ] ) ObservaçõesOs items itens da Medição do Contrato não são considerados no considerados no exemplo pelo motivo da rotina automatica inseríautomática inseri-lo automaticamente, sem a manipulação do usuário. Ou , ou seja, a partir do no momento que é definido o cabeçalho na rotina automática, os itens serão incluídos automaticamente a partir dos itens da planilha do contrato. Exemplos:
Local dData := Local dData := date()//Data
AtualLocal dDataI de inicioPrivate lMsHelpAuto de inicio Private lMsHelpAuto := .F. //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ //| |//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙConOut| //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ConOut(Repl("-",80)) ConOut(PadC("Rotina // //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ //| |//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙdbSelectArea| //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ dbSelectArea("CN9")dbgoto(Recno()) NUMEROcRevisa CN9->CN9_REVISAConOutCN9→CN9_REVISA ConOut("Inicio:
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ //| |//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙdbSelectArea| //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ dbSelectArea("CN9") dbSetOrder(1) If !dbSeek(xFilial("CN9")+cContra+cRevisa) ConOut //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ //³ ³//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙcArqTrb := CriaTrab( nil, ³ //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ cArqTrb := CriaTrab( nil, .F. CNF.CNF_COMPET,CNF.CNF_CONTRA,CNF.CNF_REVISA,CNA.CNA_NUMERO,CNF.CNF_PARCEL,CN9.CN9_FILIAL ConOut EndIfWhile EndIf
While !(cArqTrb)->(Eof()) cDoc aAdd aAdd(aCabec,{"CND_CONTRA",(cArqTrb)->CNF_CONTRA,NIL})
aAdd aAdd(aCabec,{"CND_REVISA",(cArqTrb)->CNF_REVISA,NIL})
aAdd aAdd(aCabec,{"CND_COMPET",(cArqTrb)->CNF_COMPET,NIL})
aAdd aAdd(aCabec,{"CND_NUMERO",(cArqTrb)->CNA_NUMERO,NIL})
aAdd aAdd(aCabec,{"CND_NUMMED",cDoc,NIL})
If aAdd(aCabec,{"CND_PARCEL",(cArqTrb)->CNF_PARCEL,NIL})
EndIf EndIf
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
CNTA120 CNTA120(aCabec,aItem,3,.F.) //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
CNTA120(aCabEC,aItem,6,.F.) If !lMsErroAuto If !lMsErroAuto ConOut("Incluido Else EndIf EndIf
(cArqTrb)->(dbSkip()) EndDo (cArqTrb)->(dbCloseArea()) RESET ENVIRONMENT Return(.T.) Bloco de código |
---|
firstline | 1 |
---|
title | Exemplo |
---|
linenumbers | true |
---|
| #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
Exemplo2() //Planilha Fixa sem Cronograma
ConOut("FIM TESTE")
RESET | ENVIRONMENTReturn(.T.) ENVIRONMENT
Return nRet
Static Function Exemplo1()
Local aCab := {}//Cabecalho
Local aItens := {}//Itens
Local cContra := ""//<--Informar o numero do contrato
Local cRevisa := ""//<--Informar a revisao do contrato
Local cCompet := ""//<--Informar a competencia
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
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 |
Aviso |
---|
title | Exemplos de ExecAuto |
---|
| Para exemplos mais completos de como utilizar o execAuto da rotina CNTA120, conferir os exemplos em : Exemplos ExecAuto CNTA120 |
Parâmetros: | Nome | | | Tipo | | | Descrição | | | Default | | | Obrigatório | | | Referência | | | | | | Array of Record | | | | | | | | | | | | | |
|