@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
|
@@ -16,8 +16,9 @@ import { _ as _extends } from "@swc/helpers/_/_extends";
|
|
|
16
16
|
* limitations under the License.
|
|
17
17
|
*/ import { resolveSiteTimeZone } from "@aglyn/aglyn/app-utils/collection-entry-date";
|
|
18
18
|
import { zonedDayKey } from "@aglyn/shared-util-timestamp/zoned-time";
|
|
19
|
-
import { changedCheckInCustomerFields, checkInCustomerKey, checkInCustomers, checkInDayCsv, checkInDayMs, checkInDayTotals, checkInSearchToken, CHECK_IN_BATCH_MAX, CHECK_IN_DAY_CEILING, CHECK_IN_SEARCH_CUSTOMERS, CHECK_IN_SEARCH_ROWS, dueCheckInsForOrder, dueCheckInsForReservation, newCheckInDocument, normalizeWristband, sortCheckInRows } from "../model/commerce-check-in.js";
|
|
19
|
+
import { changedCheckInCustomerFields, checkInCustomerKey, checkInCustomers, checkInDayCsv, checkInDayMs, checkInDayTotals, checkInSearchToken, CHECK_IN_BATCH_MAX, CHECK_IN_DAY_CEILING, CHECK_IN_SEARCH_CUSTOMERS, CHECK_IN_SEARCH_ROWS, dueCheckInsForOrder, dueCheckInsForReservation, newCheckInDocument, normalizeWristband, rainCheckProblem, sortCheckInRows, STAY_CHECK_IN_SETTINGS_DOC, storedStayCheckIns } from "../model/commerce-check-in.js";
|
|
20
20
|
import { posDayReportRange } from "../model/commerce-pos-day-report.js";
|
|
21
|
+
import { readStayCheckInMode as readStayCheckInModeValue, stayChecksInPerGuest, STAY_CHECK_IN_MODES } from "../model/commerce-reservations.js";
|
|
21
22
|
import { authorizePosOps, defaultPosOpsDeps, posOpsBody, posOpsCleanId, posOpsIdempotencyKey, resolvePosCashier } from "./pos-ops-gate.js";
|
|
22
23
|
import { onPosSaleCompleted } from "./pos-sale.js";
|
|
23
24
|
/*==========================================
|
|
@@ -28,6 +29,9 @@ import { onPosSaleCompleted } from "./pos-sale.js";
|
|
|
28
29
|
* POST { hostId, action: 'check_in', checkIns: [{ id, wristband? }], registerId?, cashierAssertion? }
|
|
29
30
|
* POST { hostId, action: 'undo', id }
|
|
30
31
|
* POST { hostId, action: 'wristband', id, wristband }
|
|
32
|
+
* POST { hostId, action: 'stay_mode', mode: 'resource' | 'stay' | 'guest', day? }
|
|
33
|
+
* POST { hostId, action: 'rain_check', id, kind: 'open' | 'date', day? }
|
|
34
|
+
* POST { hostId, action: 'undo_rain_check', id }
|
|
31
35
|
* GET ?hostId=…&day=YYYY-MM-DD[&format=csv] the day's list
|
|
32
36
|
*
|
|
33
37
|
* `day` is today in the site's time zone when absent. Who may use it is who
|
|
@@ -42,11 +46,21 @@ import { onPosSaleCompleted } from "./pos-sale.js";
|
|
|
42
46
|
*
|
|
43
47
|
* - a register sale, the moment it completes (the sale-completed seam);
|
|
44
48
|
* - and every source, by {@link reconcileCheckInDay}: the day's orders
|
|
45
|
-
* (`createdAtMs` in the day, the automatic single-field index)
|
|
46
|
-
*
|
|
47
|
-
*
|
|
48
|
-
*
|
|
49
|
-
* search
|
|
49
|
+
* (`createdAtMs` in the day, the automatic single-field index), the
|
|
50
|
+
* orders bought on another day for this one (`useDayKeys array-contains`
|
|
51
|
+
* the day, likewise automatic) and the stays that began within a year
|
|
52
|
+
* before it (`checkInDayMs`, likewise), at most every
|
|
53
|
+
* {@link CHECK_IN_RECONCILE_MS} per day, on the next search or list. So
|
|
54
|
+
* an online order paid a minute ago is found on the next search after
|
|
55
|
+
* that.
|
|
56
|
+
*
|
|
57
|
+
* RAIN CHECKS (`rain_check`, `undo_rain_check`) move one person's pass to a
|
|
58
|
+
* later day, or leave it open for any later day; an open one is found on a
|
|
59
|
+
* later day by `rainCheckOpen == true` and `dayKey <` the day, beside the
|
|
60
|
+
* day's own (indexes: rainCheckOpen, searchTokens, dayKey; and
|
|
61
|
+
* rainCheckOpen, customerKey, dayKey). Checking in an open one claims it on
|
|
62
|
+
* the day it is used. Each is a transaction on the one document, gated as
|
|
63
|
+
* check-in is.
|
|
50
64
|
*
|
|
51
65
|
* Reconciling only ever CREATES what is missing, refreshes a waiting
|
|
52
66
|
* person's name and address, and removes a waiting person whose order was
|
|
@@ -85,6 +99,12 @@ const queryValue = (value)=>{
|
|
|
85
99
|
timeZone
|
|
86
100
|
};
|
|
87
101
|
}
|
|
102
|
+
// Where the store's stay check-in control lives, beside the rules that read it.
|
|
103
|
+
export { STAY_CHECK_IN_SETTINGS_DOC };
|
|
104
|
+
/** The store's control for how stays are checked in; each resource's own setting when unset. */ export async function readStayCheckInMode(hostRef) {
|
|
105
|
+
const snapshot = await hostRef.collection('settings').doc(STAY_CHECK_IN_SETTINGS_DOC).get();
|
|
106
|
+
return readStayCheckInModeValue(snapshot.exists ? snapshot.get('stays') : undefined);
|
|
107
|
+
}
|
|
88
108
|
/** Reads documents by reference, a few hundred at a time. */ async function readAll(firestore, refs) {
|
|
89
109
|
const out = [];
|
|
90
110
|
for(let at = 0; at < refs.length; at += 300){
|
|
@@ -156,13 +176,24 @@ const isAlreadyExists = (error)=>{
|
|
|
156
176
|
}
|
|
157
177
|
const dayMs = (_checkInDayMs = checkInDayMs(day.dayKey)) != null ? _checkInDayMs : 0;
|
|
158
178
|
const checkIns = hostRef.collection('checkIns');
|
|
159
|
-
const [ordersSnapshot, staysSnapshot, existingSnapshot] = await Promise.all([
|
|
179
|
+
const [ordersSnapshot, forTheDaySnapshot, staysSnapshot, existingSnapshot] = await Promise.all([
|
|
160
180
|
hostRef.collection('orders').where('createdAtMs', '>=', day.startMs).where('createdAtMs', '<', day.endMs).orderBy('createdAtMs').limit(CHECK_IN_DAY_CEILING + 1).get(),
|
|
181
|
+
// Passes bought on another day for this one: the days the buyer chose,
|
|
182
|
+
// stamped on the order by every creator (`withOrderListFields`).
|
|
183
|
+
hostRef.collection('orders').where('useDayKeys', 'array-contains', day.dayKey).limit(CHECK_IN_DAY_CEILING + 1).get(),
|
|
161
184
|
hostRef.collection('reservations').where('checkInDayMs', '<=', dayMs).where('checkInDayMs', '>', dayMs - STAY_LOOKBACK_MS).orderBy('checkInDayMs', 'desc').limit(CHECK_IN_DAY_CEILING + 1).get(),
|
|
162
185
|
checkIns.where('dayKey', '==', day.dayKey).limit(CHECK_IN_DAY_CEILING + 1).get()
|
|
163
186
|
]);
|
|
164
|
-
const truncated = ordersSnapshot.docs.length > CHECK_IN_DAY_CEILING || staysSnapshot.docs.length > CHECK_IN_DAY_CEILING || existingSnapshot.docs.length > CHECK_IN_DAY_CEILING;
|
|
165
|
-
const orders =
|
|
187
|
+
const truncated = ordersSnapshot.docs.length > CHECK_IN_DAY_CEILING || forTheDaySnapshot.docs.length > CHECK_IN_DAY_CEILING || staysSnapshot.docs.length > CHECK_IN_DAY_CEILING || existingSnapshot.docs.length > CHECK_IN_DAY_CEILING;
|
|
188
|
+
const orders = [
|
|
189
|
+
...new Map([
|
|
190
|
+
...ordersSnapshot.docs.slice(0, CHECK_IN_DAY_CEILING),
|
|
191
|
+
...forTheDaySnapshot.docs.slice(0, CHECK_IN_DAY_CEILING)
|
|
192
|
+
].map((doc)=>[
|
|
193
|
+
doc.id,
|
|
194
|
+
doc
|
|
195
|
+
])).values()
|
|
196
|
+
];
|
|
166
197
|
const stays = staysSnapshot.docs.slice(0, CHECK_IN_DAY_CEILING);
|
|
167
198
|
const products = await productsFor(deps, hostRef, orders.map((doc)=>doc.data()));
|
|
168
199
|
const resourceIds = [
|
|
@@ -172,33 +203,56 @@ const isAlreadyExists = (error)=>{
|
|
|
172
203
|
}).filter((id)=>posOpsCleanId(id)))
|
|
173
204
|
];
|
|
174
205
|
const resourceNames = new Map();
|
|
206
|
+
const perGuestResources = new Set();
|
|
207
|
+
// How stays are checked in (AGL-4043): the store's control, else each
|
|
208
|
+
// resource's own setting. Read only on a day with stays to check in.
|
|
209
|
+
const stayMode = stays.length ? await readStayCheckInMode(hostRef) : 'resource';
|
|
175
210
|
for (const snapshot of (await readAll(deps.firestore(), resourceIds.map((id)=>hostRef.collection('resources').doc(id))))){
|
|
176
211
|
var _snapshot_get;
|
|
177
|
-
if (snapshot.exists)
|
|
212
|
+
if (!snapshot.exists) continue;
|
|
213
|
+
resourceNames.set(snapshot.id, String((_snapshot_get = snapshot.get('name')) != null ? _snapshot_get : ''));
|
|
214
|
+
if (stayChecksInPerGuest(snapshot.data(), stayMode)) perGuestResources.add(snapshot.id);
|
|
178
215
|
}
|
|
179
216
|
const due = new Map();
|
|
217
|
+
// Every unit the orders read still owe, on whatever day: a pass moved here
|
|
218
|
+
// or away by a rain check, or bought for another day, is owed but not due
|
|
219
|
+
// today, and a waiting one is removed only when its order no longer owes it.
|
|
220
|
+
const owed = new Set();
|
|
180
221
|
const readOrders = new Set();
|
|
181
222
|
const readStays = new Set();
|
|
182
223
|
for (const doc of orders){
|
|
224
|
+
var _order_createdAtMs;
|
|
183
225
|
readOrders.add(doc.id);
|
|
226
|
+
const order = doc.data();
|
|
184
227
|
for (const [id, entry] of dueCheckInsForOrder({
|
|
185
228
|
orderId: doc.id,
|
|
186
|
-
order
|
|
229
|
+
order,
|
|
187
230
|
products,
|
|
188
|
-
|
|
231
|
+
// The day it was bought, on the site's calendar: the day a line the
|
|
232
|
+
// buyer chose no day for is due.
|
|
233
|
+
purchaseDayKey: zonedDayKey(Number((_order_createdAtMs = order.createdAtMs) != null ? _order_createdAtMs : day.startMs), day.timeZone)
|
|
189
234
|
})){
|
|
190
|
-
|
|
235
|
+
owed.add(id);
|
|
236
|
+
if (entry.dayKey === day.dayKey) due.set(id, entry);
|
|
191
237
|
}
|
|
192
238
|
}
|
|
239
|
+
// Each stay's check-ins already stored on the day: a guest checked in keeps
|
|
240
|
+
// their place when the stay's count comes down (`stayCheckInPlan`).
|
|
241
|
+
const storedByStay = storedStayCheckIns(existingSnapshot.docs.slice(0, CHECK_IN_DAY_CEILING));
|
|
193
242
|
for (const doc of stays){
|
|
194
|
-
var _resourceNames_get,
|
|
243
|
+
var _doc_get, _resourceNames_get, _storedByStay_get;
|
|
195
244
|
readStays.add(doc.id);
|
|
245
|
+
const resourceId = String((_doc_get = doc.get('resourceId')) != null ? _doc_get : '');
|
|
196
246
|
for (const [id, entry] of dueCheckInsForReservation({
|
|
197
247
|
reservationId: doc.id,
|
|
198
248
|
reservation: doc.data(),
|
|
199
|
-
resourceName: (_resourceNames_get = resourceNames.get(
|
|
200
|
-
dayKey: day.dayKey
|
|
249
|
+
resourceName: (_resourceNames_get = resourceNames.get(resourceId)) != null ? _resourceNames_get : null,
|
|
250
|
+
dayKey: day.dayKey,
|
|
251
|
+
// A resource gone since the stay was booked is checked in once per stay.
|
|
252
|
+
perGuest: perGuestResources.has(resourceId) || stayMode === 'guest' && !resourceNames.has(resourceId),
|
|
253
|
+
existing: (_storedByStay_get = storedByStay.get(doc.id)) != null ? _storedByStay_get : []
|
|
201
254
|
})){
|
|
255
|
+
owed.add(id);
|
|
202
256
|
due.set(id, entry);
|
|
203
257
|
}
|
|
204
258
|
}
|
|
@@ -213,7 +267,7 @@ const isAlreadyExists = (error)=>{
|
|
|
213
267
|
const wanted = due.get(doc.id);
|
|
214
268
|
if (!wanted) {
|
|
215
269
|
const sourceRead = stored.source === 'order' && stored.orderId && readOrders.has(stored.orderId) || stored.source === 'reservation' && stored.reservationId && readStays.has(stored.reservationId);
|
|
216
|
-
return sourceRead ? [
|
|
270
|
+
return sourceRead && !owed.has(doc.id) ? [
|
|
217
271
|
{
|
|
218
272
|
ref: doc.ref,
|
|
219
273
|
patch: null
|
|
@@ -272,12 +326,12 @@ const isAlreadyExists = (error)=>{
|
|
|
272
326
|
deps.orgForHost(hostId)
|
|
273
327
|
]);
|
|
274
328
|
const timeZone = resolveSiteTimeZone((_ref = owner == null ? void 0 : owner.org) != null ? _ref : null, (_host_data = host.data()) != null ? _host_data : null);
|
|
275
|
-
const
|
|
329
|
+
const purchaseDayKey = zonedDayKey(Number((_event_order_createdAtMs = event.order.createdAtMs) != null ? _event_order_createdAtMs : deps.now()), timeZone);
|
|
276
330
|
const due = dueCheckInsForOrder({
|
|
277
331
|
orderId,
|
|
278
332
|
order: event.order,
|
|
279
333
|
products,
|
|
280
|
-
|
|
334
|
+
purchaseDayKey
|
|
281
335
|
});
|
|
282
336
|
if (!due.size) return 0;
|
|
283
337
|
return createMissing(hostRef.collection('checkIns'), due, new Set(), deps.now());
|
|
@@ -299,6 +353,22 @@ let subscribed = false;
|
|
|
299
353
|
*=========================================*/ const rowOf = (doc)=>_extends({}, doc.data(), {
|
|
300
354
|
id: doc.id
|
|
301
355
|
});
|
|
356
|
+
/**
|
|
357
|
+
* The open rain checks from days before `dayKey` that also match `field`:
|
|
358
|
+
* passes good on any later day, which a later day's search and customer
|
|
359
|
+
* lookup offer beside the day's own (`rainCheckOpen`, the field, `dayKey`).
|
|
360
|
+
*/ function openRainChecks(checkIns, dayKey, field, ceiling) {
|
|
361
|
+
const open = checkIns.where('rainCheckOpen', '==', true);
|
|
362
|
+
const matched = field.name === 'searchTokens' ? open.where('searchTokens', 'array-contains', field.token) : open.where('customerKey', '==', field.key);
|
|
363
|
+
return matched.where('dayKey', '<', dayKey).limit(ceiling).get();
|
|
364
|
+
}
|
|
365
|
+
/** The rows of several snapshots, each once. */ function uniqueRows(...snapshots) {
|
|
366
|
+
const rows = new Map();
|
|
367
|
+
for (const snapshot of snapshots)for (const doc of snapshot.docs)rows.set(doc.id, rowOf(doc));
|
|
368
|
+
return [
|
|
369
|
+
...rows.values()
|
|
370
|
+
];
|
|
371
|
+
}
|
|
302
372
|
/** Who checks people in: the member a PIN put at the register, else the signed-in one. */ async function checkerOf(deps, staff, body) {
|
|
303
373
|
const registerId = posOpsCleanId(body['registerId']);
|
|
304
374
|
const uid = registerId ? (await resolvePosCashier(deps, staff, registerId, body['cashierAssertion'])).cashierId : staff.uid;
|
|
@@ -351,13 +421,19 @@ export async function handlePosCheckIn(deps, req) {
|
|
|
351
421
|
};
|
|
352
422
|
}
|
|
353
423
|
await reconcileCheckInDay(deps, staff.hostRef, day);
|
|
354
|
-
const snapshot = await
|
|
424
|
+
const [snapshot, rainChecks] = await Promise.all([
|
|
425
|
+
checkIns.where('dayKey', '==', day.dayKey).where('searchTokens', 'array-contains', token).limit(CHECK_IN_SEARCH_ROWS).get(),
|
|
426
|
+
openRainChecks(checkIns, day.dayKey, {
|
|
427
|
+
name: 'searchTokens',
|
|
428
|
+
token
|
|
429
|
+
}, CHECK_IN_SEARCH_ROWS)
|
|
430
|
+
]);
|
|
355
431
|
return {
|
|
356
432
|
status: 200,
|
|
357
433
|
body: {
|
|
358
434
|
dayKey: day.dayKey,
|
|
359
435
|
timeZone: day.timeZone,
|
|
360
|
-
customers: checkInCustomers(snapshot
|
|
436
|
+
customers: checkInCustomers(uniqueRows(snapshot, rainChecks)).slice(0, CHECK_IN_SEARCH_CUSTOMERS)
|
|
361
437
|
}
|
|
362
438
|
};
|
|
363
439
|
}
|
|
@@ -393,8 +469,14 @@ export async function handlePosCheckIn(deps, req) {
|
|
|
393
469
|
onlyIfUsed: body['reconcile'] === 'if-used'
|
|
394
470
|
});
|
|
395
471
|
}
|
|
396
|
-
const snapshot = await
|
|
397
|
-
|
|
472
|
+
const [snapshot, rainChecks] = await Promise.all([
|
|
473
|
+
checkIns.where('dayKey', '==', day.dayKey).where('customerKey', '==', customerKey).limit(CHECK_IN_DAY_CEILING).get(),
|
|
474
|
+
openRainChecks(checkIns, day.dayKey, {
|
|
475
|
+
name: 'customerKey',
|
|
476
|
+
key: customerKey
|
|
477
|
+
}, CHECK_IN_SEARCH_ROWS)
|
|
478
|
+
]);
|
|
479
|
+
const rows = sortCheckInRows(uniqueRows(snapshot, rainChecks));
|
|
398
480
|
return {
|
|
399
481
|
status: 200,
|
|
400
482
|
body: {
|
|
@@ -442,6 +524,15 @@ export async function handlePosCheckIn(deps, req) {
|
|
|
442
524
|
}
|
|
443
525
|
const attempt = posOpsIdempotencyKey(req) || null;
|
|
444
526
|
const checker = await checkerOf(deps, staff, body);
|
|
527
|
+
// The day the window is working: an open rain check checked in is used
|
|
528
|
+
// on it, and moves to it.
|
|
529
|
+
const workingDay = await readCheckInDay(deps, staff.hostRef, staff.org, body['day']);
|
|
530
|
+
if ('error' in workingDay) return {
|
|
531
|
+
status: 400,
|
|
532
|
+
body: {
|
|
533
|
+
error: workingDay.error
|
|
534
|
+
}
|
|
535
|
+
};
|
|
445
536
|
const nowMs = deps.now();
|
|
446
537
|
const outcome = await deps.firestore().runTransaction(async (transaction)=>{
|
|
447
538
|
const done = [];
|
|
@@ -461,7 +552,7 @@ export async function handlePosCheckIn(deps, req) {
|
|
|
461
552
|
else already.push(row);
|
|
462
553
|
continue;
|
|
463
554
|
}
|
|
464
|
-
const patch = {
|
|
555
|
+
const patch = _extends({
|
|
465
556
|
status: 'checked_in',
|
|
466
557
|
checkedInAtMs: nowMs,
|
|
467
558
|
checkedInBy: checker.uid,
|
|
@@ -469,7 +560,13 @@ export async function handlePosCheckIn(deps, req) {
|
|
|
469
560
|
wristband,
|
|
470
561
|
checkInAttempt: attempt,
|
|
471
562
|
updatedAtMs: nowMs
|
|
472
|
-
}
|
|
563
|
+
}, row.rainCheckOpen === true && row.rainCheck ? {
|
|
564
|
+
dayKey: workingDay.dayKey,
|
|
565
|
+
rainCheckOpen: false,
|
|
566
|
+
rainCheck: _extends({}, row.rainCheck, {
|
|
567
|
+
claimedDayKey: workingDay.dayKey
|
|
568
|
+
})
|
|
569
|
+
} : {});
|
|
473
570
|
writes.push({
|
|
474
571
|
ref,
|
|
475
572
|
patch
|
|
@@ -526,6 +623,7 @@ export async function handlePosCheckIn(deps, req) {
|
|
|
526
623
|
const ref = checkIns.doc(id);
|
|
527
624
|
const outcome = await deps.firestore().runTransaction(async (transaction)=>{
|
|
528
625
|
var _ref;
|
|
626
|
+
var _row_rainCheck;
|
|
529
627
|
const snapshot = await transaction.get(ref);
|
|
530
628
|
if (!snapshot.exists) return {
|
|
531
629
|
status: 404,
|
|
@@ -538,7 +636,16 @@ export async function handlePosCheckIn(deps, req) {
|
|
|
538
636
|
error: 'They are not checked in yet.'
|
|
539
637
|
};
|
|
540
638
|
}
|
|
541
|
-
|
|
639
|
+
// Undoing the check-in of a rain check used today opens it again, on
|
|
640
|
+
// the day it waited on.
|
|
641
|
+
const reopened = ((_row_rainCheck = row.rainCheck) == null ? void 0 : _row_rainCheck.kind) === 'open' && row.rainCheck.claimedDayKey ? {
|
|
642
|
+
dayKey: row.rainCheck.fromDayKey,
|
|
643
|
+
rainCheckOpen: true,
|
|
644
|
+
rainCheck: _extends({}, row.rainCheck, {
|
|
645
|
+
claimedDayKey: null
|
|
646
|
+
})
|
|
647
|
+
} : {};
|
|
648
|
+
const patch = action === 'undo' ? _extends({
|
|
542
649
|
status: 'expected',
|
|
543
650
|
checkedInAtMs: null,
|
|
544
651
|
checkedInBy: null,
|
|
@@ -548,7 +655,7 @@ export async function handlePosCheckIn(deps, req) {
|
|
|
548
655
|
undoneAtMs: nowMs,
|
|
549
656
|
undoneBy: (_ref = checker == null ? void 0 : checker.uid) != null ? _ref : staff.uid,
|
|
550
657
|
updatedAtMs: nowMs
|
|
551
|
-
} : {
|
|
658
|
+
}, reopened) : {
|
|
552
659
|
wristband,
|
|
553
660
|
updatedAtMs: nowMs
|
|
554
661
|
};
|
|
@@ -571,6 +678,162 @@ export async function handlePosCheckIn(deps, req) {
|
|
|
571
678
|
}
|
|
572
679
|
};
|
|
573
680
|
}
|
|
681
|
+
case 'stay_mode':
|
|
682
|
+
{
|
|
683
|
+
// The store's quick control for stays (AGL-4043): one check-in per
|
|
684
|
+
// stay, one per guest, or each resource's own setting. The day asked
|
|
685
|
+
// for is brought in line at once, so the window sees the change.
|
|
686
|
+
const mode = body['mode'];
|
|
687
|
+
if (!STAY_CHECK_IN_MODES.includes(mode)) {
|
|
688
|
+
return {
|
|
689
|
+
status: 400,
|
|
690
|
+
body: {
|
|
691
|
+
error: 'Choose per resource, one per stay or one per guest.'
|
|
692
|
+
}
|
|
693
|
+
};
|
|
694
|
+
}
|
|
695
|
+
const day = await readCheckInDay(deps, staff.hostRef, staff.org, body['day']);
|
|
696
|
+
if ('error' in day) return {
|
|
697
|
+
status: 400,
|
|
698
|
+
body: {
|
|
699
|
+
error: day.error
|
|
700
|
+
}
|
|
701
|
+
};
|
|
702
|
+
await staff.hostRef.collection('settings').doc(STAY_CHECK_IN_SETTINGS_DOC).set({
|
|
703
|
+
stays: mode,
|
|
704
|
+
updatedAtMs: deps.now(),
|
|
705
|
+
updatedBy: staff.uid
|
|
706
|
+
}, {
|
|
707
|
+
merge: true
|
|
708
|
+
});
|
|
709
|
+
await reconcileCheckInDay(deps, staff.hostRef, day, {
|
|
710
|
+
force: true
|
|
711
|
+
});
|
|
712
|
+
return {
|
|
713
|
+
status: 200,
|
|
714
|
+
body: {
|
|
715
|
+
stayCheckIn: mode,
|
|
716
|
+
dayKey: day.dayKey
|
|
717
|
+
}
|
|
718
|
+
};
|
|
719
|
+
}
|
|
720
|
+
case 'rain_check':
|
|
721
|
+
case 'undo_rain_check':
|
|
722
|
+
{
|
|
723
|
+
var _body_day;
|
|
724
|
+
const id = cleanCheckInId(body['id']);
|
|
725
|
+
if (!id) return {
|
|
726
|
+
status: 400,
|
|
727
|
+
body: {
|
|
728
|
+
error: 'That is not a check-in.'
|
|
729
|
+
}
|
|
730
|
+
};
|
|
731
|
+
const kind = body['kind'] === 'date' ? 'date' : body['kind'] === 'open' ? 'open' : null;
|
|
732
|
+
if (action === 'rain_check' && !kind) {
|
|
733
|
+
return {
|
|
734
|
+
status: 400,
|
|
735
|
+
body: {
|
|
736
|
+
error: 'Choose an open rain check or a new day.'
|
|
737
|
+
}
|
|
738
|
+
};
|
|
739
|
+
}
|
|
740
|
+
const askedDay = String((_body_day = body['day']) != null ? _body_day : '').trim();
|
|
741
|
+
// Today on the store's calendar: a pass is never moved to a day that
|
|
742
|
+
// has passed.
|
|
743
|
+
const today = await readCheckInDay(deps, staff.hostRef, staff.org, '');
|
|
744
|
+
if ('error' in today) return {
|
|
745
|
+
status: 400,
|
|
746
|
+
body: {
|
|
747
|
+
error: today.error
|
|
748
|
+
}
|
|
749
|
+
};
|
|
750
|
+
const checker = await checkerOf(deps, staff, body);
|
|
751
|
+
const nowMs = deps.now();
|
|
752
|
+
const ref = checkIns.doc(id);
|
|
753
|
+
const outcome = await deps.firestore().runTransaction(async (transaction)=>{
|
|
754
|
+
var _row_rainCheck;
|
|
755
|
+
const snapshot = await transaction.get(ref);
|
|
756
|
+
if (!snapshot.exists) return {
|
|
757
|
+
status: 404,
|
|
758
|
+
error: 'That check-in is no longer due.'
|
|
759
|
+
};
|
|
760
|
+
const row = rowOf(snapshot);
|
|
761
|
+
if (action === 'undo_rain_check') {
|
|
762
|
+
// Nothing to take back: already undone, and a retry says so the same way.
|
|
763
|
+
if (!row.rainCheck) return {
|
|
764
|
+
status: 200,
|
|
765
|
+
row
|
|
766
|
+
};
|
|
767
|
+
if (row.status !== 'expected') {
|
|
768
|
+
return {
|
|
769
|
+
status: 409,
|
|
770
|
+
error: 'They are already checked in. Undo the check-in first.'
|
|
771
|
+
};
|
|
772
|
+
}
|
|
773
|
+
const patch = {
|
|
774
|
+
dayKey: row.rainCheck.fromDayKey,
|
|
775
|
+
rainCheck: null,
|
|
776
|
+
rainCheckOpen: false,
|
|
777
|
+
rainCheckUndoneAtMs: nowMs,
|
|
778
|
+
rainCheckUndoneBy: checker.uid,
|
|
779
|
+
updatedAtMs: nowMs
|
|
780
|
+
};
|
|
781
|
+
transaction.update(ref, patch);
|
|
782
|
+
return {
|
|
783
|
+
status: 200,
|
|
784
|
+
row: _extends({}, row, patch)
|
|
785
|
+
};
|
|
786
|
+
}
|
|
787
|
+
// The same rain check asked again (a retried tap) answers what it made.
|
|
788
|
+
if (row.status === 'expected' && (kind === 'open' && row.rainCheckOpen === true || kind === 'date' && ((_row_rainCheck = row.rainCheck) == null ? void 0 : _row_rainCheck.kind) === 'date' && row.rainCheck.toDayKey === askedDay)) {
|
|
789
|
+
return {
|
|
790
|
+
status: 200,
|
|
791
|
+
row
|
|
792
|
+
};
|
|
793
|
+
}
|
|
794
|
+
const problem = rainCheckProblem(row, {
|
|
795
|
+
kind: kind,
|
|
796
|
+
dayKey: askedDay
|
|
797
|
+
}, today.dayKey);
|
|
798
|
+
if (problem) return {
|
|
799
|
+
status: row.status === 'expected' ? 400 : 409,
|
|
800
|
+
error: problem
|
|
801
|
+
};
|
|
802
|
+
const rainCheck = {
|
|
803
|
+
kind: kind,
|
|
804
|
+
fromDayKey: row.dayKey,
|
|
805
|
+
toDayKey: kind === 'date' ? askedDay : null,
|
|
806
|
+
claimedDayKey: null,
|
|
807
|
+
byUid: checker.uid,
|
|
808
|
+
byName: checker.name || null,
|
|
809
|
+
atMs: nowMs
|
|
810
|
+
};
|
|
811
|
+
const patch = _extends({}, kind === 'date' ? {
|
|
812
|
+
dayKey: askedDay
|
|
813
|
+
} : {}, {
|
|
814
|
+
rainCheck,
|
|
815
|
+
rainCheckOpen: kind === 'open',
|
|
816
|
+
updatedAtMs: nowMs
|
|
817
|
+
});
|
|
818
|
+
transaction.update(ref, patch);
|
|
819
|
+
return {
|
|
820
|
+
status: 200,
|
|
821
|
+
row: _extends({}, row, patch)
|
|
822
|
+
};
|
|
823
|
+
});
|
|
824
|
+
if ('error' in outcome) return {
|
|
825
|
+
status: outcome.status,
|
|
826
|
+
body: {
|
|
827
|
+
error: outcome.error
|
|
828
|
+
}
|
|
829
|
+
};
|
|
830
|
+
return {
|
|
831
|
+
status: 200,
|
|
832
|
+
body: {
|
|
833
|
+
checkIn: outcome.row
|
|
834
|
+
}
|
|
835
|
+
};
|
|
836
|
+
}
|
|
574
837
|
default:
|
|
575
838
|
return {
|
|
576
839
|
status: 400,
|
|
@@ -609,7 +872,10 @@ async function handleDayList(deps, req) {
|
|
|
609
872
|
};
|
|
610
873
|
const { truncated } = await reconcileCheckInDay(deps, staff.hostRef, day);
|
|
611
874
|
const snapshot = await staff.hostRef.collection('checkIns').where('dayKey', '==', day.dayKey).limit(CHECK_IN_DAY_CEILING + 1).get();
|
|
612
|
-
const rows =
|
|
875
|
+
const [rows, stayCheckIn] = await Promise.all([
|
|
876
|
+
Promise.resolve(sortCheckInRows(snapshot.docs.slice(0, CHECK_IN_DAY_CEILING).map(rowOf))),
|
|
877
|
+
readStayCheckInMode(staff.hostRef)
|
|
878
|
+
]);
|
|
613
879
|
if (format === 'csv') {
|
|
614
880
|
return {
|
|
615
881
|
status: 200,
|
|
@@ -624,6 +890,8 @@ async function handleDayList(deps, req) {
|
|
|
624
890
|
timeZone: day.timeZone,
|
|
625
891
|
totals: checkInDayTotals(rows),
|
|
626
892
|
checkIns: rows,
|
|
893
|
+
// How stays are checked in, for the screen's quick control.
|
|
894
|
+
stayCheckIn,
|
|
627
895
|
truncated: truncated || snapshot.docs.length > CHECK_IN_DAY_CEILING
|
|
628
896
|
}
|
|
629
897
|
};
|