public JsonResult InsertarActualizarGuiaRemision(GuiaRemisionDetalleModel guiadetalle)
        {
            OrdenSalidaModel orden = null;

            if (guiadetalle.numeroordensalida != null)
            {
                orden = new DespachoData().GetListarOrdenSalida(guiadetalle.numeroordensalida.Trim()).SingleOrDefault();
            }

            if (orden != null)
            {
                var detalles = new DespachoData().GetListarOrdenSalidaDetalle(orden.iddocumentosalida.Value).ToList();
                GuiaRemisionDetalleModel Newguiadetalle = null;

                foreach (var item in detalles)
                {
                    Newguiadetalle                = new GuiaRemisionDetalleModel();
                    Newguiadetalle.cantidad       = detalles.Count;
                    Newguiadetalle.codigo         = item.codigoproducto;
                    Newguiadetalle.descripcion    = item.descripcionlarga;
                    Newguiadetalle.idguiaremision = guiadetalle.idguiaremision;


                    new DespachoData().InsertarActualizarGuiaRemisionDetalle(Newguiadetalle);
                    break;
                }
            }
            else
            {
                new DespachoData().InsertarActualizarGuiaRemisionDetalle(guiadetalle);
            }

            return(Json(new { res = true }));
        }
        public long InsertarOrdenSalida(OrdenSalidaModel model)
        {
            Mapper.CreateMap <OrdenSalidaModel, InsertarOrdenSalidaCommand>();
            var command = Mapper.Map <OrdenSalidaModel, InsertarOrdenSalidaCommand>(model);

            var result = (InsertarOrdenSalidaOutput)command.Execute();

            return(result.iddocumentosalida);
        }
        public ActionResult DespachoMasivo()
        {
            var producto      = new ProductoData().listarProducto("", "", null, null, null, false);
            var listaproducto = new SelectList(producto, "idproducto", "descripcionlarga");

            ViewData["listaproducto"] = listaproducto;
            Session["DespachoMasivo"] = null;

            var orden = new OrdenSalidaModel();

            orden.fechasalida = DateTime.Now;
            return(View(orden));
        }
        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 }));
        }
        public JsonResult SubirArchivo(HttpPostedFileBase archivo, OrdenSalidaModel model)
        {
            string RutaArchivos = ConfigurationManager.AppSettings["Uploads"].ToString();
            string Carpeta      = "File_" + Usuario.Idusuario.ToString();
            string Rutagrabar   = RutaArchivos + Carpeta + "\\";
            string file         = string.Empty;

            string archivo_subir = (DateTime.Now.ToString("yyyyMMddHHmmss") + "_" + archivo.FileName).ToLower();

            archivo_subir = archivo_subir.Replace(" ", "_").ToString();

            var mod_archivo = new OrdenSalidaModel();

            var allowedExtensions = new[] { ".xlsx", ".xls" };

            var checkextension = Path.GetExtension(archivo.FileName).ToLower();

            if (!allowedExtensions.Contains(checkextension))
            {
                return(Json(new { res = false, msj = "No se puede subir archivos con la extensión: " + checkextension }, JsonRequestBehavior.AllowGet));
            }
            else
            {
                file = Rutagrabar + archivo_subir;
            }
            try
            {
                if (Directory.Exists(Rutagrabar))
                {
                    archivo.SaveAs(file);
                }
                else
                {
                    Directory.CreateDirectory(Rutagrabar);
                    archivo.SaveAs(file);
                }
                try
                {
                    var book      = new ExcelQueryFactory(file);
                    var headers   = book.GetColumnNames("Carga01");
                    var comprobar = headers.ToList();

                    if ("ITEM" != comprobar[0])
                    {
                        return(Json(new { res = false, msj = "El archivo no tiene el formato establecido." }));
                    }
                    if ("S/N" != comprobar[1])
                    {
                        return(Json(new { res = false, msj = "El archivo no tiene el formato establecido." }));
                    }
                    if ("IMEI" != comprobar[2])
                    {
                        return(Json(new { res = false, msj = "El archivo no tiene el formato establecido." }));
                    }
                    if ("MAC" != comprobar[3])
                    {
                        return(Json(new { res = false, msj = "El archivo no tiene el formato establecido." }));
                    }
                    if ("PRODUCTO" != comprobar[4])
                    {
                        return(Json(new { res = false, msj = "El archivo no tiene el formato establecido." }));
                    }



                    var resultado = (from row_ in book.Worksheet(0)
                                     let item = new OrdenSalidaDetalleModel
                    {
                        item = row_[0].Cast <Int16>(),
                        serie = row_[1].Cast <string>(),
                        imei = row_[2].Cast <string>(),
                        mac = row_[3].Cast <string>(),
                        codigo = row_[4].Cast <string>(),
                        cantidad = 1,
                    }
                                     select item).ToList();
                    resultado.RemoveAll(x => x.item == 0);

                    Session["DespachoMasivo"] = resultado;
                }
                catch (Exception ex)
                {
                    return(Json(new { res = false, msj = ex.ToString() /*"Existen datos en la columna cantidad que no son números enteros"*/ }));
                }

                return(Json(new { res = true, archivo = "Nombre del archivo: " + archivo.FileName, msj = "Se cargó el archivo correctamente" }, JsonRequestBehavior.AllowGet));
            }
            catch (Exception)
            {
                return(Json(new { res = false, msj = "Ocurrió un error al momento de cargar el archivo." }));
            }
        }
        public PartialViewResult SubirArchivo()
        {
            OrdenSalidaModel model = new OrdenSalidaModel();

            return(PartialView("_UploadFile", model));
        }