Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Marcos Paulo Cunha Martins

Soma de registros no Nodejs+Mongodb+Express

Recommended Posts

Boa Tarde Colegas,

Tenho um banco mongodb e nele será salvo alguns salários (de acordo com cada cliente) e no final tenho que somar esses salários para mostrar no campo renda_bruta para assim poder utilizar em uma outra expressão.

Pergunta: Eu consigo puxar esses dados direto do banco e fazer a soma ou posso utilizar a tabela dinâmica onde os dados aparecem? Estou com dificuldades para elaborar isso.

Segue códigos:

Tela de Cadastro:____________________________________________________

extends ../layout_cad
block content
div(class='jumbotron2')
br
if messages.info
div(class='alert alert-success')
p #{messages.info}
if messages.erro
div(class='alert alert-danger')
p #{messages.erro}
h3(align='center') MEMBROS DA FAMÍLIA QUE MORAM NA MESMA RESIDÊNCIA, INCLUINDO O TÍTULAR
br
form(method='POST' action='/user/membros/#{id}' role='form' align='center')
div(class="table-a")
div(class='table-a-row')
div(class='table-h')
label Nome Completo
input(type='text' class='form-control' name='membro[nome]' id='nome[]' placeholder='Nome Completo' maxlength='50' autofocus required pattern="[a-z ]+$" onchange="this.setCustomValidity(this.validity.patternMismatch ? 'Permitido somente letras' : '')")
div(class='table-h')
label Data de Nascimento
input(type='text' class='form-control' name='membro[nasc]' placeholder='DDMMAAAA' required onchange="this.setCustomValidity(this.validity.patternMismatch ? 'Entre com o número da Data de nascimento' : '')")
div(class='table-h')
label Grau de Parentesco
input(type='text' class='form-control' name='membro[grau]' placeholder='Parentesco')
div(class='table-h')
label Escolaridade
select(name='membro[escolaridade]' class='form-control dropdown' required)
option(value='' selected disabled hidden) Escolha uma opção
option(value='Analfabeto') Analfabeto
option(value='Creche') Creche
option(value='Pre-escola') Pré-escola
option(value='Ensino Fundamental Completo') Ensino Fundamental Completo
option(value='Ensino Fundamental Incompleto') Ensino Fundamental Incompleto
option(value='Ensino Medio Completo') Ensino Médio Completo
option(value='Ensino Medio Incompleto') Ensino Médio Incompleto
option(value='Ensino Superior Completo') Ensino Superior Completo
option(value='Ensino Superior Incompleto') Ensino Superior Incompleto
div(class='table-h')
label Profissão
input(type='text' class='form-control' name='membro[profissao]' placeholder='Profissão' maxlength='30' required pattern="[a-z ]+$" onchange="this.setCustomValidity(this.validity.patternMismatch ? 'Entre com o nome da Profissão' : '')")
div(class='table-h')
label Trabalho/Benefício
input(type='text' class='form-control' name='membro[trabalho]' placeholder='Onde Trabalha / Benefício' maxlength='30' required pattern="[a-z ]+$" onchange="this.setCustomValidity(this.validity.patternMismatch ? 'Entre com o nome do Trabalho/Benefício' : '')")
div(class='table-h')
label Salário(R$)
input(type='text' class='form-control' name='membro[salario]' placeholder='Salário' maxlength='8')
br
div(class='table-a')
div(class='table-h navbar-right form-group')
button(type='submit' class='btn btn-success') Adicionar Membro
include lista_membros
div(class='table-a')
div(class='table-h navbar-right form-group')
a(href='/user/despesas/#{id}' class='btn btn-success') Continuar
div(class='table-a')
div(class='table-h navbar-right form-group')
a(href='/user/show/#{id}' class='navbar-right' style='font-size: 16px;') Voltar
block scripts
script(src='/js/jquery.mask.min.js')
script(type='text/javascript').
$('input[name="membro[nasc]"]').mask('00/00/0000');
$('input[name="membro[salario]"]').mask("#.##0,00", {reverse: true});
Tela que lista o cadastro acima: ________________________________________________________
block content
if lista.length > 0
div(class='jumbotron3')
table(class='table')
thead
tr
th(style='text-align: center;') Nome
th(style='text-align: center;') Data Nasc.
th(style='text-align: center;') Parentesco
th(style='text-align: center;') Escolaridade
th(style='text-align: center;') Profissão
th(style='text-align: center;') Trabalho/Benefício
th(style='text-align: center;') Salário
th(style='text-align: center;') Ações
tbody(style='text-align: center;')
each valor in lista
tr
td #{valor.nome}
td #{moment(valor.nasc).format('DD/MM/YYYY')}
td #{valor.grau}
td #{valor.escolaridade}
td #{valor.profissao}
td #{valor.trabalho}
td #{valor.salario}
td
a(href="/user/show/#{valor._id}" title="Visualisar" class="btn btn-primary")
span(class="glyphicon glyphicon-search")
else
br
p(align='center') Nenhum registro encontrado!
block scripts
Tela que mostrará os resultados: ______________________________________________________
extends ../layout_cad
block content
div(class='jumbotron2')
br
if messages.info
div(class='alert alert-success')
p #{messages.info}
if messages.erro
div(class='alert alert-danger')
p #{messages.erro}
br
p(class='title') DESPESAS MENSAIS FIXAS DA FAMÍLIA
form(method='POST' action='/user/questoes/#{id}' role='form' align='center')
div(class="table-a")
div(class='table-a-row')
div(class='table-h')
label Alimentação
input(type='text' class='form-control mask' name='despesa[alimentacao]' id='alimentacao' placeholder='Valor com Alimentação' maxlength='8' onkeyup='soma(); somaRendaLiquida(); somaRendaBruta(); somaRendaPercapita();')
div(class='table-h')
label Habitação
select(name='despesa[habitacao]' size='1' class='form-control')
option(value='Propria') Própria
option(value='Alugada') Alugada
option(value='Cedida') Cedida
div(class='table-h')
label Água
input(type='text' class='form-control mask' name='despesa[agua]' id='agua' placeholder='Valor Conta de Água' maxlength='8' onkeyup='soma(); somaRendaLiquida(); somaRendaBruta(); somaRendaPercapita();')
div(class='table-h')
label Luz
input(type='text' class='form-control mask' name='despesa[luz]' id='luz' placeholder='Valor Conta de Luz' maxlength='8' onkeyup='soma(); somaRendaLiquida(); somaRendaBruta(); somaRendaPercapita();')
div(class='table-h')
label IPTU
input(type='text' class='form-control mask' name='despesa[iptu]' id='iptu' placeholder='Valor do IPTU' maxlength='8' onkeyup='soma(); somaRendaLiquida(); somaRendaBruta(); somaRendaPercapita();')
br
div(class='table-a-row')
div(class='table-h')
label Telefone
input(type='text' class='form-control mask' name='despesa[telefone]' id='telefone' placeholder='Valor Conta de Telefone' maxlength='8' onkeyup='soma(); somaRendaLiquida(); somaRendaBruta(); somaRendaPercapita();')
div(class='table-h')
label Mensalidades Escolares
input(type='text' class='form-control mask' name='despesa[mensal_escolar]' id='mensal_escolar' placeholder='Valor Mensalidade Escolar' maxlength='8' onkeyup='soma(); somaRendaLiquida(); somaRendaBruta(); somaRendaPercapita();')
div(class='table-h')
label Transporte
input(type='text' class='form-control mask' name='despesa[transporte]' id='transporte' placeholder='Valor com Transporte' maxlength='8' onkeyup='soma(); somaRendaLiquida(); somaRendaBruta(); somaRendaPercapita();')
div(class='table-h')
label Assistência Médica
input(type='text' class='form-control mask' name='despesa[ass_medica]' id='ass_medica' placeholder='Valor gasto com Assistência Médica' maxlength='8' onkeyup='soma(); somaRendaLiquida(); somaRendaBruta(); somaRendaPercapita();')
div(class='table-h')
label Medicamentos Contínuos
input(type='text' class='form-control mask' name='despesa[medicamentos]' id='medicamentos' placeholder='Valor gasto com Medicamentos' maxlength='8' onkeyup='soma(); somaRendaLiquida(); somaRendaBruta(); somaRendaPercapita();')
br
div(class='table-a-row')
div(class='table-h')
label % para Avaliação
input(type='text' class='form-control' name='despesa[avaliacao]' id='avaliacao' readonly)
div(class='table-h')
label Total de Despesas
input(type='text' class='form-control mask' name='despesa[tot_despesas]' id='tot_despesas' maxlength='8' readonly)
div(class='table-h')
label Renda Bruta
input(type='text' class='form-control mask' name='despesa[renda_bruta]' id='renda_bruta' maxlength='8' readonly)
div(class='table-h')
label Renda LÍquida
input(type='text' class='form-control mask' name='despesa[renda_liquida]' id='renda_liquida' maxlength='8' readonly)
div(class='table-h')
label Renda Per Capita
input(type='text' class='form-control mask' name='despesa[renda_percapita]' id='renda_percapita' maxlength='8' readonly)
br
div(class='table-a')
div(class='table-h navbar-right form-group')
button(type='submit' class='btn btn-success') Salvar e Continuar
div(class='table-a')
div(class='table-h navbar-right form-group navbar-right')
a(href='/user/show/#{id}' class='navbar-right' style='font-size: 16px;') Voltar
block scripts
script(src='/js/jquery.mask.min.js')
script(type='text/javascript').
$('.mask').mask("#.##0,00", {reverse: true});

desde já agradeço,

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vlw galera,

Já consegui ajuda e descobri como se faz.

Fiz uma action e depois usei a varivel no imput que queria:

edit: function(req,res){
var _id = req.params.id;
usuario.findById(_id, function(err, data){
if(err){
req.flash('erro', 'Erro ao editar cadastro ' + err);
res.redirect('/user/show/' + _id);
}else{
var salarios = data.membros.reduce(function(soma, membro){
return soma + membro.salario;
}, 0);
res.render('cadastros/edit_despesa', {user: data, soma: salarios, id: _id});
}
});
},

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.