public bool ConcluirReajuste([FromBody] InputConcluirReajuste concluirReajuste) { using (var db = new FIPEContratosContext()) { var strategy = db.Database.CreateExecutionStrategy(); strategy.Execute(() => { using (var transaction = db.Database.BeginTransaction()) { try { new bContratoReajuste(db).ConcluirContratoReajuste(concluirReajuste); // Confirma operações db.Database.CommitTransaction(); return(true); } catch (Exception ex) { new bEmail(db).EnviarEmailTratamentoErro(ex, "ContratoReajusteController-ConcluirReajuste"); return(false); } } }); return(true); } }
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(); }