@aglyn/plugins-commerce 1.0.0-beta.229 → 1.0.0-beta.231

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 (590) hide show
  1. package/package.json +13 -13
  2. package/src/index.d.ts +0 -1
  3. package/src/index.js +0 -1
  4. package/src/index.js.map +1 -1
  5. package/src/lib/barcode/barcode-decode.d.ts +71 -0
  6. package/src/lib/barcode/barcode-decode.js +498 -0
  7. package/src/lib/barcode/barcode-decode.js.map +1 -0
  8. package/src/lib/barcode/barcode-encode.d.ts +44 -0
  9. package/src/lib/barcode/barcode-encode.js +138 -0
  10. package/src/lib/barcode/barcode-encode.js.map +1 -0
  11. package/src/lib/barcode/barcode-scanner.component.d.ts +23 -0
  12. package/src/lib/barcode/barcode-scanner.component.js +260 -0
  13. package/src/lib/barcode/barcode-scanner.component.js.map +1 -0
  14. package/src/lib/barcode/scan-button.component.d.ts +10 -0
  15. package/src/lib/barcode/scan-button.component.js +62 -0
  16. package/src/lib/barcode/scan-button.component.js.map +1 -0
  17. package/src/lib/barcode/scanner-wedge.d.ts +35 -0
  18. package/src/lib/barcode/scanner-wedge.js +108 -0
  19. package/src/lib/barcode/scanner-wedge.js.map +1 -0
  20. package/src/lib/components/account.js +10 -1
  21. package/src/lib/components/account.js.map +1 -1
  22. package/src/lib/components/cart-extras.d.ts +45 -0
  23. package/src/lib/components/cart-extras.js +127 -0
  24. package/src/lib/components/cart-extras.js.map +1 -0
  25. package/src/lib/components/cart.js +82 -15
  26. package/src/lib/components/cart.js.map +1 -1
  27. package/src/lib/components/checkout-return-notice.d.ts +26 -0
  28. package/src/lib/components/checkout-return-notice.js +48 -0
  29. package/src/lib/components/checkout-return-notice.js.map +1 -0
  30. package/src/lib/components/commerce-console-page.js +124 -0
  31. package/src/lib/components/commerce-console-page.js.map +1 -1
  32. package/src/lib/components/commerce-console-sections.d.ts +1 -1
  33. package/src/lib/components/commerce-console-sections.js +4 -0
  34. package/src/lib/components/commerce-console-sections.js.map +1 -1
  35. package/src/lib/components/console/bulk-fulfill.d.ts +44 -0
  36. package/src/lib/components/console/bulk-fulfill.js +84 -0
  37. package/src/lib/components/console/bulk-fulfill.js.map +1 -0
  38. package/src/lib/components/console/customer-notifications-card.component.d.ts +19 -0
  39. package/src/lib/components/console/customer-notifications-card.component.js +149 -0
  40. package/src/lib/components/console/customer-notifications-card.component.js.map +1 -0
  41. package/src/lib/components/console/host-orders-card.component.js +84 -5
  42. package/src/lib/components/console/host-orders-card.component.js.map +1 -1
  43. package/src/lib/components/console/locations-card.component.js +164 -57
  44. package/src/lib/components/console/locations-card.component.js.map +1 -1
  45. package/src/lib/components/console/order-detail-dialog.component.js +209 -61
  46. package/src/lib/components/console/order-detail-dialog.component.js.map +1 -1
  47. package/src/lib/components/console/order-fulfillment-panel.component.d.ts +48 -0
  48. package/src/lib/components/console/order-fulfillment-panel.component.js +542 -0
  49. package/src/lib/components/console/order-fulfillment-panel.component.js.map +1 -0
  50. package/src/lib/components/console/order-invoice.component.d.ts +33 -0
  51. package/src/lib/components/console/order-invoice.component.js +81 -0
  52. package/src/lib/components/console/order-invoice.component.js.map +1 -0
  53. package/src/lib/components/console/order-receipt-resend.component.d.ts +21 -0
  54. package/src/lib/components/console/order-receipt-resend.component.js +203 -0
  55. package/src/lib/components/console/order-receipt-resend.component.js.map +1 -0
  56. package/src/lib/components/console/order-returns.component.d.ts +36 -0
  57. package/src/lib/components/console/order-returns.component.js +142 -0
  58. package/src/lib/components/console/order-returns.component.js.map +1 -0
  59. package/src/lib/components/console/order-shipping-actions.component.d.ts +54 -0
  60. package/src/lib/components/console/order-shipping-actions.component.js +149 -0
  61. package/src/lib/components/console/order-shipping-actions.component.js.map +1 -0
  62. package/src/lib/components/console/order-webhooks-card.component.d.ts +50 -0
  63. package/src/lib/components/console/order-webhooks-card.component.js +623 -0
  64. package/src/lib/components/console/order-webhooks-card.component.js.map +1 -0
  65. package/src/lib/components/console/order-zones.d.ts +155 -0
  66. package/src/lib/components/console/order-zones.js +40 -0
  67. package/src/lib/components/console/order-zones.js.map +1 -0
  68. package/src/lib/components/console/payment-methods-card.component.d.ts +67 -0
  69. package/src/lib/components/console/payment-methods-card.component.js +395 -0
  70. package/src/lib/components/console/payment-methods-card.component.js.map +1 -0
  71. package/src/lib/components/console/pos/pos-api.d.ts +124 -0
  72. package/src/lib/components/console/pos/pos-api.js +101 -0
  73. package/src/lib/components/console/pos/pos-api.js.map +1 -0
  74. package/src/lib/components/console/pos/pos-cart-panel.component.d.ts +36 -0
  75. package/src/lib/components/console/pos/pos-cart-panel.component.js +160 -0
  76. package/src/lib/components/console/pos/pos-cart-panel.component.js.map +1 -0
  77. package/src/lib/components/console/pos/pos-item-dialog.component.d.ts +39 -0
  78. package/src/lib/components/console/pos/pos-item-dialog.component.js +352 -0
  79. package/src/lib/components/console/pos/pos-item-dialog.component.js.map +1 -0
  80. package/src/lib/components/console/pos/pos-product-grid.component.d.ts +47 -0
  81. package/src/lib/components/console/pos/pos-product-grid.component.js +272 -0
  82. package/src/lib/components/console/pos/pos-product-grid.component.js.map +1 -0
  83. package/src/lib/components/console/pos/pos-receipt-panel.component.d.ts +27 -0
  84. package/src/lib/components/console/pos/pos-receipt-panel.component.js +282 -0
  85. package/src/lib/components/console/pos/pos-receipt-panel.component.js.map +1 -0
  86. package/src/lib/components/console/pos/pos-tender-dialogs.component.d.ts +53 -0
  87. package/src/lib/components/console/pos/pos-tender-dialogs.component.js +445 -0
  88. package/src/lib/components/console/pos/pos-tender-dialogs.component.js.map +1 -0
  89. package/src/lib/components/console/pos/pos-tender-panel.component.d.ts +31 -0
  90. package/src/lib/components/console/pos/pos-tender-panel.component.js +640 -0
  91. package/src/lib/components/console/pos/pos-tender-panel.component.js.map +1 -0
  92. package/src/lib/components/console/pos/use-pos-display.d.ts +43 -0
  93. package/src/lib/components/console/pos/use-pos-display.js +161 -0
  94. package/src/lib/components/console/pos/use-pos-display.js.map +1 -0
  95. package/src/lib/components/console/pos-devices-card.component.d.ts +14 -0
  96. package/src/lib/components/console/pos-devices-card.component.js +546 -0
  97. package/src/lib/components/console/pos-devices-card.component.js.map +1 -0
  98. package/src/lib/components/console/pos-display/brand-screen.d.ts +33 -0
  99. package/src/lib/components/console/pos-display/brand-screen.js +85 -0
  100. package/src/lib/components/console/pos-display/brand-screen.js.map +1 -0
  101. package/src/lib/components/console/pos-display/cart-screen.d.ts +29 -0
  102. package/src/lib/components/console/pos-display/cart-screen.js +166 -0
  103. package/src/lib/components/console/pos-display/cart-screen.js.map +1 -0
  104. package/src/lib/components/console/pos-display/pairing-screen.d.ts +24 -0
  105. package/src/lib/components/console/pos-display/pairing-screen.js +127 -0
  106. package/src/lib/components/console/pos-display/pairing-screen.js.map +1 -0
  107. package/src/lib/components/console/pos-display/pos-display-api.d.ts +90 -0
  108. package/src/lib/components/console/pos-display/pos-display-api.js +140 -0
  109. package/src/lib/components/console/pos-display/pos-display-api.js.map +1 -0
  110. package/src/lib/components/console/pos-display/receipt-screen.d.ts +35 -0
  111. package/src/lib/components/console/pos-display/receipt-screen.js +200 -0
  112. package/src/lib/components/console/pos-display/receipt-screen.js.map +1 -0
  113. package/src/lib/components/console/pos-display/tip-screen.d.ts +36 -0
  114. package/src/lib/components/console/pos-display/tip-screen.js +211 -0
  115. package/src/lib/components/console/pos-display/tip-screen.js.map +1 -0
  116. package/src/lib/components/console/pos-display-page.component.d.ts +16 -0
  117. package/src/lib/components/console/pos-display-page.component.js +407 -0
  118. package/src/lib/components/console/pos-display-page.component.js.map +1 -0
  119. package/src/lib/components/console/pos-ops/pos-customer-lookup.component.d.ts +40 -0
  120. package/src/lib/components/console/pos-ops/pos-customer-lookup.component.js +289 -0
  121. package/src/lib/components/console/pos-ops/pos-customer-lookup.component.js.map +1 -0
  122. package/src/lib/components/console/pos-ops/pos-last-receipt.component.d.ts +34 -0
  123. package/src/lib/components/console/pos-ops/pos-last-receipt.component.js +61 -0
  124. package/src/lib/components/console/pos-ops/pos-last-receipt.component.js.map +1 -0
  125. package/src/lib/components/console/pos-ops/pos-operations-bar.component.d.ts +38 -0
  126. package/src/lib/components/console/pos-ops/pos-operations-bar.component.js +129 -0
  127. package/src/lib/components/console/pos-ops/pos-operations-bar.component.js.map +1 -0
  128. package/src/lib/components/console/pos-ops/pos-ops-api.d.ts +37 -0
  129. package/src/lib/components/console/pos-ops/pos-ops-api.js +60 -0
  130. package/src/lib/components/console/pos-ops/pos-ops-api.js.map +1 -0
  131. package/src/lib/components/console/pos-ops/pos-pin-pad.component.d.ts +48 -0
  132. package/src/lib/components/console/pos-ops/pos-pin-pad.component.js +220 -0
  133. package/src/lib/components/console/pos-ops/pos-pin-pad.component.js.map +1 -0
  134. package/src/lib/components/console/pos-ops/pos-receipt-actions.component.d.ts +63 -0
  135. package/src/lib/components/console/pos-ops/pos-receipt-actions.component.js +186 -0
  136. package/src/lib/components/console/pos-ops/pos-receipt-actions.component.js.map +1 -0
  137. package/src/lib/components/console/pos-ops/pos-receipt.d.ts +39 -0
  138. package/src/lib/components/console/pos-ops/pos-receipt.js +182 -0
  139. package/src/lib/components/console/pos-ops/pos-receipt.js.map +1 -0
  140. package/src/lib/components/console/pos-ops/pos-return-dialog.component.d.ts +40 -0
  141. package/src/lib/components/console/pos-ops/pos-return-dialog.component.js +465 -0
  142. package/src/lib/components/console/pos-ops/pos-return-dialog.component.js.map +1 -0
  143. package/src/lib/components/console/pos-ops/pos-shift-history-card.component.d.ts +29 -0
  144. package/src/lib/components/console/pos-ops/pos-shift-history-card.component.js +253 -0
  145. package/src/lib/components/console/pos-ops/pos-shift-history-card.component.js.map +1 -0
  146. package/src/lib/components/console/pos-ops/pos-shift-panel.component.d.ts +34 -0
  147. package/src/lib/components/console/pos-ops/pos-shift-panel.component.js +494 -0
  148. package/src/lib/components/console/pos-ops/pos-shift-panel.component.js.map +1 -0
  149. package/src/lib/components/console/pos-ops/pos-shift-report.component.d.ts +37 -0
  150. package/src/lib/components/console/pos-ops/pos-shift-report.component.js +102 -0
  151. package/src/lib/components/console/pos-ops/pos-shift-report.component.js.map +1 -0
  152. package/src/lib/components/console/pos-ops/pos-staff-pins-card.component.d.ts +30 -0
  153. package/src/lib/components/console/pos-ops/pos-staff-pins-card.component.js +277 -0
  154. package/src/lib/components/console/pos-ops/pos-staff-pins-card.component.js.map +1 -0
  155. package/src/lib/components/console/pos-ops/register-ops.d.ts +28 -0
  156. package/src/lib/components/console/pos-ops/register-ops.js +28 -0
  157. package/src/lib/components/console/pos-ops/register-ops.js.map +1 -0
  158. package/src/lib/components/console/pos-ops/use-pos-cashier.d.ts +46 -0
  159. package/src/lib/components/console/pos-ops/use-pos-cashier.js +128 -0
  160. package/src/lib/components/console/pos-ops/use-pos-cashier.js.map +1 -0
  161. package/src/lib/components/console/pos-ops/use-pos-sale-receipt.d.ts +36 -0
  162. package/src/lib/components/console/pos-ops/use-pos-sale-receipt.js +64 -0
  163. package/src/lib/components/console/pos-ops/use-pos-sale-receipt.js.map +1 -0
  164. package/src/lib/components/console/pos-page.component.d.ts +13 -5
  165. package/src/lib/components/console/pos-page.component.js +729 -657
  166. package/src/lib/components/console/pos-page.component.js.map +1 -1
  167. package/src/lib/components/console/product-editor-dialog.component.js +51 -7
  168. package/src/lib/components/console/product-editor-dialog.component.js.map +1 -1
  169. package/src/lib/components/console/product-labels-dialog.component.d.ts +13 -0
  170. package/src/lib/components/console/product-labels-dialog.component.js +197 -0
  171. package/src/lib/components/console/product-labels-dialog.component.js.map +1 -0
  172. package/src/lib/components/console/product-register-fields.component.d.ts +19 -0
  173. package/src/lib/components/console/product-register-fields.component.js +241 -0
  174. package/src/lib/components/console/product-register-fields.component.js.map +1 -0
  175. package/src/lib/components/console/product-zones.d.ts +58 -2
  176. package/src/lib/components/console/product-zones.js +10 -2
  177. package/src/lib/components/console/product-zones.js.map +1 -1
  178. package/src/lib/components/console/products-hub-card.component.js +51 -11
  179. package/src/lib/components/console/products-hub-card.component.js.map +1 -1
  180. package/src/lib/components/console/register-hardware-card.component.d.ts +33 -0
  181. package/src/lib/components/console/register-hardware-card.component.js +826 -0
  182. package/src/lib/components/console/register-hardware-card.component.js.map +1 -0
  183. package/src/lib/components/console/registers-card.component.js +24 -5
  184. package/src/lib/components/console/registers-card.component.js.map +1 -1
  185. package/src/lib/components/console/return-actions.d.ts +38 -0
  186. package/src/lib/components/console/return-actions.js +76 -0
  187. package/src/lib/components/console/return-actions.js.map +1 -0
  188. package/src/lib/components/console/return-detail-dialog.component.d.ts +34 -0
  189. package/src/lib/components/console/return-detail-dialog.component.js +718 -0
  190. package/src/lib/components/console/return-detail-dialog.component.js.map +1 -0
  191. package/src/lib/components/console/return-settings-card.component.d.ts +34 -0
  192. package/src/lib/components/console/return-settings-card.component.js +195 -0
  193. package/src/lib/components/console/return-settings-card.component.js.map +1 -0
  194. package/src/lib/components/console/return-zones.d.ts +87 -0
  195. package/src/lib/components/console/return-zones.js +31 -0
  196. package/src/lib/components/console/return-zones.js.map +1 -0
  197. package/src/lib/components/console/returns-card.component.d.ts +45 -0
  198. package/src/lib/components/console/returns-card.component.js +159 -0
  199. package/src/lib/components/console/returns-card.component.js.map +1 -0
  200. package/src/lib/components/console/shipping-settings-card.component.js +161 -5
  201. package/src/lib/components/console/shipping-settings-card.component.js.map +1 -1
  202. package/src/lib/components/console/shippingeasy-card.component.d.ts +59 -0
  203. package/src/lib/components/console/shippingeasy-card.component.js +378 -0
  204. package/src/lib/components/console/shippingeasy-card.component.js.map +1 -0
  205. package/src/lib/components/console/shipstation-card.component.d.ts +35 -0
  206. package/src/lib/components/console/shipstation-card.component.js +345 -0
  207. package/src/lib/components/console/shipstation-card.component.js.map +1 -0
  208. package/src/lib/components/console/start-return-dialog.component.d.ts +40 -0
  209. package/src/lib/components/console/start-return-dialog.component.js +243 -0
  210. package/src/lib/components/console/start-return-dialog.component.js.map +1 -0
  211. package/src/lib/components/console/stock-movements-card.component.js +2 -1
  212. package/src/lib/components/console/stock-movements-card.component.js.map +1 -1
  213. package/src/lib/components/console/store-settings-card.component.js +2 -66
  214. package/src/lib/components/console/store-settings-card.component.js.map +1 -1
  215. package/src/lib/components/console/store-zones.d.ts +42 -0
  216. package/src/lib/components/console/store-zones.js +39 -0
  217. package/src/lib/components/console/store-zones.js.map +1 -0
  218. package/src/lib/components/order-status.d.ts +36 -0
  219. package/src/lib/components/order-status.js +502 -0
  220. package/src/lib/components/order-status.js.map +1 -0
  221. package/src/lib/components/product-detail.js +44 -2
  222. package/src/lib/components/product-detail.js.map +1 -1
  223. package/src/lib/components/return-request.d.ts +32 -0
  224. package/src/lib/components/return-request.js +576 -0
  225. package/src/lib/components/return-request.js.map +1 -0
  226. package/src/lib/components/storefront-payment-appearance.d.ts +32 -0
  227. package/src/lib/components/storefront-payment-appearance.js +114 -0
  228. package/src/lib/components/storefront-payment-appearance.js.map +1 -0
  229. package/src/lib/components/storefront-payment-element.d.ts +57 -1
  230. package/src/lib/components/storefront-payment-element.js +332 -33
  231. package/src/lib/components/storefront-payment-element.js.map +1 -1
  232. package/src/lib/constants/order-status.d.ts +22 -0
  233. package/src/lib/constants/order-status.js +22 -0
  234. package/src/lib/constants/order-status.js.map +1 -0
  235. package/src/lib/constants/return-request.d.ts +27 -0
  236. package/src/lib/constants/return-request.js +32 -0
  237. package/src/lib/constants/return-request.js.map +1 -0
  238. package/src/lib/constants/stock-movement-query.js +2 -1
  239. package/src/lib/constants/stock-movement-query.js.map +1 -1
  240. package/src/lib/declarations.console-server.js +9 -0
  241. package/src/lib/declarations.console-server.js.map +1 -1
  242. package/src/lib/declarations.server.d.ts +2 -1
  243. package/src/lib/declarations.server.js +47 -1
  244. package/src/lib/declarations.server.js.map +1 -1
  245. package/src/lib/model/buyer-notifications.d.ts +59 -0
  246. package/src/lib/model/buyer-notifications.js +97 -0
  247. package/src/lib/model/buyer-notifications.js.map +1 -0
  248. package/src/lib/model/commerce-orders.d.ts +127 -1
  249. package/src/lib/model/commerce-orders.js +24 -15
  250. package/src/lib/model/commerce-orders.js.map +1 -1
  251. package/src/lib/model/commerce-payment-methods.d.ts +146 -0
  252. package/src/lib/model/commerce-payment-methods.js +247 -0
  253. package/src/lib/model/commerce-payment-methods.js.map +1 -0
  254. package/src/lib/model/commerce-pos-ops.d.ts +437 -0
  255. package/src/lib/model/commerce-pos-ops.js +721 -0
  256. package/src/lib/model/commerce-pos-ops.js.map +1 -0
  257. package/src/lib/model/commerce-pos.d.ts +263 -0
  258. package/src/lib/model/commerce-pos.js +375 -0
  259. package/src/lib/model/commerce-pos.js.map +1 -0
  260. package/src/lib/model/commerce-printers.d.ts +211 -0
  261. package/src/lib/model/commerce-printers.js +181 -0
  262. package/src/lib/model/commerce-printers.js.map +1 -0
  263. package/src/lib/model/commerce-receipt.d.ts +97 -0
  264. package/src/lib/model/commerce-receipt.js +180 -0
  265. package/src/lib/model/commerce-receipt.js.map +1 -0
  266. package/src/lib/model/commerce-returns.d.ts +207 -0
  267. package/src/lib/model/commerce-returns.js +300 -0
  268. package/src/lib/model/commerce-returns.js.map +1 -0
  269. package/src/lib/model/commerce-shipping.d.ts +44 -1
  270. package/src/lib/model/commerce-shipping.js +53 -9
  271. package/src/lib/model/commerce-shipping.js.map +1 -1
  272. package/src/lib/model/commerce-tax-engine.d.ts +90 -0
  273. package/src/lib/model/commerce-tax-engine.js +129 -0
  274. package/src/lib/model/commerce-tax-engine.js.map +1 -0
  275. package/src/lib/model/commerce.d.ts +88 -2
  276. package/src/lib/model/commerce.js +89 -1
  277. package/src/lib/model/commerce.js.map +1 -1
  278. package/src/lib/model/index.d.ts +15 -0
  279. package/src/lib/model/index.js +15 -0
  280. package/src/lib/model/index.js.map +1 -1
  281. package/src/lib/model/order-events.d.ts +154 -0
  282. package/src/lib/model/order-events.js +153 -0
  283. package/src/lib/model/order-events.js.map +1 -0
  284. package/src/lib/model/order-fulfillment.d.ts +117 -0
  285. package/src/lib/model/order-fulfillment.js +217 -0
  286. package/src/lib/model/order-fulfillment.js.map +1 -0
  287. package/src/lib/model/order-history.d.ts +58 -0
  288. package/src/lib/model/order-history.js +22 -0
  289. package/src/lib/model/order-history.js.map +1 -0
  290. package/src/lib/model/order-list-fields.d.ts +9 -1
  291. package/src/lib/model/order-list-fields.js +7 -1
  292. package/src/lib/model/order-list-fields.js.map +1 -1
  293. package/src/lib/model/order-shipping-export.d.ts +91 -0
  294. package/src/lib/model/order-shipping-export.js +192 -0
  295. package/src/lib/model/order-shipping-export.js.map +1 -0
  296. package/src/lib/model/order-status-view.d.ts +103 -0
  297. package/src/lib/model/order-status-view.js +156 -0
  298. package/src/lib/model/order-status-view.js.map +1 -0
  299. package/src/lib/model/order-webhooks.d.ts +142 -0
  300. package/src/lib/model/order-webhooks.js +91 -0
  301. package/src/lib/model/order-webhooks.js.map +1 -0
  302. package/src/lib/model/product-channel.d.ts +56 -0
  303. package/src/lib/model/product-channel.js +86 -0
  304. package/src/lib/model/product-channel.js.map +1 -0
  305. package/src/lib/model/product-modifiers.d.ts +80 -0
  306. package/src/lib/model/product-modifiers.js +140 -0
  307. package/src/lib/model/product-modifiers.js.map +1 -0
  308. package/src/lib/model/shippingeasy.d.ts +94 -0
  309. package/src/lib/model/shippingeasy.js +267 -0
  310. package/src/lib/model/shippingeasy.js.map +1 -0
  311. package/src/lib/model/shipstation.d.ts +125 -0
  312. package/src/lib/model/shipstation.js +399 -0
  313. package/src/lib/model/shipstation.js.map +1 -0
  314. package/src/lib/model/smart-collection-reads.d.ts +32 -0
  315. package/src/lib/model/smart-collection-reads.js +63 -0
  316. package/src/lib/model/smart-collection-reads.js.map +1 -0
  317. package/src/lib/model/tracking-url.d.ts +74 -0
  318. package/src/lib/model/tracking-url.js +159 -0
  319. package/src/lib/model/tracking-url.js.map +1 -0
  320. package/src/lib/plugin-config.d.ts +13 -0
  321. package/src/lib/plugin-config.js +77 -5
  322. package/src/lib/plugin-config.js.map +1 -1
  323. package/src/lib/plugin.js +23 -0
  324. package/src/lib/plugin.js.map +1 -1
  325. package/src/lib/pos-ops-config.d.ts +39 -0
  326. package/src/lib/pos-ops-config.js +88 -0
  327. package/src/lib/pos-ops-config.js.map +1 -0
  328. package/src/lib/printing/print-document.d.ts +106 -0
  329. package/src/lib/printing/print-document.js +464 -0
  330. package/src/lib/printing/print-document.js.map +1 -0
  331. package/src/lib/printing/product-labels.d.ts +58 -0
  332. package/src/lib/printing/product-labels.js +116 -0
  333. package/src/lib/printing/product-labels.js.map +1 -0
  334. package/src/lib/printing/render-epson.d.ts +57 -0
  335. package/src/lib/printing/render-epson.js +135 -0
  336. package/src/lib/printing/render-epson.js.map +1 -0
  337. package/src/lib/printing/render-star.d.ts +45 -0
  338. package/src/lib/printing/render-star.js +100 -0
  339. package/src/lib/printing/render-star.js.map +1 -0
  340. package/src/lib/printing/render-text.d.ts +25 -0
  341. package/src/lib/printing/render-text.js +53 -0
  342. package/src/lib/printing/render-text.js.map +1 -0
  343. package/src/lib/server/api-v1/openapi.js +27 -4
  344. package/src/lib/server/api-v1/openapi.js.map +1 -1
  345. package/src/lib/server/api-v1/order-view.d.ts +67 -0
  346. package/src/lib/server/api-v1/order-view.js +120 -0
  347. package/src/lib/server/api-v1/order-view.js.map +1 -0
  348. package/src/lib/server/api-v1/orders-and-products.js +58 -65
  349. package/src/lib/server/api-v1/orders-and-products.js.map +1 -1
  350. package/src/lib/server/billing-webhook.js +135 -28
  351. package/src/lib/server/billing-webhook.js.map +1 -1
  352. package/src/lib/server/cancel-order.js +29 -0
  353. package/src/lib/server/cancel-order.js.map +1 -1
  354. package/src/lib/server/carrier-rates-availability.d.ts +26 -0
  355. package/src/lib/server/carrier-rates-availability.js +76 -0
  356. package/src/lib/server/carrier-rates-availability.js.map +1 -0
  357. package/src/lib/server/carrier-shipping.d.ts +84 -0
  358. package/src/lib/server/carrier-shipping.js +135 -0
  359. package/src/lib/server/carrier-shipping.js.map +1 -0
  360. package/src/lib/server/cart-checkout.d.ts +2 -0
  361. package/src/lib/server/cart-checkout.js +226 -22
  362. package/src/lib/server/cart-checkout.js.map +1 -1
  363. package/src/lib/server/checkout-extras.d.ts +64 -0
  364. package/src/lib/server/checkout-extras.js +157 -0
  365. package/src/lib/server/checkout-extras.js.map +1 -0
  366. package/src/lib/server/{feed.d.ts → checkout-status.d.ts} +2 -7
  367. package/src/lib/server/checkout-status.js +111 -0
  368. package/src/lib/server/checkout-status.js.map +1 -0
  369. package/src/lib/server/checkout.js +86 -9
  370. package/src/lib/server/checkout.js.map +1 -1
  371. package/src/lib/server/draft-order.js +34 -5
  372. package/src/lib/server/draft-order.js.map +1 -1
  373. package/src/lib/server/fulfill-order.d.ts +127 -10
  374. package/src/lib/server/fulfill-order.js +451 -49
  375. package/src/lib/server/fulfill-order.js.map +1 -1
  376. package/src/lib/server/legacy-feed.d.ts +28 -0
  377. package/src/lib/server/legacy-feed.js +52 -0
  378. package/src/lib/server/legacy-feed.js.map +1 -0
  379. package/src/lib/server/native-checkout.d.ts +34 -15
  380. package/src/lib/server/native-checkout.js +32 -17
  381. package/src/lib/server/native-checkout.js.map +1 -1
  382. package/src/lib/server/order-event-host-emit.d.ts +23 -0
  383. package/src/lib/server/order-event-host-emit.js +30 -0
  384. package/src/lib/server/order-event-host-emit.js.map +1 -0
  385. package/src/lib/server/order-event-triggers.d.ts +37 -0
  386. package/src/lib/server/order-event-triggers.js +119 -0
  387. package/src/lib/server/order-event-triggers.js.map +1 -0
  388. package/src/lib/server/order-events.d.ts +62 -0
  389. package/src/lib/server/order-events.js +109 -0
  390. package/src/lib/server/order-events.js.map +1 -0
  391. package/src/lib/server/order-history.d.ts +23 -0
  392. package/src/lib/server/order-history.js +65 -0
  393. package/src/lib/server/order-history.js.map +1 -0
  394. package/src/lib/server/order-notifications.d.ts +185 -0
  395. package/src/lib/server/order-notifications.js +567 -0
  396. package/src/lib/server/order-notifications.js.map +1 -0
  397. package/src/lib/server/order-receipt-send.d.ts +39 -0
  398. package/src/lib/server/order-receipt-send.js +151 -0
  399. package/src/lib/server/order-receipt-send.js.map +1 -0
  400. package/src/lib/server/order-status-token.d.ts +31 -0
  401. package/src/lib/server/order-status-token.js +75 -0
  402. package/src/lib/server/order-status-token.js.map +1 -0
  403. package/src/lib/server/order-status.d.ts +58 -0
  404. package/src/lib/server/order-status.js +141 -0
  405. package/src/lib/server/order-status.js.map +1 -0
  406. package/src/lib/server/order-webhooks.d.ts +108 -0
  407. package/src/lib/server/order-webhooks.js +622 -0
  408. package/src/lib/server/order-webhooks.js.map +1 -0
  409. package/src/lib/server/orders-shipping-prepare.d.ts +26 -0
  410. package/src/lib/server/orders-shipping-prepare.js +121 -0
  411. package/src/lib/server/orders-shipping-prepare.js.map +1 -0
  412. package/src/lib/server/payment-method-domains.d.ts +209 -0
  413. package/src/lib/server/payment-method-domains.js +444 -0
  414. package/src/lib/server/payment-method-domains.js.map +1 -0
  415. package/src/lib/server/payment-methods.d.ts +77 -0
  416. package/src/lib/server/payment-methods.js +284 -0
  417. package/src/lib/server/payment-methods.js.map +1 -0
  418. package/src/lib/server/pos-auth.d.ts +50 -0
  419. package/src/lib/server/pos-auth.js +121 -0
  420. package/src/lib/server/pos-auth.js.map +1 -0
  421. package/src/lib/server/pos-customer.d.ts +49 -0
  422. package/src/lib/server/pos-customer.js +257 -0
  423. package/src/lib/server/pos-customer.js.map +1 -0
  424. package/src/lib/server/pos-display.d.ts +57 -0
  425. package/src/lib/server/pos-display.js +419 -0
  426. package/src/lib/server/pos-display.js.map +1 -0
  427. package/src/lib/server/pos-fee-month.d.ts +34 -0
  428. package/src/lib/server/pos-fee-month.js +36 -0
  429. package/src/lib/server/pos-fee-month.js.map +1 -0
  430. package/src/lib/server/pos-ops-gate.d.ts +161 -0
  431. package/src/lib/server/pos-ops-gate.js +295 -0
  432. package/src/lib/server/pos-ops-gate.js.map +1 -0
  433. package/src/lib/server/pos-ops-routes.d.ts +22 -0
  434. package/src/lib/server/pos-ops-routes.js +36 -0
  435. package/src/lib/server/pos-ops-routes.js.map +1 -0
  436. package/src/lib/server/pos-order.d.ts +1 -18
  437. package/src/lib/server/pos-order.js +222 -42
  438. package/src/lib/server/pos-order.js.map +1 -1
  439. package/src/lib/server/pos-payment.d.ts +39 -0
  440. package/src/lib/server/pos-payment.js +922 -0
  441. package/src/lib/server/pos-payment.js.map +1 -0
  442. package/src/lib/server/pos-print.d.ts +82 -0
  443. package/src/lib/server/pos-print.js +193 -0
  444. package/src/lib/server/pos-print.js.map +1 -0
  445. package/src/lib/server/pos-readers.d.ts +27 -0
  446. package/src/lib/server/pos-readers.js +276 -0
  447. package/src/lib/server/pos-readers.js.map +1 -0
  448. package/src/lib/server/pos-refund-authority.d.ts +60 -0
  449. package/src/lib/server/pos-refund-authority.js +72 -0
  450. package/src/lib/server/pos-refund-authority.js.map +1 -0
  451. package/src/lib/server/pos-return.d.ts +58 -0
  452. package/src/lib/server/pos-return.js +891 -0
  453. package/src/lib/server/pos-return.js.map +1 -0
  454. package/src/lib/server/pos-sale-stamp.d.ts +66 -0
  455. package/src/lib/server/pos-sale-stamp.js +84 -0
  456. package/src/lib/server/pos-sale-stamp.js.map +1 -0
  457. package/src/lib/server/pos-sale.d.ts +170 -0
  458. package/src/lib/server/pos-sale.js +461 -0
  459. package/src/lib/server/pos-sale.js.map +1 -0
  460. package/src/lib/server/pos-shift.d.ts +45 -0
  461. package/src/lib/server/pos-shift.js +484 -0
  462. package/src/lib/server/pos-shift.js.map +1 -0
  463. package/src/lib/server/pos-staff-pin.d.ts +26 -0
  464. package/src/lib/server/pos-staff-pin.js +339 -0
  465. package/src/lib/server/pos-staff-pin.js.map +1 -0
  466. package/src/lib/server/pos-stripe.d.ts +91 -0
  467. package/src/lib/server/pos-stripe.js +129 -0
  468. package/src/lib/server/pos-stripe.js.map +1 -0
  469. package/src/lib/server/pos-terminal-connection-token.d.ts +48 -0
  470. package/src/lib/server/pos-terminal-connection-token.js +166 -0
  471. package/src/lib/server/pos-terminal-connection-token.js.map +1 -0
  472. package/src/lib/server/pos-terminal.d.ts +218 -0
  473. package/src/lib/server/pos-terminal.js +1014 -0
  474. package/src/lib/server/pos-terminal.js.map +1 -0
  475. package/src/lib/server/print-queue.d.ts +124 -0
  476. package/src/lib/server/print-queue.js +301 -0
  477. package/src/lib/server/print-queue.js.map +1 -0
  478. package/src/lib/server/printer-poll.d.ts +75 -0
  479. package/src/lib/server/printer-poll.js +325 -0
  480. package/src/lib/server/printer-poll.js.map +1 -0
  481. package/src/lib/server/printer-secret.d.ts +39 -0
  482. package/src/lib/server/printer-secret.js +56 -0
  483. package/src/lib/server/printer-secret.js.map +1 -0
  484. package/src/lib/server/printers.d.ts +114 -0
  485. package/src/lib/server/printers.js +546 -0
  486. package/src/lib/server/printers.js.map +1 -0
  487. package/src/lib/server/product-ai-capability.d.ts +42 -0
  488. package/src/lib/server/product-ai-capability.js +159 -0
  489. package/src/lib/server/product-ai-capability.js.map +1 -0
  490. package/src/lib/server/product-catalog.d.ts +42 -0
  491. package/src/lib/server/product-catalog.js +305 -0
  492. package/src/lib/server/product-catalog.js.map +1 -0
  493. package/src/lib/server/product-drafts.d.ts +119 -0
  494. package/src/lib/server/product-drafts.js +384 -0
  495. package/src/lib/server/product-drafts.js.map +1 -0
  496. package/src/lib/server/refund.js +110 -45
  497. package/src/lib/server/refund.js.map +1 -1
  498. package/src/lib/server/reserve.js +2 -0
  499. package/src/lib/server/reserve.js.map +1 -1
  500. package/src/lib/server/return-status-action.d.ts +37 -0
  501. package/src/lib/server/return-status-action.js +57 -0
  502. package/src/lib/server/return-status-action.js.map +1 -0
  503. package/src/lib/server/returns.d.ts +119 -0
  504. package/src/lib/server/returns.js +938 -0
  505. package/src/lib/server/returns.js.map +1 -0
  506. package/src/lib/server/shipment-records.d.ts +36 -0
  507. package/src/lib/server/shipment-records.js +289 -0
  508. package/src/lib/server/shipment-records.js.map +1 -0
  509. package/src/lib/server/shipping-connector-gates.d.ts +40 -0
  510. package/src/lib/server/shipping-connector-gates.js +97 -0
  511. package/src/lib/server/shipping-connector-gates.js.map +1 -0
  512. package/src/lib/server/shipping-connectors.d.ts +29 -0
  513. package/src/lib/server/shipping-connectors.js +236 -0
  514. package/src/lib/server/shipping-connectors.js.map +1 -0
  515. package/src/lib/server/shippingeasy.d.ts +238 -0
  516. package/src/lib/server/shippingeasy.js +787 -0
  517. package/src/lib/server/shippingeasy.js.map +1 -0
  518. package/src/lib/server/shipstation.d.ts +129 -0
  519. package/src/lib/server/shipstation.js +483 -0
  520. package/src/lib/server/shipstation.js.map +1 -0
  521. package/src/lib/server/site-page-resolver.d.ts +5 -0
  522. package/src/lib/server/site-page-resolver.js +156 -1
  523. package/src/lib/server/site-page-resolver.js.map +1 -1
  524. package/src/lib/server/stock-levels.d.ts +21 -0
  525. package/src/lib/server/stock-levels.js +263 -0
  526. package/src/lib/server/stock-levels.js.map +1 -0
  527. package/src/lib/server/stripe-refund.d.ts +47 -0
  528. package/src/lib/server/stripe-refund.js +87 -0
  529. package/src/lib/server/stripe-refund.js.map +1 -0
  530. package/src/lib/server/supplier-update.js +46 -5
  531. package/src/lib/server/supplier-update.js.map +1 -1
  532. package/src/lib/server/tax-engine-quote.d.ts +47 -0
  533. package/src/lib/server/tax-engine-quote.js +105 -0
  534. package/src/lib/server/tax-engine-quote.js.map +1 -0
  535. package/src/lib/server.js +146 -2
  536. package/src/lib/server.js.map +1 -1
  537. package/src/lib/site.js +12 -0
  538. package/src/lib/site.js.map +1 -1
  539. package/src/lib/subprocessors.d.ts +26 -0
  540. package/src/lib/subprocessors.js +50 -0
  541. package/src/lib/subprocessors.js.map +1 -0
  542. package/src/lib/tenant-emails.js +461 -3
  543. package/src/lib/tenant-emails.js.map +1 -1
  544. package/src/lib/testing/fake-firestore.d.ts +45 -0
  545. package/src/lib/testing/fake-firestore.js +189 -0
  546. package/src/lib/testing/fake-firestore.js.map +1 -0
  547. package/src/lib/testing/memory-firestore.d.ts +123 -0
  548. package/src/lib/testing/memory-firestore.js +274 -0
  549. package/src/lib/testing/memory-firestore.js.map +1 -0
  550. package/src/lib/testing/pos-ops-harness.d.ts +50 -0
  551. package/src/lib/testing/pos-ops-harness.js +184 -0
  552. package/src/lib/testing/pos-ops-harness.js.map +1 -0
  553. package/src/lib/testing/pos-ops-memory-firestore.d.ts +55 -0
  554. package/src/lib/testing/pos-ops-memory-firestore.js +376 -0
  555. package/src/lib/testing/pos-ops-memory-firestore.js.map +1 -0
  556. package/src/lib/transfer/records-transfer.d.ts +11 -1
  557. package/src/lib/transfer/records-transfer.js +127 -5
  558. package/src/lib/transfer/records-transfer.js.map +1 -1
  559. package/src/lib/transfer/records.server.d.ts +9 -2
  560. package/src/lib/transfer/records.server.js +58 -7
  561. package/src/lib/transfer/records.server.js.map +1 -1
  562. package/src/lib/transfer/register-transfer-resources.js +40 -1
  563. package/src/lib/transfer/register-transfer-resources.js.map +1 -1
  564. package/src/lib/transfer/register-transfer-ui.js +4 -1
  565. package/src/lib/transfer/register-transfer-ui.js.map +1 -1
  566. package/src/lib/transfer/shipping-presets.d.ts +23 -0
  567. package/src/lib/transfer/shipping-presets.js +156 -0
  568. package/src/lib/transfer/shipping-presets.js.map +1 -0
  569. package/src/lib/transfer/tracking-transfer.d.ts +101 -0
  570. package/src/lib/transfer/tracking-transfer.js +546 -0
  571. package/src/lib/transfer/tracking-transfer.js.map +1 -0
  572. package/src/lib/transfer/tracking.server.d.ts +37 -0
  573. package/src/lib/transfer/tracking.server.js +393 -0
  574. package/src/lib/transfer/tracking.server.js.map +1 -0
  575. package/src/lib/transfer/transfer-keys.d.ts +2 -1
  576. package/src/lib/transfer/transfer-keys.js +6 -2
  577. package/src/lib/transfer/transfer-keys.js.map +1 -1
  578. package/src/lib/utils/code128.d.ts +37 -0
  579. package/src/lib/utils/code128.js +199 -0
  580. package/src/lib/utils/code128.js.map +1 -0
  581. package/src/lib/utils/order-invoice.d.ts +55 -0
  582. package/src/lib/utils/order-invoice.js +127 -0
  583. package/src/lib/utils/order-invoice.js.map +1 -0
  584. package/src/lib/utils/use-checkout-return-notice.d.ts +34 -0
  585. package/src/lib/utils/use-checkout-return-notice.js +78 -0
  586. package/src/lib/utils/use-checkout-return-notice.js.map +1 -0
  587. package/src/lib/utils/use-storefront-purchase-event.js +4 -0
  588. package/src/lib/utils/use-storefront-purchase-event.js.map +1 -1
  589. package/src/lib/server/feed.js +0 -69
  590. package/src/lib/server/feed.js.map +0 -1
