Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(Invoice Ninja Node): Fix emailing and marking invoice as paid / sent #9589

Merged
6 changes: 6 additions & 0 deletions packages/nodes-base/nodes/InvoiceNinja/InvoiceDescription.ts
Original file line number Diff line number Diff line change
Expand Up @@ -158,6 +158,12 @@ export const invoiceFields: INodeProperties[] = [
type: 'boolean',
default: false,
},
{
displayName: 'Mark Sent',
name: 'markSent',
type: 'boolean',
default: false,
},
{
displayName: 'Paid',
name: 'paid',
Expand Down
18 changes: 14 additions & 4 deletions packages/nodes-base/nodes/InvoiceNinja/InvoiceNinja.node.ts
Original file line number Diff line number Diff line change
Expand Up @@ -421,7 +421,6 @@ export class InvoiceNinja implements INodeType {
if (apiVersion === 'v4') {
body.invoice_number = additionalFields.invoiceNumber as string;
} else if (apiVersion === 'v5') {
// eslint-disable-next-line id-denylist
body.number = additionalFields.invoiceNumber as string;
}
}
Expand Down Expand Up @@ -462,10 +461,21 @@ export class InvoiceNinja implements INodeType {
body.discount = additionalFields.discount as number;
}
if (additionalFields.paid) {
body.paid = additionalFields.paid as number;
if (apiVersion === 'v4') {
body.paid = additionalFields.paid as number;
} else if (apiVersion === 'v5') {
qs.amount_paid = additionalFields.paid as number;
}
}
if (additionalFields.emailInvoice) {
body.email_invoice = additionalFields.emailInvoice as boolean;
if (apiVersion === 'v4') {
body.email_invoice = additionalFields.emailInvoice as boolean;
} else if (apiVersion === 'v5') {
qs.send_email = additionalFields.emailInvoice as boolean;
}
}
if (additionalFields.markSent) {
qs.mark_sent = additionalFields.markSent as boolean;
}
const invoceItemsValues = (this.getNodeParameter('invoiceItemsUi', i) as IDataObject)
.invoiceItemsValues as IDataObject[];
Expand Down Expand Up @@ -501,6 +511,7 @@ export class InvoiceNinja implements INodeType {
'POST',
'/invoices',
body as IDataObject,
qs,
);
responseData = responseData.data;
}
Expand Down Expand Up @@ -879,7 +890,6 @@ export class InvoiceNinja implements INodeType {
if (apiVersion === 'v4') {
body.invoice_number = additionalFields.quoteNumber as string;
} else if (apiVersion === 'v5') {
// eslint-disable-next-line id-denylist
body.number = additionalFields.quoteNumber as string;
}
}
Expand Down
2 changes: 1 addition & 1 deletion packages/nodes-base/nodes/InvoiceNinja/QuoteDescription.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ export const quoteOperations: INodeProperties[] = [
{
name: 'Email',
value: 'email',
description: 'Email an quote',
description: 'Email a quote',
action: 'Email a quote',
},
{
Expand Down
4 changes: 2 additions & 2 deletions packages/nodes-base/nodes/InvoiceNinja/invoiceInterface.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,10 @@ export interface IInvoice {
client_id?: number;
custom_value1?: number;
custom_value2?: number;
email_invoice?: boolean;
email?: string;
discount?: number;
due_date?: string;
email_invoice?: boolean;
email?: string;
invoice_date?: string;
invoice_items?: IItem[];
line_items?: IItem[];
Expand Down