Esempio n. 1
0
        private void SalvarContaCorrente(Cliente cliente, Cliente retorno)
        {
            if (cliente.ContaCorrenteCliente == null)
            {
                cliente.ContaCorrenteCliente = new ContaCorrenteCliente {
                    Cliente = retorno
                }
            }
            ;
            else
            {
                cliente.ContaCorrenteCliente.Cliente = retorno;
            }

            var contaCorrenteEntity = _contaCorrenteClienteServico.PrimeiroPor(x => x.Cliente.Id == retorno.Id) ?? cliente.ContaCorrenteCliente;

            contaCorrenteEntity.ContaCorrenteClienteDetalhes = cliente.ContaCorrenteCliente.ContaCorrenteClienteDetalhes?.Select(x => x)?.ToList() ?? new List <ContaCorrenteClienteDetalhe>();

            _contaCorrenteClienteServico.Salvar(contaCorrenteEntity);
        }
        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;
                }
            }
        }