shutro-erp 0.3.6 → 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 (623) hide show
  1. package/dist/account_asset/.kosh/bindings.js +1 -1
  2. package/dist/account_asset/.kosh/schema.d.ts +530 -8
  3. package/dist/account_asset/i18n/bn.d.ts +2 -0
  4. package/dist/account_asset/i18n/bn.js +97 -0
  5. package/dist/account_asset/index.js +2 -0
  6. package/dist/account_asset/module.d.ts +4899 -1445
  7. package/dist/account_budget/.kosh/bindings.js +1 -1
  8. package/dist/account_budget/.kosh/schema.d.ts +1130 -56
  9. package/dist/account_budget/i18n/bn.d.ts +2 -0
  10. package/dist/account_budget/i18n/bn.js +63 -0
  11. package/dist/account_budget/index.js +14 -0
  12. package/dist/account_budget/module.d.ts +17958 -4532
  13. package/dist/account_budget/module.js +15 -0
  14. package/dist/account_portal/.kosh/bindings.js +1 -1
  15. package/dist/account_portal/.kosh/schema.d.ts +530 -8
  16. package/dist/account_portal/i18n/bn.d.ts +2 -0
  17. package/dist/account_portal/i18n/bn.js +6 -0
  18. package/dist/account_portal/index.js +2 -0
  19. package/dist/account_portal/module.d.ts +5167 -1693
  20. package/dist/accounting/.kosh/bindings.js +1 -1
  21. package/dist/accounting/.kosh/schema.d.ts +530 -8
  22. package/dist/accounting/closing.js +1 -0
  23. package/dist/accounting/fiscal.d.ts +578 -0
  24. package/dist/accounting/fiscal.js +401 -0
  25. package/dist/accounting/followups.d.ts +618 -0
  26. package/dist/accounting/followups.js +420 -0
  27. package/dist/accounting/i18n/bn.d.ts +2 -0
  28. package/dist/accounting/i18n/bn.js +425 -0
  29. package/dist/accounting/index.d.ts +2 -0
  30. package/dist/accounting/index.js +649 -2
  31. package/dist/accounting/module.d.ts +4998 -1451
  32. package/dist/accounting/module.js +124 -18
  33. package/dist/accounting/statements.d.ts +878 -0
  34. package/dist/accounting/statements.js +728 -0
  35. package/dist/accounting/web/BankReconcilePage.d.ts +9 -0
  36. package/dist/accounting/web/BankReconcilePage.js +138 -0
  37. package/dist/accounting/web/FollowupsPage.d.ts +8 -0
  38. package/dist/accounting/web/FollowupsPage.js +54 -0
  39. package/dist/accounting/web/PostingPreview.d.ts +8 -0
  40. package/dist/accounting/web/PostingPreview.js +26 -0
  41. package/dist/accounting/web/index.d.ts +3 -0
  42. package/dist/accounting/web/index.js +9 -0
  43. package/dist/accounting/web/messages.js +140 -0
  44. package/dist/approvals/.kosh/bindings.js +1 -1
  45. package/dist/approvals/.kosh/schema.d.ts +272 -4
  46. package/dist/approvals/demo.d.ts +7 -0
  47. package/dist/approvals/demo.js +41 -0
  48. package/dist/approvals/i18n/bn.d.ts +2 -0
  49. package/dist/approvals/i18n/bn.js +133 -0
  50. package/dist/approvals/index.d.ts +19 -1
  51. package/dist/approvals/index.js +477 -7
  52. package/dist/approvals/mails.d.ts +7 -2
  53. package/dist/approvals/mails.js +8 -3
  54. package/dist/approvals/module.d.ts +2930 -1
  55. package/dist/approvals/module.js +468 -7
  56. package/dist/approvals/web/Config.d.ts +12 -0
  57. package/dist/approvals/web/Config.js +60 -0
  58. package/dist/approvals/web/Matrix.d.ts +9 -0
  59. package/dist/approvals/web/Matrix.js +26 -0
  60. package/dist/approvals/web/index.d.ts +3 -1
  61. package/dist/approvals/web/index.js +8 -1
  62. package/dist/approvals/web/messages.js +92 -0
  63. package/dist/approvals_purchase/.kosh/bindings.js +15 -0
  64. package/dist/approvals_purchase/.kosh/schema.d.ts +1997 -0
  65. package/dist/approvals_purchase/i18n/bn.d.ts +2 -0
  66. package/dist/approvals_purchase/i18n/bn.js +5 -0
  67. package/dist/approvals_purchase/index.d.ts +3 -0
  68. package/dist/approvals_purchase/index.js +47 -0
  69. package/dist/approvals_purchase/module.d.ts +12670 -0
  70. package/dist/approvals_purchase/module.js +84 -0
  71. package/dist/attendance/.kosh/bindings.js +1 -1
  72. package/dist/attendance/.kosh/schema.d.ts +59 -1
  73. package/dist/attendance/i18n/bn.d.ts +2 -0
  74. package/dist/attendance/i18n/bn.js +147 -0
  75. package/dist/attendance/index.js +3 -1
  76. package/dist/attendance/module.d.ts +452 -8
  77. package/dist/automation/engine.js +1 -1
  78. package/dist/calendar/.kosh/bindings.js +1 -1
  79. package/dist/calendar/.kosh/schema.d.ts +2 -1
  80. package/dist/calendar/i18n/bn.d.ts +2 -0
  81. package/dist/calendar/i18n/bn.js +80 -0
  82. package/dist/calendar/index.js +77 -0
  83. package/dist/calendar/module.d.ts +26 -0
  84. package/dist/calendar/module.js +14 -4
  85. package/dist/cli/apps.js +25 -5
  86. package/dist/cli/init.js +14 -4
  87. package/dist/cli/templates.d.ts +1 -1
  88. package/dist/cli/templates.js +34 -5
  89. package/dist/contacts/.kosh/bindings.js +1 -1
  90. package/dist/contacts/.kosh/schema.d.ts +2 -1
  91. package/dist/contacts/i18n/bn.d.ts +2 -0
  92. package/dist/contacts/i18n/bn.js +67 -0
  93. package/dist/contacts/index.js +3 -0
  94. package/dist/contacts/module.d.ts +42 -0
  95. package/dist/contacts/module.js +6 -1
  96. package/dist/crm/.kosh/bindings.js +1 -1
  97. package/dist/crm/.kosh/schema.d.ts +2 -1
  98. package/dist/crm/i18n/bn.d.ts +2 -0
  99. package/dist/crm/i18n/bn.js +80 -0
  100. package/dist/crm/index.js +22 -0
  101. package/dist/crm/module.d.ts +20 -0
  102. package/dist/crm/module.js +4 -2
  103. package/dist/documents/.kosh/bindings.js +1 -1
  104. package/dist/documents/.kosh/schema.d.ts +2 -1
  105. package/dist/documents/i18n/bn.d.ts +2 -0
  106. package/dist/documents/i18n/bn.js +83 -0
  107. package/dist/documents/index.js +128 -1
  108. package/dist/documents/module.d.ts +20 -0
  109. package/dist/documents/module.js +1 -0
  110. package/dist/event/.kosh/bindings.js +1 -1
  111. package/dist/event/.kosh/schema.d.ts +2 -1
  112. package/dist/event/i18n/bn.d.ts +2 -0
  113. package/dist/event/i18n/bn.js +101 -0
  114. package/dist/event/index.js +66 -0
  115. package/dist/event/module.d.ts +20 -0
  116. package/dist/event/module.js +8 -1
  117. package/dist/event_account/.kosh/bindings.js +1 -1
  118. package/dist/event_account/.kosh/schema.d.ts +530 -8
  119. package/dist/event_account/i18n/bn.d.ts +2 -0
  120. package/dist/event_account/i18n/bn.js +5 -0
  121. package/dist/event_account/index.js +2 -0
  122. package/dist/event_account/module.d.ts +4905 -1431
  123. package/dist/expense/.kosh/bindings.js +1 -1
  124. package/dist/expense/.kosh/schema.d.ts +323 -2
  125. package/dist/expense/i18n/bn.d.ts +2 -0
  126. package/dist/expense/i18n/bn.js +155 -0
  127. package/dist/expense/index.js +8 -1
  128. package/dist/expense/module.d.ts +2715 -694
  129. package/dist/expense/module.js +3 -1
  130. package/dist/expense_account/.kosh/bindings.js +1 -1
  131. package/dist/expense_account/.kosh/schema.d.ts +587 -8
  132. package/dist/expense_account/i18n/bn.d.ts +2 -0
  133. package/dist/expense_account/i18n/bn.js +15 -0
  134. package/dist/expense_account/index.js +2 -0
  135. package/dist/expense_account/module.d.ts +8094 -2619
  136. package/dist/helpdesk/.kosh/bindings.js +1 -1
  137. package/dist/helpdesk/.kosh/schema.d.ts +2 -1
  138. package/dist/helpdesk/i18n/bn.d.ts +2 -0
  139. package/dist/helpdesk/i18n/bn.js +127 -0
  140. package/dist/helpdesk/index.js +2 -0
  141. package/dist/helpdesk/module.d.ts +20 -0
  142. package/dist/hr/.kosh/bindings.js +1 -1
  143. package/dist/hr/.kosh/schema.d.ts +59 -1
  144. package/dist/hr/demo.js +11 -1
  145. package/dist/hr/i18n/bn.d.ts +2 -0
  146. package/dist/hr/i18n/bn.js +126 -0
  147. package/dist/hr/index.d.ts +1 -1
  148. package/dist/hr/index.js +158 -12
  149. package/dist/hr/module.d.ts +932 -59
  150. package/dist/hr/module.js +114 -17
  151. package/dist/{mrp → indent}/.kosh/bindings.js +2 -2
  152. package/dist/indent/.kosh/schema.d.ts +2084 -0
  153. package/dist/indent/demo.d.ts +7 -0
  154. package/dist/indent/demo.js +48 -0
  155. package/dist/indent/i18n/bn.d.ts +2 -0
  156. package/dist/indent/i18n/bn.js +143 -0
  157. package/dist/indent/index.d.ts +3 -0
  158. package/dist/indent/index.js +450 -0
  159. package/dist/{mrp → indent}/module.d.ts +7164 -3075
  160. package/dist/indent/module.js +792 -0
  161. package/dist/indent_purchase/.kosh/bindings.d.ts +22 -0
  162. package/dist/indent_purchase/.kosh/bindings.js +15 -0
  163. package/dist/indent_purchase/.kosh/schema.d.ts +2710 -0
  164. package/dist/indent_purchase/i18n/bn.d.ts +2 -0
  165. package/dist/indent_purchase/i18n/bn.js +13 -0
  166. package/dist/indent_purchase/index.d.ts +3 -0
  167. package/dist/indent_purchase/index.js +61 -0
  168. package/dist/indent_purchase/module.d.ts +27950 -0
  169. package/dist/indent_purchase/module.js +163 -0
  170. package/dist/l10n_bd/.kosh/bindings.js +1 -1
  171. package/dist/l10n_bd/.kosh/schema.d.ts +530 -8
  172. package/dist/l10n_bd/i18n/bn.d.ts +2 -0
  173. package/dist/l10n_bd/i18n/bn.js +69 -0
  174. package/dist/l10n_bd/index.js +2 -0
  175. package/dist/l10n_bd/module.d.ts +5167 -1693
  176. package/dist/l10n_bd_payroll/.kosh/bindings.js +1 -1
  177. package/dist/l10n_bd_payroll/.kosh/schema.d.ts +587 -8
  178. package/dist/l10n_bd_payroll/i18n/bn.d.ts +2 -0
  179. package/dist/l10n_bd_payroll/i18n/bn.js +4 -0
  180. package/dist/l10n_bd_payroll/index.js +2 -0
  181. package/dist/l10n_bd_payroll/module.d.ts +5910 -1548
  182. package/dist/l10n_bd_pos/.kosh/bindings.d.ts +22 -0
  183. package/dist/{mrp_account → l10n_bd_pos}/.kosh/bindings.js +2 -2
  184. package/dist/{mrp_account → l10n_bd_pos}/.kosh/schema.d.ts +693 -651
  185. package/dist/l10n_bd_pos/i18n/bn.d.ts +2 -0
  186. package/dist/l10n_bd_pos/i18n/bn.js +32 -0
  187. package/dist/l10n_bd_pos/index.d.ts +3 -0
  188. package/dist/l10n_bd_pos/index.js +111 -0
  189. package/dist/{mrp_account → l10n_bd_pos}/module.d.ts +7402 -7647
  190. package/dist/l10n_bd_pos/module.js +43 -0
  191. package/dist/l10n_in/.kosh/bindings.js +1 -1
  192. package/dist/l10n_in/.kosh/schema.d.ts +530 -8
  193. package/dist/l10n_in/i18n/bn.d.ts +2 -0
  194. package/dist/l10n_in/i18n/bn.js +95 -0
  195. package/dist/l10n_in/index.js +2 -0
  196. package/dist/l10n_in/module.d.ts +6703 -1652
  197. package/dist/l10n_in/module.js +25 -5
  198. package/dist/l10n_in/web/GstSettings.js +2 -2
  199. package/dist/mail/inbound/handle.js +2 -4
  200. package/dist/mail/inbound/models.js +5 -3
  201. package/dist/mail/index.d.ts +12 -1
  202. package/dist/mail/index.js +139 -2
  203. package/dist/mail/send.d.ts +56 -0
  204. package/dist/mail/send.js +394 -0
  205. package/dist/mail/web/SendButton.d.ts +9 -0
  206. package/dist/mail/web/SendButton.js +71 -0
  207. package/dist/mail/web/SendSelected.d.ts +8 -0
  208. package/dist/mail/web/SendSelected.js +33 -0
  209. package/dist/mail/web/index.d.ts +2 -0
  210. package/dist/mail/web/index.js +6 -0
  211. package/dist/mail/web/messages.js +36 -0
  212. package/dist/maintenance/.kosh/bindings.js +1 -1
  213. package/dist/maintenance/.kosh/schema.d.ts +2 -1
  214. package/dist/maintenance/i18n/bn.d.ts +2 -0
  215. package/dist/maintenance/i18n/bn.js +132 -0
  216. package/dist/maintenance/index.js +85 -0
  217. package/dist/maintenance/module.d.ts +25 -0
  218. package/dist/maintenance/module.js +27 -9
  219. package/dist/maintenance_stock/.kosh/bindings.js +1 -1
  220. package/dist/maintenance_stock/.kosh/schema.d.ts +298 -2
  221. package/dist/maintenance_stock/i18n/bn.d.ts +2 -0
  222. package/dist/maintenance_stock/i18n/bn.js +21 -0
  223. package/dist/maintenance_stock/index.js +2 -0
  224. package/dist/maintenance_stock/module.d.ts +5302 -1256
  225. package/dist/maintenance_stock/module.js +1 -0
  226. package/dist/modules-sdk/apps.d.ts +10 -0
  227. package/dist/modules-sdk/apps.js +32 -0
  228. package/dist/modules-sdk/index.d.ts +1 -1
  229. package/dist/modules-sdk/manifest.d.ts +68 -2
  230. package/dist/payment/.kosh/bindings.js +1 -1
  231. package/dist/payment/.kosh/schema.d.ts +530 -8
  232. package/dist/payment/i18n/bn.d.ts +2 -0
  233. package/dist/payment/i18n/bn.js +59 -0
  234. package/dist/payment/index.js +85 -0
  235. package/dist/payment/module.d.ts +5134 -1660
  236. package/dist/payment/module.js +17 -3
  237. package/dist/payment/settle.js +1 -0
  238. package/dist/payroll/.kosh/bindings.js +1 -1
  239. package/dist/payroll/.kosh/schema.d.ts +59 -1
  240. package/dist/payroll/i18n/bn.d.ts +2 -0
  241. package/dist/payroll/i18n/bn.js +206 -0
  242. package/dist/payroll/index.js +2 -0
  243. package/dist/payroll/module.d.ts +936 -48
  244. package/dist/payroll_account/.kosh/bindings.js +1 -1
  245. package/dist/payroll_account/.kosh/schema.d.ts +587 -8
  246. package/dist/payroll_account/i18n/bn.d.ts +2 -0
  247. package/dist/payroll_account/i18n/bn.js +10 -0
  248. package/dist/payroll_account/index.js +2 -0
  249. package/dist/payroll_account/module.d.ts +7534 -3192
  250. package/dist/permissions/approvals.d.ts +97 -4
  251. package/dist/permissions/approvals.js +780 -31
  252. package/dist/permissions/index.d.ts +1 -1
  253. package/dist/permissions/index.js +2 -2
  254. package/dist/permissions/models.js +177 -5
  255. package/dist/permissions/routes.d.ts +3 -0
  256. package/dist/permissions/routes.js +36 -2
  257. package/dist/permissions/web/ApprovalPanel.js +43 -5
  258. package/dist/permissions/web/messages.js +52 -0
  259. package/dist/portal/.kosh/bindings.js +1 -1
  260. package/dist/portal/.kosh/schema.d.ts +2 -1
  261. package/dist/portal/documents.d.ts +3 -0
  262. package/dist/portal/documents.js +21 -1
  263. package/dist/portal/i18n/bn.d.ts +2 -0
  264. package/dist/portal/i18n/bn.js +33 -0
  265. package/dist/portal/index.js +2 -0
  266. package/dist/portal/module.d.ts +20 -0
  267. package/dist/portal/routes-documents.js +76 -0
  268. package/dist/pos/.kosh/bindings.js +1 -1
  269. package/dist/pos/.kosh/schema.d.ts +531 -8
  270. package/dist/pos/i18n/bn.d.ts +2 -0
  271. package/dist/pos/i18n/bn.js +133 -0
  272. package/dist/pos/index.js +83 -1
  273. package/dist/pos/module.d.ts +6888 -1777
  274. package/dist/pos/module.js +49 -5
  275. package/dist/pos/routes.js +80 -7
  276. package/dist/pos/web/Register.js +2 -5
  277. package/dist/pos_stock/.kosh/bindings.js +1 -1
  278. package/dist/pos_stock/.kosh/schema.d.ts +626 -9
  279. package/dist/pos_stock/i18n/bn.d.ts +2 -0
  280. package/dist/pos_stock/i18n/bn.js +6 -0
  281. package/dist/pos_stock/index.js +2 -0
  282. package/dist/pos_stock/module.d.ts +10798 -3276
  283. package/dist/product/.kosh/bindings.js +1 -1
  284. package/dist/product/.kosh/schema.d.ts +202 -1
  285. package/dist/product/i18n/bn.d.ts +2 -0
  286. package/dist/product/i18n/bn.js +175 -0
  287. package/dist/product/index.d.ts +1 -0
  288. package/dist/product/index.js +288 -1
  289. package/dist/product/module.d.ts +1725 -0
  290. package/dist/product/module.js +66 -6
  291. package/dist/product/pricelist.d.ts +575 -0
  292. package/dist/product/pricelist.js +257 -0
  293. package/dist/product/variants.d.ts +908 -0
  294. package/dist/product/variants.js +251 -0
  295. package/dist/production/.kosh/bindings.d.ts +22 -0
  296. package/dist/production/.kosh/bindings.js +15 -0
  297. package/dist/production/.kosh/schema.d.ts +2345 -0
  298. package/dist/{mrp → production}/demo.d.ts +1 -1
  299. package/dist/{mrp → production}/demo.js +5 -5
  300. package/dist/production/depth.d.ts +790 -0
  301. package/dist/production/depth.js +262 -0
  302. package/dist/production/i18n/bn.d.ts +2 -0
  303. package/dist/production/i18n/bn.js +350 -0
  304. package/dist/production/index.d.ts +6 -0
  305. package/dist/production/index.js +1256 -0
  306. package/dist/production/module.d.ts +17327 -0
  307. package/dist/production/module.js +1333 -0
  308. package/dist/production/plan.d.ts +921 -0
  309. package/dist/production/plan.js +511 -0
  310. package/dist/production/schedule.d.ts +656 -0
  311. package/dist/production/schedule.js +309 -0
  312. package/dist/production_account/.kosh/bindings.d.ts +22 -0
  313. package/dist/production_account/.kosh/bindings.js +15 -0
  314. package/dist/production_account/.kosh/schema.d.ts +3496 -0
  315. package/dist/production_account/i18n/bn.d.ts +2 -0
  316. package/dist/production_account/i18n/bn.js +93 -0
  317. package/dist/production_account/index.d.ts +4 -0
  318. package/dist/production_account/index.js +246 -0
  319. package/dist/production_account/module.d.ts +1192 -0
  320. package/dist/{mrp_account → production_account}/module.js +72 -18
  321. package/dist/production_account/overhead.d.ts +1195 -0
  322. package/dist/production_account/overhead.js +554 -0
  323. package/dist/project/.kosh/bindings.js +1 -1
  324. package/dist/project/.kosh/schema.d.ts +65 -2
  325. package/dist/project/i18n/bn.d.ts +2 -0
  326. package/dist/project/i18n/bn.js +383 -0
  327. package/dist/project/index.js +123 -0
  328. package/dist/project/module.d.ts +20 -0
  329. package/dist/project/module.js +73 -14
  330. package/dist/project_account/.kosh/bindings.js +1 -1
  331. package/dist/project_account/.kosh/schema.d.ts +530 -8
  332. package/dist/project_account/i18n/bn.d.ts +2 -0
  333. package/dist/project_account/i18n/bn.js +6 -0
  334. package/dist/project_account/index.js +2 -0
  335. package/dist/project_account/module.d.ts +4926 -1452
  336. package/dist/project_portal/.kosh/bindings.js +1 -1
  337. package/dist/project_portal/.kosh/schema.d.ts +65 -2
  338. package/dist/project_portal/i18n/bn.d.ts +2 -0
  339. package/dist/project_portal/i18n/bn.js +6 -0
  340. package/dist/project_portal/index.js +2 -0
  341. package/dist/project_portal/module.d.ts +40 -0
  342. package/dist/project_purchase/.kosh/bindings.js +1 -1
  343. package/dist/project_purchase/.kosh/schema.d.ts +1126 -53
  344. package/dist/project_purchase/i18n/bn.d.ts +2 -0
  345. package/dist/project_purchase/i18n/bn.js +4 -0
  346. package/dist/project_purchase/index.js +2 -0
  347. package/dist/project_purchase/module.d.ts +17912 -4446
  348. package/dist/purchase/.kosh/bindings.js +1 -1
  349. package/dist/purchase/.kosh/schema.d.ts +813 -3
  350. package/dist/purchase/comparison.d.ts +993 -0
  351. package/dist/purchase/comparison.js +415 -0
  352. package/dist/purchase/extras.d.ts +1509 -0
  353. package/dist/purchase/extras.js +445 -0
  354. package/dist/purchase/i18n/bn.d.ts +2 -0
  355. package/dist/purchase/i18n/bn.js +413 -0
  356. package/dist/purchase/index.d.ts +5 -0
  357. package/dist/purchase/index.js +1280 -4
  358. package/dist/purchase/module.d.ts +7139 -398
  359. package/dist/purchase/module.js +295 -11
  360. package/dist/purchase/request.d.ts +696 -0
  361. package/dist/purchase/request.js +446 -0
  362. package/dist/purchase/tender.d.ts +1208 -0
  363. package/dist/purchase/tender.js +507 -0
  364. package/dist/purchase/vendorprice.d.ts +340 -0
  365. package/dist/purchase/vendorprice.js +153 -0
  366. package/dist/purchase_account/.kosh/bindings.js +1 -1
  367. package/dist/purchase_account/.kosh/schema.d.ts +1130 -57
  368. package/dist/purchase_account/i18n/bn.d.ts +2 -0
  369. package/dist/purchase_account/i18n/bn.js +22 -0
  370. package/dist/purchase_account/index.js +19 -0
  371. package/dist/purchase_account/module.d.ts +12276 -2247
  372. package/dist/purchase_account/module.js +241 -9
  373. package/dist/purchase_portal/.kosh/bindings.js +1 -1
  374. package/dist/purchase_portal/.kosh/schema.d.ts +813 -3
  375. package/dist/purchase_portal/i18n/bn.d.ts +2 -0
  376. package/dist/purchase_portal/i18n/bn.js +5 -0
  377. package/dist/purchase_portal/index.js +2 -0
  378. package/dist/purchase_portal/module.d.ts +6849 -353
  379. package/dist/purchase_stock/.kosh/bindings.js +1 -1
  380. package/dist/purchase_stock/.kosh/schema.d.ts +910 -4
  381. package/dist/purchase_stock/i18n/bn.d.ts +2 -0
  382. package/dist/purchase_stock/i18n/bn.js +19 -0
  383. package/dist/purchase_stock/index.d.ts +1 -1
  384. package/dist/purchase_stock/index.js +29 -0
  385. package/dist/purchase_stock/module.d.ts +12410 -1864
  386. package/dist/purchase_stock/module.js +81 -9
  387. package/dist/purchase_stock/scorecard.d.ts +22 -0
  388. package/dist/purchase_stock/scorecard.js +77 -0
  389. package/dist/purchase_stock/web/Scorecard.d.ts +7 -0
  390. package/dist/purchase_stock/web/Scorecard.js +22 -0
  391. package/dist/purchase_stock/web/index.d.ts +11 -0
  392. package/dist/purchase_stock/web/index.js +16 -0
  393. package/dist/purchase_stock/web/messages.d.ts +2 -0
  394. package/dist/purchase_stock/web/messages.js +27 -0
  395. package/dist/purchase_stock_account/.kosh/bindings.js +1 -1
  396. package/dist/purchase_stock_account/.kosh/schema.d.ts +1286 -58
  397. package/dist/purchase_stock_account/i18n/bn.d.ts +2 -0
  398. package/dist/purchase_stock_account/i18n/bn.js +8 -0
  399. package/dist/purchase_stock_account/index.js +18 -0
  400. package/dist/purchase_stock_account/module.d.ts +7 -37995
  401. package/dist/purchase_stock_account/module.js +24 -3
  402. package/dist/recruitment/.kosh/bindings.js +1 -1
  403. package/dist/recruitment/.kosh/schema.d.ts +59 -1
  404. package/dist/recruitment/i18n/bn.d.ts +2 -0
  405. package/dist/recruitment/i18n/bn.js +93 -0
  406. package/dist/recruitment/index.js +64 -0
  407. package/dist/recruitment/module.d.ts +458 -8
  408. package/dist/recruitment/module.js +11 -3
  409. package/dist/reporting/documents.d.ts +5 -0
  410. package/dist/reporting/documents.js +11 -1
  411. package/dist/reporting/index.d.ts +1 -1
  412. package/dist/reporting/index.js +1 -1
  413. package/dist/reporting/web/CalendarView.d.ts +18 -5
  414. package/dist/reporting/web/CalendarView.js +163 -29
  415. package/dist/reporting/web/messages.js +18 -0
  416. package/dist/sale_account/.kosh/bindings.js +1 -1
  417. package/dist/sale_account/.kosh/schema.d.ts +642 -16
  418. package/dist/sale_account/i18n/bn.d.ts +2 -0
  419. package/dist/sale_account/i18n/bn.js +48 -0
  420. package/dist/sale_account/index.d.ts +1 -1
  421. package/dist/sale_account/index.js +102 -4
  422. package/dist/sale_account/module.d.ts +8254 -2212
  423. package/dist/sale_account/module.js +535 -46
  424. package/dist/sale_crm/.kosh/bindings.d.ts +22 -0
  425. package/dist/sale_crm/.kosh/bindings.js +15 -0
  426. package/dist/{mrp → sale_crm}/.kosh/schema.d.ts +389 -567
  427. package/dist/sale_crm/i18n/bn.d.ts +2 -0
  428. package/dist/sale_crm/i18n/bn.js +9 -0
  429. package/dist/sale_crm/index.d.ts +7 -0
  430. package/dist/sale_crm/index.js +104 -0
  431. package/dist/sale_crm/module.d.ts +5609 -0
  432. package/dist/sale_crm/module.js +73 -0
  433. package/dist/sale_portal/.kosh/bindings.js +1 -1
  434. package/dist/sale_portal/.kosh/schema.d.ts +291 -4
  435. package/dist/sale_portal/i18n/bn.d.ts +2 -0
  436. package/dist/sale_portal/i18n/bn.js +7 -0
  437. package/dist/sale_portal/index.js +10 -0
  438. package/dist/sale_portal/module.d.ts +2564 -294
  439. package/dist/sale_project/.kosh/bindings.js +1 -1
  440. package/dist/sale_project/.kosh/schema.d.ts +354 -5
  441. package/dist/sale_project/i18n/bn.d.ts +2 -0
  442. package/dist/sale_project/i18n/bn.js +12 -0
  443. package/dist/sale_project/index.js +2 -0
  444. package/dist/sale_project/module.d.ts +6249 -2402
  445. package/dist/sale_stock/.kosh/bindings.js +1 -1
  446. package/dist/sale_stock/.kosh/schema.d.ts +387 -5
  447. package/dist/sale_stock/i18n/bn.d.ts +2 -0
  448. package/dist/sale_stock/i18n/bn.js +15 -0
  449. package/dist/sale_stock/index.js +2 -0
  450. package/dist/sale_stock/module.d.ts +8057 -1759
  451. package/dist/sale_stock/module.js +20 -3
  452. package/dist/sales/.kosh/bindings.js +1 -1
  453. package/dist/sales/.kosh/schema.d.ts +291 -4
  454. package/dist/sales/i18n/bn.d.ts +2 -0
  455. package/dist/sales/i18n/bn.js +128 -0
  456. package/dist/sales/index.js +120 -5
  457. package/dist/sales/module.d.ts +3567 -633
  458. package/dist/sales/module.js +306 -11
  459. package/dist/server/api/duplicate.d.ts +14 -0
  460. package/dist/server/api/duplicate.js +75 -0
  461. package/dist/server/api/explain.d.ts +70 -0
  462. package/dist/server/api/explain.js +111 -0
  463. package/dist/server/api/metadata.d.ts +2 -0
  464. package/dist/server/api/metadata.js +9 -0
  465. package/dist/server/api/openapi.js +15 -0
  466. package/dist/server/api/rest.d.ts +1 -0
  467. package/dist/server/api/rest.js +76 -12
  468. package/dist/server/api/views.js +1 -1
  469. package/dist/server/apps.d.ts +16 -1
  470. package/dist/server/apps.js +164 -2
  471. package/dist/server/auth/base.js +2 -0
  472. package/dist/server/auth/service.d.ts +8 -0
  473. package/dist/server/auth/service.js +19 -0
  474. package/dist/server/events.d.ts +13 -0
  475. package/dist/server/events.js +22 -0
  476. package/dist/server/i18n.d.ts +27 -0
  477. package/dist/server/i18n.js +143 -0
  478. package/dist/server/index.d.ts +2 -0
  479. package/dist/server/index.js +2 -0
  480. package/dist/server/server.js +6 -0
  481. package/dist/settings/company.d.ts +3 -1
  482. package/dist/settings/company.js +26 -5
  483. package/dist/settings/routes.d.ts +10 -0
  484. package/dist/settings/routes.js +19 -3
  485. package/dist/settings/web/AppsPage.d.ts +3 -2
  486. package/dist/settings/web/AppsPage.js +26 -8
  487. package/dist/settings/web/CompaniesPage.js +91 -6
  488. package/dist/settings/web/messages.js +64 -0
  489. package/dist/sign/.kosh/bindings.js +1 -1
  490. package/dist/sign/.kosh/schema.d.ts +2 -1
  491. package/dist/sign/i18n/bn.d.ts +2 -0
  492. package/dist/sign/i18n/bn.js +97 -0
  493. package/dist/sign/index.d.ts +15 -0
  494. package/dist/sign/index.js +129 -1
  495. package/dist/sign/module.d.ts +40 -0
  496. package/dist/sign/module.js +11 -2
  497. package/dist/stock/.kosh/bindings.js +1 -1
  498. package/dist/stock/.kosh/schema.d.ts +298 -2
  499. package/dist/stock/i18n/bn.d.ts +2 -0
  500. package/dist/stock/i18n/bn.js +311 -0
  501. package/dist/stock/index.d.ts +3 -1
  502. package/dist/stock/index.js +442 -3
  503. package/dist/stock/ledger.d.ts +78 -0
  504. package/dist/stock/ledger.js +582 -0
  505. package/dist/stock/module.d.ts +5280 -2044
  506. package/dist/stock/module.js +222 -23
  507. package/dist/stock/replenish.js +16 -1
  508. package/dist/stock/returns.d.ts +157 -0
  509. package/dist/stock/returns.js +163 -0
  510. package/dist/stock/web/Ledger.d.ts +9 -0
  511. package/dist/stock/web/Ledger.js +108 -0
  512. package/dist/stock/web/Operations.d.ts +8 -0
  513. package/dist/stock/web/Operations.js +33 -0
  514. package/dist/stock/web/ReturnButton.d.ts +7 -0
  515. package/dist/stock/web/ReturnButton.js +62 -0
  516. package/dist/stock/web/index.d.ts +3 -0
  517. package/dist/stock/web/index.js +9 -0
  518. package/dist/stock/web/messages.js +154 -0
  519. package/dist/stock_account/.kosh/bindings.js +1 -1
  520. package/dist/stock_account/.kosh/schema.d.ts +682 -9
  521. package/dist/stock_account/i18n/bn.d.ts +2 -0
  522. package/dist/stock_account/i18n/bn.js +73 -0
  523. package/dist/stock_account/index.d.ts +1 -0
  524. package/dist/stock_account/index.js +131 -3
  525. package/dist/stock_account/landed.d.ts +429 -0
  526. package/dist/stock_account/landed.js +335 -0
  527. package/dist/stock_account/module.d.ts +11247 -3363
  528. package/dist/stock_account/module.js +135 -6
  529. package/dist/stock_account/web/LandedPreview.d.ts +7 -0
  530. package/dist/stock_account/web/LandedPreview.js +23 -0
  531. package/dist/stock_account/web/index.d.ts +11 -0
  532. package/dist/stock_account/web/index.js +16 -0
  533. package/dist/stock_account/web/messages.d.ts +2 -0
  534. package/dist/stock_account/web/messages.js +27 -0
  535. package/dist/todo/i18n/bn.d.ts +2 -0
  536. package/dist/todo/i18n/bn.js +66 -0
  537. package/dist/todo/index.js +59 -0
  538. package/dist/todo/module.d.ts +5 -0
  539. package/dist/todo/module.js +5 -3
  540. package/dist/trade_finance/.kosh/bindings.js +1 -1
  541. package/dist/trade_finance/.kosh/schema.d.ts +2 -1
  542. package/dist/trade_finance/i18n/bn.d.ts +2 -0
  543. package/dist/trade_finance/i18n/bn.js +162 -0
  544. package/dist/trade_finance/index.js +93 -0
  545. package/dist/trade_finance/module.d.ts +26 -0
  546. package/dist/trade_finance/module.js +27 -8
  547. package/dist/trade_finance_account/.kosh/bindings.js +1 -1
  548. package/dist/trade_finance_account/.kosh/schema.d.ts +530 -8
  549. package/dist/trade_finance_account/i18n/bn.d.ts +2 -0
  550. package/dist/trade_finance_account/i18n/bn.js +27 -0
  551. package/dist/trade_finance_account/index.js +2 -0
  552. package/dist/trade_finance_account/module.d.ts +4906 -1432
  553. package/dist/trade_finance_account/module.js +1 -0
  554. package/dist/trade_finance_purchase/.kosh/bindings.js +1 -1
  555. package/dist/trade_finance_purchase/.kosh/schema.d.ts +813 -3
  556. package/dist/trade_finance_purchase/i18n/bn.d.ts +2 -0
  557. package/dist/trade_finance_purchase/i18n/bn.js +6 -0
  558. package/dist/trade_finance_purchase/index.js +2 -0
  559. package/dist/trade_finance_purchase/module.d.ts +6909 -413
  560. package/dist/trade_finance_sale/.kosh/bindings.js +1 -1
  561. package/dist/trade_finance_sale/.kosh/schema.d.ts +291 -4
  562. package/dist/trade_finance_sale/i18n/bn.d.ts +2 -0
  563. package/dist/trade_finance_sale/i18n/bn.js +6 -0
  564. package/dist/trade_finance_sale/index.js +2 -0
  565. package/dist/trade_finance_sale/module.d.ts +2601 -331
  566. package/dist/ui/api.d.ts +2 -0
  567. package/dist/ui/app.d.ts +9 -0
  568. package/dist/ui/app.js +24 -4
  569. package/dist/ui/components/AppIcon.js +2 -2
  570. package/dist/ui/components/Explain.d.ts +69 -0
  571. package/dist/ui/components/Explain.js +62 -0
  572. package/dist/ui/context.d.ts +8 -1
  573. package/dist/ui/context.js +34 -1
  574. package/dist/ui/i18n/messages.d.ts +36 -0
  575. package/dist/ui/i18n/messages.js +72 -0
  576. package/dist/ui/index.d.ts +2 -1
  577. package/dist/ui/index.js +1 -0
  578. package/dist/ui/registry.d.ts +14 -0
  579. package/dist/ui/registry.js +10 -0
  580. package/dist/ui/views/FormView.d.ts +6 -0
  581. package/dist/ui/views/FormView.js +47 -10
  582. package/dist/ui/views/ListView.d.ts +8 -0
  583. package/dist/ui/views/ListView.js +10 -3
  584. package/dist/ui/views/StatsRow.js +2 -1
  585. package/dist/views/extend.js +12 -0
  586. package/dist/views/types.d.ts +13 -2
  587. package/dist/views/validate.js +8 -1
  588. package/dist/website/.kosh/bindings.js +1 -1
  589. package/dist/website/.kosh/schema.d.ts +2 -1
  590. package/dist/website/i18n/bn.d.ts +2 -0
  591. package/dist/website/i18n/bn.js +113 -0
  592. package/dist/website/index.js +36 -0
  593. package/dist/website/module.d.ts +20 -0
  594. package/dist/website/module.js +29 -5
  595. package/dist/website_crm/.kosh/bindings.js +1 -1
  596. package/dist/website_crm/.kosh/schema.d.ts +2 -1
  597. package/dist/website_crm/i18n/bn.d.ts +2 -0
  598. package/dist/website_crm/i18n/bn.js +5 -0
  599. package/dist/website_crm/index.js +2 -0
  600. package/dist/website_crm/module.d.ts +40 -0
  601. package/dist/website_sale/.kosh/bindings.js +1 -1
  602. package/dist/website_sale/.kosh/schema.d.ts +642 -17
  603. package/dist/website_sale/i18n/bn.d.ts +2 -0
  604. package/dist/website_sale/i18n/bn.js +132 -0
  605. package/dist/website_sale/index.js +83 -1
  606. package/dist/website_sale/module.d.ts +18705 -5550
  607. package/dist/website_sale/module.js +32 -10
  608. package/dist/website_sale/shop.js +22 -9
  609. package/dist/website_sale_stock/.kosh/bindings.js +1 -1
  610. package/dist/website_sale_stock/.kosh/schema.d.ts +737 -18
  611. package/dist/website_sale_stock/i18n/bn.d.ts +2 -0
  612. package/dist/website_sale_stock/i18n/bn.js +4 -0
  613. package/dist/website_sale_stock/index.js +2 -0
  614. package/dist/website_sale_stock/module.d.ts +10 -24997
  615. package/dist/website_sale_stock/module.js +7 -3
  616. package/package.json +36 -8
  617. package/dist/mrp/index.d.ts +0 -3
  618. package/dist/mrp/index.js +0 -393
  619. package/dist/mrp/module.js +0 -757
  620. package/dist/mrp_account/index.d.ts +0 -3
  621. package/dist/mrp_account/index.js +0 -22
  622. /package/dist/{mrp → approvals_purchase}/.kosh/bindings.d.ts +0 -0
  623. /package/dist/{mrp_account → indent}/.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')
@@ -553,6 +553,8 @@ async function modulesFor(apps) {
553
553
  modules.push((await import('../pos/index.js')).pos);
554
554
  if (app === 'expense')
555
555
  modules.push((await import('../expense/index.js')).expense);
556
+ if (app === 'indent')
557
+ modules.push((await import('../indent/index.js')).indent);
556
558
  if (app === 'attendance')
557
559
  modules.push((await import('../attendance/index.js')).attendance);
558
560
  if (app === 'payroll')
@@ -581,6 +583,10 @@ async function modulesFor(apps) {
581
583
  modules.push((await import('../project_account/index.js')).projectAccount);
582
584
  if (app === 'project_purchase')
583
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);
584
590
  if (app === 'sale_stock')
585
591
  modules.push((await import('../sale_stock/index.js')).saleStock);
586
592
  if (app === 'purchase_stock')
@@ -589,8 +595,8 @@ async function modulesFor(apps) {
589
595
  modules.push((await import('../stock_account/index.js')).stockAccount);
590
596
  if (app === 'purchase_stock_account')
591
597
  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);
598
+ if (app === 'production_account')
599
+ modules.push((await import('../production_account/index.js')).productionAccount);
594
600
  if (app === 'maintenance_stock')
595
601
  modules.push((await import('../maintenance_stock/index.js')).maintenanceStock);
596
602
  if (app === 'trade_finance_account')
@@ -603,6 +609,8 @@ async function modulesFor(apps) {
603
609
  modules.push((await import('../event_account/index.js')).eventAccount);
604
610
  if (app === 'website_crm')
605
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);
606
614
  if (app === 'website_sale_stock')
607
615
  modules.push((await import('../website_sale_stock/index.js')).websiteSaleStock);
608
616
  if (app === 'pos_stock')
@@ -613,6 +621,8 @@ async function modulesFor(apps) {
613
621
  modules.push((await import('../payroll_account/index.js')).payrollAccount);
614
622
  if (app === 'l10n_bd_payroll')
615
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);
616
626
  if (app === 'l10n_bd')
617
627
  modules.push((await import('../l10n_bd/index.js')).l10nBd);
618
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' | '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';
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',
@@ -131,6 +131,11 @@ export const APPS = {
131
131
  icon: '💳',
132
132
  server: 'expense',
133
133
  },
134
+ indent: {
135
+ label: 'Requests: indents to the store, approved, issued by transfers and acknowledged',
136
+ icon: '📋',
137
+ server: 'indent',
138
+ },
134
139
  attendance: {
135
140
  label: 'Attendance: shifts, check-in by phone, kiosk or device, overtime',
136
141
  icon: '⏱️',
@@ -197,6 +202,18 @@ export const APPS = {
197
202
  server: 'projectPurchase',
198
203
  bridge: ['project', 'purchase', 'accounting'],
199
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
+ },
200
217
  sale_stock: {
201
218
  label: 'Bridge: deliveries from sales orders (Sales ↔ Stockroom)',
202
219
  icon: '🔗',
@@ -221,11 +238,11 @@ export const APPS = {
221
238
  server: 'purchaseStockAccount',
222
239
  bridge: ['purchase', 'stock', 'accounting'],
223
240
  },
224
- mrp_account: {
241
+ production_account: {
225
242
  label: 'Bridge: products made valued at what they consumed plus their operations (Production ↔ Accounting)',
226
243
  icon: '🔗',
227
- server: 'mrpAccount',
228
- bridge: ['mrp', 'accounting'],
244
+ server: 'productionAccount',
245
+ bridge: ['production', 'accounting'],
229
246
  },
230
247
  maintenance_stock: {
231
248
  label: 'Bridge: spare parts on maintenance orders (Asset Care ↔ Stockroom)',
@@ -263,6 +280,12 @@ export const APPS = {
263
280
  server: 'websiteCrm',
264
281
  bridge: ['website', 'crm'],
265
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
+ },
266
289
  website_sale_stock: {
267
290
  label: 'Bridge: stock shown on the shop, carts kept within it (Shop ↔ Stockroom)',
268
291
  icon: '🔗',
@@ -301,6 +324,12 @@ export const APPS = {
301
324
  server: 'l10nBdPayroll',
302
325
  bridge: ['l10n_bd', 'payroll'],
303
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
+ },
304
333
  l10n_in: {
305
334
  label: 'India: GST (CGST / SGST / IGST), cess, reverse charge, GSTIN, HSN / SAC, TDS, April–March year',
306
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>>;
@@ -0,0 +1,67 @@
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 customer cannot be saved without a tax ID (BIN, TIN, GSTIN…).': 'কর শনাক্তকরণ নম্বর (BIN, TIN, GSTIN…) ছাড়া গ্রাহক সংরক্ষণ করা যায় না।',
4
+ 'A tag with this name exists.': 'এই নামে একটি ট্যাগ আগে থেকেই আছে।',
5
+ Active: 'সক্রিয়',
6
+ Address: 'ঠিকানা',
7
+ 'An email address must look like name@example.com.': 'ইমেইল ঠিকানা name@example.com-এর মতো হতে হবে।',
8
+ 'Another contact has this email address (App settings › Contacts: one contact per email).': 'অন্য একটি যোগাযোগের এই ইমেইল ঠিকানা আছে (অ্যাপ সেটিংস › যোগাযোগ: প্রতি ইমেইলে একটি যোগাযোগ)।',
9
+ 'By country': 'দেশ অনুযায়ী',
10
+ City: 'শহর',
11
+ Companies: 'প্রতিষ্ঠান',
12
+ 'Companies by city': 'শহরভিত্তিক প্রতিষ্ঠান',
13
+ Company: 'প্রতিষ্ঠান',
14
+ Contact: 'যোগাযোগ',
15
+ 'Contact tag': 'যোগাযোগের ট্যাগ',
16
+ Contacts: 'যোগাযোগ',
17
+ 'Contacts manager': 'যোগাযোগ ব্যবস্থাপক',
18
+ 'Contacts user': 'যোগাযোগ ব্যবহারকারী',
19
+ Country: 'দেশ',
20
+ 'Created At': 'তৈরির সময়',
21
+ 'Created By': 'তৈরি করেছেন',
22
+ Currency: 'মুদ্রা',
23
+ Customer: 'গ্রাহক',
24
+ Customers: 'গ্রাহক',
25
+ 'Customers need a tax ID': 'গ্রাহকের কর শনাক্তকরণ নম্বর লাগবে',
26
+ 'Customers need a tax ID in this company (App settings › Contacts).': 'এই প্রতিষ্ঠানে গ্রাহকের কর শনাক্তকরণ নম্বর লাগবে (অ্যাপ সেটিংস › যোগাযোগ)।',
27
+ 'Customers, vendors and the people who work there': 'গ্রাহক, সরবরাহকারী এবং সেখানে কর্মরত ব্যক্তিরা',
28
+ 'Decimal degrees, e.g. 23.8103 for Dhaka': 'দশমিক ডিগ্রি, যেমন ঢাকার জন্য 23.8103',
29
+ 'Decimal degrees, e.g. 90.4125 for Dhaka': 'দশমিক ডিগ্রি, যেমন ঢাকার জন্য 90.4125',
30
+ 'Decimal degrees; the Map view shows contacts that have them.': 'দশমিক ডিগ্রি; মানচিত্র ভিউতে এগুলো থাকা যোগাযোগগুলো দেখা যায়।',
31
+ 'Display Name': 'প্রদর্শিত নাম',
32
+ Email: 'ইমেইল',
33
+ English: 'ইংরেজি',
34
+ ID: 'আইডি',
35
+ 'Is a company': 'প্রতিষ্ঠান কি না',
36
+ Language: 'ভাষা',
37
+ Latitude: 'অক্ষাংশ',
38
+ Longitude: 'দ্রাঘিমাংশ',
39
+ Manager: 'ব্যবস্থাপক',
40
+ Mobile: 'মোবাইল',
41
+ Name: 'নাম',
42
+ 'New contacts': 'নতুন যোগাযোগ',
43
+ 'New this month': 'এ মাসে নতুন',
44
+ Notes: 'নোট',
45
+ 'On the map': 'মানচিত্রে',
46
+ 'One contact per email address': 'প্রতি ইমেইল ঠিকানায় একটি যোগাযোগ',
47
+ Overview: 'সারসংক্ষেপ',
48
+ People: 'ব্যক্তি',
49
+ Phone: 'ফোন',
50
+ Photo: 'ছবি',
51
+ 'Postal code': 'পোস্ট কোড',
52
+ Sales: 'বিক্রয়',
53
+ 'Sales & purchase': 'বিক্রয় ও ক্রয়',
54
+ 'State / province': 'রাজ্য / প্রদেশ',
55
+ Street: 'রাস্তা',
56
+ Tags: 'ট্যাগ',
57
+ 'Tax ID': 'কর শনাক্তকরণ নম্বর',
58
+ 'The language documents and emails are sent in; empty: the sender’s.': 'যে ভাষায় নথি ও ইমেইল পাঠানো হয়; খালি: প্রেরকের ভাষা।',
59
+ 'Two contacts cannot share an email address.': 'দুটি যোগাযোগের একই ইমেইল ঠিকানা থাকতে পারে না।',
60
+ 'Updated At': 'হালনাগাদের সময়',
61
+ 'Updated By': 'হালনাগাদ করেছেন',
62
+ User: 'ব্যবহারকারী',
63
+ Vendor: 'সরবরাহকারী',
64
+ Vendors: 'সরবরাহকারী',
65
+ Website: 'ওয়েবসাইট',
66
+ 'What a contact needs before it is saved, in this company.': 'এই প্রতিষ্ঠানে যোগাযোগ সংরক্ষণের আগে যা যা লাগবে।',
67
+ };
@@ -48,6 +48,8 @@ export const contacts = defineModule({
48
48
  category: 'Sales',
49
49
  summary: 'Customers, vendors and the people who work there',
50
50
  },
51
+ // Bangla for the labels it serves (RFC 0023 §3.1; `pnpm i18n:extract`).
52
+ i18n: { bn: () => import('./i18n/bn.js') },
51
53
  accessLevels: {
52
54
  user: { label: 'User', groups: ['contacts.user'] },
53
55
  manager: { label: 'Manager', groups: ['contacts.manager'], implies: ['user'] },
@@ -217,6 +219,7 @@ export const contacts = defineModule({
217
219
  { field: 'phone', widget: 'phone' },
218
220
  { field: 'mobile', widget: 'phone' },
219
221
  { field: 'website', widget: 'url' },
222
+ 'lang',
220
223
  ]),
221
224
  k.notebook('more', [
222
225
  k.page('address', 'Address', [