shutro-erp 0.3.5 → 0.3.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (768) hide show
  1. package/dist/account_asset/.kosh/bindings.js +15 -0
  2. package/dist/{mrp_account → account_asset}/.kosh/schema.d.ts +785 -614
  3. package/dist/account_asset/board.d.ts +61 -0
  4. package/dist/account_asset/board.js +86 -0
  5. package/dist/account_asset/books.d.ts +42 -0
  6. package/dist/account_asset/books.js +398 -0
  7. package/dist/account_asset/demo.d.ts +7 -0
  8. package/dist/account_asset/demo.js +72 -0
  9. package/dist/account_asset/i18n/bn.d.ts +2 -0
  10. package/dist/account_asset/i18n/bn.js +97 -0
  11. package/dist/account_asset/index.d.ts +9 -0
  12. package/dist/account_asset/index.js +337 -0
  13. package/dist/account_asset/module.d.ts +11076 -0
  14. package/dist/account_asset/module.js +230 -0
  15. package/dist/account_budget/.kosh/bindings.js +15 -0
  16. package/dist/account_budget/.kosh/schema.d.ts +2841 -0
  17. package/dist/account_budget/budget.d.ts +5 -0
  18. package/dist/account_budget/budget.js +142 -0
  19. package/dist/account_budget/demo.d.ts +6 -0
  20. package/dist/account_budget/demo.js +30 -0
  21. package/dist/account_budget/i18n/bn.d.ts +2 -0
  22. package/dist/account_budget/i18n/bn.js +63 -0
  23. package/dist/account_budget/index.d.ts +4 -0
  24. package/dist/account_budget/index.js +237 -0
  25. package/dist/account_budget/module.d.ts +27289 -0
  26. package/dist/account_budget/module.js +182 -0
  27. package/dist/account_portal/.kosh/bindings.js +1 -1
  28. package/dist/account_portal/.kosh/schema.d.ts +651 -10
  29. package/dist/account_portal/i18n/bn.d.ts +2 -0
  30. package/dist/account_portal/i18n/bn.js +6 -0
  31. package/dist/account_portal/index.js +2 -0
  32. package/dist/account_portal/module.d.ts +5212 -1592
  33. package/dist/accounting/.kosh/bindings.js +1 -1
  34. package/dist/accounting/.kosh/schema.d.ts +651 -10
  35. package/dist/accounting/closing.js +1 -0
  36. package/dist/accounting/fiscal.d.ts +578 -0
  37. package/dist/accounting/fiscal.js +401 -0
  38. package/dist/accounting/followups.d.ts +618 -0
  39. package/dist/accounting/followups.js +420 -0
  40. package/dist/accounting/i18n/bn.d.ts +2 -0
  41. package/dist/accounting/i18n/bn.js +425 -0
  42. package/dist/accounting/index.d.ts +3 -1
  43. package/dist/accounting/index.js +780 -5
  44. package/dist/accounting/module.d.ts +5386 -1543
  45. package/dist/accounting/module.js +155 -18
  46. package/dist/accounting/statements.d.ts +878 -0
  47. package/dist/accounting/statements.js +728 -0
  48. package/dist/accounting/web/BankReconcilePage.d.ts +9 -0
  49. package/dist/accounting/web/BankReconcilePage.js +138 -0
  50. package/dist/accounting/web/FollowupsPage.d.ts +8 -0
  51. package/dist/accounting/web/FollowupsPage.js +54 -0
  52. package/dist/accounting/web/PostingPreview.d.ts +8 -0
  53. package/dist/accounting/web/PostingPreview.js +26 -0
  54. package/dist/accounting/web/index.d.ts +3 -0
  55. package/dist/accounting/web/index.js +9 -0
  56. package/dist/accounting/web/messages.js +140 -0
  57. package/dist/approvals/.kosh/bindings.d.ts +22 -0
  58. package/dist/approvals/.kosh/bindings.js +15 -0
  59. package/dist/approvals/.kosh/schema.d.ts +879 -0
  60. package/dist/approvals/demo.d.ts +7 -0
  61. package/dist/approvals/demo.js +41 -0
  62. package/dist/approvals/i18n/bn.d.ts +2 -0
  63. package/dist/approvals/i18n/bn.js +133 -0
  64. package/dist/approvals/index.d.ts +36 -0
  65. package/dist/approvals/index.js +772 -0
  66. package/dist/approvals/mails.d.ts +30 -0
  67. package/dist/approvals/mails.js +87 -0
  68. package/dist/approvals/module.d.ts +2930 -0
  69. package/dist/approvals/module.js +473 -0
  70. package/dist/approvals/web/Config.d.ts +12 -0
  71. package/dist/approvals/web/Config.js +60 -0
  72. package/dist/approvals/web/History.d.ts +4 -0
  73. package/dist/approvals/web/History.js +13 -0
  74. package/dist/approvals/web/Inbox.d.ts +9 -0
  75. package/dist/approvals/web/Inbox.js +114 -0
  76. package/dist/approvals/web/Matrix.d.ts +9 -0
  77. package/dist/approvals/web/Matrix.js +26 -0
  78. package/dist/approvals/web/Mine.d.ts +7 -0
  79. package/dist/approvals/web/Mine.js +27 -0
  80. package/dist/approvals/web/index.d.ts +15 -0
  81. package/dist/approvals/web/index.js +29 -0
  82. package/dist/approvals/web/messages.d.ts +2 -0
  83. package/dist/approvals/web/messages.js +211 -0
  84. package/dist/approvals/web/shared.d.ts +59 -0
  85. package/dist/approvals/web/shared.js +46 -0
  86. package/dist/approvals_purchase/.kosh/bindings.d.ts +22 -0
  87. package/dist/approvals_purchase/.kosh/bindings.js +15 -0
  88. package/dist/approvals_purchase/.kosh/schema.d.ts +1997 -0
  89. package/dist/approvals_purchase/i18n/bn.d.ts +2 -0
  90. package/dist/approvals_purchase/i18n/bn.js +5 -0
  91. package/dist/approvals_purchase/index.d.ts +3 -0
  92. package/dist/approvals_purchase/index.js +47 -0
  93. package/dist/approvals_purchase/module.d.ts +12670 -0
  94. package/dist/approvals_purchase/module.js +84 -0
  95. package/dist/attendance/.kosh/bindings.d.ts +22 -0
  96. package/dist/attendance/.kosh/bindings.js +15 -0
  97. package/dist/attendance/.kosh/schema.d.ts +1106 -0
  98. package/dist/attendance/days.d.ts +96 -0
  99. package/dist/attendance/days.js +430 -0
  100. package/dist/attendance/demo.d.ts +7 -0
  101. package/dist/attendance/demo.js +58 -0
  102. package/dist/attendance/i18n/bn.d.ts +2 -0
  103. package/dist/attendance/i18n/bn.js +147 -0
  104. package/dist/attendance/index.d.ts +4 -0
  105. package/dist/attendance/index.js +515 -0
  106. package/dist/attendance/module.d.ts +4413 -0
  107. package/dist/attendance/module.js +412 -0
  108. package/dist/attendance/routes.d.ts +16 -0
  109. package/dist/attendance/routes.js +266 -0
  110. package/dist/attendance/web/Check.d.ts +8 -0
  111. package/dist/attendance/web/Check.js +40 -0
  112. package/dist/attendance/web/Kiosk.d.ts +8 -0
  113. package/dist/attendance/web/Kiosk.js +62 -0
  114. package/dist/attendance/web/PinButton.d.ts +7 -0
  115. package/dist/attendance/web/PinButton.js +29 -0
  116. package/dist/attendance/web/index.d.ts +13 -0
  117. package/dist/attendance/web/index.js +22 -0
  118. package/dist/attendance/web/messages.d.ts +2 -0
  119. package/dist/attendance/web/messages.js +61 -0
  120. package/dist/automation/engine.js +1 -1
  121. package/dist/calendar/.kosh/bindings.js +1 -1
  122. package/dist/calendar/.kosh/schema.d.ts +2 -1
  123. package/dist/calendar/i18n/bn.d.ts +2 -0
  124. package/dist/calendar/i18n/bn.js +80 -0
  125. package/dist/calendar/index.js +77 -0
  126. package/dist/calendar/module.d.ts +26 -0
  127. package/dist/calendar/module.js +14 -4
  128. package/dist/cli/apps.js +25 -5
  129. package/dist/cli/init.js +46 -4
  130. package/dist/cli/templates.d.ts +1 -1
  131. package/dist/cli/templates.js +123 -5
  132. package/dist/contacts/.kosh/bindings.js +1 -1
  133. package/dist/contacts/.kosh/schema.d.ts +2 -1
  134. package/dist/contacts/i18n/bn.d.ts +2 -0
  135. package/dist/contacts/i18n/bn.js +67 -0
  136. package/dist/contacts/index.js +3 -0
  137. package/dist/contacts/module.d.ts +42 -0
  138. package/dist/contacts/module.js +19 -3
  139. package/dist/crm/.kosh/bindings.js +1 -1
  140. package/dist/crm/.kosh/schema.d.ts +3 -1
  141. package/dist/crm/i18n/bn.d.ts +2 -0
  142. package/dist/crm/i18n/bn.js +80 -0
  143. package/dist/crm/index.js +22 -0
  144. package/dist/crm/module.d.ts +22 -0
  145. package/dist/crm/module.js +6 -3
  146. package/dist/documents/.kosh/bindings.d.ts +22 -0
  147. package/dist/documents/.kosh/bindings.js +15 -0
  148. package/dist/documents/.kosh/schema.d.ts +863 -0
  149. package/dist/documents/demo.d.ts +6 -0
  150. package/dist/documents/demo.js +22 -0
  151. package/dist/documents/documents.d.ts +98 -0
  152. package/dist/documents/documents.js +318 -0
  153. package/dist/documents/i18n/bn.d.ts +2 -0
  154. package/dist/documents/i18n/bn.js +83 -0
  155. package/dist/documents/index.d.ts +30 -0
  156. package/dist/documents/index.js +569 -0
  157. package/dist/documents/module.d.ts +2801 -0
  158. package/dist/documents/module.js +215 -0
  159. package/dist/documents/web/Versions.d.ts +7 -0
  160. package/dist/documents/web/Versions.js +45 -0
  161. package/dist/documents/web/index.d.ts +11 -0
  162. package/dist/documents/web/index.js +16 -0
  163. package/dist/documents/web/messages.d.ts +2 -0
  164. package/dist/documents/web/messages.js +21 -0
  165. package/dist/event/.kosh/bindings.js +1 -1
  166. package/dist/event/.kosh/schema.d.ts +2 -1
  167. package/dist/event/i18n/bn.d.ts +2 -0
  168. package/dist/event/i18n/bn.js +101 -0
  169. package/dist/event/index.js +66 -0
  170. package/dist/event/module.d.ts +20 -0
  171. package/dist/event/module.js +8 -1
  172. package/dist/event_account/.kosh/bindings.js +1 -1
  173. package/dist/event_account/.kosh/schema.d.ts +651 -10
  174. package/dist/event_account/i18n/bn.d.ts +2 -0
  175. package/dist/event_account/i18n/bn.js +5 -0
  176. package/dist/event_account/index.js +2 -0
  177. package/dist/event_account/module.d.ts +5133 -1513
  178. package/dist/expense/.kosh/bindings.d.ts +22 -0
  179. package/dist/expense/.kosh/bindings.js +15 -0
  180. package/dist/expense/.kosh/schema.d.ts +1620 -0
  181. package/dist/expense/demo.d.ts +7 -0
  182. package/dist/expense/demo.js +69 -0
  183. package/dist/expense/i18n/bn.d.ts +2 -0
  184. package/dist/expense/i18n/bn.js +155 -0
  185. package/dist/expense/index.d.ts +3 -0
  186. package/dist/expense/index.js +502 -0
  187. package/dist/expense/module.d.ts +6768 -0
  188. package/dist/expense/module.js +649 -0
  189. package/dist/expense_account/.kosh/bindings.d.ts +22 -0
  190. package/dist/expense_account/.kosh/bindings.js +15 -0
  191. package/dist/expense_account/.kosh/schema.d.ts +2515 -0
  192. package/dist/expense_account/i18n/bn.d.ts +2 -0
  193. package/dist/expense_account/i18n/bn.js +15 -0
  194. package/dist/expense_account/index.d.ts +3 -0
  195. package/dist/expense_account/index.js +76 -0
  196. package/dist/expense_account/module.d.ts +14628 -0
  197. package/dist/expense_account/module.js +318 -0
  198. package/dist/helpdesk/.kosh/bindings.d.ts +22 -0
  199. package/dist/helpdesk/.kosh/bindings.js +15 -0
  200. package/dist/helpdesk/.kosh/schema.d.ts +886 -0
  201. package/dist/helpdesk/demo.d.ts +7 -0
  202. package/dist/helpdesk/demo.js +65 -0
  203. package/dist/helpdesk/hours.d.ts +17 -0
  204. package/dist/helpdesk/hours.js +94 -0
  205. package/dist/helpdesk/i18n/bn.d.ts +2 -0
  206. package/dist/helpdesk/i18n/bn.js +127 -0
  207. package/dist/helpdesk/index.d.ts +10 -0
  208. package/dist/helpdesk/index.js +463 -0
  209. package/dist/helpdesk/module.d.ts +2960 -0
  210. package/dist/helpdesk/module.js +326 -0
  211. package/dist/helpdesk/routes.d.ts +12 -0
  212. package/dist/helpdesk/routes.js +132 -0
  213. package/dist/helpdesk/sla.d.ts +37 -0
  214. package/dist/helpdesk/sla.js +226 -0
  215. package/dist/hr/.kosh/bindings.js +1 -1
  216. package/dist/hr/.kosh/schema.d.ts +59 -1
  217. package/dist/hr/demo.js +11 -1
  218. package/dist/hr/i18n/bn.d.ts +2 -0
  219. package/dist/hr/i18n/bn.js +126 -0
  220. package/dist/hr/index.d.ts +1 -1
  221. package/dist/hr/index.js +158 -12
  222. package/dist/hr/module.d.ts +932 -59
  223. package/dist/hr/module.js +114 -17
  224. package/dist/indent/.kosh/bindings.d.ts +22 -0
  225. package/dist/indent/.kosh/bindings.js +15 -0
  226. package/dist/indent/.kosh/schema.d.ts +2084 -0
  227. package/dist/indent/demo.d.ts +7 -0
  228. package/dist/indent/demo.js +48 -0
  229. package/dist/indent/i18n/bn.d.ts +2 -0
  230. package/dist/indent/i18n/bn.js +143 -0
  231. package/dist/indent/index.d.ts +3 -0
  232. package/dist/indent/index.js +450 -0
  233. package/dist/indent/module.d.ts +13424 -0
  234. package/dist/indent/module.js +792 -0
  235. package/dist/indent_purchase/.kosh/bindings.d.ts +22 -0
  236. package/dist/indent_purchase/.kosh/bindings.js +15 -0
  237. package/dist/indent_purchase/.kosh/schema.d.ts +2710 -0
  238. package/dist/indent_purchase/i18n/bn.d.ts +2 -0
  239. package/dist/indent_purchase/i18n/bn.js +13 -0
  240. package/dist/indent_purchase/index.d.ts +3 -0
  241. package/dist/indent_purchase/index.js +61 -0
  242. package/dist/indent_purchase/module.d.ts +27950 -0
  243. package/dist/indent_purchase/module.js +163 -0
  244. package/dist/l10n_bd/.kosh/bindings.js +1 -1
  245. package/dist/l10n_bd/.kosh/schema.d.ts +651 -10
  246. package/dist/l10n_bd/i18n/bn.d.ts +2 -0
  247. package/dist/l10n_bd/i18n/bn.js +69 -0
  248. package/dist/l10n_bd/index.js +2 -0
  249. package/dist/l10n_bd/module.d.ts +5212 -1592
  250. package/dist/l10n_bd_payroll/.kosh/bindings.d.ts +22 -0
  251. package/dist/l10n_bd_payroll/.kosh/bindings.js +15 -0
  252. package/dist/l10n_bd_payroll/.kosh/schema.d.ts +2891 -0
  253. package/dist/l10n_bd_payroll/data.d.ts +47 -0
  254. package/dist/l10n_bd_payroll/data.js +347 -0
  255. package/dist/l10n_bd_payroll/i18n/bn.d.ts +2 -0
  256. package/dist/l10n_bd_payroll/i18n/bn.js +4 -0
  257. package/dist/l10n_bd_payroll/index.d.ts +4 -0
  258. package/dist/l10n_bd_payroll/index.js +26 -0
  259. package/dist/l10n_bd_payroll/module.d.ts +17294 -0
  260. package/dist/l10n_bd_payroll/module.js +86 -0
  261. package/dist/l10n_bd_pos/.kosh/bindings.d.ts +22 -0
  262. package/dist/{mrp_account → l10n_bd_pos}/.kosh/bindings.js +2 -2
  263. package/dist/l10n_bd_pos/.kosh/schema.d.ts +2341 -0
  264. package/dist/l10n_bd_pos/i18n/bn.d.ts +2 -0
  265. package/dist/l10n_bd_pos/i18n/bn.js +32 -0
  266. package/dist/l10n_bd_pos/index.d.ts +3 -0
  267. package/dist/l10n_bd_pos/index.js +111 -0
  268. package/dist/{mrp_account → l10n_bd_pos}/module.d.ts +9047 -6981
  269. package/dist/l10n_bd_pos/module.js +43 -0
  270. package/dist/l10n_in/.kosh/bindings.js +1 -1
  271. package/dist/l10n_in/.kosh/schema.d.ts +651 -10
  272. package/dist/l10n_in/i18n/bn.d.ts +2 -0
  273. package/dist/l10n_in/i18n/bn.js +95 -0
  274. package/dist/l10n_in/index.js +2 -0
  275. package/dist/l10n_in/module.d.ts +6778 -1580
  276. package/dist/l10n_in/module.js +25 -5
  277. package/dist/l10n_in/web/GstSettings.js +2 -2
  278. package/dist/mail/inbound/handle.js +8 -5
  279. package/dist/mail/inbound/models.js +5 -3
  280. package/dist/mail/index.d.ts +12 -1
  281. package/dist/mail/index.js +139 -2
  282. package/dist/mail/send.d.ts +56 -0
  283. package/dist/mail/send.js +394 -0
  284. package/dist/mail/web/SendButton.d.ts +9 -0
  285. package/dist/mail/web/SendButton.js +71 -0
  286. package/dist/mail/web/SendSelected.d.ts +8 -0
  287. package/dist/mail/web/SendSelected.js +33 -0
  288. package/dist/mail/web/index.d.ts +2 -0
  289. package/dist/mail/web/index.js +6 -0
  290. package/dist/mail/web/messages.js +36 -0
  291. package/dist/maintenance/.kosh/bindings.js +1 -1
  292. package/dist/maintenance/.kosh/schema.d.ts +2 -1
  293. package/dist/maintenance/i18n/bn.d.ts +2 -0
  294. package/dist/maintenance/i18n/bn.js +132 -0
  295. package/dist/maintenance/index.js +85 -0
  296. package/dist/maintenance/module.d.ts +25 -0
  297. package/dist/maintenance/module.js +27 -9
  298. package/dist/maintenance_stock/.kosh/bindings.js +1 -1
  299. package/dist/maintenance_stock/.kosh/schema.d.ts +374 -3
  300. package/dist/maintenance_stock/i18n/bn.d.ts +2 -0
  301. package/dist/maintenance_stock/i18n/bn.js +21 -0
  302. package/dist/maintenance_stock/index.js +2 -0
  303. package/dist/maintenance_stock/module.d.ts +6095 -1327
  304. package/dist/maintenance_stock/module.js +1 -0
  305. package/dist/modules-sdk/apps.d.ts +10 -0
  306. package/dist/modules-sdk/apps.js +32 -0
  307. package/dist/modules-sdk/index.d.ts +1 -1
  308. package/dist/modules-sdk/manifest.d.ts +105 -2
  309. package/dist/payment/.kosh/bindings.js +1 -1
  310. package/dist/payment/.kosh/schema.d.ts +653 -11
  311. package/dist/payment/i18n/bn.d.ts +2 -0
  312. package/dist/payment/i18n/bn.js +59 -0
  313. package/dist/payment/index.d.ts +41 -0
  314. package/dist/payment/index.js +216 -74
  315. package/dist/payment/module.d.ts +5353 -1675
  316. package/dist/payment/module.js +36 -6
  317. package/dist/payment/settle.js +11 -1
  318. package/dist/payroll/.kosh/bindings.d.ts +22 -0
  319. package/dist/payroll/.kosh/bindings.js +15 -0
  320. package/dist/payroll/.kosh/schema.d.ts +1448 -0
  321. package/dist/payroll/compute.d.ts +35 -0
  322. package/dist/payroll/compute.js +398 -0
  323. package/dist/payroll/demo.d.ts +55 -0
  324. package/dist/payroll/demo.js +121 -0
  325. package/dist/payroll/formula.d.ts +62 -0
  326. package/dist/payroll/formula.js +320 -0
  327. package/dist/payroll/i18n/bn.d.ts +2 -0
  328. package/dist/payroll/i18n/bn.js +206 -0
  329. package/dist/payroll/index.d.ts +230 -0
  330. package/dist/payroll/index.js +715 -0
  331. package/dist/{mrp → payroll}/module.d.ts +4294 -2624
  332. package/dist/payroll/module.js +606 -0
  333. package/dist/payroll/routes.d.ts +10 -0
  334. package/dist/payroll/routes.js +112 -0
  335. package/dist/payroll_account/.kosh/bindings.d.ts +22 -0
  336. package/dist/payroll_account/.kosh/bindings.js +15 -0
  337. package/dist/payroll_account/.kosh/schema.d.ts +2887 -0
  338. package/dist/payroll_account/i18n/bn.d.ts +2 -0
  339. package/dist/payroll_account/i18n/bn.js +10 -0
  340. package/dist/payroll_account/index.d.ts +3 -0
  341. package/dist/payroll_account/index.js +42 -0
  342. package/dist/payroll_account/module.d.ts +16738 -0
  343. package/dist/payroll_account/module.js +256 -0
  344. package/dist/permissions/approvals.d.ts +227 -12
  345. package/dist/permissions/approvals.js +1421 -67
  346. package/dist/permissions/index.d.ts +1 -1
  347. package/dist/permissions/index.js +2 -2
  348. package/dist/permissions/models.js +364 -13
  349. package/dist/permissions/routes.d.ts +9 -1
  350. package/dist/permissions/routes.js +72 -5
  351. package/dist/permissions/web/ApprovalPanel.d.ts +5 -4
  352. package/dist/permissions/web/ApprovalPanel.js +75 -11
  353. package/dist/permissions/web/index.d.ts +6 -4
  354. package/dist/permissions/web/index.js +13 -4
  355. package/dist/permissions/web/messages.d.ts +2 -0
  356. package/dist/permissions/web/messages.js +95 -0
  357. package/dist/portal/.kosh/bindings.js +1 -1
  358. package/dist/portal/.kosh/schema.d.ts +2 -1
  359. package/dist/portal/documents.d.ts +3 -0
  360. package/dist/portal/documents.js +21 -1
  361. package/dist/portal/i18n/bn.d.ts +2 -0
  362. package/dist/portal/i18n/bn.js +33 -0
  363. package/dist/portal/index.js +3 -1
  364. package/dist/portal/module.d.ts +20 -0
  365. package/dist/portal/routes-documents.js +76 -0
  366. package/dist/pos/.kosh/bindings.js +1 -1
  367. package/dist/pos/.kosh/schema.d.ts +652 -10
  368. package/dist/pos/i18n/bn.d.ts +2 -0
  369. package/dist/pos/i18n/bn.js +133 -0
  370. package/dist/pos/index.js +87 -1
  371. package/dist/pos/module.d.ts +6967 -1709
  372. package/dist/pos/module.js +49 -5
  373. package/dist/pos/routes.js +80 -7
  374. package/dist/pos/web/Register.js +2 -5
  375. package/dist/pos_stock/.kosh/bindings.js +1 -1
  376. package/dist/pos_stock/.kosh/schema.d.ts +822 -12
  377. package/dist/pos_stock/i18n/bn.d.ts +2 -0
  378. package/dist/pos_stock/i18n/bn.js +6 -0
  379. package/dist/pos_stock/index.js +2 -0
  380. package/dist/pos_stock/module.d.ts +11241 -2851
  381. package/dist/product/.kosh/bindings.js +1 -1
  382. package/dist/product/.kosh/schema.d.ts +203 -1
  383. package/dist/product/i18n/bn.d.ts +2 -0
  384. package/dist/product/i18n/bn.js +175 -0
  385. package/dist/product/index.d.ts +1 -0
  386. package/dist/product/index.js +301 -1
  387. package/dist/product/module.d.ts +1727 -0
  388. package/dist/product/module.js +67 -6
  389. package/dist/product/pricelist.d.ts +575 -0
  390. package/dist/product/pricelist.js +257 -0
  391. package/dist/product/variants.d.ts +908 -0
  392. package/dist/product/variants.js +251 -0
  393. package/dist/production/.kosh/bindings.d.ts +22 -0
  394. package/dist/production/.kosh/bindings.js +15 -0
  395. package/dist/production/.kosh/schema.d.ts +2345 -0
  396. package/dist/{mrp → production}/demo.d.ts +1 -1
  397. package/dist/{mrp → production}/demo.js +5 -5
  398. package/dist/production/depth.d.ts +790 -0
  399. package/dist/production/depth.js +262 -0
  400. package/dist/production/i18n/bn.d.ts +2 -0
  401. package/dist/production/i18n/bn.js +350 -0
  402. package/dist/production/index.d.ts +6 -0
  403. package/dist/production/index.js +1256 -0
  404. package/dist/production/module.d.ts +17327 -0
  405. package/dist/production/module.js +1333 -0
  406. package/dist/production/plan.d.ts +921 -0
  407. package/dist/production/plan.js +511 -0
  408. package/dist/production/schedule.d.ts +656 -0
  409. package/dist/production/schedule.js +309 -0
  410. package/dist/production_account/.kosh/bindings.d.ts +22 -0
  411. package/dist/production_account/.kosh/bindings.js +15 -0
  412. package/dist/production_account/.kosh/schema.d.ts +3496 -0
  413. package/dist/production_account/i18n/bn.d.ts +2 -0
  414. package/dist/production_account/i18n/bn.js +93 -0
  415. package/dist/production_account/index.d.ts +4 -0
  416. package/dist/production_account/index.js +246 -0
  417. package/dist/production_account/module.d.ts +1192 -0
  418. package/dist/{mrp_account → production_account}/module.js +72 -18
  419. package/dist/production_account/overhead.d.ts +1195 -0
  420. package/dist/production_account/overhead.js +554 -0
  421. package/dist/project/.kosh/bindings.js +1 -1
  422. package/dist/project/.kosh/schema.d.ts +735 -1
  423. package/dist/project/i18n/bn.d.ts +2 -0
  424. package/dist/project/i18n/bn.js +383 -0
  425. package/dist/project/index.d.ts +3 -1
  426. package/dist/project/index.js +1024 -14
  427. package/dist/project/module.d.ts +9912 -390
  428. package/dist/project/module.js +1590 -14
  429. package/dist/project/routes.d.ts +44 -0
  430. package/dist/project/routes.js +314 -0
  431. package/dist/project/schedule.d.ts +72 -0
  432. package/dist/project/schedule.js +192 -0
  433. package/dist/project/web/Refresh.d.ts +8 -0
  434. package/dist/project/web/Refresh.js +29 -0
  435. package/dist/project/web/Schedule.d.ts +9 -0
  436. package/dist/project/web/Schedule.js +93 -0
  437. package/dist/project/web/Structure.d.ts +8 -0
  438. package/dist/project/web/Structure.js +86 -0
  439. package/dist/project/web/Workload.d.ts +8 -0
  440. package/dist/project/web/Workload.js +43 -0
  441. package/dist/project/web/index.d.ts +14 -0
  442. package/dist/project/web/index.js +25 -0
  443. package/dist/project/web/messages.d.ts +2 -0
  444. package/dist/project/web/messages.js +85 -0
  445. package/dist/project_account/.kosh/bindings.d.ts +22 -0
  446. package/dist/project_account/.kosh/bindings.js +15 -0
  447. package/dist/project_account/.kosh/schema.d.ts +2763 -0
  448. package/dist/project_account/i18n/bn.d.ts +2 -0
  449. package/dist/project_account/i18n/bn.js +6 -0
  450. package/dist/project_account/index.d.ts +3 -0
  451. package/dist/project_account/index.js +29 -0
  452. package/dist/project_account/module.d.ts +15013 -0
  453. package/dist/project_account/module.js +76 -0
  454. package/dist/project_portal/.kosh/bindings.js +1 -1
  455. package/dist/project_portal/.kosh/schema.d.ts +735 -1
  456. package/dist/project_portal/i18n/bn.d.ts +2 -0
  457. package/dist/project_portal/i18n/bn.js +6 -0
  458. package/dist/project_portal/index.js +2 -0
  459. package/dist/project_portal/module.d.ts +4796 -87
  460. package/dist/project_purchase/.kosh/bindings.d.ts +22 -0
  461. package/dist/project_purchase/.kosh/bindings.js +15 -0
  462. package/dist/project_purchase/.kosh/schema.d.ts +3393 -0
  463. package/dist/project_purchase/i18n/bn.d.ts +2 -0
  464. package/dist/project_purchase/i18n/bn.js +4 -0
  465. package/dist/project_purchase/index.d.ts +9 -0
  466. package/dist/project_purchase/index.js +24 -0
  467. package/dist/project_purchase/module.d.ts +38613 -0
  468. package/dist/project_purchase/module.js +56 -0
  469. package/dist/purchase/.kosh/bindings.js +1 -1
  470. package/dist/purchase/.kosh/schema.d.ts +908 -5
  471. package/dist/purchase/comparison.d.ts +993 -0
  472. package/dist/purchase/comparison.js +415 -0
  473. package/dist/purchase/extras.d.ts +1509 -0
  474. package/dist/purchase/extras.js +445 -0
  475. package/dist/purchase/i18n/bn.d.ts +2 -0
  476. package/dist/purchase/i18n/bn.js +413 -0
  477. package/dist/purchase/index.d.ts +5 -0
  478. package/dist/purchase/index.js +1280 -4
  479. package/dist/purchase/module.d.ts +7147 -395
  480. package/dist/purchase/module.js +303 -10
  481. package/dist/purchase/request.d.ts +696 -0
  482. package/dist/purchase/request.js +446 -0
  483. package/dist/purchase/tender.d.ts +1208 -0
  484. package/dist/purchase/tender.js +507 -0
  485. package/dist/purchase/vendorprice.d.ts +340 -0
  486. package/dist/purchase/vendorprice.js +153 -0
  487. package/dist/purchase_account/.kosh/bindings.js +1 -1
  488. package/dist/purchase_account/.kosh/schema.d.ts +1209 -16
  489. package/dist/purchase_account/i18n/bn.d.ts +2 -0
  490. package/dist/purchase_account/i18n/bn.js +22 -0
  491. package/dist/purchase_account/index.js +20 -0
  492. package/dist/purchase_account/module.d.ts +12232 -2028
  493. package/dist/purchase_account/module.js +252 -9
  494. package/dist/purchase_portal/.kosh/bindings.js +1 -1
  495. package/dist/purchase_portal/.kosh/schema.d.ts +908 -5
  496. package/dist/purchase_portal/i18n/bn.d.ts +2 -0
  497. package/dist/purchase_portal/i18n/bn.js +5 -0
  498. package/dist/purchase_portal/index.js +2 -0
  499. package/dist/purchase_portal/module.d.ts +6853 -352
  500. package/dist/purchase_stock/.kosh/bindings.js +1 -1
  501. package/dist/purchase_stock/.kosh/schema.d.ts +1096 -21
  502. package/dist/purchase_stock/i18n/bn.d.ts +2 -0
  503. package/dist/purchase_stock/i18n/bn.js +19 -0
  504. package/dist/purchase_stock/index.d.ts +2 -2
  505. package/dist/purchase_stock/index.js +38 -2
  506. package/dist/purchase_stock/module.d.ts +12930 -1612
  507. package/dist/purchase_stock/module.js +317 -9
  508. package/dist/purchase_stock/scorecard.d.ts +22 -0
  509. package/dist/purchase_stock/scorecard.js +77 -0
  510. package/dist/purchase_stock/web/Scorecard.d.ts +7 -0
  511. package/dist/purchase_stock/web/Scorecard.js +22 -0
  512. package/dist/purchase_stock/web/index.d.ts +11 -0
  513. package/dist/purchase_stock/web/index.js +16 -0
  514. package/dist/purchase_stock/web/messages.d.ts +2 -0
  515. package/dist/purchase_stock/web/messages.js +27 -0
  516. package/dist/purchase_stock_account/.kosh/bindings.js +1 -1
  517. package/dist/purchase_stock_account/.kosh/schema.d.ts +1444 -20
  518. package/dist/purchase_stock_account/i18n/bn.d.ts +2 -0
  519. package/dist/purchase_stock_account/i18n/bn.js +8 -0
  520. package/dist/purchase_stock_account/index.js +18 -0
  521. package/dist/purchase_stock_account/module.d.ts +7 -35346
  522. package/dist/purchase_stock_account/module.js +35 -8
  523. package/dist/recruitment/.kosh/bindings.js +1 -1
  524. package/dist/recruitment/.kosh/schema.d.ts +60 -1
  525. package/dist/recruitment/i18n/bn.d.ts +2 -0
  526. package/dist/recruitment/i18n/bn.js +93 -0
  527. package/dist/recruitment/index.js +64 -0
  528. package/dist/recruitment/module.d.ts +460 -8
  529. package/dist/recruitment/module.js +13 -4
  530. package/dist/reporting/documents.d.ts +5 -0
  531. package/dist/reporting/documents.js +11 -1
  532. package/dist/reporting/index.d.ts +1 -1
  533. package/dist/reporting/index.js +1 -1
  534. package/dist/reporting/web/CalendarView.d.ts +18 -5
  535. package/dist/reporting/web/CalendarView.js +163 -29
  536. package/dist/reporting/web/messages.js +18 -0
  537. package/dist/sale_account/.kosh/bindings.js +1 -1
  538. package/dist/sale_account/.kosh/schema.d.ts +763 -18
  539. package/dist/sale_account/i18n/bn.d.ts +2 -0
  540. package/dist/sale_account/i18n/bn.js +48 -0
  541. package/dist/sale_account/index.d.ts +1 -1
  542. package/dist/sale_account/index.js +102 -4
  543. package/dist/sale_account/module.d.ts +8241 -2052
  544. package/dist/sale_account/module.js +535 -46
  545. package/dist/sale_crm/.kosh/bindings.d.ts +22 -0
  546. package/dist/sale_crm/.kosh/bindings.js +15 -0
  547. package/dist/{mrp → sale_crm}/.kosh/schema.d.ts +391 -494
  548. package/dist/sale_crm/i18n/bn.d.ts +2 -0
  549. package/dist/sale_crm/i18n/bn.js +9 -0
  550. package/dist/sale_crm/index.d.ts +7 -0
  551. package/dist/sale_crm/index.js +104 -0
  552. package/dist/sale_crm/module.d.ts +5609 -0
  553. package/dist/sale_crm/module.js +73 -0
  554. package/dist/sale_portal/.kosh/bindings.js +1 -1
  555. package/dist/sale_portal/.kosh/schema.d.ts +292 -4
  556. package/dist/sale_portal/i18n/bn.d.ts +2 -0
  557. package/dist/sale_portal/i18n/bn.js +7 -0
  558. package/dist/sale_portal/index.js +10 -0
  559. package/dist/sale_portal/module.d.ts +2563 -292
  560. package/dist/sale_project/.kosh/bindings.js +1 -1
  561. package/dist/sale_project/.kosh/schema.d.ts +1025 -4
  562. package/dist/sale_project/i18n/bn.d.ts +2 -0
  563. package/dist/sale_project/i18n/bn.js +12 -0
  564. package/dist/sale_project/index.js +2 -0
  565. package/dist/sale_project/module.d.ts +9280 -762
  566. package/dist/sale_project/module.js +17 -1
  567. package/dist/sale_stock/.kosh/bindings.js +1 -1
  568. package/dist/sale_stock/.kosh/schema.d.ts +463 -6
  569. package/dist/sale_stock/i18n/bn.d.ts +2 -0
  570. package/dist/sale_stock/i18n/bn.js +15 -0
  571. package/dist/sale_stock/index.js +2 -0
  572. package/dist/sale_stock/module.d.ts +8355 -1334
  573. package/dist/sale_stock/module.js +20 -3
  574. package/dist/sales/.kosh/bindings.js +1 -1
  575. package/dist/sales/.kosh/schema.d.ts +292 -4
  576. package/dist/sales/i18n/bn.d.ts +2 -0
  577. package/dist/sales/i18n/bn.js +128 -0
  578. package/dist/sales/index.js +124 -5
  579. package/dist/sales/module.d.ts +3568 -633
  580. package/dist/sales/module.js +306 -11
  581. package/dist/server/api/duplicate.d.ts +14 -0
  582. package/dist/server/api/duplicate.js +75 -0
  583. package/dist/server/api/explain.d.ts +70 -0
  584. package/dist/server/api/explain.js +111 -0
  585. package/dist/server/api/metadata.d.ts +2 -0
  586. package/dist/server/api/metadata.js +9 -0
  587. package/dist/server/api/openapi.js +15 -0
  588. package/dist/server/api/rest.d.ts +1 -0
  589. package/dist/server/api/rest.js +76 -12
  590. package/dist/server/api/views.js +1 -1
  591. package/dist/server/apps.d.ts +16 -1
  592. package/dist/server/apps.js +164 -2
  593. package/dist/server/auth/base.js +2 -0
  594. package/dist/server/auth/service.d.ts +8 -0
  595. package/dist/server/auth/service.js +19 -0
  596. package/dist/server/events.d.ts +13 -0
  597. package/dist/server/events.js +22 -0
  598. package/dist/server/i18n.d.ts +27 -0
  599. package/dist/server/i18n.js +143 -0
  600. package/dist/server/index.d.ts +2 -0
  601. package/dist/server/index.js +2 -0
  602. package/dist/server/server.js +6 -0
  603. package/dist/settings/company.d.ts +3 -1
  604. package/dist/settings/company.js +26 -5
  605. package/dist/settings/routes.d.ts +10 -0
  606. package/dist/settings/routes.js +19 -3
  607. package/dist/settings/web/AppsPage.d.ts +3 -2
  608. package/dist/settings/web/AppsPage.js +26 -8
  609. package/dist/settings/web/CompaniesPage.js +91 -6
  610. package/dist/settings/web/messages.js +64 -0
  611. package/dist/sign/.kosh/bindings.d.ts +22 -0
  612. package/dist/{mrp → sign}/.kosh/bindings.js +2 -2
  613. package/dist/sign/.kosh/schema.d.ts +991 -0
  614. package/dist/sign/i18n/bn.d.ts +2 -0
  615. package/dist/sign/i18n/bn.js +97 -0
  616. package/dist/sign/index.d.ts +29 -0
  617. package/dist/sign/index.js +478 -0
  618. package/dist/sign/module.d.ts +4518 -0
  619. package/dist/sign/module.js +167 -0
  620. package/dist/sign/sign.d.ts +82 -0
  621. package/dist/sign/sign.js +474 -0
  622. package/dist/stock/.kosh/bindings.js +1 -1
  623. package/dist/stock/.kosh/schema.d.ts +374 -3
  624. package/dist/stock/demo.d.ts +2 -1
  625. package/dist/stock/demo.js +28 -1
  626. package/dist/stock/i18n/bn.d.ts +2 -0
  627. package/dist/stock/i18n/bn.js +311 -0
  628. package/dist/stock/index.d.ts +4 -1
  629. package/dist/stock/index.js +674 -6
  630. package/dist/stock/ledger.d.ts +78 -0
  631. package/dist/stock/ledger.js +582 -0
  632. package/dist/stock/module.d.ts +6142 -1380
  633. package/dist/stock/module.js +780 -26
  634. package/dist/stock/replenish.d.ts +38 -0
  635. package/dist/stock/replenish.js +191 -0
  636. package/dist/stock/returns.d.ts +157 -0
  637. package/dist/stock/returns.js +163 -0
  638. package/dist/stock/web/Ledger.d.ts +9 -0
  639. package/dist/stock/web/Ledger.js +108 -0
  640. package/dist/stock/web/Operations.d.ts +8 -0
  641. package/dist/stock/web/Operations.js +33 -0
  642. package/dist/stock/web/Replenishment.d.ts +8 -0
  643. package/dist/stock/web/Replenishment.js +84 -0
  644. package/dist/stock/web/ReturnButton.d.ts +7 -0
  645. package/dist/stock/web/ReturnButton.js +62 -0
  646. package/dist/stock/web/index.d.ts +7 -2
  647. package/dist/stock/web/index.js +15 -2
  648. package/dist/stock/web/messages.js +206 -0
  649. package/dist/stock_account/.kosh/bindings.js +1 -1
  650. package/dist/stock_account/.kosh/schema.d.ts +878 -12
  651. package/dist/stock_account/i18n/bn.d.ts +2 -0
  652. package/dist/stock_account/i18n/bn.js +73 -0
  653. package/dist/stock_account/index.d.ts +1 -0
  654. package/dist/stock_account/index.js +141 -3
  655. package/dist/stock_account/landed.d.ts +429 -0
  656. package/dist/stock_account/landed.js +335 -0
  657. package/dist/stock_account/module.d.ts +12143 -3391
  658. package/dist/stock_account/module.js +135 -6
  659. package/dist/stock_account/web/LandedPreview.d.ts +7 -0
  660. package/dist/stock_account/web/LandedPreview.js +23 -0
  661. package/dist/stock_account/web/index.d.ts +11 -0
  662. package/dist/stock_account/web/index.js +16 -0
  663. package/dist/stock_account/web/messages.d.ts +2 -0
  664. package/dist/stock_account/web/messages.js +27 -0
  665. package/dist/todo/i18n/bn.d.ts +2 -0
  666. package/dist/todo/i18n/bn.js +66 -0
  667. package/dist/todo/index.js +59 -0
  668. package/dist/todo/module.d.ts +5 -0
  669. package/dist/todo/module.js +5 -3
  670. package/dist/trade_finance/.kosh/bindings.js +1 -1
  671. package/dist/trade_finance/.kosh/schema.d.ts +2 -1
  672. package/dist/trade_finance/i18n/bn.d.ts +2 -0
  673. package/dist/trade_finance/i18n/bn.js +162 -0
  674. package/dist/trade_finance/index.js +95 -0
  675. package/dist/trade_finance/module.d.ts +26 -0
  676. package/dist/trade_finance/module.js +29 -8
  677. package/dist/trade_finance_account/.kosh/bindings.js +1 -1
  678. package/dist/trade_finance_account/.kosh/schema.d.ts +651 -10
  679. package/dist/trade_finance_account/i18n/bn.d.ts +2 -0
  680. package/dist/trade_finance_account/i18n/bn.js +27 -0
  681. package/dist/trade_finance_account/index.js +3 -0
  682. package/dist/trade_finance_account/module.d.ts +5129 -1509
  683. package/dist/trade_finance_account/module.js +2 -0
  684. package/dist/trade_finance_purchase/.kosh/bindings.js +1 -1
  685. package/dist/trade_finance_purchase/.kosh/schema.d.ts +908 -5
  686. package/dist/trade_finance_purchase/i18n/bn.d.ts +2 -0
  687. package/dist/trade_finance_purchase/i18n/bn.js +6 -0
  688. package/dist/trade_finance_purchase/index.js +2 -0
  689. package/dist/trade_finance_purchase/module.d.ts +6909 -408
  690. package/dist/trade_finance_sale/.kosh/bindings.js +1 -1
  691. package/dist/trade_finance_sale/.kosh/schema.d.ts +292 -4
  692. package/dist/trade_finance_sale/i18n/bn.d.ts +2 -0
  693. package/dist/trade_finance_sale/i18n/bn.js +6 -0
  694. package/dist/trade_finance_sale/index.js +2 -0
  695. package/dist/trade_finance_sale/module.d.ts +2602 -331
  696. package/dist/ui/api.d.ts +2 -0
  697. package/dist/ui/app.d.ts +9 -0
  698. package/dist/ui/app.js +47 -15
  699. package/dist/ui/components/AppIcon.js +9 -2
  700. package/dist/ui/components/Explain.d.ts +69 -0
  701. package/dist/ui/components/Explain.js +62 -0
  702. package/dist/ui/context.d.ts +8 -1
  703. package/dist/ui/context.js +34 -1
  704. package/dist/ui/i18n/messages.d.ts +40 -0
  705. package/dist/ui/i18n/messages.js +80 -0
  706. package/dist/ui/index.d.ts +2 -1
  707. package/dist/ui/index.js +1 -0
  708. package/dist/ui/registry.d.ts +14 -0
  709. package/dist/ui/registry.js +10 -0
  710. package/dist/ui/views/FormView.d.ts +6 -0
  711. package/dist/ui/views/FormView.js +51 -12
  712. package/dist/ui/views/KanbanView.js +9 -1
  713. package/dist/ui/views/ListView.d.ts +8 -0
  714. package/dist/ui/views/ListView.js +14 -5
  715. package/dist/ui/views/StatsRow.js +2 -1
  716. package/dist/ui/views/widgets.js +7 -1
  717. package/dist/views/extend.js +12 -0
  718. package/dist/views/types.d.ts +13 -2
  719. package/dist/views/validate.js +8 -1
  720. package/dist/website/.kosh/bindings.js +1 -1
  721. package/dist/website/.kosh/schema.d.ts +2 -1
  722. package/dist/website/i18n/bn.d.ts +2 -0
  723. package/dist/website/i18n/bn.js +113 -0
  724. package/dist/website/index.js +37 -0
  725. package/dist/website/module.d.ts +20 -0
  726. package/dist/website/module.js +30 -5
  727. package/dist/website_crm/.kosh/bindings.js +1 -1
  728. package/dist/website_crm/.kosh/schema.d.ts +3 -1
  729. package/dist/website_crm/i18n/bn.d.ts +2 -0
  730. package/dist/website_crm/i18n/bn.js +5 -0
  731. package/dist/website_crm/index.js +2 -0
  732. package/dist/website_crm/module.d.ts +41 -0
  733. package/dist/website_sale/.kosh/bindings.d.ts +22 -0
  734. package/dist/website_sale/.kosh/bindings.js +15 -0
  735. package/dist/website_sale/.kosh/schema.d.ts +2909 -0
  736. package/dist/website_sale/couriers.d.ts +50 -0
  737. package/dist/website_sale/couriers.js +59 -0
  738. package/dist/website_sale/demo.d.ts +7 -0
  739. package/dist/website_sale/demo.js +90 -0
  740. package/dist/website_sale/growth.d.ts +31 -0
  741. package/dist/website_sale/growth.js +163 -0
  742. package/dist/website_sale/i18n/bn.d.ts +2 -0
  743. package/dist/website_sale/i18n/bn.js +132 -0
  744. package/dist/website_sale/index.d.ts +49 -0
  745. package/dist/website_sale/index.js +620 -0
  746. package/dist/website_sale/module.d.ts +35182 -0
  747. package/dist/website_sale/module.js +419 -0
  748. package/dist/website_sale/shipments.d.ts +16 -0
  749. package/dist/website_sale/shipments.js +113 -0
  750. package/dist/website_sale/shop.d.ts +81 -0
  751. package/dist/website_sale/shop.js +662 -0
  752. package/dist/website_sale_stock/.kosh/bindings.d.ts +22 -0
  753. package/dist/website_sale_stock/.kosh/bindings.js +15 -0
  754. package/dist/website_sale_stock/.kosh/schema.d.ts +3400 -0
  755. package/dist/website_sale_stock/i18n/bn.d.ts +2 -0
  756. package/dist/website_sale_stock/i18n/bn.js +4 -0
  757. package/dist/website_sale_stock/index.d.ts +9 -0
  758. package/dist/website_sale_stock/index.js +22 -0
  759. package/dist/website_sale_stock/module.d.ts +11 -0
  760. package/dist/website_sale_stock/module.js +32 -0
  761. package/package.json +117 -8
  762. package/dist/mrp/index.d.ts +0 -3
  763. package/dist/mrp/index.js +0 -392
  764. package/dist/mrp/module.js +0 -695
  765. package/dist/mrp_account/index.d.ts +0 -3
  766. package/dist/mrp_account/index.js +0 -22
  767. /package/dist/{mrp → account_asset}/.kosh/bindings.d.ts +0 -0
  768. /package/dist/{mrp_account → account_budget}/.kosh/bindings.d.ts +0 -0
