diff --git a/components/quickbooks/sources/new-bill-created/new-bill-created.mjs b/components/quickbooks/sources/new-bill-created/new-bill-created.mjs new file mode 100644 index 0000000000000..2cd63684ea2d0 --- /dev/null +++ b/components/quickbooks/sources/new-bill-created/new-bill-created.mjs @@ -0,0 +1,25 @@ +import common from "../common/base.mjs"; +import sampleEmit from "./test-event.mjs"; + +export default { + ...common, + key: "quickbooks-new-bill-created", + name: "New Bill Created", + description: "Emit new event when a new Bill is created.", + version: "0.0.1", + type: "source", + dedupe: "unique", + methods: { + ...common.methods, + getQuery(lastDate) { + return `select * from Bill Where Metadata.CreateTime >= '${lastDate}' orderby Metadata.CreateTime desc`; + }, + getFieldList() { + return "Bill"; + }, + getSummary(item) { + return `New Bill: ${item.Id}`; + }, + }, + sampleEmit, +}; diff --git a/components/quickbooks/sources/new-bill-created/test-event.mjs b/components/quickbooks/sources/new-bill-created/test-event.mjs new file mode 100644 index 0000000000000..3c3d113d3fcd8 --- /dev/null +++ b/components/quickbooks/sources/new-bill-created/test-event.mjs @@ -0,0 +1,59 @@ +// components/quickbooks/sources/new-bill-created/test-event.mjs + +export default { + "Id": "123456", + "SyncToken": "0", + "MetaData": { + "CreateTime": "2023-04-15T10:30:00Z", + "LastUpdatedTime": "2023-04-15T10:30:00Z" + }, + "VendorRef": { + "value": "56789", + "name": "Acme Supplies" + }, + "APAccountRef": { + "value": "33", + "name": "Accounts Payable" + }, + "TxnDate": "2023-04-15", + "CurrencyRef": { + "value": "CAD", + "name": "Canadian Dollar" + }, + "PrivateNote": "Monthly office supplies", + "TotalAmt": 350.75, + "DueDate": "2023-05-15", + "sparse": false, + "Line": [ + { + "Id": "1", + "LineNum": 1, + "Description": "Paper supplies", + "Amount": 150.50, + "DetailType": "ItemBasedExpenseLineDetail", + "ItemBasedExpenseLineDetail": { + "ItemRef": { + "value": "11", + "name": "Office Supplies" + }, + "Qty": 5, + "UnitPrice": 30.10 + } + }, + { + "Id": "2", + "LineNum": 2, + "Description": "Printer ink", + "Amount": 200.25, + "DetailType": "ItemBasedExpenseLineDetail", + "ItemBasedExpenseLineDetail": { + "ItemRef": { + "value": "12", + "name": "Printing Supplies" + }, + "Qty": 3, + "UnitPrice": 66.75 + } + } + ] +} \ No newline at end of file diff --git a/components/quickbooks/sources/new-bill-updated/new-bill-updated.mjs b/components/quickbooks/sources/new-bill-updated/new-bill-updated.mjs new file mode 100644 index 0000000000000..fd41858269264 --- /dev/null +++ b/components/quickbooks/sources/new-bill-updated/new-bill-updated.mjs @@ -0,0 +1,28 @@ +import common from "../common/base.mjs"; +import sampleEmit from "./test-event.mjs"; + +export default { + ...common, + key: "quickbooks-new-bill-updated", + name: "New Bill Updated", + description: "Emit new event when a bill is updated.", + version: "0.0.1", + type: "source", + dedupe: "unique", + methods: { + ...common.methods, + getQuery(lastDate) { + return `select * from Bill Where Metadata.LastUpdatedTime >= '${lastDate}' orderby Metadata.LastUpdatedTime desc`; + }, + getFieldList() { + return "Bill"; + }, + getFieldDate() { + return "LastUpdatedTime"; + }, + getSummary(item) { + return `New Bill Updated: ${item.Id}`; + }, + }, + sampleEmit, +}; diff --git a/components/quickbooks/sources/new-bill-updated/test-event.mjs b/components/quickbooks/sources/new-bill-updated/test-event.mjs new file mode 100644 index 0000000000000..6965d3bfe22ab --- /dev/null +++ b/components/quickbooks/sources/new-bill-updated/test-event.mjs @@ -0,0 +1,74 @@ +// components/quickbooks/sources/new-bill-updated/test-event.mjs + +export default { + "Id": "123456", + "SyncToken": "1", // Incremented because this is an update + "MetaData": { + "CreateTime": "2023-04-15T10:30:00Z", + "LastUpdatedTime": "2023-04-16T14:45:00Z" // Different update date + }, + "VendorRef": { + "value": "56789", + "name": "Acme Supplies" + }, + "APAccountRef": { + "value": "33", + "name": "Accounts Payable" + }, + "TxnDate": "2023-04-15", + "CurrencyRef": { + "value": "CAD", + "name": "Canadian Dollar" + }, + "PrivateNote": "Monthly office supplies - Updated with additional items", + "TotalAmt": 425.25, // Modified amount + "DueDate": "2023-05-15", + "sparse": true, // Indicates this is an update + "Line": [ + { + "Id": "1", + "LineNum": 1, + "Description": "Paper supplies", + "Amount": 150.50, + "DetailType": "ItemBasedExpenseLineDetail", + "ItemBasedExpenseLineDetail": { + "ItemRef": { + "value": "11", + "name": "Office Supplies" + }, + "Qty": 5, + "UnitPrice": 30.10 + } + }, + { + "Id": "2", + "LineNum": 2, + "Description": "Printer ink", + "Amount": 200.25, + "DetailType": "ItemBasedExpenseLineDetail", + "ItemBasedExpenseLineDetail": { + "ItemRef": { + "value": "12", + "name": "Printing Supplies" + }, + "Qty": 3, + "UnitPrice": 66.75 + } + }, + { + "Id": "3", // New line added + "LineNum": 3, + "Description": "USB Cables", + "Amount": 74.50, + "DetailType": "ItemBasedExpenseLineDetail", + "ItemBasedExpenseLineDetail": { + "ItemRef": { + "value": "13", + "name": "Computer Accessories" + }, + "Qty": 5, + "UnitPrice": 14.90 + } + } + ] +} \ No newline at end of file