#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