@shipengine/elements 2.26.5 → 2.28.0
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/dist/cjs/assets/xcover/logo.svg.cjs +44 -0
- package/dist/cjs/components/field/rate-select/rate-card/rate-attribute-item/index.cjs +7 -0
- package/dist/cjs/components/field/rate-select/rate-card/rate-attribute-item/rate-attribute-item.cjs +56 -0
- package/dist/cjs/components/field/rate-select/rate-card/rate-attribute-item/rate-attribute-item.styles.cjs +27 -0
- package/dist/cjs/components/field/rate-select/rate-card/rate-card.cjs +53 -42
- package/dist/cjs/components/field/rate-select/rate-card/rate-card.styles.cjs +4 -0
- package/dist/cjs/components/field/rate-select/rate-select.cjs +80 -49
- package/dist/cjs/components/forms/register-funding-source-insurance-form/register-funding-source-insurance-form.cjs +1 -1
- package/dist/cjs/components/forms/warehouse-form/warehouse-form.cjs +10 -1
- package/dist/cjs/components/service-card/service-card.cjs +3 -2
- package/dist/cjs/components/service-card/service-card.styles.cjs +4 -2
- package/dist/cjs/data/insurance-provider-metadatas.json.cjs +10 -4
- package/dist/cjs/elements/customs-form/customs-form-element.cjs +294 -0
- package/dist/cjs/elements/customs-form/customs-form-element.stories.cjs +243 -0
- package/dist/cjs/elements/customs-form/customs-form-schema.cjs +59 -0
- package/dist/cjs/elements/customs-form/customs-form-types.cjs +63 -0
- package/dist/cjs/elements/customs-form/index.cjs +10 -0
- package/dist/cjs/elements/index.cjs +5 -0
- package/dist/cjs/elements/labels-grid/hooks/use-labels-grid.cjs +2 -2
- package/dist/cjs/elements/labels-grid/labels-grid.cjs +29 -9
- package/dist/cjs/elements/labels-grid/labels-grid.styles.cjs +5 -0
- package/dist/cjs/elements/manage-carriers/manage-carriers.cjs +1 -1
- package/dist/cjs/elements/purchase-label/components/customs-forms/tax-ids/tax-ids.cjs +1 -1
- package/dist/cjs/elements/purchase-label/components/index.cjs +2 -0
- package/dist/cjs/elements/purchase-label/components/rate-form/rate-view.cjs +3 -5
- package/dist/cjs/elements/purchase-label/components/shipment-form/shipment-form.cjs +7 -4
- package/dist/cjs/elements/purchase-label/hooks/use-filter-visible-rate-options/use-filter-visible-rate-options.cjs +35 -11
- package/dist/cjs/elements/purchase-label/hooks/use-insurance-provider-options.cjs +2 -2
- package/dist/cjs/elements/shipments-grid/hooks/use-shipments-grid.cjs +2 -2
- package/dist/cjs/elements/shipments-grid/shipments-grid.cjs +20 -6
- package/dist/cjs/elements/shipments-grid/shipments-grid.styles.cjs +5 -0
- package/dist/cjs/factories/shipengine/address.cjs +114 -0
- package/dist/cjs/factories/shipengine/money.cjs +21 -0
- package/dist/cjs/factories/shipengine/order-source.cjs +37 -0
- package/dist/cjs/factories/shipengine/package.cjs +41 -0
- package/dist/cjs/factories/shipengine/resource.cjs +23 -0
- package/dist/cjs/factories/shipengine/shipment.cjs +176 -0
- package/dist/cjs/factories/shipengine/weight.cjs +44 -0
- package/dist/cjs/factories/utils.cjs +19 -0
- package/dist/cjs/features/manage-carriers/hooks/use-list-funding-source-carriers.cjs +4 -6
- package/dist/cjs/features/manage-carriers/manage-carriers.cjs +8 -6
- package/dist/cjs/features/manage-warehouses/manage-warehouses.cjs +9 -5
- package/dist/cjs/hooks/use-configure-shipment.cjs +55 -14
- package/dist/cjs/hooks/use-get-funding-source-insurance-provider.cjs +7 -7
- package/dist/cjs/hooks/use-get-service-data.cjs +60 -0
- package/dist/cjs/hooks/use-import-sales-order.cjs +45 -20
- package/dist/cjs/hooks/use-manage-funding-source-insurance.cjs +15 -23
- package/dist/cjs/index.cjs +5 -0
- package/dist/cjs/locales/en/common.json.cjs +1 -1
- package/dist/cjs/locales/en/list-labels.json.cjs +2 -1
- package/dist/cjs/locales/en/list-shipments.json.cjs +1 -1
- package/dist/cjs/locales/en/manage-warehouses.json.cjs +2 -0
- package/dist/cjs/locales/en/purchase-label.json.cjs +9 -1
- package/dist/cjs/package.json.cjs +1 -1
- package/dist/cjs/utilities/feature-flags/feature-flags.cjs +3 -1
- package/dist/cjs/utilities/shipengine/carrier.cjs +4 -0
- package/dist/cjs/utilities/shipengine/index.cjs +3 -0
- package/dist/cjs/utilities/shipengine/insurance.cjs +63 -0
- package/dist/cjs/workflows/onboarding/components/confirmation-and-submission-step/use-confirmation-and-submission-step.cjs +9 -9
- package/dist/cjs/workflows/onboarding/components/ship-from-address-step/ship-from-address-step.cjs +1 -1
- package/dist/cjs/workflows/onboarding/components/terms-agreement-form/terms-agreement-form.cjs +3 -2
- package/dist/cjs/workflows/onboarding/components/terms-agreement-step/terms-agreement-step.cjs +8 -6
- package/dist/cjs/workflows/onboarding/components/terms-agreement-step/use-terms-agreement-step.cjs +4 -19
- package/dist/esm/assets/xcover/logo.svg.js +23 -0
- package/dist/esm/components/field/rate-select/rate-card/rate-attribute-item/index.js +1 -0
- package/dist/esm/components/field/rate-select/rate-card/rate-attribute-item/rate-attribute-item.js +54 -0
- package/dist/esm/components/field/rate-select/rate-card/rate-attribute-item/rate-attribute-item.styles.js +25 -0
- package/dist/esm/components/field/rate-select/rate-card/rate-card.js +53 -42
- package/dist/esm/components/field/rate-select/rate-card/rate-card.styles.js +4 -0
- package/dist/esm/components/field/rate-select/rate-select.js +80 -49
- package/dist/esm/components/forms/register-funding-source-insurance-form/register-funding-source-insurance-form.js +1 -1
- package/dist/esm/components/forms/warehouse-form/warehouse-form.js +10 -1
- package/dist/esm/components/service-card/service-card.js +3 -2
- package/dist/esm/components/service-card/service-card.styles.js +4 -2
- package/dist/esm/data/insurance-provider-metadatas.json.js +9 -4
- package/dist/esm/elements/customs-form/customs-form-element.js +291 -0
- package/dist/esm/elements/customs-form/customs-form-element.stories.js +232 -0
- package/dist/esm/elements/customs-form/customs-form-schema.js +56 -0
- package/dist/esm/elements/customs-form/customs-form-types.js +60 -0
- package/dist/esm/elements/customs-form/index.js +3 -0
- package/dist/esm/elements/index.js +3 -0
- package/dist/esm/elements/labels-grid/hooks/use-labels-grid.js +2 -2
- package/dist/esm/elements/labels-grid/labels-grid.js +30 -10
- package/dist/esm/elements/labels-grid/labels-grid.styles.js +5 -0
- package/dist/esm/elements/manage-carriers/manage-carriers.js +1 -1
- package/dist/esm/elements/purchase-label/components/customs-forms/tax-ids/tax-ids.js +1 -1
- package/dist/esm/elements/purchase-label/components/index.js +1 -0
- package/dist/esm/elements/purchase-label/components/rate-form/rate-view.js +3 -5
- package/dist/esm/elements/purchase-label/components/shipment-form/shipment-form.js +7 -4
- package/dist/esm/elements/purchase-label/hooks/use-filter-visible-rate-options/use-filter-visible-rate-options.js +35 -11
- package/dist/esm/elements/purchase-label/hooks/use-insurance-provider-options.js +2 -2
- package/dist/esm/elements/shipments-grid/hooks/use-shipments-grid.js +2 -2
- package/dist/esm/elements/shipments-grid/shipments-grid.js +21 -7
- package/dist/esm/elements/shipments-grid/shipments-grid.styles.js +5 -0
- package/dist/esm/elements-provider/elements-context-provider.js +1 -1
- package/dist/esm/factories/shipengine/address.js +111 -0
- package/dist/esm/factories/shipengine/money.js +19 -0
- package/dist/esm/factories/shipengine/order-source.js +34 -0
- package/dist/esm/factories/shipengine/package.js +39 -0
- package/dist/esm/factories/shipengine/resource.js +21 -0
- package/dist/esm/factories/shipengine/shipment.js +168 -0
- package/dist/esm/factories/shipengine/weight.js +40 -0
- package/dist/esm/factories/utils.js +15 -0
- package/dist/esm/features/manage-carriers/hooks/use-list-funding-source-carriers.js +5 -7
- package/dist/esm/features/manage-carriers/manage-carriers.js +8 -6
- package/dist/esm/features/manage-warehouses/manage-warehouses.js +9 -5
- package/dist/esm/hooks/use-configure-shipment.js +55 -14
- package/dist/esm/hooks/use-get-funding-source-insurance-provider.js +7 -7
- package/dist/esm/hooks/use-get-service-data.js +58 -0
- package/dist/esm/hooks/use-import-sales-order.js +47 -22
- package/dist/esm/hooks/use-manage-funding-source-insurance.js +15 -23
- package/dist/esm/index.js +3 -0
- package/dist/esm/locales/en/common.json.js +1 -1
- package/dist/esm/locales/en/list-labels.json.js +2 -1
- package/dist/esm/locales/en/list-shipments.json.js +1 -1
- package/dist/esm/locales/en/manage-warehouses.json.js +2 -0
- package/dist/esm/locales/en/purchase-label.json.js +9 -1
- package/dist/esm/package.json.js +1 -1
- package/dist/esm/utilities/feature-flags/feature-flags.js +3 -1
- package/dist/esm/utilities/shipengine/carrier.js +4 -0
- package/dist/esm/utilities/shipengine/index.js +1 -1
- package/dist/esm/utilities/shipengine/insurance.js +61 -1
- package/dist/esm/workflows/onboarding/components/confirmation-and-submission-step/use-confirmation-and-submission-step.js +9 -9
- package/dist/esm/workflows/onboarding/components/ship-from-address-step/ship-from-address-step.js +1 -1
- package/dist/esm/workflows/onboarding/components/terms-agreement-form/terms-agreement-form.js +3 -2
- package/dist/esm/workflows/onboarding/components/terms-agreement-step/terms-agreement-step.js +8 -6
- package/dist/esm/workflows/onboarding/components/terms-agreement-step/use-terms-agreement-step.js +5 -20
- package/dist/types/components/field/rate-select/rate-card/rate-attribute-item/index.d.ts +2 -0
- package/dist/types/components/field/rate-select/rate-card/rate-attribute-item/index.d.ts.map +1 -0
- package/dist/types/components/field/rate-select/rate-card/rate-attribute-item/rate-attribute-item.d.ts +8 -0
- package/dist/types/components/field/rate-select/rate-card/rate-attribute-item/rate-attribute-item.d.ts.map +1 -0
- package/dist/types/components/field/rate-select/rate-card/rate-attribute-item/rate-attribute-item.styles.d.ts +22 -0
- package/dist/types/components/field/rate-select/rate-card/rate-attribute-item/rate-attribute-item.styles.d.ts.map +1 -0
- package/dist/types/components/field/rate-select/rate-card/rate-card.d.ts +3 -2
- package/dist/types/components/field/rate-select/rate-card/rate-card.d.ts.map +1 -1
- package/dist/types/components/field/rate-select/rate-card/rate-card.styles.d.ts +4 -0
- package/dist/types/components/field/rate-select/rate-card/rate-card.styles.d.ts.map +1 -1
- package/dist/types/components/field/rate-select/rate-select.d.ts.map +1 -1
- package/dist/types/components/forms/register-funding-source-insurance-form/register-funding-source-insurance-form.d.ts.map +1 -1
- package/dist/types/components/forms/warehouse-form/warehouse-form.d.ts.map +1 -1
- package/dist/types/components/service-card/service-card.d.ts +2 -1
- package/dist/types/components/service-card/service-card.d.ts.map +1 -1
- package/dist/types/components/service-card/service-card.styles.d.ts +2 -1
- package/dist/types/components/service-card/service-card.styles.d.ts.map +1 -1
- package/dist/types/elements/customs-form/customs-form-element.d.ts +1222 -0
- package/dist/types/elements/customs-form/customs-form-element.d.ts.map +1 -0
- package/dist/types/elements/customs-form/customs-form-element.stories.d.ts +12 -0
- package/dist/types/elements/customs-form/customs-form-element.stories.d.ts.map +1 -0
- package/dist/types/elements/customs-form/customs-form-schema.d.ts +398 -0
- package/dist/types/elements/customs-form/customs-form-schema.d.ts.map +1 -0
- package/dist/types/elements/customs-form/customs-form-types.d.ts +139 -0
- package/dist/types/elements/customs-form/customs-form-types.d.ts.map +1 -0
- package/dist/types/elements/customs-form/index.d.ts +4 -0
- package/dist/types/elements/customs-form/index.d.ts.map +1 -0
- package/dist/types/elements/index.d.ts +1 -0
- package/dist/types/elements/index.d.ts.map +1 -1
- package/dist/types/elements/labels-grid/labels-grid.d.ts +14 -3
- package/dist/types/elements/labels-grid/labels-grid.d.ts.map +1 -1
- package/dist/types/elements/labels-grid/labels-grid.styles.d.ts +5 -0
- package/dist/types/elements/labels-grid/labels-grid.styles.d.ts.map +1 -1
- package/dist/types/elements/manage-carriers/manage-carriers.d.ts +14 -3
- package/dist/types/elements/manage-carriers/manage-carriers.d.ts.map +1 -1
- package/dist/types/elements/manage-external-carriers/manage-external-carriers.d.ts +14 -3
- package/dist/types/elements/manage-external-carriers/manage-external-carriers.d.ts.map +1 -1
- package/dist/types/elements/manage-funding/manage-funding-element.d.ts +14 -3
- package/dist/types/elements/manage-funding/manage-funding-element.d.ts.map +1 -1
- package/dist/types/elements/manage-warehouses/manage-warehouses.d.ts +14 -3
- package/dist/types/elements/manage-warehouses/manage-warehouses.d.ts.map +1 -1
- package/dist/types/elements/payment-method-settings/payment-method-settings-element.d.ts +14 -3
- package/dist/types/elements/payment-method-settings/payment-method-settings-element.d.ts.map +1 -1
- package/dist/types/elements/purchase-label/components/index.d.ts +1 -0
- package/dist/types/elements/purchase-label/components/index.d.ts.map +1 -1
- package/dist/types/elements/purchase-label/components/rate-form/rate-view.d.ts +1 -1
- package/dist/types/elements/purchase-label/components/rate-form/rate-view.d.ts.map +1 -1
- package/dist/types/elements/purchase-label/components/shipment-form/shipment-form.d.ts.map +1 -1
- package/dist/types/elements/purchase-label/hooks/use-filter-visible-rate-options/use-filter-visible-rate-options.d.ts +6 -1
- package/dist/types/elements/purchase-label/hooks/use-filter-visible-rate-options/use-filter-visible-rate-options.d.ts.map +1 -1
- package/dist/types/elements/purchase-label/hooks/use-insurance-provider-options.d.ts.map +1 -1
- package/dist/types/elements/purchase-label/purchase-label.d.ts +14 -3
- package/dist/types/elements/purchase-label/purchase-label.d.ts.map +1 -1
- package/dist/types/elements/select-label-layout/select-label-layout-element.d.ts +14 -3
- package/dist/types/elements/select-label-layout/select-label-layout-element.d.ts.map +1 -1
- package/dist/types/elements/shipment-summary/shipment-summary.d.ts +14 -3
- package/dist/types/elements/shipment-summary/shipment-summary.d.ts.map +1 -1
- package/dist/types/elements/shipments-grid/shipments-grid.d.ts +14 -3
- package/dist/types/elements/shipments-grid/shipments-grid.d.ts.map +1 -1
- package/dist/types/elements/shipments-grid/shipments-grid.styles.d.ts +5 -0
- package/dist/types/elements/shipments-grid/shipments-grid.styles.d.ts.map +1 -1
- package/dist/types/elements/theme-creator/theme-creator.d.ts +14 -3
- package/dist/types/elements/theme-creator/theme-creator.d.ts.map +1 -1
- package/dist/types/elements/transaction-history/transaction-history-element.d.ts +14 -3
- package/dist/types/elements/transaction-history/transaction-history-element.d.ts.map +1 -1
- package/dist/types/elements/unit-settings/unit-settings-element.d.ts +14 -3
- package/dist/types/elements/unit-settings/unit-settings-element.d.ts.map +1 -1
- package/dist/types/elements/vat-settings/vat-settings-element.d.ts +14 -3
- package/dist/types/elements/vat-settings/vat-settings-element.d.ts.map +1 -1
- package/dist/types/elements/void-label/void-label.d.ts +14 -3
- package/dist/types/elements/void-label/void-label.d.ts.map +1 -1
- package/dist/types/features/manage-carriers/hooks/use-list-funding-source-carriers.d.ts.map +1 -1
- package/dist/types/features/manage-carriers/manage-carriers.d.ts.map +1 -1
- package/dist/types/features/manage-warehouses/manage-warehouses.d.ts.map +1 -1
- package/dist/types/hooks/use-configure-shipment.d.ts.map +1 -1
- package/dist/types/hooks/use-get-funding-source-insurance-provider.d.ts.map +1 -1
- package/dist/types/hooks/use-get-service-data.d.ts +14 -0
- package/dist/types/hooks/use-get-service-data.d.ts.map +1 -0
- package/dist/types/hooks/use-import-sales-order.d.ts +20 -1
- package/dist/types/hooks/use-import-sales-order.d.ts.map +1 -1
- package/dist/types/hooks/use-manage-funding-source-insurance.d.ts +3 -4
- package/dist/types/hooks/use-manage-funding-source-insurance.d.ts.map +1 -1
- package/dist/types/locales/en/index.d.ts +14 -3
- package/dist/types/locales/en/index.d.ts.map +1 -1
- package/dist/types/types/insurance-metadata.d.ts +1 -1
- package/dist/types/types/insurance-metadata.d.ts.map +1 -1
- package/dist/types/types/rates.d.ts +1 -0
- package/dist/types/types/rates.d.ts.map +1 -1
- package/dist/types/utilities/feature-flags/feature-flags.d.ts.map +1 -1
- package/dist/types/utilities/feature-flags/types.d.ts +8 -0
- package/dist/types/utilities/feature-flags/types.d.ts.map +1 -1
- package/dist/types/utilities/shipengine/carrier.d.ts.map +1 -1
- package/dist/types/utilities/shipengine/insurance.d.ts +31 -0
- package/dist/types/utilities/shipengine/insurance.d.ts.map +1 -1
- package/dist/types/workflows/account-settings/account-settings.d.ts +14 -3
- package/dist/types/workflows/account-settings/account-settings.d.ts.map +1 -1
- package/dist/types/workflows/carrier-services/carrier-services.d.ts +14 -3
- package/dist/types/workflows/carrier-services/carrier-services.d.ts.map +1 -1
- package/dist/types/workflows/connect-external-carrier/connect-external-carrier.d.ts +14 -3
- package/dist/types/workflows/connect-external-carrier/connect-external-carrier.d.ts.map +1 -1
- package/dist/types/workflows/label-workflow/label-workflow.d.ts +14 -3
- package/dist/types/workflows/label-workflow/label-workflow.d.ts.map +1 -1
- package/dist/types/workflows/onboarding/components/confirmation-and-submission-step/use-confirmation-and-submission-step.d.ts.map +1 -1
- package/dist/types/workflows/onboarding/components/ship-from-address-step/ship-from-address-step.d.ts.map +1 -1
- package/dist/types/workflows/onboarding/components/terms-agreement-step/terms-agreement-step.d.ts.map +1 -1
- package/dist/types/workflows/onboarding/components/terms-agreement-step/use-terms-agreement-step.d.ts +1 -5
- package/dist/types/workflows/onboarding/components/terms-agreement-step/use-terms-agreement-step.d.ts.map +1 -1
- package/dist/types/workflows/onboarding/onboarding.d.ts +14 -3
- package/dist/types/workflows/onboarding/onboarding.d.ts.map +1 -1
- package/package.json +3 -3
- package/dist/cjs/hooks/use-get-service-name.cjs +0 -22
- package/dist/esm/hooks/use-get-service-name.js +0 -20
- package/dist/types/hooks/use-get-service-name.d.ts +0 -5
- package/dist/types/hooks/use-get-service-name.d.ts.map +0 -1
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
import { __rest } from '../../_virtual/_tslib.js';
|
|
2
|
+
import { faker } from '@faker-js/faker';
|
|
3
|
+
import { SE } from '@shipengine/react-api';
|
|
4
|
+
import { Factory } from 'fishery';
|
|
5
|
+
import { randomShipengineSlug, randomShipengineId, tristateValue } from '../utils.js';
|
|
6
|
+
import { addressFactory, addressValidationFactory } from './address.js';
|
|
7
|
+
import { moneyFactory } from './money.js';
|
|
8
|
+
import { randomOrderSourceCode } from './order-source.js';
|
|
9
|
+
import { packageFactory } from './package.js';
|
|
10
|
+
import { downloadFactory } from './resource.js';
|
|
11
|
+
import { weightWithUnitFactory } from './weight.js';
|
|
12
|
+
|
|
13
|
+
const randomDeliveryConfirmation = () => faker.helpers.arrayElement(Object.values(SE.ConfirmationType));
|
|
14
|
+
const randomInsuranceProvider = (allowNone = true) => {
|
|
15
|
+
const availableProviders = Object.values(SE.InsuranceProviderType).filter(p => allowNone ? p : p !== "none");
|
|
16
|
+
return faker.helpers.arrayElement(availableProviders);
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* @category Factories
|
|
20
|
+
*/
|
|
21
|
+
const productFactory = Factory.define(() => ({
|
|
22
|
+
countryOfOrigin: faker.address.countryCode(),
|
|
23
|
+
description: faker.commerce.productName(),
|
|
24
|
+
harmonizedTariffCode: faker.datatype.string(),
|
|
25
|
+
quantity: faker.datatype.number({
|
|
26
|
+
max: 10,
|
|
27
|
+
min: 1
|
|
28
|
+
}),
|
|
29
|
+
sku: faker.random.numeric(10),
|
|
30
|
+
skuDescription: faker.helpers.maybe(() => faker.lorem.sentence()),
|
|
31
|
+
unitOfMeasure: faker.helpers.maybe(() => faker.word.noun()),
|
|
32
|
+
value: moneyFactory.build()
|
|
33
|
+
}));
|
|
34
|
+
/**
|
|
35
|
+
* @category Factories
|
|
36
|
+
*/
|
|
37
|
+
const shipmentItemFactory = Factory.define(({
|
|
38
|
+
params
|
|
39
|
+
}) => ({
|
|
40
|
+
asin: faker.helpers.maybe(() => faker.random.alphaNumeric(10)),
|
|
41
|
+
externalOrderId: faker.random.alphaNumeric(10),
|
|
42
|
+
externalOrderItemId: faker.random.alphaNumeric(10),
|
|
43
|
+
name: faker.commerce.productName(),
|
|
44
|
+
orderSourceCode: randomOrderSourceCode(),
|
|
45
|
+
quantity: faker.datatype.number({
|
|
46
|
+
max: 10,
|
|
47
|
+
min: 1
|
|
48
|
+
}),
|
|
49
|
+
salesOrderItemId: params.salesOrderId && faker.random.alphaNumeric(6),
|
|
50
|
+
sku: faker.random.numeric(10)
|
|
51
|
+
}));
|
|
52
|
+
/**
|
|
53
|
+
* @category Factories
|
|
54
|
+
*/
|
|
55
|
+
const shipmentPackageFactory = Factory.define(({
|
|
56
|
+
associations,
|
|
57
|
+
params,
|
|
58
|
+
transientParams
|
|
59
|
+
}) => {
|
|
60
|
+
var _a, _b, _c, _d, _e;
|
|
61
|
+
const _f = packageFactory.build(params),
|
|
62
|
+
pkg = __rest(_f, ["name"]);
|
|
63
|
+
const isInsured = tristateValue(true, false, faker.datatype.boolean(), (_b = (_a = params.insuredValue) === null || _a === void 0 ? void 0 : _a.amount) !== null && _b !== void 0 ? _b : transientParams.isInsured);
|
|
64
|
+
return Object.assign(Object.assign({}, pkg), {
|
|
65
|
+
insuredValue: (_c = associations.insuredValue) !== null && _c !== void 0 ? _c : isInsured ? moneyFactory.build(params.insuredValue) : undefined,
|
|
66
|
+
labelDownload: (_d = associations.labelDownload) !== null && _d !== void 0 ? _d : transientParams.isShipped ? downloadFactory.build(params.labelDownload) : undefined,
|
|
67
|
+
labelMessages: associations.labelMessages,
|
|
68
|
+
products: transientParams.isInternational ? productFactory.buildList(1) : [],
|
|
69
|
+
trackingNumber: transientParams.isShipped ? faker.random.alphaNumeric(12, {
|
|
70
|
+
casing: "upper"
|
|
71
|
+
}) : undefined,
|
|
72
|
+
weight: (_e = associations.weight) !== null && _e !== void 0 ? _e : weightWithUnitFactory.build(params.weight)
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
/**
|
|
76
|
+
* @category Factories
|
|
77
|
+
*/
|
|
78
|
+
const shipmentFactory = Factory.define(({
|
|
79
|
+
associations,
|
|
80
|
+
params,
|
|
81
|
+
sequence,
|
|
82
|
+
transientParams
|
|
83
|
+
}) => {
|
|
84
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x;
|
|
85
|
+
const shipTo = (_a = associations.shipTo) !== null && _a !== void 0 ? _a : addressFactory.build(params.shipTo, {
|
|
86
|
+
transient: {
|
|
87
|
+
isInternational: transientParams.isInternational
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
let insuranceProvider = SE.InsuranceProviderType.NONE;
|
|
91
|
+
if (transientParams.insuredValue || transientParams.isInsured) {
|
|
92
|
+
insuranceProvider = (_b = params.insuranceProvider) !== null && _b !== void 0 ? _b : randomInsuranceProvider(false);
|
|
93
|
+
} else if (transientParams.insuredValue === undefined && transientParams.isInsured === undefined) {
|
|
94
|
+
insuranceProvider = randomInsuranceProvider(true);
|
|
95
|
+
}
|
|
96
|
+
const shipDateObj = faker.date.soon(7);
|
|
97
|
+
shipDateObj.setHours(0, 0, 0, 0);
|
|
98
|
+
const totalWeight = (_c = associations.totalWeight) !== null && _c !== void 0 ? _c : weightWithUnitFactory.build(params.totalWeight);
|
|
99
|
+
return {
|
|
100
|
+
addressValidation: (_d = associations.addressValidation) !== null && _d !== void 0 ? _d : addressValidationFactory.build(params.addressValidation, {
|
|
101
|
+
associations: {
|
|
102
|
+
originalAddress: shipTo
|
|
103
|
+
}
|
|
104
|
+
}),
|
|
105
|
+
amountPaid: moneyFactory.build(),
|
|
106
|
+
carrierId: (_f = (_e = transientParams === null || transientParams === void 0 ? void 0 : transientParams.service) === null || _e === void 0 ? void 0 : _e.carrierId) !== null && _f !== void 0 ? _f : randomShipengineId(),
|
|
107
|
+
confirmation: randomDeliveryConfirmation(),
|
|
108
|
+
createdAt: faker.date.past().toISOString(),
|
|
109
|
+
customs: (_g = associations.customs) !== null && _g !== void 0 ? _g : transientParams.isInternational ? {
|
|
110
|
+
contents: faker.helpers.arrayElement(["documents", "gift", "merchandise", "returned_goods", "sample"]),
|
|
111
|
+
nonDelivery: faker.helpers.arrayElement(["return_to_sender", "treat_as_abandoned"])
|
|
112
|
+
} : undefined,
|
|
113
|
+
externalOrderId: faker.random.alphaNumeric(10),
|
|
114
|
+
externalShipmentId: faker.random.alphaNumeric(10),
|
|
115
|
+
insuranceProvider,
|
|
116
|
+
items: shipmentItemFactory.buildList(faker.datatype.number({
|
|
117
|
+
max: 10,
|
|
118
|
+
min: 1
|
|
119
|
+
}), transientParams.salesOrder ? {
|
|
120
|
+
externalOrderId: transientParams.salesOrder.externalOrderId,
|
|
121
|
+
orderSourceCode: transientParams.salesOrder.orderSource.orderSourceCode,
|
|
122
|
+
salesOrderId: (_h = transientParams.salesOrder) === null || _h === void 0 ? void 0 : _h.salesOrderId
|
|
123
|
+
} : {}),
|
|
124
|
+
modifiedAt: faker.date.recent().toISOString(),
|
|
125
|
+
orderSourceCode: (_k = (_j = transientParams.salesOrder) === null || _j === void 0 ? void 0 : _j.orderSource.orderSourceCode) !== null && _k !== void 0 ? _k : randomOrderSourceCode(),
|
|
126
|
+
packages: (_l = associations.packages) !== null && _l !== void 0 ? _l : shipmentPackageFactory.buildList(1, (_m = params.packages) === null || _m === void 0 ? void 0 : _m[0], {
|
|
127
|
+
associations: {
|
|
128
|
+
weight: totalWeight
|
|
129
|
+
},
|
|
130
|
+
transient: {
|
|
131
|
+
isInsured: insuranceProvider !== "none",
|
|
132
|
+
isInternational: transientParams.isInternational,
|
|
133
|
+
isShipped: transientParams.isShipped
|
|
134
|
+
}
|
|
135
|
+
}),
|
|
136
|
+
returnTo: (_q = (_o = associations.returnTo) !== null && _o !== void 0 ? _o : (_p = transientParams.warehouse) === null || _p === void 0 ? void 0 : _p.returnAddress) !== null && _q !== void 0 ? _q : addressFactory.build(),
|
|
137
|
+
serviceCode: (_s = (_r = transientParams.service) === null || _r === void 0 ? void 0 : _r.serviceCode) !== null && _s !== void 0 ? _s : randomShipengineSlug(),
|
|
138
|
+
shipDate: shipDateObj.toISOString(),
|
|
139
|
+
shipFrom: (_v = (_t = associations.shipFrom) !== null && _t !== void 0 ? _t : (_u = transientParams.warehouse) === null || _u === void 0 ? void 0 : _u.originAddress) !== null && _v !== void 0 ? _v : addressFactory.build(),
|
|
140
|
+
shipmentId: `se-${30000 + sequence}`,
|
|
141
|
+
shipmentStatus: transientParams.isShipped ? "label_purchased" : "pending",
|
|
142
|
+
shippingPaid: moneyFactory.build(),
|
|
143
|
+
shipTo,
|
|
144
|
+
tags: (_w = associations.tags) !== null && _w !== void 0 ? _w : [],
|
|
145
|
+
taxPaid: moneyFactory.build(),
|
|
146
|
+
totalWeight,
|
|
147
|
+
warehouseId: (_x = transientParams.warehouse) === null || _x === void 0 ? void 0 : _x.warehouseId
|
|
148
|
+
};
|
|
149
|
+
});
|
|
150
|
+
/**
|
|
151
|
+
* @category Factories
|
|
152
|
+
*/
|
|
153
|
+
const salesOrderShipmentFactory = Factory.define(({
|
|
154
|
+
associations,
|
|
155
|
+
params,
|
|
156
|
+
transientParams
|
|
157
|
+
}) => {
|
|
158
|
+
var _a, _b, _c;
|
|
159
|
+
const shipment = shipmentFactory.build(params, {
|
|
160
|
+
associations,
|
|
161
|
+
transient: transientParams
|
|
162
|
+
});
|
|
163
|
+
return Object.assign(Object.assign({}, shipment), {
|
|
164
|
+
salesOrderIds: (_a = associations.salesOrderIds) !== null && _a !== void 0 ? _a : [(_c = (_b = transientParams.salesOrder) === null || _b === void 0 ? void 0 : _b.salesOrderId) !== null && _c !== void 0 ? _c : faker.datatype.uuid()]
|
|
165
|
+
});
|
|
166
|
+
});
|
|
167
|
+
|
|
168
|
+
export { productFactory, randomDeliveryConfirmation, randomInsuranceProvider, salesOrderShipmentFactory, shipmentFactory, shipmentItemFactory, shipmentPackageFactory };
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { faker } from '@faker-js/faker';
|
|
2
|
+
import { Factory } from 'fishery';
|
|
3
|
+
|
|
4
|
+
const randomWeightUnit = () => faker.helpers.arrayElement(["pound", "ounce", "gram", "kilogram"]);
|
|
5
|
+
/**
|
|
6
|
+
* @category Factories
|
|
7
|
+
*/
|
|
8
|
+
Factory.define(() => ({
|
|
9
|
+
fractional: faker.datatype.number({
|
|
10
|
+
max: 16,
|
|
11
|
+
min: 0
|
|
12
|
+
}),
|
|
13
|
+
whole: faker.datatype.number({
|
|
14
|
+
max: 20,
|
|
15
|
+
min: 0
|
|
16
|
+
})
|
|
17
|
+
}));
|
|
18
|
+
/**
|
|
19
|
+
* @category Factories
|
|
20
|
+
*/
|
|
21
|
+
const weightFactory = Factory.define(() => ({
|
|
22
|
+
value: faker.datatype.number({
|
|
23
|
+
max: 20,
|
|
24
|
+
min: 1,
|
|
25
|
+
precision: 0.1
|
|
26
|
+
})
|
|
27
|
+
}));
|
|
28
|
+
/**
|
|
29
|
+
* @category Factories
|
|
30
|
+
*/
|
|
31
|
+
const weightWithUnitFactory = Factory.define(({
|
|
32
|
+
params
|
|
33
|
+
}) => {
|
|
34
|
+
const weight = weightFactory.build(params);
|
|
35
|
+
return Object.assign(Object.assign({}, weight), {
|
|
36
|
+
unit: randomWeightUnit()
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
export { randomWeightUnit, weightFactory, weightWithUnitFactory };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { faker } from '@faker-js/faker';
|
|
2
|
+
|
|
3
|
+
const randomShipengineId = (length = 5) => `se-${faker.random.numeric(length)}`;
|
|
4
|
+
const randomShipengineSlug = wordCount => faker.lorem.slug(wordCount).replace("-", "_");
|
|
5
|
+
const tristateValue = (ifTrue, ifFalse, ifUndefined, value) => {
|
|
6
|
+
if (value === undefined) {
|
|
7
|
+
return ifUndefined;
|
|
8
|
+
}
|
|
9
|
+
if (value) {
|
|
10
|
+
return ifTrue;
|
|
11
|
+
}
|
|
12
|
+
return ifFalse;
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
export { randomShipengineId, randomShipengineSlug, tristateValue };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { useListCarriers, useGetFundingSourceMetadata, useGetInsuranceFundingSourceAcceptedTerms } from '@shipengine/react-api';
|
|
2
2
|
import { filterFundingSourceCarriers } from '../../../utilities/shipengine/carrier.js';
|
|
3
|
-
import {
|
|
3
|
+
import { groupTermsByProvider, getIsInsuraceProviderAccepted } from '../../../utilities/shipengine/insurance.js';
|
|
4
4
|
import { useMemo } from 'react';
|
|
5
5
|
import { useCarrierMetadata } from './use-carrier-metadata.js';
|
|
6
6
|
|
|
@@ -36,12 +36,10 @@ const useListFundingSourceCarriers = () => {
|
|
|
36
36
|
//TODO: Remove hardcoded carrierMetadata and insuranceProviderMetadata when the friendlyName is available in the funding source metadata response
|
|
37
37
|
const carrierMetadata = useCarrierMetadata();
|
|
38
38
|
const insuranceProviderProfiles = useMemo(() => {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
}, getInsuranceProviderWithFriendlyName(t.termType));
|
|
44
|
-
});
|
|
39
|
+
const groupedProfiles = groupTermsByProvider(optionalTerms);
|
|
40
|
+
return groupedProfiles.map(profile => Object.assign(Object.assign({}, profile), {
|
|
41
|
+
agreedToTerms: profile.terms.some(term => getIsInsuraceProviderAccepted(term.termType, insuranceProviderAcceptedTerms === null || insuranceProviderAcceptedTerms === void 0 ? void 0 : insuranceProviderAcceptedTerms.acceptedTerms))
|
|
42
|
+
}));
|
|
45
43
|
}, [optionalTerms, insuranceProviderAcceptedTerms]);
|
|
46
44
|
const normalizeCarrierCode = (carrierCode, nickname) => carrierCode === "usps" || (nickname === null || nickname === void 0 ? void 0 : nickname.includes("free")) ? "stamps_com" : carrierCode;
|
|
47
45
|
const normalizeConnectedCarrierCodes = new Set(connectedCarriers === null || connectedCarriers === void 0 ? void 0 : connectedCarriers.map(c => normalizeCarrierCode(c.carrierCode, c.nickname)));
|
|
@@ -8,6 +8,7 @@ import { useState, useMemo, useCallback } from 'react';
|
|
|
8
8
|
import { useTranslation } from 'react-i18next';
|
|
9
9
|
import { styles } from './manage-carriers.styles.js';
|
|
10
10
|
import { useListFundingSourceCarriers } from './hooks/use-list-funding-source-carriers.js';
|
|
11
|
+
import { getIsFundingSourceInsuranceProviderEnabledAndSupported } from '../../utilities/shipengine/insurance.js';
|
|
11
12
|
import { SkeletonCarrierRow } from '../../components/skeleton/skeleton-carrier-row.js';
|
|
12
13
|
import { ManageFunding } from '../manage-funding/manage-funding.js';
|
|
13
14
|
import { ManageCarriersRow } from './manage-carriers-row/manage-carriers-row.js';
|
|
@@ -41,6 +42,7 @@ const ShipEngineCarriers = ({
|
|
|
41
42
|
refetch: refetchCarriers,
|
|
42
43
|
refetchInsuranceProviderAcceptedTerms
|
|
43
44
|
} = useListFundingSourceCarriers();
|
|
45
|
+
const isInsuranceEnabled = getIsFundingSourceInsuranceProviderEnabledAndSupported(insuranceProviderProfiles, globalFeatures.enableXCover, globalFeatures.enableParcelGuard);
|
|
44
46
|
const hasConnectedCarriers = useMemo(() => fundingSourceCarriers === null || fundingSourceCarriers === void 0 ? void 0 : fundingSourceCarriers.some(c => c.isConnected), [fundingSourceCarriers]);
|
|
45
47
|
const {
|
|
46
48
|
data: warehouses
|
|
@@ -101,10 +103,10 @@ const ShipEngineCarriers = ({
|
|
|
101
103
|
const handleRegisterProvider = useCallback(p => __awaiter(void 0, void 0, void 0, function* () {
|
|
102
104
|
return yield handleRegistration({
|
|
103
105
|
insuranceProviders: [{
|
|
104
|
-
acceptedTerms: [{
|
|
105
|
-
termType:
|
|
106
|
-
version:
|
|
107
|
-
}],
|
|
106
|
+
acceptedTerms: [...p.terms.map(term => ({
|
|
107
|
+
termType: term.termType,
|
|
108
|
+
version: term.version
|
|
109
|
+
}))],
|
|
108
110
|
agreeToTerms: true,
|
|
109
111
|
fundingSourceId: fundingSourceId !== null && fundingSourceId !== void 0 ? fundingSourceId : "",
|
|
110
112
|
provider: p.provider
|
|
@@ -176,12 +178,12 @@ const ShipEngineCarriers = ({
|
|
|
176
178
|
}),
|
|
177
179
|
setCarrierToConnect: setCarrierToConnect
|
|
178
180
|
})
|
|
179
|
-
}, carrier.carrier.carrierProfile.carrierCode)),
|
|
181
|
+
}, carrier.carrier.carrierProfile.carrierCode)), isInsuranceEnabled && (insuranceProviderProfiles === null || insuranceProviderProfiles === void 0 ? void 0 : insuranceProviderProfiles.map(p => jsx("li", {
|
|
180
182
|
children: jsx(ManageInsuranceProviderRow, {
|
|
181
183
|
insuranceProviderProfile: p,
|
|
182
184
|
registerProvider: handleRegisterProvider
|
|
183
185
|
})
|
|
184
|
-
}, p.terms.termType)))]
|
|
186
|
+
}, p.terms[0].termType)))]
|
|
185
187
|
})
|
|
186
188
|
})]
|
|
187
189
|
});
|
|
@@ -105,6 +105,7 @@ const ManageWarehouses = ({
|
|
|
105
105
|
yield handleSubmitAddNewWarehouse(payload);
|
|
106
106
|
toggleShowAddNewWarehouseForm(false);
|
|
107
107
|
}),
|
|
108
|
+
shouldForceDefault: !(warehouses === null || warehouses === void 0 ? void 0 : warehouses.length),
|
|
108
109
|
submitButtonTitle: t("actions.save")
|
|
109
110
|
})
|
|
110
111
|
}) : jsx(ButtonGroup, {
|
|
@@ -139,17 +140,20 @@ const ManageWarehouses = ({
|
|
|
139
140
|
yield handleSubmitEditWarehouse(Object.assign(Object.assign({}, rest), warehouseData), warehouse.warehouseId);
|
|
140
141
|
setEditWarehouseId(undefined);
|
|
141
142
|
}),
|
|
142
|
-
children: jsx(WarehouseForm
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
onDelete: warehouse.isDefault ? undefined : () => handleDeleteWarehouse(warehouse.warehouseId),
|
|
143
|
+
children: jsx(WarehouseForm
|
|
144
|
+
// eslint-disable-next-line @typescript-eslint/no-misused-promises
|
|
145
|
+
, {
|
|
146
146
|
// eslint-disable-next-line @typescript-eslint/no-misused-promises
|
|
147
147
|
onSubmit: payload => __awaiter(void 0, void 0, void 0, function* () {
|
|
148
148
|
yield handleSubmitEditWarehouse(payload, warehouse.warehouseId);
|
|
149
149
|
setEditWarehouseId(undefined);
|
|
150
150
|
}),
|
|
151
|
+
shouldForceDefault: warehouse.isDefault,
|
|
151
152
|
submitButtonTitle: t("actions.save"),
|
|
152
|
-
warehouse: warehouse
|
|
153
|
+
warehouse: warehouse,
|
|
154
|
+
onCancel: () => setEditWarehouseId(undefined),
|
|
155
|
+
// eslint-disable-next-line @typescript-eslint/no-misused-promises
|
|
156
|
+
onDelete: warehouse.isDefault ? undefined : () => handleDeleteWarehouse(warehouse.warehouseId)
|
|
153
157
|
})
|
|
154
158
|
}, warehouse.warehouseId);
|
|
155
159
|
} else {
|
|
@@ -20,8 +20,8 @@ const useConfigureShipment = ({
|
|
|
20
20
|
warehouseId,
|
|
21
21
|
useWarehouses = true
|
|
22
22
|
}) => {
|
|
23
|
-
// Track when
|
|
24
|
-
const [
|
|
23
|
+
// Track when user manually created a shipment for a "not found" case
|
|
24
|
+
const [manuallyCreatedShipmentId, setManuallyCreatedShipmentId] = useState();
|
|
25
25
|
// Queue of incomplete requirement keys (i.e., Ship From addresses, Warehouses, Carriers)
|
|
26
26
|
const incompleteRequirementsKeys = useMemo(() => [], []);
|
|
27
27
|
const {
|
|
@@ -45,6 +45,7 @@ const useConfigureShipment = ({
|
|
|
45
45
|
// Dont run Sales Order Import unless the Sales order info is present
|
|
46
46
|
enabled: !!externalOrderNumber || !!orderSourceCode || !!salesOrderId || !!externalOrderId,
|
|
47
47
|
externalOrderId,
|
|
48
|
+
externalOrderNumber,
|
|
48
49
|
orderSourceCode,
|
|
49
50
|
salesOrderId
|
|
50
51
|
});
|
|
@@ -61,24 +62,49 @@ const useConfigureShipment = ({
|
|
|
61
62
|
isInitialLoading: isExternalShipmentInitialLoading,
|
|
62
63
|
isFetching: isExternalShipmentFetching
|
|
63
64
|
} = useGetShipmentByExternalId({
|
|
64
|
-
enabled: !!externalShipmentId && !shipmentId,
|
|
65
|
+
enabled: !!externalShipmentId && !shipmentId && !manuallyCreatedShipmentId,
|
|
65
66
|
queryFnParams: {
|
|
66
67
|
externalId: externalShipmentId !== null && externalShipmentId !== void 0 ? externalShipmentId : ""
|
|
67
68
|
}
|
|
69
|
+
// TODO: weird refetch on focus behavior
|
|
68
70
|
});
|
|
71
|
+
// #region List Sales Order Shipments
|
|
72
|
+
const externalOrderIds = useMemo(() => {
|
|
73
|
+
return externalOrderId ? [externalOrderId] : undefined;
|
|
74
|
+
}, [externalOrderId]);
|
|
75
|
+
const salesOrderIds = useMemo(() => {
|
|
76
|
+
return salesOrderId ? [salesOrderId] : salesOrder ? [salesOrder.salesOrderId] :
|
|
77
|
+
// TODO: current workaround - revert to being undefined rather than empty list
|
|
78
|
+
[];
|
|
79
|
+
}, [salesOrderId, salesOrder]);
|
|
80
|
+
const shipmentIds = useMemo(() => {
|
|
81
|
+
return manuallyCreatedShipmentId ? [manuallyCreatedShipmentId] : shipmentId ? [shipmentId] : externalShipment ? [externalShipment.shipmentId] : newV1Shipment ? [newV1Shipment.shipments[0].shipmentId] : undefined;
|
|
82
|
+
}, [manuallyCreatedShipmentId, shipmentId, externalShipment, newV1Shipment]);
|
|
83
|
+
const listSalesOrderShipmentsParams = useMemo(() => {
|
|
84
|
+
// TODO: useListSalesOrderShipments needs to be able to use the enabled prop, this is a workaround
|
|
85
|
+
// Prevent query with stale params during shipment creation or when V1 shipment exists but manuallyCreatedShipmentId not set
|
|
86
|
+
if (creatingV1Shipment && !manuallyCreatedShipmentId || newV1Shipment && !manuallyCreatedShipmentId) {
|
|
87
|
+
return {};
|
|
88
|
+
}
|
|
89
|
+
if (manuallyCreatedShipmentId) {
|
|
90
|
+
return {
|
|
91
|
+
shipmentIds
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
return {
|
|
95
|
+
externalOrderIds,
|
|
96
|
+
salesOrderIds,
|
|
97
|
+
shipmentIds
|
|
98
|
+
};
|
|
99
|
+
}, [manuallyCreatedShipmentId, externalOrderIds, salesOrderIds, shipmentIds, creatingV1Shipment, newV1Shipment]);
|
|
69
100
|
const {
|
|
70
101
|
data: salesOrderShipments,
|
|
71
102
|
error: listSalesOrderShipmentsErrors,
|
|
72
103
|
refetch: refetchSalesOrderShipments,
|
|
73
104
|
isInitialLoading: listSalesOrderShipmentsInitiallyLoading,
|
|
74
105
|
isFetching: listSalesOrderShipmentsIsFetching
|
|
75
|
-
} = useListSalesOrderShipments(
|
|
76
|
-
|
|
77
|
-
salesOrderIds: salesOrderId ? [salesOrderId] : salesOrder ? [salesOrder.salesOrderId] :
|
|
78
|
-
// TODO: current workaround - revert to being undefined rather than empty list
|
|
79
|
-
[],
|
|
80
|
-
shipmentIds: replacementShipmentId ? [replacementShipmentId] : shipmentId ? [shipmentId] : externalShipment ? [externalShipment.shipmentId] : newV1Shipment ? [newV1Shipment.shipments[0].shipmentId] : undefined
|
|
81
|
-
});
|
|
106
|
+
} = useListSalesOrderShipments(listSalesOrderShipmentsParams);
|
|
107
|
+
// #endregion
|
|
82
108
|
const {
|
|
83
109
|
error: createSalesOrderShipmentErrors,
|
|
84
110
|
mutateAsync: createSalesOrderShipment,
|
|
@@ -86,6 +112,14 @@ const useConfigureShipment = ({
|
|
|
86
112
|
isSuccess: salesOrderShipmentCreated
|
|
87
113
|
} = useCreateSalesOrderShipment();
|
|
88
114
|
const pendingSalesOrderShipment = getShipmentByStatus("pending", salesOrderShipments);
|
|
115
|
+
if (pendingSalesOrderShipment) {
|
|
116
|
+
// ensure state code is uppercase for form hydration. SE API may return mixed case state codes.
|
|
117
|
+
pendingSalesOrderShipment.shipFrom.stateProvince = pendingSalesOrderShipment.shipFrom.stateProvince.toUpperCase();
|
|
118
|
+
pendingSalesOrderShipment.shipTo.stateProvince = pendingSalesOrderShipment.shipTo.stateProvince.toUpperCase();
|
|
119
|
+
if (pendingSalesOrderShipment.returnTo) {
|
|
120
|
+
pendingSalesOrderShipment.returnTo.stateProvince = pendingSalesOrderShipment.returnTo.stateProvince.toUpperCase();
|
|
121
|
+
}
|
|
122
|
+
}
|
|
89
123
|
const labelPurchasedSalesOrderShipment = getShipmentByStatus("label_purchased", salesOrderShipments);
|
|
90
124
|
const cancelledShipment = getShipmentByStatus("cancelled", salesOrderShipments);
|
|
91
125
|
const defaultWarehouse = getDefaultWarehouse(warehouses);
|
|
@@ -103,6 +137,7 @@ const useConfigureShipment = ({
|
|
|
103
137
|
}
|
|
104
138
|
return null;
|
|
105
139
|
}), [createV1Shipment, defaultShipFromAddress, defaultWarehouse, warehouseId, refetchSalesOrderShipments]);
|
|
140
|
+
// #region Create Sales Order Shipment
|
|
106
141
|
// Handles the creation of new shipments for the sales order flow and one-off flow
|
|
107
142
|
const handleShipmentCreation = useCallback(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
108
143
|
var _a, _b, _c;
|
|
@@ -152,17 +187,23 @@ const useConfigureShipment = ({
|
|
|
152
187
|
}
|
|
153
188
|
// Create a Shipment for one-off flow
|
|
154
189
|
if (!salesOrderId && !externalOrderId && !externalOrderNumber && !orderSourceCode && !shipmentId && !externalShipmentId) {
|
|
155
|
-
yield createV1ShipmentWithDefaults();
|
|
190
|
+
const v1Shipment = yield createV1ShipmentWithDefaults();
|
|
191
|
+
// Set manuallyCreatedShipmentId to ensure proper query parameter handling
|
|
192
|
+
if (v1Shipment) {
|
|
193
|
+
setManuallyCreatedShipmentId(v1Shipment.shipments[0].shipmentId);
|
|
194
|
+
}
|
|
156
195
|
}
|
|
157
196
|
}), [createSalesOrderShipment, createV1ShipmentWithDefaults, creatingSalesOrderShipment, creatingV1Shipment, defaultShipFromAddress, defaultWarehouse, externalOrderId, externalOrderNumber, externalShipmentId, incompleteRequirementsKeys, isExternalShipmentFetching, isExternalShipmentInitialLoading, isFetchingWarehouses, isInitialLoadingWarehouses, labelPurchasedSalesOrderShipment, listSalesOrderShipmentsInitiallyLoading, listSalesOrderShipmentsIsFetching, orderSourceCode, pendingSalesOrderShipment, salesOrder, salesOrderId, salesOrderShipmentCreated, shipFromAddresses === null || shipFromAddresses === void 0 ? void 0 : shipFromAddresses.length, shipmentId, useWarehouses, v1shipmentCreated, warehouseId, warehouses]);
|
|
197
|
+
// #endregion
|
|
158
198
|
const createNewShipmentForNotFound = useCallback(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
159
199
|
// Force create a new shipment even if shipmentId exists (for shipment_not_found case)
|
|
160
200
|
const v1Shipment = yield createV1ShipmentWithDefaults();
|
|
161
201
|
if (v1Shipment) {
|
|
162
|
-
|
|
163
|
-
|
|
202
|
+
setManuallyCreatedShipmentId(v1Shipment.shipments[0].shipmentId);
|
|
203
|
+
// Refetch to ensure we have the latest shipment data
|
|
204
|
+
yield refetchSalesOrderShipments();
|
|
164
205
|
}
|
|
165
|
-
}), [createV1ShipmentWithDefaults]);
|
|
206
|
+
}), [createV1ShipmentWithDefaults, refetchSalesOrderShipments]);
|
|
166
207
|
const refetchPendingSalesOrderShipments = useCallback(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
167
208
|
const {
|
|
168
209
|
data: shipments
|
|
@@ -14,14 +14,15 @@ import { useElements } from '../elements-provider/elements-context-provider.js';
|
|
|
14
14
|
const useGetFundingSourceInsuranceProvider = () => {
|
|
15
15
|
const {
|
|
16
16
|
globalFeatures: {
|
|
17
|
-
enableParcelGuard
|
|
17
|
+
enableParcelGuard,
|
|
18
|
+
enableXCover
|
|
18
19
|
}
|
|
19
20
|
} = useElements();
|
|
20
21
|
const {
|
|
21
22
|
data,
|
|
22
23
|
refetch: refetchInsuranceAcceptedTerms
|
|
23
24
|
} = useGetInsuranceFundingSourceAcceptedTerms({
|
|
24
|
-
enabled: enableParcelGuard
|
|
25
|
+
enabled: enableParcelGuard || enableXCover
|
|
25
26
|
});
|
|
26
27
|
const fundingSourceInsuranceProvider = useMemo(() => {
|
|
27
28
|
var _a;
|
|
@@ -30,13 +31,12 @@ const useGetFundingSourceInsuranceProvider = () => {
|
|
|
30
31
|
if (enableParcelGuard && term.termType === "parcelguard_terms") {
|
|
31
32
|
provider = "parcelguard";
|
|
32
33
|
}
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
// }
|
|
34
|
+
if (enableXCover && term.termType === "xcover_terms") {
|
|
35
|
+
provider = "x_cover";
|
|
36
|
+
}
|
|
37
37
|
});
|
|
38
38
|
return provider;
|
|
39
|
-
}, [data, enableParcelGuard]);
|
|
39
|
+
}, [data === null || data === void 0 ? void 0 : data.acceptedTerms, enableParcelGuard, enableXCover]);
|
|
40
40
|
return {
|
|
41
41
|
fundingSourceInsuranceProvider,
|
|
42
42
|
refetchInsuranceAcceptedTerms
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { useListCarriers } from '@shipengine/react-api';
|
|
2
|
+
import { useCallback } from 'react';
|
|
3
|
+
|
|
4
|
+
const formatServiceCode = serviceCode => {
|
|
5
|
+
return serviceCode.split("_").map((word, index) => {
|
|
6
|
+
if (index === 0) return word.toUpperCase();
|
|
7
|
+
return word.charAt(0).toUpperCase() + word.slice(1).toLowerCase();
|
|
8
|
+
}).join(" ");
|
|
9
|
+
};
|
|
10
|
+
const useGetServiceData = () => {
|
|
11
|
+
const {
|
|
12
|
+
data: carrierList,
|
|
13
|
+
isLoading,
|
|
14
|
+
isError
|
|
15
|
+
} = useListCarriers();
|
|
16
|
+
const getServiceInfo = useCallback(item => {
|
|
17
|
+
const {
|
|
18
|
+
serviceCode,
|
|
19
|
+
carrierId
|
|
20
|
+
} = item;
|
|
21
|
+
const labelCarrierCode = item.carrierCode;
|
|
22
|
+
// Error fetching carriers
|
|
23
|
+
if (isError) {
|
|
24
|
+
return {
|
|
25
|
+
serviceName: serviceCode !== null && serviceCode !== void 0 ? serviceCode : undefined,
|
|
26
|
+
carrierCode: undefined,
|
|
27
|
+
hasCarrierIcon: false
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
const carrier = carrierList === null || carrierList === void 0 ? void 0 : carrierList.find(c => c.carrierId === carrierId || c.carrierCode === labelCarrierCode);
|
|
31
|
+
// No carrier found for the given carrierId or carrierCode
|
|
32
|
+
if (!carrier) {
|
|
33
|
+
const serviceName = serviceCode ? formatServiceCode(serviceCode) : undefined;
|
|
34
|
+
const carrierCode = labelCarrierCode || undefined;
|
|
35
|
+
return {
|
|
36
|
+
serviceName,
|
|
37
|
+
carrierCode,
|
|
38
|
+
hasCarrierIcon: !!carrierCode
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
const service = carrier.services.find(s => s.serviceCode === serviceCode);
|
|
42
|
+
const carrierCode = labelCarrierCode || carrier.carrierCode;
|
|
43
|
+
const serviceName = (service === null || service === void 0 ? void 0 : service.name) || serviceCode || undefined;
|
|
44
|
+
return {
|
|
45
|
+
serviceName,
|
|
46
|
+
carrierCode,
|
|
47
|
+
hasCarrierIcon: !!service && !!carrierCode
|
|
48
|
+
};
|
|
49
|
+
}, [carrierList, isError]);
|
|
50
|
+
const getServiceName = useCallback(item => getServiceInfo(item).serviceName, [getServiceInfo]);
|
|
51
|
+
return {
|
|
52
|
+
getServiceInfo,
|
|
53
|
+
getServiceName,
|
|
54
|
+
isLoadingCarriers: isLoading
|
|
55
|
+
};
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
export { useGetServiceData };
|