USP_DATAFORMTEMPLATE_ADD_DAILYSALEITEMMEMBERSHIPFASTTRACK

The save procedure used by the add dataform template "Daily Sale Item Membership Fast Track Add Data Form".

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier INOUT The output parameter indicating the ID of the record added.
@CURRENTAPPUSERID uniqueidentifier IN Input parameter indicating the ID of the current user.
@CHANGEAGENTID uniqueidentifier IN Input parameter indicating the ID of the change agent invoking the procedure.
@SALESORDERID uniqueidentifier IN Input parameter indicating the context ID for the record being added.
@LASTNAME nvarchar(100) IN Last name
@FIRSTNAME nvarchar(50) IN First name
@MIDDLENAME nvarchar(50) IN Middle name
@GENDERCODE tinyint IN Gender
@BIRTHDATE UDT_FUZZYDATE IN Birth date
@ADDRESS_COUNTRYID uniqueidentifier IN Country
@ADDRESS_STATEID uniqueidentifier IN State
@ADDRESS_ADDRESSBLOCK nvarchar(150) IN Address
@ADDRESS_CITY nvarchar(50) IN City
@ADDRESS_POSTCODE nvarchar(12) IN ZIP
@PHONE_NUMBER nvarchar(100) IN Phone number
@EMAILADDRESS_EMAILADDRESS UDT_EMAILADDRESS IN Email address
@HASSPOUSE bit IN Add spouse to membership
@SPOUSEID uniqueidentifier IN Patron
@SPOUSE_LASTNAME nvarchar(100) IN Last name
@SPOUSE_FIRSTNAME nvarchar(50) IN First name
@SPOUSE_MIDDLENAME nvarchar(50) IN Middle name
@SPOUSE_GENDERCODE tinyint IN Gender
@SPOUSE_BIRTHDATE UDT_FUZZYDATE IN Birth date
@SPOUSE_RECIPROCALTYPECODEID uniqueidentifier IN Reciprocal relationship type
@SPOUSE_RELATIONSHIPTYPECODEID uniqueidentifier IN Relationship type
@OTHERMEMBERS xml IN Other members
@ORDERCONSTITUENTID uniqueidentifier IN
@MEMBERSHIPID uniqueidentifier IN Membership
@MEMBERSHIPPROGRAMID uniqueidentifier IN Program
@MEMBERSHIPLEVELID uniqueidentifier IN Level
@MEMBERSHIPLEVELTERMID uniqueidentifier IN Term
@MEMBERSHIPLEVELTYPECODEID uniqueidentifier IN Type
@NUMBEROFCHILDREN smallint IN No. of children
@SPOUSE_PHONE_NUMBER nvarchar(100) IN Phone number
@SPOUSE_EMAILADDRESS UDT_EMAILADDRESS IN Email address

Definition

Copy

CREATE procedure dbo.USP_DATAFORMTEMPLATE_ADD_DAILYSALEITEMMEMBERSHIPFASTTRACK
(
  @ID uniqueidentifier = null output,
  @CURRENTAPPUSERID uniqueidentifier,
  @CHANGEAGENTID    uniqueidentifier = null,
  @SALESORDERID     uniqueidentifier,

  -- Primary member variables
  @LASTNAME     nvarchar(100),
  @FIRSTNAME    nvarchar(50) = '',
  @MIDDLENAME   nvarchar(50) = '',
  @GENDERCODE   tinyint = 0,
  @BIRTHDATE    dbo.UDT_FUZZYDATE = '00000000',

  -- Primary address variables
  @ADDRESS_COUNTRYID          uniqueidentifier = null,
  @ADDRESS_STATEID            uniqueidentifier = null,
  @ADDRESS_ADDRESSBLOCK       nvarchar(150) = '',
  @ADDRESS_CITY               nvarchar(50) = '',
  @ADDRESS_POSTCODE                        nvarchar(12) = '',
  @PHONE_NUMBER               nvarchar(100) = '',
  @EMAILADDRESS_EMAILADDRESS  dbo.UDT_EMAILADDRESS = '',                        

  -- Spouse variables
  @HASSPOUSE                      bit = 0,
    @SPOUSEID                                        uniqueidentifier = null,
  @SPOUSE_LASTNAME                nvarchar(100) = '',
  @SPOUSE_FIRSTNAME               nvarchar(50) = '',
  @SPOUSE_MIDDLENAME              nvarchar(50) = '',
  @SPOUSE_GENDERCODE              tinyint = 0,
  @SPOUSE_BIRTHDATE               dbo.UDT_FUZZYDATE = '00000000',
    @SPOUSE_RECIPROCALTYPECODEID    uniqueidentifier = null,
    @SPOUSE_RELATIONSHIPTYPECODEID  uniqueidentifier = null,

  -- Other member variable
  @OTHERMEMBERS xml = null,

  -- Membership variables
  @ORDERCONSTITUENTID         uniqueidentifier = null,
    @MEMBERSHIPID               uniqueidentifier = null,
    @MEMBERSHIPPROGRAMID        uniqueidentifier = null,
    @MEMBERSHIPLEVELID          uniqueidentifier = null,
    @MEMBERSHIPLEVELTERMID      uniqueidentifier = null,
    @MEMBERSHIPLEVELTYPECODEID  uniqueidentifier = null,
    @NUMBEROFCHILDREN           smallint = 0,
    @SPOUSE_PHONE_NUMBER nvarchar(100) = null,
    @SPOUSE_EMAILADDRESS  dbo.UDT_EMAILADDRESS = null
)
as

