public void ConcluirContratoReajuste(InputConcluirReajuste concluirReajuste_) { var contratoReajuste = db.ContratoReajuste.Where(w => w.IdContratoReajuste == concluirReajuste_.IdContratoReajuste).FirstOrDefault(); var contrato = db.Contrato.Where(w => w.IdContrato == contratoReajuste.IdContrato).FirstOrDefault(); var lstContratoReajustes = db.ContratoReajuste.Where(w => w.IdContrato == contratoReajuste.IdContrato && w.IdContratoReajuste != contratoReajuste.IdContratoReajuste).ToList(); decimal?valorReajusteAcumulado = 0; if (lstContratoReajustes.Count > 0) { foreach (var reajuste in lstContratoReajustes) { if (reajuste.VlReajuste != null) { valorReajusteAcumulado += reajuste.VlReajuste.Value; } } } contratoReajuste.VlReajuste = contratoReajuste.VlContratoReajustado - contratoReajuste.VlContratoAntesReajuste; if (valorReajusteAcumulado != 0) { contratoReajuste.VlReajusteAcumulado = valorReajusteAcumulado + contratoReajuste.VlReajuste; } else { contratoReajuste.VlReajusteAcumulado = contratoReajuste.VlReajuste; } contrato.VlContrato = concluirReajuste_.VlTotalParcelas.Value; contrato.DtProxReajuste = concluirReajuste_.DtProxReajuste; contratoReajuste.DtProxReajuste = concluirReajuste_.DtProxReajuste; contratoReajuste.IcReajusteConcluido = true; contratoReajuste.VlContratoReajustado = concluirReajuste_.VlTotalParcelas.Value; db.SaveChanges(); var lstContratoCronogramaFinanceiroTemporaria = db.ContratoCronogramaFinanceiroTemporaria.Where(w => w.IdContrato == contrato.IdContrato).ToList(); foreach (var parcelaTemp in lstContratoCronogramaFinanceiroTemporaria) { if (parcelaTemp.IdParcela != null) { var contratoCronogramaFinanceiro = db.ContratoCronogramaFinanceiro.Where(w => w.IdContratoCronFinanceiro == parcelaTemp.IdParcela).FirstOrDefault(); contratoCronogramaFinanceiro.NuParcela = parcelaTemp.NuParcela; contratoCronogramaFinanceiro.VlParcela = parcelaTemp.VlParcela; contratoCronogramaFinanceiro.CdParcela = parcelaTemp.CdParcela; } else { var contratoCronogramaFinanceiro = new ContratoCronogramaFinanceiro(); contratoCronogramaFinanceiro.CdIss = parcelaTemp.CdIss; contratoCronogramaFinanceiro.CdParcela = parcelaTemp.CdParcela; contratoCronogramaFinanceiro.DsTextoCorpoNf = parcelaTemp.DsTextoCorpoNf; contratoCronogramaFinanceiro.DtFaturamento = parcelaTemp.DtFaturamento; contratoCronogramaFinanceiro.DtNotaFiscal = parcelaTemp.DtNotaFiscal; contratoCronogramaFinanceiro.IdContratoCliente = parcelaTemp.IdContratoCliente; contratoCronogramaFinanceiro.IdSituacao = parcelaTemp.IdSituacao; contratoCronogramaFinanceiro.NuNotaFiscal = parcelaTemp.NuNotaFiscal; contratoCronogramaFinanceiro.NuParcela = parcelaTemp.NuParcela; contratoCronogramaFinanceiro.VlParcela = parcelaTemp.VlParcela; contratoCronogramaFinanceiro.IcAtraso = parcelaTemp.IcAtraso; contratoCronogramaFinanceiro.IdContrato = parcelaTemp.IdContrato; contratoCronogramaFinanceiro.IdFrente = parcelaTemp.IdFrente; db.ContratoCronogramaFinanceiro.Add(contratoCronogramaFinanceiro); } db.SaveChanges(); // Após copiar a Parcela , exclui da tabela Temporaria db.ContratoCronogramaFinanceiroTemporaria.Remove(parcelaTemp); db.SaveChanges(); } db.SaveChanges(); }
public void AplicarAditivo(InputAplicarAditivo inputAplicarAditivo) { var aditivo = db.ContratoAditivo.FirstOrDefault(_ => _.IdContratoAditivo == inputAplicarAditivo.IdAditivo); var contrato = db.Contrato.FirstOrDefault(_ => _.IdContrato == aditivo.IdContrato); if (aditivo.IcAditivoData != null) { contrato.DtFim = aditivo.DtFimAditivada; } if (aditivo.IcAditivoValor != null) { contrato.VlContrato = aditivo.VlContratoAditivado.GetValueOrDefault(); } aditivo.DtAplicacao = DateTime.Now; aditivo.IdUsuarioAplicacao = AppSettings.constGlobalUserID; aditivo.DtIniExecucaoAditivo = DateTime.Now; aditivo.IdSituacao = 101; var lstContratoCronogramaFinanceiroAntigos = db.ContratoCronogramaFinanceiro.Where(w => w.IdContrato == contrato.IdContrato).ToList(); var lstContratoEntregaveisAntigos = db.ContratoEntregavel.Where(w => w.IdContrato == contrato.IdContrato).ToList(); var lstContratoCronogramaFinanceiroTemporaria = db.ContratoCronogramaFinanceiroTemporaria.Where(w => w.IdContrato == contrato.IdContrato).ToList(); var lstEntregaveisTemporaria = db.ContratoEntregavelTemporaria.Where(w => w.IdContrato == contrato.IdContrato).ToList(); foreach (var entregavelTemp in lstEntregaveisTemporaria) { var contratoEntregavel = new ContratoEntregavel(); contratoEntregavel.IdContrato = entregavelTemp.IdContrato; contratoEntregavel.DsProduto = entregavelTemp.DsProduto; contratoEntregavel.DtProduto = entregavelTemp.DtProduto; contratoEntregavel.IdContratoCliente = entregavelTemp.IdContratoCliente.Value; contratoEntregavel.IdFrente = entregavelTemp.IdFrente; contratoEntregavel.IdSituacao = entregavelTemp.IdSituacao; contratoEntregavel.VlOrdem = entregavelTemp.VlOrdem; db.ContratoEntregavel.Add(contratoEntregavel); db.SaveChanges(); entregavelTemp.IdEntregavel = contratoEntregavel.IdContratoEntregavel; } foreach (var parcelaTemp in lstContratoCronogramaFinanceiroTemporaria) { var contratoCronogramaFinanceiro = new ContratoCronogramaFinanceiro(); contratoCronogramaFinanceiro.CdIss = parcelaTemp.CdIss; // Retorna somente os dois ultimos caracteres do Código da Parcela string codigoReajusteParcela = parcelaTemp.CdParcela.Substring(parcelaTemp.CdParcela.Length - 2, 2); // Remove os dois ultimos caracteres do Código da Parcela parcelaTemp.CdParcela = parcelaTemp.CdParcela.Remove(parcelaTemp.CdParcela.Length - 2, 2); // Soma 1 nos dois ultimos caracteres do Código da Parcela int novoCdReajusteParcela = Convert.ToInt32(codigoReajusteParcela) + 1; codigoReajusteParcela = novoCdReajusteParcela.ToString().Length > 1 ? novoCdReajusteParcela.ToString() : "0" + novoCdReajusteParcela.ToString(); parcelaTemp.CdParcela += codigoReajusteParcela; contratoCronogramaFinanceiro.CdParcela = parcelaTemp.CdParcela; contratoCronogramaFinanceiro.DsTextoCorpoNf = parcelaTemp.DsTextoCorpoNf; contratoCronogramaFinanceiro.DtFaturamento = parcelaTemp.DtFaturamento; contratoCronogramaFinanceiro.DtNotaFiscal = parcelaTemp.DtNotaFiscal; contratoCronogramaFinanceiro.IdContratoCliente = parcelaTemp.IdContratoCliente; contratoCronogramaFinanceiro.IdSituacao = parcelaTemp.IdSituacao; contratoCronogramaFinanceiro.NuNotaFiscal = parcelaTemp.NuNotaFiscal; contratoCronogramaFinanceiro.NuParcela = parcelaTemp.NuParcela; contratoCronogramaFinanceiro.VlParcela = parcelaTemp.VlParcela; contratoCronogramaFinanceiro.IcAtraso = parcelaTemp.IcAtraso; contratoCronogramaFinanceiro.IdContrato = parcelaTemp.IdContrato; contratoCronogramaFinanceiro.IdFrente = parcelaTemp.IdFrente; db.ContratoCronogramaFinanceiro.Add(contratoCronogramaFinanceiro); db.SaveChanges(); // Busca os Registros na Tabela ContratoParcelaEntregavelTemporaria para verificar se a Parcela estava ligada com Entregaveis var lstContratoParcelaEntregavelTemp = db.ContratoParcelaEntregavelTemporaria.Where(w => w.IdParcela == parcelaTemp.IdContratoCronFinanceiro).ToList(); if (lstContratoParcelaEntregavelTemp.Count > 0) { foreach (var contratoParcEntreTemp in lstContratoParcelaEntregavelTemp) { // Busca o registro na tabela ContratoEntregavelTemporaria var contratoEntregavelTemp = lstEntregaveisTemporaria.Where(w => w.IdContratoEntregavel == contratoParcEntreTemp.IdEntregavel).FirstOrDefault(); if (contratoEntregavelTemp != null) { // Com o ContratoEntregavel e a Parcela , cria um novo registro na tabela ContratoEntregavelParcela var contratoParcelaEntregavel = new ContratoParcelaEntregavel(); contratoParcelaEntregavel.IdEntregavel = contratoEntregavelTemp.IdEntregavel.Value; contratoParcelaEntregavel.IdParcela = contratoCronogramaFinanceiro.IdContratoCronFinanceiro; db.ContratoParcelaEntregavel.Add(contratoParcelaEntregavel); db.SaveChanges(); } // Após copiar o relacionamento entre Parcela e Entregavel remove o registro db.ContratoParcelaEntregavelTemporaria.Remove(contratoParcEntreTemp); db.SaveChanges(); } } // Após copiar a Parcela , exclui da tabela Temporaria db.ContratoCronogramaFinanceiroTemporaria.Remove(parcelaTemp); db.SaveChanges(); } // Remove todos os registros de EntregaveisTemporaria do devido Contrato db.ContratoEntregavelTemporaria.RemoveRange(lstEntregaveisTemporaria); db.SaveChanges(); // Busca todas as relações antigas entre Parcela e Entregavel e exclui foreach (var entregavelAntigo in lstContratoEntregaveisAntigos) { var lstParcelaEntregavelAntigo = db.ContratoParcelaEntregavel.Where(w => w.IdEntregavel == entregavelAntigo.IdContratoEntregavel).ToList(); if (lstParcelaEntregavelAntigo.Count > 0) { db.ContratoParcelaEntregavel.RemoveRange(lstParcelaEntregavelAntigo); db.SaveChanges(); } } // Remove todos Registros de Entregaveis e Parcelas antigos (salvos no histórico) db.ContratoEntregavel.RemoveRange(lstContratoEntregaveisAntigos); db.ContratoCronogramaFinanceiro.RemoveRange(lstContratoCronogramaFinanceiroAntigos); db.SaveChanges(); }