public string insertardetalleremito(DatosDetalleRemito Detalle_Remito, ref SqlConnection sqlcon, ref SqlTransaction sqltra, string varnremito)
        {
            string rpta = "";

            try
            {
                //asigno el procedimiento almacenado y la transaccion al sqlcmd
                SqlCommand sqlcmd = ProcAlmacenado.CrearProc(sqlcon, "SP_REMITO", sqltra);



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

                SqlParameter parremito = ProcAlmacenado.asignarParametros("@nremito", SqlDbType.NVarChar, varnremito);
                sqlcmd.Parameters.Add(parremito);

                SqlParameter paridproducto = ProcAlmacenado.asignarParametros("@idproducto", SqlDbType.Int, Detalle_Remito.idproducto);
                sqlcmd.Parameters.Add(paridproducto);

                SqlParameter pardetalle = ProcAlmacenado.asignarParametros("@detalle", SqlDbType.NVarChar, Detalle_Remito.detalle);
                sqlcmd.Parameters.Add(pardetalle);

                SqlParameter parcantidad = ProcAlmacenado.asignarParametros("@cantidad", SqlDbType.Int, Detalle_Remito.cantidad);
                sqlcmd.Parameters.Add(parcantidad);

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


                rpta = sqlcmd.ExecuteNonQuery() == 1 ? "OK" : "NO se ingreso el registro";
            }
            catch (Exception ex)
            {
                rpta = ex.Message;
            }

            return(rpta);
        }
        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);
        }