-
Notifications
You must be signed in to change notification settings - Fork 5.5k
New Components - allocadence #14221
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
Merged
Merged
New Components - allocadence #14221
Changes from 3 commits
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
343 changes: 343 additions & 0 deletions
343
components/allocadence/actions/create-customer-order/create-customer-order.mjs
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,343 @@ | ||
| import { ConfigurationError } from "@pipedream/platform"; | ||
| import allocadence from "../../allocadence.app.mjs"; | ||
| import { POSTAGE_ACCOUNT_OPTIONS } from "../../common/constants.mjs"; | ||
| import { parseObject } from "../../common/utils.mjs"; | ||
|
|
||
| export default { | ||
| key: "allocadence-create-customer-order", | ||
| name: "Create Customer Order", | ||
| description: "Creates a new customer order. [See the documentation](https://docs.allocadence.com/#tag/customer_order/paths/~1customer-orders/post)", | ||
| version: "0.0.1", | ||
| type: "action", | ||
| props: { | ||
| allocadence, | ||
| orderNumber: { | ||
| type: "string", | ||
| label: "Order Number", | ||
| description: "Order number for the customer order.", | ||
| optional: true, | ||
| }, | ||
| clientId: { | ||
| type: "integer", | ||
| label: "Client Id", | ||
| description: "Id of the client that the customer order is for.", | ||
| optional: true, | ||
| }, | ||
| clientName: { | ||
| type: "string", | ||
| label: "Client Name", | ||
| description: "Name of the client that the customer order is for. **Ignored if clientId is provided and is nonzero.**", | ||
| optional: true, | ||
| }, | ||
| customerId: { | ||
| type: "integer", | ||
| label: "Customer Id", | ||
| description: "Id of the customer. If none is provided, will attempt to find an existing customer based on the other customer fields and shipping address. Other fields not used if id is provided.", | ||
| optional: true, | ||
| }, | ||
| title: { | ||
| type: "string", | ||
| label: "Customer Title", | ||
| description: "The title of the customer.", | ||
| optional: true, | ||
| }, | ||
| name: { | ||
| type: "string", | ||
| label: "Customer Name", | ||
| description: "A combination of name and surname is required if the customer is new.", | ||
| optional: true, | ||
| }, | ||
| surname: { | ||
| type: "string", | ||
| label: "Customer Surname", | ||
| description: "A combination of name and surname is required if the customer is new.", | ||
| optional: true, | ||
| }, | ||
| email: { | ||
| type: "string", | ||
| label: "Customer Email", | ||
| description: "The email of the customer.", | ||
| optional: true, | ||
| }, | ||
| customerCompany: { | ||
| type: "string", | ||
| label: "Customer Company", | ||
| description: "The company of the customer.", | ||
| optional: true, | ||
| }, | ||
| accountNumber: { | ||
| type: "string", | ||
| label: "Customer Account Number", | ||
| description: "Will only match a customer on this field if provided.", | ||
| optional: true, | ||
| }, | ||
| shippingAddressId: { | ||
| type: "integer", | ||
| label: "Shipping Address Id", | ||
| description: "Id of the shipping address. **Other Shipping fields will not be used if provided.**", | ||
| optional: true, | ||
| }, | ||
| shippingAddressCode: { | ||
| type: "string", | ||
| label: "Shipping Address Code", | ||
| description: "Used to find an existing address. Other fields not used if an address is successfully found.", | ||
| optional: true, | ||
| }, | ||
| shippingAddressCompany: { | ||
| type: "string", | ||
| label: "Shipping Address Company", | ||
| description: "The company of the shipping address.", | ||
| optional: true, | ||
| }, | ||
| shippingAddressName: { | ||
| type: "string", | ||
| label: "Shipping Address Name", | ||
| description: "The name of the shipping address.", | ||
| optional: true, | ||
| }, | ||
| shippingAddressline1: { | ||
| type: "string", | ||
| label: "Shipping Address Line 1", | ||
| description: "The shipping address line 1.", | ||
| optional: true, | ||
| }, | ||
| shippingAddressline2: { | ||
| type: "string", | ||
| label: "Shipping Address Line 2", | ||
| description: "The shipping address line 2.", | ||
| optional: true, | ||
| }, | ||
| shippingAddressline3: { | ||
| type: "string", | ||
| label: "Shipping Address Line 3", | ||
| description: "The shipping address line 3.", | ||
| optional: true, | ||
| }, | ||
| shippingAddressCity: { | ||
| type: "string", | ||
| label: "Shipping Address City", | ||
| description: "The city of the shipping address.", | ||
| optional: true, | ||
| }, | ||
| shippingAddressState: { | ||
| type: "string", | ||
| label: "Shipping Address State", | ||
| description: "The state of the shipping address.", | ||
| optional: true, | ||
| }, | ||
| shippingAddressZip: { | ||
| type: "string", | ||
| label: "Shipping Address Zip", | ||
| description: "The zip of the shipping address.", | ||
| optional: true, | ||
| }, | ||
| shippingAddressCountryCode: { | ||
| type: "string", | ||
| label: "Shipping Address Country Code", | ||
| description: "The country code of the shipping address. [See the ISO 3166 codes](https://www.iban.com/country-codes).", | ||
| optional: true, | ||
| }, | ||
| shippingAddressPhone: { | ||
| type: "string", | ||
| label: "Shipping Address Phone", | ||
| description: "The phone of the shipping address.", | ||
| optional: true, | ||
| }, | ||
| sameAsShipping: { | ||
| type: "boolean", | ||
| label: "Same As Shipping", | ||
| description: "True if the billing address is the same as the shipping address.", | ||
| reloadProps: true, | ||
| optional: true, | ||
| }, | ||
| shipFromWarehouseId: { | ||
| type: "string", | ||
| label: "Ship From Warehouse Id", | ||
| description: "Id of the warehouse the ordered items will be allocated from. If no warehouse parameters are given, then the user's current warehouse will be used.", | ||
| optional: true, | ||
| }, | ||
jcortes marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| shipFromWarehouseName: { | ||
| type: "string", | ||
| label: "Ship From Warehouse Name", | ||
| description: "Name of the warehouse the ordered items will be allocated from. Ignored if warehouseId is provided.", | ||
| optional: true, | ||
| }, | ||
| shipVia: { | ||
| type: "string", | ||
| label: "Ship Via", | ||
| description: "Code of the carrier or service to use for shipping.", | ||
| optional: true, | ||
| }, | ||
| postageAccount: { | ||
| type: "string", | ||
| label: "Postage Account", | ||
| description: "Who to bill for shipping.", | ||
| options: POSTAGE_ACCOUNT_OPTIONS, | ||
| optional: true, | ||
| }, | ||
| items: { | ||
| type: "string[]", | ||
| label: "Items", | ||
| description: "An array of objects of ordered items. **Example: {\"itemId\": \"123\", \"sku\": \"SKU123\", \"quantity\": 1}** [See the documentation](https://docs.allocadence.com/#tag/customer_order/paths/~1customer-orders/post) fro further information.", | ||
| optional: true, | ||
| }, | ||
jcortes marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| }, | ||
| async additionalProps() { | ||
| const props = {}; | ||
|
|
||
| if (!this.sameAsShipping) { | ||
| props.billingAddressId = { | ||
| type: "integer", | ||
| label: "Billing Address Id", | ||
| description: "Id of the billing address. **Other Billing fields will not be used if provided.**", | ||
| optional: true, | ||
| }; | ||
| props.billingAddressCode = { | ||
| type: "string", | ||
| label: "Billing Address Code", | ||
| description: "Used to find an existing address. Other fields not used if an address is successfully found.", | ||
| optional: true, | ||
| }; | ||
| props.billingAddressCompany = { | ||
| type: "string", | ||
| label: "Billing Address Company", | ||
| description: "The company of the billing address.", | ||
| optional: true, | ||
| }; | ||
| props.billingAddressName = { | ||
| type: "string", | ||
| label: "Billing Address Name", | ||
| description: "The name of the billing address.", | ||
| optional: true, | ||
| }; | ||
| props.billingAddressline1 = { | ||
| type: "string", | ||
| label: "Billing Address Line 1", | ||
| description: "The billing address line 1.", | ||
| optional: true, | ||
| }; | ||
| props.billingAddressline2 = { | ||
| type: "string", | ||
| label: "Billing Address Line 2", | ||
| description: "The billing address line 2.", | ||
| optional: true, | ||
| }; | ||
| props.billingAddressline3 = { | ||
| type: "string", | ||
| label: "Billing Address Line 3", | ||
| description: "The billing address line 3.", | ||
| optional: true, | ||
| }; | ||
jcortes marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| props.billingAddressCity = { | ||
| type: "string", | ||
| label: "Billing Address City", | ||
| description: "The city of the billing address.", | ||
| optional: true, | ||
| }; | ||
| props.billingAddressState = { | ||
| type: "string", | ||
| label: "Billing Address State", | ||
| description: "The state of the billing address.", | ||
| optional: true, | ||
| }; | ||
| props.billingAddressZip = { | ||
| type: "string", | ||
| label: "Billing Address Zip", | ||
| description: "The zip of the billing address.", | ||
| optional: true, | ||
| }; | ||
| props.billingAddressCountryCode = { | ||
| type: "string", | ||
| label: "Billing Address Country Code", | ||
| description: "The country code of the billing address. [See the ISO 3166 codes](https://www.iban.com/country-codes).", | ||
| optional: true, | ||
| }; | ||
| props.billingAddressPhone = { | ||
| type: "string", | ||
| label: "Billing Address Phone", | ||
| description: "The phone of the billing address.", | ||
| optional: true, | ||
| }; | ||
| } | ||
jcortes marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| return props; | ||
| }, | ||
| async run({ $ }) { | ||
| if (!this.customerId && | ||
| !this.title && | ||
| !this.name && | ||
| !this.surname && | ||
| !this.email && | ||
| !this.customerCompany && | ||
| !this.accountNumber) { | ||
| throw new ConfigurationError("You must provide at least 'Customer Id', 'Customer Title', 'Customer Name', 'Customer Surname', 'Customer Email', 'Customer Company' or 'Customer Account Number'."); | ||
| } | ||
|
|
||
| if (!this.shippingAddressId && | ||
| !this.shippingAddressline1 && | ||
| !this.shippingAddressCountryCode) { | ||
| throw new ConfigurationError("You must provide at least 'Shipping Address Id' or 'Shipping Address Line1' and 'Shipping Address Country Code'."); | ||
| } | ||
|
|
||
| if (!this.sameAsShipping && | ||
| !this.billingAddressId && | ||
| !this.billingAddressline1 && | ||
| !this.billingAddressCountryCode) { | ||
| throw new ConfigurationError("When 'Same As Shipping' is set **False** you must provide at least 'Billing Address Id' or 'Billing Address Line1' and 'Billing Address Country Code'."); | ||
| } | ||
|
|
||
| const response = await this.allocadence.createCustomerOrder({ | ||
| $, | ||
| data: { | ||
| orderNumber: this.orderNumber, | ||
| clientId: this.clientId, | ||
| clientName: this.clientName, | ||
| customer: { | ||
| id: this.customerId, | ||
| title: this.title, | ||
| name: this.name, | ||
| surname: this.surname, | ||
| email: this.email, | ||
| company: this.customerCompany, | ||
| accountNumber: this.accountNumber, | ||
| }, | ||
| shippingAddress: { | ||
| id: this.shippingAddressId, | ||
| code: this.shippingAddressCode, | ||
| company: this.shippingAddressCompany, | ||
| name: this.shippingAddressName, | ||
| line1: this.shippingAddressline1, | ||
| line2: this.shippingAddressline2, | ||
| line3: this.shippingAddressline3, | ||
| city: this.shippingAddressCity, | ||
| state: this.shippingAddressState, | ||
| zip: this.shippingAddressZip, | ||
| countryCode: this.shippingAddressCountryCode, | ||
| phone: this.shippingAddressPhone, | ||
| }, | ||
| billingAddress: { | ||
| sameAsShipping: this.sameAsShipping, | ||
| id: this.billingAddressId, | ||
| code: this.billingAddressCode, | ||
| company: this.billingAddressCompany, | ||
| name: this.billingAddressName, | ||
| line1: this.billingAddressline1, | ||
| line2: this.billingAddressline2, | ||
| line3: this.billingAddressline3, | ||
| city: this.billingAddressCity, | ||
| state: this.billingAddressState, | ||
| zip: this.billingAddressZip, | ||
| countryCode: this.billingAddressCountryCode, | ||
| phone: this.billingAddressPhone, | ||
| }, | ||
jcortes marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| shipFromWarehouseId: this.shipFromWarehouseId, | ||
| shipFromWarehouseName: this.shipFromWarehouseName, | ||
| shipVia: this.shipVia, | ||
| postageAccount: this.postageAccount, | ||
| items: parseObject(this.items), | ||
| }, | ||
jcortes marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| }); | ||
|
|
||
| $.export("$summary", `Successfully created customer order with ID ${response.id}`); | ||
| return response; | ||
| }, | ||
| }; | ||
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.