Results 1 to 8 of 8

Thread: Validações em subpanel.

  1. #1
    leochaves is offline Sugar Community Member
    Join Date
    Feb 2011
    Posts
    10

    Default Validações em subpanel.

    Estou com o seguinte problema:

    Criei um um módulo que possui vários subpaineis. Em um deles tenho que fazer validações no banco para saber se é possível inserir o novo registro através do quickCreate.

    Então antes de inserir o novo registro preciso fazer um busca na tabela e ter certeza que não vou gerar uma inconsistencia no meu fluxograma.

    Além da validação preciso buscar algumas informações do último registro inserido para inserir no novo registro.

    Como fazer isso? O quickCreate usa muito ajax e ainda não consegui descobrir um boa documentação que me ajude a entender.

    Pensei em fazer via hook e até comecei:

    PHP Code:
    $hook_array['before_save'][] = Array(1'verificaInsercaoStatus''custom/modules/paci_pacientes_insercao/insercao.php','insercao''verificaInsercaoStatus'); 
    porém não tenho idéia de como retornar os erros pro quickCreate.


    PHP Code:
    class insercao {
            function 
    verificaInsercaoStatus(&$focus$event$arguments){        

                
    $focus $bean;
                
    $qry = <<<SQL
                    SELECT id 
                        FROM 
    {$focus->table_name} 
                        WHERE 
                            status = '
    {$focus->status}' AND deleted = 0 
                        order by date_entered DESC limit 0,1
    SQL;

                
    $res $focus->db->query($qrytrue);
                
    // Codigo de validação aqui
                            
                
    if($focus->db->getRowCount($res) > 0) {


    }  
                
    // Como retornar e o que retornar????
            
    }
    }
    ?> 
    Preciso de uma Luz. Esse é o maior gargalo do meu sistema. O resto é tudo customização de array.

  2. #2
    andopes's Avatar
    andopes is offline A Sugar Hero | Help Forum Moderator
    Join Date
    Jul 2006
    Location
    São Paulo - Brazil
    Posts
    8,335

    Default Re: Validações em subpanel.

    Para checar se é permitido adicionar um novo registro pelo botão "Novo" no subpainel eu sugiro que você:
    Crie um custom view.detail.php para o módulo pai (modulo onde os subpainéis são exibidos no DetailView);
    Crie nesse script 2 funções, conforme exemplo:


    PHP Code:
        function displaySubPanels() {
            if (isset(
    $this->bean) && !empty($this->bean->id) && (file_exists('modules/' $this->module '/metadata/subpaneldefs.php') || file_exists('custom/modules/' $this->module '/metadata/subpaneldefs.php') || file_exists('custom/modules/' $this->module '/Ext/Layoutdefs/layoutdefs.ext.php'))) {
                
    $layout_def_override $this->open_layout_defs($this->module);
                
                
    // adicione aqui as condições para exibição de um determinado subpainel, manipule $layout_def_override o qual contém todas as definições de subpainéis

                
    $GLOBALS['focus'] = $this->bean;
                require_once (
    'include/SubPanel/SubPanelTiles.php');
                
    $subpanel = new SubPanelTiles($this->bean$this->module$layout_def_override);
                echo 
    $subpanel->display();
            }
        }

        
    /**
         * Load the layout def file and associate the definition with a variable in the file.
         */
        
    function open_layout_defs $layout_def_key '' $original_only false ) {
            
    $layout_defs $this->bean->module_dir ] = array ( ) ;
            
    $layout_defs $layout_def_key ] = array ( ) ;

            if (
    file_exists 'modules/' $this->bean->module_dir '/metadata/subpaneldefs.php' )) {
                require (
    'modules/' $this->bean->module_dir '/metadata/subpaneldefs.php') ;
            }
            if (! 
    $original_only && file_exists 'custom/modules/' $this->bean->module_dir '/Ext/Layoutdefs/layoutdefs.ext.php' )) {
                require (
    'custom/modules/' $this->bean->module_dir '/Ext/Layoutdefs/layoutdefs.ext.php') ;
            }
            if (! empty ( 
    $layout_def_key )) {
                
    $layout_defs $layout_defs $layout_def_key ] ;
            } else {
                
    $layout_defs $layout_defs $this->bean->module_dir ] ;
            }

            return 
    $layout_defs;
        } 

    Att
    André Lopes
    DevToolKit / Project of the Month - June 2009
    Lampada Global Services- Open Source Solutions
    Avenida Ipiranga, 318
    Bloco B - CJ 1602
    São Paulo, SP 01046-010
    Brazil
    Office: +55 11 3237-3110
    Mobile: +55 11 7636-5859
    e-mail: andre@lampadaglobal.com

    Lampada Global delivers offshore software development and support services to customers around the world.
    Lampada is proud to be a SugarCRM Gold Partner, revolutionizing Customer Relationship Management.

    I DO NOT answer questions through PM and Email. If you need some help post your question into SugarForum.

  3. #3
    leochaves is offline Sugar Community Member
    Join Date
    Feb 2011
    Posts
    10

    Default Re: Validações em subpanel.

    PHP Code:
    // adicione aqui as condições para exibição de um determinado subpainel, 
    // manipule $layout_def_override o qual contém todas as definições de subpainéis 
    Minha intensão era validar depois de preenchido. Se eu entendi o que você disse, a idéia é montar o form com apenas as opções possíveis de inserção e assim evitar a validação before_save ?

  4. #4
    andopes's Avatar
    andopes is offline A Sugar Hero | Help Forum Moderator
    Join Date
    Jul 2006
    Location
    São Paulo - Brazil
    Posts
    8,335

    Default Re: Validações em subpanel.

    Sim, o código que sugeri apenas exibirá o botão de Criar Novo se as condições forem satisfeitas.
    Para validar no momento de envio do formulário você precisará modificar alguns scripts do sistema e implementar um evento ajax para validar antes do formulario ser enviado, o que requer conhecimento em sugar, javascript, ajax e php.

    Att
    André Lopes
    DevToolKit / Project of the Month - June 2009
    Lampada Global Services- Open Source Solutions
    Avenida Ipiranga, 318
    Bloco B - CJ 1602
    São Paulo, SP 01046-010
    Brazil
    Office: +55 11 3237-3110
    Mobile: +55 11 7636-5859
    e-mail: andre@lampadaglobal.com

    Lampada Global delivers offshore software development and support services to customers around the world.
    Lampada is proud to be a SugarCRM Gold Partner, revolutionizing Customer Relationship Management.

    I DO NOT answer questions through PM and Email. If you need some help post your question into SugarForum.

  5. #5
    leochaves is offline Sugar Community Member
    Join Date
    Feb 2011
    Posts
    10

    Default Re: Validações em subpanel.

    Conhece algum módulo que tenha um exemplo disso?
    Preciso fazer essa validação via ajax mesmo. Conheço as tecnologias mas não consigo encontrar documentações sobre sugarcrm + Ajax.

  6. #6
    rafael.q.g@hotmail.com's Avatar
    rafael.q.g@hotmail.com is offline Sugar Community Member
    Join Date
    Jun 2011
    Location
    Florianópolis - Brazil
    Posts
    782

    Default Re: Validações em subpanel.

    Olá Leochaves,

    Uma outra forma alternativa para realizar a validação de formulários criados apartir do quick_create em subpanels sem a necessidade de alterar muitos arquivos de configuração, é escrever uma função em javascript que realize a validação que você deseja, e então sobre escrever a função chamada pelo botão save, para primeiro executar a sua função de validação, e apenas depois submeter o formulário.

    Segue um exemplo de código onde eu realizei isto:
    /
    HTML Code:
    <script>
    //função que sobre escreve a ação do botão save
    function updateSaveFunction(){
    //set the new validation on form
    var elements=document.getElementsByTagName("input");
    for(i=0;i<elements.length;i++){
        if(elements[i].value=='Save' && elements[i].type=="submit" ){
            elements[i].onclick=verifyNameChange;// nome da nova função
        }
    }
    }
    
    //Função de validação
    function verifyNameChange(){
            var newName=document.getElementById("name").value;
            if(originalName!=newName){
                if(window.confirm("Message....")){
                    //this are the original save actions
                    document.EditView.action.value='Save';
                    return check_form('EditView');
                }else{
                    return false;
                }
            }
        document.EditView.action.value='Save';
        return check_form('EditView');
    }
    </script>
    Claro que este código deverá ser adaptado ao seu caso, mas este é o procedimento.

  7. #7
    leochaves is offline Sugar Community Member
    Join Date
    Feb 2011
    Posts
    10

    Default Re: Validações em subpanel.

    Segui o conselho do Rafael e estava tudo funcionando até o firefox5.
    no quickcreate coloque esse include:
    'includes'=> array(
    array('file'=>"modules/paci_pacientes_insercao/dropdown_sub.js")),


    Agora no firefox o arquivo não é mais encontrado

    http://localhost/sis-paipj/src=%22mo...=1362811252%22

    Estou com problema nessas aspas ai %22.

    Alguem teve esse problema?

  8. #8
    rafael.q.g@hotmail.com's Avatar
    rafael.q.g@hotmail.com is offline Sugar Community Member
    Join Date
    Jun 2011
    Location
    Florianópolis - Brazil
    Posts
    782

    Default Re: Validações em subpanel.

    Olá,

    Você diz que o arquivo paci_pacientes_insercao/dropdown_sub.js não esta sendo encontrado?
    Tente visualizar o código fonte de sua página após gerado, e verifique se o include foi realizado corretamente.
    Rafael Queiroz Gonçalves
    Advanced OMG UML Certified Professional
    Sun Certified Enterprise Architect for the Java Platform
    Sun Certified Programmer for the Java 2 Platform
    IBM Certified Advanced Application Developer - Lotus Notes and Domino
    IBM Certified Application Developer - IBM WebSphere Portlet Factory
    Computer Science Mastering / UFSC - PPGCC

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Similar Threads

  1. custom subpanel to Subpanel Group tab
    By kinshibuya in forum Help
    Replies: 0
    Last Post: 2009-07-01, 07:19 PM
  2. HOW TO: Subpanel Changes (Override subpanel name)
    By luisfdo in forum Developer Tutorials
    Replies: 0
    Last Post: 2009-03-12, 12:27 PM

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •