shutro-erp 0.3.4 → 0.3.6

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 (618) hide show
  1. package/dist/account_asset/.kosh/bindings.d.ts +22 -0
  2. package/dist/account_asset/.kosh/bindings.js +15 -0
  3. package/dist/account_asset/.kosh/schema.d.ts +1755 -0
  4. package/dist/account_asset/board.d.ts +61 -0
  5. package/dist/account_asset/board.js +86 -0
  6. package/dist/account_asset/books.d.ts +42 -0
  7. package/dist/account_asset/books.js +398 -0
  8. package/dist/account_asset/demo.d.ts +7 -0
  9. package/dist/account_asset/demo.js +72 -0
  10. package/dist/account_asset/index.d.ts +9 -0
  11. package/dist/account_asset/index.js +335 -0
  12. package/dist/account_asset/module.d.ts +7622 -0
  13. package/dist/account_asset/module.js +230 -0
  14. package/dist/account_budget/.kosh/bindings.d.ts +22 -0
  15. package/dist/account_budget/.kosh/bindings.js +15 -0
  16. package/dist/account_budget/.kosh/schema.d.ts +1767 -0
  17. package/dist/account_budget/budget.d.ts +5 -0
  18. package/dist/account_budget/budget.js +142 -0
  19. package/dist/account_budget/demo.d.ts +6 -0
  20. package/dist/account_budget/demo.js +30 -0
  21. package/dist/account_budget/index.d.ts +4 -0
  22. package/dist/account_budget/index.js +223 -0
  23. package/dist/account_budget/module.d.ts +13863 -0
  24. package/dist/account_budget/module.js +167 -0
  25. package/dist/account_portal/.kosh/bindings.js +1 -1
  26. package/dist/account_portal/.kosh/schema.d.ts +176 -6
  27. package/dist/account_portal/module.d.ts +505 -6
  28. package/dist/accounting/.kosh/bindings.js +1 -1
  29. package/dist/accounting/.kosh/schema.d.ts +176 -6
  30. package/dist/accounting/index.d.ts +1 -1
  31. package/dist/accounting/index.js +344 -4
  32. package/dist/accounting/module.d.ts +513 -5
  33. package/dist/accounting/module.js +55 -3
  34. package/dist/approvals/.kosh/bindings.d.ts +22 -0
  35. package/dist/approvals/.kosh/bindings.js +15 -0
  36. package/dist/approvals/.kosh/schema.d.ts +611 -0
  37. package/dist/approvals/index.d.ts +18 -0
  38. package/dist/approvals/index.js +302 -0
  39. package/dist/approvals/mails.d.ts +25 -0
  40. package/dist/approvals/mails.js +82 -0
  41. package/dist/approvals/module.d.ts +1 -0
  42. package/dist/approvals/module.js +12 -0
  43. package/dist/approvals/web/History.d.ts +4 -0
  44. package/dist/approvals/web/History.js +13 -0
  45. package/dist/approvals/web/Inbox.d.ts +9 -0
  46. package/dist/approvals/web/Inbox.js +114 -0
  47. package/dist/approvals/web/Mine.d.ts +7 -0
  48. package/dist/approvals/web/Mine.js +27 -0
  49. package/dist/approvals/web/index.d.ts +13 -0
  50. package/dist/approvals/web/index.js +22 -0
  51. package/dist/approvals/web/messages.d.ts +2 -0
  52. package/dist/approvals/web/messages.js +119 -0
  53. package/dist/approvals/web/shared.d.ts +59 -0
  54. package/dist/approvals/web/shared.js +46 -0
  55. package/dist/attendance/.kosh/bindings.d.ts +22 -0
  56. package/dist/attendance/.kosh/bindings.js +15 -0
  57. package/dist/attendance/.kosh/schema.d.ts +1048 -0
  58. package/dist/attendance/days.d.ts +96 -0
  59. package/dist/attendance/days.js +430 -0
  60. package/dist/attendance/demo.d.ts +7 -0
  61. package/dist/attendance/demo.js +58 -0
  62. package/dist/attendance/index.d.ts +4 -0
  63. package/dist/attendance/index.js +513 -0
  64. package/dist/attendance/module.d.ts +3969 -0
  65. package/dist/attendance/module.js +412 -0
  66. package/dist/attendance/routes.d.ts +16 -0
  67. package/dist/attendance/routes.js +266 -0
  68. package/dist/attendance/web/Check.d.ts +8 -0
  69. package/dist/attendance/web/Check.js +40 -0
  70. package/dist/attendance/web/Kiosk.d.ts +8 -0
  71. package/dist/attendance/web/Kiosk.js +62 -0
  72. package/dist/attendance/web/PinButton.d.ts +7 -0
  73. package/dist/attendance/web/PinButton.js +29 -0
  74. package/dist/attendance/web/index.d.ts +13 -0
  75. package/dist/attendance/web/index.js +22 -0
  76. package/dist/attendance/web/messages.d.ts +2 -0
  77. package/dist/attendance/web/messages.js +61 -0
  78. package/dist/calendar/.kosh/bindings.d.ts +22 -0
  79. package/dist/calendar/.kosh/bindings.js +15 -0
  80. package/dist/calendar/.kosh/schema.d.ts +795 -0
  81. package/dist/calendar/demo.d.ts +6 -0
  82. package/dist/calendar/demo.js +24 -0
  83. package/dist/calendar/index.d.ts +3 -0
  84. package/dist/calendar/index.js +291 -0
  85. package/dist/calendar/module.d.ts +1705 -0
  86. package/dist/calendar/module.js +180 -0
  87. package/dist/cli/init.js +80 -0
  88. package/dist/cli/templates.d.ts +1 -1
  89. package/dist/cli/templates.js +226 -0
  90. package/dist/contacts/.kosh/bindings.js +1 -1
  91. package/dist/contacts/.kosh/schema.d.ts +78 -3
  92. package/dist/contacts/demo.js +30 -1
  93. package/dist/contacts/index.d.ts +1 -1
  94. package/dist/contacts/index.js +155 -9
  95. package/dist/contacts/module.d.ts +338 -2
  96. package/dist/contacts/module.js +93 -5
  97. package/dist/crm/.kosh/bindings.d.ts +22 -0
  98. package/dist/crm/.kosh/bindings.js +15 -0
  99. package/dist/crm/.kosh/schema.d.ts +800 -0
  100. package/dist/crm/demo.d.ts +6 -0
  101. package/dist/crm/demo.js +45 -0
  102. package/dist/crm/index.d.ts +3 -0
  103. package/dist/crm/index.js +361 -0
  104. package/dist/crm/module.d.ts +1845 -0
  105. package/dist/crm/module.js +208 -0
  106. package/dist/documents/.kosh/bindings.d.ts +22 -0
  107. package/dist/documents/.kosh/bindings.js +15 -0
  108. package/dist/documents/.kosh/schema.d.ts +862 -0
  109. package/dist/documents/demo.d.ts +6 -0
  110. package/dist/documents/demo.js +22 -0
  111. package/dist/documents/documents.d.ts +98 -0
  112. package/dist/documents/documents.js +318 -0
  113. package/dist/documents/index.d.ts +30 -0
  114. package/dist/documents/index.js +442 -0
  115. package/dist/documents/module.d.ts +2781 -0
  116. package/dist/documents/module.js +214 -0
  117. package/dist/documents/web/Versions.d.ts +7 -0
  118. package/dist/documents/web/Versions.js +45 -0
  119. package/dist/documents/web/index.d.ts +11 -0
  120. package/dist/documents/web/index.js +16 -0
  121. package/dist/documents/web/messages.d.ts +2 -0
  122. package/dist/documents/web/messages.js +21 -0
  123. package/dist/event/.kosh/bindings.d.ts +22 -0
  124. package/dist/event/.kosh/bindings.js +15 -0
  125. package/dist/event/.kosh/schema.d.ts +843 -0
  126. package/dist/event/demo.d.ts +6 -0
  127. package/dist/event/demo.js +65 -0
  128. package/dist/event/index.d.ts +14 -0
  129. package/dist/event/index.js +333 -0
  130. package/dist/event/mails.d.ts +15 -0
  131. package/dist/event/mails.js +112 -0
  132. package/dist/event/module.d.ts +2800 -0
  133. package/dist/event/module.js +323 -0
  134. package/dist/event/web/CheckInBox.d.ts +9 -0
  135. package/dist/event/web/CheckInBox.js +87 -0
  136. package/dist/event/web/index.d.ts +11 -0
  137. package/dist/event/web/index.js +16 -0
  138. package/dist/event/web/messages.d.ts +2 -0
  139. package/dist/event/web/messages.js +23 -0
  140. package/dist/event_account/.kosh/bindings.d.ts +22 -0
  141. package/dist/event_account/.kosh/bindings.js +15 -0
  142. package/dist/event_account/.kosh/schema.d.ts +1758 -0
  143. package/dist/event_account/index.d.ts +3 -0
  144. package/dist/event_account/index.js +28 -0
  145. package/dist/event_account/module.d.ts +7114 -0
  146. package/dist/event_account/module.js +90 -0
  147. package/dist/expense/.kosh/bindings.d.ts +22 -0
  148. package/dist/expense/.kosh/bindings.js +15 -0
  149. package/dist/expense/.kosh/schema.d.ts +1299 -0
  150. package/dist/expense/demo.d.ts +7 -0
  151. package/dist/expense/demo.js +69 -0
  152. package/dist/expense/index.d.ts +3 -0
  153. package/dist/expense/index.js +495 -0
  154. package/dist/expense/module.d.ts +4747 -0
  155. package/dist/expense/module.js +647 -0
  156. package/dist/expense_account/.kosh/bindings.d.ts +22 -0
  157. package/dist/expense_account/.kosh/bindings.js +15 -0
  158. package/dist/expense_account/.kosh/schema.d.ts +1936 -0
  159. package/dist/expense_account/index.d.ts +3 -0
  160. package/dist/expense_account/index.js +74 -0
  161. package/dist/expense_account/module.d.ts +9153 -0
  162. package/dist/expense_account/module.js +318 -0
  163. package/dist/helpdesk/.kosh/bindings.d.ts +22 -0
  164. package/dist/helpdesk/.kosh/bindings.js +15 -0
  165. package/dist/helpdesk/.kosh/schema.d.ts +885 -0
  166. package/dist/helpdesk/demo.d.ts +7 -0
  167. package/dist/helpdesk/demo.js +65 -0
  168. package/dist/helpdesk/hours.d.ts +17 -0
  169. package/dist/helpdesk/hours.js +94 -0
  170. package/dist/helpdesk/index.d.ts +10 -0
  171. package/dist/helpdesk/index.js +461 -0
  172. package/dist/helpdesk/module.d.ts +2940 -0
  173. package/dist/helpdesk/module.js +326 -0
  174. package/dist/helpdesk/routes.d.ts +12 -0
  175. package/dist/helpdesk/routes.js +132 -0
  176. package/dist/helpdesk/sla.d.ts +37 -0
  177. package/dist/helpdesk/sla.js +226 -0
  178. package/dist/hr/.kosh/bindings.d.ts +22 -0
  179. package/dist/hr/.kosh/bindings.js +15 -0
  180. package/dist/hr/.kosh/schema.d.ts +878 -0
  181. package/dist/hr/demo.d.ts +6 -0
  182. package/dist/hr/demo.js +60 -0
  183. package/dist/hr/index.d.ts +3 -0
  184. package/dist/hr/index.js +483 -0
  185. package/dist/hr/module.d.ts +2611 -0
  186. package/dist/hr/module.js +350 -0
  187. package/dist/l10n_bd/.kosh/bindings.js +1 -1
  188. package/dist/l10n_bd/.kosh/schema.d.ts +176 -6
  189. package/dist/l10n_bd/module.d.ts +505 -6
  190. package/dist/l10n_bd_payroll/.kosh/bindings.d.ts +22 -0
  191. package/dist/l10n_bd_payroll/.kosh/bindings.js +15 -0
  192. package/dist/l10n_bd_payroll/.kosh/schema.d.ts +2312 -0
  193. package/dist/l10n_bd_payroll/data.d.ts +47 -0
  194. package/dist/l10n_bd_payroll/data.js +347 -0
  195. package/dist/l10n_bd_payroll/index.d.ts +4 -0
  196. package/dist/l10n_bd_payroll/index.js +24 -0
  197. package/dist/l10n_bd_payroll/module.d.ts +12932 -0
  198. package/dist/l10n_bd_payroll/module.js +86 -0
  199. package/dist/l10n_in/.kosh/bindings.js +1 -1
  200. package/dist/l10n_in/.kosh/schema.d.ts +176 -6
  201. package/dist/l10n_in/module.d.ts +527 -7
  202. package/dist/mail/inbound/handle.js +6 -1
  203. package/dist/maintenance/.kosh/bindings.d.ts +22 -0
  204. package/dist/maintenance/.kosh/bindings.js +15 -0
  205. package/dist/maintenance/.kosh/schema.d.ts +911 -0
  206. package/dist/maintenance/demo.d.ts +6 -0
  207. package/dist/maintenance/demo.js +60 -0
  208. package/dist/maintenance/index.d.ts +3 -0
  209. package/dist/maintenance/index.js +422 -0
  210. package/dist/maintenance/module.d.ts +3545 -0
  211. package/dist/maintenance/module.js +446 -0
  212. package/dist/maintenance_stock/.kosh/bindings.d.ts +22 -0
  213. package/dist/maintenance_stock/.kosh/bindings.js +15 -0
  214. package/dist/maintenance_stock/.kosh/schema.d.ts +1446 -0
  215. package/dist/maintenance_stock/index.d.ts +9 -0
  216. package/dist/maintenance_stock/index.js +52 -0
  217. package/dist/maintenance_stock/module.d.ts +7675 -0
  218. package/dist/maintenance_stock/module.js +192 -0
  219. package/dist/modules-sdk/index.d.ts +1 -1
  220. package/dist/modules-sdk/manifest.d.ts +109 -2
  221. package/dist/modules-sdk/manifest.js +35 -1
  222. package/dist/mrp/.kosh/bindings.d.ts +22 -0
  223. package/dist/mrp/.kosh/bindings.js +15 -0
  224. package/dist/mrp/.kosh/schema.d.ts +1453 -0
  225. package/dist/mrp/demo.d.ts +7 -0
  226. package/dist/mrp/demo.js +42 -0
  227. package/dist/mrp/index.d.ts +3 -0
  228. package/dist/mrp/index.js +393 -0
  229. package/dist/mrp/module.d.ts +9335 -0
  230. package/dist/mrp/module.js +757 -0
  231. package/dist/mrp_account/.kosh/bindings.d.ts +22 -0
  232. package/dist/mrp_account/.kosh/bindings.js +15 -0
  233. package/dist/mrp_account/.kosh/schema.d.ts +2299 -0
  234. package/dist/mrp_account/index.d.ts +3 -0
  235. package/dist/mrp_account/index.js +22 -0
  236. package/dist/mrp_account/module.d.ts +23151 -0
  237. package/dist/mrp_account/module.js +123 -0
  238. package/dist/payment/.kosh/bindings.js +1 -1
  239. package/dist/payment/.kosh/schema.d.ts +178 -7
  240. package/dist/payment/index.d.ts +41 -0
  241. package/dist/payment/index.js +131 -74
  242. package/dist/payment/module.d.ts +569 -12
  243. package/dist/payment/module.js +19 -3
  244. package/dist/payment/settle.js +10 -1
  245. package/dist/payroll/.kosh/bindings.d.ts +22 -0
  246. package/dist/payroll/.kosh/bindings.js +15 -0
  247. package/dist/payroll/.kosh/schema.d.ts +1390 -0
  248. package/dist/payroll/compute.d.ts +35 -0
  249. package/dist/payroll/compute.js +398 -0
  250. package/dist/payroll/demo.d.ts +55 -0
  251. package/dist/payroll/demo.js +121 -0
  252. package/dist/payroll/formula.d.ts +62 -0
  253. package/dist/payroll/formula.js +320 -0
  254. package/dist/payroll/index.d.ts +230 -0
  255. package/dist/payroll/index.js +713 -0
  256. package/dist/payroll/module.d.ts +9390 -0
  257. package/dist/payroll/module.js +606 -0
  258. package/dist/payroll/routes.d.ts +10 -0
  259. package/dist/payroll/routes.js +112 -0
  260. package/dist/payroll_account/.kosh/bindings.d.ts +22 -0
  261. package/dist/payroll_account/.kosh/bindings.js +15 -0
  262. package/dist/payroll_account/.kosh/schema.d.ts +2308 -0
  263. package/dist/payroll_account/index.d.ts +3 -0
  264. package/dist/payroll_account/index.js +40 -0
  265. package/dist/payroll_account/module.d.ts +12396 -0
  266. package/dist/payroll_account/module.js +256 -0
  267. package/dist/permissions/approvals.d.ts +131 -9
  268. package/dist/permissions/approvals.js +662 -57
  269. package/dist/permissions/index.d.ts +1 -1
  270. package/dist/permissions/index.js +2 -2
  271. package/dist/permissions/models.js +191 -12
  272. package/dist/permissions/routes.d.ts +6 -1
  273. package/dist/permissions/routes.js +37 -4
  274. package/dist/permissions/web/ApprovalPanel.d.ts +5 -4
  275. package/dist/permissions/web/ApprovalPanel.js +39 -13
  276. package/dist/permissions/web/index.d.ts +6 -4
  277. package/dist/permissions/web/index.js +13 -4
  278. package/dist/permissions/web/messages.d.ts +2 -0
  279. package/dist/permissions/web/messages.js +43 -0
  280. package/dist/portal/.kosh/bindings.js +1 -1
  281. package/dist/portal/.kosh/schema.d.ts +78 -3
  282. package/dist/portal/index.js +1 -1
  283. package/dist/portal/module.d.ts +166 -2
  284. package/dist/pos/.kosh/bindings.d.ts +22 -0
  285. package/dist/pos/.kosh/bindings.js +15 -0
  286. package/dist/pos/.kosh/schema.d.ts +1809 -0
  287. package/dist/pos/accounting.d.ts +10 -0
  288. package/dist/pos/accounting.js +149 -0
  289. package/dist/pos/demo.d.ts +6 -0
  290. package/dist/pos/demo.js +90 -0
  291. package/dist/pos/index.d.ts +9 -0
  292. package/dist/pos/index.js +353 -0
  293. package/dist/pos/module.d.ts +9783 -0
  294. package/dist/pos/module.js +423 -0
  295. package/dist/pos/routes.d.ts +39 -0
  296. package/dist/pos/routes.js +368 -0
  297. package/dist/pos/web/Register.d.ts +9 -0
  298. package/dist/pos/web/Register.js +252 -0
  299. package/dist/pos/web/index.d.ts +11 -0
  300. package/dist/pos/web/index.js +16 -0
  301. package/dist/pos/web/messages.d.ts +2 -0
  302. package/dist/pos/web/messages.js +87 -0
  303. package/dist/pos_stock/.kosh/bindings.d.ts +22 -0
  304. package/dist/pos_stock/.kosh/bindings.js +15 -0
  305. package/dist/pos_stock/.kosh/schema.d.ts +2208 -0
  306. package/dist/pos_stock/index.d.ts +9 -0
  307. package/dist/pos_stock/index.js +35 -0
  308. package/dist/pos_stock/module.d.ts +12803 -0
  309. package/dist/pos_stock/module.js +115 -0
  310. package/dist/product/.kosh/bindings.js +1 -1
  311. package/dist/product/.kosh/schema.d.ts +52 -1
  312. package/dist/product/index.js +94 -4
  313. package/dist/product/module.d.ts +45 -1
  314. package/dist/product/module.js +11 -3
  315. package/dist/project/.kosh/bindings.js +1 -1
  316. package/dist/project/.kosh/schema.d.ts +725 -3
  317. package/dist/project/index.d.ts +3 -1
  318. package/dist/project/index.js +1045 -18
  319. package/dist/project/module.d.ts +10168 -458
  320. package/dist/project/module.js +1578 -14
  321. package/dist/project/routes.d.ts +44 -0
  322. package/dist/project/routes.js +314 -0
  323. package/dist/project/schedule.d.ts +72 -0
  324. package/dist/project/schedule.js +192 -0
  325. package/dist/project/web/Refresh.d.ts +8 -0
  326. package/dist/project/web/Refresh.js +29 -0
  327. package/dist/project/web/Schedule.d.ts +9 -0
  328. package/dist/project/web/Schedule.js +93 -0
  329. package/dist/project/web/Structure.d.ts +8 -0
  330. package/dist/project/web/Structure.js +86 -0
  331. package/dist/project/web/Workload.d.ts +8 -0
  332. package/dist/project/web/Workload.js +43 -0
  333. package/dist/project/web/index.d.ts +14 -0
  334. package/dist/project/web/index.js +25 -0
  335. package/dist/project/web/messages.d.ts +2 -0
  336. package/dist/project/web/messages.js +85 -0
  337. package/dist/project_account/.kosh/bindings.d.ts +22 -0
  338. package/dist/project_account/.kosh/bindings.js +15 -0
  339. package/dist/project_account/.kosh/schema.d.ts +2241 -0
  340. package/dist/project_account/index.d.ts +3 -0
  341. package/dist/project_account/index.js +27 -0
  342. package/dist/project_account/module.d.ts +11539 -0
  343. package/dist/project_account/module.js +76 -0
  344. package/dist/project_portal/.kosh/bindings.js +1 -1
  345. package/dist/project_portal/.kosh/schema.d.ts +725 -3
  346. package/dist/project_portal/module.d.ts +5137 -119
  347. package/dist/project_purchase/.kosh/bindings.d.ts +22 -0
  348. package/dist/project_purchase/.kosh/bindings.js +15 -0
  349. package/dist/project_purchase/.kosh/schema.d.ts +2320 -0
  350. package/dist/project_purchase/index.d.ts +9 -0
  351. package/dist/project_purchase/index.js +22 -0
  352. package/dist/project_purchase/module.d.ts +25147 -0
  353. package/dist/project_purchase/module.js +56 -0
  354. package/dist/purchase/.kosh/bindings.js +1 -1
  355. package/dist/purchase/.kosh/schema.d.ts +150 -6
  356. package/dist/purchase/index.js +163 -3
  357. package/dist/purchase/module.d.ts +228 -5
  358. package/dist/purchase/module.js +30 -3
  359. package/dist/purchase_account/.kosh/bindings.js +1 -1
  360. package/dist/purchase_account/.kosh/schema.d.ts +180 -8
  361. package/dist/purchase_account/index.js +27 -1
  362. package/dist/purchase_account/module.d.ts +591 -30
  363. package/dist/purchase_account/module.js +13 -2
  364. package/dist/purchase_portal/.kosh/bindings.js +1 -1
  365. package/dist/purchase_portal/.kosh/schema.d.ts +150 -6
  366. package/dist/purchase_portal/module.d.ts +372 -6
  367. package/dist/purchase_stock/.kosh/bindings.d.ts +22 -0
  368. package/dist/purchase_stock/.kosh/bindings.js +15 -0
  369. package/dist/purchase_stock/.kosh/schema.d.ts +1479 -0
  370. package/dist/purchase_stock/index.d.ts +7 -0
  371. package/dist/purchase_stock/index.js +98 -0
  372. package/dist/purchase_stock/module.d.ts +7535 -0
  373. package/dist/purchase_stock/module.js +380 -0
  374. package/dist/purchase_stock_account/.kosh/bindings.d.ts +22 -0
  375. package/dist/purchase_stock_account/.kosh/bindings.js +15 -0
  376. package/dist/purchase_stock_account/.kosh/schema.d.ts +2155 -0
  377. package/dist/purchase_stock_account/index.d.ts +3 -0
  378. package/dist/purchase_stock_account/index.js +24 -0
  379. package/dist/purchase_stock_account/module.d.ts +38015 -0
  380. package/dist/purchase_stock_account/module.js +168 -0
  381. package/dist/recruitment/.kosh/bindings.d.ts +22 -0
  382. package/dist/recruitment/.kosh/bindings.js +15 -0
  383. package/dist/recruitment/.kosh/schema.d.ts +991 -0
  384. package/dist/recruitment/demo.d.ts +6 -0
  385. package/dist/recruitment/demo.js +45 -0
  386. package/dist/recruitment/index.d.ts +3 -0
  387. package/dist/recruitment/index.js +385 -0
  388. package/dist/recruitment/module.d.ts +3249 -0
  389. package/dist/recruitment/module.js +194 -0
  390. package/dist/recruitment/web/HireButton.d.ts +9 -0
  391. package/dist/recruitment/web/HireButton.js +32 -0
  392. package/dist/recruitment/web/index.d.ts +11 -0
  393. package/dist/recruitment/web/index.js +16 -0
  394. package/dist/recruitment/web/messages.d.ts +2 -0
  395. package/dist/recruitment/web/messages.js +19 -0
  396. package/dist/reporting/documents.d.ts +5 -0
  397. package/dist/reporting/documents.js +28 -1
  398. package/dist/reporting/index.d.ts +1 -1
  399. package/dist/reporting/index.js +4 -2
  400. package/dist/reporting/models.js +9 -0
  401. package/dist/reporting/overviews.d.ts +16 -0
  402. package/dist/reporting/overviews.js +56 -0
  403. package/dist/reporting/routes-documents.js +1 -1
  404. package/dist/reporting/routes.js +138 -80
  405. package/dist/reporting/web/DashboardView.d.ts +11 -0
  406. package/dist/reporting/web/DashboardView.js +2 -2
  407. package/dist/reporting/web/DesignerView.js +5 -0
  408. package/dist/reporting/web/Overview.d.ts +9 -0
  409. package/dist/reporting/web/Overview.js +53 -0
  410. package/dist/reporting/web/index.d.ts +1 -0
  411. package/dist/reporting/web/index.js +4 -1
  412. package/dist/reporting/web/messages.js +9 -0
  413. package/dist/sale_account/.kosh/bindings.js +1 -1
  414. package/dist/sale_account/.kosh/schema.d.ts +181 -6
  415. package/dist/sale_account/index.js +22 -1
  416. package/dist/sale_account/module.d.ts +639 -38
  417. package/dist/sale_portal/.kosh/bindings.js +1 -1
  418. package/dist/sale_portal/.kosh/schema.d.ts +59 -3
  419. package/dist/sale_portal/module.d.ts +435 -5
  420. package/dist/sale_project/.kosh/bindings.js +1 -1
  421. package/dist/sale_project/.kosh/schema.d.ts +732 -3
  422. package/dist/sale_project/module.d.ts +5349 -208
  423. package/dist/sale_project/module.js +17 -1
  424. package/dist/sale_stock/.kosh/bindings.d.ts +22 -0
  425. package/dist/sale_stock/.kosh/bindings.js +15 -0
  426. package/dist/sale_stock/.kosh/schema.d.ts +1303 -0
  427. package/dist/sale_stock/index.d.ts +7 -0
  428. package/dist/sale_stock/index.js +84 -0
  429. package/dist/sale_stock/module.d.ts +7514 -0
  430. package/dist/sale_stock/module.js +146 -0
  431. package/dist/sales/.kosh/bindings.js +1 -1
  432. package/dist/sales/.kosh/schema.d.ts +59 -3
  433. package/dist/sales/index.js +195 -4
  434. package/dist/sales/module.d.ts +356 -3
  435. package/dist/sales/module.js +78 -3
  436. package/dist/server/api/metadata.d.ts +5 -0
  437. package/dist/server/api/metadata.js +5 -0
  438. package/dist/server/api/rest.js +64 -1
  439. package/dist/server/api/views.js +1 -0
  440. package/dist/server/app-settings.d.ts +7 -0
  441. package/dist/server/app-settings.js +10 -0
  442. package/dist/server/auth/base.js +9 -0
  443. package/dist/server/index.d.ts +1 -0
  444. package/dist/server/index.js +1 -0
  445. package/dist/settings/app-settings.d.ts +2 -0
  446. package/dist/settings/app-settings.js +518 -0
  447. package/dist/settings/index.d.ts +1 -0
  448. package/dist/settings/index.js +15 -0
  449. package/dist/settings/people.js +29 -5
  450. package/dist/settings/web/AppSettingsPage.d.ts +11 -0
  451. package/dist/settings/web/AppSettingsPage.js +210 -0
  452. package/dist/settings/web/OverviewPage.js +16 -3
  453. package/dist/settings/web/PeoplePage.js +20 -6
  454. package/dist/settings/web/index.d.ts +1 -0
  455. package/dist/settings/web/index.js +3 -0
  456. package/dist/settings/web/messages.js +118 -2
  457. package/dist/sign/.kosh/bindings.d.ts +22 -0
  458. package/dist/sign/.kosh/bindings.js +15 -0
  459. package/dist/sign/.kosh/schema.d.ts +990 -0
  460. package/dist/sign/index.d.ts +14 -0
  461. package/dist/sign/index.js +350 -0
  462. package/dist/sign/module.d.ts +4478 -0
  463. package/dist/sign/module.js +158 -0
  464. package/dist/sign/sign.d.ts +82 -0
  465. package/dist/sign/sign.js +474 -0
  466. package/dist/stock/.kosh/bindings.d.ts +22 -0
  467. package/dist/stock/.kosh/bindings.js +15 -0
  468. package/dist/stock/.kosh/schema.d.ts +1222 -0
  469. package/dist/stock/demo.d.ts +8 -0
  470. package/dist/stock/demo.js +82 -0
  471. package/dist/stock/index.d.ts +4 -0
  472. package/dist/stock/index.js +903 -0
  473. package/dist/stock/module.d.ts +7856 -0
  474. package/dist/stock/module.js +1880 -0
  475. package/dist/stock/replenish.d.ts +38 -0
  476. package/dist/stock/replenish.js +176 -0
  477. package/dist/stock/web/Replenishment.d.ts +8 -0
  478. package/dist/stock/web/Replenishment.js +84 -0
  479. package/dist/stock/web/ScanBox.d.ts +8 -0
  480. package/dist/stock/web/ScanBox.js +90 -0
  481. package/dist/stock/web/index.d.ts +13 -0
  482. package/dist/stock/web/index.js +20 -0
  483. package/dist/stock/web/messages.d.ts +2 -0
  484. package/dist/stock/web/messages.js +77 -0
  485. package/dist/stock_account/.kosh/bindings.d.ts +22 -0
  486. package/dist/stock_account/.kosh/bindings.js +15 -0
  487. package/dist/stock_account/.kosh/schema.d.ts +2068 -0
  488. package/dist/stock_account/index.d.ts +3 -0
  489. package/dist/stock_account/index.js +140 -0
  490. package/dist/stock_account/module.d.ts +11523 -0
  491. package/dist/stock_account/module.js +339 -0
  492. package/dist/storage/attachments.d.ts +5 -0
  493. package/dist/storage/attachments.js +12 -1
  494. package/dist/storage/models.js +3 -0
  495. package/dist/storage/routes.js +13 -2
  496. package/dist/todo/.kosh/bindings.d.ts +22 -0
  497. package/dist/todo/.kosh/bindings.js +15 -0
  498. package/dist/todo/.kosh/schema.d.ts +732 -0
  499. package/dist/todo/demo.d.ts +6 -0
  500. package/dist/todo/demo.js +35 -0
  501. package/dist/todo/index.d.ts +3 -0
  502. package/dist/todo/index.js +187 -0
  503. package/dist/todo/module.d.ts +1180 -0
  504. package/dist/todo/module.js +130 -0
  505. package/dist/trade_finance/.kosh/bindings.d.ts +22 -0
  506. package/dist/trade_finance/.kosh/bindings.js +15 -0
  507. package/dist/trade_finance/.kosh/schema.d.ts +884 -0
  508. package/dist/trade_finance/demo.d.ts +6 -0
  509. package/dist/trade_finance/demo.js +63 -0
  510. package/dist/trade_finance/index.d.ts +3 -0
  511. package/dist/trade_finance/index.js +415 -0
  512. package/dist/trade_finance/module.d.ts +3779 -0
  513. package/dist/trade_finance/module.js +507 -0
  514. package/dist/trade_finance_account/.kosh/bindings.d.ts +22 -0
  515. package/dist/trade_finance_account/.kosh/bindings.js +15 -0
  516. package/dist/trade_finance_account/.kosh/schema.d.ts +1830 -0
  517. package/dist/trade_finance_account/index.d.ts +3 -0
  518. package/dist/trade_finance_account/index.js +93 -0
  519. package/dist/trade_finance_account/module.d.ts +8074 -0
  520. package/dist/trade_finance_account/module.js +245 -0
  521. package/dist/trade_finance_purchase/.kosh/bindings.d.ts +22 -0
  522. package/dist/trade_finance_purchase/.kosh/bindings.js +15 -0
  523. package/dist/trade_finance_purchase/.kosh/schema.d.ts +1246 -0
  524. package/dist/trade_finance_purchase/index.d.ts +8 -0
  525. package/dist/trade_finance_purchase/index.js +50 -0
  526. package/dist/trade_finance_purchase/module.d.ts +4257 -0
  527. package/dist/trade_finance_purchase/module.js +44 -0
  528. package/dist/trade_finance_sale/.kosh/bindings.d.ts +22 -0
  529. package/dist/trade_finance_sale/.kosh/bindings.js +15 -0
  530. package/dist/trade_finance_sale/.kosh/schema.d.ts +1072 -0
  531. package/dist/trade_finance_sale/index.d.ts +8 -0
  532. package/dist/trade_finance_sale/index.js +50 -0
  533. package/dist/trade_finance_sale/module.d.ts +4281 -0
  534. package/dist/trade_finance_sale/module.js +44 -0
  535. package/dist/ui/api.d.ts +2 -1
  536. package/dist/ui/api.js +2 -1
  537. package/dist/ui/app.js +26 -13
  538. package/dist/ui/components/AppIcon.js +30 -1
  539. package/dist/ui/components/primitives.d.ts +2 -0
  540. package/dist/ui/components/primitives.js +7 -1
  541. package/dist/ui/i18n/messages.d.ts +27 -0
  542. package/dist/ui/i18n/messages.js +46 -0
  543. package/dist/ui/index.d.ts +1 -0
  544. package/dist/ui/index.js +1 -0
  545. package/dist/ui/offline/queue.d.ts +5 -1
  546. package/dist/ui/offline/queue.js +2 -0
  547. package/dist/ui/registry.d.ts +5 -0
  548. package/dist/ui/shell/Home.js +55 -4
  549. package/dist/ui/views/FormView.js +102 -19
  550. package/dist/ui/views/KanbanView.d.ts +2 -0
  551. package/dist/ui/views/KanbanView.js +40 -3
  552. package/dist/ui/views/ListView.js +110 -11
  553. package/dist/ui/views/StatsRow.d.ts +14 -0
  554. package/dist/ui/views/StatsRow.js +88 -0
  555. package/dist/ui/views/widgets.d.ts +2 -1
  556. package/dist/ui/views/widgets.js +200 -1
  557. package/dist/views/builders.d.ts +19 -2
  558. package/dist/views/builders.js +21 -1
  559. package/dist/views/condition.d.ts +6 -0
  560. package/dist/views/condition.js +20 -0
  561. package/dist/views/documents.d.ts +8 -0
  562. package/dist/views/extend.d.ts +2 -2
  563. package/dist/views/extend.js +11 -1
  564. package/dist/views/index.d.ts +2 -2
  565. package/dist/views/index.js +2 -2
  566. package/dist/views/types.d.ts +52 -5
  567. package/dist/views/validate.js +39 -1
  568. package/dist/website/.kosh/bindings.d.ts +22 -0
  569. package/dist/website/.kosh/bindings.js +15 -0
  570. package/dist/website/.kosh/schema.d.ts +881 -0
  571. package/dist/website/demo.d.ts +6 -0
  572. package/dist/website/demo.js +115 -0
  573. package/dist/website/index.d.ts +9 -0
  574. package/dist/website/index.js +251 -0
  575. package/dist/website/module.d.ts +2987 -0
  576. package/dist/website/module.js +282 -0
  577. package/dist/website/render.d.ts +45 -0
  578. package/dist/website/render.js +102 -0
  579. package/dist/website/routes.d.ts +12 -0
  580. package/dist/website/routes.js +246 -0
  581. package/dist/website/web/PagePreview.d.ts +7 -0
  582. package/dist/website/web/PagePreview.js +33 -0
  583. package/dist/website/web/index.d.ts +11 -0
  584. package/dist/website/web/index.js +16 -0
  585. package/dist/website/web/messages.d.ts +2 -0
  586. package/dist/website/web/messages.js +15 -0
  587. package/dist/website_crm/.kosh/bindings.d.ts +22 -0
  588. package/dist/website_crm/.kosh/bindings.js +15 -0
  589. package/dist/website_crm/.kosh/schema.d.ts +967 -0
  590. package/dist/website_crm/index.d.ts +3 -0
  591. package/dist/website_crm/index.js +39 -0
  592. package/dist/website_crm/module.d.ts +2956 -0
  593. package/dist/website_crm/module.js +44 -0
  594. package/dist/website_sale/.kosh/bindings.d.ts +22 -0
  595. package/dist/website_sale/.kosh/bindings.js +15 -0
  596. package/dist/website_sale/.kosh/schema.d.ts +2284 -0
  597. package/dist/website_sale/couriers.d.ts +50 -0
  598. package/dist/website_sale/couriers.js +59 -0
  599. package/dist/website_sale/demo.d.ts +7 -0
  600. package/dist/website_sale/demo.js +90 -0
  601. package/dist/website_sale/growth.d.ts +31 -0
  602. package/dist/website_sale/growth.js +163 -0
  603. package/dist/website_sale/index.d.ts +49 -0
  604. package/dist/website_sale/index.js +538 -0
  605. package/dist/website_sale/module.d.ts +22027 -0
  606. package/dist/website_sale/module.js +397 -0
  607. package/dist/website_sale/shipments.d.ts +16 -0
  608. package/dist/website_sale/shipments.js +113 -0
  609. package/dist/website_sale/shop.d.ts +81 -0
  610. package/dist/website_sale/shop.js +649 -0
  611. package/dist/website_sale_stock/.kosh/bindings.d.ts +22 -0
  612. package/dist/website_sale_stock/.kosh/bindings.js +15 -0
  613. package/dist/website_sale_stock/.kosh/schema.d.ts +2681 -0
  614. package/dist/website_sale_stock/index.d.ts +9 -0
  615. package/dist/website_sale_stock/index.js +20 -0
  616. package/dist/website_sale_stock/module.d.ts +24998 -0
  617. package/dist/website_sale_stock/module.js +28 -0
  618. package/package.json +200 -2
