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

From dbscript Online Help
Jump to: navigation, search
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 ===
 
=== Columns ===
Line 20: Line 18:
 
| '''Default
 
| '''Default
 
| '''Description
 
| '''Description
+
 
 
|- valign="top"
 
|- valign="top"
 
| PurchaseOrderID
 
| PurchaseOrderID
Line 94: Line 92:
 
| '''Primary Key
 
| '''Primary Key
 
| '''Columns
 
| '''Columns
|-
+
|- valign="top"
 
| PK_PurchaseOrderDetail_PurchaseOrderID_PurchaseOrderDetailID
 
| PK_PurchaseOrderDetail_PurchaseOrderID_PurchaseOrderDetailID
 
| PurchaseOrderID, PurchaseOrderDetailID
 
| PurchaseOrderID, PurchaseOrderDetailID
Line 105: Line 103:
 
| '''Type
 
| '''Type
 
| '''Columns
 
| '''Columns
+
 
|-
+
|- valign="top"
 
| IX_PurchaseOrderDetail_ProductID
 
| IX_PurchaseOrderDetail_ProductID
 
|  
 
|  
Line 118: Line 116:
 
| '''Expression
 
| '''Expression
 
| '''Description
 
| '''Description
+
 
|-
+
|- valign="top"
 
| CK_PurchaseOrderDetail_OrderQty
 
| CK_PurchaseOrderDetail_OrderQty
 
| ([OrderQty]>(0))
 
| ([OrderQty]>(0))
 
| Check constraint [OrderQty] > (0)
 
| Check constraint [OrderQty] > (0)
|-
+
|- valign="top"
 
| CK_PurchaseOrderDetail_ReceivedQty
 
| CK_PurchaseOrderDetail_ReceivedQty
 
| ([ReceivedQty]>=(0.00))
 
| ([ReceivedQty]>=(0.00))
 
| Check constraint [ReceivedQty] >= (0.00)
 
| Check constraint [ReceivedQty] >= (0.00)
|-
+
|- valign="top"
 
| CK_PurchaseOrderDetail_RejectedQty
 
| CK_PurchaseOrderDetail_RejectedQty
 
| ([RejectedQty]>=(0.00))
 
| ([RejectedQty]>=(0.00))
 
| Check constraint [RejectedQty] >= (0.00)
 
| Check constraint [RejectedQty] >= (0.00)
|-
+
|- valign="top"
 
| CK_PurchaseOrderDetail_UnitPrice
 
| CK_PurchaseOrderDetail_UnitPrice
 
| ([UnitPrice]>=(0.00))
 
| ([UnitPrice]>=(0.00))
Line 143: 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 157: Line 155:
 
