#include "protheus.ch" #include "fwmvcdef.ch" #define MVC_TITLE "Grid MVC sem cabeçalho" #define MVC_ALIAS "SB1" #define MVC_VIEWDEF_NAME "VIEWDEF.ZMVCTT" //------------------------------------------------------------------- //------------------------------------------------------------------- user function ZMVCTT() //Inserção - Inclusão de itens local aFields as array Local cQuery := "" Local cQuery1 := "" Private oTmpT00Tb Private oTmpT01Tb Private cAliasT0 := GetNextAlias() Private cAliasT1 := GetNextAlias() aFields := {} aFields1 := {} if ( select( (cAliasT0) ) > 0 ) ((cAliasT0))->(dbCloseArea()) oTmpT00Tb:Delete() endif if ( select( (cAliasT1) ) > 0 ) ((cAliasT1))->(dbCloseArea()) oTmpT01Tb:Delete() endif aadd(aFields,{"T0_CODGRU" , "C" , 4 , 0}) aadd(aFields,{"T0_DESGRU" , "C" , 30 , 0}) aadd(aFields1,{"T1_CODPRO" , "C", 40, 0 }) aadd(aFields1,{"T1_DESPRO" , "C" , 50 , 0 }) aadd(aFields1,{"T1_CODGRU" , "C" , 4 , 0 }) oTmpT00Tb := FwTemporaryTable():New( (cAliasT0), aFields ) oTmpT00Tb:AddIndex("1",{"T0_CODGRU"}) //"01"-> Nome do índice com no máximo 2 caracteres oTmpT00Tb:create() oTmpT01Tb := FWTemporaryTable():New((cAliasT1),aFields1) oTmpT01Tb:AddIndex("1",{"T1_CODGRU"}) // "01" -> Nome do índice com no máximo 2 caracteres oTmpT01Tb:Create() cQuery := " INSERT INTO " + oTmpT00Tb:GetTableNameForQuery() + " ( T0_CODGRU,T0_DESGRU )" cQuery += " SELECT BM_GRUPO, BM_DESC " cQuery += " FROM " + RetSqlName("SBM") + " (NOLOCK) AS SBM " cQuery += " WHERE BM_GRUPO IN ('7041','7049') " nStatus := TCSqlExec(cQuery) if (nStatus < 0) FWAlertError("Erro TCSQLError() : " + TCSQLError(), "Erro Query") endif cQuery1 := " INSERT INTO " + oTmpT01Tb:GetTableNameForQuery() + " ( T1_CODPRO,T1_DESPRO,T1_CODGRU )" cQuery1 += " SELECT B1_COD, B1_DESC, B1_GRUPO " cQuery1 += " FROM " + RetSqlName("SB1") + " (NOLOCK) AS SB1 " cQuery1 += " WHERE B1_COD IN ('ZA000PR170000000','PH000DI120700020') " nStatus := TCSqlExec(cQuery1) if (nStatus < 0) FWAlertError("Erro TCSQLError() : " + TCSQLError(), "Erro Query") endif //Visualização - Verificar os itens incluídos FWExecView( getTitle(MODEL_OPERATION_UPDATE), MVC_VIEWDEF_NAME, MODEL_OPERATION_UPDATE) return //------------------------------------------------------------------- //------------------------------------------------------------------- static function getTitle(nOperation) local cTitle as char if nOperation == MODEL_OPERATION_INSERT cTitle := "Inclusão" elseif nOperation == MODEL_OPERATION_UPDATE cTitle := "Alteração" else cTitle := "Visualização" endif return cTitle //------------------------------------------------------------------- //------------------------------------------------------------------- static function ModelDef() local oModel as object local oStrField as object local oStrGrid := FWFormModelStruct():New() local oStrGrid2 := FWFormModelStruct():New() // Estrutura Fake de Field oStrField := FWFormModelStruct():New() oStrField:addTable("", {"C_STRING1"}, MVC_TITLE, {|| ""}) oStrField:addField("String 01", "Campo de texto", "C_STRING1", "C", 15) oStrGrid:AddTable((cAliasT0), {'T0_CODGRU'}, "Temporaria") oStrGrid2:AddTable((cAliasT1), {'T1_CODGRU'}, "Temporaria") oStrGrid:AddField(; "Codigo",; // [01] C Titulo do campo "Codigo",; // [02] C ToolTip do campo "T0_CODGRU",; // [03] C Id do Field "C",; // [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 FwBuildFeature( STRUCT_FEATURE_INIPAD, "Iif(!INCLUI,"+cAliasT0+"->T0_CODGRU,'')" ),; // [11] B Code-block de inicializacao do campo NIL,; // [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 oStrGrid:AddField(; "Descricao",; // [01] C Titulo do campo "Descricao",; // [02] C ToolTip do campo "T0_DESGRU",; // [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 FwBuildFeature( STRUCT_FEATURE_INIPAD, "Iif(!INCLUI,"+cAliasT0+"->T0_DESGRU,'')" ),; // [11] B Code-block de inicializacao do campo NIL,; // [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.) oStrGrid2:AddField(; "Codigo",; // [01] C Titulo do campo "Codigo",; // [02] C ToolTip do campo "T1_CODPRO",; // [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 FwBuildFeature( STRUCT_FEATURE_INIPAD, "Iif(!INCLUI,"+cAliasT1+"->T1_CODPRO,'')" ),; // [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 oStrGrid2:AddField(; "Descricao",; // [01] C Titulo do campo "Descricao",; // [02] C ToolTip do campo "T1_DESPRO",; // [03] C Id do Field "C",; // [04] C Tipo do campo 50,; // [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 FwBuildFeature( STRUCT_FEATURE_INIPAD, "Iif(!INCLUI,"+(cAliasT1)+"->T1_DESPRO,'')" ),; // [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.) oStrGrid2:AddField(; "Cod. Gru",; // [01] C Titulo do campo "Descricao",; // [02] C ToolTip do campo "T1_CODGRU",; // [03] C Id do Field "C",; // [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 FwBuildFeature( STRUCT_FEATURE_INIPAD, "Iif(!INCLUI,"+(cAliasT1)+"->T1_CODGRU,'')" ) ,; // [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.) //Estrutura de Grid, alias Real presente no dicionário de dados oModel := MPFormModel():New("ZMVCTTM") oModel:addFields("CABID", /*cOwner*/, oStrField, /*bPre*/, /*bPost*/, {|oModel| loadHidFld()}) oModel:addGrid("GRIDID", "CABID", oStrGrid, /*bLinePre*/, /*bLinePost*/, /*bPre*/, /*bPost*/, {|oModel| loadGrid(oModel)}) oModel:addGrid("GRIDID2", "GRIDID", oStrGrid2, /*bLinePre*/, /*bLinePost*/, /*bPre*/, /*bPost*/, {|oModel| loadGrid2(oModel)}) oModel:SetRelation('GRIDID2',{ {'T1_CODGRU','T0_CODGRU'}}, (cAliasT0)->(IndexKey(1)) ) oModel:setDescription(MVC_TITLE) // É necessário que haja alguma alteração na estrutura Field oModel:setActivate({ |oModel| onActivate(oModel)}) return oModel //------------------------------------------------------------------- static function onActivate(oModel) //Só efetua a alteração do campo para inserção if oModel:GetOperation() == MODEL_OPERATION_INSERT FwFldPut("C_STRING1", "FAKE" , /*nLinha*/, oModel) endif return //------------------------------------------------------------------- //------------------------------------------------------------------- static function loadGrid(oModel) local aData as array local cAlias as char local cWorkArea as char local cTablename as char cWorkArea := Alias() cAlias := GetNextAlias() cTablename := "%" + oTmpT00Tb:GetRealName() + "%" BeginSql Alias cAlias SELECT T0_CODGRU, T0_DESGRU FROM %exp:cTablename% WHERE D_E_L_E_T_ = ' ' EndSql aData := FWLoadByAlias(oModel,oTmpT00Tb:GetAlias(),oTmpT00Tb:GetRealName()) (cAlias)->(DBCloseArea()) if !Empty(cWorkArea) .And. Select(cWorkArea) > 0 DBSelectArea(cWorkArea) endif return aData static function loadGrid2(oModel) local aData as array local cAlias as char local cWorkArea as char local cTablename as char cWorkArea := Alias() cAlias := GetNextAlias() cTablename := "%" + oTmpT01Tb:GetRealName() + "%" BeginSql Alias cAlias SELECT T1_CODPRO, T1_DESPRO, T1_CODGRU FROM %exp:cTablename% WHERE D_E_L_E_T_ = ' ' EndSql aData := FWLoadByAlias(oModel,oTmpT01Tb:GetAlias(),oTmpT01Tb:GetRealName()) (cAlias)->(DBCloseArea()) if !Empty(cWorkArea) .And. Select(cWorkArea) > 0 DBSelectArea(cWorkArea) endif return aData //------------------------------------------------------------------- //------------------------------------------------------------------- static function loadHidFld(oModel) return {""} //------------------------------------------------------------------- //------------------------------------------------------------------- static function viewDef() local oView as object local oModel as object local oStrCab as object local oStrGrid as object // Estrutura Fake de Field oStrCab := FWFormViewStruct():New() oStrCab:addField("C_STRING1", "01" , "String 01", "Campo de texto", , "C" ) //Estrutura de Grid oStrGrid := FWFormViewStruct():New() oStrGrid2 := FWFormViewStruct():New() oStrGrid:AddField(; "T0_CODGRU",; // [01] C Nome do Campo "01",; // [02] C Ordem "Codigo",; // [03] C Titulo do campo "Codigo",; // [04] C Descricao do campo 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 .T.) // [18] L Indica pulo de linha após o campo oStrGrid:AddField(; "T0_DESGRU",; // [01] C Nome do Campo "02",; // [02] C Ordem "Descricao",; // [03] C Titulo do campo "Descricao",; // [04] C Descricao do campo 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 .T.) // [18] L Indica pulo de linha após o campo oStrGrid2:AddField(; "T1_CODGRU",; // [01] C Nome do Campo "01",; // [02] C Ordem "Grupo",; // [03] C Titulo do campo "Grupo",; // [04] C Descricao do campo 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 oStrGrid2:AddField(; "T1_DESPRO",; // [01] C Nome do Campo "02",; // [02] C Ordem "Descricao",; // [03] C Titulo do campo "Descricao",; // [04] C Descricao do campo 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 oModel := FWLoadModel("ZMVCTT") oView := FwFormView():New() oView:setModel(oModel) oView:addField("CAB", oStrCab, "CABID") oView:addGrid("GRID", oStrGrid, "GRIDID") oView:addGrid("GRID2", oStrGrid2, "GRIDID2") oView:createHorizontalBox("TOHIDE", 0 ) oView:createHorizontalBox("TOSHOW", 50 ) oView:createHorizontalBox("TOSHOW2", 50 ) oView:setOwnerView("CAB", "TOHIDE" ) oView:setOwnerView("GRID", "TOSHOW") oView:setOwnerView("GRID2", "TOSHOW2") oView:setDescription( MVC_TITLE ) return oView