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
@@ -1,4 +1,27 @@
1
1
  /** A column of the task kanban, shared by every project (per company later, if asked for). */
2
+ /** The company's project settings (RFC 0020): new tasks' planned hours, the step timesheets are entered in. */
3
+ export declare const CompanyProject: import("../server/orm.js").Extension<"res.company", {
4
+ readonly projectPlannedHoursDefault: import("../server/orm.js").DecimalField<{
5
+ readonly required: false;
6
+ readonly computed: false;
7
+ readonly inverse: false;
8
+ readonly sequence: false;
9
+ readonly computeName: undefined;
10
+ readonly store: true;
11
+ readonly hasDefault: false;
12
+ readonly readonly: false;
13
+ }>;
14
+ readonly projectTimesheetStep: import("../server/orm.js").SelectionField<"half" | "none" | "quarter" | "whole", {
15
+ readonly required: false;
16
+ readonly computed: false;
17
+ readonly inverse: false;
18
+ readonly sequence: false;
19
+ readonly computeName: undefined;
20
+ readonly store: true;
21
+ readonly hasDefault: true;
22
+ readonly readonly: false;
23
+ }>;
24
+ }, Record<never, never>>;
2
25
  export declare const ProjectTaskStage: import("../server/orm.js").Model<"project.task.stage", {
3
26
  readonly id: import("../server/orm.js").IdField<"project.task.stage">;
4
27
  readonly createdAt: import("../server/orm.js").ScalarField<'datetime', Date, Date, {
@@ -1681,7 +1704,70 @@ export declare const projectShutro: import("../server/orm.js").Module<readonly [
1681
1704
  readonly hasDefault: false;
1682
1705
  readonly readonly: false;
1683
1706
  }, string>;
1684
- }>>], readonly [import("../server/orm.js").Module<readonly [import("../server/orm.js").Model<"res.partner", {
1707
+ }>>], readonly [import("../server/orm.js").Module<readonly [import("../server/orm.js").Model<"res.partner.tag", {
1708
+ readonly id: import("../server/orm.js").IdField<"res.partner.tag">;
1709
+ readonly createdAt: import("../server/orm.js").ScalarField<'datetime', Date, Date, {
1710
+ required: true;
1711
+ readonly: true;
1712
+ computed: false;
1713
+ inverse: false;
1714
+ hasDefault: false;
1715
+ sequence: false;
1716
+ }>;
1717
+ readonly updatedAt: import("../server/orm.js").ScalarField<'datetime', Date, Date, {
1718
+ required: true;
1719
+ readonly: true;
1720
+ computed: false;
1721
+ inverse: false;
1722
+ hasDefault: false;
1723
+ sequence: false;
1724
+ }>;
1725
+ readonly createdBy: import("../server/orm.js").Many2oneField<'res.users', {
1726
+ required: false;
1727
+ readonly: true;
1728
+ computed: false;
1729
+ inverse: false;
1730
+ hasDefault: false;
1731
+ sequence: false;
1732
+ }>;
1733
+ readonly updatedBy: import("../server/orm.js").Many2oneField<'res.users', {
1734
+ required: false;
1735
+ readonly: true;
1736
+ computed: false;
1737
+ inverse: false;
1738
+ hasDefault: false;
1739
+ sequence: false;
1740
+ }>;
1741
+ readonly displayName: import("../server/orm.js").CharField<{
1742
+ required: true;
1743
+ readonly: true;
1744
+ computed: true;
1745
+ inverse: false;
1746
+ hasDefault: false;
1747
+ sequence: false;
1748
+ }>;
1749
+ readonly name: import("../server/orm.js").CharField<{
1750
+ readonly required: true;
1751
+ readonly computed: false;
1752
+ readonly inverse: false;
1753
+ readonly sequence: false;
1754
+ readonly computeName: undefined;
1755
+ readonly store: true;
1756
+ readonly hasDefault: false;
1757
+ readonly readonly: false;
1758
+ }, string>;
1759
+ }, {} & import("../server/orm.js").TransitionMethods<{
1760
+ readonly name: import("../server/orm.js").CharField<{
1761
+ readonly required: true;
1762
+ readonly computed: false;
1763
+ readonly inverse: false;
1764
+ readonly sequence: false;
1765
+ readonly computeName: undefined;
1766
+ readonly store: true;
1767
+ readonly hasDefault: false;
1768
+ readonly readonly: false;
1769
+ }, string>;
1770
+ }>>, import("../server/orm.js").Model<"res.partner", {
1685
1771
  readonly id: import("../server/orm.js").IdField<"res.partner">;
1686
1772
  readonly createdAt: import("../server/orm.js").ScalarField<'datetime', Date, Date, {
1687
1773
  required: true;
@@ -1735,6 +1821,46 @@ export declare const projectShutro: import("../server/orm.js").Module<readonly [
1735
1821
  readonly hasDefault: false;
1736
1822
  readonly readonly: false;
1737
1823
  }, string>;
1824
+ readonly image: import("../server/orm.js").Many2oneField<"storage.attachment", {
1825
+ readonly required: false;
1826
+ readonly computed: false;
1827
+ readonly inverse: false;
1828
+ readonly sequence: false;
1829
+ readonly computeName: undefined;
1830
+ readonly store: true;
1831
+ readonly hasDefault: false;
1832
+ readonly readonly: false;
1833
+ }>;
1834
+ readonly tags: import("../server/orm.js").Many2manyField<"res.partner.tag", {
1835
+ readonly required: true;
1836
+ readonly computed: false;
1837
+ readonly inverse: false;
1838
+ readonly sequence: false;
1839
+ readonly computeName: undefined;
1840
+ readonly store: true;
1841
+ readonly hasDefault: true;
1842
+ readonly readonly: false;
1843
+ }>;
1844
+ readonly latitude: import("../server/orm.js").DecimalField<{
1845
+ readonly required: false;
1846
+ readonly computed: false;
1847
+ readonly inverse: false;
1848
+ readonly sequence: false;
1849
+ readonly computeName: undefined;
1850
+ readonly store: true;
1851
+ readonly hasDefault: false;
1852
+ readonly readonly: false;
1853
+ }>;
1854
+ readonly longitude: import("../server/orm.js").DecimalField<{
1855
+ readonly required: false;
1856
+ readonly computed: false;
1857
+ readonly inverse: false;
1858
+ readonly sequence: false;
1859
+ readonly computeName: undefined;
1860
+ readonly store: true;
1861
+ readonly hasDefault: false;
1862
+ readonly readonly: false;
1863
+ }>;
1738
1864
  readonly isCompany: import("../server/orm.js").ScalarField<"boolean", boolean, boolean, {
1739
1865
  readonly required: true;
1740
1866
  readonly computed: false;
@@ -1916,6 +2042,46 @@ export declare const projectShutro: import("../server/orm.js").Module<readonly [
1916
2042
  readonly hasDefault: false;
1917
2043
  readonly readonly: false;
1918
2044
  }, string>;
2045
+ readonly image: import("../server/orm.js").Many2oneField<"storage.attachment", {
2046
+ readonly required: false;
2047
+ readonly computed: false;
2048
+ readonly inverse: false;
2049
+ readonly sequence: false;
2050
+ readonly computeName: undefined;
2051
+ readonly store: true;
2052
+ readonly hasDefault: false;
2053
+ readonly readonly: false;
2054
+ }>;
2055
+ readonly tags: import("../server/orm.js").Many2manyField<"res.partner.tag", {
2056
+ readonly required: true;
2057
+ readonly computed: false;
2058
+ readonly inverse: false;
2059
+ readonly sequence: false;
2060
+ readonly computeName: undefined;
2061
+ readonly store: true;
2062
+ readonly hasDefault: true;
2063
+ readonly readonly: false;
2064
+ }>;
2065
+ readonly latitude: import("../server/orm.js").DecimalField<{
2066
+ readonly required: false;
2067
+ readonly computed: false;
2068
+ readonly inverse: false;
2069
+ readonly sequence: false;
2070
+ readonly computeName: undefined;
2071
+ readonly store: true;
2072
+ readonly hasDefault: false;
2073
+ readonly readonly: false;
2074
+ }>;
2075
+ readonly longitude: import("../server/orm.js").DecimalField<{
2076
+ readonly required: false;
2077
+ readonly computed: false;
2078
+ readonly inverse: false;
2079
+ readonly sequence: false;
2080
+ readonly computeName: undefined;
2081
+ readonly store: true;
2082
+ readonly hasDefault: false;
2083
+ readonly readonly: false;
2084
+ }>;
1919
2085
  readonly isCompany: import("../server/orm.js").ScalarField<"boolean", boolean, boolean, {
1920
2086
  readonly required: true;
1921
2087
  readonly computed: false;
@@ -2086,4 +2252,46 @@ export declare const projectShutro: import("../server/orm.js").Module<readonly [
2086
2252
  readonly hasDefault: false;
2087
2253
  readonly readonly: false;
2088
2254
  }>;
2089
- }>>], 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 []>, import("../server/orm.js").Module<readonly import("../server/orm.js").AnyModel[], readonly import("../server/orm.js").ModuleBase[], readonly import("../server/orm.js").AnyExtension[]>], readonly []>;
2255
+ }>>], 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", {
2256
+ readonly contactTaxIdRequired: import("../server/orm.js").ScalarField<"boolean", boolean, boolean, {
2257
+ readonly required: true;
2258
+ readonly computed: false;
2259
+ readonly inverse: false;
2260
+ readonly sequence: false;
2261
+ readonly computeName: undefined;
2262
+ readonly store: true;
2263
+ readonly hasDefault: true;
2264
+ readonly readonly: false;
2265
+ }>;
2266
+ readonly contactUniqueEmail: import("../server/orm.js").ScalarField<"boolean", boolean, boolean, {
2267
+ readonly required: true;
2268
+ readonly computed: false;
2269
+ readonly inverse: false;
2270
+ readonly sequence: false;
2271
+ readonly computeName: undefined;
2272
+ readonly store: true;
2273
+ readonly hasDefault: true;
2274
+ readonly readonly: false;
2275
+ }>;
2276
+ }, Record<never, never>>]>, 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", {
2277
+ readonly projectPlannedHoursDefault: import("../server/orm.js").DecimalField<{
2278
+ readonly required: false;
2279
+ readonly computed: false;
2280
+ readonly inverse: false;
2281
+ readonly sequence: false;
2282
+ readonly computeName: undefined;
2283
+ readonly store: true;
2284
+ readonly hasDefault: false;
2285
+ readonly readonly: false;
2286
+ }>;
2287
+ readonly projectTimesheetStep: import("../server/orm.js").SelectionField<"half" | "none" | "quarter" | "whole", {
2288
+ readonly required: false;
2289
+ readonly computed: false;
2290
+ readonly inverse: false;
2291
+ readonly sequence: false;
2292
+ readonly computeName: undefined;
2293
+ readonly store: true;
2294
+ readonly hasDefault: true;
2295
+ readonly readonly: false;
2296
+ }>;
2297
+ }, Record<never, never>>]>;
@@ -7,11 +7,38 @@
7
7
  import { contactsShutro } from '../contacts/index.js';
