shutro-erp 0.3.4 → 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 (618) 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 +176 -6
  27. package/dist/account_portal/module.d.ts +505 -6
  28. package/dist/accounting/.kosh/bindings.js +1 -1
  29. package/dist/accounting/.kosh/schema.d.ts +176 -6
  30. package/dist/accounting/index.d.ts +1 -1
  31. package/dist/accounting/index.js +344 -4
  32. package/dist/accounting/module.d.ts +513 -5
  33. package/dist/accounting/module.js +55 -3
  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/calendar/.kosh/bindings.d.ts +22 -0
  79. package/dist/calendar/.kosh/bindings.js +15 -0
  80. package/dist/calendar/.kosh/schema.d.ts +795 -0
  81. package/dist/calendar/demo.d.ts +6 -0
  82. package/dist/calendar/demo.js +24 -0
  83. package/dist/calendar/index.d.ts +3 -0
  84. package/dist/calendar/index.js +291 -0
  85. package/dist/calendar/module.d.ts +1705 -0
  86. package/dist/calendar/module.js +180 -0
  87. package/dist/cli/init.js +80 -0
  88. package/dist/cli/templates.d.ts +1 -1
  89. package/dist/cli/templates.js +226 -0
  90. package/dist/contacts/.kosh/bindings.js +1 -1
  91. package/dist/contacts/.kosh/schema.d.ts +78 -3
  92. package/dist/contacts/demo.js +30 -1
  93. package/dist/contacts/index.d.ts +1 -1
  94. package/dist/contacts/index.js +155 -9
  95. package/dist/contacts/module.d.ts +338 -2
  96. package/dist/contacts/module.js +93 -5
  97. package/dist/crm/.kosh/bindings.d.ts +22 -0
  98. package/dist/crm/.kosh/bindings.js +15 -0
  99. package/dist/crm/.kosh/schema.d.ts +800 -0
  100. package/dist/crm/demo.d.ts +6 -0
  101. package/dist/crm/demo.js +45 -0
  102. package/dist/crm/index.d.ts +3 -0
  103. package/dist/crm/index.js +361 -0
  104. package/dist/crm/module.d.ts +1845 -0
  105. package/dist/crm/module.js +208 -0
  106. package/dist/documents/.kosh/bindings.d.ts +22 -0
  107. package/dist/documents/.kosh/bindings.js +15 -0
  108. package/dist/documents/.kosh/schema.d.ts +862 -0
  109. package/dist/documents/demo.d.ts +6 -0
  110. package/dist/documents/demo.js +22 -0
  111. package/dist/documents/documents.d.ts +98 -0
  112. package/dist/documents/documents.js +318 -0
  113. package/dist/documents/index.d.ts +30 -0
  114. package/dist/documents/index.js +442 -0
  115. package/dist/documents/module.d.ts +2781 -0
  116. package/dist/documents/module.js +214 -0
  117. package/dist/documents/web/Versions.d.ts +7 -0
  118. package/dist/documents/web/Versions.js +45 -0
  119. package/dist/documents/web/index.d.ts +11 -0
  120. package/dist/documents/web/index.js +16 -0
  121. package/dist/documents/web/messages.d.ts +2 -0
  122. package/dist/documents/web/messages.js +21 -0
  123. package/dist/event/.kosh/bindings.d.ts +22 -0
  124. package/dist/event/.kosh/bindings.js +15 -0
  125. package/dist/event/.kosh/schema.d.ts +843 -0
  126. package/dist/event/demo.d.ts +6 -0
  127. package/dist/event/demo.js +65 -0
  128. package/dist/event/index.d.ts +14 -0
  129. package/dist/event/index.js +333 -0
  130. package/dist/event/mails.d.ts +15 -0
  131. package/dist/event/mails.js +112 -0
  132. package/dist/event/module.d.ts +2800 -0
  133. package/dist/event/module.js +323 -0
  134. package/dist/event/web/CheckInBox.d.ts +9 -0
  135. package/dist/event/web/CheckInBox.js +87 -0
  136. package/dist/event/web/index.d.ts +11 -0
  137. package/dist/event/web/index.js +16 -0
  138. package/dist/event/web/messages.d.ts +2 -0
  139. package/dist/event/web/messages.js +23 -0
  140. package/dist/event_account/.kosh/bindings.d.ts +22 -0
  141. package/dist/event_account/.kosh/bindings.js +15 -0
  142. package/dist/event_account/.kosh/schema.d.ts +1758 -0
  143. package/dist/event_account/index.d.ts +3 -0
  144. package/dist/event_account/index.js +28 -0
  145. package/dist/event_account/module.d.ts +7114 -0
  146. package/dist/event_account/module.js +90 -0
  147. package/dist/expense/.kosh/bindings.d.ts +22 -0
  148. package/dist/expense/.kosh/bindings.js +15 -0
  149. package/dist/expense/.kosh/schema.d.ts +1299 -0
  150. package/dist/expense/demo.d.ts +7 -0
  151. package/dist/expense/demo.js +69 -0
  152. package/dist/expense/index.d.ts +3 -0
  153. package/dist/expense/index.js +495 -0
  154. package/dist/expense/module.d.ts +4747 -0
  155. package/dist/expense/module.js +647 -0
  156. package/dist/expense_account/.kosh/bindings.d.ts +22 -0
  157. package/dist/expense_account/.kosh/bindings.js +15 -0
  158. package/dist/expense_account/.kosh/schema.d.ts +1936 -0
  159. package/dist/expense_account/index.d.ts +3 -0
  160. package/dist/expense_account/index.js +74 -0
  161. package/dist/expense_account/module.d.ts +9153 -0
  162. package/dist/expense_account/module.js +318 -0
  163. package/dist/helpdesk/.kosh/bindings.d.ts +22 -0
  164. package/dist/helpdesk/.kosh/bindings.js +15 -0
  165. package/dist/helpdesk/.kosh/schema.d.ts +885 -0
  166. package/dist/helpdesk/demo.d.ts +7 -0
  167. package/dist/helpdesk/demo.js +65 -0
  168. package/dist/helpdesk/hours.d.ts +17 -0
  169. package/dist/helpdesk/hours.js +94 -0
  170. package/dist/helpdesk/index.d.ts +10 -0
  171. package/dist/helpdesk/index.js +461 -0
  172. package/dist/helpdesk/module.d.ts +2940 -0
  173. package/dist/helpdesk/module.js +326 -0
  174. package/dist/helpdesk/routes.d.ts +12 -0
  175. package/dist/helpdesk/routes.js +132 -0
  176. package/dist/helpdesk/sla.d.ts +37 -0
  177. package/dist/helpdesk/sla.js +226 -0
  178. package/dist/hr/.kosh/bindings.d.ts +22 -0
  179. package/dist/hr/.kosh/bindings.js +15 -0
  180. package/dist/hr/.kosh/schema.d.ts +878 -0
  181. package/dist/hr/demo.d.ts +6 -0
  182. package/dist/hr/demo.js +60 -0
  183. package/dist/hr/index.d.ts +3 -0
  184. package/dist/hr/index.js +483 -0
  185. package/dist/hr/module.d.ts +2611 -0
  186. package/dist/hr/module.js +350 -0
  187. package/dist/l10n_bd/.kosh/bindings.js +1 -1
  188. package/dist/l10n_bd/.kosh/schema.d.ts +176 -6
  189. package/dist/l10n_bd/module.d.ts +505 -6
  190. package/dist/l10n_bd_payroll/.kosh/bindings.d.ts +22 -0
  191. package/dist/l10n_bd_payroll/.kosh/bindings.js +15 -0
  192. package/dist/l10n_bd_payroll/.kosh/schema.d.ts +2312 -0
  193. package/dist/l10n_bd_payroll/data.d.ts +47 -0
  194. package/dist/l10n_bd_payroll/data.js +347 -0
  195. package/dist/l10n_bd_payroll/index.d.ts +4 -0
  196. package/dist/l10n_bd_payroll/index.js +24 -0
  197. package/dist/l10n_bd_payroll/module.d.ts +12932 -0
  198. package/dist/l10n_bd_payroll/module.js +86 -0
  199. package/dist/l10n_in/.kosh/bindings.js +1 -1
  200. package/dist/l10n_in/.kosh/schema.d.ts +176 -6
  201. package/dist/l10n_in/module.d.ts +527 -7
  202. package/dist/mail/inbound/handle.js +6 -1
  203. package/dist/maintenance/.kosh/bindings.d.ts +22 -0
  204. package/dist/maintenance/.kosh/bindings.js +15 -0
  205. package/dist/maintenance/.kosh/schema.d.ts +911 -0
  206. package/dist/maintenance/demo.d.ts +6 -0
  207. package/dist/maintenance/demo.js +60 -0
  208. package/dist/maintenance/index.d.ts +3 -0
  209. package/dist/maintenance/index.js +422 -0
  210. package/dist/maintenance/module.d.ts +3545 -0
  211. package/dist/maintenance/module.js +446 -0
  212. package/dist/maintenance_stock/.kosh/bindings.d.ts +22 -0
  213. package/dist/maintenance_stock/.kosh/bindings.js +15 -0
  214. package/dist/maintenance_stock/.kosh/schema.d.ts +1446 -0
  215. package/dist/maintenance_stock/index.d.ts +9 -0
  216. package/dist/maintenance_stock/index.js +52 -0
  217. package/dist/maintenance_stock/module.d.ts +7675 -0
  218. package/dist/maintenance_stock/module.js +192 -0
  219. package/dist/modules-sdk/index.d.ts +1 -1
  220. package/dist/modules-sdk/manifest.d.ts +109 -2
  221. package/dist/modules-sdk/manifest.js +35 -1
  222. package/dist/mrp/.kosh/bindings.d.ts +22 -0
  223. package/dist/mrp/.kosh/bindings.js +15 -0
  224. package/dist/mrp/.kosh/schema.d.ts +1453 -0
  225. package/dist/mrp/demo.d.ts +7 -0
  226. package/dist/mrp/demo.js +42 -0
  227. package/dist/mrp/index.d.ts +3 -0
  228. package/dist/mrp/index.js +393 -0
  229. package/dist/mrp/module.d.ts +9335 -0
  230. package/dist/mrp/module.js +757 -0
  231. package/dist/mrp_account/.kosh/bindings.d.ts +22 -0
  232. package/dist/mrp_account/.kosh/bindings.js +15 -0
  233. package/dist/mrp_account/.kosh/schema.d.ts +2299 -0
  234. package/dist/mrp_account/index.d.ts +3 -0
  235. package/dist/mrp_account/index.js +22 -0
  236. package/dist/mrp_account/module.d.ts +23151 -0
  237. package/dist/mrp_account/module.js +123 -0
  238. package/dist/payment/.kosh/bindings.js +1 -1
  239. package/dist/payment/.kosh/schema.d.ts +178 -7
  240. package/dist/payment/index.d.ts +41 -0
  241. package/dist/payment/index.js +131 -74
  242. package/dist/payment/module.d.ts +569 -12
  243. package/dist/payment/module.js +19 -3
  244. package/dist/payment/settle.js +10 -1
  245. package/dist/payroll/.kosh/bindings.d.ts +22 -0
  246. package/dist/payroll/.kosh/bindings.js +15 -0
  247. package/dist/payroll/.kosh/schema.d.ts +1390 -0
  248. package/dist/payroll/compute.d.ts +35 -0
  249. package/dist/payroll/compute.js +398 -0
  250. package/dist/payroll/demo.d.ts +55 -0
  251. package/dist/payroll/demo.js +121 -0
  252. package/dist/payroll/formula.d.ts +62 -0
  253. package/dist/payroll/formula.js +320 -0
  254. package/dist/payroll/index.d.ts +230 -0
  255. package/dist/payroll/index.js +713 -0
  256. package/dist/payroll/module.d.ts +9390 -0
  257. package/dist/payroll/module.js +606 -0
  258. package/dist/payroll/routes.d.ts +10 -0
  259. package/dist/payroll/routes.js +112 -0
  260. package/dist/payroll_account/.kosh/bindings.d.ts +22 -0
  261. package/dist/payroll_account/.kosh/bindings.js +15 -0
  262. package/dist/payroll_account/.kosh/schema.d.ts +2308 -0
  263. package/dist/payroll_account/index.d.ts +3 -0
  264. package/dist/payroll_account/index.js +40 -0
  265. package/dist/payroll_account/module.d.ts +12396 -0
  266. package/dist/payroll_account/module.js +256 -0
  267. package/dist/permissions/approvals.d.ts +131 -9
  268. package/dist/permissions/approvals.js +662 -57
  269. package/dist/permissions/index.d.ts +1 -1
  270. package/dist/permissions/index.js +2 -2
  271. package/dist/permissions/models.js +191 -12
  272. package/dist/permissions/routes.d.ts +6 -1
  273. package/dist/permissions/routes.js +37 -4
  274. package/dist/permissions/web/ApprovalPanel.d.ts +5 -4
  275. package/dist/permissions/web/ApprovalPanel.js +39 -13
  276. package/dist/permissions/web/index.d.ts +6 -4
  277. package/dist/permissions/web/index.js +13 -4
  278. package/dist/permissions/web/messages.d.ts +2 -0
  279. package/dist/permissions/web/messages.js +43 -0
  280. package/dist/portal/.kosh/bindings.js +1 -1
  281. package/dist/portal/.kosh/schema.d.ts +78 -3
  282. package/dist/portal/index.js +1 -1
  283. package/dist/portal/module.d.ts +166 -2
  284. package/dist/pos/.kosh/bindings.d.ts +22 -0
  285. package/dist/pos/.kosh/bindings.js +15 -0
  286. package/dist/pos/.kosh/schema.d.ts +1809 -0
  287. package/dist/pos/accounting.d.ts +10 -0
  288. package/dist/pos/accounting.js +149 -0
  289. package/dist/pos/demo.d.ts +6 -0
  290. package/dist/pos/demo.js +90 -0
  291. package/dist/pos/index.d.ts +9 -0
  292. package/dist/pos/index.js +353 -0
  293. package/dist/pos/module.d.ts +9783 -0
  294. package/dist/pos/module.js +423 -0
  295. package/dist/pos/routes.d.ts +39 -0
  296. package/dist/pos/routes.js +368 -0
  297. package/dist/pos/web/Register.d.ts +9 -0
  298. package/dist/pos/web/Register.js +252 -0
  299. package/dist/pos/web/index.d.ts +11 -0
  300. package/dist/pos/web/index.js +16 -0
  301. package/dist/pos/web/messages.d.ts +2 -0
  302. package/dist/pos/web/messages.js +87 -0
  303. package/dist/pos_stock/.kosh/bindings.d.ts +22 -0
  304. package/dist/pos_stock/.kosh/bindings.js +15 -0
  305. package/dist/pos_stock/.kosh/schema.d.ts +2208 -0
  306. package/dist/pos_stock/index.d.ts +9 -0
  307. package/dist/pos_stock/index.js +35 -0
  308. package/dist/pos_stock/module.d.ts +12803 -0
  309. package/dist/pos_stock/module.js +115 -0
  310. package/dist/product/.kosh/bindings.js +1 -1
  311. package/dist/product/.kosh/schema.d.ts +52 -1
  312. package/dist/product/index.js +94 -4
  313. package/dist/product/module.d.ts +45 -1
  314. package/dist/product/module.js +11 -3
  315. package/dist/project/.kosh/bindings.js +1 -1
  316. package/dist/project/.kosh/schema.d.ts +725 -3
  317. package/dist/project/index.d.ts +3 -1
  318. package/dist/project/index.js +1045 -18
  319. package/dist/project/module.d.ts +10168 -458
  320. package/dist/project/module.js +1578 -14
  321. package/dist/project/routes.d.ts +44 -0
  322. package/dist/project/routes.js +314 -0
  323. package/dist/project/schedule.d.ts +72 -0
  324. package/dist/project/schedule.js +192 -0
  325. package/dist/project/web/Refresh.d.ts +8 -0
  326. package/dist/project/web/Refresh.js +29 -0
  327. package/dist/project/web/Schedule.d.ts +9 -0
  328. package/dist/project/web/Schedule.js +93 -0
  329. package/dist/project/web/Structure.d.ts +8 -0
  330. package/dist/project/web/Structure.js +86 -0
  331. package/dist/project/web/Workload.d.ts +8 -0
  332. package/dist/project/web/Workload.js +43 -0
  333. package/dist/project/web/index.d.ts +14 -0
  334. package/dist/project/web/index.js +25 -0
  335. package/dist/project/web/messages.d.ts +2 -0
  336. package/dist/project/web/messages.js +85 -0
  337. package/dist/project_account/.kosh/bindings.d.ts +22 -0
  338. package/dist/project_account/.kosh/bindings.js +15 -0
  339. package/dist/project_account/.kosh/schema.d.ts +2241 -0
  340. package/dist/project_account/index.d.ts +3 -0
  341. package/dist/project_account/index.js +27 -0
  342. package/dist/project_account/module.d.ts +11539 -0
  343. package/dist/project_account/module.js +76 -0
  344. package/dist/project_portal/.kosh/bindings.js +1 -1
  345. package/dist/project_portal/.kosh/schema.d.ts +725 -3
  346. package/dist/project_portal/module.d.ts +5137 -119
  347. package/dist/project_purchase/.kosh/bindings.d.ts +22 -0
  348. package/dist/project_purchase/.kosh/bindings.js +15 -0
  349. package/dist/project_purchase/.kosh/schema.d.ts +2320 -0
  350. package/dist/project_purchase/index.d.ts +9 -0
  351. package/dist/project_purchase/index.js +22 -0
  352. package/dist/project_purchase/module.d.ts +25147 -0
  353. package/dist/project_purchase/module.js +56 -0
  354. package/dist/purchase/.kosh/bindings.js +1 -1
  355. package/dist/purchase/.kosh/schema.d.ts +150 -6
  356. package/dist/purchase/index.js +163 -3
  357. package/dist/purchase/module.d.ts +228 -5
  358. package/dist/purchase/module.js +30 -3
  359. package/dist/purchase_account/.kosh/bindings.js +1 -1
  360. package/dist/purchase_account/.kosh/schema.d.ts +180 -8
  361. package/dist/purchase_account/index.js +27 -1
  362. package/dist/purchase_account/module.d.ts +591 -30
  363. package/dist/purchase_account/module.js +13 -2
  364. package/dist/purchase_portal/.kosh/bindings.js +1 -1
  365. package/dist/purchase_portal/.kosh/schema.d.ts +150 -6
  366. package/dist/purchase_portal/module.d.ts +372 -6
  367. package/dist/purchase_stock/.kosh/bindings.d.ts +22 -0
  368. package/dist/purchase_stock/.kosh/bindings.js +15 -0
  369. package/dist/purchase_stock/.kosh/schema.d.ts +1479 -0
  370. package/dist/purchase_stock/index.d.ts +7 -0
  371. package/dist/purchase_stock/index.js +98 -0
  372. package/dist/purchase_stock/module.d.ts +7535 -0
  373. package/dist/purchase_stock/module.js +380 -0
  374. package/dist/purchase_stock_account/.kosh/bindings.d.ts +22 -0
  375. package/dist/purchase_stock_account/.kosh/bindings.js +15 -0
  376. package/dist/purchase_stock_account/.kosh/schema.d.ts +2155 -0
  377. package/dist/purchase_stock_account/index.d.ts +3 -0
  378. package/dist/purchase_stock_account/index.js +24 -0
  379. package/dist/purchase_stock_account/module.d.ts +38015 -0
  380. package/dist/purchase_stock_account/module.js +168 -0
  381. package/dist/recruitment/.kosh/bindings.d.ts +22 -0
  382. package/dist/recruitment/.kosh/bindings.js +15 -0
  383. package/dist/recruitment/.kosh/schema.d.ts +991 -0
  384. package/dist/recruitment/demo.d.ts +6 -0
  385. package/dist/recruitment/demo.js +45 -0
  386. package/dist/recruitment/index.d.ts +3 -0
  387. package/dist/recruitment/index.js +385 -0
  388. package/dist/recruitment/module.d.ts +3249 -0
  389. package/dist/recruitment/module.js +194 -0
  390. package/dist/recruitment/web/HireButton.d.ts +9 -0
  391. package/dist/recruitment/web/HireButton.js +32 -0
  392. package/dist/recruitment/web/index.d.ts +11 -0
  393. package/dist/recruitment/web/index.js +16 -0
  394. package/dist/recruitment/web/messages.d.ts +2 -0
  395. package/dist/recruitment/web/messages.js +19 -0
  396. package/dist/reporting/documents.d.ts +5 -0
  397. package/dist/reporting/documents.js +28 -1
  398. package/dist/reporting/index.d.ts +1 -1
  399. package/dist/reporting/index.js +4 -2
  400. package/dist/reporting/models.js +9 -0
  401. package/dist/reporting/overviews.d.ts +16 -0
  402. package/dist/reporting/overviews.js +56 -0
  403. package/dist/reporting/routes-documents.js +1 -1
  404. package/dist/reporting/routes.js +138 -80
  405. package/dist/reporting/web/DashboardView.d.ts +11 -0
  406. package/dist/reporting/web/DashboardView.js +2 -2
  407. package/dist/reporting/web/DesignerView.js +5 -0
  408. package/dist/reporting/web/Overview.d.ts +9 -0
  409. package/dist/reporting/web/Overview.js +53 -0
  410. package/dist/reporting/web/index.d.ts +1 -0
  411. package/dist/reporting/web/index.js +4 -1
  412. package/dist/reporting/web/messages.js +9 -0
  413. package/dist/sale_account/.kosh/bindings.js +1 -1
  414. package/dist/sale_account/.kosh/schema.d.ts +181 -6
  415. package/dist/sale_account/index.js +22 -1
  416. package/dist/sale_account/module.d.ts +639 -38
  417. package/dist/sale_portal/.kosh/bindings.js +1 -1
  418. package/dist/sale_portal/.kosh/schema.d.ts +59 -3
  419. package/dist/sale_portal/module.d.ts +435 -5
  420. package/dist/sale_project/.kosh/bindings.js +1 -1
  421. package/dist/sale_project/.kosh/schema.d.ts +732 -3
  422. package/dist/sale_project/module.d.ts +5349 -208
  423. package/dist/sale_project/module.js +17 -1
  424. package/dist/sale_stock/.kosh/bindings.d.ts +22 -0
  425. package/dist/sale_stock/.kosh/bindings.js +15 -0
  426. package/dist/sale_stock/.kosh/schema.d.ts +1303 -0
  427. package/dist/sale_stock/index.d.ts +7 -0
  428. package/dist/sale_stock/index.js +84 -0
  429. package/dist/sale_stock/module.d.ts +7514 -0
  430. package/dist/sale_stock/module.js +146 -0
  431. package/dist/sales/.kosh/bindings.js +1 -1
  432. package/dist/sales/.kosh/schema.d.ts +59 -3
  433. package/dist/sales/index.js +195 -4
  434. package/dist/sales/module.d.ts +356 -3
  435. package/dist/sales/module.js +78 -3
  436. package/dist/server/api/metadata.d.ts +5 -0
  437. package/dist/server/api/metadata.js +5 -0
  438. package/dist/server/api/rest.js +64 -1
  439. package/dist/server/api/views.js +1 -0
  440. package/dist/server/app-settings.d.ts +7 -0
  441. package/dist/server/app-settings.js +10 -0
  442. package/dist/server/auth/base.js +9 -0
  443. package/dist/server/index.d.ts +1 -0
  444. package/dist/server/index.js +1 -0
  445. package/dist/settings/app-settings.d.ts +2 -0
  446. package/dist/settings/app-settings.js +518 -0
  447. package/dist/settings/index.d.ts +1 -0
  448. package/dist/settings/index.js +15 -0
  449. package/dist/settings/people.js +29 -5
  450. package/dist/settings/web/AppSettingsPage.d.ts +11 -0
  451. package/dist/settings/web/AppSettingsPage.js +210 -0
  452. package/dist/settings/web/OverviewPage.js +16 -3
  453. package/dist/settings/web/PeoplePage.js +20 -6
  454. package/dist/settings/web/index.d.ts +1 -0
  455. package/dist/settings/web/index.js +3 -0
  456. package/dist/settings/web/messages.js +118 -2
  457. package/dist/sign/.kosh/bindings.d.ts +22 -0
  458. package/dist/sign/.kosh/bindings.js +15 -0
  459. package/dist/sign/.kosh/schema.d.ts +990 -0
  460. package/dist/sign/index.d.ts +14 -0
  461. package/dist/sign/index.js +350 -0
  462. package/dist/sign/module.d.ts +4478 -0
  463. package/dist/sign/module.js +158 -0
  464. package/dist/sign/sign.d.ts +82 -0
  465. package/dist/sign/sign.js +474 -0
  466. package/dist/stock/.kosh/bindings.d.ts +22 -0
  467. package/dist/stock/.kosh/bindings.js +15 -0
  468. package/dist/stock/.kosh/schema.d.ts +1222 -0
  469. package/dist/stock/demo.d.ts +8 -0
  470. package/dist/stock/demo.js +82 -0
  471. package/dist/stock/index.d.ts +4 -0
  472. package/dist/stock/index.js +903 -0
  473. package/dist/stock/module.d.ts +7856 -0
  474. package/dist/stock/module.js +1880 -0
  475. package/dist/stock/replenish.d.ts +38 -0
  476. package/dist/stock/replenish.js +176 -0
  477. package/dist/stock/web/Replenishment.d.ts +8 -0
  478. package/dist/stock/web/Replenishment.js +84 -0
  479. package/dist/stock/web/ScanBox.d.ts +8 -0
  480. package/dist/stock/web/ScanBox.js +90 -0
  481. package/dist/stock/web/index.d.ts +13 -0
  482. package/dist/stock/web/index.js +20 -0
  483. package/dist/stock/web/messages.d.ts +2 -0
  484. package/dist/stock/web/messages.js +77 -0
  485. package/dist/stock_account/.kosh/bindings.d.ts +22 -0
  486. package/dist/stock_account/.kosh/bindings.js +15 -0
  487. package/dist/stock_account/.kosh/schema.d.ts +2068 -0
  488. package/dist/stock_account/index.d.ts +3 -0
  489. package/dist/stock_account/index.js +140 -0
  490. package/dist/stock_account/module.d.ts +11523 -0
  491. package/dist/stock_account/module.js +339 -0
  492. package/dist/storage/attachments.d.ts +5 -0
  493. package/dist/storage/attachments.js +12 -1
  494. package/dist/storage/models.js +3 -0
  495. package/dist/storage/routes.js +13 -2
  496. package/dist/todo/.kosh/bindings.d.ts +22 -0
  497. package/dist/todo/.kosh/bindings.js +15 -0
  498. package/dist/todo/.kosh/schema.d.ts +732 -0
  499. package/dist/todo/demo.d.ts +6 -0
  500. package/dist/todo/demo.js +35 -0
  501. package/dist/todo/index.d.ts +3 -0
  502. package/dist/todo/index.js +187 -0
  503. package/dist/todo/module.d.ts +1180 -0
  504. package/dist/todo/module.js +130 -0
  505. package/dist/trade_finance/.kosh/bindings.d.ts +22 -0
  506. package/dist/trade_finance/.kosh/bindings.js +15 -0
  507. package/dist/trade_finance/.kosh/schema.d.ts +884 -0
  508. package/dist/trade_finance/demo.d.ts +6 -0
  509. package/dist/trade_finance/demo.js +63 -0
  510. package/dist/trade_finance/index.d.ts +3 -0
  511. package/dist/trade_finance/index.js +415 -0
  512. package/dist/trade_finance/module.d.ts +3779 -0
  513. package/dist/trade_finance/module.js +507 -0
  514. package/dist/trade_finance_account/.kosh/bindings.d.ts +22 -0
  515. package/dist/trade_finance_account/.kosh/bindings.js +15 -0
  516. package/dist/trade_finance_account/.kosh/schema.d.ts +1830 -0
  517. package/dist/trade_finance_account/index.d.ts +3 -0
  518. package/dist/trade_finance_account/index.js +93 -0
  519. package/dist/trade_finance_account/module.d.ts +8074 -0
  520. package/dist/trade_finance_account/module.js +245 -0
  521. package/dist/trade_finance_purchase/.kosh/bindings.d.ts +22 -0
  522. package/dist/trade_finance_purchase/.kosh/bindings.js +15 -0
  523. package/dist/trade_finance_purchase/.kosh/schema.d.ts +1246 -0
  524. package/dist/trade_finance_purchase/index.d.ts +8 -0
  525. package/dist/trade_finance_purchase/index.js +50 -0
  526. package/dist/trade_finance_purchase/module.d.ts +4257 -0
  527. package/dist/trade_finance_purchase/module.js +44 -0
  528. package/dist/trade_finance_sale/.kosh/bindings.d.ts +22 -0
  529. package/dist/trade_finance_sale/.kosh/bindings.js +15 -0
  530. package/dist/trade_finance_sale/.kosh/schema.d.ts +1072 -0
  531. package/dist/trade_finance_sale/index.d.ts +8 -0
  532. package/dist/trade_finance_sale/index.js +50 -0
  533. package/dist/trade_finance_sale/module.d.ts +4281 -0
  534. package/dist/trade_finance_sale/module.js +44 -0
  535. package/dist/ui/api.d.ts +2 -1
  536. package/dist/ui/api.js +2 -1
  537. package/dist/ui/app.js +26 -13
  538. package/dist/ui/components/AppIcon.js +30 -1
  539. package/dist/ui/components/primitives.d.ts +2 -0
  540. package/dist/ui/components/primitives.js +7 -1
  541. package/dist/ui/i18n/messages.d.ts +27 -0
  542. package/dist/ui/i18n/messages.js +46 -0
  543. package/dist/ui/index.d.ts +1 -0
  544. package/dist/ui/index.js +1 -0
  545. package/dist/ui/offline/queue.d.ts +5 -1
  546. package/dist/ui/offline/queue.js +2 -0
  547. package/dist/ui/registry.d.ts +5 -0
  548. package/dist/ui/shell/Home.js +55 -4
  549. package/dist/ui/views/FormView.js +102 -19
  550. package/dist/ui/views/KanbanView.d.ts +2 -0
  551. package/dist/ui/views/KanbanView.js +40 -3
  552. package/dist/ui/views/ListView.js +110 -11
  553. package/dist/ui/views/StatsRow.d.ts +14 -0
  554. package/dist/ui/views/StatsRow.js +88 -0
  555. package/dist/ui/views/widgets.d.ts +2 -1
  556. package/dist/ui/views/widgets.js +200 -1
  557. package/dist/views/builders.d.ts +19 -2
  558. package/dist/views/builders.js +21 -1
  559. package/dist/views/condition.d.ts +6 -0
  560. package/dist/views/condition.js +20 -0
  561. package/dist/views/documents.d.ts +8 -0
  562. package/dist/views/extend.d.ts +2 -2
  563. package/dist/views/extend.js +11 -1
  564. package/dist/views/index.d.ts +2 -2
  565. package/dist/views/index.js +2 -2
  566. package/dist/views/types.d.ts +52 -5
  567. package/dist/views/validate.js +39 -1
  568. package/dist/website/.kosh/bindings.d.ts +22 -0
  569. package/dist/website/.kosh/bindings.js +15 -0
  570. package/dist/website/.kosh/schema.d.ts +881 -0
  571. package/dist/website/demo.d.ts +6 -0
  572. package/dist/website/demo.js +115 -0
  573. package/dist/website/index.d.ts +9 -0
  574. package/dist/website/index.js +251 -0
  575. package/dist/website/module.d.ts +2987 -0
  576. package/dist/website/module.js +282 -0
  577. package/dist/website/render.d.ts +45 -0
  578. package/dist/website/render.js +102 -0
  579. package/dist/website/routes.d.ts +12 -0
  580. package/dist/website/routes.js +246 -0
  581. package/dist/website/web/PagePreview.d.ts +7 -0
  582. package/dist/website/web/PagePreview.js +33 -0
  583. package/dist/website/web/index.d.ts +11 -0
  584. package/dist/website/web/index.js +16 -0
  585. package/dist/website/web/messages.d.ts +2 -0
  586. package/dist/website/web/messages.js +15 -0
  587. package/dist/website_crm/.kosh/bindings.d.ts +22 -0
  588. package/dist/website_crm/.kosh/bindings.js +15 -0
  589. package/dist/website_crm/.kosh/schema.d.ts +967 -0
  590. package/dist/website_crm/index.d.ts +3 -0
  591. package/dist/website_crm/index.js +39 -0
  592. package/dist/website_crm/module.d.ts +2956 -0
  593. package/dist/website_crm/module.js +44 -0
  594. package/dist/website_sale/.kosh/bindings.d.ts +22 -0
  595. package/dist/website_sale/.kosh/bindings.js +15 -0
  596. package/dist/website_sale/.kosh/schema.d.ts +2284 -0
  597. package/dist/website_sale/couriers.d.ts +50 -0
  598. package/dist/website_sale/couriers.js +59 -0
  599. package/dist/website_sale/demo.d.ts +7 -0
  600. package/dist/website_sale/demo.js +90 -0
  601. package/dist/website_sale/growth.d.ts +31 -0
  602. package/dist/website_sale/growth.js +163 -0
  603. package/dist/website_sale/index.d.ts +49 -0
  604. package/dist/website_sale/index.js +538 -0
  605. package/dist/website_sale/module.d.ts +22027 -0
  606. package/dist/website_sale/module.js +397 -0
  607. package/dist/website_sale/shipments.d.ts +16 -0
  608. package/dist/website_sale/shipments.js +113 -0
  609. package/dist/website_sale/shop.d.ts +81 -0
  610. package/dist/website_sale/shop.js +649 -0
  611. package/dist/website_sale_stock/.kosh/bindings.d.ts +22 -0
  612. package/dist/website_sale_stock/.kosh/bindings.js +15 -0
  613. package/dist/website_sale_stock/.kosh/schema.d.ts +2681 -0
  614. package/dist/website_sale_stock/index.d.ts +9 -0
  615. package/dist/website_sale_stock/index.js +20 -0
  616. package/dist/website_sale_stock/module.d.ts +24998 -0
  617. package/dist/website_sale_stock/module.js +28 -0
  618. package/package.json +200 -2
