shutro-erp 0.3.3 → 0.3.5

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 (412) hide show
  1. package/dist/account_portal/.kosh/bindings.js +1 -1
  2. package/dist/account_portal/.kosh/schema.d.ts +181 -3
  3. package/dist/account_portal/module.d.ts +359 -6
  4. package/dist/accounting/.kosh/bindings.js +1 -1
  5. package/dist/accounting/.kosh/schema.d.ts +181 -3
  6. package/dist/accounting/index.js +214 -2
  7. package/dist/accounting/module.d.ts +217 -5
  8. package/dist/accounting/module.js +23 -2
  9. package/dist/calendar/.kosh/bindings.d.ts +22 -0
  10. package/dist/calendar/.kosh/bindings.js +15 -0
  11. package/dist/calendar/.kosh/schema.d.ts +795 -0
  12. package/dist/calendar/demo.d.ts +6 -0
  13. package/dist/calendar/demo.js +24 -0
  14. package/dist/calendar/index.d.ts +3 -0
  15. package/dist/calendar/index.js +291 -0
  16. package/dist/calendar/module.d.ts +1705 -0
  17. package/dist/calendar/module.js +180 -0
  18. package/dist/cli/init.js +48 -0
  19. package/dist/cli/templates.d.ts +1 -1
  20. package/dist/cli/templates.js +137 -0
  21. package/dist/contacts/.kosh/bindings.js +1 -1
  22. package/dist/contacts/.kosh/schema.d.ts +205 -3
  23. package/dist/contacts/demo.js +30 -1
  24. package/dist/contacts/index.d.ts +1 -1
  25. package/dist/contacts/index.js +155 -9
  26. package/dist/contacts/module.d.ts +338 -2
  27. package/dist/contacts/module.js +82 -5
  28. package/dist/crm/.kosh/bindings.d.ts +22 -0
  29. package/dist/crm/.kosh/bindings.js +15 -0
  30. package/dist/crm/.kosh/schema.d.ts +799 -0
  31. package/dist/crm/demo.d.ts +6 -0
  32. package/dist/crm/demo.js +45 -0
  33. package/dist/crm/index.d.ts +3 -0
  34. package/dist/crm/index.js +361 -0
  35. package/dist/crm/module.d.ts +1843 -0
  36. package/dist/crm/module.js +207 -0
  37. package/dist/event/.kosh/bindings.d.ts +22 -0
  38. package/dist/event/.kosh/bindings.js +15 -0
  39. package/dist/event/.kosh/schema.d.ts +843 -0
  40. package/dist/event/demo.d.ts +6 -0
  41. package/dist/event/demo.js +65 -0
  42. package/dist/event/index.d.ts +14 -0
  43. package/dist/event/index.js +333 -0
  44. package/dist/event/mails.d.ts +15 -0
  45. package/dist/event/mails.js +112 -0
  46. package/dist/event/module.d.ts +2800 -0
  47. package/dist/event/module.js +323 -0
  48. package/dist/event/web/CheckInBox.d.ts +9 -0
  49. package/dist/event/web/CheckInBox.js +87 -0
  50. package/dist/event/web/index.d.ts +11 -0
  51. package/dist/event/web/index.js +16 -0
  52. package/dist/event/web/messages.d.ts +2 -0
  53. package/dist/event/web/messages.js +23 -0
  54. package/dist/event_account/.kosh/bindings.d.ts +22 -0
  55. package/dist/event_account/.kosh/bindings.js +15 -0
  56. package/dist/event_account/.kosh/schema.d.ts +1639 -0
  57. package/dist/event_account/index.d.ts +3 -0
  58. package/dist/event_account/index.js +28 -0
  59. package/dist/event_account/module.d.ts +6968 -0
  60. package/dist/event_account/module.js +90 -0
  61. package/dist/hr/.kosh/bindings.d.ts +22 -0
  62. package/dist/hr/.kosh/bindings.js +15 -0
  63. package/dist/hr/.kosh/schema.d.ts +878 -0
  64. package/dist/hr/demo.d.ts +6 -0
  65. package/dist/hr/demo.js +60 -0
  66. package/dist/hr/index.d.ts +3 -0
  67. package/dist/hr/index.js +483 -0
  68. package/dist/hr/module.d.ts +2611 -0
  69. package/dist/hr/module.js +350 -0
  70. package/dist/integrations/index.js +12 -0
  71. package/dist/integrations/web/OAuthAppsPage.d.ts +9 -0
  72. package/dist/integrations/web/OAuthAppsPage.js +79 -0
  73. package/dist/integrations/web/index.d.ts +1 -0
  74. package/dist/integrations/web/index.js +3 -0
  75. package/dist/integrations/web/messages.js +58 -0
  76. package/dist/l10n_bd/.kosh/bindings.js +1 -1
  77. package/dist/l10n_bd/.kosh/schema.d.ts +181 -3
  78. package/dist/l10n_bd/module.d.ts +359 -6
  79. package/dist/l10n_in/.kosh/bindings.js +1 -1
  80. package/dist/l10n_in/.kosh/schema.d.ts +181 -3
  81. package/dist/l10n_in/module.d.ts +380 -7
  82. package/dist/maintenance/.kosh/bindings.d.ts +22 -0
  83. package/dist/maintenance/.kosh/bindings.js +15 -0
  84. package/dist/maintenance/.kosh/schema.d.ts +911 -0
  85. package/dist/maintenance/demo.d.ts +6 -0
  86. package/dist/maintenance/demo.js +60 -0
  87. package/dist/maintenance/index.d.ts +3 -0
  88. package/dist/maintenance/index.js +422 -0
  89. package/dist/maintenance/module.d.ts +3545 -0
  90. package/dist/maintenance/module.js +446 -0
  91. package/dist/maintenance_stock/.kosh/bindings.d.ts +22 -0
  92. package/dist/maintenance_stock/.kosh/bindings.js +15 -0
  93. package/dist/maintenance_stock/.kosh/schema.d.ts +1371 -0
  94. package/dist/maintenance_stock/index.d.ts +9 -0
  95. package/dist/maintenance_stock/index.js +52 -0
  96. package/dist/maintenance_stock/module.d.ts +6953 -0
  97. package/dist/maintenance_stock/module.js +192 -0
  98. package/dist/messaging/web/index.js +1 -1
  99. package/dist/modules-sdk/index.d.ts +1 -1
  100. package/dist/modules-sdk/manifest.d.ts +70 -0
  101. package/dist/modules-sdk/manifest.js +35 -1
  102. package/dist/mrp/.kosh/bindings.d.ts +22 -0
  103. package/dist/mrp/.kosh/bindings.js +15 -0
  104. package/dist/mrp/.kosh/schema.d.ts +1378 -0
  105. package/dist/mrp/demo.d.ts +7 -0
  106. package/dist/mrp/demo.js +42 -0
  107. package/dist/mrp/index.d.ts +3 -0
  108. package/dist/mrp/index.js +392 -0
  109. package/dist/mrp/module.d.ts +8608 -0
  110. package/dist/mrp/module.js +695 -0
  111. package/dist/mrp_account/.kosh/bindings.d.ts +22 -0
  112. package/dist/mrp_account/.kosh/bindings.js +15 -0
  113. package/dist/mrp_account/.kosh/schema.d.ts +2106 -0
  114. package/dist/mrp_account/index.d.ts +3 -0
  115. package/dist/mrp_account/index.js +22 -0
  116. package/dist/mrp_account/module.d.ts +20840 -0
  117. package/dist/mrp_account/module.js +123 -0
  118. package/dist/notify/web/index.js +1 -1
  119. package/dist/payment/.kosh/bindings.js +1 -1
  120. package/dist/payment/.kosh/schema.d.ts +181 -3
  121. package/dist/payment/module.d.ts +359 -6
  122. package/dist/portal/.kosh/bindings.js +1 -1
  123. package/dist/portal/.kosh/schema.d.ts +205 -3
  124. package/dist/portal/module.d.ts +166 -2
  125. package/dist/pos/.kosh/bindings.d.ts +22 -0
  126. package/dist/pos/.kosh/bindings.js +15 -0
  127. package/dist/pos/.kosh/schema.d.ts +1690 -0
  128. package/dist/pos/accounting.d.ts +10 -0
  129. package/dist/pos/accounting.js +149 -0
  130. package/dist/pos/demo.d.ts +6 -0
  131. package/dist/pos/demo.js +90 -0
  132. package/dist/pos/index.d.ts +9 -0
  133. package/dist/pos/index.js +349 -0
  134. package/dist/pos/module.d.ts +9636 -0
  135. package/dist/pos/module.js +423 -0
  136. package/dist/pos/routes.d.ts +39 -0
  137. package/dist/pos/routes.js +368 -0
  138. package/dist/pos/web/Register.d.ts +9 -0
  139. package/dist/pos/web/Register.js +252 -0
  140. package/dist/pos/web/index.d.ts +11 -0
  141. package/dist/pos/web/index.js +16 -0
  142. package/dist/pos/web/messages.d.ts +2 -0
  143. package/dist/pos/web/messages.js +87 -0
  144. package/dist/pos_stock/.kosh/bindings.d.ts +22 -0
  145. package/dist/pos_stock/.kosh/bindings.js +15 -0
  146. package/dist/pos_stock/.kosh/schema.d.ts +2015 -0
  147. package/dist/pos_stock/index.d.ts +9 -0
  148. package/dist/pos_stock/index.js +35 -0
  149. package/dist/pos_stock/module.d.ts +11935 -0
  150. package/dist/pos_stock/module.js +115 -0
  151. package/dist/product/.kosh/bindings.js +1 -1
  152. package/dist/product/.kosh/schema.d.ts +178 -1
  153. package/dist/product/index.js +81 -4
  154. package/dist/product/module.d.ts +43 -1
  155. package/dist/product/module.js +9 -2
  156. package/dist/project/.kosh/bindings.js +1 -1
  157. package/dist/project/.kosh/schema.d.ts +181 -3
  158. package/dist/project/index.js +147 -7
  159. package/dist/project/module.d.ts +210 -2
  160. package/dist/project/module.js +52 -5
  161. package/dist/project_portal/.kosh/bindings.js +1 -1
  162. package/dist/project_portal/.kosh/schema.d.ts +181 -3
  163. package/dist/project_portal/module.d.ts +353 -4
  164. package/dist/purchase/.kosh/bindings.js +1 -1
  165. package/dist/purchase/.kosh/schema.d.ts +181 -3
  166. package/dist/purchase/index.js +163 -3
  167. package/dist/purchase/module.d.ts +215 -3
  168. package/dist/purchase/module.js +21 -3
  169. package/dist/purchase_account/.kosh/bindings.js +1 -1
  170. package/dist/purchase_account/.kosh/schema.d.ts +182 -3
  171. package/dist/purchase_account/index.js +26 -1
  172. package/dist/purchase_account/module.d.ts +393 -7
  173. package/dist/purchase_portal/.kosh/bindings.js +1 -1
  174. package/dist/purchase_portal/.kosh/schema.d.ts +181 -3
  175. package/dist/purchase_portal/module.d.ts +366 -5
  176. package/dist/purchase_stock/.kosh/bindings.d.ts +22 -0
  177. package/dist/purchase_stock/.kosh/bindings.js +15 -0
  178. package/dist/purchase_stock/.kosh/schema.d.ts +1310 -0
  179. package/dist/purchase_stock/index.d.ts +7 -0
  180. package/dist/purchase_stock/index.js +91 -0
  181. package/dist/purchase_stock/module.d.ts +6763 -0
  182. package/dist/purchase_stock/module.js +144 -0
  183. package/dist/purchase_stock_account/.kosh/bindings.d.ts +22 -0
  184. package/dist/purchase_stock_account/.kosh/bindings.js +15 -0
  185. package/dist/purchase_stock_account/.kosh/schema.d.ts +1959 -0
  186. package/dist/purchase_stock_account/index.d.ts +3 -0
  187. package/dist/purchase_stock_account/index.js +24 -0
  188. package/dist/purchase_stock_account/module.d.ts +35366 -0
  189. package/dist/purchase_stock_account/module.js +162 -0
  190. package/dist/recruitment/.kosh/bindings.d.ts +22 -0
  191. package/dist/recruitment/.kosh/bindings.js +15 -0
  192. package/dist/recruitment/.kosh/schema.d.ts +990 -0
  193. package/dist/recruitment/demo.d.ts +6 -0
  194. package/dist/recruitment/demo.js +45 -0
  195. package/dist/recruitment/index.d.ts +3 -0
  196. package/dist/recruitment/index.js +385 -0
  197. package/dist/recruitment/module.d.ts +3247 -0
  198. package/dist/recruitment/module.js +193 -0
  199. package/dist/recruitment/web/HireButton.d.ts +9 -0
  200. package/dist/recruitment/web/HireButton.js +32 -0
  201. package/dist/recruitment/web/index.d.ts +11 -0
  202. package/dist/recruitment/web/index.js +16 -0
  203. package/dist/recruitment/web/messages.d.ts +2 -0
  204. package/dist/recruitment/web/messages.js +19 -0
  205. package/dist/reporting/documents.d.ts +5 -0
  206. package/dist/reporting/documents.js +28 -1
  207. package/dist/reporting/index.d.ts +1 -1
  208. package/dist/reporting/index.js +4 -2
  209. package/dist/reporting/models.js +9 -0
  210. package/dist/reporting/overviews.d.ts +16 -0
  211. package/dist/reporting/overviews.js +56 -0
  212. package/dist/reporting/routes-documents.js +1 -1
  213. package/dist/reporting/routes.js +138 -80
  214. package/dist/reporting/web/DashboardView.d.ts +11 -0
  215. package/dist/reporting/web/DashboardView.js +2 -2
  216. package/dist/reporting/web/DesignerView.js +5 -0
  217. package/dist/reporting/web/Overview.d.ts +9 -0
  218. package/dist/reporting/web/Overview.js +53 -0
  219. package/dist/reporting/web/index.d.ts +1 -0
  220. package/dist/reporting/web/index.js +4 -1
  221. package/dist/reporting/web/messages.js +9 -0
  222. package/dist/sale_account/.kosh/bindings.js +1 -1
  223. package/dist/sale_account/.kosh/schema.d.ts +186 -3
  224. package/dist/sale_account/index.js +22 -1
  225. package/dist/sale_account/module.d.ts +461 -7
  226. package/dist/sale_portal/.kosh/bindings.js +1 -1
  227. package/dist/sale_portal/.kosh/schema.d.ts +185 -3
  228. package/dist/sale_portal/module.d.ts +434 -5
  229. package/dist/sale_project/.kosh/bindings.js +1 -1
  230. package/dist/sale_project/.kosh/schema.d.ts +187 -3
  231. package/dist/sale_project/module.d.ts +476 -6
  232. package/dist/sale_stock/.kosh/bindings.d.ts +22 -0
  233. package/dist/sale_stock/.kosh/bindings.js +15 -0
  234. package/dist/sale_stock/.kosh/schema.d.ts +1228 -0
  235. package/dist/sale_stock/index.d.ts +7 -0
  236. package/dist/sale_stock/index.js +84 -0
  237. package/dist/sale_stock/module.d.ts +6791 -0
  238. package/dist/sale_stock/module.js +146 -0
  239. package/dist/sales/.kosh/bindings.js +1 -1
  240. package/dist/sales/.kosh/schema.d.ts +185 -3
  241. package/dist/sales/index.js +191 -4
  242. package/dist/sales/module.d.ts +355 -3
  243. package/dist/sales/module.js +78 -3
  244. package/dist/server/api/metadata.d.ts +5 -0
  245. package/dist/server/api/metadata.js +5 -0
  246. package/dist/server/api/rest.js +64 -1
  247. package/dist/server/api/views.js +1 -0
  248. package/dist/server/app-settings.d.ts +7 -0
  249. package/dist/server/app-settings.js +10 -0
  250. package/dist/server/auth/base.js +85 -0
  251. package/dist/server/auth/oauth.d.ts +21 -0
  252. package/dist/server/auth/oauth.js +579 -0
  253. package/dist/server/auth/service.d.ts +4 -0
  254. package/dist/server/auth/service.js +17 -0
  255. package/dist/server/identity.d.ts +2 -0
  256. package/dist/server/images.d.ts +12 -0
  257. package/dist/server/images.js +139 -0
  258. package/dist/server/index.d.ts +2 -0
  259. package/dist/server/index.js +2 -0
  260. package/dist/server/server.d.ts +4 -0
  261. package/dist/server/server.js +9 -1
  262. package/dist/settings/app-settings.d.ts +2 -0
  263. package/dist/settings/app-settings.js +518 -0
  264. package/dist/settings/company.js +3 -1
  265. package/dist/settings/index.d.ts +1 -0
  266. package/dist/settings/index.js +15 -0
  267. package/dist/settings/people.js +32 -6
  268. package/dist/settings/web/AppSettingsPage.d.ts +11 -0
  269. package/dist/settings/web/AppSettingsPage.js +210 -0
  270. package/dist/settings/web/CompaniesPage.js +2 -2
  271. package/dist/settings/web/CompanyPage.js +13 -2
  272. package/dist/settings/web/ConnectedAppsPage.d.ts +7 -0
  273. package/dist/settings/web/ConnectedAppsPage.js +33 -0
  274. package/dist/settings/web/OverviewPage.js +28 -4
  275. package/dist/settings/web/PeoplePage.js +23 -18
  276. package/dist/settings/web/ProfilePage.js +9 -7
  277. package/dist/settings/web/index.d.ts +2 -0
  278. package/dist/settings/web/index.js +8 -0
  279. package/dist/settings/web/messages.js +146 -2
  280. package/dist/stock/.kosh/bindings.d.ts +22 -0
  281. package/dist/stock/.kosh/bindings.js +15 -0
  282. package/dist/stock/.kosh/schema.d.ts +1147 -0
  283. package/dist/stock/demo.d.ts +7 -0
  284. package/dist/stock/demo.js +55 -0
  285. package/dist/stock/index.d.ts +3 -0
  286. package/dist/stock/index.js +674 -0
  287. package/dist/stock/module.d.ts +6330 -0
  288. package/dist/stock/module.js +1325 -0
  289. package/dist/stock/web/ScanBox.d.ts +8 -0
  290. package/dist/stock/web/ScanBox.js +90 -0
  291. package/dist/stock/web/index.d.ts +11 -0
  292. package/dist/stock/web/index.js +16 -0
  293. package/dist/stock/web/messages.d.ts +2 -0
  294. package/dist/stock/web/messages.js +25 -0
  295. package/dist/stock_account/.kosh/bindings.d.ts +22 -0
  296. package/dist/stock_account/.kosh/bindings.js +15 -0
  297. package/dist/stock_account/.kosh/schema.d.ts +1875 -0
  298. package/dist/stock_account/index.d.ts +3 -0
  299. package/dist/stock_account/index.js +130 -0
  300. package/dist/stock_account/module.d.ts +10655 -0
  301. package/dist/stock_account/module.js +339 -0
  302. package/dist/storage/attachments.d.ts +5 -0
  303. package/dist/storage/attachments.js +12 -1
  304. package/dist/storage/models.js +3 -0
  305. package/dist/storage/routes.js +13 -2
  306. package/dist/todo/.kosh/bindings.d.ts +22 -0
  307. package/dist/todo/.kosh/bindings.js +15 -0
  308. package/dist/todo/.kosh/schema.d.ts +732 -0
  309. package/dist/todo/demo.d.ts +6 -0
  310. package/dist/todo/demo.js +35 -0
  311. package/dist/todo/index.d.ts +3 -0
  312. package/dist/todo/index.js +187 -0
  313. package/dist/todo/module.d.ts +1180 -0
  314. package/dist/todo/module.js +130 -0
  315. package/dist/trade_finance/.kosh/bindings.d.ts +22 -0
  316. package/dist/trade_finance/.kosh/bindings.js +15 -0
  317. package/dist/trade_finance/.kosh/schema.d.ts +884 -0
  318. package/dist/trade_finance/demo.d.ts +6 -0
  319. package/dist/trade_finance/demo.js +63 -0
  320. package/dist/trade_finance/index.d.ts +3 -0
  321. package/dist/trade_finance/index.js +413 -0
  322. package/dist/trade_finance/module.d.ts +3779 -0
  323. package/dist/trade_finance/module.js +505 -0
  324. package/dist/trade_finance_account/.kosh/bindings.d.ts +22 -0
  325. package/dist/trade_finance_account/.kosh/bindings.js +15 -0
  326. package/dist/trade_finance_account/.kosh/schema.d.ts +1711 -0
  327. package/dist/trade_finance_account/index.d.ts +3 -0
  328. package/dist/trade_finance_account/index.js +92 -0
  329. package/dist/trade_finance_account/module.d.ts +7928 -0
  330. package/dist/trade_finance_account/module.js +244 -0
  331. package/dist/trade_finance_purchase/.kosh/bindings.d.ts +22 -0
  332. package/dist/trade_finance_purchase/.kosh/bindings.js +15 -0
  333. package/dist/trade_finance_purchase/.kosh/schema.d.ts +1153 -0
  334. package/dist/trade_finance_purchase/index.d.ts +8 -0
  335. package/dist/trade_finance_purchase/index.js +50 -0
  336. package/dist/trade_finance_purchase/module.d.ts +4252 -0
  337. package/dist/trade_finance_purchase/module.js +44 -0
  338. package/dist/trade_finance_sale/.kosh/bindings.d.ts +22 -0
  339. package/dist/trade_finance_sale/.kosh/bindings.js +15 -0
  340. package/dist/trade_finance_sale/.kosh/schema.d.ts +1071 -0
  341. package/dist/trade_finance_sale/index.d.ts +8 -0
  342. package/dist/trade_finance_sale/index.js +50 -0
  343. package/dist/trade_finance_sale/module.d.ts +4280 -0
  344. package/dist/trade_finance_sale/module.js +44 -0
  345. package/dist/ui/api.d.ts +6 -1
  346. package/dist/ui/api.js +2 -1
  347. package/dist/ui/app.js +51 -17
  348. package/dist/ui/components/AppIcon.js +33 -1
  349. package/dist/ui/components/Avatar.d.ts +21 -0
  350. package/dist/ui/components/Avatar.js +71 -0
  351. package/dist/ui/components/primitives.d.ts +2 -0
  352. package/dist/ui/components/primitives.js +7 -1
  353. package/dist/ui/i18n/messages.d.ts +53 -0
  354. package/dist/ui/i18n/messages.js +98 -0
  355. package/dist/ui/index.d.ts +2 -0
  356. package/dist/ui/index.js +2 -0
  357. package/dist/ui/offline/queue.d.ts +5 -1
  358. package/dist/ui/offline/queue.js +2 -0
  359. package/dist/ui/registry.d.ts +12 -1
  360. package/dist/ui/registry.js +10 -1
  361. package/dist/ui/search/ViewTabs.d.ts +14 -0
  362. package/dist/ui/search/ViewTabs.js +42 -0
  363. package/dist/ui/shell/Consent.d.ts +5 -0
  364. package/dist/ui/shell/Consent.js +35 -0
  365. package/dist/ui/shell/Home.js +136 -16
  366. package/dist/ui/shell/Sidebar.js +15 -22
  367. package/dist/ui/views/FormView.js +98 -17
  368. package/dist/ui/views/KanbanView.d.ts +2 -0
  369. package/dist/ui/views/KanbanView.js +32 -3
  370. package/dist/ui/views/ListView.js +155 -31
  371. package/dist/ui/views/StatsRow.d.ts +14 -0
  372. package/dist/ui/views/StatsRow.js +88 -0
  373. package/dist/ui/views/widgets.d.ts +2 -1
  374. package/dist/ui/views/widgets.js +194 -1
  375. package/dist/views/builders.d.ts +19 -2
  376. package/dist/views/builders.js +21 -1
  377. package/dist/views/condition.d.ts +6 -0
  378. package/dist/views/condition.js +20 -0
  379. package/dist/views/documents.d.ts +8 -0
  380. package/dist/views/extend.d.ts +2 -2
  381. package/dist/views/extend.js +11 -1
  382. package/dist/views/index.d.ts +2 -2
  383. package/dist/views/index.js +2 -2
  384. package/dist/views/types.d.ts +52 -5
  385. package/dist/views/validate.js +39 -1
  386. package/dist/website/.kosh/bindings.d.ts +22 -0
  387. package/dist/website/.kosh/bindings.js +15 -0
  388. package/dist/website/.kosh/schema.d.ts +881 -0
  389. package/dist/website/demo.d.ts +6 -0
  390. package/dist/website/demo.js +115 -0
  391. package/dist/website/index.d.ts +9 -0
  392. package/dist/website/index.js +250 -0
  393. package/dist/website/module.d.ts +2987 -0
  394. package/dist/website/module.js +281 -0
  395. package/dist/website/render.d.ts +45 -0
  396. package/dist/website/render.js +102 -0
  397. package/dist/website/routes.d.ts +12 -0
  398. package/dist/website/routes.js +246 -0
  399. package/dist/website/web/PagePreview.d.ts +7 -0
  400. package/dist/website/web/PagePreview.js +33 -0
  401. package/dist/website/web/index.d.ts +11 -0
  402. package/dist/website/web/index.js +16 -0
  403. package/dist/website/web/messages.d.ts +2 -0
  404. package/dist/website/web/messages.js +15 -0
  405. package/dist/website_crm/.kosh/bindings.d.ts +22 -0
  406. package/dist/website_crm/.kosh/bindings.js +15 -0
  407. package/dist/website_crm/.kosh/schema.d.ts +966 -0
  408. package/dist/website_crm/index.d.ts +3 -0
  409. package/dist/website_crm/index.js +39 -0
  410. package/dist/website_crm/module.d.ts +2955 -0
  411. package/dist/website_crm/module.js +44 -0
  412. package/package.json +118 -1
