rerobe-js-orm 2.4.6 → 2.4.8
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/lib/factories/FormState/Product/ProductFormStateFactory.d.ts +1 -1
- package/lib/factories/FormState/Product/ProductFormStateFactory.js +2 -2
- package/lib/factories/FormState/ProductCollection/ProductCollectionFormStateFactory.d.ts +5 -0
- package/lib/factories/FormState/ProductCollection/ProductCollectionFormStateFactory.js +10 -0
- package/lib/factories/Order/OrderFromApp.js +3 -1
- package/lib/factories/Order/OrderFromFormState.js +13 -12
- package/lib/factories/Order/OrderFromShopifyWebhook.js +126 -10
- package/lib/factories/Order/RefundFromFormState.js +4 -1
- package/lib/factories/Product/ProductFromFormState.js +33 -8
- package/lib/factories/ProductCollection/ProductCollectionFactory.d.ts +5 -0
- package/lib/factories/ProductCollection/ProductCollectionFactory.js +6 -0
- package/lib/factories/ProductCollection/ProductCollectionFromFormState.d.ts +5 -0
- package/lib/factories/ProductCollection/ProductCollectionFromFormState.js +29 -0
- package/lib/form-states/Order/RefundFormState.d.ts +3 -1
- package/lib/form-states/Order/RefundFormState.js +24 -29
- package/lib/form-states/Product/ProductFormState.d.ts +7 -1
- package/lib/form-states/Product/ProductFormState.js +22 -2
- package/lib/form-states/ProductCollection/ProductCollectionFormState.d.ts +12 -0
- package/lib/form-states/ProductCollection/ProductCollectionFormState.js +80 -0
- package/lib/helpers/OrderHelpers.d.ts +4 -2
- package/lib/helpers/OrderHelpers.js +66 -12
- package/lib/helpers/ProductCollectionHelpers.d.ts +4 -0
- package/lib/helpers/ProductCollectionHelpers.js +27 -0
- package/lib/helpers/ReRobeProductHelpers.d.ts +6 -0
- package/lib/helpers/ReRobeProductHelpers.js +203 -1
- package/lib/index.d.ts +3 -1
- package/lib/index.js +5 -1
- package/lib/models/Order.d.ts +2 -0
- package/lib/models/Order.js +3 -0
- package/lib/models/Product.d.ts +1 -0
- package/lib/models/Product.js +34 -1
- package/lib/models/ProductCollection.d.ts +15 -0
- package/lib/models/ProductCollection.js +34 -0
- package/lib/models/User.js +5 -0
- package/lib/types/product-collection-types.d.ts +63 -0
- package/lib/types/product-collection-types.js +13 -0
- package/lib/types/rerobe-order-types.d.ts +46 -9
- package/lib/types/rerobe-product-types.d.ts +29 -0
- package/lib/types/rerobe-user-types.d.ts +27 -21
- package/package.json +3 -2
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import FormState from '../FormState';
|
|
2
|
+
import ProductCollection from '../../models/ProductCollection';
|
|
3
|
+
export default class ProductCollectionFormState extends FormState {
|
|
4
|
+
fields: ProductCollectionFormFields;
|
|
5
|
+
props: CompleteProductCollection;
|
|
6
|
+
opts: {
|
|
7
|
+
tagOptions: string[];
|
|
8
|
+
};
|
|
9
|
+
constructor(props?: any, opts?: any);
|
|
10
|
+
createProductCollection(): ProductCollection;
|
|
11
|
+
private fieldFactory;
|
|
12
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const FormState_1 = require("../FormState");
|
|
4
|
+
const ProductCollection_1 = require("../../models/ProductCollection");
|
|
5
|
+
const ProductCollectionFromFormState_1 = require("../../factories/ProductCollection/ProductCollectionFromFormState");
|
|
6
|
+
// @ts-ignore
|
|
7
|
+
const lodash_1 = require("lodash");
|
|
8
|
+
class ProductCollectionFormState extends FormState_1.default {
|
|
9
|
+
constructor(props, opts) {
|
|
10
|
+
super();
|
|
11
|
+
this.props = new ProductCollection_1.default(props).toObj();
|
|
12
|
+
this.opts = opts;
|
|
13
|
+
this.fields.preTitle = this.fieldFactory('textInput', 'preTitle');
|
|
14
|
+
this.fields.title = this.fieldFactory('textInput', 'title');
|
|
15
|
+
this.fields.subTitle = this.fieldFactory('textInput', 'subTitle');
|
|
16
|
+
this.fields.description = this.fieldFactory('textInput', 'description');
|
|
17
|
+
this.fields.type = this.fieldFactory('singleSelect', 'type');
|
|
18
|
+
this.fields.imgUrl = this.fieldFactory('textInput', 'imgUrl');
|
|
19
|
+
this.fields.refinements = this.fieldFactory('singleSelect', 'refinements');
|
|
20
|
+
this.fields.tags = this.fieldFactory('multiSelect', 'tags', []);
|
|
21
|
+
this.fields.collectionId = this.fieldFactory('textInput', 'collectionId');
|
|
22
|
+
}
|
|
23
|
+
createProductCollection() {
|
|
24
|
+
const productCollectionFactory = new ProductCollectionFromFormState_1.default();
|
|
25
|
+
return productCollectionFactory.createProductCollection(this);
|
|
26
|
+
}
|
|
27
|
+
fieldFactory(fieldType, fieldKey, fieldOptions) {
|
|
28
|
+
let options = fieldOptions || [];
|
|
29
|
+
if (fieldType === 'singleSelect') {
|
|
30
|
+
const selectedValue = this.props[fieldKey] || '';
|
|
31
|
+
const valid = !!this.props[fieldKey];
|
|
32
|
+
const onChangeHandler = (val) => this.singleSelectChangeHandler(fieldKey, val);
|
|
33
|
+
return {
|
|
34
|
+
options,
|
|
35
|
+
selectedValue,
|
|
36
|
+
valid,
|
|
37
|
+
onChangeHandler,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
if (fieldType === 'textInput') {
|
|
41
|
+
const inputValue = this.props[fieldKey] || '';
|
|
42
|
+
const valid = !!this.props[fieldKey];
|
|
43
|
+
let onChangeHandler = (val) => this.textInputChangeHandler(fieldKey, String(val));
|
|
44
|
+
if (fieldKey === 'collectionId') {
|
|
45
|
+
onChangeHandler = (val) => this.textInputChangeHandler(fieldKey, lodash_1.camelCase(String(val)));
|
|
46
|
+
}
|
|
47
|
+
return {
|
|
48
|
+
inputValue,
|
|
49
|
+
valid,
|
|
50
|
+
onChangeHandler,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
if (fieldType === 'multiSelect') {
|
|
54
|
+
let selectedValues = [];
|
|
55
|
+
let valid = true;
|
|
56
|
+
const onChangeHandler = (val) => this.multiSelectChangeHandler(fieldKey, val);
|
|
57
|
+
if (fieldKey === 'tags') {
|
|
58
|
+
if (this.props.tags) {
|
|
59
|
+
if (Array.isArray(this.props.tags)) {
|
|
60
|
+
selectedValues = this.props.tags;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
if (this.opts && this.opts.tagOptions && this.opts.tagOptions.length > 0) {
|
|
64
|
+
options = this.utilities.uniqObjArray([...options, ...this.opts.tagOptions.map((t) => ({ label: t, value: t }))], 'value');
|
|
65
|
+
}
|
|
66
|
+
valid = true;
|
|
67
|
+
}
|
|
68
|
+
return {
|
|
69
|
+
options,
|
|
70
|
+
selectedValues,
|
|
71
|
+
valid,
|
|
72
|
+
onChangeHandler,
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
return {
|
|
76
|
+
valid: false,
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
exports.default = ProductCollectionFormState;
|
|
@@ -4,7 +4,9 @@ export default class OrderHelpers {
|
|
|
4
4
|
getPaymentTypeUsingTags(tags: string | null | undefined): string | null;
|
|
5
5
|
getSalesChannelUsingTags(tags: string | null | undefined): string | null;
|
|
6
6
|
buildLineItemFromProduct(product: CompleteProduct, currencyCode: string, quantity?: number): ReRobeOrderLineItem;
|
|
7
|
-
|
|
7
|
+
toFixedPointPrice(price: number | string): string;
|
|
8
8
|
getAmountSumByField(array: OrderRefund[], fieldKey: string): number;
|
|
9
|
-
|
|
9
|
+
getOrderInfoWithRefundsAndFulfillments(order: CompleteOrder): OrderWithRefundsAndFulfillmentsInfoObj;
|
|
10
|
+
getUpdatedOrderObjWithRefunds(orderObj: CompleteOrder, refundObj: OrderRefund): CompleteOrder;
|
|
11
|
+
getUpdatedOrderObjWithFulfillment(orderObj: CompleteOrder, fulfillmentObj: FulfillmentAdmin, totalUnfulfilledItems: number): CompleteOrder;
|
|
10
12
|
}
|
|
@@ -77,17 +77,19 @@ class OrderHelpers {
|
|
|
77
77
|
productId: product.documentId,
|
|
78
78
|
};
|
|
79
79
|
}
|
|
80
|
-
|
|
80
|
+
toFixedPointPrice(price) {
|
|
81
81
|
return Number(price).toFixed(2);
|
|
82
82
|
}
|
|
83
83
|
getAmountSumByField(array, fieldKey) {
|
|
84
84
|
return array.map((item) => Number(item[fieldKey].amount)).reduce((a, b) => a + b, 0);
|
|
85
85
|
}
|
|
86
|
-
|
|
86
|
+
getOrderInfoWithRefundsAndFulfillments(order) {
|
|
87
87
|
var _a;
|
|
88
|
-
const orderRefunds = order.refunds
|
|
88
|
+
const orderRefunds = order.refunds ? [...order.refunds] : [];
|
|
89
|
+
const orderFulfillment = order.fulfillments ? [...order.fulfillments] : [];
|
|
89
90
|
const preparedOrder = {
|
|
90
91
|
documentId: order.documentId || '',
|
|
92
|
+
name: order.name || '',
|
|
91
93
|
currencyCode: order.currencyCode,
|
|
92
94
|
fulfillmentStatus: order.fulfillmentStatus || '',
|
|
93
95
|
totalDiscount: order.totalDiscount ? Object.assign({}, order.totalDiscount) : { amount: 0 },
|
|
@@ -96,12 +98,37 @@ class OrderHelpers {
|
|
|
96
98
|
totalRefunded: order.totalRefunded ? Object.assign({}, order.totalRefunded) : { amount: 0 },
|
|
97
99
|
totalShippingPrice: order.totalShippingPrice ? Object.assign({}, order.totalShippingPrice) : { amount: 0 },
|
|
98
100
|
totalPrice: order.totalPrice ? Object.assign({}, order.totalPrice) : { amount: 0 },
|
|
99
|
-
|
|
101
|
+
activeLineItems: !order.lineItems || !order.lineItems.length
|
|
102
|
+
? []
|
|
103
|
+
: order.lineItems.map((item) => (Object.assign(Object.assign({}, item), { unfulfilledQuantity: Number(item.quantity), fulfilledQuantity: 0, refundedQuantity: 0, canceledQuantity: 0 }))),
|
|
100
104
|
discountType: 'Custom discount',
|
|
101
105
|
shippingRate: 'Custom shipping rate',
|
|
106
|
+
unfulfilledItems: [],
|
|
107
|
+
fulfilledItems: [],
|
|
102
108
|
refundedItems: [],
|
|
103
|
-
|
|
109
|
+
canceledItems: [],
|
|
110
|
+
refunds: orderRefunds,
|
|
104
111
|
};
|
|
112
|
+
if (!preparedOrder.activeLineItems.length) {
|
|
113
|
+
return preparedOrder;
|
|
114
|
+
}
|
|
115
|
+
if (orderFulfillment.length) {
|
|
116
|
+
preparedOrder.activeLineItems = preparedOrder.activeLineItems.map((item) => {
|
|
117
|
+
const currentItem = item.productId;
|
|
118
|
+
const fulfilledWithRefundedQuantity = orderFulfillment.reduce((result, { fulfillmentLineItems }) => {
|
|
119
|
+
if (fulfillmentLineItems.length) {
|
|
120
|
+
const fulfillmentProdItem = fulfillmentLineItems.find((fli) => fli.lineItem.productId === currentItem);
|
|
121
|
+
if (fulfillmentProdItem) {
|
|
122
|
+
result = result + Number(fulfillmentProdItem.quantity);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
return result;
|
|
126
|
+
}, 0);
|
|
127
|
+
return Object.assign(Object.assign({}, item), { unfulfilledQuantity: item.unfulfilledQuantity - fulfilledWithRefundedQuantity, fulfilledQuantity: fulfilledWithRefundedQuantity });
|
|
128
|
+
});
|
|
129
|
+
preparedOrder.fulfilledItems = preparedOrder.activeLineItems.filter(({ fulfilledQuantity }) => fulfilledQuantity > 0);
|
|
130
|
+
}
|
|
131
|
+
preparedOrder.unfulfilledItems = preparedOrder.activeLineItems.filter(({ unfulfilledQuantity }) => unfulfilledQuantity > 0);
|
|
105
132
|
if (!orderRefunds.length) {
|
|
106
133
|
return preparedOrder;
|
|
107
134
|
}
|
|
@@ -113,22 +140,49 @@ class OrderHelpers {
|
|
|
113
140
|
Number(((_a = order.totalShippingPrice) === null || _a === void 0 ? void 0 : _a.amount) || 0) - this.getAmountSumByField(orderRefunds, 'refundShipping');
|
|
114
141
|
preparedOrder.totalPrice.amount =
|
|
115
142
|
Number(order.totalPrice.amount) - this.getAmountSumByField(orderRefunds, 'totalRefunded');
|
|
116
|
-
const
|
|
143
|
+
const lineItemsWithQuantityInfo = preparedOrder.activeLineItems.map((item) => {
|
|
117
144
|
const currentItem = item.productId;
|
|
118
|
-
const
|
|
145
|
+
const refundedAndCanceledQuantity = orderRefunds.reduce((result, { refundLineItems }) => {
|
|
119
146
|
if (refundLineItems.length) {
|
|
120
147
|
const refundProdItem = refundLineItems.find(({ lineItem }) => lineItem.productId === currentItem);
|
|
121
148
|
if (refundProdItem) {
|
|
122
|
-
result = result + Number(refundProdItem.quantityRefund);
|
|
149
|
+
result.refundedQuantity = result.refundedQuantity + Number(refundProdItem.quantityRefund);
|
|
150
|
+
result.canceledQuantity = result.canceledQuantity + Number(refundProdItem.quantityCancel);
|
|
123
151
|
}
|
|
124
152
|
}
|
|
125
153
|
return result;
|
|
126
|
-
}, 0);
|
|
127
|
-
|
|
154
|
+
}, { refundedQuantity: 0, canceledQuantity: 0 });
|
|
155
|
+
// 3. fulfilledQuantity = (sum of order.fulfillment) - refundedQuantity
|
|
156
|
+
// 4. quantity = unfulfilled quantity (prev quantity - sum of order.fulfillment) - cancelled
|
|
157
|
+
return Object.assign(Object.assign(Object.assign({}, item), { fulfilledQuantity: Number(item.fulfilledQuantity) - refundedAndCanceledQuantity.refundedQuantity, unfulfilledQuantity: Number(item.unfulfilledQuantity) - refundedAndCanceledQuantity.canceledQuantity }), refundedAndCanceledQuantity);
|
|
128
158
|
});
|
|
129
|
-
preparedOrder.
|
|
130
|
-
preparedOrder.
|
|
159
|
+
preparedOrder.activeLineItems = lineItemsWithQuantityInfo.filter(({ unfulfilledQuantity, fulfilledQuantity }) => unfulfilledQuantity + fulfilledQuantity > 0);
|
|
160
|
+
preparedOrder.unfulfilledItems = lineItemsWithQuantityInfo.filter(({ unfulfilledQuantity }) => unfulfilledQuantity > 0);
|
|
161
|
+
preparedOrder.fulfilledItems = lineItemsWithQuantityInfo.filter(({ fulfilledQuantity }) => fulfilledQuantity > 0);
|
|
162
|
+
preparedOrder.refundedItems = lineItemsWithQuantityInfo.filter(({ refundedQuantity }) => refundedQuantity > 0);
|
|
163
|
+
preparedOrder.canceledItems = lineItemsWithQuantityInfo.filter(({ canceledQuantity }) => canceledQuantity > 0);
|
|
131
164
|
return preparedOrder;
|
|
132
165
|
}
|
|
166
|
+
getUpdatedOrderObjWithRefunds(orderObj, refundObj) {
|
|
167
|
+
const updatedOrder = Object.assign(Object.assign({}, orderObj), { refunds: orderObj.refunds ? [...orderObj.refunds] : [], totalRefunded: orderObj.totalRefunded ? Object.assign({}, orderObj.totalRefunded) : { amount: 0 } });
|
|
168
|
+
const totalRefundedAmount = Number(updatedOrder.totalRefunded.amount) + Number(refundObj.totalRefunded.amount);
|
|
169
|
+
updatedOrder.refunds = [...updatedOrder.refunds, Object.assign({}, refundObj)];
|
|
170
|
+
updatedOrder.totalRefunded.amount = Number(totalRefundedAmount).toFixed(2);
|
|
171
|
+
updatedOrder.financialStatus =
|
|
172
|
+
Number(orderObj.totalPrice.amount) - totalRefundedAmount > 0 ? 'PARTIALLY_REFUNDED' : 'REFUNDED';
|
|
173
|
+
return updatedOrder;
|
|
174
|
+
}
|
|
175
|
+
getUpdatedOrderObjWithFulfillment(orderObj, fulfillmentObj, totalUnfulfilledItems) {
|
|
176
|
+
const updatedOrder = Object.assign(Object.assign({}, orderObj), { fulfillments: orderObj.fulfillments ? [...orderObj.fulfillments] : [] });
|
|
177
|
+
const fulfilledItemsQuantity = !fulfillmentObj.fulfillmentLineItems.length
|
|
178
|
+
? 0
|
|
179
|
+
: fulfillmentObj.fulfillmentLineItems
|
|
180
|
+
.map(({ quantity }) => Number(quantity))
|
|
181
|
+
.reduce((a, b) => a + b, 0);
|
|
182
|
+
updatedOrder.fulfillments = [...updatedOrder.fulfillments, fulfillmentObj];
|
|
183
|
+
updatedOrder.fulfillmentStatus =
|
|
184
|
+
totalUnfulfilledItems - fulfilledItemsQuantity > 0 ? 'PARTIALLY_FULFILLED' : 'FULFILLED';
|
|
185
|
+
return updatedOrder;
|
|
186
|
+
}
|
|
133
187
|
}
|
|
134
188
|
exports.default = OrderHelpers;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
class ProductCollectionHelpers {
|
|
4
|
+
getFiltersByCollectionConditions(collectionRefinementsVal) {
|
|
5
|
+
if (!collectionRefinementsVal && !Object.keys(collectionRefinementsVal).length) {
|
|
6
|
+
return {};
|
|
7
|
+
}
|
|
8
|
+
return Object.keys(collectionRefinementsVal).reduce((result, key) => {
|
|
9
|
+
const keyName = key.replace('Refinement', '');
|
|
10
|
+
result[keyName] = collectionRefinementsVal[key];
|
|
11
|
+
return result;
|
|
12
|
+
}, {});
|
|
13
|
+
}
|
|
14
|
+
getCollectionRefinementsFromFilters(filtersList) {
|
|
15
|
+
if (!filtersList && !Object.keys(filtersList).length) {
|
|
16
|
+
return {};
|
|
17
|
+
}
|
|
18
|
+
return Object.keys(filtersList).reduce((result, key) => {
|
|
19
|
+
if (!filtersList[key].length) {
|
|
20
|
+
return result;
|
|
21
|
+
}
|
|
22
|
+
result[`${key}Refinement`] = [...filtersList[key]];
|
|
23
|
+
return result;
|
|
24
|
+
}, {});
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
exports.default = ProductCollectionHelpers;
|
|
@@ -7,10 +7,16 @@ export default class ReRobeProductHelpers {
|
|
|
7
7
|
static sizeCommentPretty(sizeComment: string): string;
|
|
8
8
|
static getSizeLabel(clothingSize: string[], shoeSize: string, jeanSize: string): string;
|
|
9
9
|
static generateArrForDetailsBulletList(productObj: CompleteProduct): string[];
|
|
10
|
+
static autoCreateFullDescriptionHTML(productObj: CompleteProduct, customHeading?: string): string;
|
|
11
|
+
static autoCreateFullSwedishDescriptionForTraderaHTML(productDescription: string, merchantName?: string): string;
|
|
10
12
|
static prepareProductForMutation(productObj: CompleteProduct, mediaInputArr?: {
|
|
11
13
|
originalSource: string;
|
|
12
14
|
}[]): CompleteProduct;
|
|
15
|
+
static createTimestampsForStates(productObj: CompleteProduct): {
|
|
16
|
+
[key: string]: number;
|
|
17
|
+
};
|
|
13
18
|
static getSubtitle(title: string): string;
|
|
14
19
|
static sizeFinder(sizeLabel: string, sizeToMatch: string): boolean;
|
|
20
|
+
static convertReRobeSizeToStandardSize(productObj: CompleteProduct): string;
|
|
15
21
|
static buildLineItem(productObj: CompleteProduct, quantity?: number): ProductLineItem;
|
|
16
22
|
}
|
|
@@ -23,7 +23,7 @@ class ReRobeProductHelpers {
|
|
|
23
23
|
static buildReRobeEarnings(arrayLike) {
|
|
24
24
|
const products = Array.isArray(arrayLike) ? arrayLike : [arrayLike];
|
|
25
25
|
return products.reduce((acc, cur) => {
|
|
26
|
-
const commission = cur.reRobeCommission ? Number(cur.reRobeCommission) : 0.
|
|
26
|
+
const commission = cur.reRobeCommission ? Number(cur.reRobeCommission) : 0.5;
|
|
27
27
|
const priceToUse = cur.isOnSale === 'yes' && cur.salePrice ? cur.salePrice : cur.price;
|
|
28
28
|
const listingPrice = Number(Number(priceToUse) <= 1 ? cur.suggestedResalePrice : priceToUse);
|
|
29
29
|
const inventoryValue = acc[0] + listingPrice;
|
|
@@ -69,6 +69,7 @@ class ReRobeProductHelpers {
|
|
|
69
69
|
}
|
|
70
70
|
return '';
|
|
71
71
|
}
|
|
72
|
+
// ToDo: refactor
|
|
72
73
|
static getSizeLabel(clothingSize, shoeSize, jeanSize) {
|
|
73
74
|
let sizeLabel = 'NA';
|
|
74
75
|
if (clothingSize && clothingSize.length > 0 && clothingSize[0].trim()) {
|
|
@@ -98,6 +99,101 @@ class ReRobeProductHelpers {
|
|
|
98
99
|
];
|
|
99
100
|
return descriptionArr.filter((d) => d);
|
|
100
101
|
}
|
|
102
|
+
static autoCreateFullDescriptionHTML(productObj, customHeading) {
|
|
103
|
+
const productStyle = productObj.productStyle.join(', ');
|
|
104
|
+
const size = this.getSizeLabel(productObj.clothingSize, productObj.shoeSize, productObj.jeanSize);
|
|
105
|
+
const sizeComment = productObj.sizeComment;
|
|
106
|
+
const color = productObj.color;
|
|
107
|
+
const productRemarks = productObj.productRemarks;
|
|
108
|
+
const condition = productObj.condition;
|
|
109
|
+
const priceNew = productObj.purchasePrice;
|
|
110
|
+
const yearPurchased = productObj.yearPurchased;
|
|
111
|
+
const materials = this.materialCompJoinedString();
|
|
112
|
+
const measurements = this.measurementsJoinedString(productObj.measurements);
|
|
113
|
+
const fit = options_1.sizeCommentOptions.filter((option) => option.value === sizeComment)[0].label;
|
|
114
|
+
const descriptionObj = {
|
|
115
|
+
title: customHeading ? `<p>${customHeading}</p>\n` : 'REMOVE_ME',
|
|
116
|
+
line0: `<ul>`,
|
|
117
|
+
line1: size ? `\n<li>Size: ${size}</li>` : 'REMOVE_ME',
|
|
118
|
+
line2: fit ? `\n<li>Fit: ${fit}</li>` : 'REMOVE_ME',
|
|
119
|
+
line3: condition ? `\n<li>Condition: ${condition}</li>` : 'REMOVE_ME',
|
|
120
|
+
line4: color ? `\n<li>Color: ${color}</li>` : 'REMOVE_ME',
|
|
121
|
+
line5: productStyle && productStyle.length > 0 ? `\n<li>Style: ${productStyle}</li>` : 'REMOVE_ME',
|
|
122
|
+
line6: materials ? `\n<li>Material: ${materials}</li>` : 'REMOVE_ME',
|
|
123
|
+
line7: measurements ? `\n<li>Measurements: ${measurements}</li>` : 'REMOVE_ME',
|
|
124
|
+
line8: productRemarks ? `\n<li>Remarks: ${productRemarks}</li>` : 'REMOVE_ME',
|
|
125
|
+
line9: priceNew ? `\n<li>Purchase price: ${priceNew}</li>` : 'REMOVE_ME',
|
|
126
|
+
line10: yearPurchased ? `\n<li>Year purchased: ${yearPurchased}</li>` : 'REMOVE_ME',
|
|
127
|
+
line11: `\n</ul>`,
|
|
128
|
+
};
|
|
129
|
+
return Object.values(descriptionObj).reduce((acc, cur) => {
|
|
130
|
+
if (!cur.includes('REMOVE_ME')) {
|
|
131
|
+
acc = acc.concat(cur);
|
|
132
|
+
}
|
|
133
|
+
return acc;
|
|
134
|
+
}, '');
|
|
135
|
+
}
|
|
136
|
+
static autoCreateFullSwedishDescriptionForTraderaHTML(productDescription, merchantName = 'våra') {
|
|
137
|
+
return `
|
|
138
|
+
<p>
|
|
139
|
+
<strong>Beskrivning</strong>
|
|
140
|
+
${String(productDescription).trim()}
|
|
141
|
+
</p>
|
|
142
|
+
|
|
143
|
+
<p>
|
|
144
|
+
<strong>Angiven storlek</strong>
|
|
145
|
+
<br>
|
|
146
|
+
Storlekar beskrivs enligt befintliga lappar på plaggen samt från före detta ägare av plagget. Om en lapp eller angiven storlek saknas, uppskattas en ungefärlig storlek av oss. Vi försöker även alltid att mäta produkter som underdelar, väskor och accessoarer. Vid mer information kring specifika plagg och dess mått finns vi ett meddelande bort med snabbt svar på detta.
|
|
147
|
+
</p>
|
|
148
|
+
|
|
149
|
+
<p>
|
|
150
|
+
<strong>Skick</strong>
|
|
151
|
+
<br>
|
|
152
|
+
Alla våra produkter är begagnade och säljs i befintligt skick. Varje plagg genomgår en noga genomförd kvalitetskontroll där de kontrolleras och autentiseras av ${merchantName}’s produktions team och säljs endast i bästa möjliga skick. Läs mer om detta under vår FAQ-flik på vår hemsida samt i vår app.
|
|
153
|
+
</p>
|
|
154
|
+
|
|
155
|
+
<p>
|
|
156
|
+
<strong>Prissättning</strong>
|
|
157
|
+
<br>
|
|
158
|
+
Våra priser är baserade på de accepterade prisförslag som angetts vid inlämning av plagg. Vi ger prisförslag enligt vår egen historiska data, research från andra plattformar samt vår djupa kunskap om modebranschen, dess nuvarande trender och stilar.
|
|
159
|
+
</p>
|
|
160
|
+
|
|
161
|
+
<p>
|
|
162
|
+
<strong>Betalning</strong>
|
|
163
|
+
<br>
|
|
164
|
+
Vi använder oss av "Tradera betalning" vilket innebär att du som köpare kan välja att betala med Swish, kort eller PayPal. ${merchantName}’s rabatter och erbjudanden gäller endast vid köp på vår hemsida samt via vår app.
|
|
165
|
+
<br>
|
|
166
|
+
<br>
|
|
167
|
+
Tänk på att produkter kan ligga i flera varukorgar samtidigt. Om din vara står som ”slut/såld” vid utcheckningen beror det på att någon annan hunnit före.
|
|
168
|
+
</p>
|
|
169
|
+
|
|
170
|
+
<p>
|
|
171
|
+
<strong>Retur</strong>
|
|
172
|
+
<br>
|
|
173
|
+
Vi har 14 dagars öppet köp från då din order har packats och levererats till dig. Returer är endast giltiga om prislappen sitter kvar, samt att varan är i samma skick som när du köpte den. Om du vill returnera något till oss, se till att kontakta vårt kundtjänst team på help@rerobe.se för att begära en förbetald, spårbar fraktetikett. Observera att vi inte accepterar returer som skickas utan vår fraktsedel.
|
|
174
|
+
<br>
|
|
175
|
+
<br>
|
|
176
|
+
Returavgiften är 63 SEK. Detta kommer att dras från ditt ursprungliga köp när vi har tagit emot den returnerade varan.
|
|
177
|
+
</p>
|
|
178
|
+
|
|
179
|
+
<p>
|
|
180
|
+
<strong>Frakt</strong>
|
|
181
|
+
<br>
|
|
182
|
+
Vi skickar alla våra ordrar via Postnord till hela Sverige, samt internationellt. Vi packar och skickar din order inom 24h, och din order ska vara hos dig inom 1-3 arbetsdagar. Om din order ska skickas till annan adress än den som är angiven på Tradera kontakt gärna oss innan betalning.
|
|
183
|
+
</p>
|
|
184
|
+
|
|
185
|
+
<p>
|
|
186
|
+
<strong>Vi har varierande avgifter för frakt</strong>
|
|
187
|
+
<br>
|
|
188
|
+
<br>
|
|
189
|
+
* Fri frakt om du hämtar din beställning i vår butik på Södermalm
|
|
190
|
+
<br>
|
|
191
|
+
* 49 SEK för alla beställningar som skickas i Sverige
|
|
192
|
+
<br>
|
|
193
|
+
* 299 SEK för alla beställningar som skickas utanför Sverige
|
|
194
|
+
</p>
|
|
195
|
+
`;
|
|
196
|
+
}
|
|
101
197
|
static prepareProductForMutation(productObj, mediaInputArr = []) {
|
|
102
198
|
const productObjClone = Object.assign({}, productObj);
|
|
103
199
|
const { status, dateInQualityControl, dateInPendingPublication, dateListedOnline, publishedAt, price } = productObj;
|
|
@@ -127,6 +223,87 @@ class ReRobeProductHelpers {
|
|
|
127
223
|
}
|
|
128
224
|
return productObjClone;
|
|
129
225
|
}
|
|
226
|
+
static createTimestampsForStates(productObj) {
|
|
227
|
+
const docFieldsToUpdate = {};
|
|
228
|
+
if (productObj) {
|
|
229
|
+
const { dateSold, status, sellRequestReviewDraftTimestamp, sellRequestReviewTimestamp, rejectedTimestamp, holdTimestamp, acceptedTimestamp, sellerToDropOffTimestamp, sellerToShipTimestamp, sellerToGetPickUpTimestamp, qualityControlTimestamp, pendingPublicationTimestamp, listedTimestamp, clearanceTimestamp, reservedTimestamp, soldTimestamp, soldSellerToBePaidTimestamp, soldSellerPaidTimestamp, returnedTimestamp, sellerSelfRejectTimestamp, liquidationRequestedTimestamp, sellerLiquidatedTimestamp, } = productObj;
|
|
230
|
+
if (status === ProductStateManager_1.default.PRODUCT_STATES.sellRequestReviewDraft && !sellRequestReviewDraftTimestamp) {
|
|
231
|
+
docFieldsToUpdate.sellRequestReviewDraftTimestamp = new Date().getTime();
|
|
232
|
+
}
|
|
233
|
+
if (status === ProductStateManager_1.default.PRODUCT_STATES.sellRequestReview && !sellRequestReviewTimestamp) {
|
|
234
|
+
docFieldsToUpdate.sellRequestReviewTimestamp = new Date().getTime();
|
|
235
|
+
}
|
|
236
|
+
if (status === ProductStateManager_1.default.PRODUCT_STATES.rejected && !rejectedTimestamp) {
|
|
237
|
+
docFieldsToUpdate.rejectedTimestamp = new Date().getTime();
|
|
238
|
+
}
|
|
239
|
+
if (status === ProductStateManager_1.default.PRODUCT_STATES.hold && !holdTimestamp) {
|
|
240
|
+
docFieldsToUpdate.holdTimestamp = new Date().getTime();
|
|
241
|
+
}
|
|
242
|
+
if (status === ProductStateManager_1.default.PRODUCT_STATES.accepted && !acceptedTimestamp) {
|
|
243
|
+
docFieldsToUpdate.acceptedTimestamp = new Date().getTime();
|
|
244
|
+
}
|
|
245
|
+
if (status === ProductStateManager_1.default.PRODUCT_STATES.sellerToDropOff && !sellerToDropOffTimestamp) {
|
|
246
|
+
docFieldsToUpdate.sellerToDropOffTimestamp = new Date().getTime();
|
|
247
|
+
}
|
|
248
|
+
if (status === ProductStateManager_1.default.PRODUCT_STATES.sellerToShip && !sellerToShipTimestamp) {
|
|
249
|
+
docFieldsToUpdate.sellerToShipTimestamp = new Date().getTime();
|
|
250
|
+
}
|
|
251
|
+
if (status === ProductStateManager_1.default.PRODUCT_STATES.sellerToGetPickUp && !sellerToGetPickUpTimestamp) {
|
|
252
|
+
docFieldsToUpdate.sellerToGetPickUpTimestamp = new Date().getTime();
|
|
253
|
+
}
|
|
254
|
+
if (status === ProductStateManager_1.default.PRODUCT_STATES.qualityControl && !qualityControlTimestamp) {
|
|
255
|
+
docFieldsToUpdate.qualityControlTimestamp = new Date().getTime();
|
|
256
|
+
}
|
|
257
|
+
if (status === ProductStateManager_1.default.PRODUCT_STATES.pendingPublication && !pendingPublicationTimestamp) {
|
|
258
|
+
docFieldsToUpdate.pendingPublicationTimestamp = new Date().getTime();
|
|
259
|
+
}
|
|
260
|
+
if (status === ProductStateManager_1.default.PRODUCT_STATES.listed && !listedTimestamp) {
|
|
261
|
+
docFieldsToUpdate.listedTimestamp = new Date().getTime();
|
|
262
|
+
}
|
|
263
|
+
if (status === ProductStateManager_1.default.PRODUCT_STATES.clearance && !clearanceTimestamp) {
|
|
264
|
+
docFieldsToUpdate.clearanceTimestamp = new Date().getTime();
|
|
265
|
+
}
|
|
266
|
+
if (status === ProductStateManager_1.default.PRODUCT_STATES.reserved && !reservedTimestamp) {
|
|
267
|
+
docFieldsToUpdate.reservedTimestamp = new Date().getTime();
|
|
268
|
+
}
|
|
269
|
+
if (status === ProductStateManager_1.default.PRODUCT_STATES.sold && !soldTimestamp) {
|
|
270
|
+
docFieldsToUpdate.soldTimestamp =
|
|
271
|
+
dateSold && typeof dateSold === 'string' ? new Date(dateSold).getTime() : new Date().getTime();
|
|
272
|
+
}
|
|
273
|
+
if (status === ProductStateManager_1.default.PRODUCT_STATES.soldSellerToBePaid && !soldSellerToBePaidTimestamp) {
|
|
274
|
+
const timeNow = new Date().getTime();
|
|
275
|
+
docFieldsToUpdate.soldSellerToBePaidTimestamp = timeNow;
|
|
276
|
+
if (!soldTimestamp) {
|
|
277
|
+
docFieldsToUpdate.soldTimestamp =
|
|
278
|
+
dateSold && typeof dateSold === 'string' ? new Date(dateSold).getTime() : timeNow;
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
if (status === ProductStateManager_1.default.PRODUCT_STATES.soldSellerPaid && !soldSellerPaidTimestamp) {
|
|
282
|
+
const timeNow = new Date().getTime();
|
|
283
|
+
docFieldsToUpdate.soldSellerPaidTimestamp = timeNow;
|
|
284
|
+
if (!soldSellerToBePaidTimestamp) {
|
|
285
|
+
docFieldsToUpdate.soldSellerToBePaidTimestamp = timeNow;
|
|
286
|
+
}
|
|
287
|
+
if (!soldTimestamp) {
|
|
288
|
+
docFieldsToUpdate.soldTimestamp =
|
|
289
|
+
dateSold && typeof dateSold === 'string' ? new Date(dateSold).getTime() : timeNow;
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
if (status === ProductStateManager_1.default.PRODUCT_STATES.returned && !returnedTimestamp) {
|
|
293
|
+
docFieldsToUpdate.returnedTimestamp = new Date().getTime();
|
|
294
|
+
}
|
|
295
|
+
if (status === ProductStateManager_1.default.PRODUCT_STATES.sellerSelfReject && !sellerSelfRejectTimestamp) {
|
|
296
|
+
docFieldsToUpdate.sellerSelfRejectTimestamp = new Date().getTime();
|
|
297
|
+
}
|
|
298
|
+
if (status === ProductStateManager_1.default.PRODUCT_STATES.liquidationRequested && !liquidationRequestedTimestamp) {
|
|
299
|
+
docFieldsToUpdate.liquidationRequestedTimestamp = new Date().getTime();
|
|
300
|
+
}
|
|
301
|
+
if (status === ProductStateManager_1.default.PRODUCT_STATES.sellerLiquidated && !sellerLiquidatedTimestamp) {
|
|
302
|
+
docFieldsToUpdate.sellerLiquidatedTimestamp = new Date().getTime();
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
return docFieldsToUpdate;
|
|
306
|
+
}
|
|
130
307
|
static getSubtitle(title) {
|
|
131
308
|
if (typeof title === 'string' && title.trim()) {
|
|
132
309
|
return title.split('by')[0].trim();
|
|
@@ -189,6 +366,31 @@ class ReRobeProductHelpers {
|
|
|
189
366
|
}
|
|
190
367
|
return false;
|
|
191
368
|
}
|
|
369
|
+
static convertReRobeSizeToStandardSize(productObj) {
|
|
370
|
+
let size = 'Not Applicable';
|
|
371
|
+
if (productObj.productCategory === 'Clothing' && productObj.productType !== 'Jeans') {
|
|
372
|
+
if (productObj.clothingSize && productObj.clothingSize.length > 0) {
|
|
373
|
+
const arr = productObj.clothingSize[0].split('(');
|
|
374
|
+
if (arr.length === 2) {
|
|
375
|
+
const [universalSize] = arr;
|
|
376
|
+
size = universalSize.trim();
|
|
377
|
+
}
|
|
378
|
+
if (arr.length === 1) {
|
|
379
|
+
[size] = productObj.clothingSize;
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
if (productObj.productType === 'Jeans') {
|
|
384
|
+
size = productObj.jeanSize;
|
|
385
|
+
}
|
|
386
|
+
if (productObj.productCategory === 'Shoes') {
|
|
387
|
+
size = productObj.shoeSize;
|
|
388
|
+
}
|
|
389
|
+
if (size === 'No Size') {
|
|
390
|
+
size = 'Not Applicable';
|
|
391
|
+
}
|
|
392
|
+
return size;
|
|
393
|
+
}
|
|
192
394
|
// RibbnProductHelper candidate
|
|
193
395
|
static buildLineItem(productObj, quantity = 1) {
|
|
194
396
|
const { documentId, title, price, coverPhotoUrl, imageUrls, brand } = productObj;
|
package/lib/index.d.ts
CHANGED
|
@@ -2,6 +2,8 @@ import ProductFromShopifyJSClientJSONDoc from './factories/Product/ProductFromSh
|
|
|
2
2
|
import ProductFromAlgoliaJSONDoc from './factories/Product/ProductFromAlgoliaJSONDoc';
|
|
3
3
|
import ProductFromShopifyWebhookJSONDoc from './factories/Product/ProductFromShopifyWebhookJSONDoc';
|
|
4
4
|
import ProductFormStateFactory from './factories/FormState/Product/ProductFormStateFactory';
|
|
5
|
+
import ProductCollectionFormStateFactory from './factories/FormState/ProductCollection/ProductCollectionFormStateFactory';
|
|
6
|
+
import ProductCollectionHelpers from './helpers/ProductCollectionHelpers';
|
|
5
7
|
import SellRequestFormStateFactory from './factories/FormState/SellRequest/SellRequestFormStateFactory';
|
|
6
8
|
import PickUpFormStateFactory from './factories/FormState/PickUp/PickUpFormStateFactory';
|
|
7
9
|
import UserFormStateFactory from './factories/FormState/User/UserFormStateFactory';
|
|
@@ -31,4 +33,4 @@ import WebhookFormState from './form-states/Merchant/WebhookFormState';
|
|
|
31
33
|
import ReRobeProductHelpers from './helpers/ReRobeProductHelpers';
|
|
32
34
|
import AnalyticsHelpers from './helpers/AnalyticsHelpers';
|
|
33
35
|
import OrderHelpers from './helpers/OrderHelpers';
|
|
34
|
-
export { ProductFromAlgoliaJSONDoc, ProductFromShopifyWebhookJSONDoc, ProductFromShopifyJSClientJSONDoc, ProductFormStateFactory, SellRequestFormStateFactory, PickUpFormStateFactory, AddressFormStateFactory, UserFormStateFactory, UserFromShopifyWebhookJSONDoc, UserFromAuthTemplateMethod, DraftOrderFromMirakl, DraftOrderFromApp, ChatRoomFromNewUserSignUp, KlarnaSessionFactory, Product, ProductStateManager, Order, OrderFromShopifyWebhook, OrderFromShopifyAdminApi, OrderFromShopifyStorefrontApi, OrderFromApp, OrderFormStateFactory, RefundFormStateFactory, PayoutAccount, PayoutAccountFormState, Merchant, MerchantFormState, MerchantFormStateFactory, ReRobeProductHelpers, User, AnalyticsHelpers, OrderHelpers, WebhookFormState, };
|
|
36
|
+
export { ProductFromAlgoliaJSONDoc, ProductFromShopifyWebhookJSONDoc, ProductFromShopifyJSClientJSONDoc, ProductFormStateFactory, ProductCollectionFormStateFactory, ProductCollectionHelpers, SellRequestFormStateFactory, PickUpFormStateFactory, AddressFormStateFactory, UserFormStateFactory, UserFromShopifyWebhookJSONDoc, UserFromAuthTemplateMethod, DraftOrderFromMirakl, DraftOrderFromApp, ChatRoomFromNewUserSignUp, KlarnaSessionFactory, Product, ProductStateManager, Order, OrderFromShopifyWebhook, OrderFromShopifyAdminApi, OrderFromShopifyStorefrontApi, OrderFromApp, OrderFormStateFactory, RefundFormStateFactory, PayoutAccount, PayoutAccountFormState, Merchant, MerchantFormState, MerchantFormStateFactory, ReRobeProductHelpers, User, AnalyticsHelpers, OrderHelpers, WebhookFormState, };
|
package/lib/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.WebhookFormState = exports.OrderHelpers = exports.AnalyticsHelpers = exports.User = exports.ReRobeProductHelpers = exports.MerchantFormStateFactory = exports.MerchantFormState = exports.Merchant = exports.PayoutAccountFormState = exports.PayoutAccount = exports.RefundFormStateFactory = exports.OrderFormStateFactory = exports.OrderFromApp = exports.OrderFromShopifyStorefrontApi = exports.OrderFromShopifyAdminApi = exports.OrderFromShopifyWebhook = exports.Order = exports.ProductStateManager = exports.Product = exports.KlarnaSessionFactory = exports.ChatRoomFromNewUserSignUp = exports.DraftOrderFromApp = exports.DraftOrderFromMirakl = exports.UserFromAuthTemplateMethod = exports.UserFromShopifyWebhookJSONDoc = exports.UserFormStateFactory = exports.AddressFormStateFactory = exports.PickUpFormStateFactory = exports.SellRequestFormStateFactory = exports.ProductFormStateFactory = exports.ProductFromShopifyJSClientJSONDoc = exports.ProductFromShopifyWebhookJSONDoc = exports.ProductFromAlgoliaJSONDoc = void 0;
|
|
3
|
+
exports.WebhookFormState = exports.OrderHelpers = exports.AnalyticsHelpers = exports.User = exports.ReRobeProductHelpers = exports.MerchantFormStateFactory = exports.MerchantFormState = exports.Merchant = exports.PayoutAccountFormState = exports.PayoutAccount = exports.RefundFormStateFactory = exports.OrderFormStateFactory = exports.OrderFromApp = exports.OrderFromShopifyStorefrontApi = exports.OrderFromShopifyAdminApi = exports.OrderFromShopifyWebhook = exports.Order = exports.ProductStateManager = exports.Product = exports.KlarnaSessionFactory = exports.ChatRoomFromNewUserSignUp = exports.DraftOrderFromApp = exports.DraftOrderFromMirakl = exports.UserFromAuthTemplateMethod = exports.UserFromShopifyWebhookJSONDoc = exports.UserFormStateFactory = exports.AddressFormStateFactory = exports.PickUpFormStateFactory = exports.SellRequestFormStateFactory = exports.ProductCollectionHelpers = exports.ProductCollectionFormStateFactory = exports.ProductFormStateFactory = exports.ProductFromShopifyJSClientJSONDoc = exports.ProductFromShopifyWebhookJSONDoc = exports.ProductFromAlgoliaJSONDoc = void 0;
|
|
4
4
|
const ProductFromShopifyJSClientJSONDoc_1 = require("./factories/Product/ProductFromShopifyJSClientJSONDoc");
|
|
5
5
|
exports.ProductFromShopifyJSClientJSONDoc = ProductFromShopifyJSClientJSONDoc_1.default;
|
|
6
6
|
const ProductFromAlgoliaJSONDoc_1 = require("./factories/Product/ProductFromAlgoliaJSONDoc");
|
|
@@ -9,6 +9,10 @@ const ProductFromShopifyWebhookJSONDoc_1 = require("./factories/Product/ProductF
|
|
|
9
9
|
exports.ProductFromShopifyWebhookJSONDoc = ProductFromShopifyWebhookJSONDoc_1.default;
|
|
10
10
|
const ProductFormStateFactory_1 = require("./factories/FormState/Product/ProductFormStateFactory");
|
|
11
11
|
exports.ProductFormStateFactory = ProductFormStateFactory_1.default;
|
|
12
|
+
const ProductCollectionFormStateFactory_1 = require("./factories/FormState/ProductCollection/ProductCollectionFormStateFactory");
|
|
13
|
+
exports.ProductCollectionFormStateFactory = ProductCollectionFormStateFactory_1.default;
|
|
14
|
+
const ProductCollectionHelpers_1 = require("./helpers/ProductCollectionHelpers");
|
|
15
|
+
exports.ProductCollectionHelpers = ProductCollectionHelpers_1.default;
|
|
12
16
|
const SellRequestFormStateFactory_1 = require("./factories/FormState/SellRequest/SellRequestFormStateFactory");
|
|
13
17
|
exports.SellRequestFormStateFactory = SellRequestFormStateFactory_1.default;
|
|
14
18
|
const PickUpFormStateFactory_1 = require("./factories/FormState/PickUp/PickUpFormStateFactory");
|
package/lib/models/Order.d.ts
CHANGED
|
@@ -24,6 +24,7 @@ export default class Order extends Base {
|
|
|
24
24
|
};
|
|
25
25
|
static FULFILLMENT_TYPES: {
|
|
26
26
|
fulfilled: string;
|
|
27
|
+
partiallyFulfilled: string;
|
|
27
28
|
unfulfilled: string;
|
|
28
29
|
inProgress: string;
|
|
29
30
|
canceled: string;
|
|
@@ -54,6 +55,7 @@ export default class Order extends Base {
|
|
|
54
55
|
shippingType: ReRobeShippingAndDeliveryTypes;
|
|
55
56
|
shopifyId: string | null;
|
|
56
57
|
shopifyOrderNumber: number | null;
|
|
58
|
+
ribbnOrderNumber: number | null;
|
|
57
59
|
subtotalPrice: Money;
|
|
58
60
|
tags: string[] | string | null;
|
|
59
61
|
totalDiscount: Money;
|
package/lib/models/Order.js
CHANGED
|
@@ -49,6 +49,7 @@ class Order extends Base_1.default {
|
|
|
49
49
|
this.shippingType = (props === null || props === void 0 ? void 0 : props.shippingType) || Order.SHIPPING_TYPES.localPickUp;
|
|
50
50
|
this.shopifyId = (props === null || props === void 0 ? void 0 : props.shopifyId) || null;
|
|
51
51
|
this.shopifyOrderNumber = (props === null || props === void 0 ? void 0 : props.shopifyOrderNumber) || null;
|
|
52
|
+
this.ribbnOrderNumber = (props === null || props === void 0 ? void 0 : props.ribbnOrderNumber) || null;
|
|
52
53
|
this.subtotalPrice = (props === null || props === void 0 ? void 0 : props.subtotalPrice) || {
|
|
53
54
|
amount: 0,
|
|
54
55
|
};
|
|
@@ -124,6 +125,7 @@ class Order extends Base_1.default {
|
|
|
124
125
|
shippingType: this.shippingType,
|
|
125
126
|
shopifyId: this.shopifyId,
|
|
126
127
|
shopifyOrderNumber: this.shopifyOrderNumber,
|
|
128
|
+
ribbnOrderNumber: this.ribbnOrderNumber,
|
|
127
129
|
subtotalPrice: this.subtotalPrice,
|
|
128
130
|
tags: this.tags,
|
|
129
131
|
totalDiscount: this.totalDiscount,
|
|
@@ -184,6 +186,7 @@ Order.SALES_CHANNELS = {
|
|
|
184
186
|
};
|
|
185
187
|
Order.FULFILLMENT_TYPES = {
|
|
186
188
|
fulfilled: 'FULFILLED',
|
|
189
|
+
partiallyFulfilled: 'PARTIALLY_FULFILLED',
|
|
187
190
|
unfulfilled: 'UNFULFILLED',
|
|
188
191
|
inProgress: 'IN_PROGRESS',
|
|
189
192
|
canceled: 'CANCELED',
|
package/lib/models/Product.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ export default class Product extends Base {
|
|
|
3
3
|
attributes: ProductAttributes;
|
|
4
4
|
filterAttributes: ProductFilterAttributes;
|
|
5
5
|
consignmentAttributes: ProductConsignmentAttributes;
|
|
6
|
+
timestampAttributes: ProductTimestampAttributes;
|
|
6
7
|
FIELD_NOT_TRANSLATABLE_KEY: string;
|
|
7
8
|
constructor(props?: any);
|
|
8
9
|
toPartialObj(): ShopifyProduct;
|