UNPKG

@pipedream/quipu

Version:

Pipedream Quipu Components

114 lines (112 loc) 2.53 kB
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; }, };