Problemas no update de registro que utiliza databind
03/09/2012 17:34
protected Map update(params) {
Map resposta = [:]
NotaFiscalConfigura notaFiscalConfiguraInstance = null
NotaFiscalConfigura.withTransaction { status ->
notaFiscalConfiguraInstance = NotaFiscalConfigura.get(params.id)
Empresa empresa = Sessao.empresaAtivo()
params.empresa = empresa
//prepara parametros Embedded
['aliquotaIss' ,'bairroTomador' ,'cepTomador' ,'cnpjTomador' ,'condicaoPagamento' ,'dataEmissao' ,'dataVisto' ,'descricao' ,'duplicata' ,'enderecoTomador' ,'fatura' ,'finalDescricao' ,'finalQuantidade' ,'finalTotal' ,'finalUnitario' ,'inicioDescricao' ,'inscRgTomador' ,'municipioTomador' ,'naturezaOperacao' ,'nomeTomador' ,'nota' ,'numero' ,'ufTomador' ,'ultimoNumero' ,'valorExtenso' ,'valorFatura' ,'valorServicos' ,'valorTotal' ,'valorTotalIss' ,'vencimento'].each{
NotaFiscalPosicao posicao = new NotaFiscalPosicao()
bindData(posicao, params[it], [include: ['altura', 'distancia']])
params[it] = posicao
}
//Faz bind com os parametros embedded
bindData(notaFiscalConfiguraInstance, params, [include: ['nome', 'aliquotaIss' ,'bairroTomador' ,'cepTomador' ,'cnpjTomador' ,'condicaoPagamento' ,'dataEmissao' ,'dataVisto' ,'descricao' ,'duplicata' ,'enderecoTomador' ,'fatura' ,'finalDescricao' ,'finalQuantidade' ,'finalTotal' ,'finalUnitario' ,'inicioDescricao' ,'inscRgTomador' ,'municipioTomador' ,'naturezaOperacao' ,'nomeTomador' ,'nota' ,'numero' ,'ufTomador' ,'ultimoNumero' ,'valorExtenso' ,'valorFatura' ,'valorServicos' ,'valorTotal' ,'valorTotalIss' ,'vencimento']])
if (!notaFiscalConfiguraInstance.save()) {
def erros = []
notaFiscalConfiguraInstance.errors.allErrors.each {
erros << message(error: it, encodeAs: 'HTML')
}
throw new IllegalStateException(erros.join(', '))
}
def myCampos = new JsonSlurper().parseText(params.campos)
myCampos.each{campo ->
//println campo
if(campo.id == '') {
def notaFiscalTextoInstance = new NotaFiscalTextoFixo()
campo['nota'] = notaFiscalConfiguraInstance
bindData(notaFiscalTextoInstance, campo, [include: ['nota', 'campo', 'texto', 'concatenarNumeroRotis']])
if (notaFiscalTextoInstance.validate() == false) {
def erros = []
notaFiscalTextoInstance.errors.allErrors.each {
erros << message(error: it, encodeAs: 'HTML')
}
throw new IllegalStateException(erros.join(', '))
}
notaFiscalTextoInstance.save()
} else {
def notaFiscalTextoInstance = NotaFiscalTextoFixo.get(campo.id)
bindData(notaFiscalTextoInstance, campo, [include: ['nota', 'campo', 'texto', 'concatenarNumeroRotis']])
if (notaFiscalTextoInstance.validate() == false) {
def erros = []
notaFiscalTextoInstance.errors.allErrors.each {
erros << message(error: it, encodeAs: 'HTML')
}
throw new IllegalStateException(erros.join(', '))
}
notaFiscalTextoInstance.save()
}
}
resposta = [status: 1, model: renderNotaFiscalConfigura(notaFiscalConfiguraInstance), mensagem: "Dados salvo com sucesso!"]
}
return resposta
}
def salvar() {
Map result
//println params
try {
if (params.id && (params.id.toLong() > 0)) {
result = update(params)
} else {
result = save(params)
}
} catch(IllegalStateException ise) {
result = [status: 2, mensagem: ise.message]
} catch(Exception e) {
result = [status: 2, mensagem: e.message]
}
render result as JSON
}
if(campo.id == '')-- errado
if(campo.id <=0)-- correto
Para se registrar, clique aqui.