public JsonResult ActualizarInventario(InventarioModel model)
        {
            model.__idoperacion = 3;
            var result = new InventarioData().InsertarActualizarInventario(model);

            return(Json(new { res = true }));
        }
示例#2
0
        public JsonResult ValidarProductoInventario(long iddocumentocompra)
        {
            var detallecomprobante = FacturacionData.GetListarDetalleComprobante(iddocumentocompra).FirstOrDefault();

            if (detallecomprobante == null)
            {
                return(Json(new { res = true }));
            }
            var inventario = new InventarioData().obtenerProductoInventario(detallecomprobante.idproducto, detallecomprobante.serie, detallecomprobante.imei);

            if (inventario != null)
            {
                if ((Int32)Constantes.EstadoProducto.NoDisponible != inventario.idestado)
                {
                    return(Json(new
                    {
                        res = false,
                        msj = "El producto que intenta ingresar, está actualmente " +
                              "está dentro de un proceso de reparación."
                    }));
                }
            }
            {
                return(Json(new { res = true }));
            }
        }
        public JsonResult listarAlmacenes(int idsucursal)
        {
            var almacenes    = InventarioData.GetListarAlmacen(idsucursal, null).Where(x => x.idalmacen == 10).ToList();
            var listaalmacen = new SelectList(almacenes, "idalmacen", "nombrealmacen");

            return(Json(listaalmacen));
        }
        public ActionResult ExportarInventario(int?idproducto, int idalmacen, string serie, string imei)
        {
            var result = InventarioData.GetListarInventarioxAlmacen(idalmacen, serie, imei, idproducto).ToList();
            //  return (new JqGridExtension<InventarioModel>()).DataBind(result, result.Count);



            var output = Utilidades.Exportar <InventarioModel>(result);

            return(File(output.ToArray(), "application/vnd.ms-excel", "Inventario_" + DateTime.Now.ToString("yyyyMMddhhmmss") + ".xls"));
        }
        public JsonResult obtenerInventario(int idalmacen, int idproducto, string imei, string serie)
        {
            int idestado = 45;

            var inventario = new InventarioData().obtenerInventario(idalmacen, idproducto, idestado);

            if (inventario == null)
            {
                return(Json(new { res = false }));
            }
            else
            {
                return(Json(new { res = true, inventario }));
            }
        }
        public JsonResult JsonListarInventario(int?idproducto, int idalmacen, string serie, string imei)
        {
            if (imei == "")
            {
                imei = null;
            }
            if (serie == "")
            {
                serie = null;
            }


            var result = InventarioData.GetListarInventarioxAlmacen(idalmacen, serie, imei, idproducto).ToList();

            return((new JqGridExtension <InventarioModel>()).DataBind(result, result.Count));
        }
示例#7
0
        public JsonResult AgregarDetalleIncidencia(int?idproducto, string serie, string imei, decimal?precio, DateTime?fechaemision)
        {
            Session["DetalleComprobanteModel"] = null;
            var detalle = new DetalleComprobanteModel();

            var inventario = new InventarioData().obtenerProductoInventario(idproducto.Value, serie, imei);

            if (inventario != null)
            {
                if ((Int32)Constantes.EstadoProducto.NoDisponible != inventario.idestado)
                {
                    return(Json(new
                    {
                        res = false,
                        msj = "El producto que intenta ingresar, está actualmente " +
                              "está dentro de un proceso de reparación."
                    }));
                }
            }



            var producto = new ProductoData().obtenerProducto(idproducto.Value);

            detalle.cantidad         = 1;
            detalle.codigoproducto   = producto.codigoproducto;
            detalle.descripcionlarga = producto.descripcionlarga;
            detalle.total            = precio;
            detalle.serie            = serie;
            detalle.imei             = imei;
            detalle.idproducto       = idproducto.Value;


            Session["DetalleComprobanteModel"] = detalle;

            return(Json(new { res = true }));
        }
示例#8
0
        public OrdenServicioModel GenerarOrdenServicio(long idincidencia, int idestado, IncidenciaModel ModIncidencia)
        {
            var modOrdenServicio = new OrdenServicioModel();
            var producto         = new InventarioData().obtenerProductoInventario(ModIncidencia.idproducto
                                                                                  , ModIncidencia.serie
                                                                                  , ModIncidencia.imei
                                                                                  );

            modOrdenServicio.idinventario        = producto.idinventario;
            modOrdenServicio.cambioproducto      = false;
            modOrdenServicio.fechahoraregistro   = DateTime.Now;
            modOrdenServicio.idestado            = idestado;
            modOrdenServicio.idusuario           = Usuario.Idusuario;
            modOrdenServicio.idcliente           = ModIncidencia.idcliente;
            modOrdenServicio.idincidencia        = idincidencia;
            modOrdenServicio.idtipoordenservicio = (Int32)Constantes.tipoordenservicio.ost;
            modOrdenServicio.activo              = true;
            modOrdenServicio.cotizado            = false;
            modOrdenServicio.idproducto          = ModIncidencia.idproducto;
            modOrdenServicio.engarantia          = ModIncidencia.engarantia;
            modOrdenServicio.serie               = ModIncidencia.serie;
            modOrdenServicio.imei                = ModIncidencia.imei;
            modOrdenServicio.idsucursaldestino   = ModIncidencia.idsucursaldestino.Value;
            modOrdenServicio.idsucursalorigen    = ModIncidencia.idsucursal;
            modOrdenServicio.iddirecciondelivery = ModIncidencia.iddirecciondelivery;
            if (modOrdenServicio.iddirecciondelivery != null)
            {
                modOrdenServicio.delivery = true;
            }
            else
            {
                modOrdenServicio.delivery = false;
            }

            return(new OrdenServicioData().InsertarActualizarOrdenServicio(modOrdenServicio));
        }
