Ejemplo n.º 1
0
        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);
        }