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,73 @@
1
+ /**
2
+ * The data layer of the Pipeline ↔ Sales bridge (RFC 0028 §3.4): a quotation keeps its deal, a deal its quotations.
3
+ * A confirmed quotation wins its deal (the first winning stage); a deal whose quotations are all cancelled is lost.
4
+ * Both follow the orders through the outbox (`sale.order.confirmed`, `sale.order.cancelled`), once each.
5
+ */
6
+ import { crmShutro } from '../crm/index.js';
7
+ import { salesShutro } from '../sales/index.js';
8
+ import { orm } from '../server/orm.js';
9
+ import { defineModule, extendModel, f, record } from './.kosh/bindings.js';
10
+ export const OrderDeal = extendModel('sale.order', {
11
+ fields: {
12
+ deal: f.many2one('crm.deal', {
13
+ ondelete: 'set null',
14
+ label: 'Deal',
15
+ help: 'The Pipeline deal this quotation is for: confirming it wins the deal.',
16
+ }),
17
+ },
18
+ });
19
+ export const DealQuotations = extendModel('crm.deal', {
20
+ fields: {
21
+ quotations: f.one2many('sale.order', 'deal', { label: 'Quotations' }),
22
+ },
23
+ });
24
+ /** A confirmed order wins its deal: the deal moves to the first winning stage, unless it is lost or won already. */
25
+ export async function winDealOf(env, order) {
26
+ const [o] = await env
27
+ .model('sale.order')
28
+ .browse([order])
29
+ .load({ deal: { stage: true } });
30
+ const deal = o?.deal;
31
+ if (deal === null || deal === undefined || deal.lost === true || deal.stage?.won === true)
32
+ return false;
33
+ const [won] = await (await env.model('crm.stage').search({ where: { won: true }, order: ['sequence asc'], limit: 1 })).load([]);
34
+ if (won === undefined)
35
+ return false;
36
+ await env.model('crm.deal').browse([deal.id]).write({ stage: won.id });
37
+ return true;
38
+ }
39
+ /** A cancelled order loses its deal when every quotation of the deal is cancelled and the deal is still open. */
40
+ export async function loseDealOf(env, order) {
41
+ const [o] = await env
42
+ .model('sale.order')
43
+ .browse([order])
44
+ .load({ deal: { stage: true, quotations: true } });
45
+ const deal = o?.deal;
46
+ if (deal === null || deal === undefined || deal.lost === true || deal.stage?.won === true)
47
+ return false;
48
+ if ([...deal.quotations].some((q) => q.state !== 'cancel'))
49
+ return false;
50
+ // A lost deal says why: the bridge's own reason.
51
+ const reason = await env
52
+ .refId('crm.lost.reason', 'sale_crm.reason_quotations_cancelled')
53
+ .catch(() => null);
54
+ await env.model('crm.deal').browse([deal.id]).write({ lost: true, lostReason: reason });
55
+ return true;
56
+ }
57
+ export const saleCrmShutro = defineModule({
58
+ name: 'sale_crm',
59
+ version: '0.1.0',
60
+ depends: [salesShutro, crmShutro],
61
+ groups: [
62
+ orm.defineGroup({
63
+ code: 'sale_crm.user',
64
+ label: 'Quotations from deals',
65
+ implies: ['sales.user', 'crm.user'],
66
+ }),
67
+ ],
68
+ models: [],
69
+ extensions: [OrderDeal, DealQuotations],
70
+ data: [
71
+ record('crm.lost.reason', 'reason_quotations_cancelled', { name: 'Every quotation was cancelled' }, { noupdate: true }),
72
+ ],
73
+ });
@@ -1,4 +1,4 @@
1
- // GENERATED by `pnpm generate:models` (Shutro’s generator). Do not edit. definitions-hash: 0d6bfa0b460724d4
1
+ // GENERATED by `pnpm generate:models` (Shutro’s generator). Do not edit. definitions-hash: 9a7c4ebfaa8a5f06
2
2
  // Bindings of module `sale_portal`: 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: 0d6bfa0b460724d4
1
+ // GENERATED by `pnpm generate:models` (Shutro’s generator). Do not edit. definitions-hash: 9a7c4ebfaa8a5f06
2
2
  // Schema view of module `sale_portal` (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
 
