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