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; } } }