I would create a trigger on the order header table to capture key information; ord_no, status, cus_no, ord_dt, entered_dt po_no, etc.. along with a datetime stamp and the user who is logged in to your own table. You could do it on INSERT or UPDATE as well. This would be in addition to the Macola audit tables but there would be no function within Macola to purge it so only people who have delete priviledges in SQL Server would have the ability to update the table.
You could also then write reports off that table. I use this approach alot when I want to track changes to specific fields within a table rather than use the standard audit tables because they only have the fields I'm looking for.
Here's an example that tracks the price change on an order.
--------------------------------------------------------
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[udt_OELinePriceChange]') and OBJECTPROPERTY(id, N'IsTrigger') = 1)
drop trigger [dbo].[udt_OELinePriceChange]
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
CREATE TRIGGER udt_OELinePriceChange ON OEORDLIN_SQL
FOR UPDATE
AS
Declare @OrdNo Char(8)
Declare @LineNo Int
Declare @CusNo Char(12)
Declare @ItemNo Char(12)
Declare @ItemDesc Char(30)
Declare @Loc Char(3)
Declare @RequestDt Int
Declare @QtyOrdered varchar (20)
Declare @OldPrice varchar (30)
Declare @NewPrice varchar (30)
Select @OrdNo = I.ord_no, @LineNo = I.line_no, @CusNo = I.cus_no,
@ItemNo = I.Item_No, @ItemDesc = L.Item_Desc_1, @Loc = I.Loc, @RequestDt = I.request_dt,
@NewPrice = I.unit_price
From Inserted I
Select @OldPrice = unit_price from Deleted
if cast(@oldprice as decimal(13,6)) - cast(@newprice as decimal(13,6)) <> 0
Insert Into [DATA].[DBO].[TBLOELPRC_SQL]
Select '001', @OrdNo, @LineNo, @CusNo, @ItemNo, @ItemDesc, @Loc, @RequestDt, @QtyOrdered,
getdate(), cast(@oldprice as decimal(13,6)), cast(@newprice as decimal(13,6)), system_user
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
---------------------------------------------------------
Kevin Scheeler