public ContaCorrenteCliente ToEntity()
        {
            var obj = new ContaCorrenteCliente();

            obj.Id           = ContaCorrenteClienteId;
            obj.DataInsercao = DataInsercao;
            obj.Cliente      = Cliente?.ToEntity();
            obj.ContaCorrenteClienteDetalhes = ContaCorrenteClienteDetalhes?.Select(x => x.ToEntity())?.ToList() ?? new List <ContaCorrenteClienteDetalhe>();
            return(obj);
        }
 public ContaCorrenteClienteViewModel(ContaCorrenteCliente obj)
 {
     if (obj != null)
     {
         ContaCorrenteClienteId = obj.Id;
         DataInsercao           = obj.DataInsercao;
         Cliente = new ClienteViewModel(obj?.Cliente ?? new Cliente());
         ContaCorrenteClienteDetalhes = obj?.ContaCorrenteClienteDetalhes?.Select(x => new ContaCorrenteClienteDetalheViewModel(x))?.ToList() ?? new List <ContaCorrenteClienteDetalheViewModel>();
     }
 }
예제 #3
0
 public IEnumerable <ContaCorrenteCliente> Put([FromBody] ContaCorrenteCliente contaCorrenteCliente)
 {
     _repo.Alterar(contaCorrenteCliente);
     return(_repo.SelecionarTudo());
 }
        private void AtualizarContaCorrente(List <FeriasCliente> ferias, ContaCorrenteCliente contaCorrente)
        {
            var idCliente = ferias?.FirstOrDefault()?.Cliente?.Id ?? 0;
            var listaPeriodosCompetencia = ferias?.SelectMany(x => x.ListaDataCompetenciaPeriodo)?.Distinct()?.ToList();

            foreach (var competencia in listaPeriodosCompetencia)
            {
                var valorFeriasCalculadasAnterior = ferias.SelectMany(x => x.ListaFeriasClienteDetalhe)
                                                    .Where(x => x.DataCompetencia == competencia)
                                                    .Sum(x => x.ValorFeriasCalculadaAnterior);
                var valorFeriasCalculadasAtual = ferias.SelectMany(x => x.ListaFeriasClienteDetalhe)
                                                 .Where(x => x.DataCompetencia == competencia)
                                                 .Sum(x => x.ValorFeriasCalculada);

                var itemCCDetalhe = contaCorrente?.ContaCorrenteClienteDetalhes?
                                    .FirstOrDefault(x => x.TipoOperacaoContaCorrente == Entidade.Uteis.TipoOperacaoContaCorrente.Decrescimo &&
                                                    x.DataCompetencia == competencia);
                if (itemCCDetalhe != null && itemCCDetalhe.DataInsercao > System.Data.SqlTypes.SqlDateTime.MinValue.Value)
                {
                    itemCCDetalhe.Valor = ferias.SelectMany(x => x.ListaFeriasClienteDetalhe)
                                          .Where(x => x.DataCompetencia == competencia)
                                          .Sum(x => x.ValorFeriasCalculadaAnterior) > 0
                                                    ? itemCCDetalhe.Valor - valorFeriasCalculadasAnterior + valorFeriasCalculadasAtual
                                                    : itemCCDetalhe.Valor + valorFeriasCalculadasAtual;
                    _contaCorrenteClienteServico.Salvar(contaCorrente);
                }
                else if (contaCorrente != null && contaCorrente.Id > 0)
                {
                    contaCorrente.ContaCorrenteClienteDetalhes.Add(new ContaCorrenteClienteDetalhe
                    {
                        DataInsercao              = DateTime.Now,
                        DataCompetencia           = competencia,
                        TipoOperacaoContaCorrente = Entidade.Uteis.TipoOperacaoContaCorrente.Decrescimo,
                        Valor = valorFeriasCalculadasAtual
                    });
                    _contaCorrenteClienteServico.Salvar(contaCorrente);
                }
                else
                {
                    var cliente           = _clienteServico.BuscarPorId(idCliente);
                    var contaCorrenteNova = new ContaCorrenteCliente
                    {
                        Cliente      = cliente,
                        DataInsercao = DateTime.Now,
                        ContaCorrenteClienteDetalhes = new List <ContaCorrenteClienteDetalhe>
                        {
                            new ContaCorrenteClienteDetalhe
                            {
                                DataInsercao              = DateTime.Now,
                                DataCompetencia           = competencia,
                                TipoOperacaoContaCorrente = Entidade.Uteis.TipoOperacaoContaCorrente.Decrescimo,
                                Valor = valorFeriasCalculadasAtual
                            }
                        }
                    };
                    _contaCorrenteClienteServico.Salvar(contaCorrenteNova);
                    cliente.ContaCorrenteCliente = contaCorrente;
                    _clienteServico.Salvar(cliente);
                    contaCorrente = _clienteServico.BuscarPorId(idCliente)?.ContaCorrenteCliente;
                }
            }
        }