Example #1
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;
        }
Example #2
0
        public DTORecebimentoCaixa ReceberRestanteComDinheiro(DTORecebimentoCaixa dto)
        {
            DTORecebimentoCaixa dtoRetorno = this.CalcularRecebimento(dto);

            dto.ValorDinheiro += dtoRetorno.ValorRestante;

            dtoRetorno = this.CalcularRecebimento(dto);

            return dtoRetorno;
        }
Example #3
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();
            }
        }
Example #4
0
        public DTORecebimentoCaixa ReceberRestanteComCartaoDebito(DTORecebimentoCaixa dto)
        {
            DTORecebimentoCaixa dtoRetorno = this.CalcularRecebimento(dto);

            dto.ValorCartaoDebito += dtoRetorno.ValorRestante;

            dtoRetorno = this.CalcularRecebimento(dto);

            return dtoRetorno;
        }
        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);
        }
        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);
        }
        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);
        }
        public void Devo_Obter_Valor_Restante_Zerado_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(0, dtoRetorno.ValorRestante);
        }
        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);
        }
        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);
        }
        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);
        }