programação e customizações advpl e protheus. aula 1 evolução e arquitetura do sistema...
TRANSCRIPT
![Page 1: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/1.jpg)
Programação e Customizações
AdvPL e Protheus
![Page 2: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/2.jpg)
Aula 1Evolução e Arquitetura do Sistema
ArquivosCustomizações
Case – Sistema de Contas Correntes
![Page 3: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/3.jpg)
1974 Assembler – Batch
1978 Natural Adabas – Online
1983 DBase II – III, Clipper Summer
1990 Clipper 5 – SIGA Advanced
1995 FiveWin/Top/Coencisa, VO, Delphi, SQL
2000 AdvPL – Protheus 5 ... 8
Evolução do Sistema da Microsiga
![Page 4: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/4.jpg)
Server (MP8SRVWIN.EXE)
Monitor
RPO (MPDP811.RPO)
Top Connect
DB2OracleSQL Server
MySQLPostGresSybase
Client (WEB)ActiveX
Remote (MP8RMT.EXE)Windows LinuxBrowser
WindowsLinux Unix
WindowsLinuxUnix
Client
AplicationServer
DatabaseServer
DBF/CTREE
Multi-Camada
![Page 5: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/5.jpg)
Múltiplas configurações
..
.....Hub .....Hub
..modem
modem
Servidor
Terminal
Dados
![Page 6: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/6.jpg)
Estrutura Protheus
APOMATA01
0
APOMATA01
0
REMOTE
ExecutaMATA010Executa
MATA010
ExecutaMATA410Executa
MATA410
ExecutaCTBR040ExecutaCTBR040
RPO
MATA010
MATA410
CTBR040
SERVERProgramaFonte
MATA010
Cad.Produtos
Ped.Vendas
Balancete Cont.
Compilação
![Page 7: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/7.jpg)
•Protheus Server•Protheus Remote•Top Connect•Monitor
Aplicativos
![Page 8: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/8.jpg)
•RPO arquivo binário com os APOs•BUILD executáveis, DLLs e RPO•Patch atualizações do RPO
Conjuntos de arquivos
![Page 9: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/9.jpg)
•Windows•Linux•Hand Held (Palm ou Pocket PC)•ActiveX
Remote
![Page 10: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/10.jpg)
•Thin Client•Baixo tráfego na rede•Multi-plataforma•Atualização automática•ASP - Aplication Server Provider•Browser Internet (HTML)
Terminal Remoto
![Page 11: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/11.jpg)
Estrutura de pastas do sistema
ERP811
APO (RPO)
BIN
REMOTE
SERVER
INCLUDE
MP_DATA
DATA (versão ISAM)
SAMPLES
SPOOL
SYSTEM (Dic.Dados, Menus, ...)
SYSTEMLOAD
MY PROJECTS
![Page 12: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/12.jpg)
Atalhos
Destino: c:\erp811\bin\server\mp811srvwin.exe –debugIniciar em: c:\erp811\bin\server
Destino: c:\erp811\bin\remote\mp811rmt.exeIniciar em: c:\erp811\bin\remote
MP8 Server
MP8 Remote
![Page 13: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/13.jpg)
ERP811
APO
BIN
REMOTE
SERVER
INCLUDE
MP_DATA
DATA
SAMPLES
SPOOL
SYSTEM
SYSTEMLOAD
MY PROJECTS
SIGACFG
TCP
Environment
MP8SRV.INI
[Environment]
SourcePath=C:\ERP811\APO
RootPath=C:\ERP811\MP_Data
StartPath=\system\
RpoDb=dbf
RpoLanguage=portuguese
RpoVersion=811
LocalFiles=ads
localdbextension=.dbf
PictFormat=DEFAULT
DateFormat=DEFAULT
[Drivers]
Active=TCP
[TCP]
TYPE=TCPIP
Port=1234
MP8SRV.INI
![Page 14: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/14.jpg)
MP8SRV.INI
[environmentSQL]SourcePath=C:\ERP811\APORootPath=C:\ERP811\MP_DataStartPath=\system\RpoVersion=811RpoDb=TopLocalFiles=adslocaldbextension=.dbfRpoLanguage=portuguesePictFormat=DEFAULTDateFormat=DEFAULT
[Topconnect]Alias=BASE810ConType=TCPIPDataBase=MSSQL8Server=SrvTOP01
[Drivers]Active=TCP
[TCP]TYPE=TCPIPPort=1234
![Page 15: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/15.jpg)
MP8RMT.INI
[Config]LastMainProg=sigamdi
[Drivers]Active=TCP
[TCP]Server=localhostPort=1234
![Page 16: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/16.jpg)
Protheus Server
Rede
Intranet
Extranet Internet
Protheus Server
Protheus Remote
Server e Remote em máquinas separadas
Server e Remote na
mesma máquina
aradas
Protheus Remote
OU
![Page 17: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/17.jpg)
SIGACFG
TCP
Environment
Configurador
![Page 18: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/18.jpg)
Senha: admin
Configurador
![Page 19: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/19.jpg)
Configurador
![Page 20: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/20.jpg)
CONFIGURADOR
Ambiente ... Usuário ... Bases de Dados.. Empresas ... Ajuda ...
Possibilita a Permite o registro Oferece um Permite a criação Consolida umdefinição do e a manutenção de conjunto completo de bases para conjunto de dicasformato das usuários, empresas, de funções para a novas empresas e sobre os interfaces de senhas e níveis de criação e manutenção consolida todos os conceitos e acesso aos acessos. do Dicionário de fatos ocorridos no utilização domódulos do Dados (campos sistema por meio produto.
sistema, criação com suas de consulta aose manutenção de características e arquivos de LOG.menus, tabelas, seus ´gatilhos´ e
parâmetros e validações).perguntas
Configurador
![Page 21: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/21.jpg)
Arquivos – Família SX
Arquivo DescriçãoSX1 Perguntas e RespostasSX2 Mapeamento de TabelasSX3 Dicionário de DadosSX4 Agenda do Schedule de ProcessosSX5 TabelasSX6 ParâmetrosSX7 GatilhosSX9 Relacionamento entre TabelasSXA Pastas Cadastrais apontadas no SX3SXB Consulta por meio da tecla F3 (Consulta Padrão)SXD Controle do Schedule de ProcessosSXE Seqüência de Documentos (+1)SXF Seqüência de Documentos (próximo)SXG Tamanho padrão para camposSXK Respostas das Perguntas (SX1) por UsuárioSXO Controle de LOGs por TabelaSIX Índices dos Arquivos
.XNU Menu de Opções dos Módulos
Pasta \SYSTEM
![Page 22: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/22.jpg)
SA - CadastrosSB - EstoquesSC - Previsões de E/SSD - Mov. De EstoqueSE - FinanceiroSF - FiscalSG - EstruturasSH - Carga de MáquinaSI - ContábilSJ - EstatísticasSM - MiscelâneasSN - Ativo Fixo
SO - Assist. TécnicaSP - Ponto EletrônicoSQ - Recr. e SeleçãoSR - Folha de PagtoST - Manut. IndustrialSU - TelemarketingSV - ConcessionáriasSW e SY - Export./Import.Q? - Qualidade (Celerina)R? - Recursos HumanosSZ,QZ,RZ - LivresP? - Projetos Especiais
M.E.R. Modelo de Entidades e Relacionamento
Famílias de Arquivos de DadosPasta \DATA ou Banco de Dados
![Page 23: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/23.jpg)
Principais Arquivos de Dados
Prefixo DescriçãoSA1 Cadastro de ClientesSA2 Cadastro de FornecedoresSA3 Cadastro de VendedoresSB1 Cadastro de ProdutosSB2 Saldos dos Produtos por AlmoxarifadoSB5 Dados Complementares de ProdutosSC1 Solicitações de ComprasSC5 Cabeçalho dos Pedidos de VendaSC6 Itens dos Pedidos de VendaSC7 Pedidos de ComprasSD1 Itens das Notas Fiscais de EntradaSD2 Itens das Notas Fiscais de SaídaSD3 Movimentações Internas de ProdutosSE1 Títulos a ReceberSE2 Títulos a PagarSF1 Cabeçalho das Notas Fiscais de EntradaSF2 Cabeçalho das Notas Fiscais de SaídaSI1 Plano de ContasSI2 Lançamentos Contábeis
![Page 24: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/24.jpg)
Arquivos de Dados – por Empresa
O sistema permite controlar até 99 Empresas. Cada Empresa pode ter até 99 Filiais:
Empresa 01 – Filiais 01 Empresa 02 – Filiais 01
02 02... ...99 99
Para cada Empresa é criado um jogo de arquivos:
SXXnn0 – onde: XX = Prefixo do arquivonn = Empresa
Exemplo: Empresa 99 -> SA1990, SA2990, SB1990...
![Page 25: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/25.jpg)
Arquivos de Dados
Nomenclatura dos campos:
Arquivo SA1: A1_FILIAL SA2:A2_FILIAL SB1:B1_FILIAL QA1:QA1_FILIAL
A1_COD A2_COD B1_COD QA1_CODA1_NOME A2_NOME B1_DESC QA1_DESCA1_END A2_END B1_TIPO
Filiais
Os dados das Filiais ficam dentro do arquivo de cada Empresa.
Todo arquivo, exceto SM2, tem um campo XX_Filial que identifica a Filial: 01 01 01 02 02
02
![Page 26: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/26.jpg)
Arquivos de Dados
Compartilhado registros compartilhados entre as filiaisCampo Filial: em branco
Exclusivo o registro é exclusivo da filialCampo Filial: código da Filial (variável cFilAnt)
C5_FILIAL C5_NUM C5_EMISSAO C5_CLIENTE C5_PROD C5_VALOR
01 000001 01/01/04 000002 11.11014 15.000,0001 000005 01/01/04 000023 13.13000 5.600,0001 000007 20/01/04 000016 15.15140 5.600,00
02 000001 01/01/04 000002 11.11014 15.000,0002 000005 01/01/04 000023 13.13000 5.600,0002 000007 20/01/04 000016 15.15140 5.600,00
03 000001 01/01/04 000002 11.11014 15.000,0003 000005 01/01/04 000023 13.13000 5.600,0003 000007 20/01/04 000016 15.15140 5.600,00
A1_FILIAL A1_COD A1_NOME
000015 FABRICA DE TINTAS E VERINIZES LTDA /SP 000016 TEX MALHAS E CONFECCOES S.A /SP 000001 CLIENTE PADRAO 000020 ARMANDO JOSE FLORES /SC 000007 COMERCIO SOM DO MUNDO /SP
xFilial(“SA1”) “ “
xFilial(“SC5”) cFilAnt
Ex: SA1 - Compartilhado
Ex: SC5 - Exclusivo
Modo de Acesso
![Page 27: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/27.jpg)
Arquivos de Índices
REGISTRO A1_FILIAL A1_COD A1_NOME
01 000015 FABRICA DE TINTAS E VERINIZES LTDA /SP02 000016 TEX MALHAS E CONFECCOES S.A /SP03 000001 CLIENTE PADRAO04 000020 ARMANDO JOSE FLORES /SC05 000007 COMERCIO SOM DO MUNDO /SP
• Todo arquivo precisa ter pelo menos um índice
• Índice Primário: acesso direto ao registro verificação de chave duplicada
• Ordenação de registros
CHAVE REGISTRO
000001 03000007 05000015 01000016 02000020 04
Índices
![Page 28: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/28.jpg)
Arquivos de Índices
•Um arquivo pode ter até 35 índices (1...9, A...Z)•dbSetOrder(n), onde n = 1...35 função para selecionar o índice.•Além dos índices originais, usuários podem incluir seus próprios índices.•Caso a Microsiga inclua novos índices, os do usuário serão renumerados.
Índices
• Portanto, índices de usuário devem sempre ter um NickName. Deve-se usar a função dbOrderNickName(“NICKNAME”)
• Índices do sistema, nunca terão NickName. Usa-se dbSetOrder().
SA1 – índices do Sistema 12...7
índice do Usuário 8 A1_TIPO
Nos programas: dbSetOrder(8)
novo índice do Sistema 8 índice do Usuário 9 A1_TIPO
índice do Usuário 8 A1_TIPO NickName: TIPO novo índice do Sistema 8 índice do Usuário 9 A1_TIPO NickName: TIPO
Nos programas: dbOrderNickName(“TIPO”)
X
![Page 29: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/29.jpg)
•Parâmetros, Tabelas, Perguntas•Fórmulas - Expressões em AdvPL / User Function
•Validações, Gatilhos, Campos de Arquivos•User Function via menu•Pontos de Entrada•Dicionário de Dados Ativo•SigaRPM, Crystal, Excel
Customização
![Page 30: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/30.jpg)
Customização
![Page 31: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/31.jpg)
Parâmetros: arquivo SX6
cESTNEG := GetMV(“MV_ESTNEG”)
If cESTNEG == “S” .Or. QtdVenda < B2_Saldo tratamento normal Else tratamento de erro EndIf
“S” 100 200V V“S” 201 200V F“N” 100 200F V“N” 201 200F F
CustomizaçãoParâmetros
![Page 32: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/32.jpg)
Tabelas: arquivo SX5
Tabela 12: Estados do Brasil Tabela 13: CFOP Tabela 33: Estado Civil
CustomizaçãoTabelas
![Page 33: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/33.jpg)
Perguntas: arquivo SX1
Do Cliente: 000010 Até Cliente: 000050 Da Data: 01/03/06 Até Data: 31/03/06
As respostas também são gravadas
CustomizaçãoPerguntas
![Page 34: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/34.jpg)
APOMATA460A
APOMATA460A
SERVER
Emissão NF
Compilação
Execução doMATA460A
Preço := SC6->C6_PRCVEN * 1.25
Execução doMATA460A
Preço := SC6->C6_PRCVEN * 1.25
Programa-fonte
MATA460A – Emissão NF
Preço := SC6->C6_PRCVEN * 1.25“SC6->C6_PRCVEN * 1.25”
Fórmulas
SC6->C6_P
RCVEN *
1.25
Exemplo: PreçoUm Pedido de Venda é incluído 100,00Na emissão da NF, o preço deve ser reajustado em 25% 125,00
RPO
MATA460A
CustomizaçãoInserção de Código-Fonte
Preço := &Formula
Preço := &Formula
![Page 35: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/35.jpg)
Fórmulas: arquivo SM4 - Expressões em AdvPL / Funções Microsiga
Ex: Reajuste de preço entre o Pedido e o Faturamento:
-No Pedido é preenchido o código da fórmula de reajuste (campo “Tipo Reajuste”)
-No Programa de emissão da nota fiscal: Preço := &Formula (Obs: a pergunta “Reajuste na mesma NF?” precisa estar com SIM)
Fórmula 001 - Reajuste fixo:
“SC6->C6_PRCVEN * 1.25”
Fórmula 002 - Reajuste se preço em dólar:
“SC6->C6_PRCVEN * RecMoeda(dDataBase,’2’)”
Fórmula 003 - Reajuste pelo dólar:
“SC6->C6_PRCVEN * (RecMoeda(dDataBase,’2’)/ If(RecMoeda(SC5->C5_EMISSAO,’2’) <> 0, RecMoeda(SC5->C5_EMISSAO,’2’),1))”
CustomizaçãoInserção de Código-Fonte
![Page 36: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/36.jpg)
FONTE
InterpretadorRun TimeServerMaquina Virtual
PCode
Executável +Interpretador Executável
Delphi, CClipper, Visual Objects
Visual Basic, AdvPlAbap, Oracle,Java
DBase, Access
Tipos de Processamento
![Page 37: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/37.jpg)
A=A+BA=5
965534567654
23456
7654
A = A + &B
3
MACRO
End 35
A = 7
Compilação
![Page 38: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/38.jpg)
Validações: Dicionário de Dados (SX3)
Campo Cód.Cliente: ExistChav(“SA1”) Campo Natureza: ExistCpo(“SED”) Campo Estado: ExistCpo(“SX5”, “12”+M->A1_EST) Campo CNPJ: CGC(M->A1_CGC)
CustomizaçãoValidações
![Page 39: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/39.jpg)
Gatilhos: Aciona a rotina ao sair-se de um campo (SX7)
CustomizaçãoGatilhos
Campo: D1_VUNITContra-Dominio: D1_TOTALRegra: Round(M->D1_VUNIT * M->D1_QUANT, 2)
Exemplo: na digitação da NF de Compra
Quant. Vr.Unit. Total
10 2,00 20,00
![Page 40: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/40.jpg)
Campos: Campos dos Lançamentos Padronizados (SI5)
Débito: If(SD3->D3_TIPO=“MC”, “33201”+SD3->D3_CC, “11303”)
CustomizaçãoCampos de Arquivos
![Page 41: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/41.jpg)
• Executa uma série de comandos, retornando um valor;• Precisa ser compilado;• O resultado é um objeto que é armazenado no Repositório.
Ex:
Customização
Lançamento Padronizado (SI5)
Débito: u_ContaDeb()
User Function ContaDeb()
Do Case Case SB1->B1_TIPO == “MC” Conta := “11302” Case SB1->B1_TIPO == “ME” Conta := “11303” ...EndCase
Return (Conta + SD3->D3_CC)
User Function
![Page 42: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/42.jpg)
•São pontos pré-determinados, onde o usuário pode escrever uma nova rotina em substituição àquela existente ou adicionar algum processamento.
•Cada Ponto de Entrada é identificado pelo nome de uma Função.
If ExistBlock(“CalcSaldo”) u_CalcSaldo() EndIf
•Para utilizá-lo, deve-se escrever uma função com este mesmo nome.
User Function CalcSaldo() ... Return
•Os Pontos de Entrada estão descritos no DEM.
•Exemplo: pode-se alterar a rotina de cálculo do ICMS ou do IPI no programa de Preparação de Nota Fiscal de Vendas escrevendo um P.E.
CustomizaçãoPonto de Entrada
![Page 43: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/43.jpg)
// PONTO DE ENTRADA NA ALTERAÇÃO DO CADASTRO DE PRODUTO
#Include “RWMake.ch"
User Function MT010ALT()
If AllTrim(SB1->B1_TIPO) == "MO" // Trata-se de mão-de-obra. dbSelectArea("SB2") // Acessa o registro de saldos dbSetOrder(1) // e custos no SB2. dbSeek(xFilial()+SB1->B1_COD) If RecLock("SB2", .F.) // Grava em custo médio o custo standard, pois não existe custo // médio de mão-de-obra. SB2->B2_CM1 := SB1->B1_CUSTD EndIf EndIf
Return Nil
Exemplo de Ponto de Entrada
![Page 44: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/44.jpg)
•Dicionário de Dados•Menus
Configurador - SIGACFG
![Page 45: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/45.jpg)
Crie um parâmetro (SX6) para o limite máximo por transação:
Nome da Var.: MV_VRMAX Tipo: N Conteúdo:10000 Descrição: Valor maximo da transacao SIGACFG: menu Ambiente / Cadastros / Parâmetro
Crie uma tabela (SX5) de tipos de transações:
Tabela ZZ D – Depósito S – Saque E – Encargos J – Juros R – Resgates SIGACFG: menu Ambiente / Cadastros / Tabelas (tem que preencher os 3 idiomas)
Exercícios
![Page 46: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/46.jpg)
Crie uma Fórmula (SM4) para reajustar o preço dos produtos da Fábrica de Chaveiros:
Código: 001
Descrição: REAJUSTE DE PREÇO
Fórmula: SB1->B1_PRV1 * 1.25 SIGACFG: menu Ambiente / Cadastros / Formulas
Exercício
Crie um Gatilho que apresente o valor total do item:
Campo: D1_VUNIT Sequencia: 001 Cnt. Dominio: D1_TOTAL Tipo: Primario Regra: M->D1_QUANT * M->D1_VUNIT Posiciona: Não SIGACFG: menu Base de Dados / Dicionario / Gatilhos
![Page 47: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/47.jpg)
If(M->I2_Valor < GetMV(“MV_VRMAX”), .T., .F.)
Exercício
SIGACFG: menu Base de Dados / Dicionario / Base de Dados
Insira a validação no arquivo SI2, campo I2_VALOR:
![Page 48: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/48.jpg)
Crie um Ponto de Entrada para modificar o cálculo do Saldo após um Saque, considerando apenas 60% do seu valor.
Exercício
![Page 49: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/49.jpg)
Mostrar o lançamento 666 - RequisiçãoLançamento Contábil Automático
Exercício
![Page 50: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/50.jpg)
Case
Sistema de Contas Correntes
![Page 51: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/51.jpg)
•Contas •Transações•Consultas•Relatórios•Excel•WorkFlow•TXT / XML•WebServices•AdvPL ASP
CaseSistema de Contas Correntes
![Page 52: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/52.jpg)
CONTAS
Nome
E-Mail1
Saldo
CaseSistema de Contas Correntes
Tabelas do sistema
TRANSAÇÕES
Nome
Número da Transação
Item da Transação
Tipo (Depósito ou Saque)
Data
Histórico
Saldo Atual (virtual)
Valor
Aprovação
TemRefere-se
![Page 53: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/53.jpg)
Prefixo: SZ1Path: \DATA\Nome: SZ1990Descrição: CONTASDesc.Esp.: CONTASDesc.Inglês: CONTASModo Acesso: COMPARTILHADO
Prefixo: SZ2Path: \DATA\Nome: SZ2990Descrição: TRANSAÇÕESDesc.Esp.: TRANSAÇÕESDesc.Inglês: TRANSAÇÕESModo Acesso: EXCLUSIVO
Modo de Acesso:
Compartilhado Filial = branco Exclusivo Filial = número da Filial (var. pública cFilAnt)
Função xFilial(Alias)
Exercício – Criação de Arquivos (SX2)
SIGACFG: menu Base de Dados / Dicionario / Arquivos
![Page 54: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/54.jpg)
Criação de Campos (SX3)
SIGACFG: menu Base de Dados / Dicionario / Base de Dados
Criação dos campos dos arquivos:
SZ1 – Cadastro de ContasSZ2 – Arquivo de Transações
•Ordem faz parte da chave do SX3•O cadastramento de um campo é dividido em pastas:
– Campo– Informações– Opções– Validações– Uso– Módulo
![Page 55: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/55.jpg)
Caracter, Numérico, Lógico, Data, Memo
Real, Virtual
Alterar, Visualizar
Criação de Campos (SX3)
Picture variável, que pode ser retornada por uma função
![Page 56: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/56.jpg)
Criação de Campos (SX3)
Nome do cliente
![Page 57: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/57.jpg)
D=Deposito;S=Saque
“D” dDataBase GetSXENum(“SZ2”, “Z2_NUMERO”)
Cadastro de Contas (SZ1)
ComboBox. No campo será gravada a letra, no exemplo, D ou S.
F3Campo Z2_Nome
Criação de Campos (SX3)
![Page 58: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/58.jpg)
01
23
45
67
89
0 a 9Define a permissão de acesso ao campo.
O Usuário só terá acesso a campos de nível igual ou menor que o seu nível.Exemplo: Usuário com nível
5 só terá acesso a campos com nível igual ou menor que 5.
01
23
45
67
89Nível dos
CamposNível doUsuário
Criação de Campos (SX3)
Exemplo: no Depto. Pessoal
Usuários: Campos:
Gerente – nível 9 Nome do Func.
– nível 5
Digitador – nível 5 Endereço – nível 4
Salário – nível 9
![Page 59: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/59.jpg)
Criação de Campos (SX3)
![Page 60: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/60.jpg)
Criação de Campos (SX3)
![Page 61: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/61.jpg)
Campo Inform. Uso
Campo Tipo Tam. Dec. Formato Contexto Propr. Título Obrig Usa Brw
Z1_NOME Car 20 @! Real Alt. Nome
Z1_EMAIL Car 40 Real Alt. EMail
Z1_EMAIL1 Car 40 Real Alt. EMail1
Z1_SALDO Num 12 2 @E 999,999,999.99 Real Visual Saldo
Cadastrar os campos do SZ1
Exercício
CampoOpções
ValidaçõesLista de Opções Inic.Padrão
Z1_NOME ExistChav(“SZ1”, M->Z1_NOME, 1)
Z2_NOME ExistCpo(“SZ1”, M->Z2_NOME, 1)
Z2_NUMERO GetSXENum(“SZ2”, “Z2_NUMERO”)
Z2_ITEMExistChav("SZ2", M->Z2_NUMERO+ M->Z2_ITEM, 1)
Z2_DATA dDataBase
Z2_TIPO D=Deposito;S=Saque “D”
Cadastrar Opções e Validações para estes campos
![Page 62: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/62.jpg)
Campo Inform. Uso
Campo Tipo Tam. Dec. Formato Contexto Propr. Título Obrig Usa Brw
Z2_NOME Car 20 @! Real Alt. Nome
Z2_NUMERO Car 4 Real Visual Numero
Z2_ITEM Car 2 99 Real Alt. Item
Z2_DATA Data 8 Real Alt. Data
Z2_TIPO Car 1 Real Alt. Tipo
Z2_HIST Car 20 Real Alt. Historico
Z2_VALOR Num 12 2 @E 999,999,999.99 Real Alt. Valor
Z2_SLDATU Num 12 2 @E 999,999,999.99 Virtual Visual Saldo
Z2_APROV Car 3 Real Visual Aprovado
ExercícioCampos do SZ2 (já estão cadastrados)
![Page 63: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/63.jpg)
Chave Nickname
SZ1 Z1_Filial + Z1_Nome NOME
SZ2 Z2_Filial + Z2_Numero + Z2_Item NR_ITZ2_Filial + Z2_Nome + Z2_Numero + Z2_Item NOME_NR_IT
Exercício
34
2
1
Criação dos Índices
![Page 64: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/64.jpg)
Crie a Consulta Padrão que mostre o arquivo SZ1 e insira-a no campo Z2_Nome
SIGACFG: menu Base de Dados / Dicionario / Base de Dados
Faça o Gatilho para atualizar o Z2_SldAtu (virtual) ao digitar-se Z2_Valor:
Campo: Z2_VALOR Cnt. Dominio: Z2_SLDATU Tipo: Primario Regra: IF(M->Z2_TIPO==“D”, SZ1->Z1_SALDO + M->Z2_VALOR, SZ1->Z1_SALDO - M->Z2_VALOR) Posiciona: Sim Alias: SZ1 Ordem: 1 Chave: xFilial(“SZ1”) + M->Z2_NOME
SIGACFG: menu Base de Dados / Dicionario / Gatilhos
Exercícios
![Page 65: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/65.jpg)
Crie em ERP o menu do Sistema de Contas CorrentesSIGACFG: menu Ambiente / Cadastro / Menus
Exercício
Contas Corrente
s
Atualizações
Consultas
Programa:
Con001
Relatórios
Programa:
Rel001
Contas
Programa:
Cad
Transações
Modelo 1
Programa:
TranM1
Modelo 2
Programa:
TranM2
Modelo 3
Programa:
TranM3
![Page 66: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/66.jpg)
Aula 2Programação
Comandos e funçõesOperadores
IDEVariáveis de memória
ArrayFunções
![Page 67: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/67.jpg)
Programação
![Page 68: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/68.jpg)
• Aquário
• 3 cestos com bolas pretas e brancas e etiquetas erradas
Exercícios de Lógica
PretaBranca
BrancaBranca
PretaPreta
![Page 69: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/69.jpg)
PretaBranca
BrancaBranca
PretaPreta
3 cestos: 1ª hipótese
![Page 70: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/70.jpg)
PretaBranca
BrancaBranca
PretaPreta
3 cestos: 2ª hipótese
![Page 71: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/71.jpg)
Resposta•Vai na caixa com etiqueta Preta-Branca•Saca uma bola
– Se Branca• Conclui-se
– a outra bola é Branca e esta caixa é a Branca-Branca– a caixa que está etiquetada Preta-Preta é Preta-Branca– a caixa que está etiquetada Branca-Branca é Preta-Preta
– Se Preta• Conclui-se
– a outra bola é Preta e esta caixa é a Petra-Preta– a caixa que está etiquetada Preta-Preta é Branca-Branca– a caixa que está etiquetada Branca-Branca é Preta-Branca
![Page 72: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/72.jpg)
Entre 0 horas e 24 horas quantas vezes os ponteiros se cruzam, contando inclusive o cruzamento das 0 horas e das 24 horas?
Cruzamento dos ponteiros do relógio
![Page 73: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/73.jpg)
Resposta: 23 vezes
![Page 74: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/74.jpg)
Quatro pessoas tem de atravessar uma passarela bamba. Há muitos buracos na passarela, que suporta apenas 2 pessoas de cada vez (mais que isso, ela cai). O grupo deve usar uma lanterna para guiar seus passos, caso contrário acabará caindo no buraco e morrendo. Só há uma lanterna. As 4 pessoas andam em velocidades diferentes. Antonio cruza a passarela em 1 minuto. Bernardo em 2 minutos. Carlos leva 5 minutos. O mais lento, Roberto, leva 10 minutos. A passarela vai ruir dentro de exatamente 17 minutos.
Como os 4 podem atravessá-la?
Travessia da passarela
![Page 75: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/75.jpg)
•Vai o 1 e 2 2
•Volta o 1 3
•Vai o 5 e 10 13
•Volta o 2 15
•Vai o 1 e 2 17
Resposta
![Page 76: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/76.jpg)
Conjunto de Instruções: Comandos e Funções
Instruções básicas de uma Linguagem:
Programa
Aritméticas:
Somar / Subtrair / Multiplicar / Dividir
Entrada e Saida:
Ler / Gravar / Tela / Impressão / Teclado / Atribuição
Lógicas:
If...Else...EndIf For...Next While...End Do Case...EndCase
![Page 77: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/77.jpg)
Inicio
ArmarDespertador
DesligarDespertador
Bocejar
Sair da Cama
Sacudir aEsposa
Está Escuro ?
Está Frio ?
Ir ao Banheiro
Tomar Café
A
Ir até ocarro
Voltarpara pegá-las
Beijar aesposa
Dirigir-seao escritório
Resmungar
Beijar aesposa
Dar-lheR$ 100,00
Acendera luz
Voltar para a cama
Fim
EstáCom as
Chaves ?
Casado há mais de
1 ano ?
A Esposaquer $$ ?
Casadohá mais de
5 anos ?
A
Sim
Sim
Sim
Sim
Não
Sim
Não
Não
Não
Repetir3
vezes
Não
PossívelFim
da rotina
Não
Sim
![Page 78: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/78.jpg)
+ - * / ** ou ^ %
Operadores
x := 10 + 20
nValor := nQtde * nPreco
nValor := nValor + (nValor * 18 / 100)
Matemáticos
![Page 79: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/79.jpg)
< > = = <= >= <> ou # ou !=
If nQtde < nSaldo
MsgAlert(“Pedido liberado”)
Else
MsgAlert(“Pedido bloqueado: estoque insuficiente”)
EndIf
If nSalario > 1257
nIR := 15
EndIf
OperadoresRelacionais
![Page 80: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/80.jpg)
.And. .Or. .Not. ou !
If cCredito == “OK” .And. nQtde < nSaldo
Liberar venda
EndIf
cCredito == “OK”
.And.
nQtde < nSaldo
V V V
V F F
F V F
F F F
OperadoresLógicos
![Page 81: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/81.jpg)
If cEstNeg == "S" .Or. nQtdVenda < nSaldo
MsgAlert("OK, pode faturar!")
Else
MsgAlert("Estoque insuficiente!")
EndIf
cEstNeg == “S”
.Or.nQtdeVenda <
nSaldo
V V V
V F V
F V V
F F F
Operadores
.And. .Or. .Not. ou !
Lógicos
![Page 82: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/82.jpg)
If cCredito == "OK" .And. (cEstNeg == "S" .Or. nQtdVenda < nSaldo)
MsgAlert("OK, pode faturar!")
Else
MsgAlert("Sem credito ou estoque insuficiente!")
EndIf
cCredito == “OK” .And. ( cEstNeg == “S”
.Or. nQtdVenda < nSaldo )
V V V V
V V F V
V F V V
V F F F
F V V V
F V F V
F F V V
F F F F
Operadores
.And. .Or. .Not. ou !
Lógicos
![Page 83: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/83.jpg)
If cCredito == "OK" .And. (cEstNeg == "S" .Or. nQtdVenda < nSaldo)
MsgAlert("OK, pode faturar!")
Else
MsgAlert("Sem credito ou estoque insuficiente!")
EndIf
cCredito == “OK” .And. ( cEstNeg == “S”
.Or. nQtdVenda < nSaldo )
V V V V V
V V F V V
V F V V V
V F F F F
F V V V F
F V F V F
F F V V F
F F F F F
Operadores
.And. .Or. .Not. ou !
Lógicos
![Page 84: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/84.jpg)
If a <> b If .Not. a==b If !a==b
... ... ...
EndIf EndIf EndIf
Operadores
.And. .Or. .Not. ou !
Lógicos
![Page 85: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/85.jpg)
:= += -= *= /= ^= ou **= %=
x := 10
x := x + 20
é o mesmo que: x += 20
nValor := nValor + (nValor * 18 / 100)
é o mesmo que: nValor += (nValor * 18 / 100)
OperadoresAtribuição
![Page 86: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/86.jpg)
i++ equivale a i := i + 1
i := 1
MsgAlert(i++)
i := 1
MsgAlert(++i)
i++ ++i i-- --i
i := 1equivale a MsgAlert(i) mostra 1
i := i + 1
i := 1equivale a i := i + 1
MsgAlert(i) mostra 2
OperadoresIncremento / Decremento
![Page 87: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/87.jpg)
x + y x - y x $ y
Concatenação cNome := “João”
cSobreNome := “Silva”
cNomeCompleto := cNome + cSobreNome “JoãoSilva”
“A ” - “B” “AB ”
Pertence “Silva” $ cNomeCompleto .T.
“SILVA” $ cNomeCompleto .F.
OperadoresStrings
![Page 88: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/88.jpg)
( ) Funcao(){ } Array, bloco de código[ ] Array& Macro|| Bloco de código-> Alias de arquivo e var. de memória SA1->A1_Nome M->A1_Nome@ Parâmetros por referência; Quebra de linha If cCredito == "OK" .And.; (cEstNeg == "S" .Or. nQtdVenda < nSaldo) MsgAlert("OK, pode faturar!") Else MsgAlert("Sem credito ou estoque insuficiente!") EndIf
: Objetos oBotao:cCaption := “OK”
OperadoresEspeciais
![Page 89: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/89.jpg)
1. Criar atalho do IDE (\erp811\bin\remote\mp8ide.exe)2. Criar um novo projeto3. Criar um novo arquivo4. Digitar o primeiro programa5. Salvá-lo na pasta \erp811\My Projects6. Inseri-lo no projeto7. Compilar: Usuário: Administrador
Senha: admin
8. Executar
IDE – Primeiro Programa
Ver 010_If.prw / 020_For.prw / 030_While.prw / 040_Case.prw
User Function Se()
Local nX := 10
If nX > 5
MsgAlert("Maior")
EndIf
Return
![Page 90: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/90.jpg)
Organização dos Programas-Fonte
Projeto (.PRJ)
Programa (.PRW) FunçãoFunçãoFunção
Programa (.PRW) FunçãoFunçãoFunção
Programa (.PRW) FunçãoFunçãoFunção
![Page 91: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/91.jpg)
Cadastro
Nome:
Variáveis de Memória
José
Nome
A1_NOMEJosé
D2_VALOR1000
1000
Valor
ICMS = Valor * 18 / 100
Memória
José
CPU
Armazenamento temporário de dados
![Page 92: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/92.jpg)
Caractere “Casa”
Numéricas 1234.56
Data CtoD(“25/10/05”)
Lógicas .T. .F.
Tipos de Variáveis de Memória
Notação Húngara:
cTexto
nValor
dData
lOk
X := 1
X := X + 1
X := “José”
n
c
n n
X é numérico
Operação matemática
X agora é caracter
ERRO !
nX é numérico
cX é caracter
![Page 93: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/93.jpg)
Caractere “Casa”
Numéricas 1234.56
Data CtoD(“25/10/05”)
Lógicas .T. .F.
Tipos de Variáveis de Memória
Ver Operadores.PRWExercicio
Função ValType(NomeVar) tipo da variável: C, N, D, L, A, U
Exemplo:
cNome := “Jose” ValType(cNome) “C” nValor := 1000 ValType(nValor) “N” x := Nil ValType(x) “U”
Notação Húngara:
cTexto
nValor
dData
lOk
![Page 94: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/94.jpg)
Array, Vetor ou Matriz
aNomes := {“Joao”, “Alberto”, “Pedro”, “Maria”}
aNomes[1]
aNomes[2]
aNomes[3]
aNomes[4]
cNome1 := “Joao”
cNome2 := “Alberto”
cNome3 := “Pedro”
cNome4 := “Maria”
Variáveis do tipo Caracter: uma para cada nome
Variáveis do tipo Array: todos os nomes numa única variável
Joao Alberto Pedro Maria
Joao Alberto Pedro Maria
cNome1 cNome2 cNome3 cNome4
aNomes
Memória
![Page 95: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/95.jpg)
Joao Alberto Pedro Maria
Joao Alberto Pedro Maria
Armário 1 Armário 2 Armário 3 Armário 4
Armário
Gaveta 1 Gaveta 2 Gaveta 3 Gaveta 4
Variáveis
Array
Array, Vetor ou Matriz
![Page 96: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/96.jpg)
Gaveta 1
Gaveta 2
Gaveta 3
Gaveta 4
Joao
Alberto
Pedro
Maria
Array, Vetor ou Matriz
![Page 97: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/97.jpg)
aMatriz := {{“Joao”,25,.T.}, {“Alberto”,18,.F.}, {“Pedro”,40,.T.}, {“Maria”,33,.F.}}
aMatriz := {{“Joao” , 25, .T.},;
{“Alberto”, 18, .F.},;
{“Pedro” , 40, .T.},;
{“Maria” , 33, .F.}}
aMatriz[1][1]
aMatriz[1][2]
aMatriz[1][3]
aMatriz[2][1]
aMatriz[2][2]
aMatriz[2][3]
aPessoa := {“Joao”, 25, .T.}
Um array pode conter tipos diferentes de dados
Um array pode conter outros arrays: Matriz
aMatriz[1]
aMatriz[2]
Array, Vetor ou Matriz
![Page 98: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/98.jpg)
aMatriz := {{“Joao”,25,.T.}, {“Alberto”,18,.F.}, {“Pedro”,40,.T.}, {“Maria”,33,.F.}}
aMatriz := {{“Joao” , 25, .T.},;
{“Alberto”, 18, .F.},;
{“Pedro” , 40, .T.},;
{“Maria” , 33, .F.}}
Gaveta 1 Gaveta 2 Gaveta 3 Gaveta 4
Joao 25 T Alberto 18 F Pedro 40 T Maria 33 F
1 2 3 1 2 3 1 2 3 1 2 3
Gaveta 1 Gaveta 2 Gaveta 3 Gaveta 4
Joao
25
T
Alberto
18
F
Pedro
40
T
Maria
33
F
1
2
3
1
2
3
1
2
3
1
2
3
Array, Vetor ou Matriz
![Page 99: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/99.jpg)
aNomes := {}
AAdd(aNomes, “Joao”)
AAdd(aNomes, “Alberto”)
AAdd(aNomes, “Pedro”)
AAdd(aNomes, “Maria”)
aNomes := {“Joao”}aNomes := {“Joao”, “Alberto”}aNomes := {“Joao”, “Alberto”, “Pedro”}aNomes := {“Joao”, “Alberto”, “Pedro”, “Maria”}
Adicionar elementos num array vazio
Array, Vetor ou Matriz
AAdd(aMatriz, {“Joao”,25,.T.})
AAdd(aMatriz, {“Alberto”,18,.F.})
AAdd(aMatriz, {“Pedro”,40,.T.})
AAdd(aMatriz, {“Maria”,33,.F.})
aMatriz: {{“Joao”,25,.T.}, {“Alberto”,18,.F.}, {“Pedro”,40,.T.}, {“Maria”,33,.F.}}
![Page 100: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/100.jpg)
aArray := Array(5)
aArray {Nil, Nil, Nil, Nil, Nil}
Atribuição de valor aos elementos do array
aArray[1] := “A”
aArray[2] := “B”
aArray[3] := “C”
aArray[4] := “D”
aArray[5] := “E”
aArray {“A”, “B”, “C”, “D”, “E”}Ver 050_Array.prw
Exercicio: fazer o sort de um array
Função Array(n): retorna um array com n elementos nulos
Array, Vetor ou Matriz
![Page 101: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/101.jpg)
Funções
User Function Teste()
Comandos Comandos Comandos Comandos
Return
Execução (chamada) da função: u_Teste()
Programa.PRW
Conjunto de Comandos
![Page 102: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/102.jpg)
Funções
User Function CadCli()
Comandos If CGC(cCGC) continua Else abandona EndIf Comandos Comandos Comandos
Return
Function CGC(cCGC)
If cCGC OK lOK := .T. Else lOK := .F. EndIf
Return lOK
User Function CadFor()
Comandos Comandos Comandos If CGC(cCGC) continua Else abandona EndIf Comandos
Return
CGC do Cliente
CGC
do F
orne
cedo
r
.T. o
u .F.
.T. o
u .F.
Rotinas repetitivas
![Page 103: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/103.jpg)
Funções
User Function Relato() u_PreparaImpr() u_LeDados() u_Imprime()Return
User Function PreparaImpr() ...Return
User Function LeDados() ...Return
User Function Imprime() ...Return
Programação Estruturada
![Page 104: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/104.jpg)
Funções
User Function Venda() nImposto := u_ICMS(“NE”, 1000)
ReturnUser Function ICMS(cRegiao, nValor)
If cRegiao == “SE”
nICMS := nValor * 18 / 100
ElseIf cRegiao == “NE”
nICMS := nValor * 7 / 100
Else
nICMS := nValor * 12 / 100
EndIf
Return nICMS
“NE” 1000
Passagem de parâmetros
![Page 105: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/105.jpg)
Local Visível somente na função em que foi criada
Private Visível na função em que foi criada e nas funções seguintes
Public Visível em todas as funções, a partir do momento em que foi criada
Static Visível somente no programa (PRW)
Escôpo das Variávies
![Page 106: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/106.jpg)
User Function Func1()
Local cVar := "Func1"
u_Func2()
Return
User Function Func2()
Local cVar := "Func2"
Local cVar1 := "Func2"
Private cVar2 := "Private Func2"
Public cVar3 := "Public Func2"
u_Func3()
Return
User Function Func3()
cVar2 := “ABC"
Return
LOCAL Conteúdo
PRIVATE Conteúdo
PUBLIC Conteúdo
Escôpo das Variávies
![Page 107: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/107.jpg)
User Function Func1()
Local cVar := "Func1"
u_Func2()
Return
User Function Func2()
Local cVar := "Func2"
Local cVar1 := "Func2"
Private cVar2 := "Private Func2"
Public cVar3 := "Public Func2"
u_Func3()
Return
User Function Func3()
cVar2 := “ABC"
Return
LOCAL Conteúdo
cVar Func1
PRIVATE Conteúdo
PUBLIC Conteúdo
Escôpo das Variávies
![Page 108: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/108.jpg)
User Function Func1()
Local cVar := "Func1"
u_Func2()
Return
User Function Func2()
Local cVar := "Func2"
Local cVar1 := "Func2"
Private cVar2 := "Private Func2"
Public cVar3 := "Public Func2"
u_Func3()
Return
User Function Func3()
cVar2 := “ABC"
Return
LOCAL Conteúdo
cVar
cVar1
Func2
Func2
PRIVATE Conteúdo
cVar2 Private Func2
PUBLIC Conteúdo
cVar3 Public Func2
Escôpo das Variávies
![Page 109: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/109.jpg)
User Function Func1()
Local cVar := "Func1"
u_Func2()
Return
User Function Func2()
Local cVar := "Func2"
Local cVar1 := "Func2"
Private cVar2 := "Private Func2"
Public cVar3 := "Public Func2"
u_Func3()
Return
User Function Func3()
cVar2 := “ABC"
Return
PRIVATE Conteúdo
cVar2 ABC
PUBLIC Conteúdo
cVar3 Public Func2
LOCAL Conteúdo
Escôpo das Variávies
![Page 110: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/110.jpg)
User Function Func1()
Local cVar := "Func1"
u_Func2()
Return
User Function Func2()
Local cVar := "Func2"
Local cVar1 := "Func2"
Private cVar2 := "Private Func2"
Public cVar3 := "Public Func2"
u_Func3()
Return
User Function Func3()
cVar2 := “ABC"
Return
LOCAL Conteúdo
cVar
cVar1
Func2
Func2
PRIVATE Conteúdo
cVar2 ABC
PUBLIC Conteúdo
cVar3 Public Func2
Escôpo das Variávies
![Page 111: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/111.jpg)
Ver 052_EscopoVar.prw
User Function Func1()
Local cVar := "Func1"
u_Func2()
Return
User Function Func2()
Local cVar := "Func2"
Local cVar1 := "Func2"
Private cVar2 := "Private Func2"
Public cVar3 := "Public Func2"
u_Func3()
Return
User Function Func3()
cVar2 := “ABC"
Return
LOCAL Conteúdo
cVar Func1
PRIVATE Conteúdo
PUBLIC Conteúdo
cVar3 Public Func2
Escôpo das Variávies
![Page 112: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/112.jpg)
Passagem de Parâmetros
User Function Venda() Local cRegiao := “NE” Local nValor := 1000 nImposto := ICMS(cRegiao, nValor)Return
User Function ICMS(cRegiao, nValor)
If cRegiao == “SE”
nICMS := nValor * 18 / 100
ElseIf cRegiao == “NE”
nICMS := nValor * 7 / 100
Else
nICMS := nValor * 12 / 100
EndIf
Return nICMS
“NE” 1000São
criadas variáveis LOCAIS
“NE” 1000
Por Valor
![Page 113: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/113.jpg)
User Function Param1()
Local x := 1
Local y := 2
u_Param2(x, y)
MsgAlert(x+y)
Return
User Function Param2(x, y)
x := 50
y := 100
Return
x = 1y = 2
Ver 060_Param.prw
Passagem de ParâmetrosPor Valor
![Page 114: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/114.jpg)
User Function Param1()
Local x := 1
Local y := 2
u_Param2(x, y)
MsgAlert(x+y)
Return
User Function Param2(x, y)
x := 50
y := 100
Return
x = 1y = 2
x = 50y = 100
Passagem de ParâmetrosPor Valor
Ver 060_Param.prw
![Page 115: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/115.jpg)
User Function Param1()
Local x := 1
Local y := 2
u_Param2(x, y)
MsgAlert(x+y)
Return
User Function Param2(x, y)
x := 50
y := 100
Return
x = 1y = 2
Passagem de ParâmetrosPor Valor
Ver 060_Param.prw
![Page 116: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/116.jpg)
User Function Param1()
Local x := 1
Local y := 2
u_Param2(@x, y)
MsgAlert(x+y)
Return
User Function Param2(x, y)
x := 50
y := 100
Return
x = 1y = 2
Passagem de ParâmetrosPor Referência
Ver 060_Param.prw
![Page 117: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/117.jpg)
User Function Param1()
Local x := 1
Local y := 2
u_Param2(@x, y)
MsgAlert(x+y)
Return
User Function Param2(x, y)
x := 50
y := 100
Return
x = 50y = 2
y = 100
Passagem de ParâmetrosPor Referência
Ver 060_Param.prw
![Page 118: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/118.jpg)
User Function Param1()
Local x := 1
Local y := 2
u_Param2(@x, y)
MsgAlert(x+y)
Return
User Function Param2(x, y)
x := 50
y := 100
Return
x = 50y = 2
Passagem de ParâmetrosPor Referência
Ver 060_Param.prw
![Page 119: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/119.jpg)
Funções de Caracteres, Números e Datas
Ver 053_Tratamentos.PRW
•Manipulação de textos (strings)•Conversão de números•Funções de data e hora•Conversão de datas
![Page 120: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/120.jpg)
Aula 3Macro
Bloco de CódigoUDC
SemáforosArquivos e Índices
![Page 121: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/121.jpg)
Macro-Substituição
User Function Reajuste()
dbSelectArea("SB1")
dbGoTop()
While !SB1->(Eof())
RecLock("SB1")
SB1->B1_Prv1 := SB1->B1_Prv1 * 1.25
MSUnlock()
SB1->(dbSkip())
End
MsgInfo("Terminou!")
Return
![Page 122: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/122.jpg)
User Function Reajuste()
Local cFormula
dbSelectArea("SM4")dbSetOrder(1)dbSeek(xFilial("SM4") + "001")cFormula := SM4->M4_Formula
dbSelectArea("SB1")dbGoTop()While !SB1->(Eof()) RecLock("SB1") SB1->B1_Prv1 := &(cFormula) MSUnlock() SB1->(dbSkip())End
MsgInfo("Terminou!")
Return
Ver Reajuste.PRW
&(SB1->B1_Prv1 * 1.25)SB1->B1_Prv1 * 1.25
M4_FILIAL: “01”
M4_CODIGO: “001”
M4_FORMULA: “SB1->B1_Prv1 * 1.25”
Arquivo SM4 - Fórmulas
“SB1->B1_Prv1 * 1.25”
Macro-Substituição
![Page 123: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/123.jpg)
•Validações “If(M->I2_Valor < GetMV(‘MV_VRMAX’), .T., .F.)”
•Gatilhos “M->D1_QUANT * M->D1_VUNIT”
•Fórmulas “SB1->B1_Prv1 * 1.25”
•Lançamentos Contábeis Automáticos “If(SD3->D3_TIPO=‘MC’, ‘33201’+SD3->D3_CC, ‘11303’)”
Macro-SubstituiçãoAplicação de Macros
![Page 124: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/124.jpg)
Bloco de Código
bBloco := {|| 2 * 10}
nResult := EVal(bBloco)
bBloco := {|x| x * 2}
nResult := EVal(bBloco, 5)
nResult = 20
nResult = 10
Ver 051_Bloco.prw
![Page 125: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/125.jpg)
Ver AEval em 050_Array.prw
aNomes := {“Joao”, “Alberto”, “Pedro”, “Maria”}
AEval(aNomes, {|x| MsgAlert(x)})
DBEval()
Bloco de Código
![Page 126: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/126.jpg)
aMatriz := { , , , }
ASort(aMatriz,,,{|aX,aY| aX[2] < aY[2]})
{“Alberto”,20} {“Pedro ”,10}{“Alberto”,20}
Ver 050_Array.prw
Bloco de Código
{“Joao ”,15} {“Maria ”,30}{“Pedro ”,10}
.T..F..T.
Ordenação de array
![Page 127: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/127.jpg)
aMatriz := { , , , }
ASort(aMatriz,,,{|aX,aY| aX[2] < aY[2]})
{“Joao ”,15} {“Pedro ”,10}{“Joao ”,15}
Bloco de Código
{“Alberto”,20} {“Maria ”,30}{“Pedro ”,10}
.F..T..T.
Ordenação de array
Ver 050_Array.prw
![Page 128: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/128.jpg)
Instruções para o Compilador
#DEFINE #IFDEF...#ELSE...#ENDIF #IFNDEF #INCLUDE #COMMAND
UDC – User Defined Command
Ver 080_UDC.prw
Legibilidade e Manutenibilidade do Fonte
![Page 129: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/129.jpg)
GetSXENum(Alias) Obtem o próximo número
ConfirmSX8() Confirma o número
RollBackSX8() Reutiliza o número
MayIUseCode(Alias) Confirma se o número está mesmo disponível
APCFG110 Manutenção do SXE/SXF ou Hardlock
Semáforos
Arquivos MS: só alias GetSXENum(“SC5”)Arquivos de usuário: alias e campo GetSXENum(“SZ2”, “Z2_NUMERO”)
001002003004005
003004006007008
Exemplo:
Exemplos em 120_TranM2
Controle de numeração sequencial
![Page 130: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/130.jpg)
Arquivos
![Page 131: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/131.jpg)
SA - CadastrosSB - EstoquesSC - Previsões de E/SSD - Mov. De EstoqueSE - FinanceiroSF - FiscalSG - EstruturasSH - Carga de MáquinaSI - ContábilSJ - EstatísticasSM - MiscelâneasSN - Ativo Fixo
SO - Assist. TécnicaSP - Ponto EletrônicoSQ - Recr. e SeleçãoSR - Folha de PagtoST - Manut. IndustrialSU - TelemarketingSV - ConcessionáriasSW e SY - Export./Import.Q? - Qualidade (Celerina)R? - Recursos HumanosSZ,QZ,RZ - LivresP? - Projetos Especiais
M.E.R. Modelo de Entidades e Relacionamento
Famílias de Arquivos de Dados
![Page 132: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/132.jpg)
Principais Arquivos de Dados
Prefixo DescriçãoSA1 Cadastro de ClientesSA2 Cadastro de FornecedoresSA3 Cadastro de VendedoresSB1 Cadastro de ProdutosSB2 Saldos dos Produtos por AlmoxarifadoSB5 Dados Complementares de ProdutosSC1 Solicitações de ComprasSC5 Cabeçalho dos Pedidos de VendaSC6 Itens dos Pedidos de VendaSC7 Pedidos de ComprasSD1 Itens das Notas Fiscais de EntradaSD2 Itens das Notas Fiscais de SaídaSD3 Movimentações Internas de ProdutosSE1 Títulos a ReceberSE2 Títulos a PagarSF1 Cabeçalho das Notas Fiscais de EntradaSF2 Cabeçalho das Notas Fiscais de SaídaSI1 Plano de ContasSI2 Lançamentos Contábeis
![Page 133: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/133.jpg)
Arquivos de Dados – por Empresa
O sistema permite controlar até 99 Empresas. Cada Empresa pode ter até 99 Filiais:
Empresa 01 – Filiais 01 Empresa 02 – Filiais 01
02 02... ...99 99
Para cada Empresa é criado um jogo de arquivos:
SXXnn0 – onde: XX = Prefixo do arquivonn = Empresa
Exemplo: Empresa 99 -> SA1990, SA2990, SB1990...
![Page 134: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/134.jpg)
Arquivos de Dados – por Empresa
Nomenclatura dos campos:
Arquivo SA1: A1_FILIAL SA2:A2_FILIAL SB1:B1_FILIAL QA1:QA1_FILIALA1_COD A2_COD B1_COD QA1_CODA1_NOME A2_NOME B1_DESC QA1_DESCA1_END A2_END B1_TIPO
Os dados das Filiais ficam dentro do arquivo de cada Empresa.
Todo arquivo, exceto SM2, tem um campo XX_Filial que identifica a Filial:
01 01
01 02 02
02
![Page 135: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/135.jpg)
Arquivos de Dados
Compartilhado registros compartilhados entre as filiaisCampo Filial: em branco
Exclusivo o registro é exclusivo da filialCampo Filial: código da Filial (variável cFilAnt)
C5_FILIAL C5_NUM C5_EMISSAO C5_CLIENTE C5_PROD C5_VALOR
01 000001 01/01/04 000002 11.11014 15.000,0001 000005 01/01/04 000023 13.13000 5.600,0001 000007 20/01/04 000016 15.15140 5.600,00
02 000001 01/01/04 000002 11.11014 15.000,0002 000005 01/01/04 000023 13.13000 5.600,0002 000007 20/01/04 000016 15.15140 5.600,00
03 000001 01/01/04 000002 11.11014 15.000,0003 000005 01/01/04 000023 13.13000 5.600,0003 000007 20/01/04 000016 15.15140 5.600,00
A1_FILIAL A1_COD A1_NOME
000015 FABRICA DE TINTAS E VERINIZES LTDA /SP 000016 TEX MALHAS E CONFECCOES S.A /SP 000001 CLIENTE PADRAO 000020 ARMANDO JOSE FLORES /SC 000007 COMERCIO SOM DO MUNDO /SP
xFilial(“SA1”) “ “
xFilial(“SC5”) cFilAnt
Ex: SA1 - Compartilhado
Ex: SC5 - Exclusivo
Modo de Acesso
![Page 136: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/136.jpg)
01 000015 FABRICA DE TINTAS E VERINIZES LTDA /SP02 000016 TEX MALHAS E CONFECCOES S.A /SP03 000001 CLIENTE PADRAO04 000020 ARMANDO JOSE FLORES /SC05 000007 COMERCIO SOM DO MUNDO /SP06 000024 JOAO DA SILVA /SP07 000008 FLORICULTURA FULO DE MARAVILHA /SP08 000023 PREFEITURA MUNICIPAL DE SAO PAULO /SP09 000002 ECOSSISTEMA DIGITAL S/A10 000026 ACTIONVEA IMP. EXP.11 000027 STARMEAL LEAK S.A.12 000028 REIZA KERN IMP. EXP.13 000019 JOAO DE ALMEIDA SILVA /RS14 000033 DESPACHANTE15 000030 IMPORTADOR EUA
000001 03000002 09000007 05000008 07000015 01000016 02000019 13000020 04000023 08000024 06000026 10000027 11000028 12000030 15000033 14
RECNO A1_COD A1_NOMECODIGO REGISTRO
ArquivoÍndice: CÓDIGO
Arquivos e Índices
![Page 137: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/137.jpg)
01 000015 FABRICA DE TINTAS E VERINIZES LTDA /SP02 000016 TEX MALHAS E CONFECCOES S.A /SP03 000001 CLIENTE PADRAO04 000020 ARMANDO JOSE FLORES /SC05 000007 COMERCIO SOM DO MUNDO /SP06 000024 JOAO DA SILVA /SP07 000008 FLORICULTURA FULO DE MARAVILHA /SP08 000023 PREFEITURA MUNICIPAL DE SAO PAULO /SP09 000002 ECOSSISTEMA DIGITAL S/A10 000026 ACTIONVEA IMP. EXP.11 000027 STARMEAL LEAK S.A.12 000028 REIZA KERN IMP. EXP.13 000019 JOAO DE ALMEIDA SILVA /RS14 000033 DESPACHANTE15 000030 IMPORTADOR EUA
RECNO A1_COD A1_NOMENOME REGISTRO
ArquivoÍndice: NOME
ACTIONVEA.. 10ARMANDO J.. 04CLIENTE P.. 03COMERCIO .. 05DESPACHAN.. 14ECOSSISTE.. 09FABRICA D.. 01FLORICULT.. 07IMPORTADO.. 15JOAO DA S.. 06JOAO DE A.. 13PREFEITUR.. 08REIZA KER.. 12STARMEAL .. 11TEX MALHA.. 02
Arquivos e Índices
![Page 138: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/138.jpg)
RECNO C5_NUM C5_EMISSAO C5_CLIENTE C5_PROD C5_VALOR
1 000001 01/01/04 000002 11.11014 15.000,002 000005 01/01/04 000023 13.13000 5.600,003 000007 20/01/04 000016 15.15140 5.600,004 000008 27/01/04 000024 13.13001 1.000,005 000009 01/01/04 000008 11.11000 3.450,00
Arquivo: SC5990 Alias: SC5 Pedidos de Venda
RECNO A1_COD A1_NOME
1 000015 FABRICA DE TINTAS E VERINIZES LTDA /SP2 000016 TEX MALHAS E CONFECCOES S.A /SP3 000001 CLIENTE PADRAO4 000020 ARMANDO JOSE FLORES /SC5 000007 COMERCIO SOM DO MUNDO /SP6 000024 JOAO DA SILVA /SP7 000008 FLORICULTURA FULO DE MARAVILHA /SP8 000023 PREFEITURA MUNICIPAL DE SAO PAULO /SP9 000002 ECOSSISTEMA DIGITAL S/A10 000026 ACTIONVEA IMP. EXP.
Arquivo: SA1990 Alias: SA1 Cadastro de Clientes
CODIGO REG
000001 3000002 9000007 5000008 7000015 1000016 2000020 4000023 8000024 6000026 10
Índices
RECNO B1_COD B1_DESC B1_TIPO B1_UM
1 11.11014 PROD. DE REVENDA PA UN2 11.11000 PROD. ACABADO PA UN3 12.12006 MAT. PRIMA 1 – QUALITY MP UN4 13.13001 CAIXA GRANDE – PA PA CX5 11.11003 MAT. PRIMA MP UN6 15.15140 ALCOOL ETILICO MC L7 33.03323 LUVA MP UN8 13.13000 CAIXA PEQUENA – PA PA CX
CODIGO REG
11.11000 211.11003 511.11014 112.12006 313.13000 813.13001 415.15140 633.03323 7
Arquivo: SB1990 Alias: SB1 Cadastro de ProdutosÍndices
dbSelectArea(“SA1”)dbSetOrder(1)dbSeek(“000002”)
dbSelectArea(“SB1”)dbSetOrder(1)dbSeek(“11.11014”)
dbSelectArea(“SA1”)
dbSelectArea(“SB1”)
dbSelectArea(“SC5”)
Posicionamento de registrodbSkip()
dbSkip()dbSkip()dbSkip()
Arquivos e Índices
![Page 139: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/139.jpg)
Posicionamento de Arquivos
RECNO C5_FILIAL C5_NUM C5_EMISSAO C5_CLIENTE C5_PROD C5_VALOR
1 01 000001 01/01/04 000002 11.11014 15.000,002 01 000005 01/01/04 000023 13.13000 5.600,003 01 000007 20/01/04 000016 15.15140 5.600,004 01 000008 27/01/04 000024 13.13001 1.000,005 01 000009 01/01/04 000008 11.11000 3.450,00
6 02 000001 01/01/04 000002 11.11014 15.000,007 02 000005 01/01/04 000023 13.13000 5.600,008 02 000007 20/01/04 000016 15.15140 5.600,009 02 000008 27/01/04 000024 13.13001 1.000,0010 02 000009 01/01/04 000008 11.11000 3.450,00
11 03 000001 01/01/04 000002 11.11014 15.000,0012 03 000005 01/01/04 000023 13.13000 5.600,0013 03 000007 20/01/04 000016 15.15140 5.600,0014 03 000008 27/01/04 000024 13.13001 1.000,0015 03 000009 01/01/04 000008 11.11000 3.450,00
FILIAL+NUM REG
01000001 101000005 201000007 301000008 401000009 5
02000001 602000005 702000007 802000008 902000009 10
03000001 1103000005 1203000007 1303000008 1403000009 15
dbGoTop()
Empresa: XX Filial: 02
dbSeek(xFilial(“SC5”))
![Page 140: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/140.jpg)
Posicionamento de Arquivos
RECNO Z2_FILIAL Z2_NUMERO Z2_ITEM
1 01 0001 012 01 0001 023 01 0001 034 01 0002 015 01 0002 02
6 01 0003 017 01 0003 028 01 0003 03
9 01 0004 0110 01 0004 02
FILIAL+NUMERO+ITEM REG
01000101 101000102 201000103 301000201 401000202 5
01000301 601000302 701000303 8
01000401 901000402 10
dbGoTop() Posiciona no topo do arquivo
While !EOF()
dbSkip() Leitura sequencial, registro a registro
End
EOF() .T.
Leitura sequencial
![Page 141: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/141.jpg)
Posicionamento de Arquivos
RECNO Z2_FILIAL Z2_NUMERO Z2_ITEM
1 01 0001 012 01 0001 023 01 0001 034 01 0002 015 01 0002 02
6 01 0003 017 01 0003 028 01 0003 03
9 01 0004 0110 01 0004 02
FILIAL+NUMERO+ITEM REG
01000101 101000102 201000103 301000201 401000202 5
01000301 601000302 701000303 8
01000401 901000402 10
dbSeek(xFilial(“SZ2”)+”0003”+”02”) Chave completa
Por chave completa ou parcial
dbSeek(xFilial(“SZ2”)+”0003”) Chave parcial
Acesso direto ao registro
![Page 142: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/142.jpg)
Sobre arquivos…
• Número máximo de arquivos abertos: 512 (por thread);
• A navegação nos registros é em ordem do índice selecionado - dbSetOrder(n). Se for selecionado dbSetOrder(0), a navegação será pela ordem física dos registros (Recno);
• No SIX, os índices são numerados de 1 a 9 e A, B,... (campo ORDEM). No dbSetOrder(): 1...9, 10, 11...;
• dbSkip() – avança 1 registro;
• dbSkip(n) ou dbSkip(-n) – avança ou retrocede n registros;
• dbSelectArea(cAlias) – seleciona o arquivo. Caso ainda não esteja aberto, abre-o neste momento.
• A referência a um campo de arquivo com o seu Alias ( ex.: MsgAlert(SA1->A1_Nome) ), também abre o arquivo, caso não esteja aberto, mesmo sem um dbSelectArea() anterior.
• Na abertura do arquivo, o primeiro índice é selecionado. O ponteiro de registro é posicionado no primeiro registro físico (não pelo índice). A função dbGoTop(), posiciona no primeiro registro do índice selecionado;
• No Protheus MDI, os arquivos são abertos dentro da thread e fechados no seu encerramento. Na chamada à mesma rotina, mesmo em outra thread, concomitante ou não, os arquivos são reabertos e posicionados no topo e com o primeiro índice selecionado.
• No Protheus SDI, uma vez abertos, os arquivos permanecem assim, inclusive com o último posicionamento do ponteiro de registro e o índice selecionado. A função dbCloseArea() fecha o arquivo.
• No MDI: a abertura e o posicionamento de um mesmo arquivo em threads diferentes são independentes, ou seja, podem ser selecionados índices diferentes e o ponteiro de registros podem ser posicionados em registros diferentes também. O bloqueio de um mesmo registro é comum, ou seja, se o registro for bloqueado por um dos threads, o outro não poderá acessá-lo para alteração ou exclusão.
![Page 143: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/143.jpg)
Aula 4AxCadastro
MBrowseModelo2Modelo3
![Page 144: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/144.jpg)
Funções de Tratamento de
ArquivosAxCadastro,MBrowse,Modelo2,Mo
delo3
![Page 145: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/145.jpg)
AxCadastro
AxPesqui()
AxVisual()
AxInclui()
AxAltera()
AxDeleta()
![Page 146: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/146.jpg)
AxInclui()
Ver 100_Cad.prw
AxCadastro
![Page 147: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/147.jpg)
Cadastre algumas contas
No campo E-Mail, coloque:[email protected]
E no E-Mail1, coloque:[email protected]
AxCadastro
![Page 148: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/148.jpg)
MBrowse
Ver 110_TranM1.prw
Precisa de duas variáveis PRIVATE:
cCadastro Título da janela.
aRotina array onde devem ser incluidos os botões (no máximo, 10).
Esses botões podem ser associados a qualquer função, inclusive AxInclui(), AxAltera(), etc.
Permite uma flexibilidade maior que a AxCadastro
![Page 149: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/149.jpg)
Sobre variáveis…
Referência a uma
variável
Variável
existe ?
Atribui o valor à variável
Existe um
arquivo aberto ?
Existe campo
com este
nome ?
Grava o valor no campo
É atribuiçã
o de valor?
Cria a variável
Erro: variável
não existe
Nome := “João”
“João” Var. Nome
“João” Campo Nome
Nome := “João”
Cria como privada
S
N
S
N
S N
S
N
Para não confundir variáveis de memória com campos de arquivos, usa-se o ALIAS:
M->Z1_Nome variável de memóriaSZ1->Z1_Nome campo de arquivo
Arquivo
Codigo Nome
João
Arquivo
Codigo Descricao
![Page 150: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/150.jpg)
Sobre variáveis…
Para cada campo é criada uma variável de memória com o mesmo nome, onde os dados digitados ficam inicialmente armazenados, antes de ser efetivamente gravados no arquivo:
M->Z1_NOME M->Z1_EMAIL M->Z1_EMAIL1 M->Z1_SALDO
Estas variáveis são usadas em Validações, Gatilhos, etc.
ExistChav(“SZ1”, M->Z1_NOME, 1)
JOSE
![Page 151: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/151.jpg)
• Ver FuncMod2• Ver MarkBrow (exemplo do Baile)
Funções de tratamento de arquivos
![Page 152: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/152.jpg)
Modelo 2
Item Tipo Histórico Valor
Nome
Número
Data
En
choic
e
Variáveisde memória
GetD
ad
os
aHeader
aCols
![Page 153: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/153.jpg)
Modelo 2
ItemZ2_ITEM
20
CSZ2R
TipoZ2_TIPO
10
CSZ2R
HistóricoZ2_HIST
200
CSZ2R
ValorZ2_VALOR@E 999,999,999.99122
NSZ2R
Nome
Número
Data
En
choic
eG
etD
ad
os
aHeader
aCols
Variáveisde memória
TituloCampoPictureTamanhoDecimalValid.UsadoTipoArquivoContexto
1
2
3
1 2 3 4
1 2 3 4 5
1 2 3 4 5 6 7 8 910
01 D Deposito 10.000,00 .F.
02 S Saque 300,00 .F.
03 S Saque 2.500,00 .F.
![Page 154: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/154.jpg)
mBrowse()
Monta os parametros:
1. Variáveis de memória2. aHeader3. aCols4. Enchoice
lRet := Modelo2()
Array aRotina
lRet
.T.
nOpc3
Inclusão
Alteração
4
5Exclusão
Modelo 2
Ver 120_TranM2.prw
![Page 155: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/155.jpg)
Criação do aCols para Inclusão
Modelo 2
![Page 156: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/156.jpg)
ItemZ2_ITEM
20
CSZ2R
TipoZ2_TIPO
10
CSZ2R
HistóricoZ2_HIST
200
CSZ2R
ValorZ2_VALOR@E 999,999,999.99122
NSZ2R
aHeader
aCols
TituloCampoPictureTamanhoDecimalValid.UsadoTipoArquivoContexto
1
1 2 3 4
1 2 3 4 5
1 2 3 4 5 6 7 8 910
// Como cada elemento de aCols sempre contera um elemento a mais que o aHeader,
// adiciona em aCols um ARRAY com o "num.elementos de aHeader + 1", ou seja, 5 elementos.
AAdd(aCols, Array(Len(aHeader)+1))
Nil
4
Modelo 2 – Criação do aCols para Inclusão
Nil Nil Nil Nil
Adiciona uma linha no aCols
Array(?)Array(5)
![Page 157: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/157.jpg)
Nil Nil Nil Nil“ “ “D” “ “ 0,00
ItemZ2_ITEM
20
CSZ2R
TipoZ2_TIPO
10
CSZ2R
HistóricoZ2_HIST
200
CSZ2R
ValorZ2_VALOR@E 999,999,999.99122
NSZ2R
aHeader
aCols
TituloCampoPictureTamanhoDecimalValid.UsadoTipoArquivoContexto
1
1 2 3 4
1 2 3 4 5
1 2 3 4 5 6 7 8 910
// Preenche cada elemento desse array, de acordo com o Inicializador-Padrao do Dic.Dados.
For i := 1 To Len(aHeader)
aCols[1][i] := CriaVar(aHeader[i][2])
Next1 1
Nil
2 23 34 4
Preenche o aCols de acordo com o Inicializador-PadrãoModelo 2 – Criação do aCols para Inclusão
“Z2_ITEM”“Z2_TIPO”“Z2_HIST”“Z2_VALOR”
![Page 158: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/158.jpg)
ItemZ2_ITEM
20
CSZ2R
TipoZ2_TIPO
10
CSZ2R
HistóricoZ2_HIST
200
CSZ2R
ValorZ2_VALOR@E 999,999,999.99122
NSZ2R
aHeader
aCols
TituloCampoPictureTamanhoDecimalValid.UsadoTipoArquivoContexto
1
1 2 3 4
1 2 3 4 5
1 2 3 4 5 6 7 8 910
Nil Nil Nil Nil Nil“ “ “D” “ “ 0,00
// Inicializa a ultima coluna para o controle da GetDados: deletado ou nao.
// aCols[1][5] := .F.
aCols[1][Len(aHeader)+1] := .F.
4
.F.
Inicializa a última coluna com .F.Modelo 2 – Criação do aCols para Inclusão
![Page 159: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/159.jpg)
“ ““01“
ItemZ2_ITEM
20
CSZ2R
TipoZ2_TIPO
10
CSZ2R
HistóricoZ2_HIST
200
CSZ2R
ValorZ2_VALOR@E 999,999,999.99122
NSZ2R
aHeader
aCols
TituloCampoPictureTamanhoDecimalValid.UsadoTipoArquivoContexto
1
1 2 3 4
1 2 3 4 5
1 2 3 4 5 6 7 8 910
Nil Nil Nil Nil“D” “ “ 0,00 .F.
// Inicializa a coluna do ITEM com 01.
// aCols[1][1] := "01" <-- teria problema se o usuario alterasse a posicao do
// campo Z2_ITEM no Dic. de Dados.
aCols[1][AScan(aHeader, {|x|Trim(x[2])=="Z2_ITEM"})] := "01"
1
Inicializa a coluna do ITEM com 01Modelo 2 – Criação do aCols para Inclusão
![Page 160: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/160.jpg)
Modelo 2
Criação do aCols para Alteração
![Page 161: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/161.jpg)
M->Z2_Nome := (cAlias)->Z2_Nome
M->Z2_Numero := (cAlias)->Z2_Numero
M->Z2_Data := (cAlias)->Z2_Data
0003PEDRO
30/03/06
Modelo 2 – Criação do aCols para AlteraçãoInicializa as variáveis de memória da Enchoice
![Page 162: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/162.jpg)
dbSelectArea(cAlias)
dbSetOrder(2) // Z2_Filial + Z2_Nome + Z2_Numero + Z2_Item
dbSeek(xFilial(cAlias) + M->Z2_Nome + M->Z2_Numero)
While !EOF() .And. (cAlias)->(Z2_Filial+Z2_Numero) == xFilial(cAlias) + M->Z2_Numero
...
dbSkip()
End
M->Z2_Nome := (cAlias)->Z2_Nome
M->Z2_Numero := (cAlias)->Z2_Numero
M->Z2_Data := (cAlias)->Z2_Data
01 PEDRO 0003
Modelo 2 – Criação do aCols para AlteraçãoPosiciona no primeiro registro com o número 0003
0003PEDRO
30/03/06
“01” + “0003” “01” + “0003”“01” + “0004”
![Page 163: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/163.jpg)
ItemZ2_ITEM
20
CSZ2R
TipoZ2_TIPO
10
CSZ2R
HistóricoZ2_HIST
200
CSZ2R
ValorZ2_VALOR@E 999,999,999.99122
NSZ2R
aHeader
aCols
TituloCampoPictureTamanhoDecimalValid.UsadoTipoArquivoContexto
1
1 2 3 4
1 2 3 4 5
1 2 3 4 5 6 7 8 910
// Como cada elemento de aCols sempre contera um elemento a mais que o aHeader,
// adiciona em aCols um ARRAY com o "num.elementos de aHeader + 1", ou seja, 5 elementos.
AAdd(aCols, Array(Len(aHeader)+1))
Nil
4
Nil Nil Nil Nil
Adiciona uma linha no aColsModelo 2 – Criação do aCols para Alteração
![Page 164: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/164.jpg)
For i := 1 To Len(aHeader)
If aHeader[i][10] == "R“
aCols[nLin][i] := FieldGet(FieldPos(aHeader[i][2]))
Else
aCols[nLin][i] := CriaVar(aHeader[i][2], .T.)
EndIf
Next
Nil Nil Nil Nil
ItemZ2_ITEM
20
CSZ2R
TipoZ2_TIPO
10
CSZ2R
HistóricoZ2_HIST
200
CSZ2R
ValorZ2_VALOR@E 999,999,999.99122
NSZ2R
aHeader
aCols
TituloCampoPictureTamanhoDecimalValid.UsadoTipoArquivoContexto
1
1 2 3 4
1 2 3 4 5
1 2 3 4 5 6 7 8 910
1 1
Nil
2 23 34 4
Preenche o aCols com os dados lidos do arquivo
“Z2_ITEM”“Z2_TIPO”“Z2_HIST”“Z2_VALOR”
Modelo 2 – Criação do aCols para Alteração
4 6 7 8Z2_ITEM Z2_TIPO Z2_HISTZ2_VALOR01 D Deposito 500,0002 D Deposito 150,0003 S Saque 90,00
4678
“01“ “D” “Deposito“ 500,00
![Page 165: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/165.jpg)
ItemZ2_ITEM
20
CSZ2R
TipoZ2_TIPO
10
CSZ2R
HistóricoZ2_HIST
200
CSZ2R
ValorZ2_VALOR@E 999,999,999.99122
NSZ2R
aHeader
aCols
TituloCampoPictureTamanhoDecimalValid.UsadoTipoArquivoContexto
1
1 2 3 4
1 2 3 4 5
1 2 3 4 5 6 7 8 910
Nil
// Inicializa a ultima coluna para o controle da GetDados: deletado ou nao.
// aCols[1][5] := .F.
aCols[nLin][Len(aHeader)+1] := .F.
4
.F.
Inicializa a última coluna com .F.Modelo 2 – Criação do aCols para Alteração
“01“ “D” “Deposito“ 500,00
![Page 166: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/166.jpg)
Modelo 3
Ver 130_TranM3.prw
Diferença:
Modelo2 – Cabeçalho e Itens são o mesmo arquivo (ex.: SC7 - Ped.
Compras)A definição de quais campos ficarão no cabeçalho e
quaisficarão nos itens, é feita no programa.
Modelo3 – Cabeçalho é um arquivo (ex.: SC5 – Cabec. Ped. Vendas)
Itens é outro arquivo (ex.: SC6 – Itens do Ped. Vendas)
Similar ao Modelo2
![Page 167: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/167.jpg)
Aula 5Telas
RelatóriosReposicionamento de arquivos
Integração com ExcelSQLOOP
Arquivos TXT e XML
![Page 168: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/168.jpg)
Telas
![Page 169: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/169.jpg)
Tela
• EnchoiceBar – barra de ferramentas com os botões padrões• aButtons – acrescenta botões na EnchoiceBar• Define Font – cria uma fonte diferente da padrão• Define MSDialog – define a janela principal• Say – mostra um texto na tela (normal ou como objeto)• Get – campo para digitação (normal ou como objeto)• Radio Button• Check Box• Botões• Folder• Activate MSDialog – ativa (desenha) a tela• Hide e Show – esconde e reexibe um objeto• Mudança do texto• Exercício: colocar o foco no campo Nome depois de clicado no
botão OK oGetNome:SetFocus() Ver 131_Tela.prw
![Page 170: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/170.jpg)
RDDemo e RDDemo2 – mais componentes de tela
Tela
![Page 171: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/171.jpg)
Relatórios
![Page 172: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/172.jpg)
Relatórios
Criar um relatório pelo Assistente de Código do IDE:IDE: menu Ferramentas / Assistente de Código
Nome Data Numero Item Tipo Historico Valor
Para incluir asordens, digitar
no campo Ordeme clicar neste botão
![Page 173: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/173.jpg)
• Alterar o nome da User Function para: Rel001()
• Na função RunReport(), após a linha “nLin := nLin + 1”, que normalmente está na linha 221, incluir os comandos de impressão dos campos:
@nLin,00 PSay SZ2->Z2_Nome
@nLin,23 PSay SZ2->Z2_Data
@nLin,34 PSay SZ2->Z2_Numero
@nLin,41 PSay SZ2->Z2_Item
@nLin,46 PSay SZ2->Z2_Tipo
@nLin,50 PSay SZ2->Z2_Hist
@nLin,73 PSay SZ2->Z2_Valor Picture "@E 999,999,999.99"
• Compilar e executar
Relatórios
![Page 174: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/174.jpg)
• Arquivo SX1
• Função Pergunte(): lê as perguntas e cria as variáveis correspondentes à cada pergunta: MV_PAR01, MV_PAR02, etc. Estas variáveis são Private.
• Sintaxe: Pergunte(cPerg, lMostra)
cPerg código do grupo de perguntaslMostra .T. abre a tela de perguntas
.F. não abre a tela; apenas cria as variáveis
RelatóriosPerguntas
![Page 175: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/175.jpg)
• Abrir e compilar o programa CriaSX1.prw
• Na parte inicial do programa, antes da linha “Pergunte(cPerg, .F.)”, incluir a chamada à função u_CriaSX1(cPerg)
• Na função RunReport(), na parte da impressão dos campos, incluir a lógica para imprimir somente se o Nome e a Data estiverem dentro dos limites informados nas perguntas “Conta de”, “Conta até”, “Data de” e “Data até”
If SZ2->Z2_Nome >= mv_Par01 .And. SZ2->Z2_Nome <= mv_Par02 .And.;
SZ2->Z2_Data >= mv_Par03 .And. SZ2->Z2_Data <= mv_Par04
@nLin,00 PSay SZ2->Z2_Nome
...
EndIf
RelatóriosPerguntas
![Page 176: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/176.jpg)
• Índices permanentes são criados no Dicionário de Dados. A cada inclusão/alteração de registros, todos os índices também são atualizados.
• Por questões de performance, somente índices usados com muita freqüência deveriam ser permanentes.
• Índices usados esporadicamente, deverão ser criados como temporários por meio da função IndRegua().
• Função IndRegua(): permite criar índices temporários, inclusive com a possibilidade de estabelecer um filtro.
• Ao criar um índice temporário, os índices originais são desativados, e deverão ser reativados por meio da função RetIndex().
• O arquivo temporário deverá ser apagado pela função FErase().
RelatóriosÍndice temporário
![Page 177: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/177.jpg)
• Na função RunReport(), na linha “nOrdem := aReturn[8]”, substituir dbSetOrder(nOrdem) por:
If nOrdem < 3
dbSetOrder(nOrdem)
Else
cArqInd := CriaTrab(Nil, .F.)
cChave := "xFilial('SZ2') + DtoS(Z2_Data)" cFiltro := "Z2_Filial==xFilial('SZ2') .And. Z2_Tipo == '" + If(mv_Par05==1,"D","S") + "'"
cOrdem := " "
lMostra := .T.
IndRegua("SZ2", cArqInd, cChave, cOrdem, cFiltro, "Indexando...", lMostra)
EndIf
• No final da função, antes da linha “Return”, incluir: RetIndex("SZ2")
FErase(cArqInd + OrdBagExt())
RelatóriosÍndice temporário
![Page 178: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/178.jpg)
SetPrint() janela principal para definição das propriedades do relatório (array aReturn).
aReturn[1] = Reservado para formulárioaReturn[2] = Reservado para número de viasaReturn[3] = DestinatárioaReturn[4] = Formato: 1-Retrato, 2-PaisagemaReturn[5] = Tipo midia: 1-Disco, 2-Via spool, 3-Direto na porta, 4-EMailaReturn[6] = "NomeArq"-Disco, "LPT1"-Via spool, "LPT1"-Direto na porta, ""-
CanceladoaReturn[7] = Expressão do filtroaReturn[8] = Ordem a ser selecionada
SetDefault() prepara o ambiente de impressão de acordo com as informações contidas no array aReturn, obtidas através da função SetPrint().
Pergunte() abre a janela de perguntas.
RptStatus() executa a função de impressão, mostrando uma régua de progressão.
SetRegua() define o limite da régua de progressão criada pela função RptStatus().
IncRegua() incrementa a progressão da régua.
RelatóriosFunções usadas nos programas de relatórios
![Page 179: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/179.jpg)
Fazer um relatório com as transações de cada cliente, listando todos os dados do SZ2 e também o e_mail e o saldo atual.
SIGARPM
![Page 180: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/180.jpg)
Pontos de Entrada
Crie um Ponto de Entrada para modificar o cálculo do Saldo após um Saque, considerando apenas 60% do seu valor.
![Page 181: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/181.jpg)
Reposicionamento de Arquivos
As funções de Ponto de Entrada que despocionarem arquivos têm a responsabilidade de devolvê-los na mesma situação em que receberam.
Para tanto, estas três informações devem ser guardadas:
cAlias := Alias() Arquivo atualmente selecionadonOrdem := IndexOrd() Índice selecionadonRecno := Recno() Número do registro posicionado
Na saída, devem ser restauradas:
dbSelectArea(cAlias)
dbSetOrder(nOrdem)
dbGoTo(nRecno)
![Page 182: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/182.jpg)
Reposicionamento de Arquivos
User Function MT010Inc()
Local aAreaSA1 := SA1->(GetArea())
Local aAreaSB1 := SB1->(GetArea())
Local aAreaSC5 := SC5->(GetArea())
...
RestArea(aAreaSA1)
RestArea(aAreaSB1)
RestArea(aAreaSC5)
Return
GetArea() Guarda as três informações num arrayRestArea() Restaura
Obs.: esta regra vale para qualquer função.
![Page 183: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/183.jpg)
Integração com Excel
Ver 170_Planilha.prw
Protheus Excel
APExcel
=MSGetArray(A1;Siga("U_PLANMOV"))
Array de dadosu_PlanMov()
![Page 184: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/184.jpg)
SQL - Structured Query Language
SELECT Natureza, Data, Valor FROM Movto
SELECT MOVTO.Natureza, MOVTO.Data, MOVTO.Valor,
ORCADO.Tipo FROM MOVTO, ORCADO
SELECT * FROM Movto WHERE Valor > 100
SELECT * FROM Orcado WHERE Natureza = ‘Casa’
Outras cláusulas do SELECT: GROUP BY, ORDER BY, HAVING, AND, OR, IN, DISTINCT, BETWEEN, LIKE.
VIEW ou Visão. A View é virtual
Ver 090_DBFSQL.prwVer texto Programando SQL com RDMakeRelação de Stored Procedures no PPT Oficial
![Page 185: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/185.jpg)
MPSDU
Programa utilitário para acesso, visualização e pequenas manutenções de arquivos
Administrador
admin
MPSDU
TCP
Environment
Menu Arquivo / Abrir1
2
3
4
![Page 186: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/186.jpg)
MPSDU
![Page 187: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/187.jpg)
OOP – Programação Orientada a Objetos
• Classes• Métodos• Propriedades
Um objeto é uma instância da sua classe. Por exemplo, o botão é da classe tButton.
É criado a partir da execução do método construtor.
oBotaoOK := tButton():New()
Suas propriedades podem ser definidas ou alteradas.
oBotaoOK:cCaption := “Ok” oBotaoOK:nWidth := 50 oBotaoOK:nHeight := 15 oBotaoOK:bAction := {|| u_Grava() }
O AdvPL permite usar as classes pré-definidas ou criar novas classes, substituindo a programação baseada em comandos e funções pela orientação a objetos.
Ver 143_Objetos.prw
![Page 188: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/188.jpg)
Arquivos Texto
Ver 150_TXT.prw
O IDE possui um Assistente de Geração e Importação de arquivos texto:
IDE: menu Ferramentas / Assistente de Código
Programa TXT: gera e lê arquivos TXT.
É necessário criar, abaixo do diretório \MP_DATA, o diretório \TXT, onde será gravado o arquivo CONTAS.TXT.
SZ1JOSE 00000956000
SZ230/03/06DDeposito inicial 00001000000
SZ230/03/06SPagto. conta de luz 00000030000
SZ230/03/06SSupermercado 00000014000
SZ1MARIA 00000150000
SZ230/03/06DAbertura de conta 00000200000
SZ230/03/06SLojas Marina 00000050000
SZ1PEDRO 00000056000
SZ230/03/06DDeposito 00000050000
SZ230/03/06DDeposito 00000015000
SZ230/03/06SConta de telefone 00000009000
![Page 189: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/189.jpg)
XML
Programa XML: gera e lê arquivos XML.
Será gravado no diretório \TXT, o arquivo CONTAS.XML. Este arquivo poderá ser visualizado no Internet Explorer.
Ver 160_XML.prw
<Contas>
<Conta>
<Nome>JOSE</Nome> <Saldo>9560</Saldo>
<Transacao>
<Data>30/03/06</Data> <Tipo>D</Tipo> <Hist>Deposito inicial</Hist> <Valor>10000</Valor>
</Transacao>
<Transacao>
<Data>30/03/06</Data> <Tipo>S</Tipo> <Hist>Pagto. conta de luz</Hist> <Valor>300</Valor>
</Transacao>
</Conta>
</Contas>
![Page 190: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/190.jpg)
Aula 6Workflow
WebServicesAdvPL ASP
![Page 191: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/191.jpg)
WorkFlow
Efetuatransações
Contas
Transa-ções
Atualiza saldo
Grava transação
Saldo
Aprova ou Reprova
Cliente Aprovador
Aguardando o aprovador acessar o sistema...
Fluxo manual
![Page 192: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/192.jpg)
Efetuatransações
Contas
Transa-ções
Saldo Negativo?Dispara um WorkFlow
WFSalNeg()
WFRetorno()
Caixa de Saída
Caixa de Saída
Caixa de Entrada
Caixa de Entrada
Job WFRET
WFReturn()
Atualiza saldo
Grava transação
Saldo
E-Mai
l
Resposta
(Aprovado ou Reprovado)
Captura a resposta
Executa a funçãode retorno
Grava a resposta
(Aprovado ou Reprovado)
Cliente
Aprovador
WorkFlowFluxo automático
![Page 193: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/193.jpg)
WebServices
Via troca de arquivos
SistemaA
SistemaB
TXT/XML
Via Web Services
SistemaA W
SD
L <Nome>JOSE</Nome>
<Saldo>1000</Saldo>
SistemaB
Web S
erv
ice
http://...
Integração de sistemas
![Page 194: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/194.jpg)
O Protheus dispõe de um Assistente de Configuração:
\ERP811\BIN\REMOTE\MP8WIZARD.EXE
WebServicesConfiguração
![Page 195: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/195.jpg)
WebServicesConfiguração
WS – Protheus 8 Web Services
ws
\web\ws
ENVIRONMENT
![Page 196: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/196.jpg)
WebServicesConfiguração
localhost/ws/9901
![Page 197: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/197.jpg)
WebServicesConfiguração
![Page 198: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/198.jpg)
WebServices
[HTTP]
ENABLE=1
PORT=80
[localhost/ws/9901]
ENABLE=1
PATH=C:\ERP811\MP_Data\web\ws
ENVIRONMENT=ENVIRONMENT
INSTANCENAME=ws
RESPONSEJOB=JOB_WS_9901
DEFAULTPAGE=wsindex.apw
[JOB_WS_9901]
TYPE=WEBEX
ENVIRONMENT=ENVIRONMENT
INSTANCES=1,3
SIGAWEB=WS
INSTANCENAME=ws
ONSTART=__WSSTART
ONCONNECT=__WSCONNECT
PREPAREIN=99,01
[ONSTART]
JOBS=JOB_WS_9901
Acesso ao WebService:http://localhost/ws/9901/...
[EVIRONMENT]
SourcePath=C:\ERP811\APO
RootPath=C:\ERP811\MP_Data
StartPath=\system\
...
[EVIRONMENT1]
SourcePath=C:\ERP811\APO1
RootPath=C:\ERP811\MP_Data
StartPath=\system\
...
Emp. 99, Filial 01
[localhost/ws1/9901]
ENABLE=1
PATH=C:\ERP811\MP_Data\web\ws1
ENVIRONMENT=ENVIRONMENT1
INSTANCENAME=ws1
RESPONSEJOB=JOB_WS1_9901
DEFAULTPAGE=wsindex.apw
[JOB_WS1_9901]
TYPE=WEBEX
ENVIRONMENT=ENVIRONMENT1
INSTANCES=1,3
SIGAWEB=WS
INSTANCENAME=ws1
ONSTART=__WSSTART
ONCONNECT=__WSCONNECT
PREPAREIN=99,01
[ONSTART]
JOBS=JOB_WS_9901,JOB_WS1_9901
http://localhost/ws1/9901/...
[EVIRONMENT]
SourcePath=C:\ERP811\APO
RootPath=C:\ERP811\MP_Data
StartPath=\system\
...
[EVIRONMENT1]
SourcePath=C:\ERP811\APO1
RootPath=C:\ERP811\MP_Data
StartPath=\system\
...
Configuração – MP8SRV.INI
![Page 199: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/199.jpg)
Após a configuração, ver a lista de Web Services disponíveis no Protheus:
• Reinicializar o server• No Internet Explorer: http://localhost/ws/9901/wsindex.apw
WebServices
![Page 200: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/200.jpg)
WebService ForneceSaldo
Método BuscaSaldo Nome Saldo
http://localhost
IDE
http://localhost/FORNECESALDO.apw?WSDL
Contas
Sistema
WSDL
Cliente WSForneceSaldo
Método BuscaSaldo Nome Saldo
WebServices
![Page 201: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/201.jpg)
Saldo(cNome)oWS := WSForneceSaldo():New()oWS:BuscaSaldo(cNome)
WSDL
Cliente WSForneceSaldo
Método BuscaSaldo Nome Saldo
WebService ForneceSaldo
Método BuscaSaldo Nome Saldo
http://localhost
Nome:Saldo:
OK
ConsultaSaldo
João
1000,00
João
João
João
1000,001000,00
João
1000,00
Contas
Sistema
1000,00
Tela
WebServices
![Page 202: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/202.jpg)
Para o desenvolvimento de páginas Internet, via AdvPL ASP, é necessário configurar o módulo web Portal Protheus:
Portal ProtheusConfiguração
![Page 203: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/203.jpg)
Portal ProtheusConfiguração
PP – Portal Protheus
pp
\web\pp
ENVIRONMENT
http://localhost/ws/9901
![Page 204: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/204.jpg)
Portal ProtheusConfiguração
localhost/pp
![Page 205: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/205.jpg)
Portal ProtheusConfiguração
![Page 206: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/206.jpg)
HTML
<html>
<body>
Benvindo ao site da Empresa X
Hoje é 10/08/05
</body>
</html>
Servidor Internet
inicio.htm
Benvindo ao site da Empresa X
Hoje é 10/08/05
Browserhttp://www.empresax.com.br/inicio.htm
Página estática
Página estática (html)
![Page 207: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/207.jpg)
Servidor Internet
21/02/06
<html>
<body>
Benvindo ao site da Empresa X
Hoje é <%=Date%>
</body>
</html>
inicio.htm
HTML + ASP
Browserhttp://www.empresax.com.br/inicio.htm
Benvindo ao site da Empresa X
Hoje é 21/02/06
Página dinâmica,
com a data obtida do servidor
Página dinâmica (html + ASP)
![Page 208: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/208.jpg)
Servidor InternetProtheus
21/02/06
RPO
AdvPL ASP
User Function Inicio()
Local cHtml
WEB EXTENDED INIT cHtml
cHtml := ExecInPage(“Pagina”)
WEB EXTENDED END
Return cHtml
inicio.prw
<html>
<body>
Benvindo ao site da Empresa X
Hoje é <%=Date()%>
</body>
</html>
Pagina.aph
Browserhttp://www.empresax.com.br/u_inicio.apw
Benvindo ao site da Empresa X
Hoje é 21/02/06
Página com html + AdvPL ASP
Ver 230_ASP1.prw e 235_ASP1.aphVer 240_ASP2.prw e 245_ASP2.aphVer 250_ASP3.prw e 255_ASP3.aphVer 260_ASP4.prw e 265_ASP4.aphVer 270_ASP5.prw e 275_ASP5.aph
![Page 209: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/209.jpg)
Call Center
![Page 210: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/210.jpg)
Telnet
No MP8SRV.INI, acrescentar:
[TELNET]
Enable=1
Environment=Environment
Main=MTTRAN
Port=1024
RPO
MTTran()
Ver 330_MTTran.prw e 331_MTFunc.prw
Integração com equipamentos micro-terminais
![Page 211: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/211.jpg)
DEM
•Linguagem AdvPL•Tecnologia Protheus•Dicas e Notícias•F.A.Q.•Guias de Referência•Releases•Sistema
Documentação Eletrônica Microsiga
![Page 212: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/212.jpg)
Top Connect com SQL
![Page 213: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/213.jpg)
Duvidas
descrição da GetDados e da EnchoicePorque na U_Deleta tem parametrosQdo vai para a função Alterar a Mbrowse já jogou os cpos para a memoria. Porque precisa do nRegQdo se usa passagem por referencia. Não é o mesmo que Private/localExemplos de CodeBlock com Eval, aEval e DBEvalO que é o ultimo parametro do IndRegua (.T.). Como faz para funcionar o D de descendenteNo Modelo 2 toda vez ele lê o SX3?Como funcionar a UDC #command
![Page 214: Programação e Customizações AdvPL e Protheus. Aula 1 Evolução e Arquitetura do Sistema Arquivos Customizações Case – Sistema de Contas Correntes](https://reader035.vdocuments.pub/reader035/viewer/2022081415/552fc15f497959413d8e6601/html5/thumbnails/214.jpg)
Dicionário de Dados
Programa A Programa C
Back-Up
Segurança
Dicionário de Dados
Programa B