Esempio n. 1
0
        public FichaViewModel Atualizar(FichaViewModel fichaViewModel)
        {
            var fichaDTO = _fichaRepository.BuscarPorId(fichaViewModel.Id);
            var ficha    = Mapper.Map(fichaViewModel, fichaDTO);

            return(Mapper.Map <FichaViewModel>(_fichaRepository.Atualizar(ficha)));
        }
Esempio n. 2
0
        //var pagamentosComValorInformado = pagamentos.Where(p => p.ValorInformado > 0);

        //var pagamentosSemValorInformado = pagamentos.Where(p => p.ValorInformado == 0);

        ////Se existir pagamentos com valor já informados
        //if (pagamentosComValorInformado.Any())
        //{

        //    var vendaTotal = TotalVenda;

        //    var queryPagamentosComValorInformado = from pagamentoInf in pagamentosComValorInformado
        //                                           select new
        //                                           {
        //                                               Ficha = _ficha_Repository.BuscarPorId(pagamentoInf.Ficha.Id.Value),
        //                                               ValorDescontado = pagamentoInf.ValorInformado
        //                                           };

        //    //Atualiza fichas com valor já informado
        //    foreach (var item in queryPagamentosComValorInformado)
        //    {
        //        double? saldoAntigo = 0;

        //        if (vendaTotal > 0)
        //        {

        //            if (item.ValorDescontado >= vendaTotal)
        //            {
        //                saldoAntigo = item.Ficha.Saldo;

        //                item.Ficha.Saldo = item.Ficha.Saldo - vendaTotal;

        //                vendaTotal = 0;

        //            }
        //            else if (item.ValorDescontado < vendaTotal)
        //            {
        //                saldoAntigo = item.Ficha.Saldo;

        //                item.Ficha.Saldo = item.Ficha.Saldo - item.ValorDescontado;

        //                vendaTotal = vendaTotal - item.ValorDescontado;

        //            }

        //            _ficha_Repository.Atualizar(item.Ficha, saldoAntigo.Value);
        //        }
        //    }

        //    // Se ainda existir valor no total da venda, desconta das outras fichas sem valor informado
        //    if (vendaTotal > 0)
        //    {
        //        var fichasSemValorInformado = from pagamento in pagamentosSemValorInformado
        //                                      select _ficha_Repository.BuscarPorId(pagamento.Ficha.Id.Value);


        //        foreach (var ficha in fichasSemValorInformado)
        //        {

        //            if (ficha.Saldo >= vendaTotal)
        //            {
        //                var descontado = ficha.Saldo - vendaTotal;
        //                double saldoAntigo = ficha.Saldo.Value;
        //                ficha.Saldo = descontado;
        //                _ficha_Repository.Atualizar(ficha, saldoAntigo);
        //                vendaTotal = 0;
        //            }
        //            else
        //            {
        //                var descontado = vendaTotal - ficha.Saldo;
        //                double saldoAntigo = ficha.Saldo.Value;
        //                ficha.Saldo = 0;
        //                _ficha_Repository.Atualizar(ficha, saldoAntigo);
        //                vendaTotal = descontado.Value;
        //            }
        //        }

        //    }
        //}
        //else if (!pagamentosComValorInformado.Any())
        //{

        //    var fichasAtualizadas = from pagamentosInf in vendaPagamentos
        //                            from pagamentosFicha in pagamentosInf.Venda_Pagamento_Fichas
        //                            select _ficha_Repository.BuscarPorId(pagamentosFicha.Ficha.Id.Value);

        //    //Atualiza Saldo das Fichas
        //    double? pagamento = TotalVenda;

        //    foreach (var ficha in fichasAtualizadas)
        //    {
        //        if (ficha.Saldo >= pagamento)
        //        {
        //            var descontado = ficha.Saldo - pagamento;
        //            double saldoAntigo = ficha.Saldo.Value;
        //            ficha.Saldo = descontado;
        //            _ficha_Repository.Atualizar(ficha, saldoAntigo);
        //            pagamento = 0;
        //        }
        //        else
        //        {
        //            var descontado = pagamento - ficha.Saldo;
        //            double saldoAntigo = ficha.Saldo.Value;
        //            ficha.Saldo = 0;
        //            _ficha_Repository.Atualizar(ficha, saldoAntigo);
        //            pagamento = descontado;
        //        }
        //    }
        //}


        public VendaViewModel Calcelar(Guid Id_Venda)
        {
            var pagamento_venda_fichas = Db.Venda_Pagamento_Fichas;
            var venda_pagamentos       = Db.Venda_Pagamentos;
            var movimentacoes          = Db.Movimentacoes;

            var venda = _vendaRepository.BuscarPorId(Id_Venda);

            if (venda != null)
            {
                //Cancela a venda
                venda.Cancelada = true;

                var vendaAtualizada = _vendaRepository.Atualizar(venda);

                //Estornar as fichas com base na movimentação
                var query = from pagamento_venda_ficha in pagamento_venda_fichas
                            join venda_pagamento in venda_pagamentos on pagamento_venda_ficha.Id_Venda_Pagamento equals venda_pagamento.Id
                            join movimentacao in movimentacoes on pagamento_venda_ficha.Id_Ficha equals movimentacao.Id_Ficha
                            where pagamento_venda_ficha.Deletado == false &&
                            venda_pagamento.Deletado == false &&
                            movimentacao.Deletado == false &&
                            venda_pagamento.Id_venda == Id_Venda
                            select new { Ficha = pagamento_venda_ficha.Ficha, SaldoEstornado = (pagamento_venda_ficha.Ficha.Saldo + movimentacao.Valor) };

                foreach (var estorno in query)
                {
                    var valorAnterior = estorno.Ficha.Saldo;

                    var fichaDTO = _ficha_Repository.BuscarPorId(estorno.Ficha.Id);

                    fichaDTO.Saldo = estorno.SaldoEstornado;

                    _ficha_Repository.Estornar(fichaDTO, valorAnterior);
                }

                return(Mapper.Map <VendaViewModel>(vendaAtualizada));
            }

            return(null);
        }