set nocount on;

declare     
    @CONSTITUENTID                        uniqueidentifier = @ORDERCONSTITUENTID,
    @MAIDENNAME                           nvarchar(100) = '',
    @NICKNAME                             nvarchar(50) = '',
    @TITLECODEID                          uniqueidentifier = null,
    @SUFFIXCODEID                         uniqueidentifier = null,
    @ADDRESS_ADDRESSTYPECODEID            uniqueidentifier = null,
    @ADDRESS_DONOTMAIL                    bit = 0,
    @PHONE_PHONETYPECODEID                uniqueidentifier = null,
    @EMAILADDRESS_EMAILADDRESSTYPECODEID  uniqueidentifier = null,
    @MARITALSTATUSCODEID                  uniqueidentifier = null,
    @SKIP_ADDING_SECURITYGROUPS           bit=0,

    --Spouse Variables
    @EXISTINGSPOUSE                                        bit = 0,
    @SPOUSE_MAIDENNAME                                  nvarchar(100) = '',
    @SPOUSE_NICKNAME                                    nvarchar(50) = '',
    @SPOUSE_TITLECODEID                                  uniqueidentifier = null,
    @SPOUSE_SUFFIXCODEID                              uniqueidentifier = null,
    @COPYPRIMARYINFORMATION                            bit = 1,
    @SPOUSE_STARTDATE                                    datetime = null,                    
    @PRIMARYSOFTCREDITRELATIONSHIPEXISTS    bit = 0,
    @PRIMARYSOFTCREDITMATCHFACTOR           decimal(5,2) = 100,
    @RECIPROCALSOFTCREDITRELATIONSHIPEXISTS bit = 0,
    @RECIPROCALSOFTCREDITMATCHFACTOR        decimal(5,2) = 100,

    --Organization variables
    @ORGANIZATIONID                                      uniqueidentifier = null,
    @EXISTINGORGANIZATION                            bit = 0,
    @ORGANIZATION_NAME                                nvarchar(100) = '',
    @ORGANIZATION_ADDRESSTYPECODEID              uniqueidentifier = null,
    @ORGANIZATION_COUNTRYID                          uniqueidentifier = null,
    @ORGANIZATION_STATEID                            uniqueidentifier = null,
    @ORGANIZATION_ADDRESSBLOCK                    nvarchar(150) = '',
    @ORGANIZATION_CITY                                nvarchar(50) = '',
    @ORGANIZATION_POSTCODE                          nvarchar(12) = '',
    @ORGANIZATION_DONOTMAIL                          bit = 0,
    @ORGANIZATION_PHONETYPECODEID                uniqueidentifier = null,
    @ORGANIZATION_NUMBER                            nvarchar(100) = '',                    
    @ORGANIZATION_RECIPROCALTYPECODEID        uniqueidentifier = null,
    @ORGANIZATION_RELATIONSHIPTYPECODEID    uniqueidentifier = null,
    @ORGANIZATION_STARTDATE                          datetime = null,
    @ORGANIZATION_ENDDATE                            datetime = null,
    @ISCONTACT                                            bit = 0,
    @ISPRIMARYCONTACT                                  bit = 0,
    @CONTACTTYPECODEID                                uniqueidentifier = null,
    @POSITION                                              nvarchar(50) = '',    
    @ISMATCHINGGIFTRELATIONSHIP                    bit = 0,

    -- Additional spouse variables
    @RECIPROCALRECOGNITIONTYPECODEID  uniqueidentifier = null,
    @PRIMARYRECOGNITIONTYPECODEID            uniqueidentifier = null,

    -- Address Validation
    @ADDRESS_OMITFROMVALIDATION           bit = 0,
    @ADDRESS_CART                         nvarchar(10) = '',
    @ADDRESS_DPC                          nvarchar(8) = '',
    @ADDRESS_LOT                          nvarchar(5) = '',
    @ADDRESS_COUNTYCODEID                 uniqueidentifier = null,
    @ADDRESS_CONGRESSIONALDISTRICTCODEID  uniqueidentifier = null,
    @ADDRESS_LASTVALIDATIONATTEMPTDATE    datetime = null,
    @ADDRESS_VALIDATIONMESSAGE            nvarchar(100) = '',
    @ADDRESS_CERTIFICATIONDATA            integer = 0,

    @ORGANIZATION_OMITFROMVALIDATION          bit = 0,
    @ORGANIZATION_CART                        nvarchar(10) = '',
    @ORGANIZATION_DPC                         nvarchar(8) = '',
    @ORGANIZATION_LOT                         nvarchar(5) = '',
    @ORGANIZATION_COUNTYCODEID                uniqueidentifier = null,
    @ORGANIZATION_CONGRESSIONALDISTRICTCODEID uniqueidentifier = null,
    @ORGANIZATION_LASTVALIDATIONATTEMPTDATE   datetime = null,
    @ORGANIZATION_VALIDATIONMESSAGE           nvarchar(100) = '',
    @ORGANIZATION_CERTIFICATIONDATA           integer = 0,

    --Individual's relationship variable
    @ISSPOUSERELATIONSHIP bit = 1,

    -- Household variables
    @HOUSEHOLDCOPYPRIMARYCONTACTINFO    bit = 0,
    @ADDRESS_DONOTMAILREASONCODEID      uniqueidentifier = null,
    @ORGANIZATION_DONOTMAILREASONCODEID uniqueidentifier = null,

    -- relationship (employee/employer) job info
    @JOBCATEGORYCODEID              uniqueidentifier = null,
    @CAREERLEVELCODEID              uniqueidentifier = null,
    @ADDRESS_INFOSOURCECODEID       uniqueidentifier = null,
    @ORGANIZATION_INFOSOURCECODEID  uniqueidentifier = null,

    @TITLE2CODEID         uniqueidentifier = null,
    @SUFFIX2CODEID        uniqueidentifier = null,
    @SPOUSE_TITLE2CODEID  uniqueidentifier = null,
    @SPOUSE_SUFFIX2CODEID uniqueidentifier = null,
    @SKIP_ADDING_SITES    bit=0