示例#9
0
        public ReturnValor UpdateInventariosCerrarDeshacer(InventarioAux pInventario)
        {
            ReturnValor objReturnValor = new ReturnValor();

            try
            {
                inventarioData = new InventarioData();
                using (TransactionScope tx = new TransactionScope(TransactionScopeOption.Required))
                {
                    objReturnValor.Exitosa = inventarioData.UpdateInventariosCerrarDeshacer(pInventario);
                    if (objReturnValor.Exitosa)
                    {
                        tx.Complete();
                    }
                }
                objReturnValor.Message = objReturnValor.Exitosa ?
                                         HelpMessages.InventarioCerradoOK : HelpMessages.InventarioCerradoNOOK;
            }
            catch (Exception ex)
            {
                returnValor = HelpException.mTraerMensaje(ex);
            }
            return(returnValor);
        }
示例#10
0
        public JsonResult RegistrarEstadoFisico(IncidenciaModel model)
        {
            int idEstadoOrdenServicio;

            if (model.AccesoriosSeleccionados != null)
            {
                var modEstadoFisico = new EstadoFisicoModel();
                modEstadoFisico.idincidencia  = model.idincidencia.Value;
                modEstadoFisico.idsaccesorios = string.Join(",", model.AccesoriosSeleccionados);
                new AgendamientoData().insertarActualizarAccesorioIncidencia(modEstadoFisico);
            }
            var modIncidencia = new IncidenciaData().ObtenerIncidencia(model.idincidencia.Value);

            modIncidencia.__tipooperacion = 5;// cambiar estado
            modIncidencia.idestado        = (int)(Constantes.EstadoIncidencia.Cerrada);
            modIncidencia.idetapa         = (int)(Constantes.Etapa.EstadoFisico);

            if (model.idsucursalreparacion.HasValue)
            {
                modIncidencia.idsucursalreparacion = model.idsucursalreparacion;
                modIncidencia.idsucursaldestino    = model.idsucursalreparacion;
                idEstadoOrdenServicio = (Int32)Constantes.EstadoOrdenServicio.PendienteDespacho;
            }
            else
            {
                modIncidencia.idsucursalreparacion = modIncidencia.idsucursal;
                idEstadoOrdenServicio = (Int32)Constantes.EstadoOrdenServicio.PendienteAsignacionTecnico;
            }

            modIncidencia.iddirecciondelivery = model.iddirecciondelivery;

            var result = new IncidenciaData().insertarActualizarIncidencia(modIncidencia);



            var ModInventario = new InventarioModel();

            ModInventario.cantidad          = 1;
            ModInventario.fechahoraregistro = DateTime.Now;
            //almacen principal
            var objAlmacen = InventarioData.GetListarAlmacen(modIncidencia.idsucursal, "001").FirstOrDefault();

            ModInventario.idalmacen            = objAlmacen.idalmacen.Value;
            ModInventario.iddocumentorecepcion = 0;
            ModInventario.idestado             = (Int32)Constantes.Producto.PendienteReparar;
            ModInventario.idproducto           = modIncidencia.idproducto;
            ModInventario.idusuarioregistro    = Usuario.Idusuario;
            ModInventario.imei          = modIncidencia.imei;
            ModInventario.serie         = modIncidencia.serie;
            ModInventario.__idoperacion = 1;
            ModInventario.idinventario  = new InventarioData().InsertarActualizarInventario(ModInventario);

            #region Para ordenes que se atienden en la misma localidad
            if (modIncidencia.idsucursal == modIncidencia.idsucursaldestino.Value)
            {
                idEstadoOrdenServicio = (Int32)Constantes.EstadoOrdenServicio.PendienteAsignacionTecnico;
                //modOrdenServicio.__tipooperacion = 2;
                //new OrdenServicioData().InsertarActualizarOrdenServicio(modOrdenServicio);
            }
            #endregion

            var modOrdenServicio = GenerarOrdenServicio(model.idincidencia.Value, idEstadoOrdenServicio, modIncidencia);



            return(Json(new { res = true, idordenservicio = modOrdenServicio.idordenserviciotecnico, numeroordenservicio = modOrdenServicio.numeroordenservicio }));
        }
示例#11
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 }));
        }
