@gisce/ooui 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (191) hide show
  1. package/README.md +10 -0
  2. package/dist/Binary.d.ts +14 -0
  3. package/dist/Binary.js +46 -0
  4. package/dist/Binary.js.map +1 -0
  5. package/dist/Boolean.d.ts +8 -0
  6. package/dist/Boolean.js +26 -0
  7. package/dist/Boolean.js.map +1 -0
  8. package/dist/Button.d.ts +29 -0
  9. package/dist/Button.js +108 -0
  10. package/dist/Button.js.map +1 -0
  11. package/dist/Char.d.ts +26 -0
  12. package/dist/Char.js +89 -0
  13. package/dist/Char.js.map +1 -0
  14. package/dist/Container.d.ts +44 -0
  15. package/dist/Container.js +148 -0
  16. package/dist/Container.js.map +1 -0
  17. package/dist/ContainerWidget.d.ts +42 -0
  18. package/dist/ContainerWidget.js +125 -0
  19. package/dist/ContainerWidget.js.map +1 -0
  20. package/dist/Date.d.ts +8 -0
  21. package/dist/Date.js +26 -0
  22. package/dist/Date.js.map +1 -0
  23. package/dist/DateTime.d.ts +8 -0
  24. package/dist/DateTime.js +26 -0
  25. package/dist/DateTime.js.map +1 -0
  26. package/dist/FiberGrid.d.ts +5 -0
  27. package/dist/FiberGrid.js +23 -0
  28. package/dist/FiberGrid.js.map +1 -0
  29. package/dist/Field.d.ts +59 -0
  30. package/dist/Field.js +162 -0
  31. package/dist/Field.js.map +1 -0
  32. package/dist/Float.d.ts +24 -0
  33. package/dist/Float.js +64 -0
  34. package/dist/Float.js.map +1 -0
  35. package/dist/FloatTime.d.ts +7 -0
  36. package/dist/FloatTime.js +26 -0
  37. package/dist/FloatTime.js.map +1 -0
  38. package/dist/Form.d.ts +53 -0
  39. package/dist/Form.js +199 -0
  40. package/dist/Form.js.map +1 -0
  41. package/dist/Group.d.ts +5 -0
  42. package/dist/Group.js +23 -0
  43. package/dist/Group.js.map +1 -0
  44. package/dist/Image.d.ts +7 -0
  45. package/dist/Image.js +26 -0
  46. package/dist/Image.js.map +1 -0
  47. package/dist/Integer.d.ts +8 -0
  48. package/dist/Integer.js +26 -0
  49. package/dist/Integer.js.map +1 -0
  50. package/dist/Label.d.ts +23 -0
  51. package/dist/Label.js +80 -0
  52. package/dist/Label.js.map +1 -0
  53. package/dist/Many2many.d.ts +26 -0
  54. package/dist/Many2many.js +80 -0
  55. package/dist/Many2many.js.map +1 -0
  56. package/dist/Many2one.d.ts +20 -0
  57. package/dist/Many2one.js +63 -0
  58. package/dist/Many2one.js.map +1 -0
  59. package/dist/NewLine.d.ts +5 -0
  60. package/dist/NewLine.js +26 -0
  61. package/dist/NewLine.js.map +1 -0
  62. package/dist/Notebook.d.ts +8 -0
  63. package/dist/Notebook.js +41 -0
  64. package/dist/Notebook.js.map +1 -0
  65. package/dist/One2many.d.ts +44 -0
  66. package/dist/One2many.js +130 -0
  67. package/dist/One2many.js.map +1 -0
  68. package/dist/Page.d.ts +5 -0
  69. package/dist/Page.js +23 -0
  70. package/dist/Page.js.map +1 -0
  71. package/dist/ProgressBar.d.ts +7 -0
  72. package/dist/ProgressBar.js +26 -0
  73. package/dist/ProgressBar.js.map +1 -0
  74. package/dist/Reference.d.ts +7 -0
  75. package/dist/Reference.js +26 -0
  76. package/dist/Reference.js.map +1 -0
  77. package/dist/SearchFilter.d.ts +28 -0
  78. package/dist/SearchFilter.js +81 -0
  79. package/dist/SearchFilter.js.map +1 -0
  80. package/dist/Selection.d.ts +20 -0
  81. package/dist/Selection.js +63 -0
  82. package/dist/Selection.js.map +1 -0
  83. package/dist/Separator.d.ts +12 -0
  84. package/dist/Separator.js +46 -0
  85. package/dist/Separator.js.map +1 -0
  86. package/dist/Text.d.ts +29 -0
  87. package/dist/Text.js +96 -0
  88. package/dist/Text.js.map +1 -0
  89. package/dist/Timeline.d.ts +17 -0
  90. package/dist/Timeline.js +56 -0
  91. package/dist/Timeline.js.map +1 -0
  92. package/dist/Tree.d.ts +31 -0
  93. package/dist/Tree.js +96 -0
  94. package/dist/Tree.js.map +1 -0
  95. package/dist/Widget.d.ts +47 -0
  96. package/dist/Widget.js +116 -0
  97. package/dist/Widget.js.map +1 -0
  98. package/dist/WidgetFactory.d.ts +9 -0
  99. package/dist/WidgetFactory.js +157 -0
  100. package/dist/WidgetFactory.js.map +1 -0
  101. package/dist/helpers/attributeParser.d.ts +6 -0
  102. package/dist/helpers/attributeParser.js +83 -0
  103. package/dist/helpers/attributeParser.js.map +1 -0
  104. package/dist/helpers/contextParser.d.ts +5 -0
  105. package/dist/helpers/contextParser.js +52 -0
  106. package/dist/helpers/contextParser.js.map +1 -0
  107. package/dist/helpers/domainParser.d.ts +5 -0
  108. package/dist/helpers/domainParser.js +26 -0
  109. package/dist/helpers/domainParser.js.map +1 -0
  110. package/dist/helpers/fieldParser.d.ts +5 -0
  111. package/dist/helpers/fieldParser.js +20 -0
  112. package/dist/helpers/fieldParser.js.map +1 -0
  113. package/dist/helpers/nodeParser.d.ts +7 -0
  114. package/dist/helpers/nodeParser.js +50 -0
  115. package/dist/helpers/nodeParser.js.map +1 -0
  116. package/dist/helpers/onChangeParser.d.ts +5 -0
  117. package/dist/helpers/onChangeParser.js +16 -0
  118. package/dist/helpers/onChangeParser.js.map +1 -0
  119. package/dist/helpers/stateParser.d.ts +14 -0
  120. package/dist/helpers/stateParser.js +46 -0
  121. package/dist/helpers/stateParser.js.map +1 -0
  122. package/dist/index.d.ts +33 -0
  123. package/dist/index.js +34 -0
  124. package/dist/index.js.map +1 -0
  125. package/package.json +49 -0
  126. package/src/Binary.ts +29 -0
  127. package/src/Boolean.ts +12 -0
  128. package/src/Button.ts +78 -0
  129. package/src/Char.ts +65 -0
  130. package/src/Container.ts +171 -0
  131. package/src/ContainerWidget.ts +105 -0
  132. package/src/Date.ts +12 -0
  133. package/src/DateTime.ts +12 -0
  134. package/src/FiberGrid.ts +9 -0
  135. package/src/Field.ts +147 -0
  136. package/src/Float.ts +45 -0
  137. package/src/FloatTime.ts +8 -0
  138. package/src/Form.ts +212 -0
  139. package/src/Group.ts +9 -0
  140. package/src/Image.ts +8 -0
  141. package/src/Integer.ts +13 -0
  142. package/src/Label.ts +46 -0
  143. package/src/Many2many.ts +59 -0
  144. package/src/Many2one.ts +44 -0
  145. package/src/NewLine.ts +9 -0
  146. package/src/Notebook.ts +24 -0
  147. package/src/One2many.ts +106 -0
  148. package/src/Page.ts +9 -0
  149. package/src/ProgressBar.ts +8 -0
  150. package/src/Reference.ts +10 -0
  151. package/src/SearchFilter.ts +81 -0
  152. package/src/Selection.ts +44 -0
  153. package/src/Separator.ts +30 -0
  154. package/src/Text.ts +76 -0
  155. package/src/Timeline.ts +44 -0
  156. package/src/Tree.ts +93 -0
  157. package/src/Widget.ts +121 -0
  158. package/src/WidgetFactory.ts +158 -0
  159. package/src/helpers/attributeParser.ts +108 -0
  160. package/src/helpers/contextParser.ts +66 -0
  161. package/src/helpers/domainParser.ts +39 -0
  162. package/src/helpers/fieldParser.ts +27 -0
  163. package/src/helpers/nodeParser.ts +57 -0
  164. package/src/helpers/onChangeParser.ts +18 -0
  165. package/src/helpers/stateParser.ts +62 -0
  166. package/src/index.ts +67 -0
  167. package/src/spec/Boolean.spec.ts +36 -0
  168. package/src/spec/Button.spec.ts +58 -0
  169. package/src/spec/Char.spec.ts +80 -0
  170. package/src/spec/Container.spec.ts +47 -0
  171. package/src/spec/ContainerWidget.spec.ts +35 -0
  172. package/src/spec/Date.spec.ts +36 -0
  173. package/src/spec/DateTime.spec.ts +36 -0
  174. package/src/spec/Float.spec.ts +29 -0
  175. package/src/spec/Form.spec.ts +976 -0
  176. package/src/spec/Group.spec.ts +32 -0
  177. package/src/spec/Label.spec.ts +46 -0
  178. package/src/spec/Many2many.spec.ts +36 -0
  179. package/src/spec/Many2one.spec.ts +36 -0
  180. package/src/spec/One2many.spec.ts +354 -0
  181. package/src/spec/SearchFilter.spec.ts +955 -0
  182. package/src/spec/Selection.spec.ts +52 -0
  183. package/src/spec/Separator.spec.ts +14 -0
  184. package/src/spec/Tree.spec.ts +214 -0
  185. package/src/spec/Widget.spec.ts +45 -0
  186. package/src/spec/WidgetFactory.spec.ts +40 -0
  187. package/src/spec/attributeParser.spec.ts +173 -0
  188. package/src/spec/contextParser.spec.ts +57 -0
  189. package/src/spec/domainParser.spec.ts +40 -0
  190. package/src/spec/fixtures/WidgetImpl.ts +10 -0
  191. package/src/spec/stateParser.spec.ts +161 -0
