@ketvietlab/ketsuite 0.1.1

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 (1802) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +19 -0
  3. package/dist/index.d.ts +119 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +118 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/modules/account/functions.d.ts +14 -0
  8. package/dist/modules/account/functions.d.ts.map +1 -0
  9. package/dist/modules/account/functions.js +1038 -0
  10. package/dist/modules/account/functions.js.map +1 -0
  11. package/dist/modules/account/index.d.ts +5 -0
  12. package/dist/modules/account/index.d.ts.map +1 -0
  13. package/dist/modules/account/index.js +31 -0
  14. package/dist/modules/account/index.js.map +1 -0
  15. package/dist/modules/account/models.d.ts +3 -0
  16. package/dist/modules/account/models.d.ts.map +1 -0
  17. package/dist/modules/account/models.js +151 -0
  18. package/dist/modules/account/models.js.map +1 -0
  19. package/dist/modules/account/relations.d.ts +3 -0
  20. package/dist/modules/account/relations.d.ts.map +1 -0
  21. package/dist/modules/account/relations.js +35 -0
  22. package/dist/modules/account/relations.js.map +1 -0
  23. package/dist/modules/account/setup.d.ts +4 -0
  24. package/dist/modules/account/setup.d.ts.map +1 -0
  25. package/dist/modules/account/setup.js +179 -0
  26. package/dist/modules/account/setup.js.map +1 -0
  27. package/dist/modules/account/tt99.d.ts +30 -0
  28. package/dist/modules/account/tt99.d.ts.map +1 -0
  29. package/dist/modules/account/tt99.js +1661 -0
  30. package/dist/modules/account/tt99.js.map +1 -0
  31. package/dist/modules/account_activity_backend/index.d.ts +5 -0
  32. package/dist/modules/account_activity_backend/index.d.ts.map +1 -0
  33. package/dist/modules/account_activity_backend/index.js +27 -0
  34. package/dist/modules/account_activity_backend/index.js.map +1 -0
  35. package/dist/modules/account_backend/accounting-overview-screen.d.ts +18 -0
  36. package/dist/modules/account_backend/accounting-overview-screen.d.ts.map +1 -0
  37. package/dist/modules/account_backend/accounting-overview-screen.js +104 -0
  38. package/dist/modules/account_backend/accounting-overview-screen.js.map +1 -0
  39. package/dist/modules/account_backend/accounts-screen.d.ts +13 -0
  40. package/dist/modules/account_backend/accounts-screen.d.ts.map +1 -0
  41. package/dist/modules/account_backend/accounts-screen.js +49 -0
  42. package/dist/modules/account_backend/accounts-screen.js.map +1 -0
  43. package/dist/modules/account_backend/customer-invoices-screen.d.ts +14 -0
  44. package/dist/modules/account_backend/customer-invoices-screen.d.ts.map +1 -0
  45. package/dist/modules/account_backend/customer-invoices-screen.js +63 -0
  46. package/dist/modules/account_backend/customer-invoices-screen.js.map +1 -0
  47. package/dist/modules/account_backend/general-ledger-screen.d.ts +13 -0
  48. package/dist/modules/account_backend/general-ledger-screen.d.ts.map +1 -0
  49. package/dist/modules/account_backend/general-ledger-screen.js +56 -0
  50. package/dist/modules/account_backend/general-ledger-screen.js.map +1 -0
  51. package/dist/modules/account_backend/index.d.ts +3 -0
  52. package/dist/modules/account_backend/index.d.ts.map +1 -0
  53. package/dist/modules/account_backend/index.js +1516 -0
  54. package/dist/modules/account_backend/index.js.map +1 -0
  55. package/dist/modules/account_backend/journal-entries-screen.d.ts +14 -0
  56. package/dist/modules/account_backend/journal-entries-screen.d.ts.map +1 -0
  57. package/dist/modules/account_backend/journal-entries-screen.js +45 -0
  58. package/dist/modules/account_backend/journal-entries-screen.js.map +1 -0
  59. package/dist/modules/account_backend/journals-screen.d.ts +14 -0
  60. package/dist/modules/account_backend/journals-screen.d.ts.map +1 -0
  61. package/dist/modules/account_backend/journals-screen.js +53 -0
  62. package/dist/modules/account_backend/journals-screen.js.map +1 -0
  63. package/dist/modules/account_backend/move-detail-screen.d.ts +10 -0
  64. package/dist/modules/account_backend/move-detail-screen.d.ts.map +1 -0
  65. package/dist/modules/account_backend/move-detail-screen.js +100 -0
  66. package/dist/modules/account_backend/move-detail-screen.js.map +1 -0
  67. package/dist/modules/account_backend/partner-ledger-screen.d.ts +14 -0
  68. package/dist/modules/account_backend/partner-ledger-screen.d.ts.map +1 -0
  69. package/dist/modules/account_backend/partner-ledger-screen.js +69 -0
  70. package/dist/modules/account_backend/partner-ledger-screen.js.map +1 -0
  71. package/dist/modules/account_backend/payment-terms-screen.d.ts +14 -0
  72. package/dist/modules/account_backend/payment-terms-screen.d.ts.map +1 -0
  73. package/dist/modules/account_backend/payment-terms-screen.js +40 -0
  74. package/dist/modules/account_backend/payment-terms-screen.js.map +1 -0
  75. package/dist/modules/account_backend/payments-screen.d.ts +14 -0
  76. package/dist/modules/account_backend/payments-screen.d.ts.map +1 -0
  77. package/dist/modules/account_backend/payments-screen.js +54 -0
  78. package/dist/modules/account_backend/payments-screen.js.map +1 -0
  79. package/dist/modules/account_backend/screens.d.ts +7 -0
  80. package/dist/modules/account_backend/screens.d.ts.map +1 -0
  81. package/dist/modules/account_backend/screens.js +7 -0
  82. package/dist/modules/account_backend/screens.js.map +1 -0
  83. package/dist/modules/account_backend/taxes-screen.d.ts +15 -0
  84. package/dist/modules/account_backend/taxes-screen.d.ts.map +1 -0
  85. package/dist/modules/account_backend/taxes-screen.js +73 -0
  86. package/dist/modules/account_backend/taxes-screen.js.map +1 -0
  87. package/dist/modules/account_backend/trial-balance-screen.d.ts +13 -0
  88. package/dist/modules/account_backend/trial-balance-screen.d.ts.map +1 -0
  89. package/dist/modules/account_backend/trial-balance-screen.js +62 -0
  90. package/dist/modules/account_backend/trial-balance-screen.js.map +1 -0
  91. package/dist/modules/account_backend/vendor-bills-screen.d.ts +14 -0
  92. package/dist/modules/account_backend/vendor-bills-screen.d.ts.map +1 -0
  93. package/dist/modules/account_backend/vendor-bills-screen.js +59 -0
  94. package/dist/modules/account_backend/vendor-bills-screen.js.map +1 -0
  95. package/dist/modules/account_mail_backend/index.d.ts +5 -0
  96. package/dist/modules/account_mail_backend/index.d.ts.map +1 -0
  97. package/dist/modules/account_mail_backend/index.js +28 -0
  98. package/dist/modules/account_mail_backend/index.js.map +1 -0
  99. package/dist/modules/account_partner/functions.d.ts +3 -0
  100. package/dist/modules/account_partner/functions.d.ts.map +1 -0
  101. package/dist/modules/account_partner/functions.js +85 -0
  102. package/dist/modules/account_partner/functions.js.map +1 -0
  103. package/dist/modules/account_partner/index.d.ts +3 -0
  104. package/dist/modules/account_partner/index.d.ts.map +1 -0
  105. package/dist/modules/account_partner/index.js +48 -0
  106. package/dist/modules/account_partner/index.js.map +1 -0
  107. package/dist/modules/account_partner_backend/index.d.ts +4 -0
  108. package/dist/modules/account_partner_backend/index.d.ts.map +1 -0
  109. package/dist/modules/account_partner_backend/index.js +49 -0
  110. package/dist/modules/account_partner_backend/index.js.map +1 -0
  111. package/dist/modules/account_partner_backend/routes.d.ts +3 -0
  112. package/dist/modules/account_partner_backend/routes.d.ts.map +1 -0
  113. package/dist/modules/account_partner_backend/routes.js +69 -0
  114. package/dist/modules/account_partner_backend/routes.js.map +1 -0
  115. package/dist/modules/account_partner_backend/screens.d.ts +16 -0
  116. package/dist/modules/account_partner_backend/screens.d.ts.map +1 -0
  117. package/dist/modules/account_partner_backend/screens.js +26 -0
  118. package/dist/modules/account_partner_backend/screens.js.map +1 -0
  119. package/dist/modules/activity/functions.d.ts +3 -0
  120. package/dist/modules/activity/functions.d.ts.map +1 -0
  121. package/dist/modules/activity/functions.js +250 -0
  122. package/dist/modules/activity/functions.js.map +1 -0
  123. package/dist/modules/activity/index.d.ts +9 -0
  124. package/dist/modules/activity/index.d.ts.map +1 -0
  125. package/dist/modules/activity/index.js +33 -0
  126. package/dist/modules/activity/index.js.map +1 -0
  127. package/dist/modules/activity/models.d.ts +3 -0
  128. package/dist/modules/activity/models.d.ts.map +1 -0
  129. package/dist/modules/activity/models.js +81 -0
  130. package/dist/modules/activity/models.js.map +1 -0
  131. package/dist/modules/activity/operations.d.ts +39 -0
  132. package/dist/modules/activity/operations.d.ts.map +1 -0
  133. package/dist/modules/activity/operations.js +226 -0
  134. package/dist/modules/activity/operations.js.map +1 -0
  135. package/dist/modules/activity/relations.d.ts +3 -0
  136. package/dist/modules/activity/relations.d.ts.map +1 -0
  137. package/dist/modules/activity/relations.js +24 -0
  138. package/dist/modules/activity/relations.js.map +1 -0
  139. package/dist/modules/activity/target.d.ts +4 -0
  140. package/dist/modules/activity/target.d.ts.map +1 -0
  141. package/dist/modules/activity/target.js +149 -0
  142. package/dist/modules/activity/target.js.map +1 -0
  143. package/dist/modules/activity/types.d.ts +9 -0
  144. package/dist/modules/activity/types.d.ts.map +1 -0
  145. package/dist/modules/activity/types.js +5 -0
  146. package/dist/modules/activity/types.js.map +1 -0
  147. package/dist/modules/activity_backend/index.d.ts +5 -0
  148. package/dist/modules/activity_backend/index.d.ts.map +1 -0
  149. package/dist/modules/activity_backend/index.js +80 -0
  150. package/dist/modules/activity_backend/index.js.map +1 -0
  151. package/dist/modules/activity_backend/islands.d.ts +3 -0
  152. package/dist/modules/activity_backend/islands.d.ts.map +1 -0
  153. package/dist/modules/activity_backend/islands.js +20 -0
  154. package/dist/modules/activity_backend/islands.js.map +1 -0
  155. package/dist/modules/activity_backend/routes.d.ts +5 -0
  156. package/dist/modules/activity_backend/routes.d.ts.map +1 -0
  157. package/dist/modules/activity_backend/routes.js +53 -0
  158. package/dist/modules/activity_backend/routes.js.map +1 -0
  159. package/dist/modules/activity_backend/screens.d.ts +5 -0
  160. package/dist/modules/activity_backend/screens.d.ts.map +1 -0
  161. package/dist/modules/activity_backend/screens.js +52 -0
  162. package/dist/modules/activity_backend/screens.js.map +1 -0
  163. package/dist/modules/address/data/VN/NOTICE.md +15 -0
  164. package/dist/modules/address/data/VN/catalogs/2025-07-01/divisions/0001.json +8002 -0
  165. package/dist/modules/address/data/VN/catalogs/2025-07-01/divisions/0002.json +8002 -0
  166. package/dist/modules/address/data/VN/catalogs/2025-07-01/divisions/0003.json +8002 -0
  167. package/dist/modules/address/data/VN/catalogs/2025-07-01/divisions/0004.json +2842 -0
  168. package/dist/modules/address/data/VN/catalogs/2025-07-01/manifest.json +77 -0
  169. package/dist/modules/address/data/VN/catalogs/2025-07-01/policy.json +49 -0
  170. package/dist/modules/address/data/countries.json +11 -0
  171. package/dist/modules/address/data/index.json +14 -0
  172. package/dist/modules/address/format.d.ts +37 -0
  173. package/dist/modules/address/format.d.ts.map +1 -0
  174. package/dist/modules/address/format.js +146 -0
  175. package/dist/modules/address/format.js.map +1 -0
  176. package/dist/modules/address/functions.d.ts +3 -0
  177. package/dist/modules/address/functions.d.ts.map +1 -0
  178. package/dist/modules/address/functions.js +320 -0
  179. package/dist/modules/address/functions.js.map +1 -0
  180. package/dist/modules/address/index.d.ts +6 -0
  181. package/dist/modules/address/index.d.ts.map +1 -0
  182. package/dist/modules/address/index.js +20 -0
  183. package/dist/modules/address/index.js.map +1 -0
  184. package/dist/modules/address/loader.d.ts +74 -0
  185. package/dist/modules/address/loader.d.ts.map +1 -0
  186. package/dist/modules/address/loader.js +144 -0
  187. package/dist/modules/address/loader.js.map +1 -0
  188. package/dist/modules/address/messages.d.ts +51 -0
  189. package/dist/modules/address/messages.d.ts.map +1 -0
  190. package/dist/modules/address/messages.js +51 -0
  191. package/dist/modules/address/messages.js.map +1 -0
  192. package/dist/modules/address/models.d.ts +8 -0
  193. package/dist/modules/address/models.d.ts.map +1 -0
  194. package/dist/modules/address/models.js +98 -0
  195. package/dist/modules/address/models.js.map +1 -0
  196. package/dist/modules/address/relations.d.ts +3 -0
  197. package/dist/modules/address/relations.d.ts.map +1 -0
  198. package/dist/modules/address/relations.js +22 -0
  199. package/dist/modules/address/relations.js.map +1 -0
  200. package/dist/modules/address_backend/index.d.ts +4 -0
  201. package/dist/modules/address_backend/index.d.ts.map +1 -0
  202. package/dist/modules/address_backend/index.js +90 -0
  203. package/dist/modules/address_backend/index.js.map +1 -0
  204. package/dist/modules/address_backend/routes.d.ts +3 -0
  205. package/dist/modules/address_backend/routes.d.ts.map +1 -0
  206. package/dist/modules/address_backend/routes.js +87 -0
  207. package/dist/modules/address_backend/routes.js.map +1 -0
  208. package/dist/modules/address_backend/screens.d.ts +31 -0
  209. package/dist/modules/address_backend/screens.d.ts.map +1 -0
  210. package/dist/modules/address_backend/screens.js +147 -0
  211. package/dist/modules/address_backend/screens.js.map +1 -0
  212. package/dist/modules/attendance/functions.d.ts +3 -0
  213. package/dist/modules/attendance/functions.d.ts.map +1 -0
  214. package/dist/modules/attendance/functions.js +750 -0
  215. package/dist/modules/attendance/functions.js.map +1 -0
  216. package/dist/modules/attendance/index.d.ts +5 -0
  217. package/dist/modules/attendance/index.d.ts.map +1 -0
  218. package/dist/modules/attendance/index.js +20 -0
  219. package/dist/modules/attendance/index.js.map +1 -0
  220. package/dist/modules/attendance/messages.d.ts +41 -0
  221. package/dist/modules/attendance/messages.d.ts.map +1 -0
  222. package/dist/modules/attendance/messages.js +41 -0
  223. package/dist/modules/attendance/messages.js.map +1 -0
  224. package/dist/modules/attendance/models.d.ts +3 -0
  225. package/dist/modules/attendance/models.d.ts.map +1 -0
  226. package/dist/modules/attendance/models.js +158 -0
  227. package/dist/modules/attendance/models.js.map +1 -0
  228. package/dist/modules/attendance/relations.d.ts +3 -0
  229. package/dist/modules/attendance/relations.d.ts.map +1 -0
  230. package/dist/modules/attendance/relations.js +12 -0
  231. package/dist/modules/attendance/relations.js.map +1 -0
  232. package/dist/modules/attendance/types.d.ts +9 -0
  233. package/dist/modules/attendance/types.d.ts.map +1 -0
  234. package/dist/modules/attendance/types.js +5 -0
  235. package/dist/modules/attendance/types.js.map +1 -0
  236. package/dist/modules/attendance_backend/index.d.ts +4 -0
  237. package/dist/modules/attendance_backend/index.d.ts.map +1 -0
  238. package/dist/modules/attendance_backend/index.js +182 -0
  239. package/dist/modules/attendance_backend/index.js.map +1 -0
  240. package/dist/modules/attendance_backend/qr.d.ts +2 -0
  241. package/dist/modules/attendance_backend/qr.d.ts.map +1 -0
  242. package/dist/modules/attendance_backend/qr.js +120 -0
  243. package/dist/modules/attendance_backend/qr.js.map +1 -0
  244. package/dist/modules/attendance_backend/routes.d.ts +3 -0
  245. package/dist/modules/attendance_backend/routes.d.ts.map +1 -0
  246. package/dist/modules/attendance_backend/routes.js +131 -0
  247. package/dist/modules/attendance_backend/routes.js.map +1 -0
  248. package/dist/modules/attendance_backend/screens.d.ts +10 -0
  249. package/dist/modules/attendance_backend/screens.d.ts.map +1 -0
  250. package/dist/modules/attendance_backend/screens.js +227 -0
  251. package/dist/modules/attendance_backend/screens.js.map +1 -0
  252. package/dist/modules/backend/catalogue.d.ts +10 -0
  253. package/dist/modules/backend/catalogue.d.ts.map +1 -0
  254. package/dist/modules/backend/catalogue.js +615 -0
  255. package/dist/modules/backend/catalogue.js.map +1 -0
  256. package/dist/modules/backend/design/HANDOFF.md +356 -0
  257. package/dist/modules/backend/design/admin.css +4229 -0
  258. package/dist/modules/backend/design/client/relation-select-view.d.mts +5 -0
  259. package/dist/modules/backend/design/client/relation-select-view.d.mts.map +1 -0
  260. package/dist/modules/backend/design/client/relation-select-view.mjs +335 -0
  261. package/dist/modules/backend/design/client/relation-select-view.mjs.map +1 -0
  262. package/dist/modules/backend/design/client/relation-select.d.mts +5 -0
  263. package/dist/modules/backend/design/client/relation-select.d.mts.map +1 -0
  264. package/dist/modules/backend/design/client/relation-select.mjs +7 -0
  265. package/dist/modules/backend/design/client/relation-select.mjs.map +1 -0
  266. package/dist/modules/backend/design/fixtures/product-back.svg +11 -0
  267. package/dist/modules/backend/design/fixtures/product-front.svg +9 -0
  268. package/dist/modules/backend/design/screenshots/apps-desktop-dark.png +0 -0
  269. package/dist/modules/backend/design/screenshots/list-mobile-dark.png +0 -0
  270. package/dist/modules/backend/design/screenshots/product-list-favorites-desktop-en.png +0 -0
  271. package/dist/modules/backend/design/screenshots/product-list-filter-desktop-en.png +0 -0
  272. package/dist/modules/backend/design/screenshots/product-list-filter-mobile-en.png +0 -0
  273. package/dist/modules/backend/design/screenshots/product-list-grouped-desktop.png +0 -0
  274. package/dist/modules/backend/design/screenshots/product-list-grouped-mobile.png +0 -0
  275. package/dist/modules/backend/design/tokens.css +132 -0
  276. package/dist/modules/backend/forms.d.ts +7 -0
  277. package/dist/modules/backend/forms.d.ts.map +1 -0
  278. package/dist/modules/backend/forms.js +25 -0
  279. package/dist/modules/backend/forms.js.map +1 -0
  280. package/dist/modules/backend/index.d.ts +24 -0
  281. package/dist/modules/backend/index.d.ts.map +1 -0
  282. package/dist/modules/backend/index.js +61 -0
  283. package/dist/modules/backend/index.js.map +1 -0
  284. package/dist/modules/backend/islands.d.ts +3 -0
  285. package/dist/modules/backend/islands.d.ts.map +1 -0
  286. package/dist/modules/backend/islands.js +13 -0
  287. package/dist/modules/backend/islands.js.map +1 -0
  288. package/dist/modules/backend/joints.d.ts +13 -0
  289. package/dist/modules/backend/joints.d.ts.map +1 -0
  290. package/dist/modules/backend/joints.js +33 -0
  291. package/dist/modules/backend/joints.js.map +1 -0
  292. package/dist/modules/backend/menus.d.ts +3 -0
  293. package/dist/modules/backend/menus.d.ts.map +1 -0
  294. package/dist/modules/backend/menus.js +25 -0
  295. package/dist/modules/backend/menus.js.map +1 -0
  296. package/dist/modules/backend/messages.d.ts +11 -0
  297. package/dist/modules/backend/messages.d.ts.map +1 -0
  298. package/dist/modules/backend/messages.js +161 -0
  299. package/dist/modules/backend/messages.js.map +1 -0
  300. package/dist/modules/backend/paging.d.ts +22 -0
  301. package/dist/modules/backend/paging.d.ts.map +1 -0
  302. package/dist/modules/backend/paging.js +56 -0
  303. package/dist/modules/backend/paging.js.map +1 -0
  304. package/dist/modules/backend/relation-select.d.ts +63 -0
  305. package/dist/modules/backend/relation-select.d.ts.map +1 -0
  306. package/dist/modules/backend/relation-select.js +20 -0
  307. package/dist/modules/backend/relation-select.js.map +1 -0
  308. package/dist/modules/backend/routes.d.ts +10 -0
  309. package/dist/modules/backend/routes.d.ts.map +1 -0
  310. package/dist/modules/backend/routes.js +123 -0
  311. package/dist/modules/backend/routes.js.map +1 -0
  312. package/dist/modules/backend/saved-searches.d.ts +4 -0
  313. package/dist/modules/backend/saved-searches.d.ts.map +1 -0
  314. package/dist/modules/backend/saved-searches.js +138 -0
  315. package/dist/modules/backend/saved-searches.js.map +1 -0
  316. package/dist/modules/backend/screens.d.ts +37 -0
  317. package/dist/modules/backend/screens.d.ts.map +1 -0
  318. package/dist/modules/backend/screens.js +107 -0
  319. package/dist/modules/backend/screens.js.map +1 -0
  320. package/dist/modules/calendar/functions.d.ts +3 -0
  321. package/dist/modules/calendar/functions.d.ts.map +1 -0
  322. package/dist/modules/calendar/functions.js +259 -0
  323. package/dist/modules/calendar/functions.js.map +1 -0
  324. package/dist/modules/calendar/index.d.ts +9 -0
  325. package/dist/modules/calendar/index.d.ts.map +1 -0
  326. package/dist/modules/calendar/index.js +36 -0
  327. package/dist/modules/calendar/index.js.map +1 -0
  328. package/dist/modules/calendar/jobs.d.ts +3 -0
  329. package/dist/modules/calendar/jobs.d.ts.map +1 -0
  330. package/dist/modules/calendar/jobs.js +57 -0
  331. package/dist/modules/calendar/jobs.js.map +1 -0
  332. package/dist/modules/calendar/models.d.ts +3 -0
  333. package/dist/modules/calendar/models.d.ts.map +1 -0
  334. package/dist/modules/calendar/models.js +90 -0
  335. package/dist/modules/calendar/models.js.map +1 -0
  336. package/dist/modules/calendar/operations.d.ts +45 -0
  337. package/dist/modules/calendar/operations.d.ts.map +1 -0
  338. package/dist/modules/calendar/operations.js +280 -0
  339. package/dist/modules/calendar/operations.js.map +1 -0
  340. package/dist/modules/calendar/recurrence.d.ts +28 -0
  341. package/dist/modules/calendar/recurrence.d.ts.map +1 -0
  342. package/dist/modules/calendar/recurrence.js +175 -0
  343. package/dist/modules/calendar/recurrence.js.map +1 -0
  344. package/dist/modules/calendar/relations.d.ts +3 -0
  345. package/dist/modules/calendar/relations.d.ts.map +1 -0
  346. package/dist/modules/calendar/relations.js +22 -0
  347. package/dist/modules/calendar/relations.js.map +1 -0
  348. package/dist/modules/calendar/types.d.ts +10 -0
  349. package/dist/modules/calendar/types.d.ts.map +1 -0
  350. package/dist/modules/calendar/types.js +6 -0
  351. package/dist/modules/calendar/types.js.map +1 -0
  352. package/dist/modules/calendar_activity/index.d.ts +6 -0
  353. package/dist/modules/calendar_activity/index.d.ts.map +1 -0
  354. package/dist/modules/calendar_activity/index.js +250 -0
  355. package/dist/modules/calendar_activity/index.js.map +1 -0
  356. package/dist/modules/calendar_backend/index.d.ts +5 -0
  357. package/dist/modules/calendar_backend/index.d.ts.map +1 -0
  358. package/dist/modules/calendar_backend/index.js +47 -0
  359. package/dist/modules/calendar_backend/index.js.map +1 -0
  360. package/dist/modules/calendar_backend/islands.d.ts +3 -0
  361. package/dist/modules/calendar_backend/islands.d.ts.map +1 -0
  362. package/dist/modules/calendar_backend/islands.js +12 -0
  363. package/dist/modules/calendar_backend/islands.js.map +1 -0
  364. package/dist/modules/calendar_backend/routes.d.ts +3 -0
  365. package/dist/modules/calendar_backend/routes.d.ts.map +1 -0
  366. package/dist/modules/calendar_backend/routes.js +43 -0
  367. package/dist/modules/calendar_backend/routes.js.map +1 -0
  368. package/dist/modules/calendar_backend/screens.d.ts +5 -0
  369. package/dist/modules/calendar_backend/screens.d.ts.map +1 -0
  370. package/dist/modules/calendar_backend/screens.js +4 -0
  371. package/dist/modules/calendar_backend/screens.js.map +1 -0
  372. package/dist/modules/calendar_mail_transport/index.d.ts +6 -0
  373. package/dist/modules/calendar_mail_transport/index.d.ts.map +1 -0
  374. package/dist/modules/calendar_mail_transport/index.js +138 -0
  375. package/dist/modules/calendar_mail_transport/index.js.map +1 -0
  376. package/dist/modules/catalog/index.d.ts +3 -0
  377. package/dist/modules/catalog/index.d.ts.map +1 -0
  378. package/dist/modules/catalog/index.js +68 -0
  379. package/dist/modules/catalog/index.js.map +1 -0
  380. package/dist/modules/checkout/index.d.ts +3 -0
  381. package/dist/modules/checkout/index.d.ts.map +1 -0
  382. package/dist/modules/checkout/index.js +50 -0
  383. package/dist/modules/checkout/index.js.map +1 -0
  384. package/dist/modules/company/functions.d.ts +3 -0
  385. package/dist/modules/company/functions.d.ts.map +1 -0
  386. package/dist/modules/company/functions.js +337 -0
  387. package/dist/modules/company/functions.js.map +1 -0
  388. package/dist/modules/company/index.d.ts +3 -0
  389. package/dist/modules/company/index.d.ts.map +1 -0
  390. package/dist/modules/company/index.js +23 -0
  391. package/dist/modules/company/index.js.map +1 -0
  392. package/dist/modules/company/messages.d.ts +63 -0
  393. package/dist/modules/company/messages.d.ts.map +1 -0
  394. package/dist/modules/company/messages.js +63 -0
  395. package/dist/modules/company/messages.js.map +1 -0
  396. package/dist/modules/company/models.d.ts +19 -0
  397. package/dist/modules/company/models.d.ts.map +1 -0
  398. package/dist/modules/company/models.js +61 -0
  399. package/dist/modules/company/models.js.map +1 -0
  400. package/dist/modules/company/relations.d.ts +3 -0
  401. package/dist/modules/company/relations.d.ts.map +1 -0
  402. package/dist/modules/company/relations.js +14 -0
  403. package/dist/modules/company/relations.js.map +1 -0
  404. package/dist/modules/company_backend/index.d.ts +5 -0
  405. package/dist/modules/company_backend/index.d.ts.map +1 -0
  406. package/dist/modules/company_backend/index.js +136 -0
  407. package/dist/modules/company_backend/index.js.map +1 -0
  408. package/dist/modules/company_backend/menus.d.ts +3 -0
  409. package/dist/modules/company_backend/menus.d.ts.map +1 -0
  410. package/dist/modules/company_backend/menus.js +17 -0
  411. package/dist/modules/company_backend/menus.js.map +1 -0
  412. package/dist/modules/company_backend/routes.d.ts +3 -0
  413. package/dist/modules/company_backend/routes.d.ts.map +1 -0
  414. package/dist/modules/company_backend/routes.js +269 -0
  415. package/dist/modules/company_backend/routes.js.map +1 -0
  416. package/dist/modules/company_backend/screens.d.ts +62 -0
  417. package/dist/modules/company_backend/screens.d.ts.map +1 -0
  418. package/dist/modules/company_backend/screens.js +268 -0
  419. package/dist/modules/company_backend/screens.js.map +1 -0
  420. package/dist/modules/crm/functions.d.ts +5 -0
  421. package/dist/modules/crm/functions.d.ts.map +1 -0
  422. package/dist/modules/crm/functions.js +840 -0
  423. package/dist/modules/crm/functions.js.map +1 -0
  424. package/dist/modules/crm/index.d.ts +6 -0
  425. package/dist/modules/crm/index.d.ts.map +1 -0
  426. package/dist/modules/crm/index.js +22 -0
  427. package/dist/modules/crm/index.js.map +1 -0
  428. package/dist/modules/crm/jobs.d.ts +4 -0
  429. package/dist/modules/crm/jobs.d.ts.map +1 -0
  430. package/dist/modules/crm/jobs.js +3 -0
  431. package/dist/modules/crm/jobs.js.map +1 -0
  432. package/dist/modules/crm/messages.d.ts +37 -0
  433. package/dist/modules/crm/messages.d.ts.map +1 -0
  434. package/dist/modules/crm/messages.js +68 -0
  435. package/dist/modules/crm/messages.js.map +1 -0
  436. package/dist/modules/crm/models.d.ts +3 -0
  437. package/dist/modules/crm/models.d.ts.map +1 -0
  438. package/dist/modules/crm/models.js +215 -0
  439. package/dist/modules/crm/models.js.map +1 -0
  440. package/dist/modules/crm/operations.d.ts +121 -0
  441. package/dist/modules/crm/operations.d.ts.map +1 -0
  442. package/dist/modules/crm/operations.js +744 -0
  443. package/dist/modules/crm/operations.js.map +1 -0
  444. package/dist/modules/crm/search.d.ts +67 -0
  445. package/dist/modules/crm/search.d.ts.map +1 -0
  446. package/dist/modules/crm/search.js +89 -0
  447. package/dist/modules/crm/search.js.map +1 -0
  448. package/dist/modules/crm/types.d.ts +10 -0
  449. package/dist/modules/crm/types.d.ts.map +1 -0
  450. package/dist/modules/crm/types.js +6 -0
  451. package/dist/modules/crm/types.js.map +1 -0
  452. package/dist/modules/crm_backend/client/crm-kanban-view.d.mts +8 -0
  453. package/dist/modules/crm_backend/client/crm-kanban-view.d.mts.map +1 -0
  454. package/dist/modules/crm_backend/client/crm-kanban-view.mjs +129 -0
  455. package/dist/modules/crm_backend/client/crm-kanban-view.mjs.map +1 -0
  456. package/dist/modules/crm_backend/client/crm-kanban.d.mts +3 -0
  457. package/dist/modules/crm_backend/client/crm-kanban.d.mts.map +1 -0
  458. package/dist/modules/crm_backend/client/crm-kanban.mjs +7 -0
  459. package/dist/modules/crm_backend/client/crm-kanban.mjs.map +1 -0
  460. package/dist/modules/crm_backend/client/crm.css +69 -0
  461. package/dist/modules/crm_backend/index.d.ts +4 -0
  462. package/dist/modules/crm_backend/index.d.ts.map +1 -0
  463. package/dist/modules/crm_backend/index.js +54 -0
  464. package/dist/modules/crm_backend/index.js.map +1 -0
  465. package/dist/modules/crm_backend/islands.d.ts +9 -0
  466. package/dist/modules/crm_backend/islands.d.ts.map +1 -0
  467. package/dist/modules/crm_backend/islands.js +13 -0
  468. package/dist/modules/crm_backend/islands.js.map +1 -0
  469. package/dist/modules/crm_backend/list-search.d.ts +21 -0
  470. package/dist/modules/crm_backend/list-search.d.ts.map +1 -0
  471. package/dist/modules/crm_backend/list-search.js +220 -0
  472. package/dist/modules/crm_backend/list-search.js.map +1 -0
  473. package/dist/modules/crm_backend/messages.d.ts +183 -0
  474. package/dist/modules/crm_backend/messages.d.ts.map +1 -0
  475. package/dist/modules/crm_backend/messages.js +182 -0
  476. package/dist/modules/crm_backend/messages.js.map +1 -0
  477. package/dist/modules/crm_backend/routes.d.ts +3 -0
  478. package/dist/modules/crm_backend/routes.d.ts.map +1 -0
  479. package/dist/modules/crm_backend/routes.js +520 -0
  480. package/dist/modules/crm_backend/routes.js.map +1 -0
  481. package/dist/modules/crm_backend/screens.d.ts +32 -0
  482. package/dist/modules/crm_backend/screens.d.ts.map +1 -0
  483. package/dist/modules/crm_backend/screens.js +405 -0
  484. package/dist/modules/crm_backend/screens.js.map +1 -0
  485. package/dist/modules/crm_sale/index.d.ts +4 -0
  486. package/dist/modules/crm_sale/index.d.ts.map +1 -0
  487. package/dist/modules/crm_sale/index.js +18 -0
  488. package/dist/modules/crm_sale/index.js.map +1 -0
  489. package/dist/modules/crm_sale/messages.d.ts +10 -0
  490. package/dist/modules/crm_sale/messages.d.ts.map +1 -0
  491. package/dist/modules/crm_sale/messages.js +14 -0
  492. package/dist/modules/crm_sale/messages.js.map +1 -0
  493. package/dist/modules/crm_sale/models.d.ts +3 -0
  494. package/dist/modules/crm_sale/models.d.ts.map +1 -0
  495. package/dist/modules/crm_sale/models.js +16 -0
  496. package/dist/modules/crm_sale/models.js.map +1 -0
  497. package/dist/modules/crm_sale/sale-functions.d.ts +15 -0
  498. package/dist/modules/crm_sale/sale-functions.d.ts.map +1 -0
  499. package/dist/modules/crm_sale/sale-functions.js +139 -0
  500. package/dist/modules/crm_sale/sale-functions.js.map +1 -0
  501. package/dist/modules/crm_website/functions.d.ts +3 -0
  502. package/dist/modules/crm_website/functions.d.ts.map +1 -0
  503. package/dist/modules/crm_website/functions.js +65 -0
  504. package/dist/modules/crm_website/functions.js.map +1 -0
  505. package/dist/modules/crm_website/index.d.ts +3 -0
  506. package/dist/modules/crm_website/index.d.ts.map +1 -0
  507. package/dist/modules/crm_website/index.js +19 -0
  508. package/dist/modules/crm_website/index.js.map +1 -0
  509. package/dist/modules/crm_website/messages.d.ts +20 -0
  510. package/dist/modules/crm_website/messages.d.ts.map +1 -0
  511. package/dist/modules/crm_website/messages.js +34 -0
  512. package/dist/modules/crm_website/messages.js.map +1 -0
  513. package/dist/modules/crm_website/models.d.ts +3 -0
  514. package/dist/modules/crm_website/models.d.ts.map +1 -0
  515. package/dist/modules/crm_website/models.js +15 -0
  516. package/dist/modules/crm_website/models.js.map +1 -0
  517. package/dist/modules/crm_website/routes.d.ts +3 -0
  518. package/dist/modules/crm_website/routes.d.ts.map +1 -0
  519. package/dist/modules/crm_website/routes.js +71 -0
  520. package/dist/modules/crm_website/routes.js.map +1 -0
  521. package/dist/modules/crm_website/screens.d.ts +5 -0
  522. package/dist/modules/crm_website/screens.d.ts.map +1 -0
  523. package/dist/modules/crm_website/screens.js +15 -0
  524. package/dist/modules/crm_website/screens.js.map +1 -0
  525. package/dist/modules/hospitality_core/calendar.d.ts +9 -0
  526. package/dist/modules/hospitality_core/calendar.d.ts.map +1 -0
  527. package/dist/modules/hospitality_core/calendar.js +41 -0
  528. package/dist/modules/hospitality_core/calendar.js.map +1 -0
  529. package/dist/modules/hospitality_core/content.d.ts +13 -0
  530. package/dist/modules/hospitality_core/content.d.ts.map +1 -0
  531. package/dist/modules/hospitality_core/content.js +345 -0
  532. package/dist/modules/hospitality_core/content.js.map +1 -0
  533. package/dist/modules/hospitality_core/functions.d.ts +3 -0
  534. package/dist/modules/hospitality_core/functions.d.ts.map +1 -0
  535. package/dist/modules/hospitality_core/functions.js +1558 -0
  536. package/dist/modules/hospitality_core/functions.js.map +1 -0
  537. package/dist/modules/hospitality_core/housekeeping.d.ts +3 -0
  538. package/dist/modules/hospitality_core/housekeeping.d.ts.map +1 -0
  539. package/dist/modules/hospitality_core/housekeeping.js +352 -0
  540. package/dist/modules/hospitality_core/housekeeping.js.map +1 -0
  541. package/dist/modules/hospitality_core/index.d.ts +5 -0
  542. package/dist/modules/hospitality_core/index.d.ts.map +1 -0
  543. package/dist/modules/hospitality_core/index.js +41 -0
  544. package/dist/modules/hospitality_core/index.js.map +1 -0
  545. package/dist/modules/hospitality_core/inventory.d.ts +40 -0
  546. package/dist/modules/hospitality_core/inventory.d.ts.map +1 -0
  547. package/dist/modules/hospitality_core/inventory.js +627 -0
  548. package/dist/modules/hospitality_core/inventory.js.map +1 -0
  549. package/dist/modules/hospitality_core/menus.d.ts +3 -0
  550. package/dist/modules/hospitality_core/menus.d.ts.map +1 -0
  551. package/dist/modules/hospitality_core/menus.js +134 -0
  552. package/dist/modules/hospitality_core/menus.js.map +1 -0
  553. package/dist/modules/hospitality_core/messages.d.ts +3 -0
  554. package/dist/modules/hospitality_core/messages.d.ts.map +1 -0
  555. package/dist/modules/hospitality_core/messages.js +2011 -0
  556. package/dist/modules/hospitality_core/messages.js.map +1 -0
  557. package/dist/modules/hospitality_core/models.d.ts +10 -0
  558. package/dist/modules/hospitality_core/models.d.ts.map +1 -0
  559. package/dist/modules/hospitality_core/models.js +657 -0
  560. package/dist/modules/hospitality_core/models.js.map +1 -0
  561. package/dist/modules/hospitality_core/night-audit.d.ts +26 -0
  562. package/dist/modules/hospitality_core/night-audit.d.ts.map +1 -0
  563. package/dist/modules/hospitality_core/night-audit.js +381 -0
  564. package/dist/modules/hospitality_core/night-audit.js.map +1 -0
  565. package/dist/modules/hospitality_core/operations.d.ts +3 -0
  566. package/dist/modules/hospitality_core/operations.d.ts.map +1 -0
  567. package/dist/modules/hospitality_core/operations.js +1562 -0
  568. package/dist/modules/hospitality_core/operations.js.map +1 -0
  569. package/dist/modules/hospitality_core/relations.d.ts +3 -0
  570. package/dist/modules/hospitality_core/relations.d.ts.map +1 -0
  571. package/dist/modules/hospitality_core/relations.js +175 -0
  572. package/dist/modules/hospitality_core/relations.js.map +1 -0
  573. package/dist/modules/hospitality_core/routes.d.ts +3 -0
  574. package/dist/modules/hospitality_core/routes.d.ts.map +1 -0
  575. package/dist/modules/hospitality_core/routes.js +1556 -0
  576. package/dist/modules/hospitality_core/routes.js.map +1 -0
  577. package/dist/modules/hospitality_core/screens.d.ts +763 -0
  578. package/dist/modules/hospitality_core/screens.d.ts.map +1 -0
  579. package/dist/modules/hospitality_core/screens.js +4138 -0
  580. package/dist/modules/hospitality_core/screens.js.map +1 -0
  581. package/dist/modules/hospitality_core/services.d.ts +9 -0
  582. package/dist/modules/hospitality_core/services.d.ts.map +1 -0
  583. package/dist/modules/hospitality_core/services.js +586 -0
  584. package/dist/modules/hospitality_core/services.js.map +1 -0
  585. package/dist/modules/hospitality_core/stay-notices.d.ts +11 -0
  586. package/dist/modules/hospitality_core/stay-notices.d.ts.map +1 -0
  587. package/dist/modules/hospitality_core/stay-notices.js +338 -0
  588. package/dist/modules/hospitality_core/stay-notices.js.map +1 -0
  589. package/dist/modules/hospitality_core/types.d.ts +61 -0
  590. package/dist/modules/hospitality_core/types.d.ts.map +1 -0
  591. package/dist/modules/hospitality_core/types.js +65 -0
  592. package/dist/modules/hospitality_core/types.js.map +1 -0
  593. package/dist/modules/hr/functions.d.ts +3 -0
  594. package/dist/modules/hr/functions.d.ts.map +1 -0
  595. package/dist/modules/hr/functions.js +711 -0
  596. package/dist/modules/hr/functions.js.map +1 -0
  597. package/dist/modules/hr/index.d.ts +5 -0
  598. package/dist/modules/hr/index.d.ts.map +1 -0
  599. package/dist/modules/hr/index.js +20 -0
  600. package/dist/modules/hr/index.js.map +1 -0
  601. package/dist/modules/hr/messages.d.ts +45 -0
  602. package/dist/modules/hr/messages.d.ts.map +1 -0
  603. package/dist/modules/hr/messages.js +45 -0
  604. package/dist/modules/hr/messages.js.map +1 -0
  605. package/dist/modules/hr/models.d.ts +3 -0
  606. package/dist/modules/hr/models.d.ts.map +1 -0
  607. package/dist/modules/hr/models.js +166 -0
  608. package/dist/modules/hr/models.js.map +1 -0
  609. package/dist/modules/hr/relations.d.ts +3 -0
  610. package/dist/modules/hr/relations.d.ts.map +1 -0
  611. package/dist/modules/hr/relations.js +19 -0
  612. package/dist/modules/hr/relations.js.map +1 -0
  613. package/dist/modules/hr/types.d.ts +9 -0
  614. package/dist/modules/hr/types.d.ts.map +1 -0
  615. package/dist/modules/hr/types.js +5 -0
  616. package/dist/modules/hr/types.js.map +1 -0
  617. package/dist/modules/hr_backend/index.d.ts +4 -0
  618. package/dist/modules/hr_backend/index.d.ts.map +1 -0
  619. package/dist/modules/hr_backend/index.js +142 -0
  620. package/dist/modules/hr_backend/index.js.map +1 -0
  621. package/dist/modules/hr_backend/routes.d.ts +3 -0
  622. package/dist/modules/hr_backend/routes.d.ts.map +1 -0
  623. package/dist/modules/hr_backend/routes.js +83 -0
  624. package/dist/modules/hr_backend/routes.js.map +1 -0
  625. package/dist/modules/hr_backend/screens.d.ts +9 -0
  626. package/dist/modules/hr_backend/screens.d.ts.map +1 -0
  627. package/dist/modules/hr_backend/screens.js +144 -0
  628. package/dist/modules/hr_backend/screens.js.map +1 -0
  629. package/dist/modules/inventory/index.d.ts +3 -0
  630. package/dist/modules/inventory/index.d.ts.map +1 -0
  631. package/dist/modules/inventory/index.js +31 -0
  632. package/dist/modules/inventory/index.js.map +1 -0
  633. package/dist/modules/loyalty/admin-functions.d.ts +3 -0
  634. package/dist/modules/loyalty/admin-functions.d.ts.map +1 -0
  635. package/dist/modules/loyalty/admin-functions.js +692 -0
  636. package/dist/modules/loyalty/admin-functions.js.map +1 -0
  637. package/dist/modules/loyalty/engine.d.ts +31 -0
  638. package/dist/modules/loyalty/engine.d.ts.map +1 -0
  639. package/dist/modules/loyalty/engine.js +412 -0
  640. package/dist/modules/loyalty/engine.js.map +1 -0
  641. package/dist/modules/loyalty/index.d.ts +5 -0
  642. package/dist/modules/loyalty/index.d.ts.map +1 -0
  643. package/dist/modules/loyalty/index.js +24 -0
  644. package/dist/modules/loyalty/index.js.map +1 -0
  645. package/dist/modules/loyalty/jobs.d.ts +4 -0
  646. package/dist/modules/loyalty/jobs.d.ts.map +1 -0
  647. package/dist/modules/loyalty/jobs.js +103 -0
  648. package/dist/modules/loyalty/jobs.js.map +1 -0
  649. package/dist/modules/loyalty/ledger.d.ts +48 -0
  650. package/dist/modules/loyalty/ledger.d.ts.map +1 -0
  651. package/dist/modules/loyalty/ledger.js +164 -0
  652. package/dist/modules/loyalty/ledger.js.map +1 -0
  653. package/dist/modules/loyalty/membership-functions.d.ts +4 -0
  654. package/dist/modules/loyalty/membership-functions.d.ts.map +1 -0
  655. package/dist/modules/loyalty/membership-functions.js +163 -0
  656. package/dist/modules/loyalty/membership-functions.js.map +1 -0
  657. package/dist/modules/loyalty/messages.d.ts +119 -0
  658. package/dist/modules/loyalty/messages.d.ts.map +1 -0
  659. package/dist/modules/loyalty/messages.js +119 -0
  660. package/dist/modules/loyalty/messages.js.map +1 -0
  661. package/dist/modules/loyalty/models.d.ts +3 -0
  662. package/dist/modules/loyalty/models.d.ts.map +1 -0
  663. package/dist/modules/loyalty/models.js +259 -0
  664. package/dist/modules/loyalty/models.js.map +1 -0
  665. package/dist/modules/loyalty/order-functions.d.ts +3 -0
  666. package/dist/modules/loyalty/order-functions.d.ts.map +1 -0
  667. package/dist/modules/loyalty/order-functions.js +656 -0
  668. package/dist/modules/loyalty/order-functions.js.map +1 -0
  669. package/dist/modules/loyalty/relations.d.ts +3 -0
  670. package/dist/modules/loyalty/relations.d.ts.map +1 -0
  671. package/dist/modules/loyalty/relations.js +19 -0
  672. package/dist/modules/loyalty/relations.js.map +1 -0
  673. package/dist/modules/loyalty/types.d.ts +83 -0
  674. package/dist/modules/loyalty/types.d.ts.map +1 -0
  675. package/dist/modules/loyalty/types.js +23 -0
  676. package/dist/modules/loyalty/types.js.map +1 -0
  677. package/dist/modules/loyalty_backend/index.d.ts +3 -0
  678. package/dist/modules/loyalty_backend/index.d.ts.map +1 -0
  679. package/dist/modules/loyalty_backend/index.js +636 -0
  680. package/dist/modules/loyalty_backend/index.js.map +1 -0
  681. package/dist/modules/loyalty_backend/messages.d.ts +162 -0
  682. package/dist/modules/loyalty_backend/messages.d.ts.map +1 -0
  683. package/dist/modules/loyalty_backend/messages.js +318 -0
  684. package/dist/modules/loyalty_backend/messages.js.map +1 -0
  685. package/dist/modules/loyalty_backend/screens.d.ts +33 -0
  686. package/dist/modules/loyalty_backend/screens.d.ts.map +1 -0
  687. package/dist/modules/loyalty_backend/screens.js +562 -0
  688. package/dist/modules/loyalty_backend/screens.js.map +1 -0
  689. package/dist/modules/loyalty_pos/functions.d.ts +19 -0
  690. package/dist/modules/loyalty_pos/functions.d.ts.map +1 -0
  691. package/dist/modules/loyalty_pos/functions.js +274 -0
  692. package/dist/modules/loyalty_pos/functions.js.map +1 -0
  693. package/dist/modules/loyalty_pos/index.d.ts +3 -0
  694. package/dist/modules/loyalty_pos/index.d.ts.map +1 -0
  695. package/dist/modules/loyalty_pos/index.js +45 -0
  696. package/dist/modules/loyalty_pos/index.js.map +1 -0
  697. package/dist/modules/loyalty_sale/functions.d.ts +19 -0
  698. package/dist/modules/loyalty_sale/functions.d.ts.map +1 -0
  699. package/dist/modules/loyalty_sale/functions.js +275 -0
  700. package/dist/modules/loyalty_sale/functions.js.map +1 -0
  701. package/dist/modules/loyalty_sale/index.d.ts +3 -0
  702. package/dist/modules/loyalty_sale/index.d.ts.map +1 -0
  703. package/dist/modules/loyalty_sale/index.js +45 -0
  704. package/dist/modules/loyalty_sale/index.js.map +1 -0
  705. package/dist/modules/mail/functions.d.ts +3 -0
  706. package/dist/modules/mail/functions.d.ts.map +1 -0
  707. package/dist/modules/mail/functions.js +129 -0
  708. package/dist/modules/mail/functions.js.map +1 -0
  709. package/dist/modules/mail/index.d.ts +9 -0
  710. package/dist/modules/mail/index.d.ts.map +1 -0
  711. package/dist/modules/mail/index.js +22 -0
  712. package/dist/modules/mail/index.js.map +1 -0
  713. package/dist/modules/mail/messages.d.ts +13 -0
  714. package/dist/modules/mail/messages.d.ts.map +1 -0
  715. package/dist/modules/mail/messages.js +13 -0
  716. package/dist/modules/mail/messages.js.map +1 -0
  717. package/dist/modules/mail/models.d.ts +3 -0
  718. package/dist/modules/mail/models.d.ts.map +1 -0
  719. package/dist/modules/mail/models.js +124 -0
  720. package/dist/modules/mail/models.js.map +1 -0
  721. package/dist/modules/mail/operations.d.ts +60 -0
  722. package/dist/modules/mail/operations.d.ts.map +1 -0
  723. package/dist/modules/mail/operations.js +249 -0
  724. package/dist/modules/mail/operations.js.map +1 -0
  725. package/dist/modules/mail/relations.d.ts +3 -0
  726. package/dist/modules/mail/relations.d.ts.map +1 -0
  727. package/dist/modules/mail/relations.js +41 -0
  728. package/dist/modules/mail/relations.js.map +1 -0
  729. package/dist/modules/mail/target.d.ts +16 -0
  730. package/dist/modules/mail/target.d.ts.map +1 -0
  731. package/dist/modules/mail/target.js +245 -0
  732. package/dist/modules/mail/target.js.map +1 -0
  733. package/dist/modules/mail/types.d.ts +7 -0
  734. package/dist/modules/mail/types.d.ts.map +1 -0
  735. package/dist/modules/mail/types.js +4 -0
  736. package/dist/modules/mail/types.js.map +1 -0
  737. package/dist/modules/mail_backend/index.d.ts +5 -0
  738. package/dist/modules/mail_backend/index.d.ts.map +1 -0
  739. package/dist/modules/mail_backend/index.js +56 -0
  740. package/dist/modules/mail_backend/index.js.map +1 -0
  741. package/dist/modules/mail_backend/islands.d.ts +3 -0
  742. package/dist/modules/mail_backend/islands.d.ts.map +1 -0
  743. package/dist/modules/mail_backend/islands.js +20 -0
  744. package/dist/modules/mail_backend/islands.js.map +1 -0
  745. package/dist/modules/mail_backend/routes.d.ts +5 -0
  746. package/dist/modules/mail_backend/routes.d.ts.map +1 -0
  747. package/dist/modules/mail_backend/routes.js +37 -0
  748. package/dist/modules/mail_backend/routes.js.map +1 -0
  749. package/dist/modules/mail_backend/screens.d.ts +5 -0
  750. package/dist/modules/mail_backend/screens.d.ts.map +1 -0
  751. package/dist/modules/mail_backend/screens.js +11 -0
  752. package/dist/modules/mail_backend/screens.js.map +1 -0
  753. package/dist/modules/mail_inbound/functions.d.ts +27 -0
  754. package/dist/modules/mail_inbound/functions.d.ts.map +1 -0
  755. package/dist/modules/mail_inbound/functions.js +178 -0
  756. package/dist/modules/mail_inbound/functions.js.map +1 -0
  757. package/dist/modules/mail_inbound/index.d.ts +10 -0
  758. package/dist/modules/mail_inbound/index.d.ts.map +1 -0
  759. package/dist/modules/mail_inbound/index.js +38 -0
  760. package/dist/modules/mail_inbound/index.js.map +1 -0
  761. package/dist/modules/mail_inbound/jobs.d.ts +3 -0
  762. package/dist/modules/mail_inbound/jobs.d.ts.map +1 -0
  763. package/dist/modules/mail_inbound/jobs.js +29 -0
  764. package/dist/modules/mail_inbound/jobs.js.map +1 -0
  765. package/dist/modules/mail_inbound/models.d.ts +3 -0
  766. package/dist/modules/mail_inbound/models.d.ts.map +1 -0
  767. package/dist/modules/mail_inbound/models.js +68 -0
  768. package/dist/modules/mail_inbound/models.js.map +1 -0
  769. package/dist/modules/mail_inbound/operations.d.ts +17 -0
  770. package/dist/modules/mail_inbound/operations.d.ts.map +1 -0
  771. package/dist/modules/mail_inbound/operations.js +273 -0
  772. package/dist/modules/mail_inbound/operations.js.map +1 -0
  773. package/dist/modules/mail_inbound/relations.d.ts +3 -0
  774. package/dist/modules/mail_inbound/relations.d.ts.map +1 -0
  775. package/dist/modules/mail_inbound/relations.js +19 -0
  776. package/dist/modules/mail_inbound/relations.js.map +1 -0
  777. package/dist/modules/mail_inbound/routes.d.ts +4 -0
  778. package/dist/modules/mail_inbound/routes.d.ts.map +1 -0
  779. package/dist/modules/mail_inbound/routes.js +156 -0
  780. package/dist/modules/mail_inbound/routes.js.map +1 -0
  781. package/dist/modules/mail_inbound/types.d.ts +37 -0
  782. package/dist/modules/mail_inbound/types.d.ts.map +1 -0
  783. package/dist/modules/mail_inbound/types.js +3 -0
  784. package/dist/modules/mail_inbound/types.js.map +1 -0
  785. package/dist/modules/mail_inbound_backend/index.d.ts +5 -0
  786. package/dist/modules/mail_inbound_backend/index.d.ts.map +1 -0
  787. package/dist/modules/mail_inbound_backend/index.js +59 -0
  788. package/dist/modules/mail_inbound_backend/index.js.map +1 -0
  789. package/dist/modules/mail_inbound_backend/routes.d.ts +5 -0
  790. package/dist/modules/mail_inbound_backend/routes.d.ts.map +1 -0
  791. package/dist/modules/mail_inbound_backend/routes.js +31 -0
  792. package/dist/modules/mail_inbound_backend/routes.js.map +1 -0
  793. package/dist/modules/mail_inbound_backend/screens.d.ts +5 -0
  794. package/dist/modules/mail_inbound_backend/screens.d.ts.map +1 -0
  795. package/dist/modules/mail_inbound_backend/screens.js +25 -0
  796. package/dist/modules/mail_inbound_backend/screens.js.map +1 -0
  797. package/dist/modules/mail_transport/functions.d.ts +3 -0
  798. package/dist/modules/mail_transport/functions.d.ts.map +1 -0
  799. package/dist/modules/mail_transport/functions.js +280 -0
  800. package/dist/modules/mail_transport/functions.js.map +1 -0
  801. package/dist/modules/mail_transport/index.d.ts +11 -0
  802. package/dist/modules/mail_transport/index.d.ts.map +1 -0
  803. package/dist/modules/mail_transport/index.js +37 -0
  804. package/dist/modules/mail_transport/index.js.map +1 -0
  805. package/dist/modules/mail_transport/jobs.d.ts +3 -0
  806. package/dist/modules/mail_transport/jobs.d.ts.map +1 -0
  807. package/dist/modules/mail_transport/jobs.js +79 -0
  808. package/dist/modules/mail_transport/jobs.js.map +1 -0
  809. package/dist/modules/mail_transport/models.d.ts +3 -0
  810. package/dist/modules/mail_transport/models.d.ts.map +1 -0
  811. package/dist/modules/mail_transport/models.js +88 -0
  812. package/dist/modules/mail_transport/models.js.map +1 -0
  813. package/dist/modules/mail_transport/operations.d.ts +16 -0
  814. package/dist/modules/mail_transport/operations.d.ts.map +1 -0
  815. package/dist/modules/mail_transport/operations.js +122 -0
  816. package/dist/modules/mail_transport/operations.js.map +1 -0
  817. package/dist/modules/mail_transport/relations.d.ts +3 -0
  818. package/dist/modules/mail_transport/relations.d.ts.map +1 -0
  819. package/dist/modules/mail_transport/relations.js +19 -0
  820. package/dist/modules/mail_transport/relations.js.map +1 -0
  821. package/dist/modules/mail_transport/target.d.ts +8 -0
  822. package/dist/modules/mail_transport/target.d.ts.map +1 -0
  823. package/dist/modules/mail_transport/target.js +43 -0
  824. package/dist/modules/mail_transport/target.js.map +1 -0
  825. package/dist/modules/mail_transport/template.d.ts +4 -0
  826. package/dist/modules/mail_transport/template.d.ts.map +1 -0
  827. package/dist/modules/mail_transport/template.js +52 -0
  828. package/dist/modules/mail_transport/template.js.map +1 -0
  829. package/dist/modules/mail_transport/types.d.ts +9 -0
  830. package/dist/modules/mail_transport/types.d.ts.map +1 -0
  831. package/dist/modules/mail_transport/types.js +3 -0
  832. package/dist/modules/mail_transport/types.js.map +1 -0
  833. package/dist/modules/mail_transport_backend/index.d.ts +5 -0
  834. package/dist/modules/mail_transport_backend/index.d.ts.map +1 -0
  835. package/dist/modules/mail_transport_backend/index.js +69 -0
  836. package/dist/modules/mail_transport_backend/index.js.map +1 -0
  837. package/dist/modules/mail_transport_backend/routes.d.ts +5 -0
  838. package/dist/modules/mail_transport_backend/routes.d.ts.map +1 -0
  839. package/dist/modules/mail_transport_backend/routes.js +42 -0
  840. package/dist/modules/mail_transport_backend/routes.js.map +1 -0
  841. package/dist/modules/mail_transport_backend/screens.d.ts +5 -0
  842. package/dist/modules/mail_transport_backend/screens.d.ts.map +1 -0
  843. package/dist/modules/mail_transport_backend/screens.js +35 -0
  844. package/dist/modules/mail_transport_backend/screens.js.map +1 -0
  845. package/dist/modules/oauth/functions.d.ts +3 -0
  846. package/dist/modules/oauth/functions.d.ts.map +1 -0
  847. package/dist/modules/oauth/functions.js +817 -0
  848. package/dist/modules/oauth/functions.js.map +1 -0
  849. package/dist/modules/oauth/index.d.ts +4 -0
  850. package/dist/modules/oauth/index.d.ts.map +1 -0
  851. package/dist/modules/oauth/index.js +22 -0
  852. package/dist/modules/oauth/index.js.map +1 -0
  853. package/dist/modules/oauth/messages.d.ts +129 -0
  854. package/dist/modules/oauth/messages.d.ts.map +1 -0
  855. package/dist/modules/oauth/messages.js +129 -0
  856. package/dist/modules/oauth/messages.js.map +1 -0
  857. package/dist/modules/oauth/models.d.ts +4 -0
  858. package/dist/modules/oauth/models.d.ts.map +1 -0
  859. package/dist/modules/oauth/models.js +83 -0
  860. package/dist/modules/oauth/models.js.map +1 -0
  861. package/dist/modules/oauth/protocol.d.ts +54 -0
  862. package/dist/modules/oauth/protocol.d.ts.map +1 -0
  863. package/dist/modules/oauth/protocol.js +309 -0
  864. package/dist/modules/oauth/protocol.js.map +1 -0
  865. package/dist/modules/oauth/relations.d.ts +3 -0
  866. package/dist/modules/oauth/relations.d.ts.map +1 -0
  867. package/dist/modules/oauth/relations.js +18 -0
  868. package/dist/modules/oauth/relations.js.map +1 -0
  869. package/dist/modules/oauth/routes.d.ts +3 -0
  870. package/dist/modules/oauth/routes.d.ts.map +1 -0
  871. package/dist/modules/oauth/routes.js +185 -0
  872. package/dist/modules/oauth/routes.js.map +1 -0
  873. package/dist/modules/oauth_backend/index.d.ts +4 -0
  874. package/dist/modules/oauth_backend/index.d.ts.map +1 -0
  875. package/dist/modules/oauth_backend/index.js +23 -0
  876. package/dist/modules/oauth_backend/index.js.map +1 -0
  877. package/dist/modules/oauth_backend/menus.d.ts +3 -0
  878. package/dist/modules/oauth_backend/menus.d.ts.map +1 -0
  879. package/dist/modules/oauth_backend/menus.js +17 -0
  880. package/dist/modules/oauth_backend/menus.js.map +1 -0
  881. package/dist/modules/oauth_backend/messages.d.ts +169 -0
  882. package/dist/modules/oauth_backend/messages.d.ts.map +1 -0
  883. package/dist/modules/oauth_backend/messages.js +169 -0
  884. package/dist/modules/oauth_backend/messages.js.map +1 -0
  885. package/dist/modules/oauth_backend/routes.d.ts +3 -0
  886. package/dist/modules/oauth_backend/routes.d.ts.map +1 -0
  887. package/dist/modules/oauth_backend/routes.js +231 -0
  888. package/dist/modules/oauth_backend/routes.js.map +1 -0
  889. package/dist/modules/oauth_backend/screens.d.ts +66 -0
  890. package/dist/modules/oauth_backend/screens.d.ts.map +1 -0
  891. package/dist/modules/oauth_backend/screens.js +323 -0
  892. package/dist/modules/oauth_backend/screens.js.map +1 -0
  893. package/dist/modules/odoo_collaboration_import/functions.d.ts +3 -0
  894. package/dist/modules/odoo_collaboration_import/functions.d.ts.map +1 -0
  895. package/dist/modules/odoo_collaboration_import/functions.js +128 -0
  896. package/dist/modules/odoo_collaboration_import/functions.js.map +1 -0
  897. package/dist/modules/odoo_collaboration_import/index.d.ts +6 -0
  898. package/dist/modules/odoo_collaboration_import/index.d.ts.map +1 -0
  899. package/dist/modules/odoo_collaboration_import/index.js +31 -0
  900. package/dist/modules/odoo_collaboration_import/index.js.map +1 -0
  901. package/dist/modules/odoo_collaboration_import/models.d.ts +3 -0
  902. package/dist/modules/odoo_collaboration_import/models.d.ts.map +1 -0
  903. package/dist/modules/odoo_collaboration_import/models.js +76 -0
  904. package/dist/modules/odoo_collaboration_import/models.js.map +1 -0
  905. package/dist/modules/odoo_collaboration_import/operations.d.ts +14 -0
  906. package/dist/modules/odoo_collaboration_import/operations.d.ts.map +1 -0
  907. package/dist/modules/odoo_collaboration_import/operations.js +1139 -0
  908. package/dist/modules/odoo_collaboration_import/operations.js.map +1 -0
  909. package/dist/modules/odoo_collaboration_import/relations.d.ts +3 -0
  910. package/dist/modules/odoo_collaboration_import/relations.d.ts.map +1 -0
  911. package/dist/modules/odoo_collaboration_import/relations.js +19 -0
  912. package/dist/modules/odoo_collaboration_import/relations.js.map +1 -0
  913. package/dist/modules/odoo_collaboration_import/types.d.ts +58 -0
  914. package/dist/modules/odoo_collaboration_import/types.d.ts.map +1 -0
  915. package/dist/modules/odoo_collaboration_import/types.js +2 -0
  916. package/dist/modules/odoo_collaboration_import/types.js.map +1 -0
  917. package/dist/modules/partner/functions.d.ts +5 -0
  918. package/dist/modules/partner/functions.d.ts.map +1 -0
  919. package/dist/modules/partner/functions.js +563 -0
  920. package/dist/modules/partner/functions.js.map +1 -0
  921. package/dist/modules/partner/index.d.ts +5 -0
  922. package/dist/modules/partner/index.d.ts.map +1 -0
  923. package/dist/modules/partner/index.js +23 -0
  924. package/dist/modules/partner/index.js.map +1 -0
  925. package/dist/modules/partner/messages.d.ts +55 -0
  926. package/dist/modules/partner/messages.d.ts.map +1 -0
  927. package/dist/modules/partner/messages.js +55 -0
  928. package/dist/modules/partner/messages.js.map +1 -0
  929. package/dist/modules/partner/models.d.ts +23 -0
  930. package/dist/modules/partner/models.d.ts.map +1 -0
  931. package/dist/modules/partner/models.js +124 -0
  932. package/dist/modules/partner/models.js.map +1 -0
  933. package/dist/modules/partner/relations.d.ts +4 -0
  934. package/dist/modules/partner/relations.d.ts.map +1 -0
  935. package/dist/modules/partner/relations.js +35 -0
  936. package/dist/modules/partner/relations.js.map +1 -0
  937. package/dist/modules/partner/types.d.ts +17 -0
  938. package/dist/modules/partner/types.d.ts.map +1 -0
  939. package/dist/modules/partner/types.js +14 -0
  940. package/dist/modules/partner/types.js.map +1 -0
  941. package/dist/modules/partner/views.d.ts +4 -0
  942. package/dist/modules/partner/views.d.ts.map +1 -0
  943. package/dist/modules/partner/views.js +19 -0
  944. package/dist/modules/partner/views.js.map +1 -0
  945. package/dist/modules/partner_backend/client/address-view.d.mts +5 -0
  946. package/dist/modules/partner_backend/client/address-view.d.mts.map +1 -0
  947. package/dist/modules/partner_backend/client/address-view.mjs +193 -0
  948. package/dist/modules/partner_backend/client/address-view.mjs.map +1 -0
  949. package/dist/modules/partner_backend/client/address.css +12 -0
  950. package/dist/modules/partner_backend/client/address.d.mts +5 -0
  951. package/dist/modules/partner_backend/client/address.d.mts.map +1 -0
  952. package/dist/modules/partner_backend/client/address.mjs +7 -0
  953. package/dist/modules/partner_backend/client/address.mjs.map +1 -0
  954. package/dist/modules/partner_backend/index.d.ts +5 -0
  955. package/dist/modules/partner_backend/index.d.ts.map +1 -0
  956. package/dist/modules/partner_backend/index.js +178 -0
  957. package/dist/modules/partner_backend/index.js.map +1 -0
  958. package/dist/modules/partner_backend/islands.d.ts +3 -0
  959. package/dist/modules/partner_backend/islands.d.ts.map +1 -0
  960. package/dist/modules/partner_backend/islands.js +23 -0
  961. package/dist/modules/partner_backend/islands.js.map +1 -0
  962. package/dist/modules/partner_backend/menus.d.ts +3 -0
  963. package/dist/modules/partner_backend/menus.d.ts.map +1 -0
  964. package/dist/modules/partner_backend/menus.js +11 -0
  965. package/dist/modules/partner_backend/menus.js.map +1 -0
  966. package/dist/modules/partner_backend/relation-control.d.ts +22 -0
  967. package/dist/modules/partner_backend/relation-control.d.ts.map +1 -0
  968. package/dist/modules/partner_backend/relation-control.js +46 -0
  969. package/dist/modules/partner_backend/relation-control.js.map +1 -0
  970. package/dist/modules/partner_backend/routes.d.ts +3 -0
  971. package/dist/modules/partner_backend/routes.d.ts.map +1 -0
  972. package/dist/modules/partner_backend/routes.js +300 -0
  973. package/dist/modules/partner_backend/routes.js.map +1 -0
  974. package/dist/modules/partner_backend/screens.d.ts +53 -0
  975. package/dist/modules/partner_backend/screens.d.ts.map +1 -0
  976. package/dist/modules/partner_backend/screens.js +169 -0
  977. package/dist/modules/partner_backend/screens.js.map +1 -0
  978. package/dist/modules/pos/functions.d.ts +6 -0
  979. package/dist/modules/pos/functions.d.ts.map +1 -0
  980. package/dist/modules/pos/functions.js +953 -0
  981. package/dist/modules/pos/functions.js.map +1 -0
  982. package/dist/modules/pos/index.d.ts +4 -0
  983. package/dist/modules/pos/index.d.ts.map +1 -0
  984. package/dist/modules/pos/index.js +34 -0
  985. package/dist/modules/pos/index.js.map +1 -0
  986. package/dist/modules/pos/models.d.ts +3 -0
  987. package/dist/modules/pos/models.d.ts.map +1 -0
  988. package/dist/modules/pos/models.js +107 -0
  989. package/dist/modules/pos/models.js.map +1 -0
  990. package/dist/modules/pos/relations.d.ts +3 -0
  991. package/dist/modules/pos/relations.d.ts.map +1 -0
  992. package/dist/modules/pos/relations.js +37 -0
  993. package/dist/modules/pos/relations.js.map +1 -0
  994. package/dist/modules/pos_backend/index.d.ts +3 -0
  995. package/dist/modules/pos_backend/index.d.ts.map +1 -0
  996. package/dist/modules/pos_backend/index.js +654 -0
  997. package/dist/modules/pos_backend/index.js.map +1 -0
  998. package/dist/modules/pos_backend/screens.d.ts +15 -0
  999. package/dist/modules/pos_backend/screens.d.ts.map +1 -0
  1000. package/dist/modules/pos_backend/screens.js +320 -0
  1001. package/dist/modules/pos_backend/screens.js.map +1 -0
  1002. package/dist/modules/pricing/functions.d.ts +6 -0
  1003. package/dist/modules/pricing/functions.d.ts.map +1 -0
  1004. package/dist/modules/pricing/functions.js +318 -0
  1005. package/dist/modules/pricing/functions.js.map +1 -0
  1006. package/dist/modules/pricing/index.d.ts +4 -0
  1007. package/dist/modules/pricing/index.d.ts.map +1 -0
  1008. package/dist/modules/pricing/index.js +30 -0
  1009. package/dist/modules/pricing/index.js.map +1 -0
  1010. package/dist/modules/pricing/models.d.ts +3 -0
  1011. package/dist/modules/pricing/models.d.ts.map +1 -0
  1012. package/dist/modules/pricing/models.js +34 -0
  1013. package/dist/modules/pricing/models.js.map +1 -0
  1014. package/dist/modules/pricing/relations.d.ts +3 -0
  1015. package/dist/modules/pricing/relations.d.ts.map +1 -0
  1016. package/dist/modules/pricing/relations.js +11 -0
  1017. package/dist/modules/pricing/relations.js.map +1 -0
  1018. package/dist/modules/pricing_backend/index.d.ts +3 -0
  1019. package/dist/modules/pricing_backend/index.d.ts.map +1 -0
  1020. package/dist/modules/pricing_backend/index.js +241 -0
  1021. package/dist/modules/pricing_backend/index.js.map +1 -0
  1022. package/dist/modules/pricing_backend/screens.d.ts +13 -0
  1023. package/dist/modules/pricing_backend/screens.d.ts.map +1 -0
  1024. package/dist/modules/pricing_backend/screens.js +182 -0
  1025. package/dist/modules/pricing_backend/screens.js.map +1 -0
  1026. package/dist/modules/product/functions.d.ts +3 -0
  1027. package/dist/modules/product/functions.d.ts.map +1 -0
  1028. package/dist/modules/product/functions.js +627 -0
  1029. package/dist/modules/product/functions.js.map +1 -0
  1030. package/dist/modules/product/index.d.ts +6 -0
  1031. package/dist/modules/product/index.d.ts.map +1 -0
  1032. package/dist/modules/product/index.js +24 -0
  1033. package/dist/modules/product/index.js.map +1 -0
  1034. package/dist/modules/product/messages.d.ts +3 -0
  1035. package/dist/modules/product/messages.d.ts.map +1 -0
  1036. package/dist/modules/product/messages.js +19 -0
  1037. package/dist/modules/product/messages.js.map +1 -0
  1038. package/dist/modules/product/models.d.ts +11 -0
  1039. package/dist/modules/product/models.d.ts.map +1 -0
  1040. package/dist/modules/product/models.js +116 -0
  1041. package/dist/modules/product/models.js.map +1 -0
  1042. package/dist/modules/product/relations.d.ts +8 -0
  1043. package/dist/modules/product/relations.d.ts.map +1 -0
  1044. package/dist/modules/product/relations.js +53 -0
  1045. package/dist/modules/product/relations.js.map +1 -0
  1046. package/dist/modules/product/search.d.ts +73 -0
  1047. package/dist/modules/product/search.d.ts.map +1 -0
  1048. package/dist/modules/product/search.js +66 -0
  1049. package/dist/modules/product/search.js.map +1 -0
  1050. package/dist/modules/product/types.d.ts +14 -0
  1051. package/dist/modules/product/types.d.ts.map +1 -0
  1052. package/dist/modules/product/types.js +2 -0
  1053. package/dist/modules/product/types.js.map +1 -0
  1054. package/dist/modules/product/views.d.ts +4 -0
  1055. package/dist/modules/product/views.d.ts.map +1 -0
  1056. package/dist/modules/product/views.js +7 -0
  1057. package/dist/modules/product/views.js.map +1 -0
  1058. package/dist/modules/product_activity_backend/index.d.ts +5 -0
  1059. package/dist/modules/product_activity_backend/index.d.ts.map +1 -0
  1060. package/dist/modules/product_activity_backend/index.js +29 -0
  1061. package/dist/modules/product_activity_backend/index.js.map +1 -0
  1062. package/dist/modules/product_backend/attributes-screen.d.ts +7 -0
  1063. package/dist/modules/product_backend/attributes-screen.d.ts.map +1 -0
  1064. package/dist/modules/product_backend/attributes-screen.js +76 -0
  1065. package/dist/modules/product_backend/attributes-screen.js.map +1 -0
  1066. package/dist/modules/product_backend/client/editor-view.d.mts +5 -0
  1067. package/dist/modules/product_backend/client/editor-view.d.mts.map +1 -0
  1068. package/dist/modules/product_backend/client/editor-view.mjs +141 -0
  1069. package/dist/modules/product_backend/client/editor-view.mjs.map +1 -0
  1070. package/dist/modules/product_backend/client/product.d.mts +6 -0
  1071. package/dist/modules/product_backend/client/product.d.mts.map +1 -0
  1072. package/dist/modules/product_backend/client/product.mjs +8 -0
  1073. package/dist/modules/product_backend/client/product.mjs.map +1 -0
  1074. package/dist/modules/product_backend/create-screen.d.ts +12 -0
  1075. package/dist/modules/product_backend/create-screen.d.ts.map +1 -0
  1076. package/dist/modules/product_backend/create-screen.js +83 -0
  1077. package/dist/modules/product_backend/create-screen.js.map +1 -0
  1078. package/dist/modules/product_backend/index.d.ts +20 -0
  1079. package/dist/modules/product_backend/index.d.ts.map +1 -0
  1080. package/dist/modules/product_backend/index.js +287 -0
  1081. package/dist/modules/product_backend/index.js.map +1 -0
  1082. package/dist/modules/product_backend/islands.d.ts +3 -0
  1083. package/dist/modules/product_backend/islands.d.ts.map +1 -0
  1084. package/dist/modules/product_backend/islands.js +13 -0
  1085. package/dist/modules/product_backend/islands.js.map +1 -0
  1086. package/dist/modules/product_backend/menus.d.ts +3 -0
  1087. package/dist/modules/product_backend/menus.d.ts.map +1 -0
  1088. package/dist/modules/product_backend/menus.js +25 -0
  1089. package/dist/modules/product_backend/menus.js.map +1 -0
  1090. package/dist/modules/product_backend/routes.d.ts +14 -0
  1091. package/dist/modules/product_backend/routes.d.ts.map +1 -0
  1092. package/dist/modules/product_backend/routes.js +990 -0
  1093. package/dist/modules/product_backend/routes.js.map +1 -0
  1094. package/dist/modules/product_backend/screens.d.ts +68 -0
  1095. package/dist/modules/product_backend/screens.d.ts.map +1 -0
  1096. package/dist/modules/product_backend/screens.js +388 -0
  1097. package/dist/modules/product_backend/screens.js.map +1 -0
  1098. package/dist/modules/product_mail_backend/index.d.ts +5 -0
  1099. package/dist/modules/product_mail_backend/index.d.ts.map +1 -0
  1100. package/dist/modules/product_mail_backend/index.js +30 -0
  1101. package/dist/modules/product_mail_backend/index.js.map +1 -0
  1102. package/dist/modules/product_media/functions.d.ts +3 -0
  1103. package/dist/modules/product_media/functions.d.ts.map +1 -0
  1104. package/dist/modules/product_media/functions.js +183 -0
  1105. package/dist/modules/product_media/functions.js.map +1 -0
  1106. package/dist/modules/product_media/index.d.ts +3 -0
  1107. package/dist/modules/product_media/index.d.ts.map +1 -0
  1108. package/dist/modules/product_media/index.js +29 -0
  1109. package/dist/modules/product_media/index.js.map +1 -0
  1110. package/dist/modules/product_media/models.d.ts +4 -0
  1111. package/dist/modules/product_media/models.d.ts.map +1 -0
  1112. package/dist/modules/product_media/models.js +24 -0
  1113. package/dist/modules/product_media/models.js.map +1 -0
  1114. package/dist/modules/product_media/relations.d.ts +3 -0
  1115. package/dist/modules/product_media/relations.d.ts.map +1 -0
  1116. package/dist/modules/product_media/relations.js +8 -0
  1117. package/dist/modules/product_media/relations.js.map +1 -0
  1118. package/dist/modules/product_variant_activity_backend/index.d.ts +5 -0
  1119. package/dist/modules/product_variant_activity_backend/index.d.ts.map +1 -0
  1120. package/dist/modules/product_variant_activity_backend/index.js +29 -0
  1121. package/dist/modules/product_variant_activity_backend/index.js.map +1 -0
  1122. package/dist/modules/product_variant_mail_backend/index.d.ts +5 -0
  1123. package/dist/modules/product_variant_mail_backend/index.d.ts.map +1 -0
  1124. package/dist/modules/product_variant_mail_backend/index.js +30 -0
  1125. package/dist/modules/product_variant_mail_backend/index.js.map +1 -0
  1126. package/dist/modules/purchase/functions.d.ts +6 -0
  1127. package/dist/modules/purchase/functions.d.ts.map +1 -0
  1128. package/dist/modules/purchase/functions.js +743 -0
  1129. package/dist/modules/purchase/functions.js.map +1 -0
  1130. package/dist/modules/purchase/index.d.ts +4 -0
  1131. package/dist/modules/purchase/index.d.ts.map +1 -0
  1132. package/dist/modules/purchase/index.js +35 -0
  1133. package/dist/modules/purchase/index.js.map +1 -0
  1134. package/dist/modules/purchase/models.d.ts +3 -0
  1135. package/dist/modules/purchase/models.d.ts.map +1 -0
  1136. package/dist/modules/purchase/models.js +68 -0
  1137. package/dist/modules/purchase/models.js.map +1 -0
  1138. package/dist/modules/purchase/relations.d.ts +3 -0
  1139. package/dist/modules/purchase/relations.d.ts.map +1 -0
  1140. package/dist/modules/purchase/relations.js +20 -0
  1141. package/dist/modules/purchase/relations.js.map +1 -0
  1142. package/dist/modules/purchase_backend/index.d.ts +3 -0
  1143. package/dist/modules/purchase_backend/index.d.ts.map +1 -0
  1144. package/dist/modules/purchase_backend/index.js +615 -0
  1145. package/dist/modules/purchase_backend/index.js.map +1 -0
  1146. package/dist/modules/purchase_backend/screens.d.ts +29 -0
  1147. package/dist/modules/purchase_backend/screens.d.ts.map +1 -0
  1148. package/dist/modules/purchase_backend/screens.js +324 -0
  1149. package/dist/modules/purchase_backend/screens.js.map +1 -0
  1150. package/dist/modules/sale/functions.d.ts +6 -0
  1151. package/dist/modules/sale/functions.d.ts.map +1 -0
  1152. package/dist/modules/sale/functions.js +611 -0
  1153. package/dist/modules/sale/functions.js.map +1 -0
  1154. package/dist/modules/sale/index.d.ts +4 -0
  1155. package/dist/modules/sale/index.d.ts.map +1 -0
  1156. package/dist/modules/sale/index.js +35 -0
  1157. package/dist/modules/sale/index.js.map +1 -0
  1158. package/dist/modules/sale/models.d.ts +3 -0
  1159. package/dist/modules/sale/models.d.ts.map +1 -0
  1160. package/dist/modules/sale/models.js +46 -0
  1161. package/dist/modules/sale/models.js.map +1 -0
  1162. package/dist/modules/sale/relations.d.ts +3 -0
  1163. package/dist/modules/sale/relations.d.ts.map +1 -0
  1164. package/dist/modules/sale/relations.js +16 -0
  1165. package/dist/modules/sale/relations.js.map +1 -0
  1166. package/dist/modules/sale_activity_backend/index.d.ts +5 -0
  1167. package/dist/modules/sale_activity_backend/index.d.ts.map +1 -0
  1168. package/dist/modules/sale_activity_backend/index.js +29 -0
  1169. package/dist/modules/sale_activity_backend/index.js.map +1 -0
  1170. package/dist/modules/sale_backend/client/editor-view.d.mts +5 -0
  1171. package/dist/modules/sale_backend/client/editor-view.d.mts.map +1 -0
  1172. package/dist/modules/sale_backend/client/editor-view.mjs +132 -0
  1173. package/dist/modules/sale_backend/client/editor-view.mjs.map +1 -0
  1174. package/dist/modules/sale_backend/client/sale.d.mts +6 -0
  1175. package/dist/modules/sale_backend/client/sale.d.mts.map +1 -0
  1176. package/dist/modules/sale_backend/client/sale.mjs +8 -0
  1177. package/dist/modules/sale_backend/client/sale.mjs.map +1 -0
  1178. package/dist/modules/sale_backend/index.d.ts +3 -0
  1179. package/dist/modules/sale_backend/index.d.ts.map +1 -0
  1180. package/dist/modules/sale_backend/index.js +681 -0
  1181. package/dist/modules/sale_backend/index.js.map +1 -0
  1182. package/dist/modules/sale_backend/invoicing-policies-screen.d.ts +14 -0
  1183. package/dist/modules/sale_backend/invoicing-policies-screen.d.ts.map +1 -0
  1184. package/dist/modules/sale_backend/invoicing-policies-screen.js +36 -0
  1185. package/dist/modules/sale_backend/invoicing-policies-screen.js.map +1 -0
  1186. package/dist/modules/sale_backend/islands.d.ts +3 -0
  1187. package/dist/modules/sale_backend/islands.d.ts.map +1 -0
  1188. package/dist/modules/sale_backend/islands.js +13 -0
  1189. package/dist/modules/sale_backend/islands.js.map +1 -0
  1190. package/dist/modules/sale_backend/order-detail-screen.d.ts +18 -0
  1191. package/dist/modules/sale_backend/order-detail-screen.d.ts.map +1 -0
  1192. package/dist/modules/sale_backend/order-detail-screen.js +217 -0
  1193. package/dist/modules/sale_backend/order-detail-screen.js.map +1 -0
  1194. package/dist/modules/sale_backend/quotations-screen.d.ts +15 -0
  1195. package/dist/modules/sale_backend/quotations-screen.d.ts.map +1 -0
  1196. package/dist/modules/sale_backend/quotations-screen.js +64 -0
  1197. package/dist/modules/sale_backend/quotations-screen.js.map +1 -0
  1198. package/dist/modules/sale_backend/sales-orders-screen.d.ts +12 -0
  1199. package/dist/modules/sale_backend/sales-orders-screen.d.ts.map +1 -0
  1200. package/dist/modules/sale_backend/sales-orders-screen.js +65 -0
  1201. package/dist/modules/sale_backend/sales-orders-screen.js.map +1 -0
  1202. package/dist/modules/sale_backend/screens.d.ts +23 -0
  1203. package/dist/modules/sale_backend/screens.d.ts.map +1 -0
  1204. package/dist/modules/sale_backend/screens.js +275 -0
  1205. package/dist/modules/sale_backend/screens.js.map +1 -0
  1206. package/dist/modules/sale_mail_backend/index.d.ts +5 -0
  1207. package/dist/modules/sale_mail_backend/index.d.ts.map +1 -0
  1208. package/dist/modules/sale_mail_backend/index.js +30 -0
  1209. package/dist/modules/sale_mail_backend/index.js.map +1 -0
  1210. package/dist/modules/stock/functions.d.ts +10 -0
  1211. package/dist/modules/stock/functions.d.ts.map +1 -0
  1212. package/dist/modules/stock/functions.js +1523 -0
  1213. package/dist/modules/stock/functions.js.map +1 -0
  1214. package/dist/modules/stock/index.d.ts +5 -0
  1215. package/dist/modules/stock/index.d.ts.map +1 -0
  1216. package/dist/modules/stock/index.js +35 -0
  1217. package/dist/modules/stock/index.js.map +1 -0
  1218. package/dist/modules/stock/models.d.ts +3 -0
  1219. package/dist/modules/stock/models.d.ts.map +1 -0
  1220. package/dist/modules/stock/models.js +185 -0
  1221. package/dist/modules/stock/models.js.map +1 -0
  1222. package/dist/modules/stock/relations.d.ts +3 -0
  1223. package/dist/modules/stock/relations.d.ts.map +1 -0
  1224. package/dist/modules/stock/relations.js +40 -0
  1225. package/dist/modules/stock/relations.js.map +1 -0
  1226. package/dist/modules/stock/routing.d.ts +7 -0
  1227. package/dist/modules/stock/routing.d.ts.map +1 -0
  1228. package/dist/modules/stock/routing.js +527 -0
  1229. package/dist/modules/stock/routing.js.map +1 -0
  1230. package/dist/modules/stock_activity_backend/index.d.ts +5 -0
  1231. package/dist/modules/stock_activity_backend/index.d.ts.map +1 -0
  1232. package/dist/modules/stock_activity_backend/index.js +29 -0
  1233. package/dist/modules/stock_activity_backend/index.js.map +1 -0
  1234. package/dist/modules/stock_backend/client/editor-view.d.mts +5 -0
  1235. package/dist/modules/stock_backend/client/editor-view.d.mts.map +1 -0
  1236. package/dist/modules/stock_backend/client/editor-view.mjs +147 -0
  1237. package/dist/modules/stock_backend/client/editor-view.mjs.map +1 -0
  1238. package/dist/modules/stock_backend/client/stock.d.mts +6 -0
  1239. package/dist/modules/stock_backend/client/stock.d.mts.map +1 -0
  1240. package/dist/modules/stock_backend/client/stock.mjs +8 -0
  1241. package/dist/modules/stock_backend/client/stock.mjs.map +1 -0
  1242. package/dist/modules/stock_backend/forecast-screen.d.ts +28 -0
  1243. package/dist/modules/stock_backend/forecast-screen.d.ts.map +1 -0
  1244. package/dist/modules/stock_backend/forecast-screen.js +108 -0
  1245. package/dist/modules/stock_backend/forecast-screen.js.map +1 -0
  1246. package/dist/modules/stock_backend/index.d.ts +3 -0
  1247. package/dist/modules/stock_backend/index.d.ts.map +1 -0
  1248. package/dist/modules/stock_backend/index.js +880 -0
  1249. package/dist/modules/stock_backend/index.js.map +1 -0
  1250. package/dist/modules/stock_backend/inventory-screen.d.ts +27 -0
  1251. package/dist/modules/stock_backend/inventory-screen.d.ts.map +1 -0
  1252. package/dist/modules/stock_backend/inventory-screen.js +141 -0
  1253. package/dist/modules/stock_backend/inventory-screen.js.map +1 -0
  1254. package/dist/modules/stock_backend/islands.d.ts +3 -0
  1255. package/dist/modules/stock_backend/islands.d.ts.map +1 -0
  1256. package/dist/modules/stock_backend/islands.js +13 -0
  1257. package/dist/modules/stock_backend/islands.js.map +1 -0
  1258. package/dist/modules/stock_backend/locations-screen.d.ts +18 -0
  1259. package/dist/modules/stock_backend/locations-screen.d.ts.map +1 -0
  1260. package/dist/modules/stock_backend/locations-screen.js +92 -0
  1261. package/dist/modules/stock_backend/locations-screen.js.map +1 -0
  1262. package/dist/modules/stock_backend/lot-screen.d.ts +30 -0
  1263. package/dist/modules/stock_backend/lot-screen.d.ts.map +1 -0
  1264. package/dist/modules/stock_backend/lot-screen.js +86 -0
  1265. package/dist/modules/stock_backend/lot-screen.js.map +1 -0
  1266. package/dist/modules/stock_backend/lots-screen.d.ts +21 -0
  1267. package/dist/modules/stock_backend/lots-screen.d.ts.map +1 -0
  1268. package/dist/modules/stock_backend/lots-screen.js +79 -0
  1269. package/dist/modules/stock_backend/lots-screen.js.map +1 -0
  1270. package/dist/modules/stock_backend/picking-types-screen.d.ts +21 -0
  1271. package/dist/modules/stock_backend/picking-types-screen.d.ts.map +1 -0
  1272. package/dist/modules/stock_backend/picking-types-screen.js +110 -0
  1273. package/dist/modules/stock_backend/picking-types-screen.js.map +1 -0
  1274. package/dist/modules/stock_backend/replenishment-screen.d.ts +29 -0
  1275. package/dist/modules/stock_backend/replenishment-screen.d.ts.map +1 -0
  1276. package/dist/modules/stock_backend/replenishment-screen.js +131 -0
  1277. package/dist/modules/stock_backend/replenishment-screen.js.map +1 -0
  1278. package/dist/modules/stock_backend/routes.d.ts +3 -0
  1279. package/dist/modules/stock_backend/routes.d.ts.map +1 -0
  1280. package/dist/modules/stock_backend/routes.js +950 -0
  1281. package/dist/modules/stock_backend/routes.js.map +1 -0
  1282. package/dist/modules/stock_backend/screens.d.ts +14 -0
  1283. package/dist/modules/stock_backend/screens.d.ts.map +1 -0
  1284. package/dist/modules/stock_backend/screens.js +40 -0
  1285. package/dist/modules/stock_backend/screens.js.map +1 -0
  1286. package/dist/modules/stock_backend/stock-route-screen.d.ts +30 -0
  1287. package/dist/modules/stock_backend/stock-route-screen.d.ts.map +1 -0
  1288. package/dist/modules/stock_backend/stock-route-screen.js +129 -0
  1289. package/dist/modules/stock_backend/stock-route-screen.js.map +1 -0
  1290. package/dist/modules/stock_backend/stock-routes-screen.d.ts +17 -0
  1291. package/dist/modules/stock_backend/stock-routes-screen.d.ts.map +1 -0
  1292. package/dist/modules/stock_backend/stock-routes-screen.js +60 -0
  1293. package/dist/modules/stock_backend/stock-routes-screen.js.map +1 -0
  1294. package/dist/modules/stock_backend/transfer-screen.d.ts +26 -0
  1295. package/dist/modules/stock_backend/transfer-screen.d.ts.map +1 -0
  1296. package/dist/modules/stock_backend/transfer-screen.js +95 -0
  1297. package/dist/modules/stock_backend/transfer-screen.js.map +1 -0
  1298. package/dist/modules/stock_backend/transfers-screen.d.ts +21 -0
  1299. package/dist/modules/stock_backend/transfers-screen.d.ts.map +1 -0
  1300. package/dist/modules/stock_backend/transfers-screen.js +88 -0
  1301. package/dist/modules/stock_backend/transfers-screen.js.map +1 -0
  1302. package/dist/modules/stock_backend/warehouses-screen.d.ts +17 -0
  1303. package/dist/modules/stock_backend/warehouses-screen.d.ts.map +1 -0
  1304. package/dist/modules/stock_backend/warehouses-screen.js +96 -0
  1305. package/dist/modules/stock_backend/warehouses-screen.js.map +1 -0
  1306. package/dist/modules/stock_lot_activity_backend/index.d.ts +5 -0
  1307. package/dist/modules/stock_lot_activity_backend/index.d.ts.map +1 -0
  1308. package/dist/modules/stock_lot_activity_backend/index.js +29 -0
  1309. package/dist/modules/stock_lot_activity_backend/index.js.map +1 -0
  1310. package/dist/modules/stock_lot_mail_backend/index.d.ts +5 -0
  1311. package/dist/modules/stock_lot_mail_backend/index.d.ts.map +1 -0
  1312. package/dist/modules/stock_lot_mail_backend/index.js +30 -0
  1313. package/dist/modules/stock_lot_mail_backend/index.js.map +1 -0
  1314. package/dist/modules/stock_mail_backend/index.d.ts +5 -0
  1315. package/dist/modules/stock_mail_backend/index.d.ts.map +1 -0
  1316. package/dist/modules/stock_mail_backend/index.js +30 -0
  1317. package/dist/modules/stock_mail_backend/index.js.map +1 -0
  1318. package/dist/modules/stock_mail_inbound/index.d.ts +6 -0
  1319. package/dist/modules/stock_mail_inbound/index.d.ts.map +1 -0
  1320. package/dist/modules/stock_mail_inbound/index.js +104 -0
  1321. package/dist/modules/stock_mail_inbound/index.js.map +1 -0
  1322. package/dist/modules/storage/functions.d.ts +3 -0
  1323. package/dist/modules/storage/functions.d.ts.map +1 -0
  1324. package/dist/modules/storage/functions.js +129 -0
  1325. package/dist/modules/storage/functions.js.map +1 -0
  1326. package/dist/modules/storage/index.d.ts +3 -0
  1327. package/dist/modules/storage/index.d.ts.map +1 -0
  1328. package/dist/modules/storage/index.js +31 -0
  1329. package/dist/modules/storage/index.js.map +1 -0
  1330. package/dist/modules/storage/jobs.d.ts +3 -0
  1331. package/dist/modules/storage/jobs.d.ts.map +1 -0
  1332. package/dist/modules/storage/jobs.js +37 -0
  1333. package/dist/modules/storage/jobs.js.map +1 -0
  1334. package/dist/modules/storage/models.d.ts +3 -0
  1335. package/dist/modules/storage/models.d.ts.map +1 -0
  1336. package/dist/modules/storage/models.js +23 -0
  1337. package/dist/modules/storage/models.js.map +1 -0
  1338. package/dist/modules/storage/routes.d.ts +27 -0
  1339. package/dist/modules/storage/routes.d.ts.map +1 -0
  1340. package/dist/modules/storage/routes.js +180 -0
  1341. package/dist/modules/storage/routes.js.map +1 -0
  1342. package/dist/modules/uom/convert.d.ts +52 -0
  1343. package/dist/modules/uom/convert.d.ts.map +1 -0
  1344. package/dist/modules/uom/convert.js +76 -0
  1345. package/dist/modules/uom/convert.js.map +1 -0
  1346. package/dist/modules/uom/functions.d.ts +5 -0
  1347. package/dist/modules/uom/functions.d.ts.map +1 -0
  1348. package/dist/modules/uom/functions.js +235 -0
  1349. package/dist/modules/uom/functions.js.map +1 -0
  1350. package/dist/modules/uom/index.d.ts +5 -0
  1351. package/dist/modules/uom/index.d.ts.map +1 -0
  1352. package/dist/modules/uom/index.js +19 -0
  1353. package/dist/modules/uom/index.js.map +1 -0
  1354. package/dist/modules/uom/messages.d.ts +3 -0
  1355. package/dist/modules/uom/messages.d.ts.map +1 -0
  1356. package/dist/modules/uom/messages.js +19 -0
  1357. package/dist/modules/uom/messages.js.map +1 -0
  1358. package/dist/modules/uom/models.d.ts +4 -0
  1359. package/dist/modules/uom/models.d.ts.map +1 -0
  1360. package/dist/modules/uom/models.js +34 -0
  1361. package/dist/modules/uom/models.js.map +1 -0
  1362. package/dist/modules/uom/relations.d.ts +3 -0
  1363. package/dist/modules/uom/relations.d.ts.map +1 -0
  1364. package/dist/modules/uom/relations.js +7 -0
  1365. package/dist/modules/uom/relations.js.map +1 -0
  1366. package/dist/modules/user/functions.d.ts +8 -0
  1367. package/dist/modules/user/functions.d.ts.map +1 -0
  1368. package/dist/modules/user/functions.js +1094 -0
  1369. package/dist/modules/user/functions.js.map +1 -0
  1370. package/dist/modules/user/index.d.ts +8 -0
  1371. package/dist/modules/user/index.d.ts.map +1 -0
  1372. package/dist/modules/user/index.js +34 -0
  1373. package/dist/modules/user/index.js.map +1 -0
  1374. package/dist/modules/user/login.d.ts +28 -0
  1375. package/dist/modules/user/login.d.ts.map +1 -0
  1376. package/dist/modules/user/login.js +46 -0
  1377. package/dist/modules/user/login.js.map +1 -0
  1378. package/dist/modules/user/messages.d.ts +115 -0
  1379. package/dist/modules/user/messages.d.ts.map +1 -0
  1380. package/dist/modules/user/messages.js +115 -0
  1381. package/dist/modules/user/messages.js.map +1 -0
  1382. package/dist/modules/user/models.d.ts +16 -0
  1383. package/dist/modules/user/models.d.ts.map +1 -0
  1384. package/dist/modules/user/models.js +168 -0
  1385. package/dist/modules/user/models.js.map +1 -0
  1386. package/dist/modules/user/password.d.ts +11 -0
  1387. package/dist/modules/user/password.d.ts.map +1 -0
  1388. package/dist/modules/user/password.js +74 -0
  1389. package/dist/modules/user/password.js.map +1 -0
  1390. package/dist/modules/user/relations.d.ts +3 -0
  1391. package/dist/modules/user/relations.d.ts.map +1 -0
  1392. package/dist/modules/user/relations.js +31 -0
  1393. package/dist/modules/user/relations.js.map +1 -0
  1394. package/dist/modules/user/roles.d.ts +12 -0
  1395. package/dist/modules/user/roles.d.ts.map +1 -0
  1396. package/dist/modules/user/roles.js +254 -0
  1397. package/dist/modules/user/roles.js.map +1 -0
  1398. package/dist/modules/user/routes.d.ts +3 -0
  1399. package/dist/modules/user/routes.d.ts.map +1 -0
  1400. package/dist/modules/user/routes.js +244 -0
  1401. package/dist/modules/user/routes.js.map +1 -0
  1402. package/dist/modules/user/session-context.d.ts +10 -0
  1403. package/dist/modules/user/session-context.d.ts.map +1 -0
  1404. package/dist/modules/user/session-context.js +31 -0
  1405. package/dist/modules/user/session-context.js.map +1 -0
  1406. package/dist/modules/user_backend/index.d.ts +5 -0
  1407. package/dist/modules/user_backend/index.d.ts.map +1 -0
  1408. package/dist/modules/user_backend/index.js +24 -0
  1409. package/dist/modules/user_backend/index.js.map +1 -0
  1410. package/dist/modules/user_backend/menus.d.ts +3 -0
  1411. package/dist/modules/user_backend/menus.d.ts.map +1 -0
  1412. package/dist/modules/user_backend/menus.js +24 -0
  1413. package/dist/modules/user_backend/menus.js.map +1 -0
  1414. package/dist/modules/user_backend/messages.d.ts +189 -0
  1415. package/dist/modules/user_backend/messages.d.ts.map +1 -0
  1416. package/dist/modules/user_backend/messages.js +189 -0
  1417. package/dist/modules/user_backend/messages.js.map +1 -0
  1418. package/dist/modules/user_backend/routes.d.ts +3 -0
  1419. package/dist/modules/user_backend/routes.d.ts.map +1 -0
  1420. package/dist/modules/user_backend/routes.js +474 -0
  1421. package/dist/modules/user_backend/routes.js.map +1 -0
  1422. package/dist/modules/user_backend/screens.d.ts +70 -0
  1423. package/dist/modules/user_backend/screens.d.ts.map +1 -0
  1424. package/dist/modules/user_backend/screens.js +308 -0
  1425. package/dist/modules/user_backend/screens.js.map +1 -0
  1426. package/dist/modules/website/access.d.ts +15 -0
  1427. package/dist/modules/website/access.d.ts.map +1 -0
  1428. package/dist/modules/website/access.js +39 -0
  1429. package/dist/modules/website/access.js.map +1 -0
  1430. package/dist/modules/website/cms.d.ts +3 -0
  1431. package/dist/modules/website/cms.d.ts.map +1 -0
  1432. package/dist/modules/website/cms.js +1142 -0
  1433. package/dist/modules/website/cms.js.map +1 -0
  1434. package/dist/modules/website/content-types.d.ts +4 -0
  1435. package/dist/modules/website/content-types.d.ts.map +1 -0
  1436. package/dist/modules/website/content-types.js +30 -0
  1437. package/dist/modules/website/content-types.js.map +1 -0
  1438. package/dist/modules/website/customer-password.d.ts +4 -0
  1439. package/dist/modules/website/customer-password.d.ts.map +1 -0
  1440. package/dist/modules/website/customer-password.js +51 -0
  1441. package/dist/modules/website/customer-password.js.map +1 -0
  1442. package/dist/modules/website/customer-routes.d.ts +3 -0
  1443. package/dist/modules/website/customer-routes.d.ts.map +1 -0
  1444. package/dist/modules/website/customer-routes.js +322 -0
  1445. package/dist/modules/website/customer-routes.js.map +1 -0
  1446. package/dist/modules/website/customer.d.ts +5 -0
  1447. package/dist/modules/website/customer.d.ts.map +1 -0
  1448. package/dist/modules/website/customer.js +442 -0
  1449. package/dist/modules/website/customer.js.map +1 -0
  1450. package/dist/modules/website/functions.d.ts +3 -0
  1451. package/dist/modules/website/functions.d.ts.map +1 -0
  1452. package/dist/modules/website/functions.js +96 -0
  1453. package/dist/modules/website/functions.js.map +1 -0
  1454. package/dist/modules/website/index.d.ts +4 -0
  1455. package/dist/modules/website/index.d.ts.map +1 -0
  1456. package/dist/modules/website/index.js +152 -0
  1457. package/dist/modules/website/index.js.map +1 -0
  1458. package/dist/modules/website/jobs.d.ts +3 -0
  1459. package/dist/modules/website/jobs.d.ts.map +1 -0
  1460. package/dist/modules/website/jobs.js +25 -0
  1461. package/dist/modules/website/jobs.js.map +1 -0
  1462. package/dist/modules/website/joints.d.ts +4 -0
  1463. package/dist/modules/website/joints.d.ts.map +1 -0
  1464. package/dist/modules/website/joints.js +7 -0
  1465. package/dist/modules/website/joints.js.map +1 -0
  1466. package/dist/modules/website/models.d.ts +8 -0
  1467. package/dist/modules/website/models.d.ts.map +1 -0
  1468. package/dist/modules/website/models.js +260 -0
  1469. package/dist/modules/website/models.js.map +1 -0
  1470. package/dist/modules/website/sections.d.ts +8 -0
  1471. package/dist/modules/website/sections.d.ts.map +1 -0
  1472. package/dist/modules/website/sections.js +16 -0
  1473. package/dist/modules/website/sections.js.map +1 -0
  1474. package/dist/modules/website/tokens.d.ts +2 -0
  1475. package/dist/modules/website/tokens.d.ts.map +1 -0
  1476. package/dist/modules/website/tokens.js +5 -0
  1477. package/dist/modules/website/tokens.js.map +1 -0
  1478. package/dist/modules/website/types.d.ts +6 -0
  1479. package/dist/modules/website/types.d.ts.map +1 -0
  1480. package/dist/modules/website/types.js +2 -0
  1481. package/dist/modules/website/types.js.map +1 -0
  1482. package/dist/modules/website/views.d.ts +4 -0
  1483. package/dist/modules/website/views.d.ts.map +1 -0
  1484. package/dist/modules/website/views.js +5 -0
  1485. package/dist/modules/website/views.js.map +1 -0
  1486. package/dist/modules/website_backend/index.d.ts +3 -0
  1487. package/dist/modules/website_backend/index.d.ts.map +1 -0
  1488. package/dist/modules/website_backend/index.js +290 -0
  1489. package/dist/modules/website_backend/index.js.map +1 -0
  1490. package/dist/modules/website_backend/menus.d.ts +3 -0
  1491. package/dist/modules/website_backend/menus.d.ts.map +1 -0
  1492. package/dist/modules/website_backend/menus.js +54 -0
  1493. package/dist/modules/website_backend/menus.js.map +1 -0
  1494. package/dist/modules/website_backend/routes.d.ts +3 -0
  1495. package/dist/modules/website_backend/routes.d.ts.map +1 -0
  1496. package/dist/modules/website_backend/routes.js +625 -0
  1497. package/dist/modules/website_backend/routes.js.map +1 -0
  1498. package/dist/modules/website_backend/screens.d.ts +114 -0
  1499. package/dist/modules/website_backend/screens.d.ts.map +1 -0
  1500. package/dist/modules/website_backend/screens.js +625 -0
  1501. package/dist/modules/website_backend/screens.js.map +1 -0
  1502. package/dist/modules/website_form/functions.d.ts +3 -0
  1503. package/dist/modules/website_form/functions.d.ts.map +1 -0
  1504. package/dist/modules/website_form/functions.js +305 -0
  1505. package/dist/modules/website_form/functions.js.map +1 -0
  1506. package/dist/modules/website_form/index.d.ts +3 -0
  1507. package/dist/modules/website_form/index.d.ts.map +1 -0
  1508. package/dist/modules/website_form/index.js +72 -0
  1509. package/dist/modules/website_form/index.js.map +1 -0
  1510. package/dist/modules/website_form/models.d.ts +3 -0
  1511. package/dist/modules/website_form/models.d.ts.map +1 -0
  1512. package/dist/modules/website_form/models.js +46 -0
  1513. package/dist/modules/website_form/models.js.map +1 -0
  1514. package/dist/modules/website_form/routes.d.ts +3 -0
  1515. package/dist/modules/website_form/routes.d.ts.map +1 -0
  1516. package/dist/modules/website_form/routes.js +74 -0
  1517. package/dist/modules/website_form/routes.js.map +1 -0
  1518. package/dist/modules/website_form/sections.d.ts +3 -0
  1519. package/dist/modules/website_form/sections.d.ts.map +1 -0
  1520. package/dist/modules/website_form/sections.js +7 -0
  1521. package/dist/modules/website_form/sections.js.map +1 -0
  1522. package/dist/modules/website_hospitality/content-types.d.ts +3 -0
  1523. package/dist/modules/website_hospitality/content-types.d.ts.map +1 -0
  1524. package/dist/modules/website_hospitality/content-types.js +9 -0
  1525. package/dist/modules/website_hospitality/content-types.js.map +1 -0
  1526. package/dist/modules/website_hospitality/functions.d.ts +3 -0
  1527. package/dist/modules/website_hospitality/functions.d.ts.map +1 -0
  1528. package/dist/modules/website_hospitality/functions.js +296 -0
  1529. package/dist/modules/website_hospitality/functions.js.map +1 -0
  1530. package/dist/modules/website_hospitality/index.d.ts +3 -0
  1531. package/dist/modules/website_hospitality/index.d.ts.map +1 -0
  1532. package/dist/modules/website_hospitality/index.js +67 -0
  1533. package/dist/modules/website_hospitality/index.js.map +1 -0
  1534. package/dist/modules/website_hospitality/models.d.ts +3 -0
  1535. package/dist/modules/website_hospitality/models.d.ts.map +1 -0
  1536. package/dist/modules/website_hospitality/models.js +49 -0
  1537. package/dist/modules/website_hospitality/models.js.map +1 -0
  1538. package/dist/modules/website_hospitality/routes.d.ts +3 -0
  1539. package/dist/modules/website_hospitality/routes.d.ts.map +1 -0
  1540. package/dist/modules/website_hospitality/routes.js +78 -0
  1541. package/dist/modules/website_hospitality/routes.js.map +1 -0
  1542. package/dist/modules/website_hospitality/sections.d.ts +3 -0
  1543. package/dist/modules/website_hospitality/sections.d.ts.map +1 -0
  1544. package/dist/modules/website_hospitality/sections.js +11 -0
  1545. package/dist/modules/website_hospitality/sections.js.map +1 -0
  1546. package/dist/modules/website_menu/functions.d.ts +3 -0
  1547. package/dist/modules/website_menu/functions.d.ts.map +1 -0
  1548. package/dist/modules/website_menu/functions.js +79 -0
  1549. package/dist/modules/website_menu/functions.js.map +1 -0
  1550. package/dist/modules/website_menu/index.d.ts +3 -0
  1551. package/dist/modules/website_menu/index.d.ts.map +1 -0
  1552. package/dist/modules/website_menu/index.js +31 -0
  1553. package/dist/modules/website_menu/index.js.map +1 -0
  1554. package/dist/modules/website_menu/models.d.ts +3 -0
  1555. package/dist/modules/website_menu/models.d.ts.map +1 -0
  1556. package/dist/modules/website_menu/models.js +15 -0
  1557. package/dist/modules/website_menu/models.js.map +1 -0
  1558. package/dist/modules/website_menu/sections.d.ts +3 -0
  1559. package/dist/modules/website_menu/sections.d.ts.map +1 -0
  1560. package/dist/modules/website_menu/sections.js +4 -0
  1561. package/dist/modules/website_menu/sections.js.map +1 -0
  1562. package/dist/modules/website_menu/views.d.ts +3 -0
  1563. package/dist/modules/website_menu/views.d.ts.map +1 -0
  1564. package/dist/modules/website_menu/views.js +4 -0
  1565. package/dist/modules/website_menu/views.js.map +1 -0
  1566. package/dist/modules/website_retail/content-types.d.ts +3 -0
  1567. package/dist/modules/website_retail/content-types.d.ts.map +1 -0
  1568. package/dist/modules/website_retail/content-types.js +10 -0
  1569. package/dist/modules/website_retail/content-types.js.map +1 -0
  1570. package/dist/modules/website_retail/functions.d.ts +3 -0
  1571. package/dist/modules/website_retail/functions.d.ts.map +1 -0
  1572. package/dist/modules/website_retail/functions.js +321 -0
  1573. package/dist/modules/website_retail/functions.js.map +1 -0
  1574. package/dist/modules/website_retail/index.d.ts +3 -0
  1575. package/dist/modules/website_retail/index.d.ts.map +1 -0
  1576. package/dist/modules/website_retail/index.js +63 -0
  1577. package/dist/modules/website_retail/index.js.map +1 -0
  1578. package/dist/modules/website_retail/models.d.ts +3 -0
  1579. package/dist/modules/website_retail/models.d.ts.map +1 -0
  1580. package/dist/modules/website_retail/models.js +50 -0
  1581. package/dist/modules/website_retail/models.js.map +1 -0
  1582. package/dist/modules/website_retail/sections.d.ts +3 -0
  1583. package/dist/modules/website_retail/sections.d.ts.map +1 -0
  1584. package/dist/modules/website_retail/sections.js +11 -0
  1585. package/dist/modules/website_retail/sections.js.map +1 -0
  1586. package/dist/modules/website_search/client/search.d.mts +6 -0
  1587. package/dist/modules/website_search/client/search.d.mts.map +1 -0
  1588. package/dist/modules/website_search/client/search.mjs +25 -0
  1589. package/dist/modules/website_search/client/search.mjs.map +1 -0
  1590. package/dist/modules/website_search/fills.d.ts +3 -0
  1591. package/dist/modules/website_search/fills.d.ts.map +1 -0
  1592. package/dist/modules/website_search/fills.js +5 -0
  1593. package/dist/modules/website_search/fills.js.map +1 -0
  1594. package/dist/modules/website_search/index.d.ts +3 -0
  1595. package/dist/modules/website_search/index.d.ts.map +1 -0
  1596. package/dist/modules/website_search/index.js +28 -0
  1597. package/dist/modules/website_search/index.js.map +1 -0
  1598. package/dist/modules/website_search/islands.d.ts +7 -0
  1599. package/dist/modules/website_search/islands.d.ts.map +1 -0
  1600. package/dist/modules/website_search/islands.js +23 -0
  1601. package/dist/modules/website_search/islands.js.map +1 -0
  1602. package/dist/modules/website_seo/extend.d.ts +7 -0
  1603. package/dist/modules/website_seo/extend.d.ts.map +1 -0
  1604. package/dist/modules/website_seo/extend.js +20 -0
  1605. package/dist/modules/website_seo/extend.js.map +1 -0
  1606. package/dist/modules/website_seo/fills.d.ts +3 -0
  1607. package/dist/modules/website_seo/fills.d.ts.map +1 -0
  1608. package/dist/modules/website_seo/fills.js +8 -0
  1609. package/dist/modules/website_seo/fills.js.map +1 -0
  1610. package/dist/modules/website_seo/index.d.ts +3 -0
  1611. package/dist/modules/website_seo/index.d.ts.map +1 -0
  1612. package/dist/modules/website_seo/index.js +30 -0
  1613. package/dist/modules/website_seo/index.js.map +1 -0
  1614. package/dist/modules/website_seo/views.d.ts +3 -0
  1615. package/dist/modules/website_seo/views.d.ts.map +1 -0
  1616. package/dist/modules/website_seo/views.js +5 -0
  1617. package/dist/modules/website_seo/views.js.map +1 -0
  1618. package/dist/themes/default/index.d.ts +3 -0
  1619. package/dist/themes/default/index.d.ts.map +1 -0
  1620. package/dist/themes/default/index.js +16 -0
  1621. package/dist/themes/default/index.js.map +1 -0
  1622. package/dist/themes/default/templates/layout.ktl +7 -0
  1623. package/dist/themes/default/templates/product.detail.ktl +10 -0
  1624. package/dist/themes/default/templates/product.related_row.ktl +1 -0
  1625. package/dist/themes/hospitality/assets/theme.css +109 -0
  1626. package/dist/themes/hospitality/index.d.ts +3 -0
  1627. package/dist/themes/hospitality/index.d.ts.map +1 -0
  1628. package/dist/themes/hospitality/index.js +26 -0
  1629. package/dist/themes/hospitality/index.js.map +1 -0
  1630. package/dist/themes/hospitality/templates/layout.ktl +17 -0
  1631. package/dist/themes/hospitality/templates/menu.item.ktl +1 -0
  1632. package/dist/themes/hospitality/templates/menu.primary.ktl +1 -0
  1633. package/dist/themes/hospitality/templates/website.hero.ktl +6 -0
  1634. package/dist/themes/hospitality/templates/website.page.ktl +1 -0
  1635. package/dist/themes/hospitality/templates/website.rich_text.ktl +3 -0
  1636. package/dist/themes/hospitality/templates/website_form.form.ktl +1 -0
  1637. package/dist/themes/hospitality/templates/website_hospitality.booking.ktl +1 -0
  1638. package/dist/themes/hospitality/templates/website_hospitality.stays.ktl +1 -0
  1639. package/dist/themes/hospitality/tokens.d.ts +2 -0
  1640. package/dist/themes/hospitality/tokens.d.ts.map +1 -0
  1641. package/dist/themes/hospitality/tokens.js +9 -0
  1642. package/dist/themes/hospitality/tokens.js.map +1 -0
  1643. package/dist/themes/paper/index.d.ts +9 -0
  1644. package/dist/themes/paper/index.d.ts.map +1 -0
  1645. package/dist/themes/paper/index.js +30 -0
  1646. package/dist/themes/paper/index.js.map +1 -0
  1647. package/dist/themes/paper/templates/layout.ktl +14 -0
  1648. package/dist/themes/paper/templates/menu.item.ktl +3 -0
  1649. package/dist/themes/paper/templates/menu.primary.ktl +3 -0
  1650. package/dist/themes/paper/templates/website.hero.ktl +6 -0
  1651. package/dist/themes/paper/templates/website.page.ktl +2 -0
  1652. package/dist/themes/paper/templates/website.rich_text.ktl +4 -0
  1653. package/dist/themes/paper/tokens.d.ts +2 -0
  1654. package/dist/themes/paper/tokens.d.ts.map +1 -0
  1655. package/dist/themes/paper/tokens.js +11 -0
  1656. package/dist/themes/paper/tokens.js.map +1 -0
  1657. package/dist/themes/retail/assets/theme.css +114 -0
  1658. package/dist/themes/retail/index.d.ts +3 -0
  1659. package/dist/themes/retail/index.d.ts.map +1 -0
  1660. package/dist/themes/retail/index.js +26 -0
  1661. package/dist/themes/retail/index.js.map +1 -0
  1662. package/dist/themes/retail/templates/layout.ktl +5 -0
  1663. package/dist/themes/retail/templates/menu.item.ktl +1 -0
  1664. package/dist/themes/retail/templates/menu.primary.ktl +1 -0
  1665. package/dist/themes/retail/templates/website.hero.ktl +1 -0
  1666. package/dist/themes/retail/templates/website.page.ktl +1 -0
  1667. package/dist/themes/retail/templates/website.rich_text.ktl +1 -0
  1668. package/dist/themes/retail/templates/website_form.form.ktl +1 -0
  1669. package/dist/themes/retail/templates/website_retail.cart.ktl +1 -0
  1670. package/dist/themes/retail/templates/website_retail.products.ktl +1 -0
  1671. package/dist/themes/retail/tokens.d.ts +2 -0
  1672. package/dist/themes/retail/tokens.d.ts.map +1 -0
  1673. package/dist/themes/retail/tokens.js +9 -0
  1674. package/dist/themes/retail/tokens.js.map +1 -0
  1675. package/dist/ui/actions.d.ts +38 -0
  1676. package/dist/ui/actions.d.ts.map +1 -0
  1677. package/dist/ui/actions.js +20 -0
  1678. package/dist/ui/actions.js.map +1 -0
  1679. package/dist/ui/activity.d.ts +4 -0
  1680. package/dist/ui/activity.d.ts.map +1 -0
  1681. package/dist/ui/activity.js +73 -0
  1682. package/dist/ui/activity.js.map +1 -0
  1683. package/dist/ui/attachments.d.ts +18 -0
  1684. package/dist/ui/attachments.d.ts.map +1 -0
  1685. package/dist/ui/attachments.js +15 -0
  1686. package/dist/ui/attachments.js.map +1 -0
  1687. package/dist/ui/auth.d.ts +9 -0
  1688. package/dist/ui/auth.d.ts.map +1 -0
  1689. package/dist/ui/auth.js +44 -0
  1690. package/dist/ui/auth.js.map +1 -0
  1691. package/dist/ui/calendar.d.ts +4 -0
  1692. package/dist/ui/calendar.d.ts.map +1 -0
  1693. package/dist/ui/calendar.js +51 -0
  1694. package/dist/ui/calendar.js.map +1 -0
  1695. package/dist/ui/chrome.d.ts +66 -0
  1696. package/dist/ui/chrome.d.ts.map +1 -0
  1697. package/dist/ui/chrome.js +39 -0
  1698. package/dist/ui/chrome.js.map +1 -0
  1699. package/dist/ui/client/activity-view.d.mts +12 -0
  1700. package/dist/ui/client/activity-view.d.mts.map +1 -0
  1701. package/dist/ui/client/activity-view.mjs +393 -0
  1702. package/dist/ui/client/activity-view.mjs.map +1 -0
  1703. package/dist/ui/client/activity.css +269 -0
  1704. package/dist/ui/client/activity.d.mts +11 -0
  1705. package/dist/ui/client/activity.d.mts.map +1 -0
  1706. package/dist/ui/client/activity.mjs +10 -0
  1707. package/dist/ui/client/activity.mjs.map +1 -0
  1708. package/dist/ui/client/calendar-view.d.mts +5 -0
  1709. package/dist/ui/client/calendar-view.d.mts.map +1 -0
  1710. package/dist/ui/client/calendar-view.mjs +266 -0
  1711. package/dist/ui/client/calendar-view.mjs.map +1 -0
  1712. package/dist/ui/client/calendar.css +170 -0
  1713. package/dist/ui/client/calendar.d.mts +6 -0
  1714. package/dist/ui/client/calendar.d.mts.map +1 -0
  1715. package/dist/ui/client/calendar.mjs +6 -0
  1716. package/dist/ui/client/calendar.mjs.map +1 -0
  1717. package/dist/ui/client/mail-view.d.mts +9 -0
  1718. package/dist/ui/client/mail-view.d.mts.map +1 -0
  1719. package/dist/ui/client/mail-view.mjs +350 -0
  1720. package/dist/ui/client/mail-view.mjs.map +1 -0
  1721. package/dist/ui/client/mail.css +230 -0
  1722. package/dist/ui/client/mail.d.mts +11 -0
  1723. package/dist/ui/client/mail.d.mts.map +1 -0
  1724. package/dist/ui/client/mail.mjs +10 -0
  1725. package/dist/ui/client/mail.mjs.map +1 -0
  1726. package/dist/ui/data.d.ts +25 -0
  1727. package/dist/ui/data.d.ts.map +1 -0
  1728. package/dist/ui/data.js +23 -0
  1729. package/dist/ui/data.js.map +1 -0
  1730. package/dist/ui/date-picker.d.ts +36 -0
  1731. package/dist/ui/date-picker.d.ts.map +1 -0
  1732. package/dist/ui/date-picker.js +40 -0
  1733. package/dist/ui/date-picker.js.map +1 -0
  1734. package/dist/ui/form.d.ts +67 -0
  1735. package/dist/ui/form.d.ts.map +1 -0
  1736. package/dist/ui/form.js +75 -0
  1737. package/dist/ui/form.js.map +1 -0
  1738. package/dist/ui/format.d.ts +4 -0
  1739. package/dist/ui/format.d.ts.map +1 -0
  1740. package/dist/ui/format.js +33 -0
  1741. package/dist/ui/format.js.map +1 -0
  1742. package/dist/ui/hooks.d.ts +5 -0
  1743. package/dist/ui/hooks.d.ts.map +1 -0
  1744. package/dist/ui/hooks.js +82 -0
  1745. package/dist/ui/hooks.js.map +1 -0
  1746. package/dist/ui/icons.d.ts +12 -0
  1747. package/dist/ui/icons.d.ts.map +1 -0
  1748. package/dist/ui/icons.js +76 -0
  1749. package/dist/ui/icons.js.map +1 -0
  1750. package/dist/ui/index.d.ts +39 -0
  1751. package/dist/ui/index.d.ts.map +1 -0
  1752. package/dist/ui/index.js +39 -0
  1753. package/dist/ui/index.js.map +1 -0
  1754. package/dist/ui/layout.d.ts +80 -0
  1755. package/dist/ui/layout.d.ts.map +1 -0
  1756. package/dist/ui/layout.js +86 -0
  1757. package/dist/ui/layout.js.map +1 -0
  1758. package/dist/ui/mail.d.ts +5 -0
  1759. package/dist/ui/mail.d.ts.map +1 -0
  1760. package/dist/ui/mail.js +69 -0
  1761. package/dist/ui/mail.js.map +1 -0
  1762. package/dist/ui/media.d.ts +42 -0
  1763. package/dist/ui/media.d.ts.map +1 -0
  1764. package/dist/ui/media.js +48 -0
  1765. package/dist/ui/media.js.map +1 -0
  1766. package/dist/ui/modal.d.ts +9 -0
  1767. package/dist/ui/modal.d.ts.map +1 -0
  1768. package/dist/ui/modal.js +13 -0
  1769. package/dist/ui/modal.js.map +1 -0
  1770. package/dist/ui/nav.d.ts +34 -0
  1771. package/dist/ui/nav.d.ts.map +1 -0
  1772. package/dist/ui/nav.js +77 -0
  1773. package/dist/ui/nav.js.map +1 -0
  1774. package/dist/ui/navigation.d.ts +22 -0
  1775. package/dist/ui/navigation.d.ts.map +1 -0
  1776. package/dist/ui/navigation.js +9 -0
  1777. package/dist/ui/navigation.js.map +1 -0
  1778. package/dist/ui/primitives.d.ts +61 -0
  1779. package/dist/ui/primitives.d.ts.map +1 -0
  1780. package/dist/ui/primitives.js +74 -0
  1781. package/dist/ui/primitives.js.map +1 -0
  1782. package/dist/ui/record.d.ts +44 -0
  1783. package/dist/ui/record.d.ts.map +1 -0
  1784. package/dist/ui/record.js +39 -0
  1785. package/dist/ui/record.js.map +1 -0
  1786. package/dist/ui/schedule.d.ts +34 -0
  1787. package/dist/ui/schedule.d.ts.map +1 -0
  1788. package/dist/ui/schedule.js +39 -0
  1789. package/dist/ui/schedule.js.map +1 -0
  1790. package/dist/ui/state.d.ts +19 -0
  1791. package/dist/ui/state.d.ts.map +1 -0
  1792. package/dist/ui/state.js +34 -0
  1793. package/dist/ui/state.js.map +1 -0
  1794. package/dist/ui/surfaces.d.ts +38 -0
  1795. package/dist/ui/surfaces.d.ts.map +1 -0
  1796. package/dist/ui/surfaces.js +36 -0
  1797. package/dist/ui/surfaces.js.map +1 -0
  1798. package/dist/ui/table.d.ts +48 -0
  1799. package/dist/ui/table.d.ts.map +1 -0
  1800. package/dist/ui/table.js +53 -0
  1801. package/dist/ui/table.js.map +1 -0
  1802. package/package.json +57 -0
