@aglyn/plugins-commerce 1.0.0-beta.285 → 1.0.0-beta.288
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.
- package/README.md +1 -1
- package/package.json +13 -13
- package/src/lib/components/cart.js +25 -12
- package/src/lib/components/cart.js.map +1 -1
- package/src/lib/components/commerce-console-page.js +70 -13
- package/src/lib/components/commerce-console-page.js.map +1 -1
- package/src/lib/components/console/order-detail-dialog.component.js +2 -1
- package/src/lib/components/console/order-detail-dialog.component.js.map +1 -1
- package/src/lib/components/console/order-webhooks-card.component.js +1 -1
- package/src/lib/components/console/order-webhooks-card.component.js.map +1 -1
- package/src/lib/components/console/payment-methods-card.component.js +1 -1
- package/src/lib/components/console/payment-methods-card.component.js.map +1 -1
- package/src/lib/components/console/pos/pos-cart-panel.component.d.ts +5 -0
- package/src/lib/components/console/pos/pos-cart-panel.component.js +18 -12
- package/src/lib/components/console/pos/pos-cart-panel.component.js.map +1 -1
- package/src/lib/components/console/pos/pos-hardware-api.d.ts +76 -5
- package/src/lib/components/console/pos/pos-hardware-api.js +53 -11
- package/src/lib/components/console/pos/pos-hardware-api.js.map +1 -1
- package/src/lib/components/console/pos/pos-hardware-buyer.component.d.ts +18 -0
- package/src/lib/components/console/pos/pos-hardware-buyer.component.js +629 -0
- package/src/lib/components/console/pos/pos-hardware-buyer.component.js.map +1 -0
- package/src/lib/components/console/pos/pos-hardware-sale-api.d.ts +162 -0
- package/src/lib/components/console/pos/pos-hardware-sale-api.js +122 -0
- package/src/lib/components/console/pos/pos-hardware-sale-api.js.map +1 -0
- package/src/lib/components/console/pos/pos-hardware-sale-terms.component.d.ts +39 -0
- package/src/lib/components/console/pos/pos-hardware-sale-terms.component.js +251 -0
- package/src/lib/components/console/pos/pos-hardware-sale-terms.component.js.map +1 -0
- package/src/lib/components/console/pos/use-pos-display.js +50 -0
- package/src/lib/components/console/pos/use-pos-display.js.map +1 -1
- package/src/lib/components/console/pos-cellular-control.component.d.ts +41 -0
- package/src/lib/components/console/pos-cellular-control.component.js +211 -0
- package/src/lib/components/console/pos-cellular-control.component.js.map +1 -0
- package/src/lib/components/console/pos-devices-card.component.d.ts +9 -1
- package/src/lib/components/console/pos-devices-card.component.js +47 -15
- package/src/lib/components/console/pos-devices-card.component.js.map +1 -1
- package/src/lib/components/console/pos-display/pos-display-api.d.ts +6 -0
- package/src/lib/components/console/pos-display/pos-display-api.js +8 -1
- package/src/lib/components/console/pos-display/pos-display-api.js.map +1 -1
- package/src/lib/components/console/pos-display-page.component.d.ts +13 -0
- package/src/lib/components/console/pos-display-page.component.js +44 -2
- package/src/lib/components/console/pos-display-page.component.js.map +1 -1
- package/src/lib/components/console/pos-hardware-card.component.d.ts +12 -4
- package/src/lib/components/console/pos-hardware-card.component.js +157 -36
- package/src/lib/components/console/pos-hardware-card.component.js.map +1 -1
- package/src/lib/components/console/pos-hardware-orders-staff-page.component.js +360 -80
- package/src/lib/components/console/pos-hardware-orders-staff-page.component.js.map +1 -1
- package/src/lib/components/console/pos-hardware-terms-page.component.d.ts +34 -0
- package/src/lib/components/console/pos-hardware-terms-page.component.js +257 -0
- package/src/lib/components/console/pos-hardware-terms-page.component.js.map +1 -0
- package/src/lib/components/console/pos-hardware-terms-sign-page.component.d.ts +27 -0
- package/src/lib/components/console/pos-hardware-terms-sign-page.component.js +104 -0
- package/src/lib/components/console/pos-hardware-terms-sign-page.component.js.map +1 -0
- package/src/lib/components/console/pos-hardware-waiting-card.component.d.ts +24 -0
- package/src/lib/components/console/pos-hardware-waiting-card.component.js +205 -0
- package/src/lib/components/console/pos-hardware-waiting-card.component.js.map +1 -0
- package/src/lib/components/console/pos-ops/pos-check-in-dialog.component.js +297 -201
- package/src/lib/components/console/pos-ops/pos-check-in-dialog.component.js.map +1 -1
- package/src/lib/components/console/pos-ops/pos-check-ins-card.component.d.ts +3 -0
- package/src/lib/components/console/pos-ops/pos-check-ins-card.component.js +260 -92
- package/src/lib/components/console/pos-ops/pos-check-ins-card.component.js.map +1 -1
- package/src/lib/components/console/pos-ops/pos-operations-bar.component.d.ts +9 -0
- package/src/lib/components/console/pos-ops/pos-operations-bar.component.js +15 -6
- package/src/lib/components/console/pos-ops/pos-operations-bar.component.js.map +1 -1
- package/src/lib/components/console/pos-ops/pos-rain-check-dialog.component.d.ts +25 -0
- package/src/lib/components/console/pos-ops/pos-rain-check-dialog.component.js +136 -0
- package/src/lib/components/console/pos-ops/pos-rain-check-dialog.component.js.map +1 -0
- package/src/lib/components/console/pos-ops/pos-shift-panel.component.d.ts +6 -0
- package/src/lib/components/console/pos-ops/pos-shift-panel.component.js +48 -31
- package/src/lib/components/console/pos-ops/pos-shift-panel.component.js.map +1 -1
- package/src/lib/components/console/pos-page.component.d.ts +1 -1
- package/src/lib/components/console/pos-page.component.js +63 -12
- package/src/lib/components/console/pos-page.component.js.map +1 -1
- package/src/lib/components/console/pos-reader-splash-setting.component.js +1 -1
- package/src/lib/components/console/pos-reader-splash-setting.component.js.map +1 -1
- package/src/lib/components/console/product-check-in-fields.component.d.ts +4 -2
- package/src/lib/components/console/product-check-in-fields.component.js +60 -14
- package/src/lib/components/console/product-check-in-fields.component.js.map +1 -1
- package/src/lib/components/console/product-editor-dialog.component.js +44 -1
- package/src/lib/components/console/product-editor-dialog.component.js.map +1 -1
- package/src/lib/components/console/product-hardware-sku-field.component.d.ts +19 -0
- package/src/lib/components/console/product-hardware-sku-field.component.js +92 -0
- package/src/lib/components/console/product-hardware-sku-field.component.js.map +1 -0
- package/src/lib/components/console/product-kiosk-offer-field.component.d.ts +22 -0
- package/src/lib/components/console/product-kiosk-offer-field.component.js +94 -0
- package/src/lib/components/console/product-kiosk-offer-field.component.js.map +1 -0
- package/src/lib/components/console/product-register-fields.component.d.ts +4 -0
- package/src/lib/components/console/product-register-fields.component.js +31 -2
- package/src/lib/components/console/product-register-fields.component.js.map +1 -1
- package/src/lib/components/console/products-hub-card.component.js +11 -2
- package/src/lib/components/console/products-hub-card.component.js.map +1 -1
- package/src/lib/components/console/register-hardware-card.component.d.ts +11 -0
- package/src/lib/components/console/register-hardware-card.component.js +56 -27
- package/src/lib/components/console/register-hardware-card.component.js.map +1 -1
- package/src/lib/components/console/reservation-guests-dialog.component.d.ts +28 -0
- package/src/lib/components/console/reservation-guests-dialog.component.js +189 -0
- package/src/lib/components/console/reservation-guests-dialog.component.js.map +1 -0
- package/src/lib/components/console/reservations-card.component.d.ts +9 -0
- package/src/lib/components/console/reservations-card.component.js +158 -23
- package/src/lib/components/console/reservations-card.component.js.map +1 -1
- package/src/lib/components/console/shippingeasy-card.component.js +1 -1
- package/src/lib/components/console/shippingeasy-card.component.js.map +1 -1
- package/src/lib/components/console/shipstation-card.component.d.ts +1 -1
- package/src/lib/components/console/shipstation-card.component.js +3 -3
- package/src/lib/components/console/shipstation-card.component.js.map +1 -1
- package/src/lib/components/product-detail.d.ts +4 -0
- package/src/lib/components/product-detail.js +40 -5
- package/src/lib/components/product-detail.js.map +1 -1
- package/src/lib/components/product-reviews.js +28 -11
- package/src/lib/components/product-reviews.js.map +1 -1
- package/src/lib/components/reservation-widget.js +28 -5
- package/src/lib/components/reservation-widget.js.map +1 -1
- package/src/lib/components/use-day-picker.d.ts +25 -0
- package/src/lib/components/use-day-picker.js +57 -0
- package/src/lib/components/use-day-picker.js.map +1 -0
- package/src/lib/constants/operator-alerts.d.ts +55 -0
- package/src/lib/constants/operator-alerts.js +156 -1
- package/src/lib/constants/operator-alerts.js.map +1 -1
- package/src/lib/declarations.console-server.js +54 -1
- package/src/lib/declarations.console-server.js.map +1 -1
- package/src/lib/declarations.d.ts +4 -2
- package/src/lib/declarations.js +15 -4
- package/src/lib/declarations.js.map +1 -1
- package/src/lib/declarations.server.js +9 -0
- package/src/lib/declarations.server.js.map +1 -1
- package/src/lib/model/commerce-cart.d.ts +9 -1
- package/src/lib/model/commerce-cart.js +4 -3
- package/src/lib/model/commerce-cart.js.map +1 -1
- package/src/lib/model/commerce-check-in-product.d.ts +26 -0
- package/src/lib/model/commerce-check-in-product.js +64 -2
- package/src/lib/model/commerce-check-in-product.js.map +1 -1
- package/src/lib/model/commerce-check-in-record.d.ts +127 -0
- package/src/lib/model/commerce-check-in-record.js +36 -0
- package/src/lib/model/commerce-check-in-record.js.map +1 -0
- package/src/lib/model/commerce-check-in.d.ts +91 -87
- package/src/lib/model/commerce-check-in.js +186 -62
- package/src/lib/model/commerce-check-in.js.map +1 -1
- package/src/lib/model/commerce-kiosk-offer.d.ts +31 -0
- package/src/lib/model/commerce-kiosk-offer.js +35 -0
- package/src/lib/model/commerce-kiosk-offer.js.map +1 -0
- package/src/lib/model/commerce-orders.d.ts +76 -0
- package/src/lib/model/commerce-orders.js +6 -0
- package/src/lib/model/commerce-orders.js.map +1 -1
- package/src/lib/model/commerce-pos-day-report.d.ts +54 -1
- package/src/lib/model/commerce-pos-day-report.js +39 -2
- package/src/lib/model/commerce-pos-day-report.js.map +1 -1
- package/src/lib/model/commerce-pos-offline.d.ts +1 -1
- package/src/lib/model/commerce-pos-offline.js +6 -1
- package/src/lib/model/commerce-pos-offline.js.map +1 -1
- package/src/lib/model/commerce-pos-ops.js +3 -2
- package/src/lib/model/commerce-pos-ops.js.map +1 -1
- package/src/lib/model/commerce-pos.d.ts +36 -3
- package/src/lib/model/commerce-pos.js +14 -6
- package/src/lib/model/commerce-pos.js.map +1 -1
- package/src/lib/model/commerce-receipt.js +3 -2
- package/src/lib/model/commerce-receipt.js.map +1 -1
- package/src/lib/model/commerce-reservations.d.ts +69 -4
- package/src/lib/model/commerce-reservations.js +57 -5
- package/src/lib/model/commerce-reservations.js.map +1 -1
- package/src/lib/model/commerce.d.ts +66 -0
- package/src/lib/model/commerce.js +15 -0
- package/src/lib/model/commerce.js.map +1 -1
- package/src/lib/model/order-list-fields.d.ts +11 -0
- package/src/lib/model/order-list-fields.js +17 -1
- package/src/lib/model/order-list-fields.js.map +1 -1
- package/src/lib/model/own-store-tax-summary.d.ts +152 -0
- package/src/lib/model/own-store-tax-summary.js +288 -0
- package/src/lib/model/own-store-tax-summary.js.map +1 -0
- package/src/lib/model/plugin-permissions.d.ts +74 -0
- package/src/lib/model/plugin-permissions.js +224 -7
- package/src/lib/model/plugin-permissions.js.map +1 -1
- package/src/lib/model/pos-cellular.d.ts +223 -0
- package/src/lib/model/pos-cellular.js +293 -0
- package/src/lib/model/pos-cellular.js.map +1 -0
- package/src/lib/model/pos-hardware-in-person.d.ts +98 -0
- package/src/lib/model/pos-hardware-in-person.js +224 -0
- package/src/lib/model/pos-hardware-in-person.js.map +1 -0
- package/src/lib/model/pos-hardware-tax-summary.d.ts +166 -0
- package/src/lib/model/pos-hardware-tax-summary.js +225 -0
- package/src/lib/model/pos-hardware-tax-summary.js.map +1 -0
- package/src/lib/model/pos-hardware-terms.d.ts +74 -0
- package/src/lib/model/pos-hardware-terms.js +115 -0
- package/src/lib/model/pos-hardware-terms.js.map +1 -0
- package/src/lib/model/pos-hardware.d.ts +349 -7
- package/src/lib/model/pos-hardware.js +291 -20
- package/src/lib/model/pos-hardware.js.map +1 -1
- package/src/lib/model/product-write.d.ts +10 -0
- package/src/lib/model/product-write.js +4 -2
- package/src/lib/model/product-write.js.map +1 -1
- package/src/lib/model/workspace-site-permissions.d.ts +26 -0
- package/src/lib/model/workspace-site-permissions.js +81 -0
- package/src/lib/model/workspace-site-permissions.js.map +1 -0
- package/src/lib/plugin.js +16 -0
- package/src/lib/plugin.js.map +1 -1
- package/src/lib/server/billing-webhook.js +25 -1
- package/src/lib/server/billing-webhook.js.map +1 -1
- package/src/lib/server/cancel-order.js +7 -5
- package/src/lib/server/cancel-order.js.map +1 -1
- package/src/lib/server/cart-checkout.js +20 -8
- package/src/lib/server/cart-checkout.js.map +1 -1
- package/src/lib/server/cart.js +29 -0
- package/src/lib/server/cart.js.map +1 -1
- package/src/lib/server/checkout.js +42 -13
- package/src/lib/server/checkout.js.map +1 -1
- package/src/lib/server/collection-membership.d.ts +4 -0
- package/src/lib/server/collection-membership.js +5 -10
- package/src/lib/server/collection-membership.js.map +1 -1
- package/src/lib/server/commerce-site-keys.d.ts +48 -0
- package/src/lib/server/commerce-site-keys.js +61 -0
- package/src/lib/server/commerce-site-keys.js.map +1 -0
- package/src/lib/server/draft-order.js +8 -5
- package/src/lib/server/draft-order.js.map +1 -1
- package/src/lib/server/fulfill-order.js +7 -5
- package/src/lib/server/fulfill-order.js.map +1 -1
- package/src/lib/server/gift-cards.js +8 -5
- package/src/lib/server/gift-cards.js.map +1 -1
- package/src/lib/server/local-fulfillment-status.js +9 -6
- package/src/lib/server/local-fulfillment-status.js.map +1 -1
- package/src/lib/server/member-post.js +6 -5
- package/src/lib/server/member-post.js.map +1 -1
- package/src/lib/server/membership-admin-password.d.ts +4 -2
- package/src/lib/server/membership-admin-password.js +10 -8
- package/src/lib/server/membership-admin-password.js.map +1 -1
- package/src/lib/server/membership-admin-remove.d.ts +7 -5
- package/src/lib/server/membership-admin-remove.js +9 -9
- package/src/lib/server/membership-admin-remove.js.map +1 -1
- package/src/lib/server/order-notifications.js +5 -2
- package/src/lib/server/order-notifications.js.map +1 -1
- package/src/lib/server/order-print.js +7 -5
- package/src/lib/server/order-print.js.map +1 -1
- package/src/lib/server/order-receipt-send.js +8 -5
- package/src/lib/server/order-receipt-send.js.map +1 -1
- package/src/lib/server/order-webhooks.js +8 -8
- package/src/lib/server/order-webhooks.js.map +1 -1
- package/src/lib/server/orders-shipping-prepare.js +9 -6
- package/src/lib/server/orders-shipping-prepare.js.map +1 -1
- package/src/lib/server/own-store-tax-return-source.d.ts +47 -0
- package/src/lib/server/own-store-tax-return-source.js +312 -0
- package/src/lib/server/own-store-tax-return-source.js.map +1 -0
- package/src/lib/server/payment-methods.js +13 -9
- package/src/lib/server/payment-methods.js.map +1 -1
- package/src/lib/server/pos-auth.d.ts +37 -6
- package/src/lib/server/pos-auth.js +40 -15
- package/src/lib/server/pos-auth.js.map +1 -1
- package/src/lib/server/pos-cellular-billing.d.ts +81 -0
- package/src/lib/server/pos-cellular-billing.js +711 -0
- package/src/lib/server/pos-cellular-billing.js.map +1 -0
- package/src/lib/server/pos-cellular-notify.d.ts +47 -0
- package/src/lib/server/pos-cellular-notify.js +150 -0
- package/src/lib/server/pos-cellular-notify.js.map +1 -0
- package/src/lib/server/pos-cellular.d.ts +88 -0
- package/src/lib/server/pos-cellular.js +339 -0
- package/src/lib/server/pos-cellular.js.map +1 -0
- package/src/lib/server/pos-check-in.d.ts +5 -1
- package/src/lib/server/pos-check-in.js +296 -28
- package/src/lib/server/pos-check-in.js.map +1 -1
- package/src/lib/server/pos-day-report.js +29 -3
- package/src/lib/server/pos-day-report.js.map +1 -1
- package/src/lib/server/pos-display.d.ts +16 -0
- package/src/lib/server/pos-display.js +129 -2
- package/src/lib/server/pos-display.js.map +1 -1
- package/src/lib/server/pos-hardware-admin.d.ts +10 -1
- package/src/lib/server/pos-hardware-admin.js +250 -84
- package/src/lib/server/pos-hardware-admin.js.map +1 -1
- package/src/lib/server/pos-hardware-attach.d.ts +105 -0
- package/src/lib/server/pos-hardware-attach.js +443 -0
- package/src/lib/server/pos-hardware-attach.js.map +1 -0
- package/src/lib/server/pos-hardware-buyer-lookup.d.ts +58 -0
- package/src/lib/server/pos-hardware-buyer-lookup.js +180 -0
- package/src/lib/server/pos-hardware-buyer-lookup.js.map +1 -0
- package/src/lib/server/pos-hardware-buyer-record.d.ts +29 -0
- package/src/lib/server/pos-hardware-buyer-record.js +86 -0
- package/src/lib/server/pos-hardware-buyer-record.js.map +1 -0
- package/src/lib/server/pos-hardware-cancel.d.ts +58 -0
- package/src/lib/server/pos-hardware-cancel.js +147 -0
- package/src/lib/server/pos-hardware-cancel.js.map +1 -0
- package/src/lib/server/pos-hardware-closure-notices.d.ts +27 -0
- package/src/lib/server/pos-hardware-closure-notices.js +85 -0
- package/src/lib/server/pos-hardware-closure-notices.js.map +1 -0
- package/src/lib/server/pos-hardware-closure.d.ts +60 -0
- package/src/lib/server/pos-hardware-closure.js +153 -0
- package/src/lib/server/pos-hardware-closure.js.map +1 -0
- package/src/lib/server/pos-hardware-in-person.d.ts +61 -0
- package/src/lib/server/pos-hardware-in-person.js +236 -0
- package/src/lib/server/pos-hardware-in-person.js.map +1 -0
- package/src/lib/server/pos-hardware-notify.d.ts +40 -2
- package/src/lib/server/pos-hardware-notify.js +195 -14
- package/src/lib/server/pos-hardware-notify.js.map +1 -1
- package/src/lib/server/pos-hardware-readers.d.ts +115 -0
- package/src/lib/server/pos-hardware-readers.js +430 -0
- package/src/lib/server/pos-hardware-readers.js.map +1 -0
- package/src/lib/server/pos-hardware-returns.d.ts +116 -0
- package/src/lib/server/pos-hardware-returns.js +502 -0
- package/src/lib/server/pos-hardware-returns.js.map +1 -0
- package/src/lib/server/pos-hardware-sale-fields.d.ts +28 -0
- package/src/lib/server/pos-hardware-sale-fields.js +44 -0
- package/src/lib/server/pos-hardware-sale-fields.js.map +1 -0
- package/src/lib/server/pos-hardware-sale.d.ts +54 -0
- package/src/lib/server/pos-hardware-sale.js +369 -0
- package/src/lib/server/pos-hardware-sale.js.map +1 -0
- package/src/lib/server/pos-hardware-tax-return-source.d.ts +99 -0
- package/src/lib/server/pos-hardware-tax-return-source.js +462 -0
- package/src/lib/server/pos-hardware-tax-return-source.js.map +1 -0
- package/src/lib/server/pos-hardware-terms.d.ts +64 -0
- package/src/lib/server/pos-hardware-terms.js +154 -0
- package/src/lib/server/pos-hardware-terms.js.map +1 -0
- package/src/lib/server/pos-hardware-user-eraser.d.ts +3 -0
- package/src/lib/server/pos-hardware-user-eraser.js +31 -7
- package/src/lib/server/pos-hardware-user-eraser.js.map +1 -1
- package/src/lib/server/pos-hardware-webhook.d.ts +5 -0
- package/src/lib/server/pos-hardware-webhook.js +51 -6
- package/src/lib/server/pos-hardware-webhook.js.map +1 -1
- package/src/lib/server/pos-hardware.d.ts +74 -1
- package/src/lib/server/pos-hardware.js +175 -10
- package/src/lib/server/pos-hardware.js.map +1 -1
- package/src/lib/server/pos-kiosk.d.ts +2 -0
- package/src/lib/server/pos-kiosk.js +17 -12
- package/src/lib/server/pos-kiosk.js.map +1 -1
- package/src/lib/server/pos-offline-card-order.d.ts +64 -0
- package/src/lib/server/pos-offline-card-order.js +102 -0
- package/src/lib/server/pos-offline-card-order.js.map +1 -0
- package/src/lib/server/pos-offline-card-reconcile.d.ts +67 -1
- package/src/lib/server/pos-offline-card-reconcile.js +215 -18
- package/src/lib/server/pos-offline-card-reconcile.js.map +1 -1
- package/src/lib/server/pos-offline-sync.d.ts +39 -0
- package/src/lib/server/pos-offline-sync.js +190 -55
- package/src/lib/server/pos-offline-sync.js.map +1 -1
- package/src/lib/server/pos-ops-gate.d.ts +28 -9
- package/src/lib/server/pos-ops-gate.js +50 -19
- package/src/lib/server/pos-ops-gate.js.map +1 -1
- package/src/lib/server/pos-ops-routes.js +24 -0
- package/src/lib/server/pos-ops-routes.js.map +1 -1
- package/src/lib/server/pos-order-refund-ids.d.ts +28 -0
- package/src/lib/server/pos-order-refund-ids.js +31 -0
- package/src/lib/server/pos-order-refund-ids.js.map +1 -0
- package/src/lib/server/pos-order.js +52 -49
- package/src/lib/server/pos-order.js.map +1 -1
- package/src/lib/server/pos-payment.js +1 -1
- package/src/lib/server/pos-payment.js.map +1 -1
- package/src/lib/server/pos-reader-splash-admin.js +30 -32
- package/src/lib/server/pos-reader-splash-admin.js.map +1 -1
- package/src/lib/server/pos-reader-splash-images-route.d.ts +17 -0
- package/src/lib/server/pos-reader-splash-images-route.js +113 -0
- package/src/lib/server/pos-reader-splash-images-route.js.map +1 -0
- package/src/lib/server/pos-reader-splash-images.d.ts +51 -0
- package/src/lib/server/pos-reader-splash-images.js +123 -0
- package/src/lib/server/pos-reader-splash-images.js.map +1 -0
- package/src/lib/server/pos-reader-splash.d.ts +68 -1
- package/src/lib/server/pos-reader-splash.js +182 -11
- package/src/lib/server/pos-reader-splash.js.map +1 -1
- package/src/lib/server/pos-readers.d.ts +29 -0
- package/src/lib/server/pos-readers.js +134 -35
- package/src/lib/server/pos-readers.js.map +1 -1
- package/src/lib/server/pos-refund-authority.d.ts +3 -1
- package/src/lib/server/pos-refund-authority.js +3 -2
- package/src/lib/server/pos-refund-authority.js.map +1 -1
- package/src/lib/server/pos-return.d.ts +10 -0
- package/src/lib/server/pos-return.js +29 -7
- package/src/lib/server/pos-return.js.map +1 -1
- package/src/lib/server/pos-sale.js +6 -1
- package/src/lib/server/pos-sale.js.map +1 -1
- package/src/lib/server/pos-shift.js +11 -0
- package/src/lib/server/pos-shift.js.map +1 -1
- package/src/lib/server/pos-staff-pin.js +29 -24
- package/src/lib/server/pos-staff-pin.js.map +1 -1
- package/src/lib/server/pos-terminal.d.ts +14 -4
- package/src/lib/server/pos-terminal.js +34 -38
- package/src/lib/server/pos-terminal.js.map +1 -1
- package/src/lib/server/printers.d.ts +7 -3
- package/src/lib/server/printers.js +18 -12
- package/src/lib/server/printers.js.map +1 -1
- package/src/lib/server/product-drafts.d.ts +11 -1
- package/src/lib/server/product-drafts.js +12 -8
- package/src/lib/server/product-drafts.js.map +1 -1
- package/src/lib/server/product.d.ts +15 -1
- package/src/lib/server/product.js +16 -3
- package/src/lib/server/product.js.map +1 -1
- package/src/lib/server/products-write.d.ts +26 -2
- package/src/lib/server/products-write.js +19 -7
- package/src/lib/server/products-write.js.map +1 -1
- package/src/lib/server/refund.js +55 -42
- package/src/lib/server/refund.js.map +1 -1
- package/src/lib/server/reservation-availability-query.d.ts +8 -0
- package/src/lib/server/reservation-availability-query.js +11 -1
- package/src/lib/server/reservation-availability-query.js.map +1 -1
- package/src/lib/server/reservation-availability.d.ts +1 -1
- package/src/lib/server/reservation-availability.js +7 -2
- package/src/lib/server/reservation-availability.js.map +1 -1
- package/src/lib/server/reservation-guests.d.ts +32 -0
- package/src/lib/server/reservation-guests.js +285 -0
- package/src/lib/server/reservation-guests.js.map +1 -0
- package/src/lib/server/reservation-walk-in.d.ts +11 -1
- package/src/lib/server/reservation-walk-in.js +56 -12
- package/src/lib/server/reservation-walk-in.js.map +1 -1
- package/src/lib/server/reserve.js +18 -5
- package/src/lib/server/reserve.js.map +1 -1
- package/src/lib/server/returns.js +9 -6
- package/src/lib/server/returns.js.map +1 -1
- package/src/lib/server/reviews.d.ts +22 -2
- package/src/lib/server/reviews.js +88 -20
- package/src/lib/server/reviews.js.map +1 -1
- package/src/lib/server/shipping-connectors.js +10 -11
- package/src/lib/server/shipping-connectors.js.map +1 -1
- package/src/lib/server/site-page-resolver.js +20 -3
- package/src/lib/server/site-page-resolver.js.map +1 -1
- package/src/lib/server/store-day.d.ts +33 -0
- package/src/lib/server/store-day.js +46 -0
- package/src/lib/server/store-day.js.map +1 -0
- package/src/lib/server/store-setup-ai-writer.d.ts +2 -1
- package/src/lib/server/store-setup-ai-writer.js +5 -6
- package/src/lib/server/store-setup-ai-writer.js.map +1 -1
- package/src/lib/server/storefront-tax.d.ts +13 -0
- package/src/lib/server/storefront-tax.js +8 -1
- package/src/lib/server/storefront-tax.js.map +1 -1
- package/src/lib/server/tax-return-source.d.ts +32 -3
- package/src/lib/server/tax-return-source.js +99 -20
- package/src/lib/server/tax-return-source.js.map +1 -1
- package/src/lib/server.js +100 -2
- package/src/lib/server.js.map +1 -1
- package/src/lib/testing/fake-firestore.js +58 -16
- package/src/lib/testing/fake-firestore.js.map +1 -1
- package/src/lib/testing/pos-ops-memory-firestore.js +18 -4
- package/src/lib/testing/pos-ops-memory-firestore.js.map +1 -1
- package/src/lib/testing/site-register-permissions.d.ts +29 -0
- package/src/lib/testing/site-register-permissions.js +38 -0
- package/src/lib/testing/site-register-permissions.js.map +1 -0
- package/src/lib/transfer/tracking.server.js +8 -5
- package/src/lib/transfer/tracking.server.js.map +1 -1
- package/src/lib/utils/add-to-cart.d.ts +2 -0
- package/src/lib/utils/add-to-cart.js +6 -3
- package/src/lib/utils/add-to-cart.js.map +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../../libs/plugins/commerce/src/lib/server/pos-hardware-readers.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2026 Aglyn LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport * as Aglyn from '@aglyn/aglyn/server'\nimport { firebaseAdmin, getOrgForHost } from '@aglyn/tenant-data-admin'\nimport {\n normalizePosHardwareSerial,\n POS_HARDWARE_ORDER_ID,\n POS_HARDWARE_ORDERS_COLLECTION,\n posHardwareSaleRecord,\n posHardwareSaleSetOptions,\n posHardwareSku,\n type PosHardwareInPersonConfig,\n type PosHardwareOrder,\n type PosHardwareUnit,\n} from '../model/pos-hardware'\nimport { posHardwareAttachmentOf } from '../model/pos-hardware-in-person'\nimport { fillPosHardwareBuyerAddress } from './pos-hardware-buyer-record'\nimport { hardwareOrdersRef, posHardwareInPersonOrderId, posHardwareSaleRef } from './pos-hardware'\nimport type { PosTerminalAddress } from './pos-terminal'\n\n/*==========================================\n * A CARD READER SOLD IN PERSON, ONTO THE BUYER'S STORE (AGL-4038).\n *\n * Three ways, and every one ends with the order at Set up:\n *\n * 1. The serial number taken at the sale. Staff scan or type each reader's\n * serial on the sale; when the buyer registers a reader with that\n * serial (by its code, on the POS devices card), the reader is matched\n * to its unit here and the order moves to Set up once every reader on\n * it is — no step for the buyer. A sale nobody had attached yet is\n * attached to the workspace that registered its reader: only whoever\n * holds the reader can show its code.\n * 2. Registered at the booth. A register user registers the reader to the\n * store the buyer chose, by its code, while the buyer stands there:\n * the store's plan must include the point of sale and the store must\n * have a reader Location (its address), as for any registration.\n * 3. Paired later with no serial. The buyer registers it by code (or pairs\n * an M2 by Bluetooth, which no server sees) and says \"Mark set up\" on\n * the Hardware card; staff can mark it too.\n *=========================================*/\n\nexport class PosHardwareReaderRefusal extends Error {\n constructor(\n message: string,\n readonly status: number,\n /** A refusal the register answers with a step of its own: `needs-address` asks for the store's address. */\n readonly reason?: 'needs-address',\n ) {\n super(message)\n }\n}\n\n/**\n * A store address typed at the booth, read the way the POS devices card\n * sends it (AGL-4038): each field a trimmed string within the lengths the\n * reader registration keeps, the country as two capitals. Anything that is\n * not an object reads as no address.\n */\nexport function boothStoreAddress(raw: unknown): PosTerminalAddress | null {\n if (!raw || typeof raw !== 'object' || Array.isArray(raw)) return null\n const field = (key: string, max: number) =>\n String((raw as Record<string, unknown>)[key] ?? '')\n .trim()\n .slice(0, max)\n const line2 = field('line2', 200)\n const state = field('state', 100)\n return {\n line1: field('line1', 200),\n ...(line2 ? { line2 } : {}),\n city: field('city', 100),\n ...(state ? { state } : {}),\n postalCode: field('postalCode', 20),\n country: field('country', 2).toUpperCase(),\n }\n}\n\nfunction firestore() {\n return firebaseAdmin.app().firestore()\n}\n\n/** Whether every reader on the order is registered: then it is Set up. */\nfunction everyReaderRegistered(units: readonly PosHardwareUnit[]): boolean {\n return units.length > 0 && units.every((unit) => Boolean(unit.readerId))\n}\n\n/** The order's units with `serial` registered as `readerId` on `hostId`, or null when no unit has it. */\nfunction withRegisteredUnit(\n units: readonly PosHardwareUnit[],\n serial: string,\n readerId: string,\n hostId: string,\n now: number,\n): PosHardwareUnit[] | null {\n const at = units.findIndex((unit) => unit.serialNumber === serial)\n if (at < 0) return null\n if (units[at].readerId === readerId) return [...units]\n return units.map((unit, index) =>\n index === at ? { ...unit, readerId, hostId, registeredAtMs: now } : unit,\n )\n}\n\n/**\n * A reader was just registered to a store: the in-person order that sold it\n * by this serial moves on. Attached to this workspace, or pending (then\n * attached to it now); an order attached to another workspace is left as it\n * is. Returns the orders it changed.\n */\nexport async function matchRegisteredPosHardwareReader(input: {\n hostId: string\n orgId: string\n uid: string\n readerId: string\n serialNumber: string\n now?: number\n}): Promise<{ matched: string[] }> {\n const serial = normalizePosHardwareSerial(input.serialNumber)\n if (!serial || !input.orgId) return { matched: [] }\n const found = await firestore()\n .collectionGroup(POS_HARDWARE_ORDERS_COLLECTION)\n .where('serialNumbers', 'array-contains', serial)\n .limit(5)\n .get()\n const matched: string[] = []\n for (const doc of found.docs as unknown as Array<{ id: string; data: () => PosHardwareOrder }>) {\n const orderId = String(doc.id)\n const now = input.now ?? Date.now()\n const changed = await firestore().runTransaction(async (transaction: any) => {\n const saleRef = posHardwareSaleRef(orderId)\n const sale = await transaction.get(saleRef)\n const fromOrgId = String(sale.get('orgId') ?? doc.data().orgId ?? '')\n const fromRef = hardwareOrdersRef(fromOrgId).doc(orderId)\n const from = await transaction.get(fromRef)\n if (!from.exists) return false\n const before = from.data() as PosHardwareOrder\n if (before.source !== 'in_person' || before.status === 'canceled' || before.status === 'refunded') return false\n const pending = before.attachment?.state !== 'attached'\n if (!pending && fromOrgId !== input.orgId) return false\n const units = withRegisteredUnit(before.units ?? [], serial, input.readerId, input.hostId, now)\n if (!units) return false\n const done = everyReaderRegistered(units)\n const after: PosHardwareOrder = {\n ...before,\n ...(pending\n ? {\n orgId: input.orgId,\n hostId: input.hostId,\n createdBy: input.uid,\n attachment: {\n ...posHardwareAttachmentOf({\n uid: input.uid,\n orgId: input.orgId,\n hostId: input.hostId,\n email: before.attachment?.email ?? null,\n attachedBy: '',\n attachedAtMs: now,\n // What the register typed of the buyer stays (AGL-4038).\n name: before.attachment?.name ?? null,\n address: before.attachment?.address ?? null,\n }),\n },\n }\n : { hostId: before.hostId || input.hostId }),\n units,\n ...(done && before.status === 'delivered' ? { status: 'registered' as const, registeredAtMs: now } : {}),\n updatedAtMs: now,\n }\n if (after.orgId === fromOrgId) {\n transaction.set(fromRef, after)\n } else {\n transaction.create(hardwareOrdersRef(after.orgId).doc(orderId), after)\n transaction.delete(fromRef)\n }\n transaction.set(saleRef, posHardwareSaleRecord(orderId, after), posHardwareSaleSetOptions(after))\n return true\n })\n if (changed) matched.push(orderId)\n }\n // The buyer's address for the reseller's records, from the store the\n // reader is now on, where the sale has none yet.\n for (const orderId of matched) await fillPosHardwareBuyerAddress({ orgId: input.orgId, orderId })\n return { matched }\n}\n\n/**\n * The serial numbers of a sale's readers, taken at the sale: on the hardware\n * order once it is recorded, or on the register sale until it is (the\n * recorder takes them from there). Each is normalized, none may repeat, and\n * none may already be on another sale.\n */\nexport async function recordPosHardwareSerials(input: {\n config: PosHardwareInPersonConfig\n registerOrderId?: string | null\n orderId?: string | null\n serials: unknown\n}): Promise<{ orderId: string; serials: string[]; recorded: boolean }> {\n const serials = (Array.isArray(input.serials) ? input.serials : [])\n .map(normalizePosHardwareSerial)\n .filter(Boolean)\n if (new Set(serials).size !== serials.length) {\n throw new PosHardwareReaderRefusal('A serial number is listed twice.', 400)\n }\n const registerOrderId = String(input.registerOrderId ?? '')\n const orderId = registerOrderId\n ? posHardwareInPersonOrderId(input.config.sellerHostId, registerOrderId)\n : String(input.orderId ?? '')\n if (!POS_HARDWARE_ORDER_ID.test(orderId)) throw new PosHardwareReaderRefusal('Name the sale.', 400)\n for (const serial of serials) {\n const elsewhere = await firestore()\n .collectionGroup(POS_HARDWARE_ORDERS_COLLECTION)\n .where('serialNumbers', 'array-contains', serial)\n .limit(2)\n .get()\n if (elsewhere.docs.some((doc: any) => String(doc.id) !== orderId)) {\n throw new PosHardwareReaderRefusal(`Serial number ${serial} is already on another sale.`, 409)\n }\n }\n const saleRef = posHardwareSaleRef(orderId)\n return firestore().runTransaction(async (transaction: any) => {\n const sale = await transaction.get(saleRef)\n if (!sale.exists) {\n if (!registerOrderId) throw new PosHardwareReaderRefusal('No such card reader sale.', 404)\n const registerRef = firestore()\n .collection('hosts')\n .doc(input.config.sellerHostId)\n .collection('orders')\n .doc(registerOrderId)\n const register = await transaction.get(registerRef)\n const status = String(register.get('status') ?? '')\n if (!register.exists || (status !== 'pending' && status !== 'paid')) {\n throw new PosHardwareReaderRefusal('No open or paid sale on this register by that number.', 404)\n }\n transaction.set(registerRef, { hardwareSerials: serials }, { merge: true })\n return { orderId, serials, recorded: false }\n }\n const ref = hardwareOrdersRef(String(sale.get('orgId') ?? '')).doc(orderId)\n const snapshot = await transaction.get(ref)\n if (!snapshot.exists) throw new PosHardwareReaderRefusal('No such card reader sale.', 404)\n const before = snapshot.data() as PosHardwareOrder\n if (before.source !== 'in_person' || before.posSale?.hostId !== input.config.sellerHostId) {\n throw new PosHardwareReaderRefusal('Only a card reader sold in person here takes serial numbers.', 409)\n }\n const units = before.units ?? []\n if (serials.length > units.length) {\n throw new PosHardwareReaderRefusal(`This sale has ${units.length} reader${units.length === 1 ? '' : 's'}.`, 400)\n }\n // Serials fill the readers not yet set up, in order; a registered one keeps its own.\n const open = units.map((unit, index) => ({ unit, index })).filter(({ unit }) => !unit.readerId)\n const next = [...units]\n open.forEach(({ index }, position) => {\n next[index] = { ...units[index], serialNumber: serials[position] ?? null }\n })\n transaction.update(ref, {\n units: next,\n serialNumbers: next.flatMap((unit) => (unit.serialNumber ? [unit.serialNumber] : [])),\n updatedAtMs: Date.now(),\n })\n return { orderId, serials, recorded: true }\n })\n}\n\n/** An in-person order of this workspace, for a change by its own people. */\nfunction workspaceOrder(orgId: string, orderId: string) {\n if (!POS_HARDWARE_ORDER_ID.test(orderId)) throw new PosHardwareReaderRefusal('No such order.', 404)\n return { ref: hardwareOrdersRef(orgId).doc(orderId) }\n}\n\n/**\n * The store a reader bought in person is for, chosen at setup by someone\n * who may set up devices there. The store must be the workspace's.\n */\nexport async function choosePosHardwareStore(input: {\n orgId: string\n orderId: string\n hostId: string\n}): Promise<PosHardwareOrder> {\n const { ref } = workspaceOrder(input.orgId, input.orderId)\n const chosen: PosHardwareOrder = await firestore().runTransaction(async (transaction: any) => {\n const snapshot = await transaction.get(ref)\n if (!snapshot.exists) throw new PosHardwareReaderRefusal('No such order.', 404)\n const before = snapshot.data() as PosHardwareOrder\n if (before.source !== 'in_person') throw new PosHardwareReaderRefusal('Only a reader bought in person waits for a store.', 409)\n const after: PosHardwareOrder = {\n ...before,\n hostId: input.hostId,\n ...(before.attachment ? { attachment: { ...before.attachment, hostId: input.hostId } } : {}),\n updatedAtMs: Date.now(),\n }\n transaction.set(ref, after)\n transaction.set(posHardwareSaleRef(input.orderId), posHardwareSaleRecord(input.orderId, after), posHardwareSaleSetOptions(after))\n return after\n })\n await fillPosHardwareBuyerAddress({ orgId: input.orgId, orderId: input.orderId })\n return chosen\n}\n\n/**\n * \"Mark set up\": a reader bought in person was paired by its code or by\n * Bluetooth with no serial taken at the sale, so nothing matched it. The\n * workspace says so, and the order moves to Set up.\n */\nexport async function markPosHardwareSetUp(input: { orgId: string; orderId: string }): Promise<PosHardwareOrder> {\n const { ref } = workspaceOrder(input.orgId, input.orderId)\n return firestore().runTransaction(async (transaction: any) => {\n const snapshot = await transaction.get(ref)\n if (!snapshot.exists) throw new PosHardwareReaderRefusal('No such order.', 404)\n const before = snapshot.data() as PosHardwareOrder\n if (before.source !== 'in_person') throw new PosHardwareReaderRefusal('Only a reader bought in person is marked set up here.', 409)\n if (before.status === 'registered') return before\n if (before.status !== 'delivered') throw new PosHardwareReaderRefusal('This order can no longer be set up.', 409)\n const now = Date.now()\n const after: PosHardwareOrder = { ...before, status: 'registered', registeredAtMs: now, updatedAtMs: now }\n transaction.set(ref, after)\n transaction.set(posHardwareSaleRef(input.orderId), posHardwareSaleRecord(input.orderId, after), posHardwareSaleSetOptions(after))\n return after\n })\n}\n\n/** A store's readiness for a reader: its plan and its Location. */\nexport async function posHardwareStoreReadiness(hostId: string): Promise<{ posPlan: boolean; hasLocation: boolean }> {\n const [owner, config] = await Promise.all([\n getOrgForHost(hostId).catch(() => null),\n firestore().collection('hosts').doc(hostId).collection('terminal').doc('config').get(),\n ])\n return {\n posPlan: Aglyn.checkEntitlement(owner?.org as never, 'pos'),\n hasLocation: Boolean(config.exists && config.get('stripeLocationId')),\n }\n}\n\n/**\n * Registers a reader sold at the booth to the buyer's chosen store, by the\n * code it shows, while the buyer is there (AGL-4038). The sale must be\n * attached to them with a store chosen, and the store's plan must include\n * the point of sale.\n *\n * A store with no reader Location yet needs its address, which is where\n * Stripe sets the reader up for. Booth staff may type it with the buyer\n * (`address`): it goes exactly where the store's POS devices card would put\n * it, through the same registration, which creates the store's Location from\n * it and records it on the store's terminal settings. Without one the booth\n * refuses with `needs-address`, and the buyer can add it later on that card.\n * A store that already has its Location keeps it: an address sent for it is\n * never used.\n */\nexport async function registerPosHardwareAtBooth(input: {\n config: PosHardwareInPersonConfig\n orderId: string\n registrationCode: unknown\n label?: unknown\n address?: unknown\n uid: string\n}): Promise<{ order: PosHardwareOrder; readerId: string; storeAddress: PosTerminalAddress | null }> {\n if (!POS_HARDWARE_ORDER_ID.test(input.orderId)) throw new PosHardwareReaderRefusal('Name the sale.', 400)\n const sale = await posHardwareSaleRef(input.orderId).get()\n if (!sale.exists) {\n throw new PosHardwareReaderRefusal('Take payment for the sale first, then register its reader.', 409)\n }\n const orgId = String(sale.get('orgId') ?? '')\n const snapshot = await hardwareOrdersRef(orgId).doc(input.orderId).get()\n const order = snapshot.data() as PosHardwareOrder | undefined\n if (!order || order.source !== 'in_person' || order.posSale?.hostId !== input.config.sellerHostId) {\n throw new PosHardwareReaderRefusal('No such card reader sale.', 404)\n }\n if (order.attachment?.state !== 'attached' || !order.attachment.orgId) {\n throw new PosHardwareReaderRefusal('Attach the sale to the buyer first.', 409)\n }\n const hostId = order.hostId\n if (!hostId) throw new PosHardwareReaderRefusal('Choose the buyer’s store first.', 409)\n const readiness = await posHardwareStoreReadiness(hostId)\n if (!readiness.posPlan) {\n throw new PosHardwareReaderRefusal(\n 'Their workspace needs a plan with the point of sale before a reader can be added. They can add it, then set the reader up themselves.',\n 409,\n )\n }\n // The store's address, only for a store with no Location: one that has\n // its Location keeps it, whatever was sent.\n const storeAddress = readiness.hasLocation ? null : boothStoreAddress(input.address)\n if (!readiness.hasLocation) {\n if (!storeAddress) {\n throw new PosHardwareReaderRefusal(\n 'Their store has no address for card readers yet. Enter the store’s address to register the reader now, or they add it when they set the reader up on the POS devices card.',\n 409,\n 'needs-address',\n )\n }\n const problem = (await import('./pos-terminal')).posTerminalAddressProblem(storeAddress)\n if (problem) throw new PosHardwareReaderRefusal(problem, 400, 'needs-address')\n }\n const { registerPosTerminalReader } = await import('./pos-readers')\n const registered = await registerPosTerminalReader({\n hostId,\n orgId,\n uid: input.uid,\n registrationCode: input.registrationCode,\n label: input.label,\n ...(storeAddress ? { address: storeAddress } : {}),\n })\n if ('error' in registered) throw new PosHardwareReaderRefusal(registered.error, registered.status)\n // A reader with a serial matched its unit as it registered. One without\n // (or not on the sale) takes the first reader of the sale not set up yet.\n const ref = hardwareOrdersRef(orgId).doc(input.orderId)\n const after = await firestore().runTransaction(async (transaction: any) => {\n const now = (await transaction.get(ref)).data() as PosHardwareOrder\n const units = now.units ?? []\n if (units.some((unit) => unit.readerId === registered.id)) return now\n const at = units.findIndex(\n (unit) => !unit.readerId && posHardwareSku(unit.sku)?.kind === 'reader',\n )\n if (at < 0) return now\n const stamp = Date.now()\n const next = units.map((unit, index) =>\n index === at\n ? {\n ...unit,\n serialNumber: unit.serialNumber ?? (registered.reader.serialNumber ? normalizePosHardwareSerial(registered.reader.serialNumber) : null),\n readerId: registered.id,\n hostId,\n registeredAtMs: stamp,\n }\n : unit,\n )\n const done = everyReaderRegistered(next)\n const updated: PosHardwareOrder = {\n ...now,\n units: next,\n serialNumbers: next.flatMap((unit) => (unit.serialNumber ? [unit.serialNumber] : [])),\n ...(done && now.status === 'delivered' ? { status: 'registered' as const, registeredAtMs: stamp } : {}),\n updatedAtMs: stamp,\n }\n transaction.set(ref, updated)\n transaction.set(posHardwareSaleRef(input.orderId), posHardwareSaleRecord(input.orderId, updated), posHardwareSaleSetOptions(updated))\n return updated\n })\n await fillPosHardwareBuyerAddress({ orgId, orderId: input.orderId })\n return { order: after, readerId: registered.id, storeAddress }\n}\n"],"names":["Aglyn","firebaseAdmin","getOrgForHost","normalizePosHardwareSerial","POS_HARDWARE_ORDER_ID","POS_HARDWARE_ORDERS_COLLECTION","posHardwareSaleRecord","posHardwareSaleSetOptions","posHardwareSku","posHardwareAttachmentOf","fillPosHardwareBuyerAddress","hardwareOrdersRef","posHardwareInPersonOrderId","posHardwareSaleRef","PosHardwareReaderRefusal","Error","message","status","reason","boothStoreAddress","raw","Array","isArray","field","key","max","String","trim","slice","line2","state","line1","city","postalCode","country","toUpperCase","firestore","app","everyReaderRegistered","units","length","every","unit","Boolean","readerId","withRegisteredUnit","serial","hostId","now","at","findIndex","serialNumber","map","index","registeredAtMs","matchRegisteredPosHardwareReader","input","orgId","matched","found","collectionGroup","where","limit","get","doc","docs","orderId","id","Date","changed","runTransaction","transaction","sale","before","saleRef","fromOrgId","data","fromRef","from","exists","source","pending","attachment","done","after","createdBy","uid","email","attachedBy","attachedAtMs","name","address","updatedAtMs","set","create","delete","push","recordPosHardwareSerials","serials","filter","Set","size","registerOrderId","config","sellerHostId","test","elsewhere","some","register","registerRef","collection","hardwareSerials","merge","recorded","ref","snapshot","posSale","open","next","forEach","position","update","serialNumbers","flatMap","workspaceOrder","choosePosHardwareStore","chosen","markPosHardwareSetUp","posHardwareStoreReadiness","owner","Promise","all","catch","posPlan","checkEntitlement","org","hasLocation","registerPosHardwareAtBooth","order","readiness","storeAddress","problem","posTerminalAddressProblem","registerPosTerminalReader","registered","registrationCode","label","error","sku","kind","stamp","reader","updated"],"mappings":"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"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Aglyn LLC
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
import { type PosHardwareInPersonConfig, type PosHardwareOrder, type PosHardwareRefund } from '../model/pos-hardware';
|
|
18
|
+
export declare class PosHardwareReturnRefusal extends Error {
|
|
19
|
+
readonly status: number;
|
|
20
|
+
constructor(message: string, status: number);
|
|
21
|
+
}
|
|
22
|
+
/** The order with one more refund on it, or as it was when the key was already used. */
|
|
23
|
+
export declare function withPosHardwareRefund(order: PosHardwareOrder, refund: PosHardwareRefund): PosHardwareOrder;
|
|
24
|
+
/**
|
|
25
|
+
* A return at the selling store's register (way 1): the hardware's share of
|
|
26
|
+
* what the return refunded, by the lines it took back. Never throws into the
|
|
27
|
+
* return; the money has already gone back.
|
|
28
|
+
*/
|
|
29
|
+
export declare function recordRegisterHardwareReturn(input: {
|
|
30
|
+
config: PosHardwareInPersonConfig | null;
|
|
31
|
+
hostId: string;
|
|
32
|
+
registerOrderId: string;
|
|
33
|
+
returnId: string;
|
|
34
|
+
refundCents: number;
|
|
35
|
+
lines: ReadonlyArray<{
|
|
36
|
+
index: number;
|
|
37
|
+
quantity: number;
|
|
38
|
+
refundCents: number;
|
|
39
|
+
}>;
|
|
40
|
+
now?: number;
|
|
41
|
+
}): Promise<PosHardwareOrder | null>;
|
|
42
|
+
/**
|
|
43
|
+
* Refunds what is left of an in-person order from the staff page (way 2),
|
|
44
|
+
* through the register sale's own card refund. Refused for a sale paid by
|
|
45
|
+
* anything Stripe cannot refund, which goes back at the register instead.
|
|
46
|
+
*/
|
|
47
|
+
export declare function refundInPersonPosHardwareOrder(input: {
|
|
48
|
+
config: PosHardwareInPersonConfig | null;
|
|
49
|
+
orgId: string;
|
|
50
|
+
orderId: string;
|
|
51
|
+
actorUid: string;
|
|
52
|
+
now?: number;
|
|
53
|
+
}): Promise<{
|
|
54
|
+
before: PosHardwareOrder;
|
|
55
|
+
order: PosHardwareOrder;
|
|
56
|
+
}>;
|
|
57
|
+
/**
|
|
58
|
+
* The statuses an online order may be asked back in (AGL-4038): once it has
|
|
59
|
+
* shipped. Before that, changing or canceling it is for support, who cancel
|
|
60
|
+
* and refund it in full from the staff page.
|
|
61
|
+
*/
|
|
62
|
+
export declare const POS_HARDWARE_ONLINE_RETURNABLE: readonly PosHardwareOrder['status'][];
|
|
63
|
+
/**
|
|
64
|
+
* The buyer asks to return an order (way 3), from their own purchase
|
|
65
|
+
* history: once while a request is open, with a reason. Staff are alerted.
|
|
66
|
+
* An in-person order any time before it is refunded; an online one once it
|
|
67
|
+
* has shipped (AGL-4038), which staff refund as a return
|
|
68
|
+
* ({@link refundReturnedOnlinePosHardwareOrder}) or decline. Never for an
|
|
69
|
+
* order already refunded.
|
|
70
|
+
*/
|
|
71
|
+
export declare function requestPosHardwareReturn(input: {
|
|
72
|
+
orgId: string;
|
|
73
|
+
orderId: string;
|
|
74
|
+
uid: string;
|
|
75
|
+
reason: unknown;
|
|
76
|
+
now?: number;
|
|
77
|
+
}): Promise<PosHardwareOrder>;
|
|
78
|
+
/** Staff decline an open return request, with a note for the buyer. */
|
|
79
|
+
export declare function declinePosHardwareReturn(input: {
|
|
80
|
+
orgId: string;
|
|
81
|
+
orderId: string;
|
|
82
|
+
actorUid: string;
|
|
83
|
+
note: unknown;
|
|
84
|
+
now?: number;
|
|
85
|
+
}): Promise<{
|
|
86
|
+
before: PosHardwareOrder;
|
|
87
|
+
order: PosHardwareOrder;
|
|
88
|
+
}>;
|
|
89
|
+
/** The idempotency key of an online return's refund: the order and the amount. */
|
|
90
|
+
export declare function posHardwareReturnRefundKey(orderId: string, cents: number): string;
|
|
91
|
+
/** What an online return gives back: the items and their tax, never the original shipping. */
|
|
92
|
+
export declare function posHardwareReturnRefundableCents(order: Pick<PosHardwareOrder, 'totalCents' | 'shipping'>): number;
|
|
93
|
+
/**
|
|
94
|
+
* Staff refund an ONLINE order the buyer sent back (AGL-4038), from the
|
|
95
|
+
* staff Hardware orders page, once its return was requested: the price of
|
|
96
|
+
* the items and the tax on them, less any restocking fee Stripe charged for
|
|
97
|
+
* the return, to the card it was paid with on the platform's own account.
|
|
98
|
+
* The original shipping is not refunded, under the hardware terms of sale.
|
|
99
|
+
*
|
|
100
|
+
* Claimed first, as a cancel is (`refundRequestedAtMs`), so two presses make
|
|
101
|
+
* one refund; the Stripe key names the order and the amount, so a retry of
|
|
102
|
+
* the same refund is the same refund. The order says Refunded, its return
|
|
103
|
+
* request Refunded, and the refund is written once by its key, with the
|
|
104
|
+
* sale record in the same transaction.
|
|
105
|
+
*/
|
|
106
|
+
export declare function refundReturnedOnlinePosHardwareOrder(input: {
|
|
107
|
+
orgId: string;
|
|
108
|
+
orderId: string;
|
|
109
|
+
actorUid: string;
|
|
110
|
+
restockingFeeCents: unknown;
|
|
111
|
+
now?: () => number;
|
|
112
|
+
}): Promise<{
|
|
113
|
+
before: PosHardwareOrder;
|
|
114
|
+
order: PosHardwareOrder;
|
|
115
|
+
cents: number;
|
|
116
|
+
}>;
|