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
@@ -10,6 +10,7 @@ import { productShutro } from '../product/index.js';
10
10
  import { orm } from '../server/orm.js';
11
11
  import { stockShutro } from '../stock/index.js';
12
12
  import { defineModel, defineModule, extendModel, f, method, } from './.kosh/bindings.js';
13
+ import { ProductLanded, StockLandedCost, StockLandedCostLine } from './landed.js';
13
14
  const zero = orm.toDecimal(0);
14
15
  const money = (d) => d.toDecimalPlaces(2);
15
16
  /** The accounts this bridge adds to a chart (by code), when the chart has none with that code. */
@@ -150,6 +151,14 @@ export async function stockAccountsOf(env, company) {
150
151
  * at `incomingUnitCost` (the product's cost; a bridge may know better, a purchase order's price); outgoing stock at
151
152
  * the average cost or, FIFO, from the oldest incoming layers still in stock.
152
153
  */
154
+ /** The unit cost each original move was valued at (its layer's), by move. */
155
+ async function originalCosts(env, moves) {
156
+ const ids = moves.filter((m) => m !== null);
157
+ if (ids.length === 0)
158
+ return new Map();
159
+ const layers = await (await env.model('stock.valuation.layer').search({ where: { move: { in: ids } } })).load({ move: true });
160
+ return new Map(layers.map((l) => [l.move?.id, l.unitCost.abs()]));
161
+ }
153
162
  async function valueTransfers(pickings) {
154
163
  const env = pickings.env;
155
164
  const loaded = await pickings.load({
@@ -157,7 +166,7 @@ async function valueTransfers(pickings) {
157
166
  destination: true,
158
167
  company: true,
159
168
  partner: true,
160
- moves: { product: { category: true } },
169
+ moves: { product: { category: true }, returnOf: true },
161
170
  });
162
171
  for (const p of loaded) {
163
172
  const incoming = p.source.usage !== 'internal' && p.destination.usage === 'internal';
@@ -213,7 +222,29 @@ async function valueTransfers(pickings) {
213
222
  }
214
223
  else {
215
224
  let left = quantity;
216
- if (fifo) {
225
+ // Goods going back to the vendor leave at what they came in at (RFC 0030 §3.2), off their own layer.
226
+ const back = m.returnOf === null
227
+ ? null
228
+ : await (await env.model('stock.valuation.layer').search({
229
+ where: { move: m.returnOf.id, quantity: { gt: '0' } },
230
+ limit: 1,
231
+ })).load(['unitCost', 'remainingQty', 'remainingValue']);
232
+ const [layer] = back === null ? [] : [...back];
233
+ if (layer !== undefined) {
234
+ value = money(quantity.times(layer.unitCost));
235
+ left = zero;
236
+ if (fifo && layer.remainingQty.gt(0)) {
237
+ const take = quantity.lt(layer.remainingQty) ? quantity : layer.remainingQty;
238
+ const part = take.eq(layer.remainingQty)
239
+ ? layer.remainingValue
240
+ : money(layer.remainingValue.times(take).div(layer.remainingQty));
241
+ await layer.write({
242
+ remainingQty: layer.remainingQty.minus(take),
243
+ remainingValue: layer.remainingValue.minus(part),
244
+ });
245
+ }
246
+ }
247
+ if (fifo && left.gt(0)) {
217
248
  const open = await (await env.model('stock.valuation.layer').search({
218
249
  where: { company: p.company.id, product: product.id, remainingQty: { gt: '0' } },
219
250
  order: ['id asc'],
@@ -294,6 +325,28 @@ async function valueTransfers(pickings) {
294
325
  }
295
326
  }
296
327
  export const MoveCost = extendModel('stock.move', {
328
+ overrides: {
329
+ // The ledger's values: each line's valuation layers, when this person may read the valuation.
330
+ moveValues: async function (next) {
331
+ const out = await next();
332
+ const moves = this;
333
+ if (!moves.env.access.can('stock.valuation.layer', 'read'))
334
+ return out;
335
+ const layers = await (await moves.env
336
+ .model('stock.valuation.layer')
337
+ .search({ where: { move: { in: [...moves.ids] } }, limit: 50000 })).load({ move: true });
338
+ for (const l of layers) {
339
+ const id = l.move?.id;
340
+ if (id === undefined)
341
+ continue;
342
+ out.set(id, orm
343
+ .toDecimal(out.get(id) ?? '0')
344
+ .plus(l.value)
345
+ .toString());
346
+ }
347
+ return out;
348
+ },
349
+ },
297
350
  methods: {
298
351
  /**
299
352
  * What each of these lines' stock costs when it comes in, by line, in the product's unit, as a decimal string:
@@ -301,8 +354,13 @@ export const MoveCost = extendModel('stock.move', {
301
354
  */
302
355
  incomingUnitCost: method('stock.move', async function () {
303
356
  const out = new Map();
304
- for (const m of await this.load({ product: true }))
305
- out.set(m.id, m.product.standardPrice.toString());
357
+ const moves = await this.load({ product: true, returnOf: true });
358
+ // A customer's return comes back at what it went out at (RFC 0030 §3.2).
359
+ const original = await originalCosts(this.env, moves.map((m) => m.returnOf?.id ?? null));
360
+ for (const m of moves) {
361
+ const cost = m.returnOf === null ? undefined : original.get(m.returnOf.id);
362
+ out.set(m.id, (cost ?? m.product.standardPrice).toString());
363
+ }
306
364
  return out;
307
365
  }),
308
366
  },
@@ -313,12 +371,82 @@ export const PickingValued = extendModel('stock.picking', {
313
371
  validated: async function (next) {
314
372
  await next();
315
373
  await valueTransfers(this);
374
+ await transportBills(this);
316
375
  },
317
376
  },
318
377
  });
378
+ /**
379
+ * The transport of validated transfers in the books (RFC 0032 §3.3), as drafts an accountant completes (the account)
380
+ * and posts: the transport vendor's freight bill — the freight with its additions and deductions — and, for a receipt
381
+ * whose supplier bears a deduction, a vendor refund to the supplier. Each is made once, when the transfer is validated.
382
+ */
383
+ async function transportBills(pickings) {
384
+ const env = pickings.env;
385
+ for (const p of await pickings.load({
386
+ charges: true,
387
+ partner: true,
388
+ transporter: true,
389
+ company: true,
390
+ })) {
391
+ const journal = (await env.model('account.journal').search({
392
+ where: { company: p.company.id, type: 'purchase' },
393
+ limit: 1,
394
+ })).ids[0];
395
+ if (journal === undefined)
396
+ continue; // no chart yet
397
+ const [company] = await env.model('res.company').browse([p.company.id]).load({});
398
+ const draft = async (kind, partner, lines) => env.model('account.move').create([
399
+ {
400
+ kind,
401
+ journal,
402
+ partner,
403
+ company: p.company.id,
404
+ currency: company?.currency.id,
405
+ date: env.today(),
406
+ invoiceOrigin: p.name,
407
+ ref: p.origin ? `${p.name} (${p.origin})` : p.name,
408
+ lines: {
409
+ create: lines.map((l) => ({
410
+ lineKind: 'product',
411
+ name: l.name,
412
+ quantity: '1',
413
+ priceUnit: l.amount,
414
+ debit: '0',
415
+ credit: '0',
416
+ })),
417
+ },
418
+ },
419
+ ]);
420
+ if (p.transporter && p.freightAmount?.gt(0)) {
421
+ const lines = [{ name: `Freight ${p.name}`, amount: p.freightAmount }];
422
+ for (const c of p.charges)
423
+ if (c.amount.gt(0))
424
+ lines.push({
425
+ name: `${c.name} (${p.name})`,
426
+ amount: c.kind === 'deduction' ? c.amount.negated() : c.amount,
427
+ });
428
+ await draft('in_invoice', p.transporter.id, lines);
429
+ }
430
+ if (p.kind === 'receipt' &&
431
+ p.deductFromSupplier &&
432
+ p.partner !== null &&
433
+ p.supplierDeduction?.gt(0))
434
+ await draft('in_refund', p.partner.id, [
435
+ { name: `Deduction on receipt ${p.name}`, amount: p.supplierDeduction },
436
+ ]);
437
+ }
438
+ }
319
439
  export const stockAccountShutro = defineModule({
320
440
  name: 'stock_account',
321
- version: '0.1.0',
441
+ version: '0.2.0',
442
+ sequences: [
443
+ orm.defineSequence({
444
+ code: 'stock.landed.cost',
445
+ prefix: 'LC/{year}/',
446
+ padding: 5,
447
+ reset: 'yearly',
448
+ }),
449
+ ],
322
450
  depends: [stockShutro, accountingShutro, productShutro],
323
451
  groups: [
324
452
  orm.defineGroup({
@@ -327,8 +455,9 @@ export const stockAccountShutro = defineModule({
327
455
  implies: ['stock.user'],
328
456
  }),
329
457
  ],
330
- models: [StockValuationLayer],
458
+ models: [StockValuationLayer, StockLandedCost, StockLandedCostLine],
331
459
  extensions: [
460
+ ProductLanded,
332
461
  CategoryValuation,
333
462
  ProductValuation,
334
463
  CompanyStockAccounts,
@@ -0,0 +1,7 @@
1
+ /**
2
+ * On a draft landed cost (RFC 0030 §3.3): each receipt line's share of the costs, what goes to the stock on hand and
3
+ * what to the cost of goods sold, before posting. The server splits; this shows it, or why it cannot yet.
4
+ */
5
+ import { type NodeComponentProps } from '../../ui/index.js';
6
+ import { type ReactElement } from 'react';
7
+ export declare function LandedPreview({ record, api, version }: NodeComponentProps): ReactElement | null;
@@ -0,0 +1,23 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * On a draft landed cost (RFC 0030 §3.3): each receipt line's share of the costs, what goes to the stock on hand and
4
+ * what to the cost of goods sold, before posting. The server splits; this shows it, or why it cannot yet.
5
+ */
6
+ import { ApiError } from '../../ui/index.js';
7
+ import { useQuery } from '@tanstack/react-query';
8
+ import { useId } from 'react';
9
+ import { useTranslation } from 'react-i18next';
10
+ export function LandedPreview({ record, api, version }) {
11
+ const { t } = useTranslation('stock_account');
12
+ const id = useId();
13
+ const draft = record !== null && record['state'] === 'draft';
14
+ const preview = useQuery({
15
+ queryKey: ['stock_account', 'landed-preview', record?.id, version],
16
+ queryFn: () => api.call('GET', `/api/v1/stockroom/landed-costs/${record?.id}/preview`),
17
+ enabled: draft,
18
+ retry: false,
19
+ });
20
+ if (!draft)
21
+ return null;
22
+ return (_jsxs("section", { "aria-labelledby": `${id}-title`, className: "grid gap-2 rounded-md border p-3 text-sm", children: [_jsx("h3", { id: `${id}-title`, className: "font-medium", children: t('landed.title') }), preview.error !== null ? (_jsx("p", { className: "text-muted-foreground", children: preview.error instanceof ApiError ? preview.error.message : String(preview.error) })) : (_jsx("div", { className: "overflow-x-auto", children: _jsxs("table", { className: "w-full", children: [_jsx("thead", { className: "text-muted-foreground", children: _jsxs("tr", { children: [_jsx("th", { className: "py-1 text-start font-medium", children: t('landed.receipt') }), _jsx("th", { className: "py-1 text-start font-medium", children: t('landed.product') }), _jsx("th", { className: "py-1 text-end font-medium", children: t('landed.quantity') }), _jsx("th", { className: "py-1 text-end font-medium", children: t('landed.value') }), _jsx("th", { className: "py-1 text-end font-medium", children: t('landed.added') }), _jsx("th", { className: "py-1 text-end font-medium", children: t('landed.toStock') }), _jsx("th", { className: "py-1 text-end font-medium", children: t('landed.toCogs') })] }) }), _jsx("tbody", { children: (preview.data?.lines ?? []).map((l) => (_jsxs("tr", { className: "border-t", children: [_jsx("td", { className: "py-1", children: l.picking }), _jsx("td", { className: "py-1", children: l.product }), _jsx("td", { className: "py-1 text-end tabular-nums", children: l.quantity }), _jsx("td", { className: "py-1 text-end tabular-nums", children: l.value }), _jsx("td", { className: "py-1 text-end tabular-nums font-medium", children: l.added }), _jsx("td", { className: "py-1 text-end tabular-nums", children: l.toStock }), _jsx("td", { className: "py-1 text-end tabular-nums", children: l.toCogs })] }, l.move))) })] }) }))] }));
23
+ }
@@ -0,0 +1,11 @@
1
+ /**
2
+ * @packageDocumentation
3
+ * The web contribution of `shutro-erp/stock_account`: the landed cost split preview (RFC 0030 §3.3).
4
+ */
5
+ import { type Registry } from '../../ui/index.js';
6
+ import type { i18n } from 'i18next';
7
+ import { messages } from './messages.js';
8
+ export { LandedPreview } from './LandedPreview.js';
9
+ /** Registers the component (and the messages in `i18n`, when given). */
10
+ export declare function registerStockAccountWeb(registry: Registry, i18n?: i18n): Registry;
11
+ export { messages as stockAccountMessages };
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @packageDocumentation
3
+ * The web contribution of `shutro-erp/stock_account`: the landed cost split preview (RFC 0030 §3.3).
4
+ */
5
+ import { addMessages } from '../../ui/index.js';
6
+ import { LandedPreview } from './LandedPreview.js';
7
+ import { messages } from './messages.js';
8
+ export { LandedPreview } from './LandedPreview.js';
9
+ /** Registers the component (and the messages in `i18n`, when given). */
10
+ export function registerStockAccountWeb(registry, i18n) {
11
+ registry.registerComponent('stock_account.LandedPreview', LandedPreview);
12
+ if (i18n !== undefined)
13
+ addMessages(i18n, 'stock_account', messages);
14
+ return registry;
15
+ }
16
+ export { messages as stockAccountMessages };
@@ -0,0 +1,2 @@
1
+ /** Messages of the stock valuation components (namespace `stock_account`), in English and Bangla. */
2
+ export declare const messages: Readonly<Record<string, object>>;
@@ -0,0 +1,27 @@
1
+ /** Messages of the stock valuation components (namespace `stock_account`), in English and Bangla. */
2
+ export const messages = {
3
+ en: {
4
+ landed: {
5
+ title: 'How the costs are split',
6
+ receipt: 'Receipt',
7
+ product: 'Product',
8
+ quantity: 'Quantity',
9
+ value: 'Value',
10
+ added: 'Added',
11
+ toStock: 'To stock',
12
+ toCogs: 'To cost of sales',
13
+ },
14
+ },
15
+ bn: {
16
+ landed: {
17
+ title: 'খরচ কীভাবে ভাগ হয়',
18
+ receipt: 'রিসিট',
19
+ product: 'পণ্য',
20
+ quantity: 'পরিমাণ',
21
+ value: 'মূল্য',
22
+ added: 'যোগ',
23
+ toStock: 'স্টকে',
24
+ toCogs: 'বিক্রয় খরচে',
25
+ },
26
+ },
27
+ };
@@ -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,66 @@
1
+ /** Bangla for the module's labels, keyed by their English text (RFC 0023 §3.1; `pnpm i18n:extract`). */
2
+ export const bn = {
3
+ 'About (id)': 'সম্পর্কিত (আইডি)',
4
+ 'About (model)': 'সম্পর্কিত (মডেল)',
5
+ Active: 'সক্রিয়',
6
+ Amber: 'অ্যাম্বার',
7
+ Blue: 'নীল',
8
+ Checklist: 'চেকলিস্ট',
9
+ 'Checklist › Done': 'চেকলিস্ট › সম্পন্ন',
10
+ 'Checklist › Step': 'চেকলিস্ট › ধাপ',
11
+ 'Checklist done (%)': 'চেকলিস্ট সম্পন্ন (%)',
12
+ 'Checklist item': 'চেকলিস্টের বিষয়',
13
+ Color: 'রং',
14
+ 'Created At': 'তৈরির সময়',
15
+ 'Created By': 'তৈরি করেছেন',
16
+ 'Display Name': 'প্রদর্শিত নাম',
17
+ Done: 'সম্পন্ন',
18
+ 'Done this month': 'এ মাসে সম্পন্ন',
19
+ Due: 'নির্ধারিত তারিখ',
20
+ Focus: 'ফোকাস',
21
+ 'Focus user': 'ফোকাস ব্যবহারকারী',
22
+ For: 'যার জন্য',
23
+ Green: 'সবুজ',
24
+ High: 'উচ্চ',
25
+ 'How pressing it is: normal, high or urgent.': 'এটি কতটা জরুরি: সাধারণ, উচ্চ বা অতি জরুরি।',
26
+ ID: 'আইডি',
27
+ List: 'তালিকা',
28
+ Lists: 'তালিকা',
29
+ Mine: 'আমার',
30
+ Name: 'নাম',
31
+ Normal: 'সাধারণ',
32
+ Notes: 'নোট',
33
+ 'Open by list': 'তালিকা অনুযায়ী খোলা',
34
+ 'Open by priority': 'অগ্রাধিকার অনুযায়ী খোলা',
35
+ 'Open to-dos': 'খোলা করণীয়',
36
+ 'Open until you mark it done; a done to-do can be reopened.': 'সম্পন্ন চিহ্নিত না করা পর্যন্ত খোলা থাকে; সম্পন্ন করণীয় আবার খোলা যায়।',
37
+ Overview: 'সারসংক্ষেপ',
38
+ Owner: 'মালিক',
39
+ 'Page {{page}} of {{pages}}': 'পৃষ্ঠা {{page}} / {{pages}}',
40
+ Priority: 'অগ্রাধিকার',
41
+ Productivity: 'উৎপাদনশীলতা',
42
+ 'Progress %': 'অগ্রগতি %',
43
+ Reopen: 'আবার খুলুন',
44
+ Rose: 'গোলাপি',
45
+ Sequence: 'ক্রম',
46
+ 'Shared lists': 'শেয়ার করা তালিকা',
47
+ 'Shared with': 'যাদের সাথে শেয়ার করা',
48
+ Slate: 'স্লেট',
49
+ State: 'অবস্থা',
50
+ Status: 'অবস্থা',
51
+ Step: 'ধাপ',
52
+ Task: 'কাজ',
53
+ Tasks: 'কাজ',
54
+ 'The colour that marks this list and its to-dos.': 'যে রং দিয়ে এই তালিকা ও এর করণীয়গুলো চিহ্নিত হয়।',
55
+ 'To do': 'করণীয়',
56
+ 'To-do': 'করণীয়',
57
+ 'To-do done': 'করণীয় সম্পন্ন',
58
+ 'To-dos': 'করণীয়',
59
+ 'Updated At': 'হালনাগাদের সময়',
60
+ 'Updated By': 'হালনাগাদ করেছেন',
61
+ Urgent: 'জরুরি',
62
+ 'Urgent or high': 'জরুরি বা উচ্চ',
63
+ 'User (own to-dos and shared lists)': 'ব্যবহারকারী (নিজের করণীয় ও শেয়ার করা তালিকা)',
64
+ Violet: 'বেগুনি',
65
+ 'Your to-dos and shared lists, with checklists and due dates': 'আপনার করণীয় ও শেয়ার করা তালিকা, চেকলিস্ট ও নির্ধারিত তারিখসহ',
66
+ };
@@ -25,6 +25,65 @@ export const todo = defineModule({
25
25
  category: 'Productivity',
26
26
  summary: 'Your to-dos and shared lists, with checklists and due dates',
27
27
  },
28
+ documents: [
29
+ {
30
+ key: 'todo',
31
+ name: 'To-do',
32
+ model: 'todo.task',
33
+ layout: {
34
+ paper: 'A4',
35
+ header: '{{company.name}}',
36
+ footer: 'Page {{page}} of {{pages}}',
37
+ blocks: [
38
+ { kind: 'heading', id: 'title', text: '{{name}}', level: 1 },
39
+ {
40
+ kind: 'fields',
41
+ id: 'task',
42
+ items: [
43
+ { label: 'List', bind: 'list.name' },
44
+ { label: 'Owner', bind: 'owner.name' },
45
+ { label: 'Due', bind: 'dueDate' },
46
+ { label: 'Priority', bind: 'priority' },
47
+ { label: 'Progress %', bind: 'progress' },
48
+ { label: 'Status', bind: 'state' },
49
+ ],
50
+ },
51
+ { kind: 'text', id: 'note', text: '{{note}}' },
52
+ ],
53
+ },
54
+ },
55
+ ],
56
+ importTemplates: [
57
+ {
58
+ key: 'todo_list',
59
+ model: 'todo.list',
60
+ label: 'List',
61
+ columns: [
62
+ { header: 'Name', field: 'name' },
63
+ { header: 'Owner', field: 'owner' },
64
+ { header: 'Shared with', field: 'members' },
65
+ { header: 'Color', field: 'color' },
66
+ ],
67
+ },
68
+ {
69
+ key: 'todo_task',
70
+ model: 'todo.task',
71
+ label: 'To-do',
72
+ columns: [
73
+ { header: 'To-do', field: 'name' },
74
+ { header: 'List', field: 'list' },
75
+ { header: 'For', field: 'owner' },
76
+ { header: 'Due', field: 'dueDate' },
77
+ { header: 'Priority', field: 'priority' },
78
+ { header: 'Notes', field: 'note' },
79
+ { header: 'Checklist › Step', field: 'items.name' },
80
+ { header: 'Checklist › Done', field: 'items.done' },
81
+ ],
82
+ },
83
+ ],
84
+ events: [{ topic: 'todo.task.done', model: 'todo.task', label: 'To-do done' }],
85
+ // Bangla for the labels it serves (RFC 0023 §3.1; `pnpm i18n:extract`).
86
+ i18n: { bn: () => import('./i18n/bn.js') },
28
87
  accessLevels: {
29
88
  user: { label: 'User (own to-dos and shared lists)', groups: ['todo.user'] },
30
89
  },
@@ -1,3 +1,8 @@
1
+ /**
2
+ * The data layer of Focus (RFC 0021): to-do tasks for the people who use them — their own, or on a list shared with
3
+ * colleagues — with a due date, a priority, a checklist whose progress shows on the task, and an optional link to any
4
+ * record of another app. People see their own tasks and those of the lists they belong to; nobody else's.
5
+ */
1
6
  /** A shared list: its owner and members see and work on its tasks. */
2
7
  export declare const TodoList: import("../server/orm.js").Model<"todo.list", {
3
8
  readonly id: import("../server/orm.js").IdField<"todo.list">;
@@ -4,6 +4,7 @@
4
4
  * record of another app. People see their own tasks and those of the lists they belong to; nobody else's.
5
5
  */
6
6
  import { messagingShutro } from '../messaging/index.js';
7
+ import { emitting } from '../server/index.js';
7
8
  import { orm } from '../server/orm.js';
8
9
  import { compute, defineModel, defineModule, f } from './.kosh/bindings.js';
9
10
  const WRITE = ['read', 'write', 'create', 'unlink'];
@@ -33,7 +34,7 @@ export const TodoList = defineModel('todo.list', {
33
34
  amber: 'Amber',
34
35
  rose: 'Rose',
35
36
  violet: 'Violet',
36
- }, { required: true, default: 'blue' }),
37
+ }, { required: true, default: 'blue', help: 'The colour that marks this list and its to-dos.' }),
37
38
  sequence: f.integer({ required: true, default: 10 }),
38
39
  tasks: f.one2many('todo.task', 'list'),
39
40
  },
@@ -63,12 +64,13 @@ export const TodoTask = defineModel('todo.task', {
63
64
  label: 'For',
64
65
  }),
65
66
  dueDate: f.date({ label: 'Due' }),
66
- priority: f.selection({ normal: 'Normal', high: 'High', urgent: 'Urgent' }, { required: true, default: 'normal' }),
67
+ priority: f.selection({ normal: 'Normal', high: 'High', urgent: 'Urgent' }, { required: true, default: 'normal', help: 'How pressing it is: normal, high or urgent.' }),
67
68
  state: f.state({
68
69
  states: { open: 'To do', done: 'Done' },
69
70
  initial: 'open',
71
+ help: 'Open until you mark it done; a done to-do can be reopened.',
70
72
  transitions: {
71
- complete: { from: ['open'], to: 'done' },
73
+ complete: emitting('todo.task.done', { from: ['open'], to: 'done' }),
72
74
  reopen: { from: ['done'], to: 'open' },
73
75
  },
74
76
  }),
@@ -1,4 +1,4 @@
1
- // GENERATED by `pnpm generate:models` (Shutro’s generator). Do not edit. definitions-hash: 80f9de4803e6a17b
1
+ // GENERATED by `pnpm generate:models` (Shutro’s generator). Do not edit. definitions-hash: 74b93d9906549950
2
2
  // Bindings of module `trade_finance`: 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: 80f9de4803e6a17b
1
+ // GENERATED by `pnpm generate:models` (Shutro’s generator). Do not edit. definitions-hash: 74b93d9906549950
2
2
  // Schema view of module `trade_finance` (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
 
@@ -623,6 +623,7 @@ export interface ResPartner {
623
623
  readonly parent: F.Many2one<'res.partner'>;
624
624
  readonly contacts: F.One2many<'res.partner', { readonly required: true }>;
625
625
  readonly email: F.Char;
626
+ readonly lang: F.Selection<'en' | 'bn'>;
626
627
  readonly phone: F.Char;
627
628
  readonly mobile: F.Char;
628
629
  readonly website: F.Char;
@@ -0,0 +1,2 @@
1
+ /** Bangla for the module's labels, keyed by their English text (RFC 0023 §3.1; `pnpm i18n:extract`). */
2
+ export declare const bn: Readonly<Record<string, string>>;