UFN_SALESORDER_GETAPPLICATIONSFORPAYMENT
Returns the applications for a sales order payment, pro-rated to the given amount.
Return
Return Type |
---|
table |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@SALESORDERID | uniqueidentifier | IN | |
@AMOUNT | money | IN |
Definition
Copy
CREATE function dbo.UFN_SALESORDER_GETAPPLICATIONSFORPAYMENT
(
@SALESORDERID uniqueidentifier,
@AMOUNT money -- Not used
)
returns @PAYMENTSPLITS table
(
ID uniqueidentifier,
AMOUNT money,
APPLICATIONCODE tinyint,
TYPECODE tinyint,
PROGRAMID uniqueidentifier,
EVENTID uniqueidentifier,
FEEID uniqueidentifier,
TAXID uniqueidentifier,
SALESORDERITEMID uniqueidentifier,
RESOURCEID uniqueidentifier,
VOLUNTEERTYPEID uniqueidentifier,
EVENTLOCATIONID uniqueidentifier,
MERCHANDISEPRODUCTINSTANCEID uniqueidentifier
)
as
begin
insert into @PAYMENTSPLITS
select coalesce(SALESORDERITEMTICKET.EVENTID, SALESORDERITEMTICKET.PROGRAMID),
sum(SALESORDERITEM.TOTAL),
9,
5,
SALESORDERITEMTICKET.PROGRAMID,
SALESORDERITEMTICKET.EVENTID as EVENTID,
null as FEEID,
null as TAXID,
null as SALESORDERITEMID,
null as RESOURCEID,
null as VOLUNTEERTYPEID,
null as EVENTLOCATIONID,
null as MERCHANDISEPRODUCTINSTANCEID
from dbo.SALESORDERITEMTICKET
inner join dbo.SALESORDERITEM on SALESORDERITEMTICKET.ID = SALESORDERITEM.ID
where SALESORDERID = @SALESORDERID and SALESORDERITEM.TYPECODE = 0 -- Ticket
group by SALESORDERITEMTICKET.EVENTID, SALESORDERITEMTICKET.PROGRAMID
union all
select SALESORDERITEM.ID,
SALESORDERITEM.TOTAL as AMOUNT,
0,
0,
null as PROGRAMID,
null as EVENTID,
null as FEEID,
null as TAXID,
SALESORDERITEM.ID as SALESORDERITEMID,
null as RESOURCEID,
null as VOLUNTEERTYPEID,
null as EVENTLOCATIONID,
null as MERCHANDISEPRODUCTINSTANCEID
from dbo.SALESORDERITEM
where SALESORDERITEM.SALESORDERID = @SALESORDERID and SALESORDERITEM.TYPECODE = 2 -- Donation
union all
select SALESORDERITEM.ID,
SALESORDERITEM.TOTAL,
5,
2,
null as PROGRAMID,
null as EVENTID,
null as FEEID,
null as TAXID,
SALESORDERITEM.ID as SALESORDERITEMID,
null as RESOURCEID,
null as VOLUNTEERTYPEID,
null as EVENTLOCATIONID,
null as MERCHANDISEPRODUCTINSTANCEID
from dbo.SALESORDERITEM
where SALESORDERITEM.SALESORDERID = @SALESORDERID and SALESORDERITEM.TYPECODE = 1 -- Membership
union all
select SALESORDERITEMFEE.FEEID,
sum(SALESORDERITEM.TOTAL),
9,
6,
null,
null as EVENTID,
SALESORDERITEMFEE.FEEID,
null,
null as SALESORDERITEMID,
null as RESOURCEID,
null as VOLUNTEERTYPEID,
null as EVENTLOCATIONID,
null as MERCHANDISEPRODUCTINSTANCEID
from dbo.SALESORDERITEMFEE
inner join dbo.SALESORDERITEM on SALESORDERITEMFEE.ID = SALESORDERITEM.ID
where SALESORDERITEM.SALESORDERID = @SALESORDERID and SALESORDERITEM.TYPECODE = 3 -- Fee
group by SALESORDERITEMFEE.FEEID
union all
select SALESORDERITEM.ID,
SALESORDERITEM.TOTAL,
9,
7,
null,
null as EVENTID,
null,
(select top 1 SALESORDERITEMTAX.TAXID from SALESORDERITEMTAX
where SALESORDERITEMTAX.TAXITEMID = SALESORDERITEM.ID) as TAXID,
null as SALESORDERITEMID,
null as RESOURCEID,
null as VOLUNTEERTYPEID,
null as EVENTLOCATIONID,
null as MERCHANDISEPRODUCTINSTANCEID
from dbo.SALESORDERITEM
where SALESORDERITEM.SALESORDERID = @SALESORDERID
and SALESORDERITEM.TYPECODE = 4 -- Tax
union all
select SALESORDERITEM.ID,
SALESORDERITEM.TOTAL,
1,
1,
null,
null as EVENTID,
null,
null,
SALESORDERITEM.ID as SALESORDERITEMID,
null as RESOURCEID,
null as VOLUNTEERTYPEID,
null as EVENTLOCATIONID,
null as MERCHANDISEPRODUCTINSTANCEID
from dbo.SALESORDERITEM
where
SALESORDERITEM.SALESORDERID = @SALESORDERID
and SALESORDERITEM.TOTAL > 0
and SALESORDERITEM.TYPECODE = 6 -- Event Registration
union all
select SALESORDERITEM.ID,
SALESORDERITEM.TOTAL,
9, /* Application type: Ticket */
10, /* Type code: Supply/Equipment resource */
null,
null as EVENTID,
null,
null,
SALESORDERITEM.ID as SALESORDERITEMID,
ITINERARYRESOURCE.RESOURCEID as RESOURCEID,
null as VOLUNTEERTYPEID,
null as EVENTLOCATIONID,
null as MERCHANDISEPRODUCTINSTANCEID
from dbo.SALESORDERITEM
inner join dbo.SALESORDERITEMITINERARYRESOURCE
on SALESORDERITEMITINERARYRESOURCE.SALESORDERITEMID = SALESORDERITEM.ID
inner join dbo.ITINERARYRESOURCE
on ITINERARYRESOURCE.ID = SALESORDERITEMITINERARYRESOURCE.ITINERARYRESOURCEID
where SALESORDERITEM.SALESORDERID = @SALESORDERID and SALESORDERITEM.TYPECODE = 8 -- Itinerary Supply/Equipment Resource
union all
select SALESORDERITEM.ID,
SALESORDERITEM.TOTAL,
9, /* Application type: Ticket */
10, /* Type code: Supply/Equipment resource */
null,
null as EVENTID,
null,
null,
SALESORDERITEM.ID as SALESORDERITEMID,
ITINERARYITEMRESOURCE.RESOURCEID as RESOURCEID,
null as VOLUNTEERTYPEID,
null as EVENTLOCATIONID,
null as MERCHANDISEPRODUCTINSTANCEID
from dbo.SALESORDERITEM
inner join dbo.SALESORDERITEMITINERARYITEMRESOURCE
on SALESORDERITEMITINERARYITEMRESOURCE.SALESORDERITEMID = SALESORDERITEM.ID
inner join dbo.ITINERARYITEMRESOURCE
on ITINERARYITEMRESOURCE.ID = SALESORDERITEMITINERARYITEMRESOURCE.ITINERARYITEMRESOURCEID
where SALESORDERITEM.SALESORDERID = @SALESORDERID and SALESORDERITEM.TYPECODE = 9 -- Itinerary Item Supply/Equipment Resource
union all
select SALESORDERITEM.ID,
SALESORDERITEM.TOTAL,
9, /* Application type: Ticket */
11, /* Type code: Staffing resource */
null,
null as EVENTID,
null,
null,
SALESORDERITEM.ID as SALESORDERITEMID,
null as RESOURCEID,
ITINERARYSTAFFRESOURCE.VOLUNTEERTYPEID as VOLUNTEERTYPEID,
null as EVENTLOCATIONID,
null as MERCHANDISEPRODUCTINSTANCEID
from dbo.SALESORDERITEM
inner join dbo.SALESORDERITEMITINERARYSTAFFRESOURCE
on SALESORDERITEMITINERARYSTAFFRESOURCE.SALESORDERITEMID = SALESORDERITEM.ID
inner join dbo.ITINERARYSTAFFRESOURCE
on ITINERARYSTAFFRESOURCE.ID = SALESORDERITEMITINERARYSTAFFRESOURCE.ITINERARYSTAFFRESOURCEID
where SALESORDERITEM.SALESORDERID = @SALESORDERID and SALESORDERITEM.TYPECODE = 10 -- Itinerary Staffing Resource
union all
select SALESORDERITEM.ID,
SALESORDERITEM.TOTAL,
9, /* Application type: Ticket */
11, /* Type code: Staffing resource */
null,
null as EVENTID,
null,
null,
SALESORDERITEM.ID as SALESORDERITEMID,
null as RESOURCEID,
ITINERARYITEMSTAFFRESOURCE.VOLUNTEERTYPEID as VOLUNTEERTYPEID,
null as EVENTLOCATIONID,
null as MERCHANDISEPRODUCTINSTANCEID
from dbo.SALESORDERITEM
inner join dbo.SALESORDERITEMITINERARYITEMSTAFFRESOURCE
on SALESORDERITEMITINERARYITEMSTAFFRESOURCE.SALESORDERITEMID = SALESORDERITEM.ID
inner join dbo.ITINERARYITEMSTAFFRESOURCE
on ITINERARYITEMSTAFFRESOURCE.ID = SALESORDERITEMITINERARYITEMSTAFFRESOURCE.ITINERARYITEMSTAFFRESOURCEID
where SALESORDERITEM.SALESORDERID = @SALESORDERID and SALESORDERITEM.TYPECODE = 11 -- Itinerary Item Staffing Resource
union all
select
SALESORDERITEM.ID,
SALESORDERITEM.TOTAL,
9, -- Application type: Ticket
14, -- Type code: Facility
null as PROGRAMID,
null as EVENTID,
null as FEEID,
null as TAXID,
SALESORDERITEM.ID as SALESORDERITEMID,
null as RESOURCEID,
null as VOLUNTEERTYPEID,
SALESORDERITEMFACILITY.EVENTLOCATIONID,
null as MERCHANDISEPRODUCTINSTANCEID
from
dbo.SALESORDERITEM
inner join
dbo.SALESORDERITEMFACILITY on SALESORDERITEMFACILITY.ID = SALESORDERITEM.ID
where
SALESORDERITEM.SALESORDERID = @SALESORDERID and SALESORDERITEM.TYPECODE = 7 -- Facility
union all
select
SALESORDERITEM.ID,
SALESORDERITEM.TOTAL,
16, -- Application type: Merchandise
16, -- Type code: Merchandise
null as PROGRAMID,
null as EVENTID,
null as FEEID,
null as TAXID,
SALESORDERITEM.ID as SALESORDERITEMID,
null as RESOURCEID,
null as VOLUNTEERTYPEID,
null as EVENTLOCATIONID,
SALESORDERITEMMERCHANDISE.MERCHANDISEPRODUCTINSTANCEID as MERCHANDISEPRODUCTINSTANCEID
from
dbo.SALESORDERITEM
inner join
dbo.SALESORDERITEMMERCHANDISE on SALESORDERITEMMERCHANDISE.ID = SALESORDERITEM.ID
where
SALESORDERITEM.SALESORDERID = @SALESORDERID and SALESORDERITEM.TYPECODE = 14 -- Merchandise
--Add additional sales order items here
return;
end