declare @EXPIRATIONDATE datetime = [dbo].[UFN_MEMBERSHIP_CALCULATEEXPIRATIONDATEBYLEVEL](@MEMBERSHIPLEVELID, @MEMBERSHIPLEVELTERMID, getdate())

declare @OTHERMEMBERSTALBE table (
  LASTNAME      nvarchar(100),
  FIRSTNAME     nvarchar(50) default '',
  MIDDLENAME    nvarchar(50) default '',
  GENDERCODE    tinyint default 0,
  BIRTHDATE     dbo.UDT_FUZZYDATE default '00000000',
  CONSTITUENTID uniqueidentifier default null,
  MEMBERID uniqueidentifier default newid(),
  EMAILADDRESS dbo.UDT_EMAILADDRESS,
  PHONENUMBER nvarchar(100)
)  

declare @OTHERLASTNAME      nvarchar(100)
declare @OTHERFIRSTNAME     nvarchar(50) = ''
declare @OTHERMIDDLENAME    nvarchar(50) = ''
declare @OTHERGENDERCODE    tinyint = 0
declare @OTHERBIRTHDATE     dbo.UDT_FUZZYDATE = '00000000'
declare @OTHERCONSTITUENTID uniqueidentifier
declare @OTHERPHONENUMBER nvarchar(100)
declare @OTHEREMAILADDRESS dbo.UDT_EMAILADDRESS

declare @MEMBERS          xml
declare @PRIMARYMEMBERID  uniqueidentifier = newid()
declare @SPOUSEMEMBERID   uniqueidentifier = newid()
declare @CARDSALLOWED     smallint

if @ID is null
    set @ID = newid()

if @CHANGEAGENTID is null  
    exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output

declare @CURRENTDATE datetime
set @CURRENTDATE = getdate()

