Alguém tem um exemplo de rotina em MVC que monta tela com dados de outra database que não é a do Protheus? Poderia me enviar?
Alguém tem um exemplo de rotina em MVC que monta tela com dados de outra database que não é a do Protheus? Poderia me enviar?
#INCLUDE 'PROTHEUS.CH'
#INCLUDE 'FWMVCDEF.CH'
/*
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
±±ºFuncao ³LOGWAMAS ºAutor ³Microsiga º Data ³ 05/09/10 º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDesc. ³Esta rotina tem o objetivo de permitir a inclusão, alteração, º±±
±±º ³exclusão e efetivação uma publicação de preços º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºUso ³SigaFat º±±
±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
*/
User Function LOGWAMAS_MVC()
Local aCoors := FWGetDialogSize( oMainWnd )
Local oPanelUp
Local oFWLayer
Local oPanelLeft
Local oPanelRight
Local oBrowseUp
Local oBrowseLeft
Local oBrowseRight
Local oRelacTRB2 //ITENS PEDIDOS
Local oRelacTRB3 // MENSAGENS CONFIRMAÇÃO
Local oDlgPrinc
Local aFields := {}
Private aRotina := MenuDef()
Private cAlias := "TRB1"
Private oTempTable
Private c2Alias := "TRB2"
Private o2TempTable
Private c3Alias := "TRB3"
Private o3TempTable
LoadTRB1()
aBrowse := {}
aAdd(aBrowse, {"Chave NFE", "INVOICE", "C", 044, 0, ""})
aAdd(aBrowse, {"InterId", "INTERID1", "C", 030, 0, ""})
aAdd(aBrowse, {"Data Envio", "DATAINF", "D", 008, 0, ""})
Define MsDialog oDlgPrinc Title 'LOG WAMAS NOTA DE ENTRADA' From aCoors[1], aCoors[2] To aCoors[3], aCoors[4] Pixel
//
// Cria o conteiner onde serão colocados os browses
//
oFWLayer := FWLayer():New()
oFWLayer:Init( oDlgPrinc, .F., .T. )
//
// Define Painel Superior
//
oFWLayer:AddLine( 'UP', 30, .F. ) // Cria uma "linha" com 50% da tela
oFWLayer:AddCollumn( 'ALL', 100, .T., 'UP' ) // Na "linha" criada eu crio uma coluna com 100% da tamanho dela
oPanelUp := oFWLayer:GetColPanel( 'ALL', 'UP' ) // Pego o objeto desse pedaço do container
//
// Painel Inferior
//
oFWLayer:AddLine( 'DOWN', 70, .F. ) // Cria uma "linha" com 50% da tela
oFWLayer:AddCollumn( 'LEFT' , 50, .T., 'DOWN' ) // Na "linha" criada eu crio uma coluna com 50% da tamanho dela
oFWLayer:AddCollumn( 'RIGHT', 50, .T., 'DOWN' ) // Na "linha" criada eu crio uma coluna com 50% da tamanho dela
oPanelLeft := oFWLayer:GetColPanel( 'LEFT' , 'DOWN' ) // Pego o objeto do pedaço esquerdo
oPanelRight := oFWLayer:GetColPanel( 'RIGHT', 'DOWN' ) // Pego o objeto do pedaço direito
//
// FWmBrowse Superior INTERCHANGE
//
oBrowseUp:= FWmBrowse():New()
oBrowseUp:SetOwner( oPanelUp ) // Aqui se associa o browse ao componente de tela
oBrowseUp:SetDescription( "Identificação" )
oBrowseUp:SetAlias( cAlias )
oBrowseUp:SetTemporary(.T.)
oBrowseUp:SetFields(aBrowse)
// oBrowseUp:SetMenuDef( 'MVCLOGWAMAS' ) // Define de onde virao os botoes deste browse
oBrowseUp:SetProfileID( '1' ) // identificador (ID) para o Browse
oBrowseUp:ForceQuitButton() // Força exibição do botão Sair
oBrowseUp:DisableDetails()
oBrowseUp:Activate()
//LADO ESQUERDO
a2Browse := {}
aAdd(a2Browse, {"InterId", "INTERID2", "C", 030, 0, ""})
aAdd(a2Browse, {"Produto", "SKU", "C", 031, 0, ""})
aAdd(a2Browse, {"Quantidade", "QTDE", "N", 004, 0, ""})
oBrowseLeft:= FWMBrowse():New()
oBrowseLeft:SetOwner( oPanelLeft )
oBrowseLeft:SetDescription( 'Itens Notas' )
oBrowseLeft:DisableDetails()
oBrowseLeft:SetAlias( c2Alias )
oBrowseLeft:SetTemporary(.T.)
oBrowseLeft:SetFields(a2Browse)
oBrowseLeft:SetProfileID( '2' )
oBrowseLeft:AddLegend( "Left(INTERID2,1) == 'C'", "RED", "Cancelado" )
oBrowseLeft:AddLegend( "Left(INTERID2,1) # 'C'", "GREEN" , "Envio" )
oBrowseLeft:Activate()
//TERCEIRA DIREITO
a3Browse := {}
aAdd(a3Browse, {"InterId", "INTERID3", "C", 031, 0, ""})
aAdd(a3Browse, {"Resposta", "REPLY", "C", 031, 0, ""})
aAdd(a3Browse, {"Data", "DATAINF3", "D", 008, 0, ""})
aAdd(a3Browse, {"Erro", "ERROR", "C", 300, 0, ""})
oBrowseRight:= FWMBrowse():New()
oBrowseRight:SetOwner( oPanelRight )
oBrowseRight:SetDescription( 'Mensagens retorno Wamas' )
oBrowseRight:DisableDetails()
oBrowseRight:SetAlias( c3Alias )
oBrowseRight:SetTemporary(.T.)
oBrowseRight:SetFields(a3Browse)
oBrowseRight:SetProfileID( '3' )
oBrowseRight:AddLegend( "AllTrim(REPLY) == 'ERROR'", "RED", "Erro" )
oBrowseRight:AddLegend( "AllTrim(REPLY) # 'ERROR'", "GREEN" , "Sucesso" )
oBrowseRight:Activate()
oRelac1:= FWBrwRelation():New()
oRelac1:AddRelation( oBrowseUp , oBrowseLeft , { {'INTERID2' , 'INTERID1' } } )
oRelac1:Activate()
oRelac2:= FWBrwRelation():New()
oRelac2:AddRelation( oBrowseUp, oBrowseRight, { { 'INTERID3' , 'INTERID1' }} )
oRelac2:Activate()
Activate MsDialog oDlgPrinc Center
oTempTable:Delete()
o2TempTable:Delete()
o3TempTable:Delete()
Return NIL
/*
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
±±ºFuncao ³MenuDef ºAutor ³Microsiga º Data ³ 05/09/10 º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDesc. ³Esta rotina tem o objetivo de permitir a inclusão, alteração, º±±
±±º ³exclusão e efetivação uma publicação de preços º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºUso ³SigaFat º±±
±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
*/
//-------------------------------------------------------------------
Static Function MenuDef()
Local aRotina := {}
ADD OPTION aRotina Title 'Sem Funcao' Action 'Alert("Ok")' OPERATION 2 ACCESS 0
Return aRotina
/*
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
±±ºFuncao ³Mata325 ºAutor ³Microsiga º Data ³ 05/09/10 º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDesc. ³Esta rotina tem o objetivo de permitir a inclusão, alteração, º±±
±±º ³exclusão e efetivação uma publicação de preços º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºUso ³SigaFat º±±
±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
*/
Static Function ModelDef()
// Cria a estrutura a ser usada no Modelo de Dados
Local oModel := Nil
//Criação da estrutura de dados utilizada na interface
Local oStruTRB1 := FWFormModelStruct():New()
Local oStruTRB2 := FWFormModelStruct():New()
Local oStruTRB3 := FWFormModelStruct():New()
oStruTRB1:AddTable(cAlias,{"INVOICE","INTERID1","DATAINF"},"TMPTRB1")
//Adiciona os campos da estrutura
oStruTRB1:AddField(;
"Chave NFE",; // [01] C Titulo do campo //"Cod. Revisão"
"Chave NFE",; // [02] C ToolTip do campo //"Cod. Revisão"
"INVOICE",; // [03] C Id do Field
"C",; // [04] C Tipo do campo
44,; // [05] N Tamanho do campo
0,; // [06] N Decimal do campo
Nil,; // [07] B Code-block de validação do campo
Nil,; // [08] B Code-block de validação When do campo
{},; // [09] A Lista de valores permitido do campo
.F.,; // [10] L Indica se o campo tem preenchimento obrigatório
Nil,; // [11] B Code-block de inicializacao do campo
.T.,; // [12] L Indica se trata-se de um campo chave
.F.,; // [13] L Indica se o campo pode receber valor em uma operação de update.
.F.) // [14] L Indica se o campo é virtual
oStruTRB1:AddField(;
"InterId",; // [01] C Titulo do campo //"Cod. Registr"
"InterId",; // [02] C ToolTip do campo //"Cod. Registr"
"INTERID1",; // [03] C Id do Field
"C",; // [04] C Tipo do campo
30,; // [05] N Tamanho do campo
0,; // [06] N Decimal do campo
Nil,; // [07] B Code-block de validação do campo
Nil,; // [08] B Code-block de validação When do campo
{},; // [09] A Lista de valores permitido do campo
.F.,; // [10] L Indica se o campo tem preenchimento obrigatório
Nil,; // [11] B Code-block de inicializacao do campo
.F.,; // [12] L Indica se trata-se de um campo chave
.F.,; // [13] L Indica se o campo pode receber valor em uma operação de update.
.F.) // [14] L Indica se o campo é virtual
oStruTRB1:AddField(;
"Data Envio",; // [01] C Titulo do campo //"Tip. Doc."
"Data Envio",; // [02] C ToolTip do campo //"Tip. Doc."
"DATAINF",; // [03] C Id do Field
"D",; // [04] C Tipo do campo
08,; // [05] N Tamanho do campo
0,; // [06] N Decimal do campo
Nil,; // [07] B Code-block de validação do campo
Nil,; // [08] B Code-block de validação When do campo
{},; // [09] A Lista de valores permitido do campo
.F.,; // [10] L Indica se o campo tem preenchimento obrigatório
Nil,; // [11] B Code-block de inicializacao do campo
.F.,; // [12] L Indica se trata-se de um campo chave
.F.,; // [13] L Indica se o campo pode receber valor em uma operação de update.
.F.) // [14] L Indica se o campo é virtual
//SEGUNDA TABELA
oStruTRB2:AddTable(cAlias,{"INTERID2","SKU","QTDE"},"TMPTRB2")
//Adiciona os campos da estrutura
oStruTRB2:AddField(;
"InterId",; // [01] C Titulo do campo //"Cod. Revisão"
"InterId",; // [02] C ToolTip do campo //"Cod. Revisão"
"INTERID2",; // [03] C Id do Field
"C",; // [04] C Tipo do campo
30,; // [05] N Tamanho do campo
0,; // [06] N Decimal do campo
Nil,; // [07] B Code-block de validação do campo
Nil,; // [08] B Code-block de validação When do campo
{},; // [09] A Lista de valores permitido do campo
.F.,; // [10] L Indica se o campo tem preenchimento obrigatório
Nil,; // [11] B Code-block de inicializacao do campo
.T.,; // [12] L Indica se trata-se de um campo chave
.F.,; // [13] L Indica se o campo pode receber valor em uma operação de update.
.F.) // [14] L Indica se o campo é virtual
oStruTRB2:AddField(;
"Produto",; // [01] C Titulo do campo //"Cod. Registr"
"Produto",; // [02] C ToolTip do campo //"Cod. Registr"
"SKU",; // [03] C Id do Field
"C",; // [04] C Tipo do campo
31,; // [05] N Tamanho do campo
0,; // [06] N Decimal do campo
Nil,; // [07] B Code-block de validação do campo
Nil,; // [08] B Code-block de validação When do campo
{},; // [09] A Lista de valores permitido do campo
.F.,; // [10] L Indica se o campo tem preenchimento obrigatório
Nil,; // [11] B Code-block de inicializacao do campo
.F.,; // [12] L Indica se trata-se de um campo chave
.F.,; // [13] L Indica se o campo pode receber valor em uma operação de update.
.F.) // [14] L Indica se o campo é virtual
oStruTRB2:AddField(;
"Quantidade",; // [01] C Titulo do campo //"Tip. Doc."
"Quantidade",; // [02] C ToolTip do campo //"Tip. Doc."
"QTDE",; // [03] C Id do Field
"N",; // [04] C Tipo do campo
04,; // [05] N Tamanho do campo
0,; // [06] N Decimal do campo
Nil,; // [07] B Code-block de validação do campo
Nil,; // [08] B Code-block de validação When do campo
{},; // [09] A Lista de valores permitido do campo
.F.,; // [10] L Indica se o campo tem preenchimento obrigatório
Nil,; // [11] B Code-block de inicializacao do campo
.F.,; // [12] L Indica se trata-se de um campo chave
.F.,; // [13] L Indica se o campo pode receber valor em uma operação de update.
.F.)
//TERCEIRA TABELA
oStruTRB3:AddTable(cAlias,{"INTERID3","REPLY","DATAINF","ERROR"},"TMPTRB3")
//Adiciona os campos da estrutura
oStruTRB3:AddField(;
"InterId",; // [01] C Titulo do campo //"Cod. Revisão"
"InterId",; // [02] C ToolTip do campo //"Cod. Revisão"
"INTERID3",; // [03] C Id do Field
"C",; // [04] C Tipo do campo
31,; // [05] N Tamanho do campo
0,; // [06] N Decimal do campo
Nil,; // [07] B Code-block de validação do campo
Nil,; // [08] B Code-block de validação When do campo
{},; // [09] A Lista de valores permitido do campo
.F.,; // [10] L Indica se o campo tem preenchimento obrigatório
Nil,; // [11] B Code-block de inicializacao do campo
.T.,; // [12] L Indica se trata-se de um campo chave
.F.,; // [13] L Indica se o campo pode receber valor em uma operação de update.
.F.) // [14] L Indica se o campo é virtual
oStruTRB3:AddField(;
"Resposta",; // [01] C Titulo do campo //"Cod. Registr"
"Resposta",; // [02] C ToolTip do campo //"Cod. Registr"
"REPLY",; // [03] C Id do Field
"C",; // [04] C Tipo do campo
31,; // [05] N Tamanho do campo
0,; // [06] N Decimal do campo
Nil,; // [07] B Code-block de validação do campo
Nil,; // [08] B Code-block de validação When do campo
{},; // [09] A Lista de valores permitido do campo
.F.,; // [10] L Indica se o campo tem preenchimento obrigatório
Nil,; // [11] B Code-block de inicializacao do campo
.F.,; // [12] L Indica se trata-se de um campo chave
.F.,; // [13] L Indica se o campo pode receber valor em uma operação de update.
.F.) // [14] L Indica se o campo é virtual
oStruTRB3:AddField(;
"Data Retorno",; // [01] C Titulo do campo //"Tip. Doc."
"Data Retorno",; // [02] C ToolTip do campo //"Tip. Doc."
"DATAINF3",; // [03] C Id do Field
"D",; // [04] C Tipo do campo
08,; // [05] N Tamanho do campo
0,; // [06] N Decimal do campo
Nil,; // [07] B Code-block de validação do campo
Nil,; // [08] B Code-block de validação When do campo
{},; // [09] A Lista de valores permitido do campo
.F.,; // [10] L Indica se o campo tem preenchimento obrigatório
Nil,; // [11] B Code-block de inicializacao do campo
.F.,; // [12] L Indica se trata-se de um campo chave
.F.,; // [13] L Indica se o campo pode receber valor em uma operação de update.
.F.)
oStruTRB3:AddField(;
"Erro",; // [01] C Titulo do campo //"Tip. Doc."
"Erro",; // [02] C ToolTip do campo //"Tip. Doc."
"ERROR",; // [03] C Id do Field
"C",; // [04] C Tipo do campo
300,; // [05] N Tamanho do campo
0,; // [06] N Decimal do campo
Nil,; // [07] B Code-block de validação do campo
Nil,; // [08] B Code-block de validação When do campo
{},; // [09] A Lista de valores permitido do campo
.F.,; // [10] L Indica se o campo tem preenchimento obrigatório
Nil,; // [11] B Code-block de inicializacao do campo
.F.,; // [12] L Indica se trata-se de um campo chave
.F.,; // [13] L Indica se o campo pode receber valor em uma operação de update.
.F.)
oModel := MPFormModel():New("MVCLOGWAMAS",/*bPre*/,/*bPos*/,/*bCommit*/,/*bCancel*/)
//Atribuindo formulários para o modelo
oModel:AddFields("TRB1MASTER",/*cOwner*/,oStruTRB1)
oModel:AddFields("TRB2LEFT",/*cOwner*/,oStruTRB2)
oModel:AddFields("TRB3RIGHT",/*cOwner*/,oStruTRB3)
//Setando a chave primária da rotina
//oModel:SetPrimaryKey({'CODREV'})
//Adicionando descrição ao modelo
oModel:SetDescription("Log do Wamas")
Return oModel
/*
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
±±ºFuncao ³ViewDef ºAutor ³Microsiga º Data ³ 05/09/10 º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDesc. ³Esta rotina tem o objetivo de permitir a inclusão, alteração, º±±
±±º ³exclusão e efetivação uma publicação de preços º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºUso ³SigaFat º±±
±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
*/
Static Function ViewDef()
// Cria um objeto de Modelo de dados baseado no ModelDef() do fonte informado
Local oModel := FWLoadModel( 'MVCLOGWAMAS' )
// Cria a estrutura a ser usada na View
Local oStruTRB1 := FWFormViewStruct():New()
Local oStruTRB2 := FWFormViewStruct():New()
Local oStruTRB3 := FWFormViewStruct():New()
// Interface de visualização construída
Local oView
//Adicionando campos da estrutura
oStruTRB1:AddField(;
"INVOICE",; // [01] C Nome do Campo
"01",; // [02] C Ordem
"Chave NFE",; // [03] C Titulo do campo //"Cod. Revisão"
"Chave NFE",; // [04] C Descricao do campo //"Cod. Revisão"
Nil,; // [05] A Array com Help
"C",; // [06] C Tipo do campo
"",; // [07] C Picture
Nil,; // [08] B Bloco de PictTre Var
Nil,; // [09] C Consulta F3
.F.,; // [10] L Indica se o campo é alteravel
Nil,; // [11] C Pasta do campo
Nil,; // [12] C Agrupamento do campo
Nil,; // [13] A Lista de valores permitido do campo (Combo)
Nil,; // [14] N Tamanho maximo da maior opção do combo
nIL,; // [15] C Inicializador de Browse
Nil,; // [16] L Indica se o campo é virtual
Nil,; // [17] C Picture Variavel
Nil) // [18] L Indica pulo de linha após o campo
oStruTRB1:AddField(;
"INTERID1",; // [01] C Nome do Campo
"02",; // [02] C Ordem
"InterID",; // [03] C Titulo do campo //"Cod. Registr"
"InterID",; // [04] C Descricao do campo //"Cod. Registr"
Nil,; // [05] A Array com Help
"C",; // [06] C Tipo do campo
"",; // [07] C Picture
Nil,; // [08] B Bloco de PictTre Var
Nil,; // [09] C Consulta F3
.F.,; // [10] L Indica se o campo é alteravel
Nil,; // [11] C Pasta do campo
Nil,; // [12] C Agrupamento do campo
Nil,; // [13] A Lista de valores permitido do campo (Combo) //"J801=Termo Subst. ECD" //"J800=Outras Dem. RTF"
Nil,; // [14] N Tamanho maximo da maior opção do combo
Nil,; // [15] C Inicializador de Browse
Nil,; // [16] L Indica se o campo é virtual
Nil,; // [17] C Picture Variavel
Nil) // [18] L Indica pulo de linha após o campo
oStruTRB1:AddField(;
"DATAINF",; // [01] C Nome do Campo
"03",; // [02] C Ordem
"Data Envio",; // [03] C Titulo do campo //"Tip. Doc."
"Data Envio",; // [04] C Descricao do campo //"Tip. Doc."
Nil,; // [05] A Array com Help
"D",; // [06] C Tipo do campo
"",; // [07] C Picture
Nil,; // [08] B Bloco de PictTre Var
Nil,; // [09] C Consulta F3
.T.,; // [10] L Indica se o campo é alteravel
Nil,; // [11] C Pasta do campo
Nil,; // [12] C Agrupamento do campo
Nil,; // [13] A Lista de valores permitido do campo (Combo)
Nil,; // [14] N Tamanho maximo da maior opção do combo
Nil,; // [15] C Inicializador de Browse
Nil,; // [16] L Indica se o campo é virtual
Nil,; // [17] C Picture Variavel
Nil) // [18] L Indica pulo de linha após o campo
//SEGUNDA QUADRO
//Adicionando campos da estrutura
oStruTRB2:AddField(;
"INTERID2",; // [01] C Nome do Campo
"01",; // [02] C Ordem
"InterID",; // [03] C Titulo do campo //"Cod. Revisão"
"InterID",; // [04] C Descricao do campo //"Cod. Revisão"
Nil,; // [05] A Array com Help
"C",; // [06] C Tipo do campo
"",; // [07] C Picture
Nil,; // [08] B Bloco de PictTre Var
Nil,; // [09] C Consulta F3
.F.,; // [10] L Indica se o campo é alteravel
Nil,; // [11] C Pasta do campo
Nil,; // [12] C Agrupamento do campo
Nil,; // [13] A Lista de valores permitido do campo (Combo)
Nil,; // [14] N Tamanho maximo da maior opção do combo
nIL,; // [15] C Inicializador de Browse
Nil,; // [16] L Indica se o campo é virtual
Nil,; // [17] C Picture Variavel
Nil) // [18] L Indica pulo de linha após o campo
oStruTRB2:AddField(;
"SKU",; // [01] C Nome do Campo
"02",; // [02] C Ordem
"Porduto",; // [03] C Titulo do campo //"Cod. Registr"
"Produto",; // [04] C Descricao do campo //"Cod. Registr"
Nil,; // [05] A Array com Help
"C",; // [06] C Tipo do campo
"",; // [07] C Picture
Nil,; // [08] B Bloco de PictTre Var
Nil,; // [09] C Consulta F3
.F.,; // [10] L Indica se o campo é alteravel
Nil,; // [11] C Pasta do campo
Nil,; // [12] C Agrupamento do campo
Nil,; // [13] A Lista de valores permitido do campo (Combo) //"J801=Termo Subst. ECD" //"J800=Outras Dem. RTF"
Nil,; // [14] N Tamanho maximo da maior opção do combo
Nil,; // [15] C Inicializador de Browse
Nil,; // [16] L Indica se o campo é virtual
Nil,; // [17] C Picture Variavel
Nil) // [18] L Indica pulo de linha após o campo
oStruTRB2:AddField(;
"QTDE",; // [01] C Nome do Campo
"03",; // [02] C Ordem
"Quantidade",; // [03] C Titulo do campo //"Tip. Doc."
"Quantidade",; // [04] C Descricao do campo //"Tip. Doc."
Nil,; // [05] A Array com Help
"N",; // [06] C Tipo do campo
"",; // [07] C Picture
Nil,; // [08] B Bloco de PictTre Var
Nil,; // [09] C Consulta F3
.T.,; // [10] L Indica se o campo é alteravel
Nil,; // [11] C Pasta do campo
Nil,; // [12] C Agrupamento do campo
Nil,; // [13] A Lista de valores permitido do campo (Combo)
Nil,; // [14] N Tamanho maximo da maior opção do combo
Nil,; // [15] C Inicializador de Browse
Nil,; // [16] L Indica se o campo é virtual
Nil,; // [17] C Picture Variavel
Nil)
//TERCEIRA TABELA
//Adicionando campos da estrutura
oStruTRB3:AddField(;
"REPLY",; // [01] C Nome do Campo
"01",; // [02] C Ordem
"Resposta",; // [03] C Titulo do campo //"Cod. Revisão"
"Resposta",; // [04] C Descricao do campo //"Cod. Revisão"
Nil,; // [05] A Array com Help
"C",; // [06] C Tipo do campo
"",; // [07] C Picture
Nil,; // [08] B Bloco de PictTre Var
Nil,; // [09] C Consulta F3
.F.,; // [10] L Indica se o campo é alteravel
Nil,; // [11] C Pasta do campo
Nil,; // [12] C Agrupamento do campo
Nil,; // [13] A Lista de valores permitido do campo (Combo)
Nil,; // [14] N Tamanho maximo da maior opção do combo
nIL,; // [15] C Inicializador de Browse
Nil,; // [16] L Indica se o campo é virtual
Nil,; // [17] C Picture Variavel
Nil) // [18] L Indica pulo de linha após o campo
oStruTRB3:AddField(;
"INTERID3",; // [01] C Nome do Campo
"02",; // [02] C Ordem
"InterId",; // [03] C Titulo do campo //"Cod. Registr"
"InterId",; // [04] C Descricao do campo //"Cod. Registr"
Nil,; // [05] A Array com Help
"C",; // [06] C Tipo do campo
"",; // [07] C Picture
Nil,; // [08] B Bloco de PictTre Var
Nil,; // [09] C Consulta F3
.F.,; // [10] L Indica se o campo é alteravel
Nil,; // [11] C Pasta do campo
Nil,; // [12] C Agrupamento do campo
Nil,; // [13] A Lista de valores permitido do campo (Combo) //"J801=Termo Subst. ECD" //"J800=Outras Dem. RTF"
Nil,; // [14] N Tamanho maximo da maior opção do combo
Nil,; // [15] C Inicializador de Browse
Nil,; // [16] L Indica se o campo é virtual
Nil,; // [17] C Picture Variavel
Nil) // [18] L Indica pulo de linha após o campo
oStruTRB3:AddField(;
"DATAINF3",; // [01] C Nome do Campo
"03",; // [02] C Ordem
"Data",; // [03] C Titulo do campo //"Tip. Doc."
"Data",; // [04] C Descricao do campo //"Tip. Doc."
Nil,; // [05] A Array com Help
"D",; // [06] C Tipo do campo
"",; // [07] C Picture
Nil,; // [08] B Bloco de PictTre Var
Nil,; // [09] C Consulta F3
.T.,; // [10] L Indica se o campo é alteravel
Nil,; // [11] C Pasta do campo
Nil,; // [12] C Agrupamento do campo
Nil,; // [13] A Lista de valores permitido do campo (Combo)
Nil,; // [14] N Tamanho maximo da maior opção do combo
Nil,; // [15] C Inicializador de Browse
Nil,; // [16] L Indica se o campo é virtual
Nil,; // [17] C Picture Variavel
Nil)
oStruTRB3:AddField(;
"ERROR",; // [01] C Nome do Campo
"04",; // [02] C Ordem
"Erro",; // [03] C Titulo do campo //"Tip. Doc."
"Erro",; // [04] C Descricao do campo //"Tip. Doc."
Nil,; // [05] A Array com Help
"C",; // [06] C Tipo do campo
"",; // [07] C Picture
Nil,; // [08] B Bloco de PictTre Var
Nil,; // [09] C Consulta F3
.T.,; // [10] L Indica se o campo é alteravel
Nil,; // [11] C Pasta do campo
Nil,; // [12] C Agrupamento do campo
Nil,; // [13] A Lista de valores permitido do campo (Combo)
Nil,; // [14] N Tamanho maximo da maior opção do combo
Nil,; // [15] C Inicializador de Browse
Nil,; // [16] L Indica se o campo é virtual
Nil,; // [17] C Picture Variavel
Nil)
// Cria o objeto de View
oView := FWFormView():New()
// Define qual o Modelo de dados será utilizado na View
oView:SetModel( oModel )
// Adiciona no nosso View um controle do tipo formulário
// (antiga Enchoice)
oView:AddField("VIEW_TRB1", oStruTRB1, "TRB1MASTER")
oView:SetOwnerView('VIEW_TRB1','SUPERIOR')
oView:AddField("VIEW_TRB2", oStruTRB2, "TRB2LEFT")
oView:AddField("VIEW_TRB3", oStruTRB3, "TRB3RIGHT")
oView:EnableControlBar(.F.)
Return oView
/*
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
±±ºFuncao ³LoadTRB1 ºAutor ³Microsiga º Data ³ 05/09/10 º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDesc. ³Esta rotina tem o objetivo de permitir a inclusão, alteração, º±±
±±º ³exclusão e efetivação uma publicação de preços º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºUso ³SigaFat º±±
±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
*/
Static Function LoadTRB1()
Local cQuery := ''
Local cWamas:= "IWAMAS"
Local aFields := {}
Local aInter := {}
Local aDados := {}
//-------------------
//Criação do objeto
//-------------------
oTempTable := FWTemporaryTable():New( cAlias )
//--------------------------
//Monta os campos da tabela
//--------------------------
aadd(aFields,{"INVOICE","C",44,0})
aadd(aFields,{"INTERID1","C",30,})
aadd(aFields,{"DATAINF","D",8,0})
oTemptable:SetFields( aFields )
//------------------
//Criação da tabela
//------------------
oTempTable:Create()
//-------------------
//Criação do objeto
//-------------------
o2TempTable := FWTemporaryTable():New( c2Alias )
aFields := {}
//--------------------------
//Monta os campos da tabela
//--------------------------
aadd(aFields,{"SKU","C",31,0})
aadd(aFields,{"INTERID2","C",30,})
aadd(aFields,{"QTDE","N",4,0})
o2Temptable:SetFields( aFields )
//------------------
//Criação da tabela
//------------------
o2TempTable:Create()
If "DESENV" $ GetEnvServer()
cWamas:= "INTEGRACAOWAMAS"
EndIf
cQuery := " SELECT InvoiceId INVOICE, InterchangeId INTERID1 , DataInf DATAINF, SKU, Quantity QTDE"
cQuery += " FROM "+cWamas+"..OrdemRecebimento WITH(NOLOCK)"
cQuery += " WHERE InvoiceId = '"+SF1->F1_CHVNFE+"'"
MemoWrite("MVCLOGVAMAS.SQL",cQuery)
dbUseArea( .T., "TOPCONN", TcGenQry( ,, cQuery ) , "TRB", .F., .T. )
Count To nRec
If nRec == 0
ALERT("NAO HA DADOS")
TRB->(dbCloseArea() )
Return
EndIf
dbSelectArea("TRB")
dbGoTop()
cId := ''
While !Eof()
nPos := Ascan(aInter,{|x| x[1] == TRB->INTERID1 })
If nPos == 0
//01 ID, 02 CV NFE, 03- DATA
cId += "'"+AllTrim(TRB->INTERID1)+"',"
aAdd(aInter,{TRB->INTERID1,TRB->INVOICE,TRB->DATAINF})
EndIf
//01-ID, 02-PRODUTO, 03-QTDE
aAdd(aDados,{TRB->INTERID1, Iif(Empty(TRB->SKU),"CANCELAMENTO",TRB->SKU), TRB->QTDE})
dbSelectArea("TRB")
dbSkip()
End
TRB->( dbCloseArea() )
//TIRA A ULTIMA VIRGULA
cId := SubStr(cId,1,Len(cId)-1)
//GRAVA CABECALHO
For kk:=1 To Len(aInter)
dbSelectArea("TRB1")
RecLock("TRB1",.T.)
TRB1->INVOICE := aInter[kk][2]
TRB1->INTERID1 := aInter[kk][1]
TRB1->DATAINF := aInter[kk][3]
TRB1->(MsUnlock())
Next
//GRAVA ITENS
For kk:=1 To Len(aDados)
dbSelectArea("TRB2")
RecLock("TRB2",.T.)
TRB2->SKU := aDados[kk][2]
TRB2->INTERID2 := aDados[kk][1]
TRB2->QTDE := aDados[kk][3]
TRB2->(MsUnlock())
Next
//TERCEIRO OBJETO
//-------------------
//Criação do objeto
//-------------------
o3TempTable := FWTemporaryTable():New( c3Alias )
aFields := {}
//--------------------------
//Monta os campos da tabela
//--------------------------
aadd(aFields,{"REPLY","C",31,0})
aadd(aFields,{"INTERID3","C",31,})
aadd(aFields,{"DATAINF3","D",8,0})
aadd(aFields,{"ERROR","C",300,0})
o3Temptable:SetFields( aFields )
//------------------
//Criação da tabela
//------------------
o3TempTable:Create()
cQuery := " Select MessageId INTERID, Reply, Data DATAINF, CAST(ErrorMessage AS Varchar(300)) NErrorMessage "
cQuery += " from "+cWamas+"..MensagemConfirmacao_OrdemRecebimento WITH(NOLOCK)"
cQuery += " WHERE MessageId IN ("+cId+") order by Id desc"
MemoWrite("MVCLOGVAMASB.SQL",cQuery)
dbUseArea( .T., "TOPCONN", TcGenQry( ,, cQuery ) , "TRB", .F., .T. )
Count To nRec
If nRec == 0
ALERT("NAO HA DADOS")
TRB->(dbCloseArea() )
Return
EndIf
dbSelectArea("TRB")
dbGoTop()
While !Eof()
If "Error insert Invoice - Article where sku like" $ TRB->NErrorMessage
cMensagem := "Produto "+AllTrim(SubStr(TRB->NErrorMessage,Len(AllTrim(TRB->NErrorMessage))-9,8))+" não foi enviado para o Wamas"
ElseIf "is in progress or finished already, can not to update" $ TRB->NErrorMessage
cMensagem := "Nota em processo ou confirmação de armazenamento já enviada"
ElseIf "not in state Created, can not to delete" $ TRB->NErrorMessage
cMensagem := "A nota já está sendo conferida ou armazenada, não pode ser excluída"
ElseIf "not in correct state! Actual state is - CONFIRMED_STORAGE" $ TRB->NErrorMessage
cMensagem := "Nota já foi armazenada"
ElseIf "Error InvoiceStoreConfirmation - ReceivingAnnouncement where hostId like" $ TRB->NErrorMessage
cMensagem := "Chave da nota não encontrada"
Else
cMensagem := AllTrim(TRB->NErrorMessage)
EndIf
dbSelectArea("TRB3")
RecLock("TRB3",.T.)
TRB3->REPLY := TRB->REPLY
TRB3->INTERID3 := TRB->INTERID
TRB3->DATAINF3 := TRB->DATAINF
TRB3->ERROR := cMensagem
TRB3->(MsUnlock())
dbSelectArea("TRB")
dbSkip()
End
TRB->( dbCloseArea() )
Return