Merge pull request #19661 from civicrm/5.35
[civicrm-core.git] / xml / schema / Member / Membership.xml
1 <?xml version="1.0" encoding="iso-8859-1" ?>
2
3 <table>
4 <base>CRM/Member</base>
5 <class>Membership</class>
6 <name>civicrm_membership</name>
7 <comment>Contact Membership records.</comment>
8 <add>1.5</add>
9 <log>true</log>
10 <icon>fa-id-badge</icon>
11 <component>CiviMember</component>
12 <paths>
13 <add>civicrm/member/add?reset=1&amp;action=add&amp;context=standalone</add>
14 <view>civicrm/contact/view/membership?reset=1&amp;action=view&amp;id=[id]&amp;cid=[contact_id]</view>
15 <update>civicrm/contact/view/membership?reset=1&amp;action=update&amp;id=[id]&amp;cid=[contact_id]</update>
16 <delete>civicrm/contact/view/membership?reset=1&amp;action=delete&amp;id=[id]&amp;cid=[contact_id]</delete>
17 </paths>
18 <field>
19 <name>id</name>
20 <uniqueName>membership_id</uniqueName>
21 <type>int unsigned</type>
22 <required>true</required>
23 <import>true</import>
24 <title>Membership ID</title>
25 <headerPattern>/^(m(embership\s)?id)$/i</headerPattern>
26 <comment>Membership ID</comment>
27 <add>1.5</add>
28 <html>
29 <type>Number</type>
30 </html>
31 </field>
32 <primaryKey>
33 <name>id</name>
34 <autoincrement>true</autoincrement>
35 </primaryKey>
36
37 <field>
38 <name>contact_id</name>
39 <uniqueName>membership_contact_id</uniqueName>
40 <type>int unsigned</type>
41 <required>true</required>
42 <title>Contact ID</title>
43 <headerPattern>/contact(.?id)?/i</headerPattern>
44 <dataPattern>/^\d+$/</dataPattern>
45 <import>true</import>
46 <comment>FK to Contact ID</comment>
47 <add>1.5</add>
48 <html>
49 <type>EntityRef</type>
50 <label>Contact</label>
51 </html>
52 </field>
53 <foreignKey>
54 <name>contact_id</name>
55 <table>civicrm_contact</table>
56 <key>id</key>
57 <add>1.5</add>
58 <onDelete>CASCADE</onDelete>
59 </foreignKey>
60 <field>
61 <name>membership_type_id</name>
62 <type>int unsigned</type>
63 <title>Membership Type ID</title>
64 <import>true</import>
65 <headerPattern>/^(m(embership\s)?type)$/i</headerPattern>
66 <export>false</export>
67 <required>true</required>
68 <comment>FK to Membership Type</comment>
69 <pseudoconstant>
70 <table>civicrm_membership_type</table>
71 <keyColumn>id</keyColumn>
72 <labelColumn>name</labelColumn>
73 </pseudoconstant>
74 <html>
75 <type>Select</type>
76 <label>Membership Type</label>
77 </html>
78 <add>1.5</add>
79 </field>
80 <foreignKey>
81 <name>membership_type_id</name>
82 <table>civicrm_membership_type</table>
83 <key>id</key>
84 <add>1.5</add>
85 <onDelete>CASCADE</onDelete>
86 </foreignKey>
87 <field>
88 <name>join_date</name>
89 <title>Member Since</title>
90 <type>date</type>
91 <import>true</import>
92 <headerPattern>/^join|(j(oin\s)?date)$/i</headerPattern>
93 <dataPattern>/\d{4}-?\d{2}-?\d{2}/</dataPattern>
94 <comment>Beginning of initial membership period (member since...).</comment>
95 <add>1.5</add>
96 <html>
97 <type>Select Date</type>
98 <formatType>activityDate</formatType>
99 </html>
100 <uniqueName>membership_join_date</uniqueName>
101 </field>
102 <field>
103 <name>start_date</name>
104 <uniqueName>membership_start_date</uniqueName>
105 <title>Membership Start Date</title>
106 <type>date</type>
107 <import>true</import>
108 <headerPattern>/(member(ship)?.)?start(s)?(.date$)?/i</headerPattern>
109 <dataPattern>/\d{4}-?\d{2}-?\d{2}/</dataPattern>
110 <comment>Beginning of current uninterrupted membership period.</comment>
111 <add>1.5</add>
112 <html>
113 <type>Select Date</type>
114 <formatType>activityDate</formatType>
115 </html>
116 </field>
117 <field>
118 <name>end_date</name>
119 <uniqueName>membership_end_date</uniqueName>
120 <title>Membership Expiration Date</title>
121 <type>date</type>
122 <import>true</import>
123 <headerPattern>/(member(ship)?.)?end(s)?(.date$)?/i</headerPattern>
124 <dataPattern>/\d{4}-?\d{2}-?\d{2}/</dataPattern>
125 <comment>Current membership period expire date.</comment>
126 <add>1.5</add>
127 <html>
128 <type>Select Date</type>
129 <formatType>activityDate</formatType>
130 </html>
131 </field>
132 <field>
133 <name>source</name>
134 <uniqueName>membership_source</uniqueName>
135 <title>Source</title>
136 <import>true</import>
137 <headerPattern>/^(member(ship?))?source$/i</headerPattern>
138 <type>varchar</type>
139 <length>128</length>
140 <add>1.5</add>
141 <html>
142 <type>Text</type>
143 </html>
144 </field>
145 <field>
146 <name>status_id</name>
147 <title>Status ID</title>
148 <import>true</import>
149 <headerPattern>/(member(ship|).)?(status)$/i</headerPattern>
150 <type>int unsigned</type>
151 <export>false</export>
152 <required>true</required>
153 <comment>FK to Membership Status</comment>
154 <pseudoconstant>
155 <table>civicrm_membership_status</table>
156 <keyColumn>id</keyColumn>
157 <labelColumn>label</labelColumn>
158 </pseudoconstant>
159 <html>
160 <type>Select</type>
161 <label>Status</label>
162 </html>
163 <add>1.5</add>
164 </field>
165 <foreignKey>
166 <name>status_id</name>
167 <table>civicrm_membership_status</table>
168 <key>id</key>
169 <add>1.5</add>
170 <onDelete>CASCADE</onDelete>
171 </foreignKey>
172 <field>
173 <name>is_override</name>
174 <uniqueName>member_is_override</uniqueName>
175 <title>Status Override</title>
176 <import>true</import>
177 <export>true</export>
178 <headerPattern>/override$/i</headerPattern>
179 <type>boolean</type>
180 <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>
181 <html>
182 <type>CheckBox</type>
183 </html>
184 <add>1.5</add>
185 </field>
186 <field>
187 <name>status_override_end_date</name>
188 <title>Status Override End Date</title>
189 <type>date</type>
190 <default>NULL</default>
191 <import>true</import>
192 <comment>Then end date of membership status override if 'Override until selected date' override type is selected.</comment>
193 <add>4.7</add>
194 <html>
195 <type>Select Date</type>
196 <formatType>activityDate</formatType>
197 </html>
198 </field>
199 <field>
200 <name>owner_membership_id</name>
201 <type>int unsigned</type>
202 <title>Primary Member ID</title>
203 <comment>Optional FK to Parent Membership.</comment>
204 <export>true</export>
205 <html>
206 <label>Primary Member</label>
207 </html>
208 <add>1.7</add>
209 </field>
210 <foreignKey>
211 <name>owner_membership_id</name>
212 <table>civicrm_membership</table>
213 <key>id</key>
214 <add>1.7</add>
215 <onDelete>SET NULL</onDelete>
216 </foreignKey>
217 <index>
218 <name>index_owner_membership_id</name>
219 <fieldName>owner_membership_id</fieldName>
220 <add>1.7</add>
221 </index>
222 <field>
223 <name>max_related</name>
224 <type>int</type>
225 <comment>Maximum number of related memberships (membership_type override).</comment>
226 <add>4.3</add>
227 <export>true</export>
228 <html>
229 <type>Text</type>
230 <label>Maximum number of related memberships</label>
231 </html>
232 </field>
233 <field>
234 <name>is_test</name>
235 <title>Test</title>
236 <uniqueName>member_is_test</uniqueName>
237 <type>boolean</type>
238 <default>0</default>
239 <import>true</import>
240 <headerPattern>/(is.)?test(.member(ship)?)?/i</headerPattern>
241 <html>
242 <type>CheckBox</type>
243 </html>
244 </field>
245 <field>
246 <name>is_pay_later</name>
247 <uniqueName>member_is_pay_later</uniqueName>
248 <title>Is Pay Later</title>
249 <type>boolean</type>
250 <default>0</default>
251 <import>true</import>
252 <headerPattern>/(is.)?(pay(.)?later)$/i</headerPattern>
253 <add>2.1</add>
254 <html>
255 <type>CheckBox</type>
256 </html>
257 </field>
258 <field>
259 <name>contribution_recur_id</name>
260 <uniqueName>membership_recur_id</uniqueName>
261 <title>Recurring Contribution ID</title>
262 <type>int unsigned</type>
263 <export>true</export>
264 <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>
265 <html>
266 <label>Recurring Contribution</label>
267 </html>
268 <add>3.3</add>
269 </field>
270 <foreignKey>
271 <name>contribution_recur_id</name>
272 <table>civicrm_contribution_recur</table>
273 <key>id</key>
274 <add>3.3</add>
275 <onDelete>SET NULL</onDelete>
276 </foreignKey>
277 <field>
278 <name>campaign_id</name>
279 <uniqueName>member_campaign_id</uniqueName>
280 <type>int unsigned</type>
281 <title>Campaign ID</title>
282 <import>true</import>
283 <comment>The campaign for which this membership is attached.</comment>
284 <add>3.4</add>
285 <html>
286 <type>Select</type>
287 <label>Campaign</label>
288 </html>
289 </field>
290 <foreignKey>
291 <name>campaign_id</name>
292 <table>civicrm_campaign</table>
293 <key>id</key>
294 <onDelete>SET NULL</onDelete>
295 </foreignKey>
296 </table>