Olá pessoal…
Na vídeo aula de hoje, irei mostrar alguns conceitos básicos de MVC em AdvPL, e criaremos tabelas e campos que serão usadas nas próximas aulas.
Fonte de exemplo:
//Bibliotecas
#Include "Protheus.ch"
/*/{Protheus.doc} zUpdTab
Função que cria tabelas, campos e índices para utilização nos exemplos de MVC
@type function
@author Atilio
@since 23/04/2016
@version 1.0
/*/
User Function zUpdTab()
Local aArea := GetArea()
Processa( {|| fAtualiza()}, "Processando...")
RestArea(aArea)
Return
/*---------------------------------------------------------------------*
| Func: fAtualiza |
| Autor: Daniel Atilio |
| Data: 23/04/2016 |
| Desc: Função que chama as rotinas para criação |
*---------------------------------------------------------------------*/
Static Function fAtualiza()
ProcRegua(6)
//ZZ1 - Artistas
IncProc('Atualizando ZZ1 - Artistas...')
fAtuZZ1()
//ZZ2 - CDs
IncProc('Atualizando ZZ2 - CDs...')
fAtuZZ2()
//ZZ3 - Músicas do CD
IncProc('Atualizando ZZ3 - Músicas do CD...')
fAtuZZ3()
//ZZ4 - Venda de CDs
IncProc('Atualizando ZZ4 - Venda de CDs...')
fAtuZZ4()
Return
/*---------------------------------------------------------------------*
| Func: fAtuZZ1 |
| Autor: Daniel Atilio |
| Data: 23/04/2016 |
| Desc: Função que cria a tabela ZZ1 |
*---------------------------------------------------------------------*/
Static Function fAtuZZ1()
Local aSX2 := {}
Local aSX3 := {}
Local aSIX := {}
//Tabela
// 01 02 03 04 05
// Chave Descrição Modo Modo Un. Modo Emp.
aSX2 := { 'ZZ1', 'Artista', 'C', 'C', 'C'}
//Campos
// 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21
// Campo Filial? Tamanho Decimais Tipo Titulo Descrição Máscara Nível Vld.Usr Usado Ini.Padr. Cons.F3 Visual Contexto Browse Obrigat Lista.Op Mod.Edi Ini.Brow Pasta
aAdd(aSX3,{ 'ZZ1_FILIAL', .T., FWSizeFilial(), 0, 'C', "Filial", "Filial do Sistema", "", 1, "", .F., "", "", "", "", "N", .T., "", "", "", ""})
aAdd(aSX3,{ 'ZZ1_COD', .F., 06, 0, 'C', "Codigo", "Codigo Artista", "@!", 1, "", .T., "", "", "A", "R", "S", .T., "", "", "", ""})
aAdd(aSX3,{ 'ZZ1_DESC', .F., 50, 0, 'C', "Descricao", "Descricao / Nome", "@!", 1, "", .T., "", "", "A", "R", "S", .T., "", "", "", ""})
//Índices
// 01 02 03 04 05 06 07
// Índice Ordem Chave Descrição Propriedade NickName Mostr.Pesq
aAdd(aSIX,{ "ZZ1", "1", "ZZ1_FILIAL+ZZ1_COD", "Codigo", "U", "", "S"})
//Criando os dados
u_zCriaTab(aSX2, aSX3, aSIX)
Return
/*---------------------------------------------------------------------*
| Func: fAtuZZ2 |
| Autor: Daniel Atilio |
| Data: 23/04/2016 |
| Desc: Função que cria a tabela ZZ2 |
*---------------------------------------------------------------------*/
Static Function fAtuZZ2()
Local aSX2 := {}
Local aSX3 := {}
Local aSIX := {}
//Tabela
// 01 02 03 04 05
// Chave Descrição Modo Modo Un. Modo Emp.
aSX2 := { 'ZZ2', 'CDs', 'C', 'C', 'C'}
//Campos
// 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21
// Campo Filial? Tamanho Decimais Tipo Titulo Descrição Máscara Nível Vld.Usr Usado Ini.Padr. Cons.F3 Visual Contexto Browse Obrigat Lista.Op Mod.Edi Ini.Brow Pasta
aAdd(aSX3,{ 'ZZ2_FILIAL', .T., FWSizeFilial(), 0, 'C', "Filial", "Filial do Sistema", "", 1, "", .F., "", "", "", "", "N", .T., "", "", "", ""})
aAdd(aSX3,{ 'ZZ2_CODART', .F., 06, 0, 'C', "Cod. Artista", "Codigo Artista", "@!", 1, "", .T., "", "", "A", "R", "S", .T., "", "", "", ""})
aAdd(aSX3,{ 'ZZ2_CODCD', .F., 06, 0, 'C', "Cod. CD", "Codigo CD", "@!", 1, "", .T., "", "", "A", "R", "S", .T., "", "", "", ""})
aAdd(aSX3,{ 'ZZ2_DESC', .F., 50, 0, 'C', "Descricao", "Descricao / Nome", "@!", 1, "", .T., "", "", "A", "R", "S", .T., "", "", "", ""})
aAdd(aSX3,{ 'ZZ2_PRECO', .F., 06, 2, 'N', "Preco", "Preco", "@E 999.99", 1, "", .T., "", "", "A", "R", "S", .T., "", "", "", ""})
//Índices
// 01 02 03 04 05 06 07
// Índice Ordem Chave Descrição Propriedade NickName Mostr.Pesq
aAdd(aSIX,{ "ZZ2", "1", "ZZ2_FILIAL+ZZ2_CODCD", "Codigo CD", "U", "", "S"})
aAdd(aSIX,{ "ZZ2", "2", "ZZ2_FILIAL+ZZ2_CODART+ZZ2_CODCD", "Codigo Artista + Codigo CD", "U", "", "S"})
//Criando os dados
u_zCriaTab(aSX2, aSX3, aSIX)
Return
/*---------------------------------------------------------------------*
| Func: fAtuZZ3 |
| Autor: Daniel Atilio |
| Data: 23/04/2016 |
| Desc: Função que cria a tabela ZZ3 |
*---------------------------------------------------------------------*/
Static Function fAtuZZ3()
Local aSX2 := {}
Local aSX3 := {}
Local aSIX := {}
//Tabela
// 01 02 03 04 05
// Chave Descrição Modo Modo Un. Modo Emp.
aSX2 := { 'ZZ3', 'Musicas do CD', 'C', 'C', 'C'}
//Campos
// 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21
// Campo Filial? Tamanho Decimais Tipo Titulo Descrição Máscara Nível Vld.Usr Usado Ini.Padr. Cons.F3 Visual Contexto Browse Obrigat Lista.Op Mod.Edi Ini.Brow Pasta
aAdd(aSX3,{ 'ZZ3_FILIAL', .T., FWSizeFilial(), 0, 'C', "Filial", "Filial do Sistema", "", 1, "", .F., "", "", "", "", "N", .T., "", "", "", ""})
aAdd(aSX3,{ 'ZZ3_CODART', .F., 06, 0, 'C', "Cod. Artista", "Codigo Artista", "@!", 1, "", .T., "", "", "A", "R", "S", .T., "", "", "", ""})
aAdd(aSX3,{ 'ZZ3_CODCD', .F., 06, 0, 'C', "Cod. CD", "Codigo CD", "@!", 1, "", .T., "", "", "A", "R", "S", .T., "", "", "", ""})
aAdd(aSX3,{ 'ZZ3_CODMUS', .F., 06, 0, 'C', "Cod. Musica", "Codigo Musica", "@!", 1, "", .T., "", "", "A", "R", "S", .T., "", "", "", ""})
aAdd(aSX3,{ 'ZZ3_DESC', .F., 50, 0, 'C', "Descricao", "Descricao / Nome", "@!", 1, "", .T., "", "", "A", "R", "S", .T., "", "", "", ""})
//Índices
// 01 02 03 04 05 06 07
// Índice Ordem Chave Descrição Propriedade NickName Mostr.Pesq
aAdd(aSIX,{ "ZZ3", "1", "ZZ3_FILIAL+ZZ3_CODCD+ZZ3_CODMUS", "Codigo CD + Codigo Musica", "U", "", "S"})
aAdd(aSIX,{ "ZZ3", "2", "ZZ3_FILIAL+ZZ3_CODART+ZZ3_CODCD+ZZ3_CODMUS", "Codigo Artista + Codigo CD + Codigo Musica", "U", "", "S"})
//Criando os dados
u_zCriaTab(aSX2, aSX3, aSIX)
Return
/*---------------------------------------------------------------------*
| Func: fAtuZZ4 |
| Autor: Daniel Atilio |
| Data: 23/04/2016 |
| Desc: Função que cria a tabela ZZ4 |
*---------------------------------------------------------------------*/
Static Function fAtuZZ4()
Local aSX2 := {}
Local aSX3 := {}
Local aSIX := {}
//Tabela
// 01 02 03 04 05
// Chave Descrição Modo Modo Un. Modo Emp.
aSX2 := { 'ZZ4', 'Vendas dos CDs', 'C', 'C', 'C'}
//Campos
// 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21
// Campo Filial? Tamanho Decimais Tipo Titulo Descrição Máscara Nível Vld.Usr Usado Ini.Padr. Cons.F3 Visual Contexto Browse Obrigat Lista.Op Mod.Edi Ini.Brow Pasta
aAdd(aSX3,{ 'ZZ4_FILIAL', .T., FWSizeFilial(), 0, 'C', "Filial", "Filial do Sistema", "", 1, "", .F., "", "", "", "", "N", .T., "", "", "", ""})
aAdd(aSX3,{ 'ZZ4_CODVEN', .F., 06, 0, 'C', "Codigo", "Codigo Venda", "@!", 1, "", .T., "", "", "A", "R", "S", .T., "", "", "", ""})
aAdd(aSX3,{ 'ZZ4_DESC', .F., 50, 0, 'C', "Descricao", "Descricao / Nome", "@!", 1, "", .T., "", "", "A", "R", "S", .T., "", "", "", ""})
aAdd(aSX3,{ 'ZZ4_CODCD', .F., 06, 0, 'C', "Codigo CD", "Codigo do CD", "@!", 1, "", .T., "", "", "A", "R", "S", .T., "", "", "", ""})
aAdd(aSX3,{ 'ZZ2_QUANT', .F., 03, 0, 'N', "Quantidade", "Quantidade", "@E 999", 1, "", .T., "", "", "A", "R", "S", .T., "", "", "", ""})
aAdd(aSX3,{ 'ZZ2_PRECO', .F., 06, 2, 'N', "Preco", "Preco", "@E 999.99", 1, "", .T., "", "", "A", "R", "S", .T., "", "", "", ""})
aAdd(aSX3,{ 'ZZ2_TOTAL', .F., 08, 2, 'N', "Total", "Total", "@E 99,999.99", 1, "", .T., "", "", "A", "R", "S", .T., "", "", "", ""})
//Índices
// 01 02 03 04 05 06 07
// Índice Ordem Chave Descrição Propriedade NickName Mostr.Pesq
aAdd(aSIX,{ "ZZ4", "1", "ZZ4_FILIAL+ZZ4_CODVEN", "Codigo", "U", "", "S"})
//Criando os dados
u_zCriaTab(aSX2, aSX3, aSIX)
Return
Se quiser fazer o download desse código ou do conteúdo mostrado na vídeo aula, acesse nosso GitHub pelo link github.com/dan-atilio/AdvPL (Exemplos > Vídeo Aulas > 017 – MVC).
Link que contém o fonte para criação das tabelas: Clique Aqui
Bom pessoal, por hoje é só.
Abraços e até a próxima.
Olá Daniel tudo bem ?,
Primeiramente parabéns pela qualidade das aulas, estou aprendendo muito com elas.
Gostaria de saber se há previsão para a publicação de novos videos de serie MVC, no final da aula 017 fiquei com a impressão de que a sequencia, será um projeto com MVC, seria isso mesmo ?.
Boa tarde Edson, tudo bem?
Muito obrigado.
Sim, a sequência serão novas aulas em MVC, por exemplo, a Aula 018 é um cadastro simples em MVC, é acabei ficando enrolado com uns projetos, e não tive tempo de montar, mas irei postar sim.
Um grande abraço.
Se tiver sugestões, pode entrar em contato.