public DataTable Busquedaconcatenada(DatosRetirodeMercaderia Dorden)
        {
            SqlConnection cn       = new SqlConnection(Conexion.conexion);
            DataTable     dtResult = new DataTable("orden");

            try
            {
                SqlParameter[] dbParams = new SqlParameter[]
                {
                    ProcAlmacenado2.MakeParam("@modo", SqlDbType.NVarChar, 50, "consultarordenconcatenado"),
                    ProcAlmacenado2.MakeParam("@codcliente", SqlDbType.Int, 0, Dorden.codcliente),
                    ProcAlmacenado2.MakeParam("@estado", SqlDbType.NVarChar, 50, Dorden.estado),
                    ProcAlmacenado2.MakeParam("@tipoorden", SqlDbType.NVarChar, 50, Dorden.tipoorden),
                    ProcAlmacenado2.MakeParam("@fechaini", SqlDbType.DateTime, 0, Dorden.fechaini),
                    ProcAlmacenado2.MakeParam("@fechafin", SqlDbType.DateTime, 0, Dorden.fechafin),
                    ProcAlmacenado2.MakeParam("@porcliente", SqlDbType.Bit, 0, Dorden.porcliente),
                    ProcAlmacenado2.MakeParam("@porestado", SqlDbType.Bit, 0, Dorden.porestado),
                    ProcAlmacenado2.MakeParam("@portipo", SqlDbType.Bit, 0, Dorden.portipo),
                    ProcAlmacenado2.MakeParam("@porfecha", SqlDbType.Bit, 0, Dorden.porfecha),
                    ProcAlmacenado2.MakeParam("@TipoRetiro", SqlDbType.Int, 0, Dorden.tiporetiro),
                    ProcAlmacenado2.MakeParam("@pororden", SqlDbType.Bit, 0, Dorden.pornorden),
                    ProcAlmacenado2.MakeParam("@nroorden", SqlDbType.Int, 0, Dorden.norden),
                    ProcAlmacenado2.MakeParam("@codventa", SqlDbType.Int, 0, Dorden.codventa),
                    ProcAlmacenado2.MakeParam("@porventa", SqlDbType.Bit, 0, Dorden.porventa),
                    //@TipoRetiro
                };
                dtResult = ProcAlmacenado2.ExecuteDatatable("SP_RETIRODEMERCADERIA", dbParams);
            }
            catch (Exception)
            {
                throw;
            }

            return(dtResult);
        }
        public string Insertarymodificar(DatosRetirodeMercaderia Ordenpedido, List <DatodetalleRetirodeMercaderia> Detalle, string agregaromodificar = "agregarorden", bool solomodificarestado = true)
        {
            string        rpta   = "";
            SqlConnection sqlcon = new SqlConnection();

            //DatosOrdenpedido objventa = new global::DatosOrdenpedido ();

            try
            {
                sqlcon.ConnectionString = Conexion.conexion;
                sqlcon.Open();

                SqlTransaction sqltra = sqlcon.BeginTransaction();


                SqlCommand sqlcmd = ProcAlmacenado.CrearProc(sqlcon, "SP_RETIRODEMERCADERIA", sqltra);

                SqlParameter parcodsucursal = ProcAlmacenado.asignarParametros("@codsucursal", SqlDbType.Int, 1);
                sqlcmd.Parameters.Add(parcodsucursal);


                if (agregaromodificar == "agregarorden")
                {
                    SqlParameter parorden = ProcAlmacenado.asignarParametros("@nroorden", SqlDbType.Int);
                    sqlcmd.Parameters.Add(parorden);

                    SqlParameter parfecha = ProcAlmacenado.asignarParametros("@fecha", SqlDbType.DateTime, Ordenpedido.fecha);
                    sqlcmd.Parameters.Add(parfecha);
                }
                if (agregaromodificar == "modificarestado")
                {
                    SqlParameter parfecha = ProcAlmacenado.asignarParametros("@nroorden", SqlDbType.Int, Ordenpedido.norden);
                    sqlcmd.Parameters.Add(parfecha);
                }



                SqlParameter parcodcliente = ProcAlmacenado.asignarParametros("@codcliente", SqlDbType.Int, Ordenpedido.codcliente);
                sqlcmd.Parameters.Add(parcodcliente);

                SqlParameter parcodbeneficiario = ProcAlmacenado.asignarParametros("@codbeneficiario", SqlDbType.Int, Ordenpedido.codbeneficiado);
                sqlcmd.Parameters.Add(parcodbeneficiario);


                SqlParameter paridusuario = ProcAlmacenado.asignarParametros("@idusuario", SqlDbType.Decimal, Ordenpedido.idusuario);
                sqlcmd.Parameters.Add(paridusuario);

                SqlParameter partipoorden = ProcAlmacenado.asignarParametros("@tipoorden", SqlDbType.NVarChar, Ordenpedido.tipoorden);
                sqlcmd.Parameters.Add(partipoorden);

                SqlParameter parestado = ProcAlmacenado.asignarParametros("@estado", SqlDbType.NVarChar, Ordenpedido.estado);
                sqlcmd.Parameters.Add(parestado);

                SqlParameter parobs = ProcAlmacenado.asignarParametros("@observacion", SqlDbType.NVarChar, Ordenpedido.observacion);
                sqlcmd.Parameters.Add(parobs);

                SqlParameter parcodventa = ProcAlmacenado.asignarParametros("@codventa", SqlDbType.Int, Ordenpedido.codventa);
                sqlcmd.Parameters.Add(parcodventa);

                SqlParameter partiporetiro = ProcAlmacenado.asignarParametros("@TipoRetiro", SqlDbType.Int, Ordenpedido.tiporetiro);
                sqlcmd.Parameters.Add(partiporetiro);

                SqlParameter parModo = ProcAlmacenado.asignarParametros("@modo", SqlDbType.NVarChar, agregaromodificar);
                sqlcmd.Parameters.Add(parModo);



                rpta = sqlcmd.ExecuteNonQuery() >= 1 ? "OK" : "No se ingreso el registro";
                string mododetalleorden = "";
                if (agregaromodificar == "modificarestado")
                {
                    //elimina el detalle para volverlo a cargar
                    mododetalleorden = "eliminar";
                }


                if ((rpta.Equals("OK")) && (solomodificarestado == false || agregaromodificar == "agregarorden"))
                {
                    Ordenpedido.norden = Convert.ToInt32(sqlcmd.Parameters["@nroorden"].Value);

                    List <DatosDetalleRemito> Detalleremito = new List <DatosDetalleRemito>();
                    foreach (DatodetalleRetirodeMercaderia det in Detalle)
                    {
                        det.Norden = Ordenpedido.norden;
                        rpta       = det.insertaromodificar(det, ref sqlcon, ref sqltra, mododetalleorden == "eliminar" ? "modificar" : "agregar");
                        if (mododetalleorden == "eliminar")
                        {
                            mododetalleorden = "agregar";
                        }
                        if (!rpta.Equals("OK"))
                        {
                            break;
                        }
                        if (det.Cantidadactual > 0)
                        {
                            DatosDetalleRemito remitodet = new Capa_Datos.DatosDetalleRemito();
                            remitodet.Idproducto = det.Idproducto;
                            remitodet.Detalle    = det.Detalle;
                            remitodet.Cantidad   = det.Cantidadactual;

                            Detalleremito.Add(remitodet);
                        }
                    }
                    if (agregaromodificar == "modificarestado")
                    {
                        DatosRemito objremito = new DatosRemito(1, DateTime.Now, Ordenpedido.codcliente, Ordenpedido.norden, "", true, Ordenpedido.tipoorden, "0001", Ordenpedido.codempresa);
                        rpta      = objremito.insertarremito(objremito, Detalleremito, ref sqlcon, ref sqltra, true);
                        nroremito = objremito.Nremito;
                    }
                }
                //ver
                if (rpta.Equals("ok") || rpta.Equals("OK"))
                {
                    if (sqlcon.State == ConnectionState.Open)
                    {
                        sqltra.Commit();
                    }
                }
                else
                {
                    if (sqlcon.State == ConnectionState.Open)
                    {
                        sqltra.Rollback();
                    }
                }
            }
            catch (Exception e)
            {
                rpta = e.Message;
            }
            finally
            {
                if (sqlcon.State == ConnectionState.Open)
                {
                    sqlcon.Close();
                }
            }
            return(rpta);
        }