shutro-erp 0.3.5 → 0.3.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (768) hide show
  1. package/dist/account_asset/.kosh/bindings.js +15 -0
  2. package/dist/{mrp_account → account_asset}/.kosh/schema.d.ts +785 -614
  3. package/dist/account_asset/board.d.ts +61 -0
  4. package/dist/account_asset/board.js +86 -0
  5. package/dist/account_asset/books.d.ts +42 -0
  6. package/dist/account_asset/books.js +398 -0
  7. package/dist/account_asset/demo.d.ts +7 -0
  8. package/dist/account_asset/demo.js +72 -0
  9. package/dist/account_asset/i18n/bn.d.ts +2 -0
  10. package/dist/account_asset/i18n/bn.js +97 -0
  11. package/dist/account_asset/index.d.ts +9 -0
  12. package/dist/account_asset/index.js +337 -0
  13. package/dist/account_asset/module.d.ts +11076 -0
  14. package/dist/account_asset/module.js +230 -0
  15. package/dist/account_budget/.kosh/bindings.js +15 -0
  16. package/dist/account_budget/.kosh/schema.d.ts +2841 -0
  17. package/dist/account_budget/budget.d.ts +5 -0
  18. package/dist/account_budget/budget.js +142 -0
  19. package/dist/account_budget/demo.d.ts +6 -0
  20. package/dist/account_budget/demo.js +30 -0
  21. package/dist/account_budget/i18n/bn.d.ts +2 -0
  22. package/dist/account_budget/i18n/bn.js +63 -0
  23. package/dist/account_budget/index.d.ts +4 -0
  24. package/dist/account_budget/index.js +237 -0
  25. package/dist/account_budget/module.d.ts +27289 -0
  26. package/dist/account_budget/module.js +182 -0
  27. package/dist/account_portal/.kosh/bindings.js +1 -1
  28. package/dist/account_portal/.kosh/schema.d.ts +651 -10
  29. package/dist/account_portal/i18n/bn.d.ts +2 -0
  30. package/dist/account_portal/i18n/bn.js +6 -0
  31. package/dist/account_portal/index.js +2 -0
  32. package/dist/account_portal/module.d.ts +5212 -1592
  33. package/dist/accounting/.kosh/bindings.js +1 -1
  34. package/dist/accounting/.kosh/schema.d.ts +651 -10
  35. package/dist/accounting/closing.js +1 -0
  36. package/dist/accounting/fiscal.d.ts +578 -0
  37. package/dist/accounting/fiscal.js +401 -0
  38. package/dist/accounting/followups.d.ts +618 -0
  39. package/dist/accounting/followups.js +420 -0
  40. package/dist/accounting/i18n/bn.d.ts +2 -0
  41. package/dist/accounting/i18n/bn.js +425 -0
  42. package/dist/accounting/index.d.ts +3 -1
  43. package/dist/accounting/index.js +780 -5
  44. package/dist/accounting/module.d.ts +5386 -1543
  45. package/dist/accounting/module.js +155 -18
  46. package/dist/accounting/statements.d.ts +878 -0
  47. package/dist/accounting/statements.js +728 -0
  48. package/dist/accounting/web/BankReconcilePage.d.ts +9 -0
  49. package/dist/accounting/web/BankReconcilePage.js +138 -0
  50. package/dist/accounting/web/FollowupsPage.d.ts +8 -0
  51. package/dist/accounting/web/FollowupsPage.js +54 -0
  52. package/dist/accounting/web/PostingPreview.d.ts +8 -0
  53. package/dist/accounting/web/PostingPreview.js +26 -0
  54. package/dist/accounting/web/index.d.ts +3 -0
  55. package/dist/accounting/web/index.js +9 -0
  56. package/dist/accounting/web/messages.js +140 -0
  57. package/dist/approvals/.kosh/bindings.d.ts +22 -0
  58. package/dist/approvals/.kosh/bindings.js +15 -0
  59. package/dist/approvals/.kosh/schema.d.ts +879 -0
  60. package/dist/approvals/demo.d.ts +7 -0
  61. package/dist/approvals/demo.js +41 -0
  62. package/dist/approvals/i18n/bn.d.ts +2 -0
  63. package/dist/approvals/i18n/bn.js +133 -0
  64. package/dist/approvals/index.d.ts +36 -0
  65. package/dist/approvals/index.js +772 -0
  66. package/dist/approvals/mails.d.ts +30 -0
  67. package/dist/approvals/mails.js +87 -0
  68. package/dist/approvals/module.d.ts +2930 -0
  69. package/dist/approvals/module.js +473 -0
  70. package/dist/approvals/web/Config.d.ts +12 -0
  71. package/dist/approvals/web/Config.js +60 -0
  72. package/dist/approvals/web/History.d.ts +4 -0
  73. package/dist/approvals/web/History.js +13 -0
  74. package/dist/approvals/web/Inbox.d.ts +9 -0
  75. package/dist/approvals/web/Inbox.js +114 -0
  76. package/dist/approvals/web/Matrix.d.ts +9 -0
  77. package/dist/approvals/web/Matrix.js +26 -0
  78. package/dist/approvals/web/Mine.d.ts +7 -0
  79. package/dist/approvals/web/Mine.js +27 -0
  80. package/dist/approvals/web/index.d.ts +15 -0
  81. package/dist/approvals/web/index.js +29 -0
  82. package/dist/approvals/web/messages.d.ts +2 -0
  83. package/dist/approvals/web/messages.js +211 -0
  84. package/dist/approvals/web/shared.d.ts +59 -0
  85. package/dist/approvals/web/shared.js +46 -0
  86. package/dist/approvals_purchase/.kosh/bindings.d.ts +22 -0
  87. package/dist/approvals_purchase/.kosh/bindings.js +15 -0
  88. package/dist/approvals_purchase/.kosh/schema.d.ts +1997 -0
  89. package/dist/approvals_purchase/i18n/bn.d.ts +2 -0
  90. package/dist/approvals_purchase/i18n/bn.js +5 -0
  91. package/dist/approvals_purchase/index.d.ts +3 -0
  92. package/dist/approvals_purchase/index.js +47 -0
  93. package/dist/approvals_purchase/module.d.ts +12670 -0
  94. package/dist/approvals_purchase/module.js +84 -0
  95. package/dist/attendance/.kosh/bindings.d.ts +22 -0
  96. package/dist/attendance/.kosh/bindings.js +15 -0
  97. package/dist/attendance/.kosh/schema.d.ts +1106 -0
  98. package/dist/attendance/days.d.ts +96 -0
  99. package/dist/attendance/days.js +430 -0
  100. package/dist/attendance/demo.d.ts +7 -0
  101. package/dist/attendance/demo.js +58 -0
  102. package/dist/attendance/i18n/bn.d.ts +2 -0
  103. package/dist/attendance/i18n/bn.js +147 -0
  104. package/dist/attendance/index.d.ts +4 -0
  105. package/dist/attendance/index.js +515 -0
  106. package/dist/attendance/module.d.ts +4413 -0
  107. package/dist/attendance/module.js +412 -0
  108. package/dist/attendance/routes.d.ts +16 -0
  109. package/dist/attendance/routes.js +266 -0
  110. package/dist/attendance/web/Check.d.ts +8 -0
  111. package/dist/attendance/web/Check.js +40 -0
  112. package/dist/attendance/web/Kiosk.d.ts +8 -0
  113. package/dist/attendance/web/Kiosk.js +62 -0
  114. package/dist/attendance/web/PinButton.d.ts +7 -0
  115. package/dist/attendance/web/PinButton.js +29 -0
  116. package/dist/attendance/web/index.d.ts +13 -0
  117. package/dist/attendance/web/index.js +22 -0
  118. package/dist/attendance/web/messages.d.ts +2 -0
  119. package/dist/attendance/web/messages.js +61 -0
  120. package/dist/automation/engine.js +1 -1
  121. package/dist/calendar/.kosh/bindings.js +1 -1
  122. package/dist/calendar/.kosh/schema.d.ts +2 -1
  123. package/dist/calendar/i18n/bn.d.ts +2 -0
  124. package/dist/calendar/i18n/bn.js +80 -0
  125. package/dist/calendar/index.js +77 -0
  126. package/dist/calendar/module.d.ts +26 -0
  127. package/dist/calendar/module.js +14 -4
  128. package/dist/cli/apps.js +25 -5
  129. package/dist/cli/init.js +46 -4
  130. package/dist/cli/templates.d.ts +1 -1
  131. package/dist/cli/templates.js +123 -5
  132. package/dist/contacts/.kosh/bindings.js +1 -1
  133. package/dist/contacts/.kosh/schema.d.ts +2 -1
  134. package/dist/contacts/i18n/bn.d.ts +2 -0
  135. package/dist/contacts/i18n/bn.js +67 -0
  136. package/dist/contacts/index.js +3 -0
  137. package/dist/contacts/module.d.ts +42 -0
  138. package/dist/contacts/module.js +19 -3
  139. package/dist/crm/.kosh/bindings.js +1 -1
  140. package/dist/crm/.kosh/schema.d.ts +3 -1
  141. package/dist/crm/i18n/bn.d.ts +2 -0
  142. package/dist/crm/i18n/bn.js +80 -0
  143. package/dist/crm/index.js +22 -0
  144. package/dist/crm/module.d.ts +22 -0
  145. package/dist/crm/module.js +6 -3
  146. package/dist/documents/.kosh/bindings.d.ts +22 -0
  147. package/dist/documents/.kosh/bindings.js +15 -0
  148. package/dist/documents/.kosh/schema.d.ts +863 -0
  149. package/dist/documents/demo.d.ts +6 -0
  150. package/dist/documents/demo.js +22 -0
  151. package/dist/documents/documents.d.ts +98 -0
  152. package/dist/documents/documents.js +318 -0
  153. package/dist/documents/i18n/bn.d.ts +2 -0
  154. package/dist/documents/i18n/bn.js +83 -0
  155. package/dist/documents/index.d.ts +30 -0
  156. package/dist/documents/index.js +569 -0
  157. package/dist/documents/module.d.ts +2801 -0
  158. package/dist/documents/module.js +215 -0
  159. package/dist/documents/web/Versions.d.ts +7 -0
  160. package/dist/documents/web/Versions.js +45 -0
  161. package/dist/documents/web/index.d.ts +11 -0
  162. package/dist/documents/web/index.js +16 -0
  163. package/dist/documents/web/messages.d.ts +2 -0
  164. package/dist/documents/web/messages.js +21 -0
  165. package/dist/event/.kosh/bindings.js +1 -1
  166. package/dist/event/.kosh/schema.d.ts +2 -1
  167. package/dist/event/i18n/bn.d.ts +2 -0
  168. package/dist/event/i18n/bn.js +101 -0
  169. package/dist/event/index.js +66 -0
  170. package/dist/event/module.d.ts +20 -0
  171. package/dist/event/module.js +8 -1
  172. package/dist/event_account/.kosh/bindings.js +1 -1
  173. package/dist/event_account/.kosh/schema.d.ts +651 -10
  174. package/dist/event_account/i18n/bn.d.ts +2 -0
  175. package/dist/event_account/i18n/bn.js +5 -0
  176. package/dist/event_account/index.js +2 -0
  177. package/dist/event_account/module.d.ts +5133 -1513
  178. package/dist/expense/.kosh/bindings.d.ts +22 -0
  179. package/dist/expense/.kosh/bindings.js +15 -0
  180. package/dist/expense/.kosh/schema.d.ts +1620 -0
  181. package/dist/expense/demo.d.ts +7 -0
  182. package/dist/expense/demo.js +69 -0
  183. package/dist/expense/i18n/bn.d.ts +2 -0
  184. package/dist/expense/i18n/bn.js +155 -0
  185. package/dist/expense/index.d.ts +3 -0
  186. package/dist/expense/index.js +502 -0
  187. package/dist/expense/module.d.ts +6768 -0
  188. package/dist/expense/module.js +649 -0
  189. package/dist/expense_account/.kosh/bindings.d.ts +22 -0
  190. package/dist/expense_account/.kosh/bindings.js +15 -0
  191. package/dist/expense_account/.kosh/schema.d.ts +2515 -0
  192. package/dist/expense_account/i18n/bn.d.ts +2 -0
  193. package/dist/expense_account/i18n/bn.js +15 -0
  194. package/dist/expense_account/index.d.ts +3 -0
  195. package/dist/expense_account/index.js +76 -0
  196. package/dist/expense_account/module.d.ts +14628 -0
  197. package/dist/expense_account/module.js +318 -0
  198. package/dist/helpdesk/.kosh/bindings.d.ts +22 -0
  199. package/dist/helpdesk/.kosh/bindings.js +15 -0
  200. package/dist/helpdesk/.kosh/schema.d.ts +886 -0
  201. package/dist/helpdesk/demo.d.ts +7 -0
  202. package/dist/helpdesk/demo.js +65 -0
  203. package/dist/helpdesk/hours.d.ts +17 -0
  204. package/dist/helpdesk/hours.js +94 -0
  205. package/dist/helpdesk/i18n/bn.d.ts +2 -0
  206. package/dist/helpdesk/i18n/bn.js +127 -0
  207. package/dist/helpdesk/index.d.ts +10 -0
  208. package/dist/helpdesk/index.js +463 -0
  209. package/dist/helpdesk/module.d.ts +2960 -0
  210. package/dist/helpdesk/module.js +326 -0
  211. package/dist/helpdesk/routes.d.ts +12 -0
  212. package/dist/helpdesk/routes.js +132 -0
  213. package/dist/helpdesk/sla.d.ts +37 -0
  214. package/dist/helpdesk/sla.js +226 -0
  215. package/dist/hr/.kosh/bindings.js +1 -1
  216. package/dist/hr/.kosh/schema.d.ts +59 -1
  217. package/dist/hr/demo.js +11 -1
  218. package/dist/hr/i18n/bn.d.ts +2 -0
  219. package/dist/hr/i18n/bn.js +126 -0
  220. package/dist/hr/index.d.ts +1 -1
  221. package/dist/hr/index.js +158 -12
  222. package/dist/hr/module.d.ts +932 -59
  223. package/dist/hr/module.js +114 -17
  224. package/dist/indent/.kosh/bindings.d.ts +22 -0
  225. package/dist/indent/.kosh/bindings.js +15 -0
  226. package/dist/indent/.kosh/schema.d.ts +2084 -0
  227. package/dist/indent/demo.d.ts +7 -0
  228. package/dist/indent/demo.js +48 -0
  229. package/dist/indent/i18n/bn.d.ts +2 -0
  230. package/dist/indent/i18n/bn.js +143 -0
  231. package/dist/indent/index.d.ts +3 -0
  232. package/dist/indent/index.js +450 -0
  233. package/dist/indent/module.d.ts +13424 -0
  234. package/dist/indent/module.js +792 -0
  235. package/dist/indent_purchase/.kosh/bindings.d.ts +22 -0
  236. package/dist/indent_purchase/.kosh/bindings.js +15 -0
  237. package/dist/indent_purchase/.kosh/schema.d.ts +2710 -0
  238. package/dist/indent_purchase/i18n/bn.d.ts +2 -0
  239. package/dist/indent_purchase/i18n/bn.js +13 -0
  240. package/dist/indent_purchase/index.d.ts +3 -0
  241. package/dist/indent_purchase/index.js +61 -0
  242. package/dist/indent_purchase/module.d.ts +27950 -0
  243. package/dist/indent_purchase/module.js +163 -0
  244. package/dist/l10n_bd/.kosh/bindings.js +1 -1
  245. package/dist/l10n_bd/.kosh/schema.d.ts +651 -10
  246. package/dist/l10n_bd/i18n/bn.d.ts +2 -0
  247. package/dist/l10n_bd/i18n/bn.js +69 -0
  248. package/dist/l10n_bd/index.js +2 -0
  249. package/dist/l10n_bd/module.d.ts +5212 -1592
  250. package/dist/l10n_bd_payroll/.kosh/bindings.d.ts +22 -0
  251. package/dist/l10n_bd_payroll/.kosh/bindings.js +15 -0
  252. package/dist/l10n_bd_payroll/.kosh/schema.d.ts +2891 -0
  253. package/dist/l10n_bd_payroll/data.d.ts +47 -0
  254. package/dist/l10n_bd_payroll/data.js +347 -0
  255. package/dist/l10n_bd_payroll/i18n/bn.d.ts +2 -0
  256. package/dist/l10n_bd_payroll/i18n/bn.js +4 -0
  257. package/dist/l10n_bd_payroll/index.d.ts +4 -0
  258. package/dist/l10n_bd_payroll/index.js +26 -0
  259. package/dist/l10n_bd_payroll/module.d.ts +17294 -0
  260. package/dist/l10n_bd_payroll/module.js +86 -0
  261. package/dist/l10n_bd_pos/.kosh/bindings.d.ts +22 -0
  262. package/dist/{mrp_account → l10n_bd_pos}/.kosh/bindings.js +2 -2
  263. package/dist/l10n_bd_pos/.kosh/schema.d.ts +2341 -0
  264. package/dist/l10n_bd_pos/i18n/bn.d.ts +2 -0
  265. package/dist/l10n_bd_pos/i18n/bn.js +32 -0
  266. package/dist/l10n_bd_pos/index.d.ts +3 -0
  267. package/dist/l10n_bd_pos/index.js +111 -0
  268. package/dist/{mrp_account → l10n_bd_pos}/module.d.ts +9047 -6981
  269. package/dist/l10n_bd_pos/module.js +43 -0
  270. package/dist/l10n_in/.kosh/bindings.js +1 -1
  271. package/dist/l10n_in/.kosh/schema.d.ts +651 -10
  272. package/dist/l10n_in/i18n/bn.d.ts +2 -0
  273. package/dist/l10n_in/i18n/bn.js +95 -0
  274. package/dist/l10n_in/index.js +2 -0
  275. package/dist/l10n_in/module.d.ts +6778 -1580
  276. package/dist/l10n_in/module.js +25 -5
  277. package/dist/l10n_in/web/GstSettings.js +2 -2
  278. package/dist/mail/inbound/handle.js +8 -5
  279. package/dist/mail/inbound/models.js +5 -3
  280. package/dist/mail/index.d.ts +12 -1
  281. package/dist/mail/index.js +139 -2
  282. package/dist/mail/send.d.ts +56 -0
  283. package/dist/mail/send.js +394 -0
  284. package/dist/mail/web/SendButton.d.ts +9 -0
  285. package/dist/mail/web/SendButton.js +71 -0
  286. package/dist/mail/web/SendSelected.d.ts +8 -0
  287. package/dist/mail/web/SendSelected.js +33 -0
  288. package/dist/mail/web/index.d.ts +2 -0
  289. package/dist/mail/web/index.js +6 -0
  290. package/dist/mail/web/messages.js +36 -0
  291. package/dist/maintenance/.kosh/bindings.js +1 -1
  292. package/dist/maintenance/.kosh/schema.d.ts +2 -1
  293. package/dist/maintenance/i18n/bn.d.ts +2 -0
  294. package/dist/maintenance/i18n/bn.js +132 -0
  295. package/dist/maintenance/index.js +85 -0
  296. package/dist/maintenance/module.d.ts +25 -0
  297. package/dist/maintenance/module.js +27 -9
  298. package/dist/maintenance_stock/.kosh/bindings.js +1 -1
  299. package/dist/maintenance_stock/.kosh/schema.d.ts +374 -3
  300. package/dist/maintenance_stock/i18n/bn.d.ts +2 -0
  301. package/dist/maintenance_stock/i18n/bn.js +21 -0
  302. package/dist/maintenance_stock/index.js +2 -0
  303. package/dist/maintenance_stock/module.d.ts +6095 -1327
  304. package/dist/maintenance_stock/module.js +1 -0
  305. package/dist/modules-sdk/apps.d.ts +10 -0
  306. package/dist/modules-sdk/apps.js +32 -0
  307. package/dist/modules-sdk/index.d.ts +1 -1
  308. package/dist/modules-sdk/manifest.d.ts +105 -2
  309. package/dist/payment/.kosh/bindings.js +1 -1
  310. package/dist/payment/.kosh/schema.d.ts +653 -11
  311. package/dist/payment/i18n/bn.d.ts +2 -0
  312. package/dist/payment/i18n/bn.js +59 -0
  313. package/dist/payment/index.d.ts +41 -0
  314. package/dist/payment/index.js +216 -74
  315. package/dist/payment/module.d.ts +5353 -1675
  316. package/dist/payment/module.js +36 -6
  317. package/dist/payment/settle.js +11 -1
  318. package/dist/payroll/.kosh/bindings.d.ts +22 -0
  319. package/dist/payroll/.kosh/bindings.js +15 -0
  320. package/dist/payroll/.kosh/schema.d.ts +1448 -0
  321. package/dist/payroll/compute.d.ts +35 -0
  322. package/dist/payroll/compute.js +398 -0
  323. package/dist/payroll/demo.d.ts +55 -0
  324. package/dist/payroll/demo.js +121 -0
  325. package/dist/payroll/formula.d.ts +62 -0
  326. package/dist/payroll/formula.js +320 -0
  327. package/dist/payroll/i18n/bn.d.ts +2 -0
  328. package/dist/payroll/i18n/bn.js +206 -0
  329. package/dist/payroll/index.d.ts +230 -0
  330. package/dist/payroll/index.js +715 -0
  331. package/dist/{mrp → payroll}/module.d.ts +4294 -2624
  332. package/dist/payroll/module.js +606 -0
  333. package/dist/payroll/routes.d.ts +10 -0
  334. package/dist/payroll/routes.js +112 -0
  335. package/dist/payroll_account/.kosh/bindings.d.ts +22 -0
  336. package/dist/payroll_account/.kosh/bindings.js +15 -0
  337. package/dist/payroll_account/.kosh/schema.d.ts +2887 -0
  338. package/dist/payroll_account/i18n/bn.d.ts +2 -0
  339. package/dist/payroll_account/i18n/bn.js +10 -0
  340. package/dist/payroll_account/index.d.ts +3 -0
  341. package/dist/payroll_account/index.js +42 -0
  342. package/dist/payroll_account/module.d.ts +16738 -0
  343. package/dist/payroll_account/module.js +256 -0
  344. package/dist/permissions/approvals.d.ts +227 -12
  345. package/dist/permissions/approvals.js +1421 -67
  346. package/dist/permissions/index.d.ts +1 -1
  347. package/dist/permissions/index.js +2 -2
  348. package/dist/permissions/models.js +364 -13
  349. package/dist/permissions/routes.d.ts +9 -1
  350. package/dist/permissions/routes.js +72 -5
  351. package/dist/permissions/web/ApprovalPanel.d.ts +5 -4
  352. package/dist/permissions/web/ApprovalPanel.js +75 -11
  353. package/dist/permissions/web/index.d.ts +6 -4
  354. package/dist/permissions/web/index.js +13 -4
  355. package/dist/permissions/web/messages.d.ts +2 -0
  356. package/dist/permissions/web/messages.js +95 -0
  357. package/dist/portal/.kosh/bindings.js +1 -1
  358. package/dist/portal/.kosh/schema.d.ts +2 -1
  359. package/dist/portal/documents.d.ts +3 -0
  360. package/dist/portal/documents.js +21 -1
  361. package/dist/portal/i18n/bn.d.ts +2 -0
  362. package/dist/portal/i18n/bn.js +33 -0
  363. package/dist/portal/index.js +3 -1
  364. package/dist/portal/module.d.ts +20 -0
  365. package/dist/portal/routes-documents.js +76 -0
  366. package/dist/pos/.kosh/bindings.js +1 -1
  367. package/dist/pos/.kosh/schema.d.ts +652 -10
  368. package/dist/pos/i18n/bn.d.ts +2 -0
  369. package/dist/pos/i18n/bn.js +133 -0
  370. package/dist/pos/index.js +87 -1
  371. package/dist/pos/module.d.ts +6967 -1709
  372. package/dist/pos/module.js +49 -5
  373. package/dist/pos/routes.js +80 -7
  374. package/dist/pos/web/Register.js +2 -5
  375. package/dist/pos_stock/.kosh/bindings.js +1 -1
  376. package/dist/pos_stock/.kosh/schema.d.ts +822 -12
  377. package/dist/pos_stock/i18n/bn.d.ts +2 -0
  378. package/dist/pos_stock/i18n/bn.js +6 -0
  379. package/dist/pos_stock/index.js +2 -0
  380. package/dist/pos_stock/module.d.ts +11241 -2851
  381. package/dist/product/.kosh/bindings.js +1 -1
  382. package/dist/product/.kosh/schema.d.ts +203 -1
  383. package/dist/product/i18n/bn.d.ts +2 -0
  384. package/dist/product/i18n/bn.js +175 -0
  385. package/dist/product/index.d.ts +1 -0
  386. package/dist/product/index.js +301 -1
  387. package/dist/product/module.d.ts +1727 -0
  388. package/dist/product/module.js +67 -6
  389. package/dist/product/pricelist.d.ts +575 -0
  390. package/dist/product/pricelist.js +257 -0
  391. package/dist/product/variants.d.ts +908 -0
  392. package/dist/product/variants.js +251 -0
  393. package/dist/production/.kosh/bindings.d.ts +22 -0
  394. package/dist/production/.kosh/bindings.js +15 -0
  395. package/dist/production/.kosh/schema.d.ts +2345 -0
  396. package/dist/{mrp → production}/demo.d.ts +1 -1
  397. package/dist/{mrp → production}/demo.js +5 -5
  398. package/dist/production/depth.d.ts +790 -0
  399. package/dist/production/depth.js +262 -0
  400. package/dist/production/i18n/bn.d.ts +2 -0
  401. package/dist/production/i18n/bn.js +350 -0
  402. package/dist/production/index.d.ts +6 -0
  403. package/dist/production/index.js +1256 -0
  404. package/dist/production/module.d.ts +17327 -0
  405. package/dist/production/module.js +1333 -0
  406. package/dist/production/plan.d.ts +921 -0
  407. package/dist/production/plan.js +511 -0
  408. package/dist/production/schedule.d.ts +656 -0
  409. package/dist/production/schedule.js +309 -0
  410. package/dist/production_account/.kosh/bindings.d.ts +22 -0
  411. package/dist/production_account/.kosh/bindings.js +15 -0
  412. package/dist/production_account/.kosh/schema.d.ts +3496 -0
  413. package/dist/production_account/i18n/bn.d.ts +2 -0
  414. package/dist/production_account/i18n/bn.js +93 -0
  415. package/dist/production_account/index.d.ts +4 -0
  416. package/dist/production_account/index.js +246 -0
  417. package/dist/production_account/module.d.ts +1192 -0
  418. package/dist/{mrp_account → production_account}/module.js +72 -18
  419. package/dist/production_account/overhead.d.ts +1195 -0
  420. package/dist/production_account/overhead.js +554 -0
  421. package/dist/project/.kosh/bindings.js +1 -1
  422. package/dist/project/.kosh/schema.d.ts +735 -1
  423. package/dist/project/i18n/bn.d.ts +2 -0
  424. package/dist/project/i18n/bn.js +383 -0
  425. package/dist/project/index.d.ts +3 -1
  426. package/dist/project/index.js +1024 -14
  427. package/dist/project/module.d.ts +9912 -390
  428. package/dist/project/module.js +1590 -14
  429. package/dist/project/routes.d.ts +44 -0
  430. package/dist/project/routes.js +314 -0
  431. package/dist/project/schedule.d.ts +72 -0
  432. package/dist/project/schedule.js +192 -0
  433. package/dist/project/web/Refresh.d.ts +8 -0
  434. package/dist/project/web/Refresh.js +29 -0
  435. package/dist/project/web/Schedule.d.ts +9 -0
  436. package/dist/project/web/Schedule.js +93 -0
  437. package/dist/project/web/Structure.d.ts +8 -0
  438. package/dist/project/web/Structure.js +86 -0
  439. package/dist/project/web/Workload.d.ts +8 -0
  440. package/dist/project/web/Workload.js +43 -0
  441. package/dist/project/web/index.d.ts +14 -0
  442. package/dist/project/web/index.js +25 -0
  443. package/dist/project/web/messages.d.ts +2 -0
  444. package/dist/project/web/messages.js +85 -0
  445. package/dist/project_account/.kosh/bindings.d.ts +22 -0
  446. package/dist/project_account/.kosh/bindings.js +15 -0
  447. package/dist/project_account/.kosh/schema.d.ts +2763 -0
  448. package/dist/project_account/i18n/bn.d.ts +2 -0
  449. package/dist/project_account/i18n/bn.js +6 -0
  450. package/dist/project_account/index.d.ts +3 -0
  451. package/dist/project_account/index.js +29 -0
  452. package/dist/project_account/module.d.ts +15013 -0
  453. package/dist/project_account/module.js +76 -0
  454. package/dist/project_portal/.kosh/bindings.js +1 -1
  455. package/dist/project_portal/.kosh/schema.d.ts +735 -1
  456. package/dist/project_portal/i18n/bn.d.ts +2 -0
  457. package/dist/project_portal/i18n/bn.js +6 -0
  458. package/dist/project_portal/index.js +2 -0
  459. package/dist/project_portal/module.d.ts +4796 -87
  460. package/dist/project_purchase/.kosh/bindings.d.ts +22 -0
  461. package/dist/project_purchase/.kosh/bindings.js +15 -0
  462. package/dist/project_purchase/.kosh/schema.d.ts +3393 -0
  463. package/dist/project_purchase/i18n/bn.d.ts +2 -0
  464. package/dist/project_purchase/i18n/bn.js +4 -0
  465. package/dist/project_purchase/index.d.ts +9 -0
  466. package/dist/project_purchase/index.js +24 -0
  467. package/dist/project_purchase/module.d.ts +38613 -0
  468. package/dist/project_purchase/module.js +56 -0
  469. package/dist/purchase/.kosh/bindings.js +1 -1
  470. package/dist/purchase/.kosh/schema.d.ts +908 -5
  471. package/dist/purchase/comparison.d.ts +993 -0
  472. package/dist/purchase/comparison.js +415 -0
  473. package/dist/purchase/extras.d.ts +1509 -0
  474. package/dist/purchase/extras.js +445 -0
  475. package/dist/purchase/i18n/bn.d.ts +2 -0
  476. package/dist/purchase/i18n/bn.js +413 -0
  477. package/dist/purchase/index.d.ts +5 -0
  478. package/dist/purchase/index.js +1280 -4
  479. package/dist/purchase/module.d.ts +7147 -395
  480. package/dist/purchase/module.js +303 -10
  481. package/dist/purchase/request.d.ts +696 -0
  482. package/dist/purchase/request.js +446 -0
  483. package/dist/purchase/tender.d.ts +1208 -0
  484. package/dist/purchase/tender.js +507 -0
  485. package/dist/purchase/vendorprice.d.ts +340 -0
  486. package/dist/purchase/vendorprice.js +153 -0
  487. package/dist/purchase_account/.kosh/bindings.js +1 -1
  488. package/dist/purchase_account/.kosh/schema.d.ts +1209 -16
  489. package/dist/purchase_account/i18n/bn.d.ts +2 -0
  490. package/dist/purchase_account/i18n/bn.js +22 -0
  491. package/dist/purchase_account/index.js +20 -0
  492. package/dist/purchase_account/module.d.ts +12232 -2028
  493. package/dist/purchase_account/module.js +252 -9
  494. package/dist/purchase_portal/.kosh/bindings.js +1 -1
  495. package/dist/purchase_portal/.kosh/schema.d.ts +908 -5
  496. package/dist/purchase_portal/i18n/bn.d.ts +2 -0
  497. package/dist/purchase_portal/i18n/bn.js +5 -0
  498. package/dist/purchase_portal/index.js +2 -0
  499. package/dist/purchase_portal/module.d.ts +6853 -352
  500. package/dist/purchase_stock/.kosh/bindings.js +1 -1
  501. package/dist/purchase_stock/.kosh/schema.d.ts +1096 -21
  502. package/dist/purchase_stock/i18n/bn.d.ts +2 -0
  503. package/dist/purchase_stock/i18n/bn.js +19 -0
  504. package/dist/purchase_stock/index.d.ts +2 -2
  505. package/dist/purchase_stock/index.js +38 -2
  506. package/dist/purchase_stock/module.d.ts +12930 -1612
  507. package/dist/purchase_stock/module.js +317 -9
  508. package/dist/purchase_stock/scorecard.d.ts +22 -0
  509. package/dist/purchase_stock/scorecard.js +77 -0
  510. package/dist/purchase_stock/web/Scorecard.d.ts +7 -0
  511. package/dist/purchase_stock/web/Scorecard.js +22 -0
  512. package/dist/purchase_stock/web/index.d.ts +11 -0
  513. package/dist/purchase_stock/web/index.js +16 -0
  514. package/dist/purchase_stock/web/messages.d.ts +2 -0
  515. package/dist/purchase_stock/web/messages.js +27 -0
  516. package/dist/purchase_stock_account/.kosh/bindings.js +1 -1
  517. package/dist/purchase_stock_account/.kosh/schema.d.ts +1444 -20
  518. package/dist/purchase_stock_account/i18n/bn.d.ts +2 -0
  519. package/dist/purchase_stock_account/i18n/bn.js +8 -0
  520. package/dist/purchase_stock_account/index.js +18 -0
  521. package/dist/purchase_stock_account/module.d.ts +7 -35346
  522. package/dist/purchase_stock_account/module.js +35 -8
  523. package/dist/recruitment/.kosh/bindings.js +1 -1
  524. package/dist/recruitment/.kosh/schema.d.ts +60 -1
  525. package/dist/recruitment/i18n/bn.d.ts +2 -0
  526. package/dist/recruitment/i18n/bn.js +93 -0
  527. package/dist/recruitment/index.js +64 -0
  528. package/dist/recruitment/module.d.ts +460 -8
  529. package/dist/recruitment/module.js +13 -4
  530. package/dist/reporting/documents.d.ts +5 -0
  531. package/dist/reporting/documents.js +11 -1
  532. package/dist/reporting/index.d.ts +1 -1
  533. package/dist/reporting/index.js +1 -1
  534. package/dist/reporting/web/CalendarView.d.ts +18 -5
  535. package/dist/reporting/web/CalendarView.js +163 -29
  536. package/dist/reporting/web/messages.js +18 -0
  537. package/dist/sale_account/.kosh/bindings.js +1 -1
  538. package/dist/sale_account/.kosh/schema.d.ts +763 -18
  539. package/dist/sale_account/i18n/bn.d.ts +2 -0
  540. package/dist/sale_account/i18n/bn.js +48 -0
  541. package/dist/sale_account/index.d.ts +1 -1
  542. package/dist/sale_account/index.js +102 -4
  543. package/dist/sale_account/module.d.ts +8241 -2052
  544. package/dist/sale_account/module.js +535 -46
  545. package/dist/sale_crm/.kosh/bindings.d.ts +22 -0
  546. package/dist/sale_crm/.kosh/bindings.js +15 -0
  547. package/dist/{mrp → sale_crm}/.kosh/schema.d.ts +391 -494
  548. package/dist/sale_crm/i18n/bn.d.ts +2 -0
  549. package/dist/sale_crm/i18n/bn.js +9 -0
  550. package/dist/sale_crm/index.d.ts +7 -0
  551. package/dist/sale_crm/index.js +104 -0
  552. package/dist/sale_crm/module.d.ts +5609 -0
  553. package/dist/sale_crm/module.js +73 -0
  554. package/dist/sale_portal/.kosh/bindings.js +1 -1
  555. package/dist/sale_portal/.kosh/schema.d.ts +292 -4
  556. package/dist/sale_portal/i18n/bn.d.ts +2 -0
  557. package/dist/sale_portal/i18n/bn.js +7 -0
  558. package/dist/sale_portal/index.js +10 -0
  559. package/dist/sale_portal/module.d.ts +2563 -292
  560. package/dist/sale_project/.kosh/bindings.js +1 -1
  561. package/dist/sale_project/.kosh/schema.d.ts +1025 -4
  562. package/dist/sale_project/i18n/bn.d.ts +2 -0
  563. package/dist/sale_project/i18n/bn.js +12 -0
  564. package/dist/sale_project/index.js +2 -0
  565. package/dist/sale_project/module.d.ts +9280 -762
  566. package/dist/sale_project/module.js +17 -1
  567. package/dist/sale_stock/.kosh/bindings.js +1 -1
  568. package/dist/sale_stock/.kosh/schema.d.ts +463 -6
  569. package/dist/sale_stock/i18n/bn.d.ts +2 -0
  570. package/dist/sale_stock/i18n/bn.js +15 -0
  571. package/dist/sale_stock/index.js +2 -0
  572. package/dist/sale_stock/module.d.ts +8355 -1334
  573. package/dist/sale_stock/module.js +20 -3
  574. package/dist/sales/.kosh/bindings.js +1 -1
  575. package/dist/sales/.kosh/schema.d.ts +292 -4
  576. package/dist/sales/i18n/bn.d.ts +2 -0
  577. package/dist/sales/i18n/bn.js +128 -0
  578. package/dist/sales/index.js +124 -5
  579. package/dist/sales/module.d.ts +3568 -633
  580. package/dist/sales/module.js +306 -11
  581. package/dist/server/api/duplicate.d.ts +14 -0
  582. package/dist/server/api/duplicate.js +75 -0
  583. package/dist/server/api/explain.d.ts +70 -0
  584. package/dist/server/api/explain.js +111 -0
  585. package/dist/server/api/metadata.d.ts +2 -0
  586. package/dist/server/api/metadata.js +9 -0
  587. package/dist/server/api/openapi.js +15 -0
  588. package/dist/server/api/rest.d.ts +1 -0
  589. package/dist/server/api/rest.js +76 -12
  590. package/dist/server/api/views.js +1 -1
  591. package/dist/server/apps.d.ts +16 -1
  592. package/dist/server/apps.js +164 -2
  593. package/dist/server/auth/base.js +2 -0
  594. package/dist/server/auth/service.d.ts +8 -0
  595. package/dist/server/auth/service.js +19 -0
  596. package/dist/server/events.d.ts +13 -0
  597. package/dist/server/events.js +22 -0
  598. package/dist/server/i18n.d.ts +27 -0
  599. package/dist/server/i18n.js +143 -0
  600. package/dist/server/index.d.ts +2 -0
  601. package/dist/server/index.js +2 -0
  602. package/dist/server/server.js +6 -0
  603. package/dist/settings/company.d.ts +3 -1
  604. package/dist/settings/company.js +26 -5
  605. package/dist/settings/routes.d.ts +10 -0
  606. package/dist/settings/routes.js +19 -3
  607. package/dist/settings/web/AppsPage.d.ts +3 -2
  608. package/dist/settings/web/AppsPage.js +26 -8
  609. package/dist/settings/web/CompaniesPage.js +91 -6
  610. package/dist/settings/web/messages.js +64 -0
  611. package/dist/sign/.kosh/bindings.d.ts +22 -0
  612. package/dist/{mrp → sign}/.kosh/bindings.js +2 -2
  613. package/dist/sign/.kosh/schema.d.ts +991 -0
  614. package/dist/sign/i18n/bn.d.ts +2 -0
  615. package/dist/sign/i18n/bn.js +97 -0
  616. package/dist/sign/index.d.ts +29 -0
  617. package/dist/sign/index.js +478 -0
  618. package/dist/sign/module.d.ts +4518 -0
  619. package/dist/sign/module.js +167 -0
  620. package/dist/sign/sign.d.ts +82 -0
  621. package/dist/sign/sign.js +474 -0
  622. package/dist/stock/.kosh/bindings.js +1 -1
  623. package/dist/stock/.kosh/schema.d.ts +374 -3
  624. package/dist/stock/demo.d.ts +2 -1
  625. package/dist/stock/demo.js +28 -1
  626. package/dist/stock/i18n/bn.d.ts +2 -0
  627. package/dist/stock/i18n/bn.js +311 -0
  628. package/dist/stock/index.d.ts +4 -1
  629. package/dist/stock/index.js +674 -6
  630. package/dist/stock/ledger.d.ts +78 -0
  631. package/dist/stock/ledger.js +582 -0
  632. package/dist/stock/module.d.ts +6142 -1380
  633. package/dist/stock/module.js +780 -26
  634. package/dist/stock/replenish.d.ts +38 -0
  635. package/dist/stock/replenish.js +191 -0
  636. package/dist/stock/returns.d.ts +157 -0
  637. package/dist/stock/returns.js +163 -0
  638. package/dist/stock/web/Ledger.d.ts +9 -0
  639. package/dist/stock/web/Ledger.js +108 -0
  640. package/dist/stock/web/Operations.d.ts +8 -0
  641. package/dist/stock/web/Operations.js +33 -0
  642. package/dist/stock/web/Replenishment.d.ts +8 -0
  643. package/dist/stock/web/Replenishment.js +84 -0
  644. package/dist/stock/web/ReturnButton.d.ts +7 -0
  645. package/dist/stock/web/ReturnButton.js +62 -0
  646. package/dist/stock/web/index.d.ts +7 -2
  647. package/dist/stock/web/index.js +15 -2
  648. package/dist/stock/web/messages.js +206 -0
  649. package/dist/stock_account/.kosh/bindings.js +1 -1
  650. package/dist/stock_account/.kosh/schema.d.ts +878 -12
  651. package/dist/stock_account/i18n/bn.d.ts +2 -0
  652. package/dist/stock_account/i18n/bn.js +73 -0
  653. package/dist/stock_account/index.d.ts +1 -0
  654. package/dist/stock_account/index.js +141 -3
  655. package/dist/stock_account/landed.d.ts +429 -0
  656. package/dist/stock_account/landed.js +335 -0
  657. package/dist/stock_account/module.d.ts +12143 -3391
  658. package/dist/stock_account/module.js +135 -6
  659. package/dist/stock_account/web/LandedPreview.d.ts +7 -0
  660. package/dist/stock_account/web/LandedPreview.js +23 -0
  661. package/dist/stock_account/web/index.d.ts +11 -0
  662. package/dist/stock_account/web/index.js +16 -0
  663. package/dist/stock_account/web/messages.d.ts +2 -0
  664. package/dist/stock_account/web/messages.js +27 -0
  665. package/dist/todo/i18n/bn.d.ts +2 -0
  666. package/dist/todo/i18n/bn.js +66 -0
  667. package/dist/todo/index.js +59 -0
  668. package/dist/todo/module.d.ts +5 -0
  669. package/dist/todo/module.js +5 -3
  670. package/dist/trade_finance/.kosh/bindings.js +1 -1
  671. package/dist/trade_finance/.kosh/schema.d.ts +2 -1
  672. package/dist/trade_finance/i18n/bn.d.ts +2 -0
  673. package/dist/trade_finance/i18n/bn.js +162 -0
  674. package/dist/trade_finance/index.js +95 -0
  675. package/dist/trade_finance/module.d.ts +26 -0
  676. package/dist/trade_finance/module.js +29 -8
  677. package/dist/trade_finance_account/.kosh/bindings.js +1 -1
  678. package/dist/trade_finance_account/.kosh/schema.d.ts +651 -10
  679. package/dist/trade_finance_account/i18n/bn.d.ts +2 -0
  680. package/dist/trade_finance_account/i18n/bn.js +27 -0
  681. package/dist/trade_finance_account/index.js +3 -0
  682. package/dist/trade_finance_account/module.d.ts +5129 -1509
  683. package/dist/trade_finance_account/module.js +2 -0
  684. package/dist/trade_finance_purchase/.kosh/bindings.js +1 -1
  685. package/dist/trade_finance_purchase/.kosh/schema.d.ts +908 -5
  686. package/dist/trade_finance_purchase/i18n/bn.d.ts +2 -0
  687. package/dist/trade_finance_purchase/i18n/bn.js +6 -0
  688. package/dist/trade_finance_purchase/index.js +2 -0
  689. package/dist/trade_finance_purchase/module.d.ts +6909 -408
  690. package/dist/trade_finance_sale/.kosh/bindings.js +1 -1
  691. package/dist/trade_finance_sale/.kosh/schema.d.ts +292 -4
  692. package/dist/trade_finance_sale/i18n/bn.d.ts +2 -0
  693. package/dist/trade_finance_sale/i18n/bn.js +6 -0
  694. package/dist/trade_finance_sale/index.js +2 -0
  695. package/dist/trade_finance_sale/module.d.ts +2602 -331
  696. package/dist/ui/api.d.ts +2 -0
  697. package/dist/ui/app.d.ts +9 -0
  698. package/dist/ui/app.js +47 -15
  699. package/dist/ui/components/AppIcon.js +9 -2
  700. package/dist/ui/components/Explain.d.ts +69 -0
  701. package/dist/ui/components/Explain.js +62 -0
  702. package/dist/ui/context.d.ts +8 -1
  703. package/dist/ui/context.js +34 -1
  704. package/dist/ui/i18n/messages.d.ts +40 -0
  705. package/dist/ui/i18n/messages.js +80 -0
  706. package/dist/ui/index.d.ts +2 -1
  707. package/dist/ui/index.js +1 -0
  708. package/dist/ui/registry.d.ts +14 -0
  709. package/dist/ui/registry.js +10 -0
  710. package/dist/ui/views/FormView.d.ts +6 -0
  711. package/dist/ui/views/FormView.js +51 -12
  712. package/dist/ui/views/KanbanView.js +9 -1
  713. package/dist/ui/views/ListView.d.ts +8 -0
  714. package/dist/ui/views/ListView.js +14 -5
  715. package/dist/ui/views/StatsRow.js +2 -1
  716. package/dist/ui/views/widgets.js +7 -1
  717. package/dist/views/extend.js +12 -0
  718. package/dist/views/types.d.ts +13 -2
  719. package/dist/views/validate.js +8 -1
  720. package/dist/website/.kosh/bindings.js +1 -1
  721. package/dist/website/.kosh/schema.d.ts +2 -1
  722. package/dist/website/i18n/bn.d.ts +2 -0
  723. package/dist/website/i18n/bn.js +113 -0
  724. package/dist/website/index.js +37 -0
  725. package/dist/website/module.d.ts +20 -0
  726. package/dist/website/module.js +30 -5
  727. package/dist/website_crm/.kosh/bindings.js +1 -1
  728. package/dist/website_crm/.kosh/schema.d.ts +3 -1
  729. package/dist/website_crm/i18n/bn.d.ts +2 -0
  730. package/dist/website_crm/i18n/bn.js +5 -0
  731. package/dist/website_crm/index.js +2 -0
  732. package/dist/website_crm/module.d.ts +41 -0
  733. package/dist/website_sale/.kosh/bindings.d.ts +22 -0
  734. package/dist/website_sale/.kosh/bindings.js +15 -0
  735. package/dist/website_sale/.kosh/schema.d.ts +2909 -0
  736. package/dist/website_sale/couriers.d.ts +50 -0
  737. package/dist/website_sale/couriers.js +59 -0
  738. package/dist/website_sale/demo.d.ts +7 -0
  739. package/dist/website_sale/demo.js +90 -0
  740. package/dist/website_sale/growth.d.ts +31 -0
  741. package/dist/website_sale/growth.js +163 -0
  742. package/dist/website_sale/i18n/bn.d.ts +2 -0
  743. package/dist/website_sale/i18n/bn.js +132 -0
  744. package/dist/website_sale/index.d.ts +49 -0
  745. package/dist/website_sale/index.js +620 -0
  746. package/dist/website_sale/module.d.ts +35182 -0
  747. package/dist/website_sale/module.js +419 -0
  748. package/dist/website_sale/shipments.d.ts +16 -0
  749. package/dist/website_sale/shipments.js +113 -0
  750. package/dist/website_sale/shop.d.ts +81 -0
  751. package/dist/website_sale/shop.js +662 -0
  752. package/dist/website_sale_stock/.kosh/bindings.d.ts +22 -0
  753. package/dist/website_sale_stock/.kosh/bindings.js +15 -0
  754. package/dist/website_sale_stock/.kosh/schema.d.ts +3400 -0
  755. package/dist/website_sale_stock/i18n/bn.d.ts +2 -0
  756. package/dist/website_sale_stock/i18n/bn.js +4 -0
  757. package/dist/website_sale_stock/index.d.ts +9 -0
  758. package/dist/website_sale_stock/index.js +22 -0
  759. package/dist/website_sale_stock/module.d.ts +11 -0
  760. package/dist/website_sale_stock/module.js +32 -0
  761. package/package.json +117 -8
  762. package/dist/mrp/index.d.ts +0 -3
  763. package/dist/mrp/index.js +0 -392
  764. package/dist/mrp/module.js +0 -695
  765. package/dist/mrp_account/index.d.ts +0 -3
  766. package/dist/mrp_account/index.js +0 -22
  767. /package/dist/{mrp → account_asset}/.kosh/bindings.d.ts +0 -0
  768. /package/dist/{mrp_account → account_budget}/.kosh/bindings.d.ts +0 -0
