コード例 #1
0
        //Insetar venta

        public string Insertar(DVenta Venta, List <DDetalle_Venta> Detalle)
        {
            string        rpta   = "";
            SqlConnection SqlCon = new SqlConnection();

            try
            {
                //Codigo
                SqlCon.ConnectionString = cadenaConexion;
                SqlCon.Open();
                //Establecer transaccion
                SqlTransaction SqlTra = SqlCon.BeginTransaction();
                //Establecer Comando
                SqlCommand SqlCmd = new SqlCommand();
                SqlCmd.Connection  = SqlCon;
                SqlCmd.Transaction = SqlTra;
                SqlCmd.CommandText = "spinsertar_venta";
                SqlCmd.CommandType = CommandType.StoredProcedure;

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


                SqlParameter ParIdempleado = new SqlParameter();
                ParIdempleado.ParameterName = "@idempleado ";
                ParIdempleado.SqlDbType     = SqlDbType.Int;
                ParIdempleado.Value         = Venta.Idempleado;

                SqlCmd.Parameters.Add(ParIdempleado);



                SqlParameter ParIdcliente = new SqlParameter();
                ParIdcliente.ParameterName = "@idcliente ";
                ParIdcliente.SqlDbType     = SqlDbType.Int;
                ParIdcliente.Value         = Venta.Idcliente;

                SqlCmd.Parameters.Add(ParIdcliente);



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

                //Ejecutamos
                rpta = SqlCmd.ExecuteNonQuery() == 1 ? "OK" : "NO se Ingreso el registro";
                if (rpta.Equals("OK"))
                {
                    //Obtener el codigo de la venta generada
                    this.Idventa = Convert.ToInt32(SqlCmd.Parameters["@idventa"].Value);

                    foreach (DDetalle_Venta det in Detalle)
                    {
                        det.IdVenta = this.Idventa;
                        //Llamar al metodo para insetar
                        rpta = det.Insertar(det, ref SqlCon, ref SqlTra);
                        if (!rpta.Equals("OK"))
                        {
                            break;
                        }
                        else
                        {
                            //Actualizar stock
                            rpta = DisminuirStock(det.IdProducto, det.Cantidad);
                            if (!rpta.Equals("Ok"))
                            {
                                break;
                            }
                        }
                    }
                }
                if (rpta.Equals("OK"))
                {
                    SqlTra.Commit();
                }
                else
                {
                    SqlTra.Rollback();
                }
            }
            catch (Exception ex)
            {
                rpta = ex.Message;
            }
            finally
            {
                if (SqlCon.State == ConnectionState.Open)
                {
                    SqlCon.Close();
                }
            }
            return(rpta);
        }