@@ -0,0 +1,1523 @@
1
+ import { defineFn, eq, from } from '@ketvietlab/ketjs';
2
+ import { compareQty } from '../uom/convert.js';
3
+ import { pushFromCompletedMove } from './routing.js';
4
+ export const RECEPTION_STEPS = ['one_step', 'two_steps', 'three_steps'];
5
+ export const DELIVERY_STEPS = ['ship_only', 'pick_ship', 'pick_pack_ship'];
6
+ export const PICKING_TYPE_CODES = ['incoming', 'outgoing', 'internal'];
7
+ export const LOCATION_USAGES = [
8
+ 'supplier',
9
+ 'view',
10
+ 'internal',
11
+ 'customer',
12
+ 'inventory',
13
+ 'production',
14
+ 'transit',
15
+ ];
16
+ export const MOVE_STATES = [
17
+ 'draft',
18
+ 'waiting',
19
+ 'confirmed',
20
+ 'partially_available',
21
+ 'assigned',
22
+ 'done',
23
+ 'cancel',
24
+ ];
25
+ export const PICKING_STATES = ['draft', 'waiting', 'confirmed', 'assigned', 'done', 'cancel'];
26
+ export const TRACKING = ['none', 'lot', 'serial'];
27
+ const invalid = (field, message) => ({ ok: false, errors: [{ field, message }] });
28
+ const company = (ctx) => {
29
+ if (!ctx.scope.company)
30
+ throw new Error('stock operation requires a company in scope');
31
+ return ctx.scope.company;
32
+ };
33
+ const lotKey = (lotId) => (lotId == null ? '' : String(lotId));
34
+ const quantId = (ctx, productId, locationId, lotId) => `${company(ctx)}:${String(productId)}:${String(locationId)}:${lotKey(lotId) || '_'}`;
35
+ async function trackingOf(ctx, productId) {
36
+ const product = (await ctx.db.select('product.Product', { id: productId }))[0];
37
+ if (!product)
38
+ throw new Error(`unknown product ${String(productId)}`);
39
+ const template = (await ctx.db.select('product.Template', { id: product.templateId }))[0];
40
+ const tracking = String(template?.tracking ?? 'none');
41
+ return TRACKING.includes(tracking) ? tracking : 'none';
42
+ }
43
+ async function isStorable(ctx, productId) {
44
+ const product = (await ctx.db.select('product.Product', { id: productId }))[0];
45
+ const template = product && (await ctx.db.select('product.Template', { id: product.templateId }))[0];
46
+ return Boolean(template?.isStorable);
47
+ }
48
+ async function mutateQuant(ctx, args) {
49
+ const id = quantId(ctx, args.productId, args.locationId, args.lotId);
50
+ for (let attempt = 0; attempt < 8; attempt++) {
51
+ const current = (await ctx.db.select('stock.Quant', { id }))[0];
52
+ if (!current) {
53
+ // Odoo keeps the other side of completed moves on supplier, customer and
54
+ // inventory locations as well. Those virtual locations legitimately carry
55
+ // negative quantities; only a positive physical balance can be reserved.
56
+ if (args.reserved < 0 || args.reserved > Math.max(args.quantity, 0))
57
+ throw new Error('quant cannot become over-reserved');
58
+ const inserted = await ctx.db.insertIfAbsent('stock.Quant', {
59
+ id,
60
+ productId: args.productId,
61
+ locationId: args.locationId,
62
+ lotId: args.lotId ?? null,
63
+ lotKey: lotKey(args.lotId),
64
+ quantity: String(args.quantity),
65
+ reservedQuantity: String(args.reserved),
66
+ inDate: new Date().toISOString(),
67
+ version: 0,
68
+ });
69
+ // A dry run writes nothing, so there is no row to re-read and nothing for the
70
+ // retry loop to converge on. Report the quant that would have been created
71
+ // rather than spinning eight times and blaming concurrency.
72
+ if ('dryRun' in inserted)
73
+ return {
74
+ id,
75
+ productId: args.productId,
76
+ locationId: args.locationId,
77
+ lotId: args.lotId ?? null,
78
+ lotKey: lotKey(args.lotId),
79
+ quantity: args.quantity,
80
+ reservedQuantity: args.reserved,
81
+ version: 0,
82
+ };
83
+ if (inserted.inserted)
84
+ return (await ctx.db.select('stock.Quant', { id }))[0];
85
+ continue;
86
+ }
87
+ const quantity = Number(current.quantity) + args.quantity;
88
+ const reservedQuantity = Number(current.reservedQuantity) + args.reserved;
89
+ if (reservedQuantity < -1e-12 || reservedQuantity - Math.max(quantity, 0) > 1e-12)
90
+ throw new Error(`quant ${id} cannot become over-reserved`);
91
+ const changed = await ctx.db.compareAndSet('stock.Quant', { id }, {
92
+ quantity: current.quantity,
93
+ reservedQuantity: current.reservedQuantity,
94
+ version: current.version,
95
+ }, {
96
+ quantity: String(quantity),
97
+ reservedQuantity: String(reservedQuantity),
98
+ version: Number(current.version) + 1,
99
+ });
100
+ if ('dryRun' in changed || changed.matched)
101
+ return { ...current, quantity, reservedQuantity, version: Number(current.version) + 1 };
102
+ }
103
+ throw new Error(`concurrent quant update did not settle for ${id}`);
104
+ }
105
+ /** How much of a quant is already spoken for; 0 when the quant does not exist. */
106
+ async function reservedOn(ctx, productId, locationId, lotId) {
107
+ const id = quantId(ctx, productId, locationId, lotId);
108
+ const quant = (await ctx.db.select('stock.Quant', { id }))[0];
109
+ return quant ? Number(quant.reservedQuantity) : 0;
110
+ }
111
+ async function updatePickingState(ctx, pickingId) {
112
+ const picking = (await ctx.db.select('stock.Picking', { id: pickingId }))[0];
113
+ // draft belongs to confirmPicking and cancel is terminal. Deriving a state from the
114
+ // moves and writing it unconditionally let a reservation confirm a draft transfer
115
+ // and resurrect a cancelled one.
116
+ if (!picking || picking.state === 'draft' || picking.state === 'cancel')
117
+ return;
118
+ const moves = await ctx.db.select('stock.Move', { pickingId });
119
+ const live = moves.filter((move) => move.state !== 'cancel');
120
+ let state = 'confirmed';
121
+ if (moves.length && !live.length)
122
+ state = 'cancel';
123
+ else if (live.length && live.every((move) => move.state === 'done'))
124
+ state = 'done';
125
+ else if (live.some((move) => move.state === 'assigned' || move.state === 'partially_available'))
126
+ state = 'assigned';
127
+ else if (live.some((move) => move.state === 'waiting'))
128
+ state = 'waiting';
129
+ await ctx.db.update('stock.Picking', { id: pickingId }, { state });
130
+ }
131
+ export const functions = {
132
+ listStorableProducts: defineFn({
133
+ input: {},
134
+ effects: ['read:product.Template', 'read:product.Product'],
135
+ agent: true,
136
+ handler: (ctx) => {
137
+ const Template = ctx.table('product.Template');
138
+ return ctx.db.all(from(Template)
139
+ .where(eq(Template.active, true))
140
+ .where(eq(Template.isStorable, true))
141
+ .preload('variants'));
142
+ },
143
+ }),
144
+ getProductConfig: defineFn({
145
+ input: { templateId: 'id' },
146
+ output: { templateId: 'id', isStorable: 'bool', tracking: 'text' },
147
+ effects: ['read:product.Template'],
148
+ agent: true,
149
+ handler: async (ctx, args) => {
150
+ const template = (await ctx.db.select('product.Template', { id: args.templateId }))[0];
151
+ return template
152
+ ? {
153
+ templateId: args.templateId,
154
+ isStorable: Boolean(template.isStorable),
155
+ tracking: String(template.tracking ?? 'none'),
156
+ }
157
+ : null;
158
+ },
159
+ }),
160
+ configureProduct: defineFn({
161
+ input: { templateId: 'id', isStorable: 'bool', tracking: 'text?' },
162
+ output: { ok: 'bool', id: 'id?', errors: 'json?' },
163
+ effects: ['read:product.Template', 'write:product.Template'],
164
+ idempotent: true,
165
+ agent: true,
166
+ handler: async (ctx, args) => {
167
+ const template = (await ctx.db.select('product.Template', { id: args.templateId }))[0];
168
+ if (!template)
169
+ return invalid('templateId', 'template không tồn tại');
170
+ const tracking = String(args.tracking ?? 'none');
171
+ if (!TRACKING.includes(tracking))
172
+ return invalid('tracking', `phải là: ${TRACKING.join(', ')}`);
173
+ if (!args.isStorable && tracking !== 'none')
174
+ return invalid('tracking', 'sản phẩm không lưu kho phải dùng tracking none');
175
+ await ctx.db.update('product.Template', { id: args.templateId }, { isStorable: args.isStorable, tracking });
176
+ return { ok: true, id: args.templateId };
177
+ },
178
+ }),
179
+ listWarehouses: defineFn({
180
+ input: {},
181
+ effects: ['read:stock.Warehouse'],
182
+ agent: true,
183
+ handler: (ctx) => ctx.db.select('stock.Warehouse', { active: true }),
184
+ }),
185
+ listPickings: defineFn({
186
+ input: { state: 'text?' },
187
+ effects: ['read:stock.Picking'],
188
+ agent: true,
189
+ handler: async (ctx, args) => args.state ? ctx.db.select('stock.Picking', { state: args.state }) : ctx.db.select('stock.Picking'),
190
+ }),
191
+ getPicking: defineFn({
192
+ input: { id: 'id' },
193
+ effects: ['read:stock.Picking', 'read:stock.Move', 'read:stock.MoveLine'],
194
+ agent: true,
195
+ handler: async (ctx, args) => {
196
+ const picking = (await ctx.db.select('stock.Picking', { id: args.id }))[0];
197
+ if (!picking)
198
+ return null;
199
+ const moves = await ctx.db.select('stock.Move', { pickingId: args.id });
200
+ return {
201
+ ...picking,
202
+ moves: await Promise.all(moves.map(async (move) => ({
203
+ ...move,
204
+ lines: await ctx.db.select('stock.MoveLine', { moveId: move.id }),
205
+ }))),
206
+ };
207
+ },
208
+ }),
209
+ listLocations: defineFn({
210
+ input: { warehouseId: 'id?' },
211
+ effects: ['read:stock.Location'],
212
+ agent: true,
213
+ handler: (ctx, args) => ctx.db.select('stock.Location', args.warehouseId ? { warehouseId: args.warehouseId } : {}),
214
+ }),
215
+ listPickingTypes: defineFn({
216
+ input: {},
217
+ effects: ['read:stock.PickingType'],
218
+ agent: true,
219
+ handler: (ctx) => ctx.db.select('stock.PickingType', { active: true }),
220
+ }),
221
+ listLots: defineFn({
222
+ input: { productId: 'id?' },
223
+ effects: ['read:stock.Lot'],
224
+ agent: true,
225
+ handler: (ctx, args) => ctx.db.select('stock.Lot', args.productId ? { productId: args.productId } : {}),
226
+ }),
227
+ listQuants: defineFn({
228
+ input: { productId: 'id?', locationId: 'id?' },
229
+ effects: ['read:stock.Quant'],
230
+ agent: true,
231
+ handler: (ctx, args) => ctx.db.select('stock.Quant', {
232
+ ...(args.productId ? { productId: args.productId } : {}),
233
+ ...(args.locationId ? { locationId: args.locationId } : {}),
234
+ }),
235
+ }),
236
+ saveWarehouse: defineFn({
237
+ input: { id: 'id', name: 'text', code: 'text', receptionSteps: 'text?', deliverySteps: 'text?' },
238
+ output: { ok: 'bool', id: 'id?', errors: 'json?' },
239
+ effects: [
240
+ 'read:stock.Warehouse',
241
+ 'write:stock.Warehouse',
242
+ 'read:stock.Location',
243
+ 'write:stock.Location',
244
+ 'read:stock.PickingType',
245
+ 'write:stock.PickingType',
246
+ 'read:stock.Route',
247
+ 'write:stock.Route',
248
+ 'read:stock.Rule',
249
+ 'write:stock.Rule',
250
+ 'read:stock.WarehouseRoute',
251
+ 'write:stock.WarehouseRoute',
252
+ ],
253
+ idempotent: true,
254
+ agent: true,
255
+ handler: async (ctx, args) => {
256
+ const receptionSteps = args.receptionSteps ?? 'one_step';
257
+ const deliverySteps = args.deliverySteps ?? 'ship_only';
258
+ if (!RECEPTION_STEPS.includes(receptionSteps))
259
+ return invalid('receptionSteps', `phải là: ${RECEPTION_STEPS.join(', ')}`);
260
+ if (!DELIVERY_STEPS.includes(deliverySteps))
261
+ return invalid('deliverySteps', `phải là: ${DELIVERY_STEPS.join(', ')}`);
262
+ const existing = (await ctx.db.select('stock.Warehouse', { id: args.id }))[0];
263
+ const values = { ...args, receptionSteps, deliverySteps, active: true };
264
+ const cs = ctx
265
+ .change('stock.Warehouse', values, existing ?? null)
266
+ .cast(['id', 'name', 'code', 'receptionSteps', 'deliverySteps', 'active'])
267
+ .required(['name', 'code']);
268
+ if (!cs.valid)
269
+ return { ok: false, errors: cs.errors };
270
+ await ctx.tx(async (tx) => {
271
+ await tx.db.commit(cs, existing ? { id: args.id } : undefined);
272
+ const viewId = `${String(args.id)}:view`;
273
+ const locations = [
274
+ { suffix: 'view', name: String(args.name), usage: 'view', parentId: null, active: true },
275
+ { suffix: 'stock', name: 'Stock', usage: 'internal', parentId: viewId, active: true },
276
+ {
277
+ suffix: 'input',
278
+ name: 'Input',
279
+ usage: 'internal',
280
+ parentId: viewId,
281
+ active: receptionSteps !== 'one_step',
282
+ },
283
+ {
284
+ suffix: 'quality',
285
+ name: 'Quality',
286
+ usage: 'internal',
287
+ parentId: viewId,
288
+ active: receptionSteps === 'three_steps',
289
+ },
290
+ {
291
+ suffix: 'output',
292
+ name: 'Output',
293
+ usage: 'internal',
294
+ parentId: viewId,
295
+ active: deliverySteps !== 'ship_only',
296
+ },
297
+ {
298
+ suffix: 'pick',
299
+ name: 'Pick',
300
+ usage: 'internal',
301
+ parentId: viewId,
302
+ active: deliverySteps !== 'ship_only',
303
+ },
304
+ {
305
+ suffix: 'pack',
306
+ name: 'Pack',
307
+ usage: 'internal',
308
+ parentId: viewId,
309
+ active: deliverySteps === 'pick_pack_ship',
310
+ },
311
+ { suffix: 'supplier', name: 'Supplier', usage: 'supplier', parentId: null, active: true },
312
+ { suffix: 'customer', name: 'Customer', usage: 'customer', parentId: null, active: true },
313
+ ];
314
+ for (const location of locations) {
315
+ const id = `${String(args.id)}:${location.suffix}`;
316
+ const values = {
317
+ name: location.name,
318
+ usage: location.usage,
319
+ parentId: location.parentId,
320
+ parentPath: location.parentId ? `${viewId}/${id}/` : `${id}/`,
321
+ warehouseId: args.id,
322
+ active: location.active,
323
+ };
324
+ const found = (await tx.db.select('stock.Location', { id }))[0];
325
+ if (found)
326
+ await tx.db.update('stock.Location', { id }, values);
327
+ else
328
+ await tx.db.insert('stock.Location', { id, ...values });
329
+ }
330
+ const incomingDestination = receptionSteps === 'one_step' ? `${String(args.id)}:stock` : `${String(args.id)}:input`;
331
+ const outgoingSource = deliverySteps === 'ship_only' ? `${String(args.id)}:stock` : `${String(args.id)}:output`;
332
+ const types = [
333
+ {
334
+ id: `${String(args.id)}:incoming`,
335
+ name: 'Receipts',
336
+ code: 'incoming',
337
+ source: `${String(args.id)}:supplier`,
338
+ destination: incomingDestination,
339
+ },
340
+ {
341
+ id: `${String(args.id)}:outgoing`,
342
+ name: 'Delivery Orders',
343
+ code: 'outgoing',
344
+ source: outgoingSource,
345
+ destination: `${String(args.id)}:customer`,
346
+ active: true,
347
+ },
348
+ {
349
+ id: `${String(args.id)}:internal`,
350
+ name: 'Internal Transfers',
351
+ code: 'internal',
352
+ source: `${String(args.id)}:stock`,
353
+ destination: `${String(args.id)}:output`,
354
+ active: true,
355
+ },
356
+ {
357
+ id: `${String(args.id)}:quality`,
358
+ name: 'Quality Control',
359
+ code: 'internal',
360
+ source: `${String(args.id)}:input`,
361
+ destination: `${String(args.id)}:quality`,
362
+ active: receptionSteps === 'three_steps',
363
+ },
364
+ {
365
+ id: `${String(args.id)}:store`,
366
+ name: 'Store',
367
+ code: 'internal',
368
+ source: receptionSteps === 'three_steps' ? `${String(args.id)}:quality` : `${String(args.id)}:input`,
369
+ destination: `${String(args.id)}:stock`,
370
+ active: receptionSteps !== 'one_step',
371
+ },
372
+ {
373
+ id: `${String(args.id)}:pick`,
374
+ name: 'Pick',
375
+ code: 'internal',
376
+ source: `${String(args.id)}:stock`,
377
+ destination: deliverySteps === 'pick_pack_ship' ? `${String(args.id)}:pack` : `${String(args.id)}:output`,
378
+ active: deliverySteps !== 'ship_only',
379
+ },
380
+ {
381
+ id: `${String(args.id)}:pack`,
382
+ name: 'Pack',
383
+ code: 'internal',
384
+ source: `${String(args.id)}:pack`,
385
+ destination: `${String(args.id)}:output`,
386
+ active: deliverySteps === 'pick_pack_ship',
387
+ },
388
+ ];
389
+ for (const type of types) {
390
+ const values = {
391
+ name: type.name,
392
+ code: type.code,
393
+ warehouseId: args.id,
394
+ defaultLocationSrcId: type.source,
395
+ defaultLocationDestId: type.destination,
396
+ createBackorder: 'ask',
397
+ active: type.active ?? true,
398
+ };
399
+ const found = (await tx.db.select('stock.PickingType', { id: type.id }))[0];
400
+ if (found)
401
+ await tx.db.update('stock.PickingType', { id: type.id }, values);
402
+ else
403
+ await tx.db.insert('stock.PickingType', { id: type.id, ...values });
404
+ }
405
+ const warehouseId = String(args.id);
406
+ const receiptRouteId = `${warehouseId}:receipt-route`;
407
+ const deliveryRouteId = `${warehouseId}:delivery-route`;
408
+ const routes = [
409
+ { id: receiptRouteId, name: `${String(args.name)}: ${receptionSteps}`, sequence: 50 },
410
+ { id: deliveryRouteId, name: `${String(args.name)}: ${deliverySteps}`, sequence: 60 },
411
+ ];
412
+ for (const route of routes) {
413
+ const found = (await tx.db.select('stock.Route', { id: route.id }))[0];
414
+ const values = { name: route.name, sequence: route.sequence, active: true };
415
+ if (found)
416
+ await tx.db.update('stock.Route', { id: route.id }, values);
417
+ else
418
+ await tx.db.insert('stock.Route', { id: route.id, ...values });
419
+ await tx.db.insertIfAbsent('stock.WarehouseRoute', {
420
+ id: `${company(tx)}:${warehouseId}:${route.id}`,
421
+ warehouseId: args.id,
422
+ routeId: route.id,
423
+ });
424
+ }
425
+ // The subset executes route chains backwards from demand, so each leg is
426
+ // represented as a pull rule. The resulting locations and operation types
427
+ // match Odoo 19's receipt/delivery topology.
428
+ const ruleDefinitions = [
429
+ {
430
+ id: `${warehouseId}:receipt:supplier-stock`,
431
+ name: 'Receive in Stock',
432
+ routeId: receiptRouteId,
433
+ source: `${warehouseId}:supplier`,
434
+ destination: `${warehouseId}:stock`,
435
+ pickingTypeId: `${warehouseId}:incoming`,
436
+ active: receptionSteps === 'one_step',
437
+ },
438
+ {
439
+ id: `${warehouseId}:receipt:supplier-input`,
440
+ name: 'Receive in Input',
441
+ routeId: receiptRouteId,
442
+ source: `${warehouseId}:supplier`,
443
+ destination: `${warehouseId}:input`,
444
+ pickingTypeId: `${warehouseId}:incoming`,
445
+ active: receptionSteps !== 'one_step',
446
+ },
447
+ {
448
+ id: `${warehouseId}:receipt:input-stock`,
449
+ name: 'Input to Stock',
450
+ routeId: receiptRouteId,
451
+ source: `${warehouseId}:input`,
452
+ destination: `${warehouseId}:stock`,
453
+ pickingTypeId: `${warehouseId}:store`,
454
+ active: receptionSteps === 'two_steps',
455
+ },
456
+ {
457
+ id: `${warehouseId}:receipt:input-quality`,
458
+ name: 'Input to Quality',
459
+ routeId: receiptRouteId,
460
+ source: `${warehouseId}:input`,
461
+ destination: `${warehouseId}:quality`,
462
+ pickingTypeId: `${warehouseId}:quality`,
463
+ active: receptionSteps === 'three_steps',
464
+ },
465
+ {
466
+ id: `${warehouseId}:receipt:quality-stock`,
467
+ name: 'Quality to Stock',
468
+ routeId: receiptRouteId,
469
+ source: `${warehouseId}:quality`,
470
+ destination: `${warehouseId}:stock`,
471
+ pickingTypeId: `${warehouseId}:store`,
472
+ active: receptionSteps === 'three_steps',
473
+ },
474
+ {
475
+ id: `${warehouseId}:delivery:stock-customer`,
476
+ name: 'Deliver from Stock',
477
+ routeId: deliveryRouteId,
478
+ source: `${warehouseId}:stock`,
479
+ destination: `${warehouseId}:customer`,
480
+ pickingTypeId: `${warehouseId}:outgoing`,
481
+ active: deliverySteps === 'ship_only',
482
+ },
483
+ {
484
+ id: `${warehouseId}:delivery:stock-output`,
485
+ name: 'Pick to Output',
486
+ routeId: deliveryRouteId,
487
+ source: `${warehouseId}:stock`,
488
+ destination: `${warehouseId}:output`,
489
+ pickingTypeId: `${warehouseId}:pick`,
490
+ procureMethod: 'make_to_stock',
491
+ active: deliverySteps === 'pick_ship',
492
+ },
493
+ {
494
+ id: `${warehouseId}:delivery:stock-pack`,
495
+ name: 'Pick to Pack',
496
+ routeId: deliveryRouteId,
497
+ source: `${warehouseId}:stock`,
498
+ destination: `${warehouseId}:pack`,
499
+ pickingTypeId: `${warehouseId}:pick`,
500
+ procureMethod: 'make_to_stock',
501
+ active: deliverySteps === 'pick_pack_ship',
502
+ },
503
+ {
504
+ id: `${warehouseId}:delivery:pack-output`,
505
+ name: 'Pack to Output',
506
+ routeId: deliveryRouteId,
507
+ source: `${warehouseId}:pack`,
508
+ destination: `${warehouseId}:output`,
509
+ pickingTypeId: `${warehouseId}:pack`,
510
+ active: deliverySteps === 'pick_pack_ship',
511
+ },
512
+ {
513
+ id: `${warehouseId}:delivery:output-customer`,
514
+ name: 'Ship from Output',
515
+ routeId: deliveryRouteId,
516
+ source: `${warehouseId}:output`,
517
+ destination: `${warehouseId}:customer`,
518
+ pickingTypeId: `${warehouseId}:outgoing`,
519
+ active: deliverySteps !== 'ship_only',
520
+ },
521
+ ];
522
+ for (const [sequence, rule] of ruleDefinitions.entries()) {
523
+ const values = {
524
+ name: rule.name,
525
+ routeId: rule.routeId,
526
+ action: 'pull',
527
+ sequence: sequence + 10,
528
+ locationSrcId: rule.source,
529
+ locationDestId: rule.destination,
530
+ pickingTypeId: rule.pickingTypeId,
531
+ procureMethod: rule.procureMethod ?? 'make_to_order',
532
+ active: rule.active,
533
+ };
534
+ const found = (await tx.db.select('stock.Rule', { id: rule.id }))[0];
535
+ if (found)
536
+ await tx.db.update('stock.Rule', { id: rule.id }, values);
537
+ else
538
+ await tx.db.insert('stock.Rule', { id: rule.id, ...values });
539
+ }
540
+ });
541
+ return { ok: true, id: args.id };
542
+ },
543
+ }),
544
+ saveLocation: defineFn({
545
+ input: { id: 'id', name: 'text', usage: 'text', parentId: 'id?', warehouseId: 'id?' },
546
+ output: { ok: 'bool', id: 'id?', errors: 'json?' },
547
+ effects: ['read:stock.Location', 'write:stock.Location'],
548
+ idempotent: true,
549
+ agent: true,
550
+ handler: async (ctx, args) => {
551
+ if (!LOCATION_USAGES.includes(args.usage))
552
+ return invalid('usage', `phải là: ${LOCATION_USAGES.join(', ')}`);
553
+ if (args.parentId === args.id)
554
+ return invalid('parentId', 'location không thể là cha của chính nó');
555
+ let parentPath = `${String(args.id)}/`;
556
+ if (args.parentId) {
557
+ const parent = (await ctx.db.select('stock.Location', { id: args.parentId }))[0];
558
+ if (!parent)
559
+ return invalid('parentId', 'location cha không tồn tại');
560
+ if (String(parent.parentPath).split('/').includes(String(args.id)))
561
+ return invalid('parentId', 'cây location có vòng lặp');
562
+ parentPath = `${String(parent.parentPath)}${String(args.id)}/`;
563
+ }
564
+ const existing = (await ctx.db.select('stock.Location', { id: args.id }))[0];
565
+ const values = { ...args, parentPath, active: true };
566
+ const cs = ctx
567
+ .change('stock.Location', values, existing ?? null)
568
+ .cast(['id', 'name', 'usage', 'parentId', 'parentPath', 'warehouseId', 'active'])
569
+ .required(['name', 'usage']);
570
+ if (!cs.valid)
571
+ return { ok: false, errors: cs.errors };
572
+ await ctx.db.commit(cs, existing ? { id: args.id } : undefined);
573
+ return { ok: true, id: args.id };
574
+ },
575
+ }),
576
+ savePickingType: defineFn({
577
+ input: {
578
+ id: 'id',
579
+ name: 'text',
580
+ code: 'text',
581
+ warehouseId: 'id?',
582
+ defaultLocationSrcId: 'id?',
583
+ defaultLocationDestId: 'id?',
584
+ createBackorder: 'text?',
585
+ },
586
+ output: { ok: 'bool', id: 'id?', errors: 'json?' },
587
+ effects: ['read:stock.PickingType', 'write:stock.PickingType'],
588
+ idempotent: true,
589
+ agent: true,
590
+ handler: async (ctx, args) => {
591
+ if (!PICKING_TYPE_CODES.includes(args.code))
592
+ return invalid('code', `phải là: ${PICKING_TYPE_CODES.join(', ')}`);
593
+ const createBackorder = String(args.createBackorder ?? 'ask');
594
+ if (!['ask', 'always', 'never'].includes(createBackorder))
595
+ return invalid('createBackorder', 'phải là ask, always hoặc never');
596
+ const existing = (await ctx.db.select('stock.PickingType', { id: args.id }))[0];
597
+ const values = { ...args, createBackorder, active: true };
598
+ const cs = ctx
599
+ .change('stock.PickingType', values, existing ?? null)
600
+ .cast([
601
+ 'id',
602
+ 'name',
603
+ 'code',
604
+ 'warehouseId',
605
+ 'defaultLocationSrcId',
606
+ 'defaultLocationDestId',
607
+ 'createBackorder',
608
+ 'active',
609
+ ])
610
+ .required(['name', 'code']);
611
+ if (!cs.valid)
612
+ return { ok: false, errors: cs.errors };
613
+ await ctx.db.commit(cs, existing ? { id: args.id } : undefined);
614
+ return { ok: true, id: args.id };
615
+ },
616
+ }),
617
+ createLot: defineFn({
618
+ input: { id: 'id', productId: 'id', name: 'text', ref: 'text?', note: 'text?' },
619
+ output: { ok: 'bool', id: 'id?', errors: 'json?' },
620
+ effects: ['read:product.Product', 'write:stock.Lot'],
621
+ idempotent: true,
622
+ agent: true,
623
+ handler: async (ctx, args) => {
624
+ if (!(await ctx.db.select('product.Product', { id: args.productId }))[0])
625
+ return invalid('productId', 'biến thể không tồn tại');
626
+ const result = await ctx.db.insertIfAbsent('stock.Lot', { ...args, active: true });
627
+ return 'inserted' in result && !result.inserted
628
+ ? invalid('name', 'lot/serial đã tồn tại cho sản phẩm')
629
+ : { ok: true, id: args.id };
630
+ },
631
+ }),
632
+ createPicking: defineFn({
633
+ input: {
634
+ id: 'id',
635
+ name: 'text',
636
+ pickingTypeId: 'id',
637
+ locationId: 'id?',
638
+ locationDestId: 'id?',
639
+ moveType: 'text?',
640
+ scheduledDate: 'datetime?',
641
+ backorderId: 'id?',
642
+ },
643
+ output: { ok: 'bool', id: 'id?', errors: 'json?' },
644
+ effects: ['read:stock.PickingType', 'write:stock.Picking'],
645
+ idempotent: true,
646
+ agent: true,
647
+ handler: async (ctx, args) => {
648
+ const type = (await ctx.db.select('stock.PickingType', { id: args.pickingTypeId }))[0];
649
+ if (!type)
650
+ return invalid('pickingTypeId', 'operation type không tồn tại');
651
+ const locationId = args.locationId ?? type.defaultLocationSrcId;
652
+ const locationDestId = args.locationDestId ?? type.defaultLocationDestId;
653
+ if (!locationId || !locationDestId)
654
+ return invalid('locationId', 'cần source và destination location');
655
+ const moveType = String(args.moveType ?? 'direct');
656
+ if (!['direct', 'one'].includes(moveType))
657
+ return invalid('moveType', 'phải là direct hoặc one');
658
+ const inserted = await ctx.db.insertIfAbsent('stock.Picking', {
659
+ id: args.id,
660
+ name: args.name,
661
+ pickingTypeId: args.pickingTypeId,
662
+ locationId,
663
+ locationDestId,
664
+ moveType,
665
+ state: 'draft',
666
+ backorderId: args.backorderId ?? null,
667
+ scheduledDate: args.scheduledDate ?? new Date().toISOString(),
668
+ dateDone: null,
669
+ });
670
+ return 'inserted' in inserted && !inserted.inserted
671
+ ? { ok: true, id: args.id }
672
+ : { ok: true, id: args.id };
673
+ },
674
+ }),
675
+ addMove: defineFn({
676
+ input: {
677
+ id: 'id',
678
+ name: 'text',
679
+ pickingId: 'id?',
680
+ productId: 'id',
681
+ productUomId: 'id',
682
+ productUomQty: 'decimal',
683
+ locationId: 'id?',
684
+ locationDestId: 'id?',
685
+ procureMethod: 'text?',
686
+ ruleId: 'id?',
687
+ origin: 'text?',
688
+ },
689
+ output: { ok: 'bool', id: 'id?', errors: 'json?' },
690
+ effects: ['read:stock.Picking', 'read:product.Product', 'read:uom.Unit', 'write:stock.Move'],
691
+ idempotent: true,
692
+ agent: true,
693
+ handler: async (ctx, args) => {
694
+ const picking = args.pickingId
695
+ ? (await ctx.db.select('stock.Picking', { id: args.pickingId }))[0]
696
+ : null;
697
+ if (args.pickingId && !picking)
698
+ return invalid('pickingId', 'transfer không tồn tại');
699
+ if (picking && ['done', 'cancel'].includes(String(picking.state)))
700
+ return invalid('pickingId', 'không thể thêm move vào transfer đã kết thúc');
701
+ if (!(await ctx.db.select('product.Product', { id: args.productId }))[0])
702
+ return invalid('productId', 'biến thể không tồn tại');
703
+ if (!(await ctx.db.select('uom.Unit', { id: args.productUomId }))[0])
704
+ return invalid('productUomId', 'đơn vị không tồn tại');
705
+ if (!(Number(args.productUomQty) > 0))
706
+ return invalid('productUomQty', 'phải lớn hơn 0');
707
+ const locationId = args.locationId ?? picking?.locationId;
708
+ const locationDestId = args.locationDestId ?? picking?.locationDestId;
709
+ if (!locationId || !locationDestId)
710
+ return invalid('locationId', 'cần source và destination location');
711
+ const procureMethod = String(args.procureMethod ?? 'make_to_stock');
712
+ if (!['make_to_stock', 'make_to_order'].includes(procureMethod))
713
+ return invalid('procureMethod', 'move chỉ nhận make_to_stock hoặc make_to_order');
714
+ await ctx.db.insertIfAbsent('stock.Move', {
715
+ id: args.id,
716
+ name: args.name,
717
+ pickingId: args.pickingId ?? null,
718
+ productId: args.productId,
719
+ productUomId: args.productUomId,
720
+ productUomQty: args.productUomQty,
721
+ quantity: '0',
722
+ locationId,
723
+ locationDestId,
724
+ state: picking?.state === 'draft' ? 'draft' : 'confirmed',
725
+ picked: false,
726
+ procureMethod,
727
+ ruleId: args.ruleId ?? null,
728
+ origin: args.origin ?? null,
729
+ });
730
+ return { ok: true, id: args.id };
731
+ },
732
+ }),
733
+ confirmPicking: defineFn({
734
+ input: { id: 'id' },
735
+ output: { ok: 'bool', id: 'id?', errors: 'json?' },
736
+ effects: ['read:stock.Picking', 'read:stock.Move', 'write:stock.Picking', 'write:stock.Move'],
737
+ idempotent: true,
738
+ agent: true,
739
+ handler: async (ctx, args) => {
740
+ const picking = (await ctx.db.select('stock.Picking', { id: args.id }))[0];
741
+ if (!picking)
742
+ return invalid('id', 'transfer không tồn tại');
743
+ if (picking.state === 'done' || picking.state === 'cancel')
744
+ return invalid('state', 'transfer đã kết thúc');
745
+ await ctx.db.update('stock.Picking', { id: args.id }, { state: 'confirmed' });
746
+ for (const move of await ctx.db.select('stock.Move', { pickingId: args.id }))
747
+ if (move.state === 'draft')
748
+ await ctx.db.update('stock.Move', { id: move.id }, { state: 'confirmed' });
749
+ return { ok: true, id: args.id };
750
+ },
751
+ }),
752
+ reserveMove: defineFn({
753
+ input: { id: 'id' },
754
+ output: { ok: 'bool', reserved: 'decimal?', state: 'text?', errors: 'json?' },
755
+ effects: [
756
+ 'read:stock.Move',
757
+ 'write:stock.Move',
758
+ 'read:stock.Picking',
759
+ 'write:stock.Picking',
760
+ 'read:stock.MoveLine',
761
+ 'write:stock.MoveLine',
762
+ 'read:stock.Quant',
763
+ 'write:stock.Quant',
764
+ 'read:product.Product',
765
+ 'read:product.Template',
766
+ ],
767
+ idempotent: true,
768
+ agent: true,
769
+ handler: async (ctx, args) => {
770
+ const move = (await ctx.db.select('stock.Move', { id: args.id }))[0];
771
+ if (!move)
772
+ return invalid('id', 'move không tồn tại');
773
+ if (!(await isStorable(ctx, move.productId)))
774
+ return invalid('productId', 'chỉ sản phẩm lưu kho mới được reserve');
775
+ if (['done', 'cancel'].includes(String(move.state)))
776
+ return invalid('state', 'move đã kết thúc');
777
+ if (move.state === 'draft')
778
+ return invalid('state', 'xác nhận transfer trước khi reserve');
779
+ const demand = Number(move.productUomQty);
780
+ let reserved = (await ctx.db.select('stock.MoveLine', { moveId: move.id }))
781
+ .filter((line) => !line.picked)
782
+ .reduce((sum, line) => sum + Number(line.quantity), 0);
783
+ let state = 'confirmed';
784
+ const tracking = await trackingOf(ctx, move.productId);
785
+ const quants = (await ctx.db.select('stock.Quant', { productId: move.productId, locationId: move.locationId })).sort((a, b) => String(a.lotKey).localeCompare(String(b.lotKey)));
786
+ await ctx.tx(async (tx) => {
787
+ for (const quant of quants) {
788
+ if (reserved >= demand)
789
+ break;
790
+ if (tracking !== 'none' && !quant.lotId)
791
+ continue;
792
+ const available = Number(quant.quantity) - Number(quant.reservedQuantity);
793
+ if (available <= 0)
794
+ continue;
795
+ const take = Math.min(available, demand - reserved, tracking === 'serial' ? 1 : Number.POSITIVE_INFINITY);
796
+ await mutateQuant(tx, {
797
+ productId: move.productId,
798
+ locationId: move.locationId,
799
+ lotId: quant.lotId,
800
+ quantity: 0,
801
+ reserved: take,
802
+ });
803
+ const lineId = `${String(move.id)}:reserve:${String(quant.id)}`;
804
+ const line = (await tx.db.select('stock.MoveLine', { id: lineId }))[0];
805
+ if (line)
806
+ await tx.db.update('stock.MoveLine', { id: lineId }, { quantity: String(Number(line.quantity) + take) });
807
+ else
808
+ await tx.db.insert('stock.MoveLine', {
809
+ id: lineId,
810
+ moveId: move.id,
811
+ pickingId: move.pickingId,
812
+ productId: move.productId,
813
+ productUomId: move.productUomId,
814
+ quantity: String(take),
815
+ quantityProductUom: String(take),
816
+ locationId: move.locationId,
817
+ locationDestId: move.locationDestId,
818
+ lotId: quant.lotId,
819
+ picked: false,
820
+ });
821
+ reserved += take;
822
+ }
823
+ state =
824
+ compareQty(reserved, demand, 0.000001) >= 0
825
+ ? 'assigned'
826
+ : reserved > 0
827
+ ? 'partially_available'
828
+ : 'confirmed';
829
+ await tx.db.update('stock.Move', { id: move.id }, { state, quantity: String(reserved) });
830
+ if (move.pickingId)
831
+ await updatePickingState(tx, move.pickingId);
832
+ });
833
+ // The state that was written, not a second derivation of it: the tolerant
834
+ // compareQty above and a bare `reserved >= demand` disagree inside 1e-6, and
835
+ // the caller was being told the opposite of what landed in the row.
836
+ return { ok: true, reserved: String(reserved), state };
837
+ },
838
+ }),
839
+ saveMoveLine: defineFn({
840
+ input: { id: 'id', moveId: 'id', quantity: 'decimal', lotId: 'id?', picked: 'bool?' },
841
+ output: { ok: 'bool', id: 'id?', errors: 'json?' },
842
+ effects: [
843
+ 'read:stock.Move',
844
+ 'read:stock.MoveLine',
845
+ 'write:stock.MoveLine',
846
+ 'read:stock.Lot',
847
+ 'read:stock.Location',
848
+ 'read:stock.Quant',
849
+ 'write:stock.Quant',
850
+ 'read:product.Product',
851
+ 'read:product.Template',
852
+ ],
853
+ idempotent: true,
854
+ agent: true,
855
+ handler: async (ctx, args) => {
856
+ const move = (await ctx.db.select('stock.Move', { id: args.moveId }))[0];
857
+ if (!move)
858
+ return invalid('moveId', 'move không tồn tại');
859
+ if (['done', 'cancel'].includes(String(move.state)))
860
+ return invalid('moveId', 'không thể sửa dòng của move đã kết thúc');
861
+ const tracking = await trackingOf(ctx, move.productId);
862
+ if (tracking !== 'none' && !args.lotId)
863
+ return invalid('lotId', `${tracking} tracked product cần lot/serial`);
864
+ if (!(Number(args.quantity) > 0))
865
+ return invalid('quantity', 'phải lớn hơn 0');
866
+ if (tracking === 'serial' && compareQty(Number(args.quantity), 1, 0.000001) > 0)
867
+ return invalid('quantity', 'serial move line không được lớn hơn 1');
868
+ if (tracking === 'serial' && args.picked && compareQty(Number(args.quantity), 1, 0.000001) !== 0)
869
+ return invalid('quantity', 'serial đã pick phải có quantity đúng 1');
870
+ if (args.lotId) {
871
+ const lot = (await ctx.db.select('stock.Lot', { id: args.lotId }))[0];
872
+ if (!lot || lot.productId !== move.productId)
873
+ return invalid('lotId', 'lot/serial không thuộc sản phẩm');
874
+ }
875
+ const existing = (await ctx.db.select('stock.MoveLine', { id: args.id }))[0];
876
+ const values = {
877
+ id: args.id,
878
+ moveId: move.id,
879
+ pickingId: move.pickingId,
880
+ productId: move.productId,
881
+ productUomId: move.productUomId,
882
+ quantity: args.quantity,
883
+ quantityProductUom: args.quantity,
884
+ locationId: move.locationId,
885
+ locationDestId: move.locationDestId,
886
+ lotId: args.lotId ?? null,
887
+ picked: args.picked ?? false,
888
+ };
889
+ const cs = ctx
890
+ .change('stock.MoveLine', values, existing ?? null)
891
+ .cast([
892
+ 'id',
893
+ 'moveId',
894
+ 'pickingId',
895
+ 'productId',
896
+ 'productUomId',
897
+ 'quantity',
898
+ 'quantityProductUom',
899
+ 'locationId',
900
+ 'locationDestId',
901
+ 'lotId',
902
+ 'picked',
903
+ ])
904
+ .required(['moveId', 'productId', 'productUomId', 'quantity', 'locationId', 'locationDestId']);
905
+ if (!cs.valid)
906
+ return { ok: false, errors: cs.errors };
907
+ await ctx.tx(async (tx) => {
908
+ const source = (await tx.db.select('stock.Location', { id: move.locationId }))[0];
909
+ if (source && ['internal', 'transit'].includes(String(source.usage))) {
910
+ const oldQuantity = existing && !existing.picked ? Number(existing.quantity) : 0;
911
+ const newQuantity = Number(args.quantity);
912
+ if (existing && lotKey(existing.lotId) !== lotKey(args.lotId) && oldQuantity)
913
+ await mutateQuant(tx, {
914
+ productId: move.productId,
915
+ locationId: move.locationId,
916
+ lotId: existing.lotId,
917
+ quantity: 0,
918
+ reserved: -oldQuantity,
919
+ });
920
+ const delta = lotKey(existing?.lotId) === lotKey(args.lotId) ? newQuantity - oldQuantity : newQuantity;
921
+ if (delta)
922
+ await mutateQuant(tx, {
923
+ productId: move.productId,
924
+ locationId: move.locationId,
925
+ lotId: args.lotId,
926
+ quantity: 0,
927
+ reserved: delta,
928
+ });
929
+ }
930
+ await tx.db.commit(cs, existing ? { id: args.id } : undefined);
931
+ });
932
+ return { ok: true, id: args.id };
933
+ },
934
+ }),
935
+ completePicking: defineFn({
936
+ input: { id: 'id', quantities: 'json?', createBackorder: 'bool?', pickedOnly: 'bool?' },
937
+ output: { ok: 'bool', id: 'id?', backorderId: 'id?', errors: 'json?' },
938
+ effects: [
939
+ 'read:stock.Picking',
940
+ 'write:stock.Picking',
941
+ 'read:stock.PickingType',
942
+ 'read:stock.Move',
943
+ 'write:stock.Move',
944
+ 'read:stock.MoveLine',
945
+ 'write:stock.MoveLine',
946
+ 'read:stock.Location',
947
+ 'read:stock.Quant',
948
+ 'write:stock.Quant',
949
+ 'read:product.Product',
950
+ 'read:product.Template',
951
+ 'read:product.Category',
952
+ 'read:stock.Route',
953
+ 'read:stock.Rule',
954
+ 'read:stock.ProductRoute',
955
+ 'read:stock.CategoryRoute',
956
+ 'read:stock.WarehouseRoute',
957
+ 'read:stock.MoveLink',
958
+ 'write:stock.MoveLink',
959
+ ],
960
+ agent: true,
961
+ handler: async (ctx, args) => {
962
+ const picking = (await ctx.db.select('stock.Picking', { id: args.id }))[0];
963
+ if (!picking)
964
+ return invalid('id', 'transfer không tồn tại');
965
+ if (picking.state === 'done')
966
+ return { ok: true, id: args.id };
967
+ if (picking.state === 'cancel')
968
+ return invalid('state', 'transfer đã hủy');
969
+ const requested = new Map();
970
+ if (Array.isArray(args.quantities))
971
+ for (const entry of args.quantities)
972
+ requested.set(String(entry.moveLineId), Number(entry.quantity));
973
+ const moves = await ctx.db.select('stock.Move', { pickingId: args.id });
974
+ const remaining = [];
975
+ await ctx.tx(async (tx) => {
976
+ for (const move of moves) {
977
+ const tracking = await trackingOf(tx, move.productId);
978
+ const source = (await tx.db.select('stock.Location', { id: move.locationId }))[0];
979
+ const destination = (await tx.db.select('stock.Location', { id: move.locationDestId }))[0];
980
+ const lines = await tx.db.select('stock.MoveLine', { moveId: move.id });
981
+ let done = 0;
982
+ for (const line of lines) {
983
+ const reserved = Number(line.quantity);
984
+ if (args.pickedOnly && !line.picked) {
985
+ if ((source.usage === 'internal' || source.usage === 'transit') && reserved)
986
+ await mutateQuant(tx, {
987
+ productId: move.productId,
988
+ locationId: move.locationId,
989
+ lotId: line.lotId,
990
+ quantity: 0,
991
+ reserved: -reserved,
992
+ });
993
+ await tx.db.update('stock.MoveLine', { id: line.id }, { quantity: '0', quantityProductUom: '0', picked: true });
994
+ continue;
995
+ }
996
+ const quantity = requested.has(String(line.id))
997
+ ? requested.get(String(line.id))
998
+ : requested.size
999
+ ? 0
1000
+ : reserved;
1001
+ if (quantity < 0 || quantity > reserved)
1002
+ throw new Error(`invalid done quantity for ${String(line.id)}`);
1003
+ if (tracking !== 'none' && !line.lotId)
1004
+ throw new Error(`${tracking} tracked product requires a lot/serial`);
1005
+ if (tracking === 'serial' && quantity > 0 && compareQty(quantity, 1, 0.000001) !== 0)
1006
+ throw new Error('serial picked move line quantity must equal 1');
1007
+ if (source.usage === 'internal' || source.usage === 'transit') {
1008
+ // Release only what this line actually holds. A line written by
1009
+ // saveMoveLine never incremented the quant's reservedQuantity, so
1010
+ // releasing its full quantity drove the mirror negative and threw —
1011
+ // leaving the transfer impossible to complete by any later call.
1012
+ const held = await reservedOn(tx, move.productId, move.locationId, line.lotId);
1013
+ await mutateQuant(tx, {
1014
+ productId: move.productId,
1015
+ locationId: move.locationId,
1016
+ lotId: line.lotId,
1017
+ quantity: -quantity,
1018
+ reserved: -Math.min(reserved, held),
1019
+ });
1020
+ }
1021
+ else {
1022
+ await mutateQuant(tx, {
1023
+ productId: move.productId,
1024
+ locationId: move.locationId,
1025
+ lotId: line.lotId,
1026
+ quantity: -quantity,
1027
+ reserved: 0,
1028
+ });
1029
+ }
1030
+ // Keep both sides of every completed move in the quant ledger. The
1031
+ // forecast still counts only internal/transit locations.
1032
+ if (destination)
1033
+ await mutateQuant(tx, {
1034
+ productId: move.productId,
1035
+ locationId: move.locationDestId,
1036
+ lotId: line.lotId,
1037
+ quantity,
1038
+ reserved: 0,
1039
+ });
1040
+ await tx.db.update('stock.MoveLine', { id: line.id }, { quantity: String(quantity), quantityProductUom: String(quantity), picked: true });
1041
+ done += quantity;
1042
+ }
1043
+ await tx.db.update('stock.Move', { id: move.id }, { quantity: String(done), picked: true, state: 'done' });
1044
+ await pushFromCompletedMove(tx, move, done);
1045
+ const left = Math.max(0, Number(move.productUomQty) - done);
1046
+ if (left > 0)
1047
+ remaining.push({ move, quantity: left });
1048
+ }
1049
+ await tx.db.update('stock.Picking', { id: args.id }, { state: 'done', dateDone: new Date().toISOString() });
1050
+ });
1051
+ const type = (await ctx.db.select('stock.PickingType', { id: picking.pickingTypeId }))[0];
1052
+ const shouldBackorder = remaining.length > 0 && (args.createBackorder ?? type?.createBackorder !== 'never');
1053
+ let backorderId = null;
1054
+ if (shouldBackorder) {
1055
+ backorderId = `${String(args.id)}:backorder:${Date.now()}`;
1056
+ await ctx.db.insert('stock.Picking', {
1057
+ id: backorderId,
1058
+ name: `${String(picking.name)} backorder`,
1059
+ pickingTypeId: picking.pickingTypeId,
1060
+ locationId: picking.locationId,
1061
+ locationDestId: picking.locationDestId,
1062
+ moveType: picking.moveType,
1063
+ state: 'confirmed',
1064
+ backorderId: picking.id,
1065
+ scheduledDate: new Date().toISOString(),
1066
+ dateDone: null,
1067
+ });
1068
+ for (const { move, quantity } of remaining) {
1069
+ const id = `${String(move.id)}:backorder:${Date.now()}`;
1070
+ await ctx.db.insert('stock.Move', {
1071
+ ...Object.fromEntries(Object.entries(move).filter(([key]) => key !== 'companyId')),
1072
+ id,
1073
+ pickingId: backorderId,
1074
+ productUomQty: String(quantity),
1075
+ quantity: '0',
1076
+ state: 'confirmed',
1077
+ picked: false,
1078
+ });
1079
+ await ctx.db.insertIfAbsent('stock.MoveLink', {
1080
+ id: `${String(move.id)}:${id}`,
1081
+ originMoveId: move.id,
1082
+ destinationMoveId: id,
1083
+ });
1084
+ }
1085
+ }
1086
+ return { ok: true, id: args.id, backorderId };
1087
+ },
1088
+ }),
1089
+ adjustInventory: defineFn({
1090
+ input: {
1091
+ id: 'id',
1092
+ productId: 'id',
1093
+ locationId: 'id',
1094
+ inventoryLocationId: 'id',
1095
+ countedQuantity: 'decimal',
1096
+ lotId: 'id?',
1097
+ productUomId: 'id',
1098
+ },
1099
+ output: { ok: 'bool', pickingId: 'id?', moveId: 'id?', difference: 'decimal?', errors: 'json?' },
1100
+ effects: [
1101
+ 'read:stock.Quant',
1102
+ 'write:stock.Quant',
1103
+ 'read:stock.Location',
1104
+ 'read:stock.Lot',
1105
+ 'read:stock.PickingType',
1106
+ 'write:stock.PickingType',
1107
+ 'write:stock.Picking',
1108
+ 'write:stock.Move',
1109
+ 'write:stock.MoveLine',
1110
+ 'read:product.Product',
1111
+ 'read:product.Template',
1112
+ ],
1113
+ idempotent: true,
1114
+ agent: true,
1115
+ handler: async (ctx, args) => {
1116
+ if (!(await isStorable(ctx, args.productId)))
1117
+ return invalid('productId', 'chỉ sản phẩm lưu kho mới kiểm kê');
1118
+ if (Number(args.countedQuantity) < 0)
1119
+ return invalid('countedQuantity', 'số lượng kiểm kê không được âm');
1120
+ const tracking = await trackingOf(ctx, args.productId);
1121
+ if (tracking !== 'none' && !args.lotId)
1122
+ return invalid('lotId', `${tracking} tracked product cần lot/serial`);
1123
+ if (tracking === 'serial' && compareQty(Number(args.countedQuantity), 1, 0.000001) > 0)
1124
+ return invalid('countedQuantity', 'mỗi serial chỉ có thể có số lượng 0 hoặc 1');
1125
+ if (args.lotId) {
1126
+ const lot = (await ctx.db.select('stock.Lot', { id: args.lotId }))[0];
1127
+ if (!lot || lot.productId !== args.productId)
1128
+ return invalid('lotId', 'lot/serial không thuộc sản phẩm');
1129
+ }
1130
+ const current = (await ctx.db.select('stock.Quant', {
1131
+ productId: args.productId,
1132
+ locationId: args.locationId,
1133
+ lotKey: lotKey(args.lotId),
1134
+ }))[0];
1135
+ const difference = Number(args.countedQuantity) - Number(current?.quantity ?? 0);
1136
+ if (Math.abs(difference) < 1e-12)
1137
+ return { ok: true, moveId: args.id, difference: '0' };
1138
+ const incoming = difference > 0;
1139
+ const source = incoming ? args.inventoryLocationId : args.locationId;
1140
+ const destination = incoming ? args.locationId : args.inventoryLocationId;
1141
+ const pickingTypeId = `${String(args.inventoryLocationId)}:adjustment`;
1142
+ const pickingId = `${String(args.id)}:picking`;
1143
+ await ctx.tx(async (tx) => {
1144
+ await mutateQuant(tx, {
1145
+ productId: args.productId,
1146
+ locationId: source,
1147
+ lotId: args.lotId,
1148
+ quantity: -Math.abs(difference),
1149
+ reserved: 0,
1150
+ });
1151
+ await mutateQuant(tx, {
1152
+ productId: args.productId,
1153
+ locationId: destination,
1154
+ lotId: args.lotId,
1155
+ quantity: Math.abs(difference),
1156
+ reserved: 0,
1157
+ });
1158
+ await tx.db.insertIfAbsent('stock.PickingType', {
1159
+ id: pickingTypeId,
1160
+ name: 'Inventory Adjustments',
1161
+ code: 'internal',
1162
+ warehouseId: null,
1163
+ defaultLocationSrcId: args.inventoryLocationId,
1164
+ defaultLocationDestId: args.locationId,
1165
+ createBackorder: 'never',
1166
+ active: true,
1167
+ });
1168
+ await tx.db.insertIfAbsent('stock.Picking', {
1169
+ id: pickingId,
1170
+ name: `Inventory ${String(args.id)}`,
1171
+ pickingTypeId,
1172
+ locationId: source,
1173
+ locationDestId: destination,
1174
+ moveType: 'direct',
1175
+ state: 'done',
1176
+ backorderId: null,
1177
+ scheduledDate: new Date().toISOString(),
1178
+ dateDone: new Date().toISOString(),
1179
+ });
1180
+ await tx.db.insertIfAbsent('stock.Move', {
1181
+ id: args.id,
1182
+ name: 'Inventory adjustment',
1183
+ pickingId,
1184
+ productId: args.productId,
1185
+ productUomId: args.productUomId,
1186
+ productUomQty: String(Math.abs(difference)),
1187
+ quantity: String(Math.abs(difference)),
1188
+ locationId: source,
1189
+ locationDestId: destination,
1190
+ state: 'done',
1191
+ picked: true,
1192
+ procureMethod: 'make_to_stock',
1193
+ ruleId: null,
1194
+ origin: 'inventory',
1195
+ });
1196
+ await tx.db.insertIfAbsent('stock.MoveLine', {
1197
+ id: `${args.id}:line`,
1198
+ moveId: args.id,
1199
+ pickingId,
1200
+ productId: args.productId,
1201
+ productUomId: args.productUomId,
1202
+ quantity: String(Math.abs(difference)),
1203
+ quantityProductUom: String(Math.abs(difference)),
1204
+ locationId: source,
1205
+ locationDestId: destination,
1206
+ lotId: args.lotId ?? null,
1207
+ picked: true,
1208
+ });
1209
+ });
1210
+ return { ok: true, pickingId, moveId: args.id, difference: String(difference) };
1211
+ },
1212
+ }),
1213
+ forecast: defineFn({
1214
+ input: { productId: 'id', warehouseId: 'id?', locationId: 'id?' },
1215
+ output: {
1216
+ productId: 'id',
1217
+ onHand: 'decimal',
1218
+ reserved: 'decimal',
1219
+ available: 'decimal',
1220
+ incoming: 'decimal',
1221
+ outgoing: 'decimal',
1222
+ forecasted: 'decimal',
1223
+ forecast: 'decimal',
1224
+ },
1225
+ effects: ['read:stock.Quant', 'read:stock.Move', 'read:stock.Location'],
1226
+ agent: true,
1227
+ handler: async (ctx, args) => {
1228
+ const locations = await ctx.db.select('stock.Location');
1229
+ const anchor = args.locationId ? locations.find((location) => location.id === args.locationId) : null;
1230
+ const inside = new Set(locations
1231
+ .filter((location) => ['internal', 'transit'].includes(String(location.usage)))
1232
+ .filter((location) => {
1233
+ if (args.warehouseId)
1234
+ return location.warehouseId === args.warehouseId;
1235
+ if (anchor)
1236
+ return String(location.parentPath).startsWith(String(anchor.parentPath));
1237
+ return true;
1238
+ })
1239
+ .map((location) => String(location.id)));
1240
+ const quants = (await ctx.db.select('stock.Quant', { productId: args.productId })).filter((quant) => inside.has(String(quant.locationId)));
1241
+ const onHand = quants.reduce((sum, quant) => sum + Number(quant.quantity), 0);
1242
+ const reserved = quants.reduce((sum, quant) => sum + Number(quant.reservedQuantity), 0);
1243
+ const moves = (await ctx.db.select('stock.Move', { productId: args.productId })).filter((move) => !['done', 'cancel', 'draft'].includes(String(move.state)));
1244
+ let incoming = 0, outgoing = 0;
1245
+ for (const move of moves) {
1246
+ const remaining = Math.max(0, Number(move.productUomQty) - Number(move.quantity));
1247
+ const sourceInside = inside.has(String(move.locationId));
1248
+ const destinationInside = inside.has(String(move.locationDestId));
1249
+ if (!sourceInside && destinationInside)
1250
+ incoming += remaining;
1251
+ if (sourceInside && !destinationInside)
1252
+ outgoing += remaining;
1253
+ }
1254
+ const forecasted = onHand + incoming - outgoing;
1255
+ return {
1256
+ productId: args.productId,
1257
+ onHand: String(onHand),
1258
+ reserved: String(reserved),
1259
+ available: String(onHand - reserved),
1260
+ incoming: String(incoming),
1261
+ outgoing: String(outgoing),
1262
+ forecasted: String(forecasted),
1263
+ forecast: String(forecasted),
1264
+ };
1265
+ },
1266
+ }),
1267
+ };
1268
+ functions.savePicking = defineFn({
1269
+ input: {
1270
+ id: 'id',
1271
+ name: 'text',
1272
+ pickingTypeId: 'id',
1273
+ locationId: 'id?',
1274
+ locationDestId: 'id?',
1275
+ moveType: 'text?',
1276
+ scheduledDate: 'datetime?',
1277
+ backorderId: 'id?',
1278
+ },
1279
+ output: { ok: 'bool', id: 'id?', errors: 'json?' },
1280
+ effects: ['read:stock.PickingType', 'read:stock.Picking', 'write:stock.Picking'],
1281
+ idempotent: true,
1282
+ agent: true,
1283
+ handler: async (ctx, args) => {
1284
+ const type = (await ctx.db.select('stock.PickingType', { id: args.pickingTypeId }))[0];
1285
+ if (!type)
1286
+ return invalid('pickingTypeId', 'operation type không tồn tại');
1287
+ const existing = (await ctx.db.select('stock.Picking', { id: args.id }))[0];
1288
+ const values = {
1289
+ ...args,
1290
+ locationId: args.locationId ?? type.defaultLocationSrcId,
1291
+ locationDestId: args.locationDestId ?? type.defaultLocationDestId,
1292
+ moveType: args.moveType ?? 'direct',
1293
+ state: existing?.state ?? 'draft',
1294
+ backorderId: args.backorderId ?? existing?.backorderId ?? null,
1295
+ scheduledDate: args.scheduledDate ?? existing?.scheduledDate ?? new Date().toISOString(),
1296
+ dateDone: existing?.dateDone ?? null,
1297
+ };
1298
+ if (!values.locationId || !values.locationDestId)
1299
+ return invalid('locationId', 'cần source và destination location');
1300
+ const cs = ctx
1301
+ .change('stock.Picking', values, existing ?? null)
1302
+ .cast([
1303
+ 'id',
1304
+ 'name',
1305
+ 'pickingTypeId',
1306
+ 'locationId',
1307
+ 'locationDestId',
1308
+ 'moveType',
1309
+ 'state',
1310
+ 'backorderId',
1311
+ 'scheduledDate',
1312
+ 'dateDone',
1313
+ ])
1314
+ .required([
1315
+ 'name',
1316
+ 'pickingTypeId',
1317
+ 'locationId',
1318
+ 'locationDestId',
1319
+ 'moveType',
1320
+ 'state',
1321
+ 'scheduledDate',
1322
+ ]);
1323
+ if (!cs.valid)
1324
+ return { ok: false, errors: cs.errors };
1325
+ await ctx.db.commit(cs, existing ? { id: args.id } : undefined);
1326
+ return { ok: true, id: args.id };
1327
+ },
1328
+ });
1329
+ functions.saveLot = defineFn({
1330
+ input: { id: 'id', productId: 'id', name: 'text', ref: 'text?', note: 'text?', active: 'bool?' },
1331
+ output: { ok: 'bool', id: 'id?', errors: 'json?' },
1332
+ effects: ['read:product.Product', 'read:stock.Lot', 'write:stock.Lot', 'read:stock.MoveLine'],
1333
+ idempotent: true,
1334
+ agent: true,
1335
+ handler: async (ctx, args) => {
1336
+ if (!(await ctx.db.select('product.Product', { id: args.productId }))[0])
1337
+ return invalid('productId', 'biến thể không tồn tại');
1338
+ const existing = (await ctx.db.select('stock.Lot', { id: args.id }))[0];
1339
+ if (existing && existing.productId !== args.productId) {
1340
+ const moveLines = await ctx.db.select('stock.MoveLine', { lotId: args.id });
1341
+ if (moveLines.length)
1342
+ return invalid('productId', 'không thể đổi sản phẩm khi lô hoặc sê-ri đã được dùng trong dịch chuyển kho');
1343
+ }
1344
+ const values = { ...args, active: args.active ?? existing?.active ?? true };
1345
+ const cs = ctx
1346
+ .change('stock.Lot', values, existing ?? null)
1347
+ .cast(['id', 'productId', 'name', 'ref', 'note', 'active'])
1348
+ .required(['productId', 'name']);
1349
+ if (!cs.valid)
1350
+ return { ok: false, errors: cs.errors };
1351
+ await ctx.db.commit(cs, existing ? { id: args.id } : undefined);
1352
+ return { ok: true, id: args.id };
1353
+ },
1354
+ });
1355
+ functions.assignPicking = defineFn({
1356
+ input: { id: 'id' },
1357
+ output: { ok: 'bool', state: 'text?', allocations: 'json?', shortages: 'json?', errors: 'json?' },
1358
+ effects: [
1359
+ 'read:stock.Picking',
1360
+ 'write:stock.Picking',
1361
+ 'read:stock.Move',
1362
+ 'write:stock.Move',
1363
+ 'read:stock.MoveLine',
1364
+ 'write:stock.MoveLine',
1365
+ 'read:stock.Quant',
1366
+ 'write:stock.Quant',
1367
+ 'read:product.Product',
1368
+ 'read:product.Template',
1369
+ ],
1370
+ idempotent: true,
1371
+ agent: true,
1372
+ handler: async (ctx, args) => {
1373
+ const picking = (await ctx.db.select('stock.Picking', { id: args.id }))[0];
1374
+ if (!picking)
1375
+ return invalid('id', 'transfer không tồn tại');
1376
+ if (picking.state === 'draft')
1377
+ return invalid('state', 'xác nhận transfer trước khi giữ hàng');
1378
+ if (picking.state === 'done' || picking.state === 'cancel')
1379
+ return invalid('state', 'transfer đã kết thúc');
1380
+ const allocations = [];
1381
+ const shortages = [];
1382
+ for (const move of await ctx.db.select('stock.Move', { pickingId: args.id })) {
1383
+ const result = (await functions.reserveMove.handler(ctx, { id: move.id }));
1384
+ const reserved = Number(result.reserved ?? 0);
1385
+ allocations.push(...(await ctx.db.select('stock.MoveLine', { moveId: move.id })));
1386
+ const shortage = Math.max(0, Number(move.productUomQty) - reserved);
1387
+ if (shortage)
1388
+ shortages.push({ moveId: move.id, quantity: String(shortage) });
1389
+ }
1390
+ const updated = (await ctx.db.select('stock.Picking', { id: args.id }))[0];
1391
+ return { ok: true, state: updated.state, allocations, shortages };
1392
+ },
1393
+ });
1394
+ functions.cancelPicking = defineFn({
1395
+ input: { id: 'id' },
1396
+ output: { ok: 'bool', id: 'id?', errors: 'json?' },
1397
+ effects: [
1398
+ 'read:stock.Picking',
1399
+ 'write:stock.Picking',
1400
+ 'read:stock.Move',
1401
+ 'write:stock.Move',
1402
+ 'read:stock.MoveLine',
1403
+ 'write:stock.MoveLine',
1404
+ 'read:stock.Location',
1405
+ 'read:stock.Quant',
1406
+ 'write:stock.Quant',
1407
+ ],
1408
+ idempotent: true,
1409
+ agent: true,
1410
+ handler: async (ctx, args) => {
1411
+ const picking = (await ctx.db.select('stock.Picking', { id: args.id }))[0];
1412
+ if (!picking)
1413
+ return invalid('id', 'transfer không tồn tại');
1414
+ if (picking.state === 'done')
1415
+ return invalid('state', 'transfer đã hoàn thành');
1416
+ await ctx.tx(async (tx) => {
1417
+ for (const move of await tx.db.select('stock.Move', { pickingId: args.id })) {
1418
+ const source = (await tx.db.select('stock.Location', { id: move.locationId }))[0];
1419
+ for (const line of await tx.db.select('stock.MoveLine', { moveId: move.id })) {
1420
+ if (!line.picked && source && ['internal', 'transit'].includes(String(source.usage)))
1421
+ await mutateQuant(tx, {
1422
+ productId: move.productId,
1423
+ locationId: move.locationId,
1424
+ lotId: line.lotId,
1425
+ quantity: 0,
1426
+ reserved: -Number(line.quantity),
1427
+ });
1428
+ await tx.db.update('stock.MoveLine', { id: line.id }, { quantity: '0', quantityProductUom: '0', picked: true });
1429
+ }
1430
+ await tx.db.update('stock.Move', { id: move.id }, { state: 'cancel', quantity: '0', picked: false });
1431
+ }
1432
+ await tx.db.update('stock.Picking', { id: args.id }, { state: 'cancel' });
1433
+ });
1434
+ return { ok: true, id: args.id };
1435
+ },
1436
+ });
1437
+ functions.reconcileReservations = defineFn({
1438
+ input: { productId: 'id?', locationId: 'id?' },
1439
+ output: { ok: 'bool', changed: 'int' },
1440
+ effects: [
1441
+ 'read:stock.Move',
1442
+ 'read:stock.MoveLine',
1443
+ 'read:stock.Location',
1444
+ 'read:stock.Quant',
1445
+ 'write:stock.Quant',
1446
+ ],
1447
+ idempotent: true,
1448
+ agent: true,
1449
+ handler: async (ctx, args) => {
1450
+ const moves = new Map((await ctx.db.select('stock.Move')).map((move) => [String(move.id), move]));
1451
+ const locations = new Map((await ctx.db.select('stock.Location')).map((location) => [String(location.id), location]));
1452
+ const wanted = new Map();
1453
+ for (const line of await ctx.db.select('stock.MoveLine')) {
1454
+ const move = moves.get(String(line.moveId));
1455
+ const location = locations.get(String(line.locationId));
1456
+ if (line.picked ||
1457
+ !move ||
1458
+ ['done', 'cancel'].includes(String(move.state)) ||
1459
+ !location ||
1460
+ !['internal', 'transit'].includes(String(location.usage)) ||
1461
+ (args.productId && line.productId !== args.productId) ||
1462
+ (args.locationId && line.locationId !== args.locationId))
1463
+ continue;
1464
+ const id = quantId(ctx, line.productId, line.locationId, line.lotId);
1465
+ wanted.set(id, (wanted.get(id) ?? 0) + Number(line.quantity));
1466
+ }
1467
+ let changed = 0;
1468
+ for (const quant of await ctx.db.select('stock.Quant')) {
1469
+ if (args.productId && quant.productId !== args.productId)
1470
+ continue;
1471
+ if (args.locationId && quant.locationId !== args.locationId)
1472
+ continue;
1473
+ const expected = wanted.get(String(quant.id)) ?? 0;
1474
+ const delta = expected - Number(quant.reservedQuantity);
1475
+ if (Math.abs(delta) > 1e-12) {
1476
+ await mutateQuant(ctx, {
1477
+ productId: quant.productId,
1478
+ locationId: quant.locationId,
1479
+ lotId: quant.lotId,
1480
+ quantity: 0,
1481
+ reserved: delta,
1482
+ });
1483
+ changed++;
1484
+ }
1485
+ }
1486
+ return { ok: true, changed };
1487
+ },
1488
+ });
1489
+ functions.validatePicking = defineFn({
1490
+ input: { id: 'id', backorder: 'text?' },
1491
+ output: { ok: 'bool', id: 'id?', backorderId: 'id?', errors: 'json?' },
1492
+ effects: functions.completePicking.effects,
1493
+ agent: true,
1494
+ handler: async (ctx, args) => {
1495
+ const picking = (await ctx.db.select('stock.Picking', { id: args.id }))[0];
1496
+ if (!picking)
1497
+ return invalid('id', 'transfer không tồn tại');
1498
+ const type = (await ctx.db.select('stock.PickingType', { id: picking.pickingTypeId }))[0];
1499
+ const moves = await ctx.db.select('stock.Move', { pickingId: args.id });
1500
+ let hasRemaining = false;
1501
+ for (const move of moves) {
1502
+ const done = (await ctx.db.select('stock.MoveLine', { moveId: move.id }))
1503
+ .filter((line) => line.picked)
1504
+ .reduce((sum, line) => sum + Number(line.quantity), 0);
1505
+ if (done + 1e-12 < Number(move.productUomQty))
1506
+ hasRemaining = true;
1507
+ }
1508
+ let createBackorder = false;
1509
+ if (hasRemaining && type?.createBackorder === 'always')
1510
+ createBackorder = true;
1511
+ else if (hasRemaining && type?.createBackorder === 'ask') {
1512
+ if (!['create', 'cancel'].includes(String(args.backorder ?? '')))
1513
+ return invalid('backorder', 'phải chọn create hoặc cancel');
1514
+ createBackorder = args.backorder === 'create';
1515
+ }
1516
+ return functions.completePicking.handler(ctx, {
1517
+ id: args.id,
1518
+ createBackorder,
1519
+ pickedOnly: true,
1520
+ });
1521
+ },
1522
+ });
1523
+ //# sourceMappingURL=functions.js.map