USP_DATAFORMTEMPLATE_VIEW_CREDITORDERVIEW
The load procedure used by the view dataform template "Credit Order View"
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | The input ID parameter used to load the fields defined on the form. |
@DATALOADED | bit | INOUT | Output parameter indicating whether or not data was actually loaded. |
@ITEMS | xml | INOUT | ITEMS |
@TOTAL | money | INOUT | Order total |
@PAYMENTS | xml | INOUT | PAYMENTS |
@TAXES | xml | INOUT | TAXES |
@TAXESBYITEM | xml | INOUT | TAXESBYITEM |
@ORDERDISCOUNTS | money | INOUT | Discounts |
@OTHERPAYMENTMETHODS | xml | INOUT | OTHERPAYMENTMETHODS |
@TRANSACTIONID | uniqueidentifier | INOUT | TRANSACTIONID |
@TIMESTAMP | bigint | INOUT | TIMESTAMP |
@CONSTITUENTID | uniqueidentifier | INOUT | |
@CONSTITUENTNAME | nvarchar(154) | INOUT |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_VIEW_CREDITORDERVIEW
(
@ID uniqueidentifier,
@DATALOADED bit = 0 output,
@ITEMS xml = null output,
@TOTAL money = null output,
@PAYMENTS xml = null output,
@TAXES xml = null output,
@TAXESBYITEM xml = null output,
@ORDERDISCOUNTS money = null output,
@OTHERPAYMENTMETHODS xml = null output,
@TRANSACTIONID uniqueidentifier = null output,
@TIMESTAMP bigint = null output,
@CONSTITUENTID uniqueidentifier = null output,
@CONSTITUENTNAME nvarchar(154) = null output
)
as
set nocount on;
set @DATALOADED = 0;
--Error if it's a group sales order
if exists (select * from dbo.RESERVATION where [ID] = @ID) begin
raiserror('The selected order is a group sales order. Group sales orders may not be refunded.', 13, 1);
return 1;
end
select
@ITEMS = dbo.UFN_CREDIT_GETSALESORDERITEMS_TOITEMLISTXML(@ID),
@PAYMENTS = dbo.UFN_CREDIT_GETORDERPAYMENTS_2_TOITEMLISTXML(@ID),
@TAXES = dbo.UFN_CREDIT_GETSALESORDERTAXITEMS_TOITEMLISTXML(@ID),
@TAXESBYITEM = dbo.UFN_CREDIT_GETTAXES_TOITEMLISTXML(@ID),
@TIMESTAMP = [TSLONG],
@CONSTITUENTID = SALESORDER.CONSTITUENTID,
@CONSTITUENTNAME = dbo.UFN_CONSTITUENT_BUILDNAME(SALESORDER.CONSTITUENTID)
from dbo.SALESORDER
where ID = @ID
select
@ORDERDISCOUNTS = isnull(sum([SALESORDERITEMORDERDISCOUNTDETAIL].[AMOUNT]), 0)
from
dbo.[SALESORDERITEM]
left join
dbo.CREDITITEM_EXT as EXT on EXT.[SALESORDERITEMID] = [SALESORDERITEM].[ID]
inner join
dbo.[SALESORDERITEMORDERDISCOUNTDETAIL] on [SALESORDERITEMORDERDISCOUNTDETAIL].[SALESORDERITEMID] = [SALESORDERITEM].[ID]
where
[SALESORDERITEM].[SALESORDERID] = @ID
and EXT.[ID] is null
select
@TOTAL = sum(T.item.value('(AMOUNTPAID)[1]','decimal(10,4)'))
from @PAYMENTS.nodes('/PAYMENTS/ITEM') T(item);
select
@OTHERPAYMENTMETHODS =
(select
[ID],
[DESCRIPTION]
from dbo.[OTHERPAYMENTMETHODCODE]
for xml raw ('ITEM'), type, elements, root('OTHERPAYMENTMETHODS'), BINARY BASE64)
set @TRANSACTIONID = @ID;
set @DATALOADED = 1;
--Error if there are no items to return on this order
if (select count(*) from @ITEMS.nodes('/ITEMS/ITEM') T(item)) < 1 begin
raiserror('The selected order has no items to refund.', 13, 1);
return 1;
end
return 0;