// DELETE //------------------------------------------------------------------------------------------------------------ public bool DeleteContribuicao(long IDContribuicao, Action <int, decimal> ContaSdlUpdate, Action <int, decimal> SetorSdlUpdate) { AcessoDados dbTran = null; try { dbTran = new AcessoDados(); dbTran.BeginTransaction(); // 1 - CHECK AReceber and Entradas //------------------------------------------------------------------------------------------------------------ List <objAReceber> listAReceber = new List <objAReceber>(); List <objMovimentacao> listEntradas = new List <objMovimentacao>(); if (!VerifyBeforeDelete(IDContribuicao, ref listAReceber, ref listEntradas, dbTran)) { return(false); } // 2 - delete ALL ARECEBER //------------------------------------------------------------------------------------------------------------ if (listAReceber.Count > 0) { AReceberBLL rBLL = new AReceberBLL(); foreach (objAReceber receber in listAReceber) { rBLL.DeleteAReceber((long)receber.IDAReceber, dbTran); } } // 3 - delete ALL MOVIMENTACAO ENTRADA //------------------------------------------------------------------------------------------------------------ if (listEntradas.Count > 0) { MovimentacaoBLL mBLL = new MovimentacaoBLL(); mBLL.DeleteMovimentacaoList(listEntradas, ContaSdlUpdate, SetorSdlUpdate, dbTran); } // 4 - delete CONTRIBUICAO //------------------------------------------------------------------------------------------------------------ //--- clear Params dbTran.LimparParametros(); //--- define Params dbTran.AdicionarParametros("@IDContribuicao", IDContribuicao); //--- convert null parameters dbTran.ConvertNullParams(); //--- create query string query = "DELETE tblContribuicao WHERE IDContribuicao = @IDContribuicao"; //--- DELETE dbTran.ExecutarManipulacao(CommandType.Text, query); //--- COMMIT AND RETURN dbTran.CommitTransaction(); return(true); } catch (AppException ex) { dbTran.RollBackTransaction(); throw ex; } catch (Exception ex) { dbTran.RollBackTransaction(); throw ex; } }
private bool VerifyBeforeDelete(long IDContribuicao, ref List <objAReceber> listAReceber, ref List <objMovimentacao> listEntradas, AcessoDados dbTran) { try { // GET ARECEBER //------------------------------------------------------------------------------------------------------------ listAReceber = new AReceberBLL().GetListAReceberByIDContribuicao(IDContribuicao, dbTran); // VERIFY ARECEBER //------------------------------------------------------------------------------------------------------------ bool err = false; string errMessage = "Os ARECEBER abaixo possuem recebimentos...\n"; foreach (objAReceber receber in listAReceber) { if (receber.IDSituacao == 2) { errMessage += $"Reg.: {receber.IDAReceber:D4} {receber.CompensacaoData.ToShortDateString()}\n"; err = true; } } if (err == true) { errMessage += "Favor estornar antes os recebimentos se deseja EXCLUIR a contribuição."; throw new AppException(errMessage); } // VERIFY MOVIMENTACAO ENTRADA FROM CONTRIBUICAO //------------------------------------------------------------------------------------------------------------ MovimentacaoBLL mBLL = new MovimentacaoBLL(); listEntradas = mBLL.GetMovimentacaoListByOrigem(EnumMovOrigem.Contribuicao, IDContribuicao, false, dbTran); // VERIFY MOVIMENTACAO ENTRADA FROM ARECEBER //------------------------------------------------------------------------------------------------------------ if (listAReceber.Count > 0) { foreach (objAReceber receber in listAReceber) { listEntradas.AddRange(mBLL.GetMovimentacaoListByOrigem(EnumMovOrigem.AReceber, (long)receber.IDAReceber, false, dbTran)); } } // VERIFY RECEBIMENTOS WITH CAIXA OR BLOCKED //------------------------------------------------------------------------------------------------------------ errMessage = "Essa Contribuição possui entradas que foram inseridas no caixa...\n"; foreach (objMovimentacao entrada in listEntradas) { if (entrada.IDCaixa != null) { errMessage += $"Reg.: {entrada.IDMovimentacao:D4} | {entrada.MovData.ToShortDateString()} | Caixa: {entrada.IDCaixa:D4}\n"; err = true; } } if (err == true) { errMessage += "Favor remover o(s) caixa(s) se desejar EXCLUIR a(s) contribuição."; throw new AppException(errMessage); } return(true); } catch (Exception ex) { throw ex; } }
// INSERT //------------------------------------------------------------------------------------------------------------ public long InsertContribuicao( objContribuicao cont, Action <int, decimal> ContaSldLocalUpdate, Action <int, decimal> SetorSldLocalUpdate, object forma = null) { AcessoDados db = new AcessoDados(); long? newID = null; long? newMovID = null; objMovimentacao entrada = null; try { db.BeginTransaction(); //--- Check Conta Bloqueio if (!new ContaBLL().ContaDateBlockPermit(cont.IDConta, cont.ContribuicaoData, db)) { throw new AppException("A Data da Conta está BLOQUEADA nesta Data de Crédito proposta...", 2); } switch (cont.IDEntradaForma) { case 1: // DINHEIRO //--- Insert Contribuicao cont.Realizado = true; cont.ValorRecebido = cont.ValorBruto; newID = AddContribuicao(cont, db); //--- Create NEW Entrada entrada = new objMovimentacao(null) { MovTipo = 1, IDConta = cont.IDConta, IDSetor = cont.IDSetor, IDOrigem = (long)newID, Origem = EnumMovOrigem.Contribuicao, MovData = cont.ContribuicaoData, MovValor = cont.ValorBruto, Consolidado = true, DescricaoOrigem = "CONTRIBUIÇÃO: " + cont.OrigemDescricao, }; //--- Insert MOVIMENTACAO Entrada new MovimentacaoBLL().InsertMovimentacao(entrada, ContaSldLocalUpdate, SetorSldLocalUpdate, db); break; case 2: // CHEQUE if (forma == null || forma.GetType() != typeof(objContribuicaoCheque)) { throw new Exception("Não há registro de informação do cheque..."); } //--- Insert Contribuicao cont.Realizado = false; cont.ValorRecebido = 0; newID = AddContribuicao(cont, db); cont.IDContribuicao = newID; //--- Insert ContribuicaoCheque objContribuicaoCheque cheque = (objContribuicaoCheque)forma; cheque.IDContribuicao = newID; AddContribuicaoCheque(cheque, db); //--- Create NEW MOVIMENTACAO ENTRADA entrada = new objMovimentacao(null) { MovTipo = 1, IDConta = cont.IDConta, IDSetor = cont.IDSetor, IDOrigem = (long)newID, Origem = EnumMovOrigem.Contribuicao, MovData = cont.ContribuicaoData, MovValor = cont.ValorBruto, Consolidado = false, DescricaoOrigem = $"CONTRIBUIÇÃO: Cheque no. {cheque.ChequeNumero} {cheque.Banco}", }; //--- Insert MOVIMENTACAO Entrada newMovID = new MovimentacaoBLL().InsertMovimentacao(entrada, ContaSldLocalUpdate, SetorSldLocalUpdate, db); //--- Create AReceber var areceber = new objAReceber(null) { CompensacaoData = cheque.DepositoData, IDContaProvisoria = cont.IDConta, IDContribuicao = (long)cont.IDContribuicao, IDSituacao = 1, Situacao = "Em Aberto", ValorBruto = cont.ValorBruto, ValorLiquido = cont.ValorBruto, ValorRecebido = 0, IDMovProvisoria = (long)newMovID, }; //--- Insert AReceber Parcela new AReceberBLL().InsertAReceber(areceber, db); break; case 3: // CARTAO if (forma == null || forma.GetType() != typeof(objContribuicaoCartao)) { throw new Exception("Não há registro de informação do cartão..."); } //--- Check Conta Bloqueio objContribuicaoCartao cartao = (objContribuicaoCartao)forma; if (!new ContaBLL().ContaDateBlockPermit(cartao.IDContaProvisoria, cont.ContribuicaoData, db)) { throw new AppException("A Data da Conta está BLOQUEADA nesta Data de Crédito proposta...", 2); } //--- Insert Contribuicao cont.Realizado = false; cont.ValorRecebido = 0; newID = AddContribuicao(cont, db); cont.IDContribuicao = newID; //--- Insert ContribuicaoCartao cartao.IDContribuicao = newID; AddContribuicaoCartao(cartao, db); //--- Insert ListOf AReceber var listAReceber = new List <objAReceber>(); int parcelas = cartao.Parcelas == 0 ? 1 : cartao.Parcelas; // create PARCELAS for (int i = 0; i < parcelas; i++) { var parcela = new objAReceber(null) { CompensacaoData = cont.ContribuicaoData.AddDays(cartao.Prazo * (i + 1)), IDContaProvisoria = cartao.IDContaProvisoria, IDContribuicao = (long)cont.IDContribuicao, IDSituacao = 1, Situacao = "Em Aberto", ValorBruto = cont.ValorBruto / parcelas, ValorLiquido = (cont.ValorBruto / parcelas) * (100 - cartao.TaxaAplicada) / 100, ValorRecebido = 0 }; listAReceber.Add(parcela); } var rBLL = new AReceberBLL(); var mBLL = new MovimentacaoBLL(); int numParcela = 1; //--- Insert ListOf AReceber Parcelas foreach (var parcela in listAReceber) { //--- Create NEW MOVIMENTACAO Entrada entrada = new objMovimentacao(null) { MovTipo = 1, IDConta = parcela.IDContaProvisoria, IDSetor = cont.IDSetor, IDOrigem = (long)newID, Origem = EnumMovOrigem.Contribuicao, MovData = cont.ContribuicaoData, MovValor = parcela.ValorBruto, Consolidado = false, }; //--- define descricao origem of movimentacao if (cartao.Parcelas == 0) { entrada.DescricaoOrigem = $"CONTRIBUIÇÃO: Cartão de Débito {cartao.CartaoBandeira}"; } else if (cartao.Parcelas == 1) { entrada.DescricaoOrigem = $"CONTRIBUIÇÃO: Cartão de Crédito {cartao.CartaoBandeira}"; } else { entrada.DescricaoOrigem = $"CONTRIBUIÇÃO: Cartão Parcelado {cartao.CartaoBandeira} parcela {numParcela:D2}"; } //--- add Parcela numParcela += 1; //--- Insert Entrada newMovID = mBLL.InsertMovimentacao(entrada, ContaSldLocalUpdate, SetorSldLocalUpdate, db); //--- Insert AReceber parcela.IDMovProvisoria = (long)newMovID; rBLL.InsertAReceber(parcela, db); } break; default: break; } if (newID == 0) { throw new Exception("Não foi possível inserir um novo registro de Contribuição..."); } db.CommitTransaction(); return((long)newID); } catch (Exception ex) { db.RollBackTransaction(); throw ex; } }