shutro-erp 0.3.6 → 0.3.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (623) hide show
  1. package/dist/account_asset/.kosh/bindings.js +1 -1
  2. package/dist/account_asset/.kosh/schema.d.ts +530 -8
  3. package/dist/account_asset/i18n/bn.d.ts +2 -0
  4. package/dist/account_asset/i18n/bn.js +97 -0
  5. package/dist/account_asset/index.js +2 -0
  6. package/dist/account_asset/module.d.ts +4899 -1445
  7. package/dist/account_budget/.kosh/bindings.js +1 -1
  8. package/dist/account_budget/.kosh/schema.d.ts +1130 -56
  9. package/dist/account_budget/i18n/bn.d.ts +2 -0
  10. package/dist/account_budget/i18n/bn.js +63 -0
  11. package/dist/account_budget/index.js +14 -0
  12. package/dist/account_budget/module.d.ts +17958 -4532
  13. package/dist/account_budget/module.js +15 -0
  14. package/dist/account_portal/.kosh/bindings.js +1 -1
  15. package/dist/account_portal/.kosh/schema.d.ts +530 -8
  16. package/dist/account_portal/i18n/bn.d.ts +2 -0
  17. package/dist/account_portal/i18n/bn.js +6 -0
  18. package/dist/account_portal/index.js +2 -0
  19. package/dist/account_portal/module.d.ts +5167 -1693
  20. package/dist/accounting/.kosh/bindings.js +1 -1
  21. package/dist/accounting/.kosh/schema.d.ts +530 -8
  22. package/dist/accounting/closing.js +1 -0
  23. package/dist/accounting/fiscal.d.ts +578 -0
  24. package/dist/accounting/fiscal.js +401 -0
  25. package/dist/accounting/followups.d.ts +618 -0
  26. package/dist/accounting/followups.js +420 -0
  27. package/dist/accounting/i18n/bn.d.ts +2 -0
  28. package/dist/accounting/i18n/bn.js +425 -0
  29. package/dist/accounting/index.d.ts +2 -0
  30. package/dist/accounting/index.js +649 -2
  31. package/dist/accounting/module.d.ts +4998 -1451
  32. package/dist/accounting/module.js +124 -18
  33. package/dist/accounting/statements.d.ts +878 -0
  34. package/dist/accounting/statements.js +728 -0
  35. package/dist/accounting/web/BankReconcilePage.d.ts +9 -0
  36. package/dist/accounting/web/BankReconcilePage.js +138 -0
  37. package/dist/accounting/web/FollowupsPage.d.ts +8 -0
  38. package/dist/accounting/web/FollowupsPage.js +54 -0
  39. package/dist/accounting/web/PostingPreview.d.ts +8 -0
  40. package/dist/accounting/web/PostingPreview.js +26 -0
  41. package/dist/accounting/web/index.d.ts +3 -0
  42. package/dist/accounting/web/index.js +9 -0
  43. package/dist/accounting/web/messages.js +140 -0
  44. package/dist/approvals/.kosh/bindings.js +1 -1
  45. package/dist/approvals/.kosh/schema.d.ts +272 -4
  46. package/dist/approvals/demo.d.ts +7 -0
  47. package/dist/approvals/demo.js +41 -0
  48. package/dist/approvals/i18n/bn.d.ts +2 -0
  49. package/dist/approvals/i18n/bn.js +133 -0
  50. package/dist/approvals/index.d.ts +19 -1
  51. package/dist/approvals/index.js +477 -7
  52. package/dist/approvals/mails.d.ts +7 -2
  53. package/dist/approvals/mails.js +8 -3
  54. package/dist/approvals/module.d.ts +2930 -1
  55. package/dist/approvals/module.js +468 -7
  56. package/dist/approvals/web/Config.d.ts +12 -0
  57. package/dist/approvals/web/Config.js +60 -0
  58. package/dist/approvals/web/Matrix.d.ts +9 -0
  59. package/dist/approvals/web/Matrix.js +26 -0
  60. package/dist/approvals/web/index.d.ts +3 -1
  61. package/dist/approvals/web/index.js +8 -1
  62. package/dist/approvals/web/messages.js +92 -0
  63. package/dist/approvals_purchase/.kosh/bindings.js +15 -0
  64. package/dist/approvals_purchase/.kosh/schema.d.ts +1997 -0
  65. package/dist/approvals_purchase/i18n/bn.d.ts +2 -0
  66. package/dist/approvals_purchase/i18n/bn.js +5 -0
  67. package/dist/approvals_purchase/index.d.ts +3 -0
  68. package/dist/approvals_purchase/index.js +47 -0
  69. package/dist/approvals_purchase/module.d.ts +12670 -0
  70. package/dist/approvals_purchase/module.js +84 -0
  71. package/dist/attendance/.kosh/bindings.js +1 -1
  72. package/dist/attendance/.kosh/schema.d.ts +59 -1
  73. package/dist/attendance/i18n/bn.d.ts +2 -0
  74. package/dist/attendance/i18n/bn.js +147 -0
  75. package/dist/attendance/index.js +3 -1
  76. package/dist/attendance/module.d.ts +452 -8
  77. package/dist/automation/engine.js +1 -1
  78. package/dist/calendar/.kosh/bindings.js +1 -1
  79. package/dist/calendar/.kosh/schema.d.ts +2 -1
  80. package/dist/calendar/i18n/bn.d.ts +2 -0
  81. package/dist/calendar/i18n/bn.js +80 -0
  82. package/dist/calendar/index.js +77 -0
  83. package/dist/calendar/module.d.ts +26 -0
  84. package/dist/calendar/module.js +14 -4
  85. package/dist/cli/apps.js +25 -5
  86. package/dist/cli/init.js +14 -4
  87. package/dist/cli/templates.d.ts +1 -1
  88. package/dist/cli/templates.js +34 -5
  89. package/dist/contacts/.kosh/bindings.js +1 -1
  90. package/dist/contacts/.kosh/schema.d.ts +2 -1
  91. package/dist/contacts/i18n/bn.d.ts +2 -0
  92. package/dist/contacts/i18n/bn.js +67 -0
  93. package/dist/contacts/index.js +3 -0
  94. package/dist/contacts/module.d.ts +42 -0
  95. package/dist/contacts/module.js +6 -1
  96. package/dist/crm/.kosh/bindings.js +1 -1
  97. package/dist/crm/.kosh/schema.d.ts +2 -1
  98. package/dist/crm/i18n/bn.d.ts +2 -0
  99. package/dist/crm/i18n/bn.js +80 -0
  100. package/dist/crm/index.js +22 -0
  101. package/dist/crm/module.d.ts +20 -0
  102. package/dist/crm/module.js +4 -2
  103. package/dist/documents/.kosh/bindings.js +1 -1
  104. package/dist/documents/.kosh/schema.d.ts +2 -1
  105. package/dist/documents/i18n/bn.d.ts +2 -0
  106. package/dist/documents/i18n/bn.js +83 -0
  107. package/dist/documents/index.js +128 -1
  108. package/dist/documents/module.d.ts +20 -0
  109. package/dist/documents/module.js +1 -0
  110. package/dist/event/.kosh/bindings.js +1 -1
  111. package/dist/event/.kosh/schema.d.ts +2 -1
  112. package/dist/event/i18n/bn.d.ts +2 -0
  113. package/dist/event/i18n/bn.js +101 -0
  114. package/dist/event/index.js +66 -0
  115. package/dist/event/module.d.ts +20 -0
  116. package/dist/event/module.js +8 -1
  117. package/dist/event_account/.kosh/bindings.js +1 -1
  118. package/dist/event_account/.kosh/schema.d.ts +530 -8
  119. package/dist/event_account/i18n/bn.d.ts +2 -0
  120. package/dist/event_account/i18n/bn.js +5 -0
  121. package/dist/event_account/index.js +2 -0
  122. package/dist/event_account/module.d.ts +4905 -1431
  123. package/dist/expense/.kosh/bindings.js +1 -1
  124. package/dist/expense/.kosh/schema.d.ts +323 -2
  125. package/dist/expense/i18n/bn.d.ts +2 -0
  126. package/dist/expense/i18n/bn.js +155 -0
  127. package/dist/expense/index.js +8 -1
  128. package/dist/expense/module.d.ts +2715 -694
  129. package/dist/expense/module.js +3 -1
  130. package/dist/expense_account/.kosh/bindings.js +1 -1
  131. package/dist/expense_account/.kosh/schema.d.ts +587 -8
  132. package/dist/expense_account/i18n/bn.d.ts +2 -0
  133. package/dist/expense_account/i18n/bn.js +15 -0
  134. package/dist/expense_account/index.js +2 -0
  135. package/dist/expense_account/module.d.ts +8094 -2619
  136. package/dist/helpdesk/.kosh/bindings.js +1 -1
  137. package/dist/helpdesk/.kosh/schema.d.ts +2 -1
  138. package/dist/helpdesk/i18n/bn.d.ts +2 -0
  139. package/dist/helpdesk/i18n/bn.js +127 -0
  140. package/dist/helpdesk/index.js +2 -0
  141. package/dist/helpdesk/module.d.ts +20 -0
  142. package/dist/hr/.kosh/bindings.js +1 -1
  143. package/dist/hr/.kosh/schema.d.ts +59 -1
  144. package/dist/hr/demo.js +11 -1
  145. package/dist/hr/i18n/bn.d.ts +2 -0
  146. package/dist/hr/i18n/bn.js +126 -0
  147. package/dist/hr/index.d.ts +1 -1
  148. package/dist/hr/index.js +158 -12
  149. package/dist/hr/module.d.ts +932 -59
  150. package/dist/hr/module.js +114 -17
  151. package/dist/{mrp → indent}/.kosh/bindings.js +2 -2
  152. package/dist/indent/.kosh/schema.d.ts +2084 -0
  153. package/dist/indent/demo.d.ts +7 -0
  154. package/dist/indent/demo.js +48 -0
  155. package/dist/indent/i18n/bn.d.ts +2 -0
  156. package/dist/indent/i18n/bn.js +143 -0
  157. package/dist/indent/index.d.ts +3 -0
  158. package/dist/indent/index.js +450 -0
  159. package/dist/{mrp → indent}/module.d.ts +7164 -3075
  160. package/dist/indent/module.js +792 -0
  161. package/dist/indent_purchase/.kosh/bindings.d.ts +22 -0
  162. package/dist/indent_purchase/.kosh/bindings.js +15 -0
  163. package/dist/indent_purchase/.kosh/schema.d.ts +2710 -0
  164. package/dist/indent_purchase/i18n/bn.d.ts +2 -0
  165. package/dist/indent_purchase/i18n/bn.js +13 -0
  166. package/dist/indent_purchase/index.d.ts +3 -0
  167. package/dist/indent_purchase/index.js +61 -0
  168. package/dist/indent_purchase/module.d.ts +27950 -0
  169. package/dist/indent_purchase/module.js +163 -0
  170. package/dist/l10n_bd/.kosh/bindings.js +1 -1
  171. package/dist/l10n_bd/.kosh/schema.d.ts +530 -8
  172. package/dist/l10n_bd/i18n/bn.d.ts +2 -0
  173. package/dist/l10n_bd/i18n/bn.js +69 -0
  174. package/dist/l10n_bd/index.js +2 -0
  175. package/dist/l10n_bd/module.d.ts +5167 -1693
  176. package/dist/l10n_bd_payroll/.kosh/bindings.js +1 -1
  177. package/dist/l10n_bd_payroll/.kosh/schema.d.ts +587 -8
  178. package/dist/l10n_bd_payroll/i18n/bn.d.ts +2 -0
  179. package/dist/l10n_bd_payroll/i18n/bn.js +4 -0
  180. package/dist/l10n_bd_payroll/index.js +2 -0
  181. package/dist/l10n_bd_payroll/module.d.ts +5910 -1548
  182. package/dist/l10n_bd_pos/.kosh/bindings.d.ts +22 -0
  183. package/dist/{mrp_account → l10n_bd_pos}/.kosh/bindings.js +2 -2
  184. package/dist/{mrp_account → l10n_bd_pos}/.kosh/schema.d.ts +693 -651
  185. package/dist/l10n_bd_pos/i18n/bn.d.ts +2 -0
  186. package/dist/l10n_bd_pos/i18n/bn.js +32 -0
  187. package/dist/l10n_bd_pos/index.d.ts +3 -0
  188. package/dist/l10n_bd_pos/index.js +111 -0
  189. package/dist/{mrp_account → l10n_bd_pos}/module.d.ts +7402 -7647
  190. package/dist/l10n_bd_pos/module.js +43 -0
  191. package/dist/l10n_in/.kosh/bindings.js +1 -1
  192. package/dist/l10n_in/.kosh/schema.d.ts +530 -8
  193. package/dist/l10n_in/i18n/bn.d.ts +2 -0
  194. package/dist/l10n_in/i18n/bn.js +95 -0
  195. package/dist/l10n_in/index.js +2 -0
  196. package/dist/l10n_in/module.d.ts +6703 -1652
  197. package/dist/l10n_in/module.js +25 -5
  198. package/dist/l10n_in/web/GstSettings.js +2 -2
  199. package/dist/mail/inbound/handle.js +2 -4
  200. package/dist/mail/inbound/models.js +5 -3
  201. package/dist/mail/index.d.ts +12 -1
  202. package/dist/mail/index.js +139 -2
  203. package/dist/mail/send.d.ts +56 -0
  204. package/dist/mail/send.js +394 -0
  205. package/dist/mail/web/SendButton.d.ts +9 -0
  206. package/dist/mail/web/SendButton.js +71 -0
  207. package/dist/mail/web/SendSelected.d.ts +8 -0
  208. package/dist/mail/web/SendSelected.js +33 -0
  209. package/dist/mail/web/index.d.ts +2 -0
  210. package/dist/mail/web/index.js +6 -0
  211. package/dist/mail/web/messages.js +36 -0
  212. package/dist/maintenance/.kosh/bindings.js +1 -1
  213. package/dist/maintenance/.kosh/schema.d.ts +2 -1
  214. package/dist/maintenance/i18n/bn.d.ts +2 -0
  215. package/dist/maintenance/i18n/bn.js +132 -0
  216. package/dist/maintenance/index.js +85 -0
  217. package/dist/maintenance/module.d.ts +25 -0
  218. package/dist/maintenance/module.js +27 -9
  219. package/dist/maintenance_stock/.kosh/bindings.js +1 -1
  220. package/dist/maintenance_stock/.kosh/schema.d.ts +298 -2
  221. package/dist/maintenance_stock/i18n/bn.d.ts +2 -0
  222. package/dist/maintenance_stock/i18n/bn.js +21 -0
  223. package/dist/maintenance_stock/index.js +2 -0
  224. package/dist/maintenance_stock/module.d.ts +5302 -1256
  225. package/dist/maintenance_stock/module.js +1 -0
  226. package/dist/modules-sdk/apps.d.ts +10 -0
  227. package/dist/modules-sdk/apps.js +32 -0
  228. package/dist/modules-sdk/index.d.ts +1 -1
  229. package/dist/modules-sdk/manifest.d.ts +68 -2
  230. package/dist/payment/.kosh/bindings.js +1 -1
  231. package/dist/payment/.kosh/schema.d.ts +530 -8
  232. package/dist/payment/i18n/bn.d.ts +2 -0
  233. package/dist/payment/i18n/bn.js +59 -0
  234. package/dist/payment/index.js +85 -0
  235. package/dist/payment/module.d.ts +5134 -1660
  236. package/dist/payment/module.js +17 -3
  237. package/dist/payment/settle.js +1 -0
  238. package/dist/payroll/.kosh/bindings.js +1 -1
  239. package/dist/payroll/.kosh/schema.d.ts +59 -1
  240. package/dist/payroll/i18n/bn.d.ts +2 -0
  241. package/dist/payroll/i18n/bn.js +206 -0
  242. package/dist/payroll/index.js +2 -0
  243. package/dist/payroll/module.d.ts +936 -48
  244. package/dist/payroll_account/.kosh/bindings.js +1 -1
  245. package/dist/payroll_account/.kosh/schema.d.ts +587 -8
  246. package/dist/payroll_account/i18n/bn.d.ts +2 -0
  247. package/dist/payroll_account/i18n/bn.js +10 -0
  248. package/dist/payroll_account/index.js +2 -0
  249. package/dist/payroll_account/module.d.ts +7534 -3192
  250. package/dist/permissions/approvals.d.ts +97 -4
  251. package/dist/permissions/approvals.js +780 -31
  252. package/dist/permissions/index.d.ts +1 -1
  253. package/dist/permissions/index.js +2 -2
  254. package/dist/permissions/models.js +177 -5
  255. package/dist/permissions/routes.d.ts +3 -0
  256. package/dist/permissions/routes.js +36 -2
  257. package/dist/permissions/web/ApprovalPanel.js +43 -5
  258. package/dist/permissions/web/messages.js +52 -0
  259. package/dist/portal/.kosh/bindings.js +1 -1
  260. package/dist/portal/.kosh/schema.d.ts +2 -1
  261. package/dist/portal/documents.d.ts +3 -0
  262. package/dist/portal/documents.js +21 -1
  263. package/dist/portal/i18n/bn.d.ts +2 -0
  264. package/dist/portal/i18n/bn.js +33 -0
  265. package/dist/portal/index.js +2 -0
  266. package/dist/portal/module.d.ts +20 -0
  267. package/dist/portal/routes-documents.js +76 -0
  268. package/dist/pos/.kosh/bindings.js +1 -1
  269. package/dist/pos/.kosh/schema.d.ts +531 -8
  270. package/dist/pos/i18n/bn.d.ts +2 -0
  271. package/dist/pos/i18n/bn.js +133 -0
  272. package/dist/pos/index.js +83 -1
  273. package/dist/pos/module.d.ts +6888 -1777
  274. package/dist/pos/module.js +49 -5
  275. package/dist/pos/routes.js +80 -7
  276. package/dist/pos/web/Register.js +2 -5
  277. package/dist/pos_stock/.kosh/bindings.js +1 -1
  278. package/dist/pos_stock/.kosh/schema.d.ts +626 -9
  279. package/dist/pos_stock/i18n/bn.d.ts +2 -0
  280. package/dist/pos_stock/i18n/bn.js +6 -0
  281. package/dist/pos_stock/index.js +2 -0
  282. package/dist/pos_stock/module.d.ts +10798 -3276
  283. package/dist/product/.kosh/bindings.js +1 -1
  284. package/dist/product/.kosh/schema.d.ts +202 -1
  285. package/dist/product/i18n/bn.d.ts +2 -0
  286. package/dist/product/i18n/bn.js +175 -0
  287. package/dist/product/index.d.ts +1 -0
  288. package/dist/product/index.js +288 -1
  289. package/dist/product/module.d.ts +1725 -0
  290. package/dist/product/module.js +66 -6
  291. package/dist/product/pricelist.d.ts +575 -0
  292. package/dist/product/pricelist.js +257 -0
  293. package/dist/product/variants.d.ts +908 -0
  294. package/dist/product/variants.js +251 -0
  295. package/dist/production/.kosh/bindings.d.ts +22 -0
  296. package/dist/production/.kosh/bindings.js +15 -0
  297. package/dist/production/.kosh/schema.d.ts +2345 -0
  298. package/dist/{mrp → production}/demo.d.ts +1 -1
  299. package/dist/{mrp → production}/demo.js +5 -5
  300. package/dist/production/depth.d.ts +790 -0
  301. package/dist/production/depth.js +262 -0
  302. package/dist/production/i18n/bn.d.ts +2 -0
  303. package/dist/production/i18n/bn.js +350 -0
  304. package/dist/production/index.d.ts +6 -0
  305. package/dist/production/index.js +1256 -0
  306. package/dist/production/module.d.ts +17327 -0
  307. package/dist/production/module.js +1333 -0
  308. package/dist/production/plan.d.ts +921 -0
  309. package/dist/production/plan.js +511 -0
  310. package/dist/production/schedule.d.ts +656 -0
  311. package/dist/production/schedule.js +309 -0
  312. package/dist/production_account/.kosh/bindings.d.ts +22 -0
  313. package/dist/production_account/.kosh/bindings.js +15 -0
  314. package/dist/production_account/.kosh/schema.d.ts +3496 -0
  315. package/dist/production_account/i18n/bn.d.ts +2 -0
  316. package/dist/production_account/i18n/bn.js +93 -0
  317. package/dist/production_account/index.d.ts +4 -0
  318. package/dist/production_account/index.js +246 -0
  319. package/dist/production_account/module.d.ts +1192 -0
  320. package/dist/{mrp_account → production_account}/module.js +72 -18
  321. package/dist/production_account/overhead.d.ts +1195 -0
  322. package/dist/production_account/overhead.js +554 -0
  323. package/dist/project/.kosh/bindings.js +1 -1
  324. package/dist/project/.kosh/schema.d.ts +65 -2
  325. package/dist/project/i18n/bn.d.ts +2 -0
  326. package/dist/project/i18n/bn.js +383 -0
  327. package/dist/project/index.js +123 -0
  328. package/dist/project/module.d.ts +20 -0
  329. package/dist/project/module.js +73 -14
  330. package/dist/project_account/.kosh/bindings.js +1 -1
  331. package/dist/project_account/.kosh/schema.d.ts +530 -8
  332. package/dist/project_account/i18n/bn.d.ts +2 -0
  333. package/dist/project_account/i18n/bn.js +6 -0
  334. package/dist/project_account/index.js +2 -0
  335. package/dist/project_account/module.d.ts +4926 -1452
  336. package/dist/project_portal/.kosh/bindings.js +1 -1
  337. package/dist/project_portal/.kosh/schema.d.ts +65 -2
  338. package/dist/project_portal/i18n/bn.d.ts +2 -0
  339. package/dist/project_portal/i18n/bn.js +6 -0
  340. package/dist/project_portal/index.js +2 -0
  341. package/dist/project_portal/module.d.ts +40 -0
  342. package/dist/project_purchase/.kosh/bindings.js +1 -1
  343. package/dist/project_purchase/.kosh/schema.d.ts +1126 -53
  344. package/dist/project_purchase/i18n/bn.d.ts +2 -0
  345. package/dist/project_purchase/i18n/bn.js +4 -0
  346. package/dist/project_purchase/index.js +2 -0
  347. package/dist/project_purchase/module.d.ts +17912 -4446
  348. package/dist/purchase/.kosh/bindings.js +1 -1
  349. package/dist/purchase/.kosh/schema.d.ts +813 -3
  350. package/dist/purchase/comparison.d.ts +993 -0
  351. package/dist/purchase/comparison.js +415 -0
  352. package/dist/purchase/extras.d.ts +1509 -0
  353. package/dist/purchase/extras.js +445 -0
  354. package/dist/purchase/i18n/bn.d.ts +2 -0
  355. package/dist/purchase/i18n/bn.js +413 -0
  356. package/dist/purchase/index.d.ts +5 -0
  357. package/dist/purchase/index.js +1280 -4
  358. package/dist/purchase/module.d.ts +7139 -398
  359. package/dist/purchase/module.js +295 -11
  360. package/dist/purchase/request.d.ts +696 -0
  361. package/dist/purchase/request.js +446 -0
  362. package/dist/purchase/tender.d.ts +1208 -0
  363. package/dist/purchase/tender.js +507 -0
  364. package/dist/purchase/vendorprice.d.ts +340 -0
  365. package/dist/purchase/vendorprice.js +153 -0
  366. package/dist/purchase_account/.kosh/bindings.js +1 -1
  367. package/dist/purchase_account/.kosh/schema.d.ts +1130 -57
  368. package/dist/purchase_account/i18n/bn.d.ts +2 -0
  369. package/dist/purchase_account/i18n/bn.js +22 -0
  370. package/dist/purchase_account/index.js +19 -0
  371. package/dist/purchase_account/module.d.ts +12276 -2247
  372. package/dist/purchase_account/module.js +241 -9
  373. package/dist/purchase_portal/.kosh/bindings.js +1 -1
  374. package/dist/purchase_portal/.kosh/schema.d.ts +813 -3
  375. package/dist/purchase_portal/i18n/bn.d.ts +2 -0
  376. package/dist/purchase_portal/i18n/bn.js +5 -0
  377. package/dist/purchase_portal/index.js +2 -0
  378. package/dist/purchase_portal/module.d.ts +6849 -353
  379. package/dist/purchase_stock/.kosh/bindings.js +1 -1
  380. package/dist/purchase_stock/.kosh/schema.d.ts +910 -4
  381. package/dist/purchase_stock/i18n/bn.d.ts +2 -0
  382. package/dist/purchase_stock/i18n/bn.js +19 -0
  383. package/dist/purchase_stock/index.d.ts +1 -1
  384. package/dist/purchase_stock/index.js +29 -0
  385. package/dist/purchase_stock/module.d.ts +12410 -1864
  386. package/dist/purchase_stock/module.js +81 -9
  387. package/dist/purchase_stock/scorecard.d.ts +22 -0
  388. package/dist/purchase_stock/scorecard.js +77 -0
  389. package/dist/purchase_stock/web/Scorecard.d.ts +7 -0
  390. package/dist/purchase_stock/web/Scorecard.js +22 -0
  391. package/dist/purchase_stock/web/index.d.ts +11 -0
  392. package/dist/purchase_stock/web/index.js +16 -0
  393. package/dist/purchase_stock/web/messages.d.ts +2 -0
  394. package/dist/purchase_stock/web/messages.js +27 -0
  395. package/dist/purchase_stock_account/.kosh/bindings.js +1 -1
  396. package/dist/purchase_stock_account/.kosh/schema.d.ts +1286 -58
  397. package/dist/purchase_stock_account/i18n/bn.d.ts +2 -0
  398. package/dist/purchase_stock_account/i18n/bn.js +8 -0
  399. package/dist/purchase_stock_account/index.js +18 -0
  400. package/dist/purchase_stock_account/module.d.ts +7 -37995
  401. package/dist/purchase_stock_account/module.js +24 -3
  402. package/dist/recruitment/.kosh/bindings.js +1 -1
  403. package/dist/recruitment/.kosh/schema.d.ts +59 -1
  404. package/dist/recruitment/i18n/bn.d.ts +2 -0
  405. package/dist/recruitment/i18n/bn.js +93 -0
  406. package/dist/recruitment/index.js +64 -0
  407. package/dist/recruitment/module.d.ts +458 -8
  408. package/dist/recruitment/module.js +11 -3
  409. package/dist/reporting/documents.d.ts +5 -0
  410. package/dist/reporting/documents.js +11 -1
  411. package/dist/reporting/index.d.ts +1 -1
  412. package/dist/reporting/index.js +1 -1
  413. package/dist/reporting/web/CalendarView.d.ts +18 -5
  414. package/dist/reporting/web/CalendarView.js +163 -29
  415. package/dist/reporting/web/messages.js +18 -0
  416. package/dist/sale_account/.kosh/bindings.js +1 -1
  417. package/dist/sale_account/.kosh/schema.d.ts +642 -16
  418. package/dist/sale_account/i18n/bn.d.ts +2 -0
  419. package/dist/sale_account/i18n/bn.js +48 -0
  420. package/dist/sale_account/index.d.ts +1 -1
  421. package/dist/sale_account/index.js +102 -4
  422. package/dist/sale_account/module.d.ts +8254 -2212
  423. package/dist/sale_account/module.js +535 -46
  424. package/dist/sale_crm/.kosh/bindings.d.ts +22 -0
  425. package/dist/sale_crm/.kosh/bindings.js +15 -0
  426. package/dist/{mrp → sale_crm}/.kosh/schema.d.ts +389 -567
  427. package/dist/sale_crm/i18n/bn.d.ts +2 -0
  428. package/dist/sale_crm/i18n/bn.js +9 -0
  429. package/dist/sale_crm/index.d.ts +7 -0
  430. package/dist/sale_crm/index.js +104 -0
  431. package/dist/sale_crm/module.d.ts +5609 -0
  432. package/dist/sale_crm/module.js +73 -0
  433. package/dist/sale_portal/.kosh/bindings.js +1 -1
  434. package/dist/sale_portal/.kosh/schema.d.ts +291 -4
  435. package/dist/sale_portal/i18n/bn.d.ts +2 -0
  436. package/dist/sale_portal/i18n/bn.js +7 -0
  437. package/dist/sale_portal/index.js +10 -0
  438. package/dist/sale_portal/module.d.ts +2564 -294
  439. package/dist/sale_project/.kosh/bindings.js +1 -1
  440. package/dist/sale_project/.kosh/schema.d.ts +354 -5
  441. package/dist/sale_project/i18n/bn.d.ts +2 -0
  442. package/dist/sale_project/i18n/bn.js +12 -0
  443. package/dist/sale_project/index.js +2 -0
  444. package/dist/sale_project/module.d.ts +6249 -2402
  445. package/dist/sale_stock/.kosh/bindings.js +1 -1
  446. package/dist/sale_stock/.kosh/schema.d.ts +387 -5
  447. package/dist/sale_stock/i18n/bn.d.ts +2 -0
  448. package/dist/sale_stock/i18n/bn.js +15 -0
  449. package/dist/sale_stock/index.js +2 -0
  450. package/dist/sale_stock/module.d.ts +8057 -1759
  451. package/dist/sale_stock/module.js +20 -3
  452. package/dist/sales/.kosh/bindings.js +1 -1
  453. package/dist/sales/.kosh/schema.d.ts +291 -4
  454. package/dist/sales/i18n/bn.d.ts +2 -0
  455. package/dist/sales/i18n/bn.js +128 -0
  456. package/dist/sales/index.js +120 -5
  457. package/dist/sales/module.d.ts +3567 -633
  458. package/dist/sales/module.js +306 -11
  459. package/dist/server/api/duplicate.d.ts +14 -0
  460. package/dist/server/api/duplicate.js +75 -0
  461. package/dist/server/api/explain.d.ts +70 -0
  462. package/dist/server/api/explain.js +111 -0
  463. package/dist/server/api/metadata.d.ts +2 -0
  464. package/dist/server/api/metadata.js +9 -0
  465. package/dist/server/api/openapi.js +15 -0
  466. package/dist/server/api/rest.d.ts +1 -0
  467. package/dist/server/api/rest.js +76 -12
  468. package/dist/server/api/views.js +1 -1
  469. package/dist/server/apps.d.ts +16 -1
  470. package/dist/server/apps.js +164 -2
  471. package/dist/server/auth/base.js +2 -0
  472. package/dist/server/auth/service.d.ts +8 -0
  473. package/dist/server/auth/service.js +19 -0
  474. package/dist/server/events.d.ts +13 -0
  475. package/dist/server/events.js +22 -0
  476. package/dist/server/i18n.d.ts +27 -0
  477. package/dist/server/i18n.js +143 -0
  478. package/dist/server/index.d.ts +2 -0
  479. package/dist/server/index.js +2 -0
  480. package/dist/server/server.js +6 -0
  481. package/dist/settings/company.d.ts +3 -1
  482. package/dist/settings/company.js +26 -5
  483. package/dist/settings/routes.d.ts +10 -0
  484. package/dist/settings/routes.js +19 -3
  485. package/dist/settings/web/AppsPage.d.ts +3 -2
  486. package/dist/settings/web/AppsPage.js +26 -8
  487. package/dist/settings/web/CompaniesPage.js +91 -6
  488. package/dist/settings/web/messages.js +64 -0
  489. package/dist/sign/.kosh/bindings.js +1 -1
  490. package/dist/sign/.kosh/schema.d.ts +2 -1
  491. package/dist/sign/i18n/bn.d.ts +2 -0
  492. package/dist/sign/i18n/bn.js +97 -0
  493. package/dist/sign/index.d.ts +15 -0
  494. package/dist/sign/index.js +129 -1
  495. package/dist/sign/module.d.ts +40 -0
  496. package/dist/sign/module.js +11 -2
  497. package/dist/stock/.kosh/bindings.js +1 -1
  498. package/dist/stock/.kosh/schema.d.ts +298 -2
  499. package/dist/stock/i18n/bn.d.ts +2 -0
  500. package/dist/stock/i18n/bn.js +311 -0
  501. package/dist/stock/index.d.ts +3 -1
  502. package/dist/stock/index.js +442 -3
  503. package/dist/stock/ledger.d.ts +78 -0
  504. package/dist/stock/ledger.js +582 -0
  505. package/dist/stock/module.d.ts +5280 -2044
  506. package/dist/stock/module.js +222 -23
  507. package/dist/stock/replenish.js +16 -1
  508. package/dist/stock/returns.d.ts +157 -0
  509. package/dist/stock/returns.js +163 -0
  510. package/dist/stock/web/Ledger.d.ts +9 -0
  511. package/dist/stock/web/Ledger.js +108 -0
  512. package/dist/stock/web/Operations.d.ts +8 -0
  513. package/dist/stock/web/Operations.js +33 -0
  514. package/dist/stock/web/ReturnButton.d.ts +7 -0
  515. package/dist/stock/web/ReturnButton.js +62 -0
  516. package/dist/stock/web/index.d.ts +3 -0
  517. package/dist/stock/web/index.js +9 -0
  518. package/dist/stock/web/messages.js +154 -0
  519. package/dist/stock_account/.kosh/bindings.js +1 -1
  520. package/dist/stock_account/.kosh/schema.d.ts +682 -9
  521. package/dist/stock_account/i18n/bn.d.ts +2 -0
  522. package/dist/stock_account/i18n/bn.js +73 -0
  523. package/dist/stock_account/index.d.ts +1 -0
  524. package/dist/stock_account/index.js +131 -3
  525. package/dist/stock_account/landed.d.ts +429 -0
  526. package/dist/stock_account/landed.js +335 -0
  527. package/dist/stock_account/module.d.ts +11247 -3363
  528. package/dist/stock_account/module.js +135 -6
  529. package/dist/stock_account/web/LandedPreview.d.ts +7 -0
  530. package/dist/stock_account/web/LandedPreview.js +23 -0
  531. package/dist/stock_account/web/index.d.ts +11 -0
  532. package/dist/stock_account/web/index.js +16 -0
  533. package/dist/stock_account/web/messages.d.ts +2 -0
  534. package/dist/stock_account/web/messages.js +27 -0
  535. package/dist/todo/i18n/bn.d.ts +2 -0
  536. package/dist/todo/i18n/bn.js +66 -0
  537. package/dist/todo/index.js +59 -0
  538. package/dist/todo/module.d.ts +5 -0
  539. package/dist/todo/module.js +5 -3
  540. package/dist/trade_finance/.kosh/bindings.js +1 -1
  541. package/dist/trade_finance/.kosh/schema.d.ts +2 -1
  542. package/dist/trade_finance/i18n/bn.d.ts +2 -0
  543. package/dist/trade_finance/i18n/bn.js +162 -0
  544. package/dist/trade_finance/index.js +93 -0
  545. package/dist/trade_finance/module.d.ts +26 -0
  546. package/dist/trade_finance/module.js +27 -8
  547. package/dist/trade_finance_account/.kosh/bindings.js +1 -1
  548. package/dist/trade_finance_account/.kosh/schema.d.ts +530 -8
  549. package/dist/trade_finance_account/i18n/bn.d.ts +2 -0
  550. package/dist/trade_finance_account/i18n/bn.js +27 -0
  551. package/dist/trade_finance_account/index.js +2 -0
  552. package/dist/trade_finance_account/module.d.ts +4906 -1432
  553. package/dist/trade_finance_account/module.js +1 -0
  554. package/dist/trade_finance_purchase/.kosh/bindings.js +1 -1
  555. package/dist/trade_finance_purchase/.kosh/schema.d.ts +813 -3
  556. package/dist/trade_finance_purchase/i18n/bn.d.ts +2 -0
  557. package/dist/trade_finance_purchase/i18n/bn.js +6 -0
  558. package/dist/trade_finance_purchase/index.js +2 -0
  559. package/dist/trade_finance_purchase/module.d.ts +6909 -413
  560. package/dist/trade_finance_sale/.kosh/bindings.js +1 -1
  561. package/dist/trade_finance_sale/.kosh/schema.d.ts +291 -4
  562. package/dist/trade_finance_sale/i18n/bn.d.ts +2 -0
  563. package/dist/trade_finance_sale/i18n/bn.js +6 -0
  564. package/dist/trade_finance_sale/index.js +2 -0
  565. package/dist/trade_finance_sale/module.d.ts +2601 -331
  566. package/dist/ui/api.d.ts +2 -0
  567. package/dist/ui/app.d.ts +9 -0
  568. package/dist/ui/app.js +24 -4
  569. package/dist/ui/components/AppIcon.js +2 -2
  570. package/dist/ui/components/Explain.d.ts +69 -0
  571. package/dist/ui/components/Explain.js +62 -0
  572. package/dist/ui/context.d.ts +8 -1
  573. package/dist/ui/context.js +34 -1
  574. package/dist/ui/i18n/messages.d.ts +36 -0
  575. package/dist/ui/i18n/messages.js +72 -0
  576. package/dist/ui/index.d.ts +2 -1
  577. package/dist/ui/index.js +1 -0
  578. package/dist/ui/registry.d.ts +14 -0
  579. package/dist/ui/registry.js +10 -0
  580. package/dist/ui/views/FormView.d.ts +6 -0
  581. package/dist/ui/views/FormView.js +47 -10
  582. package/dist/ui/views/ListView.d.ts +8 -0
  583. package/dist/ui/views/ListView.js +10 -3
  584. package/dist/ui/views/StatsRow.js +2 -1
  585. package/dist/views/extend.js +12 -0
  586. package/dist/views/types.d.ts +13 -2
  587. package/dist/views/validate.js +8 -1
  588. package/dist/website/.kosh/bindings.js +1 -1
  589. package/dist/website/.kosh/schema.d.ts +2 -1
  590. package/dist/website/i18n/bn.d.ts +2 -0
  591. package/dist/website/i18n/bn.js +113 -0
  592. package/dist/website/index.js +36 -0
  593. package/dist/website/module.d.ts +20 -0
  594. package/dist/website/module.js +29 -5
  595. package/dist/website_crm/.kosh/bindings.js +1 -1
  596. package/dist/website_crm/.kosh/schema.d.ts +2 -1
  597. package/dist/website_crm/i18n/bn.d.ts +2 -0
  598. package/dist/website_crm/i18n/bn.js +5 -0
  599. package/dist/website_crm/index.js +2 -0
  600. package/dist/website_crm/module.d.ts +40 -0
  601. package/dist/website_sale/.kosh/bindings.js +1 -1
  602. package/dist/website_sale/.kosh/schema.d.ts +642 -17
  603. package/dist/website_sale/i18n/bn.d.ts +2 -0
  604. package/dist/website_sale/i18n/bn.js +132 -0
  605. package/dist/website_sale/index.js +83 -1
  606. package/dist/website_sale/module.d.ts +18705 -5550
  607. package/dist/website_sale/module.js +32 -10
  608. package/dist/website_sale/shop.js +22 -9
  609. package/dist/website_sale_stock/.kosh/bindings.js +1 -1
  610. package/dist/website_sale_stock/.kosh/schema.d.ts +737 -18
  611. package/dist/website_sale_stock/i18n/bn.d.ts +2 -0
  612. package/dist/website_sale_stock/i18n/bn.js +4 -0
  613. package/dist/website_sale_stock/index.js +2 -0
  614. package/dist/website_sale_stock/module.d.ts +10 -24997
  615. package/dist/website_sale_stock/module.js +7 -3
  616. package/package.json +36 -8
  617. package/dist/mrp/index.d.ts +0 -3
  618. package/dist/mrp/index.js +0 -393
  619. package/dist/mrp/module.js +0 -757
  620. package/dist/mrp_account/index.d.ts +0 -3
  621. package/dist/mrp_account/index.js +0 -22
  622. /package/dist/{mrp → approvals_purchase}/.kosh/bindings.d.ts +0 -0
  623. /package/dist/{mrp_account → indent}/.kosh/bindings.d.ts +0 -0
@@ -0,0 +1,340 @@
1
+ /**
2
+ * Vendor prices (RFC 0030 §3.1): what a vendor charges for a product (or every product of a category), from what
3
+ * quantity, between which dates, in which currency, with their own code and name for it and how many days they take.
4
+ * `vendorPriceFor` picks one and says why in words: the preferred vendor when one fits, else the cheapest that
5
+ * fits — and, with a date it is needed by, the cheapest that arrives in time. Purchase lines, reorder rules and
6
+ * Replenishment use it.
7
+ */
8
+ import type { orm } from '../server/orm.js';
9
+ import { type Env } from './.kosh/bindings.js';
10
+ export declare const ProductVendorPrice: import("../server/orm.js").Model<"product.vendor.price", {
11
+ readonly id: import("../server/orm.js").IdField<"product.vendor.price">;
12
+ readonly createdAt: import("../server/orm.js").ScalarField<'datetime', Date, Date, {
13
+ required: true;
14
+ readonly: true;
15
+ computed: false;
16
+ inverse: false;
17
+ hasDefault: false;
18
+ sequence: false;
19
+ }>;
20
+ readonly updatedAt: import("../server/orm.js").ScalarField<'datetime', Date, Date, {
21
+ required: true;
22
+ readonly: true;
23
+ computed: false;
24
+ inverse: false;
25
+ hasDefault: false;
26
+ sequence: false;
27
+ }>;
28
+ readonly createdBy: import("../server/orm.js").Many2oneField<'res.users', {
29
+ required: false;
30
+ readonly: true;
31
+ computed: false;
32
+ inverse: false;
33
+ hasDefault: false;
34
+ sequence: false;
35
+ }>;
36
+ readonly updatedBy: import("../server/orm.js").Many2oneField<'res.users', {
37
+ required: false;
38
+ readonly: true;
39
+ computed: false;
40
+ inverse: false;
41
+ hasDefault: false;
42
+ sequence: false;
43
+ }>;
44
+ readonly displayName: import("../server/orm.js").CharField<{
45
+ required: true;
46
+ readonly: true;
47
+ computed: true;
48
+ inverse: false;
49
+ hasDefault: false;
50
+ sequence: false;
51
+ }>;
52
+ readonly active: import("../server/orm.js").ActiveField;
53
+ readonly company: import("../server/orm.js").CompanyField<false>;
54
+ readonly vendor: import("../server/orm.js").Many2oneField<"res.partner", {
55
+ readonly required: true;
56
+ readonly computed: false;
57
+ readonly inverse: false;
58
+ readonly sequence: false;
59
+ readonly computeName: undefined;
60
+ readonly store: true;
61
+ readonly hasDefault: false;
62
+ readonly readonly: false;
63
+ }>;
64
+ readonly product: import("../server/orm.js").Many2oneField<"product.product", {
65
+ readonly required: false;
66
+ readonly computed: false;
67
+ readonly inverse: false;
68
+ readonly sequence: false;
69
+ readonly computeName: undefined;
70
+ readonly store: true;
71
+ readonly hasDefault: false;
72
+ readonly readonly: false;
73
+ }>;
74
+ readonly category: import("../server/orm.js").Many2oneField<"product.category", {
75
+ readonly required: false;
76
+ readonly computed: false;
77
+ readonly inverse: false;
78
+ readonly sequence: false;
79
+ readonly computeName: undefined;
80
+ readonly store: true;
81
+ readonly hasDefault: false;
82
+ readonly readonly: false;
83
+ }>;
84
+ readonly vendorCode: import("../server/orm.js").CharField<{
85
+ readonly required: false;
86
+ readonly computed: false;
87
+ readonly inverse: false;
88
+ readonly sequence: false;
89
+ readonly computeName: undefined;
90
+ readonly store: true;
91
+ readonly hasDefault: false;
92
+ readonly readonly: false;
93
+ }, string>;
94
+ readonly vendorName: import("../server/orm.js").CharField<{
95
+ readonly required: false;
96
+ readonly computed: false;
97
+ readonly inverse: false;
98
+ readonly sequence: false;
99
+ readonly computeName: undefined;
100
+ readonly store: true;
101
+ readonly hasDefault: false;
102
+ readonly readonly: false;
103
+ }, string>;
104
+ readonly currency: import("../server/orm.js").Many2oneField<"res.currency", {
105
+ readonly required: false;
106
+ readonly computed: false;
107
+ readonly inverse: false;
108
+ readonly sequence: false;
109
+ readonly computeName: undefined;
110
+ readonly store: true;
111
+ readonly hasDefault: false;
112
+ readonly readonly: false;
113
+ }>;
114
+ readonly minQuantity: import("../server/orm.js").DecimalField<{
115
+ readonly required: true;
116
+ readonly computed: false;
117
+ readonly inverse: false;
118
+ readonly sequence: false;
119
+ readonly computeName: undefined;
120
+ readonly store: true;
121
+ readonly hasDefault: true;
122
+ readonly readonly: false;
123
+ }>;
124
+ readonly price: import("../server/orm.js").DecimalField<{
125
+ readonly required: true;
126
+ readonly computed: false;
127
+ readonly inverse: false;
128
+ readonly sequence: false;
129
+ readonly computeName: undefined;
130
+ readonly store: true;
131
+ readonly hasDefault: false;
132
+ readonly readonly: false;
133
+ }>;
134
+ readonly dateFrom: import("../server/orm.js").ScalarField<"date", string, string, {
135
+ readonly required: false;
136
+ readonly computed: false;
137
+ readonly inverse: false;
138
+ readonly sequence: false;
139
+ readonly computeName: undefined;
140
+ readonly store: true;
141
+ readonly hasDefault: false;
142
+ readonly readonly: false;
143
+ }>;
144
+ readonly dateTo: import("../server/orm.js").ScalarField<"date", string, string, {
145
+ readonly required: false;
146
+ readonly computed: false;
147
+ readonly inverse: false;
148
+ readonly sequence: false;
149
+ readonly computeName: undefined;
150
+ readonly store: true;
151
+ readonly hasDefault: false;
152
+ readonly readonly: false;
153
+ }>;
154
+ readonly leadDays: import("../server/orm.js").ScalarField<"integer", number, number, {
155
+ readonly required: true;
156
+ readonly computed: false;
157
+ readonly inverse: false;
158
+ readonly sequence: false;
159
+ readonly computeName: undefined;
160
+ readonly store: true;
161
+ readonly hasDefault: true;
162
+ readonly readonly: false;
163
+ }>;
164
+ readonly preferred: import("../server/orm.js").ScalarField<"boolean", boolean, boolean, {
165
+ readonly required: true;
166
+ readonly computed: false;
167
+ readonly inverse: false;
168
+ readonly sequence: false;
169
+ readonly computeName: undefined;
170
+ readonly store: true;
171
+ readonly hasDefault: true;
172
+ readonly readonly: false;
173
+ }>;
174
+ readonly sequence: import("../server/orm.js").ScalarField<"integer", number, number, {
175
+ readonly required: false;
176
+ readonly computed: false;
177
+ readonly inverse: false;
178
+ readonly sequence: false;
179
+ readonly computeName: undefined;
180
+ readonly store: true;
181
+ readonly hasDefault: true;
182
+ readonly readonly: false;
183
+ }>;
184
+ }, {} & import("../server/orm.js").TransitionMethods<{
185
+ readonly vendor: import("../server/orm.js").Many2oneField<"res.partner", {
186
+ readonly required: true;
187
+ readonly computed: false;
188
+ readonly inverse: false;
189
+ readonly sequence: false;
190
+ readonly computeName: undefined;
191
+ readonly store: true;
192
+ readonly hasDefault: false;
193
+ readonly readonly: false;
194
+ }>;
195
+ readonly product: import("../server/orm.js").Many2oneField<"product.product", {
196
+ readonly required: false;
197
+ readonly computed: false;
198
+ readonly inverse: false;
199
+ readonly sequence: false;
200
+ readonly computeName: undefined;
201
+ readonly store: true;
202
+ readonly hasDefault: false;
203
+ readonly readonly: false;
204
+ }>;
205
+ readonly category: import("../server/orm.js").Many2oneField<"product.category", {
206
+ readonly required: false;
207
+ readonly computed: false;
208
+ readonly inverse: false;
209
+ readonly sequence: false;
210
+ readonly computeName: undefined;
211
+ readonly store: true;
212
+ readonly hasDefault: false;
213
+ readonly readonly: false;
214
+ }>;
215
+ readonly vendorCode: import("../server/orm.js").CharField<{
216
+ readonly required: false;
217
+ readonly computed: false;
218
+ readonly inverse: false;
219
+ readonly sequence: false;
220
+ readonly computeName: undefined;
221
+ readonly store: true;
222
+ readonly hasDefault: false;
223
+ readonly readonly: false;
224
+ }, string>;
225
+ readonly vendorName: import("../server/orm.js").CharField<{
226
+ readonly required: false;
227
+ readonly computed: false;
228
+ readonly inverse: false;
229
+ readonly sequence: false;
230
+ readonly computeName: undefined;
231
+ readonly store: true;
232
+ readonly hasDefault: false;
233
+ readonly readonly: false;
234
+ }, string>;
235
+ readonly currency: import("../server/orm.js").Many2oneField<"res.currency", {
236
+ readonly required: false;
237
+ readonly computed: false;
238
+ readonly inverse: false;
239
+ readonly sequence: false;
240
+ readonly computeName: undefined;
241
+ readonly store: true;
242
+ readonly hasDefault: false;
243
+ readonly readonly: false;
244
+ }>;
245
+ readonly minQuantity: import("../server/orm.js").DecimalField<{
246
+ readonly required: true;
247
+ readonly computed: false;
248
+ readonly inverse: false;
249
+ readonly sequence: false;
250
+ readonly computeName: undefined;
251
+ readonly store: true;
252
+ readonly hasDefault: true;
253
+ readonly readonly: false;
254
+ }>;
255
+ readonly price: import("../server/orm.js").DecimalField<{
256
+ readonly required: true;
257
+ readonly computed: false;
258
+ readonly inverse: false;
259
+ readonly sequence: false;
260
+ readonly computeName: undefined;
261
+ readonly store: true;
262
+ readonly hasDefault: false;
263
+ readonly readonly: false;
264
+ }>;
265
+ readonly dateFrom: import("../server/orm.js").ScalarField<"date", string, string, {
266
+ readonly required: false;
267
+ readonly computed: false;
268
+ readonly inverse: false;
269
+ readonly sequence: false;
270
+ readonly computeName: undefined;
271
+ readonly store: true;
272
+ readonly hasDefault: false;
273
+ readonly readonly: false;
274
+ }>;
275
+ readonly dateTo: import("../server/orm.js").ScalarField<"date", string, string, {
276
+ readonly required: false;
277
+ readonly computed: false;
278
+ readonly inverse: false;
279
+ readonly sequence: false;
280
+ readonly computeName: undefined;
281
+ readonly store: true;
282
+ readonly hasDefault: false;
283
+ readonly readonly: false;
284
+ }>;
285
+ readonly leadDays: import("../server/orm.js").ScalarField<"integer", number, number, {
286
+ readonly required: true;
287
+ readonly computed: false;
288
+ readonly inverse: false;
289
+ readonly sequence: false;
290
+ readonly computeName: undefined;
291
+ readonly store: true;
292
+ readonly hasDefault: true;
293
+ readonly readonly: false;
294
+ }>;
295
+ readonly preferred: import("../server/orm.js").ScalarField<"boolean", boolean, boolean, {
296
+ readonly required: true;
297
+ readonly computed: false;
298
+ readonly inverse: false;
299
+ readonly sequence: false;
300
+ readonly computeName: undefined;
301
+ readonly store: true;
302
+ readonly hasDefault: true;
303
+ readonly readonly: false;
304
+ }>;
305
+ readonly sequence: import("../server/orm.js").ScalarField<"integer", number, number, {
306
+ readonly required: false;
307
+ readonly computed: false;
308
+ readonly inverse: false;
309
+ readonly sequence: false;
310
+ readonly computeName: undefined;
311
+ readonly store: true;
312
+ readonly hasDefault: true;
313
+ readonly readonly: false;
314
+ }>;
315
+ }>>;
316
+ type Decimal = ReturnType<typeof orm.toDecimal>;
317
+ /** The vendor price chosen, and why. */
318
+ export interface VendorChoice {
319
+ readonly id: number;
320
+ readonly vendor: number;
321
+ readonly vendorName: string;
322
+ readonly price: Decimal;
323
+ readonly leadDays: number;
324
+ readonly vendorCode: string | null;
325
+ readonly explanation: string;
326
+ }
327
+ /**
328
+ * The price a vendor (or the best vendor) charges for `quantity` of a product on `date`, as the caller: the
329
+ * product's own rows before its category's; the preferred row before the others when it fits; with `needBy`, rows
330
+ * that arrive later only when none arrives in time; the cheapest, then the quickest. Null when no row fits.
331
+ */
332
+ export declare function vendorPriceFor(env: Env, input: {
333
+ readonly product: number;
334
+ readonly quantity: Decimal;
335
+ readonly date: string;
336
+ readonly vendor?: number | null;
337
+ readonly currency?: number | null;
338
+ readonly needBy?: string | null;
339
+ }): Promise<VendorChoice | null>;
340
+ export {};
@@ -0,0 +1,153 @@
1
+ import { defineModel, f } from './.kosh/bindings.js';
2
+ const ALL = ['read', 'write', 'create', 'unlink', 'export', 'import'];
3
+ export const ProductVendorPrice = defineModel('product.vendor.price', {
4
+ label: 'Vendor price',
5
+ archivable: true,
6
+ companyScoped: { required: false },
7
+ order: ['sequence asc', 'minQuantity asc', 'id asc'],
8
+ access: {
9
+ 'purchase.user': ['read', 'write', 'create', 'export', 'import'],
10
+ 'purchase.manager': ALL,
11
+ },
12
+ fields: {
13
+ vendor: f.many2one('res.partner', { required: true, ondelete: 'cascade', label: 'Vendor' }),
14
+ product: f.many2one('product.product', { ondelete: 'cascade', label: 'Product' }),
15
+ category: f.many2one('product.category', {
16
+ ondelete: 'cascade',
17
+ label: 'Category',
18
+ help: 'For every product of the category that has no price of its own from this vendor.',
19
+ }),
20
+ vendorCode: f.char({ label: 'Vendor’s code' }),
21
+ vendorName: f.char({ label: 'Vendor’s name for it' }),
22
+ currency: f.many2one('res.currency', {
23
+ label: 'Currency',
24
+ help: 'Used on orders in this currency; empty: any.',
25
+ }),
26
+ minQuantity: f.decimal({
27
+ scale: 3,
28
+ required: true,
29
+ default: '0',
30
+ label: 'From quantity',
31
+ help: 'The price applies from this quantity on (price breaks: one row per break).',
32
+ }),
33
+ price: f.decimal({ scale: 2, required: true, label: 'Price' }),
34
+ dateFrom: f.date({ label: 'Valid from' }),
35
+ dateTo: f.date({ label: 'Valid until' }),
36
+ leadDays: f.integer({
37
+ required: true,
38
+ default: 0,
39
+ label: 'Lead days',
40
+ help: 'Days from ordering to arrival.',
41
+ }),
42
+ preferred: f.boolean({
43
+ default: false,
44
+ label: 'Preferred',
45
+ help: 'Chosen before cheaper vendors when its price fits (and it arrives in time).',
46
+ }),
47
+ sequence: f.integer({ default: 10 }),
48
+ },
49
+ constraints: {
50
+ productOrCategory: {
51
+ depends: ['product', 'category'],
52
+ check: async (records) => [
53
+ ...records,
54
+ ]
55
+ .filter((r) => (r.product === null) === (r.category === null))
56
+ .map((r) => r.id),
57
+ message: 'A vendor price is for a product or for a category, one of the two.',
58
+ },
59
+ dates: {
60
+ depends: ['dateFrom', 'dateTo'],
61
+ check: async (records) => [...records]
62
+ .filter((r) => r.dateFrom !== null && r.dateTo !== null && r.dateTo < r.dateFrom)
63
+ .map((r) => r.id),
64
+ message: 'A vendor price ends on or after the day it starts.',
65
+ },
66
+ },
67
+ });
68
+ const dayOf = (v) => v instanceof Date ? v.toISOString().slice(0, 10) : String(v ?? '').slice(0, 10);
69
+ const addDays = (date, days) => {
70
+ const d = new Date(`${date}T00:00:00Z`);
71
+ d.setUTCDate(d.getUTCDate() + days);
72
+ return d.toISOString().slice(0, 10);
73
+ };
74
+ /**
75
+ * The price a vendor (or the best vendor) charges for `quantity` of a product on `date`, as the caller: the
76
+ * product's own rows before its category's; the preferred row before the others when it fits; with `needBy`, rows
77
+ * that arrive later only when none arrives in time; the cheapest, then the quickest. Null when no row fits.
78
+ */
79
+ export async function vendorPriceFor(env, input) {
80
+ const [product] = await env
81
+ .model('product.product')
82
+ .browse([input.product])
83
+ .load({ category: true });
84
+ if (product === undefined)
85
+ return null;
86
+ const category = product.category?.id ?? null;
87
+ const found = await env.model('product.vendor.price').search({
88
+ where: {
89
+ or: [{ product: input.product }, ...(category === null ? [] : [{ product: null, category }])],
90
+ minQuantity: { lte: input.quantity.toString() },
91
+ ...(input.vendor == null ? {} : { vendor: input.vendor }),
92
+ },
93
+ });
94
+ const rows = [...(await found.load({ vendor: true, currency: true, product: true }))].filter((r) => {
95
+ const from = r.dateFrom === null ? null : dayOf(r.dateFrom);
96
+ const to = r.dateTo === null ? null : dayOf(r.dateTo);
97
+ if (from !== null && from > input.date)
98
+ return false;
99
+ if (to !== null && to < input.date)
100
+ return false;
101
+ if (r.currency !== null && input.currency != null && r.currency.id !== input.currency)
102
+ return false;
103
+ return true;
104
+ });
105
+ if (rows.length === 0)
106
+ return null;
107
+ // The product's own rows win over its category's; per vendor, the highest quantity break that fits.
108
+ const own = rows.filter((r) => r.product !== null);
109
+ const pool = own.length > 0 ? own : rows;
110
+ const best = new Map();
111
+ for (const r of pool) {
112
+ const v = r.vendor.id;
113
+ const seen = best.get(v);
114
+ if (seen === undefined || r.minQuantity.gt(seen.minQuantity))
115
+ best.set(v, r);
116
+ }
117
+ const candidates = [...best.values()];
118
+ const inTime = (r) => input.needBy == null || addDays(input.date, r.leadDays) <= input.needBy;
119
+ const timely = candidates.filter(inTime);
120
+ const usable = timely.length > 0 ? timely : candidates;
121
+ const cheapest = [...usable].sort((a, b) => a.price.comparedTo(b.price) || a.leadDays - b.leadDays)[0];
122
+ const preferred = usable.find((r) => r.preferred);
123
+ const chosen = preferred ?? cheapest;
124
+ if (chosen === undefined)
125
+ return null;
126
+ const vendorName = String(chosen.vendor.name ?? '');
127
+ const breakText = chosen.minQuantity.gt(0) ? ` from ${chosen.minQuantity.toString()}` : '';
128
+ const scope = chosen.product === null ? ' (its category’s price)' : '';
129
+ const reasons = [];
130
+ if (input.vendor != null)
131
+ reasons.push(`${vendorName}’s price${breakText}${scope}`);
132
+ else if (preferred !== undefined)
133
+ reasons.push(`${vendorName} is preferred${breakText}${scope}`);
134
+ else if (usable.length > 1)
135
+ reasons.push(`${vendorName} is the cheapest of ${usable.length}${breakText}${scope}`);
136
+ else
137
+ reasons.push(`${vendorName}’s price${breakText}${scope}`);
138
+ if (input.needBy != null)
139
+ reasons.push(timely.length > 0
140
+ ? `arrives in ${chosen.leadDays} days, in time`
141
+ : `nobody arrives by ${input.needBy}; ${chosen.leadDays} days`);
142
+ else if (chosen.leadDays > 0)
143
+ reasons.push(`${chosen.leadDays} days to arrive`);
144
+ return {
145
+ id: chosen.id,
146
+ vendor: chosen.vendor.id,
147
+ vendorName,
148
+ price: chosen.price,
149
+ leadDays: chosen.leadDays,
150
+ vendorCode: chosen.vendorCode ?? null,
151
+ explanation: `${reasons.join('; ')}.`,
152
+ };
153
+ }
@@ -1,4 +1,4 @@
1
- // GENERATED by `pnpm generate:models` (Shutro’s generator). Do not edit. definitions-hash: 1bc4ea19bc543064
1
+ // GENERATED by `pnpm generate:models` (Shutro’s generator). Do not edit. definitions-hash: f5cdb2ac40836cbb
2
2
  // Bindings of module `purchase_account`: 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';