@aglyn/plugins-commerce 1.0.0-beta.230 → 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 (581) 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 +44 -0
  176. package/src/lib/components/console/product-zones.js.map +1 -1
  177. package/src/lib/components/console/products-hub-card.component.js +12 -0
  178. package/src/lib/components/console/products-hub-card.component.js.map +1 -1
  179. package/src/lib/components/console/register-hardware-card.component.d.ts +33 -0
  180. package/src/lib/components/console/register-hardware-card.component.js +826 -0
  181. package/src/lib/components/console/register-hardware-card.component.js.map +1 -0
  182. package/src/lib/components/console/registers-card.component.js +24 -5
  183. package/src/lib/components/console/registers-card.component.js.map +1 -1
  184. package/src/lib/components/console/return-actions.d.ts +38 -0
  185. package/src/lib/components/console/return-actions.js +76 -0
  186. package/src/lib/components/console/return-actions.js.map +1 -0
  187. package/src/lib/components/console/return-detail-dialog.component.d.ts +34 -0
  188. package/src/lib/components/console/return-detail-dialog.component.js +718 -0
  189. package/src/lib/components/console/return-detail-dialog.component.js.map +1 -0
  190. package/src/lib/components/console/return-settings-card.component.d.ts +34 -0
  191. package/src/lib/components/console/return-settings-card.component.js +195 -0
  192. package/src/lib/components/console/return-settings-card.component.js.map +1 -0
  193. package/src/lib/components/console/return-zones.d.ts +87 -0
  194. package/src/lib/components/console/return-zones.js +31 -0
  195. package/src/lib/components/console/return-zones.js.map +1 -0
  196. package/src/lib/components/console/returns-card.component.d.ts +45 -0
  197. package/src/lib/components/console/returns-card.component.js +159 -0
  198. package/src/lib/components/console/returns-card.component.js.map +1 -0
  199. package/src/lib/components/console/shipping-settings-card.component.js +161 -5
  200. package/src/lib/components/console/shipping-settings-card.component.js.map +1 -1
  201. package/src/lib/components/console/shippingeasy-card.component.d.ts +59 -0
  202. package/src/lib/components/console/shippingeasy-card.component.js +378 -0
  203. package/src/lib/components/console/shippingeasy-card.component.js.map +1 -0
  204. package/src/lib/components/console/shipstation-card.component.d.ts +35 -0
  205. package/src/lib/components/console/shipstation-card.component.js +345 -0
  206. package/src/lib/components/console/shipstation-card.component.js.map +1 -0
  207. package/src/lib/components/console/start-return-dialog.component.d.ts +40 -0
  208. package/src/lib/components/console/start-return-dialog.component.js +243 -0
  209. package/src/lib/components/console/start-return-dialog.component.js.map +1 -0
  210. package/src/lib/components/console/stock-movements-card.component.js +2 -1
  211. package/src/lib/components/console/stock-movements-card.component.js.map +1 -1
  212. package/src/lib/components/console/store-settings-card.component.js +2 -66
  213. package/src/lib/components/console/store-settings-card.component.js.map +1 -1
  214. package/src/lib/components/console/store-zones.d.ts +42 -0
  215. package/src/lib/components/console/store-zones.js +39 -0
  216. package/src/lib/components/console/store-zones.js.map +1 -0
  217. package/src/lib/components/order-status.d.ts +36 -0
  218. package/src/lib/components/order-status.js +502 -0
  219. package/src/lib/components/order-status.js.map +1 -0
  220. package/src/lib/components/product-detail.js +41 -2
  221. package/src/lib/components/product-detail.js.map +1 -1
  222. package/src/lib/components/return-request.d.ts +32 -0
  223. package/src/lib/components/return-request.js +576 -0
  224. package/src/lib/components/return-request.js.map +1 -0
  225. package/src/lib/components/storefront-payment-appearance.d.ts +32 -0
  226. package/src/lib/components/storefront-payment-appearance.js +114 -0
  227. package/src/lib/components/storefront-payment-appearance.js.map +1 -0
  228. package/src/lib/components/storefront-payment-element.d.ts +57 -1
  229. package/src/lib/components/storefront-payment-element.js +332 -33
  230. package/src/lib/components/storefront-payment-element.js.map +1 -1
  231. package/src/lib/constants/order-status.d.ts +22 -0
  232. package/src/lib/constants/order-status.js +22 -0
  233. package/src/lib/constants/order-status.js.map +1 -0
  234. package/src/lib/constants/return-request.d.ts +27 -0
  235. package/src/lib/constants/return-request.js +32 -0
  236. package/src/lib/constants/return-request.js.map +1 -0
  237. package/src/lib/constants/stock-movement-query.js +2 -1
  238. package/src/lib/constants/stock-movement-query.js.map +1 -1
  239. package/src/lib/declarations.console-server.js +9 -0
  240. package/src/lib/declarations.console-server.js.map +1 -1
  241. package/src/lib/declarations.server.d.ts +2 -1
  242. package/src/lib/declarations.server.js +47 -1
  243. package/src/lib/declarations.server.js.map +1 -1
  244. package/src/lib/model/buyer-notifications.d.ts +59 -0
  245. package/src/lib/model/buyer-notifications.js +97 -0
  246. package/src/lib/model/buyer-notifications.js.map +1 -0
  247. package/src/lib/model/commerce-orders.d.ts +127 -1
  248. package/src/lib/model/commerce-orders.js +24 -15
  249. package/src/lib/model/commerce-orders.js.map +1 -1
  250. package/src/lib/model/commerce-payment-methods.d.ts +146 -0
  251. package/src/lib/model/commerce-payment-methods.js +247 -0
  252. package/src/lib/model/commerce-payment-methods.js.map +1 -0
  253. package/src/lib/model/commerce-pos-ops.d.ts +437 -0
  254. package/src/lib/model/commerce-pos-ops.js +721 -0
  255. package/src/lib/model/commerce-pos-ops.js.map +1 -0
  256. package/src/lib/model/commerce-pos.d.ts +263 -0
  257. package/src/lib/model/commerce-pos.js +375 -0
  258. package/src/lib/model/commerce-pos.js.map +1 -0
  259. package/src/lib/model/commerce-printers.d.ts +211 -0
  260. package/src/lib/model/commerce-printers.js +181 -0
  261. package/src/lib/model/commerce-printers.js.map +1 -0
  262. package/src/lib/model/commerce-receipt.d.ts +97 -0
  263. package/src/lib/model/commerce-receipt.js +180 -0
  264. package/src/lib/model/commerce-receipt.js.map +1 -0
  265. package/src/lib/model/commerce-returns.d.ts +207 -0
  266. package/src/lib/model/commerce-returns.js +300 -0
  267. package/src/lib/model/commerce-returns.js.map +1 -0
  268. package/src/lib/model/commerce-shipping.d.ts +44 -1
  269. package/src/lib/model/commerce-shipping.js +53 -9
  270. package/src/lib/model/commerce-shipping.js.map +1 -1
  271. package/src/lib/model/commerce-tax-engine.d.ts +90 -0
  272. package/src/lib/model/commerce-tax-engine.js +129 -0
  273. package/src/lib/model/commerce-tax-engine.js.map +1 -0
  274. package/src/lib/model/commerce.d.ts +88 -2
  275. package/src/lib/model/commerce.js +89 -1
  276. package/src/lib/model/commerce.js.map +1 -1
  277. package/src/lib/model/index.d.ts +15 -0
  278. package/src/lib/model/index.js +15 -0
  279. package/src/lib/model/index.js.map +1 -1
  280. package/src/lib/model/order-events.d.ts +154 -0
  281. package/src/lib/model/order-events.js +153 -0
  282. package/src/lib/model/order-events.js.map +1 -0
  283. package/src/lib/model/order-fulfillment.d.ts +117 -0
  284. package/src/lib/model/order-fulfillment.js +217 -0
  285. package/src/lib/model/order-fulfillment.js.map +1 -0
  286. package/src/lib/model/order-history.d.ts +58 -0
  287. package/src/lib/model/order-history.js +22 -0
  288. package/src/lib/model/order-history.js.map +1 -0
  289. package/src/lib/model/order-list-fields.d.ts +9 -1
  290. package/src/lib/model/order-list-fields.js +7 -1
  291. package/src/lib/model/order-list-fields.js.map +1 -1
  292. package/src/lib/model/order-shipping-export.d.ts +91 -0
  293. package/src/lib/model/order-shipping-export.js +192 -0
  294. package/src/lib/model/order-shipping-export.js.map +1 -0
  295. package/src/lib/model/order-status-view.d.ts +103 -0
  296. package/src/lib/model/order-status-view.js +156 -0
  297. package/src/lib/model/order-status-view.js.map +1 -0
  298. package/src/lib/model/order-webhooks.d.ts +142 -0
  299. package/src/lib/model/order-webhooks.js +91 -0
  300. package/src/lib/model/order-webhooks.js.map +1 -0
  301. package/src/lib/model/product-channel.d.ts +56 -0
  302. package/src/lib/model/product-channel.js +86 -0
  303. package/src/lib/model/product-channel.js.map +1 -0
  304. package/src/lib/model/product-modifiers.d.ts +80 -0
  305. package/src/lib/model/product-modifiers.js +140 -0
  306. package/src/lib/model/product-modifiers.js.map +1 -0
  307. package/src/lib/model/shippingeasy.d.ts +94 -0
  308. package/src/lib/model/shippingeasy.js +267 -0
  309. package/src/lib/model/shippingeasy.js.map +1 -0
  310. package/src/lib/model/shipstation.d.ts +125 -0
  311. package/src/lib/model/shipstation.js +399 -0
  312. package/src/lib/model/shipstation.js.map +1 -0
  313. package/src/lib/model/smart-collection-reads.d.ts +32 -0
  314. package/src/lib/model/smart-collection-reads.js +63 -0
  315. package/src/lib/model/smart-collection-reads.js.map +1 -0
  316. package/src/lib/model/tracking-url.d.ts +74 -0
  317. package/src/lib/model/tracking-url.js +159 -0
  318. package/src/lib/model/tracking-url.js.map +1 -0
  319. package/src/lib/plugin-config.d.ts +13 -0
  320. package/src/lib/plugin-config.js +77 -5
  321. package/src/lib/plugin-config.js.map +1 -1
  322. package/src/lib/plugin.js +23 -0
  323. package/src/lib/plugin.js.map +1 -1
  324. package/src/lib/pos-ops-config.d.ts +39 -0
  325. package/src/lib/pos-ops-config.js +88 -0
  326. package/src/lib/pos-ops-config.js.map +1 -0
  327. package/src/lib/printing/print-document.d.ts +106 -0
  328. package/src/lib/printing/print-document.js +464 -0
  329. package/src/lib/printing/print-document.js.map +1 -0
  330. package/src/lib/printing/product-labels.d.ts +58 -0
  331. package/src/lib/printing/product-labels.js +116 -0
  332. package/src/lib/printing/product-labels.js.map +1 -0
  333. package/src/lib/printing/render-epson.d.ts +57 -0
  334. package/src/lib/printing/render-epson.js +135 -0
  335. package/src/lib/printing/render-epson.js.map +1 -0
  336. package/src/lib/printing/render-star.d.ts +45 -0
  337. package/src/lib/printing/render-star.js +100 -0
  338. package/src/lib/printing/render-star.js.map +1 -0
  339. package/src/lib/printing/render-text.d.ts +25 -0
  340. package/src/lib/printing/render-text.js +53 -0
  341. package/src/lib/printing/render-text.js.map +1 -0
  342. package/src/lib/server/api-v1/openapi.js +27 -4
  343. package/src/lib/server/api-v1/openapi.js.map +1 -1
  344. package/src/lib/server/api-v1/order-view.d.ts +67 -0
  345. package/src/lib/server/api-v1/order-view.js +120 -0
  346. package/src/lib/server/api-v1/order-view.js.map +1 -0
  347. package/src/lib/server/api-v1/orders-and-products.js +58 -65
  348. package/src/lib/server/api-v1/orders-and-products.js.map +1 -1
  349. package/src/lib/server/billing-webhook.js +135 -28
  350. package/src/lib/server/billing-webhook.js.map +1 -1
  351. package/src/lib/server/cancel-order.js +29 -0
  352. package/src/lib/server/cancel-order.js.map +1 -1
  353. package/src/lib/server/carrier-rates-availability.d.ts +26 -0
  354. package/src/lib/server/carrier-rates-availability.js +76 -0
  355. package/src/lib/server/carrier-rates-availability.js.map +1 -0
  356. package/src/lib/server/carrier-shipping.d.ts +84 -0
  357. package/src/lib/server/carrier-shipping.js +135 -0
  358. package/src/lib/server/carrier-shipping.js.map +1 -0
  359. package/src/lib/server/cart-checkout.d.ts +2 -0
  360. package/src/lib/server/cart-checkout.js +226 -22
  361. package/src/lib/server/cart-checkout.js.map +1 -1
  362. package/src/lib/server/checkout-extras.d.ts +64 -0
  363. package/src/lib/server/checkout-extras.js +157 -0
  364. package/src/lib/server/checkout-extras.js.map +1 -0
  365. package/src/lib/server/{feed.d.ts → checkout-status.d.ts} +2 -7
  366. package/src/lib/server/checkout-status.js +111 -0
  367. package/src/lib/server/checkout-status.js.map +1 -0
  368. package/src/lib/server/checkout.js +86 -9
  369. package/src/lib/server/checkout.js.map +1 -1
  370. package/src/lib/server/draft-order.js +34 -5
  371. package/src/lib/server/draft-order.js.map +1 -1
  372. package/src/lib/server/fulfill-order.d.ts +127 -10
  373. package/src/lib/server/fulfill-order.js +451 -49
  374. package/src/lib/server/fulfill-order.js.map +1 -1
  375. package/src/lib/server/legacy-feed.d.ts +28 -0
  376. package/src/lib/server/legacy-feed.js +52 -0
  377. package/src/lib/server/legacy-feed.js.map +1 -0
  378. package/src/lib/server/native-checkout.d.ts +34 -15
  379. package/src/lib/server/native-checkout.js +32 -17
  380. package/src/lib/server/native-checkout.js.map +1 -1
  381. package/src/lib/server/order-event-host-emit.d.ts +23 -0
  382. package/src/lib/server/order-event-host-emit.js +30 -0
  383. package/src/lib/server/order-event-host-emit.js.map +1 -0
  384. package/src/lib/server/order-event-triggers.d.ts +37 -0
  385. package/src/lib/server/order-event-triggers.js +119 -0
  386. package/src/lib/server/order-event-triggers.js.map +1 -0
  387. package/src/lib/server/order-events.d.ts +62 -0
  388. package/src/lib/server/order-events.js +109 -0
  389. package/src/lib/server/order-events.js.map +1 -0
  390. package/src/lib/server/order-history.d.ts +23 -0
  391. package/src/lib/server/order-history.js +65 -0
  392. package/src/lib/server/order-history.js.map +1 -0
  393. package/src/lib/server/order-notifications.d.ts +185 -0
  394. package/src/lib/server/order-notifications.js +567 -0
  395. package/src/lib/server/order-notifications.js.map +1 -0
  396. package/src/lib/server/order-receipt-send.d.ts +39 -0
  397. package/src/lib/server/order-receipt-send.js +151 -0
  398. package/src/lib/server/order-receipt-send.js.map +1 -0
  399. package/src/lib/server/order-status-token.d.ts +31 -0
  400. package/src/lib/server/order-status-token.js +75 -0
  401. package/src/lib/server/order-status-token.js.map +1 -0
  402. package/src/lib/server/order-status.d.ts +58 -0
  403. package/src/lib/server/order-status.js +141 -0
  404. package/src/lib/server/order-status.js.map +1 -0
  405. package/src/lib/server/order-webhooks.d.ts +108 -0
  406. package/src/lib/server/order-webhooks.js +622 -0
  407. package/src/lib/server/order-webhooks.js.map +1 -0
  408. package/src/lib/server/orders-shipping-prepare.d.ts +26 -0
  409. package/src/lib/server/orders-shipping-prepare.js +121 -0
  410. package/src/lib/server/orders-shipping-prepare.js.map +1 -0
  411. package/src/lib/server/payment-method-domains.d.ts +209 -0
  412. package/src/lib/server/payment-method-domains.js +444 -0
  413. package/src/lib/server/payment-method-domains.js.map +1 -0
  414. package/src/lib/server/payment-methods.d.ts +77 -0
  415. package/src/lib/server/payment-methods.js +284 -0
  416. package/src/lib/server/payment-methods.js.map +1 -0
  417. package/src/lib/server/pos-auth.d.ts +50 -0
  418. package/src/lib/server/pos-auth.js +121 -0
  419. package/src/lib/server/pos-auth.js.map +1 -0
  420. package/src/lib/server/pos-customer.d.ts +49 -0
  421. package/src/lib/server/pos-customer.js +257 -0
  422. package/src/lib/server/pos-customer.js.map +1 -0
  423. package/src/lib/server/pos-display.d.ts +57 -0
  424. package/src/lib/server/pos-display.js +419 -0
  425. package/src/lib/server/pos-display.js.map +1 -0
  426. package/src/lib/server/pos-fee-month.d.ts +34 -0
  427. package/src/lib/server/pos-fee-month.js +36 -0
  428. package/src/lib/server/pos-fee-month.js.map +1 -0
  429. package/src/lib/server/pos-ops-gate.d.ts +161 -0
  430. package/src/lib/server/pos-ops-gate.js +295 -0
  431. package/src/lib/server/pos-ops-gate.js.map +1 -0
  432. package/src/lib/server/pos-ops-routes.d.ts +22 -0
  433. package/src/lib/server/pos-ops-routes.js +36 -0
  434. package/src/lib/server/pos-ops-routes.js.map +1 -0
  435. package/src/lib/server/pos-order.d.ts +1 -18
  436. package/src/lib/server/pos-order.js +222 -42
  437. package/src/lib/server/pos-order.js.map +1 -1
  438. package/src/lib/server/pos-payment.d.ts +39 -0
  439. package/src/lib/server/pos-payment.js +922 -0
  440. package/src/lib/server/pos-payment.js.map +1 -0
  441. package/src/lib/server/pos-print.d.ts +82 -0
  442. package/src/lib/server/pos-print.js +193 -0
  443. package/src/lib/server/pos-print.js.map +1 -0
  444. package/src/lib/server/pos-readers.d.ts +27 -0
  445. package/src/lib/server/pos-readers.js +276 -0
  446. package/src/lib/server/pos-readers.js.map +1 -0
  447. package/src/lib/server/pos-refund-authority.d.ts +60 -0
  448. package/src/lib/server/pos-refund-authority.js +72 -0
  449. package/src/lib/server/pos-refund-authority.js.map +1 -0
  450. package/src/lib/server/pos-return.d.ts +58 -0
  451. package/src/lib/server/pos-return.js +891 -0
  452. package/src/lib/server/pos-return.js.map +1 -0
  453. package/src/lib/server/pos-sale-stamp.d.ts +66 -0
  454. package/src/lib/server/pos-sale-stamp.js +84 -0
  455. package/src/lib/server/pos-sale-stamp.js.map +1 -0
  456. package/src/lib/server/pos-sale.d.ts +170 -0
  457. package/src/lib/server/pos-sale.js +461 -0
  458. package/src/lib/server/pos-sale.js.map +1 -0
  459. package/src/lib/server/pos-shift.d.ts +45 -0
  460. package/src/lib/server/pos-shift.js +484 -0
  461. package/src/lib/server/pos-shift.js.map +1 -0
  462. package/src/lib/server/pos-staff-pin.d.ts +26 -0
  463. package/src/lib/server/pos-staff-pin.js +339 -0
  464. package/src/lib/server/pos-staff-pin.js.map +1 -0
  465. package/src/lib/server/pos-stripe.d.ts +91 -0
  466. package/src/lib/server/pos-stripe.js +129 -0
  467. package/src/lib/server/pos-stripe.js.map +1 -0
  468. package/src/lib/server/pos-terminal-connection-token.d.ts +48 -0
  469. package/src/lib/server/pos-terminal-connection-token.js +166 -0
  470. package/src/lib/server/pos-terminal-connection-token.js.map +1 -0
  471. package/src/lib/server/pos-terminal.d.ts +218 -0
  472. package/src/lib/server/pos-terminal.js +1014 -0
  473. package/src/lib/server/pos-terminal.js.map +1 -0
  474. package/src/lib/server/print-queue.d.ts +124 -0
  475. package/src/lib/server/print-queue.js +301 -0
  476. package/src/lib/server/print-queue.js.map +1 -0
  477. package/src/lib/server/printer-poll.d.ts +75 -0
  478. package/src/lib/server/printer-poll.js +325 -0
  479. package/src/lib/server/printer-poll.js.map +1 -0
  480. package/src/lib/server/printer-secret.d.ts +39 -0
  481. package/src/lib/server/printer-secret.js +56 -0
  482. package/src/lib/server/printer-secret.js.map +1 -0
  483. package/src/lib/server/printers.d.ts +114 -0
  484. package/src/lib/server/printers.js +546 -0
  485. package/src/lib/server/printers.js.map +1 -0
  486. package/src/lib/server/product-catalog.d.ts +42 -0
  487. package/src/lib/server/product-catalog.js +305 -0
  488. package/src/lib/server/product-catalog.js.map +1 -0
  489. package/src/lib/server/refund.js +110 -45
  490. package/src/lib/server/refund.js.map +1 -1
  491. package/src/lib/server/reserve.js +2 -0
  492. package/src/lib/server/reserve.js.map +1 -1
  493. package/src/lib/server/return-status-action.d.ts +37 -0
  494. package/src/lib/server/return-status-action.js +57 -0
  495. package/src/lib/server/return-status-action.js.map +1 -0
  496. package/src/lib/server/returns.d.ts +119 -0
  497. package/src/lib/server/returns.js +938 -0
  498. package/src/lib/server/returns.js.map +1 -0
  499. package/src/lib/server/shipment-records.d.ts +36 -0
  500. package/src/lib/server/shipment-records.js +289 -0
  501. package/src/lib/server/shipment-records.js.map +1 -0
  502. package/src/lib/server/shipping-connector-gates.d.ts +40 -0
  503. package/src/lib/server/shipping-connector-gates.js +97 -0
  504. package/src/lib/server/shipping-connector-gates.js.map +1 -0
  505. package/src/lib/server/shipping-connectors.d.ts +29 -0
  506. package/src/lib/server/shipping-connectors.js +236 -0
  507. package/src/lib/server/shipping-connectors.js.map +1 -0
  508. package/src/lib/server/shippingeasy.d.ts +238 -0
  509. package/src/lib/server/shippingeasy.js +787 -0
  510. package/src/lib/server/shippingeasy.js.map +1 -0
  511. package/src/lib/server/shipstation.d.ts +129 -0
  512. package/src/lib/server/shipstation.js +483 -0
  513. package/src/lib/server/shipstation.js.map +1 -0
  514. package/src/lib/server/site-page-resolver.d.ts +5 -0
  515. package/src/lib/server/site-page-resolver.js +156 -1
  516. package/src/lib/server/site-page-resolver.js.map +1 -1
  517. package/src/lib/server/stock-levels.d.ts +21 -0
  518. package/src/lib/server/stock-levels.js +263 -0
  519. package/src/lib/server/stock-levels.js.map +1 -0
  520. package/src/lib/server/stripe-refund.d.ts +47 -0
  521. package/src/lib/server/stripe-refund.js +87 -0
  522. package/src/lib/server/stripe-refund.js.map +1 -0
  523. package/src/lib/server/supplier-update.js +46 -5
  524. package/src/lib/server/supplier-update.js.map +1 -1
  525. package/src/lib/server/tax-engine-quote.d.ts +47 -0
  526. package/src/lib/server/tax-engine-quote.js +105 -0
  527. package/src/lib/server/tax-engine-quote.js.map +1 -0
  528. package/src/lib/server.js +138 -2
  529. package/src/lib/server.js.map +1 -1
  530. package/src/lib/site.js +12 -0
  531. package/src/lib/site.js.map +1 -1
  532. package/src/lib/subprocessors.d.ts +26 -0
  533. package/src/lib/subprocessors.js +50 -0
  534. package/src/lib/subprocessors.js.map +1 -0
  535. package/src/lib/tenant-emails.js +461 -3
  536. package/src/lib/tenant-emails.js.map +1 -1
  537. package/src/lib/testing/fake-firestore.d.ts +45 -0
  538. package/src/lib/testing/fake-firestore.js +189 -0
  539. package/src/lib/testing/fake-firestore.js.map +1 -0
  540. package/src/lib/testing/memory-firestore.d.ts +123 -0
  541. package/src/lib/testing/memory-firestore.js +274 -0
  542. package/src/lib/testing/memory-firestore.js.map +1 -0
  543. package/src/lib/testing/pos-ops-harness.d.ts +50 -0
  544. package/src/lib/testing/pos-ops-harness.js +184 -0
  545. package/src/lib/testing/pos-ops-harness.js.map +1 -0
  546. package/src/lib/testing/pos-ops-memory-firestore.d.ts +55 -0
  547. package/src/lib/testing/pos-ops-memory-firestore.js +376 -0
  548. package/src/lib/testing/pos-ops-memory-firestore.js.map +1 -0
  549. package/src/lib/transfer/records-transfer.d.ts +11 -1
  550. package/src/lib/transfer/records-transfer.js +127 -5
  551. package/src/lib/transfer/records-transfer.js.map +1 -1
  552. package/src/lib/transfer/records.server.d.ts +9 -2
  553. package/src/lib/transfer/records.server.js +58 -7
  554. package/src/lib/transfer/records.server.js.map +1 -1
  555. package/src/lib/transfer/register-transfer-resources.js +40 -1
  556. package/src/lib/transfer/register-transfer-resources.js.map +1 -1
  557. package/src/lib/transfer/register-transfer-ui.js +4 -1
  558. package/src/lib/transfer/register-transfer-ui.js.map +1 -1
  559. package/src/lib/transfer/shipping-presets.d.ts +23 -0
  560. package/src/lib/transfer/shipping-presets.js +156 -0
  561. package/src/lib/transfer/shipping-presets.js.map +1 -0
  562. package/src/lib/transfer/tracking-transfer.d.ts +101 -0
  563. package/src/lib/transfer/tracking-transfer.js +546 -0
  564. package/src/lib/transfer/tracking-transfer.js.map +1 -0
  565. package/src/lib/transfer/tracking.server.d.ts +37 -0
  566. package/src/lib/transfer/tracking.server.js +393 -0
  567. package/src/lib/transfer/tracking.server.js.map +1 -0
  568. package/src/lib/transfer/transfer-keys.d.ts +2 -1
  569. package/src/lib/transfer/transfer-keys.js +6 -2
  570. package/src/lib/transfer/transfer-keys.js.map +1 -1
  571. package/src/lib/utils/code128.d.ts +37 -0
  572. package/src/lib/utils/code128.js +199 -0
  573. package/src/lib/utils/code128.js.map +1 -0
  574. package/src/lib/utils/order-invoice.d.ts +55 -0
  575. package/src/lib/utils/order-invoice.js +127 -0
  576. package/src/lib/utils/order-invoice.js.map +1 -0
  577. package/src/lib/utils/use-checkout-return-notice.d.ts +34 -0
  578. package/src/lib/utils/use-checkout-return-notice.js +78 -0
  579. package/src/lib/utils/use-checkout-return-notice.js.map +1 -0
  580. package/src/lib/server/feed.js +0 -69
  581. package/src/lib/server/feed.js.map +0 -1