@@ -0,0 +1,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: c751bc104fae75ff
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: c751bc104fae75ff
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';
@@ -665,8 +722,10 @@ export interface ProductCategory {
665
722
  readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
666
723
  readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
667
724
  readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
725
+ readonly active: F.Bool<{ readonly required: true; readonly default: true }>;
668
726
  readonly name: F.Char<{ readonly required: true; readonly translate: true }>;
669
727
  readonly parent: F.Many2one<'product.category'>;
728
+ readonly approvalUsers: F.Many2many<'res.users', { readonly required: true }>;
670
729
  };
671
730
  readonly methods: ProductCategoryMethods;
672
731
  }
@@ -675,6 +734,66 @@ export interface ProductCategory {
675
734
  export interface ProductCategoryMethods extends F.Methods<typeof import('../../product/index.js').productShutro, 'product.category'> {
676
735
  }
677
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
+
678
797
  /** `product.product` (owner: product). */
679
798
  export interface ProductProduct {
680
799
  readonly name: 'product.product';
@@ -690,8 +809,11 @@ export interface ProductProduct {
690
809
  readonly code: F.Char<{ readonly readonly: true; readonly sequence: true }>;
691
810
  readonly kind: F.Selection<'goods' | 'service', { readonly required: true; readonly default: true }>;
692
811
  readonly category: F.Many2one<'product.category'>;
812
+ readonly invoicePolicy: F.Selection<'ordered' | 'delivered', { readonly default: true }>;
693
813
  readonly uom: F.Many2one<'uom.uom'>;
694
814
  readonly barcode: F.Char;
815
+ readonly weight: F.Decimal;
816
+ readonly volume: F.Decimal;
695
817
  readonly image: F.Many2one<'storage.attachment'>;
696
818
  readonly listPrice: F.Decimal<{ readonly required: true; readonly default: true }>;
697
819
  readonly standardPrice: F.Decimal<{ readonly required: true; readonly default: true }>;
@@ -702,6 +824,9 @@ export interface ProductProduct {
702
824
  readonly tax: F.Many2one<'account.tax', { readonly readonly: true }>;
703
825
  readonly purchaseTax: F.Many2one<'account.tax', { readonly readonly: true }>;
704
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 }>;
705
830
  };
706
831
  readonly methods: ProductProductMethods;
707
832
  }
@@ -710,6 +835,86 @@ export interface ProductProduct {
710
835
  export interface ProductProductMethods extends F.Methods<typeof import('../../product/index.js').productShutro, 'product.product'> {
711
836
  }
712
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
+
713
918
  /** `res.company` (owner: base; extended by: contacts, sales). */
714
919
  export interface ResCompany {
715
920
  readonly name: 'res.company';
@@ -763,7 +968,7 @@ export interface ResCurrency {
763
968
  export interface ResCurrencyMethods extends F.Methods<typeof import('../../server/index.js').baseShutro, 'res.currency'> {
764
969
  }
765
970
 
766
- /** `res.partner` (owner: contacts; extended by: portal). */
971
+ /** `res.partner` (owner: contacts; extended by: portal, sales). */
767
972
  export interface ResPartner {
768
973
  readonly name: 'res.partner';
769
974
  readonly fields: {
@@ -784,6 +989,7 @@ export interface ResPartner {
784
989
  readonly parent: F.Many2one<'res.partner'>;
785
990
  readonly contacts: F.One2many<'res.partner', { readonly required: true }>;
786
991
  readonly email: F.Char;
992
+ readonly lang: F.Selection<'en' | 'bn'>;
787
993
  readonly phone: F.Char;
788
994
  readonly mobile: F.Char;
789
995
  readonly website: F.Char;
@@ -798,12 +1004,13 @@ export interface ResPartner {
798
1004
  readonly currency: F.Many2one<'res.currency'>;
799
1005
  readonly notes: F.Text;
800
1006
  readonly portalUsers: F.One2many<'res.users', { readonly required: true }>; // portal
1007
+ readonly pricelist: F.Many2one<'product.pricelist'>; // sales
801
1008
  };
802
1009
  readonly methods: ResPartnerMethods;
803
1010
  }
804
1011
 
805
1012
  /** Methods of `res.partner`: declared ones and transitions. */
806
- 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'> {
807
1014
  }
808
1015
 
809
1016
  /** `res.partner.tag` (owner: contacts). */
@@ -868,12 +1075,17 @@ export interface SaleOrder {
868
1075
  readonly name: F.Char<{ readonly required: true; readonly readonly: true; readonly sequence: true }>;
869
1076
  readonly user: F.Many2one<'res.users', { readonly required: true; readonly default: true }>;
870
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'>;
871
1081
  readonly currency: F.Many2one<'res.currency', { readonly required: true }>;
872
1082
  readonly dateOrder: F.DateOnly<{ readonly required: true; readonly default: true }>;
873
1083
  readonly validityDate: F.DateOnly;
874
1084
  readonly clientReference: F.Char;
875
1085
  readonly note: F.Text;
876
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 }>;
877
1089
  readonly amountUntaxed: F.Monetary<'currency', { readonly readonly: true; readonly compute: true; readonly store: true }>;
878
1090
  readonly amountTax: F.Monetary<'currency', { readonly readonly: true; readonly compute: true; readonly store: true }>;
879
1091
  readonly amountTotal: F.Monetary<'currency', { readonly readonly: true; readonly compute: true; readonly store: true }>;
@@ -888,6 +1100,7 @@ export interface SaleOrder {
888
1100
  export interface SaleOrderMethods extends F.Methods<typeof import('../../sales/index.js').salesShutro, 'sale.order'>, F.Methods<typeof import('../module.js').salePortalShutro, 'sale.order'> {
889
1101
  readonly 'cancel': () => Promise<void>;
890
1102
  readonly 'confirm': () => Promise<void>;
1103
+ readonly 'fill': () => Promise<void>;
891
1104
  readonly 'lock': () => Promise<void>;
892
1105
  readonly 'redraft': () => Promise<void>;
893
1106
  readonly 'send': () => Promise<void>;
@@ -909,7 +1122,9 @@ export interface SaleOrderLine {
909
1122
  readonly name: F.Char<{ readonly required: true }>;
910
1123
  readonly quantity: F.Decimal<{ readonly required: true; readonly default: true }>;
911
1124
  readonly uom: F.Many2one<'uom.uom'>;
912
- 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 }>;
913
1128
  readonly discount: F.Decimal<{ readonly required: true; readonly default: true }>;
914
1129
  readonly taxes: F.Many2many<'account.tax', { readonly required: true }>;
915
1130
  readonly tax: F.Many2one<'account.tax', { readonly readonly: true }>;
@@ -925,6 +1140,79 @@ export interface SaleOrderLine {
925
1140
  export interface SaleOrderLineMethods extends F.Methods<typeof import('../../sales/index.js').salesShutro, 'sale.order.line'> {
926
1141
  }
927
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
+
928
1216
  /** `storage.attachment` (owner: storage). */
929
1217
  export interface StorageAttachment {
930
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
  {