/// <summary> /// grava no banco de dados uma conta a pagar ou a receber /// </summary> /// <param name="contaContabilidade"></param> /// <param name="_bd">conexao com banco</param> /// <returns>verdadeiro caso inserido com sucesso!</returns> public bool Inserir(ContaContabilidade contaContabilidade, bool abrirT, bool fecharT) { if (abrirT) _bd.IniciarTransacao(); try { _bd.Cmd.Parameters.Clear(); _bd.Cmd.CommandText = @"INSERT INTO `contasContabilidade` (`pagar`, `categoria_id`, `emissao`, `vencimento`, `descricao`, `valor`, `nf`, `pessoa_id`) VALUES ( @pagar, @categoria_id, @emissao, @vencimento, @descricao, @valor, @nf, @pessoa_id)"; _bd.Cmd.Parameters.AddWithValue("@pagar", contaContabilidade.Pagar);//true pagar false receber _bd.Cmd.Parameters.AddWithValue("@categoria_id", contaContabilidade.Categoria.Id); _bd.Cmd.Parameters.AddWithValue("@emissao", contaContabilidade.Emissao);//data de emissao da conta _bd.Cmd.Parameters.AddWithValue("@vencimento", contaContabilidade.Vencimento);//data de vencimento _bd.Cmd.Parameters.AddWithValue("@descricao", contaContabilidade.Descricao); _bd.Cmd.Parameters.AddWithValue("@valor", contaContabilidade.Valor); _bd.Cmd.Parameters.AddWithValue("@nf", contaContabilidade.NotaFiscal == "" ? (object)DBNull.Value : contaContabilidade.NotaFiscal); _bd.Cmd.Parameters.AddWithValue("@pessoa_id", contaContabilidade.Pessoa.Id); if (_bd.ExecuteNonQuery() <= 0)//se nao inserir nenhuma linha { return false; } } catch (Exception) { _bd.CancelarTransacao(); return false; } if (fecharT) _bd.ConfirmarTransacao(); return true; }
/// <summary> /// Grava uma Conta e suas repetições /// </summary> /// <param name="contaContabilidade">Conta a pagar/receber</param> /// <param name="notificacoes"></param> /// <returns>verdadeiro se ok</returns> public bool Lancar(ContaContabilidade contaContabilidade, ref List<Notificacao> notificacoes) { if (!ValidarCampos(contaContabilidade, ref notificacoes)) { return false; } string baseDescricao = contaContabilidade.Descricao;//mantem a descricao padrao e personaliza ;) return true; }
/// <summary> /// Exclui uma ContaContabilidade no Banco de Dados /// </summary> /// <param name="contaContabilidade">conta a ser excluida/desativada</param> /// <returns>verdadeiro se sucesso</returns> public bool Excluir(ContaContabilidade contaContabilidade) { try { _bd.Cmd.Parameters.Clear();//limpa os parametros anteriores _bd.Cmd.CommandText = @"delete from contasContabilidade where id = @contaId"; _bd.Cmd.Parameters.AddWithValue("@contaId", contaContabilidade.Id); if (_bd.ExecuteNonQuery() <= 0)//se nao excluiu nenhuma linha retorna falso { return false; } } catch (Exception)//chave estrangeira desativa e nao exclui! { return false; } return true; }
/// <summary> /// Exclui logicamente uma ContaContabilidade no Banco de Dados /// </summary> /// <param name="contaContabilidade">conta a ser excluida/desativada</param> /// <returns>verdadeiro se sucesso</returns> public bool Desativar(ContaContabilidade contaContabilidade) { try { _bd.Cmd.Parameters.Clear();//limpa os parametros anteriores _bd.Cmd.CommandText = @"update contasContabilidade set excluido = @excluido where id = @contaId"; _bd.Cmd.Parameters.AddWithValue("@excluido", 1);//1 == excluido _bd.Cmd.Parameters.AddWithValue("@contaId", contaContabilidade.Id); if (_bd.ExecuteNonQuery() <= 0)//se nao desativou nenhuma linha { return false; } } catch (Exception) { return false; } return true; }
/// <summary> /// Recupera do banco de dados uma conta a pagar/receber /// </summary> /// <param name="contaContabilidade">conta com id</param> /// <returns>conta </returns> public bool Recuperar(ContaContabilidade contaContabilidade) { try { _bd.Cmd.Parameters.Clear(); _bd.Cmd.CommandText = @"select cc.pagar, cc.categoria_id, cc.emissao, cc.vencimento, cc.descricao, cc.valor, cc.nf, cc.compra_venda_id, pessoa_id, IFNULL((select sum(qc.quitado) from quitacaoConta qc inner join quitacoes q on q.id = qc.quitacao_id where qc.conta_id = cc.id and q.cancelada =0),0)as quitado from contasContabilidade cc where cc.id = @id"; _bd.Cmd.Parameters.AddWithValue("@id", contaContabilidade.Id); DataTable conta = _bd.ExecuteReader(); contaContabilidade.Pagar = Convert.ToBoolean(conta.Rows[0]["pagar"].ToString()); contaContabilidade.Categoria = new Categoria(Convert.ToInt32(conta.Rows[0]["categoria_id"].ToString())); contaContabilidade.Emissao = Convert.ToDateTime(conta.Rows[0]["emissao"].ToString()); contaContabilidade.Vencimento = Convert.ToDateTime(conta.Rows[0]["vencimento"].ToString()); contaContabilidade.Descricao = conta.Rows[0]["descricao"].ToString(); contaContabilidade.Valor = Convert.ToDecimal(conta.Rows[0]["valor"].ToString()); contaContabilidade.NotaFiscal = conta.Rows[0]["nf"].ToString(); contaContabilidade.CompraVenda = new CompraVenda(conta.Rows[0]["compra_venda_id"].ToString() == "" ? 0 : Convert.ToInt32(conta.Rows[0]["compra_venda_id"].ToString())); contaContabilidade.ValorQuitado = conta.Rows[0]["quitado"].ToString() == "" ? 0 : Convert.ToDecimal(conta.Rows[0]["quitado"].ToString()); contaContabilidade.Pessoa = new Pessoa(Convert.ToInt32(conta.Rows[0]["pessoa_id"].ToString())); } catch (Exception) { return false; } return true; }
/// <summary> /// valida os campos pertinentes a conta /// </summary> /// <param name="contaContabilidade">conta a ser lançada</param> /// <param name="notificacoes"></param> /// <returns></returns> private bool ValidarCampos(ContaContabilidade contaContabilidade, ref List<Notificacao> notificacoes) { Notificacao temp; bool validou = true; if (contaContabilidade.Descricao.Length < 5 || contaContabilidade.Descricao.Length > 30) { notificacoes.Add(new Notificacao("A descrição é obrigatória e deve conter entre 5 a 30 caracteres", 'e')); validou = false; } //valida valor if (contaContabilidade.Valor <= 0 || !new UtilCtrl().Decimal(contaContabilidade.Valor.ToString(), out temp)) { notificacoes.Add(new Notificacao( "O valor deve ser um decimal positivo maior que zero", 'e')); validou = false; } //valida pessoa if (!new PessoaCtrl().Recuperar(contaContabilidade.Pessoa, out temp, true))//minimo de pessoa! { notificacoes.Add(new Notificacao("Pessoa informada não está cadastrada, informe uma pessoa cadastrada!", 'e')); validou = false; } //valida categoria if (!new CategoriaContaCtrl().Recuperar(contaContabilidade.Categoria, out temp)) { notificacoes.Add(new Notificacao("Categoria da Conta informada não está cadastrada, informe uma Categoria de Conta cadastrada", 'e')); validou = false; } //valida dt emissao if (contaContabilidade.Emissao.ToShortDateString() == "01/01/0001") { notificacoes.Add(new Notificacao("É necessário informar a data de Emissao, data invalida", 'e')); validou = false; } //valida dt vcto if (contaContabilidade.Vencimento.ToShortDateString() == "01/01/0001") { notificacoes.Add(new Notificacao("É necessário informar a data de Vencimento, data invalida", 'e')); validou = false; } return validou; }
/// <summary> /// recupera um lancamento da contabilidade /// </summary> /// <param name="contaContabilidade"></param> /// <param name="notificacoes"></param> /// <returns></returns> public bool Recuperar(ContaContabilidade contaContabilidade, ref List<Notificacao> notificacoes, bool edicao = false) { if (!new ContaContabilidadeBD().Recuperar(contaContabilidade)) { notificacoes.Add(new Notificacao("Erro de Banco de Dados, notifique o Administrador", 'e')); return false; } if (contaContabilidade.ValorQuitado > 0) { notificacoes.Add(new Notificacao("A conta informada não pode ser alterada/excluida pois contem vinculo com " + (contaContabilidade.Pagar ? "pagamento(s)" : "recebimento(s)"), 'a')); return false; } return true; }