コード例 #1
0
        public virtual IActionResult Receber([FromRoute] ContaReceberId id, ReceberContaReceber contaReceber)
        {
            contaReceber.Modelo  = id.Modelo;
            contaReceber.Serie   = id.Serie;
            contaReceber.Numero  = id.Numero;
            contaReceber.Parcela = id.Parcela;

            this.ContaReceberService.Receber(contaReceber);

            return(Ok());
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }