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,4 @@
1
- // GENERATED by `pnpm generate:models` (Shutro’s generator). Do not edit. definitions-hash: 25d6271e4bd2aa40
1
+ // GENERATED by `pnpm generate:models` (Shutro’s generator). Do not edit. definitions-hash: 32f956c99138a8eb
2
2
  // Schema view of module `project` (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 'project.project': ProjectProject;
23
29
  readonly 'project.task': ProjectTask;
24
30
  readonly 'project.task.stage': ProjectTaskStage;
@@ -26,6 +32,7 @@ export interface SchemaView {
26
32
  readonly 'res.company': ResCompany;
27
33
  readonly 'res.currency': ResCurrency;
28
34
  readonly 'res.partner': ResPartner;
35
+ readonly 'res.partner.tag': ResPartnerTag;
29
36
  readonly 'res.users': ResUsers;
30
37
  readonly 'storage.attachment': StorageAttachment;
31
38
  }
@@ -199,6 +206,29 @@ export interface AuthUserGroup {
199
206
  export interface AuthUserGroupMethods extends F.Methods<typeof import('../../server/index.js').baseShutro, 'auth.user_group'> {
200
207
  }
201
208
 
209
+ /** `kosh.image` (owner: base). */
210
+ export interface KoshImage {
211
+ readonly name: 'kosh.image';
212
+ readonly fields: {
213
+ readonly id: F.Id<'kosh.image'>;
214
+ readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
215
+ readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
216
+ readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
217
+ readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
218
+ readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
219
+ readonly ownerModel: F.Char<{ readonly required: true }>;
220
+ readonly ownerId: F.Integer<{ readonly required: true }>;
221
+ readonly mime: F.Char<{ readonly required: true }>;
222
+ readonly data: F.Text<{ readonly required: true }>;
223
+ readonly hash: F.Char<{ readonly required: true }>;
224
+ };
225
+ readonly methods: KoshImageMethods;
226
+ }
227
+
228
+ /** Methods of `kosh.image`: declared ones and transitions. */
229
+ export interface KoshImageMethods extends F.Methods<typeof import('../../server/index.js').baseShutro, 'kosh.image'> {
230
+ }
231
+
202
232
  /** `kosh.saved_view` (owner: base). */
203
233
  export interface KoshSavedView {
204
234
  readonly name: 'kosh.saved_view';
@@ -223,6 +253,26 @@ export interface KoshSavedView {
223
253
  export interface KoshSavedViewMethods extends F.Methods<typeof import('../../server/index.js').baseShutro, 'kosh.saved_view'> {
224
254
  }
225
255
 
256
+ /** `kosh.setting` (owner: base). */
257
+ export interface KoshSetting {
258
+ readonly name: 'kosh.setting';
259
+ readonly fields: {
260
+ readonly id: F.Id<'kosh.setting'>;
261
+ readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
262
+ readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
263
+ readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
264
+ readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
265
+ readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
266
+ readonly key: F.Char<{ readonly required: true }>;
267
+ readonly value: F.Json;
268
+ };
269
+ readonly methods: KoshSettingMethods;
270
+ }
271
+
272
+ /** Methods of `kosh.setting`: declared ones and transitions. */
273
+ export interface KoshSettingMethods extends F.Methods<typeof import('../../server/index.js').baseShutro, 'kosh.setting'> {
274
+ }
275
+
226
276
  /** `mail.activity` (owner: messaging). */
227
277
  export interface MailActivity {
228
278
  readonly name: 'mail.activity';
@@ -401,6 +451,105 @@ export interface MailMessageReaction {
401
451
  export interface MailMessageReactionMethods extends F.Methods<typeof import('../../messaging/index.js').messagingShutro, 'mail.message.reaction'> {
402
452
  }
403
453
 
454
+ /** `oauth.app` (owner: base). */
455
+ export interface OauthApp {
456
+ readonly name: 'oauth.app';
457
+ readonly fields: {
458
+ readonly id: F.Id<'oauth.app'>;
459
+ readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
460
+ readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
461
+ readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
462
+ readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
463
+ readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
464
+ readonly name: F.Char<{ readonly required: true }>;
465
+ readonly clientId: F.Char<{ readonly required: true }>;
466
+ readonly secretHash: F.Char;
467
+ readonly confidential: F.Bool<{ readonly required: true; readonly default: true }>;
468
+ readonly redirectUris: F.Text<{ readonly required: true }>;
469
+ readonly scopes: F.Char<{ readonly required: true }>;
470
+ readonly homepage: F.Char;
471
+ readonly active: F.Bool<{ readonly required: true; readonly default: true }>;
472
+ readonly owner: F.Many2one<'res.users'>;
473
+ };
474
+ readonly methods: OauthAppMethods;
475
+ }
476
+
477
+ /** Methods of `oauth.app`: declared ones and transitions. */
478
+ export interface OauthAppMethods extends F.Methods<typeof import('../../server/index.js').baseShutro, 'oauth.app'> {
479
+ }
480
+
481
+ /** `oauth.code` (owner: base). */
482
+ export interface OauthCode {
483
+ readonly name: 'oauth.code';
484
+ readonly fields: {
485
+ readonly id: F.Id<'oauth.code'>;
486
+ readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
487
+ readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
488
+ readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
489
+ readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
490
+ readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
491
+ readonly codeHash: F.Char<{ readonly required: true }>;
492
+ readonly grant: F.Many2one<'oauth.grant', { readonly required: true }>;
493
+ readonly redirectUri: F.Char<{ readonly required: true }>;
494
+ readonly challenge: F.Char;
495
+ readonly expiresAt: F.Datetime<{ readonly required: true }>;
496
+ readonly used: F.Bool<{ readonly required: true; readonly default: true }>;
497
+ };
498
+ readonly methods: OauthCodeMethods;
499
+ }
500
+
501
+ /** Methods of `oauth.code`: declared ones and transitions. */
502
+ export interface OauthCodeMethods extends F.Methods<typeof import('../../server/index.js').baseShutro, 'oauth.code'> {
503
+ }
504
+
505
+ /** `oauth.grant` (owner: base). */
506
+ export interface OauthGrant {
507
+ readonly name: 'oauth.grant';
508
+ readonly fields: {
509
+ readonly id: F.Id<'oauth.grant'>;
510
+ readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
511
+ readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
512
+ readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
513
+ readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
514
+ readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
515
+ readonly user: F.Many2one<'res.users', { readonly required: true }>;
516
+ readonly app: F.Many2one<'oauth.app', { readonly required: true }>;
517
+ readonly scopes: F.Char<{ readonly required: true }>;
518
+ readonly revoked: F.Bool<{ readonly required: true; readonly default: true }>;
519
+ readonly lastUsedAt: F.Datetime;
520
+ };
521
+ readonly methods: OauthGrantMethods;
522
+ }
523
+
524
+ /** Methods of `oauth.grant`: declared ones and transitions. */
525
+ export interface OauthGrantMethods extends F.Methods<typeof import('../../server/index.js').baseShutro, 'oauth.grant'> {
526
+ }
527
+
528
+ /** `oauth.token` (owner: base). */
529
+ export interface OauthToken {
530
+ readonly name: 'oauth.token';
531
+ readonly fields: {
532
+ readonly id: F.Id<'oauth.token'>;
533
+ readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
534
+ readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
535
+ readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
536
+ readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
537
+ readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
538
+ readonly grant: F.Many2one<'oauth.grant', { readonly required: true }>;
539
+ readonly accessHash: F.Char<{ readonly required: true }>;
540
+ readonly refreshHash: F.Char<{ readonly required: true }>;
541
+ readonly accessExpiresAt: F.Datetime<{ readonly required: true }>;
542
+ readonly refreshExpiresAt: F.Datetime<{ readonly required: true }>;
543
+ readonly revoked: F.Bool<{ readonly required: true; readonly default: true }>;
544
+ readonly rotated: F.Bool<{ readonly required: true; readonly default: true }>;
545
+ };
546
+ readonly methods: OauthTokenMethods;
547
+ }
548
+
549
+ /** Methods of `oauth.token`: declared ones and transitions. */
550
+ export interface OauthTokenMethods extends F.Methods<typeof import('../../server/index.js').baseShutro, 'oauth.token'> {
551
+ }
552
+
404
553
  /** `project.project` (owner: project). */
405
554
  export interface ProjectProject {
406
555
  readonly name: 'project.project';
@@ -511,7 +660,7 @@ export interface ProjectTimesheet {
511
660
  export interface ProjectTimesheetMethods extends F.Methods<typeof import('../module.js').projectShutro, 'project.timesheet'> {
512
661
  }
513
662
 
514
- /** `res.company` (owner: base). */
663
+ /** `res.company` (owner: base; extended by: contacts, project). */
515
664
  export interface ResCompany {
516
665
  readonly name: 'res.company';
517
666
  readonly fields: {
@@ -531,12 +680,16 @@ export interface ResCompany {
531
680
  readonly email: F.Char;
532
681
  readonly phone: F.Char;
533
682
  readonly website: F.Char;
683
+ readonly contactTaxIdRequired: F.Bool<{ readonly required: true; readonly default: true }>; // contacts
684
+ readonly contactUniqueEmail: F.Bool<{ readonly required: true; readonly default: true }>; // contacts
685
+ readonly projectPlannedHoursDefault: F.Decimal; // project
686
+ readonly projectTimesheetStep: F.Selection<'none' | 'quarter' | 'half' | 'whole', { readonly default: true }>; // project
534
687
  };
535
688
  readonly methods: ResCompanyMethods;
536
689
  }
537
690
 
538
691
  /** Methods of `res.company`: declared ones and transitions. */
539
- export interface ResCompanyMethods extends F.Methods<typeof import('../../server/index.js').baseShutro, 'res.company'> {
692
+ 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('../module.js').projectShutro, 'res.company'> {
540
693
  }
541
694
 
542
695
  /** `res.currency` (owner: base). */
@@ -573,6 +726,10 @@ export interface ResPartner {
573
726
  readonly active: F.Bool<{ readonly required: true; readonly default: true }>;
574
727
  readonly company: F.Many2one<'res.company', { readonly default: true }>;
575
728
  readonly name: F.Char<{ readonly required: true }>;
729
+ readonly image: F.Many2one<'storage.attachment'>;
730
+ readonly tags: F.Many2many<'res.partner.tag', { readonly required: true }>;
731
+ readonly latitude: F.Decimal;
732
+ readonly longitude: F.Decimal;
576
733
  readonly isCompany: F.Bool<{ readonly required: true; readonly default: true }>;
577
734
  readonly parent: F.Many2one<'res.partner'>;
578
735
  readonly contacts: F.One2many<'res.partner', { readonly required: true }>;
@@ -598,6 +755,25 @@ export interface ResPartner {
598
755
  export interface ResPartnerMethods extends F.Methods<typeof import('../../contacts/index.js').contactsShutro, 'res.partner'> {
599
756
  }
600
757
 
758
+ /** `res.partner.tag` (owner: contacts). */
759
+ export interface ResPartnerTag {
760
+ readonly name: 'res.partner.tag';
761
+ readonly fields: {
762
+ readonly id: F.Id<'res.partner.tag'>;
763
+ readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
764
+ readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
765
+ readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
766
+ readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
767
+ readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
768
+ readonly name: F.Char<{ readonly required: true }>;
769
+ };
770
+ readonly methods: ResPartnerTagMethods;
771
+ }
772
+
773
+ /** Methods of `res.partner.tag`: declared ones and transitions. */
774
+ export interface ResPartnerTagMethods extends F.Methods<typeof import('../../contacts/index.js').contactsShutro, 'res.partner.tag'> {
775
+ }
776
+
601
777
  /** `res.users` (owner: base). */
602
778
  export interface ResUsers {
603
779
  readonly name: 'res.users';
@@ -643,6 +819,8 @@ export interface StorageAttachment {
643
819
  readonly key: F.Char<{ readonly required: true }>;
644
820
  readonly resModel: F.Char<{ readonly required: true }>;
645
821
  readonly resId: F.Integer<{ readonly required: true }>;
822
+ readonly variantOf: F.Many2one<'storage.attachment'>;
823
+ readonly width: F.Integer;
646
824
  };
647
825
  readonly methods: StorageAttachmentMethods;
648
826
  }
@@ -7,7 +7,8 @@
7
7
  import { contacts } from '../contacts/index.js';
8
8
  import { messaging } from '../messaging/index.js';
9
9
  import { defineModule } from '../modules-sdk/index.js';
10
- import { action, calendar, form, kanban, list, pivot, search } from '../views/index.js';
10
+ import { reporting } from '../reporting/index.js';
11
+ import { action, calendar, form, gantt, kanban, list, pivot, search } from '../views/index.js';
11
12
  import { projectDemo, SUPPORT_PROJECT } from './demo.js';
12
13
  import { ProjectProject, ProjectTask, ProjectTaskStage, ProjectTimesheet, projectShutro, } from './module.js';
13
14
  export { SUPPORT_PROJECT } from './demo.js';
@@ -16,6 +17,30 @@ export const project = defineModule({
16
17
  shutro: projectShutro,
17
18
  kosh: '^0.1.0',
18
19
  hooks: { demo: projectDemo },
20
+ // Defaults for tasks and timesheets (RFC 0020), per company.
21
+ settings: {
22
+ sections: [
23
+ {
24
+ key: 'work',
25
+ label: 'Tasks and timesheets',
26
+ description: 'What new tasks start with, and the steps timesheets are entered in.',
27
+ keywords: 'planned hours timesheet rounding step quarter half',
28
+ scope: 'company',
29
+ editors: ['project.manager'],
30
+ fields: [
31
+ {
32
+ key: 'projectPlannedHoursDefault',
33
+ min: 0,
34
+ help: 'Filled in on a new task when its project is chosen; each task can still be changed.',
35
+ },
36
+ {
37
+ key: 'projectTimesheetStep',
38
+ help: 'Hours that are not a multiple of the step are refused.',
39
+ },
40
+ ],
41
+ },
42
+ ],
43
+ },
19
44
  // support@<inbound domain>: a task in the support project (RFC 0006 §7.1), or the first project there is.
20
45
  inboundAliases: [
21
46
  {
@@ -34,7 +59,7 @@ export const project = defineModule({
34
59
  },
35
60
  },
36
61
  ],
37
- depends: [contacts, messaging],
62
+ depends: [contacts, messaging, reporting],
38
63
  app: {
39
64
  code: 'projects',
40
65
  label: 'Projects',
@@ -51,10 +76,89 @@ export const project = defineModule({
51
76
  implies: ['user'],
52
77
  },
53
78
  },
79
+ // The Overview (RFC 0022 step 2): what is open, where the hours go, who carries the load.
80
+ overview: {
81
+ cards: [
82
+ {
83
+ id: 'projects_all',
84
+ title: 'Projects',
85
+ kind: 'kpi',
86
+ model: 'project.project',
87
+ measure: 'count',
88
+ w: 3,
89
+ },
90
+ {
91
+ id: 'open_tasks',
92
+ title: 'Open tasks',
93
+ kind: 'kpi',
94
+ model: 'project.task',
95
+ measure: 'count',
96
+ filter: { 'stage.done': false },
97
+ w: 3,
98
+ },
99
+ {
100
+ id: 'hours_month',
101
+ title: 'Hours this month',
102
+ kind: 'kpi',
103
+ model: 'project.timesheet',
104
+ measure: 'sum:hours',
105
+ comparison: { field: 'date', mode: 'previous' },
106
+ w: 3,
107
+ },
108
+ {
109
+ id: 'planned_open',
110
+ title: 'Planned hours open',
111
+ kind: 'kpi',
112
+ model: 'project.task',
113
+ measure: 'sum:plannedHours',
114
+ filter: { 'stage.done': false },
115
+ w: 3,
116
+ },
117
+ {
118
+ id: 'tasks_by_stage',
119
+ title: 'Tasks by stage',
120
+ kind: 'chart',
121
+ model: 'project.task',
122
+ measure: 'count',
123
+ groupBy: 'stage',
124
+ chart: 'bar',
125
+ w: 6,
126
+ },
127
+ {
128
+ id: 'hours_by_project',
129
+ title: 'Hours by project',
130
+ kind: 'chart',
131
+ model: 'project.timesheet',
132
+ measure: 'sum:hours',
133
+ groupBy: 'project',
134
+ chart: 'pie',
135
+ w: 6,
136
+ },
137
+ {
138
+ id: 'load_by_person',
139
+ title: 'Open tasks by person',
140
+ kind: 'chart',
141
+ model: 'project.task',
142
+ measure: 'count',
143
+ groupBy: 'assignee',
144
+ filter: { 'stage.done': false },
145
+ chart: 'bar',
146
+ w: 6,
147
+ },
148
+ {
149
+ id: 'busiest',
150
+ title: 'Projects with most hours',
151
+ kind: 'list',
152
+ model: 'project.project',
153
+ measure: 'sum:hours',
154
+ w: 6,
155
+ },
156
+ ],
157
+ },
54
158
  actions: {
55
159
  'projects.action_projects': action(ProjectProject, {
56
160
  label: 'Projects',
57
- views: ['list', 'form'],
161
+ views: ['list', 'gantt', 'form'],
58
162
  }),
59
163
  'projects.action_tasks': action(ProjectTask, {
60
164
  label: 'Tasks',
@@ -116,6 +220,31 @@ export const project = defineModule({
116
220
  'project.project.form': form(ProjectProject, (k) => ({
117
221
  header: { buttons: [] },
118
222
  sheet: [
223
+ k.stats('related', [
224
+ {
225
+ id: 'project_tasks',
226
+ label: 'Tasks',
227
+ model: ProjectTask,
228
+ where: { project: { $record: 'id' } },
229
+ action: 'projects.action_tasks',
230
+ },
231
+ {
232
+ id: 'project_open_tasks',
233
+ label: 'Open',
234
+ model: ProjectTask,
235
+ where: { project: { $record: 'id' }, 'stage.done': false },
236
+ action: 'projects.action_tasks',
237
+ tone: 'warning',
238
+ },
239
+ {
240
+ id: 'project_hours',
241
+ label: 'Hours',
242
+ model: ProjectTimesheet,
243
+ where: { project: { $record: 'id' } },
244
+ measure: { sum: 'hours' },
245
+ action: 'projects.action_timesheets',
246
+ },
247
+ ]),
119
248
  k.group('main', ['name', 'partner', 'manager', 'sequence']),
120
249
  k.group('dates', ['dateStart', 'dateEnd', 'taskCount', 'hours']),
121
250
  k.group('about', ['description'], { columns: 1 }),
@@ -135,18 +264,29 @@ export const project = defineModule({
135
264
  card: {
136
265
  title: 'name',
137
266
  subtitle: 'project',
138
- footer: ['assignee', 'deadline'],
139
- badges: [{ field: 'priority', widget: 'badge' }],
267
+ avatar: 'assignee',
268
+ color: 'project',
269
+ footer: [
270
+ { field: 'deadline', widget: 'daysLeft' },
271
+ { field: 'priority', widget: 'priority' },
272
+ ],
140
273
  },
141
274
  }),
275
+ // Projects on a timeline, from their start to their deadline.
276
+ 'project.project.gantt': gantt(ProjectProject, {
277
+ dateStart: 'dateStart',
278
+ dateStop: 'dateEnd',
279
+ title: 'name',
280
+ scale: 'week',
281
+ }),
142
282
  'project.task.list': list(ProjectTask, {
143
283
  columns: [
144
284
  'name',
145
285
  'project',
146
286
  'stage',
147
287
  'assignee',
148
- 'deadline',
149
- { field: 'priority', widget: 'badge' },
288
+ { field: 'deadline', widget: 'daysLeft' },
289
+ { field: 'priority', widget: 'priority' },
150
290
  { field: 'plannedHours', sum: true },
151
291
  { field: 'effectiveHours', sum: true },
152
292
  ],