private void CheckParcelaConfirmacao(ReceberContaReceber contaPagar, int numeroParcela) { if (numeroParcela == 1) { return; } if (!string.IsNullOrEmpty(contaPagar.Senha)) { var login = UserDAO.PasswordSignIn(this.UserRequest.UserNome, contaPagar.Senha); if (login.Succeeded) { return; } throw new BusinessException(new { senha = "Senha inválida" }); } var id = contaPagar.GetId(); var parcelasPendentes = new List <int>(numeroParcela); for (int i = 1; i < numeroParcela; i++) { id.Parcela = i; var parcela = this.ContaReceberDAO.GetByID(id); if (parcela != null & parcela.DataPagamento == null) { parcelasPendentes.Add(i); } } if (parcelasPendentes.Count == 0) { return; } if (parcelasPendentes.Count == 1) { throw new BusinessException(new { Parcela = $"A parcela {parcelasPendentes.First()} é anterior a esta e não está baixada, para baxair esta parcela confirme.", }, codeError: System.Net.HttpStatusCode.PreconditionRequired); } var str = parcelasPendentes.Aggregate("", (e, a) => $"{e}{a}, "); throw new BusinessException(new { Parcela = $"As parcelas {str} são anteriores a esta e não estão baixadas, para baxair esta parcela confirme.", }, codeError: System.Net.HttpStatusCode.PreconditionRequired); }
public void Receber(ReceberContaReceber contaReceber) { var dbEntity = this.ContaReceberDAO.GetByID(contaReceber.GetId()); if (dbEntity == null) { throw new BusinessException(new { Parcela = "Conta a Receber não cadastrada." }); } if (contaReceber.ValorBaixa < contaReceber.Desconto) { throw new BusinessException(new { Desconto = "Desconto não pode ser maior que o valor da Conta." }); } if (dbEntity.DataCancelamento != null) { throw new BusinessException(new { Parcela = "Conta a Receber Cancelada." }); } if (dbEntity.DataPagamento != null) { throw new BusinessException(new { Parcela = "Conta a Receber Paga." }); } CheckParcelaConfirmacao(contaReceber, contaReceber.Parcela); dbEntity.Desconto = contaReceber.Desconto; dbEntity.Multa = contaReceber.Multa; dbEntity.Juro = contaReceber.Juro; dbEntity.ValorBaixa = contaReceber.ValorBaixa; dbEntity.FormaPagamentoId = contaReceber.FormaPagamentoId; dbEntity.DataVencimento = contaReceber.DataVencimento; dbEntity.DataPagamento = contaReceber.DataPagamento; dbEntity.Descricao = contaReceber.Descricao; dbEntity.DataBaixa = DateTime.Now; dbEntity.UserBaixa = this.UserRequest.Id.ToString(); this.ContaReceberDAO.Update(dbEntity); }