public long insertarActualizarDocumentoRecepcion(DocumentoRecepcionModel model)
        {
            Mapper.CreateMap <DocumentoRecepcionModel, InsertarActualizarDocumentoRecepcionCommand>();
            var command = Mapper.Map <DocumentoRecepcionModel, InsertarActualizarDocumentoRecepcionCommand>(model);

            var resp = (InsertarActualizarDocumentoRecepcionOutput)command.Execute();

            return(resp.iddocumentorecepcion);
        }
        public ActionResult RecepcionMasivaosr()
        {
            Session["DocumentoRecepcion"] = null;
            var modRecepcion = new DocumentoRecepcionModel();

            ViewData["listaorigen"] = MantenimientoData.GetListarValoresxTabla((Int32)Constantes.MaestroTablas.Origen);

            var sucursal      = new SucursalData().ListarSucursal("", "", null, Usuario.idpartner);
            var listasucursal = new SelectList(
                sucursal,
                "idsucursal",
                "nombre");

            ViewData["listasucursal"] = listasucursal;


            var fabricante      = new PartnerData().ListarPartner(null, null).Where(x => x.idtipopartner.Equals(2)).ToList();
            var listafabricante = new SelectList(
                fabricante
                , "idpartner"
                , "razonsocial"
                );

            ViewData["listafabricante"] = listafabricante;


            var producto      = new ProductoData().listarProducto("", "", null, null, null, false);
            var listaproducto = new SelectList(producto, "idproducto", "descripcionlarga");

            ViewData["listaproducto"] = listaproducto;

            var cliente      = MantenimientoData.GetListarClientes(null, true);
            var listacliente = new SelectList(
                cliente
                , "idcliente"
                , "nombre"
                );

            ViewData["listacliente"] = listacliente;



            var partners      = new PartnerData().ListarPartner(null, null);
            var listapartners = new SelectList(
                partners
                , "idpartner"
                , "razonsocial"
                );

            ViewData["listapartner"] = listapartners;


            return(View(modRecepcion));
        }
        public PartialViewResult SubirArchivo()
        {
            DocumentoRecepcionModel model = new DocumentoRecepcionModel();

            return(PartialView("_UploadFile", model));
        }
        public JsonResult SubirArchivo(HttpPostedFileBase archivo, DocumentoRecepcionModel 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 DocumentoRecepcionModel();

            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);
                }
                //validar archivo...
                // const Int32 BufferSize = 128;
                //var line = string.Empty;

                try
                {
                    var book      = new ExcelQueryFactory(file);
                    var headers   = book.GetColumnNames("Carga01");
                    var _datos    = book.Worksheet(0).Skip(1);
                    var comprobar = headers.ToList();

                    //if ("Código" != comprobar[0])
                    //    return Json(new { res = false, msj = "El archivo no tiene el formato establecido." });
                    //if ("Modelo" != comprobar[1])
                    //    return Json(new { res = false, msj = "El archivo no tiene el formato establecido." });
                    //if ("Serie" != comprobar[2])
                    //    return Json(new { res = false, msj = "El archivo no tiene el formato establecido." });
                    //if ("IMEI" != comprobar[3])
                    //    return Json(new { res = false, msj = "El archivo no tiene el formato establecido." });
                    //if ("MAC" != comprobar[4])
                    //    return Json(new { res = false, msj = "El archivo no tiene el formato establecido." });
                    //if ("Cantidad" != comprobar[5])
                    //    return Json(new { res = false, msj = "El archivo no tiene el formato establecido." });


                    var resultado = (from row_ in book.Worksheet(0)
                                     let item = new DocumentoRecepcionDetalleModel
                    {
                        codigo = row_[0].Value.ToString(),
                        modelo = row_[1].Value.ToString(),
                        serie = row_[2].Value.ToString(),
                        imei = row_[3].Value.ToString(),
                        mac = row_[4].Value.ToString(),
                        _cantidad_aux = row_[5].Value.ToString(),
                        ubicacion = row_[6].Value.ToString(),
                        caja = row_[7].Value.ToString(),
                        pallet = row_[8].Value.ToString(),


                        //    Monto = row_[3].Cast<decimal>()
                    }
                                     select item).ToList();

                    List <DocumentoRecepcionDetalleModel> auxlist = new List <DocumentoRecepcionDetalleModel>();
                    int max = resultado.Count;
                    int i   = 1;
                    while (max > i)
                    {
                        resultado[i].cantidad = Convert.ToInt32(resultado[i]._cantidad_aux);
                        auxlist.Add(resultado[i]);
                        i++;
                    }


                    Session["DocumentoRecepcion"] = auxlist;

                    #region comprobar requisitos de la carga
                    ProductoModel modProducto = null;
                    String        Productos   = null;
                    List <DocumentoRecepcionDetalleModel> det;
                    foreach (var item in auxlist)
                    {
                        Productos = Productos + "," + item.codigo;
                    }
                    var resp = new ProductoData().listarProductoxId(Productos);

                    foreach (var item in auxlist)
                    {
                        modProducto = resp.Where(x => x.codigoproducto.Equals(item.codigo)).SingleOrDefault();

                        if (modProducto == null)
                        {
                            return(Json(new { res = false, msj = "El producto: " + item.codigo + " no existe en la base de datos." }));
                        }

                        item.idproducto     = modProducto.idproducto.Value;
                        item.idtipoproducto = modProducto.idtipoproducto.Value;
                        item.repuesto       = modProducto.repuesto.Value;
                        item.idmodelo       = modProducto.idmodelo.Value;

                        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;
                        }
                    }

                    Session["DocumentoRecepcion"] = auxlist;
                    foreach (var item in resp)
                    {
                        switch (item.idrequisitoascanear)
                        {
                        case (Int16)Constantes.Scaneo.IMEI:
                            foreach (var item1 in auxlist.Where(x => x.codigo == item.codigoproducto).ToList())
                            {
                                det = auxlist
                                      .Where(x => x.codigo == item.codigoproducto)
                                      .Where(x => x.imei.Equals(item1.imei)).ToList();

                                if (det.Count > 1)
                                {
                                    return(Json(new { res = false, msj = "El producto: " + item1.imei + " se está registrando más de una vez." }));
                                }
                            }
                            break;

                        case (Int16)Constantes.Scaneo.SerieIMEI:
                            foreach (var item1 in auxlist.Where(x => x.codigo == item.codigoproducto).ToList())
                            {
                                det = auxlist
                                      .Where(x => x.codigo == item.codigoproducto)
                                      .Where(x => x.serie.Equals(item1.serie) && x.imei.Equals(item1.imei)).ToList();
                                if (det.Count > 1)
                                {
                                    return(Json(new { res = false, msj = "El producto: " + item1.codigo + " se está registrando más de una vez." }));
                                }
                            }
                            break;

                        case (Int16)Constantes.Scaneo.Serie:
                            foreach (var item1 in auxlist.Where(x => x.codigo == item.codigoproducto).ToList())
                            {
                                det = auxlist
                                      .Where(x => x.codigo == item.codigoproducto)
                                      .Where(x => x.serie.Equals(item1.serie)).ToList();
                                if (det.Count > 1)
                                {
                                    return(Json(new { res = false, msj = "El producto: " + item1.codigo + " se está registrando más de una vez." }));
                                }
                            }
                            break;

                        default:
                            break;
                        }
                    }

                    #endregion
                }
                catch (Exception ex)
                {
                    return(Json(new { res = false, msj = "Existen datos en la columna cantidad que no son números enteros" }));
                    //throw;
                }

                //var idarchivo = new DataAccess.Liquidacion.LiquidacionData().InsertarArchivo(mod_archivo);
                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." }));
            }
            //return Json(new { res = true });
        }
        public JsonResult guardarIngreso(DocumentoRecepcionModel model)
        {
            var detalle = (List <DocumentoRecepcionDetalleModel>)Session["DocumentoRecepcion"];

            if (detalle == null)
            {
                return(Json(new { res = false, msj = "Debe cargar un excel." }));
            }


            DocumentoRecepcionDetalleModel modelDetalle = null;

            modelDetalle = new DocumentoRecepcionDetalleModel();


            List <DocumentoRecepcionDetalleModel> detalles = new List <DocumentoRecepcionDetalleModel>();


            model.fechahoraregistro  = DateTime.Now;
            model.activo             = true;
            model.idtiporecibo       = (Int16)Constantes.TipoRecibo.NuevaRecepcion;
            model.idusuarioregistro  = Usuario.Idusuario;
            model.fechahorarecepcion = DateTime.Now;

            model.iddocumentorecepcion = new RecepcionData().insertarActualizarDocumentoRecepcion(model);

            List <InventarioModel> inventarios     = new List <InventarioModel>();
            InventarioModel        inventarioModel = null; // new InventarioModel();

            foreach (var item in detalle)
            {
                inventarioModel                   = new InventarioModel();
                inventarioModel.cantidad          = item.cantidad;
                inventarioModel.codigoproducto    = item.codigo;
                inventarioModel.fechahoraregistro = DateTime.Now;
                inventarioModel.idalmacen         = model.idalmacen;
                inventarioModel.idestado          = (Int16)Constantes.Producto.Disponible;
                inventarioModel.serie             = item.serie;
                inventarioModel.imei              = item.imei;
                inventarioModel.mac               = item.mac;
                inventarioModel.pallet            = item.pallet;
                inventarioModel.caja              = item.caja;
                inventarioModel.ubicacion         = item.ubicacion;
                //inventarioModel.

                inventarioModel.idusuarioregistro = Usuario.Idusuario;

                //int? idproducto = new ProductoData().obtenerProducto(null, item.codigo).idproducto;
                //if(idproducto!=null)
                inventarioModel.idproducto    = item.idproducto;
                inventarioModel.__idoperacion = 1;
                new InventarioData().InsertarActualizarInventario(inventarioModel);



                modelDetalle = new DocumentoRecepcionDetalleModel();

                modelDetalle.caja       = item.caja;
                modelDetalle.cantidad   = item.cantidad;
                modelDetalle.codigo     = item.codigo;
                modelDetalle.fabricante = "";
                modelDetalle.fechahorapersonalizacion = DateTime.Now;
                modelDetalle.fila = item.fila;
                modelDetalle.iddocumentorecepcion = model.iddocumentorecepcion.Value;
                modelDetalle.idfila     = item.idfila;
                modelDetalle.idmodelo   = item.idmodelo;
                modelDetalle.idproducto = inventarioModel.idproducto;
                modelDetalle.idusuariopersonalizacion = Usuario.Idusuario;

                modelDetalle.numeropallet = item.pallet;
                //modelDetalle.repuesto = false;
                modelDetalle.serie          = item.serie;
                modelDetalle.mac            = item.mac;
                modelDetalle.pallet         = item.pallet;
                modelDetalle.ubicacion      = item.ubicacion;
                modelDetalle.imei           = item.imei;
                modelDetalle.idtipoproducto = item.idtipoproducto;
                modelDetalle.idalmacen      = model.idalmacen;
                modelDetalle.repuesto       = item.repuesto;


                detalles.Add(modelDetalle);

                //new RecepcionData().insertarActualizarDocumentoRecepcionDetalle(modelDetalle);
            }
            RecepcionData.InsertarDocumentoRecepcionDetalleLote(detalles);



            return(Json(new { res = true }));
        }
        public JsonResult guardarIngresoosr(DocumentoRecepcionModel model)
        {
            var detalle = (List <DocumentoRecepcionDetalleModel>)Session["DocumentoRecepcion"];

            #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;
                }
            }



            #endregion
            var dataIncidencia = new IncidenciaData();
            List <InventarioModel>         inventarios     = new List <InventarioModel>();
            InventarioModel                inventarioModel = null; // new InventarioModel();
            DocumentoRecepcionDetalleModel modelDetalle    = null;
            OrdenServicioModel             ordenModel      = new OrdenServicioModel();

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

            model.fechahoraregistro = DateTime.Now;
            model.activo            = true;
            model.idtiporecibo      = (Int16)Constantes.TipoRecibo.Reparacion;
            model.idusuarioregistro = Usuario.Idusuario;

            model.iddocumentorecepcion = new RecepcionData().insertarActualizarDocumentoRecepcion(model);

            foreach (var item in detalle)
            {
                //traer documento de compra

                var  detfact    = FacturacionData.GetListarDetalleComprobante(null, item.serie).ToList();
                bool cliente    = false;
                bool reparacion = false;

                var garantias = dataIncidencia.ListarEvaluarGarantia(modProducto.idtipoproducto.Value
                                                                     , modProducto.idfabricante.Value
                                                                     , model.idpartner
                                                                     ).ToList();

                if (detfact.Count > 0)
                {
                    cliente = AgendamientoData.EvaluarGarantia(DateTime.Now.Date
                                                               , detfact[0].fechaemision
                                                               , garantias.Where(x => x.idtipogarantia.Equals((Int16)Constantes.TipoGarantia.Cliente)).SingleOrDefault());


                    reparacion = AgendamientoData.EvaluarGarantia(DateTime.Now.Date
                                                                  , detfact[0].fechaemision
                                                                  , garantias.Where(x => x.idtipogarantia.Equals((Int16)Constantes.TipoGarantia.Reparacion)).SingleOrDefault());
                }


                inventarioModel = new InventarioModel();

                inventarioModel.cantidad          = item.cantidad;
                inventarioModel.codigoproducto    = item.codigo;
                inventarioModel.fechahoraregistro = DateTime.Now;
                inventarioModel.idalmacen         = model.idalmacen;
                inventarioModel.idestado          = (Int16)Constantes.Producto.PendienteReparar;
                inventarioModel.serie             = item.serie;
                inventarioModel.imei                 = item.imei;
                inventarioModel.mac                  = item.mac;
                inventarioModel.pallet               = item.pallet;
                inventarioModel.idusuarioregistro    = Usuario.Idusuario;
                inventarioModel.__idoperacion        = 1;
                inventarioModel.idproducto           = model.idproducto;
                inventarioModel.iddocumentorecepcion = model.iddocumentorecepcion.Value;


                inventarioModel.idinventario = new InventarioData().InsertarActualizarInventario(inventarioModel);



                ordenModel = new OrdenServicioModel();

                ordenModel.activo             = true;
                ordenModel.anioincindecia     = DateTime.Now.Year;
                ordenModel.bounce             = "0";
                ordenModel.idproducto         = model.idproducto;
                ordenModel.codigoproducto     = modProducto.codigoproducto;
                ordenModel.idusuario          = Usuario.Idusuario;
                ordenModel.cotizado           = false;
                ordenModel.documento_coincide = false;
                ordenModel.engarantia         = cliente;
                ordenModel.idtipogarantia     = (Int16)Constantes.TipoGarantia.Cliente;
                ordenModel.fechahoraregistro  = DateTime.Now;
                if (detfact.Count != 0)
                {
                    ordenModel.fechadocumento = detfact[0].fechaemision;
                }
                ordenModel.fecharecepcion      = model.fechahorarecepcion;
                ordenModel.idestado            = (Int16)Constantes.EstadoOrdenServicio.PendienteAsignacionTecnico;
                ordenModel.idtipoordenservicio = (Int16)Constantes.tipoordenservicio.osr;
                ordenModel.__tipooperacion     = 1;
                ordenModel.idcliente           = model.idcliente;
                ordenModel.idpartner           = model.idpartner;
                ordenModel.serie = item.serie;
                ordenModel.imei  = item.imei;
                ordenModel.mac   = item.mac;
                ordenModel.iddocumentorecepcion = model.iddocumentorecepcion.Value;
                ordenModel.idinventario         = inventarioModel.idinventario.Value;



                ordenModel = new OrdenServicioData().InsertarActualizarOrdenServicio(ordenModel);



                modelDetalle = new DocumentoRecepcionDetalleModel();

                inventarioModel.idproducto            = model.idproducto;
                modelDetalle.caja                     = "";
                modelDetalle.cantidad                 = 1;
                modelDetalle.codigo                   = item.codigo;
                modelDetalle.fabricante               = "";
                modelDetalle.fechahorapersonalizacion = DateTime.Now;
                modelDetalle.fila                     = item.fila;
                modelDetalle.iddocumentorecepcion     = model.iddocumentorecepcion.Value;
                modelDetalle.idfila                   = item.idfila;
                modelDetalle.idmodelo                 = item.idmodelo;
                modelDetalle.idproducto               = inventarioModel.idproducto;
                modelDetalle.idusuariopersonalizacion = Usuario.Idusuario;

                modelDetalle.numeropallet = item.pallet;
                modelDetalle.repuesto     = false;
                modelDetalle.serie        = item.serie;
                modelDetalle.mac          = item.mac;
                new RecepcionData().insertarActualizarDocumentoRecepcionDetalle(modelDetalle);
            }
            return(Json(new { res = true }));
        }
        public JsonResult SubirArchivo(HttpPostedFileBase archivo, DocumentoRecepcionModel 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 DocumentoRecepcionModel();

            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);
                }
                //validar archivo...
                // const Int32 BufferSize = 128;
                //var line = string.Empty;

                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." }));
                    }
                    if ("PALLET" != comprobar[5])
                    {
                        return(Json(new { res = false, msj = "El archivo no tiene el formato establecido." }));
                    }
                    if ("FECHA DE INGRESO" != comprobar[6])
                    {
                        return(Json(new { res = false, msj = "El archivo no tiene el formato establecido." }));
                    }
                    if ("FABRICANTE" != comprobar[7])
                    {
                        return(Json(new { res = false, msj = "El archivo no tiene el formato establecido." }));
                    }


                    var resultado = (from row_ in book.Worksheet(0)
                                     let item = new DocumentoRecepcionDetalleModel
                    {
                        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>(),
                        pallet = row_[5].Cast <string>(),
                        fabricante = row_[7].Cast <string>(),
                        cantidad = 1,
                    }
                                     select item).ToList();

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

                //var idarchivo = new DataAccess.Liquidacion.LiquidacionData().InsertarArchivo(mod_archivo);
                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." }));
            }
            //return Json(new { res = true });
        }
        public JsonResult guardarIngreso(DocumentoRecepcionModel model)
        {
            var detalle = (List <DocumentoRecepcionDetalleModel>)Session["DocumentoRecepcion"];

            if (detalle == null)
            {
                return(Json(new { res = false, msj = "Debe de cargar un excel al sistema" }));
            }

            #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;
                }
            }



            #endregion

            List <InventarioModel>                inventarios     = new List <InventarioModel>();
            InventarioModel                       inventarioModel = null; // new InventarioModel();
            DocumentoRecepcionDetalleModel        modelDetalle    = null;
            OrdenServicioModel                    ordenModel      = new OrdenServicioModel();
            List <DocumentoRecepcionDetalleModel> detalles        = new List <DocumentoRecepcionDetalleModel>();



            ordenModel.activo              = true;
            ordenModel.anioincindecia      = DateTime.Now.Year;
            ordenModel.bounce              = "0";
            ordenModel.idproducto          = model.idproducto;
            ordenModel.codigoproducto      = "Varios";
            ordenModel.idusuario           = Usuario.Idusuario;
            ordenModel.cotizado            = false;
            ordenModel.documento_coincide  = false;
            ordenModel.engarantia          = true;
            ordenModel.fechahoraregistro   = DateTime.Now;
            ordenModel.idestado            = (Int16)Constantes.EstadoOrdenServicio.PendienteAsignacionTecnico;
            ordenModel.idtipoordenservicio = (Int16)Constantes.tipoordenservicio.osp;
            ordenModel.idsucursalorigen    = Usuario.idsucursal;
            ordenModel.__tipooperacion     = 1;
            ordenModel.delivery            = true;
            ordenModel = new OrdenServicioData().InsertarActualizarOrdenServicio(ordenModel);
            model.fechahoraregistro = DateTime.Now;
            model.activo            = true;
            model.idtiporecibo      = (Int16)Constantes.TipoRecibo.Personalizacion;
            model.idusuarioregistro = Usuario.Idusuario;
            model.idordenservicio   = ordenModel.idordenserviciotecnico.Value;
            model.idproducto        = model.idproducto;

            model.iddocumentorecepcion = new RecepcionData().insertarActualizarDocumentoRecepcion(model);

            foreach (var item in detalle)
            {
                inventarioModel = new InventarioModel();
                modelDetalle    = new DocumentoRecepcionDetalleModel();

                inventarioModel.idproducto            = model.idproducto;
                modelDetalle.caja                     = "";
                modelDetalle.cantidad                 = 1;
                modelDetalle.codigo                   = item.codigo;
                modelDetalle.fabricante               = "";
                modelDetalle.fechahorapersonalizacion = DateTime.Now;
                modelDetalle.fila                     = item.fila;
                modelDetalle.iddocumentorecepcion     = model.iddocumentorecepcion.Value;
                modelDetalle.idfila                   = item.idfila;
                modelDetalle.idmodelo                 = item.idmodelo;
                modelDetalle.idproducto               = inventarioModel.idproducto;
                modelDetalle.idusuariopersonalizacion = Usuario.Idusuario;
                modelDetalle.numeropallet             = item.pallet;
                modelDetalle.repuesto                 = false;
                modelDetalle.serie                    = item.serie;
                detalles.Add(modelDetalle);



                inventarioModel.cantidad          = item.cantidad;
                inventarioModel.codigoproducto    = item.codigo;
                inventarioModel.fechahoraregistro = DateTime.Now;
                inventarioModel.idalmacen         = model.idalmacen;
                inventarioModel.idestado          = (Int16)Constantes.Producto.PendientePersonalizar;
                inventarioModel.serie             = item.serie;
                inventarioModel.imei                 = item.imei;
                inventarioModel.pallet               = item.pallet;
                inventarioModel.idusuarioregistro    = Usuario.Idusuario;
                inventarioModel.__idoperacion        = 1;
                inventarioModel.iddocumentorecepcion = model.iddocumentorecepcion.Value;
                new InventarioData().InsertarActualizarInventario(inventarioModel);
            }

            RecepcionData.InsertarDocumentoRecepcionDetalleLote(detalles);

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