Difference between revisions of "Purchasing.PurchaseOrderDetail (table)"

From dbscript Online Help
Jump to: navigation, search
 
(2 intermediate revisions 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
 
| Purchasing.PurchaseOrderDetail
 
| Purchasing.PurchaseOrderDetail
Line 8: Line 8:
 
| '''Description
 
| '''Description
 
| Individual products associated with a specific purchase order. See PurchaseOrderHeader.
 
| Individual products associated with a specific purchase order. See PurchaseOrderHeader.
|-
 
 
|}
 
|}
  
 
+
=== 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"
 
| PurchaseOrderID
 
| PurchaseOrderID
Line 25: Line 24:
 
| not null
 
| not null
 
|  
 
|  
| Primary key. Foreign key to PurchaseOrderHeader.PurchaseOrderID.<br />PK_PurchaseOrderDetail_PurchaseOrderID_PurchaseOrderDetailID
+
| Primary key. Foreign key to PurchaseOrderHeader.PurchaseOrderID.
 
|- valign="top"
 
|- valign="top"
 
| PurchaseOrderDetailID
 
| PurchaseOrderDetailID
Line 31: Line 30:
 
| not null
 
| not null
 
|  
 
|  
| Primary key. One line number per purchased product.<br />PK_PurchaseOrderDetail_PurchaseOrderID_PurchaseOrderDetailID
+
| Primary key. One line number per purchased product.
 
|- valign="top"
 
|- valign="top"
 
| DueDate
 
| DueDate
Line 37: Line 36:
 
| not null
 
| not null
 
|  
 
|  
| Date the product is expected to be received.<br />
+
| Date the product is expected to be received.
 
|- valign="top"
 
|- valign="top"
 
| OrderQty
 
| OrderQty
Line 43: Line 42:
 
| not null
 
| not null
 
|  
 
|  
| Quantity ordered.<br />
+
| Quantity ordered.
 
|- valign="top"
 
|- valign="top"
 
| ProductID
 
| ProductID
Line 49: Line 48:
 
| not null
 
| not null
 
|  
 
|  
| Product identification number. Foreign key to Product.ProductID.<br />IX_PurchaseOrderDetail_ProductID
+
| Product identification number. Foreign key to Product.ProductID.
 
|- valign="top"
 
|- valign="top"
 
| UnitPrice
 
| UnitPrice
Line 55: Line 54:
 
| not null
 
| not null
 
|  
 
|  
| Vendor's selling price of a single product.<br />
+
| Vendor's selling price of a single product.
 
|- valign="top"
 
|- valign="top"
 
| LineTotal
 
| LineTotal
Line 61: Line 60:
 
|  
 
|  
 
|  
 
|  
| Per product subtotal. Computed as OrderQty * UnitPrice.<br />
+
| Per product subtotal. Computed as OrderQty * UnitPrice.
 
|- valign="top"
 
|- valign="top"
 
| ReceivedQty
 
| ReceivedQty
Line 67: Line 66:
 
| not null
 
| not null
 
|  
 
|  
| Quantity actually received from the vendor.<br />
+
| Quantity actually received from the vendor.
 
|- valign="top"
 
|- valign="top"
 
| RejectedQty
 
| RejectedQty
Line 73: Line 72:
 
| not null
 
| not null
 
|  
 
|  
| Quantity rejected during inspection.<br />
+
| Quantity rejected during inspection.
 
|- valign="top"
 
|- valign="top"
 
| StockedQty
 
| StockedQty
Line 79: Line 78:
 
|  
 
|  
 
|  
 
|  
| Quantity accepted into inventory. Computed as ReceivedQty - RejectedQty.<br />
+
| Quantity accepted into inventory. Computed as ReceivedQty - RejectedQty.
 
|- valign="top"
 
|- valign="top"
 
| ModifiedDate
 
| ModifiedDate
Line 85: Line 84:
 
| 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_PurchaseOrderDetail_PurchaseOrderID_PurchaseOrderDetailID
 +
| PurchaseOrderID, PurchaseOrderDetailID
 
|}
 
|}
  
 +
=== Indexes ===
 +
{| border="1" cellpadding="5" cellspacing="0" style="border-collapse:collapse"
 +
|- style="background:silver"
 +
| '''Index
 +
| '''Type
 +
| '''Columns
 +
 +
|- valign="top"
 +
| IX_PurchaseOrderDetail_ProductID
 +
|
 +
| ProductID
 +
|}
 +
 +
=== Check Constraints ===
 +
{| border="1" cellpadding="5" cellspacing="0" style="border-collapse:collapse"
 +
|- style="background:silver"
 +
| '''Check Constraint
 +
| '''Expression
 +
| '''Description
  
 +
|- valign="top"
 +
| CK_PurchaseOrderDetail_OrderQty
 +
| ([OrderQty]>(0))
 +
| Check constraint [OrderQty] > (0)
 +
|- valign="top"
 +
| CK_PurchaseOrderDetail_ReceivedQty
 +
| ([ReceivedQty]>=(0.00))
 +
| Check constraint [ReceivedQty] >= (0.00)
 +
|- valign="top"
 +
| CK_PurchaseOrderDetail_RejectedQty
 +
| ([RejectedQty]>=(0.00))
 +
| Check constraint [RejectedQty] >= (0.00)
 +
|- valign="top"
 +
| CK_PurchaseOrderDetail_UnitPrice
 +
| ([UnitPrice]>=(0.00))
 +
| Check constraint [UnitPrice] >= (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 95: Line 141:
 
| '''Column
 
| '''Column
 
| '''Referenced Column
 
| '''Referenced Column
+
 
|-
+
|- valign="top"
 
| [[Production.Product_(table)|Production.Product]]
 
| [[Production.Product_(table)|Production.Product]]
 
| ProductID
 
| ProductID
 
| ProductID
 
| ProductID
|-
+
|- valign="top"
 
| [[Purchasing.PurchaseOrderHeader_(table)|Purchasing.PurchaseOrderHeader]]
 
| [[Purchasing.PurchaseOrderHeader_(table)|Purchasing.PurchaseOrderHeader]]
 
| PurchaseOrderID
 
| PurchaseOrderID
Line 106: Line 152:
 
|}
 
|}
  
 
+
=== 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"
 
| iPurchaseOrderDetail
 
| iPurchaseOrderDetail
 
| ON INSERT
 
| ON INSERT
|-
+
|- valign="top"
 
| uPurchaseOrderDetail
 
| uPurchaseOrderDetail
 
| ON UPDATE
 
| ON UPDATE
 
|}
 
|}
  
 +
==== Trigger iPurchaseOrderDetail ====
 +
<pre>
 +
CREATE TRIGGER [Purchasing].[iPurchaseOrderDetail] ON [Purchasing].[PurchaseOrderDetail]
 +
AFTER INSERT AS
 +
BEGIN
 +
    DECLARE @Count int;
 +
 +
    SET @Count = @@ROWCOUNT;
 +
    IF @Count = 0
 +
        RETURN;
 +
 +
    SET NOCOUNT ON;
 +
 +
    BEGIN TRY
 +
        INSERT INTO [Production].[TransactionHistory]
 +
            ([ProductID]
 +
            ,[ReferenceOrderID]
 +
            ,[ReferenceOrderLineID]
 +
            ,[TransactionType]
 +
            ,[TransactionDate]
 +
            ,[Quantity]
 +
            ,[ActualCost])
 +
        SELECT
 +
            inserted.[ProductID]
 +
            ,inserted.[PurchaseOrderID]
 +
            ,inserted.[PurchaseOrderDetailID]
 +
            ,'P'
 +
            ,GETDATE()
 +
            ,inserted.[OrderQty]
 +
            ,inserted.[UnitPrice]
 +
        FROM inserted
 +
            INNER JOIN [Purchasing].[PurchaseOrderHeader]
 +
            ON inserted.[PurchaseOrderID] = [Purchasing].[PurchaseOrderHeader].[PurchaseOrderID];
 +
 +
        -- Update SubTotal in PurchaseOrderHeader record. Note that this causes the
 +
        -- PurchaseOrderHeader trigger to fire which will update the RevisionNumber.
 +
        UPDATE [Purchasing].[PurchaseOrderHeader]
 +
        SET [Purchasing].[PurchaseOrderHeader].[SubTotal] =
 +
            (SELECT SUM([Purchasing].[PurchaseOrderDetail].[LineTotal])
 +
                FROM [Purchasing].[PurchaseOrderDetail]
 +
                WHERE [Purchasing].[PurchaseOrderHeader].[PurchaseOrderID] = [Purchasing].[PurchaseOrderDetail].[PurchaseOrderID])
 +
        WHERE [Purchasing].[PurchaseOrderHeader].[PurchaseOrderID] IN (SELECT inserted.[PurchaseOrderID] FROM inserted);
 +
    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>
 +
 +
==== Trigger uPurchaseOrderDetail ====
 +
<pre>
 +
CREATE TRIGGER [Purchasing].[uPurchaseOrderDetail] ON [Purchasing].[PurchaseOrderDetail]
 +
AFTER UPDATE AS
 +
BEGIN
 +
    DECLARE @Count int;
 +
 +
    SET @Count = @@ROWCOUNT;
 +
    IF @Count = 0
 +
        RETURN;
 +
 +
    SET NOCOUNT ON;
 +
 +
    BEGIN TRY
 +
        IF UPDATE([ProductID]) OR UPDATE([OrderQty]) OR UPDATE([UnitPrice])
 +
        -- Insert record into TransactionHistory
 +
        BEGIN
 +
            INSERT INTO [Production].[TransactionHistory]
 +
                ([ProductID]
 +
                ,[ReferenceOrderID]
 +
                ,[ReferenceOrderLineID]
 +
                ,[TransactionType]
 +
                ,[TransactionDate]
 +
                ,[Quantity]
 +
                ,[ActualCost])
 +
            SELECT
 +
                inserted.[ProductID]
 +
                ,inserted.[PurchaseOrderID]
 +
                ,inserted.[PurchaseOrderDetailID]
 +
                ,'P'
 +
                ,GETDATE()
 +
                ,inserted.[OrderQty]
 +
                ,inserted.[UnitPrice]
 +
            FROM inserted
 +
                INNER JOIN [Purchasing].[PurchaseOrderDetail]
 +
                ON inserted.[PurchaseOrderID] = [Purchasing].[PurchaseOrderDetail].[PurchaseOrderID];
 +
 +
            -- Update SubTotal in PurchaseOrderHeader record. Note that this causes the
 +
            -- PurchaseOrderHeader trigger to fire which will update the RevisionNumber.
 +
            UPDATE [Purchasing].[PurchaseOrderHeader]
 +
            SET [Purchasing].[PurchaseOrderHeader].[SubTotal] =
 +
                (SELECT SUM([Purchasing].[PurchaseOrderDetail].[LineTotal])
 +
                    FROM [Purchasing].[PurchaseOrderDetail]
 +
                    WHERE [Purchasing].[PurchaseOrderHeader].[PurchaseOrderID]
 +
                        = [Purchasing].[PurchaseOrderDetail].[PurchaseOrderID])
 +
            WHERE [Purchasing].[PurchaseOrderHeader].[PurchaseOrderID]
 +
                IN (SELECT inserted.[PurchaseOrderID] FROM inserted);
  
 +
            UPDATE [Purchasing].[PurchaseOrderDetail]
 +
            SET [Purchasing].[PurchaseOrderDetail].[ModifiedDate] = GETDATE()
 +
            FROM inserted
 +
            WHERE inserted.[PurchaseOrderID] = [Purchasing].[PurchaseOrderDetail].[PurchaseOrderID]
 +
                AND inserted.[PurchaseOrderDetailID] = [Purchasing].[PurchaseOrderDetail].[PurchaseOrderDetailID];
 +
        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 130: Line 304:
 
| '''Child Object
 
| '''Child Object
  
|-
+
|- valign="top"
 +
| Schema
 +
| Schema
 +
| [[Purchasing_(schema)|Purchasing]]
 +
 
 +
|
 +
|
 +
|- valign="top"
 
| Insert
 
| Insert
 
| Table
 
| Table
Line 137: Line 318:
 
| Trigger
 
| Trigger
 
| iPurchaseOrderDetail
 
| iPurchaseOrderDetail
|-
+
|- valign="top"
 
| Insert
 
| Insert
 
| Table
 
| Table
Line 144: Line 325:
 
| Trigger
 
| Trigger
 
| uPurchaseOrderDetail
 
| uPurchaseOrderDetail
|-
+
|- valign="top"
 
| Select
 
| Select
 
| Table
 
| Table
Line 150: Line 331:
  
 
| Trigger
 
| Trigger
| uPurchaseOrderDetail
+
| iPurchaseOrderDetail
|-
+
|- valign="top"
 
| Select
 
| Select
 
| Table
 
| Table
Line 157: Line 338:
  
 
| Trigger
 
| Trigger
| iPurchaseOrderDetail
+
| uPurchaseOrderDetail
|-
+
|- valign="top"
 
| Update
 
| Update
 
| Table
 
| Table
Line 165: Line 346:
 
| Trigger
 
| Trigger
 
| uPurchaseOrderDetail
 
| uPurchaseOrderDetail
|-
+
|- valign="top"
 
| Select
 
| Select
 
| Table
 
| Table
Line 172: Line 353:
 
| Trigger
 
| Trigger
 
| iPurchaseOrderDetail
 
| iPurchaseOrderDetail
|-
+
|- valign="top"
 
| Update
 
| Update
 
| Table
 
| Table
Line 179: Line 360:
 
| Trigger
 
| Trigger
 
| iPurchaseOrderDetail
 
| iPurchaseOrderDetail
|-
+
|- valign="top"
 
| Update
 
| Update
 
| Table
 
| Table
Line 186: Line 367:
 
| Trigger
 
| Trigger
 
| uPurchaseOrderDetail
 
| uPurchaseOrderDetail
|-
+
|- valign="top"
 
| Execute
 
| Execute
 
| Procedure
 
| Procedure
Line 193: Line 374:
 
| Trigger
 
| Trigger
 
| iPurchaseOrderDetail
 
| iPurchaseOrderDetail
|-
+
|- valign="top"
 
| Execute
 
| Execute
 
| Procedure
 
| Procedure
Line 200: Line 381:
 
| Trigger
 
| Trigger
 
| uPurchaseOrderDetail
 
| uPurchaseOrderDetail
|-
+
|- valign="top"
 
| Execute
 
| Execute
 
| Procedure
 
| Procedure
Line 206: Line 387:
  
 
| Trigger
 
| Trigger
| uPurchaseOrderDetail
+
| iPurchaseOrderDetail
|-
+
|- valign="top"
 
| Execute
 
| Execute
 
| Procedure
 
| Procedure
Line 213: Line 394:
  
 
| Trigger
 
| Trigger
| iPurchaseOrderDetail
+
| uPurchaseOrderDetail
 
|}
 
|}
  
 
+
=== 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 226: Line 407:
 
| '''Child Object
 
| '''Child Object
  
|-
+
|- valign="top"
 
| Select
 
| Select
 
| Table
 
| Table
Line 233: Line 414:
 
| Trigger
 
| Trigger
 
| iPurchaseOrderDetail
 
| iPurchaseOrderDetail
|-
+
|- valign="top"
 
| Select
 
| Select
 
| Table
 
| Table
Line 240: Line 421:
 
| Trigger
 
| Trigger
 
| uPurchaseOrderDetail
 
| uPurchaseOrderDetail
|-
+
|- valign="top"
 
| Update
 
| Update
 
| Table
 
| Table
Line 248: Line 429:
 
| uPurchaseOrderDetail
 
| uPurchaseOrderDetail
 
|}
 
|}
 
  
  

Latest revision as of 09:55, 27 August 2011

wikibot[edit]

Table Purchasing.PurchaseOrderDetail
Description Individual products associated with a specific purchase order. See PurchaseOrderHeader.

Columns[edit]

Column Data Type Nullable Default Description
PurchaseOrderID int not null Primary key. Foreign key to PurchaseOrderHeader.PurchaseOrderID.
PurchaseOrderDetailID int not null Primary key. One line number per purchased product.
DueDate datetime not null Date the product is expected to be received.
OrderQty smallint not null Quantity ordered.
ProductID int not null Product identification number. Foreign key to Product.ProductID.
UnitPrice money not null Vendor's selling price of a single product.
LineTotal Per product subtotal. Computed as OrderQty * UnitPrice.
ReceivedQty decimal(8, 2) not null Quantity actually received from the vendor.
RejectedQty decimal(8, 2) not null Quantity rejected during inspection.
StockedQty Quantity accepted into inventory. Computed as ReceivedQty - RejectedQty.
ModifiedDate datetime not null (getdate()) Date and time the record was last updated.

Primary Key[edit]

Primary Key Columns
PK_PurchaseOrderDetail_PurchaseOrderID_PurchaseOrderDetailID PurchaseOrderID, PurchaseOrderDetailID

Indexes[edit]

Index Type Columns
IX_PurchaseOrderDetail_ProductID ProductID

Check Constraints[edit]

Check Constraint Expression Description
CK_PurchaseOrderDetail_OrderQty ([OrderQty]>(0)) Check constraint [OrderQty] > (0)
CK_PurchaseOrderDetail_ReceivedQty ([ReceivedQty]>=(0.00)) Check constraint [ReceivedQty] >= (0.00)
CK_PurchaseOrderDetail_RejectedQty ([RejectedQty]>=(0.00)) Check constraint [RejectedQty] >= (0.00)
CK_PurchaseOrderDetail_UnitPrice ([UnitPrice]>=(0.00)) Check constraint [UnitPrice] >= (0.00)

Foreign Keys[edit]

Relation Column Referenced Column
Production.Product ProductID ProductID
Purchasing.PurchaseOrderHeader PurchaseOrderID PurchaseOrderID

Triggers[edit]

Trigger Type
iPurchaseOrderDetail ON INSERT
uPurchaseOrderDetail ON UPDATE

Trigger iPurchaseOrderDetail[edit]

CREATE TRIGGER [Purchasing].[iPurchaseOrderDetail] ON [Purchasing].[PurchaseOrderDetail] 
AFTER INSERT AS
BEGIN
    DECLARE @Count int;

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

    SET NOCOUNT ON;

    BEGIN TRY
        INSERT INTO [Production].[TransactionHistory]
            ([ProductID]
            ,[ReferenceOrderID]
            ,[ReferenceOrderLineID]
            ,[TransactionType]
            ,[TransactionDate]
            ,[Quantity]
            ,[ActualCost])
        SELECT 
            inserted.[ProductID]
            ,inserted.[PurchaseOrderID]
            ,inserted.[PurchaseOrderDetailID]
            ,'P'
            ,GETDATE()
            ,inserted.[OrderQty]
            ,inserted.[UnitPrice]
        FROM inserted 
            INNER JOIN [Purchasing].[PurchaseOrderHeader] 
            ON inserted.[PurchaseOrderID] = [Purchasing].[PurchaseOrderHeader].[PurchaseOrderID];

        -- Update SubTotal in PurchaseOrderHeader record. Note that this causes the 
        -- PurchaseOrderHeader trigger to fire which will update the RevisionNumber.
        UPDATE [Purchasing].[PurchaseOrderHeader]
        SET [Purchasing].[PurchaseOrderHeader].[SubTotal] = 
            (SELECT SUM([Purchasing].[PurchaseOrderDetail].[LineTotal])
                FROM [Purchasing].[PurchaseOrderDetail]
                WHERE [Purchasing].[PurchaseOrderHeader].[PurchaseOrderID] = [Purchasing].[PurchaseOrderDetail].[PurchaseOrderID])
        WHERE [Purchasing].[PurchaseOrderHeader].[PurchaseOrderID] IN (SELECT inserted.[PurchaseOrderID] FROM inserted);
    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;

Trigger uPurchaseOrderDetail[edit]

CREATE TRIGGER [Purchasing].[uPurchaseOrderDetail] ON [Purchasing].[PurchaseOrderDetail] 
AFTER UPDATE AS 
BEGIN
    DECLARE @Count int;

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

    SET NOCOUNT ON;

    BEGIN TRY
        IF UPDATE([ProductID]) OR UPDATE([OrderQty]) OR UPDATE([UnitPrice])
        -- Insert record into TransactionHistory 
        BEGIN
            INSERT INTO [Production].[TransactionHistory]
                ([ProductID]
                ,[ReferenceOrderID]
                ,[ReferenceOrderLineID]
                ,[TransactionType]
                ,[TransactionDate]
                ,[Quantity]
                ,[ActualCost])
            SELECT 
                inserted.[ProductID]
                ,inserted.[PurchaseOrderID]
                ,inserted.[PurchaseOrderDetailID]
                ,'P'
                ,GETDATE()
                ,inserted.[OrderQty]
                ,inserted.[UnitPrice]
            FROM inserted 
                INNER JOIN [Purchasing].[PurchaseOrderDetail] 
                ON inserted.[PurchaseOrderID] = [Purchasing].[PurchaseOrderDetail].[PurchaseOrderID];

            -- Update SubTotal in PurchaseOrderHeader record. Note that this causes the 
            -- PurchaseOrderHeader trigger to fire which will update the RevisionNumber.
            UPDATE [Purchasing].[PurchaseOrderHeader]
            SET [Purchasing].[PurchaseOrderHeader].[SubTotal] = 
                (SELECT SUM([Purchasing].[PurchaseOrderDetail].[LineTotal])
                    FROM [Purchasing].[PurchaseOrderDetail]
                    WHERE [Purchasing].[PurchaseOrderHeader].[PurchaseOrderID] 
                        = [Purchasing].[PurchaseOrderDetail].[PurchaseOrderID])
            WHERE [Purchasing].[PurchaseOrderHeader].[PurchaseOrderID] 
                IN (SELECT inserted.[PurchaseOrderID] FROM inserted);

            UPDATE [Purchasing].[PurchaseOrderDetail]
            SET [Purchasing].[PurchaseOrderDetail].[ModifiedDate] = GETDATE()
            FROM inserted
            WHERE inserted.[PurchaseOrderID] = [Purchasing].[PurchaseOrderDetail].[PurchaseOrderID]
                AND inserted.[PurchaseOrderDetailID] = [Purchasing].[PurchaseOrderDetail].[PurchaseOrderDetailID];
        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
Schema Schema Purchasing
Insert Table Production.TransactionHistory Trigger iPurchaseOrderDetail
Insert Table Production.TransactionHistory Trigger uPurchaseOrderDetail
Select Table Purchasing.PurchaseOrderDetail Trigger iPurchaseOrderDetail
Select Table Purchasing.PurchaseOrderDetail Trigger uPurchaseOrderDetail
Update Table Purchasing.PurchaseOrderDetail Trigger uPurchaseOrderDetail
Select Table Purchasing.PurchaseOrderHeader Trigger iPurchaseOrderDetail
Update Table Purchasing.PurchaseOrderHeader Trigger iPurchaseOrderDetail
Update Table Purchasing.PurchaseOrderHeader Trigger uPurchaseOrderDetail
Execute Procedure dbo.uspLogError Trigger iPurchaseOrderDetail
Execute Procedure dbo.uspLogError Trigger uPurchaseOrderDetail
Execute Procedure dbo.uspPrintError Trigger iPurchaseOrderDetail
Execute Procedure dbo.uspPrintError Trigger uPurchaseOrderDetail

Dependencies[edit]

Reference Type Object Type Referencing Object Child Type Child Object
Select Table Purchasing.PurchaseOrderDetail Trigger iPurchaseOrderDetail
Select Table Purchasing.PurchaseOrderDetail Trigger uPurchaseOrderDetail
Update Table Purchasing.PurchaseOrderDetail Trigger uPurchaseOrderDetail


automatically generated[edit]

Table Purchasing.PurchaseOrderDetail
Description Individual products associated with a specific purchase order. See PurchaseOrderHeader.


Column Data Type Nullable Default Description / PK / Index
PurchaseOrderID int not null Primary key. Foreign key to PurchaseOrderHeader.PurchaseOrderID.
PK_PurchaseOrderDetail_PurchaseOrderID_PurchaseOrderDetailID
PurchaseOrderDetailID int not null Primary key. One line number per purchased product.
PK_PurchaseOrderDetail_PurchaseOrderID_PurchaseOrderDetailID
DueDate datetime not null Date the product is expected to be received.
OrderQty smallint not null Quantity ordered.
ProductID int not null Product identification number. Foreign key to Product.ProductID.
IX_PurchaseOrderDetail_ProductID
UnitPrice money not null Vendor's selling price of a single product.
LineTotal Per product subtotal. Computed as OrderQty * UnitPrice.
ReceivedQty decimal(8, 2) not null Quantity actually received from the vendor.
RejectedQty decimal(8, 2) not null Quantity rejected during inspection.
StockedQty Quantity accepted into inventory. Computed as ReceivedQty - RejectedQty.
ModifiedDate datetime not null (GETDATE()) Date and time the record was last updated.


Relation Column Referenced Column
Production.Product ProductID ProductID
Purchasing.PurchaseOrderHeader PurchaseOrderID PurchaseOrderID


Triggers Type
iPurchaseOrderDetail ON INSERT
uPurchaseOrderDetail ON UPDATE


Dependency Type Object Type Referenced Object Child Type Child Object
Schema Schema Purchasing
Insert Table Production.TransactionHistory Trigger iPurchaseOrderDetail
Insert Table Production.TransactionHistory Trigger uPurchaseOrderDetail
Select Table Purchasing.PurchaseOrderDetail Trigger uPurchaseOrderDetail
Select Table Purchasing.PurchaseOrderDetail Trigger iPurchaseOrderDetail
Update Table Purchasing.PurchaseOrderDetail Trigger uPurchaseOrderDetail
Select Table Purchasing.PurchaseOrderHeader Trigger iPurchaseOrderDetail
Update Table Purchasing.PurchaseOrderHeader Trigger iPurchaseOrderDetail
Update Table Purchasing.PurchaseOrderHeader Trigger uPurchaseOrderDetail
Execute Procedure dbo.uspLogError Trigger iPurchaseOrderDetail
Execute Procedure dbo.uspLogError Trigger uPurchaseOrderDetail
Execute Procedure dbo.uspPrintError Trigger uPurchaseOrderDetail
Execute Procedure dbo.uspPrintError Trigger iPurchaseOrderDetail


Reference Type Object Type Referencing Object Child Type Child Object
Select Table Purchasing.PurchaseOrderDetail Trigger iPurchaseOrderDetail
Select Table Purchasing.PurchaseOrderDetail Trigger uPurchaseOrderDetail
Update Table Purchasing.PurchaseOrderDetail Trigger uPurchaseOrderDetail