mirror of
https://github.com/n8n-io/n8n.git
synced 2025-03-05 20:50:17 -08:00
fix(QuickBooks Online Node): Add qty to quickbooks invoice line details (#13602)
This commit is contained in:
parent
bd87728215
commit
7c4e2f014c
|
@ -329,9 +329,14 @@ export function processLines(this: IExecuteFunctions, lines: IDataObject[], reso
|
||||||
TaxCodeRef: {
|
TaxCodeRef: {
|
||||||
value: line.TaxCodeRef,
|
value: line.TaxCodeRef,
|
||||||
},
|
},
|
||||||
|
Qty: line.Qty,
|
||||||
};
|
};
|
||||||
|
if (line.Qty === undefined) {
|
||||||
|
delete (line.SalesItemLineDetail as IDataObject).Qty;
|
||||||
|
}
|
||||||
delete line.itemId;
|
delete line.itemId;
|
||||||
delete line.TaxCodeRef;
|
delete line.TaxCodeRef;
|
||||||
|
delete line.Qty;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -0,0 +1,75 @@
|
||||||
|
import type { IExecuteFunctions } from 'n8n-workflow';
|
||||||
|
|
||||||
|
import { processLines } from '../GenericFunctions';
|
||||||
|
describe('processLines', () => {
|
||||||
|
const mockExecuteFunctions: Partial<IExecuteFunctions> = {
|
||||||
|
getNodeParameter: jest.fn(),
|
||||||
|
};
|
||||||
|
|
||||||
|
test('should process AccountBasedExpenseLineDetail for bill resource', () => {
|
||||||
|
const lines = [{ DetailType: 'AccountBasedExpenseLineDetail', accountId: '123' }];
|
||||||
|
|
||||||
|
const result = processLines.call(mockExecuteFunctions as IExecuteFunctions, lines, 'bill');
|
||||||
|
|
||||||
|
expect(result).toEqual([
|
||||||
|
{
|
||||||
|
DetailType: 'AccountBasedExpenseLineDetail',
|
||||||
|
AccountBasedExpenseLineDetail: { AccountRef: { value: '123' } },
|
||||||
|
},
|
||||||
|
]);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('should process ItemBasedExpenseLineDetail for bill resource', () => {
|
||||||
|
const lines = [{ DetailType: 'ItemBasedExpenseLineDetail', itemId: '456' }];
|
||||||
|
|
||||||
|
const result = processLines.call(mockExecuteFunctions as IExecuteFunctions, lines, 'bill');
|
||||||
|
|
||||||
|
expect(result).toEqual([
|
||||||
|
{
|
||||||
|
DetailType: 'ItemBasedExpenseLineDetail',
|
||||||
|
ItemBasedExpenseLineDetail: { ItemRef: { value: '456' } },
|
||||||
|
},
|
||||||
|
]);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('should process SalesItemLineDetail for estimate resource', () => {
|
||||||
|
const lines = [{ DetailType: 'SalesItemLineDetail', itemId: '789', TaxCodeRef: 'TAX1' }];
|
||||||
|
|
||||||
|
const result = processLines.call(mockExecuteFunctions as IExecuteFunctions, lines, 'estimate');
|
||||||
|
|
||||||
|
expect(result).toEqual([
|
||||||
|
{
|
||||||
|
DetailType: 'SalesItemLineDetail',
|
||||||
|
SalesItemLineDetail: { ItemRef: { value: '789' }, TaxCodeRef: { value: 'TAX1' } },
|
||||||
|
},
|
||||||
|
]);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('should process SalesItemLineDetail for invoice resource with Qty', () => {
|
||||||
|
const lines = [
|
||||||
|
{ DetailType: 'SalesItemLineDetail', itemId: '101', TaxCodeRef: 'TAX2', Qty: 10 },
|
||||||
|
];
|
||||||
|
|
||||||
|
const result = processLines.call(mockExecuteFunctions as IExecuteFunctions, lines, 'invoice');
|
||||||
|
|
||||||
|
expect(result).toEqual([
|
||||||
|
{
|
||||||
|
DetailType: 'SalesItemLineDetail',
|
||||||
|
SalesItemLineDetail: { ItemRef: { value: '101' }, TaxCodeRef: { value: 'TAX2' }, Qty: 10 },
|
||||||
|
},
|
||||||
|
]);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('should process SalesItemLineDetail for invoice resource without Qty', () => {
|
||||||
|
const lines = [{ DetailType: 'SalesItemLineDetail', itemId: '202', TaxCodeRef: 'TAX3' }];
|
||||||
|
|
||||||
|
const result = processLines.call(mockExecuteFunctions as IExecuteFunctions, lines, 'invoice');
|
||||||
|
|
||||||
|
expect(result).toEqual([
|
||||||
|
{
|
||||||
|
DetailType: 'SalesItemLineDetail',
|
||||||
|
SalesItemLineDetail: { ItemRef: { value: '202' }, TaxCodeRef: { value: 'TAX3' } },
|
||||||
|
},
|
||||||
|
]);
|
||||||
|
});
|
||||||
|
});
|
|
@ -148,6 +148,13 @@ export const invoiceFields: INodeProperties[] = [
|
||||||
loadOptionsMethod: 'getTaxCodeRefs',
|
loadOptionsMethod: 'getTaxCodeRefs',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
displayName: 'Quantity',
|
||||||
|
name: 'Qty',
|
||||||
|
description: 'Number of units of the line item',
|
||||||
|
type: 'number',
|
||||||
|
default: 0,
|
||||||
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue