You are on page 1of 9

ADVPL FOR DUMBS

1. INTRODUO
O objetivo desse tutorial mostrar de forma simples alguns comandos em ADVPL
(linguagem utilizada pelos sistemas da Dadalto). O tutorial ainda est em fase de
desenvolvimento, assim sendo pode haver alguns erros ou coisas incompletas.
O ADVPL roda em cima de uma plataforma que possui varias coisas prontas, como
botes, telas, controle de mensagens, acesso ao banco de dados, controle de usurio, entre
outras coisas... Mostraremos algumas dessas funcionalidades aqui.

2. ADVERTNCIAS
As variveis no necessitam ser tipadas, sendo assim a Microsiga aconselha o uso de
caracteres identificando qual o tipo da varivel.

n para tipo numrico (isso mesmo, no existe diferena entre int, float, Double,
real,...);
c para char ou string;
b para boolean;
d para datas;
a para arrays;
o para objeto;

Apesar de no causar nenhum problema, no se deve utilizar nome de varivel, ou


funo esttica com mais de 10 caracteres, e nome de user function (veremos o que isso
mais adiante) no deve passar de 8 caracteres.

3. COMO UTILIZAR
1) V a pasta \\joaquim\Desenvolvimento\ADVPL e descompacte o arquivo
remotePromov.rar em qualquer local da maquina (sugiro em C:\Protheus);
2) Abra o executvel mp8ide.exe, esse ser seu ambiente de desenvolvimento;
3) Crie um projeto e um novo arquivo, voc deve associar esse os arquivos ao seu
projeto, ento basta abrir o gerenciador de projetos (Shift + Ctrl + G), crie uma pasta
no seu projeto (basta clicar com o boto direito em cima do seu projeto e aparecer
a opo) e clique com o boto direto do mouse em cima do seu arquivo e o arraste
para a pasta que voc acabou de criar, dessa forma quando voc compilar seu
projetos, seus arquivos tambm sero compilados;
4) Com os arquivos adicionados basta compilar o projeto (Ctrl + Alt + F9), caso
aparea um pedido de login e senha estes so: MICROSIG (login) e MICROSIG
(senha);
5) Para executar basta colocar o nome da funo que voc deseja executar no textbox
no cabealho do programa MP8 IDE, e apertar F5;

6) Para debugar basta apertar F9 na linha desejada, e para visualizar o valor de uma
varivel voc deve arrast-la com o boto direto do mouse para a rea de texto da
aba Comando (fica no mesmo menu que a aba Gerenciador de Projeto, para
visualizar a aba toda basta apertar F2)

4. CLASSE

Existe herana no ADVPL (From) contudo esse no o objetivo do Manual.


Nada privado ou protegido, todas as funo e variveis so pblicas e todos os
mtodos so mtodos de instancia.

5. WEBSERVICE
A. SERVIDOR

Para criar um WebService no lado servidor, bata criar uma struct (linha 5 a
9) onde ser o objeto que carregar as informaes que sero utilizadas nos
seus mtodos.
Da mesma forma que voc cria a classe, voc criar um objeto
WSService onde este possuir as variveis e o mtodos(linha 12 a 16).
Depois da declarao basta voc desenvolver os mtodos, lembrando
que o WSMethod deve sempre retornar .T. e o verdadeiro retorno da funo na
verdade uma varivel do WSService e esta est declarada na chamada do
WSMethod como WSEnd (linha 18).

B. Cliente
Para consumirmos um WebService, basta seguir as seguintes instrues:
1) Crie um novo arquivo;

2) Associe-o ao projeto;
3) V em Ferramentas->Gerar Cliente WebServices;
4) Na caixa de dialogo que aparecer ponha o endereo do WSDL do
WebService que voc deseja consumir (Ex:
http://tifdsv15.dacasa.com.br/wscaixa/Caixa.asmx?wsdl);
5) Clique em ok e os mtodos estaro dispostos;

C. Consumindo um WebService

A classe CaixaDacasa possui uma varivel chamada wsCaixa, esta uma


instncia de um WebService que estou consumindo nesse exemplo. O ; (ponto e
virgula) serve para fazer quebra de linha de um nico comando. MsgRun uma
funo padro do ADVPL para forms que mostrar uma janela de aguarde
enquanto esse mtodo (recuperaFaturaPendente) estiver sendo executado.
O retorno de um mtodo de um WebService um booleano, informando se o
mtodo foi bem sucedido ou no, o resultado da funo est em uma varivel de
wsCaixa, que seria o _RECUPERAFATURAPENDENTERESULT.
Para analisarmos esses objetos, basta arrast-los com o boto direito do
mouse pressionado para a rea de texto da aba Watchs, fica junto aba Comando.

6. COMANDOS BSICOS DE BANCO DE DADOS

Devem existir formas melhores de fazer os comandos de busca, de acordo com


ndices, porm no seu familiarizado ainda com essas ferramentas, assim que possvel
disponibilizarei novas verses contendo essas pendncias.

A. Select
Method VerificaLancamento( NrLancamento ) Class Lancamento
dbSelectArea("PBK")
PBK->(dbSetOrder(3)) //PBK_NRLANC+PBK_DTLANC
Return PBK->( dbSeek( StrZero(NrLancamento,10) ) )
Essa funo verifica se existe certo lanamento.
Linha 1: Ele seleciona a tabela PBK
Linha 2: Seta o indice, como ele ir buscar, primeiro pelo numero do
lanamento deepois pela data de lanamento.
Linha 3: Vai para linha onde o Nmero do lanamento igual ao
NrLancamento, retorna verdadeiro ou falso(dbSeek).

B. Insert
Method InsereLancamento() Class Lancamento //Metodo privado.
Reclock("PBK",.T.)
PBK->PBK_FILIAL:= xFilial("PBK")
PBK->PBK_USUCOD := ::CdCaixa
PBK->PBK_USUNOM := ::NmCaixa
PBK->PBK_NRLANC := ::NrLancamento
PBK->PBK_VLLANC := ::VlLancamento
PBK->PBK_DTLANC := Date()
PBK->PBK_VLDINH := ::VlDinheiro
PBK->PBK_VLCHEQ := ::VlCheque
PBK->PBK_TIPO := ::FlTipo
PBK->PBK_CALANC := ""
PBK->PBK_SITUA := ::Situacao
PBK->(MsUnlock())
return
Esse mtodo insere uma lanamento no tabela PBK, o Reclock(PBK, .T.)
cria uma nova linha na tabela e deixa a referencia PBK apontando para a linha
criado para que possa ser atribudo os valores desejados.
PBK->(MsUnlock()) fecha o arquivo PBK salvando assim a nova linha.

C. Update
Method EstornoLancamento(NrLanc, VlLancamento, NrLancCanc) Class
Lancamento

dbSelectArea("PBK")
PBK->(dbSetOrder(3)) //PBK_NRLANC+PBK_DTLANC
If PBK->( dbSeek( StrZero(NrLancamento,10) ) )
Reclock("PBK",.F.)
PBK->PBK_CALANC := strzero(NrLanc, 10)
PBK->(MsUnlock())
Else
Return (.F.)
EndIf
::NrLancamento := strzero(NrLanc,10)
::VlLancamento := VlLancamento
::FlTipo := "2"
::Situacao := "RX"
::InsereLancamento()
return (.T.)
O update uma mistura do select com o insert, deve-se fazer uma
pesquisa como o select e quando for alterar os dados tem-se que executar o
comando Reclock(PBK, .F.) para que possamos alterar os dados da linha que
PBK est apontando. Aps as modificaes basta fechar o arquivo (PBK>(MsUnlock())).

7. FORMS

Na criao de telas bom que seja feita internamente, junto com uma classe,
pois fica de mais fcil manuteno, tendo em vista que suas variveis sero vista por
todos os mtodos. Variveis privadas resolveriam esse problema, contudo caso
acontea um erro durante a execuo do seu programa, perderemos o StackTrace
dessa varivel.

Este mtodo apenas mostra uma telinha para troco na tela do caixa da Dacasa
na Dadalto. Atravs do @ estamos criando labels e textbox por referncia e os valores
desse textbox est indo para a varivel vltotal, esta varivel inicializada com espaces
(spaces(10)) ou seja, possui um tamanho mximo de dez caracteres.
H certos eventos foram atribudas algumas funes, v-se que no
necessria a passagem de parmetros para essas funes, tendo em vista que essas
funes so funes da classe CaixaDacasa e elas enxergam as variveis vlTotal,
vlRecebido,...

8. FUNES

Existem duas formas de declarar funes, seriam elas:


1) User Function:
Est funo vista em o projeto e deve ser chamada da seguinte forma
U_[nome da funo] .

2) Static Function:
Est s vista no arquivo em que ela est descrita.

You might also like