Skip to content

Commit affff4d

Browse files
committed
updates
1 parent 36f0b5c commit affff4d

File tree

6 files changed

+60
-20
lines changed

6 files changed

+60
-20
lines changed

components/quickbooks/actions/create-bill/create-bill.mjs

+12-4
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ export default {
4040
props.lineItems = {
4141
type: "string[]",
4242
label: "Line Items",
43-
description: "Line items of a bill. Example: `{ \"DetailType\": \"AccountBasedExpenseLineDetail\", \"Amount\": 100.0, \"AccountBasedExpenseLineDetail\": { \"AccountRef\": { \"name\": \"Advertising\", \"value\": \"1\" } } }`",
43+
description: "Line items of a bill. Set DetailType to `AccountBasedExpenseLineDetail`. Example: `{ \"DetailType\": \"AccountBasedExpenseLineDetail\", \"Amount\": 100.0, \"AccountBasedExpenseLineDetail\": { \"AccountRef\": { \"name\": \"Advertising\", \"value\": \"1\" } } }`",
4444
};
4545
return props;
4646
}
@@ -99,15 +99,23 @@ export default {
9999
throw new ConfigurationError("Must provide vendorRefValue, and lineItems parameters.");
100100
}
101101

102+
const lines = this.lineItemsAsObjects
103+
? parseLineItems(this.lineItems)
104+
: this.buildLineItems();
105+
106+
lines.forEach((line) => {
107+
if (line.DetailType !== "AccountBasedExpenseLineDetail") {
108+
throw new ConfigurationError("Line Item DetailType must be `AccountBasedExpenseLineDetail`");
109+
}
110+
});
111+
102112
const response = await this.quickbooks.createBill({
103113
$,
104114
data: {
105115
VendorRef: {
106116
value: this.vendorRefValue,
107117
},
108-
Line: this.lineItemsAsObjects
109-
? parseLineItems(this.lineItems)
110-
: this.buildLineItems(),
118+
Line: lines,
111119
CurrencyRef: {
112120
value: this.currencyRefValue,
113121
},

components/quickbooks/actions/create-invoice/create-invoice.mjs

+12-4
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ export default {
3636
props.lineItems = {
3737
type: "string[]",
3838
label: "Line Items",
39-
description: "Line items of an invoice. Example: `{ \"DetailType\": \"SalesItemLineDetail\", \"Amount\": 100.0, \"SalesItemLineDetail\": { \"ItemRef\": { \"name\": \"Services\", \"value\": \"1\" } } }`",
39+
description: "Line items of an invoice. Set DetailType to `SalesItemLineDetail`, `GroupLineDetail`, or `DescriptionOnly`. Example: `{ \"DetailType\": \"SalesItemLineDetail\", \"Amount\": 100.0, \"SalesItemLineDetail\": { \"ItemRef\": { \"name\": \"Services\", \"value\": \"1\" } } }`",
4040
};
4141
return props;
4242
}
@@ -95,12 +95,20 @@ export default {
9595
throw new ConfigurationError("Must provide lineItems, and customerRefValue parameters.");
9696
}
9797

98+
const lines = this.lineItemsAsObjects
99+
? parseLineItems(this.lineItems)
100+
: this.buildLineItems();
101+
102+
lines.forEach((line) => {
103+
if (line.DetailType !== "SalesItemLineDetail" && line.DetailType !== "GroupLineDetail" && line.DetailType !== "DescriptionOnly") {
104+
throw new ConfigurationError("Line Item DetailType must be `SalesItemLineDetail`, `GroupLineDetail`, or `DescriptionOnly`");
105+
}
106+
});
107+
98108
const response = await this.quickbooks.createInvoice({
99109
$,
100110
data: {
101-
Line: this.lineItemsAsObjects
102-
? parseLineItems(this.lineItems)
103-
: this.buildLineItems(),
111+
Line: lines,
104112
CustomerRef: {
105113
value: this.customerRefValue,
106114
},

components/quickbooks/actions/create-purchase/create-purchase.mjs

+12-4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import quickbooks from "../../quickbooks.app.mjs";
22
import { parseLineItems } from "../../common/utils.mjs";
3+
import { ConfigurationError } from "@pipedream/platform";
34

45
export default {
56
key: "quickbooks-create-purchase",
@@ -49,7 +50,7 @@ export default {
4950
props.lineItems = {
5051
type: "string[]",
5152
label: "Line Items",
52-
description: "Line items of a purchase. Example: `{ \"DetailType\": \"AccountBasedExpenseLineDetail\", \"Amount\": 100.0, \"AccountBasedExpenseLineDetail\": { \"AccountRef\": { \"name\": \"Advertising\", \"value\": \"1\" } } }`",
53+
description: "Line items of a purchase. Set DetailType to `AccountBasedExpenseLineDetail`. Example: `{ \"DetailType\": \"AccountBasedExpenseLineDetail\", \"Amount\": 100.0, \"AccountBasedExpenseLineDetail\": { \"AccountRef\": { \"name\": \"Advertising\", \"value\": \"1\" } } }`",
5354
};
5455
return props;
5556
}
@@ -104,16 +105,23 @@ export default {
104105
},
105106
},
106107
async run({ $ }) {
108+
const lines = this.lineItemsAsObjects
109+
? parseLineItems(this.lineItems)
110+
: this.buildLineItems();
111+
112+
lines.forEach((line) => {
113+
if (line.DetailType !== "AccountBasedExpenseLineDetail") {
114+
throw new ConfigurationError("Line Item DetailType must be `AccountBasedExpenseLineDetail`");
115+
}
116+
});
107117
const response = await this.quickbooks.createPurchase({
108118
$,
109119
data: {
110120
PaymentType: this.paymentType,
111121
AccountRef: {
112122
value: this.accountRefValue,
113123
},
114-
Line: this.lineItemsAsObjects
115-
? parseLineItems(this.lineItems)
116-
: this.buildLineItems(),
124+
Line: lines,
117125
CurrencyRef: {
118126
value: this.currencyRefValue,
119127
},

components/quickbooks/actions/create-sales-receipt/create-sales-receipt.mjs

+13-4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import quickbooks from "../../quickbooks.app.mjs";
22
import { parseLineItems } from "../../common/utils.mjs";
3+
import { ConfigurationError } from "@pipedream/platform";
34

45
export default {
56
key: "quickbooks-create-sales-receipt",
@@ -30,7 +31,7 @@ export default {
3031
props.lineItems = {
3132
type: "string[]",
3233
label: "Line Items",
33-
description: "Line items of a sales receipt. Example: `{ \"DetailType\": \"SalesItemLineDetail\", \"Amount\": 100.0, \"SalesItemLineDetail\": { \"ItemRef\": { \"name\": \"Services\", \"value\": \"1\" } } }`",
34+
description: "Line items of a sales receipt. Set DetailType to `SalesItemLineDetail` or `GroupLineDetail`. Example: `{ \"DetailType\": \"SalesItemLineDetail\", \"Amount\": 100.0, \"SalesItemLineDetail\": { \"ItemRef\": { \"name\": \"Services\", \"value\": \"1\" } } }`",
3435
};
3536
return props;
3637
}
@@ -85,12 +86,20 @@ export default {
8586
},
8687
},
8788
async run({ $ }) {
89+
const lines = this.lineItemsAsObjects
90+
? parseLineItems(this.lineItems)
91+
: this.buildLineItems();
92+
93+
lines.forEach((line) => {
94+
if (line.DetailType !== "SalesItemLineDetail" && line.DetailType !== "GroupLineDetail") {
95+
throw new ConfigurationError("Line Item DetailType must be `SalesItemLineDetail` or `GroupLineDetail`");
96+
}
97+
});
98+
8899
const response = await this.quickbooks.createSalesReceipt({
89100
$,
90101
data: {
91-
Line: this.lineItemsAsObjects
92-
? parseLineItems(this.lineItems)
93-
: this.buildLineItems(),
102+
Line: lines,
94103
CurrencyRef: this.currencyRefValue && {
95104
value: this.currencyRefValue,
96105
},

components/quickbooks/actions/search-services/search-services.mjs

+1-1
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ export default {
5252
? ` MAXRESULTS ${this.maxResults}`
5353
: "";
5454

55-
const query = `select * from Item where Type = 'Service' and ${this.where_clause}${orderClause}${startPosition}${maxResults}`;
55+
const query = `select * from Item where Type = 'Service' and ${this.whereClause}${orderClause}${startPosition}${maxResults}`;
5656

5757
const response = await this.quickbooks.query({
5858
$,

components/quickbooks/actions/sparse-update-invoice/sparse-update-invoice.mjs

+10-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { parseLineItems } from "../../common/utils.mjs";
22
import quickbooks from "../../quickbooks.app.mjs";
3+
import { ConfigurationError } from "@pipedream/platform";
34

45
export default {
56
key: "quickbooks-sparse-update-invoice",
@@ -41,7 +42,7 @@ export default {
4142
props.lineItems = {
4243
type: "string[]",
4344
label: "Line Items",
44-
description: "Line items of an invoice. Example: `{ \"DetailType\": \"SalesItemLineDetail\", \"Amount\": 100.0, \"SalesItemLineDetail\": { \"ItemRef\": { \"name\": \"Services\", \"value\": \"1\" } } }`",
45+
description: "Line items of an invoice. Set DetailType to `SalesItemLineDetail`, `GroupLineDetail`, `DescriptionOnly`, `DiscountLineDetail`, or `SubTotalLineDetail`. Example: `{ \"DetailType\": \"SalesItemLineDetail\", \"Amount\": 100.0, \"SalesItemLineDetail\": { \"ItemRef\": { \"name\": \"Services\", \"value\": \"1\" } } }`",
4546
};
4647
return props;
4748
}
@@ -96,16 +97,22 @@ export default {
9697
},
9798
},
9899
async run({ $ }) {
99-
this.lineItems = this.lineItemsAsObjects
100+
const lines = this.lineItemsAsObjects
100101
? parseLineItems(this.lineItems)
101102
: this.buildLineItems();
102103

104+
lines.forEach((line) => {
105+
if (line.DetailType !== "SalesItemLineDetail" && line.DetailType !== "GroupLineDetail" && line.DetailType !== "DescriptionOnly" && line.DetailType !== "DiscountLineDetail" && line.DetailType !== "SubTotalLineDetail") {
106+
throw new ConfigurationError("Line Item DetailType must be `SalesItemLineDetail`, `GroupLineDetail`, `DescriptionOnly`, `DiscountLineDetail`, or `SubTotalLineDetail`");
107+
}
108+
});
109+
103110
const { Invoice: invoice } = await this.quickbooks.getInvoice({
104111
$,
105112
invoiceId: this.invoiceId,
106113
});
107114

108-
if (this.lineItems?.length) invoice.Line?.push(...this.lineItems);
115+
if (lines?.length) invoice.Line?.push(lines);
109116

110117
const response = await this.quickbooks.sparseUpdateInvoice({
111118
$,

0 commit comments

Comments
 (0)