Posted by Thiago Tue 27th Mar 2007 19:25 - Syntax is JavaScript - 119 views
Download | New Post | Modify | Hide line numbers
Download | New Post | Modify | Hide line numbers
Description:
Tente achar o erro.
Tente achar o erro.
-
/**
-
* Arquivo com objetos e regras de negócio referentes ao gerenciamento
-
* de Classe Mat Med.
-
*
-
* Usa FacadePCE no lado do servidor para acessar o modelo de
-
* dominio server-side.
-
*
-
* Objetos JSON representando VO´s devem ser criados na primeira metade do arquivo
-
* Objetos com regras de negócio devem ser colocados na segunda métade do arquivo
-
*
-
* @author Thiago Antonius
-
*/
-
var absUtil = AbstratoUtil.View.Validator;
-
var funcaoRegistrada;
-
var supremoBase = new SupremoBase();
-
-
var ContaContabilGridTemplate = {
-
cols : [
-
['Código','codigo', {width: "90"} ],
-
['Descrição','descricao', {width: "300"}]
-
]
-
}
-
-
/**
-
* Gerenciador de classes de material e medicamento
-
*
-
* Contem métodos com regras de negócio.
-
*/
-
var GerenciadorClasseMatMed = Class.create();
-
-
GerenciadorClasseMatMed.prototype = {
-
-
initialize: function(){
-
this.absUtil = AbstratoUtil.View.Validator;
-
},
-
-
validar: function(){
-
var me = new GerenciadorClasseMatMed();
-
-
var fields = [
-
["classeDescricao" , "Descrição" , "O campo Descrição é obrigatório" , absUtil.SINGLE, true, "not-null"],
-
["classeGrupo" , "Classe Grupo" , "O campo Classe Grupo deve conter apenas números" , absUtil.SINGLE, true, "number"],
-
["classeSubGrupo" , "Classe Sub-Grupo" , "O campo Classe Sub-Grupo deve conter apenas números" , absUtil.SINGLE, true, "number"],
-
["classeSubSubGrupo" , "Classe Sub-Sub-Grupo", "O campo Classe Sub-Sub-Grupo deve conter apenas números" , absUtil.SINGLE, true, "number"]
-
];
-
absUtil.registerForm("classeMatMed"); //registra o formulário
-
absUtil.registerFields(fields);
-
absUtil.submitionType(absUtil.SUBMITION_AJAX);
-
absUtil.ALERT_MODE = "modal";
-
-
//funcao que será chamada depois da validação, casa a mesma seja realizada com sucesso.
-
funcaoRegistrada = absUtil.callFunctionAfterValidation( eval( $('operacao').value ) );
-
-
//Registra campos que serao validados on-the-fly (apenas numero)
-
absUtil.validateOnEvent("classeGrupo" , "onkeypress", "only-number");
-
absUtil.validateOnEvent("classeSubGrupo" , "onkeypress", "only-number");
-
absUtil.validateOnEvent("classeSubSubGrupo" , "onkeypress", "only-number");
-
absUtil.validateOnEvent("codigoContaContabil" , "onkeypress", "only-number");
-
-
//botao que valida o form
-
var evtRouter = new EventRouter($('btnConfirmarClasseMatMed'), 'onclick');
-
evtRouter.addListenner(absUtil.validate);
-
}//validar()
-
}// fim object GerenciadorClasseMatMed
-
-
function cadastrar() {
-
gPersistir( CONST_CLASSE_MAT_MED, CONST_CLASSE_MAT_MED_MAP, CONST_FACADE_PCE, CONST_CADASTRAR);
-
}//cadastrar()
-
-
function atualizar(){
-
gPersistir( CONST_CLASSE_MAT_MED, CONST_CLASSE_MAT_MED_MAP, CONST_FACADE_PCE, CONST_ATUALIZAR);
-
}// fim atualizar()
-
-
function deletar(){
-
-
if($('classeCodigo').value != "" &&
-
$('classeGrupo').value != "" &&
-
$('classeSubGrupo').value != "" &&
-
$('classeSubSubGrupo').value != "" &&
-
$('classeDescricao').value != ""){
-
-
supremoBase.deleteConfirm(
-
'Tem certeza que deseja deletar a Classe Mat Med: '+$('classeDescricao').value+' ?',
-
300,
-
90,
-
function() {
-
var classeMatMedPopulada = AbstratoJ.buildObject("ClasseMatMed");
-
/*
-
* chama a funcao deletarClasseMatMed do server-side
-
* e devolve a resposta para a funcao callback.
-
*/
-
FacadePCE.deletarClasseMatMed( classeMatMedPopulada , function(result) { gPersistirClasseMatMedCB(result, CONST_DELETAR) } );
-
-
notification(CONST_NOTIFICATION_WAIT_MSG, CONST_NOTIFICATION_WAIT_CSS);
-
return true;
-
},
-
function() { return false; }
-
);
-
} else {
-
notification('Favor procurar e carregar a Classe Mat Med antes, clicando na lupa ou digitando o grupo, sub-grupo e sub-sub-grupo da classe.', CONST_NOTIFICATION_ERROR_CSS);
-
}
-
}// fim deletar()
-
-
function gPersistirClasseMatMedRN(_obj , _action) {
-
-
try{
-
if(_obj.codigoClasseSubGrupo == 0 && _obj.codigoClasseSubSubGrupo == 0
-
&& ( _obj.contaContabil == undefined || _obj.contaContabil == null
-
|| _obj.contaContabil.codigo == undefined || _obj.contaContabil.codigo == null ) ) {
-
notification('É preciso escolher a conta contábil para a classe principal.', CONST_NOTIFICATION_ERROR_CSS);
-
$('codigoContaContabil').focus();
-
return false;
-
} else {
-
if ( ( _obj.codigoClasseSubGrupo != 0 || _obj.codigoClasseSubSubGrupo != 0 )
-
&& _obj.contaContabil != undefined ) {
-
-
notification('Os Sub-Grupos e Sub-Sub-Grupos pertecem a mesma conta contábil do Grupo Pai, logo não pode atritubir uma conta contábil especifica para eles.', CONST_NOTIFICATION_ERROR_CSS);
-
$('codigoContaContabil').value = "";
-
$('descricaoContaContabil').value = "";
-
$('codigoContaContabil').focus();
-
return false;
-
}
-
}
-
-
return true;
-
} catch(e) {
-
notification('Ocorreu um erro inexperado durante a '+_action+' de classe mat med, favor tentar novamente mais tarde ou entrar em contato com o administrador do sistema.', CONST_NOTIFICATION_ERROR_CSS);
-
alert(e.message)
-
return false;
-
}
-
-
}
-
-
/*
-
* Função callback para o insert, update e delete.
-
*/
-
function gPersistirClasseMatMedCB(resposta, operacao) {
-
if(resposta.erro==true){
-
notification(resposta.msg, CONST_NOTIFICATION_ERROR_CSS);
-
}else{
-
switch (operacao) {
-
case CONST_CADASTRAR:
-
notification('A classe Mat Med "'+resposta.vo.descricao+'" foi cadastrada com sucesso.', CONST_NOTIFICATION_SUCCESS_CSS);
-
break;
-
case CONST_ATUALIZAR:
-
notification('A classe Mat Med foi atualizada com sucesso.', CONST_NOTIFICATION_SUCCESS_CSS);
-
break;
-
case CONST_DELETAR:
-
notification('A classe Mat Med foi deletada com sucesso.', CONST_NOTIFICATION_SUCCESS_CSS);
-
break;
-
}
-
-
/*
-
* chama a função para preparar a tela
-
* para pesquisa, da mesma form como ela foi aberta.
-
*/
-
_prepareClasseMatMedScreen(ACTION_SEARCH);
-
}
-
}//fim gPersistirClasseMatMedCB()
-
-
/**
-
* Implementação da função initial do operationBar
-
* Prepara a tela pro formato inicial.
-
*/
-
function initial() {
-
var gcmm = new GerenciadorClasseMatMed();
-
gcmm.validar();
-
_prepareClasseMatMedScreen(ACTION_SEARCH);
-
$('classeGrupo').focus();
-
}
-
-
/**
-
* Implementação da função search do operationBar
-
* Prepara a tela para pesquisa através da factory e
-
* chama a window de pesquisa, limpando o form antes.
-
*/
-
function preSearch(){
-
_prepareClasseMatMedScreen(ACTION_SEARCH);
-
zoom('classe_mat_med');
-
} // fim preSearch()
-
-
/**
-
* Implementação da função preAdd do operationBar
-
* Prepara a tela para adicionar um novo registro
-
* através da factory e ajusta o formulário para
-
* essa operação.
-
*/
-
function preAdd(){
-
_prepareClasseMatMedScreen(ACTION_ADD);
-
} // fim preAdd()
-
-
/**
-
* Prepara (monta os campos) a tela de classe Mat Med
-
* de acordo com a acao que vai ser executada.
-
*
-
* @param action acao que var ser executada.
-
*/
-
function _prepareClasseMatMedScreen(action) {
-
-
if(action == null || action.length == 0) return;
-
-
var _action = action.toLowerCase();
-
-
switch (_action) {
-
case ACTION_ADD:
-
/*
-
* Muda o label do botão confirmar e
-
* muda a operação para depois da validação
-
* ser possível chamar a função correta
-
* através da função absUtil.callFunctionAfterValidation(...).
-
*/
-
$('btnConfirmarClasseMatMed').value = "Confirmar";
-
$('operacao').value = "cadastrar";
-
-
absUtil.unregisterFunction(funcaoRegistrada);
-
funcaoRegistrada = absUtil.callFunctionAfterValidation( eval( 'cadastrar' ) );
-
-
//Limpa os campos do form
-
clearForm();
-
-
/*
-
* Se o usuário poder cadastrar, habilita os fields
-
* caso contrário desabilita os campos porém coloca uma
-
* cor de fundo mais clara para o usuário poder visualizar
-
* os dados.
-
*/
-
if(ADD) {
-
AbstratoJ.enableFields('ClasseMatMed', true, CONST_TEXT_FIELD_CSS);
-
display('btnConfirmarClasseMatMed', true);
-
display('btnDeletarClasseMatMed', false);
-
-
/*
-
* Mostra o segundo fieldset pois o mesmo estava desabilitado.
-
* Para o primeiro fieldset não precisa usar o display,
-
* pois a todo momento ele está visivel.
-
*/
-
display('blocoField2', true);
-
-
/*
-
* Desabilita o campo descricaoContaContabil
-
* pois o mesmo só é para visualizacao. E só
-
* vai mudar a classe para textFieldViewDisabled
-
* quando uma conta Contabil for carregada.
-
* Mostra a imagem do ZoomContaContabil.
-
*/
-
$('descricaoContaContabil').disabled = true;
-
$('descricaoContaContabil').className = CONST_TEXT_FIELD_DISABLED_CSS;
-
display('imgZoomContaContabil', true);
-
-
/*
-
* Retira a função associada ao evento
-
* onkeydown do elemento classe Sub-Sub-Grupo
-
*/
-
$('classeSubSubGrupo')['onkeydown'] = function(){};
-
}
-
/*
-
* Esconde a mensagem de notificação pois a mesma pode está
-
* lá devido a alguma ação realizada anteriormente. E esconde também
-
* o botão delete.
-
*/
-
display('notificationBox', false);
-
$('classeGrupo').focus();
-
break;
-
case ACTION_UP:
-
/*
-
* Muda o label do botão confirmar par Atualizar e
-
* muda a operação para depois da validação
-
* ser possível chamar a função correta
-
* através da função absUtil.callFunctionAfterValidation(...).
-
*/
-
$('btnConfirmarClasseMatMed').value = "Atualizar";
-
$('operacao').value = "atualizar";
-
-
absUtil.unregisterFunction(funcaoRegistrada);
-
funcaoRegistrada = absUtil.callFunctionAfterValidation( eval( 'atualizar' ) );
-
-
/*
-
* Se o usuário poder atualizar, habilita os fields e aproveita
-
* e mostra o botão Atualizar para não precisar realizar outro if
-
* abaixo como no delete.
-
* Se ele só poder deletar e/ou visualizar, os campos
-
* ficam desabilitados porém com uma cor melhor para poder
-
* visualizar os dados.
-
* Porém o field descricaoContaContabil fica desabilitado de
-
* qualquer forma, pois o mesmo é só para visualização.
-
* Mostra a imagem do zoomContaContabil.
-
*/
-
if(UP) {
-
AbstratoJ.enableFields('ClasseMatMed', true, CONST_TEXT_FIELD_CSS);
-
display('btnConfirmarClasseMatMed', true);
-
-
$('descricaoContaContabil').disabled = true;
-
$('descricaoContaContabil').className = CONST_TEXT_FIELD_VIEW_DISABLED_CSS;
-
display('imgZoomContaContabil', true);
-
}else{
-
AbstratoJ.enableFields('ClasseMatMed', false, CONST_TEXT_FIELD_VIEW_DISABLED_CSS);
-
}
-
-
/*
-
* Mostra o botão deletar só se o usuário tiver permissão
-
*/
-
if(DEL)
-
display('btnDeletarClasseMatMed', true);
-
-
/*
-
* Mostra o segundo fieldset pois o mesmo estava desabilitado.
-
* Para o primeiro fieldset não precisa usar o display,
-
* pois a todo momento ele está visivel.
-
*/
-
display('blocoField2', true);
-
break;
-
case ACTION_DEL:
-
break;
-
case ACTION_SEARCH:
-
clearForm();
-
-
/*
-
* Atribui a função ao onkeydown elemento
-
* para poder ser possível pesquisar via TAB.
-
*/
-
$('classeSubSubGrupo')['onkeydown'] =
-
function(event) {
-
supremoBase.onTab(event,"searchObject('classe_mat_med','classeMatMed', 'ClasseMatMed')");
-
}
-
/*
-
* Desabilita os campos do formulário e esconde os botões.
-
* A pesquisa é feita atraves do clique na lupa que abre o "pop-up" de busca.
-
* ou a através dos campos Classe Grupo, Classe Sub-Grupo e Classe Sub-Sub-Grupo.
-
* Não é necessário testar se o usuário tem permissão para
-
* buscar, pois se o mesmo tem permissão de acesso a tela, ele poderá
-
* realizar buscas.
-
*/
-
AbstratoJ.enableFields('ClasseMatMed', false, CONST_TEXT_FIELD_DISABLED_CSS);
-
display('notificationBox', false);
-
display('btnConfirmarClasseMatMed', false);
-
display('btnDeletarClasseMatMed', false);
-
display('blocoField2', false);
-
display('imgZoomContaContabil', false);
-
-
-
/*
-
* Habilita esses 3 campos para o usuário poder buscar através
-
* dos grupos da classe digitando e depois apertando a tecla TAB
-
* no ultimo grupo.
-
*/
-
$('classeGrupo').disabled = false;
-
$('classeGrupo').className = CONST_TEXT_FIELD_CSS;
-
$('classeSubGrupo').disabled = false;
-
$('classeSubGrupo').className = CONST_TEXT_FIELD_CSS;
-
$('classeSubSubGrupo').disabled = false;
-
$('classeSubSubGrupo').className = CONST_TEXT_FIELD_CSS;
-
break;
-
default:
-
break;
-
}
-
} // fim _prepareClasseMatMedScreen()
-
-
/**
-
* Limpa o form principal.
-
*/
-
function clearForm(){
-
AbstratoJ.clearFields(CONST_CLASSE_MAT_MED_MAP);
-
} //fim clearForm()
-
-
/*************************************************/
-
/** Funções que tratam o resultado da busca de **/
-
/** algum objeto. **/
-
/*************************************************/
-
-
/**
-
* Tratamento do resultado da busca de Classe Mat Med
-
* idenpendente se ela foi realizada via tab ou via window.
-
*/
-
function classeMatMedBuscarCB(resposta){
-
if(resposta.erro || resposta.vo == null) {
-
notification(resposta.msg, CONST_NOTIFICATION_ERROR_CSS);
-
_prepareClasseMatMedScreen(ACTION_SEARCH);
-
}else{
-
-
AbstratoJ.fillFormWithObject(resposta.vo[0], 'ClasseMatMed');
-
/*
-
* Depois de buscado e setado os atributos da
-
* Classe Mat Met nos seus respectivos campos
-
* chama a função responsavel por montar a tela para
-
* atualizar e a função _prepareClasseMatMedScreen para
-
* montar a tela de acordo com a ação.
-
*/
-
_prepareClasseMatMedScreen(ACTION_UP);
-
notification('A Classe Mat Med '+resposta.vo[0].descricao+' foi carregada com sucesso.', CONST_NOTIFICATION_SUCCESS_CSS);
-
}
-
}
-
-
/**
-
* Tratamento do resultado da busca de Conta Contabil
-
* idenpendente se ela foi realizada via tab ou via window.
-
*/
-
function contaContabilBuscarCB(resposta) {
-
if(resposta.erro || resposta.vo == null) {
-
notification(resposta.msg, CONST_NOTIFICATION_ERROR_CSS);
-
}else{
-
AbstratoJ.fillFormWithObject(resposta.vo[0], 'ContaContabil' , 'classeMatMed');
-
/*
-
* Depois de buscado e setado nos respectivos campos
-
* chama a função responsavel por montar a tela para
-
* atualizar e a função _prepareClasseMatMedScreen para
-
* montar a tela de acordo com a ação.
-
*/
-
notification('A Conta Contábil '+resposta.vo[0].descricao+' foi carregada com sucesso.', CONST_NOTIFICATION_SUCCESS_CSS);
-
-
/*
-
* Muda a classe da descricaoContaContabil
-
* para ser possível visualizar o valor.
-
*/
-
$('descricaoContaContabil').className = 'textFieldViewDisabled';
-
}
-
}
-
PermaLink to this entry https://pastebin.co.uk/12294
Posted by Thiago Tue 27th Mar 2007 19:25 - Syntax is JavaScript - 119 views
Download | New Post | Modify | Hide line numbers
Download | New Post | Modify | Hide line numbers
Comments: 0