@@ -0,0 +1,256 @@
1
+ /**
2
+ * Payroll in the books (RFC 0024 §2.3, `payroll_account`): each rule may name its account; an approved run is
3
+ * **booked** as one posted entry in the Payroll journal (`PAY`) — basic, allowances and company contributions to
4
+ * their expense accounts (Salaries, 6000, by default), deductions to their payables (Payroll deductions payable,
5
+ * 2191), contributions against Payroll contributions payable (2192), the net to Salaries payable (2190) — and its
6
+ * **payment** clears Salaries payable against the bank or cash journal chosen on the run. A correction books only
7
+ * its differences, line by line, against the payslips it corrects. Accounts and the journal are made when missing.
8
+ */
9
+ import { accountingShutro } from '../accounting/index.js';
10
+ import { payrollShutro } from '../payroll/index.js';
11
+ import { orm } from '../server/orm.js';
12
+ import { defineModule, extendModel, f } from './.kosh/bindings.js';
13
+ const ZERO = orm.toDecimal(0);
14
+ export const PAYROLL_ACCOUNTS = {
15
+ salaries: { code: '6000', name: 'Salaries', type: 'expense', reconcile: false },
16
+ payable: { code: '2190', name: 'Salaries payable', type: 'liability_current', reconcile: true },
17
+ deductions: {
18
+ code: '2191',
19
+ name: 'Payroll deductions payable',
20
+ type: 'liability_current',
21
+ reconcile: true,
22
+ },
23
+ contributions: {
24
+ code: '2192',
25
+ name: 'Payroll contributions payable',
26
+ type: 'liability_current',
27
+ reconcile: true,
28
+ },
29
+ };
30
+ /** The company's payroll accounts and the Payroll journal (`PAY`); `null` without a chart. */
31
+ export async function payrollAccountsOf(env, company) {
32
+ const chart = await env.model('account.account').search({ where: { company }, limit: 1 });
33
+ if (chart.length === 0)
34
+ return null;
35
+ const out = {};
36
+ for (const [key, spec] of Object.entries(PAYROLL_ACCOUNTS))
37
+ out[key] =
38
+ (await env.model('account.account').search({ where: { company, code: spec.code }, limit: 1 }))
39
+ .ids[0] ??
40
+ (await env.model('account.account').create([{ ...spec, company }]))
41
+ .ids[0];
42
+ out.journal = ((await env.model('account.journal').search({ where: { company, code: 'PAY' }, limit: 1 })).ids[0] ??
43
+ (await env
44
+ .model('account.journal')
45
+ .create([{ company, code: 'PAY', name: 'Payroll', type: 'general' }])).ids[0]);
46
+ return out;
47
+ }
48
+ async function post(env, company, journal, ref, lines) {
49
+ const kept = lines
50
+ .map((l) => {
51
+ // A negative amount on one side is a positive one on the other.
52
+ const net = l.debit.minus(l.credit);
53
+ return { ...l, debit: net.gt(0) ? net : ZERO, credit: net.lt(0) ? net.neg() : ZERO };
54
+ })
55
+ .filter((l) => !l.debit.isZero() || !l.credit.isZero());
56
+ if (kept.length === 0)
57
+ return null;
58
+ const [c] = await env.model('res.company').browse([company]).load({});
59
+ const made = await env.model('account.move').create([
60
+ {
61
+ kind: 'entry',
62
+ journal,
63
+ company,
64
+ currency: c?.currency.id,
65
+ date: env.today(),
66
+ ref,
67
+ lines: {
68
+ create: kept.map((l) => ({
69
+ account: l.account,
70
+ name: l.name,
71
+ debit: l.debit.toDecimalPlaces(2).toString(),
72
+ credit: l.credit.toDecimalPlaces(2).toString(),
73
+ })),
74
+ },
75
+ },
76
+ ]);
77
+ await env.withGrants({ grants: ['account.post'], reason: `payroll ${ref}` }, (e) => e.model('account.move').browse(made.ids).post());
78
+ return made.ids[0];
79
+ }
80
+ const noChart = () => new orm.ValidationError('payroll.run', ['state'], 'The company has no chart of accounts yet.', 'Install a chart in Accounting first.');
81
+ /** Each payslip's line amounts by rule (a correction: less the corrected payslip's), with the rule's account. */
82
+ async function amountsOf(env, runId) {
83
+ const [run] = await env
84
+ .model('payroll.run')
85
+ .browse([runId])
86
+ .load({ company: true, correctionOf: true });
87
+ if (run === undefined)
88
+ return null;
89
+ const linesOf = async (where) => [
90
+ ...(await (await env.model('payroll.slip.line').search({ where: where })).load({ rule: true, slip: true })),
91
+ ];
92
+ const current = await linesOf({ 'slip.run': run.id });
93
+ const before = run.correctionOf === null ? [] : await linesOf({ 'slip.run': run.correctionOf.id });
94
+ const key = (l) => `${l.slip.employee.id}:${l.code}`;
95
+ const out = new Map();
96
+ for (const l of current)
97
+ out.set(key(l), {
98
+ category: l.category,
99
+ name: l.name,
100
+ account: l.rule?.account?.id ?? null,
101
+ amount: (out.get(key(l))?.amount ?? ZERO).plus(l.amount),
102
+ });
103
+ for (const l of before) {
104
+ const slot = out.get(key(l)) ?? {
105
+ category: l.category,
106
+ name: l.name,
107
+ account: l.rule?.account?.id ?? null,
108
+ amount: ZERO,
109
+ };
110
+ slot.amount = slot.amount.minus(l.amount);
111
+ out.set(key(l), slot);
112
+ }
113
+ return { run, amounts: [...out.values()] };
114
+ }
115
+ export const RuleAccount = extendModel('payroll.rule', {
116
+ fields: {
117
+ account: f.many2one('account.account', {
118
+ ondelete: 'restrict',
119
+ label: 'Account',
120
+ help: 'Basic, allowances and contributions: the expense; deductions: the payable. Empty: Salaries (6000) or Payroll deductions payable (2191).',
121
+ }),
122
+ },
123
+ });
124
+ export const RunBooks = extendModel('payroll.run', {
125
+ fields: {
126
+ entry: f.many2one('account.move', { ondelete: 'restrict', label: 'Journal entry' }),
127
+ paymentJournal: f.many2one('account.journal', {
128
+ ondelete: 'restrict',
129
+ label: 'Paid from',
130
+ help: 'The bank or cash journal the net pay leaves from.',
131
+ }),
132
+ paymentEntry: f.many2one('account.move', { ondelete: 'restrict', label: 'Payment entry' }),
133
+ },
134
+ overrides: {
135
+ approvedOut: async function (next) {
136
+ await next();
137
+ const runs = this;
138
+ const env = runs.env;
139
+ await env.asSuperuser({ reason: 'book payroll' }, async (su) => {
140
+ for (const id of runs.ids) {
141
+ const found = await amountsOf(su, id);
142
+ if (found === null)
143
+ continue;
144
+ const accounts = await payrollAccountsOf(su, found.run.company.id);
145
+ if (accounts === null)
146
+ throw noChart();
147
+ const lines = [];
148
+ let net = ZERO;
149
+ let contributions = ZERO;
150
+ for (const a of found.amounts) {
151
+ if (a.category === 'info' || a.amount.isZero())
152
+ continue;
153
+ if (a.category === 'deduction') {
154
+ lines.push({
155
+ account: a.account ?? accounts.deductions,
156
+ debit: ZERO,
157
+ credit: a.amount,
158
+ name: a.name,
159
+ });
160
+ net = net.minus(a.amount);
161
+ }
162
+ else {
163
+ lines.push({
164
+ account: a.account ?? accounts.salaries,
165
+ debit: a.amount,
166
+ credit: ZERO,
167
+ name: a.name,
168
+ });
169
+ if (a.category === 'contribution')
170
+ contributions = contributions.plus(a.amount);
171
+ else
172
+ net = net.plus(a.amount);
173
+ }
174
+ }
175
+ lines.push({
176
+ account: accounts.contributions,
177
+ debit: ZERO,
178
+ credit: contributions,
179
+ name: `${found.run.name} contributions`,
180
+ });
181
+ lines.push({
182
+ account: accounts.payable,
183
+ debit: ZERO,
184
+ credit: net,
185
+ name: `${found.run.name} net pay`,
186
+ });
187
+ // Same accounts and names summed: one line each.
188
+ const merged = new Map();
189
+ for (const l of lines) {
190
+ const k = `${l.account}:${l.name}`;
191
+ const m = merged.get(k);
192
+ if (m === undefined)
193
+ merged.set(k, { ...l });
194
+ else {
195
+ m.debit = m.debit.plus(l.debit);
196
+ m.credit = m.credit.plus(l.credit);
197
+ }
198
+ }
199
+ const entry = await post(su, found.run.company.id, accounts.journal, found.run.name, [
200
+ ...merged.values(),
201
+ ]);
202
+ if (entry !== null)
203
+ await su
204
+ .model('payroll.run')
205
+ .browse([found.run.id])
206
+ .write({ entry });
207
+ }
208
+ });
209
+ },
210
+ paidOut: async function (next) {
211
+ await next();
212
+ const runs = this;
213
+ const env = runs.env;
214
+ await env.asSuperuser({ reason: 'pay payroll' }, async (su) => {
215
+ for (const run of await su
216
+ .model('payroll.run')
217
+ .browse(runs.ids)
218
+ .load({ company: true, slips: true })) {
219
+ const accounts = await payrollAccountsOf(su, run.company.id);
220
+ if (accounts === null)
221
+ throw noChart();
222
+ if (run.paymentJournal === null)
223
+ throw new orm.ValidationError('payroll.run', ['paymentJournal'], 'Choose the bank or cash journal the pay leaves from.', 'Set “Paid from” on the run, then mark it as paid.');
224
+ const [j] = await su.model('account.journal').browse([run.paymentJournal.id]).load({});
225
+ const money = j?.defaultAccount?.id;
226
+ if (j === undefined || money === undefined || (j.type !== 'bank' && j.type !== 'cash'))
227
+ throw new orm.ValidationError('payroll.run', ['paymentJournal'], 'Pay from a bank or cash journal with its account.', 'Choose a bank or cash journal.');
228
+ const total = [...run.slips].reduce((s, x) => s.plus(run.kind === 'correction' ? (x.difference ?? ZERO) : x.net), ZERO);
229
+ const entry = await post(su, run.company.id, run.paymentJournal.id, `${run.name} paid`, [
230
+ { account: accounts.payable, debit: total, credit: ZERO, name: `${run.name} net pay` },
231
+ { account: money, debit: ZERO, credit: total, name: `${run.name} net pay` },
232
+ ]);
233
+ if (entry !== null)
234
+ await su
235
+ .model('payroll.run')
236
+ .browse([run.id])
237
+ .write({ paymentEntry: entry });
238
+ }
239
+ });
240
+ },
241
+ },
242
+ });
243
+ export const payrollAccountShutro = defineModule({
244
+ name: 'payroll_account',
245
+ version: '0.1.0',
246
+ depends: [payrollShutro, accountingShutro],
247
+ groups: [
248
+ orm.defineGroup({
249
+ code: 'payroll_account.user',
250
+ label: 'Payroll in the books',
251
+ implies: ['payroll.user'],
252
+ }),
253
+ ],
254
+ models: [],
255
+ extensions: [RuleAccount, RunBooks],
256
+ });
@@ -10,10 +10,14 @@
10
10
  * ```
11
11
  *
12
12
  * `requestApprovals` creates one request per policy level whose condition (a Shutro domain) matches the record.
13
- * Levels are decided in order (a level waits for the lower ones), by holders of the level's role in the record's
14
- * company; the requester never approves their own record (separation of duties, administrators included). The
15
- * last approval runs the policy's `onApproved` transition, a rejection its `onRejected` one, as the system
16
- * (attributed to the approver in the audit log). Every step is audited and emitted as an event for notifications.
13
+ * Levels are decided in order (a level waits for the lower ones; levels with the same sequence side by side), by
14
+ * the level's approvers in the record's company — a role's holders, named people, the requester's manager
15
+ * (Workforce; the level's role when there is none) or the person in a field of the record —, by any one of them,
16
+ * all of them or a number (RFC 0025): each decision is a vote. The requester never approves their own record
17
+ * (separation of duties, administrators included). The last approval runs the policy's `onApproved` transition, a
18
+ * rejection its `onRejected` one, sending back for changes its `onSentBack` one (a reason required unless the policy
19
+ * says otherwise), a withdrawal by the requester its `onWithdrawn` one — as the system, attributed in the audit log.
20
+ * A resubmission is the next round; earlier rounds stay as history. Every step is audited and emitted as an event.
17
21
  */
18
22
  import type { KoshModule } from '../modules-sdk/index.js';
19
23
  import type { Env } from '../server/orm.js';
@@ -27,30 +31,241 @@ export interface ApprovalRequestInfo {
27
31
  readonly targetId: number;
28
32
  readonly company: number | null;
29
33
  readonly approverRole: string;
30
- readonly state: 'pending' | 'approved' | 'rejected' | 'cancelled';
34
+ /** The people who decide (empty: the role's holders). */
35
+ readonly approvers: readonly number[];
36
+ /** Backups who may decide it too. */
37
+ readonly backups: readonly number[];
38
+ /** How many approvals it needs, and how many it has. */
39
+ readonly required: number;
40
+ readonly approvals: number;
41
+ readonly round: number;
42
+ /** When it should be decided by, and the role it was escalated to once late. */
43
+ readonly dueAt: string | null;
44
+ readonly escalatedTo: string | null;
45
+ /** When its turn came (null: earlier levels still decide), and how its approvers were found. */
46
+ readonly startedAt: string | null;
47
+ readonly explanation: string | null;
48
+ readonly state: 'pending' | 'approved' | 'rejected' | 'sent_back' | 'cancelled';
31
49
  readonly requestedBy: number | null;
32
50
  readonly decidedBy: number | null;
33
51
  readonly decidedAt: string | null;
34
52
  readonly comment: string | null;
35
53
  }
36
54
  /**
37
- * Creates the approval requests of `records` (a recordset: `env`, `modelName`, `ids`) from the matching policies
38
- * and levels; earlier pending requests of the records are cancelled (a resubmission starts a new round). Returns
39
- * the number of requests created.
55
+ * Which of the last `limit` records of the policy's model each of its levels would have asked about (RFC 0025 step
56
+ * 4: the editor's preview), as the system; the policy's own condition first.
40
57
  */
58
+ export declare function previewPolicy(su: Env, policyId: number, limit?: number): Promise<{
59
+ records: number;
60
+ levels: {
61
+ id: number;
62
+ name: string;
63
+ matched: number[];
64
+ }[];
65
+ covers: {
66
+ all: boolean;
67
+ companies: string[];
68
+ };
69
+ }>;
70
+ /** The matrix log of a record's requests, when `env` may read the record. */
71
+ export declare function eventsOf(env: Env, model: string, id: number): Promise<{
72
+ id: number;
73
+ request: number;
74
+ at: string;
75
+ user: number | null;
76
+ kind: string;
77
+ note: string | null;
78
+ }[]>;
41
79
  export declare function requestApprovals(records: unknown): Promise<number>;
42
80
  /** `none` (no level applied), `pending`, `approved` or `rejected`, for the record's current round. */
43
- export declare function approvalState(env: Env, model: string, id: number): Promise<'none' | 'pending' | 'approved' | 'rejected'>;
81
+ export declare function approvalState(env: Env, model: string, id: number): Promise<'none' | 'pending' | 'approved' | 'rejected' | 'sent_back'>;
44
82
  /** Transition guard: the records whose approvals are pending or rejected (records no level applied to may go). */
45
83
  export declare function approvalGuard(records: unknown): Promise<number[]>;
84
+ /** A user deciding: their groups, and who delegated their approvals to them today (with those people's roles). */
85
+ export interface Who {
86
+ readonly uid: number;
87
+ readonly administrator: boolean;
88
+ readonly groups: ReadonlySet<string>;
89
+ readonly companyId: number | null;
90
+ readonly delegators: readonly {
91
+ readonly user: number;
92
+ readonly roles: readonly {
93
+ readonly group: string;
94
+ readonly company: number | null;
95
+ }[];
96
+ }[];
97
+ }
98
+ /** `env`'s user as a decider (RFC 0025 §3.3: delegations active today count). */
99
+ export declare function whoIs(su: Env, env: Env): Promise<Who>;
100
+ export type Decision = 'approve' | 'reject' | 'send_back';
101
+ /**
102
+ * Decides a request as `env`'s user: approves (the request is approved once it has the approvals it needs), rejects
103
+ * or sends back for changes (with a reason, unless the policy says otherwise; the other open requests of the round are
104
+ * cancelled). @throws {HttpProblem} 404 unknown, 409 decided / not its turn / decided by them already, 403 not an
105
+ * approver, the requester, or another company, 422 a reason missing
106
+ */
107
+ export declare function decide(env: Env, requestId: number, decision: Decision, comment?: string, from?: {
108
+ readonly ip?: string;
109
+ }): Promise<ApprovalRequestInfo>;
110
+ /**
111
+ * The requester withdraws the pending requests of their record's current round; the policy's `onWithdrawn`
112
+ * transition runs. @throws {HttpProblem} 404 when nothing is pending, 403 when they did not ask
113
+ */
114
+ export declare function withdraw(env: Env, model: string, id: number): Promise<number>;
115
+ /**
116
+ * Reassigns a pending request (RFC 0027 §2.6), for Approvals managers: its approvers replaced by `users`, or `users`
117
+ * added to them (a role's holders named first); never the requester; a reason required; logged, audited and
118
+ * announced (`approval.reassigned`, with the people added). @throws {HttpProblem} 403 / 404 / 409 / 422
119
+ */
120
+ export declare function reassign(env: Env, requestId: number, users: readonly number[], mode: 'replace' | 'add', reason: string): Promise<ApprovalRequestInfo>;
121
+ /**
122
+ * Tells a current request's backups that it waits (RFC 0027 §2.6): for Approvals managers and the request's
123
+ * approvers; logged and announced (`approval.backups`). @throws {HttpProblem} 403 / 404 / 409
124
+ */
125
+ export declare function notifyBackups(env: Env, requestId: number): Promise<number>;
126
+ /** The fields of a level that decide its approvers: a change to one is synced to its waiting requests. */
127
+ export declare const APPROVER_KEYS: readonly string[];
128
+ /**
129
+ * Keeps waiting requests in step with their levels (RFC 0027 §2.6), as the system: each pending request of these
130
+ * levels gets its approvers found again — added to the ones it has, or replacing them, as its policy says (`mode`
131
+ * overrides it, for "Sync now") — logged when they change. Returns what changed, with the people added to requests
132
+ * whose turn it is (to tell, when the policy says so).
133
+ */
134
+ export declare function syncLevels(su: Env, levelIds: readonly number[], mode?: 'add' | 'replace'): Promise<{
135
+ request: ApprovalRequestInfo;
136
+ added: number[];
137
+ notify: boolean;
138
+ }[]>;
139
+ /** A request as the Approvals app shows it (RFC 0025 §3.1): the record, who asked, since when, every level. */
140
+ export interface ApprovalCard {
141
+ readonly id: number;
142
+ readonly levelName: string;
143
+ readonly state: ApprovalRequestInfo['state'];
144
+ readonly round: number;
145
+ readonly approvals: number;
146
+ readonly required: number;
147
+ readonly waitingSince: string;
148
+ readonly decidedAt: string | null;
149
+ /** When it should be decided by, and the role it was escalated to once late. */
150
+ readonly dueAt: string | null;
151
+ readonly escalatedTo: string | null;
152
+ readonly comment: string | null;
153
+ readonly record: {
154
+ readonly model: string;
155
+ readonly id: number;
156
+ readonly name: string;
157
+ readonly label: string;
158
+ };
159
+ readonly requester: {
160
+ readonly id: number;
161
+ readonly name: string;
162
+ } | null;
163
+ readonly steps: readonly {
164
+ id: number;
165
+ levelName: string;
166
+ sequence: number;
167
+ state: ApprovalRequestInfo['state'];
168
+ approvals: number;
169
+ required: number;
170
+ }[];
171
+ }
172
+ /**
173
+ * The Approvals app's lists (RFC 0025 §3.1): `inbox` — what waits for the user's decision, oldest first —, `mine`
174
+ * — the records they asked approvals for, the latest round of each, where it stands —, `history` — what they decided,
175
+ * newest first.
176
+ */
177
+ export declare function approvalCards(env: Env, list: 'inbox' | 'mine' | 'history'): Promise<ApprovalCard[]>;
178
+ /** Approves many requests (each checked as one decision); the ones refused say why. */
179
+ export declare function approveMany(env: Env, ids: readonly number[], comment?: string): Promise<{
180
+ approved: number;
181
+ failed: {
182
+ id: number;
183
+ reason: string;
184
+ }[];
185
+ }>;
186
+ /** The inbox's header: waiting, waiting over three days, decided this month, the median hours to decide them. */
187
+ export declare function approvalStats(env: Env): Promise<{
188
+ waiting: number;
189
+ overdue: number;
190
+ decidedThisMonth: number;
191
+ medianHours: number | null;
192
+ }>;
193
+ /** The periods of the matrix dashboard, in days (`all`: no limit). */
194
+ declare const MATRIX_DAYS: {
195
+ readonly '7d': 7;
196
+ readonly '30d': 30;
197
+ readonly '3m': 91;
198
+ readonly '6m': 182;
199
+ readonly '1y': 365;
200
+ readonly all: null;
201
+ };
202
+ export type MatrixPeriod = keyof typeof MATRIX_DAYS;
203
+ export declare const MATRIX_PERIODS: readonly MatrixPeriod[];
204
+ /** One card of the matrix: a policy's requests the user decides, by state. */
205
+ export interface MatrixCard {
206
+ readonly policy: number | null;
207
+ readonly title: string;
208
+ readonly waiting: number;
209
+ readonly approved: number;
210
+ readonly rejected: number;
211
+ readonly total: number;
212
+ }
213
+ /**
214
+ * The matrix dashboard (RFC 0027 §2.7): the requests of the period the user decides — directly (named, or holding
215
+ * the role) or delegated (as a backup or for someone away) — a card per policy with what waits, what was approved
216
+ * and rejected; for Approvals managers also the hours each level takes to decide and the bottlenecks (who has the
217
+ * most requests late).
218
+ */
219
+ export declare function approvalMatrix(env: Env, period: MatrixPeriod, mode: 'direct' | 'delegated'): Promise<{
220
+ cards: MatrixCard[];
221
+ direct: number;
222
+ delegated: number;
223
+ levels: {
224
+ policy: string;
225
+ level: string;
226
+ decided: number;
227
+ averageHours: number;
228
+ }[] | null;
229
+ bottlenecks: {
230
+ user: number;
231
+ name: string;
232
+ late: number;
233
+ waiting: number;
234
+ }[] | null;
235
+ }>;
236
+ /** The people who may decide `request` now: its approvers (or its role's holders), the escalation role's once late,
237
+ * and whoever they delegated to today; never the requester. */
238
+ export declare function decidersOf(su: Env, request: ApprovalRequestInfo, today: string): Promise<number[]>;
239
+ /** The pending requests of a record whose turn it is (every lower level approved). */
240
+ export declare function turnOf(su: Env, model: string, id: number): Promise<ApprovalRequestInfo[]>;
46
241
  /**
47
- * Approves or rejects a request as `env`'s user. @throws {HttpProblem} 404 unknown, 409 decided / not its turn,
48
- * 403 not an approver, the requester, or another company
242
+ * Deadlines (RFC 0025 §3.3), as the system: each pending request with a deadline is reminded once at half of it and,
243
+ * once late, escalated to its level's role (who may then decide too), audited; returns what was done, with who to
244
+ * tell.
49
245
  */
50
- export declare function decide(env: Env, requestId: number, decision: 'approve' | 'reject', comment?: string): Promise<ApprovalRequestInfo>;
246
+ export declare function sweepDeadlines(su: Env, now?: Date): Promise<{
247
+ kind: 'reminded' | 'escalated';
248
+ request: ApprovalRequestInfo;
249
+ }[]>;
250
+ /** One-time links deciding `request` from an email, one per person who may decide it now (7 days). */
251
+ export declare function issueLinks(su: Env, request: ApprovalRequestInfo, today: string, newToken: () => string, digestOf: (token: string) => string, only?: readonly number[]): Promise<{
252
+ user: number;
253
+ token: string;
254
+ }[]>;
255
+ /** The link of a token, while it is unused and not expired: who decides, which request. */
256
+ export declare function linkOf(su: Env, tokenHash: string): Promise<{
257
+ id: number;
258
+ user: number;
259
+ request: ApprovalRequestInfo;
260
+ } | null>;
261
+ /** Marks a link used (as the system). */
262
+ export declare function useLink(su: Env, id: number): Promise<void>;
263
+ /** A user's groups in a company (direct grants), to act as them from a link. */
264
+ export declare function groupsOf(su: Env, user: number, company: number | null): Promise<string[]>;
51
265
  /** The pending requests `env`'s user may decide now, in the current company. */
52
266
  export declare function inbox(env: Env): Promise<ApprovalRequestInfo[]>;
53
267
  /** The requests of a record, when `env` may read the record (record rules apply: 404 otherwise). */
54
268
  export declare function requestsOf(env: Env, model: string, id: number): Promise<ApprovalRequestInfo[]>;
55
269
  /** Installs the default policies the modules declare (`approvals` in manifests) that do not exist yet, by name. */
56
270
  export declare function installApprovalPolicies(env: Env, modules: readonly KoshModule[]): Promise<number>;
271
+ export {};