@@ -29,8 +29,15 @@ export interface SchemaView {
29
29
  readonly 'portal.announcement': PortalAnnouncement;
30
30
  readonly 'portal.invitation': PortalInvitation;
31
31
  readonly 'portal.signature': PortalSignature;
32
+ readonly 'product.attribute': ProductAttribute;
33
+ readonly 'product.attribute.value': ProductAttributeValue;
32
34
  readonly 'product.category': ProductCategory;
35
+ readonly 'product.pricelist': ProductPricelist;
36
+ readonly 'product.pricelist.rule': ProductPricelistRule;
33
37
  readonly 'product.product': ProductProduct;
38
+ readonly 'product.template': ProductTemplate;
39
+ readonly 'product.template.exclusion': ProductTemplateExclusion;
40
+ readonly 'product.template.line': ProductTemplateLine;
34
41
  readonly 'res.company': ResCompany;
35
42
  readonly 'res.currency': ResCurrency;
36
43
  readonly 'res.partner': ResPartner;
@@ -38,6 +45,9 @@ export interface SchemaView {
38
45
  readonly 'res.users': ResUsers;
39
46
  readonly 'sale.order': SaleOrder;
40
47
  readonly 'sale.order.line': SaleOrderLine;
48
+ readonly 'sale.order.option': SaleOrderOption;
49
+ readonly 'sale.order.template': SaleOrderTemplate;
50
+ readonly 'sale.order.template.line': SaleOrderTemplateLine;
41
51
  readonly 'storage.attachment': StorageAttachment;
42
52
  readonly 'uom.uom': UomUom;
43
53
  }
@@ -655,6 +665,53 @@ export interface PortalSignature {
655
665
  export interface PortalSignatureMethods extends F.Methods<typeof import('../../portal/index.js').portalShutro, 'portal.signature'> {
656
666
  }
657
667
 
668
+ /** `product.attribute` (owner: product). */
669
+ export interface ProductAttribute {
670
+ readonly name: 'product.attribute';
671
+ readonly fields: {
672
+ readonly id: F.Id<'product.attribute'>;
673
+ readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
674
+ readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
675
+ readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
676
+ readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
677
+ readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
678
+ readonly active: F.Bool<{ readonly required: true; readonly default: true }>;
679
+ readonly name: F.Char<{ readonly required: true; readonly translate: true }>;
680
+ readonly display: F.Selection<'list' | 'radio' | 'swatch' | 'size', { readonly required: true; readonly default: true }>;
681
+ readonly sequence: F.Integer<{ readonly required: true; readonly default: true }>;
682
+ readonly values: F.One2many<'product.attribute.value', { readonly required: true }>;
683
+ };
684
+ readonly methods: ProductAttributeMethods;
685
+ }
686
+
687
+ /** Methods of `product.attribute`: declared ones and transitions. */
688
+ export interface ProductAttributeMethods extends F.Methods<typeof import('../../product/index.js').productShutro, 'product.attribute'> {
689
+ }
690
+
691
+ /** `product.attribute.value` (owner: product). */
692
+ export interface ProductAttributeValue {
693
+ readonly name: 'product.attribute.value';
694
+ readonly fields: {
695
+ readonly id: F.Id<'product.attribute.value'>;
696
+ readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
697
+ readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
698
+ readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
699
+ readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
700
+ readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
701
+ readonly active: F.Bool<{ readonly required: true; readonly default: true }>;
702
+ readonly attribute: F.Many2one<'product.attribute', { readonly required: true }>;
703
+ readonly name: F.Char<{ readonly required: true; readonly translate: true }>;
704
+ readonly color: F.Char;
705
+ readonly sequence: F.Integer<{ readonly required: true; readonly default: true }>;
706
+ readonly extraPrice: F.Decimal<{ readonly required: true; readonly default: true }>;
707
+ };
708
+ readonly methods: ProductAttributeValueMethods;
709
+ }
710
+
711
+ /** Methods of `product.attribute.value`: declared ones and transitions. */
712
+ export interface ProductAttributeValueMethods extends F.Methods<typeof import('../../product/index.js').productShutro, 'product.attribute.value'> {
713
+ }
714
+
658
715
  /** `product.category` (owner: product). */
659
716
  export interface ProductCategory {
660
717
  readonly name: 'product.category';
@@ -668,6 +725,7 @@ export interface ProductCategory {
668
725
  readonly active: F.Bool<{ readonly required: true; readonly default: true }>;
669
726
  readonly name: F.Char<{ readonly required: true; readonly translate: true }>;
670
727
  readonly parent: F.Many2one<'product.category'>;
728
+ readonly approvalUsers: F.Many2many<'res.users', { readonly required: true }>;
671
729
  };
672
730
  readonly methods: ProductCategoryMethods;
673
731
  }
@@ -676,6 +734,66 @@ export interface ProductCategory {
676
734
  export interface ProductCategoryMethods extends F.Methods<typeof import('../../product/index.js').productShutro, 'product.category'> {
677
735
  }
678
736
 
737
+ /** `product.pricelist` (owner: product). */
738
+ export interface ProductPricelist {
739
+ readonly name: 'product.pricelist';
740
+ readonly fields: {
741
+ readonly id: F.Id<'product.pricelist'>;
742
+ readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
743
+ readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
744
+ readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
745
+ readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
746
+ readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
747
+ readonly active: F.Bool<{ readonly required: true; readonly default: true }>;
748
+ readonly name: F.Char<{ readonly required: true; readonly translate: true }>;
749
+ readonly sequence: F.Integer<{ readonly default: true }>;
750
+ readonly currency: F.Many2one<'res.currency'>;
751
+ readonly company: F.Many2one<'res.company'>;
752
+ readonly rules: F.One2many<'product.pricelist.rule', { readonly required: true }>;
753
+ readonly note: F.Text;
754
+ };
755
+ readonly methods: ProductPricelistMethods;
756
+ }
757
+
758
+ /** Methods of `product.pricelist`: declared ones and transitions. */
759
+ export interface ProductPricelistMethods extends F.Methods<typeof import('../../product/index.js').productShutro, 'product.pricelist'> {
760
+ }
761
+
762
+ /** `product.pricelist.rule` (owner: product). */
763
+ export interface ProductPricelistRule {
764
+ readonly name: 'product.pricelist.rule';
765
+ readonly fields: {
766
+ readonly id: F.Id<'product.pricelist.rule'>;
767
+ readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
768
+ readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
769
+ readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
770
+ readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
771
+ readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
772
+ readonly pricelist: F.Many2one<'product.pricelist', { readonly required: true }>;
773
+ readonly sequence: F.Integer<{ readonly default: true }>;
774
+ readonly appliesTo: F.Selection<'all' | 'category' | 'product', { readonly required: true; readonly default: true }>;
775
+ readonly product: F.Many2one<'product.product'>;
776
+ readonly category: F.Many2one<'product.category'>;
777
+ readonly minQuantity: F.Decimal<{ readonly default: true }>;
778
+ readonly dateFrom: F.DateOnly;
779
+ readonly dateTo: F.DateOnly;
780
+ readonly compute: F.Selection<'fixed' | 'discount' | 'formula', { readonly required: true; readonly default: true }>;
781
+ readonly fixedPrice: F.Decimal;
782
+ readonly base: F.Selection<'list' | 'cost' | 'pricelist', { readonly required: true; readonly default: true }>;
783
+ readonly basePricelist: F.Many2one<'product.pricelist'>;
784
+ readonly discount: F.Decimal<{ readonly default: true }>;
785
+ readonly surcharge: F.Decimal<{ readonly default: true }>;
786
+ readonly rounding: F.Decimal<{ readonly default: true }>;
787
+ readonly minMargin: F.Decimal;
788
+ readonly maxMargin: F.Decimal;
789
+ };
790
+ readonly methods: ProductPricelistRuleMethods;
791
+ }
792
+
793
+ /** Methods of `product.pricelist.rule`: declared ones and transitions. */
794
+ export interface ProductPricelistRuleMethods extends F.Methods<typeof import('../../product/index.js').productShutro, 'product.pricelist.rule'> {
795
+ }
796
+
679
797
  /** `product.product` (owner: product). */
680
798
  export interface ProductProduct {
681
799
  readonly name: 'product.product';
@@ -691,8 +809,11 @@ export interface ProductProduct {
691
809
  readonly code: F.Char<{ readonly readonly: true; readonly sequence: true }>;
692
810
  readonly kind: F.Selection<'goods' | 'service', { readonly required: true; readonly default: true }>;
693
811
  readonly category: F.Many2one<'product.category'>;
812
+ readonly invoicePolicy: F.Selection<'ordered' | 'delivered', { readonly default: true }>;
694
813
  readonly uom: F.Many2one<'uom.uom'>;
695
814
  readonly barcode: F.Char;
815
+ readonly weight: F.Decimal;
816
+ readonly volume: F.Decimal;
696
817
  readonly image: F.Many2one<'storage.attachment'>;
697
818
  readonly listPrice: F.Decimal<{ readonly required: true; readonly default: true }>;
698
819
  readonly standardPrice: F.Decimal<{ readonly required: true; readonly default: true }>;
@@ -703,6 +824,9 @@ export interface ProductProduct {
703
824
  readonly tax: F.Many2one<'account.tax', { readonly readonly: true }>;
704
825
  readonly purchaseTax: F.Many2one<'account.tax', { readonly readonly: true }>;
705
826
  readonly description: F.Text<{ readonly translate: true }>;
827
+ readonly template: F.Many2one<'product.template'>;
828
+ readonly attributeValues: F.Many2many<'product.attribute.value', { readonly required: true }>;
829
+ readonly followsTemplatePrice: F.Bool<{ readonly required: true; readonly default: true }>;
706
830
  };
707
831
  readonly methods: ProductProductMethods;
708
832
  }
@@ -711,6 +835,86 @@ export interface ProductProduct {
711
835
  export interface ProductProductMethods extends F.Methods<typeof import('../../product/index.js').productShutro, 'product.product'> {
712
836
  }
713
837
 
838
+ /** `product.template` (owner: product). */
839
+ export interface ProductTemplate {
840
+ readonly name: 'product.template';
841
+ readonly fields: {
842
+ readonly id: F.Id<'product.template'>;
843
+ readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
844
+ readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
845
+ readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
846
+ readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
847
+ readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
848
+ readonly active: F.Bool<{ readonly required: true; readonly default: true }>;
849
+ readonly name: F.Char<{ readonly required: true; readonly translate: true }>;
850
+ readonly kind: F.Selection<'goods' | 'service', { readonly required: true; readonly default: true }>;
851
+ readonly category: F.Many2one<'product.category'>;
852
+ readonly uom: F.Many2one<'uom.uom'>;
853
+ readonly listPrice: F.Decimal<{ readonly required: true; readonly default: true }>;
854
+ readonly standardPrice: F.Decimal<{ readonly required: true; readonly default: true }>;
855
+ readonly saleOk: F.Bool<{ readonly required: true; readonly default: true }>;
856
+ readonly purchaseOk: F.Bool<{ readonly required: true; readonly default: true }>;
857
+ readonly taxes: F.Many2many<'account.tax', { readonly required: true }>;
858
+ readonly purchaseTaxes: F.Many2many<'account.tax', { readonly required: true }>;
859
+ readonly image: F.Many2one<'storage.attachment'>;
860
+ readonly description: F.Text<{ readonly translate: true }>;
861
+ readonly lines: F.One2many<'product.template.line', { readonly required: true }>;
862
+ readonly exclusions: F.One2many<'product.template.exclusion', { readonly required: true }>;
863
+ readonly variants: F.One2many<'product.product', { readonly required: true }>;
864
+ readonly variantCount: F.Integer<{ readonly readonly: true; readonly compute: true; readonly store: true }>;
865
+ readonly state: F.State<'draft' | 'ready', { readonly required: true; readonly readonly: true; readonly default: true }>;
866
+ };
867
+ readonly methods: ProductTemplateMethods;
868
+ }
869
+
870
+ /** Methods of `product.template`: declared ones and transitions. */
871
+ export interface ProductTemplateMethods extends F.Methods<typeof import('../../product/index.js').productShutro, 'product.template'> {
872
+ readonly 'generate': () => Promise<void>;
873
+ }
874
+
875
+ /** `product.template.exclusion` (owner: product). */
876
+ export interface ProductTemplateExclusion {
877
+ readonly name: 'product.template.exclusion';
878
+ readonly fields: {
879
+ readonly id: F.Id<'product.template.exclusion'>;
880
+ readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
881
+ readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
882
+ readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
883
+ readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
884
+ readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
885
+ readonly template: F.Many2one<'product.template', { readonly required: true }>;
886
+ readonly values: F.Many2many<'product.attribute.value', { readonly required: true }>;
887
+ readonly note: F.Char;
888
+ };
889
+ readonly methods: ProductTemplateExclusionMethods;
890
+ }
891
+
892
+ /** Methods of `product.template.exclusion`: declared ones and transitions. */
893
+ export interface ProductTemplateExclusionMethods extends F.Methods<typeof import('../../product/index.js').productShutro, 'product.template.exclusion'> {
894
+ }
895
+
896
+ /** `product.template.line` (owner: product). */
897
+ export interface ProductTemplateLine {
898
+ readonly name: 'product.template.line';
899
+ readonly fields: {
900
+ readonly id: F.Id<'product.template.line'>;
901
+ readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
902
+ readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
903
+ readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
904
+ readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
905
+ readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
906
+ readonly template: F.Many2one<'product.template', { readonly required: true }>;
907
+ readonly attribute: F.Many2one<'product.attribute', { readonly required: true }>;
908
+ readonly sequence: F.Integer<{ readonly required: true; readonly default: true }>;
909
+ readonly values: F.Many2many<'product.attribute.value', { readonly required: true }>;
910
+ };
911
+ readonly methods: ProductTemplateLineMethods;
912
+ }
913
+
914
+ /** Methods of `product.template.line`: declared ones and transitions. */
915
+ export interface ProductTemplateLineMethods extends F.Methods<typeof import('../../product/index.js').productShutro, 'product.template.line'> {
916
+ }
917
+
714
918
  /** `res.company` (owner: base; extended by: contacts, sales). */
715
919
  export interface ResCompany {
716
920
  readonly name: 'res.company';
@@ -764,7 +968,7 @@ export interface ResCurrency {
764
968
  export interface ResCurrencyMethods extends F.Methods<typeof import('../../server/index.js').baseShutro, 'res.currency'> {
765
969
  }
766
970
 
767
- /** `res.partner` (owner: contacts; extended by: portal). */
971
+ /** `res.partner` (owner: contacts; extended by: portal, sales). */
768
972
  export interface ResPartner {
769
973
  readonly name: 'res.partner';
770
974
  readonly fields: {
@@ -785,6 +989,7 @@ export interface ResPartner {
785
989
  readonly parent: F.Many2one<'res.partner'>;
786
990
  readonly contacts: F.One2many<'res.partner', { readonly required: true }>;
787
991
  readonly email: F.Char;
992
+ readonly lang: F.Selection<'en' | 'bn'>;
788
993
  readonly phone: F.Char;
789
994
  readonly mobile: F.Char;
790
995
  readonly website: F.Char;
@@ -799,12 +1004,13 @@ export interface ResPartner {
799
1004
  readonly currency: F.Many2one<'res.currency'>;
800
1005
  readonly notes: F.Text;
801
1006
  readonly portalUsers: F.One2many<'res.users', { readonly required: true }>; // portal
1007
+ readonly pricelist: F.Many2one<'product.pricelist'>; // sales
802
1008
  };
803
1009
  readonly methods: ResPartnerMethods;
804
1010
  }
805
1011
 
806
1012
  /** Methods of `res.partner`: declared ones and transitions. */
807
- export interface ResPartnerMethods extends F.Methods<typeof import('../../contacts/index.js').contactsShutro, 'res.partner'>, F.Methods<typeof import('../../portal/index.js').portalShutro, 'res.partner'> {
1013
+ export interface ResPartnerMethods extends F.Methods<typeof import('../../contacts/index.js').contactsShutro, 'res.partner'>, F.Methods<typeof import('../../portal/index.js').portalShutro, 'res.partner'>, F.Methods<typeof import('../../sales/index.js').salesShutro, 'res.partner'> {
808
1014
  }
809
1015
 
810
1016
  /** `res.partner.tag` (owner: contacts). */
@@ -869,12 +1075,17 @@ export interface SaleOrder {
869
1075
  readonly name: F.Char<{ readonly required: true; readonly readonly: true; readonly sequence: true }>;
870
1076
  readonly user: F.Many2one<'res.users', { readonly required: true; readonly default: true }>;
871
1077
  readonly partner: F.Many2one<'res.partner', { readonly required: true }>;
1078
+ readonly partnerInvoice: F.Many2one<'res.partner'>;
1079
+ readonly partnerShipping: F.Many2one<'res.partner'>;
1080
+ readonly pricelist: F.Many2one<'product.pricelist'>;
872
1081
  readonly currency: F.Many2one<'res.currency', { readonly required: true }>;
873
1082
  readonly dateOrder: F.DateOnly<{ readonly required: true; readonly default: true }>;
874
1083
  readonly validityDate: F.DateOnly;
875
1084
  readonly clientReference: F.Char;
876
1085
  readonly note: F.Text;
877
1086
  readonly lines: F.One2many<'sale.order.line', { readonly required: true }>;
1087
+ readonly template: F.Many2one<'sale.order.template'>;
1088
+ readonly options: F.One2many<'sale.order.option', { readonly required: true }>;
878
1089
  readonly amountUntaxed: F.Monetary<'currency', { readonly readonly: true; readonly compute: true; readonly store: true }>;
879
1090
  readonly amountTax: F.Monetary<'currency', { readonly readonly: true; readonly compute: true; readonly store: true }>;
880
1091
  readonly amountTotal: F.Monetary<'currency', { readonly readonly: true; readonly compute: true; readonly store: true }>;
@@ -889,6 +1100,7 @@ export interface SaleOrder {
889
1100
  export interface SaleOrderMethods extends F.Methods<typeof import('../../sales/index.js').salesShutro, 'sale.order'>, F.Methods<typeof import('../module.js').salePortalShutro, 'sale.order'> {
890
1101
  readonly 'cancel': () => Promise<void>;
891
1102
  readonly 'confirm': () => Promise<void>;
1103
+ readonly 'fill': () => Promise<void>;
892
1104
  readonly 'lock': () => Promise<void>;
893
1105
  readonly 'redraft': () => Promise<void>;
894
1106
  readonly 'send': () => Promise<void>;
@@ -910,7 +1122,9 @@ export interface SaleOrderLine {
910
1122
  readonly name: F.Char<{ readonly required: true }>;
911
1123
  readonly quantity: F.Decimal<{ readonly required: true; readonly default: true }>;
912
1124
  readonly uom: F.Many2one<'uom.uom'>;
913
- readonly priceUnit: F.Decimal<{ readonly required: true; readonly default: true }>;
1125
+ readonly priceUnit: F.Decimal<{ readonly compute: true; readonly store: true; readonly inverse: true }>;
1126
+ readonly manualPrice: F.Decimal;
1127
+ readonly priceReason: F.Char<{ readonly readonly: true; readonly compute: true; readonly store: true }>;
914
1128
  readonly discount: F.Decimal<{ readonly required: true; readonly default: true }>;
915
1129
  readonly taxes: F.Many2many<'account.tax', { readonly required: true }>;
916
1130
  readonly tax: F.Many2one<'account.tax', { readonly readonly: true }>;
@@ -926,6 +1140,79 @@ export interface SaleOrderLine {
926
1140
  export interface SaleOrderLineMethods extends F.Methods<typeof import('../../sales/index.js').salesShutro, 'sale.order.line'> {
927
1141
  }
928
1142
 
1143
+ /** `sale.order.option` (owner: sales). */
1144
+ export interface SaleOrderOption {
1145
+ readonly name: 'sale.order.option';
1146
+ readonly fields: {
1147
+ readonly id: F.Id<'sale.order.option'>;
1148
+ readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
1149
+ readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
1150
+ readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
1151
+ readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
1152
+ readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
1153
+ readonly order: F.Many2one<'sale.order', { readonly required: true }>;
1154
+ readonly product: F.Many2one<'product.product', { readonly required: true }>;
1155
+ readonly name: F.Char<{ readonly required: true }>;
1156
+ readonly quantity: F.Decimal<{ readonly required: true; readonly default: true }>;
1157
+ readonly priceUnit: F.Decimal;
1158
+ readonly line: F.Many2one<'sale.order.line'>;
1159
+ readonly state: F.State<'offered' | 'added', { readonly required: true; readonly readonly: true; readonly default: true }>;
1160
+ };
1161
+ readonly methods: SaleOrderOptionMethods;
1162
+ }
1163
+
1164
+ /** Methods of `sale.order.option`: declared ones and transitions. */
1165
+ export interface SaleOrderOptionMethods extends F.Methods<typeof import('../../sales/index.js').salesShutro, 'sale.order.option'> {
1166
+ readonly 'add': () => Promise<void>;
1167
+ }
1168
+
1169
+ /** `sale.order.template` (owner: sales). */
1170
+ export interface SaleOrderTemplate {
1171
+ readonly name: 'sale.order.template';
1172
+ readonly fields: {
1173
+ readonly id: F.Id<'sale.order.template'>;
1174
+ readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
1175
+ readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
1176
+ readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
1177
+ readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
1178
+ readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
1179
+ readonly active: F.Bool<{ readonly required: true; readonly default: true }>;
1180
+ readonly name: F.Char<{ readonly required: true; readonly translate: true }>;
1181
+ readonly validityDays: F.Integer<{ readonly default: true }>;
1182
+ readonly note: F.Text;
1183
+ readonly lines: F.One2many<'sale.order.template.line', { readonly required: true }>;
1184
+ };
1185
+ readonly methods: SaleOrderTemplateMethods;
1186
+ }
1187
+
1188
+ /** Methods of `sale.order.template`: declared ones and transitions. */
1189
+ export interface SaleOrderTemplateMethods extends F.Methods<typeof import('../../sales/index.js').salesShutro, 'sale.order.template'> {
1190
+ }
1191
+
1192
+ /** `sale.order.template.line` (owner: sales). */
1193
+ export interface SaleOrderTemplateLine {
1194
+ readonly name: 'sale.order.template.line';
1195
+ readonly fields: {
1196
+ readonly id: F.Id<'sale.order.template.line'>;
1197
+ readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
1198
+ readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
1199
+ readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
1200
+ readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
1201
+ readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
1202
+ readonly template: F.Many2one<'sale.order.template', { readonly required: true }>;
1203
+ readonly sequence: F.Integer<{ readonly default: true }>;
1204
+ readonly product: F.Many2one<'product.product', { readonly required: true }>;
1205
+ readonly name: F.Char<{ readonly required: true }>;
1206
+ readonly quantity: F.Decimal<{ readonly required: true; readonly default: true }>;
1207
+ readonly optional: F.Bool<{ readonly required: true; readonly default: true }>;
1208
+ };
1209
+ readonly methods: SaleOrderTemplateLineMethods;
1210
+ }
1211
+
1212
+ /** Methods of `sale.order.template.line`: declared ones and transitions. */
1213
+ export interface SaleOrderTemplateLineMethods extends F.Methods<typeof import('../../sales/index.js').salesShutro, 'sale.order.template.line'> {
1214
+ }
1215
+
929
1216
  /** `storage.attachment` (owner: storage). */
930
1217
  export interface StorageAttachment {
931
1218
  readonly name: 'storage.attachment';
@@ -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,7 @@
1
+ /** Bangla for the module's labels, keyed by their English text (RFC 0023 §3.1; `pnpm i18n:extract`). */
2
+ export const bn = {
3
+ 'Accept and sign': 'গ্রহণ করে স্বাক্ষর করুন',
4
+ Decline: 'প্রত্যাখ্যান করুন',
5
+ 'Portal access (sales documents)': 'পোর্টাল প্রবেশাধিকার (বিক্রয় নথি)',
6
+ 'Quotations and orders': 'উদ্ধৃতি ও অর্ডার',
7
+ };
@@ -15,6 +15,8 @@ export const salePortal = defineModule({
15
15
  depends: [sales, portal],
16
16
  // A sent quotation is announced to its customer by email (the portal reads the order's changes).
17
17
  changeEvents: ['sale.order'],
18
+ // Bangla for the labels it serves (RFC 0023 §3.1; `pnpm i18n:extract`).
19
+ i18n: { bn: () => import('./i18n/bn.js') },
18
20
  accessLevels: {
19
21
  manager: { label: 'Portal access (sales documents)', groups: ['portal.manager'] },
20
22
  },
@@ -45,6 +47,14 @@ export const salePortal = defineModule({
45
47
  field: 'lines',
46
48
  fields: ['product', 'name', 'quantity', 'priceUnit', 'discount', 'subtotal'],
47
49
  },
50
+ // Optional products the customer adds before signing (RFC 0028 §3.5).
51
+ options: {
52
+ field: 'options',
53
+ fields: ['product', 'name', 'quantity', 'priceUnit'],
54
+ offered: { state: 'offered' },
55
+ when: { state: 'sent' },
56
+ add: 'add',
57
+ },
48
58
  pdf: 'sales.quotation',
49
59
  actions: [
50
60
  {