shutro-erp 0.3.5 โ†’ 0.3.7

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 (768) hide show
  1. package/dist/account_asset/.kosh/bindings.js +15 -0
  2. package/dist/{mrp_account โ†’ account_asset}/.kosh/schema.d.ts +785 -614
  3. package/dist/account_asset/board.d.ts +61 -0
  4. package/dist/account_asset/board.js +86 -0
  5. package/dist/account_asset/books.d.ts +42 -0
  6. package/dist/account_asset/books.js +398 -0
  7. package/dist/account_asset/demo.d.ts +7 -0
  8. package/dist/account_asset/demo.js +72 -0
  9. package/dist/account_asset/i18n/bn.d.ts +2 -0
  10. package/dist/account_asset/i18n/bn.js +97 -0
  11. package/dist/account_asset/index.d.ts +9 -0
  12. package/dist/account_asset/index.js +337 -0
  13. package/dist/account_asset/module.d.ts +11076 -0
  14. package/dist/account_asset/module.js +230 -0
  15. package/dist/account_budget/.kosh/bindings.js +15 -0
  16. package/dist/account_budget/.kosh/schema.d.ts +2841 -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/i18n/bn.d.ts +2 -0
  22. package/dist/account_budget/i18n/bn.js +63 -0
  23. package/dist/account_budget/index.d.ts +4 -0
  24. package/dist/account_budget/index.js +237 -0
  25. package/dist/account_budget/module.d.ts +27289 -0
  26. package/dist/account_budget/module.js +182 -0
  27. package/dist/account_portal/.kosh/bindings.js +1 -1
  28. package/dist/account_portal/.kosh/schema.d.ts +651 -10
  29. package/dist/account_portal/i18n/bn.d.ts +2 -0
  30. package/dist/account_portal/i18n/bn.js +6 -0
  31. package/dist/account_portal/index.js +2 -0
  32. package/dist/account_portal/module.d.ts +5212 -1592
  33. package/dist/accounting/.kosh/bindings.js +1 -1
  34. package/dist/accounting/.kosh/schema.d.ts +651 -10
  35. package/dist/accounting/closing.js +1 -0
  36. package/dist/accounting/fiscal.d.ts +578 -0
  37. package/dist/accounting/fiscal.js +401 -0
  38. package/dist/accounting/followups.d.ts +618 -0
  39. package/dist/accounting/followups.js +420 -0
  40. package/dist/accounting/i18n/bn.d.ts +2 -0
  41. package/dist/accounting/i18n/bn.js +425 -0
  42. package/dist/accounting/index.d.ts +3 -1
  43. package/dist/accounting/index.js +780 -5
  44. package/dist/accounting/module.d.ts +5386 -1543
  45. package/dist/accounting/module.js +155 -18
  46. package/dist/accounting/statements.d.ts +878 -0
  47. package/dist/accounting/statements.js +728 -0
  48. package/dist/accounting/web/BankReconcilePage.d.ts +9 -0
  49. package/dist/accounting/web/BankReconcilePage.js +138 -0
  50. package/dist/accounting/web/FollowupsPage.d.ts +8 -0
  51. package/dist/accounting/web/FollowupsPage.js +54 -0
  52. package/dist/accounting/web/PostingPreview.d.ts +8 -0
  53. package/dist/accounting/web/PostingPreview.js +26 -0
  54. package/dist/accounting/web/index.d.ts +3 -0
  55. package/dist/accounting/web/index.js +9 -0
  56. package/dist/accounting/web/messages.js +140 -0
  57. package/dist/approvals/.kosh/bindings.d.ts +22 -0
  58. package/dist/approvals/.kosh/bindings.js +15 -0
  59. package/dist/approvals/.kosh/schema.d.ts +879 -0
  60. package/dist/approvals/demo.d.ts +7 -0
  61. package/dist/approvals/demo.js +41 -0
  62. package/dist/approvals/i18n/bn.d.ts +2 -0
  63. package/dist/approvals/i18n/bn.js +133 -0
  64. package/dist/approvals/index.d.ts +36 -0
  65. package/dist/approvals/index.js +772 -0
  66. package/dist/approvals/mails.d.ts +30 -0
  67. package/dist/approvals/mails.js +87 -0
  68. package/dist/approvals/module.d.ts +2930 -0
  69. package/dist/approvals/module.js +473 -0
  70. package/dist/approvals/web/Config.d.ts +12 -0
  71. package/dist/approvals/web/Config.js +60 -0
  72. package/dist/approvals/web/History.d.ts +4 -0
  73. package/dist/approvals/web/History.js +13 -0
  74. package/dist/approvals/web/Inbox.d.ts +9 -0
  75. package/dist/approvals/web/Inbox.js +114 -0
  76. package/dist/approvals/web/Matrix.d.ts +9 -0
  77. package/dist/approvals/web/Matrix.js +26 -0
  78. package/dist/approvals/web/Mine.d.ts +7 -0
  79. package/dist/approvals/web/Mine.js +27 -0
  80. package/dist/approvals/web/index.d.ts +15 -0
  81. package/dist/approvals/web/index.js +29 -0
  82. package/dist/approvals/web/messages.d.ts +2 -0
  83. package/dist/approvals/web/messages.js +211 -0
  84. package/dist/approvals/web/shared.d.ts +59 -0
  85. package/dist/approvals/web/shared.js +46 -0
  86. package/dist/approvals_purchase/.kosh/bindings.d.ts +22 -0
  87. package/dist/approvals_purchase/.kosh/bindings.js +15 -0
  88. package/dist/approvals_purchase/.kosh/schema.d.ts +1997 -0
  89. package/dist/approvals_purchase/i18n/bn.d.ts +2 -0
  90. package/dist/approvals_purchase/i18n/bn.js +5 -0
  91. package/dist/approvals_purchase/index.d.ts +3 -0
  92. package/dist/approvals_purchase/index.js +47 -0
  93. package/dist/approvals_purchase/module.d.ts +12670 -0
  94. package/dist/approvals_purchase/module.js +84 -0
  95. package/dist/attendance/.kosh/bindings.d.ts +22 -0
  96. package/dist/attendance/.kosh/bindings.js +15 -0
  97. package/dist/attendance/.kosh/schema.d.ts +1106 -0
  98. package/dist/attendance/days.d.ts +96 -0
  99. package/dist/attendance/days.js +430 -0
  100. package/dist/attendance/demo.d.ts +7 -0
  101. package/dist/attendance/demo.js +58 -0
  102. package/dist/attendance/i18n/bn.d.ts +2 -0
  103. package/dist/attendance/i18n/bn.js +147 -0
  104. package/dist/attendance/index.d.ts +4 -0
  105. package/dist/attendance/index.js +515 -0
  106. package/dist/attendance/module.d.ts +4413 -0
  107. package/dist/attendance/module.js +412 -0
  108. package/dist/attendance/routes.d.ts +16 -0
  109. package/dist/attendance/routes.js +266 -0
  110. package/dist/attendance/web/Check.d.ts +8 -0
  111. package/dist/attendance/web/Check.js +40 -0
  112. package/dist/attendance/web/Kiosk.d.ts +8 -0
  113. package/dist/attendance/web/Kiosk.js +62 -0
  114. package/dist/attendance/web/PinButton.d.ts +7 -0
  115. package/dist/attendance/web/PinButton.js +29 -0
  116. package/dist/attendance/web/index.d.ts +13 -0
  117. package/dist/attendance/web/index.js +22 -0
  118. package/dist/attendance/web/messages.d.ts +2 -0
  119. package/dist/attendance/web/messages.js +61 -0
  120. package/dist/automation/engine.js +1 -1
  121. package/dist/calendar/.kosh/bindings.js +1 -1
  122. package/dist/calendar/.kosh/schema.d.ts +2 -1
  123. package/dist/calendar/i18n/bn.d.ts +2 -0
  124. package/dist/calendar/i18n/bn.js +80 -0
  125. package/dist/calendar/index.js +77 -0
  126. package/dist/calendar/module.d.ts +26 -0
  127. package/dist/calendar/module.js +14 -4
  128. package/dist/cli/apps.js +25 -5
  129. package/dist/cli/init.js +46 -4
  130. package/dist/cli/templates.d.ts +1 -1
  131. package/dist/cli/templates.js +123 -5
  132. package/dist/contacts/.kosh/bindings.js +1 -1
  133. package/dist/contacts/.kosh/schema.d.ts +2 -1
  134. package/dist/contacts/i18n/bn.d.ts +2 -0
  135. package/dist/contacts/i18n/bn.js +67 -0
  136. package/dist/contacts/index.js +3 -0
  137. package/dist/contacts/module.d.ts +42 -0
  138. package/dist/contacts/module.js +19 -3
  139. package/dist/crm/.kosh/bindings.js +1 -1
  140. package/dist/crm/.kosh/schema.d.ts +3 -1
  141. package/dist/crm/i18n/bn.d.ts +2 -0
  142. package/dist/crm/i18n/bn.js +80 -0
  143. package/dist/crm/index.js +22 -0
  144. package/dist/crm/module.d.ts +22 -0
  145. package/dist/crm/module.js +6 -3
  146. package/dist/documents/.kosh/bindings.d.ts +22 -0
  147. package/dist/documents/.kosh/bindings.js +15 -0
  148. package/dist/documents/.kosh/schema.d.ts +863 -0
  149. package/dist/documents/demo.d.ts +6 -0
  150. package/dist/documents/demo.js +22 -0
  151. package/dist/documents/documents.d.ts +98 -0
  152. package/dist/documents/documents.js +318 -0
  153. package/dist/documents/i18n/bn.d.ts +2 -0
  154. package/dist/documents/i18n/bn.js +83 -0
  155. package/dist/documents/index.d.ts +30 -0
  156. package/dist/documents/index.js +569 -0
  157. package/dist/documents/module.d.ts +2801 -0
  158. package/dist/documents/module.js +215 -0
  159. package/dist/documents/web/Versions.d.ts +7 -0
  160. package/dist/documents/web/Versions.js +45 -0
  161. package/dist/documents/web/index.d.ts +11 -0
  162. package/dist/documents/web/index.js +16 -0
  163. package/dist/documents/web/messages.d.ts +2 -0
  164. package/dist/documents/web/messages.js +21 -0
  165. package/dist/event/.kosh/bindings.js +1 -1
  166. package/dist/event/.kosh/schema.d.ts +2 -1
  167. package/dist/event/i18n/bn.d.ts +2 -0
  168. package/dist/event/i18n/bn.js +101 -0
  169. package/dist/event/index.js +66 -0
  170. package/dist/event/module.d.ts +20 -0
  171. package/dist/event/module.js +8 -1
  172. package/dist/event_account/.kosh/bindings.js +1 -1
  173. package/dist/event_account/.kosh/schema.d.ts +651 -10
  174. package/dist/event_account/i18n/bn.d.ts +2 -0
  175. package/dist/event_account/i18n/bn.js +5 -0
  176. package/dist/event_account/index.js +2 -0
  177. package/dist/event_account/module.d.ts +5133 -1513
  178. package/dist/expense/.kosh/bindings.d.ts +22 -0
  179. package/dist/expense/.kosh/bindings.js +15 -0
  180. package/dist/expense/.kosh/schema.d.ts +1620 -0
  181. package/dist/expense/demo.d.ts +7 -0
  182. package/dist/expense/demo.js +69 -0
  183. package/dist/expense/i18n/bn.d.ts +2 -0
  184. package/dist/expense/i18n/bn.js +155 -0
  185. package/dist/expense/index.d.ts +3 -0
  186. package/dist/expense/index.js +502 -0
  187. package/dist/expense/module.d.ts +6768 -0
  188. package/dist/expense/module.js +649 -0
  189. package/dist/expense_account/.kosh/bindings.d.ts +22 -0
  190. package/dist/expense_account/.kosh/bindings.js +15 -0
  191. package/dist/expense_account/.kosh/schema.d.ts +2515 -0
  192. package/dist/expense_account/i18n/bn.d.ts +2 -0
  193. package/dist/expense_account/i18n/bn.js +15 -0
  194. package/dist/expense_account/index.d.ts +3 -0
  195. package/dist/expense_account/index.js +76 -0
  196. package/dist/expense_account/module.d.ts +14628 -0
  197. package/dist/expense_account/module.js +318 -0
  198. package/dist/helpdesk/.kosh/bindings.d.ts +22 -0
  199. package/dist/helpdesk/.kosh/bindings.js +15 -0
  200. package/dist/helpdesk/.kosh/schema.d.ts +886 -0
  201. package/dist/helpdesk/demo.d.ts +7 -0
  202. package/dist/helpdesk/demo.js +65 -0
  203. package/dist/helpdesk/hours.d.ts +17 -0
  204. package/dist/helpdesk/hours.js +94 -0
  205. package/dist/helpdesk/i18n/bn.d.ts +2 -0
  206. package/dist/helpdesk/i18n/bn.js +127 -0
  207. package/dist/helpdesk/index.d.ts +10 -0
  208. package/dist/helpdesk/index.js +463 -0
  209. package/dist/helpdesk/module.d.ts +2960 -0
  210. package/dist/helpdesk/module.js +326 -0
  211. package/dist/helpdesk/routes.d.ts +12 -0
  212. package/dist/helpdesk/routes.js +132 -0
  213. package/dist/helpdesk/sla.d.ts +37 -0
  214. package/dist/helpdesk/sla.js +226 -0
  215. package/dist/hr/.kosh/bindings.js +1 -1
  216. package/dist/hr/.kosh/schema.d.ts +59 -1
  217. package/dist/hr/demo.js +11 -1
  218. package/dist/hr/i18n/bn.d.ts +2 -0
  219. package/dist/hr/i18n/bn.js +126 -0
  220. package/dist/hr/index.d.ts +1 -1
  221. package/dist/hr/index.js +158 -12
  222. package/dist/hr/module.d.ts +932 -59
  223. package/dist/hr/module.js +114 -17
  224. package/dist/indent/.kosh/bindings.d.ts +22 -0
  225. package/dist/indent/.kosh/bindings.js +15 -0
  226. package/dist/indent/.kosh/schema.d.ts +2084 -0
  227. package/dist/indent/demo.d.ts +7 -0
  228. package/dist/indent/demo.js +48 -0
  229. package/dist/indent/i18n/bn.d.ts +2 -0
  230. package/dist/indent/i18n/bn.js +143 -0
  231. package/dist/indent/index.d.ts +3 -0
  232. package/dist/indent/index.js +450 -0
  233. package/dist/indent/module.d.ts +13424 -0
  234. package/dist/indent/module.js +792 -0
  235. package/dist/indent_purchase/.kosh/bindings.d.ts +22 -0
  236. package/dist/indent_purchase/.kosh/bindings.js +15 -0
  237. package/dist/indent_purchase/.kosh/schema.d.ts +2710 -0
  238. package/dist/indent_purchase/i18n/bn.d.ts +2 -0
  239. package/dist/indent_purchase/i18n/bn.js +13 -0
  240. package/dist/indent_purchase/index.d.ts +3 -0
  241. package/dist/indent_purchase/index.js +61 -0
  242. package/dist/indent_purchase/module.d.ts +27950 -0
  243. package/dist/indent_purchase/module.js +163 -0
  244. package/dist/l10n_bd/.kosh/bindings.js +1 -1
  245. package/dist/l10n_bd/.kosh/schema.d.ts +651 -10
  246. package/dist/l10n_bd/i18n/bn.d.ts +2 -0
  247. package/dist/l10n_bd/i18n/bn.js +69 -0
  248. package/dist/l10n_bd/index.js +2 -0
  249. package/dist/l10n_bd/module.d.ts +5212 -1592
  250. package/dist/l10n_bd_payroll/.kosh/bindings.d.ts +22 -0
  251. package/dist/l10n_bd_payroll/.kosh/bindings.js +15 -0
  252. package/dist/l10n_bd_payroll/.kosh/schema.d.ts +2891 -0
  253. package/dist/l10n_bd_payroll/data.d.ts +47 -0
  254. package/dist/l10n_bd_payroll/data.js +347 -0
  255. package/dist/l10n_bd_payroll/i18n/bn.d.ts +2 -0
  256. package/dist/l10n_bd_payroll/i18n/bn.js +4 -0
  257. package/dist/l10n_bd_payroll/index.d.ts +4 -0
  258. package/dist/l10n_bd_payroll/index.js +26 -0
  259. package/dist/l10n_bd_payroll/module.d.ts +17294 -0
  260. package/dist/l10n_bd_payroll/module.js +86 -0
  261. package/dist/l10n_bd_pos/.kosh/bindings.d.ts +22 -0
  262. package/dist/{mrp_account โ†’ l10n_bd_pos}/.kosh/bindings.js +2 -2
  263. package/dist/l10n_bd_pos/.kosh/schema.d.ts +2341 -0
  264. package/dist/l10n_bd_pos/i18n/bn.d.ts +2 -0
  265. package/dist/l10n_bd_pos/i18n/bn.js +32 -0
  266. package/dist/l10n_bd_pos/index.d.ts +3 -0
  267. package/dist/l10n_bd_pos/index.js +111 -0
  268. package/dist/{mrp_account โ†’ l10n_bd_pos}/module.d.ts +9047 -6981
  269. package/dist/l10n_bd_pos/module.js +43 -0
  270. package/dist/l10n_in/.kosh/bindings.js +1 -1
  271. package/dist/l10n_in/.kosh/schema.d.ts +651 -10
  272. package/dist/l10n_in/i18n/bn.d.ts +2 -0
  273. package/dist/l10n_in/i18n/bn.js +95 -0
  274. package/dist/l10n_in/index.js +2 -0
  275. package/dist/l10n_in/module.d.ts +6778 -1580
  276. package/dist/l10n_in/module.js +25 -5
  277. package/dist/l10n_in/web/GstSettings.js +2 -2
  278. package/dist/mail/inbound/handle.js +8 -5
  279. package/dist/mail/inbound/models.js +5 -3
  280. package/dist/mail/index.d.ts +12 -1
  281. package/dist/mail/index.js +139 -2
  282. package/dist/mail/send.d.ts +56 -0
  283. package/dist/mail/send.js +394 -0
  284. package/dist/mail/web/SendButton.d.ts +9 -0
  285. package/dist/mail/web/SendButton.js +71 -0
  286. package/dist/mail/web/SendSelected.d.ts +8 -0
  287. package/dist/mail/web/SendSelected.js +33 -0
  288. package/dist/mail/web/index.d.ts +2 -0
  289. package/dist/mail/web/index.js +6 -0
  290. package/dist/mail/web/messages.js +36 -0
  291. package/dist/maintenance/.kosh/bindings.js +1 -1
  292. package/dist/maintenance/.kosh/schema.d.ts +2 -1
  293. package/dist/maintenance/i18n/bn.d.ts +2 -0
  294. package/dist/maintenance/i18n/bn.js +132 -0
  295. package/dist/maintenance/index.js +85 -0
  296. package/dist/maintenance/module.d.ts +25 -0
  297. package/dist/maintenance/module.js +27 -9
  298. package/dist/maintenance_stock/.kosh/bindings.js +1 -1
  299. package/dist/maintenance_stock/.kosh/schema.d.ts +374 -3
  300. package/dist/maintenance_stock/i18n/bn.d.ts +2 -0
  301. package/dist/maintenance_stock/i18n/bn.js +21 -0
  302. package/dist/maintenance_stock/index.js +2 -0
  303. package/dist/maintenance_stock/module.d.ts +6095 -1327
  304. package/dist/maintenance_stock/module.js +1 -0
  305. package/dist/modules-sdk/apps.d.ts +10 -0
  306. package/dist/modules-sdk/apps.js +32 -0
  307. package/dist/modules-sdk/index.d.ts +1 -1
  308. package/dist/modules-sdk/manifest.d.ts +105 -2
  309. package/dist/payment/.kosh/bindings.js +1 -1
  310. package/dist/payment/.kosh/schema.d.ts +653 -11
  311. package/dist/payment/i18n/bn.d.ts +2 -0
  312. package/dist/payment/i18n/bn.js +59 -0
  313. package/dist/payment/index.d.ts +41 -0
  314. package/dist/payment/index.js +216 -74
  315. package/dist/payment/module.d.ts +5353 -1675
  316. package/dist/payment/module.js +36 -6
  317. package/dist/payment/settle.js +11 -1
  318. package/dist/payroll/.kosh/bindings.d.ts +22 -0
  319. package/dist/payroll/.kosh/bindings.js +15 -0
  320. package/dist/payroll/.kosh/schema.d.ts +1448 -0
  321. package/dist/payroll/compute.d.ts +35 -0
  322. package/dist/payroll/compute.js +398 -0
  323. package/dist/payroll/demo.d.ts +55 -0
  324. package/dist/payroll/demo.js +121 -0
  325. package/dist/payroll/formula.d.ts +62 -0
  326. package/dist/payroll/formula.js +320 -0
  327. package/dist/payroll/i18n/bn.d.ts +2 -0
  328. package/dist/payroll/i18n/bn.js +206 -0
  329. package/dist/payroll/index.d.ts +230 -0
  330. package/dist/payroll/index.js +715 -0
  331. package/dist/{mrp โ†’ payroll}/module.d.ts +4294 -2624
  332. package/dist/payroll/module.js +606 -0
  333. package/dist/payroll/routes.d.ts +10 -0
  334. package/dist/payroll/routes.js +112 -0
  335. package/dist/payroll_account/.kosh/bindings.d.ts +22 -0
  336. package/dist/payroll_account/.kosh/bindings.js +15 -0
  337. package/dist/payroll_account/.kosh/schema.d.ts +2887 -0
  338. package/dist/payroll_account/i18n/bn.d.ts +2 -0
  339. package/dist/payroll_account/i18n/bn.js +10 -0
  340. package/dist/payroll_account/index.d.ts +3 -0
  341. package/dist/payroll_account/index.js +42 -0
  342. package/dist/payroll_account/module.d.ts +16738 -0
  343. package/dist/payroll_account/module.js +256 -0
  344. package/dist/permissions/approvals.d.ts +227 -12
  345. package/dist/permissions/approvals.js +1421 -67
  346. package/dist/permissions/index.d.ts +1 -1
  347. package/dist/permissions/index.js +2 -2
  348. package/dist/permissions/models.js +364 -13
  349. package/dist/permissions/routes.d.ts +9 -1
  350. package/dist/permissions/routes.js +72 -5
  351. package/dist/permissions/web/ApprovalPanel.d.ts +5 -4
  352. package/dist/permissions/web/ApprovalPanel.js +75 -11
  353. package/dist/permissions/web/index.d.ts +6 -4
  354. package/dist/permissions/web/index.js +13 -4
  355. package/dist/permissions/web/messages.d.ts +2 -0
  356. package/dist/permissions/web/messages.js +95 -0
  357. package/dist/portal/.kosh/bindings.js +1 -1
  358. package/dist/portal/.kosh/schema.d.ts +2 -1
  359. package/dist/portal/documents.d.ts +3 -0
  360. package/dist/portal/documents.js +21 -1
  361. package/dist/portal/i18n/bn.d.ts +2 -0
  362. package/dist/portal/i18n/bn.js +33 -0
  363. package/dist/portal/index.js +3 -1
  364. package/dist/portal/module.d.ts +20 -0
  365. package/dist/portal/routes-documents.js +76 -0
  366. package/dist/pos/.kosh/bindings.js +1 -1
  367. package/dist/pos/.kosh/schema.d.ts +652 -10
  368. package/dist/pos/i18n/bn.d.ts +2 -0
  369. package/dist/pos/i18n/bn.js +133 -0
  370. package/dist/pos/index.js +87 -1
  371. package/dist/pos/module.d.ts +6967 -1709
  372. package/dist/pos/module.js +49 -5
  373. package/dist/pos/routes.js +80 -7
  374. package/dist/pos/web/Register.js +2 -5
  375. package/dist/pos_stock/.kosh/bindings.js +1 -1
  376. package/dist/pos_stock/.kosh/schema.d.ts +822 -12
  377. package/dist/pos_stock/i18n/bn.d.ts +2 -0
  378. package/dist/pos_stock/i18n/bn.js +6 -0
  379. package/dist/pos_stock/index.js +2 -0
  380. package/dist/pos_stock/module.d.ts +11241 -2851
  381. package/dist/product/.kosh/bindings.js +1 -1
  382. package/dist/product/.kosh/schema.d.ts +203 -1
  383. package/dist/product/i18n/bn.d.ts +2 -0
  384. package/dist/product/i18n/bn.js +175 -0
  385. package/dist/product/index.d.ts +1 -0
  386. package/dist/product/index.js +301 -1
  387. package/dist/product/module.d.ts +1727 -0
  388. package/dist/product/module.js +67 -6
  389. package/dist/product/pricelist.d.ts +575 -0
  390. package/dist/product/pricelist.js +257 -0
  391. package/dist/product/variants.d.ts +908 -0
  392. package/dist/product/variants.js +251 -0
  393. package/dist/production/.kosh/bindings.d.ts +22 -0
  394. package/dist/production/.kosh/bindings.js +15 -0
  395. package/dist/production/.kosh/schema.d.ts +2345 -0
  396. package/dist/{mrp โ†’ production}/demo.d.ts +1 -1
  397. package/dist/{mrp โ†’ production}/demo.js +5 -5
  398. package/dist/production/depth.d.ts +790 -0
  399. package/dist/production/depth.js +262 -0
  400. package/dist/production/i18n/bn.d.ts +2 -0
  401. package/dist/production/i18n/bn.js +350 -0
  402. package/dist/production/index.d.ts +6 -0
  403. package/dist/production/index.js +1256 -0
  404. package/dist/production/module.d.ts +17327 -0
  405. package/dist/production/module.js +1333 -0
  406. package/dist/production/plan.d.ts +921 -0
  407. package/dist/production/plan.js +511 -0
  408. package/dist/production/schedule.d.ts +656 -0
  409. package/dist/production/schedule.js +309 -0
  410. package/dist/production_account/.kosh/bindings.d.ts +22 -0
  411. package/dist/production_account/.kosh/bindings.js +15 -0
  412. package/dist/production_account/.kosh/schema.d.ts +3496 -0
  413. package/dist/production_account/i18n/bn.d.ts +2 -0
  414. package/dist/production_account/i18n/bn.js +93 -0
  415. package/dist/production_account/index.d.ts +4 -0
  416. package/dist/production_account/index.js +246 -0
  417. package/dist/production_account/module.d.ts +1192 -0
  418. package/dist/{mrp_account โ†’ production_account}/module.js +72 -18
  419. package/dist/production_account/overhead.d.ts +1195 -0
  420. package/dist/production_account/overhead.js +554 -0
  421. package/dist/project/.kosh/bindings.js +1 -1
  422. package/dist/project/.kosh/schema.d.ts +735 -1
  423. package/dist/project/i18n/bn.d.ts +2 -0
  424. package/dist/project/i18n/bn.js +383 -0
  425. package/dist/project/index.d.ts +3 -1
  426. package/dist/project/index.js +1024 -14
  427. package/dist/project/module.d.ts +9912 -390
  428. package/dist/project/module.js +1590 -14
  429. package/dist/project/routes.d.ts +44 -0
  430. package/dist/project/routes.js +314 -0
  431. package/dist/project/schedule.d.ts +72 -0
  432. package/dist/project/schedule.js +192 -0
  433. package/dist/project/web/Refresh.d.ts +8 -0
  434. package/dist/project/web/Refresh.js +29 -0
  435. package/dist/project/web/Schedule.d.ts +9 -0
  436. package/dist/project/web/Schedule.js +93 -0
  437. package/dist/project/web/Structure.d.ts +8 -0
  438. package/dist/project/web/Structure.js +86 -0
  439. package/dist/project/web/Workload.d.ts +8 -0
  440. package/dist/project/web/Workload.js +43 -0
  441. package/dist/project/web/index.d.ts +14 -0
  442. package/dist/project/web/index.js +25 -0
  443. package/dist/project/web/messages.d.ts +2 -0
  444. package/dist/project/web/messages.js +85 -0
  445. package/dist/project_account/.kosh/bindings.d.ts +22 -0
  446. package/dist/project_account/.kosh/bindings.js +15 -0
  447. package/dist/project_account/.kosh/schema.d.ts +2763 -0
  448. package/dist/project_account/i18n/bn.d.ts +2 -0
  449. package/dist/project_account/i18n/bn.js +6 -0
  450. package/dist/project_account/index.d.ts +3 -0
  451. package/dist/project_account/index.js +29 -0
  452. package/dist/project_account/module.d.ts +15013 -0
  453. package/dist/project_account/module.js +76 -0
  454. package/dist/project_portal/.kosh/bindings.js +1 -1
  455. package/dist/project_portal/.kosh/schema.d.ts +735 -1
  456. package/dist/project_portal/i18n/bn.d.ts +2 -0
  457. package/dist/project_portal/i18n/bn.js +6 -0
  458. package/dist/project_portal/index.js +2 -0
  459. package/dist/project_portal/module.d.ts +4796 -87
  460. package/dist/project_purchase/.kosh/bindings.d.ts +22 -0
  461. package/dist/project_purchase/.kosh/bindings.js +15 -0
  462. package/dist/project_purchase/.kosh/schema.d.ts +3393 -0
  463. package/dist/project_purchase/i18n/bn.d.ts +2 -0
  464. package/dist/project_purchase/i18n/bn.js +4 -0
  465. package/dist/project_purchase/index.d.ts +9 -0
  466. package/dist/project_purchase/index.js +24 -0
  467. package/dist/project_purchase/module.d.ts +38613 -0
  468. package/dist/project_purchase/module.js +56 -0
  469. package/dist/purchase/.kosh/bindings.js +1 -1
  470. package/dist/purchase/.kosh/schema.d.ts +908 -5
  471. package/dist/purchase/comparison.d.ts +993 -0
  472. package/dist/purchase/comparison.js +415 -0
  473. package/dist/purchase/extras.d.ts +1509 -0
  474. package/dist/purchase/extras.js +445 -0
  475. package/dist/purchase/i18n/bn.d.ts +2 -0
  476. package/dist/purchase/i18n/bn.js +413 -0
  477. package/dist/purchase/index.d.ts +5 -0
  478. package/dist/purchase/index.js +1280 -4
  479. package/dist/purchase/module.d.ts +7147 -395
  480. package/dist/purchase/module.js +303 -10
  481. package/dist/purchase/request.d.ts +696 -0
  482. package/dist/purchase/request.js +446 -0
  483. package/dist/purchase/tender.d.ts +1208 -0
  484. package/dist/purchase/tender.js +507 -0
  485. package/dist/purchase/vendorprice.d.ts +340 -0
  486. package/dist/purchase/vendorprice.js +153 -0
  487. package/dist/purchase_account/.kosh/bindings.js +1 -1
  488. package/dist/purchase_account/.kosh/schema.d.ts +1209 -16
  489. package/dist/purchase_account/i18n/bn.d.ts +2 -0
  490. package/dist/purchase_account/i18n/bn.js +22 -0
  491. package/dist/purchase_account/index.js +20 -0
  492. package/dist/purchase_account/module.d.ts +12232 -2028
  493. package/dist/purchase_account/module.js +252 -9
  494. package/dist/purchase_portal/.kosh/bindings.js +1 -1
  495. package/dist/purchase_portal/.kosh/schema.d.ts +908 -5
  496. package/dist/purchase_portal/i18n/bn.d.ts +2 -0
  497. package/dist/purchase_portal/i18n/bn.js +5 -0
  498. package/dist/purchase_portal/index.js +2 -0
  499. package/dist/purchase_portal/module.d.ts +6853 -352
  500. package/dist/purchase_stock/.kosh/bindings.js +1 -1
  501. package/dist/purchase_stock/.kosh/schema.d.ts +1096 -21
  502. package/dist/purchase_stock/i18n/bn.d.ts +2 -0
  503. package/dist/purchase_stock/i18n/bn.js +19 -0
  504. package/dist/purchase_stock/index.d.ts +2 -2
  505. package/dist/purchase_stock/index.js +38 -2
  506. package/dist/purchase_stock/module.d.ts +12930 -1612
  507. package/dist/purchase_stock/module.js +317 -9
  508. package/dist/purchase_stock/scorecard.d.ts +22 -0
  509. package/dist/purchase_stock/scorecard.js +77 -0
  510. package/dist/purchase_stock/web/Scorecard.d.ts +7 -0
  511. package/dist/purchase_stock/web/Scorecard.js +22 -0
  512. package/dist/purchase_stock/web/index.d.ts +11 -0
  513. package/dist/purchase_stock/web/index.js +16 -0
  514. package/dist/purchase_stock/web/messages.d.ts +2 -0
  515. package/dist/purchase_stock/web/messages.js +27 -0
  516. package/dist/purchase_stock_account/.kosh/bindings.js +1 -1
  517. package/dist/purchase_stock_account/.kosh/schema.d.ts +1444 -20
  518. package/dist/purchase_stock_account/i18n/bn.d.ts +2 -0
  519. package/dist/purchase_stock_account/i18n/bn.js +8 -0
  520. package/dist/purchase_stock_account/index.js +18 -0
  521. package/dist/purchase_stock_account/module.d.ts +7 -35346
  522. package/dist/purchase_stock_account/module.js +35 -8
  523. package/dist/recruitment/.kosh/bindings.js +1 -1
  524. package/dist/recruitment/.kosh/schema.d.ts +60 -1
  525. package/dist/recruitment/i18n/bn.d.ts +2 -0
  526. package/dist/recruitment/i18n/bn.js +93 -0
  527. package/dist/recruitment/index.js +64 -0
  528. package/dist/recruitment/module.d.ts +460 -8
  529. package/dist/recruitment/module.js +13 -4
  530. package/dist/reporting/documents.d.ts +5 -0
  531. package/dist/reporting/documents.js +11 -1
  532. package/dist/reporting/index.d.ts +1 -1
  533. package/dist/reporting/index.js +1 -1
  534. package/dist/reporting/web/CalendarView.d.ts +18 -5
  535. package/dist/reporting/web/CalendarView.js +163 -29
  536. package/dist/reporting/web/messages.js +18 -0
  537. package/dist/sale_account/.kosh/bindings.js +1 -1
  538. package/dist/sale_account/.kosh/schema.d.ts +763 -18
  539. package/dist/sale_account/i18n/bn.d.ts +2 -0
  540. package/dist/sale_account/i18n/bn.js +48 -0
  541. package/dist/sale_account/index.d.ts +1 -1
  542. package/dist/sale_account/index.js +102 -4
  543. package/dist/sale_account/module.d.ts +8241 -2052
  544. package/dist/sale_account/module.js +535 -46
  545. package/dist/sale_crm/.kosh/bindings.d.ts +22 -0
  546. package/dist/sale_crm/.kosh/bindings.js +15 -0
  547. package/dist/{mrp โ†’ sale_crm}/.kosh/schema.d.ts +391 -494
  548. package/dist/sale_crm/i18n/bn.d.ts +2 -0
  549. package/dist/sale_crm/i18n/bn.js +9 -0
  550. package/dist/sale_crm/index.d.ts +7 -0
  551. package/dist/sale_crm/index.js +104 -0
  552. package/dist/sale_crm/module.d.ts +5609 -0
  553. package/dist/sale_crm/module.js +73 -0
  554. package/dist/sale_portal/.kosh/bindings.js +1 -1
  555. package/dist/sale_portal/.kosh/schema.d.ts +292 -4
  556. package/dist/sale_portal/i18n/bn.d.ts +2 -0
  557. package/dist/sale_portal/i18n/bn.js +7 -0
  558. package/dist/sale_portal/index.js +10 -0
  559. package/dist/sale_portal/module.d.ts +2563 -292
  560. package/dist/sale_project/.kosh/bindings.js +1 -1
  561. package/dist/sale_project/.kosh/schema.d.ts +1025 -4
  562. package/dist/sale_project/i18n/bn.d.ts +2 -0
  563. package/dist/sale_project/i18n/bn.js +12 -0
  564. package/dist/sale_project/index.js +2 -0
  565. package/dist/sale_project/module.d.ts +9280 -762
  566. package/dist/sale_project/module.js +17 -1
  567. package/dist/sale_stock/.kosh/bindings.js +1 -1
  568. package/dist/sale_stock/.kosh/schema.d.ts +463 -6
  569. package/dist/sale_stock/i18n/bn.d.ts +2 -0
  570. package/dist/sale_stock/i18n/bn.js +15 -0
  571. package/dist/sale_stock/index.js +2 -0
  572. package/dist/sale_stock/module.d.ts +8355 -1334
  573. package/dist/sale_stock/module.js +20 -3
  574. package/dist/sales/.kosh/bindings.js +1 -1
  575. package/dist/sales/.kosh/schema.d.ts +292 -4
  576. package/dist/sales/i18n/bn.d.ts +2 -0
  577. package/dist/sales/i18n/bn.js +128 -0
  578. package/dist/sales/index.js +124 -5
  579. package/dist/sales/module.d.ts +3568 -633
  580. package/dist/sales/module.js +306 -11
  581. package/dist/server/api/duplicate.d.ts +14 -0
  582. package/dist/server/api/duplicate.js +75 -0
  583. package/dist/server/api/explain.d.ts +70 -0
  584. package/dist/server/api/explain.js +111 -0
  585. package/dist/server/api/metadata.d.ts +2 -0
  586. package/dist/server/api/metadata.js +9 -0
  587. package/dist/server/api/openapi.js +15 -0
  588. package/dist/server/api/rest.d.ts +1 -0
  589. package/dist/server/api/rest.js +76 -12
  590. package/dist/server/api/views.js +1 -1
  591. package/dist/server/apps.d.ts +16 -1
  592. package/dist/server/apps.js +164 -2
  593. package/dist/server/auth/base.js +2 -0
  594. package/dist/server/auth/service.d.ts +8 -0
  595. package/dist/server/auth/service.js +19 -0
  596. package/dist/server/events.d.ts +13 -0
  597. package/dist/server/events.js +22 -0
  598. package/dist/server/i18n.d.ts +27 -0
  599. package/dist/server/i18n.js +143 -0
  600. package/dist/server/index.d.ts +2 -0
  601. package/dist/server/index.js +2 -0
  602. package/dist/server/server.js +6 -0
  603. package/dist/settings/company.d.ts +3 -1
  604. package/dist/settings/company.js +26 -5
  605. package/dist/settings/routes.d.ts +10 -0
  606. package/dist/settings/routes.js +19 -3
  607. package/dist/settings/web/AppsPage.d.ts +3 -2
  608. package/dist/settings/web/AppsPage.js +26 -8
  609. package/dist/settings/web/CompaniesPage.js +91 -6
  610. package/dist/settings/web/messages.js +64 -0
  611. package/dist/sign/.kosh/bindings.d.ts +22 -0
  612. package/dist/{mrp โ†’ sign}/.kosh/bindings.js +2 -2
  613. package/dist/sign/.kosh/schema.d.ts +991 -0
  614. package/dist/sign/i18n/bn.d.ts +2 -0
  615. package/dist/sign/i18n/bn.js +97 -0
  616. package/dist/sign/index.d.ts +29 -0
  617. package/dist/sign/index.js +478 -0
  618. package/dist/sign/module.d.ts +4518 -0
  619. package/dist/sign/module.js +167 -0
  620. package/dist/sign/sign.d.ts +82 -0
  621. package/dist/sign/sign.js +474 -0
  622. package/dist/stock/.kosh/bindings.js +1 -1
  623. package/dist/stock/.kosh/schema.d.ts +374 -3
  624. package/dist/stock/demo.d.ts +2 -1
  625. package/dist/stock/demo.js +28 -1
  626. package/dist/stock/i18n/bn.d.ts +2 -0
  627. package/dist/stock/i18n/bn.js +311 -0
  628. package/dist/stock/index.d.ts +4 -1
  629. package/dist/stock/index.js +674 -6
  630. package/dist/stock/ledger.d.ts +78 -0
  631. package/dist/stock/ledger.js +582 -0
  632. package/dist/stock/module.d.ts +6142 -1380
  633. package/dist/stock/module.js +780 -26
  634. package/dist/stock/replenish.d.ts +38 -0
  635. package/dist/stock/replenish.js +191 -0
  636. package/dist/stock/returns.d.ts +157 -0
  637. package/dist/stock/returns.js +163 -0
  638. package/dist/stock/web/Ledger.d.ts +9 -0
  639. package/dist/stock/web/Ledger.js +108 -0
  640. package/dist/stock/web/Operations.d.ts +8 -0
  641. package/dist/stock/web/Operations.js +33 -0
  642. package/dist/stock/web/Replenishment.d.ts +8 -0
  643. package/dist/stock/web/Replenishment.js +84 -0
  644. package/dist/stock/web/ReturnButton.d.ts +7 -0
  645. package/dist/stock/web/ReturnButton.js +62 -0
  646. package/dist/stock/web/index.d.ts +7 -2
  647. package/dist/stock/web/index.js +15 -2
  648. package/dist/stock/web/messages.js +206 -0
  649. package/dist/stock_account/.kosh/bindings.js +1 -1
  650. package/dist/stock_account/.kosh/schema.d.ts +878 -12
  651. package/dist/stock_account/i18n/bn.d.ts +2 -0
  652. package/dist/stock_account/i18n/bn.js +73 -0
  653. package/dist/stock_account/index.d.ts +1 -0
  654. package/dist/stock_account/index.js +141 -3
  655. package/dist/stock_account/landed.d.ts +429 -0
  656. package/dist/stock_account/landed.js +335 -0
  657. package/dist/stock_account/module.d.ts +12143 -3391
  658. package/dist/stock_account/module.js +135 -6
  659. package/dist/stock_account/web/LandedPreview.d.ts +7 -0
  660. package/dist/stock_account/web/LandedPreview.js +23 -0
  661. package/dist/stock_account/web/index.d.ts +11 -0
  662. package/dist/stock_account/web/index.js +16 -0
  663. package/dist/stock_account/web/messages.d.ts +2 -0
  664. package/dist/stock_account/web/messages.js +27 -0
  665. package/dist/todo/i18n/bn.d.ts +2 -0
  666. package/dist/todo/i18n/bn.js +66 -0
  667. package/dist/todo/index.js +59 -0
  668. package/dist/todo/module.d.ts +5 -0
  669. package/dist/todo/module.js +5 -3
  670. package/dist/trade_finance/.kosh/bindings.js +1 -1
  671. package/dist/trade_finance/.kosh/schema.d.ts +2 -1
  672. package/dist/trade_finance/i18n/bn.d.ts +2 -0
  673. package/dist/trade_finance/i18n/bn.js +162 -0
  674. package/dist/trade_finance/index.js +95 -0
  675. package/dist/trade_finance/module.d.ts +26 -0
  676. package/dist/trade_finance/module.js +29 -8
  677. package/dist/trade_finance_account/.kosh/bindings.js +1 -1
  678. package/dist/trade_finance_account/.kosh/schema.d.ts +651 -10
  679. package/dist/trade_finance_account/i18n/bn.d.ts +2 -0
  680. package/dist/trade_finance_account/i18n/bn.js +27 -0
  681. package/dist/trade_finance_account/index.js +3 -0
  682. package/dist/trade_finance_account/module.d.ts +5129 -1509
  683. package/dist/trade_finance_account/module.js +2 -0
  684. package/dist/trade_finance_purchase/.kosh/bindings.js +1 -1
  685. package/dist/trade_finance_purchase/.kosh/schema.d.ts +908 -5
  686. package/dist/trade_finance_purchase/i18n/bn.d.ts +2 -0
  687. package/dist/trade_finance_purchase/i18n/bn.js +6 -0
  688. package/dist/trade_finance_purchase/index.js +2 -0
  689. package/dist/trade_finance_purchase/module.d.ts +6909 -408
  690. package/dist/trade_finance_sale/.kosh/bindings.js +1 -1
  691. package/dist/trade_finance_sale/.kosh/schema.d.ts +292 -4
  692. package/dist/trade_finance_sale/i18n/bn.d.ts +2 -0
  693. package/dist/trade_finance_sale/i18n/bn.js +6 -0
  694. package/dist/trade_finance_sale/index.js +2 -0
  695. package/dist/trade_finance_sale/module.d.ts +2602 -331
  696. package/dist/ui/api.d.ts +2 -0
  697. package/dist/ui/app.d.ts +9 -0
  698. package/dist/ui/app.js +47 -15
  699. package/dist/ui/components/AppIcon.js +9 -2
  700. package/dist/ui/components/Explain.d.ts +69 -0
  701. package/dist/ui/components/Explain.js +62 -0
  702. package/dist/ui/context.d.ts +8 -1
  703. package/dist/ui/context.js +34 -1
  704. package/dist/ui/i18n/messages.d.ts +40 -0
  705. package/dist/ui/i18n/messages.js +80 -0
  706. package/dist/ui/index.d.ts +2 -1
  707. package/dist/ui/index.js +1 -0
  708. package/dist/ui/registry.d.ts +14 -0
  709. package/dist/ui/registry.js +10 -0
  710. package/dist/ui/views/FormView.d.ts +6 -0
  711. package/dist/ui/views/FormView.js +51 -12
  712. package/dist/ui/views/KanbanView.js +9 -1
  713. package/dist/ui/views/ListView.d.ts +8 -0
  714. package/dist/ui/views/ListView.js +14 -5
  715. package/dist/ui/views/StatsRow.js +2 -1
  716. package/dist/ui/views/widgets.js +7 -1
  717. package/dist/views/extend.js +12 -0
  718. package/dist/views/types.d.ts +13 -2
  719. package/dist/views/validate.js +8 -1
  720. package/dist/website/.kosh/bindings.js +1 -1
  721. package/dist/website/.kosh/schema.d.ts +2 -1
  722. package/dist/website/i18n/bn.d.ts +2 -0
  723. package/dist/website/i18n/bn.js +113 -0
  724. package/dist/website/index.js +37 -0
  725. package/dist/website/module.d.ts +20 -0
  726. package/dist/website/module.js +30 -5
  727. package/dist/website_crm/.kosh/bindings.js +1 -1
  728. package/dist/website_crm/.kosh/schema.d.ts +3 -1
  729. package/dist/website_crm/i18n/bn.d.ts +2 -0
  730. package/dist/website_crm/i18n/bn.js +5 -0
  731. package/dist/website_crm/index.js +2 -0
  732. package/dist/website_crm/module.d.ts +41 -0
  733. package/dist/website_sale/.kosh/bindings.d.ts +22 -0
  734. package/dist/website_sale/.kosh/bindings.js +15 -0
  735. package/dist/website_sale/.kosh/schema.d.ts +2909 -0
  736. package/dist/website_sale/couriers.d.ts +50 -0
  737. package/dist/website_sale/couriers.js +59 -0
  738. package/dist/website_sale/demo.d.ts +7 -0
  739. package/dist/website_sale/demo.js +90 -0
  740. package/dist/website_sale/growth.d.ts +31 -0
  741. package/dist/website_sale/growth.js +163 -0
  742. package/dist/website_sale/i18n/bn.d.ts +2 -0
  743. package/dist/website_sale/i18n/bn.js +132 -0
  744. package/dist/website_sale/index.d.ts +49 -0
  745. package/dist/website_sale/index.js +620 -0
  746. package/dist/website_sale/module.d.ts +35182 -0
  747. package/dist/website_sale/module.js +419 -0
  748. package/dist/website_sale/shipments.d.ts +16 -0
  749. package/dist/website_sale/shipments.js +113 -0
  750. package/dist/website_sale/shop.d.ts +81 -0
  751. package/dist/website_sale/shop.js +662 -0
  752. package/dist/website_sale_stock/.kosh/bindings.d.ts +22 -0
  753. package/dist/website_sale_stock/.kosh/bindings.js +15 -0
  754. package/dist/website_sale_stock/.kosh/schema.d.ts +3400 -0
  755. package/dist/website_sale_stock/i18n/bn.d.ts +2 -0
  756. package/dist/website_sale_stock/i18n/bn.js +4 -0
  757. package/dist/website_sale_stock/index.d.ts +9 -0
  758. package/dist/website_sale_stock/index.js +22 -0
  759. package/dist/website_sale_stock/module.d.ts +11 -0
  760. package/dist/website_sale_stock/module.js +32 -0
  761. package/package.json +117 -8
  762. package/dist/mrp/index.d.ts +0 -3
  763. package/dist/mrp/index.js +0 -392
  764. package/dist/mrp/module.js +0 -695
  765. package/dist/mrp_account/index.d.ts +0 -3
  766. package/dist/mrp_account/index.js +0 -22
  767. /package/dist/{mrp โ†’ account_asset}/.kosh/bindings.d.ts +0 -0
  768. /package/dist/{mrp_account โ†’ account_budget}/.kosh/bindings.d.ts +0 -0
@@ -0,0 +1,80 @@
1
+ /** Bangla for the module's labels, keyed by their English text (RFC 0023 ยง3.1; `pnpm i18n:extract`). */
2
+ export const bn = {
3
+ 'A confirmed event takes place and holds its room; a cancelled one frees the room and can be restored.': 'เฆจเฆฟเฆถเงเฆšเฆฟเฆค เฆ‡เฆญเง‡เฆจเงเฆŸ เฆ…เฆจเงเฆทเงเฆ เฆฟเฆค เฆนเฆฏเฆผ เฆ“ เฆเฆฐ เฆ•เฆ•เงเฆท เฆงเฆฐเง‡ เฆฐเฆพเฆ–เง‡; เฆฌเฆพเฆคเฆฟเฆฒ เฆ‡เฆญเง‡เฆจเงเฆŸ เฆ•เฆ•เงเฆท เฆ›เง‡เฆกเฆผเง‡ เฆฆเง‡เฆฏเฆผ เฆเฆฌเฆ‚ เฆ†เฆฌเฆพเฆฐ เฆซเฆฟเฆฐเฆฟเฆฏเฆผเง‡ เฆ†เฆจเฆพ เฆฏเฆพเฆฏเฆผเฅค',
4
+ 'A new event ends this long after it starts; each can still be changed.': 'เฆจเฆคเงเฆจ เฆ‡เฆญเง‡เฆจเงเฆŸ เฆถเงเฆฐเงเฆฐ เฆเฆคเฆ•เงเฆทเฆฃ เฆชเฆฐเง‡ เฆถเง‡เฆท เฆนเฆฏเฆผ; เฆชเงเฆฐเฆคเฆฟเฆŸเฆฟ เฆชเฆฐเง‡ เฆฌเฆฆเฆฒเฆพเฆจเง‹ เฆฏเฆพเฆฏเฆผเฅค',
5
+ 'About (id)': 'เฆธเฆฎเงเฆชเฆฐเงเฆ•เฆฟเฆค (เฆ†เฆ‡เฆกเฆฟ)',
6
+ 'About (model)': 'เฆธเฆฎเงเฆชเฆฐเงเฆ•เฆฟเฆค (เฆฎเฆกเง‡เฆฒ)',
7
+ Accepted: 'เฆ—เงƒเฆนเง€เฆค',
8
+ Active: 'เฆธเฆ•เงเฆฐเฆฟเฆฏเฆผ',
9
+ Agenda: 'เฆเฆœเง‡เฆจเงเฆกเฆพ',
10
+ 'Agenda manager': 'เฆเฆœเง‡เฆจเงเฆกเฆพ เฆฌเงเฆฏเฆฌเฆธเงเฆฅเฆพเฆชเฆ•',
11
+ 'Agenda user': 'เฆเฆœเง‡เฆจเงเฆกเฆพ เฆฌเงเฆฏเฆฌเฆนเฆพเฆฐเฆ•เฆพเฆฐเง€',
12
+ 'All day': 'เฆธเฆพเฆฐเฆพ เฆฆเฆฟเฆจ',
13
+ 'An attendee is a person or a contact.': 'เฆ…เฆ‚เฆถเฆ—เงเฆฐเฆนเฆฃเฆ•เฆพเฆฐเง€ เฆเฆ•เฆœเฆจ เฆฌเงเฆฏเฆ•เงเฆคเฆฟ เฆฌเฆพ เฆเฆ•เฆŸเฆฟ เฆฏเง‹เฆ—เฆพเฆฏเง‹เฆ—เฅค',
14
+ 'An event ends after it starts.': 'เฆ‡เฆญเง‡เฆจเงเฆŸ เฆถเงเฆฐเงเฆฐ เฆชเฆฐเง‡ เฆถเง‡เฆท เฆนเฆฏเฆผเฅค',
15
+ Answer: 'เฆ‰เฆคเงเฆคเฆฐ',
16
+ Attendee: 'เฆ…เฆ‚เฆถเฆ—เงเฆฐเฆนเฆฃเฆ•เฆพเฆฐเง€',
17
+ 'Attendee answers': 'เฆ…เฆ‚เฆถเฆ—เงเฆฐเฆนเฆฃเฆ•เฆพเฆฐเง€เฆฆเง‡เฆฐ เฆ‰เฆคเงเฆคเฆฐ',
18
+ Attendees: 'เฆ…เฆ‚เฆถเฆ—เงเฆฐเฆนเฆฃเฆ•เฆพเฆฐเง€',
19
+ 'Attendees โ€บ Answer': 'เฆ…เฆ‚เฆถเฆ—เงเฆฐเฆนเฆฃเฆ•เฆพเฆฐเง€ โ€บ เฆ‰เฆคเงเฆคเฆฐ',
20
+ 'Attendees โ€บ Contact': 'เฆ…เฆ‚เฆถเฆ—เงเฆฐเฆนเฆฃเฆ•เฆพเฆฐเง€ โ€บ เฆฏเง‹เฆ—เฆพเฆฏเง‹เฆ—',
21
+ 'Attendees โ€บ Person': 'เฆ…เฆ‚เฆถเฆ—เงเฆฐเฆนเฆฃเฆ•เฆพเฆฐเง€ โ€บ เฆฌเงเฆฏเฆ•เงเฆคเฆฟ',
22
+ 'By organiser': 'เฆ†เฆฏเฆผเง‹เฆœเฆ• เฆ…เฆจเงเฆฏเฆพเฆฏเฆผเง€',
23
+ Calendar: 'เฆ•เงเฆฏเฆพเฆฒเง‡เฆจเงเฆกเฆพเฆฐ',
24
+ 'Cancel the event': 'เฆ‡เฆญเง‡เฆจเงเฆŸ เฆฌเฆพเฆคเฆฟเฆฒ เฆ•เฆฐเงเฆจ',
25
+ 'Cancel this event? Its room is freed.': 'เฆเฆ‡ เฆ‡เฆญเง‡เฆจเงเฆŸ เฆฌเฆพเฆคเฆฟเฆฒ เฆ•เฆฐเฆฌเง‡เฆจ? เฆเฆฐ เฆ•เฆ•เงเฆท เฆ–เฆพเฆฒเฆฟ เฆนเฆฏเฆผเง‡ เฆฏเฆพเฆฌเง‡เฅค',
26
+ Cancelled: 'เฆฌเฆพเฆคเฆฟเฆฒ',
27
+ 'Cancelled this month': 'เฆ เฆฎเฆพเฆธเง‡ เฆฌเฆพเฆคเฆฟเฆฒ',
28
+ Configuration: 'เฆ•เฆจเฆซเฆฟเฆ—เฆพเฆฐเง‡เฆถเฆจ',
29
+ Confirmed: 'เฆจเฆฟเฆถเงเฆšเฆฟเฆค',
30
+ Contact: 'เฆฏเง‹เฆ—เฆพเฆฏเง‹เฆ—',
31
+ 'Created At': 'เฆคเงˆเฆฐเฆฟเฆฐ เฆธเฆฎเฆฏเฆผ',
32
+ 'Created By': 'เฆคเงˆเฆฐเฆฟ เฆ•เฆฐเง‡เฆ›เง‡เฆจ',
33
+ Declined: 'เฆ…เฆธเงเฆฌเง€เฆ•เงƒเฆค',
34
+ 'Default length (minutes)': 'เฆกเฆฟเฆซเฆฒเงเฆŸ เฆฆเงˆเฆฐเงเฆ˜เงเฆฏ (เฆฎเฆฟเฆจเฆฟเฆŸ)',
35
+ Description: 'เฆฌเฆฟเฆฌเฆฐเฆฃ',
36
+ 'Display Name': 'เฆชเงเฆฐเฆฆเฆฐเงเฆถเฆฟเฆค เฆจเฆพเฆฎ',
37
+ End: 'เฆถเง‡เฆท',
38
+ Ends: 'เฆถเง‡เฆท เฆนเฆฏเฆผ',
39
+ Event: 'เฆ‡เฆญเง‡เฆจเงเฆŸ',
40
+ Events: 'เฆ‡เฆญเง‡เฆจเงเฆŸ',
41
+ 'How new events start out.': 'เฆจเฆคเงเฆจ เฆ‡เฆญเง‡เฆจเงเฆŸ เฆ•เง€เฆญเฆพเฆฌเง‡ เฆถเงเฆฐเง เฆนเฆฏเฆผเฅค',
42
+ 'I am invited': 'เฆ†เฆฎเฆฟ เฆ†เฆฎเฆจเงเฆคเงเฆฐเฆฟเฆค',
43
+ 'I organize': 'เฆ†เฆฎเฆฟ เฆ†เฆฏเฆผเง‹เฆœเฆ•',
44
+ ID: 'เฆ†เฆ‡เฆกเฆฟ',
45
+ Location: 'เฆ…เฆฌเฆธเงเฆฅเฆพเฆจ',
46
+ 'Manager (every event, rooms)': 'เฆฌเงเฆฏเฆฌเฆธเงเฆฅเฆพเฆชเฆ• (เฆธเฆฌ เฆ‡เฆญเง‡เฆจเงเฆŸ, เฆ•เฆ•เงเฆท)',
47
+ Maybe: 'เฆนเฆฏเฆผเฆคเง‹',
48
+ Meeting: 'เฆธเฆญเฆพ',
49
+ 'Meeting cancelled': 'เฆธเฆญเฆพ เฆฌเฆพเฆคเฆฟเฆฒ',
50
+ 'Meetings by room': 'เฆ•เฆ•เงเฆท เฆ…เฆจเงเฆฏเฆพเฆฏเฆผเง€ เฆธเฆญเฆพ',
51
+ 'Meetings this month': 'เฆ เฆฎเฆพเฆธเง‡เฆฐ เฆธเฆญเฆพ',
52
+ 'Meetings, rooms and who is free when': 'เฆธเฆญเฆพ, เฆ•เฆ•เงเฆท เฆเฆฌเฆ‚ เฆ•เง‡ เฆ•เฆ–เฆจ เฆซเฆพเฆเฆ•เฆพ',
53
+ Name: 'เฆจเฆพเฆฎ',
54
+ 'Not answered': 'เฆ‰เฆคเงเฆคเฆฐ เฆฆเง‡เฆจเฆจเฆฟ',
55
+ Organizer: 'เฆ†เฆฏเฆผเง‹เฆœเฆ•',
56
+ Overview: 'เฆธเฆพเฆฐเฆธเฆ‚เฆ•เงเฆทเง‡เฆช',
57
+ 'Page {{page}} of {{pages}}': 'เฆชเงƒเฆทเงเฆ เฆพ {{page}} / {{pages}}',
58
+ Person: 'เฆฌเงเฆฏเฆ•เงเฆคเฆฟ',
59
+ Privacy: 'เฆ—เง‹เฆชเฆจเง€เฆฏเฆผเฆคเฆพ',
60
+ 'Private (busy for others)': 'เฆฌเงเฆฏเฆ•เงเฆคเฆฟเฆ—เฆค (เฆ…เฆจเงเฆฏเฆฆเง‡เฆฐ เฆ•เฆพเฆ›เง‡ เฆฌเงเฆฏเฆธเงเฆค)',
61
+ Productivity: 'เฆ‰เงŽเฆชเฆพเฆฆเฆจเฆถเง€เฆฒเฆคเฆพ',
62
+ Public: 'เฆธเฆฐเงเฆฌเฆœเฆจเง€เฆจ',
63
+ 'Public events are seen by everyone in Agenda; private ones show only as busy to people not invited.': 'เฆธเฆฐเงเฆฌเฆœเฆจเง€เฆจ เฆ‡เฆญเง‡เฆจเงเฆŸ เฆเฆœเง‡เฆจเงเฆกเฆพเฆฏเฆผ เฆธเฆฌเฆพเฆ‡ เฆฆเง‡เฆ–เฆคเง‡ เฆชเฆพเฆจ; เฆฌเงเฆฏเฆ•เงเฆคเฆฟเฆ—เฆค เฆ‡เฆญเง‡เฆจเงเฆŸ เฆ†เฆฎเฆจเงเฆคเงเฆฐเฆฟเฆค เฆจเฆจ เฆเฆฎเฆจ เฆฒเง‹เฆ•เฆฆเง‡เฆฐ เฆ•เฆพเฆ›เง‡ เฆถเงเฆงเง เฆฌเงเฆฏเฆธเงเฆค เฆนเฆฟเฆธเง‡เฆฌเง‡ เฆฆเง‡เฆ–เฆพเฆฏเฆผเฅค',
64
+ Restore: 'เฆชเงเฆจเฆฐเงเฆฆเงเฆงเฆพเฆฐ เฆ•เฆฐเงเฆจ',
65
+ Room: 'เฆ•เฆ•เงเฆท',
66
+ Rooms: 'เฆ•เฆ•เงเฆท',
67
+ Seats: 'เฆ†เฆธเฆจ',
68
+ Start: 'เฆถเงเฆฐเง',
69
+ Starts: 'เฆถเงเฆฐเง เฆนเฆฏเฆผ',
70
+ State: 'เฆ…เฆฌเฆธเงเฆฅเฆพ',
71
+ Status: 'เฆ…เฆฌเฆธเงเฆฅเฆพ',
72
+ 'The room is already booked at that time.': 'เฆ“เฆ‡ เฆธเฆฎเฆฏเฆผเง‡ เฆ•เฆ•เงเฆทเฆŸเฆฟ เฆ†เฆ—เง‡เฆ‡ เฆฌเงเฆ• เฆ•เฆฐเฆพ เฆ†เฆ›เง‡เฅค',
73
+ Title: 'เฆถเฆฟเฆฐเง‹เฆจเฆพเฆฎ',
74
+ 'Updated At': 'เฆนเฆพเฆฒเฆจเฆพเฆ—เฆพเฆฆเง‡เฆฐ เฆธเฆฎเฆฏเฆผ',
75
+ 'Updated By': 'เฆนเฆพเฆฒเฆจเฆพเฆ—เฆพเฆฆ เฆ•เฆฐเง‡เฆ›เง‡เฆจ',
76
+ 'User (own and public events)': 'เฆฌเงเฆฏเฆฌเฆนเฆพเฆฐเฆ•เฆพเฆฐเง€ (เฆจเฆฟเฆœเง‡เฆฐ เฆ“ เฆธเฆฐเงเฆฌเฆœเฆจเง€เฆจ เฆ‡เฆญเง‡เฆจเงเฆŸ)',
77
+ Video: 'เฆญเฆฟเฆกเฆฟเฆ“',
78
+ 'Video call link': 'เฆญเฆฟเฆกเฆฟเฆ“ เฆ•เฆฒเง‡เฆฐ เฆฒเฆฟเฆ‚เฆ•',
79
+ 'Whether this person will come: not answered yet, accepted, maybe or declined.': 'เฆเฆ‡ เฆฌเงเฆฏเฆ•เงเฆคเฆฟ เฆ†เฆธเฆฌเง‡เฆจ เฆ•เฆฟ เฆจเฆพ: เฆเฆ–เฆจเฆ“ เฆ‰เฆคเงเฆคเฆฐ เฆฆเง‡เฆจเฆจเฆฟ, เฆ—เงเฆฐเฆนเฆฃ เฆ•เฆฐเง‡เฆ›เง‡เฆจ, เฆนเฆฏเฆผเฆคเง‹ เฆฌเฆพ เฆชเงเฆฐเฆคเงเฆฏเฆพเฆ–เงเฆฏเฆพเฆจ เฆ•เฆฐเง‡เฆ›เง‡เฆจเฅค',
80
+ };
@@ -111,6 +111,83 @@ export const calendarApp = defineModule({
111
111
  category: 'Productivity',
112
112
  summary: 'Meetings, rooms and who is free when',
113
113
  },
114
+ documents: [
115
+ {
116
+ key: 'meeting',
117
+ name: 'Meeting',
118
+ model: 'calendar.event',
119
+ layout: {
120
+ paper: 'A4',
121
+ header: '{{company.name}}',
122
+ footer: 'Page {{page}} of {{pages}}',
123
+ blocks: [
124
+ { kind: 'heading', id: 'title', text: '{{name}}', level: 1 },
125
+ {
126
+ kind: 'fields',
127
+ id: 'when',
128
+ items: [
129
+ { label: 'Starts', bind: 'start' },
130
+ { label: 'Ends', bind: 'stop' },
131
+ { label: 'Organizer', bind: 'organizer.name' },
132
+ { label: 'Room', bind: 'room.name' },
133
+ { label: 'Location', bind: 'location' },
134
+ { label: 'Video', bind: 'videoUrl' },
135
+ { label: 'Status', bind: 'state' },
136
+ ],
137
+ },
138
+ { kind: 'text', id: 'about', text: '{{description}}' },
139
+ {
140
+ kind: 'table',
141
+ id: 'attendees',
142
+ bind: 'attendees',
143
+ columns: [
144
+ { label: 'Person', bind: 'user.name' },
145
+ { label: 'Contact', bind: 'partner.name' },
146
+ { label: 'Answer', bind: 'response' },
147
+ ],
148
+ },
149
+ { kind: 'signature', id: 'sign', labels: ['Minutes taken by'] },
150
+ ],
151
+ },
152
+ },
153
+ ],
154
+ importTemplates: [
155
+ {
156
+ key: 'calendar_room',
157
+ model: 'calendar.room',
158
+ label: 'Room',
159
+ columns: [
160
+ { header: 'Name', field: 'name' },
161
+ { header: 'Seats', field: 'capacity' },
162
+ { header: 'Location', field: 'location' },
163
+ ],
164
+ },
165
+ {
166
+ key: 'calendar_event',
167
+ model: 'calendar.event',
168
+ label: 'Event',
169
+ columns: [
170
+ { header: 'Title', field: 'name' },
171
+ { header: 'Start', field: 'start' },
172
+ { header: 'End', field: 'stop' },
173
+ { header: 'All day', field: 'allDay' },
174
+ { header: 'Organizer', field: 'organizer' },
175
+ { header: 'Room', field: 'room' },
176
+ { header: 'Location', field: 'location' },
177
+ { header: 'Video call link', field: 'videoUrl' },
178
+ { header: 'Privacy', field: 'privacy' },
179
+ { header: 'Description', field: 'description' },
180
+ { header: 'Attendees โ€บ Person', field: 'attendees.user' },
181
+ { header: 'Attendees โ€บ Contact', field: 'attendees.partner' },
182
+ { header: 'Attendees โ€บ Answer', field: 'attendees.response' },
183
+ ],
184
+ },
185
+ ],
186
+ events: [
187
+ { topic: 'calendar.event.cancelled', model: 'calendar.event', label: 'Meeting cancelled' },
188
+ ],
189
+ // Bangla for the labels it serves (RFC 0023 ยง3.1; `pnpm i18n:extract`).
190
+ i18n: { bn: () => import('./i18n/bn.js') },
114
191
  accessLevels: {
115
192
  user: { label: 'User (own and public events)', groups: ['calendar.user'] },
116
193
  manager: {
@@ -1,3 +1,9 @@
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
+ */
1
7
  /** A meeting room (or any bookable place): booked with its events, never twice at once. */
2
8
  export declare const CalendarRoom: import("../server/orm.js").Model<"calendar.room", {
3
9
  readonly id: import("../server/orm.js").IdField<"calendar.room">;
@@ -1330,6 +1336,16 @@ export declare const calendarShutro: import("../server/orm.js").Module<readonly
1330
1336
  readonly hasDefault: false;
1331
1337
  readonly readonly: false;
1332
1338
  }, string>;
1339
+ readonly lang: import("../server/orm.js").SelectionField<"bn" | "en", {
1340
+ readonly required: false;
1341
+ readonly computed: false;
1342
+ readonly inverse: false;
1343
+ readonly sequence: false;
1344
+ readonly computeName: undefined;
1345
+ readonly store: true;
1346
+ readonly hasDefault: false;
1347
+ readonly readonly: false;
1348
+ }>;
1333
1349
  readonly phone: import("../server/orm.js").CharField<{
1334
1350
  readonly required: false;
1335
1351
  readonly computed: false;
@@ -1551,6 +1567,16 @@ export declare const calendarShutro: import("../server/orm.js").Module<readonly
1551
1567
  readonly hasDefault: false;
1552
1568
  readonly readonly: false;
1553
1569
  }, string>;
1570
+ readonly lang: import("../server/orm.js").SelectionField<"bn" | "en", {
1571
+ readonly required: false;
1572
+ readonly computed: false;
1573
+ readonly inverse: false;
1574
+ readonly sequence: false;
1575
+ readonly computeName: undefined;
1576
+ readonly store: true;
1577
+ readonly hasDefault: false;
1578
+ readonly readonly: false;
1579
+ }>;
1554
1580
  readonly phone: import("../server/orm.js").CharField<{
1555
1581
  readonly required: false;
1556
1582
  readonly computed: false;
@@ -6,7 +6,7 @@
6
6
  */
7
7
  import { contactsShutro } from '../contacts/index.js';
8
8
  import { messagingShutro } from '../messaging/index.js';
9
- import { installationSetting } from '../server/index.js';
9
+ import { emitting, installationSetting } from '../server/index.js';
10
10
  import { orm } from '../server/orm.js';
11
11
  import { check, defineModel, defineModule, f, onchange } from './.kosh/bindings.js';
12
12
  const ALL = ['read', 'write', 'create', 'unlink'];
@@ -56,12 +56,17 @@ export const CalendarEvent = defineModel('calendar.event', {
56
56
  room: f.many2one('calendar.room', { ondelete: 'restrict' }),
57
57
  location: f.char(),
58
58
  videoUrl: f.char({ label: 'Video call link' }),
59
- privacy: f.selection({ public: 'Public', private: 'Private (busy for others)' }, { required: true, default: 'public' }),
59
+ privacy: f.selection({ public: 'Public', private: 'Private (busy for others)' }, {
60
+ required: true,
61
+ default: 'public',
62
+ help: 'Public events are seen by everyone in Agenda; private ones show only as busy to people not invited.',
63
+ }),
60
64
  state: f.state({
61
65
  states: { confirmed: 'Confirmed', cancelled: 'Cancelled' },
62
66
  initial: 'confirmed',
67
+ help: 'A confirmed event takes place and holds its room; a cancelled one frees the room and can be restored.',
63
68
  transitions: {
64
- cancel: { from: ['confirmed'], to: 'cancelled' },
69
+ cancel: emitting('calendar.event.cancelled', { from: ['confirmed'], to: 'cancelled' }),
65
70
  restore: { from: ['cancelled'], to: 'confirmed' },
66
71
  },
67
72
  }),
@@ -151,7 +156,12 @@ export const CalendarAttendee = defineModel('calendar.attendee', {
151
156
  accepted: 'Accepted',
152
157
  tentative: 'Maybe',
153
158
  declined: 'Declined',
154
- }, { required: true, default: 'needs_action', label: 'Answer' }),
159
+ }, {
160
+ required: true,
161
+ default: 'needs_action',
162
+ label: 'Answer',
163
+ help: 'Whether this person will come: not answered yet, accepted, maybe or declined.',
164
+ }),
155
165
  },
156
166
  sqlConstraints: {
157
167
  someone: {
package/dist/cli/apps.js CHANGED
@@ -22,10 +22,14 @@ export const APPS_USAGE = `Usage: shutro-erp apps [command] [app โ€ฆ] [options]
22
22
  (apps that depend on them are disabled too)
23
23
  shutro-erp apps upgrade [app โ€ฆ] move installed apps to their code's version: schema, data migrations,
24
24
  seed data (default: every app whose code is newer)
25
+ shutro-erp apps uninstall <app โ€ฆ> --remove-data
26
+ remove apps and their data for good (apps that depend on them too);
27
+ a snapshot is kept for 30 days โ€” to keep the data, disable instead
25
28
 
26
29
  Options:
27
30
  --plan only show the plan
28
- --remove-data an upgrade may drop the columns and tables its code no longer has
31
+ --remove-data an upgrade may drop the columns and tables its code no longer has; an uninstall
32
+ removes the apps' data (required)
29
33
  --yes apply without asking
30
34
  --modules <file> the catalogue (default src/modules.ts)
31
35
  --dir <dir> migration files (default migrations)
@@ -94,6 +98,10 @@ function showPlan(ui, prepared, catalogue) {
94
98
  ui.write(` ${ui.style('yellow', u ? 'โ†“' : 'v')} ${iconOf(ui, d.name)} ${d.name.padEnd(width)} ${' '.repeat(8)} disable${d.cascade ? ui.style('gray', ' (it depends on a disabled app)') : ''}\n`);
95
99
  for (const u of plan.upgrade)
96
100
  ui.write(` ${ui.style('cyan', ui.terminal.unicode ? 'โ‡ง' : '^')} ${iconOf(ui, u.name)} ${u.name.padEnd(width)} ${ui.style('gray', u.to.padEnd(8))} upgrade from ${u.from}\n`);
101
+ for (const r of plan.uninstall)
102
+ ui.write(` ${ui.style('red', u ? 'โœ•' : 'x')} ${iconOf(ui, r.name)} ${r.name.padEnd(width)} ${' '.repeat(8)} uninstall, data removed${r.cascade ? ui.style('gray', ' (it depends on an app removed)') : ''}\n`);
103
+ for (const d of prepared.drops)
104
+ ui.detail(`deletes ${d.column === null ? d.table : `${d.table}.${d.column}`}: ${d.rows} row(s)`);
97
105
  for (const name of plan.unchanged)
98
106
  ui.detail(`${name}: already so`);
99
107
  if (prepared.allowDestructive && migration.destructive.length > 0)
@@ -129,9 +137,9 @@ export async function runApps(argv, io) {
129
137
  io.write(APPS_USAGE);
130
138
  return 2;
131
139
  }
132
- if (command === 'uninstall') {
133
- ui.warn('Removing an app and its data comes with a later step of RFC 0008.');
134
- ui.info(`Meanwhile: shutro-erp apps disable ${names.join(' ') || '<app>'} (reversible, keeps the data).`);
140
+ if (command === 'uninstall' && values['remove-data'] !== true) {
141
+ ui.warn('Uninstalling removes the apps and their data for good.');
142
+ ui.info(`Add --remove-data to go ahead, or keep the data: shutro-erp apps disable ${names.join(' ') || '<app>'}.`);
135
143
  return 2;
136
144
  }
137
145
  if (command !== 'list' && command !== 'upgrade' && names.length === 0) {
@@ -192,7 +200,15 @@ export async function runApps(argv, io) {
192
200
  return 0;
193
201
  ui.write('\n');
194
202
  ui.pause();
195
- const go = values.yes === true || (await prompter.confirm('Apply this change?', true));
203
+ // Removing data: the apps' names typed back (unless --yes); a snapshot is kept for 30 days.
204
+ const typed = command !== 'uninstall' || values.yes === true
205
+ ? true
206
+ : (await prompter.ask({
207
+ message: `Type ${targets.join(' ')} to remove the data for good`,
208
+ })).trim() === targets.join(' ');
209
+ const go = typed &&
210
+ (values.yes === true ||
211
+ (await prompter.confirm('Apply this change?', command !== 'uninstall')));
196
212
  ui.resume();
197
213
  if (!go) {
198
214
  ui.info('Nothing changed.');
@@ -225,6 +241,7 @@ export async function runApps(argv, io) {
225
241
  ...result.enabled.map((n) => `enabled ${n}`),
226
242
  ...result.disabled.map((n) => `disabled ${n}`),
227
243
  ...result.upgraded.map((n) => `upgraded ${n}`),
244
+ ...result.uninstalled.map((n) => `uninstalled ${n}`),
228
245
  ];
229
246
  ui.card(`${ui.terminal.emoji ? '๐Ÿงฉ ' : ''}Apps changed`, [
230
247
  ['Changes', done.join(', ')],
@@ -234,6 +251,9 @@ export async function runApps(argv, io) {
234
251
  ? 'none'
235
252
  : `migrations/${result.migration.version}_${result.migration.name}.sql`,
236
253
  ],
254
+ ...(result.snapshot === null
255
+ ? []
256
+ : [['Snapshot', `kosh_app_snapshot #${result.snapshot}, kept 30 days`]]),
237
257
  ['Next', 'restart the API (npm start) to serve the new set'],
238
258
  ]);
239
259
  return 0;
package/dist/cli/init.js CHANGED
@@ -541,8 +541,8 @@ async function modulesFor(apps) {
541
541
  modules.push((await import('../hr/index.js')).hr);
542
542
  if (app === 'stock')
543
543
  modules.push((await import('../stock/index.js')).stock);
544
- if (app === 'mrp')
545
- modules.push((await import('../mrp/index.js')).mrp);
544
+ if (app === 'production')
545
+ modules.push((await import('../production/index.js')).production);
546
546
  if (app === 'maintenance')
547
547
  modules.push((await import('../maintenance/index.js')).maintenance);
548
548
  if (app === 'event')
@@ -551,12 +551,42 @@ async function modulesFor(apps) {
551
551
  modules.push((await import('../website/index.js')).website);
552
552
  if (app === 'pos')
553
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 === 'indent')
557
+ modules.push((await import('../indent/index.js')).indent);
558
+ if (app === 'attendance')
559
+ modules.push((await import('../attendance/index.js')).attendance);
560
+ if (app === 'payroll')
561
+ modules.push((await import('../payroll/index.js')).payroll);
562
+ if (app === 'helpdesk')
563
+ modules.push((await import('../helpdesk/index.js')).helpdesk);
564
+ if (app === 'account_asset')
565
+ modules.push((await import('../account_asset/index.js')).accountAsset);
566
+ if (app === 'account_budget')
567
+ modules.push((await import('../account_budget/index.js')).accountBudget);
568
+ if (app === 'website_sale')
569
+ modules.push((await import('../website_sale/index.js')).websiteSale);
570
+ if (app === 'documents')
571
+ modules.push((await import('../documents/index.js')).documents);
572
+ if (app === 'sign')
573
+ modules.push((await import('../sign/index.js')).sign);
574
+ if (app === 'approvals')
575
+ modules.push((await import('../approvals/index.js')).approvals);
554
576
  if (app === 'trade_finance')
555
577
  modules.push((await import('../trade_finance/index.js')).tradeFinance);
556
578
  if (app === 'recruitment')
557
579
  modules.push((await import('../recruitment/index.js')).recruitment);
558
580
  if (app === 'sale_project')
559
581
  modules.push((await import('../sale_project/index.js')).saleProject);
582
+ if (app === 'project_account')
583
+ modules.push((await import('../project_account/index.js')).projectAccount);
584
+ if (app === 'project_purchase')
585
+ modules.push((await import('../project_purchase/index.js')).projectPurchase);
586
+ if (app === 'approvals_purchase')
587
+ modules.push((await import('../approvals_purchase/index.js')).approvalsPurchase);
588
+ if (app === 'indent_purchase')
589
+ modules.push((await import('../indent_purchase/index.js')).indentPurchase);
560
590
  if (app === 'sale_stock')
561
591
  modules.push((await import('../sale_stock/index.js')).saleStock);
562
592
  if (app === 'purchase_stock')
@@ -565,8 +595,8 @@ async function modulesFor(apps) {
565
595
  modules.push((await import('../stock_account/index.js')).stockAccount);
566
596
  if (app === 'purchase_stock_account')
567
597
  modules.push((await import('../purchase_stock_account/index.js')).purchaseStockAccount);
568
- if (app === 'mrp_account')
569
- modules.push((await import('../mrp_account/index.js')).mrpAccount);
598
+ if (app === 'production_account')
599
+ modules.push((await import('../production_account/index.js')).productionAccount);
570
600
  if (app === 'maintenance_stock')
571
601
  modules.push((await import('../maintenance_stock/index.js')).maintenanceStock);
572
602
  if (app === 'trade_finance_account')
@@ -579,8 +609,20 @@ async function modulesFor(apps) {
579
609
  modules.push((await import('../event_account/index.js')).eventAccount);
580
610
  if (app === 'website_crm')
581
611
  modules.push((await import('../website_crm/index.js')).websiteCrm);
612
+ if (app === 'sale_crm')
613
+ modules.push((await import('../sale_crm/index.js')).saleCrm);
614
+ if (app === 'website_sale_stock')
615
+ modules.push((await import('../website_sale_stock/index.js')).websiteSaleStock);
582
616
  if (app === 'pos_stock')
583
617
  modules.push((await import('../pos_stock/index.js')).posStock);
618
+ if (app === 'expense_account')
619
+ modules.push((await import('../expense_account/index.js')).expenseAccount);
620
+ if (app === 'payroll_account')
621
+ modules.push((await import('../payroll_account/index.js')).payrollAccount);
622
+ if (app === 'l10n_bd_payroll')
623
+ modules.push((await import('../l10n_bd_payroll/index.js')).l10nBdPayroll);
624
+ if (app === 'l10n_bd_pos')
625
+ modules.push((await import('../l10n_bd_pos/index.js')).l10nBdPos);
584
626
  if (app === 'l10n_bd')
585
627
  modules.push((await import('../l10n_bd/index.js')).l10nBd);
586
628
  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' | 'todo' | 'calendar' | 'crm' | 'hr' | 'recruitment' | 'stock' | 'mrp' | 'maintenance' | 'trade_finance' | 'event' | 'website' | 'pos' | 'sale_project' | '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' | 'pos_stock' | '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' | 'production' | 'maintenance' | 'trade_finance' | 'event' | 'website' | 'pos' | 'expense' | 'indent' | 'attendance' | 'payroll' | 'helpdesk' | 'account_asset' | 'account_budget' | 'website_sale' | 'documents' | 'sign' | 'approvals' | 'sale_project' | 'project_account' | 'project_purchase' | 'approvals_purchase' | 'indent_purchase' | 'sale_stock' | 'purchase_stock' | 'stock_account' | 'purchase_stock_account' | 'production_account' | 'maintenance_stock' | 'trade_finance_account' | 'trade_finance_purchase' | 'trade_finance_sale' | 'event_account' | 'website_crm' | 'sale_crm' | 'website_sale_stock' | 'pos_stock' | 'expense_account' | 'payroll_account' | 'l10n_bd_payroll' | 'l10n_bd_pos' | '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). */
@@ -93,10 +93,10 @@ export const APPS = {
93
93
  server: 'stock',
94
94
  web: 'registerStockWeb',
95
95
  },
96
- mrp: {
96
+ production: {
97
97
  label: 'Production: bills of materials with versions, orders that show what is short and what they cost',
98
98
  icon: '๐Ÿญ',
99
- server: 'mrp',
99
+ server: 'production',
100
100
  },
101
101
  maintenance: {
102
102
  label: 'Asset Care: equipment, preventive plans by time or meter, maintenance orders, reliability',
@@ -126,12 +126,94 @@ export const APPS = {
126
126
  server: 'pos',
127
127
  web: 'registerPosWeb',
128
128
  },
129
+ expense: {
130
+ label: 'Spend: expenses with receipts, policies, approvals and cash advances',
131
+ icon: '๐Ÿ’ณ',
132
+ server: 'expense',
133
+ },
134
+ indent: {
135
+ label: 'Requests: indents to the store, approved, issued by transfers and acknowledged',
136
+ icon: '๐Ÿ“‹',
137
+ server: 'indent',
138
+ },
139
+ attendance: {
140
+ label: 'Attendance: shifts, check-in by phone, kiosk or device, overtime',
141
+ icon: 'โฑ๏ธ',
142
+ server: 'attendance',
143
+ web: 'registerAttendanceWeb',
144
+ },
145
+ payroll: {
146
+ label: 'Payroll: salary structures, explained payslips, loans, corrections and payment files',
147
+ icon: '๐Ÿ’ต',
148
+ server: 'payroll',
149
+ },
150
+ helpdesk: {
151
+ label: 'Helpdesk: tickets from email, SLAs in business hours, assignment, ratings',
152
+ icon: '๐Ÿ›Ÿ',
153
+ server: 'helpdesk',
154
+ },
155
+ account_asset: {
156
+ label: 'Fixed assets: depreciation boards, disposals, revaluations and the tax book (in Accounting)',
157
+ icon: '๐Ÿญ',
158
+ server: 'accountAsset',
159
+ },
160
+ account_budget: {
161
+ label: 'Budgets: actual and committed by cost centre, purchase orders warned or blocked (in Accounting)',
162
+ icon: '๐Ÿ“',
163
+ server: 'accountBudget',
164
+ },
165
+ website_sale: {
166
+ label: 'Shop: published products, delivery fees, cart and checkout with cash on delivery or online payment (in Sites)',
167
+ icon: '๐Ÿ›’',
168
+ server: 'websiteSale',
169
+ },
170
+ documents: {
171
+ label: 'Documents: folders, versions, share links and requests for files',
172
+ icon: '๐Ÿ“',
173
+ server: 'documents',
174
+ web: 'registerDocumentsWeb',
175
+ },
176
+ sign: {
177
+ label: 'Sign: signatures in order or at once, one-time codes, a sealed PDF with its certificate',
178
+ icon: 'โœ๏ธ',
179
+ server: 'sign',
180
+ },
181
+ approvals: {
182
+ label: 'Approvals: everything waiting for your decision, my requests, policies on screen',
183
+ icon: 'โœ…',
184
+ server: 'approvals',
185
+ web: 'registerApprovalsWeb',
186
+ },
129
187
  sale_project: {
130
188
  label: 'Bridge: tasks and projects from sales orders (Sales โ†” Projects)',
131
189
  icon: '๐Ÿ”—',
132
190
  server: 'saleProject',
133
191
  bridge: ['sales', 'project'],
134
192
  },
193
+ project_account: {
194
+ label: 'Bridge: each project its cost centre, costs booked on it against its budget (Projects โ†” Accounting)',
195
+ icon: '๐Ÿ”—',
196
+ server: 'projectAccount',
197
+ bridge: ['project', 'accounting'],
198
+ },
199
+ project_purchase: {
200
+ label: 'Bridge: purchase orders on a project not billed yet, committed against its budget (Projects โ†” Purchase)',
201
+ icon: '๐Ÿ”—',
202
+ server: 'projectPurchase',
203
+ bridge: ['project', 'purchase', 'accounting'],
204
+ },
205
+ approvals_purchase: {
206
+ label: 'Bridge: approved purchase requests become requests for quotation (Approvals โ†” Purchase)',
207
+ icon: '๐Ÿ”—',
208
+ server: 'approvalsPurchase',
209
+ bridge: ['approvals', 'purchase'],
210
+ },
211
+ indent_purchase: {
212
+ label: 'Bridge: what the store lacks for an approved indent becomes a purchase request (Requests โ†” Purchase)',
213
+ icon: '๐Ÿ”—',
214
+ server: 'indentPurchase',
215
+ bridge: ['indent', 'purchase'],
216
+ },
135
217
  sale_stock: {
136
218
  label: 'Bridge: deliveries from sales orders (Sales โ†” Stockroom)',
137
219
  icon: '๐Ÿ”—',
@@ -156,11 +238,11 @@ export const APPS = {
156
238
  server: 'purchaseStockAccount',
157
239
  bridge: ['purchase', 'stock', 'accounting'],
158
240
  },
159
- mrp_account: {
241
+ production_account: {
160
242
  label: 'Bridge: products made valued at what they consumed plus their operations (Production โ†” Accounting)',
161
243
  icon: '๐Ÿ”—',
162
- server: 'mrpAccount',
163
- bridge: ['mrp', 'accounting'],
244
+ server: 'productionAccount',
245
+ bridge: ['production', 'accounting'],
164
246
  },
165
247
  maintenance_stock: {
166
248
  label: 'Bridge: spare parts on maintenance orders (Asset Care โ†” Stockroom)',
@@ -198,12 +280,36 @@ export const APPS = {
198
280
  server: 'websiteCrm',
199
281
  bridge: ['website', 'crm'],
200
282
  },
283
+ sale_crm: {
284
+ label: 'Bridge: quotations from deals, deals won and lost with their quotations (Pipeline โ†” Sales)',
285
+ icon: '๐Ÿ”—',
286
+ server: 'saleCrm',
287
+ bridge: ['sales', 'crm'],
288
+ },
289
+ website_sale_stock: {
290
+ label: 'Bridge: stock shown on the shop, carts kept within it (Shop โ†” Stockroom)',
291
+ icon: '๐Ÿ”—',
292
+ server: 'websiteSaleStock',
293
+ bridge: ['website_sale', 'stock'],
294
+ },
201
295
  pos_stock: {
202
296
  label: 'Bridge: a closed Counter session leaves stock as one delivery (Counter โ†” Stockroom)',
203
297
  icon: '๐Ÿ”—',
204
298
  server: 'posStock',
205
299
  bridge: ['pos', 'stock'],
206
300
  },
301
+ expense_account: {
302
+ label: 'Bridge: expense reports booked and reimbursed, advances paid out (Spend โ†” Accounting)',
303
+ icon: '๐Ÿ”—',
304
+ server: 'expenseAccount',
305
+ bridge: ['expense', 'accounting'],
306
+ },
307
+ payroll_account: {
308
+ label: 'Bridge: payroll runs booked and paid, corrections by their differences (Payroll โ†” Accounting)',
309
+ icon: '๐Ÿ”—',
310
+ server: 'payrollAccount',
311
+ bridge: ['payroll', 'accounting'],
312
+ },
207
313
  l10n_bd: {
208
314
  label: 'Bangladesh: chart of accounts, VAT and SD, VDS and TDS, BIN and TIN, Julyโ€“June year',
209
315
  icon: '๐Ÿ‡ง๐Ÿ‡ฉ',
@@ -212,6 +318,18 @@ export const APPS = {
212
318
  bridge: ['accounting'],
213
319
  country: 'BD',
214
320
  },
321
+ l10n_bd_payroll: {
322
+ label: 'Bangladesh payroll: standard and garments structures, festival bonuses, provident fund, tax at source',
323
+ icon: '๐Ÿ‡ง๐Ÿ‡ฉ',
324
+ server: 'l10nBdPayroll',
325
+ bridge: ['l10n_bd', 'payroll'],
326
+ },
327
+ l10n_bd_pos: {
328
+ label: 'Bangladesh at the counter: Mushak 6.3 receipts',
329
+ icon: '๐Ÿ‡ง๐Ÿ‡ฉ',
330
+ server: 'l10nBdPos',
331
+ bridge: ['l10n_bd', 'pos'],
332
+ },
215
333
  l10n_in: {
216
334
  label: 'India: GST (CGST / SGST / IGST), cess, reverse charge, GSTIN, HSN / SAC, TDS, Aprilโ€“March year',
217
335
  icon: '๐Ÿ‡ฎ๐Ÿ‡ณ',
@@ -1,4 +1,4 @@
1
- // GENERATED by `pnpm generate:models` (Shutroโ€™s generator). Do not edit. definitions-hash: f17b2929d6c50f64
1
+ // GENERATED by `pnpm generate:models` (Shutroโ€™s generator). Do not edit. definitions-hash: 75aa08c5d2561869
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: f17b2929d6c50f64
1
+ // GENERATED by `pnpm generate:models` (Shutroโ€™s generator). Do not edit. definitions-hash: 75aa08c5d2561869
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
 
@@ -433,6 +433,7 @@ export interface ResPartner {
433
433
  readonly parent: F.Many2one<'res.partner'>;
434
434
  readonly contacts: F.One2many<'res.partner', { readonly required: true }>;
435
435
  readonly email: F.Char;
436
+ readonly lang: F.Selection<'en' | 'bn'>;
436
437
  readonly phone: F.Char;
437
438
  readonly mobile: F.Char;
438
439
  readonly website: F.Char;
@@ -0,0 +1,2 @@
1
+ /** Bangla for the module's labels, keyed by their English text (RFC 0023 ยง3.1; `pnpm i18n:extract`). */
2
+ export declare const bn: Readonly<Record<string, string>>;