shutro-erp 0.3.5 → 0.3.6

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 (384) hide show
  1. package/dist/account_asset/.kosh/bindings.d.ts +22 -0
  2. package/dist/account_asset/.kosh/bindings.js +15 -0
  3. package/dist/account_asset/.kosh/schema.d.ts +1755 -0
  4. package/dist/account_asset/board.d.ts +61 -0
  5. package/dist/account_asset/board.js +86 -0
  6. package/dist/account_asset/books.d.ts +42 -0
  7. package/dist/account_asset/books.js +398 -0
  8. package/dist/account_asset/demo.d.ts +7 -0
  9. package/dist/account_asset/demo.js +72 -0
  10. package/dist/account_asset/index.d.ts +9 -0
  11. package/dist/account_asset/index.js +335 -0
  12. package/dist/account_asset/module.d.ts +7622 -0
  13. package/dist/account_asset/module.js +230 -0
  14. package/dist/account_budget/.kosh/bindings.d.ts +22 -0
  15. package/dist/account_budget/.kosh/bindings.js +15 -0
  16. package/dist/account_budget/.kosh/schema.d.ts +1767 -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/index.d.ts +4 -0
  22. package/dist/account_budget/index.js +223 -0
  23. package/dist/account_budget/module.d.ts +13863 -0
  24. package/dist/account_budget/module.js +167 -0
  25. package/dist/account_portal/.kosh/bindings.js +1 -1
  26. package/dist/account_portal/.kosh/schema.d.ts +123 -4
  27. package/dist/account_portal/module.d.ts +146 -0
  28. package/dist/accounting/.kosh/bindings.js +1 -1
  29. package/dist/accounting/.kosh/schema.d.ts +123 -4
  30. package/dist/accounting/index.d.ts +1 -1
  31. package/dist/accounting/index.js +131 -3
  32. package/dist/accounting/module.d.ts +296 -0
  33. package/dist/accounting/module.js +32 -1
  34. package/dist/approvals/.kosh/bindings.d.ts +22 -0
  35. package/dist/approvals/.kosh/bindings.js +15 -0
  36. package/dist/approvals/.kosh/schema.d.ts +611 -0
  37. package/dist/approvals/index.d.ts +18 -0
  38. package/dist/approvals/index.js +302 -0
  39. package/dist/approvals/mails.d.ts +25 -0
  40. package/dist/approvals/mails.js +82 -0
  41. package/dist/approvals/module.d.ts +1 -0
  42. package/dist/approvals/module.js +12 -0
  43. package/dist/approvals/web/History.d.ts +4 -0
  44. package/dist/approvals/web/History.js +13 -0
  45. package/dist/approvals/web/Inbox.d.ts +9 -0
  46. package/dist/approvals/web/Inbox.js +114 -0
  47. package/dist/approvals/web/Mine.d.ts +7 -0
  48. package/dist/approvals/web/Mine.js +27 -0
  49. package/dist/approvals/web/index.d.ts +13 -0
  50. package/dist/approvals/web/index.js +22 -0
  51. package/dist/approvals/web/messages.d.ts +2 -0
  52. package/dist/approvals/web/messages.js +119 -0
  53. package/dist/approvals/web/shared.d.ts +59 -0
  54. package/dist/approvals/web/shared.js +46 -0
  55. package/dist/attendance/.kosh/bindings.d.ts +22 -0
  56. package/dist/attendance/.kosh/bindings.js +15 -0
  57. package/dist/attendance/.kosh/schema.d.ts +1048 -0
  58. package/dist/attendance/days.d.ts +96 -0
  59. package/dist/attendance/days.js +430 -0
  60. package/dist/attendance/demo.d.ts +7 -0
  61. package/dist/attendance/demo.js +58 -0
  62. package/dist/attendance/index.d.ts +4 -0
  63. package/dist/attendance/index.js +513 -0
  64. package/dist/attendance/module.d.ts +3969 -0
  65. package/dist/attendance/module.js +412 -0
  66. package/dist/attendance/routes.d.ts +16 -0
  67. package/dist/attendance/routes.js +266 -0
  68. package/dist/attendance/web/Check.d.ts +8 -0
  69. package/dist/attendance/web/Check.js +40 -0
  70. package/dist/attendance/web/Kiosk.d.ts +8 -0
  71. package/dist/attendance/web/Kiosk.js +62 -0
  72. package/dist/attendance/web/PinButton.d.ts +7 -0
  73. package/dist/attendance/web/PinButton.js +29 -0
  74. package/dist/attendance/web/index.d.ts +13 -0
  75. package/dist/attendance/web/index.js +22 -0
  76. package/dist/attendance/web/messages.d.ts +2 -0
  77. package/dist/attendance/web/messages.js +61 -0
  78. package/dist/cli/init.js +32 -0
  79. package/dist/cli/templates.d.ts +1 -1
  80. package/dist/cli/templates.js +89 -0
  81. package/dist/contacts/module.js +13 -2
  82. package/dist/crm/.kosh/bindings.js +1 -1
  83. package/dist/crm/.kosh/schema.d.ts +2 -1
  84. package/dist/crm/module.d.ts +2 -0
  85. package/dist/crm/module.js +2 -1
  86. package/dist/documents/.kosh/bindings.d.ts +22 -0
  87. package/dist/documents/.kosh/bindings.js +15 -0
  88. package/dist/documents/.kosh/schema.d.ts +862 -0
  89. package/dist/documents/demo.d.ts +6 -0
  90. package/dist/documents/demo.js +22 -0
  91. package/dist/documents/documents.d.ts +98 -0
  92. package/dist/documents/documents.js +318 -0
  93. package/dist/documents/index.d.ts +30 -0
  94. package/dist/documents/index.js +442 -0
  95. package/dist/documents/module.d.ts +2781 -0
  96. package/dist/documents/module.js +214 -0
  97. package/dist/documents/web/Versions.d.ts +7 -0
  98. package/dist/documents/web/Versions.js +45 -0
  99. package/dist/documents/web/index.d.ts +11 -0
  100. package/dist/documents/web/index.js +16 -0
  101. package/dist/documents/web/messages.d.ts +2 -0
  102. package/dist/documents/web/messages.js +21 -0
  103. package/dist/event_account/.kosh/bindings.js +1 -1
  104. package/dist/event_account/.kosh/schema.d.ts +123 -4
  105. package/dist/event_account/module.d.ts +146 -0
  106. package/dist/expense/.kosh/bindings.d.ts +22 -0
  107. package/dist/expense/.kosh/bindings.js +15 -0
  108. package/dist/expense/.kosh/schema.d.ts +1299 -0
  109. package/dist/expense/demo.d.ts +7 -0
  110. package/dist/expense/demo.js +69 -0
  111. package/dist/expense/index.d.ts +3 -0
  112. package/dist/expense/index.js +495 -0
  113. package/dist/expense/module.d.ts +4747 -0
  114. package/dist/expense/module.js +647 -0
  115. package/dist/expense_account/.kosh/bindings.d.ts +22 -0
  116. package/dist/expense_account/.kosh/bindings.js +15 -0
  117. package/dist/expense_account/.kosh/schema.d.ts +1936 -0
  118. package/dist/expense_account/index.d.ts +3 -0
  119. package/dist/expense_account/index.js +74 -0
  120. package/dist/expense_account/module.d.ts +9153 -0
  121. package/dist/expense_account/module.js +318 -0
  122. package/dist/helpdesk/.kosh/bindings.d.ts +22 -0
  123. package/dist/helpdesk/.kosh/bindings.js +15 -0
  124. package/dist/helpdesk/.kosh/schema.d.ts +885 -0
  125. package/dist/helpdesk/demo.d.ts +7 -0
  126. package/dist/helpdesk/demo.js +65 -0
  127. package/dist/helpdesk/hours.d.ts +17 -0
  128. package/dist/helpdesk/hours.js +94 -0
  129. package/dist/helpdesk/index.d.ts +10 -0
  130. package/dist/helpdesk/index.js +461 -0
  131. package/dist/helpdesk/module.d.ts +2940 -0
  132. package/dist/helpdesk/module.js +326 -0
  133. package/dist/helpdesk/routes.d.ts +12 -0
  134. package/dist/helpdesk/routes.js +132 -0
  135. package/dist/helpdesk/sla.d.ts +37 -0
  136. package/dist/helpdesk/sla.js +226 -0
  137. package/dist/hr/index.d.ts +1 -1
  138. package/dist/hr/index.js +1 -1
  139. package/dist/l10n_bd/.kosh/bindings.js +1 -1
  140. package/dist/l10n_bd/.kosh/schema.d.ts +123 -4
  141. package/dist/l10n_bd/module.d.ts +146 -0
  142. package/dist/l10n_bd_payroll/.kosh/bindings.d.ts +22 -0
  143. package/dist/l10n_bd_payroll/.kosh/bindings.js +15 -0
  144. package/dist/l10n_bd_payroll/.kosh/schema.d.ts +2312 -0
  145. package/dist/l10n_bd_payroll/data.d.ts +47 -0
  146. package/dist/l10n_bd_payroll/data.js +347 -0
  147. package/dist/l10n_bd_payroll/index.d.ts +4 -0
  148. package/dist/l10n_bd_payroll/index.js +24 -0
  149. package/dist/l10n_bd_payroll/module.d.ts +12932 -0
  150. package/dist/l10n_bd_payroll/module.js +86 -0
  151. package/dist/l10n_in/.kosh/bindings.js +1 -1
  152. package/dist/l10n_in/.kosh/schema.d.ts +123 -4
  153. package/dist/l10n_in/module.d.ts +147 -0
  154. package/dist/mail/inbound/handle.js +6 -1
  155. package/dist/maintenance_stock/.kosh/bindings.js +1 -1
  156. package/dist/maintenance_stock/.kosh/schema.d.ts +77 -2
  157. package/dist/maintenance_stock/module.d.ts +788 -66
  158. package/dist/modules-sdk/index.d.ts +1 -1
  159. package/dist/modules-sdk/manifest.d.ts +39 -2
  160. package/dist/mrp/.kosh/bindings.js +1 -1
  161. package/dist/mrp/.kosh/schema.d.ts +77 -2
  162. package/dist/mrp/index.d.ts +1 -1
  163. package/dist/mrp/index.js +2 -1
  164. package/dist/mrp/module.d.ts +781 -54
  165. package/dist/mrp/module.js +64 -2
  166. package/dist/mrp_account/.kosh/bindings.js +1 -1
  167. package/dist/mrp_account/.kosh/schema.d.ts +198 -5
  168. package/dist/mrp_account/module.d.ts +4852 -2541
  169. package/dist/payment/.kosh/bindings.js +1 -1
  170. package/dist/payment/.kosh/schema.d.ts +125 -5
  171. package/dist/payment/index.d.ts +41 -0
  172. package/dist/payment/index.js +131 -74
  173. package/dist/payment/module.d.ts +210 -6
  174. package/dist/payment/module.js +19 -3
  175. package/dist/payment/settle.js +10 -1
  176. package/dist/payroll/.kosh/bindings.d.ts +22 -0
  177. package/dist/payroll/.kosh/bindings.js +15 -0
  178. package/dist/payroll/.kosh/schema.d.ts +1390 -0
  179. package/dist/payroll/compute.d.ts +35 -0
  180. package/dist/payroll/compute.js +398 -0
  181. package/dist/payroll/demo.d.ts +55 -0
  182. package/dist/payroll/demo.js +121 -0
  183. package/dist/payroll/formula.d.ts +62 -0
  184. package/dist/payroll/formula.js +320 -0
  185. package/dist/payroll/index.d.ts +230 -0
  186. package/dist/payroll/index.js +713 -0
  187. package/dist/payroll/module.d.ts +9390 -0
  188. package/dist/payroll/module.js +606 -0
  189. package/dist/payroll/routes.d.ts +10 -0
  190. package/dist/payroll/routes.js +112 -0
  191. package/dist/payroll_account/.kosh/bindings.d.ts +22 -0
  192. package/dist/payroll_account/.kosh/bindings.js +15 -0
  193. package/dist/payroll_account/.kosh/schema.d.ts +2308 -0
  194. package/dist/payroll_account/index.d.ts +3 -0
  195. package/dist/payroll_account/index.js +40 -0
  196. package/dist/payroll_account/module.d.ts +12396 -0
  197. package/dist/payroll_account/module.js +256 -0
  198. package/dist/permissions/approvals.d.ts +131 -9
  199. package/dist/permissions/approvals.js +662 -57
  200. package/dist/permissions/index.d.ts +1 -1
  201. package/dist/permissions/index.js +2 -2
  202. package/dist/permissions/models.js +191 -12
  203. package/dist/permissions/routes.d.ts +6 -1
  204. package/dist/permissions/routes.js +37 -4
  205. package/dist/permissions/web/ApprovalPanel.d.ts +5 -4
  206. package/dist/permissions/web/ApprovalPanel.js +39 -13
  207. package/dist/permissions/web/index.d.ts +6 -4
  208. package/dist/permissions/web/index.js +13 -4
  209. package/dist/permissions/web/messages.d.ts +2 -0
  210. package/dist/permissions/web/messages.js +43 -0
  211. package/dist/portal/index.js +1 -1
  212. package/dist/pos/.kosh/bindings.js +1 -1
  213. package/dist/pos/.kosh/schema.d.ts +123 -4
  214. package/dist/pos/index.js +4 -0
  215. package/dist/pos/module.d.ts +147 -0
  216. package/dist/pos_stock/.kosh/bindings.js +1 -1
  217. package/dist/pos_stock/.kosh/schema.d.ts +198 -5
  218. package/dist/pos_stock/module.d.ts +914 -46
  219. package/dist/product/.kosh/bindings.js +1 -1
  220. package/dist/product/.kosh/schema.d.ts +2 -1
  221. package/dist/product/index.js +13 -0
  222. package/dist/product/module.d.ts +2 -0
  223. package/dist/product/module.js +2 -1
  224. package/dist/project/.kosh/bindings.js +1 -1
  225. package/dist/project/.kosh/schema.d.ts +672 -1
  226. package/dist/project/index.d.ts +3 -1
  227. package/dist/project/index.js +901 -14
  228. package/dist/project/module.d.ts +9892 -390
  229. package/dist/project/module.js +1530 -13
  230. package/dist/project/routes.d.ts +44 -0
  231. package/dist/project/routes.js +314 -0
  232. package/dist/project/schedule.d.ts +72 -0
  233. package/dist/project/schedule.js +192 -0
  234. package/dist/project/web/Refresh.d.ts +8 -0
  235. package/dist/project/web/Refresh.js +29 -0
  236. package/dist/project/web/Schedule.d.ts +9 -0
  237. package/dist/project/web/Schedule.js +93 -0
  238. package/dist/project/web/Structure.d.ts +8 -0
  239. package/dist/project/web/Structure.js +86 -0
  240. package/dist/project/web/Workload.d.ts +8 -0
  241. package/dist/project/web/Workload.js +43 -0
  242. package/dist/project/web/index.d.ts +14 -0
  243. package/dist/project/web/index.js +25 -0
  244. package/dist/project/web/messages.d.ts +2 -0
  245. package/dist/project/web/messages.js +85 -0
  246. package/dist/project_account/.kosh/bindings.d.ts +22 -0
  247. package/dist/project_account/.kosh/bindings.js +15 -0
  248. package/dist/project_account/.kosh/schema.d.ts +2241 -0
  249. package/dist/project_account/index.d.ts +3 -0
  250. package/dist/project_account/index.js +27 -0
  251. package/dist/project_account/module.d.ts +11539 -0
  252. package/dist/project_account/module.js +76 -0
  253. package/dist/project_portal/.kosh/bindings.js +1 -1
  254. package/dist/project_portal/.kosh/schema.d.ts +672 -1
  255. package/dist/project_portal/module.d.ts +4798 -129
  256. package/dist/project_purchase/.kosh/bindings.d.ts +22 -0
  257. package/dist/project_purchase/.kosh/bindings.js +15 -0
  258. package/dist/project_purchase/.kosh/schema.d.ts +2320 -0
  259. package/dist/project_purchase/index.d.ts +9 -0
  260. package/dist/project_purchase/index.js +22 -0
  261. package/dist/project_purchase/module.d.ts +25147 -0
  262. package/dist/project_purchase/module.js +56 -0
  263. package/dist/purchase/.kosh/bindings.js +1 -1
  264. package/dist/purchase/.kosh/schema.d.ts +97 -4
  265. package/dist/purchase/module.d.ts +13 -2
  266. package/dist/purchase/module.js +10 -1
  267. package/dist/purchase_account/.kosh/bindings.js +1 -1
  268. package/dist/purchase_account/.kosh/schema.d.ts +126 -6
  269. package/dist/purchase_account/index.js +1 -0
  270. package/dist/purchase_account/module.d.ts +176 -1
  271. package/dist/purchase_account/module.js +13 -2
  272. package/dist/purchase_portal/.kosh/bindings.js +1 -1
  273. package/dist/purchase_portal/.kosh/schema.d.ts +97 -4
  274. package/dist/purchase_portal/module.d.ts +6 -1
  275. package/dist/purchase_stock/.kosh/bindings.js +1 -1
  276. package/dist/purchase_stock/.kosh/schema.d.ts +174 -5
  277. package/dist/purchase_stock/index.d.ts +1 -1
  278. package/dist/purchase_stock/index.js +9 -2
  279. package/dist/purchase_stock/module.d.ts +840 -68
  280. package/dist/purchase_stock/module.js +242 -6
  281. package/dist/purchase_stock_account/.kosh/bindings.js +1 -1
  282. package/dist/purchase_stock_account/.kosh/schema.d.ts +203 -7
  283. package/dist/purchase_stock_account/module.d.ts +8163 -5514
  284. package/dist/purchase_stock_account/module.js +11 -5
  285. package/dist/recruitment/.kosh/bindings.js +1 -1
  286. package/dist/recruitment/.kosh/schema.d.ts +2 -1
  287. package/dist/recruitment/module.d.ts +2 -0
  288. package/dist/recruitment/module.js +2 -1
  289. package/dist/sale_account/.kosh/bindings.js +1 -1
  290. package/dist/sale_account/.kosh/schema.d.ts +123 -4
  291. package/dist/sale_account/module.d.ts +147 -0
  292. package/dist/sale_portal/.kosh/bindings.js +1 -1
  293. package/dist/sale_portal/.kosh/schema.d.ts +2 -1
  294. package/dist/sale_portal/module.d.ts +1 -0
  295. package/dist/sale_project/.kosh/bindings.js +1 -1
  296. package/dist/sale_project/.kosh/schema.d.ts +673 -1
  297. package/dist/sale_project/module.d.ts +4800 -129
  298. package/dist/sale_project/module.js +17 -1
  299. package/dist/sale_stock/.kosh/bindings.js +1 -1
  300. package/dist/sale_stock/.kosh/schema.d.ts +77 -2
  301. package/dist/sale_stock/module.d.ts +789 -66
  302. package/dist/sales/.kosh/bindings.js +1 -1
  303. package/dist/sales/.kosh/schema.d.ts +2 -1
  304. package/dist/sales/index.js +4 -0
  305. package/dist/sales/module.d.ts +1 -0
  306. package/dist/sign/.kosh/bindings.d.ts +22 -0
  307. package/dist/sign/.kosh/bindings.js +15 -0
  308. package/dist/sign/.kosh/schema.d.ts +990 -0
  309. package/dist/sign/index.d.ts +14 -0
  310. package/dist/sign/index.js +350 -0
  311. package/dist/sign/module.d.ts +4478 -0
  312. package/dist/sign/module.js +158 -0
  313. package/dist/sign/sign.d.ts +82 -0
  314. package/dist/sign/sign.js +474 -0
  315. package/dist/stock/.kosh/bindings.js +1 -1
  316. package/dist/stock/.kosh/schema.d.ts +77 -2
  317. package/dist/stock/demo.d.ts +2 -1
  318. package/dist/stock/demo.js +28 -1
  319. package/dist/stock/index.d.ts +2 -1
  320. package/dist/stock/index.js +233 -4
  321. package/dist/stock/module.d.ts +2363 -837
  322. package/dist/stock/module.js +569 -14
  323. package/dist/stock/replenish.d.ts +38 -0
  324. package/dist/stock/replenish.js +176 -0
  325. package/dist/stock/web/Replenishment.d.ts +8 -0
  326. package/dist/stock/web/Replenishment.js +84 -0
  327. package/dist/stock/web/index.d.ts +4 -2
  328. package/dist/stock/web/index.js +6 -2
  329. package/dist/stock/web/messages.js +52 -0
  330. package/dist/stock_account/.kosh/bindings.js +1 -1
  331. package/dist/stock_account/.kosh/schema.d.ts +198 -5
  332. package/dist/stock_account/index.js +10 -0
  333. package/dist/stock_account/module.d.ts +969 -101
  334. package/dist/trade_finance/index.js +2 -0
  335. package/dist/trade_finance/module.js +2 -0
  336. package/dist/trade_finance_account/.kosh/bindings.js +1 -1
  337. package/dist/trade_finance_account/.kosh/schema.d.ts +123 -4
  338. package/dist/trade_finance_account/index.js +1 -0
  339. package/dist/trade_finance_account/module.d.ts +146 -0
  340. package/dist/trade_finance_account/module.js +1 -0
  341. package/dist/trade_finance_purchase/.kosh/bindings.js +1 -1
  342. package/dist/trade_finance_purchase/.kosh/schema.d.ts +97 -4
  343. package/dist/trade_finance_purchase/module.d.ts +6 -1
  344. package/dist/trade_finance_sale/.kosh/bindings.js +1 -1
  345. package/dist/trade_finance_sale/.kosh/schema.d.ts +2 -1
  346. package/dist/trade_finance_sale/module.d.ts +1 -0
  347. package/dist/ui/app.js +24 -12
  348. package/dist/ui/components/AppIcon.js +8 -1
  349. package/dist/ui/i18n/messages.d.ts +4 -0
  350. package/dist/ui/i18n/messages.js +8 -0
  351. package/dist/ui/views/FormView.js +4 -2
  352. package/dist/ui/views/KanbanView.js +9 -1
  353. package/dist/ui/views/ListView.js +4 -2
  354. package/dist/ui/views/widgets.js +7 -1
  355. package/dist/website/index.js +1 -0
  356. package/dist/website/module.js +1 -0
  357. package/dist/website_crm/.kosh/bindings.js +1 -1
  358. package/dist/website_crm/.kosh/schema.d.ts +2 -1
  359. package/dist/website_crm/module.d.ts +1 -0
  360. package/dist/website_sale/.kosh/bindings.d.ts +22 -0
  361. package/dist/website_sale/.kosh/bindings.js +15 -0
  362. package/dist/website_sale/.kosh/schema.d.ts +2284 -0
  363. package/dist/website_sale/couriers.d.ts +50 -0
  364. package/dist/website_sale/couriers.js +59 -0
  365. package/dist/website_sale/demo.d.ts +7 -0
  366. package/dist/website_sale/demo.js +90 -0
  367. package/dist/website_sale/growth.d.ts +31 -0
  368. package/dist/website_sale/growth.js +163 -0
  369. package/dist/website_sale/index.d.ts +49 -0
  370. package/dist/website_sale/index.js +538 -0
  371. package/dist/website_sale/module.d.ts +22027 -0
  372. package/dist/website_sale/module.js +397 -0
  373. package/dist/website_sale/shipments.d.ts +16 -0
  374. package/dist/website_sale/shipments.js +113 -0
  375. package/dist/website_sale/shop.d.ts +81 -0
  376. package/dist/website_sale/shop.js +649 -0
  377. package/dist/website_sale_stock/.kosh/bindings.d.ts +22 -0
  378. package/dist/website_sale_stock/.kosh/bindings.js +15 -0
  379. package/dist/website_sale_stock/.kosh/schema.d.ts +2681 -0
  380. package/dist/website_sale_stock/index.d.ts +9 -0
  381. package/dist/website_sale_stock/index.js +20 -0
  382. package/dist/website_sale_stock/module.d.ts +24998 -0
  383. package/dist/website_sale_stock/module.js +28 -0
  384. package/package.json +83 -2
