@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
|
@@ -20,12 +20,16 @@ import { FieldValue } from "firebase-admin/firestore";
|
|
|
20
20
|
import * as CommerceModel from "../model/index.js";
|
|
21
21
|
import { posOfflineFlagLabels, posOfflineSaleTotals, posOfflineSoldAt, posOfflineTotalsAddUp, POS_OFFLINE_CARD_INTENT_KIND, POS_OFFLINE_LATE_SYNC_MS, POS_OFFLINE_SYNC_BATCH_MAX, sanitizePosOfflineSale } from "../model/commerce-pos-offline.js";
|
|
22
22
|
import { ORDER_PAID_EVENT } from "../model/order-events.js";
|
|
23
|
+
import { holdsPosPermission } from "../model/plugin-permissions.js";
|
|
23
24
|
import { posMaxDiscountPct, posOfflineCardSettings } from "../plugin-config.js";
|
|
24
25
|
import { alertLowStockCrossing } from "./low-stock.js";
|
|
25
26
|
import { notifyOrderBuyer } from "./order-notifications.js";
|
|
26
27
|
import { raiseOrderEvent } from "./order-events.js";
|
|
27
28
|
import { offlineFeeMonthKey } from "./pos-fee-month.js";
|
|
28
29
|
import { authorizePosOps, defaultPosOpsDeps, posOpsBody, posOpsCleanId, resolvePosStaffAssertion } from "./pos-ops-gate.js";
|
|
30
|
+
import { posOfflineCardChargeRef, reportPosOfflineCardWrongAccount } from "./pos-offline-card-reconcile.js";
|
|
31
|
+
import { posHardwareSaleFields } from "./pos-hardware-sale-fields.js";
|
|
32
|
+
import { posOfflineCardOrderMoney } from "./pos-offline-card-order.js";
|
|
29
33
|
import { notifyPosSaleCompleted } from "./pos-sale.js";
|
|
30
34
|
import { POS_CURRENCY, posCardApplicationFeeCents, posTerminalAvailable } from "./pos-stripe.js";
|
|
31
35
|
import { capturePosOfflineCardIntent, ensurePosOfflineCardConfiguration, posMerchantAccount, posTerminalLocationId, retrievePosOfflineCardIntent } from "./pos-terminal.js";
|
|
@@ -39,7 +43,8 @@ export function defaultPosOfflineCardDeps() {
|
|
|
39
43
|
merchantAccount: posMerchantAccount,
|
|
40
44
|
enableOffline: ensurePosOfflineCardConfiguration,
|
|
41
45
|
retrieve: retrievePosOfflineCardIntent,
|
|
42
|
-
capture: capturePosOfflineCardIntent
|
|
46
|
+
capture: capturePosOfflineCardIntent,
|
|
47
|
+
wrongAccount: reportPosOfflineCardWrongAccount
|
|
43
48
|
};
|
|
44
49
|
}
|
|
45
50
|
export function defaultPosOfflineSyncDeps() {
|
|
@@ -261,12 +266,44 @@ async function readStoreTax(staff) {
|
|
|
261
266
|
available: true
|
|
262
267
|
});
|
|
263
268
|
}
|
|
269
|
+
/** Statuses in which an intent holds the customer's money or has taken it. */ const INTENT_HOLDS_MONEY = new Set([
|
|
270
|
+
'requires_capture',
|
|
271
|
+
'processing',
|
|
272
|
+
'succeeded'
|
|
273
|
+
]);
|
|
274
|
+
/**
|
|
275
|
+
* How long after a capture that Stripe answered with a 5xx the sync waits
|
|
276
|
+
* before reading "still waiting for capture" as the definite answer.
|
|
277
|
+
*/ export const POS_OFFLINE_CAPTURE_SETTLE_MS = 60000;
|
|
278
|
+
/**
|
|
279
|
+
* The capture's idempotency key (AGL-4039). Attempt 0 is the key every
|
|
280
|
+
* capture used before attempts existed, so a retry of one already in flight
|
|
281
|
+
* still finds it.
|
|
282
|
+
*
|
|
283
|
+
* WHY AN ATTEMPT. Stripe keeps the answer to an idempotent request for a day,
|
|
284
|
+
* failures included, so a capture that failed once on a per-sale key would
|
|
285
|
+
* fail the same way on every sync for a day, deep into the two days the
|
|
286
|
+
* authorization lasts. The attempt moves on only when the previous one
|
|
287
|
+
* DEFINITELY did not capture: Stripe refused it with a 4xx (not 409, a
|
|
288
|
+
* request with the same key still running, and not 429, rate limited), or it
|
|
289
|
+
* answered 5xx and the intent still waits for capture a minute later. A
|
|
290
|
+
* request that got no answer at all throws before anything is recorded, so it
|
|
291
|
+
* retries on the same key. Every sync reads the intent before it captures,
|
|
292
|
+
* and Stripe captures an intent once, so a new key can never capture twice.
|
|
293
|
+
*/ export function posOfflineCaptureKey(hostId, saleKey, attempt) {
|
|
294
|
+
const base = `pos-offline-capture:${hostId}:${saleKey}`;
|
|
295
|
+
return attempt > 0 ? `${base}:${attempt}` : base;
|
|
296
|
+
}
|
|
297
|
+
/** A capture Stripe refused for good: retrying the same key would replay the refusal. */ export function posOfflineCaptureRefused(status) {
|
|
298
|
+
return typeof status === 'number' && status >= 400 && status < 500 && status !== 409 && status !== 429;
|
|
299
|
+
}
|
|
264
300
|
/**
|
|
265
301
|
* Reads the card of a sale rung offline and settles it: captured with the
|
|
266
302
|
* platform fee (the card tender's share of the take, by the one tender rule,
|
|
267
303
|
* plus Stripe's processing cost, exactly as an online reader payment), or
|
|
268
|
-
* unpaid when the bank declined it
|
|
269
|
-
*
|
|
304
|
+
* unpaid when the bank declined it, Stripe never took it, or it was made out
|
|
305
|
+
* to a Stripe account that is not the store's. Anything Stripe has not
|
|
306
|
+
* finished yet waits on the register for the next sync.
|
|
270
307
|
*/ async function settleOfflineCard(context, sale, takeFee) {
|
|
271
308
|
const { deps, staff } = context;
|
|
272
309
|
const { saleKey } = sale;
|
|
@@ -292,7 +329,10 @@ async function readStoreTax(staff) {
|
|
|
292
329
|
const read = await deps.card.retrieve(card.paymentIntentId);
|
|
293
330
|
if ('error' in read) return wait(`The card payment could not be checked yet: ${read.error}`);
|
|
294
331
|
let intent = read.intent;
|
|
295
|
-
|
|
332
|
+
// The amount is NOT checked here: what Stripe took is what the customer
|
|
333
|
+
// paid, and a difference from the server's total is flagged on the order
|
|
334
|
+
// (`posOfflineCardOrderMoney`), never a reason to leave the sale unrecorded.
|
|
335
|
+
if (intent.metadata['kind'] !== POS_OFFLINE_CARD_INTENT_KIND || intent.metadata['saleKey'] !== saleKey || intent.metadata['hostId'] !== staff.hostId || intent.currency !== POS_CURRENCY) {
|
|
296
336
|
return {
|
|
297
337
|
kind: 'wait',
|
|
298
338
|
outcome: refused(saleKey, 'invalid', 'The card payment does not belong to this sale.', false)
|
|
@@ -303,21 +343,87 @@ async function readStoreTax(staff) {
|
|
|
303
343
|
} : {}, intent.last4 ? {
|
|
304
344
|
last4: intent.last4
|
|
305
345
|
} : {});
|
|
346
|
+
// THE DESTINATION. The device made this intent out to the account its
|
|
347
|
+
// offline kit named, and a kit can be stale (the store reconnected Stripe)
|
|
348
|
+
// or a register tampered with. Money that holds or has moved is only ever
|
|
349
|
+
// captured into, or recorded as paid to, the store's account as it is now.
|
|
350
|
+
if (INTENT_HOLDS_MONEY.has(intent.status)) {
|
|
351
|
+
const expected = await deps.card.merchantAccount(staff.hostId, staff.org);
|
|
352
|
+
if (!expected) {
|
|
353
|
+
return wait('This store’s Stripe account cannot take card payments right now. The card syncs once it can.');
|
|
354
|
+
}
|
|
355
|
+
if (intent.destination !== expected) {
|
|
356
|
+
return _extends({
|
|
357
|
+
kind: 'unpaid',
|
|
358
|
+
flag: 'card-not-charged',
|
|
359
|
+
intentId: intent.id,
|
|
360
|
+
message: 'The card was made out to a Stripe account that is not this store’s, so it was not charged here.'
|
|
361
|
+
}, found, {
|
|
362
|
+
wrongAccount: {
|
|
363
|
+
destination: intent.destination,
|
|
364
|
+
expected,
|
|
365
|
+
status: intent.status,
|
|
366
|
+
amountCents: intent.amount
|
|
367
|
+
}
|
|
368
|
+
});
|
|
369
|
+
}
|
|
370
|
+
}
|
|
306
371
|
const takeShareCents = CommerceModel.posTenderTakeCents('card_present', takeFee);
|
|
372
|
+
const expectedFeeCents = posCardApplicationFeeCents({
|
|
373
|
+
takeShareCents,
|
|
374
|
+
chargeCents: intent.amount
|
|
375
|
+
});
|
|
307
376
|
if (intent.status === 'requires_capture') {
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
377
|
+
var _data, _charge_captureAttempt, _charge_captureUncertainAtMs;
|
|
378
|
+
const chargeRef = posOfflineCardChargeRef(staff.hostRef, saleKey);
|
|
379
|
+
const charge = (_data = (await chargeRef.get()).data()) != null ? _data : {};
|
|
380
|
+
let attempt = Math.max(0, Math.round(Number((_charge_captureAttempt = charge['captureAttempt']) != null ? _charge_captureAttempt : 0)) || 0);
|
|
381
|
+
if (charge['captureUncertainAttempt'] === attempt && deps.now() - Number((_charge_captureUncertainAtMs = charge['captureUncertainAtMs']) != null ? _charge_captureUncertainAtMs : 0) >= POS_OFFLINE_CAPTURE_SETTLE_MS) {
|
|
382
|
+
// The 5xx left the outcome unknown; the intent still waiting for
|
|
383
|
+
// capture a minute later says it did not capture.
|
|
384
|
+
attempt += 1;
|
|
385
|
+
await chargeRef.set({
|
|
386
|
+
captureAttempt: attempt,
|
|
387
|
+
captureUncertainAttempt: FieldValue.delete(),
|
|
388
|
+
captureUncertainAtMs: FieldValue.delete()
|
|
389
|
+
}, {
|
|
390
|
+
merge: true
|
|
391
|
+
});
|
|
392
|
+
}
|
|
393
|
+
const captured = await deps.card.capture(intent.id, expectedFeeCents, posOfflineCaptureKey(staff.hostId, saleKey, attempt));
|
|
394
|
+
if ('error' in captured) {
|
|
395
|
+
const stamp = {
|
|
396
|
+
hostId: staff.hostId,
|
|
397
|
+
saleKey,
|
|
398
|
+
updatedAtMs: deps.now()
|
|
399
|
+
};
|
|
400
|
+
if (posOfflineCaptureRefused(captured.status)) {
|
|
401
|
+
await chargeRef.set(_extends({}, stamp, {
|
|
402
|
+
captureAttempt: attempt + 1,
|
|
403
|
+
lastCaptureStatus: captured.status,
|
|
404
|
+
lastCaptureError: captured.error.slice(0, 300)
|
|
405
|
+
}), {
|
|
406
|
+
merge: true
|
|
407
|
+
});
|
|
408
|
+
} else if (typeof captured.status === 'number' && captured.status >= 500) {
|
|
409
|
+
await chargeRef.set(_extends({}, stamp, {
|
|
410
|
+
captureUncertainAttempt: attempt,
|
|
411
|
+
captureUncertainAtMs: deps.now()
|
|
412
|
+
}), {
|
|
413
|
+
merge: true
|
|
414
|
+
});
|
|
415
|
+
}
|
|
416
|
+
return wait(`The card payment could not be captured yet: ${captured.error}`);
|
|
417
|
+
}
|
|
314
418
|
intent = captured.intent;
|
|
315
419
|
}
|
|
316
420
|
if (intent.status === 'succeeded') {
|
|
317
421
|
return _extends({
|
|
318
422
|
kind: 'captured',
|
|
319
423
|
intentId: intent.id,
|
|
424
|
+
amountCents: intent.amount,
|
|
320
425
|
feeCents: intent.applicationFeeCents,
|
|
426
|
+
expectedFeeCents,
|
|
321
427
|
takeShareCents,
|
|
322
428
|
livemode: intent.livemode
|
|
323
429
|
}, found);
|
|
@@ -484,7 +590,7 @@ const replayOf = (record)=>({
|
|
|
484
590
|
return current;
|
|
485
591
|
}
|
|
486
592
|
async function syncOne(context, raw) {
|
|
487
|
-
var _ref, _sale_customer;
|
|
593
|
+
var _ref, _staff_orgId, _ref1, _sale_customer;
|
|
488
594
|
const { deps, staff } = context;
|
|
489
595
|
const read = sanitizePosOfflineSale(raw);
|
|
490
596
|
const rawKey = String((_ref = raw == null ? void 0 : raw['saleKey']) != null ? _ref : '').slice(0, 64);
|
|
@@ -618,6 +724,13 @@ async function syncOne(context, raw) {
|
|
|
618
724
|
flags.add('tax-differs');
|
|
619
725
|
}
|
|
620
726
|
if (sale.discountPct > posMaxDiscountPct(context.config)) flags.add('discount-over-limit');
|
|
727
|
+
// The cashier's own discount needs `posDiscount` (AGL-4047), as the online
|
|
728
|
+
// register refuses it without. Offline the sale has already happened, so it
|
|
729
|
+
// is recorded and flagged rather than dropped. Read for the member who was
|
|
730
|
+
// signed in, whose membership the gate resolved, as the online check reads it.
|
|
731
|
+
if (sale.discountPct > 0 && !holdsPosPermission(staff.membership.permissions, 'posDiscount')) {
|
|
732
|
+
flags.add('discount-not-permitted');
|
|
733
|
+
}
|
|
621
734
|
const byCard = sale.tender === 'card';
|
|
622
735
|
if (!byCard && sale.cashTenderedCents < totals.totalCents) flags.add('cash-short');
|
|
623
736
|
// Where it was rung.
|
|
@@ -648,21 +761,36 @@ async function syncOne(context, raw) {
|
|
|
648
761
|
if (memberUid) cashierId = memberUid;
|
|
649
762
|
else flags.add('cashier-unverified');
|
|
650
763
|
}
|
|
651
|
-
//
|
|
652
|
-
//
|
|
653
|
-
//
|
|
654
|
-
//
|
|
764
|
+
// Cash carries no platform fee (AGL-4036): the plan's take is worked out
|
|
765
|
+
// and then settled by the one predicate every tender answers to, so a sale
|
|
766
|
+
// synced from the queue is charged exactly what the same sale rung online
|
|
767
|
+
// is.
|
|
655
768
|
const planTake = takeFeeCents(deps, staff, lineItems, totals);
|
|
656
769
|
// A card taken offline settles with Stripe BEFORE the order is written: a
|
|
657
770
|
// capture that fails leaves the sale on the register for the next sync,
|
|
658
771
|
// and a repeat after a lost answer finds the first capture (AGL-4039).
|
|
659
772
|
const settled = byCard ? await settleOfflineCard(context, sale, planTake) : null;
|
|
660
773
|
if ((settled == null ? void 0 : settled.kind) === 'wait') return settled.outcome;
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
774
|
+
// The card's money, decided once against the server's totals: the fee it
|
|
775
|
+
// settled, the shortfall to invoice, and the order-level intent the refund
|
|
776
|
+
// and the dispute lookup read.
|
|
777
|
+
const cardMoney = settled ? posOfflineCardOrderMoney({
|
|
778
|
+
settled,
|
|
779
|
+
totals,
|
|
780
|
+
planTakeCents: planTake,
|
|
781
|
+
soldAtMs: soldAt.atMs,
|
|
782
|
+
nowMs: now,
|
|
783
|
+
cashierId,
|
|
784
|
+
feeOrgId: (_staff_orgId = staff.orgId) != null ? _staff_orgId : ''
|
|
785
|
+
}) : null;
|
|
786
|
+
for (const flag of (_ref1 = cardMoney == null ? void 0 : cardMoney.flags) != null ? _ref1 : [])flags.add(flag);
|
|
787
|
+
const cashTake = CommerceModel.posTenderTakeCents('cash', planTake);
|
|
788
|
+
totals = cardMoney ? cardMoney.totals : _extends({}, totals, {
|
|
789
|
+
feeCents: cashTake
|
|
665
790
|
});
|
|
791
|
+
// What accrues to the org's month with the order: the cash take (none
|
|
792
|
+
// since AGL-4036) or the part of a card's fee its payout did not carry.
|
|
793
|
+
const invoiceCents = cardMoney ? cardMoney.invoiceCents : cashTake;
|
|
666
794
|
const changeCents = byCard ? 0 : Math.max(0, sale.cashTenderedCents - totals.totalCents);
|
|
667
795
|
const flagList = [
|
|
668
796
|
...flags
|
|
@@ -701,7 +829,7 @@ async function syncOne(context, raw) {
|
|
|
701
829
|
settled.brand ? settled.brand.toUpperCase() : 'Card',
|
|
702
830
|
settled.last4 ? `•••• ${settled.last4}` : ''
|
|
703
831
|
].filter(Boolean).join(' ') : '';
|
|
704
|
-
const paidDetail = !settled ? `Cash — received ${money(sale.cashTenderedCents)}, change ${money(changeCents)}. ` + 'Rung while the register was offline.' : settled.kind === 'captured' ? `${cardName} — ${money(
|
|
832
|
+
const paidDetail = !settled ? `Cash — received ${money(sale.cashTenderedCents)}, change ${money(changeCents)}. ` + 'Rung while the register was offline.' : settled.kind === 'captured' ? `${cardName} — ${money(settled.amountCents)}, taken while the register was offline and charged when it reconnected.` : `${cardName} — ${money(totals.totalCents)} taken while the register was offline was not paid: ${settled.message}`.slice(0, 500);
|
|
705
833
|
const timeline = [
|
|
706
834
|
{
|
|
707
835
|
atMs: soldAt.atMs,
|
|
@@ -716,7 +844,7 @@ async function syncOne(context, raw) {
|
|
|
716
844
|
];
|
|
717
845
|
transaction.create(orderRef, CommerceModel.withOrderListFields(orderRef.id, _extends({
|
|
718
846
|
number,
|
|
719
|
-
status:
|
|
847
|
+
status: cardMoney ? cardMoney.status : 'paid',
|
|
720
848
|
channel: 'pos',
|
|
721
849
|
registerId: sale.registerId,
|
|
722
850
|
cashierId
|
|
@@ -734,38 +862,20 @@ async function syncOne(context, raw) {
|
|
|
734
862
|
discountBy: cashierId
|
|
735
863
|
} : {}, sale.locationId ? {
|
|
736
864
|
locationId: sale.locationId
|
|
737
|
-
} : {}, {
|
|
865
|
+
} : {}, posHardwareSaleFields({
|
|
866
|
+
hostId: staff.hostId,
|
|
867
|
+
orgId: staff.orgId,
|
|
868
|
+
lineItems,
|
|
869
|
+
products
|
|
870
|
+
}), {
|
|
738
871
|
lineItems,
|
|
739
872
|
totals,
|
|
740
873
|
taxMode: 'decision' in context.tax ? CommerceModel.storefrontTaxModeForDecision(context.tax.decision, totals.taxCents) : totals.taxCents > 0 ? 'manual' : 'none'
|
|
741
|
-
},
|
|
742
|
-
feeCollection:
|
|
874
|
+
}, cardMoney ? cardMoney.fields : cashTake > 0 ? {
|
|
875
|
+
feeCollection: 'invoice'
|
|
743
876
|
} : {}, {
|
|
744
|
-
payments:
|
|
745
|
-
|
|
746
|
-
id: 'pay_card_offline',
|
|
747
|
-
method: 'card_present',
|
|
748
|
-
amountCents: totals.totalCents,
|
|
749
|
-
status: settled.kind === 'captured' ? 'succeeded' : 'failed',
|
|
750
|
-
atMs: soldAt.atMs
|
|
751
|
-
}, settled.kind === 'captured' ? {
|
|
752
|
-
settledAtMs: now,
|
|
753
|
-
takeFeeCents: settled.takeShareCents,
|
|
754
|
-
feeCents: settled.feeCents,
|
|
755
|
-
livemode: settled.livemode
|
|
756
|
-
} : {
|
|
757
|
-
takeFeeCents: 0,
|
|
758
|
-
feeCents: 0,
|
|
759
|
-
failureMessage: settled.message.slice(0, 300)
|
|
760
|
-
}, settled.intentId ? {
|
|
761
|
-
paymentIntentId: settled.intentId
|
|
762
|
-
} : {}, settled.brand ? {
|
|
763
|
-
cardBrand: settled.brand
|
|
764
|
-
} : {}, settled.last4 ? {
|
|
765
|
-
last4: settled.last4
|
|
766
|
-
} : {}, {
|
|
767
|
-
cashierId
|
|
768
|
-
})
|
|
877
|
+
payments: cardMoney ? [
|
|
878
|
+
cardMoney.payment
|
|
769
879
|
] : [
|
|
770
880
|
{
|
|
771
881
|
id: 'pay_cash',
|
|
@@ -774,7 +884,7 @@ async function syncOne(context, raw) {
|
|
|
774
884
|
status: 'succeeded',
|
|
775
885
|
atMs: soldAt.atMs,
|
|
776
886
|
settledAtMs: soldAt.atMs,
|
|
777
|
-
takeFeeCents:
|
|
887
|
+
takeFeeCents: cashTake,
|
|
778
888
|
feeCents: 0,
|
|
779
889
|
cashierId,
|
|
780
890
|
cashTenderedCents: sale.cashTenderedCents,
|
|
@@ -805,12 +915,30 @@ async function syncOne(context, raw) {
|
|
|
805
915
|
unpaid: true
|
|
806
916
|
} : {});
|
|
807
917
|
transaction.create(recordRef, record);
|
|
808
|
-
// The
|
|
809
|
-
//
|
|
810
|
-
if (
|
|
918
|
+
// The intent's record says its sale synced, in the same commit, so the
|
|
919
|
+
// webhook and the unsynced-card sweep never report a sale that landed.
|
|
920
|
+
if (settled == null ? void 0 : settled.intentId) {
|
|
921
|
+
transaction.set(posOfflineCardChargeRef(hostRef, sale.saleKey), {
|
|
922
|
+
hostId: staff.hostId,
|
|
923
|
+
saleKey: sale.saleKey,
|
|
924
|
+
paymentIntentId: settled.intentId,
|
|
925
|
+
registerId: sale.registerId,
|
|
926
|
+
synced: true,
|
|
927
|
+
orderId: orderRef.id,
|
|
928
|
+
syncedAtMs: now,
|
|
929
|
+
updatedAtMs: now,
|
|
930
|
+
alertDueAtMs: FieldValue.delete()
|
|
931
|
+
}, {
|
|
932
|
+
merge: true
|
|
933
|
+
});
|
|
934
|
+
}
|
|
935
|
+
// The fee no payout carried accrues with the order, in the same
|
|
936
|
+
// transaction (AGL-2111): a card's share was netted from its payout by
|
|
937
|
+
// the capture, and only a shortfall in that lands here.
|
|
938
|
+
if (invoiceCents > 0 && feeRef) {
|
|
811
939
|
transaction.set(feeRef, {
|
|
812
940
|
month: feeMonth,
|
|
813
|
-
feeCents: FieldValue.increment(
|
|
941
|
+
feeCents: FieldValue.increment(invoiceCents),
|
|
814
942
|
orders: FieldValue.increment(1)
|
|
815
943
|
}, {
|
|
816
944
|
merge: true
|
|
@@ -830,6 +958,13 @@ async function syncOne(context, raw) {
|
|
|
830
958
|
}
|
|
831
959
|
return replayOf(record);
|
|
832
960
|
}
|
|
961
|
+
if ((settled == null ? void 0 : settled.kind) === 'unpaid' && settled.wrongAccount && settled.intentId) {
|
|
962
|
+
await deps.card.wrongAccount(_extends({
|
|
963
|
+
hostId: staff.hostId,
|
|
964
|
+
orderId: orderRef.id,
|
|
965
|
+
paymentIntentId: settled.intentId
|
|
966
|
+
}, settled.wrongAccount));
|
|
967
|
+
}
|
|
833
968
|
const finished = await finishSale(context, recordRef, orderRef, committed.record);
|
|
834
969
|
return {
|
|
835
970
|
saleKey: sale.saleKey,
|
|
@@ -854,7 +989,7 @@ export async function handlePosOfflineSync(deps, req) {
|
|
|
854
989
|
key,
|
|
855
990
|
Array.isArray(value) ? value[0] : value
|
|
856
991
|
])) : posOpsBody(req);
|
|
857
|
-
const gate = await authorizePosOps(deps, req, body['hostId']);
|
|
992
|
+
const gate = await authorizePosOps(deps, req, body['hostId'], 'posSell');
|
|
858
993
|
if ('error' in gate) return {
|
|
859
994
|
status: gate.status,
|
|
860
995
|
body: {
|