public void Receber()
        {
            DTORecebimentoCaixa dto = this._fachada.CalcularRecebimento(this.ObtemDTOAtual());

            this._fachada.Receber(dto);
            this._visao.FinalizarRecebimento();
        }
Ejemplo n.º 2
0
        public void Devo_Conseguir_Receber()
        {
            Caixa caixa = new Caixa(100);

            var repositorioCaixaStub = new Mock <ICaixaRepositorio>();

            repositorioCaixaStub.Setup(r => r.ObterUltimoCaixaAberto()).Returns(caixa);
            repositorioCaixaStub.Setup(r => r.Salvar(caixa));

            DTORecebimentoCaixa dto = new DTORecebimentoCaixa();

            dto.ValorDinheiro      = 50;
            dto.ValorCartaoDebito  = 25;
            dto.ValorCartaoCredito = 25;
            dto.ValorReceber       = 90;
            dto.ValorTroco         = 10;

            IFachadaCaixa fachada = new FachadaCaixa(repositorioCaixaStub.Object);

            fachada.Receber(dto);

            repositorioCaixaStub.Verify(r => r.ObterUltimoCaixaAberto());
            repositorioCaixaStub.Verify(r => r.Salvar(caixa));

            Assert.AreEqual(140, caixa.SaldoDinheiro);
            Assert.AreEqual(25, caixa.SaldoCartaoCredito);
            Assert.AreEqual(25, caixa.SaldoCartaoDebito);
            Assert.AreEqual(190, caixa.SaldoGeral);
        }
Ejemplo n.º 3
0
        public void Nao_Devo_Conseguir_Receber_Se_O_Valor_Restante_For_Maior_Que_Zero()
        {
            DTORecebimentoCaixa dto = new DTORecebimentoCaixa();

            dto.ValorRestante = 15;

            IFachadaCaixa fachada = new FachadaCaixa(null);

            fachada.Receber(dto);
        }
Ejemplo n.º 4
0
        public DTORecebimentoCaixa ReceberRestanteComCartaoDebito(DTORecebimentoCaixa dto)
        {
            DTORecebimentoCaixa dtoRetorno = this.CalcularRecebimento(dto);

            dto.ValorCartaoDebito += dtoRetorno.ValorRestante;

            dtoRetorno = this.CalcularRecebimento(dto);

            return(dtoRetorno);
        }
Ejemplo n.º 5
0
        public DTORecebimentoCaixa ReceberRestanteComDinheiro(DTORecebimentoCaixa dto)
        {
            DTORecebimentoCaixa dtoRetorno = this.CalcularRecebimento(dto);

            dto.ValorDinheiro += dtoRetorno.ValorRestante;

            dtoRetorno = this.CalcularRecebimento(dto);

            return(dtoRetorno);
        }
        private DTORecebimentoCaixa ObtemDTOAtual()
        {
            DTORecebimentoCaixa dto = new DTORecebimentoCaixa();

            dto.ValorReceber       = this._visao.GetValorReceber();
            dto.ValorDinheiro      = this._visao.GetValorDinheiro();
            dto.ValorCartaoCredito = this._visao.GetValorCartaoCredito();
            dto.ValorCartaoDebito  = this._visao.GetValorCartaoDebito();

            return(dto);
        }
Ejemplo n.º 7
0
        public void Nao_Devo_Conseguir_Receber_Se_Nao_Houver_Nenhum_Caixa_Aberto()
        {
            var repositorioCaixaStub = new Mock <ICaixaRepositorio>();

            repositorioCaixaStub.Setup(r => r.ObterUltimoCaixaAberto()).Returns <Caixa>(null);

            IFachadaCaixa fachada = new FachadaCaixa(repositorioCaixaStub.Object);

            DTORecebimentoCaixa dto = new DTORecebimentoCaixa();

            dto.ValorDinheiro = 100;
            dto.ValorReceber  = 100;

            fachada.Receber(dto);
        }
Ejemplo n.º 8
0
        public void Nao_Devo_Conseguir_Receber_Se_O_Valor_Do_Troco_For_Maior_Que_O_Saldo_Em_Dinheiro_Do_Caixa()
        {
            Caixa caixa = new Caixa(100);

            var repositorioCaixaStub = new Mock <ICaixaRepositorio>();

            repositorioCaixaStub.Setup(r => r.ObterUltimoCaixaAberto()).Returns(caixa);

            DTORecebimentoCaixa dto = new DTORecebimentoCaixa();

            dto.ValorTroco = 120;

            IFachadaCaixa fachada = new FachadaCaixa(repositorioCaixaStub.Object);

            fachada.Receber(dto);
        }
Ejemplo n.º 9
0
        public void Devo_Conseguir_Obter_Valor_Troco_Se_A_Soma_For_Maior_Que_O_Valor_A_Receber()
        {
            DTORecebimentoCaixa dto = new DTORecebimentoCaixa();

            dto.ValorReceber       = 100;
            dto.ValorDinheiro      = 50;
            dto.ValorCartaoCredito = 30;
            dto.ValorCartaoDebito  = 30;

            Caixa caixa = new Caixa(100m);

            IFachadaCaixa fachada = new FachadaCaixa(null);

            DTORecebimentoCaixa dtoRetorno = fachada.CalcularRecebimento(dto);

            Assert.AreEqual(10, dtoRetorno.ValorTroco);
        }