{| 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
+
==== Trigger iPurchaseOrderDetail ====
 
<pre>
 
<pre>
 
CREATE TRIGGER [Purchasing].[iPurchaseOrderDetail] ON [Purchasing].[PurchaseOrderDetail]  
 
CREATE TRIGGER [Purchasing].[iPurchaseOrderDetail] ON [Purchasing].[PurchaseOrderDetail]  
Line 225: Line 223:
 
END;
 
END;
 
</pre>
 
</pre>
Trigger uPurchaseOrderDetail
+
 
 +
==== Trigger uPurchaseOrderDetail ====
 
<pre>
 
<pre>
 
CREATE TRIGGER [Purchasing].[uPurchaseOrderDetail] ON [Purchasing].[PurchaseOrderDetail]  
 
CREATE TRIGGER [Purchasing].[uPurchaseOrderDetail] ON [Purchasing].[PurchaseOrderDetail]  
Line 294: Line 293:
 
END;
 
END;
 
</pre>
 
</pre>
+
 
 
=== References ===
 
=== References ===
 
{| border="1" cellpadding="5" cellspacing="0" style="border-collapse:collapse"
 
{| border="1" cellpadding="5" cellspacing="0" style="border-collapse:collapse"
Line 305: Line 304:
 
| '''Child Object
 
| '''Child Object
  
|-
+
|- valign="top"
 
| Schema
 
| Schema
 
| Schema
 
| Schema
Line 312: Line 311:
 
|  
 
|  
 
|  
 
|  
|-
+
|- valign="top"
 
| Insert
 
| Insert
 
| Table
 
| Table
Line 319: Line 318:
 
| Trigger
 
| Trigger
 
| iPurchaseOrderDetail
 
| iPurchaseOrderDetail
|-
+
|- valign="top"
 
| Insert
 
| Insert
 
| Table
 
| Table
Line 326: Line 325:
 
| Trigger
 
| Trigger
 
| uPurchaseOrderDetail
 
| uPurchaseOrderDetail
|-
+
|- valign="top"
 
| Select
 
| Select
 
| Table
 
| Table
Line 333: Line 332:
 
| Trigger
 
| Trigger
 
| uPurchaseOrderDetail
 
| uPurchaseOrderDetail
|-
+
|- valign="top"
 
| Select
 
| Select
 
| Table
 
| Table
Line 340: Line 339:
 
| Trigger
 
| Trigger
 
| iPurchaseOrderDetail
 
| iPurchaseOrderDetail
|-
+
|- valign="top"
 
| Update
 
| Update
 
| Table
 
| Table
Line 347: Line 346:
 
| Trigger
 
| Trigger
 
| uPurchaseOrderDetail
 
| uPurchaseOrderDetail
|-
+
|- valign="top"
 
| Select
 
| Select
 
| Table
 
| Table
Line 354: Line 353:
 
| Trigger
 
| Trigger
 
| iPurchaseOrderDetail
 
| iPurchaseOrderDetail
|-
+
|- valign="top"
 
| Update
 
| Update
 
| Table
 
| Table
Line 361: Line 360:
 
| Trigger
 
| Trigger
 
| iPurchaseOrderDetail
 
| iPurchaseOrderDetail
|-
+
|- valign="top"
 
| Update
 
| Update
 
| Table
 
| Table
Line 368: Line 367:
 
| Trigger
 
| Trigger
 
| uPurchaseOrderDetail
 
| uPurchaseOrderDetail
|-
+
|- valign="top"
 
| Execute
 
| Execute
 
| Procedure
 
| Procedure
Line 375: Line 374:
 
| Trigger
 
| Trigger
 
| iPurchaseOrderDetail
 
| iPurchaseOrderDetail
|-
+
|- valign="top"
 
| Execute
 
| Execute
 
| Procedure
 
| Procedure
Line 382: Line 381:
 
| Trigger
 
| Trigger
 
| uPurchaseOrderDetail
 
| uPurchaseOrderDetail
|-
+
|- valign="top"
 
| Execute
 
| Execute
 
| Procedure
 
| Procedure
Line 389: Line 388:
 
| Trigger
 
| Trigger
 
| uPurchaseOrderDetail
 
| uPurchaseOrderDetail
|-
+
|- valign="top"
 
| Execute
 
| Execute
 
| Procedure
 
| Procedure
Line 408: Line 407:
 
| '''Child Object
 
| '''Child Object
  
|-
+
|- valign="top"
 
| Select
 
| Select
 
| Table
 
| Table
Line 415: Line 414:
 
| Trigger
 
| Trigger
 
| iPurchaseOrderDetail
 
| iPurchaseOrderDetail
|-
+
|- valign="top"
 
| Select
 
| Select
 
| Table
 
| Table
Line 422: Line 421:
 
| Trigger
 
| Trigger
 
| uPurchaseOrderDetail
 
| uPurchaseOrderDetail
|-
+
|- valign="top"
 
| Update
 
| Update
 
| Table
 
| Table

Revision as of 23:17, 23 June 2010

wikibot

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

Columns

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

Primary Key Columns
PK_PurchaseOrderDetail_PurchaseOrderID_PurchaseOrderDetailID PurchaseOrderID, PurchaseOrderDetailID

Indexes

Index Type Columns
IX_PurchaseOrderDetail_ProductID ProductID

Check Constraints

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

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

Triggers

Trigger Type
iPurchaseOrderDetail ON INSERT
uPurchaseOrderDetail ON UPDATE

Trigger iPurchaseOrderDetail

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

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

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

Dependencies

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

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