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; }
public DTORecebimentoCaixa ReceberRestanteComDinheiro(DTORecebimentoCaixa dto) { DTORecebimentoCaixa dtoRetorno = this.CalcularRecebimento(dto); dto.ValorDinheiro += dtoRetorno.ValorRestante; dtoRetorno = this.CalcularRecebimento(dto); return dtoRetorno; }
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(); } }
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); }