@@ -0,0 +1,721 @@
1
+ import { _ as _extends } from "@swc/helpers/_/_extends";
2
+ /**
3
+ * @license
4
+ * Copyright 2026 Aglyn LLC
5
+ *
6
+ * Licensed under the Apache License, Version 2.0 (the "License");
7
+ * you may not use this file except in compliance with the License.
8
+ * You may obtain a copy of the License at
9
+ *
10
+ * http://www.apache.org/licenses/LICENSE-2.0
11
+ *
12
+ * Unless required by applicable law or agreed to in writing, software
13
+ * distributed under the License is distributed on an "AS IS" BASIS,
14
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ * See the License for the specific language governing permissions and
16
+ * limitations under the License.
17
+ */ import { apportionCents } from "./commerce-orders.js";
18
+ import { orderPayments } from "./commerce-pos.js";
19
+ import { receiptDataFromOrder } from "./commerce-receipt.js";
20
+ export const POS_TENDER_METHODS = [
21
+ 'cash',
22
+ 'card_present',
23
+ 'card_keyed',
24
+ 'card_link',
25
+ 'gift_card',
26
+ 'folio'
27
+ ];
28
+ /** What each tender is called on a report, a receipt and a refund. */ export const POS_TENDER_LABELS = {
29
+ cash: 'Cash',
30
+ card_present: 'Card',
31
+ card_keyed: 'Card (keyed)',
32
+ card_link: 'Card (payment link)',
33
+ gift_card: 'Gift card',
34
+ folio: 'Room charge'
35
+ };
36
+ /** The tenders whose money moved through Stripe and goes back through it. */ export const POS_STRIPE_TENDERS = new Set([
37
+ 'card_present',
38
+ 'card_keyed',
39
+ 'card_link'
40
+ ]);
41
+ const wholeCents = (value)=>{
42
+ const number = Math.round(Number(value));
43
+ return Number.isFinite(number) && number > 0 ? number : 0;
44
+ };
45
+ const isTenderMethod = (value)=>typeof value === 'string' && POS_TENDER_METHODS.includes(value);
46
+ /**
47
+ * THE ONE PLACE THE TENDER LEDGER IS READ (AGL-3609).
48
+ *
49
+ * A register sale may carry `payments[]` — one entry per tender, the ledger
50
+ * the split-tender register writes (AGL-3607) — and only the payments that
51
+ * SUCCEEDED count: a declined card or a voided gift card took nothing. An
52
+ * order written before that ledger is one payment, inferred the way the
53
+ * ledger's own reader infers it: a folio when it names a reservation, a card
54
+ * link when Stripe saw it (or it came through the storefront), cash otherwise.
55
+ *
56
+ * The ledger's own reader (`orderPayments`) does both; this narrows it to the
57
+ * settled payments and the fields a report or a refund reads.
58
+ */ export function posOrderTenders(order) {
59
+ if (!order) return [];
60
+ return orderPayments(order).filter((payment)=>payment.status === 'succeeded' && isTenderMethod(payment.method)).map((payment)=>{
61
+ var _payment_tipCents;
62
+ var _order_totals;
63
+ return _extends({
64
+ id: payment.id,
65
+ method: payment.method,
66
+ amountCents: wholeCents(payment.amountCents),
67
+ tipCents: wholeCents((_payment_tipCents = payment.tipCents) != null ? _payment_tipCents : payment.id === 'legacy' ? (_order_totals = order.totals) == null ? void 0 : _order_totals.tipCents : 0)
68
+ }, payment.paymentIntentId ? {
69
+ paymentIntentId: payment.paymentIntentId
70
+ } : {}, payment.giftCardId ? {
71
+ giftCardId: payment.giftCardId
72
+ } : {}, payment.reservationId ? {
73
+ reservationId: payment.reservationId
74
+ } : {}, payment.cardBrand ? {
75
+ cardBrand: payment.cardBrand
76
+ } : {}, payment.last4 ? {
77
+ last4: payment.last4
78
+ } : {}, payment.cashTenderedCents != null ? {
79
+ cashTenderedCents: wholeCents(payment.cashTenderedCents)
80
+ } : {}, payment.changeCents != null ? {
81
+ changeCents: wholeCents(payment.changeCents)
82
+ } : {});
83
+ });
84
+ }
85
+ /** A tender as one line of a receipt: `Card •• 4242`. */ export function posTenderLabel(tender) {
86
+ var _POS_TENDER_LABELS_tender_method;
87
+ const base = (_POS_TENDER_LABELS_tender_method = POS_TENDER_LABELS[tender.method]) != null ? _POS_TENDER_LABELS_tender_method : tender.method;
88
+ if (tender.last4) {
89
+ return `${tender.cardBrand ? capitalize(tender.cardBrand) : base} •• ${tender.last4}`;
90
+ }
91
+ return base;
92
+ }
93
+ function capitalize(value) {
94
+ return value ? value.charAt(0).toUpperCase() + value.slice(1) : value;
95
+ }
96
+ export const POS_CASH_EVENT_LABELS = {
97
+ paid_in: 'Paid in',
98
+ paid_out: 'Paid out',
99
+ drop: 'Safe drop',
100
+ refund: 'Cash refund'
101
+ };
102
+ /** The cash-event sums one formula reads. */ export function posCashEventTotals(events) {
103
+ const sum = (type)=>(events != null ? events : []).filter((event)=>(event == null ? void 0 : event.type) === type).reduce((total, event)=>total + wholeCents(event.amountCents), 0);
104
+ return {
105
+ paidInCents: sum('paid_in'),
106
+ paidOutCents: sum('paid_out'),
107
+ dropsCents: sum('drop'),
108
+ cashRefundsCents: sum('refund')
109
+ };
110
+ }
111
+ /**
112
+ * THE DRAWER'S EXPECTED CASH: what should be in it when it is counted.
113
+ *
114
+ * opening float + cash sales + paid in − paid out − safe drops − cash refunds
115
+ *
116
+ * Cash SALES are the cash tender's `amountCents`, which is what the sale took
117
+ * and never what the customer handed over: the change went straight back out
118
+ * of the same drawer. A tip left in cash is in the drawer too, so it counts.
119
+ */ export function posExpectedCashCents(input) {
120
+ return wholeCents(input.openingFloatCents) + wholeCents(input.cashSalesCents) + wholeCents(input.paidInCents) - wholeCents(input.paidOutCents) - wholeCents(input.dropsCents) - wholeCents(input.cashRefundsCents);
121
+ }
122
+ /**
123
+ * The X report (mid-shift) and the Z report (at close) are this one function
124
+ * over the sales stamped with the shift, the returns rung at the register
125
+ * during it and the shift's own cash events. A pending sale took no money and
126
+ * a cancelled one gave it back, so neither counts; a sale refunded LATER
127
+ * still counts as a sale, and its refund is counted where it was paid out.
128
+ */ export function computePosShiftReport(input) {
129
+ const salesByTender = {};
130
+ const refundsByTender = {};
131
+ let orderCount = 0;
132
+ let grossSalesCents = 0;
133
+ let discountsCents = 0;
134
+ let taxCents = 0;
135
+ let tipsCents = 0;
136
+ let cashSalesCents = 0;
137
+ for (const sale of input.sales){
138
+ var _ref;
139
+ var _sale_totals, _sale_totals1, _sale_totals2, _sale_totals3;
140
+ if (sale.status === 'pending' || sale.status === 'cancelled') continue;
141
+ const tenders = posOrderTenders(sale);
142
+ orderCount += 1;
143
+ grossSalesCents += wholeCents((_ref = (_sale_totals = sale.totals) == null ? void 0 : _sale_totals.totalCents) != null ? _ref : sale.amountCents);
144
+ discountsCents += wholeCents((_sale_totals1 = sale.totals) == null ? void 0 : _sale_totals1.discountCents);
145
+ taxCents += wholeCents((_sale_totals2 = sale.totals) == null ? void 0 : _sale_totals2.taxCents);
146
+ const tenderTips = tenders.reduce((sum, tender)=>sum + tender.tipCents, 0);
147
+ tipsCents += Math.max(wholeCents((_sale_totals3 = sale.totals) == null ? void 0 : _sale_totals3.tipCents), tenderTips);
148
+ for (const tender of tenders){
149
+ var _salesByTender_tender_method;
150
+ salesByTender[tender.method] = ((_salesByTender_tender_method = salesByTender[tender.method]) != null ? _salesByTender_tender_method : 0) + tender.amountCents;
151
+ if (tender.method === 'cash') cashSalesCents += tender.amountCents + tender.tipCents;
152
+ }
153
+ }
154
+ let refundsCents = 0;
155
+ for (const refund of input.refunds){
156
+ var _refund_tenders;
157
+ refundsCents += wholeCents(refund.refundedCents);
158
+ for (const tender of (_refund_tenders = refund.tenders) != null ? _refund_tenders : []){
159
+ var _refundsByTender_tender_method;
160
+ if (!isTenderMethod(tender.method)) continue;
161
+ refundsByTender[tender.method] = ((_refundsByTender_tender_method = refundsByTender[tender.method]) != null ? _refundsByTender_tender_method : 0) + wholeCents(tender.amountCents);
162
+ }
163
+ }
164
+ const cash = posCashEventTotals(input.shift.cashEvents);
165
+ const openingFloatCents = wholeCents(input.shift.openingFloatCents);
166
+ return _extends({
167
+ orderCount,
168
+ grossSalesCents,
169
+ discountsCents,
170
+ taxCents,
171
+ tipsCents,
172
+ salesByTender,
173
+ refundCount: input.refunds.length,
174
+ refundsCents,
175
+ refundsByTender,
176
+ netSalesCents: grossSalesCents - refundsCents,
177
+ openingFloatCents,
178
+ cashSalesCents
179
+ }, cash, {
180
+ expectedCashCents: posExpectedCashCents(_extends({
181
+ openingFloatCents,
182
+ cashSalesCents
183
+ }, cash))
184
+ }, input.truncated ? {
185
+ truncated: true
186
+ } : {});
187
+ }
188
+ /** counted − expected; positive is over, negative is short. */ export function posCashVarianceCents(countedCashCents, expectedCashCents) {
189
+ return Math.round(Number(countedCashCents) || 0) - Math.round(Number(expectedCashCents) || 0);
190
+ }
191
+ /** `$12.34`, `-$0.50` — the register's money format, store currency USD. */ export function posMoney(cents) {
192
+ const value = Math.round(Number(cents) || 0);
193
+ return `${value < 0 ? '-' : ''}$${(Math.abs(value) / 100).toFixed(2)}`;
194
+ }
195
+ /** One CSV cell, quoted when it needs to be and never read as a formula. */ function csvCell(value) {
196
+ let cell = value == null ? '' : String(value);
197
+ if (/^[=+\-@\t\r]/.test(cell) && !/^-?\d+(\.\d+)?$/.test(cell)) cell = `'${cell}`;
198
+ return /[",\r\n]/.test(cell) ? `"${cell.replace(/"/g, '""')}"` : cell;
199
+ }
200
+ const dollars = (cents)=>cents == null ? '' : (Math.round(cents) / 100).toFixed(2);
201
+ /** The shift history as a spreadsheet: one row per shift, money in dollars. */ export function posShiftsCsv(shifts, memberName = (uid)=>uid) {
202
+ const header = [
203
+ 'Shift',
204
+ 'Register',
205
+ 'Opened',
206
+ 'Opened by',
207
+ 'Closed',
208
+ 'Closed by',
209
+ 'Orders',
210
+ 'Gross sales',
211
+ 'Refunds',
212
+ 'Net sales',
213
+ 'Discounts',
214
+ 'Tax',
215
+ 'Tips',
216
+ 'Cash sales',
217
+ 'Card sales',
218
+ 'Gift card sales',
219
+ 'Room charges',
220
+ 'Opening float',
221
+ 'Paid in',
222
+ 'Paid out',
223
+ 'Safe drops',
224
+ 'Cash refunds',
225
+ 'Expected cash',
226
+ 'Counted cash',
227
+ 'Variance'
228
+ ];
229
+ const iso = (ms)=>ms ? new Date(ms).toISOString() : '';
230
+ const rows = shifts.map((shift)=>{
231
+ var _report_salesByTender_card_present, _report_salesByTender_card_keyed, _report_salesByTender_card_link, _shift_registerName, _shift_openedByName, _shift_closedByName, _ref, _report_salesByTender_gift_card, _report_salesByTender_folio, _shift_expectedCashCents;
232
+ const report = shift.report;
233
+ const card = report ? ((_report_salesByTender_card_present = report.salesByTender.card_present) != null ? _report_salesByTender_card_present : 0) + ((_report_salesByTender_card_keyed = report.salesByTender.card_keyed) != null ? _report_salesByTender_card_keyed : 0) + ((_report_salesByTender_card_link = report.salesByTender.card_link) != null ? _report_salesByTender_card_link : 0) : undefined;
234
+ return [
235
+ shift.id,
236
+ (_shift_registerName = shift.registerName) != null ? _shift_registerName : shift.registerId,
237
+ iso(shift.openedAtMs),
238
+ (_shift_openedByName = shift.openedByName) != null ? _shift_openedByName : memberName(shift.openedBy),
239
+ iso(shift.closedAtMs),
240
+ shift.closedBy ? (_shift_closedByName = shift.closedByName) != null ? _shift_closedByName : memberName(shift.closedBy) : '',
241
+ (_ref = report == null ? void 0 : report.orderCount) != null ? _ref : '',
242
+ dollars(report == null ? void 0 : report.grossSalesCents),
243
+ dollars(report == null ? void 0 : report.refundsCents),
244
+ dollars(report == null ? void 0 : report.netSalesCents),
245
+ dollars(report == null ? void 0 : report.discountsCents),
246
+ dollars(report == null ? void 0 : report.taxCents),
247
+ dollars(report == null ? void 0 : report.tipsCents),
248
+ dollars(report == null ? void 0 : report.cashSalesCents),
249
+ dollars(card),
250
+ dollars(report ? (_report_salesByTender_gift_card = report.salesByTender.gift_card) != null ? _report_salesByTender_gift_card : 0 : undefined),
251
+ dollars(report ? (_report_salesByTender_folio = report.salesByTender.folio) != null ? _report_salesByTender_folio : 0 : undefined),
252
+ dollars(shift.openingFloatCents),
253
+ dollars(report == null ? void 0 : report.paidInCents),
254
+ dollars(report == null ? void 0 : report.paidOutCents),
255
+ dollars(report == null ? void 0 : report.dropsCents),
256
+ dollars(report == null ? void 0 : report.cashRefundsCents),
257
+ dollars((_shift_expectedCashCents = shift.expectedCashCents) != null ? _shift_expectedCashCents : report == null ? void 0 : report.expectedCashCents),
258
+ dollars(shift.countedCashCents),
259
+ dollars(shift.varianceCents)
260
+ ];
261
+ });
262
+ return [
263
+ header,
264
+ ...rows
265
+ ].map((row)=>row.map(csvCell).join(',')).join('\r\n');
266
+ }
267
+ /**
268
+ * What each line is worth back, whole: its price less its share of the
269
+ * order's discount, plus its share of the order's tax — the same
270
+ * apportionment `orderLineRefundCents` uses for the discount, extended to the
271
+ * tax a register sale charged on top. Shipping and tips are not a line's.
272
+ */ export function posReturnLineValues(order) {
273
+ var _order_lineItems;
274
+ var _order_totals, _order_totals1;
275
+ const lines = (_order_lineItems = order.lineItems) != null ? _order_lineItems : [];
276
+ const gross = lines.map((line)=>{
277
+ var _ref, _ref1;
278
+ return Math.max(0, Math.round(Number((_ref = line == null ? void 0 : line.unitAmountCents) != null ? _ref : 0))) * Math.max(1, Math.round(Number((_ref1 = line == null ? void 0 : line.quantity) != null ? _ref1 : 1)));
279
+ });
280
+ const discountShares = apportionCents(gross, wholeCents((_order_totals = order.totals) == null ? void 0 : _order_totals.discountCents));
281
+ const net = gross.map((cents, index)=>{
282
+ var _discountShares_index;
283
+ return Math.max(0, cents - ((_discountShares_index = discountShares[index]) != null ? _discountShares_index : 0));
284
+ });
285
+ const taxShares = apportionCents(net, wholeCents((_order_totals1 = order.totals) == null ? void 0 : _order_totals1.taxCents));
286
+ return net.map((cents, index)=>{
287
+ var _taxShares_index;
288
+ return cents + ((_taxShares_index = taxShares[index]) != null ? _taxShares_index : 0);
289
+ });
290
+ }
291
+ /** Units of each line already returned, a line refunded whole counting as all of it. */ export function posReturnedQuantities(order) {
292
+ var _order_lineItems, _order_refundedLineItemIds;
293
+ const lines = (_order_lineItems = order.lineItems) != null ? _order_lineItems : [];
294
+ const wholeLines = new Set((_order_refundedLineItemIds = order.refundedLineItemIds) != null ? _order_refundedLineItemIds : []);
295
+ return lines.map((line, index)=>{
296
+ var _ref, _ref1;
297
+ var _order_returnedQuantities;
298
+ const quantity = Math.max(1, Math.round(Number((_ref = line == null ? void 0 : line.quantity) != null ? _ref : 1)));
299
+ if (wholeLines.has(index)) return quantity;
300
+ const returned = Math.round(Number((_ref1 = (_order_returnedQuantities = order.returnedQuantities) == null ? void 0 : _order_returnedQuantities[String(index)]) != null ? _ref1 : 0));
301
+ return Math.min(quantity, Math.max(0, Number.isFinite(returned) ? returned : 0));
302
+ });
303
+ }
304
+ /**
305
+ * What a return of these picks refunds, to the cent.
306
+ *
307
+ * Each line's value is split across its units CUMULATIVELY: returning `k` of
308
+ * `n` units already returned `r` refunds `round(V·(r+k)/n) − round(V·r/n)`,
309
+ * so returning a line one unit at a time refunds exactly what returning it
310
+ * whole would have, and the rounding never strands or invents a cent. The
311
+ * sum is capped at what is left to refund on the order — a refund given
312
+ * from the order dialog already took its share.
313
+ *
314
+ * `heldElsewhere` is, per line, the units an online return (the returns
315
+ * flow) already holds or took back. They cap what the register may take, but
316
+ * they are not written into `returnedQuantities`, which counts only what the
317
+ * register itself took.
318
+ */ export function planPosReturn(order, picks, heldElsewhere = []) {
319
+ var _order_lineItems;
320
+ var _order_totals;
321
+ const lines = (_order_lineItems = order.lineItems) != null ? _order_lineItems : [];
322
+ if (!picks.length) return {
323
+ ok: false,
324
+ error: 'Pick at least one item to return.'
325
+ };
326
+ const values = posReturnLineValues(order);
327
+ const returned = posReturnedQuantities(order);
328
+ const seen = new Set();
329
+ const lineCents = [];
330
+ const nextReturned = {};
331
+ for (const [index, count] of returned.entries())if (count > 0) nextReturned[String(index)] = count;
332
+ const completedLines = [];
333
+ for (const pick of picks){
334
+ var _ref, _returned_index, _heldElsewhere_index, _values_index;
335
+ var _lines_index;
336
+ const index = Number(pick.index);
337
+ const quantity = Number(pick.quantity);
338
+ if (!Number.isInteger(index) || index < 0 || index >= lines.length) {
339
+ return {
340
+ ok: false,
341
+ error: `Line ${pick.index} is not on this order.`
342
+ };
343
+ }
344
+ if (seen.has(index)) return {
345
+ ok: false,
346
+ error: 'Each line can be picked once.'
347
+ };
348
+ seen.add(index);
349
+ if (!Number.isInteger(quantity) || quantity < 1) {
350
+ return {
351
+ ok: false,
352
+ error: 'Return at least one of each line you pick.'
353
+ };
354
+ }
355
+ const total = Math.max(1, Math.round(Number((_ref = (_lines_index = lines[index]) == null ? void 0 : _lines_index.quantity) != null ? _ref : 1)));
356
+ const already = (_returned_index = returned[index]) != null ? _returned_index : 0;
357
+ const held = Math.max(0, Math.round(Number((_heldElsewhere_index = heldElsewhere[index]) != null ? _heldElsewhere_index : 0)));
358
+ if (already + held + quantity > total) {
359
+ var _ref1, _ref2, _ref3;
360
+ var _lines_index1, _lines_index2, _lines_index3;
361
+ const left = Math.max(0, total - already - held);
362
+ return {
363
+ ok: false,
364
+ error: left > 0 ? `Only ${left} of "${(_ref1 = (_lines_index1 = lines[index]) == null ? void 0 : _lines_index1.name) != null ? _ref1 : 'that item'}" can still be returned.` : held > 0 ? `"${(_ref2 = (_lines_index2 = lines[index]) == null ? void 0 : _lines_index2.name) != null ? _ref2 : 'That item'}" is already in a return. Finish it under Returns.` : `"${(_ref3 = (_lines_index3 = lines[index]) == null ? void 0 : _lines_index3.name) != null ? _ref3 : 'That item'}" has already been returned.`
365
+ };
366
+ }
367
+ const value = (_values_index = values[index]) != null ? _values_index : 0;
368
+ lineCents.push(Math.round(value * (already + quantity) / total) - Math.round(value * already / total));
369
+ nextReturned[String(index)] = already + quantity;
370
+ if (already + quantity === total) completedLines.push(index);
371
+ }
372
+ const remaining = Math.max(0, wholeCents((_order_totals = order.totals) == null ? void 0 : _order_totals.totalCents) - wholeCents(order.refundedCents));
373
+ const asked = lineCents.reduce((sum, cents)=>sum + cents, 0);
374
+ const refundCents = Math.min(asked, remaining);
375
+ if (!(refundCents > 0)) return {
376
+ ok: false,
377
+ error: 'Nothing is left to refund on this order.'
378
+ };
379
+ return {
380
+ ok: true,
381
+ refundCents,
382
+ lineCents,
383
+ returnedQuantities: nextReturned,
384
+ completedLines
385
+ };
386
+ }
387
+ /**
388
+ * What each payment can still take back: what it put toward the sale, less
389
+ * what register returns already sent to it. A refund given from the order
390
+ * dialog refunds through Stripe without naming a payment, so whatever it
391
+ * took that no payment accounts for comes off the Stripe payments first.
392
+ */ export function posRefundableByTender(order) {
393
+ var _order_posPaymentRefunds;
394
+ const tenders = posOrderTenders(order);
395
+ const attributed = Object.values((_order_posPaymentRefunds = order.posPaymentRefunds) != null ? _order_posPaymentRefunds : {}).reduce((sum, cents)=>sum + wholeCents(cents), 0);
396
+ let unattributed = Math.max(0, wholeCents(order.refundedCents) - attributed);
397
+ const ordered = [
398
+ ...tenders
399
+ ].sort((a, b)=>Number(POS_STRIPE_TENDERS.has(b.method)) - Number(POS_STRIPE_TENDERS.has(a.method)));
400
+ const refundable = new Map();
401
+ for (const tender of ordered){
402
+ var _order_posPaymentRefunds1;
403
+ let left = Math.max(0, tender.amountCents - wholeCents((_order_posPaymentRefunds1 = order.posPaymentRefunds) == null ? void 0 : _order_posPaymentRefunds1[tender.id]));
404
+ if (POS_STRIPE_TENDERS.has(tender.method) && unattributed > 0) {
405
+ const taken = Math.min(left, unattributed);
406
+ left -= taken;
407
+ unattributed -= taken;
408
+ }
409
+ refundable.set(tender.id, left);
410
+ }
411
+ return tenders.map((tender)=>{
412
+ var _refundable_get;
413
+ return _extends({}, tender, {
414
+ refundableCents: (_refundable_get = refundable.get(tender.id)) != null ? _refundable_get : 0
415
+ });
416
+ });
417
+ }
418
+ /**
419
+ * The order a refund goes back in, when the cashier does not split it by
420
+ * hand: the cards first, then store credit, then the room, and the drawer
421
+ * LAST — so cash leaves the till only for what the customer paid in cash.
422
+ */ const REFUND_ORDER = [
423
+ 'card_present',
424
+ 'card_keyed',
425
+ 'card_link',
426
+ 'gift_card',
427
+ 'folio',
428
+ 'cash'
429
+ ];
430
+ /**
431
+ * Sends `amountCents` back to the sale's own payments.
432
+ *
433
+ * With no `requested` split, each payment takes what it can in
434
+ * {@link REFUND_ORDER}. With one, every slice must name a payment of this
435
+ * sale and fit what that payment can still take, and the slices must add up
436
+ * to the refund exactly — a refund is never sent to a tender the sale was
437
+ * not paid with.
438
+ */ export function splitPosRefund(order, amountCents, requested) {
439
+ const amount = wholeCents(amountCents);
440
+ const tenders = posRefundableByTender(order);
441
+ if (!tenders.length) return {
442
+ ok: false,
443
+ error: 'This order has no payment to refund to.'
444
+ };
445
+ if (requested && requested.length) {
446
+ const allocations = [];
447
+ const used = new Set();
448
+ for (const slice of requested){
449
+ const tender = tenders.find((candidate)=>candidate.id === slice.paymentId);
450
+ if (!tender) return {
451
+ ok: false,
452
+ error: 'That payment is not on this order.'
453
+ };
454
+ if (used.has(tender.id)) return {
455
+ ok: false,
456
+ error: 'Each payment can be named once.'
457
+ };
458
+ used.add(tender.id);
459
+ const cents = Math.round(Number(slice.amountCents));
460
+ if (!Number.isFinite(cents) || cents < 0) return {
461
+ ok: false,
462
+ error: 'Refund amounts must be positive.'
463
+ };
464
+ if (cents === 0) continue;
465
+ if (cents > tender.refundableCents) {
466
+ return {
467
+ ok: false,
468
+ error: `${posTenderLabel(tender)} can take back at most ${posMoney(tender.refundableCents)}.`
469
+ };
470
+ }
471
+ allocations.push({
472
+ paymentId: tender.id,
473
+ method: tender.method,
474
+ amountCents: cents
475
+ });
476
+ }
477
+ const total = allocations.reduce((sum, slice)=>sum + slice.amountCents, 0);
478
+ if (total !== amount) {
479
+ return {
480
+ ok: false,
481
+ error: `The refund is ${posMoney(amount)}; the split adds up to ${posMoney(total)}.`
482
+ };
483
+ }
484
+ return {
485
+ ok: true,
486
+ allocations
487
+ };
488
+ }
489
+ const ordered = [
490
+ ...tenders
491
+ ].sort((a, b)=>REFUND_ORDER.indexOf(a.method) - REFUND_ORDER.indexOf(b.method));
492
+ const allocations = [];
493
+ let left = amount;
494
+ for (const tender of ordered){
495
+ if (!(left > 0)) break;
496
+ const cents = Math.min(left, tender.refundableCents);
497
+ if (!(cents > 0)) continue;
498
+ allocations.push({
499
+ paymentId: tender.id,
500
+ method: tender.method,
501
+ amountCents: cents
502
+ });
503
+ left -= cents;
504
+ }
505
+ if (left > 0) {
506
+ return {
507
+ ok: false,
508
+ error: `Only ${posMoney(amount - left)} can go back to this sale's payments.`
509
+ };
510
+ }
511
+ return {
512
+ ok: true,
513
+ allocations
514
+ };
515
+ }
516
+ /*==========================================
517
+ * STAFF PINS
518
+ *=========================================*/ /** How long a cashier PIN switch lasts before the register asks again. */ export const POS_CASHIER_ASSERTION_TTL_MS = 15 * 60 * 1000;
519
+ /** A manager's approval is for the one refund in front of them. */ export const POS_MANAGER_ASSERTION_TTL_MS = 2 * 60 * 1000;
520
+ /** Wrong PINs in a row before the member is locked out. */ export const POS_PIN_MAX_ATTEMPTS = 5;
521
+ /** How long a lockout lasts. */ export const POS_PIN_LOCKOUT_MS = 15 * 60 * 1000;
522
+ /**
523
+ * Why a PIN cannot be used, or `null` when it can: 4 to 6 digits, and not
524
+ * one a stranger tries first — every digit the same, or a straight run.
525
+ */ export function posPinProblem(pin) {
526
+ var _digits_, _digits_1;
527
+ const value = typeof pin === 'string' ? pin : '';
528
+ if (!/^\d{4,6}$/.test(value)) return 'A PIN is 4 to 6 digits.';
529
+ if (/^(\d)\1+$/.test(value)) return 'Pick a PIN that is not one digit repeated.';
530
+ const digits = [
531
+ ...value
532
+ ].map(Number);
533
+ const step = ((_digits_ = digits[1]) != null ? _digits_ : 0) - ((_digits_1 = digits[0]) != null ? _digits_1 : 0);
534
+ if ((step === 1 || step === -1) && digits.every((digit, index)=>{
535
+ var _digits_;
536
+ return index === 0 || digit - ((_digits_ = digits[index - 1]) != null ? _digits_ : 0) === step;
537
+ })) {
538
+ return 'Pick a PIN that is not a straight run like 1234.';
539
+ }
540
+ return null;
541
+ }
542
+ /**
543
+ * The receipt for one sale, from the order alone plus what the store prints
544
+ * on every receipt. The sale's lines, totals, tenders and change are the
545
+ * receipt model's (`receiptDataFromOrder`, the one the cloud printers print
546
+ * from), so a browser print and a cloud print never disagree; this adds the
547
+ * logo, the address, the return policy and the gift receipt. A gift receipt
548
+ * keeps the lines and the barcode — the recipient's way to return — and
549
+ * drops every price, total and tender.
550
+ */ export function buildPosReceipt(input) {
551
+ var _input_formatDate, _input_store_address, _data_tenders;
552
+ const { order } = input;
553
+ const gift = input.gift === true;
554
+ const data = receiptDataFromOrder(input.orderId, order, {
555
+ storeName: input.store.name
556
+ });
557
+ const lines = data.lines.map((line)=>_extends({
558
+ name: line.name
559
+ }, line.detail ? {
560
+ variantLabel: line.detail
561
+ } : {}, {
562
+ quantity: line.quantity,
563
+ unitAmountCents: gift ? 0 : line.unitCents,
564
+ lineCents: gift ? 0 : line.totalCents
565
+ }));
566
+ const number = Number(order.number);
567
+ const digits = Number.isInteger(number) && number > 0 ? String(number) : '';
568
+ const createdAtMs = Number(order.createdAtMs) || 0;
569
+ const formatDate = (_input_formatDate = input.formatDate) != null ? _input_formatDate : (ms)=>ms ? new Date(ms).toLocaleString() : '';
570
+ const money = (cents)=>gift ? 0 : wholeCents(cents);
571
+ return _extends({
572
+ storeName: input.store.name
573
+ }, input.store.logoUrl ? {
574
+ logoUrl: input.store.logoUrl
575
+ } : {}, {
576
+ addressLines: String((_input_store_address = input.store.address) != null ? _input_store_address : '').split(/\r?\n/).map((line)=>line.trim()).filter(Boolean),
577
+ orderNumber: digits ? `#${digits}` : `#${input.orderId.slice(0, 8)}`,
578
+ barcodeValue: digits || input.orderId,
579
+ dateLabel: formatDate(createdAtMs)
580
+ }, input.cashierName ? {
581
+ cashierName: input.cashierName
582
+ } : {}, input.registerName ? {
583
+ registerName: input.registerName
584
+ } : {}, order.customerName ? {
585
+ customerName: String(order.customerName)
586
+ } : {}, {
587
+ lines,
588
+ subtotalCents: money(data.subtotalCents),
589
+ discountCents: money(data.discountCents),
590
+ taxCents: money(data.taxCents),
591
+ totalCents: money(data.totalCents),
592
+ tipCents: money(data.tipCents),
593
+ tenders: gift ? [] : (_data_tenders = data.tenders) != null ? _data_tenders : [],
594
+ changeCents: money(data.changeCents),
595
+ refundedCents: money(data.refundedCents)
596
+ }, input.store.footer ? {
597
+ footer: input.store.footer
598
+ } : {}, input.store.returnPolicy ? {
599
+ returnPolicy: input.store.returnPolicy
600
+ } : {}, {
601
+ gift
602
+ });
603
+ }
604
+ /** The rows of an X or Z report, in the order a manager reads them. */ export function posShiftReportRows(report, shift) {
605
+ var _shift_varianceCents, _shift_varianceCents1, _shift_varianceCents2;
606
+ const tenders = POS_TENDER_METHODS.filter((method)=>{
607
+ var _report_salesByTender_method, _report_refundsByTender_method;
608
+ return ((_report_salesByTender_method = report.salesByTender[method]) != null ? _report_salesByTender_method : 0) > 0 || ((_report_refundsByTender_method = report.refundsByTender[method]) != null ? _report_refundsByTender_method : 0) > 0;
609
+ });
610
+ return [
611
+ {
612
+ section: 'Sales',
613
+ rows: [
614
+ {
615
+ label: 'Orders',
616
+ value: String(report.orderCount)
617
+ },
618
+ {
619
+ label: 'Gross sales',
620
+ value: posMoney(report.grossSalesCents)
621
+ },
622
+ {
623
+ label: 'Discounts',
624
+ value: posMoney(report.discountsCents)
625
+ },
626
+ {
627
+ label: 'Tax',
628
+ value: posMoney(report.taxCents)
629
+ },
630
+ {
631
+ label: 'Tips',
632
+ value: posMoney(report.tipsCents)
633
+ },
634
+ {
635
+ label: `Refunds (${report.refundCount})`,
636
+ value: `-${posMoney(report.refundsCents)}`
637
+ },
638
+ {
639
+ label: 'Net sales',
640
+ value: posMoney(report.netSalesCents),
641
+ strong: true
642
+ }
643
+ ]
644
+ },
645
+ {
646
+ section: 'By tender',
647
+ rows: tenders.length ? tenders.map((method)=>{
648
+ var _report_salesByTender_method, _report_refundsByTender_method, _report_refundsByTender_method1;
649
+ return {
650
+ label: POS_TENDER_LABELS[method],
651
+ value: posMoney((_report_salesByTender_method = report.salesByTender[method]) != null ? _report_salesByTender_method : 0) + (((_report_refundsByTender_method = report.refundsByTender[method]) != null ? _report_refundsByTender_method : 0) > 0 ? ` (−${posMoney((_report_refundsByTender_method1 = report.refundsByTender[method]) != null ? _report_refundsByTender_method1 : 0)})` : '')
652
+ };
653
+ }) : [
654
+ {
655
+ label: 'No sales yet',
656
+ value: ''
657
+ }
658
+ ]
659
+ },
660
+ {
661
+ section: 'Cash drawer',
662
+ rows: [
663
+ {
664
+ label: 'Starting cash',
665
+ value: posMoney(report.openingFloatCents)
666
+ },
667
+ {
668
+ label: 'Cash sales',
669
+ value: posMoney(report.cashSalesCents)
670
+ },
671
+ {
672
+ label: 'Paid in',
673
+ value: posMoney(report.paidInCents)
674
+ },
675
+ {
676
+ label: 'Paid out',
677
+ value: `-${posMoney(report.paidOutCents)}`
678
+ },
679
+ {
680
+ label: 'Safe drops',
681
+ value: `-${posMoney(report.dropsCents)}`
682
+ },
683
+ {
684
+ label: 'Cash refunds',
685
+ value: `-${posMoney(report.cashRefundsCents)}`
686
+ },
687
+ {
688
+ label: 'Expected in drawer',
689
+ value: posMoney(report.expectedCashCents),
690
+ strong: true
691
+ },
692
+ ...(shift == null ? void 0 : shift.countedCashCents) != null ? [
693
+ {
694
+ label: 'Counted',
695
+ value: posMoney(shift.countedCashCents)
696
+ },
697
+ {
698
+ label: ((_shift_varianceCents = shift.varianceCents) != null ? _shift_varianceCents : 0) < 0 ? 'Short' : ((_shift_varianceCents1 = shift.varianceCents) != null ? _shift_varianceCents1 : 0) > 0 ? 'Over' : 'Balanced',
699
+ value: posMoney((_shift_varianceCents2 = shift.varianceCents) != null ? _shift_varianceCents2 : 0),
700
+ strong: true
701
+ }
702
+ ] : []
703
+ ]
704
+ }
705
+ ];
706
+ }
707
+ /** A shift's X or Z report as the receipt printer prints it. */ export function posShiftPrintReport(input) {
708
+ return _extends({
709
+ title: input.title,
710
+ storeName: input.storeName
711
+ }, input.subtitle || input.registerName ? {
712
+ subtitle: [
713
+ input.registerName,
714
+ input.subtitle
715
+ ].filter(Boolean).join(' - ')
716
+ } : {}, {
717
+ sections: posShiftReportRows(input.report, input.shift)
718
+ });
719
+ }
720
+
721
+ //# sourceMappingURL=commerce-pos-ops.js.map