1 <?xml version=
"1.0" encoding=
"iso-8859-1" ?>
4 <base>CRM/Member
</base>
5 <class>Membership
</class>
6 <name>civicrm_membership
</name>
7 <comment>Contact Membership records.
</comment>
10 <icon>fa-id-badge
</icon>
13 <uniqueName>membership_id
</uniqueName>
14 <type>int unsigned
</type>
15 <required>true
</required>
17 <title>Membership ID
</title>
18 <headerPattern>/^(m(embership\s)?id)$/i
</headerPattern>
19 <comment>Membership Id
</comment>
24 <autoincrement>true
</autoincrement>
28 <name>contact_id
</name>
29 <uniqueName>membership_contact_id
</uniqueName>
30 <type>int unsigned
</type>
31 <required>true
</required>
32 <title>Contact ID
</title>
33 <headerPattern>/contact(.?id)?/i
</headerPattern>
34 <dataPattern>/^\d+$/
</dataPattern>
36 <comment>FK to Contact ID
</comment>
39 <type>EntityRef
</type>
43 <name>contact_id
</name>
44 <table>civicrm_contact
</table>
47 <onDelete>CASCADE
</onDelete>
50 <name>membership_type_id
</name>
51 <type>int unsigned
</type>
52 <title>Membership Type Id
</title>
54 <headerPattern>/^(m(embership\s)?type)$/i
</headerPattern>
55 <export>false
</export>
56 <required>true
</required>
57 <comment>FK to Membership Type
</comment>
59 <table>civicrm_membership_type
</table>
60 <keyColumn>id
</keyColumn>
61 <labelColumn>name
</labelColumn>
65 <label>Membership Type
</label>
70 <name>membership_type_id
</name>
71 <table>civicrm_membership_type
</table>
74 <onDelete>CASCADE
</onDelete>
77 <name>join_date
</name>
78 <title>Member Since
</title>
81 <headerPattern>/^join|(j(oin\s)?date)$/i
</headerPattern>
82 <dataPattern>/\d{
4}-?\d{
2}-?\d{
2}/
</dataPattern>
83 <comment>Beginning of initial membership period (member since...).
</comment>
86 <type>Select Date
</type>
87 <formatType>activityDate
</formatType>
89 <uniqueName>membership_join_date
</uniqueName>
92 <name>start_date
</name>
93 <uniqueName>membership_start_date
</uniqueName>
94 <title>Membership Start Date
</title>
97 <headerPattern>/(member(ship)?.)?start(s)?(.date$)?/i
</headerPattern>
98 <dataPattern>/\d{
4}-?\d{
2}-?\d{
2}/
</dataPattern>
99 <comment>Beginning of current uninterrupted membership period.
</comment>
102 <type>Select Date
</type>
103 <formatType>activityDate
</formatType>
107 <name>end_date
</name>
108 <uniqueName>membership_end_date
</uniqueName>
109 <title>Membership Expiration Date
</title>
111 <import>true
</import>
112 <headerPattern>/(member(ship)?.)?end(s)?(.date$)?/i
</headerPattern>
113 <dataPattern>/\d{
4}-?\d{
2}-?\d{
2}/
</dataPattern>
114 <comment>Current membership period expire date.
</comment>
117 <type>Select Date
</type>
118 <formatType>activityDate
</formatType>
123 <uniqueName>membership_source
</uniqueName>
124 <title>Source
</title>
125 <import>true
</import>
126 <headerPattern>/^(member(ship?))?source$/i
</headerPattern>
135 <name>status_id
</name>
136 <title>Membership Status Id
</title>
137 <import>true
</import>
138 <headerPattern>/(member(ship|).)?(status)$/i
</headerPattern>
139 <type>int unsigned
</type>
140 <export>false
</export>
141 <required>true
</required>
142 <comment>FK to Membership Status
</comment>
144 <table>civicrm_membership_status
</table>
145 <keyColumn>id
</keyColumn>
146 <labelColumn>label
</labelColumn>
154 <name>status_id
</name>
155 <table>civicrm_membership_status
</table>
158 <onDelete>CASCADE
</onDelete>
161 <name>is_override
</name>
162 <uniqueName>member_is_override
</uniqueName>
163 <title>Status Override
</title>
164 <import>true
</import>
165 <export>true
</export>
166 <headerPattern>/override$/i
</headerPattern>
168 <comment>Admin users may set a manual status which overrides the calculated status. When this flag is true, automated status update scripts should NOT modify status for the record.
</comment>
170 <type>CheckBox
</type>
175 <name>status_override_end_date
</name>
176 <title>Status Override End Date
</title>
178 <default>NULL
</default>
179 <import>true
</import>
180 <comment>Then end date of membership status override if 'Override until selected date' override type is selected.
</comment>
183 <type>Select Date
</type>
184 <formatType>activityDate
</formatType>
188 <name>owner_membership_id
</name>
189 <type>int unsigned
</type>
190 <title>Primary Member ID
</title>
191 <comment>Optional FK to Parent Membership.
</comment>
192 <export>true
</export>
196 <name>owner_membership_id
</name>
197 <table>civicrm_membership
</table>
200 <onDelete>SET NULL
</onDelete>
203 <name>index_owner_membership_id
</name>
204 <fieldName>owner_membership_id
</fieldName>
208 <name>max_related
</name>
210 <comment>Maximum number of related memberships (membership_type override).
</comment>
212 <export>true
</export>
220 <uniqueName>member_is_test
</uniqueName>
223 <import>true
</import>
224 <headerPattern>/(is.)?test(.member(ship)?)?/i
</headerPattern>
226 <type>CheckBox
</type>
230 <name>is_pay_later
</name>
231 <uniqueName>member_is_pay_later
</uniqueName>
232 <title>Is Pay Later
</title>
235 <import>true
</import>
236 <headerPattern>/(is.)?(pay(.)?later)$/i
</headerPattern>
239 <type>CheckBox
</type>
243 <name>contribution_recur_id
</name>
244 <uniqueName>membership_recur_id
</uniqueName>
245 <title>Membership Recurring Contribution
</title>
246 <type>int unsigned
</type>
247 <export>true
</export>
248 <comment>Conditional foreign key to civicrm_contribution_recur id. Each membership in connection with a recurring contribution carries a foreign key to the recurring contribution record. This assumes we can track these processor initiated events.
</comment>
252 <name>contribution_recur_id
</name>
253 <table>civicrm_contribution_recur
</table>
256 <onDelete>SET NULL
</onDelete>
259 <name>campaign_id
</name>
260 <uniqueName>member_campaign_id
</uniqueName>
261 <type>int unsigned
</type>
262 <title>Campaign
</title>
263 <import>true
</import>
264 <comment>The campaign for which this membership is attached.
</comment>
266 <table>civicrm_campaign
</table>
267 <keyColumn>id
</keyColumn>
268 <labelColumn>title
</labelColumn>
276 <name>campaign_id
</name>
277 <table>civicrm_campaign
</table>
279 <onDelete>SET NULL
</onDelete>