public Operacion GrabarPickingFalsoEncabezado(PickingEncabezado pickingEncabezado)
        {
            BaseDeDatosServicio.BeginTransaction();
            try
            {
                var id = "";

                DbParameter[] parameters =
                {
                    new OAParameter
                    {
                        ParameterName = "@CLASSIFICATION_PICKING",
                        Value         = pickingEncabezado.CLASSIFICATION_PICKING
                    }
                    , new OAParameter
                    {
                        ParameterName = "@CODE_CLIENT ",
                        Value         = pickingEncabezado.CODE_CLIENT
                    }
                    , new OAParameter
                    {
                        ParameterName = "@REFERENCE",
                        Value         = pickingEncabezado.REFERENCE
                    }
                    , new OAParameter
                    {
                        ParameterName = "@STATUS",
                        Value         = pickingEncabezado.STATUS
                    }
                    , new OAParameter
                    {
                        ParameterName = "@ERP_REFERENCE",
                        Value         = pickingEncabezado.ERP_REFERENCE
                    }
                    , new OAParameter
                    {
                        ParameterName = "@COMMENTS",
                        Value         = pickingEncabezado.COMMENTS
                    }
                };
                var op = BaseDeDatosServicio.ExecuteQuery <Operacion>("SWIFT_SP_INSERT_FAKE_PICKING_HEADER", CommandType.StoredProcedure, false, parameters)[0];

                if (op.Resultado == ResultadoOperacionTipo.Exito)
                {
                    id = op.DbData;
                    foreach (var detalles in pickingEncabezado.Detalles)
                    {
                        DbParameter[] parametersDetails =
                        {
                            new OAParameter
                            {
                                ParameterName = "@PICKING_HEADER",
                                Value         = id
                            }
                            , new OAParameter
                            {
                                ParameterName = "@CODE_SKU",
                                Value         = detalles.CODE_SKU
                            }
                            , new OAParameter
                            {
                                ParameterName = "@DESCRIPTION_SKU",
                                Value         = detalles.DESCRIPTION_SKU
                            }
                            , new OAParameter
                            {
                                ParameterName = "@QUANTITY",
                                Value         = detalles.QUANTITY
                            }
                        };
                        op = BaseDeDatosServicio.ExecuteQuery <Operacion>("SWIFT_SP_INSERT_FAKE_PICKING_DETAIL", CommandType.StoredProcedure, false, parametersDetails)[0];
                        if (op.Resultado == ResultadoOperacionTipo.Error)
                        {
                            BaseDeDatosServicio.Rollback();
                            return(op);
                        }
                    }
                }
                else
                {
                    BaseDeDatosServicio.Rollback();
                    return(op);
                }

                BaseDeDatosServicio.Commit();
                op.DbData = id;
                return(op);
            }
            catch (DbException e)
            {
                BaseDeDatosServicio.Rollback();
                return(new Operacion
                {
                    Codigo = e.ErrorCode,
                    Mensaje = e.HumanReadMessage(),
                    Resultado = Tipos.ResultadoOperacionTipo.Error
                });
            }
            catch (Exception ex)
            {
                BaseDeDatosServicio.Rollback();
                return(new Operacion
                {
                    Codigo = -1,
                    Mensaje = ex.Message,
                    Resultado = Tipos.ResultadoOperacionTipo.Error
                });
            }
        }
        private void _vista_UsuarioDeseaCargarInformacion(object sender, EventArgs e)
        {
            try
            {
                var manifiestoArgumento = (ManifiestoArgumento)e;
                var manifiestoDetalle   = new List <ManifiestoDetalle>();
                var clientes            = _vista.CargaManifiestoExcel.Select(x => new { Codigo = x.CodigoCliente, GPS = x.GPSCliente, Nombre = x.NombreCliente, Documento = x.NumeroDocumento, Direccion = x.DireccionCliente }).Distinct().ToList();

                foreach (var cliente in clientes)
                {
                    var operacion = ClienteServicio.AgregarClienteDeFuenteExterna(new Cliente {
                        CODE_CUSTOMER = cliente.Codigo, NAME_CUSTOMER = cliente.Nombre, GPS = cliente.GPS, LOGIN = manifiestoArgumento.Login, ADRESS_CUSTOMER = cliente.Direccion
                    });
                    if (operacion.Resultado == ResultadoOperacionTipo.Error)
                    {
                        _vista.EstablecerError(operacion.Mensaje, sender);
                        return;
                    }
                    PickingEncabezado picking = new PickingEncabezado
                    {
                        CLASSIFICATION_PICKING = null,
                        CODE_CLIENT            = cliente.Codigo,
                        REFERENCE     = cliente.Documento,
                        ERP_REFERENCE = cliente.Documento,
                        CODE_USER     = manifiestoArgumento.Login,
                        STATUS        = "CLOSED",
                        COMMENTS      = "Picking generado por manifiesto cargado de excel " + cliente.Documento,
                        SCHEDULE_FOR  = DateTime.Now.Date,
                        Detalles      = _vista.CargaManifiestoExcel.Where(y => y.CodigoCliente == cliente.Codigo && y.NumeroDocumento == cliente.Documento && y.DireccionCliente == cliente.Direccion && y.NombreCliente == cliente.Nombre && y.GPSCliente == cliente.GPS).Select(z => new PickingDetalle {
                            CODE_SKU        = z.CodigoSKU,
                            DESCRIPTION_SKU = z.NombreSKU,
                            COMMENTS        = "Picking generado por manifiesto cargado de excel " + cliente.Documento + ". " + z.Comentario,
                            DISPATCH        = (float)z.Cantidad,
                            SCANNED         = (float)z.Cantidad,
                            QUANTITY        = (float)z.Cantidad
                        }).ToList()
                    };
                    Operacion op = PickingServicio.GrabarPickingFalsoEncabezado(picking);
                    manifiestoDetalle.Add(new ManifiestoDetalle {
                        CODE_CUSTOMER   = cliente.Codigo,
                        CODE_PICKING    = op.DbData,
                        TYPE            = "Picking",
                        LAST_UPDATE_BY  = manifiestoArgumento.Login,
                        DOC_SAP_PICKING = cliente.Documento,
                        REFERENCE       = cliente.Documento,
                        EXPECTED_GPS    = cliente.GPS
                    });
                }

                ManifiestoEncabezado manifiesto = new ManifiestoEncabezado
                {
                    CODE_MANIFEST_HEADER = manifiestoArgumento.Piloto + manifiestoArgumento.Ruta + manifiestoArgumento.Ruta,
                    CODE_DRIVER          = manifiestoArgumento.Piloto,
                    CODE_ROUTE           = manifiestoArgumento.Ruta,
                    CODE_VEHICLE         = manifiestoArgumento.Vehiculo,
                    COMMENTS             = manifiestoArgumento.Comentario,
                    MANIFEST_SOURCE      = "LOAD_DATA_EXCEL",
                    STATUS         = "PENDING",
                    LAST_UPDATE_BY = manifiestoArgumento.Login,
                };
                manifiestoArgumento.ManifiestoEncabezado = manifiesto;
                manifiestoArgumento.DetallesManifiesto   = manifiestoDetalle;
                ManifiestoServicio.GrabarCargaManifiestoHeader(manifiestoArgumento);
                _vista.CargaManifiestoExcel = new List <CargaManifiesto>();
            }
            catch (Exception ex)
            {
                _vista.EstablecerError(ex.Message, sender);
            }
        }