@@ -0,0 +1,955 @@
1
+ import SearchFilter from "../SearchFilter";
2
+
3
+ const searchFields = {
4
+ primary: [
5
+ "name",
6
+ "ref",
7
+ "emails",
8
+ "customer",
9
+ "address",
10
+ "payment_type_customer",
11
+ "vat",
12
+ "payment_type_supplier",
13
+ "date",
14
+ "comercial",
15
+ ],
16
+ secondary: [
17
+ "lang",
18
+ "credit_limit",
19
+ "user_id",
20
+ "bank_ids",
21
+ "energy_sector",
22
+ "has_debt",
23
+ "credit",
24
+ "debit",
25
+ "active",
26
+ "supplier",
27
+ "category_id",
28
+ ],
29
+ };
30
+
31
+ const fields = {
32
+ active: {
33
+ string: "Active",
34
+ type: "boolean",
35
+ views: {},
36
+ },
37
+ address: {
38
+ context: "",
39
+ domain: [],
40
+ inv_field: "partner_id",
41
+ relation: "res.partner.address",
42
+ string: "Contacts",
43
+ type: "one2many",
44
+ views: {
45
+ form: {
46
+ arch:
47
+ '<form string="Partner Contacts">\n <notebook>\n <page string="General">\n <field name="name" select="2" required="True"/>\n <field domain="[(\'domain\', \'=\', \'contact\')]" name="title" string="Type"/>\n <field name="function"/>\n <field name="type" select="2"/>\n <separator string="Street" colspan="4"/>\n <field name="street" select="2" colspan="4" width="200"/>\n <group colspan="2" col="4">\n <field name="tv" select="2"/>\n <newline/>\n <field name="nv" colspan="4"/>\n </group>\n <group colspan="2" col="8">\n <field name="pnp"/>\n <field name="es"/>\n <field name="pt"/>\n <field name="pu"/>\n <field name="bq" colspan="1"/>\n <field name="aclarador" colspan="5"/>\n </group>\n <field name="street2"/>\n <newline/>\n <field name="zip" select="2"/>\n <field name="apartat_correus"/>\n <newline/>\n <newline/>\n <field name="id_municipi" on_change="onchange_municipi_id(id_municipi,context)"/>\n <field name="id_poblacio" domain="[(\'municipi_id\',\'=\',id_municipi)]"/>\n <field name="state_id" select="2"/>\n <field completion="1" name="country_id" select="2"/>\n <newline/>\n <separator string="Catastre" colspan="4"/>\n <field name="ref_catastral"/>\n <separator string="Comunication channels" colspan="4"/>\n <field name="phone"/>\n <field name="fax"/>\n <newline/>\n <field name="mobile"/>\n <field name="email" select="2" widget="email"/>\n </page>\n <page string="Notes">\n <field name="notes" nolabel="1" colspan="4"/>\n </page>\n </notebook>\n </form>\n ',
48
+ fields: {
49
+ aclarador: {
50
+ size: 256,
51
+ string: "Aclarador",
52
+ type: "char",
53
+ views: {},
54
+ },
55
+ apartat_correus: {
56
+ size: 5,
57
+ string: "Apartat de Correus",
58
+ type: "char",
59
+ views: {},
60
+ },
61
+ bq: {
62
+ size: 4,
63
+ string: "Bloc",
64
+ type: "char",
65
+ views: {},
66
+ },
67
+ country_id: {
68
+ context: "",
69
+ domain: [],
70
+ relation: "res.country",
71
+ size: 64,
72
+ string: "Country",
73
+ type: "many2one",
74
+ views: {},
75
+ },
76
+ email: {
77
+ size: 240,
78
+ string: "E-Mail",
79
+ type: "char",
80
+ views: {},
81
+ },
82
+ es: {
83
+ size: 10,
84
+ string: "Escala",
85
+ type: "char",
86
+ views: {},
87
+ },
88
+ fax: {
89
+ size: 64,
90
+ string: "Fax",
91
+ type: "char",
92
+ views: {},
93
+ },
94
+ function: {
95
+ context: "",
96
+ domain: [],
97
+ relation: "res.partner.function",
98
+ size: 64,
99
+ string: "Function",
100
+ type: "many2one",
101
+ views: {},
102
+ },
103
+ id_municipi: {
104
+ context: "",
105
+ domain: [],
106
+ relation: "res.municipi",
107
+ size: 64,
108
+ string: "Municipi",
109
+ type: "many2one",
110
+ views: {},
111
+ },
112
+ id_poblacio: {
113
+ context: "",
114
+ domain: [],
115
+ relation: "res.poblacio",
116
+ size: 64,
117
+ string: "Població",
118
+ type: "many2one",
119
+ views: {},
120
+ },
121
+ mobile: {
122
+ size: 64,
123
+ string: "Mobile",
124
+ type: "char",
125
+ views: {},
126
+ },
127
+ name: {
128
+ size: 128,
129
+ string: "Contact Name",
130
+ type: "char",
131
+ views: {},
132
+ },
133
+ notes: {
134
+ string: "Notes",
135
+ type: "text",
136
+ views: {},
137
+ },
138
+ nv: {
139
+ size: 256,
140
+ string: "Carrer",
141
+ type: "char",
142
+ views: {},
143
+ },
144
+ phone: {
145
+ size: 64,
146
+ string: "Phone",
147
+ type: "char",
148
+ views: {},
149
+ },
150
+ pnp: {
151
+ size: 10,
152
+ string: "Número",
153
+ type: "char",
154
+ views: {},
155
+ },
156
+ pt: {
157
+ size: 10,
158
+ string: "Planta",
159
+ type: "char",
160
+ views: {},
161
+ },
162
+ pu: {
163
+ size: 10,
164
+ string: "Porta",
165
+ type: "char",
166
+ views: {},
167
+ },
168
+ ref_catastral: {
169
+ size: 20,
170
+ string: "Ref Catastral (c)",
171
+ type: "char",
172
+ views: {},
173
+ },
174
+ state_id: {
175
+ context: "",
176
+ domain: "[('country_id','=',country_id)]",
177
+ relation: "res.country.state",
178
+ size: 64,
179
+ string: "Fed. State",
180
+ type: "many2one",
181
+ views: {},
182
+ },
183
+ street: {
184
+ digits: [16, 2],
185
+ readonly: 1,
186
+ size: 128,
187
+ string: "Street",
188
+ type: "char",
189
+ views: {},
190
+ },
191
+ street2: {
192
+ size: 128,
193
+ string: "Street2",
194
+ type: "char",
195
+ views: {},
196
+ },
197
+ title: {
198
+ selection: [
199
+ ["Ms.", "Madam"],
200
+ ["Mss", "Miss"],
201
+ ["M.", "Sir"],
202
+ ["", ""],
203
+ ],
204
+ size: 32,
205
+ string: "Title",
206
+ type: "selection",
207
+ views: {},
208
+ },
209
+ tv: {
210
+ context: "",
211
+ domain: [],
212
+ relation: "res.tipovia",
213
+ size: 64,
214
+ string: "Tipus Via",
215
+ type: "many2one",
216
+ views: {},
217
+ },
218
+ type: {
219
+ help:
220
+ "Used to select automatically the right address according to the context in sales and purchases documents.",
221
+ selection: [
222
+ ["default", "Default"],
223
+ ["invoice", "Invoice"],
224
+ ["delivery", "Delivery"],
225
+ ["contact", "Contact"],
226
+ ["other", "Other"],
227
+ ["ov", "Oficina Virtual"],
228
+ ],
229
+ string: "Address Type",
230
+ type: "selection",
231
+ views: {},
232
+ },
233
+ zip: {
234
+ change_default: true,
235
+ size: 24,
236
+ string: "Zip",
237
+ type: "char",
238
+ views: {},
239
+ },
240
+ },
241
+ },
242
+ tree: {
243
+ arch:
244
+ '<tree string="Partner Contacts">\n <field name="name"/>\n <field name="street"/>\n <field name="type"/>\n <field name="zip"/>\n <field name="city"/>\n <field name="country_id"/>\n <field name="phone"/>\n <field name="email"/>\n </tree>\n ',
245
+ fields: {
246
+ city: {
247
+ size: 128,
248
+ string: "City",
249
+ type: "char",
250
+ views: {},
251
+ },
252
+ country_id: {
253
+ context: "",
254
+ domain: [],
255
+ relation: "res.country",
256
+ size: 64,
257
+ string: "Country",
258
+ type: "many2one",
259
+ views: {},
260
+ },
261
+ email: {
262
+ size: 240,
263
+ string: "E-Mail",
264
+ type: "char",
265
+ views: {},
266
+ },
267
+ name: {
268
+ size: 128,
269
+ string: "Contact Name",
270
+ type: "char",
271
+ views: {},
272
+ },
273
+ phone: {
274
+ size: 64,
275
+ string: "Phone",
276
+ type: "char",
277
+ views: {},
278
+ },
279
+ street: {
280
+ digits: [16, 2],
281
+ readonly: 1,
282
+ size: 128,
283
+ string: "Street",
284
+ type: "char",
285
+ views: {},
286
+ },
287
+ type: {
288
+ help:
289
+ "Used to select automatically the right address according to the context in sales and purchases documents.",
290
+ selection: [
291
+ ["default", "Default"],
292
+ ["invoice", "Invoice"],
293
+ ["delivery", "Delivery"],
294
+ ["contact", "Contact"],
295
+ ["other", "Other"],
296
+ ["ov", "Oficina Virtual"],
297
+ ],
298
+ string: "Address Type",
299
+ type: "selection",
300
+ views: {},
301
+ },
302
+ zip: {
303
+ change_default: true,
304
+ size: 24,
305
+ string: "Zip",
306
+ type: "char",
307
+ views: {},
308
+ },
309
+ },
310
+ },
311
+ },
312
+ },
313
+ bank_ids: {
314
+ context: "",
315
+ domain: [],
316
+ inv_field: "partner_id",
317
+ relation: "res.partner.bank",
318
+ string: "Banks",
319
+ type: "one2many",
320
+ views: {
321
+ form: {
322
+ arch:
323
+ '<form string="Bank account">\n <field name="state" select="2"/>\n <newline/>\n <field name="acc_number" on_change="onchange_banco(acc_number, acc_country_id, context)"/>\n <field name="acc_country_id" on_change="onchange_banco(acc_number, acc_country_id, context)"/>\n <newline/>\n <field name="iban" on_change="onchange_iban(iban, context)"/>\n <newline/>\n <field name="printable_iban"/>\n <newline/>\n <newline/>\n <field name="bank"/>\n <newline/>\n <field name="sequence"/>\n <field name="default_bank"/>\n <field colspan="4" name="name" select="2"/>\n <separator colspan="4" string="Bank account owner"/>\n <field colspan="4" name="owner_name" select="2" invisible="1"/>\n <field colspan="4" name="owner_id" required="0"/>\n <field colspan="4" name="street" invisible="1"/>\n <field colspan="4" name="owner_address_id" domain="[(\'partner_id\', \'=\', owner_id)]"/>\n <newline/>\n <field name="zip" invisible="1"/>\n <field name="city" invisible="1"/>\n <newline/>\n <field invisible="1" name="country_id" select="2"/>\n <field name="state_id" select="2" invisible="1"/>\n </form>\n ',
324
+ fields: {
325
+ acc_country_id: {
326
+ context: "",
327
+ domain: [],
328
+ help:
329
+ "If the country of the bank is Spain, it validates the bank code. It only reads the digit characters of the bank code:\n- If the number of digits is 18, computes the two digits of control.\n- If the number of digits is 20, computes the two digits of control and ignores the current ones.\n- If the number of digits is different from 18 or 20, it leaves the bank code unaltered.\nThe result is shown in the '1234 5678 06 1234567890' format.",
330
+ relation: "res.country",
331
+ required: true,
332
+ size: 64,
333
+ string: "Bank country",
334
+ type: "many2one",
335
+ views: {},
336
+ },
337
+ acc_number: {
338
+ size: 64,
339
+ states: {
340
+ bank: [
341
+ ["readonly", false],
342
+ ["required", true],
343
+ ],
344
+ iban: [
345
+ ["readonly", true],
346
+ ["required", false],
347
+ ],
348
+ },
349
+ string: "Account Number",
350
+ type: "char",
351
+ views: {},
352
+ },
353
+ bank: {
354
+ context: "",
355
+ domain: [],
356
+ relation: "res.bank",
357
+ size: 64,
358
+ string: "Bank",
359
+ type: "many2one",
360
+ views: {},
361
+ },
362
+ city: {
363
+ digits: [16, 2],
364
+ readonly: 1,
365
+ size: 128,
366
+ string: "City",
367
+ type: "char",
368
+ views: {},
369
+ },
370
+ country_id: {
371
+ context: "",
372
+ digits: [16, 2],
373
+ domain: [],
374
+ readonly: 1,
375
+ relation: "res.country",
376
+ states: {
377
+ bank: [
378
+ ["readonly", true],
379
+ ["required", false],
380
+ ],
381
+ iban: [
382
+ ["readonly", false],
383
+ ["required", false],
384
+ ],
385
+ },
386
+ string: "Country",
387
+ type: "many2one",
388
+ views: {},
389
+ },
390
+ default_bank: {
391
+ string: "Default",
392
+ type: "boolean",
393
+ views: {},
394
+ },
395
+ iban: {
396
+ help: "International Bank Account Number",
397
+ readonly: true,
398
+ size: 34,
399
+ states: {
400
+ iban: [
401
+ ["readonly", false],
402
+ ["required", true],
403
+ ],
404
+ },
405
+ string: "IBAN",
406
+ type: "char",
407
+ views: {},
408
+ },
409
+ name: {
410
+ size: 128,
411
+ string: "Description",
412
+ type: "char",
413
+ views: {},
414
+ },
415
+ owner_address_id: {
416
+ context: "",
417
+ domain: [],
418
+ relation: "res.partner.address",
419
+ select: true,
420
+ size: 64,
421
+ string: "Owner Address",
422
+ type: "many2one",
423
+ views: {},
424
+ },
425
+ owner_id: {
426
+ context: "",
427
+ domain: [],
428
+ help:
429
+ "If no owner is selected, the related partner will be used as owner",
430
+ relation: "res.partner",
431
+ required: true,
432
+ select: true,
433
+ size: 64,
434
+ string: "Owner",
435
+ type: "many2one",
436
+ views: {},
437
+ },
438
+ owner_name: {
439
+ digits: [16, 2],
440
+ readonly: 1,
441
+ size: 128,
442
+ string: "Account Owner",
443
+ type: "char",
444
+ views: {},
445
+ },
446
+ printable_iban: {
447
+ digits: [16, 2],
448
+ help: "Space formated International Bank Account Number",
449
+ readonly: 1,
450
+ size: 42,
451
+ string: "Printable IBAN",
452
+ type: "char",
453
+ views: {},
454
+ },
455
+ sequence: {
456
+ string: "Sequence",
457
+ type: "integer",
458
+ views: {},
459
+ },
460
+ state: {
461
+ change_default: true,
462
+ required: true,
463
+ selection: [
464
+ ["bank", "Bank account"],
465
+ ["iban", "IBAN Account"],
466
+ ],
467
+ string: "Bank Type",
468
+ type: "selection",
469
+ views: {},
470
+ },
471
+ state_id: {
472
+ context: "",
473
+ digits: [16, 2],
474
+ domain: [],
475
+ readonly: 1,
476
+ relation: "res.country.state",
477
+ string: "State",
478
+ type: "many2one",
479
+ views: {},
480
+ },
481
+ street: {
482
+ digits: [16, 2],
483
+ readonly: 1,
484
+ size: 128,
485
+ string: "Street",
486
+ type: "char",
487
+ views: {},
488
+ },
489
+ zip: {
490
+ digits: [16, 2],
491
+ readonly: 1,
492
+ size: 24,
493
+ states: {
494
+ iban: [
495
+ ["readonly", false],
496
+ ["required", false],
497
+ ],
498
+ },
499
+ string: "Zip",
500
+ type: "char",
501
+ views: {},
502
+ },
503
+ },
504
+ },
505
+ tree: {
506
+ arch:
507
+ '<tree string="Bank Details">\n <field name="state"/>\n <field name="bank"/>\n <field name="owner_name"/>\n <field name="acc_number"/>\n <field name="iban"/>\n <field name="default_bank"/>\n </tree>\n ',
508
+ fields: {
509
+ acc_number: {
510
+ size: 64,
511
+ states: {
512
+ bank: [
513
+ ["readonly", false],
514
+ ["required", true],
515
+ ],
516
+ iban: [
517
+ ["readonly", true],
518
+ ["required", false],
519
+ ],
520
+ },
521
+ string: "Account Number",
522
+ type: "char",
523
+ views: {},
524
+ },
525
+ bank: {
526
+ context: "",
527
+ domain: [],
528
+ relation: "res.bank",
529
+ size: 64,
530
+ string: "Bank",
531
+ type: "many2one",
532
+ views: {},
533
+ },
534
+ default_bank: {
535
+ string: "Default",
536
+ type: "boolean",
537
+ views: {},
538
+ },
539
+ iban: {
540
+ help: "International Bank Account Number",
541
+ readonly: true,
542
+ size: 34,
543
+ states: {
544
+ iban: [
545
+ ["readonly", false],
546
+ ["required", true],
547
+ ],
548
+ },
549
+ string: "IBAN",
550
+ type: "char",
551
+ views: {},
552
+ },
553
+ owner_name: {
554
+ digits: [16, 2],
555
+ readonly: 1,
556
+ size: 128,
557
+ string: "Account Owner",
558
+ type: "char",
559
+ views: {},
560
+ },
561
+ state: {
562
+ change_default: true,
563
+ required: true,
564
+ selection: [
565
+ ["bank", "Bank account"],
566
+ ["iban", "IBAN Account"],
567
+ ],
568
+ string: "Bank Type",
569
+ type: "selection",
570
+ views: {},
571
+ },
572
+ },
573
+ },
574
+ },
575
+ },
576
+ category_id: {
577
+ context: "",
578
+ domain: [],
579
+ relation: "res.partner.category",
580
+ string: "Categories",
581
+ type: "many2many",
582
+ views: {},
583
+ },
584
+ comercial: {
585
+ select: true,
586
+ size: 128,
587
+ string: "Trade name",
588
+ type: "char",
589
+ views: {},
590
+ },
591
+ comment: {
592
+ string: "Notes",
593
+ type: "text",
594
+ views: {},
595
+ },
596
+ credit: {
597
+ digits: [16, 2],
598
+ help: "Total amount this customer owes you.",
599
+ readonly: 1,
600
+ string: "Total Receivable",
601
+ type: "float",
602
+ views: {},
603
+ },
604
+ credit_limit: {
605
+ string: "Credit Limit",
606
+ type: "float",
607
+ views: {},
608
+ },
609
+ customer: {
610
+ help: "Check this box if the partner is a customer.",
611
+ string: "Customer",
612
+ type: "boolean",
613
+ views: {},
614
+ },
615
+ date: {
616
+ select: 1,
617
+ string: "Date",
618
+ type: "date",
619
+ views: {},
620
+ },
621
+ debit: {
622
+ digits: [16, 2],
623
+ help: "Total amount you have to pay to this supplier.",
624
+ readonly: 1,
625
+ string: "Total Payable",
626
+ type: "float",
627
+ views: {},
628
+ },
629
+ emails: {
630
+ digits: [16, 2],
631
+ readonly: 1,
632
+ string: "Emails",
633
+ type: "text",
634
+ views: {},
635
+ },
636
+ energy_sector: {
637
+ digits: [16, 2],
638
+ readonly: 1,
639
+ selection: [
640
+ ["electric", "Electric"],
641
+ ["gas", "Gas"],
642
+ ["elegas", "Electric & Gas"],
643
+ ["undefined", "Indefinit"],
644
+ ],
645
+ string: "Sector d'energía",
646
+ type: "selection",
647
+ views: {},
648
+ },
649
+ events: {
650
+ context: "",
651
+ domain: [],
652
+ inv_field: "partner_id",
653
+ relation: "res.partner.event",
654
+ string: "Events",
655
+ type: "one2many",
656
+ views: {},
657
+ },
658
+ has_debt: {
659
+ digits: [16, 2],
660
+ readonly: 1,
661
+ string: "Has debt",
662
+ type: "boolean",
663
+ views: {},
664
+ },
665
+ lang: {
666
+ help:
667
+ "If the selected language is loaded in the system, all documents related to this partner will be printed in this language. If not, it will be english.",
668
+ selection: [
669
+ ["en_US", "English"],
670
+ ["ca_ES", "Catalan / Català"],
671
+ ["es_ES", "Spanish / Español"],
672
+ ["", ""],
673
+ ],
674
+ size: 5,
675
+ string: "Language",
676
+ type: "selection",
677
+ views: {},
678
+ },
679
+ name: {
680
+ required: true,
681
+ select: true,
682
+ size: 128,
683
+ string: "Name",
684
+ type: "char",
685
+ views: {},
686
+ },
687
+ ov_users_ids: {
688
+ context: {
689
+ active_test: false,
690
+ },
691
+ domain: [],
692
+ inv_field: "partner_id",
693
+ relation: "ov.users",
694
+ string: "Usuaris Oficina Virtual",
695
+ type: "one2many",
696
+ views: {},
697
+ },
698
+ parent_id: {
699
+ context: "",
700
+ domain: [],
701
+ relation: "res.partner",
702
+ select: 2,
703
+ size: 64,
704
+ string: "Main Company",
705
+ type: "many2one",
706
+ views: {},
707
+ },
708
+ payment_type_customer: {
709
+ context: "",
710
+ domain: [],
711
+ help: "Payment type of the customer",
712
+ relation: "payment.type",
713
+ size: 64,
714
+ string: "Customer payment type",
715
+ type: "many2one",
716
+ views: {},
717
+ },
718
+ payment_type_supplier: {
719
+ context: "",
720
+ domain: [],
721
+ help: "Payment type of the supplier",
722
+ relation: "payment.type",
723
+ size: 64,
724
+ string: "Supplier payment type",
725
+ type: "many2one",
726
+ views: {},
727
+ },
728
+ property_account_debtor: {
729
+ context: "",
730
+ digits: [16, 2],
731
+ domain: "[('type', '=', 'receivable')]",
732
+ help:
733
+ "This account will be used as the debtor account for the current partner",
734
+ relation: "account.account",
735
+ required: true,
736
+ string: "Account Debtor",
737
+ type: "many2one",
738
+ views: {},
739
+ },
740
+ property_account_payable: {
741
+ context: "",
742
+ digits: [16, 2],
743
+ domain: "[('type', '=', 'payable')]",
744
+ help:
745
+ "This account will be used instead of the default one as the payable account for the current partner",
746
+ relation: "account.account",
747
+ required: true,
748
+ string: "Account Payable",
749
+ type: "many2one",
750
+ views: {},
751
+ },
752
+ property_account_position: {
753
+ context: "",
754
+ digits: [16, 2],
755
+ domain: [],
756
+ help:
757
+ "The fiscal position will determine taxes and the accounts used for the the partner.",
758
+ relation: "account.fiscal.position",
759
+ string: "Fiscal Position",
760
+ type: "many2one",
761
+ views: {},
762
+ },
763
+ property_account_receivable: {
764
+ context: "",
765
+ digits: [16, 2],
766
+ domain: "[('type', '=', 'receivable')]",
767
+ help:
768
+ "This account will be used instead of the default one as the receivable account for the current partner",
769
+ relation: "account.account",
770
+ required: true,
771
+ string: "Account Receivable",
772
+ type: "many2one",
773
+ views: {},
774
+ },
775
+ property_payment_term: {
776
+ context: "",
777
+ digits: [16, 2],
778
+ domain: [],
779
+ help:
780
+ "This payment term will be used instead of the default one for the current partner",
781
+ relation: "account.payment.term",
782
+ string: "Payment Term",
783
+ type: "many2one",
784
+ views: {},
785
+ },
786
+ property_product_pricelist: {
787
+ context: "",
788
+ digits: [16, 2],
789
+ domain: [["type", "=", "sale"]],
790
+ help:
791
+ "This pricelist will be used, instead of the default one, for sales to the current partner",
792
+ relation: "product.pricelist",
793
+ string: "Sale Pricelist",
794
+ type: "many2one",
795
+ views: {},
796
+ },
797
+ property_product_pricelist_purchase: {
798
+ context: "",
799
+ digits: [16, 2],
800
+ domain: [["type", "=", "purchase"]],
801
+ help:
802
+ "This pricelist will be used, instead of the default one, for purchases from the current partner",
803
+ relation: "product.pricelist",
804
+ string: "Purchase Pricelist",
805
+ type: "many2one",
806
+ views: {},
807
+ },
808
+ property_stock_customer: {
809
+ context: "",
810
+ digits: [16, 2],
811
+ domain: [],
812
+ help:
813
+ "This stock location will be used, instead of the default one, as the destination location for goods you send to this partner",
814
+ relation: "stock.location",
815
+ string: "Customer Location",
816
+ type: "many2one",
817
+ views: {},
818
+ },
819
+ property_stock_supplier: {
820
+ context: "",
821
+ digits: [16, 2],
822
+ domain: [],
823
+ help:
824
+ "This stock location will be used, instead of the default one, as the source location for goods you receive from the current partner",
825
+ relation: "stock.location",
826
+ string: "Supplier Location",
827
+ type: "many2one",
828
+ views: {},
829
+ },
830
+ property_switching_xml_encoding: {
831
+ context: "",
832
+ digits: [16, 2],
833
+ domain: [["name", "!=", false]],
834
+ help:
835
+ "Encoding XML amb el qual es generaran els XML's de switching per aquesta empresa",
836
+ relation: "giscedata.switching.xml.encoding",
837
+ required: true,
838
+ string: "Encoding XML switching",
839
+ type: "many2one",
840
+ views: {},
841
+ },
842
+ ref: {
843
+ select: true,
844
+ size: 64,
845
+ string: "Code",
846
+ type: "char",
847
+ views: {},
848
+ },
849
+ ref2: {
850
+ size: 6,
851
+ string: "Ref2",
852
+ type: "char",
853
+ views: {},
854
+ },
855
+ representante_id: {
856
+ context: "",
857
+ domain: [],
858
+ relation: "res.partner",
859
+ size: 64,
860
+ string: "Representante",
861
+ type: "many2one",
862
+ views: {},
863
+ },
864
+ supplier: {
865
+ help:
866
+ "Check this box if the partner is a supplier. If it's not checked, purchase people will not see it when encoding a purchase order.",
867
+ string: "Supplier",
868
+ type: "boolean",
869
+ views: {},
870
+ },
871
+ title: {
872
+ selection: [
873
+ ["Corp.", "Corp."],
874
+ ["ltd", "Ltd"],
875
+ ["", ""],
876
+ ],
877
+ size: 32,
878
+ string: "Title",
879
+ type: "selection",
880
+ views: {},
881
+ },
882
+ total_debt: {
883
+ digits: [16, 2],
884
+ help: "Total amount this customer debts you.",
885
+ readonly: 1,
886
+ string: "Total Debt",
887
+ type: "float",
888
+ views: {},
889
+ },
890
+ user_id: {
891
+ context: "",
892
+ domain: [],
893
+ help:
894
+ "The internal user that is in charge of communicating with this partner if any.",
895
+ relation: "res.users",
896
+ size: 64,
897
+ string: "Dedicated Salesman",
898
+ type: "many2one",
899
+ views: {},
900
+ },
901
+ vat: {
902
+ help:
903
+ "Value Added Tax number. Check the box if the partner is subjected to the VAT. Used by the VAT legal statement.",
904
+ select: true,
905
+ size: 32,
906
+ string: "VAT",
907
+ type: "char",
908
+ views: {},
909
+ },
910
+ vat_subjected: {
911
+ help:
912
+ "Check this box if the partner is subjected to the VAT. It will be used for the VAT legal statement.",
913
+ string: "VAT Legal Statement",
914
+ type: "boolean",
915
+ views: {},
916
+ },
917
+ website: {
918
+ size: 64,
919
+ string: "Website",
920
+ type: "char",
921
+ views: {},
922
+ },
923
+ };
924
+
925
+ describe("A SearchFilter", () => {
926
+ it("should parse search fields correctly", () => {
927
+ const searchFilter = new SearchFilter(searchFields, fields);
928
+ searchFilter.parse();
929
+
930
+ expect(searchFilter.fields).toBeDefined();
931
+ expect(searchFilter.simpleSearchContainer.rows.length).toBe(3);
932
+ expect(searchFilter.simpleSearchContainer.rows[0].length).toBe(4);
933
+ expect(searchFilter.simpleSearchContainer.rows[1].length).toBe(4);
934
+ expect(searchFilter.simpleSearchContainer.rows[2].length).toBe(2);
935
+
936
+ expect(searchFilter.advancedSearchContainer.rows.length).toBe(6);
937
+ expect(searchFilter.advancedSearchContainer.rows[0].length).toBe(4);
938
+ expect(searchFilter.advancedSearchContainer.rows[1].length).toBe(4);
939
+ expect(searchFilter.advancedSearchContainer.rows[2].length).toBe(4);
940
+ expect(searchFilter.advancedSearchContainer.rows[3].length).toBe(4);
941
+ expect(searchFilter.advancedSearchContainer.rows[4].length).toBe(4);
942
+ expect(searchFilter.advancedSearchContainer.rows[5].length).toBe(1);
943
+
944
+ const nameWidget = searchFilter.findById("name");
945
+ expect(nameWidget).toBeDefined();
946
+ expect(nameWidget!.constructor.name).toBe("Char");
947
+ const debitWidget = searchFilter.findById("debit");
948
+ expect(debitWidget).toBeDefined();
949
+ expect(debitWidget!.constructor.name).toBe("Float");
950
+ const debitWidgetInSimpleSearch = searchFilter.simpleSearchContainer.findById(
951
+ "debit"
952
+ );
953
+ expect(debitWidgetInSimpleSearch).toBeNull();
954
+ });
955
+ });