public Cotizacion SaveCotizacionDiversos(Cotizacion cotizacion) { //Grabar Cotizacion IUnitOfWork unitOfWork = _cotizacionRepository.UnitOfWork as IUnitOfWork; //Cotizacion cotDatos = _cotizacionRepository.FindCotizacion(cotizacion.CotizacionID); Cotizacion cotDatos = _cotizacionRepository.FindCotizacionDiversos(cotizacion.CotizacionID); cotDatos.bk_te_CotizacionCristal = cotizacion.bk_te_CotizacionCristal; cotDatos.bk_te_CotizacionAnuncio = cotizacion.bk_te_CotizacionAnuncio; cotDatos.bk_te_CotizacionRobo = cotizacion.bk_te_CotizacionRobo; cotDatos.bk_te_CotizacionDinVal = cotizacion.bk_te_CotizacionDinVal; cotDatos.bk_te_CotizacionCaldera = cotizacion.bk_te_CotizacionCaldera; cotDatos.bk_te_CotizacionCalderaPC = cotizacion.bk_te_CotizacionCalderaPC; cotDatos.bk_te_CotizacionRotMaq = cotizacion.bk_te_CotizacionRotMaq; cotDatos.bk_te_CotizacionRotMaqPC = cotizacion.bk_te_CotizacionRotMaqPC; cotDatos.bk_te_CotizacionEqContratista = cotizacion.bk_te_CotizacionEqContratista; cotDatos.bk_te_CotizacionRCEqContratista = cotizacion.bk_te_CotizacionRCEqContratista; cotDatos.bk_te_CotizacionEqElec = cotizacion.bk_te_CotizacionEqElec; cotDatos.bk_te_CotizacionEqElecPortExt = cotizacion.bk_te_CotizacionEqElecPortExt; cotDatos.bk_te_CotizacionEqElecCostoOper = cotizacion.bk_te_CotizacionEqElecCostoOper; cotDatos.bk_te_CotizacionEqElecMovil = cotizacion.bk_te_CotizacionEqElecMovil; //Deducibles generales cotDatos.bk_te_CotizacionDeducible.Clear(); cotizacion.bk_te_CotizacionDeducible.ToList().ForEach(x => { cotDatos.bk_te_CotizacionDeducible.Add(x); }); if (cotizacion.bk_tw_EqContratistaEquipo != null) { if (cotizacion.bk_tw_EqContratistaEquipo.Where(x => x.Visible).Count() > 0) { EqContratistaEquipo equipo; int inciso = 1; int maxID = _cotizacionRepository.LastCotizacionEqContratistaEquipoID() + 1; cotizacion.bk_tw_EqContratistaEquipo.Where(x => x.Visible && x.Valor.HasValue).ToList().ForEach(x => { x.Inciso = inciso; inciso++; if (x.EqContratistaEquipoID == 0) { x.EqContratistaEquipoID = maxID; maxID++; cotDatos.bk_tw_EqContratistaEquipo.Add(x); } else { equipo = cotDatos.bk_tw_EqContratistaEquipo.Where(y => y.EqContratistaEquipoID == x.EqContratistaEquipoID).SingleOrDefault(); equipo.CotizacionID = x.CotizacionID; equipo.Descripcion = x.Descripcion; equipo.Inciso = x.Inciso; equipo.Marca = x.Marca; equipo.nroSerie = x.nroSerie; equipo.Valor = x.Valor; } }); } cotizacion.bk_tw_EqContratistaEquipo.Where(x => x.Eliminado).ToList().ForEach(x => { cotDatos.bk_tw_EqContratistaEquipo.Remove(cotDatos.bk_tw_EqContratistaEquipo.Where(y => y.EqContratistaEquipoID == x.EqContratistaEquipoID).FirstOrDefault()); }); } _cotizacionRepository.Modify(cotDatos); unitOfWork.Commit(); //Deducibles aplica si no es CMIC para eq contratista (se insertan por default los valores) if (cotDatos.bk_te_CotizacionEqContratista != null) { if (cotDatos.bk_te_CotizacionEqContratista.isCMICDeduc) { _cotizacionRepository.execUpdateCMICDeducibles(cotizacion.CotizacionID); } } _cotizacionRepository.execDeleteCotizacionEqContratistaEquipo(); //Eliminar de la BD los que no tienen cotizacionID AddCotizacionEquipo(cotDatos); //Agregamos adicionales para la parte visual no para la BD _cotizacionRepository.execProcesarDiversos(cotizacion.CotizacionID); //Procesamos para obtener cuota y prima if (cotDatos.bk_te_CotizacionEqContratista != null) { ResultadoPrima eq = _cotizacionRepository.GetPrimaCuota((int)enumTableCotizacion.EqContratista, cotizacion.CotizacionID); cotDatos.bk_te_CotizacionEqContratista.Cuota = eq.Cuota; cotDatos.bk_te_CotizacionEqContratista.Prima = eq.Prima; } if (cotDatos.bk_te_CotizacionRCEqContratista != null) { ResultadoPrima rcEq = _cotizacionRepository.GetPrimaCuota((int)enumTableCotizacion.RCEqContratista, cotizacion.CotizacionID); cotDatos.bk_te_CotizacionRCEqContratista.Cuota = rcEq.Cuota; cotDatos.bk_te_CotizacionRCEqContratista.Prima = rcEq.Prima; } return(cotDatos); }