@@ -22,9 +22,16 @@ import { merchantAccountIsReady } from "@aglyn/tenant-data-admin/server/payment-
22
22
  import { checkoutSessionCardAuthenticationParams } from "@aglyn/tenant-data-admin/server/stripe-card-authentication";
23
23
  import { buildRoute, claimAttempt, Route } from "@aglyn/aglyn/server";
24
24
  import { alertLowStockCrossing } from "./low-stock.js";
25
+ import { notifyOrderBuyer } from "./order-notifications.js";
26
+ import { ORDER_PAID_EVENT } from "../model/order-events.js";
27
+ import { raiseOrderEvent } from "./order-events.js";
25
28
  import { decrementVariantStock } from "./reserve-stock.js";
26
29
  import { holdPromotionSlot, promotionHoldKey, settlePromotionSlot } from "./promotion-hold.js";
27
30
  import { posMaxDiscountPct } from "../plugin-config.js";
31
+ import { offlineFeeMonthKey } from "./pos-fee-month.js";
32
+ import { notifyPosSaleCompleted } from "./pos-sale.js";
33
+ import { posSaleStamp } from "./pos-sale-stamp.js";
34
+ import { quoteSaleTaxWithEngine } from "./tax-engine-quote.js";
28
35
  import { resolveOrgPermissions } from "@aglyn/tenant-runtime/org-permissions";
