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