8
8
  import { messagingShutro } from '../messaging/index.js';
9
9
  import { orm } from '../server/orm.js';
10
- import { compute, defineModel, defineModule, f, record } from './.kosh/bindings.js';
10
+ import { check, compute, defineModel, defineModule, extendModel, f, record, } from './.kosh/bindings.js';
11
11
  const READ = ['read'];
12
12
  const WRITE = ['read', 'write', 'create', 'unlink'];
13
13
  const ALL = ['read', 'write', 'create', 'unlink', 'export', 'import'];
14
14
  /** A column of the task kanban, shared by every project (per company later, if asked for). */
15
+ /** The company's project settings (RFC 0020): new tasks' planned hours, the step timesheets are entered in. */
16
+ export const CompanyProject = extendModel('res.company', {
17
+ fields: {
18
+ projectPlannedHoursDefault: f.decimal({ scale: 2, label: 'Planned hours of a new task' }),
19
+ projectTimesheetStep: f.selection({ none: 'Any', quarter: 'Quarter hours', half: 'Half hours', whole: 'Whole hours' }, { default: 'none', label: 'Timesheets in steps of' }),
20
+ },
21
+ });
22
+ /** The timesheet steps as hours. */
23
+ const STEPS = {
24
+ quarter: orm.toDecimal('0.25'),
25
+ half: orm.toDecimal('0.5'),
26
+ whole: orm.toDecimal('1'),
27
+ };
28
+ /** The current company's project settings. */
29
+ async function projectSettings(env) {
30
+ const [company] = (await env
31
+ .model('res.company')
32
+ .browse([env.companyId])
33
+ .load(['projectPlannedHoursDefault', 'projectTimesheetStep'])).read(['projectPlannedHoursDefault', 'projectTimesheetStep']);
34
+ const planned = company?.['projectPlannedHoursDefault'];
35
+ return {
36
+ plannedHours: planned === null || planned === undefined ? null : String(planned),
37
+ step: typeof company?.['projectTimesheetStep'] === 'string'
38
+ ? company['projectTimesheetStep']
39
+ : 'none',
40
+ };
41
+ }
15
42
  export const ProjectTaskStage = defineModel('project.task.stage', {
16
43
  label: 'Task stage',
17
44
  order: ['sequence asc', 'id asc'],
@@ -127,11 +154,17 @@ export const ProjectTask = defineModel('project.task', {
127
154
  timesheets: f.one2many('project.timesheet', 'task'),
128
155
  },
129
156
  onchange: {
130
- // A task of a project takes the project's customer.
131
- project: async (d) => {
157
+ // A task of a project takes the project's customer, and the company's planned hours when it has none.
158
+ project: async (d, env) => {
132
159
  const p = await d.record('project');
160
+ const draft = d;
133
161
  if (p?.partner)
134
- d.set('partner', p.partner.id);
162
+ draft.set('partner', p.partner.id);
163
+ if ((draft.get('plannedHours') ?? null) === null) {
164
+ const { plannedHours } = await projectSettings(env);
165
+ if (plannedHours !== null)
166
+ draft.set('plannedHours', plannedHours);
167
+ }
135
168
  },
136
169
  },
137
170
  });
@@ -166,10 +199,23 @@ export const ProjectTimesheet = defineModel('project.timesheet', {
166
199
  sqlConstraints: {
167
200
  hoursPositive: { check: orm.sql `hours > 0`, message: 'Hours are positive.' },
168
201
  },
202
+ constraints: {
203
+ // The company's step (App settings › Projects): quarter, half or whole hours.
204
+ hoursOnTheStep: {
205
+ ...check('project.timesheet', ['hours'], async (lines) => {
206
+ const { step } = await projectSettings(lines.env);
207
+ const unit = STEPS[step];
208
+ if (unit === undefined)
209
+ return [];
210
+ return lines.filter((l) => !l.hours.mod(unit).isZero());
211
+ }),
212
+ message: 'Timesheet hours are entered in the company’s steps (App settings › Projects).',
213
+ },
214
+ },
169
215
  });
170
216
  export const projectShutro = defineModule({
171
217
  name: 'project',
172
- version: '0.1.0',
218
+ version: '0.2.0',
173
219
  depends: [contactsShutro, messagingShutro],
174
220
  groups: [
175
221
  orm.defineGroup({
@@ -184,6 +230,7 @@ export const projectShutro = defineModule({
184
230
  }),
185
231
  ],
186
232
  models: [ProjectTaskStage, ProjectProject, ProjectTask, ProjectTimesheet],
233
+ extensions: [CompanyProject],
187
234
  // The kanban every installation starts with (theirs to change afterwards).
188
235
  data: [
189
236
  record('project.task.stage', 'stage_new', { name: 'New', sequence: 1 }, { noupdate: true }),
@@ -1,4 +1,4 @@
1
- // GENERATED by `pnpm generate:models` (Shutro’s generator). Do not edit. definitions-hash: 99c699d27d0e98db
1
+ // GENERATED by `pnpm generate:models` (Shutro’s generator). Do not edit. definitions-hash: d9d9d74bc29efc35
2
2
  // Bindings of module `project_portal`: import the definition API from here to get types scoped to what it can see.
3
3
  export { defineModel, defineModule, extendModel, f, replace } from '../../server/orm.js';
4
4
  import { definitions } from '../../server/orm.js';
@@ -1,4 +1,4 @@
1
- // GENERATED by `pnpm generate:models` (Shutro’s generator). Do not edit. definitions-hash: 99c699d27d0e98db
1
+ // GENERATED by `pnpm generate:models` (Shutro’s generator). Do not edit. definitions-hash: d9d9d74bc29efc35
2
2
  // Schema view of module `project_portal` (RFC 0002 §7.7): the models it owns or depends on, with the extensions it can see.
3
3
  import type { F } from '../../server/orm.js';
4
4
 
@@ -11,7 +11,9 @@ export interface SchemaView {
11
11
  readonly 'auth.session': AuthSession;
12
12
  readonly 'auth.user_grant': AuthUserGrant;
13
13
  readonly 'auth.user_group': AuthUserGroup;
14
+ readonly 'kosh.image': KoshImage;
14
15
  readonly 'kosh.saved_view': KoshSavedView;
16
+ readonly 'kosh.setting': KoshSetting;
15
17
  readonly 'mail.activity': MailActivity;
16
18
  readonly 'mail.activity.type': MailActivityType;
17
19
  readonly 'mail.channel': MailChannel;
@@ -19,6 +21,10 @@ export interface SchemaView {
19
21
  readonly 'mail.follower': MailFollower;
20
22
  readonly 'mail.message': MailMessage;
21
23
  readonly 'mail.message.reaction': MailMessageReaction;
24
+ readonly 'oauth.app': OauthApp;
25
+ readonly 'oauth.code': OauthCode;
26
+ readonly 'oauth.grant': OauthGrant;
27
+ readonly 'oauth.token': OauthToken;
22
28
  readonly 'portal.announcement': PortalAnnouncement;
23
29
  readonly 'portal.invitation': PortalInvitation;
24
30
  readonly 'portal.signature': PortalSignature;
@@ -29,6 +35,7 @@ export interface SchemaView {
29
35
  readonly 'res.company': ResCompany;
30
36
  readonly 'res.currency': ResCurrency;
31
37
  readonly 'res.partner': ResPartner;
38
+ readonly 'res.partner.tag': ResPartnerTag;
32
39
  readonly 'res.users': ResUsers;
33
40
  readonly 'storage.attachment': StorageAttachment;
34
41
  }
@@ -202,6 +209,29 @@ export interface AuthUserGroup {
202
209
  export interface AuthUserGroupMethods extends F.Methods<typeof import('../../server/index.js').baseShutro, 'auth.user_group'> {
203
210
  }
204
211
 
212
+ /** `kosh.image` (owner: base). */
213
+ export interface KoshImage {
214
+ readonly name: 'kosh.image';
215
+ readonly fields: {
216
+ readonly id: F.Id<'kosh.image'>;
217
+ readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
218
+ readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
219
+ readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
220
+ readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
221
+ readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
222
+ readonly ownerModel: F.Char<{ readonly required: true }>;
223
+ readonly ownerId: F.Integer<{ readonly required: true }>;
224
+ readonly mime: F.Char<{ readonly required: true }>;
225
+ readonly data: F.Text<{ readonly required: true }>;
226
+ readonly hash: F.Char<{ readonly required: true }>;
227
+ };
228
+ readonly methods: KoshImageMethods;
229
+ }
230
+
231
+ /** Methods of `kosh.image`: declared ones and transitions. */
232
+ export interface KoshImageMethods extends F.Methods<typeof import('../../server/index.js').baseShutro, 'kosh.image'> {
233
+ }
234
+
205
235
  /** `kosh.saved_view` (owner: base). */
206
236
  export interface KoshSavedView {
207
237
  readonly name: 'kosh.saved_view';
@@ -226,6 +256,26 @@ export interface KoshSavedView {
226
256
  export interface KoshSavedViewMethods extends F.Methods<typeof import('../../server/index.js').baseShutro, 'kosh.saved_view'> {
227
257
  }
228
258
 
259
+ /** `kosh.setting` (owner: base). */
260
+ export interface KoshSetting {
261
+ readonly name: 'kosh.setting';
262
+ readonly fields: {
263
+ readonly id: F.Id<'kosh.setting'>;
264
+ readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
265
+ readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
266
+ readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
267
+ readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
268
+ readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
269
+ readonly key: F.Char<{ readonly required: true }>;
270
+ readonly value: F.Json;
271
+ };
272
+ readonly methods: KoshSettingMethods;
273
+ }
274
+
275
+ /** Methods of `kosh.setting`: declared ones and transitions. */
276
+ export interface KoshSettingMethods extends F.Methods<typeof import('../../server/index.js').baseShutro, 'kosh.setting'> {
277
+ }
278
+
229
279
  /** `mail.activity` (owner: messaging). */
230
280
  export interface MailActivity {
231
281
  readonly name: 'mail.activity';
@@ -404,6 +454,105 @@ export interface MailMessageReaction {
404
454
  export interface MailMessageReactionMethods extends F.Methods<typeof import('../../messaging/index.js').messagingShutro, 'mail.message.reaction'> {
405
455
  }
406
456
 
457
+ /** `oauth.app` (owner: base). */
458
+ export interface OauthApp {
459
+ readonly name: 'oauth.app';
460
+ readonly fields: {
461
+ readonly id: F.Id<'oauth.app'>;
462
+ readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
463
+ readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
464
+ readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
465
+ readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
466
+ readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
467
+ readonly name: F.Char<{ readonly required: true }>;
468
+ readonly clientId: F.Char<{ readonly required: true }>;
469
+ readonly secretHash: F.Char;
470
+ readonly confidential: F.Bool<{ readonly required: true; readonly default: true }>;
471
+ readonly redirectUris: F.Text<{ readonly required: true }>;
472
+ readonly scopes: F.Char<{ readonly required: true }>;
473
+ readonly homepage: F.Char;
474
+ readonly active: F.Bool<{ readonly required: true; readonly default: true }>;
475
+ readonly owner: F.Many2one<'res.users'>;
476
+ };
477
+ readonly methods: OauthAppMethods;
478
+ }
479
+
480
+ /** Methods of `oauth.app`: declared ones and transitions. */
481
+ export interface OauthAppMethods extends F.Methods<typeof import('../../server/index.js').baseShutro, 'oauth.app'> {
482
+ }
483
+
484
+ /** `oauth.code` (owner: base). */
485
+ export interface OauthCode {
486
+ readonly name: 'oauth.code';
487
+ readonly fields: {
488
+ readonly id: F.Id<'oauth.code'>;
489
+ readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
490
+ readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
491
+ readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
492
+ readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
493
+ readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
494
+ readonly codeHash: F.Char<{ readonly required: true }>;
495
+ readonly grant: F.Many2one<'oauth.grant', { readonly required: true }>;
496
+ readonly redirectUri: F.Char<{ readonly required: true }>;
497
+ readonly challenge: F.Char;
498
+ readonly expiresAt: F.Datetime<{ readonly required: true }>;
499
+ readonly used: F.Bool<{ readonly required: true; readonly default: true }>;
500
+ };
501
+ readonly methods: OauthCodeMethods;
502
+ }
503
+
504
+ /** Methods of `oauth.code`: declared ones and transitions. */
505
+ export interface OauthCodeMethods extends F.Methods<typeof import('../../server/index.js').baseShutro, 'oauth.code'> {
506
+ }
507
+
508
+ /** `oauth.grant` (owner: base). */
509
+ export interface OauthGrant {
510
+ readonly name: 'oauth.grant';
511
+ readonly fields: {
512
+ readonly id: F.Id<'oauth.grant'>;
513
+ readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
514
+ readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
515
+ readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
516
+ readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
517
+ readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
518
+ readonly user: F.Many2one<'res.users', { readonly required: true }>;
519
+ readonly app: F.Many2one<'oauth.app', { readonly required: true }>;
520
+ readonly scopes: F.Char<{ readonly required: true }>;
521
+ readonly revoked: F.Bool<{ readonly required: true; readonly default: true }>;
522
+ readonly lastUsedAt: F.Datetime;
523
+ };
524
+ readonly methods: OauthGrantMethods;
525
+ }
526
+
527
+ /** Methods of `oauth.grant`: declared ones and transitions. */
528
+ export interface OauthGrantMethods extends F.Methods<typeof import('../../server/index.js').baseShutro, 'oauth.grant'> {
529
+ }
530
+
531
+ /** `oauth.token` (owner: base). */
532
+ export interface OauthToken {
533
+ readonly name: 'oauth.token';
534
+ readonly fields: {
535
+ readonly id: F.Id<'oauth.token'>;
536
+ readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
537
+ readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
538
+ readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
539
+ readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
540
+ readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
541
+ readonly grant: F.Many2one<'oauth.grant', { readonly required: true }>;
542
+ readonly accessHash: F.Char<{ readonly required: true }>;
543
+ readonly refreshHash: F.Char<{ readonly required: true }>;
544
+ readonly accessExpiresAt: F.Datetime<{ readonly required: true }>;
545
+ readonly refreshExpiresAt: F.Datetime<{ readonly required: true }>;
546
+ readonly revoked: F.Bool<{ readonly required: true; readonly default: true }>;
547
+ readonly rotated: F.Bool<{ readonly required: true; readonly default: true }>;
548
+ };
549
+ readonly methods: OauthTokenMethods;
550
+ }
551
+
552
+ /** Methods of `oauth.token`: declared ones and transitions. */
553
+ export interface OauthTokenMethods extends F.Methods<typeof import('../../server/index.js').baseShutro, 'oauth.token'> {
554
+ }
555
+
407
556
  /** `portal.announcement` (owner: portal). */
408
557
  export interface PortalAnnouncement {
409
558
  readonly name: 'portal.announcement';
@@ -586,7 +735,7 @@ export interface ProjectTimesheet {
586
735
  export interface ProjectTimesheetMethods extends F.Methods<typeof import('../../project/index.js').projectShutro, 'project.timesheet'> {
587
736
  }
588
737
 
589
- /** `res.company` (owner: base). */
738
+ /** `res.company` (owner: base; extended by: contacts, project). */
590
739
  export interface ResCompany {
591
740
  readonly name: 'res.company';
592
741
  readonly fields: {
@@ -606,12 +755,16 @@ export interface ResCompany {
606
755
  readonly email: F.Char;
607
756
  readonly phone: F.Char;
608
757
  readonly website: F.Char;
758
+ readonly contactTaxIdRequired: F.Bool<{ readonly required: true; readonly default: true }>; // contacts
759
+ readonly contactUniqueEmail: F.Bool<{ readonly required: true; readonly default: true }>; // contacts
760
+ readonly projectPlannedHoursDefault: F.Decimal; // project
761
+ readonly projectTimesheetStep: F.Selection<'none' | 'quarter' | 'half' | 'whole', { readonly default: true }>; // project
609
762
  };
610
763
  readonly methods: ResCompanyMethods;
611
764
  }
612
765
 
613
766
  /** Methods of `res.company`: declared ones and transitions. */
614
- export interface ResCompanyMethods extends F.Methods<typeof import('../../server/index.js').baseShutro, 'res.company'> {
767
+ export interface ResCompanyMethods extends F.Methods<typeof import('../../server/index.js').baseShutro, 'res.company'>, F.Methods<typeof import('../../contacts/index.js').contactsShutro, 'res.company'>, F.Methods<typeof import('../../project/index.js').projectShutro, 'res.company'> {
615
768
  }
616
769
 
617
770
  /** `res.currency` (owner: base). */
@@ -648,6 +801,10 @@ export interface ResPartner {
648
801
  readonly active: F.Bool<{ readonly required: true; readonly default: true }>;
649
802
  readonly company: F.Many2one<'res.company', { readonly default: true }>;
650
803
  readonly name: F.Char<{ readonly required: true }>;
804
+ readonly image: F.Many2one<'storage.attachment'>;
805
+ readonly tags: F.Many2many<'res.partner.tag', { readonly required: true }>;
806
+ readonly latitude: F.Decimal;
807
+ readonly longitude: F.Decimal;
651
808
  readonly isCompany: F.Bool<{ readonly required: true; readonly default: true }>;
652
809
  readonly parent: F.Many2one<'res.partner'>;
653
810
  readonly contacts: F.One2many<'res.partner', { readonly required: true }>;
@@ -674,6 +831,25 @@ export interface ResPartner {
674
831
  export interface ResPartnerMethods extends F.Methods<typeof import('../../contacts/index.js').contactsShutro, 'res.partner'>, F.Methods<typeof import('../../portal/index.js').portalShutro, 'res.partner'> {
675
832
  }
676
833
 
834
+ /** `res.partner.tag` (owner: contacts). */
835
+ export interface ResPartnerTag {
836
+ readonly name: 'res.partner.tag';
837
+ readonly fields: {
838
+ readonly id: F.Id<'res.partner.tag'>;
839
+ readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
840
+ readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
841
+ readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
842
+ readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
843
+ readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
844
+ readonly name: F.Char<{ readonly required: true }>;
845
+ };
846
+ readonly methods: ResPartnerTagMethods;
847
+ }
848
+
849
+ /** Methods of `res.partner.tag`: declared ones and transitions. */
850
+ export interface ResPartnerTagMethods extends F.Methods<typeof import('../../contacts/index.js').contactsShutro, 'res.partner.tag'> {
851
+ }
852
+
677
853
  /** `res.users` (owner: base; extended by: portal). */
678
854
  export interface ResUsers {
679
855
  readonly name: 'res.users';
@@ -720,6 +896,8 @@ export interface StorageAttachment {
720
896
  readonly key: F.Char<{ readonly required: true }>;
721
897
  readonly resModel: F.Char<{ readonly required: true }>;
722
898
  readonly resId: F.Integer<{ readonly required: true }>;
899
+ readonly variantOf: F.Many2one<'storage.attachment'>;
900
+ readonly width: F.Integer;
723
901
  };
724
902
  readonly methods: StorageAttachmentMethods;
725
903
  }