29
36
  /**
30
37
  * The settlement claim (AGL-1691) now lives in `@aglyn/aglyn/server`
@@ -43,7 +50,8 @@ import { resolveOrgPermissions } from "@aglyn/tenant-runtime/org-permissions";
43
50
  * later). Inventory decrements per line from the register's location,
44
51
  * and sales can post to an open reservation folio instead (AGL-317).
45
52
  */ export const posOrderHandler = async (req, res)=>{
46
- var _req_headers_authorization, _req_body, _body_hostId, _body_payment, _body_cashReceivedCents, _body_customerEmail, _body_reservationId, _body_registerId, _body_couponCode, _body_locationId, _body_discountPct, _ref, _req_headers_idempotencykey;
53
+ var _req_headers_authorization, _req_body, _body_hostId, _body_payment, _body_cashReceivedCents, _ref, _body_customerEmail, _body_reservationId, _body_registerId, _body_couponCode, _body_locationId, _body_discountPct, _ref1, _req_headers_idempotencykey;
54
+ var _body_customer;
47
55
  if (req.method !== 'POST') {
48
56
  return res.status(405).json({
49
57
  error: 'Method not allowed'
@@ -56,9 +64,14 @@ import { resolveOrgPermissions } from "@aglyn/tenant-runtime/org-permissions";
56
64
  });
57
65
  const body = typeof req.body === 'string' ? JSON.parse(req.body) : (_req_body = req.body) != null ? _req_body : {};
58
66
  const hostId = String((_body_hostId = body.hostId) != null ? _body_hostId : '');
67
+ // `open` (AGL-3607) prices the basket and writes a PENDING sale with an
68
+ // empty tender ledger; the register then takes one or more payments
69
+ // against it through `commerce/pos-payment` until the balance is zero.
59
70
  const payment = String((_body_payment = body.payment) != null ? _body_payment : 'cash');
60
71
  const cashReceivedCents = Math.round(Number((_body_cashReceivedCents = body.cashReceivedCents) != null ? _body_cashReceivedCents : 0));
61
- const customerEmail = String((_body_customerEmail = body.customerEmail) != null ? _body_customerEmail : '').trim().toLowerCase();
72
+ // The customer the register's lookup attached (AGL-3609) gives the email
73
+ // when the cashier did not type one.
74
+ const customerEmail = String((_ref = (_body_customerEmail = body.customerEmail) != null ? _body_customerEmail : (_body_customer = body.customer) == null ? void 0 : _body_customer.email) != null ? _ref : '').trim().toLowerCase();
62
75
  const reservationId = String((_body_reservationId = body.reservationId) != null ? _body_reservationId : '');
63
76
  const registerId = String((_body_registerId = body.registerId) != null ? _body_registerId : '');
64
77
  // A code the shopper hands the cashier (AGL-305). The same field name the
@@ -91,7 +104,7 @@ import { resolveOrgPermissions } from "@aglyn/tenant-runtime/org-permissions";
91
104
  // One settlement attempt, minted by the register (AGL-1691). Node lowercases
92
105
  // incoming headers, but read both spellings — the plugin API request type
93
106
  // makes no promise about casing.
94
- const idempotencyKey = String((_ref = (_req_headers_idempotencykey = req.headers['idempotency-key']) != null ? _req_headers_idempotencykey : req.headers['Idempotency-Key']) != null ? _ref : '').trim().slice(0, 200);
107
+ const idempotencyKey = String((_ref1 = (_req_headers_idempotencykey = req.headers['idempotency-key']) != null ? _req_headers_idempotencykey : req.headers['Idempotency-Key']) != null ? _ref1 : '').trim().slice(0, 200);
95
108
  if (!hostId || rawLines.length === 0) {
96
109
  return res.status(400).json({
97
110
  error: 'Missing hostId or lines'
@@ -113,8 +126,8 @@ import { resolveOrgPermissions } from "@aglyn/tenant-runtime/org-permissions";
113
126
  if (slot) await slot.release();
114
127
  };
115
128
  try {
116
- var _hostSnapshot_get, _storeSettings_get, _taxSettings_origin, _ref1, _ref2;
117
- var _ownerOrg_org, _ownerOrg_org1;
129
+ var _hostSnapshot_get, _storeSettings_get, _taxSettings_origin, _ref2, _ref3;
130
+ var _registerDocs_rank, _ownerOrg_org, _ownerOrg_org1;
118
131
  const decoded = await firebaseAdmin.app().auth().verifyIdToken(idToken);
119
132
  const firestore = firebaseAdmin.app().firestore();
120
133
  const hostRef = firestore.collection('hosts').doc(hostId);
@@ -187,9 +200,10 @@ import { resolveOrgPermissions } from "@aglyn/tenant-runtime/org-permissions";
187
200
  // site, and
188
201
  // reading only the workspace's answer would refuse the sale the console
189
202
  // says is allowed.
190
- const maxDiscountPct = posMaxDiscountPct(await getPluginConfig(ownerOrg == null ? void 0 : ownerOrg.orgId, 'commerce', {
203
+ const commerceConfig = await getPluginConfig(ownerOrg == null ? void 0 : ownerOrg.orgId, 'commerce', {
191
204
  hostId
192
- }));
205
+ });
206
+ const maxDiscountPct = posMaxDiscountPct(commerceConfig);
193
207
  if (discountPct > maxDiscountPct) {
194
208
  return res.status(403).json({
195
209
  error: `This register may discount up to ${maxDiscountPct}%. Ask a ` + 'manager to raise the limit in the commerce settings.',
@@ -222,7 +236,8 @@ import { resolveOrgPermissions } from "@aglyn/tenant-runtime/org-permissions";
222
236
  var _doc_get_toMillis, _doc_get;
223
237
  return {
224
238
  id: doc.id,
225
- createdAtMs: (_ref = (_doc_get = doc.get('createdAt')) == null ? void 0 : (_doc_get_toMillis = _doc_get.toMillis) == null ? void 0 : _doc_get_toMillis.call(_doc_get)) != null ? _ref : 0
239
+ createdAtMs: (_ref = (_doc_get = doc.get('createdAt')) == null ? void 0 : (_doc_get_toMillis = _doc_get.toMillis) == null ? void 0 : _doc_get_toMillis.call(_doc_get)) != null ? _ref : 0,
240
+ openShiftId: doc.get('openShiftId')
226
241
  };
227
242
  }).sort((a, b)=>a.createdAtMs - b.createdAtMs || a.id.localeCompare(b.id));
228
243
  const rank = registerDocs.findIndex((r)=>r.id === registerId);
@@ -236,6 +251,24 @@ import { resolveOrgPermissions } from "@aglyn/tenant-runtime/org-permissions";
236
251
  error: 'This register is over your plan’s limit — remove extra ' + 'registers or upgrade in Billing to use it.'
237
252
  });
238
253
  }
254
+ // WHO RANG IT, IN WHICH SHIFT, FOR WHOM (AGL-3609): the PIN-switched
255
+ // cashier, the register's open shift (refused when the site requires one
256
+ // and none is open) and the customer the lookup attached.
257
+ const stamped = await posSaleStamp({
258
+ hostId,
259
+ hostRef,
260
+ registerId,
261
+ openShiftId: (_registerDocs_rank = registerDocs[rank]) == null ? void 0 : _registerDocs_rank.openShiftId,
262
+ signedInUid: decoded.uid,
263
+ body,
264
+ config: commerceConfig
265
+ });
266
+ if ('error' in stamped) {
267
+ return res.status(stamped.status).json({
268
+ error: stamped.error
269
+ });
270
+ }
271
+ const saleStamp = stamped.stamp;
239
272
  // Server pricing per line.
240
273
  const uniqueIds = [
241
274
  ...new Set(rawLines.map((line)=>String(line.productId)))
@@ -259,21 +292,30 @@ import { resolveOrgPermissions } from "@aglyn/tenant-runtime/org-permissions";
259
292
  });
260
293
  }
261
294
  const quantity = Math.max(1, Math.min(99, Math.round(Number((_raw_quantity = raw.quantity) != null ? _raw_quantity : 1))));
295
+ // Modifiers are priced from the product, never from the register
296
+ // (AGL-3607): the line names option ids and nothing else.
297
+ const chosen = CommerceModel.resolveLineModifiers(product, raw.modifiers);
298
+ if (!chosen.ok) return res.status(400).json({
299
+ error: chosen.error
300
+ });
301
+ const variantLabel = CommerceModel.lineLabelWithModifiers(Object.keys((_variant_options = variant.options) != null ? _variant_options : {}).length ? Object.values((_variant_options1 = variant.options) != null ? _variant_options1 : {}).join(' / ') : undefined, chosen.modifiers);
262
302
  lineItems.push(_extends({
263
303
  productId: String(raw.productId)
264
304
  }, variant.id !== 'default' ? {
265
305
  variantId: variant.id
266
306
  } : {}, {
267
307
  name: product.name
268
- }, Object.keys((_variant_options = variant.options) != null ? _variant_options : {}).length ? {
269
- variantLabel: Object.values((_variant_options1 = variant.options) != null ? _variant_options1 : {}).join(' / ')
308
+ }, variantLabel ? {
309
+ variantLabel
270
310
  } : {}, variant.sku ? {
271
311
  sku: variant.sku
272
312
  } : {}, {
273
313
  productType: product.type,
274
314
  quantity,
275
- unitAmountCents: Math.round(Number(variant.priceUsd) * 100)
276
- }));
315
+ unitAmountCents: Math.round(Number(variant.priceUsd) * 100) + chosen.extraCents
316
+ }, chosen.modifiers.length ? {
317
+ modifiers: chosen.modifiers
318
+ } : {}));
277
319
  }