@@ -9,8 +9,17 @@ const COMPANIES = [
9
9
  isVendor: true,
10
10
  email: 'orders@bengalsteel.example',
11
11
  phone: '+880 31 710000',
12
+ latitude: '22.3569',
13
+ longitude: '91.7832',
14
+ },
15
+ {
16
+ name: 'Acme Trading',
17
+ city: 'Dhaka',
18
+ isCustomer: true,
19
+ email: 'hello@acme.example',
20
+ latitude: '23.8103',
21
+ longitude: '90.4125',
12
22
  },
13
- { name: 'Acme Trading', city: 'Dhaka', isCustomer: true, email: 'hello@acme.example' },
14
23
  { name: 'Padma Cement', city: 'Narayanganj', isVendor: true, email: 'sales@padmacement.example' },
15
24
  { name: 'Meghna Electronics', city: 'Dhaka', isCustomer: true, isVendor: true },
16
25
  { name: 'Sylhet Tea Estates', city: 'Sylhet', isCustomer: true },
@@ -29,6 +38,26 @@ export async function contactsDemo(context) {
29
38
  const partners = env.model('res.partner');
30
39
  const companies = await partners.create(COMPANIES.map((c) => ({ ...c, isCompany: true, country: 'BD' })));
31
40
  const byName = new Map(COMPANIES.map((c, i) => [c.name, companies.ids[i]]));
41
+ // Tags (RFC 0022 step 2): key accounts and the partners we both buy from and sell to.
42
+ const tags = await env
43
+ .model('res.partner.tag')
44
+ .create([{ name: 'Key account' }, { name: 'Both ways' }, { name: 'Prospect' }]);
45
+ const [keyAccount, bothWays] = tags.ids;
46
+ for (const c of COMPANIES) {
47
+ const id = byName.get(c.name);
48
+ if (id === undefined)
49
+ continue;
50
+ const wanted = [
51
+ ...(c.isCustomer === true &&
52
+ c.isVendor === true &&
53
+ bothWays !== undefined
54
+ ? [bothWays]
55
+ : []),
56
+ ...(c.name === 'Bengal Steel Ltd' && keyAccount !== undefined ? [keyAccount] : []),
57
+ ];
58
+ if (wanted.length > 0)
59
+ await partners.browse([id]).write({ tags: { set: wanted } });
60
+ }
32
61
  await partners.create(PEOPLE.map(({ company, ...p }) => ({
33
62
  ...p,
34
63
  parent: orm.asId(byName.get(company), 'res.partner'),
@@ -5,5 +5,5 @@
5
5
  */
6
6
  import { defineModule } from '../modules-sdk/index.js';
7
7
  export { contactsDemo, DINA } from './demo.js';
8
- export { contactsShutro, ResPartner } from './module.js';
8
+ export { contactsShutro, ResPartner, ResPartnerTag } from './module.js';
9
9
  export declare const contacts: ReturnType<typeof defineModule>;
@@ -4,17 +4,42 @@
4
4
  * Purchase and Accounting deal with.
5
5
  */
6
6
  import { defineModule } from '../modules-sdk/index.js';
7
+ import { reporting } from '../reporting/index.js';
7
8
  import { base } from '../server/index.js';
8
- import { action, form, hierarchy, list, search } from '../views/index.js';
9
+ import { storage } from '../storage/index.js';
10
+ import { action, form, hierarchy, kanban, list, map, search } from '../views/index.js';
9
11
  import { contactsDemo } from './demo.js';
10
- import { contactsShutro, ResPartner } from './module.js';
12
+ import { contactsShutro, ResPartner, ResPartnerTag } from './module.js';
11
13
  export { contactsDemo, DINA } from './demo.js';
12
- export { contactsShutro, ResPartner } from './module.js';
14
+ export { contactsShutro, ResPartner, ResPartnerTag } from './module.js';
13
15
  export const contacts = defineModule({
14
16
  shutro: contactsShutro,
15
17
  kosh: '^0.1.0',
16
18
  hooks: { demo: contactsDemo },
17
- depends: [base],
19
+ // What a new contact needs (RFC 0020), per company.
20
+ settings: {
21
+ sections: [
22
+ {
23
+ key: 'contacts',
24
+ label: 'New contacts',
25
+ description: 'What a contact needs before it is saved, in this company.',
26
+ keywords: 'tax id BIN TIN GSTIN required duplicate email unique',
27
+ scope: 'company',
28
+ editors: ['contacts.manager'],
29
+ fields: [
30
+ {
31
+ key: 'contactTaxIdRequired',
32
+ help: 'A customer cannot be saved without a tax ID (BIN, TIN, GSTIN…).',
33
+ },
34
+ {
35
+ key: 'contactUniqueEmail',
36
+ help: 'Two contacts cannot share an email address.',
37
+ },
38
+ ],
39
+ },
40
+ ],
41
+ },
42
+ depends: [base, storage, reporting],
18
43
  app: {
19
44
  code: 'contacts',
20
45
  label: 'Contacts',
@@ -51,8 +76,70 @@ export const contacts = defineModule({
51
76
  actions: {
52
77
  'contacts.action_partners': action(ResPartner, {
53
78
  label: 'Contacts',
54
- views: ['list', 'hierarchy', 'form'],
79
+ views: ['list', 'kanban', 'map', 'hierarchy', 'form'],
55
80
  }),
81
+ 'contacts.action_tags': action(ResPartnerTag, { label: 'Tags', views: ['list', 'form'] }),
82
+ },
83
+ // The Overview (RFC 0022 step 2): how many, who buys and who sells, where they are, the month's new ones.
84
+ overview: {
85
+ cards: [
86
+ {
87
+ id: 'contacts_all',
88
+ title: 'Contacts',
89
+ kind: 'kpi',
90
+ model: 'res.partner',
91
+ measure: 'count',
92
+ w: 3,
93
+ },
94
+ {
95
+ id: 'customers',
96
+ title: 'Customers',
97
+ kind: 'kpi',
98
+ model: 'res.partner',
99
+ measure: 'count',
100
+ filter: { isCustomer: true },
101
+ w: 3,
102
+ },
103
+ {
104
+ id: 'vendors',
105
+ title: 'Vendors',
106
+ kind: 'kpi',
107
+ model: 'res.partner',
108
+ measure: 'count',
109
+ filter: { isVendor: true },
110
+ w: 3,
111
+ },
112
+ {
113
+ id: 'new_month',
114
+ title: 'New this month',
115
+ kind: 'kpi',
116
+ model: 'res.partner',
117
+ measure: 'count',
118
+ comparison: { field: 'createdAt', mode: 'previous' },
119
+ w: 3,
120
+ },
121
+ {
122
+ id: 'by_country',
123
+ title: 'By country',
124
+ kind: 'chart',
125
+ model: 'res.partner',
126
+ measure: 'count',
127
+ groupBy: 'country',
128
+ chart: 'pie',
129
+ w: 6,
130
+ },
131
+ {
132
+ id: 'by_city',
133
+ title: 'Companies by city',
134
+ kind: 'chart',
135
+ model: 'res.partner',
136
+ measure: 'count',
137
+ groupBy: 'city',
138
+ filter: { isCompany: true },
139
+ chart: 'bar',
140
+ w: 6,
141
+ },
142
+ ],
56
143
  },
57
144
  menus: [
58
145
  { id: 'contacts.root', label: 'Contacts', app: 'contacts' },
@@ -62,12 +149,52 @@ export const contacts = defineModule({
62
149
  label: 'Contacts',
63
150
  action: 'contacts.action_partners',
64
151
  },
152
+ {
153
+ id: 'contacts.tags',
154
+ parent: 'contacts.root',
155
+ label: 'Tags',
156
+ action: 'contacts.action_tags',
157
+ sequence: 9,
158
+ visibleTo: ['contacts.manager'],
159
+ },
65
160
  ],
66
161
  views: {
67
162
  'res.partner.list': list(ResPartner, {
68
- columns: ['name', 'email', 'phone', 'city', 'country', 'isCustomer', 'isVendor'],
163
+ columns: [
164
+ { field: 'image', widget: 'avatar' },
165
+ 'name',
166
+ { field: 'email', widget: 'email' },
167
+ { field: 'phone', widget: 'phone' },
168
+ 'city',
169
+ 'country',
170
+ { field: 'tags', widget: 'tags' },
171
+ 'isCustomer',
172
+ 'isVendor',
173
+ ],
69
174
  defaultOrder: ['name asc'],
70
175
  }),
176
+ 'res.partner.kanban': kanban(ResPartner, {
177
+ groupBy: 'city',
178
+ card: {
179
+ title: 'name',
180
+ subtitle: 'parent',
181
+ avatar: 'image',
182
+ footer: [
183
+ { field: 'email', widget: 'email' },
184
+ { field: 'tags', widget: 'tags' },
185
+ ],
186
+ },
187
+ }),
188
+ 'res.partner.map': map(ResPartner, {
189
+ latitude: 'latitude',
190
+ longitude: 'longitude',
191
+ title: 'name',
192
+ subtitle: 'city',
193
+ }),
194
+ 'res.partner.tag.list': list(ResPartnerTag, { columns: ['name'], inlineEdit: ['name'] }),
195
+ 'res.partner.tag.form': form(ResPartnerTag, (k) => ({
196
+ sheet: [k.group('main', ['name'])],
197
+ })),
71
198
  'res.partner.hierarchy': hierarchy(ResPartner, {
72
199
  parent: 'parent',
73
200
  title: 'name',
@@ -75,11 +202,29 @@ export const contacts = defineModule({
75
202
  }),
76
203
  'res.partner.form': form(ResPartner, (k) => ({
77
204
  sheet: [
78
- k.group('identity', ['name', 'isCompany', 'parent', 'taxId']),
79
- k.group('reach', ['email', 'phone', 'mobile', 'website']),
205
+ // What relates to this contact: Sales, Purchase and Accounting append their tiles (RFC 0022 §3.1).
206
+ k.stats('related', []),
207
+ k.group('identity', [
208
+ { field: 'image', widget: 'image' },
209
+ 'name',
210
+ 'isCompany',
211
+ 'parent',
212
+ 'taxId',
213
+ { field: 'tags', widget: 'tags' },
214
+ ]),
215
+ k.group('reach', [
216
+ { field: 'email', widget: 'email' },
217
+ { field: 'phone', widget: 'phone' },
218
+ { field: 'mobile', widget: 'phone' },
219
+ { field: 'website', widget: 'url' },
220
+ ]),
80
221
  k.notebook('more', [
81
222
  k.page('address', 'Address', [
82
223
  k.group('where', ['street', 'city', 'zip', 'state', 'country']),
224
+ k.group('position', ['latitude', 'longitude'], {
225
+ label: 'On the map',
226
+ description: 'Decimal degrees; the Map view shows contacts that have them.',
227
+ }),
83
228
  ]),
84
229
  k.page('sales', 'Sales & purchase', [
85
230
  k.group('roles', ['isCustomer', 'isVendor', 'currency']),
@@ -90,8 +235,9 @@ export const contacts = defineModule({
90
235
  })),
91
236
  },
92
237
  search: {
238
+ 'res.partner.tag': search(ResPartnerTag, { fields: ['name'] }),
93
239
  'res.partner': search(ResPartner, {
94
- fields: ['name', 'email', 'phone', 'city', 'taxId'],
240
+ fields: ['name', 'email', 'phone', 'city', 'taxId', 'tags.name'],
95
241
  filters: {
96
242
  companies: { label: 'Companies', domain: { isCompany: true }, group: 'kind' },
97
243
  people: { label: 'People', domain: { isCompany: false }, group: 'kind' },
@@ -1,3 +1,91 @@
1
+ /** A tag on contacts (RFC 0022 step 2): shared by every company, kept by Contacts managers. */
2
+ export declare const ResPartnerTag: import("../server/orm.js").Model<"res.partner.tag", {
3
+ readonly id: import("../server/orm.js").IdField<"res.partner.tag">;
4
+ readonly createdAt: import("../server/orm.js").ScalarField<'datetime', Date, Date, {
5
+ required: true;
6
+ readonly: true;
7
+ computed: false;
8
+ inverse: false;
9
+ hasDefault: false;
10
+ sequence: false;
11
+ }>;
12
+ readonly updatedAt: import("../server/orm.js").ScalarField<'datetime', Date, Date, {
13
+ required: true;
14
+ readonly: true;
15
+ computed: false;
16
+ inverse: false;
17
+ hasDefault: false;
18
+ sequence: false;
19
+ }>;
20
+ readonly createdBy: import("../server/orm.js").Many2oneField<'res.users', {
21
+ required: false;
22
+ readonly: true;
23
+ computed: false;
24
+ inverse: false;
25
+ hasDefault: false;
26
+ sequence: false;
27
+ }>;
28
+ readonly updatedBy: import("../server/orm.js").Many2oneField<'res.users', {
29
+ required: false;
30
+ readonly: true;
31
+ computed: false;
32
+ inverse: false;
33
+ hasDefault: false;
34
+ sequence: false;
35
+ }>;
36
+ readonly displayName: import("../server/orm.js").CharField<{
37
+ required: true;
38
+ readonly: true;
39
+ computed: true;
40
+ inverse: false;
41
+ hasDefault: false;
42
+ sequence: false;
43
+ }>;
44
+ readonly name: import("../server/orm.js").CharField<{
45
+ readonly required: true;
46
+ readonly computed: false;
47
+ readonly inverse: false;
48
+ readonly sequence: false;
49
+ readonly computeName: undefined;
50
+ readonly store: true;
51
+ readonly hasDefault: false;
52
+ readonly readonly: false;
53
+ }, string>;
54
+ }, {} & import("../server/orm.js").TransitionMethods<{
55
+ readonly name: import("../server/orm.js").CharField<{
56
+ readonly required: true;
57
+ readonly computed: false;
58
+ readonly inverse: false;
59
+ readonly sequence: false;
60
+ readonly computeName: undefined;
61
+ readonly store: true;
62
+ readonly hasDefault: false;
63
+ readonly readonly: false;
64
+ }, string>;
65
+ }>>;
66
+ /** The company's contact settings (RFC 0020): what a contact needs before it is saved. */
67
+ export declare const CompanyContacts: import("../server/orm.js").Extension<"res.company", {
68
+ readonly contactTaxIdRequired: import("../server/orm.js").ScalarField<"boolean", boolean, boolean, {
69
+ readonly required: true;
70
+ readonly computed: false;
71
+ readonly inverse: false;
72
+ readonly sequence: false;
73
+ readonly computeName: undefined;
74
+ readonly store: true;
75
+ readonly hasDefault: true;
76
+ readonly readonly: false;
77
+ }>;
78
+ readonly contactUniqueEmail: import("../server/orm.js").ScalarField<"boolean", boolean, boolean, {
79
+ readonly required: true;
80
+ readonly computed: false;
81
+ readonly inverse: false;
82
+ readonly sequence: false;
83
+ readonly computeName: undefined;
84
+ readonly store: true;
85
+ readonly hasDefault: true;
86
+ readonly readonly: false;
87
+ }>;
88
+ }, Record<never, never>>;
1
89
  export declare const ResPartner: import("../server/orm.js").Model<"res.partner", {
2
90
  readonly id: import("../server/orm.js").IdField<"res.partner">;
3
91
  readonly createdAt: import("../server/orm.js").ScalarField<'datetime', Date, Date, {
@@ -52,6 +140,46 @@ export declare const ResPartner: import("../server/orm.js").Model<"res.partner",
52
140
  readonly hasDefault: false;
53
141
  readonly readonly: false;
54
142
  }, string>;
143
+ readonly image: import("../server/orm.js").Many2oneField<"storage.attachment", {
144
+ readonly required: false;
145
+ readonly computed: false;
146
+ readonly inverse: false;
147
+ readonly sequence: false;
148
+ readonly computeName: undefined;
149
+ readonly store: true;
150
+ readonly hasDefault: false;
151
+ readonly readonly: false;
152
+ }>;
153
+ readonly tags: import("../server/orm.js").Many2manyField<"res.partner.tag", {
154
+ readonly required: true;
155
+ readonly computed: false;
156
+ readonly inverse: false;
157
+ readonly sequence: false;
158
+ readonly computeName: undefined;
159
+ readonly store: true;
160
+ readonly hasDefault: true;
161
+ readonly readonly: false;
162
+ }>;
163
+ readonly latitude: import("../server/orm.js").DecimalField<{
164
+ readonly required: false;
165
+ readonly computed: false;
166
+ readonly inverse: false;
167
+ readonly sequence: false;
168
+ readonly computeName: undefined;
169
+ readonly store: true;
170
+ readonly hasDefault: false;
171
+ readonly readonly: false;
172
+ }>;
173
+ readonly longitude: import("../server/orm.js").DecimalField<{
174
+ readonly required: false;
175
+ readonly computed: false;
176
+ readonly inverse: false;
177
+ readonly sequence: false;
178
+ readonly computeName: undefined;
179
+ readonly store: true;
180
+ readonly hasDefault: false;
181
+ readonly readonly: false;
182
+ }>;
55
183
  readonly isCompany: import("../server/orm.js").ScalarField<"boolean", boolean, boolean, {
56
184
  readonly required: true;
57
185
  readonly computed: false;
@@ -233,6 +361,48 @@ export declare const ResPartner: import("../server/orm.js").Model<"res.partner",
233
361
  readonly hasDefault: false;
234
362
  readonly readonly: false;
235
363
  }, string>;
364
+ /** A photo or logo: an attachment of the contact (RFC 0022 §3.3), with its 256 px thumbnail. */
365
+ readonly image: import("../server/orm.js").Many2oneField<"storage.attachment", {
366
+ readonly required: false;
367
+ readonly computed: false;
368
+ readonly inverse: false;
369
+ readonly sequence: false;
370
+ readonly computeName: undefined;
371
+ readonly store: true;
372
+ readonly hasDefault: false;
373
+ readonly readonly: false;
374
+ }>;
375
+ readonly tags: import("../server/orm.js").Many2manyField<"res.partner.tag", {
376
+ readonly required: true;
377
+ readonly computed: false;
378
+ readonly inverse: false;
379
+ readonly sequence: false;
380
+ readonly computeName: undefined;
381
+ readonly store: true;
382
+ readonly hasDefault: true;
383
+ readonly readonly: false;
384
+ }>;
385
+ /** Where the contact is on a map (decimal degrees); filled by hand for now. */
386
+ readonly latitude: import("../server/orm.js").DecimalField<{
387
+ readonly required: false;
388
+ readonly computed: false;
389
+ readonly inverse: false;
390
+ readonly sequence: false;
391
+ readonly computeName: undefined;
392
+ readonly store: true;
393
+ readonly hasDefault: false;
394
+ readonly readonly: false;
395
+ }>;
396
+ readonly longitude: import("../server/orm.js").DecimalField<{
397
+ readonly required: false;
398
+ readonly computed: false;
399
+ readonly inverse: false;
400
+ readonly sequence: false;
401
+ readonly computeName: undefined;
402
+ readonly store: true;
403
+ readonly hasDefault: false;
404
+ readonly readonly: false;
405
+ }>;
236
406
  readonly isCompany: import("../server/orm.js").ScalarField<"boolean", boolean, boolean, {
237
407
  readonly required: true;
238
408
  readonly computed: false;
@@ -409,7 +579,70 @@ export declare const ResPartner: import("../server/orm.js").Model<"res.partner",
409
579
  readonly readonly: false;
410
580
  }>;
411
581
  }>>;
412
- export declare const contactsShutro: import("../server/orm.js").Module<readonly [import("../server/orm.js").Model<"res.partner", {
582
+ export declare const contactsShutro: import("../server/orm.js").Module<readonly [import("../server/orm.js").Model<"res.partner.tag", {
583
+ readonly id: import("../server/orm.js").IdField<"res.partner.tag">;
584
+ readonly createdAt: import("../server/orm.js").ScalarField<'datetime', Date, Date, {
585
+ required: true;
586
+ readonly: true;
587
+ computed: false;
588
+ inverse: false;
589
+ hasDefault: false;
590
+ sequence: false;
591
+ }>;
592
+ readonly updatedAt: import("../server/orm.js").ScalarField<'datetime', Date, Date, {
593
+ required: true;
594
+ readonly: true;
595
+ computed: false;
596
+ inverse: false;
597
+ hasDefault: false;
598
+ sequence: false;
599
+ }>;
600
+ readonly createdBy: import("../server/orm.js").Many2oneField<'res.users', {
601
+ required: false;
602
+ readonly: true;
603
+ computed: false;
604
+ inverse: false;
605
+ hasDefault: false;
606
+ sequence: false;
607
+ }>;
608
+ readonly updatedBy: import("../server/orm.js").Many2oneField<'res.users', {
609
+ required: false;
610
+ readonly: true;
611
+ computed: false;
612
+ inverse: false;
613
+ hasDefault: false;
614
+ sequence: false;
615
+ }>;
616
+ readonly displayName: import("../server/orm.js").CharField<{
617
+ required: true;
618
+ readonly: true;
619
+ computed: true;
620
+ inverse: false;
621
+ hasDefault: false;
622
+ sequence: false;
623
+ }>;
624
+ readonly name: import("../server/orm.js").CharField<{
625
+ readonly required: true;
626
+ readonly computed: false;
627
+ readonly inverse: false;
628
+ readonly sequence: false;
629
+ readonly computeName: undefined;
630
+ readonly store: true;
631
+ readonly hasDefault: false;
632
+ readonly readonly: false;
633
+ }, string>;
634
+ }, {} & import("../server/orm.js").TransitionMethods<{
635
+ readonly name: import("../server/orm.js").CharField<{
636
+ readonly required: true;
637
+ readonly computed: false;
638
+ readonly inverse: false;
639
+ readonly sequence: false;
640
+ readonly computeName: undefined;
641
+ readonly store: true;
642
+ readonly hasDefault: false;
643
+ readonly readonly: false;
644
+ }, string>;
645
+ }>>, import("../server/orm.js").Model<"res.partner", {
413
646
  readonly id: import("../server/orm.js").IdField<"res.partner">;
414
647
  readonly createdAt: import("../server/orm.js").ScalarField<'datetime', Date, Date, {
415
648
  required: true;
@@ -463,6 +696,46 @@ export declare const contactsShutro: import("../server/orm.js").Module<readonly
463
696
  readonly hasDefault: false;
464
697
  readonly readonly: false;
465
698
  }, string>;
699
+ readonly image: import("../server/orm.js").Many2oneField<"storage.attachment", {
700
+ readonly required: false;
701
+ readonly computed: false;
702
+ readonly inverse: false;
703
+ readonly sequence: false;
704
+ readonly computeName: undefined;
705
+ readonly store: true;
706
+ readonly hasDefault: false;
707
+ readonly readonly: false;
708
+ }>;
709
+ readonly tags: import("../server/orm.js").Many2manyField<"res.partner.tag", {
710
+ readonly required: true;
711
+ readonly computed: false;
712
+ readonly inverse: false;
713
+ readonly sequence: false;
714
+ readonly computeName: undefined;
715
+ readonly store: true;
716
+ readonly hasDefault: true;
717
+ readonly readonly: false;
718
+ }>;
719
+ readonly latitude: import("../server/orm.js").DecimalField<{
720
+ readonly required: false;
721
+ readonly computed: false;
722
+ readonly inverse: false;
723
+ readonly sequence: false;
724
+ readonly computeName: undefined;
725
+ readonly store: true;
726
+ readonly hasDefault: false;
727
+ readonly readonly: false;
728
+ }>;
729
+ readonly longitude: import("../server/orm.js").DecimalField<{
730
+ readonly required: false;
731
+ readonly computed: false;
732
+ readonly inverse: false;
733
+ readonly sequence: false;
734
+ readonly computeName: undefined;
735
+ readonly store: true;
736
+ readonly hasDefault: false;
737
+ readonly readonly: false;
738
+ }>;
466
739
  readonly isCompany: import("../server/orm.js").ScalarField<"boolean", boolean, boolean, {
467
740
  readonly required: true;
468
741
  readonly computed: false;
@@ -644,6 +917,48 @@ export declare const contactsShutro: import("../server/orm.js").Module<readonly
644
917
  readonly hasDefault: false;
645
918
  readonly readonly: false;
646
919
  }, string>;
920
+ /** A photo or logo: an attachment of the contact (RFC 0022 §3.3), with its 256 px thumbnail. */
921
+ readonly image: import("../server/orm.js").Many2oneField<"storage.attachment", {
922
+ readonly required: false;
923
+ readonly computed: false;
924
+ readonly inverse: false;
925
+ readonly sequence: false;
926
+ readonly computeName: undefined;
927
+ readonly store: true;
928
+ readonly hasDefault: false;
929
+ readonly readonly: false;
930
+ }>;
931
+ readonly tags: import("../server/orm.js").Many2manyField<"res.partner.tag", {
932
+ readonly required: true;
933
+ readonly computed: false;
934
+ readonly inverse: false;
935
+ readonly sequence: false;
936
+ readonly computeName: undefined;
937
+ readonly store: true;
938
+ readonly hasDefault: true;
939
+ readonly readonly: false;
940
+ }>;
941
+ /** Where the contact is on a map (decimal degrees); filled by hand for now. */
942
+ readonly latitude: import("../server/orm.js").DecimalField<{
943
+ readonly required: false;
944
+ readonly computed: false;
945
+ readonly inverse: false;
946
+ readonly sequence: false;
947
+ readonly computeName: undefined;
948
+ readonly store: true;
949
+ readonly hasDefault: false;
950
+ readonly readonly: false;
951
+ }>;
952
+ readonly longitude: import("../server/orm.js").DecimalField<{
953
+ readonly required: false;
954
+ readonly computed: false;
955
+ readonly inverse: false;
956
+ readonly sequence: false;
957
+ readonly computeName: undefined;
958
+ readonly store: true;
959
+ readonly hasDefault: false;
960
+ readonly readonly: false;
961
+ }>;
647
962
  readonly isCompany: import("../server/orm.js").ScalarField<"boolean", boolean, boolean, {
648
963
  readonly required: true;
649
964
  readonly computed: false;
@@ -819,4 +1134,25 @@ export declare const contactsShutro: import("../server/orm.js").Module<readonly
819
1134
  readonly hasDefault: false;
820
1135
  readonly readonly: false;
821
1136
  }>;
822
- }>>], readonly [import("../server/orm.js").Module<readonly import("../server/orm.js").AnyModel[], readonly import("../server/orm.js").ModuleBase[], readonly import("../server/orm.js").AnyExtension[]>], readonly []>;
1137
+ }>>], readonly [import("../server/orm.js").Module<readonly import("../server/orm.js").AnyModel[], readonly import("../server/orm.js").ModuleBase[], readonly import("../server/orm.js").AnyExtension[]>, import("../server/orm.js").Module<readonly import("../server/orm.js").AnyModel[], readonly import("../server/orm.js").ModuleBase[], readonly import("../server/orm.js").AnyExtension[]>], readonly [import("../server/orm.js").Extension<"res.company", {
1138
+ readonly contactTaxIdRequired: import("../server/orm.js").ScalarField<"boolean", boolean, boolean, {
1139
+ readonly required: true;
1140
+ readonly computed: false;
1141
+ readonly inverse: false;
1142
+ readonly sequence: false;
1143
+ readonly computeName: undefined;
1144
+ readonly store: true;
1145
+ readonly hasDefault: true;
1146
+ readonly readonly: false;
1147
+ }>;
1148
+ readonly contactUniqueEmail: import("../server/orm.js").ScalarField<"boolean", boolean, boolean, {
1149
+ readonly required: true;
1150
+ readonly computed: false;
1151
+ readonly inverse: false;
1152
+ readonly sequence: false;
1153
+ readonly computeName: undefined;
1154
+ readonly store: true;
1155
+ readonly hasDefault: true;
1156
+ readonly readonly: false;
1157
+ }>;
1158
+ }, Record<never, never>>]>;