begin try
  -- Save primary member and spouse
  if @CONSTITUENTID  is null
    exec dbo.USP_INDIVIDUALSPOUSEBUSINESS_ADD
      @CONSTITUENTID output,
      @CURRENTAPPUSERID,
      '9d3aff90-42d0-4db0-a4c1-703d25fd1902',
      @CHANGEAGENTID,
      @LASTNAME,
      @FIRSTNAME,
      @MIDDLENAME,
      @MAIDENNAME,
      @NICKNAME,
      @TITLECODEID,
      @SUFFIXCODEID,
      @GENDERCODE,
      @BIRTHDATE,
      @ADDRESS_ADDRESSTYPECODEID,
      @ADDRESS_DONOTMAIL,
      @ADDRESS_COUNTRYID,
      @ADDRESS_STATEID,
      @ADDRESS_ADDRESSBLOCK,
      @ADDRESS_CITY,
      @ADDRESS_POSTCODE,
      @PHONE_PHONETYPECODEID,
      @PHONE_NUMBER,
      @EMAILADDRESS_EMAILADDRESSTYPECODEID,
      @EMAILADDRESS_EMAILADDRESS,
      @MARITALSTATUSCODEID,
      @SKIP_ADDING_SECURITYGROUPS,
      @SPOUSEID,
      @EXISTINGSPOUSE,
      @SPOUSE_LASTNAME,
      @SPOUSE_FIRSTNAME,
      @SPOUSE_MIDDLENAME,
      @SPOUSE_MAIDENNAME,
      @SPOUSE_NICKNAME,
      @SPOUSE_TITLECODEID,
      @SPOUSE_SUFFIXCODEID,
      @SPOUSE_GENDERCODE,
      @SPOUSE_BIRTHDATE,
      @SPOUSE_RECIPROCALTYPECODEID,
      @SPOUSE_RELATIONSHIPTYPECODEID,
      @COPYPRIMARYINFORMATION,
      @SPOUSE_STARTDATE,
      @PRIMARYSOFTCREDITRELATIONSHIPEXISTS,
      @PRIMARYSOFTCREDITMATCHFACTOR,
      @RECIPROCALSOFTCREDITRELATIONSHIPEXISTS,
      @RECIPROCALSOFTCREDITMATCHFACTOR,
      @ORGANIZATIONID,
      @EXISTINGORGANIZATION,
      @ORGANIZATION_NAME,
      @ORGANIZATION_ADDRESSTYPECODEID,
      @ORGANIZATION_COUNTRYID,
      @ORGANIZATION_STATEID,
      @ORGANIZATION_ADDRESSBLOCK,
      @ORGANIZATION_CITY,
      @ORGANIZATION_POSTCODE,
      @ORGANIZATION_DONOTMAIL,
      @ORGANIZATION_PHONETYPECODEID,
      @ORGANIZATION_NUMBER,
      @ORGANIZATION_RECIPROCALTYPECODEID,
      @ORGANIZATION_RELATIONSHIPTYPECODEID,
      @ORGANIZATION_STARTDATE,
      @ORGANIZATION_ENDDATE,
      @ISCONTACT,
      @ISPRIMARYCONTACT,
      @CONTACTTYPECODEID,
      @POSITION,
      @ISMATCHINGGIFTRELATIONSHIP,
      @RECIPROCALRECOGNITIONTYPECODEID,
      @PRIMARYRECOGNITIONTYPECODEID,
      @ADDRESS_OMITFROMVALIDATION,
      @ADDRESS_CART,
      @ADDRESS_DPC,
      @ADDRESS_LOT,
      @ADDRESS_COUNTYCODEID,
      @ADDRESS_CONGRESSIONALDISTRICTCODEID,
      @ADDRESS_LASTVALIDATIONATTEMPTDATE,
      @ADDRESS_VALIDATIONMESSAGE,
      @ADDRESS_CERTIFICATIONDATA,
      @ORGANIZATION_OMITFROMVALIDATION,
      @ORGANIZATION_CART,
      @ORGANIZATION_DPC,
      @ORGANIZATION_LOT,
      @ORGANIZATION_COUNTYCODEID,
      @ORGANIZATION_CONGRESSIONALDISTRICTCODEID,
      @ORGANIZATION_LASTVALIDATIONATTEMPTDATE,
      @ORGANIZATION_VALIDATIONMESSAGE,
      @ORGANIZATION_CERTIFICATIONDATA,
      @ISSPOUSERELATIONSHIP,
      @HOUSEHOLDCOPYPRIMARYCONTACTINFO,
      @ADDRESS_DONOTMAILREASONCODEID,
      @ORGANIZATION_DONOTMAILREASONCODEID,
      @SKIP_ADDING_SITES,
      @JOBCATEGORYCODEID,
      @CAREERLEVELCODEID,
      @ADDRESS_INFOSOURCECODEID,
      @ORGANIZATION_INFOSOURCECODEID,
      @TITLE2CODEID,
      @SUFFIX2CODEID,
      @SPOUSE_TITLE2CODEID,
      @SPOUSE_SUFFIX2CODEID,
      1,
        null, --@ORGANIZATION_PRIMARYSOFTCREDITRELATIONSHIPEXISTS
        null, --@ORGANIZATION_PRIMARYSOFTCREDITMATCHFACTOR
        null, --@ORGANIZATION_RECIPROCALSOFTCREDITRELATIONSHIPEXISTS
        null, --@ORGANIZATION_RECIPROCALSOFTCREDITMATCHFACTOR
        null, --@ORGANIZATION_PRIMARYRECOGNITIONTYPECODEID
        null, --@ORGANIZATION_RECIPROCALRECOGNITIONTYPECODEID
        @SPOUSE_EMAILADDRESS,
        @SPOUSE_PHONE_NUMBER;

  else if @SPOUSEID is null and @HASSPOUSE = 1
  -- save spouse only
    exec dbo.USP_INDIVIDUALSPOUSEBUSINESS_ADD
      @SPOUSEID output,
      @CURRENTAPPUSERID,
      '9d3aff90-42d0-4db0-a4c1-703d25fd1902',
      @CHANGEAGENTID,
      @SPOUSE_LASTNAME,
      @SPOUSE_FIRSTNAME,
      @SPOUSE_MIDDLENAME,
      @SPOUSE_MAIDENNAME,
      @SPOUSE_NICKNAME,
      @SPOUSE_TITLECODEID,
      @SPOUSE_SUFFIXCODEID,
      @SPOUSE_GENDERCODE,
      @SPOUSE_BIRTHDATE,
      @ADDRESS_ADDRESSTYPECODEID,
      @ADDRESS_DONOTMAIL,
      @ADDRESS_COUNTRYID,
      @ADDRESS_STATEID,
      @ADDRESS_ADDRESSBLOCK,
      @ADDRESS_CITY,
      @ADDRESS_POSTCODE,
      @PHONE_PHONETYPECODEID,
      @SPOUSE_PHONE_NUMBER,
      @EMAILADDRESS_EMAILADDRESSTYPECODEID,
      @SPOUSE_EMAILADDRESS,
      @MARITALSTATUSCODEID,
      @SKIP_ADDING_SECURITYGROUPS,
      @CONSTITUENTID,
      1, --@EXISTINGSPOUSE,
      @LASTNAME,
      @FIRSTNAME,
      @MIDDLENAME,
      @MAIDENNAME,
      @NICKNAME,
      @TITLECODEID,
      @SUFFIXCODEID,
      @GENDERCODE,
      @BIRTHDATE,
      @SPOUSE_RELATIONSHIPTYPECODEID, --@SPOUSE_RECIPROCALTYPECODEID,
      @SPOUSE_RECIPROCALTYPECODEID, --@SPOUSE_RELATIONSHIPTYPECODEID,
      @COPYPRIMARYINFORMATION,
      @SPOUSE_STARTDATE,
      @PRIMARYSOFTCREDITRELATIONSHIPEXISTS,
      @PRIMARYSOFTCREDITMATCHFACTOR,
      @RECIPROCALSOFTCREDITRELATIONSHIPEXISTS,
      @RECIPROCALSOFTCREDITMATCHFACTOR,
      @ORGANIZATIONID,
      @EXISTINGORGANIZATION,
      @ORGANIZATION_NAME,
      @ORGANIZATION_ADDRESSTYPECODEID,
      @ORGANIZATION_COUNTRYID,
      @ORGANIZATION_STATEID,
      @ORGANIZATION_ADDRESSBLOCK,
      @ORGANIZATION_CITY,
      @ORGANIZATION_POSTCODE,
      @ORGANIZATION_DONOTMAIL,
      @ORGANIZATION_PHONETYPECODEID,
      @ORGANIZATION_NUMBER,
      @ORGANIZATION_RECIPROCALTYPECODEID,
      @ORGANIZATION_RELATIONSHIPTYPECODEID,
      @ORGANIZATION_STARTDATE,
      @ORGANIZATION_ENDDATE,
      @ISCONTACT,
      @ISPRIMARYCONTACT,
      @CONTACTTYPECODEID,
      @POSITION,
      @ISMATCHINGGIFTRELATIONSHIP,
      @RECIPROCALRECOGNITIONTYPECODEID,
      @PRIMARYRECOGNITIONTYPECODEID,
      @ADDRESS_OMITFROMVALIDATION,
      @ADDRESS_CART,
      @ADDRESS_DPC,
      @ADDRESS_LOT,
      @ADDRESS_COUNTYCODEID,
      @ADDRESS_CONGRESSIONALDISTRICTCODEID,
      @ADDRESS_LASTVALIDATIONATTEMPTDATE,
      @ADDRESS_VALIDATIONMESSAGE,
      @ADDRESS_CERTIFICATIONDATA,
      @ORGANIZATION_OMITFROMVALIDATION,
      @ORGANIZATION_CART,
      @ORGANIZATION_DPC,
      @ORGANIZATION_LOT,
      @ORGANIZATION_COUNTYCODEID,
      @ORGANIZATION_CONGRESSIONALDISTRICTCODEID,
      @ORGANIZATION_LASTVALIDATIONATTEMPTDATE,
      @ORGANIZATION_VALIDATIONMESSAGE,
      @ORGANIZATION_CERTIFICATIONDATA,
      @ISSPOUSERELATIONSHIP,
      @HOUSEHOLDCOPYPRIMARYCONTACTINFO,
      @ADDRESS_DONOTMAILREASONCODEID,
      @ORGANIZATION_DONOTMAILREASONCODEID,
      @SKIP_ADDING_SITES,
      @JOBCATEGORYCODEID,
      @CAREERLEVELCODEID,
      @ADDRESS_INFOSOURCECODEID,
      @ORGANIZATION_INFOSOURCECODEID,
      @TITLE2CODEID,
      @SUFFIX2CODEID,
      @SPOUSE_TITLE2CODEID,
      @SPOUSE_SUFFIX2CODEID,
      1;

  if @HASSPOUSE = 1 and @SPOUSEID is null
        select @SPOUSEID = ID from dbo.CONSTITUENT 
        where KEYNAME = @SPOUSE_LASTNAME and FIRSTNAME = @SPOUSE_FIRSTNAME and MIDDLENAME = @SPOUSE_MIDDLENAME and BIRTHDATE = @SPOUSE_BIRTHDATE and GENDERCODE = @SPOUSE_GENDERCODE 

  -- Save other members as constituents
    insert into @OTHERMEMBERSTALBE (LASTNAME, FIRSTNAME, MIDDLENAME, BIRTHDATE, GENDERCODE, CONSTITUENTID, PHONENUMBER, EMAILADDRESS)
    select 
        T.c.value('(OTHER_LASTNAME)[1]','nvarchar(100)'),
        T.c.value('(OTHER_FIRSTNAME)[1]','nvarchar(50)'),
        T.c.value('(OTHER_MIDDLENAME)[1]','nvarchar(50)'),
        T.c.value('(OTHER_BIRTHDATE)[1]','dbo.UDT_FUZZYDATE'),
        T.c.value('(OTHER_GENDERCODE)[1]','tinyint'),
        case when T.c.value('(OTHER_ISNEW)[1]','bit') = 0 then
            T.c.value('(OTHER_ID)[1]','uniqueidentifier')
        else
            null
        end,
        T.c.value('(OTHER_PHONE_NUMBER)[1]','nvarchar(100)'),
        T.c.value('(OTHER_EMAILADDRESS)[1]','dbo.UDT_EMAILADDRESS')
    from @OTHERMEMBERS.nodes('/OTHERMEMBERS/ITEM') T(c)


    declare curOther cursor local fast_forward for
        select LASTNAME, FIRSTNAME, MIDDLENAME, BIRTHDATE, GENDERCODE, EMAILADDRESS, PHONENUMBER
        from @OTHERMEMBERSTALBE
        where [CONSTITUENTID] is null;

    open curOther
  fetch next from curOther into @OTHERLASTNAME, @OTHERFIRSTNAME, @OTHERMIDDLENAME, @OTHERBIRTHDATE, @OTHERGENDERCODE, @OTHEREMAILADDRESS, @OTHERPHONENUMBER
  while @@fetch_status = 0
  begin
        set @OTHERCONSTITUENTID = null;

          exec dbo.USP_INDIVIDUALSPOUSEBUSINESS_ADD
            @OTHERCONSTITUENTID output,
            @CURRENTAPPUSERID,
            '9d3aff90-42d0-4db0-a4c1-703d25fd1902',
            @CHANGEAGENTID,
            @OTHERLASTNAME,
            @OTHERFIRSTNAME,
            @OTHERMIDDLENAME,
            @MAIDENNAME,
            @NICKNAME,
            @TITLECODEID,
            @SUFFIXCODEID,
            @OTHERGENDERCODE,
            @OTHERBIRTHDATE,
            @ADDRESS_ADDRESSTYPECODEID,
            @ADDRESS_DONOTMAIL,
            null, --@ADDRESS_COUNTRYID,
            null, --@ADDRESS_STATEID,
            '', --@ADDRESS_ADDRESSBLOCK,
            '', --@ADDRESS_CITY,
            '', --@ADDRESS_POSTCODE,
            @PHONE_PHONETYPECODEID,
            @OTHERPHONENUMBER,
            @EMAILADDRESS_EMAILADDRESSTYPECODEID,
            @OTHEREMAILADDRESS,
            @MARITALSTATUSCODEID,
            @SKIP_ADDING_SECURITYGROUPS,
            null, --@SPOUSEID,
            @EXISTINGSPOUSE,
            '', --@SPOUSE_LASTNAME,
            '', --@SPOUSE_FIRSTNAME,
            '', --@SPOUSE_MIDDLENAME,
            @SPOUSE_MAIDENNAME,
            @SPOUSE_NICKNAME,
            @SPOUSE_TITLECODEID,
            @SPOUSE_SUFFIXCODEID,
            0, --@SPOUSE_GENDERCODE,
            '00000000', --@SPOUSE_BIRTHDATE,
            @SPOUSE_RECIPROCALTYPECODEID,
            @SPOUSE_RELATIONSHIPTYPECODEID,
            @COPYPRIMARYINFORMATION,
            @SPOUSE_STARTDATE,
            @PRIMARYSOFTCREDITRELATIONSHIPEXISTS,
            @PRIMARYSOFTCREDITMATCHFACTOR,
            @RECIPROCALSOFTCREDITRELATIONSHIPEXISTS,
            @RECIPROCALSOFTCREDITMATCHFACTOR,
            @ORGANIZATIONID,
            @EXISTINGORGANIZATION,
            @ORGANIZATION_NAME,
            @ORGANIZATION_ADDRESSTYPECODEID,
            @ORGANIZATION_COUNTRYID,
            @ORGANIZATION_STATEID,
            @ORGANIZATION_ADDRESSBLOCK,
            @ORGANIZATION_CITY,
            @ORGANIZATION_POSTCODE,
            @ORGANIZATION_DONOTMAIL,
            @ORGANIZATION_PHONETYPECODEID,
            @ORGANIZATION_NUMBER,
            @ORGANIZATION_RECIPROCALTYPECODEID,
            @ORGANIZATION_RELATIONSHIPTYPECODEID,
            @ORGANIZATION_STARTDATE,
            @ORGANIZATION_ENDDATE,
            @ISCONTACT,
            @ISPRIMARYCONTACT,
            @CONTACTTYPECODEID,
            @POSITION,
            @ISMATCHINGGIFTRELATIONSHIP,
            @RECIPROCALRECOGNITIONTYPECODEID,
            @PRIMARYRECOGNITIONTYPECODEID,
            @ADDRESS_OMITFROMVALIDATION,
            @ADDRESS_CART,
            @ADDRESS_DPC,
            @ADDRESS_LOT,
            @ADDRESS_COUNTYCODEID,
            @ADDRESS_CONGRESSIONALDISTRICTCODEID,
            @ADDRESS_LASTVALIDATIONATTEMPTDATE,
            @ADDRESS_VALIDATIONMESSAGE,
            @ADDRESS_CERTIFICATIONDATA,
            @ORGANIZATION_OMITFROMVALIDATION,
            @ORGANIZATION_CART,
            @ORGANIZATION_DPC,
            @ORGANIZATION_LOT,
            @ORGANIZATION_COUNTYCODEID,
            @ORGANIZATION_CONGRESSIONALDISTRICTCODEID,
            @ORGANIZATION_LASTVALIDATIONATTEMPTDATE,
            @ORGANIZATION_VALIDATIONMESSAGE,
            @ORGANIZATION_CERTIFICATIONDATA,
            @ISSPOUSERELATIONSHIP,
            @HOUSEHOLDCOPYPRIMARYCONTACTINFO,
            @ADDRESS_DONOTMAILREASONCODEID,
            @ORGANIZATION_DONOTMAILREASONCODEID,
            @SKIP_ADDING_SITES,
            @JOBCATEGORYCODEID,
            @CAREERLEVELCODEID,
            @ADDRESS_INFOSOURCECODEID,
            @ORGANIZATION_INFOSOURCECODEID,
            @TITLE2CODEID,
            @SUFFIX2CODEID,
            @SPOUSE_TITLE2CODEID,
            @SPOUSE_SUFFIX2CODEID,
            1;

    update @OTHERMEMBERSTALBE set CONSTITUENTID = @OTHERCONSTITUENTID
    where LASTNAME = @OTHERLASTNAME and FIRSTNAME = @OTHERFIRSTNAME and MIDDLENAME = @OTHERMIDDLENAME 

    fetch next from curOther into @OTHERLASTNAME, @OTHERFIRSTNAME, @OTHERMIDDLENAME, @OTHERBIRTHDATE, @OTHERGENDERCODE, @OTHEREMAILADDRESS, @OTHERPHONENUMBER
  end
  close curOther
  deallocate curOther

  -- Save membership
  select @CARDSALLOWED = coalesce(CARDSALLOWED, 0) from dbo.MEMBERSHIPLEVEL where ID = @MEMBERSHIPLEVELID

  declare @MEMBERSTABLE table (
    NUMBER int identity(1, 1),
    ID  uniqueidentifier,
    CONSTITUENTID uniqueidentifier,
    ISPRIMARY bit,
    MEMBERSHIPCARDS xml
  )

  insert into @MEMBERSTABLE (ID, CONSTITUENTID, ISPRIMARY, MEMBERSHIPCARDS)
            select @PRIMARYMEMBERID as ID, 
                    @CONSTITUENTID as CONSTITUENTID, 
                    1 as ISPRIMARY, 
                    (select newid() as ID,
                            (select NAME from dbo.CONSTITUENT where ID = @CONSTITUENTID) as NAMEONCARD,
                            @EXPIRATIONDATE as EXPIRATIONDATE,
                            null as MEMBERSHIPCARDID
                        for xml raw('ITEM'),type,elements,BINARY BASE64) as MEMBERSHIPCARDS
            union all
            select @SPOUSEMEMBERID,
                    @SPOUSEID,
                    0,
                    (select newid() as ID,
                            (select NAME from dbo.CONSTITUENT where ID = @SPOUSEID) as NAMEONCARD,
                            @EXPIRATIONDATE as EXPIRATIONDATE,
                            null as MEMBERSHIPCARDID
                        for xml raw('ITEM'),type,elements,BINARY BASE64)
            where @HASSPOUSE = 1

            union all 
            select MEMBERID,
                    CONSTITUENTID,
                    0,
                    (select newid() as ID,
                            (select NAME from dbo.CONSTITUENT where ID = OTHERMEMBERSTABLE.CONSTITUENTID) as NAMEONCARD,
                            @EXPIRATIONDATE as EXPIRATIONDATE,
                            null as MEMBERSHIPCARDID
                        for xml raw('ITEM'),type,elements,BINARY BASE64)
            from @OTHERMEMBERSTALBE OTHERMEMBERSTABLE

  update @MEMBERSTABLE set MEMBERSHIPCARDS = null where (NUMBER > @CARDSALLOWED) -- and @CARDSALLOWED > 0)

    set @MEMBERS = (
        select ID, CONSTITUENTID, ISPRIMARY, MEMBERSHIPCARDS, null as MEMBERID 
        from @MEMBERSTABLE
      for xml raw('ITEM'),type,elements,root('MEMBERS'),BINARY BASE64
    )

    exec dbo.USP_SALESORDERITEMMEMBERSHIP_ADD
        @ID output,
        @CHANGEAGENTID,
        @SALESORDERID,
        @MEMBERSHIPID,
        @MEMBERSHIPPROGRAMID,
        @MEMBERSHIPLEVELID,
        @MEMBERSHIPLEVELTERMID,
        @MEMBERSHIPLEVELTYPECODEID,
        @NUMBEROFCHILDREN,
        '', --@COMMENTS,
        0, --@ISGIFT,
        1, --@SENDRENEWALCODE,
        @EXPIRATIONDATE,
        @MEMBERS,
        null, --@GIVENBYID,
        0;

end try

begin catch
    exec dbo.USP_RAISE_ERROR
    return 1
end catch

return 0