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
@@ -1,10 +1,14 @@
1
- // GENERATED by `pnpm generate:models` (Shutro’s generator). Do not edit. definitions-hash: f4cc209cf945d73d
1
+ // GENERATED by `pnpm generate:models` (Shutro’s generator). Do not edit. definitions-hash: 727ae347ccaee3be
2
2
  // Schema view of module `approvals` (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
 
5
5
  /** Model name → model type (RFC 0002 §7.7). */
6
6
  export interface SchemaView {
7
+ readonly 'approval.ask': ApprovalAsk;
8
+ readonly 'approval.ask.line': ApprovalAskLine;
9
+ readonly 'approval.category': ApprovalCategory;
7
10
  readonly 'approval.delegation': ApprovalDelegation;
11
+ readonly 'approval.event': ApprovalEvent;
8
12
  readonly 'approval.level': ApprovalLevel;
9
13
  readonly 'approval.link': ApprovalLink;
10
14
  readonly 'approval.policy': ApprovalPolicy;
@@ -26,7 +30,120 @@ export interface SchemaView {
26
30
  readonly 'oauth.token': OauthToken;
27
31
  readonly 'res.company': ResCompany;
28
32
  readonly 'res.currency': ResCurrency;
33
+ readonly 'res.partner': ResPartner;
34
+ readonly 'res.partner.tag': ResPartnerTag;
35
+ readonly 'res.segment': ResSegment;
29
36
  readonly 'res.users': ResUsers;
37
+ readonly 'storage.attachment': StorageAttachment;
38
+ }
39
+
40
+ /** `approval.ask` (owner: approvals). */
41
+ export interface ApprovalAsk {
42
+ readonly name: 'approval.ask';
43
+ readonly fields: {
44
+ readonly id: F.Id<'approval.ask'>;
45
+ readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
46
+ readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
47
+ readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
48
+ readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
49
+ readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
50
+ readonly company: F.Many2one<'res.company', { readonly required: true; readonly default: true }>;
51
+ readonly name: F.Char<{ readonly readonly: true; readonly sequence: true }>;
52
+ readonly category: F.Many2one<'approval.category', { readonly required: true }>;
53
+ readonly title: F.Char<{ readonly required: true }>;
54
+ readonly requester: F.Many2one<'res.users', { readonly required: true; readonly default: true }>;
55
+ readonly description: F.Text;
56
+ readonly amount: F.Decimal;
57
+ readonly dateFrom: F.DateOnly;
58
+ readonly dateTo: F.DateOnly;
59
+ readonly partner: F.Many2one<'res.partner'>;
60
+ readonly location: F.Char;
61
+ readonly quantity: F.Decimal;
62
+ readonly lines: F.One2many<'approval.ask.line', { readonly required: true }>;
63
+ readonly linesTotal: F.Decimal<{ readonly readonly: true; readonly compute: true; readonly store: true }>;
64
+ readonly resultModel: F.Char;
65
+ readonly resultId: F.Integer;
66
+ readonly resultName: F.Char;
67
+ readonly approvedAt: F.Datetime;
68
+ readonly askAmount: F.Selection<'none' | 'optional' | 'required', { readonly readonly: true; readonly compute: true; readonly store: true }>;
69
+ readonly askPeriod: F.Selection<'none' | 'optional' | 'required', { readonly readonly: true; readonly compute: true; readonly store: true }>;
70
+ readonly askPartner: F.Selection<'none' | 'optional' | 'required', { readonly readonly: true; readonly compute: true; readonly store: true }>;
71
+ readonly askLocation: F.Selection<'none' | 'optional' | 'required', { readonly readonly: true; readonly compute: true; readonly store: true }>;
72
+ readonly askQuantity: F.Selection<'none' | 'optional' | 'required', { readonly readonly: true; readonly compute: true; readonly store: true }>;
73
+ readonly askLines: F.Selection<'none' | 'optional' | 'required', { readonly readonly: true; readonly compute: true; readonly store: true }>;
74
+ readonly askAttachment: F.Selection<'none' | 'optional' | 'required', { readonly readonly: true; readonly compute: true; readonly store: true }>;
75
+ readonly deciders: F.Many2many<'res.users', { readonly required: true }>;
76
+ readonly state: F.State<'draft' | 'submitted' | 'approved' | 'refused' | 'cancelled', { readonly required: true; readonly readonly: true; readonly default: true }>;
77
+ };
78
+ readonly methods: ApprovalAskMethods;
79
+ }
80
+
81
+ /** Methods of `approval.ask`: declared ones and transitions. */
82
+ export interface ApprovalAskMethods extends F.Methods<typeof import('../module.js').approvalsShutro, 'approval.ask'> {
83
+ readonly 'approve': () => Promise<void>;
84
+ readonly 'cancel': () => Promise<void>;
85
+ readonly 'redraft': () => Promise<void>;
86
+ readonly 'refuse': () => Promise<void>;
87
+ readonly 'submit': () => Promise<void>;
88
+ }
89
+
90
+ /** `approval.ask.line` (owner: approvals). */
91
+ export interface ApprovalAskLine {
92
+ readonly name: 'approval.ask.line';
93
+ readonly fields: {
94
+ readonly id: F.Id<'approval.ask.line'>;
95
+ readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
96
+ readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
97
+ readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
98
+ readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
99
+ readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
100
+ readonly ask: F.Many2one<'approval.ask', { readonly required: true }>;
101
+ readonly sequence: F.Integer<{ readonly required: true; readonly default: true }>;
102
+ readonly name: F.Char<{ readonly required: true }>;
103
+ readonly quantity: F.Decimal<{ readonly required: true; readonly default: true }>;
104
+ readonly priceUnit: F.Decimal<{ readonly required: true; readonly default: true }>;
105
+ readonly subtotal: F.Decimal<{ readonly readonly: true; readonly compute: true; readonly store: true }>;
106
+ };
107
+ readonly methods: ApprovalAskLineMethods;
108
+ }
109
+
110
+ /** Methods of `approval.ask.line`: declared ones and transitions. */
111
+ export interface ApprovalAskLineMethods extends F.Methods<typeof import('../module.js').approvalsShutro, 'approval.ask.line'> {
112
+ }
113
+
114
+ /** `approval.category` (owner: approvals). */
115
+ export interface ApprovalCategory {
116
+ readonly name: 'approval.category';
117
+ readonly fields: {
118
+ readonly id: F.Id<'approval.category'>;
119
+ readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
120
+ readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
121
+ readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
122
+ readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
123
+ readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
124
+ readonly active: F.Bool<{ readonly required: true; readonly default: true }>;
125
+ readonly name: F.Char<{ readonly required: true; readonly translate: true }>;
126
+ readonly code: F.Char;
127
+ readonly company: F.Many2one<'res.company'>;
128
+ readonly sequence: F.Integer<{ readonly required: true; readonly default: true }>;
129
+ readonly description: F.Text<{ readonly translate: true }>;
130
+ readonly askAmount: F.Selection<'none' | 'optional' | 'required', { readonly required: true; readonly default: true }>;
131
+ readonly askPeriod: F.Selection<'none' | 'optional' | 'required', { readonly required: true; readonly default: true }>;
132
+ readonly askPartner: F.Selection<'none' | 'optional' | 'required', { readonly required: true; readonly default: true }>;
133
+ readonly askLocation: F.Selection<'none' | 'optional' | 'required', { readonly required: true; readonly default: true }>;
134
+ readonly askQuantity: F.Selection<'none' | 'optional' | 'required', { readonly required: true; readonly default: true }>;
135
+ readonly askLines: F.Selection<'none' | 'optional' | 'required', { readonly required: true; readonly default: true }>;
136
+ readonly askAttachment: F.Selection<'none' | 'optional' | 'required', { readonly required: true; readonly default: true }>;
137
+ readonly outcome: F.Char;
138
+ readonly policy: F.Many2one<'approval.policy'>;
139
+ readonly requestCount: F.Integer<{ readonly readonly: true; readonly compute: true }>;
140
+ readonly asks: F.One2many<'approval.ask', { readonly required: true }>;
141
+ };
142
+ readonly methods: ApprovalCategoryMethods;
143
+ }
144
+
145
+ /** Methods of `approval.category`: declared ones and transitions. */
146
+ export interface ApprovalCategoryMethods extends F.Methods<typeof import('../module.js').approvalsShutro, 'approval.category'> {
30
147
  }
31
148
 
32
149
  /** `approval.delegation` (owner: permissions). */
@@ -52,6 +169,29 @@ export interface ApprovalDelegation {
52
169
  export interface ApprovalDelegationMethods extends F.Methods<typeof import('../../permissions/index.js').permissionsShutro, 'approval.delegation'> {
53
170
  }
54
171
 
172
+ /** `approval.event` (owner: permissions). */
173
+ export interface ApprovalEvent {
174
+ readonly name: 'approval.event';
175
+ readonly fields: {
176
+ readonly id: F.Id<'approval.event'>;
177
+ readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
178
+ readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
179
+ readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
180
+ readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
181
+ readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
182
+ readonly request: F.Many2one<'approval.request', { readonly required: true }>;
183
+ readonly at: F.Datetime<{ readonly required: true }>;
184
+ readonly user: F.Many2one<'res.users'>;
185
+ readonly kind: F.Selection<'created' | 'started' | 'voted' | 'approved' | 'rejected' | 'sent_back' | 'cancelled' | 'skipped' | 'reminded' | 'escalated' | 'auto' | 'reassigned' | 'synced' | 'notified', { readonly required: true }>;
186
+ readonly note: F.Text;
187
+ };
188
+ readonly methods: ApprovalEventMethods;
189
+ }
190
+
191
+ /** Methods of `approval.event`: declared ones and transitions. */
192
+ export interface ApprovalEventMethods extends F.Methods<typeof import('../../permissions/index.js').permissionsShutro, 'approval.event'> {
193
+ }
194
+
55
195
  /** `approval.level` (owner: permissions). */
56
196
  export interface ApprovalLevel {
57
197
  readonly name: 'approval.level';
@@ -66,7 +206,9 @@ export interface ApprovalLevel {
66
206
  readonly sequence: F.Integer<{ readonly default: true }>;
67
207
  readonly name: F.Char<{ readonly required: true }>;
68
208
  readonly condition: F.Json;
69
- readonly approverKind: F.Selection<'role' | 'users' | 'manager' | 'field', { readonly required: true; readonly default: true }>;
209
+ readonly approverKind: F.Selection<'role' | 'users' | 'manager' | 'department_head' | 'department_approvers' | 'employee' | 'field' | 'record', { readonly required: true; readonly default: true }>;
210
+ readonly extraUsers: F.Many2many<'res.users', { readonly required: true }>;
211
+ readonly backupUsers: F.Many2many<'res.users', { readonly required: true }>;
70
212
  readonly approverRole: F.Char;
71
213
  readonly approverUsers: F.Many2many<'res.users', { readonly required: true }>;
72
214
  readonly approverField: F.Char;
@@ -120,11 +262,18 @@ export interface ApprovalPolicy {
120
262
  readonly targetModel: F.Char<{ readonly required: true }>;
121
263
  readonly sequence: F.Integer<{ readonly default: true }>;
122
264
  readonly company: F.Many2one<'res.company'>;
265
+ readonly companies: F.Many2many<'res.company', { readonly required: true }>;
266
+ readonly segment: F.Many2one<'res.segment'>;
123
267
  readonly onApproved: F.Char;
124
268
  readonly onRejected: F.Char;
125
269
  readonly onSentBack: F.Char;
126
270
  readonly onWithdrawn: F.Char;
127
271
  readonly reasonRequired: F.Bool<{ readonly required: true; readonly default: true }>;
272
+ readonly condition: F.Json;
273
+ readonly whenNobody: F.Selection<'refuse' | 'admins' | 'skip', { readonly required: true; readonly default: true }>;
274
+ readonly skipDuplicates: F.Bool<{ readonly required: true; readonly default: true }>;
275
+ readonly syncPending: F.Selection<'off' | 'add' | 'replace', { readonly required: true; readonly default: true }>;
276
+ readonly notifyOnSync: F.Bool<{ readonly required: true; readonly default: true }>;
128
277
  readonly levels: F.One2many<'approval.level', { readonly required: true }>;
129
278
  };
130
279
  readonly methods: ApprovalPolicyMethods;
@@ -153,6 +302,7 @@ export interface ApprovalRequest {
153
302
  readonly company: F.Many2one<'res.company'>;
154
303
  readonly approverRole: F.Char;
155
304
  readonly approvers: F.Many2many<'res.users', { readonly required: true }>;
305
+ readonly backups: F.Many2many<'res.users', { readonly required: true }>;
156
306
  readonly required: F.Integer<{ readonly required: true; readonly default: true }>;
157
307
  readonly round: F.Integer<{ readonly required: true; readonly default: true }>;
158
308
  readonly votes: F.One2many<'approval.vote', { readonly required: true }>;
@@ -160,6 +310,8 @@ export interface ApprovalRequest {
160
310
  readonly remindedAt: F.Datetime;
161
311
  readonly escalatedTo: F.Char;
162
312
  readonly escalatedAt: F.Datetime;
313
+ readonly startedAt: F.Datetime;
314
+ readonly explanation: F.Text;
163
315
  readonly state: F.Selection<'pending' | 'approved' | 'rejected' | 'sent_back' | 'cancelled', { readonly required: true; readonly default: true }>;
164
316
  readonly requestedBy: F.Many2one<'res.users'>;
165
317
  readonly decidedBy: F.Many2one<'res.users'>;
@@ -190,6 +342,8 @@ export interface ApprovalVote {
190
342
  readonly at: F.Datetime<{ readonly required: true }>;
191
343
  readonly onBehalfOf: F.Many2one<'res.users'>;
192
344
  readonly ip: F.Char;
345
+ readonly auto: F.Bool<{ readonly required: true; readonly default: true }>;
346
+ readonly asBackup: F.Bool<{ readonly required: true; readonly default: true }>;
193
347
  };
194
348
  readonly methods: ApprovalVoteMethods;
195
349
  }
@@ -533,7 +687,7 @@ export interface OauthToken {
533
687
  export interface OauthTokenMethods extends F.Methods<typeof import('../../server/index.js').baseShutro, 'oauth.token'> {
534
688
  }
535
689
 
536
- /** `res.company` (owner: base). */
690
+ /** `res.company` (owner: base; extended by: contacts). */
537
691
  export interface ResCompany {
538
692
  readonly name: 'res.company';
539
693
  readonly fields: {
@@ -553,12 +707,14 @@ export interface ResCompany {
553
707
  readonly email: F.Char;
554
708
  readonly phone: F.Char;
555
709
  readonly website: F.Char;
710
+ readonly contactTaxIdRequired: F.Bool<{ readonly required: true; readonly default: true }>; // contacts
711
+ readonly contactUniqueEmail: F.Bool<{ readonly required: true; readonly default: true }>; // contacts
556
712
  };
557
713
  readonly methods: ResCompanyMethods;
558
714
  }
559
715
 
560
716
  /** Methods of `res.company`: declared ones and transitions. */
561
- export interface ResCompanyMethods extends F.Methods<typeof import('../../server/index.js').baseShutro, 'res.company'> {
717
+ export interface ResCompanyMethods extends F.Methods<typeof import('../../server/index.js').baseShutro, 'res.company'>, F.Methods<typeof import('../../contacts/index.js').contactsShutro, 'res.company'> {
562
718
  }
563
719
 
564
720
  /** `res.currency` (owner: base). */
@@ -582,6 +738,91 @@ export interface ResCurrency {
582
738
  export interface ResCurrencyMethods extends F.Methods<typeof import('../../server/index.js').baseShutro, 'res.currency'> {
583
739
  }
584
740
 
741
+ /** `res.partner` (owner: contacts). */
742
+ export interface ResPartner {
743
+ readonly name: 'res.partner';
744
+ readonly fields: {
745
+ readonly id: F.Id<'res.partner'>;
746
+ readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
747
+ readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
748
+ readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
749
+ readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
750
+ readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
751
+ readonly active: F.Bool<{ readonly required: true; readonly default: true }>;
752
+ readonly company: F.Many2one<'res.company', { readonly default: true }>;
753
+ readonly name: F.Char<{ readonly required: true }>;
754
+ readonly image: F.Many2one<'storage.attachment'>;
755
+ readonly tags: F.Many2many<'res.partner.tag', { readonly required: true }>;
756
+ readonly latitude: F.Decimal;
757
+ readonly longitude: F.Decimal;
758
+ readonly isCompany: F.Bool<{ readonly required: true; readonly default: true }>;
759
+ readonly parent: F.Many2one<'res.partner'>;
760
+ readonly contacts: F.One2many<'res.partner', { readonly required: true }>;
761
+ readonly email: F.Char;
762
+ readonly lang: F.Selection<'en' | 'bn'>;
763
+ readonly phone: F.Char;
764
+ readonly mobile: F.Char;
765
+ readonly website: F.Char;
766
+ readonly street: F.Char;
767
+ readonly city: F.Char;
768
+ readonly zip: F.Char;
769
+ readonly country: F.Char;
770
+ readonly state: F.Char;
771
+ readonly taxId: F.Char;
772
+ readonly isCustomer: F.Bool<{ readonly required: true; readonly default: true }>;
773
+ readonly isVendor: F.Bool<{ readonly required: true; readonly default: true }>;
774
+ readonly currency: F.Many2one<'res.currency'>;
775
+ readonly notes: F.Text;
776
+ };
777
+ readonly methods: ResPartnerMethods;
778
+ }
779
+
780
+ /** Methods of `res.partner`: declared ones and transitions. */
781
+ export interface ResPartnerMethods extends F.Methods<typeof import('../../contacts/index.js').contactsShutro, 'res.partner'> {
782
+ }
783
+
784
+ /** `res.partner.tag` (owner: contacts). */
785
+ export interface ResPartnerTag {
786
+ readonly name: 'res.partner.tag';
787
+ readonly fields: {
788
+ readonly id: F.Id<'res.partner.tag'>;
789
+ readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
790
+ readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
791
+ readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
792
+ readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
793
+ readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
794
+ readonly name: F.Char<{ readonly required: true }>;
795
+ };
796
+ readonly methods: ResPartnerTagMethods;
797
+ }
798
+
799
+ /** Methods of `res.partner.tag`: declared ones and transitions. */
800
+ export interface ResPartnerTagMethods extends F.Methods<typeof import('../../contacts/index.js').contactsShutro, 'res.partner.tag'> {
801
+ }
802
+
803
+ /** `res.segment` (owner: permissions). */
804
+ export interface ResSegment {
805
+ readonly name: 'res.segment';
806
+ readonly fields: {
807
+ readonly id: F.Id<'res.segment'>;
808
+ readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
809
+ readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
810
+ readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
811
+ readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
812
+ readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
813
+ readonly active: F.Bool<{ readonly required: true; readonly default: true }>;
814
+ readonly name: F.Char<{ readonly required: true }>;
815
+ readonly code: F.Char;
816
+ readonly companies: F.Many2many<'res.company', { readonly required: true }>;
817
+ readonly note: F.Text;
818
+ };
819
+ readonly methods: ResSegmentMethods;
820
+ }
821
+
822
+ /** Methods of `res.segment`: declared ones and transitions. */
823
+ export interface ResSegmentMethods extends F.Methods<typeof import('../../permissions/index.js').permissionsShutro, 'res.segment'> {
824
+ }
825
+
585
826
  /** `res.users` (owner: base). */
586
827
  export interface ResUsers {
587
828
  readonly name: 'res.users';
@@ -609,3 +850,30 @@ export interface ResUsers {
609
850
  /** Methods of `res.users`: declared ones and transitions. */
610
851
  export interface ResUsersMethods extends F.Methods<typeof import('../../server/index.js').baseShutro, 'res.users'> {
611
852
  }
853
+
854
+ /** `storage.attachment` (owner: storage). */
855
+ export interface StorageAttachment {
856
+ readonly name: 'storage.attachment';
857
+ readonly fields: {
858
+ readonly id: F.Id<'storage.attachment'>;
859
+ readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
860
+ readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
861
+ readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
862
+ readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
863
+ readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
864
+ readonly name: F.Char<{ readonly required: true }>;
865
+ readonly mime: F.Char<{ readonly required: true }>;
866
+ readonly size: F.Integer<{ readonly required: true }>;
867
+ readonly sha256: F.Char<{ readonly required: true }>;
868
+ readonly key: F.Char<{ readonly required: true }>;
869
+ readonly resModel: F.Char<{ readonly required: true }>;
870
+ readonly resId: F.Integer<{ readonly required: true }>;
871
+ readonly variantOf: F.Many2one<'storage.attachment'>;
872
+ readonly width: F.Integer;
873
+ };
874
+ readonly methods: StorageAttachmentMethods;
875
+ }
876
+
877
+ /** Methods of `storage.attachment`: declared ones and transitions. */
878
+ export interface StorageAttachmentMethods extends F.Methods<typeof import('../../storage/index.js').storageShutro, 'storage.attachment'> {
879
+ }
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Approvals' demo data (RFC 0008 §5.8): Rahim's business trip to the Sylhet farm, submitted and waiting for his
3
+ * category's approvers, and a draft purchase request — so the inbox, My requests and the overview have something
4
+ * to show.
5
+ */
6
+ import type { DemoContext } from '../modules-sdk/index.js';
7
+ export declare function approvalsDemo(ctx: DemoContext): Promise<string>;
@@ -0,0 +1,41 @@
1
+ const RAHIM = { login: 'rahim', name: 'Rahim Uddin', groups: ['base.user'] };
2
+ export async function approvalsDemo(ctx) {
3
+ await ctx.as(RAHIM, async (raw) => {
4
+ const env = raw;
5
+ const categories = await env
6
+ .model('approval.category')
7
+ .search({ where: { code: { in: ['TRIP', 'PR'] } } })
8
+ .then((r) => r.load(['code']));
9
+ const byCode = new Map([...categories].map((c) => [c.code, c.id]));
10
+ const trip = byCode.get('TRIP');
11
+ const purchase = byCode.get('PR');
12
+ if (trip !== undefined) {
13
+ const made = await env.model('approval.ask').create([
14
+ {
15
+ category: trip,
16
+ title: 'Visit the Sylhet farm',
17
+ description: 'Check the new sheds before the first flock arrives.',
18
+ amount: '15000',
19
+ dateFrom: ctx.date(7),
20
+ dateTo: ctx.date(9),
21
+ location: 'Sylhet',
22
+ },
23
+ ]);
24
+ await env.model('approval.ask').browse(made.ids).submit();
25
+ }
26
+ if (purchase !== undefined)
27
+ await env.model('approval.ask').create([
28
+ {
29
+ category: purchase,
30
+ title: 'Feeders for shed 3',
31
+ lines: {
32
+ create: [
33
+ { name: 'Feeder, 12 kg', quantity: '40', priceUnit: '650' },
34
+ { name: 'Drinker, 8 l', quantity: '40', priceUnit: '420' },
35
+ ],
36
+ },
37
+ },
38
+ ]);
39
+ });
40
+ return 'Approvals: a business trip waiting for approval and a draft purchase request.';
41
+ }
@@ -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,133 @@
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 company is in one segment at most.': 'একটি প্রতিষ্ঠান সর্বোচ্চ একটি সেগমেন্টে থাকে।',
4
+ 'A group of companies (Feed, Poultry, Dairy): an approval policy of the segment covers every company in it.': 'প্রতিষ্ঠানের একটি দল (ফিড, পোলট্রি, ডেইরি): সেগমেন্টের অনুমোদন নীতি এর প্রতিটি প্রতিষ্ঠানে প্রযোজ্য।',
5
+ 'A line asks for a positive quantity at a price not below zero.': 'প্রতিটি লাইনে পরিমাণ শূন্যের বেশি এবং মূল্য শূন্যের কম নয় হতে হবে।',
6
+ 'A period ends on or after it starts.': 'সময়কাল শুরুর দিনে বা তার পরে শেষ হয়।',
7
+ 'A record of the model gets one approval per level whose condition it meets; levels with a lower sequence are decided first, those with the same side by side.': 'মডেলের একটি রেকর্ড যে যে স্তরের শর্ত পূরণ করে, প্রতিটির জন্য একটি করে অনুমোদন পায়; কম ক্রমের স্তর আগে সিদ্ধান্ত হয়, একই ক্রমের স্তরগুলো একসাথে।',
8
+ Active: 'সক্রিয়',
9
+ Amount: 'অঙ্ক',
10
+ 'Amount waiting': 'অপেক্ষমাণ অঙ্ক',
11
+ 'An amount is not negative.': 'অঙ্ক ঋণাত্মক হতে পারে না।',
12
+ 'Another category has this code.': 'অন্য একটি শ্রেণির এই কোড আছে।',
13
+ 'Approval policy': 'অনুমোদন নীতি',
14
+ Approvals: 'অনুমোদন',
15
+ Approved: 'অনুমোদিত',
16
+ 'Approved on': 'অনুমোদনের তারিখ',
17
+ 'Approved this month': 'এই মাসে অনুমোদিত',
18
+ Ask: 'চাওয়া',
19
+ 'Ask Amount': 'অঙ্ক চাওয়া',
20
+ 'Ask Attachment': 'সংযুক্তি চাওয়া',
21
+ 'Ask Lines': 'লাইন চাওয়া',
22
+ 'Ask Location': 'অবস্থান চাওয়া',
23
+ 'Ask Partner': 'অংশীদার চাওয়া',
24
+ 'Ask Period': 'সময়কাল চাওয়া',
25
+ 'Ask Quantity': 'পরিমাণ চাওয়া',
26
+ 'Asked by': 'অনুরোধকারী',
27
+ Asks: 'চাওয়া তথ্য',
28
+ Attachment: 'সংযুক্তি',
29
+ Away: 'অনুপস্থিত',
30
+ Cancel: 'বাতিল করুন',
31
+ Cancelled: 'বাতিল',
32
+ Category: 'শ্রেণি',
33
+ Code: 'কোড',
34
+ Companies: 'প্রতিষ্ঠানসমূহ',
35
+ Company: 'প্রতিষ্ঠান',
36
+ Configuration: 'কনফিগারেশন',
37
+ Contact: 'যোগাযোগ',
38
+ 'Created At': 'তৈরির সময়',
39
+ 'Created By': 'তৈরি করেছেন',
40
+ 'Decided by': 'সিদ্ধান্ত দিয়েছেন',
41
+ Description: 'বিবরণ',
42
+ Details: 'বিস্তারিত',
43
+ 'Display Name': 'প্রদর্শিত নাম',
44
+ Draft: 'খসড়া',
45
+ 'Empty: nothing more. `purchase`: a request for quotation from the lines (with Purchase).': 'খালি: আর কিছু হয় না। `purchase`: লাইনগুলো থেকে একটি উদ্ধৃতির অনুরোধ (Purchase থাকলে)।',
46
+ 'Everyone (decide and ask)': 'সবাই (সিদ্ধান্ত ও অনুরোধ)',
47
+ 'Everything waiting for your decision, in one place — and what you asked for': 'আপনার সিদ্ধান্তের অপেক্ষায় থাকা সবকিছু এক জায়গায় — এবং আপনি যা চেয়েছেন',
48
+ 'Fill in what the category asks for (and attach a file when it is required).': 'শ্রেণিটি যা চায় তা পূরণ করুন (এবং প্রয়োজন হলে একটি ফাইল সংযুক্ত করুন)।',
49
+ From: 'থেকে',
50
+ ID: 'আইডি',
51
+ Lines: 'লাইন',
52
+ 'Lines › Description': 'লাইন › বিবরণ',
53
+ 'Lines › Quantity': 'লাইন › পরিমাণ',
54
+ 'Lines › Unit price': 'লাইন › একক মূল্য',
55
+ 'Lines total': 'লাইনের মোট',
56
+ Location: 'অবস্থান',
57
+ Made: 'তৈরি হয়েছে',
58
+ 'Made document': 'তৈরি নথি',
59
+ 'Manager (policies)': 'ব্যবস্থাপক (নীতি)',
60
+ Matrix: 'ম্যাট্রিক্স',
61
+ Mine: 'আমার',
62
+ 'My requests': 'আমার অনুরোধ',
63
+ Name: 'নাম',
64
+ 'No installed app offers this outcome.': 'ইনস্টল করা কোনো অ্যাপ এই ফলাফল দেয় না।',
65
+ 'Not asked': 'চাওয়া হয়নি',
66
+ 'Not asked, optional or required; submitting checks the required ones.': 'চাওয়া হয়নি, ঐচ্ছিক বা আবশ্যক; জমা দেওয়ার সময় আবশ্যকগুলো যাচাই করা হয়।',
67
+ Note: 'নোট',
68
+ Number: 'নম্বর',
69
+ 'On approval': 'অনুমোদনের পর',
70
+ Optional: 'ঐচ্ছিক',
71
+ Outcome: 'ফলাফল',
72
+ Overview: 'সারসংক্ষেপ',
73
+ 'Page {{page}} of {{pages}}': 'পৃষ্ঠা {{page}} / {{pages}}',
74
+ Period: 'সময়কাল',
75
+ Policies: 'নীতি',
76
+ Productivity: 'উৎপাদনশীলতা',
77
+ Quantity: 'পরিমাণ',
78
+ Refused: 'নামঞ্জুর',
79
+ Request: 'অনুরোধ',
80
+ 'Request {{name}}: {{title}}': 'অনুরোধ {{name}}: {{title}}',
81
+ 'Request approved': 'অনুরোধ অনুমোদিত',
82
+ 'Request categories': 'অনুরোধের শ্রেণি',
83
+ 'Request category': 'অনুরোধের শ্রেণি',
84
+ 'Request line': 'অনুরোধের লাইন',
85
+ Requests: 'অনুরোধ',
86
+ 'Requests by category': 'শ্রেণি অনুযায়ী অনুরোধ',
87
+ 'Requests by state': 'অবস্থা অনুযায়ী অনুরোধ',
88
+ 'Requests waiting': 'অপেক্ষমাণ অনুরোধ',
89
+ Required: 'আবশ্যক',
90
+ 'Required: the request is submitted only with a file attached.': 'আবশ্যক: ফাইল সংযুক্ত থাকলেই কেবল অনুরোধ জমা দেওয়া যায়।',
91
+ 'Result Id': 'ফলাফল আইডি',
92
+ Segments: 'সেগমেন্ট',
93
+ Sequence: 'ক্রম',
94
+ 'Set to draft': 'খসড়ায় ফেরত নিন',
95
+ 'Shown to whoever asks: what to give and why.': 'অনুরোধকারীকে দেখানো হয়: কী দিতে হবে এবং কেন।',
96
+ State: 'অবস্থা',
97
+ Status: 'অবস্থা',
98
+ 'Submit for approval': 'অনুমোদনের জন্য জমা দিন',
99
+ 'Submitted to the category’s approvers; approved, its outcome runs.': 'শ্রেণির অনুমোদনকারীদের কাছে জমা দেওয়া হয়; অনুমোদিত হলে এর ফলাফল কার্যকর হয়।',
100
+ Subtotal: 'উপমোট',
101
+ 'The policy covers this company, these companies and every company of the segment together; leave all three empty for every company.': 'নীতিটি এই প্রতিষ্ঠান, এই প্রতিষ্ঠানগুলো এবং সেগমেন্টের প্রতিটি প্রতিষ্ঠানে একসঙ্গে প্রযোজ্য; সব প্রতিষ্ঠানের জন্য তিনটিই খালি রাখুন।',
102
+ 'The policy’s levels decide (made with the first request: the requester’s manager, else an Approvals manager); edit them on the policy. The outcome runs once approved.': 'নীতির স্তরগুলো সিদ্ধান্ত নেয় (প্রথম অনুরোধের সাথে তৈরি হয়: অনুরোধকারীর ব্যবস্থাপক, না থাকলে একজন অনুমোদন ব্যবস্থাপক); নীতিতে এগুলো সম্পাদনা করুন। অনুমোদিত হলে ফলাফল কার্যকর হয়।',
103
+ 'The quantity times the unit price.': 'পরিমাণ গুণ একক মূল্য।',
104
+ 'The sum of the lines’ subtotals.': 'লাইনগুলোর উপমোটের যোগফল।',
105
+ 'The transitions of the record run when it is approved, rejected, sent back or withdrawn.': 'অনুমোদিত, প্রত্যাখ্যাত, ফেরত পাঠানো বা প্রত্যাহার হলে রেকর্ডের ধাপ পরিবর্তনগুলো কার্যকর হয়।',
106
+ 'To approve': 'অনুমোদনের জন্য',
107
+ 'Unit price': 'একক মূল্য',
108
+ Until: 'পর্যন্ত',
109
+ 'Updated At': 'হালনাগাদের সময়',
110
+ 'Updated By': 'হালনাগাদ করেছেন',
111
+ 'Waiting for approval': 'অনুমোদনের অপেক্ষায়',
112
+ 'Waiting for approvals.': 'অনুমোদনের অপেক্ষায়।',
113
+ 'What a request asks for': 'একটি অনুরোধ যা চায়',
114
+ 'What for': 'কী উদ্দেশ্যে',
115
+ 'What happens': 'কী ঘটে',
116
+ 'What I decided': 'আমার সিদ্ধান্তগুলো',
117
+ 'What the category asks for; required ones are marked. A file, when asked for, goes in the chatter.': 'শ্রেণিটি যা চায়; আবশ্যকগুলো চিহ্নিত। ফাইল চাওয়া হলে তা চ্যাটারে যুক্ত করুন।',
118
+ 'Whether a request of this category asks for a contact: not asked, optional or required.': 'এই শ্রেণির অনুরোধে একটি যোগাযোগ চাওয়া হয় কি না: চাওয়া হয়নি, ঐচ্ছিক বা আবশ্যক।',
119
+ 'Whether a request of this category asks for a location: not asked, optional or required.': 'এই শ্রেণির অনুরোধে একটি অবস্থান চাওয়া হয় কি না: চাওয়া হয়নি, ঐচ্ছিক বা আবশ্যক।',
120
+ 'Whether a request of this category asks for a period, from and until: not asked, optional or required.': 'এই শ্রেণির অনুরোধে একটি সময়কাল (শুরু ও শেষ) চাওয়া হয় কি না: চাওয়া হয়নি, ঐচ্ছিক বা আবশ্যক।',
121
+ 'Whether a request of this category asks for a quantity: not asked, optional or required.': 'এই শ্রেণির অনুরোধে একটি পরিমাণ চাওয়া হয় কি না: চাওয়া হয়নি, ঐচ্ছিক বা আবশ্যক।',
122
+ 'Whether a request of this category asks for an amount: not asked, optional or required.': 'এই শ্রেণির অনুরোধে একটি অঙ্ক চাওয়া হয় কি না: চাওয়া হয়নি, ঐচ্ছিক বা আবশ্যক।',
123
+ 'Whether a request of this category asks for lines with quantities and prices: not asked, optional or required.': 'এই শ্রেণির অনুরোধে পরিমাণ ও মূল্যসহ লাইন চাওয়া হয় কি না: চাওয়া হয়নি, ঐচ্ছিক বা আবশ্যক।',
124
+ 'Whether this request asks for a contact, as its category says.': 'এই অনুরোধে একটি যোগাযোগ চাওয়া হয় কি না, এর শ্রেণি অনুযায়ী।',
125
+ 'Whether this request asks for a location, as its category says.': 'এই অনুরোধে একটি অবস্থান চাওয়া হয় কি না, এর শ্রেণি অনুযায়ী।',
126
+ 'Whether this request asks for a period, as its category says.': 'এই অনুরোধে একটি সময়কাল চাওয়া হয় কি না, এর শ্রেণি অনুযায়ী।',
127
+ 'Whether this request asks for a quantity, as its category says.': 'এই অনুরোধে একটি পরিমাণ চাওয়া হয় কি না, এর শ্রেণি অনুযায়ী।',
128
+ 'Whether this request asks for an amount, as its category says.': 'এই অনুরোধে একটি অঙ্ক চাওয়া হয় কি না, এর শ্রেণি অনুযায়ী।',
129
+ 'Whether this request asks for an attached file, as its category says.': 'এই অনুরোধে একটি সংযুক্ত ফাইল চাওয়া হয় কি না, এর শ্রেণি অনুযায়ী।',
130
+ 'Whether this request asks for lines, as its category says.': 'এই অনুরোধে লাইন চাওয়া হয় কি না, এর শ্রেণি অনুযায়ী।',
131
+ 'While you are away, the person you choose decides your approvals — in their own name, for you. They never approve their own requests.': 'আপনার অনুপস্থিতিতে আপনার বেছে নেওয়া ব্যক্তি আপনার হয়ে, নিজের নামে আপনার অনুমোদনের সিদ্ধান্ত দেবেন। তিনি কখনো নিজের অনুরোধ অনুমোদন করেন না।',
132
+ 'Who decides and what follows': 'কে সিদ্ধান্ত নেয় এবং এরপর কী হয়',
133
+ };
@@ -1,9 +1,27 @@
1
+ /**
2
+ * @packageDocumentation
3
+ * `shutro-erp/approvals` (RFC 0025): the **Approvals** app on the engine of `shutro-erp/permissions`. Everyone who decides or
4
+ * asks has it: the inbox (cards with the record, who asked, how long it waits, every level as a step; decided one by
5
+ * one or many at once, from the keyboard too), my requests (withdrawn while they wait), what I decided, and *Away*
6
+ * (who decides for me while I am away); for Approvals managers, the policies — levels, who decides each and how many,
7
+ * the deadline and who it escalates to — edited on screen. Approvers get each request by email with a link of their
8
+ * own that opens a confirmation page; reminders at half a deadline and escalations once late, hourly.
9
+ *
10
+ * - `GET /api/v1/public/approvals/:token` the confirmation page of an email link
11
+ * - `POST /api/v1/public/approvals/:token` `{ decision: approve | reject | send_back, comment? }`, once
12
+ * - `POST /api/v1/approvals/deadlines/run` reminders and escalations now (Approvals managers; hourly too)
13
+ * - `POST /api/v1/approvals/categories/:id/policy` a request category's policy, made when missing (Approvals managers)
14
+ * - `GET /api/v1/approvals/policies/:id/preview` which of the last 50 records each level would have asked about
15
+ *
16
+ * **Generic requests** (step 4): categories say what a request asks for and what it leads to; a request is decided
17
+ * through its category's policy, and its outcome runs when approved.
18
+ */
1
19
  import { type Mailer } from '../mail/index.js';
2
20
  import { defineModule } from '../modules-sdk/index.js';
3
21
  import { type ModuleContext } from '../server/index.js';
4
22
  import type { Worker } from '../server/orm.js';
5
23
  export { mailDeciders, mailTurn } from './mails.js';
6
- export { approvalsShutro } from './module.js';
24
+ export { ApprovalAsk, ApprovalAskLine, ApprovalCategory, approvalsShutro, ensureCategoryPolicy, missingFields, outcomesOffered, } from './module.js';
7
25
  /** The subscribers that email a record's approvers when its approvals are asked and when a level is approved. */
8
26
  export declare function approvalMailWorkers(context: Pick<ModuleContext, 'shutro'>): Worker[];
9
27
  export interface ApprovalsOptions {