278
320
  if (lineItems.length === 0) {
279
321
  return res.status(400).json({
@@ -465,7 +507,40 @@ import { resolveOrgPermissions } from "@aglyn/tenant-runtime/org-permissions";
465
507
  });
466
508
  }
467
509
  const rate = taxDecision.kind === 'manual' ? CommerceModel.resolveTaxRate(taxSettings, (_taxSettings_origin = taxSettings.origin) != null ? _taxSettings_origin : {}) : null;
468
- const taxCents = rate && !taxSettings.pricesIncludeTax ? CommerceModel.computeTaxCents(itemsCents - discountCents, rate.pct) : 0;
510
+ let taxCents = rate && !taxSettings.pricesIncludeTax ? CommerceModel.computeTaxCents(itemsCents - discountCents, rate.pct) : 0;
511
+ // The merchant's own tax service, where they connected one (AGL-3631):
512
+ // taxed at the store's ship-from address, as every in-person sale is.
513
+ // When it does not answer, the store's rate above stands and the order
514
+ // says so; the cashier is never left waiting on a vendor.
515
+ const engineTax = taxDecision.kind === 'manual' ? await quoteSaleTaxWithEngine({
516
+ hostId,
517
+ settings: taxSettings,
518
+ channel: 'pos',
519
+ lines: lineItems.map((line, index)=>_extends({
520
+ id: String(index),
521
+ productId: line.productId
522
+ }, line.variantId ? {
523
+ variantId: line.variantId
524
+ } : {}, line.sku ? {
525
+ sku: line.sku
526
+ } : {}, {
527
+ description: [
528
+ line.name,
529
+ line.variantLabel
530
+ ].filter(Boolean).join(' — '),
531
+ quantity: line.quantity,
532
+ amountCents: line.unitAmountCents * line.quantity
533
+ })),
534
+ discountCents,
535
+ customerEmail: customerEmail || null
536
+ }) : {
537
+ quote: null,
538
+ stamp: null
539
+ };
540
+ if (engineTax.quote) taxCents = engineTax.quote.taxCents;
541
+ const taxEngineFields = engineTax.stamp ? {
542
+ taxEngine: engineTax.stamp
543
+ } : {};
469
544
  /*==========================================
470
545
  * THE FEE ATTACHES TO THE SALE, NOT TO THE TENDER (AGL-2111).
471
546
  *
@@ -553,7 +628,7 @@ import { resolveOrgPermissions } from "@aglyn/tenant-runtime/org-permissions";
553
628
  // `orgs//offlineFees/…`; the sale still rings, and the fee is forgone
554
629
  // rather than written somewhere no invoice will ever find it.
555
630
  const offlineFeeMonth = offlineFeeMonthKey();
556
- const offlineFeeOrgId = String((_ref1 = ownerOrg == null ? void 0 : (_ownerOrg_org = ownerOrg.org) == null ? void 0 : _ownerOrg_org.id) != null ? _ref1 : '');
631
+ const offlineFeeOrgId = String((_ref2 = ownerOrg == null ? void 0 : (_ownerOrg_org = ownerOrg.org) == null ? void 0 : _ownerOrg_org.id) != null ? _ref2 : '');
557
632
  const offlineFeeRef = offlineFeeOrgId ? firestore.collection('orgs').doc(offlineFeeOrgId).collection('offlineFees').doc(offlineFeeMonth) : null;
558
633
  // Deterministic tender rejections run BEFORE the claim is taken, so they
559
634
  // never burn the key (AGL-1691): "cash received is short" is a 400 the
@@ -609,7 +684,7 @@ import { resolveOrgPermissions } from "@aglyn/tenant-runtime/org-permissions";
609
684
  const claimed = await claimAttempt(firestore, {
610
685
  kind: 'pos',
611
686
  scopeId: hostId,
612
- orgId: String((_ref2 = ownerOrg == null ? void 0 : (_ownerOrg_org1 = ownerOrg.org) == null ? void 0 : _ownerOrg_org1.id) != null ? _ref2 : ''),
687
+ orgId: String((_ref3 = ownerOrg == null ? void 0 : (_ownerOrg_org1 = ownerOrg.org) == null ? void 0 : _ownerOrg_org1.id) != null ? _ref3 : ''),
613
688
  key: idempotencyKey,
614
689
  busyMessage: 'This sale is already being processed'
615
690
  });
@@ -653,11 +728,83 @@ import { resolveOrgPermissions } from "@aglyn/tenant-runtime/org-permissions";
653
728
  discountHoldKey = slot.holdKey;
654
729
  }
655
730
  }
731
+ if (payment === 'open') {
732
+ // AN OPEN SALE (AGL-3607): priced here, exactly like every other
733
+ // tender, and paid by the ledger. The fee on `totals` is the TAKE alone;
734
+ // each card payment adds Stripe's processing cost to its own payout
735
+ // fee, and `pos-sale.ts` restates `feeCents` from what actually paid
736
+ // when the balance reaches zero. Named like every console resource,
737
+ // never by an auto-id.
738
+ const orderRef = hostRef.collection('orders').doc(Aglyn.createResourceUid());
739
+ const counterRef = hostRef.collection('counters').doc('orders');
740
+ const openTotals = CommerceModel.computeOrderTotals(lineItems, {
741
+ discountCents,
742
+ taxCents,
743
+ feeCents: takeFeeCents
744
+ });
745
+ await firestore.runTransaction(async (transaction)=>{
746
+ var _counter_get;
747
+ const counter = await transaction.get(counterRef);
748
+ const number = Number((_counter_get = counter.get('next')) != null ? _counter_get : 1);
749
+ transaction.set(counterRef, {
750
+ next: number + 1
751
+ }, {
752
+ merge: true
753
+ });
754
+ transaction.set(orderRef, CommerceModel.withOrderListFields(orderRef.id, _extends({
755
+ number,
756
+ status: 'pending',
757
+ channel: 'pos',
758
+ registerId,
759
+ cashierId: saleStamp.cashierId
760
+ }, saleStamp.fields, discountPct > 0 ? {
761
+ discountPct,
762
+ discountBy: saleStamp.cashierId
763
+ } : {}, appliedDiscountId ? {
764
+ discountId: appliedDiscountId
765
+ } : {}, discountHoldKey ? {
766
+ discountHoldKey
767
+ } : {}, locationId ? {
768
+ locationId
769
+ } : {}, {
770
+ lineItems,
771
+ totals: openTotals,
772
+ taxMode: CommerceModel.storefrontTaxModeForDecision(taxDecision, taxCents)
773
+ }, taxEngineFields, {
774
+ posTakeFeeCents: takeFeeCents
775
+ }, offlineFeeOrgId ? {
776
+ posFeeOrgId: offlineFeeOrgId
777
+ } : {}, {
778
+ payments: [],
779
+ customerEmail: customerEmail || null,
780
+ timeline: [
781
+ {
782
+ atMs: Date.now(),
783
+ event: 'pos-sale-opened'
784
+ }
785
+ ],
786
+ createdAtMs: Date.now(),
787
+ createdAt: firebaseAdmin.firestore.FieldValue.serverTimestamp()
788
+ })));
789
+ });
790
+ // The hold now belongs to the sale document, not to this request.
791
+ discountSlot = null;
792
+ discountHoldKey = '';
793
+ const openPayload = _extends({
794
+ orderId: orderRef.id,
795
+ totals: openTotals,
796
+ dueCents: openTotals.totalCents
797
+ }, stockWarnings.length > 0 ? {
798
+ stockWarnings
799
+ } : {});
800
+ await claim.record(200, openPayload);
801
+ return res.status(200).json(openPayload);
802
+ }
656
803
  if (payment === 'link') {
657
- var _ref3, _session_id;
804
+ var _ref4, _session_id;
658
805
  var _ownerOrg_org2, _ownerOrg_org3;
659
806
  // QR payment link on the merchant account, completed by webhook.
660
- const ownerProfile = await firestore.collection('profiles').doc(String((_ref3 = ownerOrg == null ? void 0 : (_ownerOrg_org2 = ownerOrg.org) == null ? void 0 : _ownerOrg_org2.ownerUid) != null ? _ref3 : '')).get();
807
+ const ownerProfile = await firestore.collection('profiles').doc(String((_ref4 = ownerOrg == null ? void 0 : (_ownerOrg_org2 = ownerOrg.org) == null ? void 0 : _ownerOrg_org2.ownerUid) != null ? _ref4 : '')).get();
661
808
  const accountId = ownerProfile.get('stripeAccountId');
662
809
  if (!merchantAccountIsReady({
663
810
  accountId,
@@ -691,10 +838,11 @@ import { resolveOrgPermissions } from "@aglyn/tenant-runtime/org-permissions";
691
838
  number,
692
839
  status: 'pending',
693
840
  channel: 'pos',
694
- registerId
695
- }, discountPct > 0 ? {
841
+ registerId,
842
+ cashierId: saleStamp.cashierId
843
+ }, saleStamp.fields, discountPct > 0 ? {
696
844
  discountPct,
697
- discountBy: decoded.uid
845
+ discountBy: saleStamp.cashierId
698
846
  } : {}, appliedDiscountId ? {
699
847
  discountId: appliedDiscountId
700
848
  } : {}, locationId ? {
@@ -713,7 +861,7 @@ import { resolveOrgPermissions } from "@aglyn/tenant-runtime/org-permissions";
713
861
  // carries the same figure over as `metadata[taxCents]` for the
714
862
  // webhook to restate when the card is actually charged.
715
863
  taxMode: CommerceModel.storefrontTaxModeForDecision(taxDecision, taxCents)
716
- }, feeCents > 0 ? {
864
+ }, taxEngineFields, feeCents > 0 ? {
717
865
  feeCollection
718
866
  } : {}, {
719
867
  customerEmail: customerEmail || null,
@@ -877,7 +1025,7 @@ import { resolveOrgPermissions } from "@aglyn/tenant-runtime/org-permissions";
877
1025
  registerId
878
1026
  }, discountPct > 0 ? {
879
1027
  discountPct,
880
- discountBy: decoded.uid
1028
+ discountBy: saleStamp.cashierId
881
1029
  } : {}, appliedDiscountId ? {
882
1030
  discountId: appliedDiscountId
883
1031
  } : {}, locationId ? {
@@ -891,9 +1039,31 @@ import { resolveOrgPermissions } from "@aglyn/tenant-runtime/org-permissions";
891
1039
  // witness there will be, and here is the one moment it can be written
892
1040
  // down.
893
1041
  taxMode: CommerceModel.storefrontTaxModeForDecision(taxDecision, taxCents)
894
- }, feeCents > 0 ? {
1042
+ }, taxEngineFields, feeCents > 0 ? {
895
1043
  feeCollection
896
1044
  } : {}, {
1045
+ // THE TENDER, RECORDED (AGL-3607): one settled payment, so this sale
1046
+ // reads the same as a split one rather than by inference.
1047
+ cashierId: saleStamp.cashierId
1048
+ }, saleStamp.fields, {
1049
+ payments: [
1050
+ _extends({
1051
+ id: `pay_${payment}`,
1052
+ method: payment === 'folio' ? 'folio' : 'cash',
1053
+ amountCents: totals.totalCents,
1054
+ status: 'succeeded',
1055
+ atMs: paidEvent.atMs,
1056
+ settledAtMs: paidEvent.atMs,
1057
+ takeFeeCents,
1058
+ feeCents: 0,
1059
+ cashierId: saleStamp.cashierId
1060
+ }, payment === 'cash' ? {
1061
+ cashTenderedCents: cashReceivedCents,
1062
+ changeCents: cashReceivedCents - totals.totalCents
1063
+ } : {
1064
+ reservationId
1065
+ })
1066
+ ],
897
1067
  customerEmail: customerEmail || null,
898
1068
  timeline: [
899
1069
  paidEvent
@@ -1101,6 +1271,19 @@ import { resolveOrgPermissions } from "@aglyn/tenant-runtime/org-permissions";
1101
1271
  console.error('[pos-order] contact upsert failed', error);
1102
1272
  });
1103
1273
  }
1274
+ // THE ONE "SALE COMPLETED" POINT (AGL-3607), reached here by a
1275
+ // single-tender cash or room sale as by every other register sale.
1276
+ await notifyPosSaleCompleted({
1277
+ hostId,
1278
+ orderId: orderRef.id,
1279
+ order: {
1280
+ status: 'paid',
1281
+ channel: 'pos',
1282
+ registerId,
1283
+ lineItems,
1284
+ totals
1285
+ }
1286
+ });
1104
1287
  const cashPayload = _extends({
1105
1288
  orderId: orderRef.id,
1106
1289
  totals,
@@ -1109,6 +1292,19 @@ import { resolveOrgPermissions } from "@aglyn/tenant-runtime/org-permissions";
1109
1292
  stockWarnings
1110
1293
  } : {});
1111
1294
  await claim.record(200, cashPayload);
1295
+ // The receipt, when the customer gave an email (AGL-3610).
1296
+ await notifyOrderBuyer({
1297
+ hostId,
1298
+ orderId: orderRef.id
1299
+ }, 'receipt', {
1300
+ email: contactEmail
1301
+ });
1302
+ // A cash or folio sale is paid on the spot (AGL-3611); a card sale is raised by the webhook.
1303
+ await raiseOrderEvent(ORDER_PAID_EVENT, {
1304
+ hostId,
1305
+ orderId: orderRef.id,
1306
+ key: 'paid'
1307
+ });
1112
1308
  return res.status(200).json(cashPayload);
1113
1309
  } catch (error) {
1114
1310
  console.error(error);
@@ -1126,24 +1322,8 @@ import { resolveOrgPermissions } from "@aglyn/tenant-runtime/org-permissions";
1126
1322
  });
1127
1323
  }
1128
1324
  };
1129
- /**
1130
- * The billing month a non-card POS fee accrues into (AGL-2111): `YYYY-MM` in
1131
- * **UTC**, byte-identical to the key `apps/console/utils/billing-month.ts`
1132
- * mints and to the twelve other month counters on the platform
1133
- * (`orgs/{id}/apiUsage/*`, `orgs/{id}/assistUsage/*`, the per-host counters).
1134
- *
1135
- * It has to be UTC and it has to be this exact expression: `report-usage`
1136
- * sweeps `previousMonth()` in UTC and reads the accrual document by that key,
1137
- * so a local-time month would strand every sale rung in the offset window on a
1138
- * document no sweep ever looks at — which is uncollected revenue that leaves
1139
- * no trace. `offline-pos-fee-month-key.spec.ts` pins the two against each
1140
- * other rather than trusting the comment.
1141
- *
1142
- * Local rather than imported because `apps/console` is an app: a plugin
1143
- * library cannot import from it, and the repo's other eleven copies of this
1144
- * one-liner are the established shape.
1145
- */ export function offlineFeeMonthKey(now = new Date()) {
1146
- return now.toISOString().slice(0, 7);
1147
- }
1325
+ // Moved beside the ledger that also accrues into it (AGL-3607); still
1326
+ // exported here, where its readers have always imported it from.
1327
+ export { offlineFeeMonthKey } from "./pos-fee-month.js";
1148
1328
 
1149
1329
  //# sourceMappingURL=pos-order.js.map