Difference between revisions of "Sales.SalesOrderHeader (table)"

From dbscript Online Help
Jump to: navigation, search
 
(One intermediate revision by the same user not shown)
Line 2: Line 2:
  
 
{| border="1" cellpadding="5" cellspacing="0" style="border-collapse:collapse"
 
{| border="1" cellpadding="5" cellspacing="0" style="border-collapse:collapse"
|-
+
|- valign="top"
 
| '''Table
 
| '''Table
 
| Sales.SalesOrderHeader
 
| Sales.SalesOrderHeader
Line 8: Line 8:
 
| '''Description
 
| '''Description
 
| General sales order information.
 
| General sales order information.
|-
 
 
|}
 
|}
  
 
+
=== Columns ===
 
{| border="1" cellpadding="5" cellspacing="0" style="border-collapse:collapse"
 
{| border="1" cellpadding="5" cellspacing="0" style="border-collapse:collapse"
 
|- style="background:silver"
 
|- style="background:silver"
Line 18: Line 17:
 
| '''Nullable
 
| '''Nullable
 
| '''Default
 
| '''Default
| '''Description / PK / Index
+
| '''Description
+
 
 
|- valign="top"
 
|- valign="top"
 
| SalesOrderID
 
| SalesOrderID
Line 25: Line 24:
 
| not null
 
| not null
 
|  
 
|  
| Primary key.<br />PK_SalesOrderHeader_SalesOrderID
+
| Primary key.
 
|- valign="top"
 
|- valign="top"
 
| RevisionNumber
 
| RevisionNumber
Line 31: Line 30:
 
| not null
 
| not null
 
| ((0))
 
| ((0))
| Incremental number to track changes to the sales order over time.<br />
+
| Incremental number to track changes to the sales order over time.
 
|- valign="top"
 
|- valign="top"
 
| OrderDate
 
| OrderDate
Line 37: Line 36:
 
| not null
 
| not null
 
| (getdate())
 
| (getdate())
| Dates the sales order was created.<br />
+
| Dates the sales order was created.
 
|- valign="top"
 
|- valign="top"
 
| DueDate
 
| DueDate
Line 43: Line 42:
 
| not null
 
| not null
 
|  
 
|  
| Date the order is due to the customer.<br />
+
| Date the order is due to the customer.
 
|- valign="top"
 
|- valign="top"
 
| ShipDate
 
| ShipDate
Line 49: Line 48:
 
| null
 
| null
 
|  
 
|  
| Date the order was shipped to the customer.<br />
+
| Date the order was shipped to the customer.
 
|- valign="top"
 
|- valign="top"
 
| Status
 
| Status
Line 55: Line 54:
 
| not null
 
| not null
 
| ((1))
 
| ((1))
| Order current status. 1 = In process; 2 = Approved; 3 = Backordered; 4 = Rejected; 5 = Shipped; 6 = Cancelled<br />
+
| Order current status. 1 = In process; 2 = Approved; 3 = Backordered; 4 = Rejected; 5 = Shipped; 6 = Cancelled
 
|- valign="top"
 
|- valign="top"
 
| OnlineOrderFlag
 
| OnlineOrderFlag
Line 61: Line 60:
 
| not null
 
| not null
 
| ((1))
 
| ((1))
| 0 = Order placed by sales person. 1 = Order placed online by customer.<br />
+
| 0 = Order placed by sales person. 1 = Order placed online by customer.
 
|- valign="top"
 
|- valign="top"
 
| SalesOrderNumber
 
| SalesOrderNumber
Line 67: Line 66:
 
|  
 
|  
 
|  
 
|  
| Unique sales order identification number.<br />AK_SalesOrderHeader_SalesOrderNumber
+
| Unique sales order identification number.
 
|- valign="top"
 
|- valign="top"
 
| PurchaseOrderNumber
 
| PurchaseOrderNumber
Line 73: Line 72:
 
| null
 
| null
 
|  
 
|  
| Customer purchase order number reference. <br />
+
| Customer purchase order number reference.  
 
|- valign="top"
 
|- valign="top"
 
| AccountNumber
 
| AccountNumber
Line 79: Line 78:
 
| null
 
| null
 
|  
 
|  
| Financial accounting number reference.<br />
+
| Financial accounting number reference.
 
|- valign="top"
 
|- valign="top"
 
| CustomerID
 
| CustomerID
Line 85: Line 84:
 
| not null
 
| not null
 
|  
 
|  
| Customer identification number. Foreign key to Customer.CustomerID.<br />IX_SalesOrderHeader_CustomerID
+
| Customer identification number. Foreign key to Customer.CustomerID.
 
|- valign="top"
 
|- valign="top"
 
| ContactID
 
| ContactID
Line 91: Line 90:
 
| not null
 
| not null
 
|  
 
|  
| Customer contact identification number. Foreign key to Contact.ContactID.<br />
+
| Customer contact identification number. Foreign key to Contact.ContactID.
 
|- valign="top"
 
|- valign="top"
 
| SalesPersonID
 
| SalesPersonID
Line 97: Line 96:
 
| null
 
| null
 
|  
 
|  
| Sales person who created the sales order. Foreign key to SalesPerson.SalePersonID.<br />IX_SalesOrderHeader_SalesPersonID
+
| Sales person who created the sales order. Foreign key to SalesPerson.SalePersonID.
 
|- valign="top"
 
|- valign="top"
 
| TerritoryID
 
| TerritoryID
Line 103: Line 102:
 
| null
 
| null
 
|  
 
|  
| Territory in which the sale was made. Foreign key to SalesTerritory.SalesTerritoryID.<br />
+
| Territory in which the sale was made. Foreign key to SalesTerritory.SalesTerritoryID.
 
|- valign="top"
 
|- valign="top"
 
| BillToAddressID
 
| BillToAddressID
Line 109: Line 108:
 
| not null
 
| not null
 
|  
 
|  
| Customer billing address. Foreign key to Address.AddressID.<br />
+
| Customer billing address. Foreign key to Address.AddressID.
 
|- valign="top"
 
|- valign="top"
 
| ShipToAddressID
 
| ShipToAddressID
Line 115: Line 114:
 
| not null
 
| not null
 
|  
 
|  
| Customer shipping address. Foreign key to Address.AddressID.<br />
+
| Customer shipping address. Foreign key to Address.AddressID.
 
|- valign="top"
 
|- valign="top"
 
| ShipMethodID
 
| ShipMethodID
Line 121: Line 120:
 
| not null
 
| not null
 
|  
 
|  
| Shipping method. Foreign key to ShipMethod.ShipMethodID.<br />
+
| Shipping method. Foreign key to ShipMethod.ShipMethodID.
 
|- valign="top"
 
|- valign="top"
 
| CreditCardID
 
| CreditCardID
Line 127: Line 126:
 
| null
 
| null
 
|  
 
|  
| Credit card identification number. Foreign key to CreditCard.CreditCardID.<br />
+
| Credit card identification number. Foreign key to CreditCard.CreditCardID.
 
|- valign="top"
 
|- valign="top"
 
| CreditCardApprovalCode
 
| CreditCardApprovalCode
Line 133: Line 132:
 
| null
 
| null
 
|  
 
|  
| Approval code provided by the credit card company.<br />
+
| Approval code provided by the credit card company.
 
|- valign="top"
 
|- valign="top"
 
| CurrencyRateID
 
| CurrencyRateID
Line 139: Line 138:
 
| null
 
| null
 
|  
 
|  
| Currency exchange rate used. Foreign key to CurrencyRate.CurrencyRateID.<br />
+
| Currency exchange rate used. Foreign key to CurrencyRate.CurrencyRateID.
 
|- valign="top"
 
|- valign="top"
 
| SubTotal
 
| SubTotal
Line 145: Line 144:
 
| not null
 
| not null
 
| ((0.00))
 
| ((0.00))
| Sales subtotal. Computed as SUM(SalesOrderDetail.LineTotal)for the appropriate SalesOrderID.<br />
+
| Sales subtotal. Computed as SUM(SalesOrderDetail.LineTotal)for the appropriate SalesOrderID.
 
|- valign="top"
 
|- valign="top"
 
| TaxAmt
 
| TaxAmt
Line 151: Line 150:
 
| not null
 
| not null
 
| ((0.00))
 
| ((0.00))
| Tax amount.<br />
+
| Tax amount.
 
|- valign="top"
 
|- valign="top"
 
| Freight
 
| Freight
Line 157: Line 156:
 
| not null
 
| not null
 
| ((0.00))
 
| ((0.00))
| Shipping cost.<br />
+
| Shipping cost.
 
|- valign="top"
 
|- valign="top"
 
| TotalDue
 
| TotalDue
Line 163: Line 162:
 
|  
 
|  
 
|  
 
|  
| Total due from customer. Computed as Subtotal + TaxAmt + Freight.<br />
+
| Total due from customer. Computed as Subtotal + TaxAmt + Freight.
 
|- valign="top"
 
|- valign="top"
 
| Comment
 
| Comment
Line 169: Line 168:
 
| null
 
| null
 
|  
 
|  
| Sales representative comments.<br />
+
| Sales representative comments.
 
|- valign="top"
 
|- valign="top"
 
| rowguid
 
| rowguid
Line 175: Line 174:
 
| not null
 
| not null
 
| (newid())
 
| (newid())
| ROWGUIDCOL number uniquely identifying the record. Used to support a merge replication sample.<br />AK_SalesOrderHeader_rowguid
+
| ROWGUIDCOL number uniquely identifying the record. Used to support a merge replication sample.
 
|- valign="top"
 
|- valign="top"
 
| ModifiedDate
 
| ModifiedDate
Line 181: Line 180:
 
| not null
 
| not null
 
| (getdate())
 
| (getdate())
| Date and time the record was last updated.<br />
+
| Date and time the record was last updated.
 +
|}
 +
 
 +
=== Primary Key ===
 +
{| border="1" cellpadding="5" cellspacing="0" style="border-collapse:collapse"
 +
|- style="background:silver"
 +
| '''Primary Key
 +
| '''Columns
 +
|- valign="top"
 +
| PK_SalesOrderHeader_SalesOrderID
 +
| SalesOrderID
 +
|}
 +
 
 +
=== Indexes ===
 +
{| border="1" cellpadding="5" cellspacing="0" style="border-collapse:collapse"
 +
|- style="background:silver"
 +
| '''Index
 +
| '''Type
 +
| '''Columns
 +
 
 +
|- valign="top"
 +
| AK_SalesOrderHeader_rowguid
 +
| Unique
 +
| rowguid
 +
|- valign="top"
 +
| AK_SalesOrderHeader_SalesOrderNumber
 +
| Unique
 +
| SalesOrderNumber
 +
|- valign="top"
 +
| IX_SalesOrderHeader_CustomerID
 +
|
 +
| CustomerID
 +
|- valign="top"
 +
| IX_SalesOrderHeader_SalesPersonID
 +
|
 +
| SalesPersonID
 
|}
 
|}
  
 +
=== Check Constraints ===
 +
{| border="1" cellpadding="5" cellspacing="0" style="border-collapse:collapse"
 +
|- style="background:silver"
 +
| '''Check Constraint
 +
| '''Expression
 +
| '''Description
  
 +
|- valign="top"
 +
| CK_SalesOrderHeader_DueDate
 +
| ([DueDate]>=[OrderDate])
 +
| Check constraint [DueDate] >= [OrderDate]
 +
|- valign="top"
 +
| CK_SalesOrderHeader_Freight
 +
| ([Freight]>=(0.00))
 +
| Check constraint [Freight] >= (0.00)
 +
|- valign="top"
 +
| CK_SalesOrderHeader_ShipDate
 +
| ([ShipDate]>=[OrderDate] OR [ShipDate] IS NULL)
 +
| Check constraint [ShipDate] >= [OrderDate] OR [ShipDate] IS NULL
 +
|- valign="top"
 +
| CK_SalesOrderHeader_Status
 +
| ([Status]>=(0) AND [Status]<=(8))
 +
| Check constraint [Status] BETWEEN (0) AND (8)
 +
|- valign="top"
 +
| CK_SalesOrderHeader_SubTotal
 +
| ([SubTotal]>=(0.00))
 +
| Check constraint [SubTotal] >= (0.00)
 +
|- valign="top"
 +
| CK_SalesOrderHeader_TaxAmt
 +
| ([TaxAmt]>=(0.00))
 +
| Check constraint [TaxAmt] >= (0.00)
 +
|}
  
 +
=== Foreign Keys ===
 
{| border="1" cellpadding="5" cellspacing="0" style="border-collapse:collapse"
 
{| border="1" cellpadding="5" cellspacing="0" style="border-collapse:collapse"
 
|- style="background:silver"
 
|- style="background:silver"
Line 191: Line 257:
 
| '''Column
 
| '''Column
 
| '''Referenced Column
 
| '''Referenced Column
+
 
|-
+
|- valign="top"
 
| [[Person.Address_(table)|Person.Address]]
 
| [[Person.Address_(table)|Person.Address]]
 
| BillToAddressID
 
| BillToAddressID
 
| AddressID
 
| AddressID
|-
+
|- valign="top"
 
| [[Person.Address_(table)|Person.Address]]
 
| [[Person.Address_(table)|Person.Address]]
 
| ShipToAddressID
 
| ShipToAddressID
 
| AddressID
 
| AddressID
|-
+
|- valign="top"
 
| [[Person.Contact_(table)|Person.Contact]]
 
| [[Person.Contact_(table)|Person.Contact]]
 
| ContactID
 
| ContactID
 
| ContactID
 
| ContactID
|-
+
|- valign="top"
 
| [[Sales.CreditCard_(table)|Sales.CreditCard]]
 
| [[Sales.CreditCard_(table)|Sales.CreditCard]]
 
| CreditCardID
 
| CreditCardID
 
| CreditCardID
 
| CreditCardID
|-
+
|- valign="top"
 
| [[Sales.CurrencyRate_(table)|Sales.CurrencyRate]]
 
| [[Sales.CurrencyRate_(table)|Sales.CurrencyRate]]
 
| CurrencyRateID
 
| CurrencyRateID
 
| CurrencyRateID
 
| CurrencyRateID
|-
+
|- valign="top"
 
| [[Sales.Customer_(table)|Sales.Customer]]
 
| [[Sales.Customer_(table)|Sales.Customer]]
 
| CustomerID
 
| CustomerID
 
| CustomerID
 
| CustomerID
|-
+
|- valign="top"
 
| [[Sales.SalesPerson_(table)|Sales.SalesPerson]]
 
| [[Sales.SalesPerson_(table)|Sales.SalesPerson]]
 
| SalesPersonID
 
| SalesPersonID
 
| SalesPersonID
 
| SalesPersonID
|-
+
|- valign="top"
 
| [[Sales.SalesTerritory_(table)|Sales.SalesTerritory]]
 
| [[Sales.SalesTerritory_(table)|Sales.SalesTerritory]]
 
| TerritoryID
 
| TerritoryID
 
| TerritoryID
 
| TerritoryID
|-
+
|- valign="top"
 
| [[Purchasing.ShipMethod_(table)|Purchasing.ShipMethod]]
 
| [[Purchasing.ShipMethod_(table)|Purchasing.ShipMethod]]
 
| ShipMethodID
 
| ShipMethodID
Line 230: Line 296:
 
|}
 
|}
  
 
+
=== Detail Tables ===
 
{| border="1" cellpadding="5" cellspacing="0" style="border-collapse:collapse"
 
{| border="1" cellpadding="5" cellspacing="0" style="border-collapse:collapse"
 
|- style="background:silver"
 
|- style="background:silver"
Line 236: Line 302:
 
| '''Column
 
| '''Column
 
| '''Referencing Column
 
| '''Referencing Column
+
 
|-
+
|- valign="top"
 
| [[Sales.SalesOrderDetail_(table)|Sales.SalesOrderDetail]]
 
| [[Sales.SalesOrderDetail_(table)|Sales.SalesOrderDetail]]
 
| SalesOrderID
 
| SalesOrderID
 
| SalesOrderID
 
| SalesOrderID
|-
+
|- valign="top"
 
| [[Sales.SalesOrderHeaderSalesReason_(table)|Sales.SalesOrderHeaderSalesReason]]
 
| [[Sales.SalesOrderHeaderSalesReason_(table)|Sales.SalesOrderHeaderSalesReason]]
 
| SalesOrderID
 
| SalesOrderID
Line 247: Line 313:
 
|}
 
|}
  
 
+
=== Triggers ===
 
{| border="1" cellpadding="5" cellspacing="0" style="border-collapse:collapse"
 
{| border="1" cellpadding="5" cellspacing="0" style="border-collapse:collapse"
 
|- style="background:silver"
 
|- style="background:silver"
| '''Triggers
+
| '''Trigger
 
| '''Type
 
| '''Type
+
 
|-
+
|- valign="top"
 
| uSalesOrderHeader
 
| uSalesOrderHeader
 
| ON UPDATE
 
| ON UPDATE
 
|}
 
|}
  
 +
==== Trigger uSalesOrderHeader ====
 +
<pre>
 +
CREATE TRIGGER [Sales].[uSalesOrderHeader] ON [Sales].[SalesOrderHeader]
 +
AFTER UPDATE NOT FOR REPLICATION AS
 +
BEGIN
 +
    DECLARE @Count int;
  
 +
    SET @Count = @@ROWCOUNT;
 +
    IF @Count = 0
 +
        RETURN;
 +
 +
    SET NOCOUNT ON;
 +
 +
    BEGIN TRY
 +
        -- Update RevisionNumber for modification of any field EXCEPT the Status.
 +
        IF NOT UPDATE([Status])
 +
        BEGIN
 +
            UPDATE [Sales].[SalesOrderHeader]
 +
            SET [Sales].[SalesOrderHeader].[RevisionNumber] =
 +
                [Sales].[SalesOrderHeader].[RevisionNumber] + 1
 +
            WHERE [Sales].[SalesOrderHeader].[SalesOrderID] IN
 +
                (SELECT inserted.[SalesOrderID] FROM inserted);
 +
        END;
 +
 +
        -- Update the SalesPerson SalesYTD when SubTotal is updated
 +
        IF UPDATE([SubTotal])
 +
        BEGIN
 +
            DECLARE @StartDate datetime,
 +
                    @EndDate datetime
 +
 +
            SET @StartDate = [dbo].[ufnGetAccountingStartDate]();
 +
            SET @EndDate = [dbo].[ufnGetAccountingEndDate]();
 +
 +
            UPDATE [Sales].[SalesPerson]
 +
            SET [Sales].[SalesPerson].[SalesYTD] =
 +
                (SELECT SUM([Sales].[SalesOrderHeader].[SubTotal])
 +
                FROM [Sales].[SalesOrderHeader]
 +
                WHERE [Sales].[SalesPerson].[SalesPersonID] = [Sales].[SalesOrderHeader].[SalesPersonID]
 +
                    AND ([Sales].[SalesOrderHeader].[Status] = 5) -- Shipped
 +
                    AND [Sales].[SalesOrderHeader].[OrderDate] BETWEEN @StartDate AND @EndDate)
 +
            WHERE [Sales].[SalesPerson].[SalesPersonID]
 +
                IN (SELECT DISTINCT inserted.[SalesPersonID] FROM inserted
 +
                    WHERE inserted.[OrderDate] BETWEEN @StartDate AND @EndDate);
 +
 +
            -- Update the SalesTerritory SalesYTD when SubTotal is updated
 +
            UPDATE [Sales].[SalesTerritory]
 +
            SET [Sales].[SalesTerritory].[SalesYTD] =
 +
                (SELECT SUM([Sales].[SalesOrderHeader].[SubTotal])
 +
                FROM [Sales].[SalesOrderHeader]
 +
                WHERE [Sales].[SalesTerritory].[TerritoryID] = [Sales].[SalesOrderHeader].[TerritoryID]
 +
                    AND ([Sales].[SalesOrderHeader].[Status] = 5) -- Shipped
 +
                    AND [Sales].[SalesOrderHeader].[OrderDate] BETWEEN @StartDate AND @EndDate)
 +
            WHERE [Sales].[SalesTerritory].[TerritoryID]
 +
                IN (SELECT DISTINCT inserted.[TerritoryID] FROM inserted
 +
                    WHERE inserted.[OrderDate] BETWEEN @StartDate AND @EndDate);
 +
        END;
 +
    END TRY
 +
    BEGIN CATCH
 +
        EXECUTE [dbo].[uspPrintError];
 +
 +
        -- Rollback any active or uncommittable transactions before
 +
        -- inserting information in the ErrorLog
 +
        IF @@TRANCOUNT > 0
 +
        BEGIN
 +
            ROLLBACK TRANSACTION;
 +
        END
 +
 +
        EXECUTE [dbo].[uspLogError];
 +
    END CATCH;
 +
END;
 +
</pre>
 +
 +
=== References ===
 
{| border="1" cellpadding="5" cellspacing="0" style="border-collapse:collapse"
 
{| border="1" cellpadding="5" cellspacing="0" style="border-collapse:collapse"
 
|- style="background:silver"
 
|- style="background:silver"
Line 268: Line 406:
 
| '''Child Object
 
| '''Child Object
  
|-
+
|- valign="top"
 
| Data Type
 
| Data Type
 
| Type
 
| Type
Line 275: Line 413:
 
|  
 
|  
 
|  
 
|  
|-
+
|- valign="top"
 
| Data Type
 
| Data Type
 
| Type
 
| Type
Line 282: Line 420:
 
|  
 
|  
 
|  
 
|  
|-
+
|- valign="top"
 
| Data Type
 
| Data Type
 
| Type
 
| Type
Line 289: Line 427:
 
|  
 
|  
 
|  
 
|  
|-
+
|- valign="top"
 +
| Schema
 +
| Schema
 +
| [[Sales_(schema)|Sales]]
 +
 
 +
|
 +
|
 +
|- valign="top"
 
| Select
 
| Select
 
| Table
 
| Table
Line 296: Line 441:
 
| Trigger
 
| Trigger
 
| uSalesOrderHeader
 
| uSalesOrderHeader
|-
+
|- valign="top"
 
| Update
 
| Update
 
| Table
 
| Table
Line 303: Line 448:
 
| Trigger
 
| Trigger
 
| uSalesOrderHeader
 
| uSalesOrderHeader
|-
+
|- valign="top"
 
| Update
 
| Update
 
| Table
 
| Table
Line 310: Line 455:
 
| Trigger
 
| Trigger
 
| uSalesOrderHeader
 
| uSalesOrderHeader
|-
+
|- valign="top"
 
| Update
 
| Update
 
| Table
 
| Table
Line 317: Line 462:
 
| Trigger
 
| Trigger
 
| uSalesOrderHeader
 
| uSalesOrderHeader
|-
+
|- valign="top"
 
| Execute
 
| Execute
 
| Procedure
 
| Procedure
Line 324: Line 469:
 
| Trigger
 
| Trigger
 
| uSalesOrderHeader
 
| uSalesOrderHeader
|-
+
|- valign="top"
 
| Execute
 
| Execute
 
| Procedure
 
| Procedure
Line 331: Line 476:
 
| Trigger
 
| Trigger
 
| uSalesOrderHeader
 
| uSalesOrderHeader
|-
+
|- valign="top"
 
| Execute
 
| Execute
 
| Function
 
| Function
Line 338: Line 483:
 
| Trigger
 
| Trigger
 
| uSalesOrderHeader
 
| uSalesOrderHeader
|-
+
|- valign="top"
 
| Execute
 
| Execute
 
| Function
 
| Function
Line 347: Line 492:
 
|}
 
|}
  
 
+
=== Dependencies ===
 
{| border="1" cellpadding="5" cellspacing="0" style="border-collapse:collapse"
 
{| border="1" cellpadding="5" cellspacing="0" style="border-collapse:collapse"
 
|- style="background:silver"
 
|- style="background:silver"
Line 357: Line 502:
 
| '''Child Object
 
| '''Child Object
  
|-
+
|- valign="top"
 
| Select
 
| Select
 
| View
 
| View
Line 364: Line 509:
 
|  
 
|  
 
|  
 
|  
|-
+
|- valign="top"
 
| Select
 
| Select
 
| Table
 
| Table
Line 371: Line 516:
 
| Trigger
 
| Trigger
 
| iduSalesOrderDetail
 
| iduSalesOrderDetail
|-
+
|- valign="top"
 
| Update
 
| Update
 
| Table
 
| Table
Line 378: Line 523:
 
| Trigger
 
| Trigger
 
| iduSalesOrderDetail
 
| iduSalesOrderDetail
|-
+
|- valign="top"
 
| Select
 
| Select
 
| Table
 
| Table
Line 385: Line 530:
 
| Trigger
 
| Trigger
 
| uSalesOrderHeader
 
| uSalesOrderHeader
|-
+
|- valign="top"
 
| Update
 
| Update
 
| Table
 
| Table
Line 393: Line 538:
 
| uSalesOrderHeader
 
| uSalesOrderHeader
 
|}
 
|}
 
  
  

Latest revision as of 23:17, 23 June 2010

wikibot[edit]

Table Sales.SalesOrderHeader
Description General sales order information.

Columns[edit]

Column Data Type Nullable Default Description
SalesOrderID int not null Primary key.
RevisionNumber tinyint not null ((0)) Incremental number to track changes to the sales order over time.
OrderDate datetime not null (getdate()) Dates the sales order was created.
DueDate datetime not null Date the order is due to the customer.
ShipDate datetime null Date the order was shipped to the customer.
Status tinyint not null ((1)) Order current status. 1 = In process; 2 = Approved; 3 = Backordered; 4 = Rejected; 5 = Shipped; 6 = Cancelled
OnlineOrderFlag dbo.Flag not null ((1)) 0 = Order placed by sales person. 1 = Order placed online by customer.
SalesOrderNumber Unique sales order identification number.
PurchaseOrderNumber dbo.OrderNumber null Customer purchase order number reference.
AccountNumber dbo.AccountNumber null Financial accounting number reference.
CustomerID int not null Customer identification number. Foreign key to Customer.CustomerID.
ContactID int not null Customer contact identification number. Foreign key to Contact.ContactID.
SalesPersonID int null Sales person who created the sales order. Foreign key to SalesPerson.SalePersonID.
TerritoryID int null Territory in which the sale was made. Foreign key to SalesTerritory.SalesTerritoryID.
BillToAddressID int not null Customer billing address. Foreign key to Address.AddressID.
ShipToAddressID int not null Customer shipping address. Foreign key to Address.AddressID.
ShipMethodID int not null Shipping method. Foreign key to ShipMethod.ShipMethodID.
CreditCardID int null Credit card identification number. Foreign key to CreditCard.CreditCardID.
CreditCardApprovalCode varchar(15) null Approval code provided by the credit card company.
CurrencyRateID int null Currency exchange rate used. Foreign key to CurrencyRate.CurrencyRateID.
SubTotal money not null ((0.00)) Sales subtotal. Computed as SUM(SalesOrderDetail.LineTotal)for the appropriate SalesOrderID.
TaxAmt money not null ((0.00)) Tax amount.
Freight money not null ((0.00)) Shipping cost.
TotalDue Total due from customer. Computed as Subtotal + TaxAmt + Freight.
Comment nvarchar(128) null Sales representative comments.
rowguid uniqueidentifier not null (newid()) ROWGUIDCOL number uniquely identifying the record. Used to support a merge replication sample.
ModifiedDate datetime not null (getdate()) Date and time the record was last updated.

Primary Key[edit]

Primary Key Columns
PK_SalesOrderHeader_SalesOrderID SalesOrderID

Indexes[edit]

Index Type Columns
AK_SalesOrderHeader_rowguid Unique rowguid
AK_SalesOrderHeader_SalesOrderNumber Unique SalesOrderNumber
IX_SalesOrderHeader_CustomerID CustomerID
IX_SalesOrderHeader_SalesPersonID SalesPersonID

Check Constraints[edit]

Check Constraint Expression Description
CK_SalesOrderHeader_DueDate ([DueDate]>=[OrderDate]) Check constraint [DueDate] >= [OrderDate]
CK_SalesOrderHeader_Freight ([Freight]>=(0.00)) Check constraint [Freight] >= (0.00)
CK_SalesOrderHeader_ShipDate ([ShipDate]>=[OrderDate] OR [ShipDate] IS NULL) Check constraint [ShipDate] >= [OrderDate] OR [ShipDate] IS NULL
CK_SalesOrderHeader_Status ([Status]>=(0) AND [Status]<=(8)) Check constraint [Status] BETWEEN (0) AND (8)
CK_SalesOrderHeader_SubTotal ([SubTotal]>=(0.00)) Check constraint [SubTotal] >= (0.00)
CK_SalesOrderHeader_TaxAmt ([TaxAmt]>=(0.00)) Check constraint [TaxAmt] >= (0.00)

Foreign Keys[edit]

Relation Column Referenced Column
Person.Address BillToAddressID AddressID
Person.Address ShipToAddressID AddressID
Person.Contact ContactID ContactID
Sales.CreditCard CreditCardID CreditCardID
Sales.CurrencyRate CurrencyRateID CurrencyRateID
Sales.Customer CustomerID CustomerID
Sales.SalesPerson SalesPersonID SalesPersonID
Sales.SalesTerritory TerritoryID TerritoryID
Purchasing.ShipMethod ShipMethodID ShipMethodID

Detail Tables[edit]

Detail Table Column Referencing Column
Sales.SalesOrderDetail SalesOrderID SalesOrderID
Sales.SalesOrderHeaderSalesReason SalesOrderID SalesOrderID

Triggers[edit]

Trigger Type
uSalesOrderHeader ON UPDATE

Trigger uSalesOrderHeader[edit]

CREATE TRIGGER [Sales].[uSalesOrderHeader] ON [Sales].[SalesOrderHeader] 
AFTER UPDATE NOT FOR REPLICATION AS 
BEGIN
    DECLARE @Count int;

    SET @Count = @@ROWCOUNT;
    IF @Count = 0 
        RETURN;

    SET NOCOUNT ON;

    BEGIN TRY
        -- Update RevisionNumber for modification of any field EXCEPT the Status.
        IF NOT UPDATE([Status])
        BEGIN
            UPDATE [Sales].[SalesOrderHeader]
            SET [Sales].[SalesOrderHeader].[RevisionNumber] = 
                [Sales].[SalesOrderHeader].[RevisionNumber] + 1
            WHERE [Sales].[SalesOrderHeader].[SalesOrderID] IN 
                (SELECT inserted.[SalesOrderID] FROM inserted);
        END;

        -- Update the SalesPerson SalesYTD when SubTotal is updated
        IF UPDATE([SubTotal])
        BEGIN
            DECLARE @StartDate datetime,
                    @EndDate datetime

            SET @StartDate = [dbo].[ufnGetAccountingStartDate]();
            SET @EndDate = [dbo].[ufnGetAccountingEndDate]();

            UPDATE [Sales].[SalesPerson]
            SET [Sales].[SalesPerson].[SalesYTD] = 
                (SELECT SUM([Sales].[SalesOrderHeader].[SubTotal])
                FROM [Sales].[SalesOrderHeader] 
                WHERE [Sales].[SalesPerson].[SalesPersonID] = [Sales].[SalesOrderHeader].[SalesPersonID]
                    AND ([Sales].[SalesOrderHeader].[Status] = 5) -- Shipped
                    AND [Sales].[SalesOrderHeader].[OrderDate] BETWEEN @StartDate AND @EndDate)
            WHERE [Sales].[SalesPerson].[SalesPersonID] 
                IN (SELECT DISTINCT inserted.[SalesPersonID] FROM inserted 
                    WHERE inserted.[OrderDate] BETWEEN @StartDate AND @EndDate);

            -- Update the SalesTerritory SalesYTD when SubTotal is updated
            UPDATE [Sales].[SalesTerritory]
            SET [Sales].[SalesTerritory].[SalesYTD] = 
                (SELECT SUM([Sales].[SalesOrderHeader].[SubTotal])
                FROM [Sales].[SalesOrderHeader] 
                WHERE [Sales].[SalesTerritory].[TerritoryID] = [Sales].[SalesOrderHeader].[TerritoryID]
                    AND ([Sales].[SalesOrderHeader].[Status] = 5) -- Shipped
                    AND [Sales].[SalesOrderHeader].[OrderDate] BETWEEN @StartDate AND @EndDate)
            WHERE [Sales].[SalesTerritory].[TerritoryID] 
                IN (SELECT DISTINCT inserted.[TerritoryID] FROM inserted 
                    WHERE inserted.[OrderDate] BETWEEN @StartDate AND @EndDate);
        END;
    END TRY
    BEGIN CATCH
        EXECUTE [dbo].[uspPrintError];

        -- Rollback any active or uncommittable transactions before
        -- inserting information in the ErrorLog
        IF @@TRANCOUNT > 0
        BEGIN
            ROLLBACK TRANSACTION;
        END

        EXECUTE [dbo].[uspLogError];
    END CATCH;
END;

References[edit]

Dependency Type Object Type Referenced Object Child Type Child Object
Data Type Type dbo.AccountNumber
Data Type Type dbo.Flag
Data Type Type dbo.OrderNumber
Schema Schema Sales
Select Table Sales.SalesOrderHeader Trigger uSalesOrderHeader
Update Table Sales.SalesOrderHeader Trigger uSalesOrderHeader
Update Table Sales.SalesPerson Trigger uSalesOrderHeader
Update Table Sales.SalesTerritory Trigger uSalesOrderHeader
Execute Procedure dbo.uspLogError Trigger uSalesOrderHeader
Execute Procedure dbo.uspPrintError Trigger uSalesOrderHeader
Execute Function dbo.ufnGetAccountingEndDate Trigger uSalesOrderHeader
Execute Function dbo.ufnGetAccountingStartDate Trigger uSalesOrderHeader

Dependencies[edit]

Reference Type Object Type Referencing Object Child Type Child Object
Select View Sales.vSalesPersonSalesByFiscalYears
Select Table Sales.SalesOrderDetail Trigger iduSalesOrderDetail
Update Table Sales.SalesOrderDetail Trigger iduSalesOrderDetail
Select Table Sales.SalesOrderHeader Trigger uSalesOrderHeader
Update Table Sales.SalesOrderHeader Trigger uSalesOrderHeader


automatically generated[edit]

Table Sales.SalesOrderHeader
Description General sales order information.


Column Data Type Nullable Default Description / PK / Index
SalesOrderID int not null Primary key.
PK_SalesOrderHeader_SalesOrderID
RevisionNumber tinyint not null (0) Incremental number to track changes to the sales order over time.
OrderDate datetime not null (GETDATE()) Dates the sales order was created.
DueDate datetime not null Date the order is due to the customer.
ShipDate datetime null Date the order was shipped to the customer.
Status tinyint not null (1) Order current status. 1 = In process; 2 = Approved; 3 = Backordered; 4 = Rejected; 5 = Shipped; 6 = Cancelled
OnlineOrderFlag Flag not null (1) 0 = Order placed by sales person. 1 = Order placed online by customer.
SalesOrderNumber Unique sales order identification number.
AK_SalesOrderHeader_SalesOrderNumber
PurchaseOrderNumber OrderNumber null Customer purchase order number reference.
AccountNumber AccountNumber null Financial accounting number reference.
CustomerID int not null Customer identification number. Foreign key to Customer.CustomerID.
IX_SalesOrderHeader_CustomerID
ContactID int not null Customer contact identification number. Foreign key to Contact.ContactID.
SalesPersonID int null Sales person who created the sales order. Foreign key to SalesPerson.SalePersonID.
IX_SalesOrderHeader_SalesPersonID
TerritoryID int null Territory in which the sale was made. Foreign key to SalesTerritory.SalesTerritoryID.
BillToAddressID int not null Customer billing address. Foreign key to Address.AddressID.
ShipToAddressID int not null Customer shipping address. Foreign key to Address.AddressID.
ShipMethodID int not null Shipping method. Foreign key to ShipMethod.ShipMethodID.
CreditCardID int null Credit card identification number. Foreign key to CreditCard.CreditCardID.
CreditCardApprovalCode varchar(15) null Approval code provided by the credit card company.
CurrencyRateID int null Currency exchange rate used. Foreign key to CurrencyRate.CurrencyRateID.
SubTotal money not null (0.00) Sales subtotal. Computed as SUM(SalesOrderDetail.LineTotal)for the appropriate SalesOrderID.
TaxAmt money not null (0.00) Tax amount.
Freight money not null (0.00) Shipping cost.
TotalDue Total due from customer. Computed as Subtotal + TaxAmt + Freight.
Comment nvarchar(128) null Sales representative comments.
rowguid uniqueidentifier not null (NEWID()) ROWGUIDCOL number uniquely identifying the record. Used to support a merge replication sample.
AK_SalesOrderHeader_rowguid
ModifiedDate datetime not null (GETDATE()) Date and time the record was last updated.


Relation Column Referenced Column
Person.Address BillToAddressID AddressID
Person.Address ShipToAddressID AddressID
Person.Contact ContactID ContactID
Sales.CreditCard CreditCardID CreditCardID
Sales.CurrencyRate CurrencyRateID CurrencyRateID
Sales.Customer CustomerID CustomerID
Sales.SalesPerson SalesPersonID SalesPersonID
Sales.SalesTerritory TerritoryID TerritoryID
Purchasing.ShipMethod ShipMethodID ShipMethodID


Detail Table Column Referencing Column
Sales.SalesOrderDetail SalesOrderID SalesOrderID
Sales.SalesOrderHeaderSalesReason SalesOrderID SalesOrderID


Triggers Type
uSalesOrderHeader ON UPDATE


Dependency Type Object Type Referenced Object Child Type Child Object
Data Type Type dbo.AccountNumber
Data Type Type dbo.Flag
Data Type Type dbo.OrderNumber
Schema Schema Sales
Select Table Sales.SalesOrderHeader Trigger uSalesOrderHeader
Update Table Sales.SalesOrderHeader Trigger uSalesOrderHeader
Update Table Sales.SalesPerson Trigger uSalesOrderHeader
Update Table Sales.SalesTerritory Trigger uSalesOrderHeader
Execute Procedure dbo.uspLogError Trigger uSalesOrderHeader
Execute Procedure dbo.uspPrintError Trigger uSalesOrderHeader
Execute Function dbo.ufnGetAccountingEndDate Trigger uSalesOrderHeader
Execute Function dbo.ufnGetAccountingStartDate Trigger uSalesOrderHeader


Reference Type Object Type Referencing Object Child Type Child Object
Select View Sales.vSalesPersonSalesByFiscalYears
Select Table Sales.SalesOrderDetail Trigger iduSalesOrderDetail
Update Table Sales.SalesOrderDetail Trigger iduSalesOrderDetail
Select Table Sales.SalesOrderHeader Trigger uSalesOrderHeader
Update Table Sales.SalesOrderHeader Trigger uSalesOrderHeader