Example #1
0
        /// <summary>
        /// Inserta o Actualiza la Venta Cotización
        /// </summary>
        /// <param tipooperacion 1="Insertar"></param>
        /// <param tipooperacion 2="Aprobar/Rechazar"></param>
        /// <returns></returns>
        public long insertarActualizarCotizacion(VentaCotizacionModel model)
        {
            Mapper.CreateMap <VentaCotizacionModel, InsertarActualizarVentaCotizacionCommand>();
            var command = Mapper.Map <VentaCotizacionModel, InsertarActualizarVentaCotizacionCommand>(model);
            var resp    = (InsertarActualizarVentaCotizacionOutput)command.Execute();

            return(resp.idcotizacion);
        }
Example #2
0
        public JsonResult AprobarDesaprobarCotizacion(long idcotizacion, string estado, long idordenservicio)
        {
            var model               = new VentaCotizacionModel();
            var modOrdenServicio    = new OrdenServicioData().obtenerOrdenServicio(idordenservicio);
            var modOrdenTrabajo     = new OrdenTrabajoModel();
            var TrabajoDetalleModel = new OrdenTrabajoDetalleModel();

            if (estado == "aprobado")
            {
                modOrdenServicio.idestado = (Int32)Constantes.EstadoOrdenServicio.PendienteInicioReparacion;
                modOrdenServicio.cotizado = true;
                modOrdenTrabajo.idestado  = (Int32)Constantes.EstadoOrdenTrabajo.Asignada;
                model.aceptado            = true;
            }
            else if (estado == "rechazado")
            {
                modOrdenServicio.idestado = (Int32)Constantes.EstadoOrdenServicio.PendienteEntregaCliente;
                modOrdenTrabajo.idestado  = (Int32)Constantes.EstadoOrdenTrabajo.Completada;
                model.aceptado            = false;
            }


            modOrdenServicio.__tipooperacion = 2;
            modOrdenTrabajo.__tipooperacion  = 2;
            model.__tipooperacion            = 2;

            model.idcotizacion = idcotizacion;
            modOrdenServicio.idordenserviciotecnico = idordenservicio;
            modOrdenTrabajo.idordentrabajo          = modOrdenServicio.idordentrabajo;



            new ReparacionesData().InsertarActualizarOrdenTrabajo(modOrdenTrabajo);
            new VentaData().insertarActualizarCotizacion(model);
            new OrdenServicioData().InsertarActualizarOrdenServicio(modOrdenServicio);



            #region registrar reparaciones


            TarifaModel  modTarifa;
            AlmacenModel modAlmacen;

            var usuario = UsuariosData.ObtenerUsuario(16);

            var listadoTotal = VentaData.listarCotizacionDetalle(idordenservicio).ToList();

            foreach (var item in listadoTotal)
            {
                if (item.descripcion != "Repuesto")
                {
                    continue;
                }
                var modRepuesto = new ProductoData().obtenerProducto(item.idproducto);
                modAlmacen = new InventarioData().obtenerAlmacen(Constantes.CodAlmacen.Telecom_Repuestos);
                var existerepuesto = new InventarioData().obtenerInventario(modAlmacen.idalmacen.Value, item.idproducto, 45);

                #region enviomail
                StringBuilder sb = new StringBuilder();
                sb.Append("<table width='100%' cellpadding='0' cellspacing='0' border='0' dir='ltr' style='font-size:16px;background-color:rgb(227,225,225)'>");
                sb.Append("<tbody>");
                sb.Append("<tr>");
                sb.Append("        <td align='center' valign='top' style='margin:0;padding:40'>");
                sb.Append("            <table align='center' border='0' cellspacing='0' cellpadding='0' width='700' bgcolor='#1ab394' style='width:700px;border:1px solid ");
                sb.Append("         transparent; ");
                sb.Append("order-radius:13px;margin:auto;background-color:#18a689'>");
                sb.Append("                <tbody>");
                sb.Append("					<tr>");
                sb.Append("					<td>");
                sb.Append("						<table cellpadding='0' cellspacing='0' border='0' width='100%'>");
                sb.Append("						<tbody>");
                sb.Append("							<tr>");
                sb.Append("							<td valign='top' align='left' style='padding:0px;margin:0px'>");
                sb.Append("								<table cellpadding='0' cellspacing='0' border='0' width='100%'>");
                sb.Append("								<tbody>");
                sb.Append("									<tr>");
                sb.Append("									<td align='left' valign='top'>");
                sb.Append("									<table width='100%' border='0' cellpadding='0' cellspacing='0' align='center'>");
                sb.Append("										<tbody>");
                sb.Append("											<tr>");
                sb.Append("											<td align='left' valign='top' style='font-family:Arial,Helvetica,sans-serif;font-size:20px;border-radius:6px");
                sb.Append("	                                        color:rgb(' sb.Append('55,255,255)'>");
                sb.Append("												<div style='text-align:center'><span style='color:rgb(255,255,255);font-weight:bold'><br></span></div>");
                sb.Append("												<div style='text-align:center'><span style='color:rgb(255,255,255);font-weight:bold'>Smartway - SIR Notificaciones");
                sb.Append("                                             </span></div>");
                sb.Append("												<div style='text-align:center'><span style='color:rgb(255,255,255);font-weight:bold'><br></span></div>");
                sb.Append("												<span style='color:rgb(38,38,38)'></span>");
                sb.Append("											</td>");
                sb.Append("											</tr>");
                sb.Append("										</tbody>");
                sb.Append("									</table>");
                sb.Append("									</td>");
                sb.Append("									</tr>");
                sb.Append("									<tr>");
                sb.Append("									<td>");
                sb.Append("										<table width='100%' border='0' cellpadding='10' cellspacing='10' align='center'  bgcolor='white'>");
                sb.Append("										<tbody>");
                sb.Append("										       <tr>");
                sb.Append("												<td align='left' valign='top' style='padding:10px;font-family:Arial,Helvetica,sans-serif;color:rgb(38,38,38)");
                sb.Append("                                             font-size:12px;background-color:rgb(255,255,255);width:190px '  colspan='4'> ");
                sb.Append("													Sr(a). "+ usuario.usr_str_nombre + ' ' + usuario.usr_str_apellidos + "");
                sb.Append("												</td>");
                sb.Append("											</tr>");
                sb.Append("											<tr>");
                sb.Append("												<td colspan='10' align='left' valign='top' style='padding:10px;font-family:Arial,Helvetica,sans-serif;color:rgb(38,38,38);");
                sb.Append("                                         font-size:12px;background-color:rgb(255,255,255);width:190px '  colspan='4'>");
                sb.Append("												   Se le informa que el usuario "+ Usuario.NombreUsuario + " ha realizado una solicitud de respuesto para la reparación de la orden de servicio: " + modOrdenServicio.numeroordenservicio);
                sb.Append("												</td>");
                sb.Append("											</tr>");
                sb.Append("												<tr>");
                sb.Append("												<td colspan='10' align='left' valign='top' style='padding:10px;font-family:Arial,Helvetica,sans-serif;color:rgb(38,38,38);");
                sb.Append("                                             font-size:14px;font-weight:bold;background-color:rgb(255,255,255)'  colspan='4'>");
                sb.Append("													<span style='font-family:Arial,Helvetica,sans-serif;color:rgb(38,38,38)'>Se ha solicitado el siguiente respuesto.</span> ");
                sb.Append("");
                sb.Append("												</td>");
                sb.Append("											</tr>");
                sb.Append("											<tr>");
                sb.Append("												<td align='left' valign='top' style='padding:10px;font-family:Arial,Helvetica,sans-serif;color:rgb(38,38,38);");
                sb.Append("ont-size:12px;background-color:rgb(255,255,255);width:190px'>");
                sb.Append("													"+ modRepuesto.codigoproducto);
                sb.Append("												</td>");
                sb.Append("												<td align='left' valign='top' style='padding:10px;font-family:Arial,Helvetica,sans-serif;color:rgb(38,38,38);");
                sb.Append("ont-size:12px;background-color:rgb(255,255,255);width:190px'>");
                sb.Append("												</td>");
                sb.Append("												<td align='left' valign='top' style='padding:10px;font-family:Arial,Helvetica,sans-serif;color:rgb(38,38,38);");
                sb.Append("ont-size:12px;background-color:rgb(255,255,255);width:190px'>");
                sb.Append("													"+ modRepuesto.descripcionlarga);
                sb.Append("												</td>");
                //sb.Append("                                            < td align = 'left' valign = 'top' style = 'padding:10px;font-family:Arial,Helvetica,sans-serif;color:rgb(38,38,38);");
                //sb.Append("ont-size:12px;background-color:rgb(255,255,255);width:190px'>");
                //sb.Append("													" + existerepuesto == null ? "" : existerepuesto.serie);
                sb.Append("												</td>");
                sb.Append("											</tr>");
                sb.Append("									");
                sb.Append("											");
                sb.Append("										</tbody>");
                sb.Append("										");
                sb.Append("										</table>");
                sb.Append("									</td>");
                sb.Append("									</tr>");
                sb.Append("									<tr>");
                sb.Append("									<td>");
                sb.Append("										");
                sb.Append("						</tbody>");
                sb.Append("						</table>");
                sb.Append("					</td>");
                sb.Append("					</tr>");
                sb.Append("				</tbody>");
                sb.Append("			</table>");
                sb.Append("        </td>");
                sb.Append("    </tr>");
                sb.Append("</tbody>");
                sb.Append("</table>");
                #endregion

                bool correo = MailHelper.EnviarMail(usuario.usr_str_email, "[Se ha solicitado un repuesto de almacén]", sb.ToString(), true);


                if (existerepuesto == null)
                {
                }
                else if (existerepuesto.cantidad == 0)
                {
                    // NO se notifica
                }
                else
                {
                    existerepuesto.cantidad = existerepuesto.cantidad - 1;
                    if (existerepuesto.serie != null || existerepuesto.imei != null)
                    {
                        if (existerepuesto.serie != "" || existerepuesto.imei != "")
                        {
                            existerepuesto.idestado = (Int32)Constantes.Producto.NoDisponible;
                        }
                        else
                        {
                            existerepuesto.idestado = (Int32)Constantes.Producto.Disponible;
                        }
                    }
                    else
                    {
                        existerepuesto.idestado = (Int32)Constantes.Producto.Disponible;
                    }

                    existerepuesto.__idoperacion = 2;

                    new InventarioData().InsertarActualizarInventario(existerepuesto);
                }


                var diagnostico = new DiagnosticoData().listarDiagnostico(null, null, null, null, item.iddiagnostico).FirstOrDefault();

                var aux = new ReparacionData().listarReparacion(null
                                                                , null, item.idreparacion).ToList();


                var modReparacion = aux.Where(x => x.idreparacion.Value.Equals(item.idreparacion)).FirstOrDefault();


                var modIncidencia = new IncidenciaData().ObtenerIncidencia(modOrdenServicio.idincidencia.Value);

                modTarifa = new AgendamientoData().calcularTarifa(
                    modIncidencia.idtipoproducto
                    , modReparacion.idnivelreparacion
                    , modIncidencia.idpartner);


                TrabajoDetalleModel                = new OrdenTrabajoDetalleModel();
                TrabajoDetalleModel.activo         = true;
                TrabajoDetalleModel.costo          = modRepuesto.costounitario;
                TrabajoDetalleModel.diagnostico    = diagnostico.descripcion;
                TrabajoDetalleModel.reparacion     = modReparacion.descripcion;
                TrabajoDetalleModel.repuesto       = modRepuesto.descripcionlarga;
                TrabajoDetalleModel.iddiagnostico  = item.iddiagnostico;
                TrabajoDetalleModel.idrepuesto     = item.idproducto;
                TrabajoDetalleModel.idreparacion   = item.idreparacion;
                TrabajoDetalleModel.costo          = modRepuesto.costounitario;
                TrabajoDetalleModel.descripcion    = "Repuesto";
                TrabajoDetalleModel.idordentrabajo = modOrdenServicio.idordentrabajo.Value;
                TrabajoDetalleModel.__idoperacion  = 1;
                TrabajoDetalleModel.servicio       = false;
                if (existerepuesto != null)
                {
                    TrabajoDetalleModel.idinventario = existerepuesto.idinventario;
                }
                var asociado = new ReparacionesData().InsertarActualizarOrdenTrabajoDetalle(TrabajoDetalleModel);



                if (modTarifa != null)
                {
                    TrabajoDetalleModel                    = new OrdenTrabajoDetalleModel();
                    TrabajoDetalleModel.activo             = true;
                    TrabajoDetalleModel.costo              = modTarifa.costo.Value;
                    TrabajoDetalleModel.diagnostico        = diagnostico.descripcion;
                    TrabajoDetalleModel.reparacion         = modReparacion.nivelreparacion;
                    TrabajoDetalleModel.repuesto           = "";
                    TrabajoDetalleModel.iddiagnostico      = item.iddiagnostico;
                    TrabajoDetalleModel.idrepuesto         = item.idrepuesto;
                    TrabajoDetalleModel.idreparacion       = item.idreparacion;
                    TrabajoDetalleModel.descripcion        = modReparacion.nivelreparacion;
                    TrabajoDetalleModel.idordentrabajo     = modOrdenServicio.idordentrabajo.Value;
                    TrabajoDetalleModel.servicio           = true;
                    TrabajoDetalleModel.idservicioasociado = asociado;
                    TrabajoDetalleModel.__idoperacion      = 1;
                    new ReparacionesData().InsertarActualizarOrdenTrabajoDetalle(TrabajoDetalleModel);
                }
            }



            //  return Json(new { res = true });



            #endregion



            return(Json(new { res = true }));
        }
        public JsonResult registrarCotizacion(int?idsucursalreparacion, long?idordentrabajo)
        {
            var model         = new VentaCotizacionModel();
            var modelDetalle  = new VentaCotizacionDetalleModel();
            var listadoactual = (List <VentaCotizacionDetalleModel>)Session["CotizacionDetalleModel"];

            var modOrdenTrabajo  = new ReparacionesData().obtenerOrdenTrabajo(idordentrabajo.Value);
            var modOrdenServicio = new OrdenServicioData().obtenerOrdenServicio(modOrdenTrabajo.idordenserviciotecnico.Value);


            model.fechahoraregistro = DateTime.Now;
            model.idusuarioregistro = Usuario.Idusuario;
            model.idsucursal        = idsucursalreparacion.Value;
            model.idordenservicio   = modOrdenTrabajo.idordenserviciotecnico.Value;
            model.idcliente         = modOrdenServicio.idcliente;
            model.idmoneda          = 8;


            model.str_total    = (Convert.ToDecimal(listadoactual.Sum(x => x.costototal).ToString()) * (decimal)(1.00)).ToString("0.##");
            model.str_subtotal = (Convert.ToDecimal(model.str_total) / (decimal)(1.18)).ToString("0.##");
            model.str_igv      = (Convert.ToDecimal(model.str_total) - Convert.ToDecimal(model.str_subtotal)).ToString("0.##");

            model.total    = Convert.ToDecimal(model.str_total);
            model.subtotal = Convert.ToDecimal(model.str_subtotal);
            model.igv      = Convert.ToDecimal(model.str_igv);

            model.generoventa     = false;
            model.__tipooperacion = 1;
            var idcotizacion = new VentaData().insertarActualizarCotizacion(model);



            foreach (var item in listadoactual)
            {
                modelDetalle = new VentaCotizacionDetalleModel();
                modelDetalle.idcotizacion  = idcotizacion;
                modelDetalle.costototal    = item.costototal;
                modelDetalle.iddiagnostico = item.iddiagnostico;
                modelDetalle.descripcion   = item.descripcion;
                modelDetalle.idreparacion  = item.idreparacion;
                modelDetalle.idproducto    = item.idrepuesto;


                new VentaData().insertarActualizarDetalleCotizacion(modelDetalle);

                #region registrar_reparacion

                //var modelReparacionDetalle = new OrdenTrabajoDetalleModel();
                //modelReparacionDetalle.costo = item.costototal;
                //modelReparacionDetalle.descripcion = item.descripcion;
                //modelReparacionDetalle.iddiagnostico = item.iddiagnostico;
                //modelReparacionDetalle.idreparacion = item.idreparacion;
                //modelReparacionDetalle.idrepuesto = item.idrepuesto;
                //modelReparacionDetalle.idordentrabajo = idordentrabajo.Value;


                //modelReparacionDetalle.__idoperacion = 1;
                //new ReparacionesData().InsertarActualizarOrdenTrabajoDetalle(modelReparacionDetalle);


                #endregion
            }



            modOrdenServicio.idestado        = (Int32)Constantes.EstadoOrdenServicio.EnEsperaRespuestaCliente;
            modOrdenServicio.__tipooperacion = 2;
            new OrdenServicioData().InsertarActualizarOrdenServicio(modOrdenServicio);



            //modOrdenTrabajo.idusuarioregistro = Usuario.Idusuario;
            //modOrdenTrabajo.numeroordentrabajo = "100-0000067661";
            //modOrdenTrabajo.fechahoraregistro = DateTime.Now;
            modOrdenTrabajo.idestado        = (Int32)Constantes.EstadoOrdenTrabajo.CotizacionCompleta;
            modOrdenTrabajo.__tipooperacion = 2;


            new ReparacionesData().InsertarActualizarOrdenTrabajo(modOrdenTrabajo);


            return(Json(new { res = true }));
        }
        public ActionResult Cotizar(long idordentrabajo)
        {
            Session["CotizacionDetalleModel"] = null;
            var model          = new VentaCotizacionModel();
            var dataIncidencia = new IncidenciaData();
            var listadoactual  = new List <VentaCotizacionDetalleModel>();


            var modOrdenTrabajo  = new ReparacionesData().obtenerOrdenTrabajo(idordentrabajo);
            var modOrdenServicio = new OrdenServicioData().obtenerOrdenServicio(modOrdenTrabajo.idordenserviciotecnico.Value);
            var modIncidencia    = new IncidenciaData().ObtenerIncidencia(modOrdenServicio.idincidencia.Value);

            //var listadoTotal = new VentaData().listarCotizacionDetalle(idincidencia).ToList();

            //var modIncidencia = dataIncidencia.ObtenerIncidencia(idincidencia);
            //var modSucursal = new SucursalData().obtenerSucursal(modIncidencia.idsucursal);



            #region EvaluacionDeGarantia

            //model.engarantia = modIncidencia.engarantia;
            //if (model.engarantia)
            //{
            //    if (modIncidencia.idtipogarantia == (Int32)(Constantes.TipoGarantia.Cliente))
            //        model.garantia = "Con garantía de Cliente";
            //    else if (modIncidencia.idtipogarantia == (Int32)(Constantes.TipoGarantia.DAP))
            //        model.garantia = "Con garantía DAP";
            //    else if (modIncidencia.idtipogarantia == (Int32)(Constantes.TipoGarantia.SinGarantia))
            //        model.garantia = "Sin Garantia";
            //}

            #endregion

            //if (listadoTotal.Count > 0)
            //{
            //    Session["CotizacionDetalleModel"] = listadoTotal;
            //    model.idsucursalreparacion = listadoTotal[0].idsucursalreparacion;
            //    model.str_total = (Convert.ToDecimal(listadoTotal.Sum(x => x.costo).ToString()) * (decimal)(1.00)).ToString("0.##");
            //    model.str_subtotal = (Convert.ToDecimal(model.str_total) / (decimal)(1.18)).ToString("0.##");
            //    model.str_igv = (Convert.ToDecimal(model.str_total) - Convert.ToDecimal(model.str_subtotal)).ToString("0.##");
            //    model.idcotizacion = listadoTotal[0].idcotizacion;
            //    model.iddirecciondelivery = listadoTotal[0].iddirecciondelivery;
            //    model.idsucursalreparacion = listadoTotal[0].idsucursalreparacion;
            //}
            //else
            //{
            //    if (!model.engarantia)
            //    {
            //        //listadoTotal.Add(new CotizacionDetalleModel
            //        //{
            //        //    costo = Convert.ToDecimal(20.00),
            //        //    descripcion = "Servicio de Reparación"
            //        //});
            //        //listadoTotal.Add(new CotizacionDetalleModel
            //        //{
            //        //    costo = Convert.ToDecimal(10.00),
            //        //    descripcion = "Delivery"
            //        //});
            //    }
            //    Session["CotizacionDetalleModel"] = listadoTotal;

            //}


            #region combos


            var sucursal = new SucursalData().ListarSucursal("", "", null, (Int32)Constantes.Partner.Smartway).Where(x => x.reparacion);

            var listasucursal = new SelectList(
                sucursal,
                "idsucursal",
                "nombre");


            ViewData["listasucursal"] = listasucursal;


            var diagnostico      = new DiagnosticoData().listarDiagnostico(null, null, modIncidencia.idtipoproducto, modOrdenServicio.engarantia);
            var listadiagnostico = new SelectList(diagnostico, "iddiagnostico", "descripcion");
            ViewData["listadiagnostico"] = listadiagnostico;

            #endregion

            #region Asignar propiedades cotizacion Model

            model.numeroincidencia = modIncidencia.numeroincidencia;
            model.falla            = modIncidencia.falla;
            model.producto         = modIncidencia.producto;
            model.codigoproducto   = modIncidencia.codigoproducto;
            model.fechaasignacion  = modOrdenTrabajo.fechahoraasignacion.Value;
            model.idpartner        = modIncidencia.idpartner;
            model.idtipoproducto   = modIncidencia.idtipoproducto;
            model.idfabricante     = modIncidencia.idfabricante;
            model.idsucursal       = modIncidencia.idsucursal;
            model.idproducto       = modIncidencia.idproducto;

            #endregion

            return(View(model));
        }