Ejemplo n.º 10
0
        public void Devo_Conseguir_Obter_Valor_Restante_Ao_Calcular_Recebimento()
        {
            DTORecebimentoCaixa dto = new DTORecebimentoCaixa();

            dto.ValorReceber       = 100;
            dto.ValorDinheiro      = 30;
            dto.ValorCartaoCredito = 30;
            dto.ValorCartaoDebito  = 30;

            Caixa caixa = new Caixa(100m);

            IFachadaCaixa fachada = new FachadaCaixa(null);

            DTORecebimentoCaixa dtoRetorno = fachada.CalcularRecebimento(dto);

            Assert.AreEqual(10, dtoRetorno.ValorRestante);
        }
Ejemplo n.º 11
0
        public void Devo_Conseguir_Receber_Valor_Restante_Com_Dinheiro()
        {
            DTORecebimentoCaixa dto = new DTORecebimentoCaixa();

            dto.ValorReceber       = 100;
            dto.ValorDinheiro      = 10;
            dto.ValorCartaoCredito = 30;
            dto.ValorCartaoDebito  = 30;

            Caixa caixa = new Caixa(100m);

            IFachadaCaixa fachada = new FachadaCaixa(null);

            DTORecebimentoCaixa dtoRetorno = fachada.ReceberRestanteComDinheiro(dto);

            Assert.AreEqual(40, dtoRetorno.ValorDinheiro);
            Assert.AreEqual(0, dtoRetorno.ValorRestante);
            Assert.AreEqual(0, dtoRetorno.ValorTroco);
        }
Ejemplo n.º 12
0
        public void Receber(DTORecebimentoCaixa dto)
        {
            if (dto.ValorRestante > 0)
            {
                throw new ExcecaoValorPagoMenorQueValorAReceber();
            }

            Caixa caixa = this._repositorio.ObterUltimoCaixaAberto();

            try
            {
                if (dto.ValorTroco > caixa.SaldoDinheiro)
                {
                    throw new ExcecaoValorInsuficienteEmCaixa();
                }

                if (dto.ValorDinheiro > 0)
                {
                    caixa.ReceberAtendimentoEmDinheiro(dto.ValorDinheiro);
                }

                if (dto.ValorCartaoCredito > 0)
                {
                    caixa.ReceberAtendimentoCartaoCredito(dto.ValorCartaoCredito);
                }

                if (dto.ValorCartaoDebito > 0)
                {
                    caixa.ReceberAtendimentoCartaoDebito(dto.ValorCartaoDebito);
                }

                if (dto.ValorTroco > 0)
                {
                    caixa.EfetuarSaidaParaTroco(dto.ValorTroco);
                }

                this._repositorio.Salvar(caixa);
            }
            catch (NullReferenceException)
            {
                throw new ExcecaoNenhumCaixaAberto();
            }
        }
Ejemplo n.º 13
0
        public DTORecebimentoCaixa CalcularRecebimento(DTORecebimentoCaixa dto)
        {
            DTORecebimentoCaixa dtoRetorno = new DTORecebimentoCaixa();

            dtoRetorno.ValorDinheiro      = dto.ValorDinheiro;
            dtoRetorno.ValorCartaoCredito = dto.ValorCartaoCredito;
            dtoRetorno.ValorCartaoDebito  = dto.ValorCartaoDebito;
            dtoRetorno.ValorSoma          = (dto.ValorDinheiro + dto.ValorCartaoCredito + dto.ValorCartaoDebito);

            dtoRetorno.ValorRestante = (dto.ValorReceber - dtoRetorno.ValorSoma);

            if (dtoRetorno.ValorRestante < 0)
            {
                dtoRetorno.ValorTroco    = Decimal.Negate(dtoRetorno.ValorRestante);
                dtoRetorno.ValorRestante = 0;
            }

            return(dtoRetorno);
        }
        private void AtualizarVisao(DTORecebimentoCaixa dto)
        {
            this._visao.SetValorDinheiro(dto.ValorDinheiro);
            this._visao.SetValorCartaoCredito(dto.ValorCartaoCredito);
            this._visao.SetValorCartaoDebito(dto.ValorCartaoDebito);
            this._visao.SetValorSoma(dto.ValorSoma);

            if (dto.ValorTroco > 0)
            {
                this._visao.HabilitarBotoesRestante(false);
                this._visao.AlterarParaTroco();
                this._visao.SetValorTroco(dto.ValorTroco);
                this._visao.HabilitarBotaoReceber(true);
            }
            else
            {
                this._visao.HabilitarBotoesRestante((dto.ValorRestante > 0));
                this._visao.HabilitarBotaoReceber(dto.ValorRestante.Equals(0));
                this._visao.AlterarParaFaltam();
                this._visao.SetValorRestante(dto.ValorRestante);
            }
        }