@@ -0,0 +1,180 @@
1
+ /**
2
+ * The data layer of Agenda (RFC 0021): events with their attendees — people of the company or contacts from outside,
3
+ * each with their answer — rooms that are never double-booked, and privacy: public events are seen by every Agenda
4
+ * user, private ones by their organizer and attendees only. Only the organizer (and Agenda managers) change an event;
5
+ * an attendee changes their own answer.
6
+ */
7
+ import { contactsShutro } from '../contacts/index.js';
8
+ import { messagingShutro } from '../messaging/index.js';
9
+ import { installationSetting } from '../server/index.js';
10
+ import { orm } from '../server/orm.js';
11
+ import { check, defineModel, defineModule, f, onchange } from './.kosh/bindings.js';
12
+ const ALL = ['read', 'write', 'create', 'unlink'];
13
+ const me = { $env: 'uid' };
14
+ /** A meeting room (or any bookable place): booked with its events, never twice at once. */
15
+ export const CalendarRoom = defineModel('calendar.room', {
16
+ label: 'Room',
17
+ recName: 'name',
18
+ order: ['name asc'],
19
+ archivable: true,
20
+ access: { 'calendar.user': ['read'], 'calendar.manager': ALL },
21
+ fields: {
22
+ name: f.char({ required: true }),
23
+ capacity: f.integer({ label: 'Seats' }),
24
+ location: f.char(),
25
+ },
26
+ });
27
+ export const CalendarEvent = defineModel('calendar.event', {
28
+ label: 'Event',
29
+ recName: 'name',
30
+ order: ['start desc', 'id desc'],
31
+ tracking: ['start', 'stop', 'room', 'state'],
32
+ access: { 'calendar.user': ALL, 'calendar.manager': ALL },
33
+ rules: {
34
+ // Public events for everyone; private ones for their organizer and attendees.
35
+ see: {
36
+ groups: ['calendar.user'],
37
+ perms: ['read'],
38
+ domain: {
39
+ or: [{ privacy: 'public' }, { organizer: me }, { attendees: { any: { user: me } } }],
40
+ },
41
+ },
42
+ organize: {
43
+ groups: ['calendar.user'],
44
+ perms: ['write', 'create', 'unlink'],
45
+ domain: { organizer: me },
46
+ },
47
+ all: { groups: ['calendar.manager'], perms: [...ALL], domain: {} },
48
+ },
49
+ fields: {
50
+ name: f.char({ required: true, label: 'Title' }),
51
+ start: f.datetime({ required: true }),
52
+ stop: f.datetime({ required: true, label: 'End' }),
53
+ allDay: f.boolean({ default: false, label: 'All day' }),
54
+ organizer: f.many2one('res.users', { required: true, default: (env) => env.userId }),
55
+ attendees: f.one2many('calendar.attendee', 'event'),
56
+ room: f.many2one('calendar.room', { ondelete: 'restrict' }),
57
+ location: f.char(),
58
+ videoUrl: f.char({ label: 'Video call link' }),
59
+ privacy: f.selection({ public: 'Public', private: 'Private (busy for others)' }, { required: true, default: 'public' }),
60
+ state: f.state({
61
+ states: { confirmed: 'Confirmed', cancelled: 'Cancelled' },
62
+ initial: 'confirmed',
63
+ transitions: {
64
+ cancel: { from: ['confirmed'], to: 'cancelled' },
65
+ restore: { from: ['cancelled'], to: 'confirmed' },
66
+ },
67
+ }),
68
+ description: f.text(),
69
+ /** The record of another app it is about (`sale.order`, 42), if any. */
70
+ resModel: f.char({ label: 'About (model)' }),
71
+ resId: f.integer({ label: 'About (id)' }),
72
+ },
73
+ sqlConstraints: {
74
+ endsAfterStart: { check: orm.sql `stop > start`, message: 'An event ends after it starts.' },
75
+ },
76
+ constraints: {
77
+ // Across everyone's events, private ones too: the check reads as the system, not as the user.
78
+ roomFree: {
79
+ ...check('calendar.event', ['room', 'start', 'stop', 'state'], async (events) => events.env.asSuperuser({ reason: 'room bookings' }, async (su) => {
80
+ const failing = [];
81
+ for (const e of events) {
82
+ if (e.room === null || e.state === 'cancelled')
83
+ continue;
84
+ const clash = await su.model('calendar.event').search({
85
+ where: {
86
+ room: e.room.id,
87
+ state: 'confirmed',
88
+ id: { ne: e.id },
89
+ start: { lt: e.stop },
90
+ stop: { gt: e.start },
91
+ },
92
+ limit: 1,
93
+ });
94
+ if (clash.length > 0)
95
+ failing.push(e.id);
96
+ }
97
+ return failing;
98
+ })),
99
+ message: 'The room is already booked at that time.',
100
+ },
101
+ },
102
+ onchange: {
103
+ // The end follows the start by the default length (Settings › App settings › Agenda).
104
+ start: onchange('calendar.event', async (d, env) => {
105
+ const start = d.get('start');
106
+ const at = start instanceof Date ? start.getTime() : Date.parse(String(start ?? ''));
107
+ if (Number.isNaN(at))
108
+ return;
109
+ const minutes = await installationSetting(env, 'calendar.defaultMinutes', 60);
110
+ d.set('stop', new Date(at + Number(minutes) * 60_000));
111
+ }),
112
+ },
113
+ });
114
+ /** An attendee: a person of the company (`user`) or a contact from outside (`partner`), with their answer. */
115
+ export const CalendarAttendee = defineModel('calendar.attendee', {
116
+ label: 'Attendee',
117
+ order: ['id asc'],
118
+ access: { 'calendar.user': ALL, 'calendar.manager': ALL },
119
+ rules: {
120
+ see: {
121
+ groups: ['calendar.user'],
122
+ perms: ['read'],
123
+ domain: {
124
+ or: [
125
+ { 'event.privacy': 'public' },
126
+ { 'event.organizer': me },
127
+ { user: me },
128
+ { 'event.attendees': { any: { user: me } } },
129
+ ],
130
+ },
131
+ },
132
+ // The organizer manages the list; each attendee answers for themself.
133
+ answer: {
134
+ groups: ['calendar.user'],
135
+ perms: ['write'],
136
+ domain: { or: [{ 'event.organizer': me }, { user: me }] },
137
+ },
138
+ organize: {
139
+ groups: ['calendar.user'],
140
+ perms: ['create', 'unlink'],
141
+ domain: { 'event.organizer': me },
142
+ },
143
+ all: { groups: ['calendar.manager'], perms: [...ALL], domain: {} },
144
+ },
145
+ fields: {
146
+ event: f.many2one('calendar.event', { required: true, ondelete: 'cascade' }),
147
+ user: f.many2one('res.users', { label: 'Person' }),
148
+ partner: f.many2one('res.partner', { label: 'Contact' }),
149
+ response: f.selection({
150
+ needs_action: 'Not answered',
151
+ accepted: 'Accepted',
152
+ tentative: 'Maybe',
153
+ declined: 'Declined',
154
+ }, { required: true, default: 'needs_action', label: 'Answer' }),
155
+ },
156
+ sqlConstraints: {
157
+ someone: {
158
+ check: orm.sql `user_id IS NOT NULL OR partner_id IS NOT NULL`,
159
+ message: 'An attendee is a person or a contact.',
160
+ },
161
+ },
162
+ });
163
+ export const calendarShutro = defineModule({
164
+ name: 'calendar',
165
+ version: '0.1.0',
166
+ depends: [contactsShutro, messagingShutro],
167
+ groups: [
168
+ orm.defineGroup({
169
+ code: 'calendar.user',
170
+ label: 'Agenda user',
171
+ implies: ['contacts.user', 'messaging.user'],
172
+ }),
173
+ orm.defineGroup({
174
+ code: 'calendar.manager',
175
+ label: 'Agenda manager',
176
+ implies: ['calendar.user'],
177
+ }),
178
+ ],
179
+ models: [CalendarRoom, CalendarEvent, CalendarAttendee],
180
+ });
package/dist/cli/init.js CHANGED
@@ -531,8 +531,88 @@ async function modulesFor(apps) {
531
531
  modules.push((await import('../purchase_account/index.js')).purchaseAccount);
532
532
  if (app === 'project')
533
533
  modules.push((await import('../project/index.js')).project);
534
+ if (app === 'todo')
535
+ modules.push((await import('../todo/index.js')).todo);
536
+ if (app === 'calendar')
537
+ modules.push((await import('../calendar/index.js')).calendarApp);
538
+ if (app === 'crm')
539
+ modules.push((await import('../crm/index.js')).crm);
540
+ if (app === 'hr')
541
+ modules.push((await import('../hr/index.js')).hr);
542
+ if (app === 'stock')
543
+ modules.push((await import('../stock/index.js')).stock);
544
+ if (app === 'mrp')
545
+ modules.push((await import('../mrp/index.js')).mrp);
546
+ if (app === 'maintenance')
547
+ modules.push((await import('../maintenance/index.js')).maintenance);
548
+ if (app === 'event')
549
+ modules.push((await import('../event/index.js')).event);
550
+ if (app === 'website')
551
+ modules.push((await import('../website/index.js')).website);
552
+ if (app === 'pos')
553
+ modules.push((await import('../pos/index.js')).pos);
554
+ if (app === 'expense')
555
+ modules.push((await import('../expense/index.js')).expense);
556
+ if (app === 'attendance')
557
+ modules.push((await import('../attendance/index.js')).attendance);
558
+ if (app === 'payroll')
559
+ modules.push((await import('../payroll/index.js')).payroll);
560
+ if (app === 'helpdesk')
561
+ modules.push((await import('../helpdesk/index.js')).helpdesk);
562
+ if (app === 'account_asset')
563
+ modules.push((await import('../account_asset/index.js')).accountAsset);
564
+ if (app === 'account_budget')
565
+ modules.push((await import('../account_budget/index.js')).accountBudget);
566
+ if (app === 'website_sale')
567
+ modules.push((await import('../website_sale/index.js')).websiteSale);
568
+ if (app === 'documents')
569
+ modules.push((await import('../documents/index.js')).documents);
570
+ if (app === 'sign')
571
+ modules.push((await import('../sign/index.js')).sign);
572
+ if (app === 'approvals')
573
+ modules.push((await import('../approvals/index.js')).approvals);
574
+ if (app === 'trade_finance')
575
+ modules.push((await import('../trade_finance/index.js')).tradeFinance);
576
+ if (app === 'recruitment')
577
+ modules.push((await import('../recruitment/index.js')).recruitment);
534
578
  if (app === 'sale_project')
535
579
  modules.push((await import('../sale_project/index.js')).saleProject);
580
+ if (app === 'project_account')
581
+ modules.push((await import('../project_account/index.js')).projectAccount);
582
+ if (app === 'project_purchase')
583
+ modules.push((await import('../project_purchase/index.js')).projectPurchase);
584
+ if (app === 'sale_stock')
585
+ modules.push((await import('../sale_stock/index.js')).saleStock);
586
+ if (app === 'purchase_stock')
587
+ modules.push((await import('../purchase_stock/index.js')).purchaseStock);
588
+ if (app === 'stock_account')
589
+ modules.push((await import('../stock_account/index.js')).stockAccount);
590
+ if (app === 'purchase_stock_account')
591
+ modules.push((await import('../purchase_stock_account/index.js')).purchaseStockAccount);
592
+ if (app === 'mrp_account')
593
+ modules.push((await import('../mrp_account/index.js')).mrpAccount);
594
+ if (app === 'maintenance_stock')
595
+ modules.push((await import('../maintenance_stock/index.js')).maintenanceStock);
596
+ if (app === 'trade_finance_account')
597
+ modules.push((await import('../trade_finance_account/index.js')).tradeFinanceAccount);
598
+ if (app === 'trade_finance_purchase')
599
+ modules.push((await import('../trade_finance_purchase/index.js')).tradeFinancePurchase);
600
+ if (app === 'trade_finance_sale')
601
+ modules.push((await import('../trade_finance_sale/index.js')).tradeFinanceSale);
602
+ if (app === 'event_account')
603
+ modules.push((await import('../event_account/index.js')).eventAccount);
604
+ if (app === 'website_crm')
605
+ modules.push((await import('../website_crm/index.js')).websiteCrm);
606
+ if (app === 'website_sale_stock')
607
+ modules.push((await import('../website_sale_stock/index.js')).websiteSaleStock);
608
+ if (app === 'pos_stock')
609
+ modules.push((await import('../pos_stock/index.js')).posStock);
610
+ if (app === 'expense_account')
611
+ modules.push((await import('../expense_account/index.js')).expenseAccount);
612
+ if (app === 'payroll_account')
613
+ modules.push((await import('../payroll_account/index.js')).payrollAccount);
614
+ if (app === 'l10n_bd_payroll')
615
+ modules.push((await import('../l10n_bd_payroll/index.js')).l10nBdPayroll);
536
616
  if (app === 'l10n_bd')
537
617
  modules.push((await import('../l10n_bd/index.js')).l10nBd);
538
618
  if (app === 'l10n_in')
@@ -2,7 +2,7 @@
2
2
  * The starter project `shutro-erp init` writes: an API server and the back-office app, both importing `shutro-erp`.
3
3
  * Server files run on Node.js directly (type stripping); the back-office is a Vite app proxying `/api` to the server.
4
4
  */
5
- export type AppName = 'permissions' | 'reporting' | 'messaging' | 'contacts' | 'product' | 'sales' | 'purchase' | 'accounting' | 'sale_account' | 'purchase_account' | 'project' | 'sale_project' | 'l10n_bd' | 'l10n_in';
5
+ export type AppName = 'permissions' | 'reporting' | 'messaging' | 'contacts' | 'product' | 'sales' | 'purchase' | 'accounting' | 'sale_account' | 'purchase_account' | 'project' | 'todo' | 'calendar' | 'crm' | 'hr' | 'recruitment' | 'stock' | 'mrp' | 'maintenance' | 'trade_finance' | 'event' | 'website' | 'pos' | 'expense' | 'attendance' | 'payroll' | 'helpdesk' | 'account_asset' | 'account_budget' | 'website_sale' | 'documents' | 'sign' | 'approvals' | 'sale_project' | 'project_account' | 'project_purchase' | 'sale_stock' | 'purchase_stock' | 'stock_account' | 'purchase_stock_account' | 'mrp_account' | 'maintenance_stock' | 'trade_finance_account' | 'trade_finance_purchase' | 'trade_finance_sale' | 'event_account' | 'website_crm' | 'website_sale_stock' | 'pos_stock' | 'expense_account' | 'payroll_account' | 'l10n_bd_payroll' | 'l10n_bd' | 'l10n_in';
6
6
  export interface AppSpec {
7
7
  readonly label: string;
8
8
  /** Shown next to the app in the installer (where the terminal shows pictographs). */
@@ -61,12 +61,232 @@ export const APPS = {
61
61
  server: 'purchaseAccount',
62
62
  bridge: ['purchase', 'accounting'],
63
63
  },
64
+ todo: {
65
+ label: 'Focus: your to-dos and shared lists, with checklists and due dates',
66
+ icon: '✅',
67
+ server: 'todo',
68
+ },
69
+ calendar: {
70
+ label: 'Agenda: meetings, rooms that are never double-booked, who is free when',
71
+ icon: '📅',
72
+ server: 'calendarApp',
73
+ },
74
+ crm: {
75
+ label: 'Pipeline: deals on a board, stage rules, the weighted forecast',
76
+ icon: '📈',
77
+ server: 'crm',
78
+ },
79
+ hr: {
80
+ label: 'Workforce: employees, the org chart, contracts and leave',
81
+ icon: '🧑‍💼',
82
+ server: 'hr',
83
+ },
84
+ recruitment: {
85
+ label: 'Hiring: openings, applicants on a board, independent scorecards, hire in one step',
86
+ icon: '🤝',
87
+ server: 'recruitment',
88
+ web: 'registerRecruitmentWeb',
89
+ },
90
+ stock: {
91
+ label: 'Stockroom: warehouses, transfers with one clear status, reservations that say what they are for',
92
+ icon: '🏬',
93
+ server: 'stock',
94
+ web: 'registerStockWeb',
95
+ },
96
+ mrp: {
97
+ label: 'Production: bills of materials with versions, orders that show what is short and what they cost',
98
+ icon: '🏭',
99
+ server: 'mrp',
100
+ },
101
+ maintenance: {
102
+ label: 'Asset Care: equipment, preventive plans by time or meter, maintenance orders, reliability',
103
+ icon: '🛠️',
104
+ server: 'maintenance',
105
+ },
106
+ trade_finance: {
107
+ label: 'Trade Finance: letters of credit, amendments, presentations and discrepancies, bank limits',
108
+ icon: '🏦',
109
+ server: 'tradeFinance',
110
+ },
111
+ event: {
112
+ label: 'Event Hub: events, tickets and seats, waiting lists, check-in by QR',
113
+ icon: '🎟️',
114
+ server: 'event',
115
+ web: 'registerEventWeb',
116
+ },
117
+ website: {
118
+ label: 'Sites: website pages from blocks, forms that create records, a public API',
119
+ icon: '🌐',
120
+ server: 'website',
121
+ web: 'registerWebsiteWeb',
122
+ },
123
+ pos: {
124
+ label: 'Counter: point of sale with sessions, split payments, receipts and the register',
125
+ icon: '🧾',
126
+ server: 'pos',
127
+ web: 'registerPosWeb',
128
+ },
129
+ expense: {
130
+ label: 'Spend: expenses with receipts, policies, approvals and cash advances',
131
+ icon: '💳',
132
+ server: 'expense',
133
+ },
134
+ attendance: {
135
+ label: 'Attendance: shifts, check-in by phone, kiosk or device, overtime',
136
+ icon: '⏱️',
137
+ server: 'attendance',
138
+ web: 'registerAttendanceWeb',
139
+ },
140
+ payroll: {
141
+ label: 'Payroll: salary structures, explained payslips, loans, corrections and payment files',
142
+ icon: '💵',
143
+ server: 'payroll',
144
+ },
145
+ helpdesk: {
146
+ label: 'Helpdesk: tickets from email, SLAs in business hours, assignment, ratings',
147
+ icon: '🛟',
148
+ server: 'helpdesk',
149
+ },
150
+ account_asset: {
151
+ label: 'Fixed assets: depreciation boards, disposals, revaluations and the tax book (in Accounting)',
152
+ icon: '🏭',
153
+ server: 'accountAsset',
154
+ },
155
+ account_budget: {
156
+ label: 'Budgets: actual and committed by cost centre, purchase orders warned or blocked (in Accounting)',
157
+ icon: '📐',
158
+ server: 'accountBudget',
159
+ },
160
+ website_sale: {
161
+ label: 'Shop: published products, delivery fees, cart and checkout with cash on delivery or online payment (in Sites)',
162
+ icon: '🛒',
163
+ server: 'websiteSale',
164
+ },
165
+ documents: {
166
+ label: 'Documents: folders, versions, share links and requests for files',
167
+ icon: '📁',
168
+ server: 'documents',
169
+ web: 'registerDocumentsWeb',
170
+ },
171
+ sign: {
172
+ label: 'Sign: signatures in order or at once, one-time codes, a sealed PDF with its certificate',
173
+ icon: '✍️',
174
+ server: 'sign',
175
+ },
176
+ approvals: {
177
+ label: 'Approvals: everything waiting for your decision, my requests, policies on screen',
178
+ icon: '✅',
179
+ server: 'approvals',
180
+ web: 'registerApprovalsWeb',
181
+ },
64
182
  sale_project: {
65
183
  label: 'Bridge: tasks and projects from sales orders (Sales ↔ Projects)',
66
184
  icon: '🔗',
67
185
  server: 'saleProject',
68
186
  bridge: ['sales', 'project'],
69
187
  },
188
+ project_account: {
189
+ label: 'Bridge: each project its cost centre, costs booked on it against its budget (Projects ↔ Accounting)',
190
+ icon: '🔗',
191
+ server: 'projectAccount',
192
+ bridge: ['project', 'accounting'],
193
+ },
194
+ project_purchase: {
195
+ label: 'Bridge: purchase orders on a project not billed yet, committed against its budget (Projects ↔ Purchase)',
196
+ icon: '🔗',
197
+ server: 'projectPurchase',
198
+ bridge: ['project', 'purchase', 'accounting'],
199
+ },
200
+ sale_stock: {
201
+ label: 'Bridge: deliveries from sales orders (Sales ↔ Stockroom)',
202
+ icon: '🔗',
203
+ server: 'saleStock',
204
+ bridge: ['sales', 'stock'],
205
+ },
206
+ purchase_stock: {
207
+ label: 'Bridge: receipts from purchase orders (Purchase ↔ Stockroom)',
208
+ icon: '🔗',
209
+ server: 'purchaseStock',
210
+ bridge: ['purchase', 'stock'],
211
+ },
212
+ stock_account: {
213
+ label: 'Bridge: the stock valued and posted as it moves (Stockroom ↔ Accounting)',
214
+ icon: '🔗',
215
+ server: 'stockAccount',
216
+ bridge: ['stock', 'accounting'],
217
+ },
218
+ purchase_stock_account: {
219
+ label: 'Bridge: receipts at the order price, bills clearing goods received (Purchase ↔ Stockroom ↔ Accounting)',
220
+ icon: '🔗',
221
+ server: 'purchaseStockAccount',
222
+ bridge: ['purchase', 'stock', 'accounting'],
223
+ },
224
+ mrp_account: {
225
+ label: 'Bridge: products made valued at what they consumed plus their operations (Production ↔ Accounting)',
226
+ icon: '🔗',
227
+ server: 'mrpAccount',
228
+ bridge: ['mrp', 'accounting'],
229
+ },
230
+ maintenance_stock: {
231
+ label: 'Bridge: spare parts on maintenance orders (Asset Care ↔ Stockroom)',
232
+ icon: '🔗',
233
+ server: 'maintenanceStock',
234
+ bridge: ['maintenance', 'stock'],
235
+ },
236
+ trade_finance_account: {
237
+ label: 'Bridge: LC margins, payments and bank charges in the books (Trade Finance ↔ Accounting)',
238
+ icon: '🔗',
239
+ server: 'tradeFinanceAccount',
240
+ bridge: ['trade_finance', 'accounting'],
241
+ },
242
+ trade_finance_purchase: {
243
+ label: 'Bridge: import LCs from purchase orders (Trade Finance ↔ Purchase)',
244
+ icon: '🔗',
245
+ server: 'tradeFinancePurchase',
246
+ bridge: ['trade_finance', 'purchase'],
247
+ },
248
+ trade_finance_sale: {
249
+ label: 'Bridge: export LCs for sales orders (Trade Finance ↔ Sales)',
250
+ icon: '🔗',
251
+ server: 'tradeFinanceSale',
252
+ bridge: ['trade_finance', 'sales'],
253
+ },
254
+ event_account: {
255
+ label: 'Bridge: paid event places invoiced (Event Hub ↔ Accounting)',
256
+ icon: '🔗',
257
+ server: 'eventAccount',
258
+ bridge: ['event', 'accounting'],
259
+ },
260
+ website_crm: {
261
+ label: 'Bridge: website forms that create deals (Sites ↔ Pipeline)',
262
+ icon: '🔗',
263
+ server: 'websiteCrm',
264
+ bridge: ['website', 'crm'],
265
+ },
266
+ website_sale_stock: {
267
+ label: 'Bridge: stock shown on the shop, carts kept within it (Shop ↔ Stockroom)',
268
+ icon: '🔗',
269
+ server: 'websiteSaleStock',
270
+ bridge: ['website_sale', 'stock'],
271
+ },
272
+ pos_stock: {
273
+ label: 'Bridge: a closed Counter session leaves stock as one delivery (Counter ↔ Stockroom)',
274
+ icon: '🔗',
275
+ server: 'posStock',
276
+ bridge: ['pos', 'stock'],
277
+ },
278
+ expense_account: {
279
+ label: 'Bridge: expense reports booked and reimbursed, advances paid out (Spend ↔ Accounting)',
280
+ icon: '🔗',
281
+ server: 'expenseAccount',
282
+ bridge: ['expense', 'accounting'],
283
+ },
284
+ payroll_account: {
285
+ label: 'Bridge: payroll runs booked and paid, corrections by their differences (Payroll ↔ Accounting)',
286
+ icon: '🔗',
287
+ server: 'payrollAccount',
288
+ bridge: ['payroll', 'accounting'],
289
+ },
70
290
  l10n_bd: {
71
291
  label: 'Bangladesh: chart of accounts, VAT and SD, VDS and TDS, BIN and TIN, July–June year',
72
292
  icon: '🇧🇩',
@@ -75,6 +295,12 @@ export const APPS = {
75
295
  bridge: ['accounting'],
76
296
  country: 'BD',
77
297
  },
298
+ l10n_bd_payroll: {
299
+ label: 'Bangladesh payroll: standard and garments structures, festival bonuses, provident fund, tax at source',
300
+ icon: '🇧🇩',
301
+ server: 'l10nBdPayroll',
302
+ bridge: ['l10n_bd', 'payroll'],
303
+ },
78
304
  l10n_in: {
79
305
  label: 'India: GST (CGST / SGST / IGST), cess, reverse charge, GSTIN, HSN / SAC, TDS, April–March year',
80
306
  icon: '🇮🇳',
@@ -1,4 +1,4 @@
1
- // GENERATED by `pnpm generate:models` (Shutro’s generator). Do not edit. definitions-hash: 87baf088f27622fd
1
+ // GENERATED by `pnpm generate:models` (Shutro’s generator). Do not edit. definitions-hash: f17b2929d6c50f64
2
2
  // Bindings of module `contacts`: 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: 87baf088f27622fd
1
+ // GENERATED by `pnpm generate:models` (Shutro’s generator). Do not edit. definitions-hash: f17b2929d6c50f64
2
2
  // Schema view of module `contacts` (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
 
@@ -13,6 +13,7 @@ export interface SchemaView {
13
13
  readonly 'auth.user_group': AuthUserGroup;
14
14
  readonly 'kosh.image': KoshImage;
15
15
  readonly 'kosh.saved_view': KoshSavedView;
16
+ readonly 'kosh.setting': KoshSetting;
16
17
  readonly 'oauth.app': OauthApp;
17
18
  readonly 'oauth.code': OauthCode;
18
19
  readonly 'oauth.grant': OauthGrant;
@@ -20,7 +21,9 @@ export interface SchemaView {
20
21
  readonly 'res.company': ResCompany;
21
22
  readonly 'res.currency': ResCurrency;
22
23
  readonly 'res.partner': ResPartner;
24
+ readonly 'res.partner.tag': ResPartnerTag;
23
25
  readonly 'res.users': ResUsers;
26
+ readonly 'storage.attachment': StorageAttachment;
24
27
  }
25
28
 
26
29
  /** `audit.event` (owner: base). */
@@ -239,6 +242,26 @@ export interface KoshSavedView {
239
242
  export interface KoshSavedViewMethods extends F.Methods<typeof import('../../server/index.js').baseShutro, 'kosh.saved_view'> {
240
243
  }
241
244
 
245
+ /** `kosh.setting` (owner: base). */
246
+ export interface KoshSetting {
247
+ readonly name: 'kosh.setting';
248
+ readonly fields: {
249
+ readonly id: F.Id<'kosh.setting'>;
250
+ readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
251
+ readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
252
+ readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
253
+ readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
254
+ readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
255
+ readonly key: F.Char<{ readonly required: true }>;
256
+ readonly value: F.Json;
257
+ };
258
+ readonly methods: KoshSettingMethods;
259
+ }
260
+
261
+ /** Methods of `kosh.setting`: declared ones and transitions. */
262
+ export interface KoshSettingMethods extends F.Methods<typeof import('../../server/index.js').baseShutro, 'kosh.setting'> {
263
+ }
264
+
242
265
  /** `oauth.app` (owner: base). */
243
266
  export interface OauthApp {
244
267
  readonly name: 'oauth.app';
@@ -338,7 +361,7 @@ export interface OauthToken {
338
361
  export interface OauthTokenMethods extends F.Methods<typeof import('../../server/index.js').baseShutro, 'oauth.token'> {
339
362
  }
340
363
 
341
- /** `res.company` (owner: base). */
364
+ /** `res.company` (owner: base; extended by: contacts). */
342
365
  export interface ResCompany {
343
366
  readonly name: 'res.company';
344
367
  readonly fields: {
@@ -358,12 +381,14 @@ export interface ResCompany {
358
381
  readonly email: F.Char;
359
382
  readonly phone: F.Char;
360
383
  readonly website: F.Char;
384
+ readonly contactTaxIdRequired: F.Bool<{ readonly required: true; readonly default: true }>; // contacts
385
+ readonly contactUniqueEmail: F.Bool<{ readonly required: true; readonly default: true }>; // contacts
361
386
  };
362
387
  readonly methods: ResCompanyMethods;
363
388
  }
364
389
 
365
390
  /** Methods of `res.company`: declared ones and transitions. */
366
- export interface ResCompanyMethods extends F.Methods<typeof import('../../server/index.js').baseShutro, 'res.company'> {
391
+ export interface ResCompanyMethods extends F.Methods<typeof import('../../server/index.js').baseShutro, 'res.company'>, F.Methods<typeof import('../module.js').contactsShutro, 'res.company'> {
367
392
  }
368
393
 
369
394
  /** `res.currency` (owner: base). */
@@ -400,6 +425,10 @@ export interface ResPartner {
400
425
  readonly active: F.Bool<{ readonly required: true; readonly default: true }>;
401
426
  readonly company: F.Many2one<'res.company', { readonly default: true }>;
402
427
  readonly name: F.Char<{ readonly required: true }>;
428
+ readonly image: F.Many2one<'storage.attachment'>;
429
+ readonly tags: F.Many2many<'res.partner.tag', { readonly required: true }>;
430
+ readonly latitude: F.Decimal;
431
+ readonly longitude: F.Decimal;
403
432
  readonly isCompany: F.Bool<{ readonly required: true; readonly default: true }>;
404
433
  readonly parent: F.Many2one<'res.partner'>;
405
434
  readonly contacts: F.One2many<'res.partner', { readonly required: true }>;
@@ -425,6 +454,25 @@ export interface ResPartner {
425
454
  export interface ResPartnerMethods extends F.Methods<typeof import('../module.js').contactsShutro, 'res.partner'> {
426
455
  }
427
456
 
457
+ /** `res.partner.tag` (owner: contacts). */
458
+ export interface ResPartnerTag {
459
+ readonly name: 'res.partner.tag';
460
+ readonly fields: {
461
+ readonly id: F.Id<'res.partner.tag'>;
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
+ };
469
+ readonly methods: ResPartnerTagMethods;
470
+ }
471
+
472
+ /** Methods of `res.partner.tag`: declared ones and transitions. */
473
+ export interface ResPartnerTagMethods extends F.Methods<typeof import('../module.js').contactsShutro, 'res.partner.tag'> {
474
+ }
475
+
428
476
  /** `res.users` (owner: base). */
429
477
  export interface ResUsers {
430
478
  readonly name: 'res.users';
@@ -452,3 +500,30 @@ export interface ResUsers {
452
500
  /** Methods of `res.users`: declared ones and transitions. */
453
501
  export interface ResUsersMethods extends F.Methods<typeof import('../../server/index.js').baseShutro, 'res.users'> {
454
502
  }
503
+
504
+ /** `storage.attachment` (owner: storage). */
505
+ export interface StorageAttachment {
506
+ readonly name: 'storage.attachment';
507
+ readonly fields: {
508
+ readonly id: F.Id<'storage.attachment'>;
509
+ readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
510
+ readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
511
+ readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
512
+ readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
513
+ readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
514
+ readonly name: F.Char<{ readonly required: true }>;
515
+ readonly mime: F.Char<{ readonly required: true }>;
516
+ readonly size: F.Integer<{ readonly required: true }>;
517
+ readonly sha256: F.Char<{ readonly required: true }>;
518
+ readonly key: F.Char<{ readonly required: true }>;
519
+ readonly resModel: F.Char<{ readonly required: true }>;
520
+ readonly resId: F.Integer<{ readonly required: true }>;
521
+ readonly variantOf: F.Many2one<'storage.attachment'>;
522
+ readonly width: F.Integer;
523
+ };
524
+ readonly methods: StorageAttachmentMethods;
525
+ }
526
+
527
+ /** Methods of `storage.attachment`: declared ones and transitions. */
528
+ export interface StorageAttachmentMethods extends F.Methods<typeof import('../../storage/index.js').storageShutro, 'storage.attachment'> {
529
+ }