import app from "../../quipu.app.mjs";
import { ConfigurationError } from "@pipedream/platform";
export default {
key: "quipu-create-income-invoice",
name: "Create Income Invoice",
description: "Creates a new income invoice. [See the docs](http://quipuapp.github.io/api-v1-docs/#creating-an-invoice).",
version: "0.0.1",
type: "action",
props: {
app,
client: {
propDefinition: [
app,
"client",
],
},
number: {
propDefinition: [
app,
"number",
],
},
issued: {
propDefinition: [
app,
"issued",
],
},
dueDate: {
type: "string",
label: "Due Date",
description: "The due date of the invoice, ISO 8601 format. Example: `2019-07-26`.",
},
items: {
propDefinition: [
app,
"items",
],
optional: true,
},
accountingCategory: {
propDefinition: [
app,
"accountingCategory",
],
optional: true,
},
paidAt: {
propDefinition: [
app,
"paidAt",
],
optional: true,
},
paymentMethod: {
propDefinition: [
app,
"paymentMethod",
],
optional: true,
},
tags: {
propDefinition: [
app,
"tags",
],
optional: true,
},
},
async run({ $ }) {
const attributes = {
"kind": "income",
"number": this.number,
"issue_date": this.issued,
"due_date": this.dueDate,
"paid_at": this.paidAt,
"payment_method": this.paymentMethod,
"tags": (this.tags && this.tags.join(", ")) || undefined,
};
const relationships = {
"contact": {
"data": {
"id": this.client,
"type": "contacts",
},
},
};
if (this.accountingCategory) {
relationships.accounting_category = {
"data": {
"id": this.accountingCategory,
"type": "accounting_categories",
},
};
}
if (this.items) {
let items = this.items;
if (typeof (this.items) === "string") {
items = JSON.parse(items);
}
if (!Array.isArray(items)) {
throw new ConfigurationError("Items must to be an array.");
}
relationships.items = {
"data": items,
};
}
const invoice = await this.app.createInvoice($, attributes, relationships);
$.export("$summary", `Successfully created invoice with ID "${invoice.id}"`);
return invoice;
},
};