Merge pull request #18320 from civicrm/5.29
[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 <field>
12 <name>id</name>
13 <uniqueName>membership_id</uniqueName>
14 <type>int unsigned</type>
15 <required>true</required>
16 <import>true</import>
17 <title>Membership ID</title>
18 <headerPattern>/^(m(embership\s)?id)$/i</headerPattern>
19 <comment>Membership Id</comment>
20 <add>1.5</add>
21 </field>
22 <primaryKey>
23 <name>id</name>
24 <autoincrement>true</autoincrement>
25 </primaryKey>
26
27 <field>
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>
35 <import>true</import>
36 <comment>FK to Contact ID</comment>
37 <add>1.5</add>
38 <html>
39 <type>EntityRef</type>
40 </html>
41 </field>
42 <foreignKey>
43 <name>contact_id</name>
44 <table>civicrm_contact</table>
45 <key>id</key>
46 <add>1.5</add>
47 <onDelete>CASCADE</onDelete>
48 </foreignKey>
49 <field>
50 <name>membership_type_id</name>
51 <type>int unsigned</type>
52 <title>Membership Type Id</title>
53 <import>true</import>
54 <headerPattern>/^(m(embership\s)?type)$/i</headerPattern>
55 <export>false</export>
56 <required>true</required>
57 <comment>FK to Membership Type</comment>
58 <pseudoconstant>
59 <table>civicrm_membership_type</table>
60 <keyColumn>id</keyColumn>
61 <labelColumn>name</labelColumn>
62 </pseudoconstant>
63 <html>
64 <type>Select</type>
65 <label>Membership Type</label>
66 </html>
67 <add>1.5</add>
68 </field>
69 <foreignKey>
70 <name>membership_type_id</name>
71 <table>civicrm_membership_type</table>
72 <key>id</key>
73 <add>1.5</add>
74 <onDelete>CASCADE</onDelete>
75 </foreignKey>
76 <field>
77 <name>join_date</name>
78 <title>Member Since</title>
79 <type>date</type>
80 <import>true</import>
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>
84 <add>1.5</add>
85 <html>
86 <type>Select Date</type>
87 <formatType>activityDate</formatType>
88 </html>
89 <uniqueName>membership_join_date</uniqueName>
90 </field>
91 <field>
92 <name>start_date</name>
93 <uniqueName>membership_start_date</uniqueName>
94 <title>Membership Start Date</title>
95 <type>date</type>
96 <import>true</import>
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>
100 <add>1.5</add>
101 <html>
102 <type>Select Date</type>
103 <formatType>activityDate</formatType>
104 </html>
105 </field>
106 <field>
107 <name>end_date</name>
108 <uniqueName>membership_end_date</uniqueName>
109 <title>Membership Expiration Date</title>
110 <type>date</type>
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>
115 <add>1.5</add>
116 <html>
117 <type>Select Date</type>
118 <formatType>activityDate</formatType>
119 </html>
120 </field>
121 <field>
122 <name>source</name>
123 <uniqueName>membership_source</uniqueName>
124 <title>Source</title>
125 <import>true</import>
126 <headerPattern>/^(member(ship?))?source$/i</headerPattern>
127 <type>varchar</type>
128 <length>128</length>
129 <add>1.5</add>
130 <html>
131 <type>Text</type>
132 </html>
133 </field>
134 <field>
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>
143 <pseudoconstant>
144 <table>civicrm_membership_status</table>
145 <keyColumn>id</keyColumn>
146 <labelColumn>label</labelColumn>
147 </pseudoconstant>
148 <html>
149 <type>Select</type>
150 </html>
151 <add>1.5</add>
152 </field>
153 <foreignKey>
154 <name>status_id</name>
155 <table>civicrm_membership_status</table>
156 <key>id</key>
157 <add>1.5</add>
158 <onDelete>CASCADE</onDelete>
159 </foreignKey>
160 <field>
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>
167 <type>boolean</type>
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>
169 <html>
170 <type>CheckBox</type>
171 </html>
172 <add>1.5</add>
173 </field>
174 <field>
175 <name>status_override_end_date</name>
176 <title>Status Override End Date</title>
177 <type>date</type>
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>
181 <add>4.7</add>
182 <html>
183 <type>Select Date</type>
184 <formatType>activityDate</formatType>
185 </html>
186 </field>
187 <field>
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>
193 <add>1.7</add>
194 </field>
195 <foreignKey>
196 <name>owner_membership_id</name>
197 <table>civicrm_membership</table>
198 <key>id</key>
199 <add>1.7</add>
200 <onDelete>SET NULL</onDelete>
201 </foreignKey>
202 <index>
203 <name>index_owner_membership_id</name>
204 <fieldName>owner_membership_id</fieldName>
205 <add>1.7</add>
206 </index>
207 <field>
208 <name>max_related</name>
209 <type>int</type>
210 <comment>Maximum number of related memberships (membership_type override).</comment>
211 <add>4.3</add>
212 <export>true</export>
213 <html>
214 <type>Text</type>
215 </html>
216 </field>
217 <field>
218 <name>is_test</name>
219 <title>Test</title>
220 <uniqueName>member_is_test</uniqueName>
221 <type>boolean</type>
222 <default>0</default>
223 <import>true</import>
224 <headerPattern>/(is.)?test(.member(ship)?)?/i</headerPattern>
225 <html>
226 <type>CheckBox</type>
227 </html>
228 </field>
229 <field>
230 <name>is_pay_later</name>
231 <uniqueName>member_is_pay_later</uniqueName>
232 <title>Is Pay Later</title>
233 <type>boolean</type>
234 <default>0</default>
235 <import>true</import>
236 <headerPattern>/(is.)?(pay(.)?later)$/i</headerPattern>
237 <add>2.1</add>
238 <html>
239 <type>CheckBox</type>
240 </html>
241 </field>
242 <field>
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>
249 <add>3.3</add>
250 </field>
251 <foreignKey>
252 <name>contribution_recur_id</name>
253 <table>civicrm_contribution_recur</table>
254 <key>id</key>
255 <add>3.3</add>
256 <onDelete>SET NULL</onDelete>
257 </foreignKey>
258 <field>
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>
265 <pseudoconstant>
266 <table>civicrm_campaign</table>
267 <keyColumn>id</keyColumn>
268 <labelColumn>title</labelColumn>
269 </pseudoconstant>
270 <add>3.4</add>
271 <html>
272 <type>Select</type>
273 </html>
274 </field>
275 <foreignKey>
276 <name>campaign_id</name>
277 <table>civicrm_campaign</table>
278 <key>id</key>
279 <onDelete>SET NULL</onDelete>
280 </foreignKey>
281 </table>