Академический Документы
Профессиональный Документы
Культура Документы
Arquitetura Protheus
Arquitetura Protheus
ndice
I)
II)
III)
IV)
Arquitetura
Estruturas de Dados e Metadados
O que o AdvPL (Noes)
Criao de um Ambiente ( Prtica )
Arquitetura
Arquitetura Protheus
Arquitetura
Arquitetura Protheus
Arquitetura
Windows
Linux
Browser
Windows
Linux
Unix
Windows
Linux
Unix
Smart Client
(SmartClient.exe)
RPO (TTTP110.RPO)
DBF/CTREE
Client WEB
(ActiveX)
Application Server
(AppServer.exe)
Monitor
(Monitor.exe)
Client
(Smart Client)
Application
Server
DBAccess
Database
Server
Arquitetura Protheus
Arquitetura
Programa-fonte
APPLICATION
SERVER
SMARTCLIENT
MATA010
. . .
dbSelectArea(SB1)
RecLock(SB1, .T.)
SB1->B1_COD := 000001
SB1->B1_DESC := Produto A
MSUnlock()
APO
MATA010
Cad.Produtos
. . .
RPO
MATA010
MATA410
Executa
MATA010
Executa
MATA410
CTBR040
Ped.Vendas
Executa
CTBR040
Balancete Cont.
6
Arquitetura Protheus
Arquitetura
Executveis
Arquitetura Protheus
Arquitetura
RPO
BUILD
Patch
LIB
Executveis e DLLs
Atualizaes do RPO
Conjunto de classes/funes (programas) referentes ao
Framework
Arquitetura Protheus
Arquitetura
\TDE\ADVPL
ERP11
APO (RPO)
BIN
APPSERVER (executveis)
SMARTCLIENT (executveis)
INCLUDE (arquivos .CH)
PROTHEUS_DATA
Arquitetura Protheus
Aplication Server
Destino:
c:\tde\advpl\erp110\bin\appserver\AppServer.exe console
Iniciar em: c:\tde\advpl\erp110\bin\appserver
Arquitetura Protheus
Smart Client
Destino:
c:\tde\advpl\erp110\bin\smartclient\SmartClient.exe
Iniciar em: c:\tde\advpl\erp110\bin\smartclient
Arquitetura Protheus
Ambiente
Localizao
dos arquivos
RPO
Arqs. do Sistema
Arqs. Dados do Usurio
Base de Dados
Lngua
Portugus
Spanish
English
DBF
ADS
CTree
SQL
Comunicao
Tipo de Comunicao
TCP-IP
Endereo do Servidor
Porta
12
Arquitetura Protheus
Arquitetura
APPSERVER.INI
[Environment]
SourcePath=C:\ERP101\APO
RootPath=C:\ERP101\Protheus_Data
StartPath=\system\
RpoDb=TOP
RpoLanguage=portuguese
RpoVersion=110
LocalFiles=ads
localdbextension=.dbf
PictFormat=DEFAULT (ou AMERICAN)
DateFormat=DEFAULT (ou AMERICAN)
ERP110
APO TTTP110.RPO
BIN
APPSERVER
SMARTCLIENT
INCLUDE
PROTHEUS_DATA
DATA
[DBACCESS]
SPOOL
SERVER=127.0.0.1
PORT=7890
DATABASE=POSTGRES
ALIAS=ADVPL
SYSTEM
SYSTEMLOAD
MY PROJECTS
[Drivers]
Active=TCP
[TCP]
TYPE=TCPIP
Port=1234
13
[TOTVSDBACCESS]
SERVER=192.16.0.2
PORT=7890
DATABASE=POSTGRES
ALIAS=ADVPL
MEMOMEGA=1
Application Server
Protheus
IP 192.16.0.1
Porta 1234
DataBase Server
DbAccess
IP 192.16.0.2
Porta 7890
[Drivers]
Active=TCP
[TCP]
TYPE=TCPIP
Port=1234
14
Application Server
Protheus
IP 192.16.0.1
Porta 1234
DataBase Server
DbAccess
IP 192.16.0.2
Porta 7890
[TOTVSDBACCESS]
SERVER=192.16.0.2
PORT=7890
DATABASE=POSTGRES
ALIAS=ADVPL
MEMOMEGA=1
15
Arquitetura Protheus
Arquitetura
APPSERVER.INI
Usurio Brasileiro
EnvPOR
Usurio Argentino
EnvSPA
[EnvPOR]
SourcePath=C:\ERP110\APO
RootPath=C:\ERP110\Protheus_Data
StartPath=\system\
RpoDb=TOP
RpoLanguage=portuguese
RpoVersion=110
LocalFiles=ads
localdbextension=.dbf
PictFormat=DEFAULT
DateFormat=DEFAULT
[EnvSPA]
SourcePath=C:\ERP110\APO
RootPath=C:\ERP110\Protheus_Data
StartPath=\system\
RpoDb=TOP
RpoLanguage=spanish
RpoVersion=110
LocalFiles=ads
localdbextension=.dbf
PictFormat=DEFAULT
DateFormat=DEFAULT
ERP110
TTTP110.RPO
APO TTTS110.RPO
BIN
APPSERVER
SMARTCLIENT
INCLUDE
PROTHEUS_DATA
DATA
SPOOL
SYSTEM
SYSTEMLOAD
MY PROJECTS
16
Arquitetura Protheus
Arquitetura
SMARTCLIENT.INI
[Config]
LastMainProg=sigamdi
[Drivers]
Active=TCP
[TCP]
Server=localhost
Port=1234
17
Arquitetura Protheus
Arquitetura
Application Server
ou
Application Server
Smart Client
Smart Client
Smart Client
Smart Client
18
Arquitetura Protheus
Arquitetura Simplificada
SmartClient
Application
Server
License
Server
Ctree Server
DBAccess
Banco de
Dados
19
Arquitetura Protheus
Arquitetura com Balance
SmartClient
Balance
Slaves
License
Server
Ctree Server
DBAccess
Banco de
Dados
20
Arquitetura Protheus
HardlLock
21
Estruturas de Dados e
Metadados
Arquitetura Protheus
Estruturas de Dados e Metadados
Arquivo
SX1
SX2
SX3
SX4
SX5
SX6
SX7
SX9
SXA
SXB
SXD
SXE
SXF
SXG
SXK
SXO
SIX
.XNU
Descrio
Perguntas e Respostas
Mapeamento de Tabelas
Dicionrio de Dados
Agenda do Schedule de Processos
Tabelas
Parmetros
Gatilhos
Relacionamento entre Tabelas
Pastas Cadastrais apontadas no SX3
Consulta por meio da tecla F3 (Consulta Padro)
Controle do Schedule de Processos
Seqncia de Documentos (+1)
Seqncia de Documentos (prximo)
Tamanho padro para campos
Respostas das Perguntas (SX1) por Usurio
Controle de LOGs por Tabela
ndices dos Arquivos
Menu de Opes dos Mdulos
23
Arquitetura Protheus
Estruturas de Dados e Metadados
SA
SB
SC
SD
SE
SF
SG
SH
CT
SJ
SM
SN
- Cadastros
- Estoques
- Previses de E/S
- Mov. De Estoque
- Financeiro
- Fiscal
- Estruturas
- Carga de Mquina
- Contbil
- Estatsticas
- Miscelneas
- Ativo Fixo
SO - Assist. Tcnica
SP - Ponto Eletrnico
SQ - Recr. e Seleo
SR - Folha de Pagto
ST - Manut. Industrial
SU - Telemarketing
SV - Concessionrias
SW e SY - Export./Import.
Q? - Qualidade (Celerina)
R? - Recursos Humanos
P? - Projetos Especiais
SZ? e Z?? - Livres
Arquitetura Protheus
Estruturas de Dados e Metadados
Empresa 02
Filiais 01
02
..
.
99
Empresa 99
Filial
01
SA1010
SA2010
SB1010
...
SA1020
SA2020
SB1020
...
SA1990
SA2990
SB1990
...
SXXnn0 onde:
XX = Prefixo do arquivo
nn = Empresa
25
Arquitetura Protheus
Estruturas de Dados e Metadados
CAMPO1
CAMPO2
CAMPO3
01
01
01
Registro da Filial 01
Registro da Filial 01
Registro da Filial 01
02
02
02
...
Registro da Filial 02
Registro da Filial 02
Registro da Filial 02
...
...
Todo arquivo, exceto SM2 (Moedas), tem um campo que identifica a Filial nos
registros.
26
Arquitetura Protheus
Nomenclatura de Campos
Arquivo:
SA1
A1_FILIAL
A1_COD
A1_NOME
A1_END
SA2
A2_FILIAL
A2_COD
A2_NOME
A2_END
SB1
B1_FILIAL
B1_COD
B1_DESC
B1_TIPO
QA1
QA1_FILIAL
QA1_COD
QA1_DESC
27
Arquitetura Protheus
Modo de Acesso
Modo de Acesso
Compartilhado
Empresa 01
Filiais
01
A1_COD
A1_NOME
000015
000016
000001
000020
000007
C5_NUM
C5_EMISSAO
C5_CLIENTE
C5_PROD
C5_VALOR
02
01
01
01
000001
000005
000007
01/01/04
01/01/04
20/01/04
000002
000023
000016
1111014
1313000
1515140
15.000,00
5.600,00
5.600,00
03
02
02
02
000001
000005
000007
01/01/04
01/01/04
20/01/04
000002
000023
000016
1111014
1313000
1515140
15.000,00
5.600,00
5.600,00
03
03
03
000001
000005
000007
01/01/04
01/01/04
20/01/04
000002
000023
000016
1111014
1313000
1515140
15.000,00
5.600,00
5.600,00
28
Arquitetura Protheus
Modo de Acesso
Compartilhado
A1_Filial
A1_Cod
000001
A1_Nome
JOS
Empresa XX
Filiais
01
02
Exclusivo
A1_Filial
01
A1_Cod
000001
A1_Nome
JOS
02
000001
JOS
A1_FILIAL := xFilial(SA1)
ou 01 ou
02...
29
Arquitetura Protheus
ndice
ndice Primrio
FILIAL+CODIGO
000001
000002
000007
000008
000015
000016
000019
000020
000023
000024
000026
000027
000028
000030
000033
RECNO
RECNO
03
09
05
07
01
02
13
04
08
06
10
11
12
15
14
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
de chave duplicada
A1_FILIAL
A1_COD
A1_NOME
000015
000016
000001
000020
000007
000024
000008
000023
000002
000026
000027
000028
000019
000033
000030
Arquitetura Protheus
ndice
Demais ndices: ordenao de registros
1
FILIAL+CODIGO RECNO
000001
000002
000007
000008
000015
000016
000019
000020
000023
000024
000026
000027
000028
000030
000033
03
09
05
07
01
02
13
04
08
06
10
11
12
15
14
FILIAL+NOME
ACTIONVEA..
ARMANDO J..
CLIENTE P..
COMERCIO ..
DESPACHAN..
ECOSSISTE..
FABRICA D..
FLORICULT..
IMPORTADO..
JOAO DA S..
JOAO DE A..
PREFEITUR..
REIZA KER..
STARMEAL ..
TEX MALHA..
EOF() .T.
RECNO
RECNO
RECNO A1_FILIAL
A1_COD
10
04
03
05
14
09
01
07
15
06
13
08
12
11
02
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
Leitura
A1_COD
A1_NOME A1_NOME
000015
FABRICA DE TINTAS E
000016
TEX MALHAS E CONFECC
000001
CLIENTE PADRAO
000020
ARMANDO JOSE FLORES
000007
COMERCIO SOM DO MUND
000024
JOAO DA SILVA
000008
FLORICULTURA FULO DE
000023
PREFEITURA MUNICIPAL
000002
ECOSSISTEMA DIGITAL
000026
ACTIONVEA IMP. EXP.
000027
STARMEAL LEAK S.A.
000028
REIZA KERN IMP. EXP.
sequencial:
em
ordem
NomeSILV
000019
JOAO
DE de
ALMEIDA
000033
DESPACHANTE
dbSetOrder(2)
000030
IMPORTADOR EUA
dbGoTop()
While !Eof()
...
dbSkip()
End
31
O que o AdvPL ?
Arquitetura Protheus
Variveis de Memria
Cadastro
Nome:
Jos
Memria
Nome
Jos
Valor
1000
A1_NOME
Jos
D2_VALOR
1000
CPU
33
Arquitetura Protheus
Notao Hngara
1
cTexto :=
Casa
Caractere (string) Casa
Numrico
1234.56
nValor := 1234.56
Data
dData := CtoD(25/10/08)
CtoD(25/10/08)
Lgico
.T.
.F.
lOk :=
.T.
Array
{Joo,
Maria}
aNomes :=Pedro,
{Joo,Pedro,Maria}
Bloco de Cdigo
{||
5 +
} 5 + 10 }
bSoma
:=10
{||
Nulo
Nil
x := Nil
34
Arquitetura Protheus
Tipagem da Varivel
n X := 1
nX
X numrico
numrico
c X := Jos
X agora
cX caracter
caracter
n X := n X + 1
Operao
ERRO
matemtica
!
35
Arquitetura Protheus
Estruturas de Dados e Metadados
Exemplo:
cNome := Jose
nValor := 1000
dData := CtoD(25/10/08)
x := Nil
ValType(cNome)
ValType(nValor)
ValType(dData)
ValType(x)
C
N
D
U
36
Arquitetura Protheus
Array
:=
:=
:=
:=
Memria
Joao
Alberto
Pedro
Maria
cNome1
Joao
cNome2
Alberto
cNome3
cNome4
Pedro
Maria
aNomes
Joao
Alberto
Pedro
Maria
aNomes[1]
aNomes[2]
aNomes[3]
aNomes[4]
1
elemento
2
elemento
3
elemento
4
elemento
37
Arquitetura Protheus
O que o AdvPL ?
Variveis
Armrio 1
Armrio 2
Armrio 3
Armrio 4
Joao
Alberto
Pedro
Maria
Array
Armrio
Gaveta 1
Gaveta 2
Gaveta 3
Gaveta 4
Joao
Alberto
Pedro
Maria
38
Arquitetura Protheus
O que o AdvPL ?
{{Joao,25,.T.},
aMatriz[1][1]
aMatriz[1]
aMatriz[1][2]
aMatriz[1][3]
aMatriz[2]
aMatriz[2][1]
aMatriz[2][2]
aMatriz[2][3]
aMatriz := {{Joao
,
{Alberto,
{Pedro ,
{Maria ,
25,
18,
40,
33,
.T.},;
.F.},;
.T.},;
.F.}}
39
Arquitetura Protheus
O que o AdvPL ?
aMatriz := {{Joao
,
{Alberto,
{Pedro ,
{Maria ,
Gaveta 1
1
Joao
.T.},;
.F.},;
.T.},;
.F.}}
Gaveta 2
3
25
25,
18,
40,
33,
1
T
Alberto
Gaveta 1
Gaveta 3
3
18
1
F
Pedro
Gaveta 2
Gaveta 4
1
3
40
Maria
Gaveta 3
3
33
Gaveta 4
Joao
Alberto
Pedro
Maria
25
18
40
33
40
Arquitetura Protheus
O que o AdvPL ?
aNomes
:= {} {Joao,25,.T.})
AAdd(aMatriz,
While
!EOF() {Alberto,18,.F.})
AAdd(aMatriz,
AAdd(aNomes,{Pedro,40,.T.})
A1_Nome)
AAdd(aMatriz,
dbSkip()
AAdd(aMatriz,
{Maria,33,.F.})
End
aMatriz: {{Joao,25,.T.}, {Alberto,18,.F.}, {Pedro,40,.T.}, {Maria,33,.F.}}
41
Arquitetura Protheus
O que o AdvPL ?
42
Arquitetura Protheus
O que o AdvPL ?
a1
a2
a1
a2 := AClone(a1)
a2[1] := Pedro
a2
a2 := a1
a2[1] := Pedro
43
Arquitetura Protheus
O que o AdvPL ?
Function
PRW
Function
Local
Private
Public
Static
Function
Function
44
Arquitetura Protheus
O que o AdvPL ?
Local
Visvel somente na funo em que foi criada.
Private
Visvel na funo em que foi criada e nas funes seguintes.
Public
Visvel em todas as funes, a partir do momento em que foi criada.
Static
-Visvel somente no programa (PRW);
-Pode ser declarada fora da funo;
- criada na chamada de qualquer funo dentro do PRW.
45
Arquitetura Protheus
O que o AdvPL ?
User Function Func1()
Local cVar := "Func1"
LOCAL
Contedo
PRIVATE
Contedo
PUBLIC
Contedo
u_Func2()
Return
46
Arquitetura Protheus
O que o AdvPL ?
User Function Func1()
Local cVar := "Func1"
u_Func2()
LOCAL
Contedo
cVar
Func1
PRIVATE
Contedo
PUBLIC
Contedo
Return
Arquitetura Protheus
O que o AdvPL ?
User Function Func1()
Local cVar := "Func1"
LOCAL
Contedo
u_Func2()
cVar
cVar1
Func2
Func2
PRIVATE
Contedo
cVar2
Private Func2
PUBLIC
Contedo
cVar3
Public Func2
Return
48
Arquitetura Protheus
O que o AdvPL ?
User Function Func1()
Local cVar := "Func1"
LOCAL
Contedo
PRIVATE
Contedo
cVar2
ABC
PUBLIC
Contedo
cVar3
Public Func2
u_Func2()
Return
49
Arquitetura Protheus
O que o AdvPL ?
User Function Func1()
Local cVar := "Func1"
LOCAL
Contedo
u_Func2()
cVar
cVar1
Func2
Func2
PRIVATE
Contedo
cVar2
ABC
PUBLIC
Contedo
cVar3
Public Func2
Return
50
Arquitetura Protheus
O que o AdvPL ?
User Function Func1()
Local cVar := "Func1"
u_Func2()
LOCAL
Contedo
cVar
Func1
PRIVATE
Contedo
PUBLIC
Contedo
cVar3
Public Func2
Return
51
Arquitetura Protheus
Funes
Programa.PRW
User Function Soma()
RPO
Local nX := 5
Local nY := 10
u_Soma
MsgAlert(nX + nY)
Return
Arquitetura Protheus
Funes
Comandos
If CGC(cCGC)
continua
Else
abandona
EndIf
Comandos
Comandos
Comandos
Comandos
Comandos
Comandos
If CGC(cCGC)
continua
Else
abandona
EndIf
Comandos
Return
Return
Function CGC(cCGC)
.T. ou .F.
.T. ou .F.
If cCGC OK
lOK := .T.
Else
lOK := .F.
EndIf
Return lOK
53
Arquitetura Protheus
Funes
CAD1.PRW
CAD2.PRW
GENERICAS.PRW
Function CGC(cCGC)
If CGC(cCGC)
...
Else
...
EndIf
If CGC(cCGC)
...
Else
...
EndIf
Grava()
Grava()
Return
If cCGC OK
lOK := .T.
Else
lOK := .F.
EndIf
Return lOK
Return
CAD3.PRW
Static Function Grava()
...
Return
Function
User Function
Static Function
desenvolvimento Totvs
desenvolvimento Usurio
desenvolvimento Totvs/Usurio
54
Arquitetura Protheus
Funes
So criadas
variveis
LOCAIS
Return nICMS
55
Arquitetura Protheus
Funes
cRegiao
nValor
nAliquota
nICMS
cRegiao
:=
nValor
:=
nAliquota :=
nAliquota
nICMS
:=
NORDESTE
NORDESTE
1000
1000
18 7
u_ICMS(cRegiao, nValor, @nAliquota)
nAliquota
Antes:
18
Depois:
MsgInfo(nAliquota)
Return
User Function ICMS(cReg, nVal, nAliq)
If cReg == "NORDESTE
nAliq := 7
EndIf
Return nVal * nAliq / 100
56
Arquitetura Protheus
Bloco de Cdigo
dbSelectArea("SB1")
dbGoTop()
While !SB1->(Eof())
RecLock("SB1")
SB1->B1_Prv1 := SB1->B1_Prv1 * 1.25
MSUnlock()
SB1->(dbSkip())
End
Frmula fixada no
cdigo-fonte
MsgInfo("Terminou!")
Return
57
Arquitetura Protheus
Bloco de Cdigo
User Function Reajuste()
Local cFormula
dbSelectArea("SM4")
Arquivo SM4 - Frmulas
dbSetOrder(1)
M4_FILIAL: 01
If dbSeek(xFilial("SM4") + "001")
M4_CODIGO: 001
cFormula :=SB1->B1_Prv1
SM4->M4_Formula
* 1.25 M4_FORMULA: SB1->B1_Prv1
dbSelectArea("SB1")
dbGoTop()
While !SB1->(Eof())
RecLock("SB1")
SB1->B1_Prv1 := SB1->B1_Prv1
&(cFormula) * 1.25
&(SB1->B1_Prv1
* 1.25)
MSUnlock()
SB1->(dbSkip())
End
MsgInfo("Terminou!")
Else
MsgAlert(Frmula no cadastrada!)
EndIf
Return
* 1.25
58
Arquitetura Protheus
Bloco de Cdigo
nResult = 20
bBloco := {|x| x * 2}
nResult := EVal(bBloco, 5)
nResult = 10
bBloco := {|x,y| x * y}
nResult := EVal(bBloco, 5, 2)
nResult = 10
59
Arquitetura Protheus
Bloco de Cdigo
DBEval()
60
Arquitetura Protheus
Bloco de Cdigo
aMatriz := { {Joao
,15} , {Pedro
{Alberto,20}
,10}, {Maria
,10} ,{Pedro
{Alberto,20}
,30} }
.F.
.T.
61
Arquitetura Protheus
Bloco de Cdigo
{Joao
aMatriz := { {Pedro
,15} , {Joao
{Pedro
,10}
,30} }
.T.
.F.
62
Arquitetura Protheus
Bloco de Cdigo
aMatriz := { {Pedro
,10} , {Joao
,30} }
.T.
63
Arquitetura Protheus
Semforo
Semforo
Obtem o prximo nmero
Confirma o nmero
Reutiliza o nmero
Confirma se o nmero est mesmo disponvel
Manuteno do SXE/SXF ou Hardlock
GetSXENum(Alias, Campo)
ConfirmSX8()
RollBackSX8()
MayIUseCode(Alias)
APCFG110
Exemplo:
GetSXENum
ConfirmSX8
GetSXENum
ConfirmSX8
001
003
002
004
GetSXENum
RollBackSX8
003
006
GetSXENum
RollBackSX8
GetSXENum
ConfirmSX8
004
007
005
008
Criao de um Ambiente
Arquitetura Protheus
Pastas
Repositrio D-1: Repositrio com as ultimas verses dos fontes aprovados pelo SQA
\\ 172.16.103.229\d-1
Pasta Temp: Pasta com o ltimo dicionrio gerado pelo ATUSX. Somente sero
gerados campos aprovados pelo DBA e pelo lder do desenvolvimento
\\SSIMSLV-03\temp
Espelho do Portal: Pasta de rede com os arquivos que esto no portal do cliente
\\ 172.16.103.229\espelho-portal
66
Arquitetura Protheus
Montagem de Ambiente - Prtica
67
Ttulo da Apresentao
Questes
Palestrante
Departamento
e-mail@totvs.com.br
68