示例#12
0
 public InventarioLogic()
 {
     inventarioData      = new InventarioData();
     inventarioSerieData = new InventarioSerieData();
     returnValor         = new ReturnValor();
 }
        public JsonResult RegistrarDespacho(OrdenSalidaModel model)
        {
            var detalle = (List <OrdenSalidaDetalleModel>)Session["DespachoMasivo"];

            #region comprobar requisitos de la carga
            var modProducto = new ProductoData().obtenerProducto(model.idproducto);


            foreach (var item in detalle)
            {
                switch (modProducto.idrequisitoascanear)
                {
                case (Int32)Constantes.Scanear.Imei:
                    if (string.IsNullOrEmpty(item.imei))
                    {
                        return(Json(new { res = false, msj = "La carga requiere del número de IMEI" }));
                    }
                    break;

                case (Int32)Constantes.Scanear.Mac:
                    if (string.IsNullOrEmpty(item.mac))
                    {
                        return(Json(new { res = false, msj = "La carga requiere del número de MAC" }));
                    }
                    break;

                case (Int32)Constantes.Scanear.Serie:
                    if (string.IsNullOrEmpty(item.serie))
                    {
                        return(Json(new { res = false, msj = "La carga requiere del número de Serie" }));
                    }
                    break;

                case (Int32)Constantes.Scanear.SerieImei:
                    if (string.IsNullOrEmpty(item.imei))
                    {
                        return(Json(new { res = false, msj = "La carga requiere del número de IMEI" }));
                    }
                    if (string.IsNullOrEmpty(item.serie))
                    {
                        return(Json(new { res = false, msj = "La carga requiere del número de Serie" }));
                    }
                    break;

                case (Int32)Constantes.Scanear.SerieImeiMac:
                    if (string.IsNullOrEmpty(item.imei))
                    {
                        return(Json(new { res = false, msj = "La carga requiere del número de IMEI" }));
                    }
                    if (string.IsNullOrEmpty(item.serie))
                    {
                        return(Json(new { res = false, msj = "La carga requiere del número de Serie" }));
                    }
                    if (string.IsNullOrEmpty(item.mac))
                    {
                        return(Json(new { res = false, msj = "La carga requiere del número de MAC" }));
                    }
                    break;

                default:
                    break;
                }
                var inventario = new InventarioData().obtenerProductoInventario(modProducto.idproducto.Value
                                                                                , item.serie, item.imei);

                if (inventario == null)
                {
                    return(Json(new { res = false, msj = "El item con serie: " + item.serie + " no existe." }));
                }

                item.idinventario = inventario.idinventario;


                var ordenservicio = new InventarioData().obtenerOrdenServicioxInventario(inventario.idinventario);

                if (ordenservicio == null)
                {
                    return(Json(new { res = false, msj = "El item con serie: " + item.serie + " tiene un error con la orden de servicio." }));
                }

                item.idordenservicio = ordenservicio.idordenserviciotecnico.Value;

                if (inventario.idestado == (Int32)Constantes.EstadoProducto.PendienteReparar)
                {
                    return(Json(new { res = false, msj = "El item con serie: " + item.serie + " está pendiente de reparación." }));
                }
                if (inventario.idestado != (Int32)Constantes.EstadoProducto.Reparado)
                {
                    if (inventario.idestado != (Int32)Constantes.EstadoProducto.Inoperativo)
                    {
                        return(Json(new { res = false, msj = "El item con serie: " + item.serie + " no está disponible para despacho." }));
                    }
                }
            }

            #endregion


            if (detalle == null)
            {
                return(Json(new { res = false, msj = "No existen datos cargados en el sistema." }));
            }

            model.fechahoraregistro = DateTime.Now;
            model.activo            = true;
            model.idusuarioregistro = Usuario.Idusuario;
            model.iddocumentosalida = new DespachoData().InsertarOrdenSalida(model);

            foreach (var item in detalle)
            {
                item.fechahoraatencion = DateTime.Now;
                item.idordensalida     = model.iddocumentosalida.Value;
                item.cantidad          = 1;
                item.idusuarioatencion = Usuario.Idusuario;
                item.idproducto        = model.idproducto;

                new DespachoData().InsertarOrdenSalidaDetalle(item);



                var inventarioModel = new InventarioModel();

                inventarioModel.idestado      = (Int16)Constantes.Producto.NoDisponible;
                inventarioModel.idinventario  = item.idinventario;
                inventarioModel.cantidad      = 0;
                inventarioModel.__idoperacion = 2;


                new InventarioData().InsertarActualizarInventario(inventarioModel);


                var ordenServicioModel = new OrdenServicioModel();
                ordenServicioModel.idordenserviciotecnico = item.idordenservicio;
                ordenServicioModel.idestado        = (Int16)Constantes.EstadoOrdenServicio.Cerrada;
                ordenServicioModel.__tipooperacion = 2;


                new OrdenServicioData().InsertarActualizarOrdenServicio(ordenServicioModel);
            }
            return(Json(new { res = true }));
        }