Árvore de páginas

Versões comparadas

Chave

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

...

Portuguese

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 no faturamento. No momento do cadastro de cada medição, o usuário deve, obrigatoriamente, indicar todos os campos quantitativos para àquela etapa do contrato.
Sintaxe:

CNTA120 - Medição do contrato ( [ ] )

Retorno:
    ()
Observações
Os itens da Medição do Contrato não são considerados no exemplo pelo motivo da rotina automática inseri-lo sem a manipulação do usuário, ou seja, 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:

#include

"protheus.ch"
#include

"tbiconn.ch"

User

Function

MyCNTA120()

Local

aCabec

:=

{}
Local

aItem

:=

{}
Local

cDoc

:=

""
Local

cArqTrb:=

""
Local

cContra

:=

""
Local

cRevisa

:=

""

Local dData :=


Local dData := date()//Data

AtualLocal dDataI

Atual
Local dDataI :=

dData-0//Data

de inicioPrivate lMsHelpAuto

de inicio
Private lMsHelpAuto :=

.T.
PRIVATE

lMsErroAuto

:=

.F.

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//|

Abertura

do

ambiente

|//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙConOut

|
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

ConOut(Repl("-",80))
ConOut(PadC("Rotina

Automática

para

a

Medição

do

Contrato

de

Compras

e

Vendas",80))

//

PREPARE

ENVIRONMENT

EMPRESA

"99"

FILIAL

"01"

MODULO

"GCT"

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//|

Verificacao

do

ambiente

para

teste

|//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙdbSelectArea

|
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

dbSelectArea("CN9")dbgoto(Recno())


cContra

:=

CN9->CN9_

NUMEROcRevisa

NUMERO
cRevisa :=

CN9->CN9_REVISAConOut

CN9→CN9_REVISA


ConOut("Inicio:

"+Time())

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//|

Teste

de

Inclusao

|//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙdbSelectArea

|
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

dbSelectArea("CN9")
dbSetOrder(1)

If

!dbSeek(xFilial("CN9")+cContra+cRevisa)

ConOut


     ConOut("Cadastrar

contrato:

"+cContra)
EndIf

aCabec

:=

{}
aItens

:=

{}

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³

Filtra

parcelas

de

contratos

automaticos

³
//³

pendentes

para

a

data

atual

³//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙcArqTrb := CriaTrab( nil,

³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

cArqTrb := CriaTrab( nil, .F.

)
cQuery

:=

"SELECT

CNF.CNF_COMPET,CNF.CNF_CONTRA,CNF.CNF_REVISA,CNA.CNA_NUMERO,CNF.CNF_PARCEL,CN9.CN9_FILIAL

FROM

"

+

RetSQLName("CNF")

+

"

CNF,

"

+

RetSQLName("CNA")

+

"

CNA,

"+

RetSQLName("CN9")

+"

CN9

WHERE

"cQuery

+=

"CNF.CNF_FILIAL

=

'"+

xFilial("CNF")

+"'

AND

"cQuery

+=

"CNA.CNA_FILIAL

=

'"+

xFilial("CNA")

+"'

AND

"cQuery

+=

"CN9.CN9_FILIAL

=

'"+

xFilial("CN9")

+"'

AND

"

cQuery

+=

"CN9.CN9_NUMERO

=

'"+cContra+"'

AND

"cQuery

+=

"CN9.CN9_REVISA

=

'"+cRevisa+"'

AND

"

cQuery

+=

"CNF.CNF_NUMERO

=

CNA.CNA_CRONOG

AND

"cQuery

+=

"CNF.CNF_CONTRA

=

CNA.CNA_CONTRA

AND

"cQuery

+=

"CNF.CNF_REVISA

=

CNA.CNA_REVISA

AND

"cQuery

+=

"CNF.CNF_CONTRA

=

CN9.CN9_NUMERO

AND

"cQuery

+=

"CNF.CNF_REVISA

=

CN9.CN9_REVISA

AND

"cQuery

+=

"CN9.CN9_SITUAC

=

'05'

AND

"cQuery

+=

"CNF.CNF_PRUMED

>=

'"+

DTOS(dDataI)

+"'

AND

"cQuery

+=

"CNF.CNF_PRUMED

<=

'"+

DTOS(dData)

+"'

AND

"cQuery

+=

"CNF.CNF_SALDO

>

0

AND

"cQuery

+=

"CNA.CNA_SALDO

>

0

AND

"cQuery

+=

"CNF.D_E_L_E_T_

=

'

'

AND

"cQuery

+=

"CNA.D_E_L_E_T_

=

'

'"
cQuery

:=

ChangeQuery(

cQuery

)

dbUseArea(

.T.,

"TopConn",

TCGenQry(,,cQuery),

cArqTrb,

.T.,

.T.

)

If

(cArqTrb)->(Eof())

ConOut


     ConOut("Nao

e

possivel

medir

esse

contrato!

"+cContra)

EndIfWhile


EndIf

While !(cArqTrb)->(Eof())

cDoc


     cDoc :=

CriaVar("CND_NUMMED")

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


     If !Empty(CND->(

FieldPos(

"CND_PARCEL"

)

))


          aAdd(aCabec,{"CND_PARCEL",(cArqTrb)->CNF_PARCEL,NIL})

EndIf


     EndIf

     //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿


     //³

Executa

rotina

automatica

para

gerar

as

medicoes

³


     //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

CNTA120

     CNTA120(aCabec,aItem,3,.F.)

     //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿


    //³

Executa

rotina

automatica

para

encerrar

as

medicoes

³


    //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

    CNTA120(aCabEC,aItem,6,.F.)

If !lMsErroAuto

     If !lMsErroAuto
          ConOut("Incluido

com

sucesso!

"+cDoc)

Else


     Else
          ConOut("Erro

na

inclusao!")

EndIf


     EndIf

     (cArqTrb)->(dbSkip())
EndDo

(cArqTrb)->(dbCloseArea())

RESET ENVIRONMENT

Return(.T.)

Bloco de código
firstline1
titleExemplo
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
        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
titleExemplos 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