#include 'protheus.ch' #Include 'FWMVCDef.ch' /*__________________________________________________________________________ ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ ¦¦+-----------------------------------------------------------------------+¦¦ ¦¦¦Funçäo ¦ CADZM1 ¦ Autor ¦ Lucilene Mendes ¦ Data ¦05.02.24 ¦¦¦ ¦¦+----------+------------------------------------------------------------¦¦¦ ¦¦¦Descriçäo ¦ Cadastro de usuários do portal ¦¦¦ ¦¦+-----------------------------------------------------------------------+¦¦ ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯*/ User Function CadZM1() Local cAlias := "ZM1" Private aRotina := MenuDef() Private oBrowse Private cCadastro := "Usuários Portal SMS" //Monta o browse oBrowse := FWmBrowse():New() oBrowse:SetAlias(cAlias) oBrowse:SetDescription( cCadastro ) oBrowse:DisableDetails() oBrowse:AddLegend( "ZM1->ZM1_STATUS<>'2'", "GREEN", "Ativo" ) oBrowse:AddLegend( "ZM1->ZM1_STATUS='2'", "RED", "Bloqueado" ) //Abre a tela oBrowse:Activate() Return /*********** Cria Menu ***********/ Static Function MenuDef() Local aRotina := {} aAdd( aRotina, { 'Visualizar', 'VIEWDEF.CadZM1', 0, 2, 0, NIL } ) aAdd( aRotina, { 'Incluir' , 'VIEWDEF.CadZM1', 0, 3, 0, NIL } ) aAdd( aRotina, { 'Alterar' , 'VIEWDEF.CadZM1', 0, 4, 0, NIL } ) // aAdd( aRotina, { 'Excluir' , 'VIEWDEF.CadZM1', 0, 5, 0, NIL } ) Return aRotina /*********** Cria Model ***********/ Static Function ModelDef() Local oModel Local oStr1 := FWFormStruct(1,'ZM1') Local oStr2 := FWFormModelStruct():New() Local aZM1Rel:= {} Local aRotinas:= {"Cadastro de Cliente","Homologação","Orçamento","Pedido de Venda"} oStr1:RemoveField('ZM1_FILIAL','ZM1_CLIENT','ZM1_OPORT','ZM1_ORCTO','ZM1_PEDIDO') oStr2:AddTable('TMP', {'Rotina', 'OP1', 'OP2' ,'OP3', 'OP4', 'OP5', 'OP6', 'OP7','OP8','OP9'}, "Itens") //Adiciona o campo //For i:= 1 to Len(aRotinas) oStr2:AddField(; "Rotina",; // [01] C Titulo do campo "Rotina",; // [02] C ToolTip do campo "ROTINA",; // [03] C Id do Field "C",; // [04] C Tipo do campo 40,; // [05] N Tamanho do campo 0,; // [06] N Decimal do campo Nil,; // [07] B Code-block de validacao do campo Nil,; // [08] B Code-block de validacao When do campo {},; // [09] A Lista de valores permitido do campo .T.,; // [10] L Indica se o campo tem preenchimento obrigatè´¸rio FwBuildFeature( STRUCT_FEATURE_INIPAD, "Iif(!INCLUI,ZM1->ZM1_PEDIDO,'')" ),; // [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 operacao de update. .T.) //Adiciona o checkbox oStr2:AddField('SELECT1', ' ', 'SELECT1', 'L', 1, 0, , , {}, .F.,FWBuildFeature( STRUCT_FEATURE_INIPAD, ".F.")) oStr2:AddField('SELECT2', ' ', 'SELECT2', 'L', 1, 0, , , {}, .F.,FWBuildFeature( STRUCT_FEATURE_INIPAD, ".F.")) oStr2:AddField('SELECT3', ' ', 'SELECT3', 'L', 1, 0, , , {}, .F.,FWBuildFeature( STRUCT_FEATURE_INIPAD, ".F.")) oStr2:AddField('SELECT4', ' ', 'SELECT4', 'L', 1, 0, , , {}, .F.,FWBuildFeature( STRUCT_FEATURE_INIPAD, ".F.")) oStr2:AddField('SELECT5', ' ', 'SELECT5', 'L', 1, 0, , , {}, .F.,FWBuildFeature( STRUCT_FEATURE_INIPAD, ".F.")) oStr2:AddField('SELECT6', ' ', 'SELECT6', 'L', 1, 0, , , {}, .F.,FWBuildFeature( STRUCT_FEATURE_INIPAD, ".F.")) oStr2:AddField('SELECT7', ' ', 'SELECT7', 'L', 1, 0, , , {}, .F.,FWBuildFeature( STRUCT_FEATURE_INIPAD, ".F.")) oStr2:AddField('SELECT8', ' ', 'SELECT8', 'L', 1, 0, , , {}, .F.,FWBuildFeature( STRUCT_FEATURE_INIPAD, ".F.")) oStr2:AddField('SELECT9', ' ', 'SELECT9', 'L', 1, 0, , , {}, .F.,FWBuildFeature( STRUCT_FEATURE_INIPAD, ".F.")) //Next oModel := MPFormModel():New('CadZM1M') oModel:AddFields('ZM1MASTER', /*cOwner*/,oStr1, /*bPreValidacao*/,/*bPosValidacao*/, /*bCarga*/ ) oModel:AddGrid( 'ZM1DETAIL','ZM1MASTER',oStr2,/*bLinePre*/,/*bLinePost*/, /*bPreVal*/, /*bPosVal*/) aAdd(aZM1Rel, {'ZM1_FILIAL' , 'Iif(!INCLUI, ZM1->ZM1_FILIAL, FWxFilial("ZM1"))'} ) oModel:SetRelation('ZM1DETAIL', aZM1Rel, ZM1->(IndexKey(1))) //Setando outras informacaoes do Modelo de Dados oModel:SetDescription(cCadastro) oModel:SetPrimaryKey({"ZM1_FILIAL","ZM1_CODIGO"}) oModel:GetModel("ZM1MASTER"):SetDescription("Formulario - "+cCadastro) oModel:SetValue("Z36_PRODUT", aDados[x][1]) Return oModel ///////////////////////////////////////// Static Function ViewDef() Local oModel := FWLoadModel("CadZM1") Local oStr1 := FWFormStruct(2,'ZM1') Local oStr2 := FWFormViewStruct():New() Local oView := Nil //Adiciona o campo oStr2:AddField( 'ROTINA' ,'01','Rotina','Rotina',, 'C') oStr2:AddField( 'SELECT1','02','Incluir','Incluir',, 'Check') oStr2:AddField( 'SELECT2','03','Alterar','Altear',, 'Check') oStr2:AddField( 'SELECT3','04','Excluir','Excluir',, 'Check') oStr2:AddField( 'SELECT4','05','Excluir','Excluir',, 'Check') oStr2:AddField( 'SELECT5','06','Copiar','Copiar',, 'Check') oStr2:AddField( 'SELECT6','07','Revisar','Revisar',, 'Check') oStr2:AddField( 'SELECT7','08','Efetivar','Efetivar',, 'Check') oStr2:AddField( 'SELECT8','09','Cancelar','Cancelar',, 'Check') oStr2:AddField( 'SELECT9','10','Todos','Todos',, 'Check') //Criando a view que sera o retorno da funcao e setando o modelo da rotina oView := FWFormView():New() oView:SetModel(oModel) oView:AddField("VIEW_CAB", oStr1, "ZM1MASTER") oView:AddGrid('VIEW_DET',oStr2,'ZM1DETAIL') //Setando o dimensionamento de tamanho oView:CreateHorizontalBox('CABEC',40) oView:CreateHorizontalBox('GRID',60) //Amarrando a view com as box oView:SetOwnerView('VIEW_CAB','CABEC') oView:SetOwnerView('VIEW_DET','GRID') //Gatilho para alimentar o grid oView:SetFieldAction("ZM1_CODIGO", {|oView, cIdView, cField, xValue| U_ATUGRIDZM1(oView, cIdView, cField, xValue)}) //Incrementando o campo sequencia //oView:AddIncrementField( 'VIEW_ZC0', 'ZC0_SEQUEN' ) //Habilitando titulo oView:EnableTitleView('VIEW_CAB','Cadastro') oView:EnableTitleView('VIEW_DET','Acessos') //Tratativa padrao para fechar a tela oView:SetCloseOnOk({||.T.}) //Remove os campos de Filial e Tabela da Grid oStr1:RemoveField('ZM1_FILIAL') oStr1:RemoveField('ZM1_CLIENT') oStr1:RemoveField('ZM1_OPORT') oStr1:RemoveField('ZM1_ORCTO') oStr1:RemoveField('ZM1_PEDIDO') Return oView //////////////////// User Function AtuGridZM1(oView, cIdView, cField, xValue) Local nOperation := 0 Local nI := 0 Local aRotinas := {"CADASTRO DE CLIENTE","HOMOLOGAÇÃO","ORÇAMENTO","PEDIDO DE VENDA"} Local oModel := oView:GetModel() nOperation := oModel:GetOperation() If nOperation == MODEL_OPERATION_INSERT If oModel:GetModel("ZM1DETAIL"):CanClearData() oModel:GetModel("ZM1DETAIL"):ClearData() For nI:= 1 to Len(aRotinas) IF oModel:GetModel("ZM1DETAIL"):AddLine() == ++nI oModel:GetModel("ZM1DETAIL"):GoLine(nI) If oModel:GetModel("ZM1DETAIL"):AddLine() oModel:GetModel("ZM1DETAIL"):GoLine(nI) oModel:GetModel("ZM1DETAIL"):SetValue("ROTINA" , aRotina[nI] ) Endif Endif Next oView:Refresh() Endif Endif oModel:GetModel("ZM1DETAIL"):GoLine(1) Return