@@ -0,0 +1,56 @@
1
+ /**
2
+ * The data layer of the Projects ↔ Purchase bridge (RFC 0026 step 4): the untaxed lines of confirmed purchase orders
3
+ * on a project's cost centre that are not billed yet are its **committed costs**; once billed and posted they are
4
+ * booked instead (`project_account`), so nothing counts twice.
5
+ */
6
+ import { projectShutro } from '../project/index.js';
7
+ import { projectAccountShutro } from '../project_account/index.js';
8
+ import { purchaseAccountShutro } from '../purchase_account/index.js';
9
+ import { orm } from '../server/orm.js';
10
+ import { defineModule, extendModel } from './.kosh/bindings.js';
11
+ const ZERO = orm.toDecimal(0);
12
+ export const ProjectCommitted = extendModel('project.project', {
13
+ overrides: {
14
+ moneyOf: async function (next) {
15
+ // After project_account's: the cost centres exist.
16
+ const out = await next();
17
+ const projects = this;
18
+ const env = projects.env;
19
+ for (const p of await projects.load({ analytic: true })) {
20
+ if (p.analytic === null)
21
+ continue;
22
+ const lines = await env
23
+ .model('purchase.order.line')
24
+ .search({
25
+ where: {
26
+ analytic: p.analytic.id,
27
+ 'order.state': { in: ['purchase', 'done'] },
28
+ 'order.billState': { ne: 'billed' },
29
+ },
30
+ })
31
+ .then((r) => r.load(['subtotal']));
32
+ const committed = [...lines].reduce((s, l) => s.plus(l.subtotal?.amount ?? ZERO), ZERO);
33
+ const before = out.get(p.id) ?? { booked: '0', committed: '0' };
34
+ out.set(p.id, {
35
+ booked: before.booked,
36
+ committed: orm.toDecimal(before.committed).plus(committed).toFixed(2),
37
+ });
38
+ }
39
+ return out;
40
+ },
41
+ },
42
+ });
43
+ export const projectPurchaseShutro = defineModule({
44
+ name: 'project_purchase',
45
+ version: '0.1.0',
46
+ depends: [projectShutro, projectAccountShutro, purchaseAccountShutro],
47
+ groups: [
48
+ orm.defineGroup({
49
+ code: 'project_purchase.user',
50
+ label: 'Projects with their purchases',
51
+ implies: ['project_account.user', 'purchase.user'],
52
+ }),
53
+ ],
54
+ models: [],
55
+ extensions: [ProjectCommitted],
56
+ });
@@ -1,4 +1,4 @@
1
- // GENERATED by `pnpm generate:models` (Shutro’s generator). Do not edit. definitions-hash: f0906f628180e9a5
1
+ // GENERATED by `pnpm generate:models` (Shutro’s generator). Do not edit. definitions-hash: ca13902b51545168
2
2
  // Bindings of module `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: f0906f628180e9a5
