示例#1
0
        //metodo insertar
        public string Insertar(DVenta Venta, List <DDetalle_venta> Detalle)
        {
            string        respuesta = "";
            SqlConnection SqlCon    = new SqlConnection();

            try
            {
                //codigo
                SqlCon.ConnectionString = Conexion.conexion;
                SqlCon.Open();
                //transaccion
                SqlTransaction SqlTra = SqlCon.BeginTransaction();
                //comando
                SqlCommand SqlCmd = new SqlCommand();
                SqlCmd.Connection  = SqlCon;
                SqlCmd.Transaction = SqlTra;
                SqlCmd.CommandText = "spinsertar_venta";
                SqlCmd.CommandType = CommandType.StoredProcedure;

                //parametros
                SqlParameter ParIdVenta = new SqlParameter();
                ParIdVenta.ParameterName = "@idventa";
                ParIdVenta.SqlDbType     = SqlDbType.Int;
                ParIdVenta.Direction     = ParameterDirection.Output;
                SqlCmd.Parameters.Add(ParIdVenta);

                SqlParameter ParFecha = new SqlParameter();
                ParFecha.ParameterName = "@fecha_venta";
                ParFecha.SqlDbType     = SqlDbType.Date;
                ParFecha.Value         = Venta.Fechaventa;
                SqlCmd.Parameters.Add(ParFecha);

                SqlParameter ParTipoComp = new SqlParameter();
                ParTipoComp.ParameterName = "@tipo_comprobante";
                ParTipoComp.SqlDbType     = SqlDbType.VarChar;
                ParTipoComp.Size          = 50;
                ParTipoComp.Value         = Venta.Tipocomprobante;
                SqlCmd.Parameters.Add(ParTipoComp);

                SqlParameter ParNumComp = new SqlParameter();
                ParNumComp.ParameterName = "@num_comprobante";
                ParNumComp.SqlDbType     = SqlDbType.VarChar;
                ParNumComp.Size          = 50;
                ParNumComp.Value         = Venta.Numcomprobante;
                SqlCmd.Parameters.Add(ParNumComp);

                SqlParameter ParNumFactura = new SqlParameter();
                ParNumFactura.ParameterName = "@num_factura";
                ParNumFactura.SqlDbType     = SqlDbType.VarChar;
                ParNumFactura.Size          = 8;
                ParNumFactura.Value         = Venta.Numfactura;
                SqlCmd.Parameters.Add(ParNumFactura);

                SqlParameter ParPorcISV = new SqlParameter();
                ParPorcISV.ParameterName = "@porc_isv";
                ParPorcISV.SqlDbType     = SqlDbType.VarChar;
                ParPorcISV.Size          = 7;
                ParPorcISV.Value         = Venta.PorcIsv;
                SqlCmd.Parameters.Add(ParPorcISV);

                SqlParameter ParSubtotal = new SqlParameter();
                ParSubtotal.ParameterName = "@subtotal";
                ParSubtotal.SqlDbType     = SqlDbType.Money;
                ParSubtotal.Value         = Venta.Subtotal;
                SqlCmd.Parameters.Add(ParSubtotal);

                SqlParameter ParIsv = new SqlParameter();
                ParIsv.ParameterName = "@isv";
                ParIsv.SqlDbType     = SqlDbType.Money;
                ParIsv.Value         = Venta.Isv;
                SqlCmd.Parameters.Add(ParIsv);

                SqlParameter ParTotal = new SqlParameter();
                ParTotal.ParameterName = "@total";
                ParTotal.SqlDbType     = SqlDbType.Money;
                ParTotal.Value         = Venta.Total;
                SqlCmd.Parameters.Add(ParTotal);

                SqlParameter ParIdCliente = new SqlParameter();
                ParIdCliente.ParameterName = "@idcliente";
                ParIdCliente.SqlDbType     = SqlDbType.Int;
                ParIdCliente.Value         = Venta.Idcliente;
                SqlCmd.Parameters.Add(ParIdCliente);

                SqlParameter ParIdEmpleado = new SqlParameter();
                ParIdEmpleado.ParameterName = "@idempleado";
                ParIdEmpleado.SqlDbType     = SqlDbType.Int;
                ParIdEmpleado.Value         = Venta.Idempleado;
                SqlCmd.Parameters.Add(ParIdEmpleado);

                //Ejecutamos el comando
                respuesta = SqlCmd.ExecuteNonQuery() == 1 ? "OK" : "No se Ingresó el Registro.";
                if (respuesta.Equals("OK"))
                {
                    this.Idventa = Convert.ToInt32(SqlCmd.Parameters["@idventa"].Value);
                    foreach (DDetalle_venta det in Detalle)
                    {
                        det.Idventa = this.Idventa;
                        det.Insertar(det, ref SqlCon, ref SqlTra);
                        if (!respuesta.Equals("OK"))
                        {
                            break;
                        }
                        else
                        {
                            //actualizar stock
                            respuesta = DisminuirStock(det.Iddetalle_ingreso, det.Cantidad);
                            if (!respuesta.Equals("OK"))
                            {
                                break;
                            }
                        }
                    }
                }
                if (respuesta.Equals("OK"))
                {
                    SqlTra.Commit();
                }
                else
                {
                    SqlTra.Rollback();
                }
            }
            catch (Exception ex)
            {
                respuesta = ex.Message;
            }

            return(respuesta);
        }