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
@@ -262,7 +262,10 @@ export const GstEinvoice = defineModel('l10n_in.einvoice', {
262
262
  fields: {
263
263
  move: f.many2one('account.move', { required: true, ondelete: 'cascade' }),
264
264
  /** E-invoicing (RFC 0016 step 5, part 4): the IRP's answer, written only by the registration. */
265
- einvoiceStatus: f.selection(EINVOICE_STATES, { label: 'E-invoice' }),
265
+ einvoiceStatus: f.selection(EINVOICE_STATES, {
266
+ label: 'E-invoice',
267
+ help: 'Whether the invoice was registered at the Invoice Registration Portal and got its IRN, failed, or was cancelled there.',
268
+ }),
266
269
  irn: f.char({ size: 64, label: 'IRN' }),
267
270
  irnAckNo: f.char({ size: 20, label: 'Acknowledgement number' }),
268
271
  irnAckDate: f.datetime({ label: 'Acknowledged at' }),
@@ -274,9 +277,15 @@ export const GstEinvoice = defineModel('l10n_in.einvoice', {
274
277
  ewbNo: f.char({ size: 12, label: 'E-way bill' }),
275
278
  ewbDate: f.datetime({ label: 'E-way bill generated at' }),
276
279
  ewbValidUntil: f.datetime({ label: 'E-way bill valid until' }),
277
- ewbStatus: f.selection({ generated: 'Generated', failed: 'Not generated: see the error', cancelled: 'Cancelled' }, { label: 'E-way bill status' }),
280
+ ewbStatus: f.selection({ generated: 'Generated', failed: 'Not generated: see the error', cancelled: 'Cancelled' }, {
281
+ label: 'E-way bill status',
282
+ help: 'Whether the e-way bill for moving the goods was generated, failed or was cancelled.',
283
+ }),
278
284
  ewbError: f.text({ label: 'E-way bill error' }),
279
- ewbMode: f.selection({ road: 'Road', rail: 'Rail', air: 'Air', ship: 'Ship' }, { label: 'Transport mode' }),
285
+ ewbMode: f.selection({ road: 'Road', rail: 'Rail', air: 'Air', ship: 'Ship' }, {
286
+ label: 'Transport mode',
287
+ help: 'How the goods travel under the e-way bill: by road, rail, air or ship.',
288
+ }),
280
289
  ewbVehicleNo: f.char({ size: 15, label: 'Vehicle number' }),
281
290
  ewbTransporterId: f.char({ size: 15, label: 'Transporter ID' }),
282
291
  ewbDistanceKm: f.integer({ label: 'Distance (km)' }),
@@ -332,6 +341,7 @@ export const MoveGst = extendModel('account.move', {
332
341
  /** E-invoicing (RFC 0016 step 5, part 4): the IRP's answer (its record's). */
333
342
  einvoiceStatus: f.selection(EINVOICE_STATES, {
334
343
  label: 'E-invoice',
344
+ help: 'Whether the invoice was registered at the Invoice Registration Portal and got its IRN, failed, or was cancelled there.',
335
345
  store: true,
336
346
  ...fromEinvoice,
337
347
  }),
@@ -346,9 +356,19 @@ export const MoveGst = extendModel('account.move', {
346
356
  ewbNo: f.char({ size: 12, label: 'E-way bill', store: true, ...fromEinvoice }),
347
357
  ewbDate: f.datetime({ label: 'E-way bill generated at', store: true, ...fromEinvoice }),
348
358
  ewbValidUntil: f.datetime({ label: 'E-way bill valid until', store: true, ...fromEinvoice }),
349
- ewbStatus: f.selection({ generated: 'Generated', failed: 'Not generated: see the error', cancelled: 'Cancelled' }, { label: 'E-way bill status', store: true, ...fromEinvoice }),
359
+ ewbStatus: f.selection({ generated: 'Generated', failed: 'Not generated: see the error', cancelled: 'Cancelled' }, {
360
+ label: 'E-way bill status',
361
+ help: 'Whether the e-way bill for moving the goods was generated, failed or was cancelled.',
362
+ store: true,
363
+ ...fromEinvoice,
364
+ }),
350
365
  ewbError: f.text({ label: 'E-way bill error', store: true, ...fromEinvoice }),
351
- ewbMode: f.selection({ road: 'Road', rail: 'Rail', air: 'Air', ship: 'Ship' }, { label: 'Transport mode', store: true, ...fromEinvoice }),
366
+ ewbMode: f.selection({ road: 'Road', rail: 'Rail', air: 'Air', ship: 'Ship' }, {
367
+ label: 'Transport mode',
368
+ help: 'How the goods travel under the e-way bill: by road, rail, air or ship.',
369
+ store: true,
370
+ ...fromEinvoice,
371
+ }),
352
372
  ewbVehicleNo: f.char({ size: 15, label: 'Vehicle number', store: true, ...fromEinvoice }),
353
373
  ewbTransporterId: f.char({ size: 15, label: 'Transporter ID', store: true, ...fromEinvoice }),
354
374
  ewbDistanceKm: f.integer({ label: 'Distance (km)', store: true, ...fromEinvoice }),
@@ -1,4 +1,4 @@
1
- import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  /**
3
3
  * The company's GST settings (RFC 0016 step 5, part 4), on the GST returns page: GSTIN, PAN, the address and PIN code
4
4
  * the IRP needs, and e-invoicing on or off. Managers change them; the server checks the GSTIN against the company's
@@ -27,7 +27,7 @@ export function GstSettings({ api }) {
27
27
  });
28
28
  const current = settings.data;
29
29
  if (current === undefined)
30
- return _jsx(_Fragment, {});
30
+ return _jsx("div", {});
31
31
  const value = (key) => String(edits[key] ?? current[key] ?? '');
32
32
  const einvoice = Boolean(edits.einvoiceEnabled ?? current.einvoiceEnabled);
33
33
  return (_jsxs("section", { className: "grid max-w-3xl gap-3 rounded-lg border p-4", "aria-labelledby": `${id}-title`, children: [_jsx("h2", { id: `${id}-title`, className: "font-medium", children: t('settings.title') }), _jsx("p", { className: "text-sm text-muted-foreground", children: current.provider === null
@@ -236,9 +236,7 @@ export async function processInbound(context, logId, mail) {
236
236
  message: null,
237
237
  });
238
238
  const recipientEmail = await context.shutro.bootstrap({ reason: 'inbound email' }, async (su) => {
239
- const [user] = await rows(su, 'res.users', { id: target.uid, active: { in: [true, false] } }, [
240
- 'email',
241
- ]);
239
+ const [user] = await rows(su.withFlags({ activeTest: false }), 'res.users', { id: target.uid }, ['email']);
242
240
  return typeof user?.['email'] === 'string' ? user['email'].toLowerCase() : '';
243
241
  });
244
242
  if (sender !== '' && sender === recipientEmail) {
@@ -315,7 +313,12 @@ async function receiveForAlias(context, logId, mail, alias, text) {
315
313
  };
316
314
  const subject = mail.subject.trim() === '' ? '(no subject)' : mail.subject.slice(0, 200);
317
315
  const created = await context.shutro.bootstrap({ reason: `inbound email: ${alias.alias}@`, company }, async (su) => {
318
- const defaults = typeof alias.defaults === 'function' ? await alias.defaults(su) : (alias.defaults ?? {});
316
+ const defaults = typeof alias.defaults === 'function'
317
+ ? await alias.defaults(su, {
318
+ address: mail.from?.address ?? '',
319
+ name: mail.from?.name ?? null,
320
+ })
321
+ : (alias.defaults ?? {});
319
322
  if (defaults === null)
320
323
  return null;
321
324
  const values = { ...defaults, [alias.subjectField]: subject };
@@ -372,7 +375,7 @@ async function recordBounce(context, mail) {
372
375
  ]);
373
376
  if (n === undefined || typeof n['actor'] !== 'number' || n['actor'] === n['user'])
374
377
  continue;
375
- const [recipient] = await rows(su, 'res.users', { id: n['user'], active: { in: [true, false] } }, ['name', 'email']);
378
+ const [recipient] = await rows(su.withFlags({ activeTest: false }), 'res.users', { id: n['user'] }, ['name', 'email']);
376
379
  const [record] = (await ref(su, String(n['resModel']))
377
380
  .browse([n['resId']])
378
381
  .load(['displayName'])).read(['displayName']);
@@ -6,6 +6,8 @@
6
6
  */
7
7
  import { messagingShutro } from '../../messaging/index.js';
8
8
  import { orm } from '../../server/orm.js';
9
+ import { storageShutro } from '../../storage/index.js';
10
+ import { SEND_MODELS } from '../send.js';
9
11
  const { defineGroup, defineModel, defineModule, f } = orm;
10
12
  export const INBOUND_STATES = [
11
13
  'received',
@@ -53,8 +55,8 @@ const InboundMessage = defineModel('mail.inbound_message', {
53
55
  });
54
56
  export const mailShutro = defineModule({
55
57
  name: 'mail',
56
- version: '0.1.0',
57
- depends: [messagingShutro],
58
+ version: '0.2.0',
59
+ depends: [messagingShutro, storageShutro],
58
60
  groups: [
59
61
  defineGroup({
60
62
  code: 'mail.manager',
@@ -62,5 +64,5 @@ export const mailShutro = defineModule({
62
64
  implies: ['base.user', 'messaging.user'],
63
65
  }),
64
66
  ],
65
- models: [InboundMessage],
67
+ models: [InboundMessage, ...SEND_MODELS],
66
68
  });
@@ -1,5 +1,6 @@
1
1
  import { defineModule } from '../modules-sdk/index.js';
2
2
  import { type ImapConfig } from './inbound/index.js';
3
+ export { type BatchResult, type Composition, installMailTemplates, type SendEngine, sendablesOf, } from './send.js';
3
4
  import { type InboundConfig } from './inbound/token.js';
4
5
  export * from './inbound/index.js';
5
6
  /** One outbound message. */
@@ -10,6 +11,14 @@ export interface OutboundMail {
10
11
  readonly text: string;
11
12
  readonly html: string;
12
13
  readonly replyTo?: string;
14
+ /** Copies (RFC 0029 §3.3). */
15
+ readonly cc?: readonly string[];
16
+ /** Files sent with it: a document's PDF. */
17
+ readonly attachments?: readonly {
18
+ readonly filename: string;
19
+ readonly content: Uint8Array;
20
+ readonly contentType: string;
21
+ }[];
13
22
  }
14
23
  /** Sends messages; the provider's id of each, when it gives one. */
15
24
  export interface Mailer {
@@ -68,8 +77,10 @@ export interface MailOptions {
68
77
  readonly webhookSecret?: string | undefined;
69
78
  /** The mailbox to poll; default `IMAP_URL`. Without one, no poller runs. */
70
79
  readonly imap?: ImapConfig | undefined;
71
- /** Start the poller (default: unless `KOSH_SCHEDULES=off`). */
80
+ /** Start the poller and the sender (default: unless `KOSH_SCHEDULES=off`). */
72
81
  readonly workers?: boolean | undefined;
82
+ /** The mailer documents are sent with (RFC 0029 §3.3); default: `SMTP_URL`. `null`: none. */
83
+ readonly mailer?: Mailer | null | undefined;
73
84
  }
74
85
  /** The mail module with explicit settings. */
75
86
  export declare function mailModule(options?: MailOptions): ReturnType<typeof defineModule>;
@@ -9,11 +9,14 @@
9
9
  */
10
10
  import { chatterContext, messaging } from '../messaging/index.js';
11
11
  import { defineModule } from '../modules-sdk/index.js';
12
- import { base } from '../server/index.js';
12
+ import { base, HttpProblem } from '../server/index.js';
13
13
  import { storage, storageOf } from '../storage/index.js';
14
+ import { form, list } from '../views/index.js';
14
15
  import nodemailer from 'nodemailer';
15
16
  import { imapConfigFromEnv, registerInboundRoutes, startPoller, } from './inbound/index.js';
16
17
  import { mailShutro } from './inbound/models.js';
18
+ import { installMailTemplates, sendEngine } from './send.js';
19
+ export { installMailTemplates, sendablesOf, } from './send.js';
17
20
  import { inboundConfigFromEnv } from './inbound/token.js';
18
21
  export * from './inbound/index.js';
19
22
  /** The SMTP mailer: `url` is `smtp://user:pass@host:port` (or `smtps://` for implicit TLS). */
@@ -30,6 +33,16 @@ export function createSmtpMailer(options) {
30
33
  text: mail.text,
31
34
  html: mail.html,
32
35
  ...(mail.replyTo === undefined ? {} : { replyTo: mail.replyTo }),
36
+ ...(mail.cc === undefined || mail.cc.length === 0 ? {} : { cc: [...mail.cc] }),
37
+ ...(mail.attachments === undefined
38
+ ? {}
39
+ : {
40
+ attachments: mail.attachments.map((a) => ({
41
+ filename: a.filename,
42
+ content: Buffer.from(a.content),
43
+ contentType: a.contentType,
44
+ })),
45
+ }),
33
46
  });
34
47
  return { id: typeof info.messageId === 'string' ? info.messageId : null };
35
48
  },
@@ -126,19 +139,79 @@ export function mailModule(options = {}) {
126
139
  icon: 'mail',
127
140
  sequence: 950,
128
141
  category: 'Administration',
129
- summary: 'Inbound email: replies posted on records, and the ones that matched no one',
142
+ summary: 'Documents sent with their PDF, email templates, and replies posted on records or quarantined',
130
143
  },
131
144
  accessLevels: {
132
145
  manager: { label: 'Email manager (the inbound log)', groups: ['mail.manager'] },
133
146
  },
134
147
  actions: {
135
148
  'mail.action_inbound': { type: 'client', page: 'mail.Inbound', label: 'Inbound email' },
149
+ 'mail.action_templates': {
150
+ model: 'mail.template',
151
+ label: 'Email templates',
152
+ views: ['list', 'form'],
153
+ },
154
+ 'mail.action_outgoing': { model: 'mail.outgoing', label: 'Sent', views: ['list', 'form'] },
136
155
  },
137
156
  menus: [
138
157
  { id: 'mail.root', label: 'Email', app: 'mail' },
139
158
  { id: 'mail.inbound', parent: 'mail.root', label: 'Inbound', action: 'mail.action_inbound' },
159
+ {
160
+ id: 'mail.outgoing',
161
+ parent: 'mail.root',
162
+ label: 'Sent',
163
+ action: 'mail.action_outgoing',
164
+ sequence: 2,
165
+ },
166
+ {
167
+ id: 'mail.templates',
168
+ parent: 'mail.root',
169
+ label: 'Email templates',
170
+ action: 'mail.action_templates',
171
+ sequence: 3,
172
+ },
140
173
  ],
174
+ views: {
175
+ 'mail.template.list': list('mail.template', {
176
+ columns: ['name', 'targetModel', 'subject', 'document'],
177
+ }),
178
+ 'mail.template.form': form('mail.template', (k) => ({
179
+ header: { buttons: [] },
180
+ sheet: [
181
+ k.group('main', ['name', 'targetModel', 'subject', 'body', 'document'], {
182
+ columns: 1,
183
+ description: 'Placeholders like {{name}} or {{partner.name}} are filled from the document; each language keeps its own text.',
184
+ }),
185
+ ],
186
+ })),
187
+ 'mail.outgoing.list': list('mail.outgoing', {
188
+ columns: ['createdAt', 'to', 'subject', 'resModel', 'author', 'state'],
189
+ }),
190
+ 'mail.outgoing.form': form('mail.outgoing', (k) => ({
191
+ header: { buttons: [], statusbar: 'state' },
192
+ sheet: [
193
+ k.group('main', ['to', 'cc', 'subject', 'resModel', 'resId', 'author', 'sentAt']),
194
+ k.group('content', ['text', 'attachments', 'error', 'providerId'], { columns: 1 }),
195
+ ],
196
+ })),
197
+ },
198
+ search: {
199
+ 'mail.template': {
200
+ fields: ['name', 'targetModel', 'subject'],
201
+ },
202
+ 'mail.outgoing': {
203
+ fields: ['to', 'subject'],
204
+ filters: {
205
+ failed: { label: 'Failed', domain: { state: 'failed' }, group: 'state' },
206
+ queued: { label: 'Queued', domain: { state: 'queued' }, group: 'state' },
207
+ },
208
+ groupBy: ['state', 'resModel'],
209
+ },
210
+ },
141
211
  privateModels: ['mail.inbound_message'],
212
+ hooks: {
213
+ defaults: async (env, modules) => `${await installMailTemplates(env, modules)} email template(s) installed`,
214
+ },
142
215
  routes: (context) => {
143
216
  const inbound = {
144
217
  shutro: context.shutro,
@@ -152,9 +225,73 @@ export function mailModule(options = {}) {
152
225
  registerInboundRoutes(context, inbound, {
153
226
  webhookSecret: options.webhookSecret ?? process.env['MAIL_INBOUND_WEBHOOK_SECRET'],
154
227
  });
228
+ // Sending documents (RFC 0029 §3.3).
229
+ const outbound = options.mailer === undefined ? mailerFromEnv() : (options.mailer ?? undefined);
230
+ const engine = sendEngine(context, () => outbound);
231
+ const target = (params) => {
232
+ const p = params;
233
+ const id = Number(p.id);
234
+ if (typeof p.model !== 'string' || !Number.isSafeInteger(id) || id <= 0)
235
+ throw new HttpProblem(400, 'invalid-path', 'Invalid record', 'A model and a record id.');
236
+ return { model: p.model, id };
237
+ };
238
+ context.app.get('/api/v1/mail/sendable', async () => ({
239
+ models: [...engine.sendables.keys()],
240
+ mailer: outbound !== undefined,
241
+ }));
242
+ context.app.get('/api/v1/mail/compose/:model/:id', async (request) => {
243
+ const { model, id } = target(request.params);
244
+ return request.env((env) => engine.compose(env, model, id));
245
+ });
246
+ context.app.post('/api/v1/mail/send/:model/:id', async (request) => {
247
+ const { model, id } = target(request.params);
248
+ return request.env((env) => engine.send(env, model, id, (request.body ?? {})), { write: true });
249
+ });
250
+ context.app.post('/api/v1/mail/send-many/:model', async (request) => {
251
+ const model = request.params.model;
252
+ const ids = request.body?.ids;
253
+ if (typeof model !== 'string' ||
254
+ !Array.isArray(ids) ||
255
+ !ids.every((i) => Number.isSafeInteger(i) && i > 0))
256
+ throw new HttpProblem(400, 'invalid-body', 'Invalid batch', '{ ids: [record ids] }.');
257
+ return request.env((env) => engine.sendMany(env, model, ids), {
258
+ write: true,
259
+ });
260
+ });
155
261
  // Background work is off in the CLI (kosh init, migrate), like the schedules.
156
262
  if (!(options.workers ?? process.env['KOSH_SCHEDULES'] !== 'off'))
157
263
  return;
264
+ // Documents sent by themselves (`autoSend`): as the user whose change emitted the event.
265
+ for (const [model, spec] of engine.sendables) {
266
+ if (spec.autoSend === undefined)
267
+ continue;
268
+ const worker = context.shutro.subscribe(`mail.auto.${model}`, spec.autoSend.topic, async (event, env) => {
269
+ const id = Number(event.payload?.id);
270
+ if (!Number.isSafeInteger(id))
271
+ return;
272
+ try {
273
+ await engine.autoSend(env, model, id);
274
+ }
275
+ catch (error) {
276
+ // A document that cannot be sent (no template, no storage) is logged, never retried forever.
277
+ context.app.log.warn({ err: error, model, id }, 'automatic email not sent');
278
+ }
279
+ }, { pollMs: 2000 });
280
+ worker.start();
281
+ context.app.addHook('onClose', async () => {
282
+ await worker.stop();
283
+ });
284
+ }
285
+ const sender = context.shutro.subscribe('mail.send', 'mail.outgoing.queued', async (event, env) => {
286
+ const id = Number(event.payload?.outgoing);
287
+ if (!Number.isSafeInteger(id))
288
+ return;
289
+ await env.asSuperuser({ reason: 'email sent from a record' }, (su) => engine.deliver(su, id));
290
+ }, { pollMs: 2000 });
291
+ sender.start();
292
+ context.app.addHook('onClose', async () => {
293
+ await sender.stop();
294
+ });
158
295
  const imap = options.imap ?? imapConfigFromEnv();
159
296
  if (imap === undefined)
160
297
  return;
@@ -0,0 +1,56 @@
1
+ import type { KoshModule, SendableSpec } from '../modules-sdk/index.js';
2
+ import { type ModuleContext } from '../server/index.js';
3
+ import { type Env } from '../server/orm.js';
4
+ import { type Mailer } from './index.js';
5
+ /** The models of sending documents, added to the mail module's. */
6
+ export declare const SEND_MODELS: readonly unknown[];
7
+ /** The sendable documents of the loaded modules, by model. */
8
+ export declare function sendablesOf(modules: readonly KoshModule[]): Map<string, SendableSpec>;
9
+ /** Installs the manifests' email templates that do not exist yet (by `module.key`). */
10
+ export declare function installMailTemplates(env: Env, modules: readonly KoshModule[]): Promise<number>;
11
+ /** What the Send dialog shows, filled in the partner's language. */
12
+ export interface Composition {
13
+ readonly to: readonly {
14
+ readonly name: string;
15
+ readonly email: string | null;
16
+ }[];
17
+ readonly subject: string;
18
+ readonly body: string;
19
+ /** The PDF that goes with it, or none. */
20
+ readonly attachment: string | null;
21
+ readonly lang: string;
22
+ /** Emails sent from this record so far, and the last one's date. */
23
+ readonly sent: number;
24
+ readonly lastSentAt: string | null;
25
+ }
26
+ /** The send engine of one server. */
27
+ export interface SendEngine {
28
+ readonly sendables: ReadonlyMap<string, SendableSpec>;
29
+ compose(env: Env, model: string, id: number): Promise<Composition>;
30
+ send(env: Env, model: string, id: number, input: {
31
+ to?: unknown;
32
+ cc?: unknown;
33
+ subject?: unknown;
34
+ body?: unknown;
35
+ attach?: unknown;
36
+ }): Promise<{
37
+ outgoing: number;
38
+ message: number;
39
+ attachment: number | null;
40
+ }>;
41
+ deliver(su: Env, outgoing: number): Promise<void>;
42
+ /** Sends each record as its template says, to its partner; the ones that cannot be sent are said why. */
43
+ sendMany(env: Env, model: string, ids: readonly number[]): Promise<BatchResult>;
44
+ /** Sends a record by itself (an `autoSend` event) when its partner asked for it; whether it was sent. */
45
+ autoSend(env: Env, model: string, id: number): Promise<boolean>;
46
+ }
47
+ /** What a batch send did. */
48
+ export interface BatchResult {
49
+ readonly sent: number;
50
+ readonly skipped: readonly {
51
+ readonly id: number;
52
+ readonly reason: string;
53
+ }[];
54
+ }
55
+ /** The send engine of one server: the sendable documents, the models' metadata, the mailer. */
56
+ export declare function sendEngine(context: ModuleContext, mailer: () => Mailer | undefined): SendEngine;