1
+ // GENERATED by `pnpm generate:models` (Shutro’s generator). Do not edit. definitions-hash: ca13902b51545168
2
2
  // Schema view of module `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;
@@ -17,6 +20,7 @@ export interface SchemaView {
17
20
  readonly 'auth.user_group': AuthUserGroup;
18
21
  readonly 'kosh.image': KoshImage;
19
22
  readonly 'kosh.saved_view': KoshSavedView;
23
+ readonly 'kosh.setting': KoshSetting;
20
24
  readonly 'mail.activity': MailActivity;
21
25
  readonly 'mail.activity.type': MailActivityType;
22
26
  readonly 'mail.channel': MailChannel;
@@ -35,6 +39,7 @@ export interface SchemaView {
35
39
  readonly 'res.company': ResCompany;
36
40
  readonly 'res.currency': ResCurrency;
37
41
  readonly 'res.partner': ResPartner;
42
+ readonly 'res.partner.tag': ResPartnerTag;
38
43
  readonly 'res.users': ResUsers;
39
44
  readonly 'storage.attachment': StorageAttachment;
40
45
  readonly 'uom.uom': UomUom;
@@ -68,6 +73,29 @@ export interface AccountTax {
68
73
  export interface AccountTaxMethods extends F.Methods<typeof import('../../product/index.js').productShutro, 'account.tax'> {
69
74
  }
70
75
 
76
+ /** `approval.delegation` (owner: permissions). */
77
+ export interface ApprovalDelegation {
78
+ readonly name: 'approval.delegation';
79
+ readonly fields: {
80
+ readonly id: F.Id<'approval.delegation'>;
81
+ readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
82
+ readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
83
+ readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
84
+ readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
85
+ readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
86
+ readonly user: F.Many2one<'res.users', { readonly required: true; readonly default: true }>;
87
+ readonly delegate: F.Many2one<'res.users', { readonly required: true }>;
88
+ readonly dateFrom: F.DateOnly<{ readonly required: true }>;
89
+ readonly dateTo: F.DateOnly<{ readonly required: true }>;
90
+ readonly note: F.Char;
91
+ };
92
+ readonly methods: ApprovalDelegationMethods;
93
+ }
94
+
95
+ /** Methods of `approval.delegation`: declared ones and transitions. */
96
+ export interface ApprovalDelegationMethods extends F.Methods<typeof import('../../permissions/index.js').permissionsShutro, 'approval.delegation'> {
97
+ }
98
+
71
99
  /** `approval.level` (owner: permissions). */
72
100
  export interface ApprovalLevel {
73
101
  readonly name: 'approval.level';
@@ -82,7 +110,14 @@ export interface ApprovalLevel {
82
110
  readonly sequence: F.Integer<{ readonly default: true }>;
83
111
  readonly name: F.Char<{ readonly required: true }>;
84
112
  readonly condition: F.Json;
85
- readonly approverRole: F.Char<{ readonly required: true }>;
113
+ readonly approverKind: F.Selection<'role' | 'users' | 'manager' | 'field', { readonly required: true; readonly default: true }>;
114
+ readonly approverRole: F.Char;
115
+ readonly approverUsers: F.Many2many<'res.users', { readonly required: true }>;
116
+ readonly approverField: F.Char;
117
+ readonly quorum: F.Selection<'any' | 'all' | 'count', { readonly required: true; readonly default: true }>;
118
+ readonly quorumCount: F.Integer;
119
+ readonly deadlineHours: F.Integer;
120
+ readonly escalateRole: F.Char;
86
121
  };
87
122
  readonly methods: ApprovalLevelMethods;
88
123
  }
@@ -91,6 +126,29 @@ export interface ApprovalLevel {
91
126
  export interface ApprovalLevelMethods extends F.Methods<typeof import('../../permissions/index.js').permissionsShutro, 'approval.level'> {
92
127
  }
93
128
 
129
+ /** `approval.link` (owner: permissions). */
130
+ export interface ApprovalLink {
131
+ readonly name: 'approval.link';
132
+ readonly fields: {
133
+ readonly id: F.Id<'approval.link'>;
134
+ readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
135
+ readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
136
+ readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
137
+ readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
138
+ readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
139
+ readonly request: F.Many2one<'approval.request', { readonly required: true }>;
140
+ readonly user: F.Many2one<'res.users', { readonly required: true }>;
141
+ readonly tokenHash: F.Char<{ readonly required: true }>;
142
+ readonly expiresAt: F.Datetime<{ readonly required: true }>;
143
+ readonly usedAt: F.Datetime;
144
+ };
145
+ readonly methods: ApprovalLinkMethods;
146
+ }
147
+
148
+ /** Methods of `approval.link`: declared ones and transitions. */
149
+ export interface ApprovalLinkMethods extends F.Methods<typeof import('../../permissions/index.js').permissionsShutro, 'approval.link'> {
150
+ }
151
+
94
152
  /** `approval.policy` (owner: permissions). */
95
153
  export interface ApprovalPolicy {
96
154
  readonly name: 'approval.policy';
@@ -108,6 +166,9 @@ export interface ApprovalPolicy {
108
166
  readonly company: F.Many2one<'res.company'>;
109
167
  readonly onApproved: F.Char;
110
168
  readonly onRejected: F.Char;
169
+ readonly onSentBack: F.Char;
170
+ readonly onWithdrawn: F.Char;
171
+ readonly reasonRequired: F.Bool<{ readonly required: true; readonly default: true }>;
111
172
  readonly levels: F.One2many<'approval.level', { readonly required: true }>;
112
173
  };
113
174
  readonly methods: ApprovalPolicyMethods;
@@ -134,8 +195,16 @@ export interface ApprovalRequest {
134
195
  readonly targetModel: F.Char<{ readonly required: true }>;
135
196
  readonly targetId: F.Integer<{ readonly required: true }>;
136
197
  readonly company: F.Many2one<'res.company'>;
137
- readonly approverRole: F.Char<{ readonly required: true }>;
138
- readonly state: F.Selection<'pending' | 'approved' | 'rejected' | 'cancelled', { readonly required: true; readonly default: true }>;
198
+ readonly approverRole: F.Char;
199
+ readonly approvers: F.Many2many<'res.users', { readonly required: true }>;
200
+ readonly required: F.Integer<{ readonly required: true; readonly default: true }>;
201
+ readonly round: F.Integer<{ readonly required: true; readonly default: true }>;
202
+ readonly votes: F.One2many<'approval.vote', { readonly required: true }>;
203
+ readonly dueAt: F.Datetime;
204
+ readonly remindedAt: F.Datetime;
205
+ readonly escalatedTo: F.Char;
206
+ readonly escalatedAt: F.Datetime;
207
+ readonly state: F.Selection<'pending' | 'approved' | 'rejected' | 'sent_back' | 'cancelled', { readonly required: true; readonly default: true }>;
139
208
  readonly requestedBy: F.Many2one<'res.users'>;
140
209
  readonly decidedBy: F.Many2one<'res.users'>;
141
210
  readonly decidedAt: F.Datetime;
@@ -148,6 +217,31 @@ export interface ApprovalRequest {
148
217
  export interface ApprovalRequestMethods extends F.Methods<typeof import('../../permissions/index.js').permissionsShutro, 'approval.request'> {
149
218
  }
150
219
 
220
+ /** `approval.vote` (owner: permissions). */
221
+ export interface ApprovalVote {
222
+ readonly name: 'approval.vote';
223
+ readonly fields: {
224
+ readonly id: F.Id<'approval.vote'>;
225
+ readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
226
+ readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
227
+ readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
228
+ readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
229
+ readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
230
+ readonly request: F.Many2one<'approval.request', { readonly required: true }>;
231
+ readonly user: F.Many2one<'res.users', { readonly required: true }>;
232
+ readonly decision: F.Selection<'approve' | 'reject' | 'send_back', { readonly required: true }>;
233
+ readonly comment: F.Text;
234
+ readonly at: F.Datetime<{ readonly required: true }>;
235
+ readonly onBehalfOf: F.Many2one<'res.users'>;
236
+ readonly ip: F.Char;
237
+ };
238
+ readonly methods: ApprovalVoteMethods;
239
+ }
240
+
241
+ /** Methods of `approval.vote`: declared ones and transitions. */
242
+ export interface ApprovalVoteMethods extends F.Methods<typeof import('../../permissions/index.js').permissionsShutro, 'approval.vote'> {
243
+ }
244
+
151
245
  /** `audit.event` (owner: base). */
152
246
  export interface AuditEvent {
153
247
  readonly name: 'audit.event';
@@ -364,6 +458,26 @@ export interface KoshSavedView {
364
458
  export interface KoshSavedViewMethods extends F.Methods<typeof import('../../server/index.js').baseShutro, 'kosh.saved_view'> {
365
459
  }
366
460
 
461
+ /** `kosh.setting` (owner: base). */
462
+ export interface KoshSetting {
463
+ readonly name: 'kosh.setting';
464
+ readonly fields: {
465
+ readonly id: F.Id<'kosh.setting'>;
466
+ readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
467
+ readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
468
+ readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
469
+ readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
470
+ readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
471
+ readonly key: F.Char<{ readonly required: true }>;
472
+ readonly value: F.Json;
473
+ };
474
+ readonly methods: KoshSettingMethods;
475
+ }
476
+
477
+ /** Methods of `kosh.setting`: declared ones and transitions. */
478
+ export interface KoshSettingMethods extends F.Methods<typeof import('../../server/index.js').baseShutro, 'kosh.setting'> {
479
+ }
480
+
367
481
  /** `mail.activity` (owner: messaging). */
368
482
  export interface MailActivity {
369
483
  readonly name: 'mail.activity';
@@ -651,6 +765,7 @@ export interface ProductCategory {
651
765
  readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
652
766
  readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
653
767
  readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
768
+ readonly active: F.Bool<{ readonly required: true; readonly default: true }>;
654
769
  readonly name: F.Char<{ readonly required: true; readonly translate: true }>;
655
770
  readonly parent: F.Many2one<'product.category'>;
656
771
  };
@@ -678,6 +793,7 @@ export interface ProductProduct {
678
793
  readonly category: F.Many2one<'product.category'>;
679
794
  readonly uom: F.Many2one<'uom.uom'>;
680
795
  readonly barcode: F.Char;
796
+ readonly image: F.Many2one<'storage.attachment'>;
681
797
  readonly listPrice: F.Decimal<{ readonly required: true; readonly default: true }>;
682
798
  readonly standardPrice: F.Decimal<{ readonly required: true; readonly default: true }>;
683
799
  readonly saleOk: F.Bool<{ readonly required: true; readonly default: true }>;
@@ -766,7 +882,7 @@ export interface PurchaseOrderLine {
766
882
  export interface PurchaseOrderLineMethods extends F.Methods<typeof import('../module.js').purchaseShutro, 'purchase.order.line'> {
767
883
  }
768
884
 
769
- /** `res.company` (owner: base). */
885
+ /** `res.company` (owner: base; extended by: contacts, purchase). */
770
886
  export interface ResCompany {
771
887
  readonly name: 'res.company';
772
888
  readonly fields: {
@@ -786,12 +902,15 @@ export interface ResCompany {
786
902
  readonly email: F.Char;
787
903
  readonly phone: F.Char;
788
904
  readonly website: F.Char;
905
+ readonly contactTaxIdRequired: F.Bool<{ readonly required: true; readonly default: true }>; // contacts
906
+ readonly contactUniqueEmail: F.Bool<{ readonly required: true; readonly default: true }>; // contacts
907
+ readonly purchaseTerms: F.Text; // purchase
789
908
  };
790
909
  readonly methods: ResCompanyMethods;
791
910
  }
792
911
 
793
912
  /** Methods of `res.company`: declared ones and transitions. */
794
- export interface ResCompanyMethods extends F.Methods<typeof import('../../server/index.js').baseShutro, 'res.company'> {
913
+ export interface ResCompanyMethods extends F.Methods<typeof import('../../server/index.js').baseShutro, 'res.company'>, F.Methods<typeof import('../../contacts/index.js').contactsShutro, 'res.company'>, F.Methods<typeof import('../module.js').purchaseShutro, 'res.company'> {
795
914
  }
796
915
 
797
916
  /** `res.currency` (owner: base). */
@@ -828,6 +947,10 @@ export interface ResPartner {
828
947
  readonly active: F.Bool<{ readonly required: true; readonly default: true }>;
829
948
  readonly company: F.Many2one<'res.company', { readonly default: true }>;
830
949
  readonly name: F.Char<{ readonly required: true }>;
950
+ readonly image: F.Many2one<'storage.attachment'>;
951
+ readonly tags: F.Many2many<'res.partner.tag', { readonly required: true }>;
952
+ readonly latitude: F.Decimal;
953
+ readonly longitude: F.Decimal;
831
954
  readonly isCompany: F.Bool<{ readonly required: true; readonly default: true }>;
832
955
  readonly parent: F.Many2one<'res.partner'>;
833
956
  readonly contacts: F.One2many<'res.partner', { readonly required: true }>;
@@ -853,6 +976,25 @@ export interface ResPartner {
853
976
  export interface ResPartnerMethods extends F.Methods<typeof import('../../contacts/index.js').contactsShutro, 'res.partner'> {
854
977
  }
855
978
 
979
+ /** `res.partner.tag` (owner: contacts). */
980
+ export interface ResPartnerTag {
981
+ readonly name: 'res.partner.tag';
982
+ readonly fields: {
983
+ readonly id: F.Id<'res.partner.tag'>;
984
+ readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
985
+ readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
986
+ readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
987
+ readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
988
+ readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
989
+ readonly name: F.Char<{ readonly required: true }>;
990
+ };
991
+ readonly methods: ResPartnerTagMethods;
992
+ }
993
+
994
+ /** Methods of `res.partner.tag`: declared ones and transitions. */
995
+ export interface ResPartnerTagMethods extends F.Methods<typeof import('../../contacts/index.js').contactsShutro, 'res.partner.tag'> {
996
+ }
997
+
856
998
  /** `res.users` (owner: base). */
857
999
  export interface ResUsers {
858
1000
  readonly name: 'res.users';
@@ -898,6 +1040,8 @@ export interface StorageAttachment {
898
1040
  readonly key: F.Char<{ readonly required: true }>;
899
1041
  readonly resModel: F.Char<{ readonly required: true }>;
900
1042
  readonly resId: F.Integer<{ readonly required: true }>;
1043
+ readonly variantOf: F.Many2one<'storage.attachment'>;
1044
+ readonly width: F.Integer;
901
1045
  };
902
1046
  readonly methods: StorageAttachmentMethods;
903
1047
  }
@@ -9,7 +9,8 @@ import { messaging } from '../messaging/index.js';
9
9
  import { defineModule } from '../modules-sdk/index.js';
10
10
  import { permissions } from '../permissions/index.js';
11
11
  import { product } from '../product/index.js';
12
- import { action, form, kanban, list, search } from '../views/index.js';
12
+ import { reporting } from '../reporting/index.js';
13
+ import { action, calendar, form, kanban, list, search, stat } from '../views/index.js';
13
14
  import { purchaseDemo } from './demo.js';
14
15
  import { PurchaseOrder, purchaseShutro } from './module.js';
15
16
  export { PurchaseOrder, PurchaseOrderLine, purchaseShutro } from './module.js';
@@ -17,7 +18,14 @@ export const purchase = defineModule({
17
18
  shutro: purchaseShutro,
18
19
  kosh: '^0.1.0',
19
20
  hooks: { demo: purchaseDemo },
20
- depends: [contacts, product, messaging, permissions],
21
+ depends: [contacts, product, messaging, permissions, reporting],
22
+ events: [
23
+ {
24
+ topic: 'purchase.order.confirmed',
25
+ model: 'purchase.order',
26
+ label: 'Purchase order confirmed',
27
+ },
28
+ ],
21
29
  app: {
22
30
  code: 'purchase',
23
31
  label: 'Purchase',
@@ -31,6 +39,22 @@ export const purchase = defineModule({
31
39
  manager: { label: 'Manager (all orders)', groups: ['purchase.manager'], implies: ['user'] },
32
40
  director: { label: 'Director', groups: ['purchase.director'], implies: ['manager'] },
33
41
  },
42
+ // Settings › App settings › Purchase (RFC 0020): per company, changed by purchase managers.
43
+ settings: {
44
+ sections: [
45
+ {
46
+ key: 'orders',
47
+ label: 'Purchase orders',
48
+ description: 'The terms new requests for quotation and purchase orders start with.',
49
+ keywords: 'purchase order rfq terms conditions vendor',
50
+ scope: 'company',
51
+ editors: ['purchase.manager'],
52
+ fields: [
53
+ { key: 'purchaseTerms', help: 'Filled in on new orders; each can still be changed.' },
54
+ ],
55
+ },
56
+ ],
57
+ },
34
58
  approvals: [
35
59
  {
36
60
  name: 'Purchase approvals',
@@ -51,6 +75,134 @@ export const purchase = defineModule({
51
75
  ],
52
76
  },
53
77
  ],
78
+ // The Overview (RFC 0022 step 2): spend against last month, what waits, who we buy from.
79
+ overview: {
80
+ cards: [
81
+ {
82
+ id: 'spend_month',
83
+ title: 'Purchases this month',
84
+ kind: 'kpi',
85
+ model: 'purchase.order',
86
+ measure: 'sum:amountTotal',
87
+ filter: { state: { in: ['purchase', 'done'] } },
88
+ comparison: { field: 'dateOrder', mode: 'previous' },
89
+ w: 3,
90
+ },
91
+ {
92
+ id: 'orders_month',
93
+ title: 'Orders this month',
94
+ kind: 'kpi',
95
+ model: 'purchase.order',
96
+ measure: 'count',
97
+ filter: { state: { in: ['purchase', 'done'] } },
98
+ comparison: { field: 'dateOrder', mode: 'previous' },
99
+ w: 3,
100
+ },
101
+ {
102
+ id: 'open_rfqs',
103
+ title: 'Open requests',
104
+ kind: 'kpi',
105
+ model: 'purchase.order',
106
+ measure: 'count',
107
+ filter: { state: { in: ['draft', 'sent'] } },
108
+ w: 3,
109
+ },
110
+ {
111
+ id: 'to_approve',
112
+ title: 'Waiting approval',
113
+ kind: 'kpi',
114
+ model: 'purchase.order',
115
+ measure: 'count',
116
+ filter: { state: 'to_approve' },
117
+ w: 3,
118
+ },
119
+ {
120
+ id: 'spend_by_month',
121
+ title: 'Purchases by month',
122
+ kind: 'chart',
123
+ model: 'purchase.order',
124
+ measure: 'sum:amountTotal',
125
+ groupBy: 'dateOrder:month',
126
+ filter: { state: { in: ['purchase', 'done'] } },
127
+ chart: 'bar',
128
+ w: 6,
129
+ },
130
+ {
131
+ id: 'top_vendors',
132
+ title: 'Top vendors',
133
+ kind: 'pivot',
134
+ model: 'purchase.order',
135
+ measure: 'sum:amountTotal',
136
+ groupBy: 'partner',
137
+ filter: { state: { in: ['purchase', 'done'] } },
138
+ w: 6,
139
+ },
140
+ {
141
+ id: 'by_buyer',
142
+ title: 'By buyer',
143
+ kind: 'chart',
144
+ model: 'purchase.order',
145
+ measure: 'sum:amountTotal',
146
+ groupBy: 'user',
147
+ filter: { state: { in: ['purchase', 'done'] } },
148
+ chart: 'pie',
149
+ w: 6,
150
+ },
151
+ {
152
+ id: 'biggest_open',
153
+ title: 'Biggest open requests',
154
+ kind: 'list',
155
+ model: 'purchase.order',
156
+ measure: 'sum:amountTotal',
157
+ filter: { state: { in: ['draft', 'sent', 'to_approve'] } },
158
+ w: 6,
159
+ },
160
+ ],
161
+ },
162
+ viewExtensions: [
163
+ {
164
+ view: 'product.product.form',
165
+ operations: [
166
+ {
167
+ append: 'related',
168
+ nodes: [
169
+ stat({
170
+ id: 'product_bought',
171
+ label: 'Bought',
172
+ model: 'purchase.order.line',
173
+ where: { product: { $record: 'id' }, 'order.state': { in: ['purchase', 'done'] } },
174
+ measure: { sum: 'quantity' },
175
+ }),
176
+ ],
177
+ },
178
+ ],
179
+ },
180
+ {
181
+ view: 'res.partner.form',
182
+ operations: [
183
+ {
184
+ append: 'related',
185
+ nodes: [
186
+ stat({
187
+ id: 'purchase_orders',
188
+ label: 'Purchase orders',
189
+ model: PurchaseOrder,
190
+ where: { partner: { $record: 'id' }, state: { in: ['purchase', 'done'] } },
191
+ action: 'purchase.action_orders',
192
+ }),
193
+ stat({
194
+ id: 'purchase_spend',
195
+ label: 'Purchases',
196
+ model: PurchaseOrder,
197
+ where: { partner: { $record: 'id' }, state: { in: ['purchase', 'done'] } },
198
+ measure: { sum: 'amountTotal' },
199
+ action: 'purchase.action_orders',
200
+ }),
201
+ ],
202
+ },
203
+ ],
204
+ },
205
+ ],
54
206
  actions: {
55
207
  'purchase.action_rfqs': action(PurchaseOrder, {
56
208
  label: 'Requests for quotation',
@@ -59,7 +211,7 @@ export const purchase = defineModule({
59
211
  }),
60
212
  'purchase.action_orders': action(PurchaseOrder, {
61
213
  label: 'Purchase orders',
62
- views: ['list', 'kanban', 'form'],
214
+ views: ['list', 'kanban', 'calendar', 'form'],
63
215
  defaultFilters: ['orders'],
64
216
  }),
65
217
  'purchase.action_to_approve': action(PurchaseOrder, {
@@ -138,6 +290,8 @@ export const purchase = defineModule({
138
290
  ],
139
291
  },
140
292
  sheet: [
293
+ // Bills and receipts: the bridges append their tiles (RFC 0022 §3.1).
294
+ k.stats('related', []),
141
295
  k.group('vendor', ['partner', 'partnerReference', 'currency']),
142
296
  k.group('dates', ['name', 'dateOrder', 'datePlanned', 'user', 'origin']),
143
297
  k.lines('lines', [
@@ -157,6 +311,12 @@ export const purchase = defineModule({
157
311
  readonlyWhen: { state: { in: ['done', 'cancel'] } },
158
312
  chatter: true,
159
313
  })),
314
+ 'purchase.order.calendar': calendar(PurchaseOrder, {
315
+ dateStart: 'datePlanned',
316
+ title: 'name',
317
+ color: 'state',
318
+ mode: 'month',
319
+ }),
160
320
  },
161
321
  search: {
162
322
  'purchase.order': search(PurchaseOrder, {