//Função para conciliar public void startConc() { //Percorrer todos os movimentos foreach (OFX_Movimento mov in movimentos) { //Verificar se a data do movimento maior data atual evitando //lançamentos futuros do extrato if (mov.Data.Date <= DateTime.Now.Date) { //Verifica se já não existe o movimento evitando duplicidade Decimal valor = Convert.ToDecimal(mov.Valor); using (var objVerExiste = new dbGerenciadorEntities()) { //FALTOU TESTAR - QUANDO INCLUIR MOVIMENTO var query = from conv in objVerExiste.Movimento where (conv.data == mov.Data.Date && conv.valor == valor && conv.descricao == mov.Descricao) select conv; var ListaFinal = query.ToList(); //Não tem duplicidade if (ListaFinal.Count == 0) { using (var objPesqVctoValor = new dbGerenciadorEntities()) { //Primeira pesquisa por Vencimento e Valor var queryTitulo = from titulo in objPesqVctoValor.Titulo join relacao in objPesqVctoValor.Relacao on titulo.relacao equals relacao.id where (titulo.vencimento == mov.Data.Date && titulo.valor == valor && titulo.baixado == null) select new { titulo.id, titulo.numero, relacao.Nome, titulo.tipo, titulo.parcela, titulo.valor, titulo.vencimento, titulo.natureza, titulo.descricao }; var ListaTitulos = queryTitulo.ToList(); //A primeira pesquisa retornou valor if (ListaTitulos.Count != 0) { //Exibe o formulario com todos os titulos encontrado possibilitando a baixa frmConcilia.Conciliado passar = new frmConcilia.Conciliado(); frmConcilia formConcilia = new frmConcilia(ListaTitulos, mov, ref passar); formConcilia.ShowDialog(); //Obtem o numero da conta string[] split = agConta.Split('/'); //Depois do split realiza a conversão para inteiro int conta = Convert.ToInt32(split[1]); //Adiciona o numero da conta a classe conciliado passar.conta = conta; lstConciliado.Add(passar); } else { using (var objPesqValor = new dbGerenciadorEntities()) { //Se a primeira pesquisa não retornar vamos pesquisar apenas por valor que não tenha //sida anteriormente baixados var queryTitulo_val = from titulo in objPesqValor.Titulo join relacao in objPesqValor.Relacao on titulo.relacao equals relacao.id where titulo.valor == valor && titulo.baixado == null select new { titulo.id, titulo.numero, relacao.Nome, titulo.tipo, titulo.parcela, titulo.valor, titulo.vencimento, titulo.natureza, titulo.descricao }; var ListaTitulos_val = queryTitulo_val.ToList(); //A primeira pesquisa retornou valor if (ListaTitulos_val.Count != 0) { //Exibe o formulario com todos os titulos encontrado possibilitando a baixa frmConcilia.Conciliado passar = new frmConcilia.Conciliado(); frmConcilia formConcilia = new frmConcilia(ListaTitulos_val, mov, ref passar); formConcilia.ShowDialog(); //Obtem o numero da conta string[] split = agConta.Split('/'); //Depois do split realiza a conversão para inteiro int conta = Convert.ToInt32(split[1]); //Adiciona o numero da conta a classe conciliado passar.conta = conta; lstConciliado.Add(passar); } //Nenhuma pesquisa retornou agora precisamos cadastrar o titulo else { //Exibir Formulario para cadastrar ou editar Titulo //Informações do movimento para cadastrar um titulo DateTime dtMovimento = mov.Data; Double vlMovimento = mov.Valor; MessageBox.Show("Título não encontrado:" + Environment.NewLine + "Data: " + dtMovimento.Date + Environment.NewLine + "Valor: " + vlMovimento + Environment.NewLine + "Descrição: " + mov.Descricao, "Titulo x Movimento", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1); frmCadTitulo cadMovimento = new frmCadTitulo(dtMovimento, vlMovimento); cadMovimento.ShowDialog(); //Apos abrir o formulario realiza de novo busca using (var objNovaPesq = new dbGerenciadorEntities()) { //Primeira pesquisa por Vencimento e Valor var queryNovoTitulo = from titulo in objNovaPesq.Titulo join relacao in objNovaPesq.Relacao on titulo.relacao equals relacao.id where (titulo.vencimento == mov.Data.Date && titulo.valor == valor && titulo.baixado == null) select new { titulo.id, titulo.numero, relacao.Nome, titulo.tipo, titulo.parcela, titulo.valor, titulo.vencimento, titulo.natureza, titulo.descricao }; var ListaNovosTitulos = queryNovoTitulo.ToList(); //Verifica se houve retorno if (ListaNovosTitulos.Count != 0) { //Exibe o formulario com todos os titulos encontrado possibilitando a baixa frmConcilia.Conciliado passar = new frmConcilia.Conciliado(); frmConcilia formConcilia = new frmConcilia(ListaNovosTitulos, mov, ref passar); formConcilia.ShowDialog(); //Obtem o numero da conta string[] split = agConta.Split('/'); //Depois do split realiza a conversão para inteiro int conta = Convert.ToInt32(split[1]); //Adiciona o numero da conta a classe conciliado passar.conta = conta; lstConciliado.Add(passar); } } } }//Segundo using } }//Terceiro using } else { MessageBox.Show("O Movimento já está cadastrado!", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1); } }//using } }//Fim do foreach //Aqui verificar se a lstConciliado não é vazia se não for vazia //loop na lista inserindo na tabela movimento e atualizando a tabela titulo if (lstConciliado.Count != 0) { MessageBox.Show("Vamos efetuar as alterações na base de dados", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1); foreach (frmConcilia.Conciliado movBanco in lstConciliado) { //Incluir as informações na tabela Movimento Gerenciador.Data.dbGerenciadorEntities objGerenciador = new Gerenciador.Data.dbGerenciadorEntities(); var objMovimento = new Gerenciador.Data.Movimento(); objMovimento.data = movBanco.dtMovimento; objMovimento.tipo = movBanco.tipo; objMovimento.valor = Convert.ToDecimal(movBanco.vlBaixado); objMovimento.numero = Convert.ToString(movBanco.numero); objMovimento.descricao = movBanco.descricao; objMovimento.conta = movBanco.conta; objMovimento.id_titulo = movBanco.idTitulo; objGerenciador.AddToMovimento(objMovimento); objGerenciador.SaveChanges(); //Atualiza a tabela Titulo using (var objUpdate = new dbGerenciadorEntities()) { var objTitulo = new Gerenciador.Data.Titulo(); objTitulo = (from conv in objUpdate.Titulo where conv.id == movBanco.idTitulo select conv).First(); objTitulo.baixado = Convert.ToString(movBanco.baixado); objTitulo.dta_baixa = movBanco.dtMovimento; objTitulo.vlr_pagamento = Convert.ToDecimal(movBanco.vlBaixado); objTitulo.conta_baixa = movBanco.conta; objUpdate.SaveChanges(); } }//FIm loop da inclusão MessageBox.Show("Atualizações efetuadas com sucesso!", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1); }//Fim atualização banco de dados }
//Função para conciliar public void startConc() { //Percorrer todos os movimentos foreach (OFX_Movimento mov in movimentos) { //Verificar se a data do movimento maior data atual evitando //lançamentos futuros do extrato if (mov.Data.Date <= DateTime.Now.Date) { //Verifica se já não existe o movimento evitando duplicidade Decimal valor = Convert.ToDecimal(mov.Valor); using (var objVerExiste = new dbGerenciadorEntities()) { //FALTOU TESTAR - QUANDO INCLUIR MOVIMENTO var query = from conv in objVerExiste.Movimento where (conv.data == mov.Data.Date && conv.valor == valor && conv.descricao == mov.Descricao) select conv; var ListaFinal = query.ToList(); //Não tem duplicidade if (ListaFinal.Count == 0) { using (var objPesqVctoValor = new dbGerenciadorEntities()) { //Primeira pesquisa por Vencimento e Valor var queryTitulo = from titulo in objPesqVctoValor.Titulo join relacao in objPesqVctoValor.Relacao on titulo.relacao equals relacao.id where (titulo.vencimento == mov.Data.Date && titulo.valor == valor && titulo.baixado == null) select new { titulo.id, titulo.numero, relacao.Nome, titulo.tipo, titulo.parcela, titulo.valor, titulo.vencimento, titulo.natureza, titulo.descricao }; var ListaTitulos = queryTitulo.ToList(); //A primeira pesquisa retornou valor if (ListaTitulos.Count != 0) { //Exibe o formulario com todos os titulos encontrado possibilitando a baixa frmConcilia.Conciliado passar = new frmConcilia.Conciliado(); frmConcilia formConcilia = new frmConcilia(ListaTitulos, mov, ref passar); formConcilia.ShowDialog(); //Obtem o numero da conta string[] split = agConta.Split('/'); //Depois do split realiza a conversão para inteiro int conta = Convert.ToInt32(split[1]); //Adiciona o numero da conta a classe conciliado passar.conta = conta; lstConciliado.Add(passar); } else { using (var objPesqValor = new dbGerenciadorEntities()) { //Se a primeira pesquisa não retornar vamos pesquisar apenas por valor que não tenha //sida anteriormente baixados var queryTitulo_val = from titulo in objPesqValor.Titulo join relacao in objPesqValor.Relacao on titulo.relacao equals relacao.id where titulo.valor == valor && titulo.baixado == null select new { titulo.id, titulo.numero, relacao.Nome, titulo.tipo, titulo.parcela, titulo.valor, titulo.vencimento, titulo.natureza, titulo.descricao }; var ListaTitulos_val = queryTitulo_val.ToList(); //A primeira pesquisa retornou valor if (ListaTitulos_val.Count != 0) { //Exibe o formulario com todos os titulos encontrado possibilitando a baixa frmConcilia.Conciliado passar = new frmConcilia.Conciliado(); frmConcilia formConcilia = new frmConcilia(ListaTitulos_val, mov, ref passar); formConcilia.ShowDialog(); //Obtem o numero da conta string[] split = agConta.Split('/'); //Depois do split realiza a conversão para inteiro int conta = Convert.ToInt32(split[1]); //Adiciona o numero da conta a classe conciliado passar.conta = conta; lstConciliado.Add(passar); } //Nenhuma pesquisa retornou agora precisamos cadastrar o titulo else { //Exibir Formulario para cadastrar ou editar Titulo //Informações do movimento para cadastrar um titulo DateTime dtMovimento = mov.Data; Double vlMovimento = mov.Valor; MessageBox.Show("Título não encontrado:" + Environment.NewLine + "Data: " + dtMovimento.Date + Environment.NewLine + "Valor: " + vlMovimento + Environment.NewLine + "Descrição: " + mov.Descricao, "Titulo x Movimento", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1); frmCadTitulo cadMovimento = new frmCadTitulo(dtMovimento, vlMovimento); cadMovimento.ShowDialog(); //Apos abrir o formulario realiza de novo busca using (var objNovaPesq = new dbGerenciadorEntities()) { //Primeira pesquisa por Vencimento e Valor var queryNovoTitulo = from titulo in objNovaPesq.Titulo join relacao in objNovaPesq.Relacao on titulo.relacao equals relacao.id where (titulo.vencimento == mov.Data.Date && titulo.valor == valor && titulo.baixado == null) select new { titulo.id, titulo.numero, relacao.Nome, titulo.tipo, titulo.parcela, titulo.valor, titulo.vencimento, titulo.natureza, titulo.descricao }; var ListaNovosTitulos = queryNovoTitulo.ToList(); //Verifica se houve retorno if (ListaNovosTitulos.Count != 0) { //Exibe o formulario com todos os titulos encontrado possibilitando a baixa frmConcilia.Conciliado passar = new frmConcilia.Conciliado(); frmConcilia formConcilia = new frmConcilia(ListaNovosTitulos, mov, ref passar); formConcilia.ShowDialog(); //Obtem o numero da conta string[] split = agConta.Split('/'); //Depois do split realiza a conversão para inteiro int conta = Convert.ToInt32(split[1]); //Adiciona o numero da conta a classe conciliado passar.conta = conta; lstConciliado.Add(passar); } } } } //Segundo using } } //Terceiro using } else { MessageBox.Show("O Movimento já está cadastrado!", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1); } } //using } } //Fim do foreach //Aqui verificar se a lstConciliado não é vazia se não for vazia //loop na lista inserindo na tabela movimento e atualizando a tabela titulo if (lstConciliado.Count != 0) { MessageBox.Show("Vamos efetuar as alterações na base de dados", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1); foreach (frmConcilia.Conciliado movBanco in lstConciliado) { //Incluir as informações na tabela Movimento Gerenciador.Data.dbGerenciadorEntities objGerenciador = new Gerenciador.Data.dbGerenciadorEntities(); var objMovimento = new Gerenciador.Data.Movimento(); objMovimento.data = movBanco.dtMovimento; objMovimento.tipo = movBanco.tipo; objMovimento.valor = Convert.ToDecimal(movBanco.vlBaixado); objMovimento.numero = Convert.ToString(movBanco.numero); objMovimento.descricao = movBanco.descricao; objMovimento.conta = movBanco.conta; objMovimento.id_titulo = movBanco.idTitulo; objGerenciador.AddToMovimento(objMovimento); objGerenciador.SaveChanges(); //Atualiza a tabela Titulo using (var objUpdate = new dbGerenciadorEntities()) { var objTitulo = new Gerenciador.Data.Titulo(); objTitulo = (from conv in objUpdate.Titulo where conv.id == movBanco.idTitulo select conv).First(); objTitulo.baixado = Convert.ToString(movBanco.baixado); objTitulo.dta_baixa = movBanco.dtMovimento; objTitulo.vlr_pagamento = Convert.ToDecimal(movBanco.vlBaixado); objTitulo.conta_baixa = movBanco.conta; objUpdate.SaveChanges(); } }//FIm loop da inclusão MessageBox.Show("Atualizações efetuadas com sucesso!", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1); }//Fim atualização banco de dados }
//Confirmar inclusão private void btnConfirmaTitulo_Click(object sender, EventArgs e) { //Função de validação Validar valida = new Validar(); if (valida.valCampoVazio(this.Controls) == true) { if (Convert.ToInt32(txtParcelaTitulo.Text) >= 1) { //Carrega o tipo do titulo correto loadTipo(); //Verifica se é para alterar ou para incluir //ALTERAR if (altera == true) { //Acerta o valor de acordo com a operação (Positivo ou Negativo) acertaPosNeg(); //Prorroga Vencimento proximo dia util DateTime alteraVencimento = fimSemana(); using (var objGerenciador = new dbGerenciadorEntities()) { var objTitulo = new Gerenciador.Data.Titulo(); //Seleciona o registro a ser alterado pela sua ID objTitulo = (from conv in objGerenciador.Titulo where conv.id == _id select conv).First(); //Alterações objTitulo.numero = Convert.ToInt32(txtNumeroTitulo.Text); objTitulo.relacao = Convert.ToInt32(cmbRelacaoTitulo.SelectedValue); objTitulo.tipo = Convert.ToString(cmbTipoTitulo.Text); objTitulo.qtd_parcela = Convert.ToInt32(txtParcelaTitulo.Text); objTitulo.valor = Convert.ToDecimal(txtValorTitulo.Text); objTitulo.vencimento = alteraVencimento; objTitulo.parcela = Convert.ToInt32(txtParcelaTitulo.Text); objTitulo.natureza = Convert.ToString(cmbNaturezaTitulo.SelectedValue); objTitulo.descricao = txtDescricaoTitulo.Text; objTitulo.codigoBarras = txtCodBar.Text; //Grava no banco objGerenciador.SaveChanges(); MessageBox.Show("Titulo Alterado com sucesso!", "Alterações", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button2); //Apos alterar fecha ou reinicializa o formulario if (vemOfx == true) { reloadForm(); } else { this.Close(); } } } //INCLUIR else { //Verifica se o titulo já não esta cadastrado using (var objGerenciador1 = new dbGerenciadorEntities()) { int tituloNumero = Convert.ToInt32(txtNumeroTitulo.Text); int relacaoNumero = Convert.ToInt32(cmbRelacaoTitulo.SelectedValue); decimal valor = Convert.ToDecimal(txtValorTitulo.Text); DateTime vcto = Convert.ToDateTime(dtpVctoTitulo.Text); var query = from conv in objGerenciador1.Titulo where (conv.numero == tituloNumero && conv.relacao == relacaoNumero && conv.valor == valor && conv.vencimento == vcto) select conv; var ListaBanco = query.ToList(); //Titulo não está cadastrado if (ListaBanco.Count == 0) { //Acerta o valor de acordo com a operação (Positivo ou Negativo) acertaPosNeg(); //Prorroga o titulo proximo dia util DateTime vencimento = new DateTime(); vencimento = fimSemana(); //Realizar loop de acordo com numero de parcelas int numeroParcelas = Convert.ToInt32(txtParcelaTitulo.Text); for (int i = 0; i < numeroParcelas; i++) { //Incluir Gerenciador.Data.dbGerenciadorEntities objGerenciador = new Gerenciador.Data.dbGerenciadorEntities(); var objTitulo = new Gerenciador.Data.Titulo(); objTitulo.numero = Convert.ToInt32(txtNumeroTitulo.Text); objTitulo.relacao = Convert.ToInt32(cmbRelacaoTitulo.SelectedValue); objTitulo.tipo = Convert.ToString(cmbTipoTitulo.Text); objTitulo.qtd_parcela = Convert.ToInt32(txtParcelaTitulo.Text); objTitulo.valor = (Convert.ToDecimal(txtValorTitulo.Text) / numeroParcelas); // Valor total divido pelas parcelas objTitulo.vencimento = vencimento; objTitulo.parcela = (i + 1); //Incrementa a parcela objTitulo.natureza = Convert.ToString(cmbNaturezaTitulo.SelectedValue); objTitulo.descricao = txtDescricaoTitulo.Text; objTitulo.codigoBarras = txtCodBar.Text; //Realiza a inclusão objGerenciador.AddToTitulo(objTitulo); objGerenciador.SaveChanges(); //Incrementa mês vencimento = vencimento.AddMonths(1); //Joga para proximo dia util quando sabado ou domingo if (vencimento.DayOfWeek == DayOfWeek.Saturday) { vencimento = vencimento.AddDays(2); } else if (vencimento.DayOfWeek == DayOfWeek.Sunday) { vencimento = vencimento.AddDays(1); } } MessageBox.Show("Titulo Cadastrado com sucesso!", "Cadastro", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button2); //Verifica de onde vem OFX ou manual e da o tratamento if (vemOfx == false) { reloadForm(); } else { this.Close(); } } else { //Mensagem caso o titulo exista MessageBox.Show("Titulo já existe verifique!", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button2); } } } } else { MessageBox.Show("Parcela não pode ser menor que 1", "Aviso"); txtParcelaTitulo.Text = ""; txtParcelaTitulo.Focus(); } } }
/// <summary> /// Deprecated Method for adding a new object to the Titulo EntitySet. Consider using the .Add method of the associated ObjectSet<T> property instead. /// </summary> public void AddToTitulo(Titulo titulo) { base.AddObject("Titulo", titulo); }
/// <summary> /// Create a new Titulo object. /// </summary> /// <param name="id">Initial value of the id property.</param> /// <param name="numero">Initial value of the numero property.</param> /// <param name="relacao">Initial value of the relacao property.</param> /// <param name="tipo">Initial value of the tipo property.</param> /// <param name="qtd_parcela">Initial value of the qtd_parcela property.</param> /// <param name="valor">Initial value of the valor property.</param> /// <param name="vencimento">Initial value of the vencimento property.</param> /// <param name="natureza">Initial value of the natureza property.</param> public static Titulo CreateTitulo(global::System.Int32 id, global::System.Int32 numero, global::System.Int32 relacao, global::System.String tipo, global::System.Int32 qtd_parcela, global::System.Decimal valor, global::System.DateTime vencimento, global::System.String natureza) { Titulo titulo = new Titulo(); titulo.id = id; titulo.numero = numero; titulo.relacao = relacao; titulo.tipo = tipo; titulo.qtd_parcela = qtd_parcela; titulo.valor = valor; titulo.vencimento = vencimento; titulo.natureza = natureza; return titulo; }
//Confirmar inclusão private void btnConfirmaTitulo_Click(object sender, EventArgs e) { //Função de validação Validar valida = new Validar(); if (valida.valCampoVazio(this.Controls) == true) { if (Convert.ToInt32(txtParcelaTitulo.Text) >= 1) { //Carrega o tipo do titulo correto loadTipo(); //Verifica se é para alterar ou para incluir //ALTERAR if (altera == true) { //Acerta o valor de acordo com a operação (Positivo ou Negativo) acertaPosNeg(); //Prorroga Vencimento proximo dia util DateTime alteraVencimento = fimSemana(); using (var objGerenciador = new dbGerenciadorEntities()) { var objTitulo = new Gerenciador.Data.Titulo(); //Seleciona o registro a ser alterado pela sua ID objTitulo = (from conv in objGerenciador.Titulo where conv.id == _id select conv).First(); //Alterações objTitulo.numero = Convert.ToInt32(txtNumeroTitulo.Text); objTitulo.relacao = Convert.ToInt32(cmbRelacaoTitulo.SelectedValue); objTitulo.tipo = Convert.ToString(cmbTipoTitulo.Text); objTitulo.qtd_parcela = Convert.ToInt32(txtParcelaTitulo.Text); objTitulo.valor = Convert.ToDecimal(txtValorTitulo.Text); objTitulo.vencimento = alteraVencimento; objTitulo.parcela = Convert.ToInt32(txtParcelaTitulo.Text); objTitulo.natureza = Convert.ToString(cmbNaturezaTitulo.SelectedValue); objTitulo.descricao = txtDescricaoTitulo.Text; objTitulo.codigoBarras = txtCodBar.Text; //Grava no banco objGerenciador.SaveChanges(); MessageBox.Show("Titulo Alterado com sucesso!", "Alterações", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button2); //Apos alterar fecha ou reinicializa o formulario if (vemOfx == true) { reloadForm(); } else { this.Close(); } } } //INCLUIR else { //Verifica se o titulo já não esta cadastrado using (var objGerenciador1 = new dbGerenciadorEntities()) { int tituloNumero = Convert.ToInt32(txtNumeroTitulo.Text); int relacaoNumero = Convert.ToInt32(cmbRelacaoTitulo.SelectedValue); decimal valor = Convert.ToDecimal(txtValorTitulo.Text); DateTime vcto = Convert.ToDateTime(dtpVctoTitulo.Text); var query = from conv in objGerenciador1.Titulo where (conv.numero == tituloNumero && conv.relacao == relacaoNumero && conv.valor == valor && conv.vencimento == vcto) select conv; var ListaBanco = query.ToList(); //Titulo não está cadastrado if (ListaBanco.Count == 0) { //Acerta o valor de acordo com a operação (Positivo ou Negativo) acertaPosNeg(); //Prorroga o titulo proximo dia util DateTime vencimento = new DateTime(); vencimento = fimSemana(); //Realizar loop de acordo com numero de parcelas int numeroParcelas = Convert.ToInt32(txtParcelaTitulo.Text); for (int i = 0; i < numeroParcelas; i++) { //Incluir Gerenciador.Data.dbGerenciadorEntities objGerenciador = new Gerenciador.Data.dbGerenciadorEntities(); var objTitulo = new Gerenciador.Data.Titulo(); objTitulo.numero = Convert.ToInt32(txtNumeroTitulo.Text); objTitulo.relacao = Convert.ToInt32(cmbRelacaoTitulo.SelectedValue); objTitulo.tipo = Convert.ToString(cmbTipoTitulo.Text); objTitulo.qtd_parcela = Convert.ToInt32(txtParcelaTitulo.Text); objTitulo.valor = (Convert.ToDecimal(txtValorTitulo.Text) / numeroParcelas); // Valor total divido pelas parcelas objTitulo.vencimento = vencimento; objTitulo.parcela = (i + 1);//Incrementa a parcela objTitulo.natureza = Convert.ToString(cmbNaturezaTitulo.SelectedValue); objTitulo.descricao = txtDescricaoTitulo.Text; objTitulo.codigoBarras = txtCodBar.Text; //Realiza a inclusão objGerenciador.AddToTitulo(objTitulo); objGerenciador.SaveChanges(); //Incrementa mês vencimento = vencimento.AddMonths(1); //Joga para proximo dia util quando sabado ou domingo if (vencimento.DayOfWeek == DayOfWeek.Saturday) { vencimento = vencimento.AddDays(2); } else if (vencimento.DayOfWeek == DayOfWeek.Sunday) { vencimento = vencimento.AddDays(1); } } MessageBox.Show("Titulo Cadastrado com sucesso!", "Cadastro", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button2); //Verifica de onde vem OFX ou manual e da o tratamento if (vemOfx == false) { reloadForm(); } else { this.Close(); } } else { //Mensagem caso o titulo exista MessageBox.Show("Titulo já existe verifique!", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button2); } } } } else { MessageBox.Show("Parcela não pode ser menor que 1", "Aviso"); txtParcelaTitulo.Text = ""; txtParcelaTitulo.Focus(); } } }
//Função para conciliar public void startConc() { //Varivel que finalizara tudo caso o titulo não seja cadastrado bool sair; sair = false; //Percorrer todos os movimentos foreach (OFX_Movimento mov in movimentos) { //Verificar se a data do movimento maior data atual evitando //lançamentos futuros do extrato if (mov.Data.Date <= DateTime.Now.Date) { //Verifica se já não existe o movimento evitando duplicidade Decimal valor = Convert.ToDecimal(mov.Valor); using (var objVerExiste = new dbGerenciadorEntities()) { //Arrumei fazendo estas conversões pois não altera o banco //Na hora de salvar na tabela movimento o parametro transforma em string em int //Agora temos que fazer o contrario int ID = Convert.ToInt32(mov.Id); string sID = Convert.ToString(ID); var query = from conv in objVerExiste.Movimento where (conv.data == mov.Data.Date && conv.valor == valor && conv.numero == sID) select conv; var ListaFinal = query.ToList(); //Não tem duplicidade if (ListaFinal.Count == 0) { using (var objPesqVctoValor = new dbGerenciadorEntities()) { //Primeira pesquisa por Vencimento e Valor de titulos que não tenham sido baixados var queryTitulo = from titulo in objPesqVctoValor.Titulo join relacao in objPesqVctoValor.Relacao on titulo.relacao equals relacao.id where (titulo.vencimento == mov.Data.Date && titulo.valor == valor && titulo.baixado == null) select new { titulo.id, titulo.numero, relacao.Nome, titulo.tipo, titulo.parcela, titulo.valor, titulo.vencimento, titulo.natureza, titulo.descricao }; var ListaTitulos = queryTitulo.ToList(); //A primeira pesquisa retornou valor if (ListaTitulos.Count != 0) { //Exibe o formulario com todos os titulos encontrado possibilitando escolha do titulo para baixa //Cria uma lista que será passada como ponteiro(ref) ao formulario concilia //Para que as alterações permanecam apos o fechamento do formulario frmConcilia.Conciliado passar = new frmConcilia.Conciliado(); //Chama o formulario passando os objects retornados da busca com vencimento e valor, o movimento do OFX // e a lista de referência que será alterada frmConcilia formConcilia = new frmConcilia(ListaTitulos, mov, ref passar); formConcilia.ShowDialog(); //Obtem o numero da conta string[] split = agConta.Split('/'); //Depois do split realiza a conversão para inteiro int conta = Convert.ToInt32(split[1]); //Adiciona o numero da conta a classe conciliado passar.conta = conta; //Adiciona a lista de referência a lista de conciliados lstConciliado.Add(passar); } else { using (var objPesqValor = new dbGerenciadorEntities()) { //Se a primeira pesquisa não retornar vamos pesquisar apenas por valor que não tenha //sida anteriormente baixados var queryTitulo_val = from titulo in objPesqValor.Titulo join relacao in objPesqValor.Relacao on titulo.relacao equals relacao.id where titulo.valor == valor && titulo.baixado == null select new { titulo.id, titulo.numero, relacao.Nome, titulo.tipo, titulo.parcela, titulo.valor, titulo.vencimento, titulo.natureza, titulo.descricao }; var ListaTitulos_val = queryTitulo_val.ToList(); //A primeira pesquisa retornou valor if (ListaTitulos_val.Count != 0) { //Exibe o formulario com todos os titulos encontrado possibilitando escolha do titulo para baixa //Cria uma lista que será passada como ponteiro(ref) ao formulario concilia //Para que as alterações permanecam apos o fechamento do formulario frmConcilia.Conciliado passar = new frmConcilia.Conciliado(); //Chama o formulario passando os objects retornados da busca com vencimento e valor, o movimento do OFX // e a lista de referência que será alterada frmConcilia formConcilia = new frmConcilia(ListaTitulos_val, mov, ref passar); formConcilia.ShowDialog(); //Obtem o numero da conta string[] split = agConta.Split('/'); //Depois do split realiza a conversão para inteiro int conta = Convert.ToInt32(split[1]); //Adiciona o numero da conta a classe conciliado passar.conta = conta; lstConciliado.Add(passar); } //Nenhuma pesquisa retornou agora precisamos cadastrar o titulo else { //Exibir Formulario para cadastrar ou editar Titulo //Informações do movimento para cadastrar um titulo DateTime dtMovimento = mov.Data; Double vlMovimento = mov.Valor; //Exibe informação sobre o movimento sem titulo correnpondente encontrado MessageBox.Show("Título não encontrado:" + Environment.NewLine + "Data: " + dtMovimento.Date + Environment.NewLine + "Valor: " + vlMovimento + Environment.NewLine + "Descrição: " + mov.Descricao, "Titulo x Movimento", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1); //Exibe o formulario para cadastrar o titulo frmCadTitulo cadMovimento = new frmCadTitulo(dtMovimento, vlMovimento); cadMovimento.ShowDialog(); //Apos fechar o formulario realiza de novo busca using (var objNovaPesq = new dbGerenciadorEntities()) { //Primeira pesquisa por Vencimento e Valor var queryNovoTitulo = from titulo in objNovaPesq.Titulo join relacao in objNovaPesq.Relacao on titulo.relacao equals relacao.id where (titulo.vencimento == mov.Data.Date && titulo.valor == valor && titulo.baixado == null) select new { titulo.id, titulo.numero, relacao.Nome, titulo.tipo, titulo.parcela, titulo.valor, titulo.vencimento, titulo.natureza, titulo.descricao }; var ListaNovosTitulos = queryNovoTitulo.ToList(); //Verifica se houve retorno if (ListaNovosTitulos.Count != 0) { //Exibe o formulario com todos os titulos encontrado possibilitando a baixa frmConcilia.Conciliado passar = new frmConcilia.Conciliado(); frmConcilia formConcilia = new frmConcilia(ListaNovosTitulos, mov, ref passar); formConcilia.ShowDialog(); //Obtem o numero da conta string[] split = agConta.Split('/'); //Depois do split realiza a conversão para inteiro int conta = Convert.ToInt32(split[1]); //Adiciona o numero da conta a classe conciliado passar.conta = conta; lstConciliado.Add(passar); } else { MessageBox.Show("Titulo ainda não foi cadastrado" + Environment.NewLine + "Para garantir a integridade do processo não podemos continuar" + Environment.NewLine + "Cadastre o titulo e tente novamente", "Aviso"); //Como se diz para garantir integridade não podemos terminar conciliação sem cadastrar //todos os titulos que estão no movimento OFX sair = true; break; } } } } //Segundo using } } //Terceiro using } else { MessageBox.Show("O Movimento já está cadastrado!", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1); } }//using } //Condição quando a data do movimento for maior que a data atual (evitando lançamento futuros) que mudam descrição else { MessageBox.Show("Lançamento com data futura não será incluido nesta conciliação." + Environment.NewLine + "será importado no documento com a data correta", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1); } }//Fim do foreach //Aqui verificar se a lstConciliado não é vazia se não for vazia //loop na lista inserindo na tabela movimento e atualizando a tabela titulo if (lstConciliado.Count != 0 && sair == false) { MessageBox.Show("Vamos efetuar as alterações na base de dados", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1); foreach (frmConcilia.Conciliado movBanco in lstConciliado) { //Incluir as informações na tabela Movimento Gerenciador.Data.dbGerenciadorEntities objGerenciador = new Gerenciador.Data.dbGerenciadorEntities(); var objMovimento = new Gerenciador.Data.Movimento(); objMovimento.data = movBanco.dtMovimento; objMovimento.tipo = movBanco.tipo; objMovimento.valor = Convert.ToDecimal(movBanco.vlBaixado); objMovimento.numero = Convert.ToString(movBanco.numero); objMovimento.descricao = movBanco.descricao; objMovimento.conta = movBanco.conta; objMovimento.id_titulo = movBanco.idTitulo; objGerenciador.AddToMovimento(objMovimento); objGerenciador.SaveChanges(); //Atualiza a tabela Titulo ( Com data da baixa, valor pago, em que banco foi pago) using (var objUpdate = new dbGerenciadorEntities()) { var objTitulo = new Gerenciador.Data.Titulo(); objTitulo = (from conv in objUpdate.Titulo where conv.id == movBanco.idTitulo select conv).First(); objTitulo.baixado = Convert.ToString(movBanco.baixado); objTitulo.dta_baixa = movBanco.dtMovimento; objTitulo.vlr_pagamento = Convert.ToDecimal(movBanco.vlBaixado); objTitulo.conta_baixa = movBanco.conta; objUpdate.SaveChanges(); } }//FIm loop da inclusão MessageBox.Show("Atualizações efetuadas com sucesso!", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1); }//Fim atualização banco de dados }
//Função para conciliar public void startConc() { //Varivel que finalizara tudo caso o titulo não seja cadastrado bool sair; sair = false; //Percorrer todos os movimentos foreach (OFX_Movimento mov in movimentos) { //Verificar se a data do movimento maior data atual evitando //lançamentos futuros do extrato if (mov.Data.Date <= DateTime.Now.Date) { //Verifica se já não existe o movimento evitando duplicidade Decimal valor = Convert.ToDecimal(mov.Valor); using (var objVerExiste = new dbGerenciadorEntities()) { //Arrumei fazendo estas conversões pois não altera o banco //Na hora de salvar na tabela movimento o parametro transforma em string em int //Agora temos que fazer o contrario int ID = Convert.ToInt32(mov.Id); string sID = Convert.ToString(ID); var query = from conv in objVerExiste.Movimento where (conv.data == mov.Data.Date && conv.valor == valor && conv.numero == sID) select conv; var ListaFinal = query.ToList(); //Não tem duplicidade if (ListaFinal.Count == 0) { using (var objPesqVctoValor = new dbGerenciadorEntities()) { //Primeira pesquisa por Vencimento e Valor de titulos que não tenham sido baixados var queryTitulo = from titulo in objPesqVctoValor.Titulo join relacao in objPesqVctoValor.Relacao on titulo.relacao equals relacao.id where (titulo.vencimento == mov.Data.Date && titulo.valor == valor && titulo.baixado == null) select new { titulo.id, titulo.numero, relacao.Nome, titulo.tipo, titulo.parcela, titulo.valor, titulo.vencimento, titulo.natureza, titulo.descricao }; var ListaTitulos = queryTitulo.ToList(); //A primeira pesquisa retornou valor if (ListaTitulos.Count != 0) { //Exibe o formulario com todos os titulos encontrado possibilitando escolha do titulo para baixa //Cria uma lista que será passada como ponteiro(ref) ao formulario concilia //Para que as alterações permanecam apos o fechamento do formulario frmConcilia.Conciliado passar = new frmConcilia.Conciliado(); //Chama o formulario passando os objects retornados da busca com vencimento e valor, o movimento do OFX // e a lista de referência que será alterada frmConcilia formConcilia = new frmConcilia(ListaTitulos, mov, ref passar); formConcilia.ShowDialog(); //Obtem o numero da conta string[] split = agConta.Split('/'); //Depois do split realiza a conversão para inteiro int conta = Convert.ToInt32(split[1]); //Adiciona o numero da conta a classe conciliado passar.conta = conta; //Adiciona a lista de referência a lista de conciliados lstConciliado.Add(passar); } else { using (var objPesqValor = new dbGerenciadorEntities()) { //Se a primeira pesquisa não retornar vamos pesquisar apenas por valor que não tenha //sida anteriormente baixados var queryTitulo_val = from titulo in objPesqValor.Titulo join relacao in objPesqValor.Relacao on titulo.relacao equals relacao.id where titulo.valor == valor && titulo.baixado == null select new { titulo.id, titulo.numero, relacao.Nome, titulo.tipo, titulo.parcela, titulo.valor, titulo.vencimento, titulo.natureza, titulo.descricao }; var ListaTitulos_val = queryTitulo_val.ToList(); //A primeira pesquisa retornou valor if (ListaTitulos_val.Count != 0) { //Exibe o formulario com todos os titulos encontrado possibilitando escolha do titulo para baixa //Cria uma lista que será passada como ponteiro(ref) ao formulario concilia //Para que as alterações permanecam apos o fechamento do formulario frmConcilia.Conciliado passar = new frmConcilia.Conciliado(); //Chama o formulario passando os objects retornados da busca com vencimento e valor, o movimento do OFX // e a lista de referência que será alterada frmConcilia formConcilia = new frmConcilia(ListaTitulos_val, mov, ref passar); formConcilia.ShowDialog(); //Obtem o numero da conta string[] split = agConta.Split('/'); //Depois do split realiza a conversão para inteiro int conta = Convert.ToInt32(split[1]); //Adiciona o numero da conta a classe conciliado passar.conta = conta; lstConciliado.Add(passar); } //Nenhuma pesquisa retornou agora precisamos cadastrar o titulo else { //Exibir Formulario para cadastrar ou editar Titulo //Informações do movimento para cadastrar um titulo DateTime dtMovimento = mov.Data; Double vlMovimento = mov.Valor; //Exibe informação sobre o movimento sem titulo correnpondente encontrado MessageBox.Show("Título não encontrado:" + Environment.NewLine + "Data: " + dtMovimento.Date + Environment.NewLine + "Valor: " + vlMovimento + Environment.NewLine + "Descrição: " + mov.Descricao, "Titulo x Movimento", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1); //Exibe o formulario para cadastrar o titulo frmCadTitulo cadMovimento = new frmCadTitulo(dtMovimento, vlMovimento); cadMovimento.ShowDialog(); //Apos fechar o formulario realiza de novo busca using (var objNovaPesq = new dbGerenciadorEntities()) { //Primeira pesquisa por Vencimento e Valor var queryNovoTitulo = from titulo in objNovaPesq.Titulo join relacao in objNovaPesq.Relacao on titulo.relacao equals relacao.id where (titulo.vencimento == mov.Data.Date && titulo.valor == valor && titulo.baixado == null) select new { titulo.id, titulo.numero, relacao.Nome, titulo.tipo, titulo.parcela, titulo.valor, titulo.vencimento, titulo.natureza, titulo.descricao }; var ListaNovosTitulos = queryNovoTitulo.ToList(); //Verifica se houve retorno if (ListaNovosTitulos.Count != 0) { //Exibe o formulario com todos os titulos encontrado possibilitando a baixa frmConcilia.Conciliado passar = new frmConcilia.Conciliado(); frmConcilia formConcilia = new frmConcilia(ListaNovosTitulos, mov, ref passar); formConcilia.ShowDialog(); //Obtem o numero da conta string[] split = agConta.Split('/'); //Depois do split realiza a conversão para inteiro int conta = Convert.ToInt32(split[1]); //Adiciona o numero da conta a classe conciliado passar.conta = conta; lstConciliado.Add(passar); } else { MessageBox.Show("Titulo ainda não foi cadastrado" + Environment.NewLine + "Para garantir a integridade do processo não podemos continuar" + Environment.NewLine + "Cadastre o titulo e tente novamente", "Aviso"); //Como se diz para garantir integridade não podemos terminar conciliação sem cadastrar //todos os titulos que estão no movimento OFX sair = true; break; } } } }//Segundo using } }//Terceiro using } else { MessageBox.Show("O Movimento já está cadastrado!", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1); } }//using } //Condição quando a data do movimento for maior que a data atual (evitando lançamento futuros) que mudam descrição else { MessageBox.Show("Lançamento com data futura não será incluido nesta conciliação." + Environment.NewLine + "será importado no documento com a data correta", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1); } }//Fim do foreach //Aqui verificar se a lstConciliado não é vazia se não for vazia //loop na lista inserindo na tabela movimento e atualizando a tabela titulo if (lstConciliado.Count != 0 && sair == false) { MessageBox.Show("Vamos efetuar as alterações na base de dados", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1); foreach (frmConcilia.Conciliado movBanco in lstConciliado) { //Incluir as informações na tabela Movimento Gerenciador.Data.dbGerenciadorEntities objGerenciador = new Gerenciador.Data.dbGerenciadorEntities(); var objMovimento = new Gerenciador.Data.Movimento(); objMovimento.data = movBanco.dtMovimento; objMovimento.tipo = movBanco.tipo; objMovimento.valor = Convert.ToDecimal(movBanco.vlBaixado); objMovimento.numero = Convert.ToString(movBanco.numero); objMovimento.descricao = movBanco.descricao; objMovimento.conta = movBanco.conta; objMovimento.id_titulo = movBanco.idTitulo; objGerenciador.AddToMovimento(objMovimento); objGerenciador.SaveChanges(); //Atualiza a tabela Titulo ( Com data da baixa, valor pago, em que banco foi pago) using (var objUpdate = new dbGerenciadorEntities()) { var objTitulo = new Gerenciador.Data.Titulo(); objTitulo = (from conv in objUpdate.Titulo where conv.id == movBanco.idTitulo select conv).First(); objTitulo.baixado = Convert.ToString(movBanco.baixado); objTitulo.dta_baixa = movBanco.dtMovimento; objTitulo.vlr_pagamento = Convert.ToDecimal(movBanco.vlBaixado); objTitulo.conta_baixa = movBanco.conta; objUpdate.SaveChanges(); } }//FIm loop da inclusão MessageBox.Show("Atualizações efetuadas com sucesso!", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1); }//Fim atualização banco de dados }