@@ -323,6 +323,7 @@ export const tradeFinance = defineModule({
323
323
  ],
324
324
  }),
325
325
  'trade.lc.presentation.form': form(TradePresentation, (k) => ({
326
+ chatter: true,
326
327
  header: {
327
328
  statusbar: 'state',
328
329
  buttons: [
@@ -348,6 +349,7 @@ export const tradeFinance = defineModule({
348
349
  ],
349
350
  }),
350
351
  'trade.lc.amendment.form': form(TradeAmendment, (k) => ({
352
+ chatter: true,
351
353
  header: {
352
354
  statusbar: 'state',
353
355
  buttons: [
@@ -280,6 +280,7 @@ export const TradeLc = defineModel('trade.lc', {
280
280
  });
281
281
  export const TradeAmendment = defineModel('trade.lc.amendment', {
282
282
  label: 'LC amendment',
283
+ tracking: ['state'],
283
284
  order: ['id asc'],
284
285
  access: {
285
286
  'trade_finance.user': ['read', 'write', 'create'],
@@ -334,6 +335,7 @@ export const TradeAmendment = defineModel('trade.lc.amendment', {
334
335
  });
335
336
  export const TradePresentation = defineModel('trade.lc.presentation', {
336
337
  label: 'Presentation',
338
+ tracking: ['state', 'amount'],
337
339
  order: ['date asc', 'id asc'],
338
340
  access: {
339
341
  'trade_finance.user': ['read', 'write', 'create'],
@@ -1,4 +1,4 @@
1
- // GENERATED by `pnpm generate:models` (Shutro’s generator). Do not edit. definitions-hash: d775b7060fb10416
1
+ // GENERATED by `pnpm generate:models` (Shutro’s generator). Do not edit. definitions-hash: 604ed0a44ec94837
2
2
  // Bindings of module `trade_finance_account`: import the definition API from here to get types scoped to what it can see.
3
3
  export { defineModel, defineModule, extendModel, f, replace } from '../../server/orm.js';
4
4
  import { definitions } from '../../server/orm.js';
@@ -1,10 +1,11 @@
1
- // GENERATED by `pnpm generate:models` (Shutro’s generator). Do not edit. definitions-hash: d775b7060fb10416
1
+ // GENERATED by `pnpm generate:models` (Shutro’s generator). Do not edit. definitions-hash: 604ed0a44ec94837
2
2
  // Schema view of module `trade_finance_account` (RFC 0002 §7.7): the models it owns or depends on, with the extensions it can see.
3
3
  import type { F } from '../../server/orm.js';
4
4
 
5
5
  /** Model name → model type (RFC 0002 §7.7). */
6
6
  export interface SchemaView {
7
7
  readonly 'account.account': AccountAccount;
8
+ readonly 'account.analytic': AccountAnalytic;
8
9
  readonly 'account.fiscal.year': AccountFiscalYear;
9
10
  readonly 'account.full.reconcile': AccountFullReconcile;
10
11
  readonly 'account.journal': AccountJournal;
@@ -18,9 +19,12 @@ export interface SchemaView {
18
19
  readonly 'account.tax': AccountTax;
19
20
  readonly 'account.tax.component': AccountTaxComponent;
20
21
  readonly 'account.withholding': AccountWithholding;
22
+ readonly 'approval.delegation': ApprovalDelegation;
21
23
  readonly 'approval.level': ApprovalLevel;
24
+ readonly 'approval.link': ApprovalLink;
22
25
  readonly 'approval.policy': ApprovalPolicy;
23
26
  readonly 'approval.request': ApprovalRequest;
27
+ readonly 'approval.vote': ApprovalVote;
24
28
  readonly 'audit.event': AuditEvent;
25
29
  readonly 'auth.api_key': AuthApiKey;
26
30
  readonly 'auth.credential': AuthCredential;
@@ -92,6 +96,30 @@ export interface AccountAccount {
92
96
  export interface AccountAccountMethods extends F.Methods<typeof import('../../accounting/index.js').accountingShutro, 'account.account'> {
93
97
  }
94
98
 
99
+ /** `account.analytic` (owner: accounting). */
100
+ export interface AccountAnalytic {
101
+ readonly name: 'account.analytic';
102
+ readonly fields: {
103
+ readonly id: F.Id<'account.analytic'>;
104
+ readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
105
+ readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
106
+ readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
107
+ readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
108
+ readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
109
+ readonly active: F.Bool<{ readonly required: true; readonly default: true }>;
110
+ readonly company: F.Many2one<'res.company', { readonly required: true; readonly default: true }>;
111
+ readonly code: F.Char;
112
+ readonly name: F.Char<{ readonly required: true; readonly translate: true }>;
113
+ readonly parent: F.Many2one<'account.analytic'>;
114
+ readonly note: F.Text;
115
+ };
116
+ readonly methods: AccountAnalyticMethods;
117
+ }
118
+
119
+ /** Methods of `account.analytic`: declared ones and transitions. */
120
+ export interface AccountAnalyticMethods extends F.Methods<typeof import('../../accounting/index.js').accountingShutro, 'account.analytic'> {
121
+ }
122
+
95
123
  /** `account.fiscal.year` (owner: accounting). */
96
124
  export interface AccountFiscalYear {
97
125
  readonly name: 'account.fiscal.year';
@@ -247,6 +275,7 @@ export interface AccountMoveLine {
247
275
  readonly lineKind: F.Selection<'entry' | 'product' | 'tax' | 'counterpart', { readonly required: true; readonly default: true }>;
248
276
  readonly invoice: F.Many2one<'account.move', { readonly readonly: true; readonly compute: true; readonly store: true }>;
249
277
  readonly product: F.Many2one<'product.product'>;
278
+ readonly analytic: F.Many2one<'account.analytic'>;
250
279
  readonly quantity: F.Decimal<{ readonly default: true }>;
251
280
  readonly priceUnit: F.Decimal<{ readonly default: true }>;
252
281
  readonly discount: F.Decimal<{ readonly default: true }>;
@@ -488,6 +517,29 @@ export interface AccountWithholding {
488
517
  export interface AccountWithholdingMethods extends F.Methods<typeof import('../../accounting/index.js').accountingShutro, 'account.withholding'> {
489
518
  }
490
519
 
520
+ /** `approval.delegation` (owner: permissions). */
521
+ export interface ApprovalDelegation {
522
+ readonly name: 'approval.delegation';
523
+ readonly fields: {
524
+ readonly id: F.Id<'approval.delegation'>;
525
+ readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
526
+ readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
527
+ readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
528
+ readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
529
+ readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
530
+ readonly user: F.Many2one<'res.users', { readonly required: true; readonly default: true }>;
531
+ readonly delegate: F.Many2one<'res.users', { readonly required: true }>;
532
+ readonly dateFrom: F.DateOnly<{ readonly required: true }>;
533
+ readonly dateTo: F.DateOnly<{ readonly required: true }>;
534
+ readonly note: F.Char;
535
+ };
536
+ readonly methods: ApprovalDelegationMethods;
537
+ }
538
+
539
+ /** Methods of `approval.delegation`: declared ones and transitions. */
540
+ export interface ApprovalDelegationMethods extends F.Methods<typeof import('../../permissions/index.js').permissionsShutro, 'approval.delegation'> {
541
+ }
542
+
491
543
  /** `approval.level` (owner: permissions). */
492
544
  export interface ApprovalLevel {
493
545
  readonly name: 'approval.level';
@@ -502,7 +554,14 @@ export interface ApprovalLevel {
502
554
  readonly sequence: F.Integer<{ readonly default: true }>;
503
555
  readonly name: F.Char<{ readonly required: true }>;
504
556
  readonly condition: F.Json;
505
- readonly approverRole: F.Char<{ readonly required: true }>;
557
+ readonly approverKind: F.Selection<'role' | 'users' | 'manager' | 'field', { readonly required: true; readonly default: true }>;
558
+ readonly approverRole: F.Char;
559
+ readonly approverUsers: F.Many2many<'res.users', { readonly required: true }>;
560
+ readonly approverField: F.Char;
561
+ readonly quorum: F.Selection<'any' | 'all' | 'count', { readonly required: true; readonly default: true }>;
562
+ readonly quorumCount: F.Integer;
563
+ readonly deadlineHours: F.Integer;
564
+ readonly escalateRole: F.Char;
506
565
  };
507
566
  readonly methods: ApprovalLevelMethods;
508
567
  }
@@ -511,6 +570,29 @@ export interface ApprovalLevel {
511
570
  export interface ApprovalLevelMethods extends F.Methods<typeof import('../../permissions/index.js').permissionsShutro, 'approval.level'> {
512
571
  }
513
572
 
573
+ /** `approval.link` (owner: permissions). */
574
+ export interface ApprovalLink {
575
+ readonly name: 'approval.link';
576
+ readonly fields: {
577
+ readonly id: F.Id<'approval.link'>;
578
+ readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
579
+ readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
580
+ readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
581
+ readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
582
+ readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
583
+ readonly request: F.Many2one<'approval.request', { readonly required: true }>;
584
+ readonly user: F.Many2one<'res.users', { readonly required: true }>;
585
+ readonly tokenHash: F.Char<{ readonly required: true }>;
586
+ readonly expiresAt: F.Datetime<{ readonly required: true }>;
587
+ readonly usedAt: F.Datetime;
588
+ };
589
+ readonly methods: ApprovalLinkMethods;
590
+ }
591
+
592
+ /** Methods of `approval.link`: declared ones and transitions. */
593
+ export interface ApprovalLinkMethods extends F.Methods<typeof import('../../permissions/index.js').permissionsShutro, 'approval.link'> {
594
+ }
595
+
514
596
  /** `approval.policy` (owner: permissions). */
515
597
  export interface ApprovalPolicy {
516
598
  readonly name: 'approval.policy';
@@ -528,6 +610,9 @@ export interface ApprovalPolicy {
528
610
  readonly company: F.Many2one<'res.company'>;
529
611
  readonly onApproved: F.Char;
530
612
  readonly onRejected: F.Char;
613
+ readonly onSentBack: F.Char;
614
+ readonly onWithdrawn: F.Char;
615
+ readonly reasonRequired: F.Bool<{ readonly required: true; readonly default: true }>;
531
616
  readonly levels: F.One2many<'approval.level', { readonly required: true }>;
532
617
  };
533
618
  readonly methods: ApprovalPolicyMethods;
@@ -554,8 +639,16 @@ export interface ApprovalRequest {
554
639
  readonly targetModel: F.Char<{ readonly required: true }>;
555
640
  readonly targetId: F.Integer<{ readonly required: true }>;
556
641
  readonly company: F.Many2one<'res.company'>;
557
- readonly approverRole: F.Char<{ readonly required: true }>;
558
- readonly state: F.Selection<'pending' | 'approved' | 'rejected' | 'cancelled', { readonly required: true; readonly default: true }>;
642
+ readonly approverRole: F.Char;
643
+ readonly approvers: F.Many2many<'res.users', { readonly required: true }>;
644
+ readonly required: F.Integer<{ readonly required: true; readonly default: true }>;
645
+ readonly round: F.Integer<{ readonly required: true; readonly default: true }>;
646
+ readonly votes: F.One2many<'approval.vote', { readonly required: true }>;
647
+ readonly dueAt: F.Datetime;
648
+ readonly remindedAt: F.Datetime;
649
+ readonly escalatedTo: F.Char;
650
+ readonly escalatedAt: F.Datetime;
651
+ readonly state: F.Selection<'pending' | 'approved' | 'rejected' | 'sent_back' | 'cancelled', { readonly required: true; readonly default: true }>;
559
652
  readonly requestedBy: F.Many2one<'res.users'>;
560
653
  readonly decidedBy: F.Many2one<'res.users'>;
561
654
  readonly decidedAt: F.Datetime;
@@ -568,6 +661,31 @@ export interface ApprovalRequest {
568
661
  export interface ApprovalRequestMethods extends F.Methods<typeof import('../../permissions/index.js').permissionsShutro, 'approval.request'> {
569
662
  }
570
663
 
664
+ /** `approval.vote` (owner: permissions). */
665
+ export interface ApprovalVote {
666
+ readonly name: 'approval.vote';
667
+ readonly fields: {
668
+ readonly id: F.Id<'approval.vote'>;
669
+ readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
670
+ readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
671
+ readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
672
+ readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
673
+ readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
674
+ readonly request: F.Many2one<'approval.request', { readonly required: true }>;
675
+ readonly user: F.Many2one<'res.users', { readonly required: true }>;
676
+ readonly decision: F.Selection<'approve' | 'reject' | 'send_back', { readonly required: true }>;
677
+ readonly comment: F.Text;
678
+ readonly at: F.Datetime<{ readonly required: true }>;
679
+ readonly onBehalfOf: F.Many2one<'res.users'>;
680
+ readonly ip: F.Char;
681
+ };
682
+ readonly methods: ApprovalVoteMethods;
683
+ }
684
+
685
+ /** Methods of `approval.vote`: declared ones and transitions. */
686
+ export interface ApprovalVoteMethods extends F.Methods<typeof import('../../permissions/index.js').permissionsShutro, 'approval.vote'> {
687
+ }
688
+
571
689
  /** `audit.event` (owner: base). */
572
690
  export interface AuditEvent {
573
691
  readonly name: 'audit.event';
@@ -1091,6 +1209,7 @@ export interface ProductCategory {
1091
1209
  readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
1092
1210
  readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
1093
1211
  readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
1212
+ readonly active: F.Bool<{ readonly required: true; readonly default: true }>;
1094
1213
  readonly name: F.Char<{ readonly required: true; readonly translate: true }>;
1095
1214
  readonly parent: F.Many2one<'product.category'>;
1096
1215
  };
@@ -38,6 +38,7 @@ export const tradeFinanceAccount = defineModule({
38
38
  columns: ['lc', 'date', 'name', 'amount', { field: 'state', widget: 'badge' }],
39
39
  }),
40
40
  'trade.lc.charge.form': form(TradeCharge, (k) => ({
41
+ chatter: true,
41
42
  header: {
42
43
  statusbar: 'state',
43
44
  buttons: [k.button('post', { primary: true, label: 'Post' })],
@@ -3112,6 +3112,131 @@ export declare const tradeFinanceAccountShutro: import("../server/orm.js").Modul
3112
3112
  readonly hasDefault: false;
3113
3113
  readonly readonly: false;
3114
3114
  }>;
3115
+ }>>, import("../server/orm.js").Model<"account.analytic", {
3116
+ readonly id: import("../server/orm.js").IdField<"account.analytic">;
3117
+ readonly createdAt: import("../server/orm.js").ScalarField<'datetime', Date, Date, {
3118
+ required: true;
3119
+ readonly: true;
3120
+ computed: false;
3121
+ inverse: false;
3122
+ hasDefault: false;
3123
+ sequence: false;
3124
+ }>;
3125
+ readonly updatedAt: import("../server/orm.js").ScalarField<'datetime', Date, Date, {
3126
+ required: true;
3127
+ readonly: true;
3128
+ computed: false;
3129
+ inverse: false;
3130
+ hasDefault: false;
3131
+ sequence: false;
3132
+ }>;
3133
+ readonly createdBy: import("../server/orm.js").Many2oneField<'res.users', {
3134
+ required: false;
3135
+ readonly: true;
3136
+ computed: false;
3137
+ inverse: false;
3138
+ hasDefault: false;
3139
+ sequence: false;
3140
+ }>;
3141
+ readonly updatedBy: import("../server/orm.js").Many2oneField<'res.users', {
3142
+ required: false;
3143
+ readonly: true;
3144
+ computed: false;
3145
+ inverse: false;
3146
+ hasDefault: false;
3147
+ sequence: false;
3148
+ }>;
3149
+ readonly displayName: import("../server/orm.js").CharField<{
3150
+ required: true;
3151
+ readonly: true;
3152
+ computed: true;
3153
+ inverse: false;
3154
+ hasDefault: false;
3155
+ sequence: false;
3156
+ }>;
3157
+ readonly active: import("../server/orm.js").ActiveField;
3158
+ readonly company: import("../server/orm.js").CompanyField<true>;
3159
+ readonly code: import("../server/orm.js").CharField<{
3160
+ readonly required: false;
3161
+ readonly computed: false;
3162
+ readonly inverse: false;
3163
+ readonly sequence: false;
3164
+ readonly computeName: undefined;
3165
+ readonly store: true;
3166
+ readonly hasDefault: false;
3167
+ readonly readonly: false;
3168
+ }, string>;
3169
+ readonly name: import("../server/orm.js").CharField<{
3170
+ readonly required: true;
3171
+ readonly computed: false;
3172
+ readonly inverse: false;
3173
+ readonly sequence: false;
3174
+ readonly computeName: undefined;
3175
+ readonly store: true;
3176
+ readonly hasDefault: false;
3177
+ readonly readonly: false;
3178
+ }, string | Readonly<Record<string, string>>>;
3179
+ readonly parent: import("../server/orm.js").Many2oneField<"account.analytic", {
3180
+ readonly required: false;
3181
+ readonly computed: false;
3182
+ readonly inverse: false;
3183
+ readonly sequence: false;
3184
+ readonly computeName: undefined;
3185
+ readonly store: true;
3186
+ readonly hasDefault: false;
3187
+ readonly readonly: false;
3188
+ }>;
3189
+ readonly note: import("../server/orm.js").ScalarField<"text", string, string, {
3190
+ readonly required: false;
3191
+ readonly computed: false;
3192
+ readonly inverse: false;
3193
+ readonly sequence: false;
3194
+ readonly computeName: undefined;
3195
+ readonly store: true;
3196
+ readonly hasDefault: false;
3197
+ readonly readonly: false;
3198
+ }>;
3199
+ }, {} & import("../server/orm.js").TransitionMethods<{
3200
+ readonly code: import("../server/orm.js").CharField<{
3201
+ readonly required: false;
3202
+ readonly computed: false;
3203
+ readonly inverse: false;
3204
+ readonly sequence: false;
3205
+ readonly computeName: undefined;
3206
+ readonly store: true;
3207
+ readonly hasDefault: false;
3208
+ readonly readonly: false;
3209
+ }, string>;
3210
+ readonly name: import("../server/orm.js").CharField<{
3211
+ readonly required: true;
3212
+ readonly computed: false;
3213
+ readonly inverse: false;
3214
+ readonly sequence: false;
3215
+ readonly computeName: undefined;
3216
+ readonly store: true;
3217
+ readonly hasDefault: false;
3218
+ readonly readonly: false;
3219
+ }, string | Readonly<Record<string, string>>>;
3220
+ readonly parent: import("../server/orm.js").Many2oneField<"account.analytic", {
3221
+ readonly required: false;
3222
+ readonly computed: false;
3223
+ readonly inverse: false;
3224
+ readonly sequence: false;
3225
+ readonly computeName: undefined;
3226
+ readonly store: true;
3227
+ readonly hasDefault: false;
3228
+ readonly readonly: false;
3229
+ }>;
3230
+ readonly note: import("../server/orm.js").ScalarField<"text", string, string, {
3231
+ readonly required: false;
3232
+ readonly computed: false;
3233
+ readonly inverse: false;
3234
+ readonly sequence: false;
3235
+ readonly computeName: undefined;
3236
+ readonly store: true;
3237
+ readonly hasDefault: false;
3238
+ readonly readonly: false;
3239
+ }>;
3115
3240
  }>>, import("../server/orm.js").Model<"account.account", {
3116
3241
  readonly id: import("../server/orm.js").IdField<"account.account">;
3117
3242
  readonly createdAt: import("../server/orm.js").ScalarField<'datetime', Date, Date, {
@@ -4804,6 +4929,16 @@ export declare const tradeFinanceAccountShutro: import("../server/orm.js").Modul
4804
4929
  readonly hasDefault: false;
4805
4930
  readonly readonly: false;
4806
4931
  }>;
4932
+ readonly analytic: import("../server/orm.js").Many2oneField<"account.analytic", {
4933
+ readonly required: false;
4934
+ readonly computed: false;
4935
+ readonly inverse: false;
4936
+ readonly sequence: false;
4937
+ readonly computeName: undefined;
4938
+ readonly store: true;
4939
+ readonly hasDefault: false;
4940
+ readonly readonly: false;
4941
+ }>;
4807
4942
  readonly quantity: import("../server/orm.js").DecimalField<{
4808
4943
  readonly required: false;
4809
4944
  readonly computed: false;
@@ -5155,6 +5290,16 @@ export declare const tradeFinanceAccountShutro: import("../server/orm.js").Modul
5155
5290
  readonly hasDefault: false;
5156
5291
  readonly readonly: false;
5157
5292
  }>;
5293
+ readonly analytic: import("../server/orm.js").Many2oneField<"account.analytic", {
5294
+ readonly required: false;
5295
+ readonly computed: false;
5296
+ readonly inverse: false;
5297
+ readonly sequence: false;
5298
+ readonly computeName: undefined;
5299
+ readonly store: true;
5300
+ readonly hasDefault: false;
5301
+ readonly readonly: false;
5302
+ }>;
5158
5303
  readonly quantity: import("../server/orm.js").DecimalField<{
5159
5304
  readonly required: false;
5160
5305
  readonly computed: false;
@@ -7080,6 +7225,7 @@ export declare const tradeFinanceAccountShutro: import("../server/orm.js").Modul
7080
7225
  hasDefault: false;
7081
7226
  sequence: false;
7082
7227
  }>;
7228
+ readonly active: import("../server/orm.js").ActiveField;
7083
7229
  readonly name: import("../server/orm.js").CharField<{
7084
7230
  readonly required: true;
7085
7231
  readonly computed: false;
@@ -184,6 +184,7 @@ export const PresentationPayment = extendModel('trade.lc.presentation', {
184
184
  /** A bank charge on an LC (commission, amendment, acceptance, SWIFT): posted to LC charges, an expense. */
185
185
  export const TradeCharge = defineModel('trade.lc.charge', {
186
186
  label: 'LC charge',
187
+ tracking: ['state', 'amount'],
187
188
  order: ['date asc', 'id asc'],
188
189
  access: {
189
190
  'trade_finance.user': ['read', 'write', 'create'],
@@ -1,4 +1,4 @@
1
- // GENERATED by `pnpm generate:models` (Shutro’s generator). Do not edit. definitions-hash: 727eb416f9160ee0
1
+ // GENERATED by `pnpm generate:models` (Shutro’s generator). Do not edit. definitions-hash: 36963ef5f845ed84
2
2
  // Bindings of module `trade_finance_purchase`: import the definition API from here to get types scoped to what it can see.
3
3
  export { defineModel, defineModule, extendModel, f, replace } from '../../server/orm.js';
4
4
  import { definitions } from '../../server/orm.js';
@@ -1,13 +1,16 @@
1
- // GENERATED by `pnpm generate:models` (Shutro’s generator). Do not edit. definitions-hash: 727eb416f9160ee0
1
+ // GENERATED by `pnpm generate:models` (Shutro’s generator). Do not edit. definitions-hash: 36963ef5f845ed84
2
2
  // Schema view of module `trade_finance_purchase` (RFC 0002 §7.7): the models it owns or depends on, with the extensions it can see.
3
3
  import type { F } from '../../server/orm.js';
4
4
 
5
5
  /** Model name → model type (RFC 0002 §7.7). */
6
6
  export interface SchemaView {
7
7
  readonly 'account.tax': AccountTax;
8
+ readonly 'approval.delegation': ApprovalDelegation;
8
9
  readonly 'approval.level': ApprovalLevel;
10
+ readonly 'approval.link': ApprovalLink;
9
11
  readonly 'approval.policy': ApprovalPolicy;
10
12
  readonly 'approval.request': ApprovalRequest;
13
+ readonly 'approval.vote': ApprovalVote;
11
14
  readonly 'audit.event': AuditEvent;
12
15
  readonly 'auth.api_key': AuthApiKey;
13
16
  readonly 'auth.credential': AuthCredential;
@@ -75,6 +78,29 @@ export interface AccountTax {
75
78
  export interface AccountTaxMethods extends F.Methods<typeof import('../../product/index.js').productShutro, 'account.tax'> {
76
79
  }
77
80
 
81
+ /** `approval.delegation` (owner: permissions). */
82
+ export interface ApprovalDelegation {
83
+ readonly name: 'approval.delegation';
84
+ readonly fields: {
85
+ readonly id: F.Id<'approval.delegation'>;
86
+ readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
87
+ readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
88
+ readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
89
+ readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
90
+ readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
91
+ readonly user: F.Many2one<'res.users', { readonly required: true; readonly default: true }>;
92
+ readonly delegate: F.Many2one<'res.users', { readonly required: true }>;
93
+ readonly dateFrom: F.DateOnly<{ readonly required: true }>;
94
+ readonly dateTo: F.DateOnly<{ readonly required: true }>;
95
+ readonly note: F.Char;
96
+ };
97
+ readonly methods: ApprovalDelegationMethods;
98
+ }
99
+
100
+ /** Methods of `approval.delegation`: declared ones and transitions. */
101
+ export interface ApprovalDelegationMethods extends F.Methods<typeof import('../../permissions/index.js').permissionsShutro, 'approval.delegation'> {
102
+ }
103
+
78
104
  /** `approval.level` (owner: permissions). */
79
105
  export interface ApprovalLevel {
80
106
  readonly name: 'approval.level';
@@ -89,7 +115,14 @@ export interface ApprovalLevel {
89
115
  readonly sequence: F.Integer<{ readonly default: true }>;
90
116
  readonly name: F.Char<{ readonly required: true }>;
91
117
  readonly condition: F.Json;
92
- readonly approverRole: F.Char<{ readonly required: true }>;
118
+ readonly approverKind: F.Selection<'role' | 'users' | 'manager' | 'field', { readonly required: true; readonly default: true }>;
119
+ readonly approverRole: F.Char;
120
+ readonly approverUsers: F.Many2many<'res.users', { readonly required: true }>;
121
+ readonly approverField: F.Char;
122
+ readonly quorum: F.Selection<'any' | 'all' | 'count', { readonly required: true; readonly default: true }>;
123
+ readonly quorumCount: F.Integer;
124
+ readonly deadlineHours: F.Integer;
125
+ readonly escalateRole: F.Char;
93
126
  };
94
127
  readonly methods: ApprovalLevelMethods;
95
128
  }
@@ -98,6 +131,29 @@ export interface ApprovalLevel {
98
131
  export interface ApprovalLevelMethods extends F.Methods<typeof import('../../permissions/index.js').permissionsShutro, 'approval.level'> {
99
132
  }
100
133
 
134
+ /** `approval.link` (owner: permissions). */
135
+ export interface ApprovalLink {
136
+ readonly name: 'approval.link';
137
+ readonly fields: {
138
+ readonly id: F.Id<'approval.link'>;
139
+ readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
140
+ readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
141
+ readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
142
+ readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
143
+ readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
144
+ readonly request: F.Many2one<'approval.request', { readonly required: true }>;
145
+ readonly user: F.Many2one<'res.users', { readonly required: true }>;
146
+ readonly tokenHash: F.Char<{ readonly required: true }>;
147
+ readonly expiresAt: F.Datetime<{ readonly required: true }>;
148
+ readonly usedAt: F.Datetime;
149
+ };
150
+ readonly methods: ApprovalLinkMethods;
151
+ }
152
+
153
+ /** Methods of `approval.link`: declared ones and transitions. */
154
+ export interface ApprovalLinkMethods extends F.Methods<typeof import('../../permissions/index.js').permissionsShutro, 'approval.link'> {
155
+ }
156
+
101
157
  /** `approval.policy` (owner: permissions). */
102
158
  export interface ApprovalPolicy {
103
159
  readonly name: 'approval.policy';
@@ -115,6 +171,9 @@ export interface ApprovalPolicy {
115
171
  readonly company: F.Many2one<'res.company'>;
116
172
  readonly onApproved: F.Char;
117
173
  readonly onRejected: F.Char;
174
+ readonly onSentBack: F.Char;
175
+ readonly onWithdrawn: F.Char;
176
+ readonly reasonRequired: F.Bool<{ readonly required: true; readonly default: true }>;
118
177
  readonly levels: F.One2many<'approval.level', { readonly required: true }>;
119
178
  };
120
179
  readonly methods: ApprovalPolicyMethods;
@@ -141,8 +200,16 @@ export interface ApprovalRequest {
141
200
  readonly targetModel: F.Char<{ readonly required: true }>;
142
201
  readonly targetId: F.Integer<{ readonly required: true }>;
143
202
  readonly company: F.Many2one<'res.company'>;
144
- readonly approverRole: F.Char<{ readonly required: true }>;
145
- readonly state: F.Selection<'pending' | 'approved' | 'rejected' | 'cancelled', { readonly required: true; readonly default: true }>;
203
+ readonly approverRole: F.Char;
204
+ readonly approvers: F.Many2many<'res.users', { readonly required: true }>;
205
+ readonly required: F.Integer<{ readonly required: true; readonly default: true }>;
206
+ readonly round: F.Integer<{ readonly required: true; readonly default: true }>;
207
+ readonly votes: F.One2many<'approval.vote', { readonly required: true }>;
208
+ readonly dueAt: F.Datetime;
209
+ readonly remindedAt: F.Datetime;
210
+ readonly escalatedTo: F.Char;
211
+ readonly escalatedAt: F.Datetime;
212
+ readonly state: F.Selection<'pending' | 'approved' | 'rejected' | 'sent_back' | 'cancelled', { readonly required: true; readonly default: true }>;
146
213
  readonly requestedBy: F.Many2one<'res.users'>;
147
214
  readonly decidedBy: F.Many2one<'res.users'>;
148
215
  readonly decidedAt: F.Datetime;
@@ -155,6 +222,31 @@ export interface ApprovalRequest {
155
222
  export interface ApprovalRequestMethods extends F.Methods<typeof import('../../permissions/index.js').permissionsShutro, 'approval.request'> {
156
223
  }
157
224
 
225
+ /** `approval.vote` (owner: permissions). */
226
+ export interface ApprovalVote {
227
+ readonly name: 'approval.vote';
228
+ readonly fields: {
229
+ readonly id: F.Id<'approval.vote'>;
230
+ readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
231
+ readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
232
+ readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
233
+ readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
234
+ readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
235
+ readonly request: F.Many2one<'approval.request', { readonly required: true }>;
236
+ readonly user: F.Many2one<'res.users', { readonly required: true }>;
237
+ readonly decision: F.Selection<'approve' | 'reject' | 'send_back', { readonly required: true }>;
238
+ readonly comment: F.Text;
239
+ readonly at: F.Datetime<{ readonly required: true }>;
240
+ readonly onBehalfOf: F.Many2one<'res.users'>;
241
+ readonly ip: F.Char;
242
+ };
243
+ readonly methods: ApprovalVoteMethods;
244
+ }
245
+
246
+ /** Methods of `approval.vote`: declared ones and transitions. */
247
+ export interface ApprovalVoteMethods extends F.Methods<typeof import('../../permissions/index.js').permissionsShutro, 'approval.vote'> {
248
+ }
249
+
158
250
  /** `audit.event` (owner: base). */
159
251
  export interface AuditEvent {
160
252
  readonly name: 'audit.event';
@@ -678,6 +770,7 @@ export interface ProductCategory {
678
770
  readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
679
771
  readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
680
772
  readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
773
+ readonly active: F.Bool<{ readonly required: true; readonly default: true }>;
681
774
  readonly name: F.Char<{ readonly required: true; readonly translate: true }>;
682
775
  readonly parent: F.Many2one<'product.category'>;
683
776
  };
@@ -2354,6 +2354,7 @@ export declare const tradeFinancePurchaseShutro: import("../server/orm.js").Modu
2354
2354
  readonly to: "to_approve";
2355
2355
  readonly guard: (records: never) => unknown;
2356
2356
  readonly message: "Add at least one line before submitting the order.";
2357
+ readonly before: (records: never) => unknown;
2357
2358
  readonly after: (records: never) => unknown;
2358
2359
  };
2359
2360
  readonly confirm: {
@@ -2391,7 +2392,9 @@ export declare const tradeFinancePurchaseShutro: import("../server/orm.js").Modu
2391
2392
  hasDefault: true;
2392
2393
  sequence: false;
2393
2394
  }>;
2394
- }, {} & import("../server/orm.js").TransitionMethods<{
2395
+ }, {
2396
+ readonly submitting: (this: unknown) => Promise<undefined>;
2397
+ } & import("../server/orm.js").TransitionMethods<{
2395
2398
  readonly name: import("../server/orm.js").CharField<{
2396
2399
  readonly required: true;
2397
2400
  readonly computed: false;
@@ -2532,6 +2535,7 @@ export declare const tradeFinancePurchaseShutro: import("../server/orm.js").Modu
2532
2535
  readonly to: "to_approve";
2533
2536
  readonly guard: (records: never) => unknown;
2534
2537
  readonly message: "Add at least one line before submitting the order.";
2538
+ readonly before: (records: never) => unknown;
2535
2539
  readonly after: (records: never) => unknown;
2536
2540
  };
2537
2541
  readonly confirm: {
@@ -3587,6 +3591,7 @@ export declare const tradeFinancePurchaseShutro: import("../server/orm.js").Modu
3587
3591
  hasDefault: false;
3588
3592
  sequence: false;
3589
3593
  }>;
3594
+ readonly active: import("../server/orm.js").ActiveField;
3590
3595
  readonly name: import("../server/orm.js").CharField<{
3591
3596
  readonly required: true;
3592
3597
  readonly computed: false;
@@ -1,4 +1,4 @@
1
- // GENERATED by `pnpm generate:models` (Shutro’s generator). Do not edit. definitions-hash: 59fb853d1bb49954
1
+ // GENERATED by `pnpm generate:models` (Shutro’s generator). Do not edit. definitions-hash: 6aa201c2af7a099c
2
2
  // Bindings of module `trade_finance_sale`: import the definition API from here to get types scoped to what it can see.
3
3
  export { defineModel, defineModule, extendModel, f, replace } from '../../server/orm.js';
4
4
  import { definitions } from '../../server/orm.js';