Sales Orders
The Sales Orders module provides access to contextual information about the current sales order when a widget is rendered within supported sales order–related pages. Widgets can retrieve sales order identifiers, associated customer references, and fulfillment-related metadata for use in validations, conditional logic, and UI extensions.
- Methods
- Events
Methods
Get Salesorder Details
Retrieves data related to the current context. This method allows your widget to fetch record details, field values, or metadata required for rendering or processing logic.
- Fetch record information
- Read field values
- Access contextual module data
window.onload = function () {
ZFAPPS.extension.init().then(function(App) {
ZFAPPS.get('salesorder').then(function (data) {
//response Handling
}).catch(function (err) {
//error Handling
});
});
}
| Property | Request |
|---|---|
| adjustment | salesorder.adjustment |
| adjustment_description | salesorder.adjustment_description |
| adjustment_formatted | salesorder.adjustment_formatted |
| approver_id | salesorder.approver_id |
| approvers_list | salesorder.approvers_list |
| attachment_name | salesorder.attachment_name |
| balance | salesorder.balance |
| balance_formatted | salesorder.balance_formatted |
| bcy_adjustment | salesorder.bcy_adjustment |
| bcy_discount_total | salesorder.bcy_discount_total |
Show More Supported Input Keys
| Property | Request |
|---|---|
| bcy_shipping_charge | salesorder.bcy_shipping_charge |
| bcy_sub_total | salesorder.bcy_sub_total |
| bcy_tax_total | salesorder.bcy_tax_total |
| bcy_total | salesorder.bcy_total |
| billing_address | salesorder.billing_address |
| billing_address_id | salesorder.billing_address_id |
| branch_id | salesorder.branch_id |
| comments | salesorder.comments |
| contact_category | salesorder.contact_category |
| contact_persons | salesorder.contact_persons |
| created_by_email | salesorder.created_by_email |
| created_by_id | salesorder.created_by_id |
| created_date | salesorder.created_date |
| created_date_formatted | salesorder.created_date_formatted |
| created_time | salesorder.created_time |
| created_time_formatted | salesorder.created_time_formatted |
| crm_custom_reference_id | salesorder.crm_custom_reference_id |
| crm_owner_id | salesorder.crm_owner_id |
| currency_code | salesorder.currency_code |
| currency_id | salesorder.currency_id |
| currency_symbol | salesorder.currency_symbol |
| custom_fields | salesorder.custom_fields |
| customer_id | salesorder.customer_id |
| customer_name | salesorder.customer_name |
| date | salesorder.date |
| date_formatted | salesorder.date_formatted |
| default_warehouse_id | salesorder.default_warehouse_id |
| delivery_method | salesorder.delivery_method |
| delivery_method_id | salesorder.delivery_method_id |
| discount | salesorder.discount |
| discount_applied_on_amount | salesorder.discount_applied_on_amount |
| discount_percent | salesorder.discount_percent |
| discount_total | salesorder.discount_total |
| discount_total_formatted | salesorder.discount_total_formatted |
| discount_type | salesorder.discount_type |
| documents | salesorder.documents |
| estimate_id | salesorder.estimate_id |
| exchange_rate | salesorder.exchange_rate |
| invoiced_status | salesorder.invoiced_status |
| invoiced_status_formatted | salesorder.invoiced_status_formatted |
| invoices | salesorder.invoices |
| is_adv_tracking_in_package | salesorder.is_adv_tracking_in_package |
| is_discount_before_tax | salesorder.is_discount_before_tax |
| is_emailed | salesorder.is_emailed |
| is_fba_shipment_created | salesorder.is_fba_shipment_created |
| is_inclusive_tax | salesorder.is_inclusive_tax |
| is_offline_payment | salesorder.is_offline_payment |
| is_pre_gst | salesorder.is_pre_gst |
| last_modified_by_id | salesorder.last_modified_by_id |
| last_modified_time | salesorder.last_modified_time |
| last_modified_time_formatted | salesorder.last_modified_time_formatted |
| line_items | salesorder.line_items |
| lineitem_location_id | salesorder.lineitem_location_id |
| merchant_id | salesorder.merchant_id |
| merchant_name | salesorder.merchant_name |
| notes | salesorder.notes |
| order_status | salesorder.order_status |
| order_status_formatted | salesorder.order_status_formatted |
| paid_status | salesorder.paid_status |
| paid_status_formatted | salesorder.paid_status_formatted |
| payment_terms | salesorder.payment_terms |
| payment_terms_label | salesorder.payment_terms_label |
| price_precision | salesorder.price_precision |
| purchaseorders | salesorder.purchaseorders |
| reference_number | salesorder.reference_number |
| refundable_amount | salesorder.refundable_amount |
| roundoff_value | salesorder.roundoff_value |
| roundoff_value_formatted | salesorder.roundoff_value_formatted |
| salesorder_id | salesorder.salesorder_id |
| salesorder_number | salesorder.salesorder_number |
| salesperson_id | salesorder.salesperson_id |
| salesperson_name | salesorder.salesperson_name |
| shipment_date | salesorder.shipment_date |
| shipment_date_formatted | salesorder.shipment_date_formatted |
| shipping_address | salesorder.shipping_address |
| shipping_address_id | salesorder.shipping_address_id |
| shipping_charge | salesorder.shipping_charge |
| shipping_charge_exclusive_of_tax | salesorder.shipping_charge_exclusive_of_tax |
| shipping_charge_exclusive_of_tax_formatted | salesorder.shipping_charge_exclusive_of_tax_formatted |
| shipping_charge_formatted | salesorder.shipping_charge_formatted |
| shipping_charge_inclusive_of_tax | salesorder.shipping_charge_inclusive_of_tax |
| shipping_charge_inclusive_of_tax_formatted | salesorder.shipping_charge_inclusive_of_tax_formatted |
| shipping_charge_sac_code | salesorder.shipping_charge_sac_code |
| shipping_charge_tax | salesorder.shipping_charge_tax |
| shipping_charge_tax_exemption_code | salesorder.shipping_charge_tax_exemption_code |
| shipping_charge_tax_exemption_id | salesorder.shipping_charge_tax_exemption_id |
| shipping_charge_tax_formatted | salesorder.shipping_charge_tax_formatted |
| shipping_charge_tax_id | salesorder.shipping_charge_tax_id |
| shipping_charge_tax_name | salesorder.shipping_charge_tax_name |
| shipping_charge_tax_percentage | salesorder.shipping_charge_tax_percentage |
| shipping_charge_tax_type | salesorder.shipping_charge_tax_type |
| source | salesorder.source |
| status | salesorder.status |
| status_formatted | salesorder.status_formatted |
| sub_total | salesorder.sub_total |
| sub_total_exclusive_of_discount | salesorder.sub_total_exclusive_of_discount |
| sub_total_exclusive_of_discount_formatted | salesorder.sub_total_exclusive_of_discount_formatted |
| sub_total_formatted | salesorder.sub_total_formatted |
| sub_total_inclusive_of_tax | salesorder.sub_total_inclusive_of_tax |
| sub_total_inclusive_of_tax_formatted | salesorder.sub_total_inclusive_of_tax_formatted |
| submitted_by | salesorder.submitted_by |
| submitted_date | salesorder.submitted_date |
| submitted_date_formatted | salesorder.submitted_date_formatted |
| submitter_id | salesorder.submitter_id |
| tax_rounding | salesorder.tax_rounding |
| tax_total | salesorder.tax_total |
| tax_total_formatted | salesorder.tax_total_formatted |
| taxes | salesorder.taxes |
| template_id | salesorder.template_id |
| template_name | salesorder.template_name |
| template_type | salesorder.template_type |
| template_type_formatted | salesorder.template_type_formatted |
| terms | salesorder.terms |
| total | salesorder.total |
| total_formatted | salesorder.total_formatted |
| total_quantity | salesorder.total_quantity |
| total_quantity_formatted | salesorder.total_quantity_formatted |
| transaction_rounding_type | salesorder.transaction_rounding_type |
| zcrm_potential_id | salesorder.zcrm_potential_id |
| zcrm_potential_name | salesorder.zcrm_potential_name |
Set Salesorder Details
Updates or sets data within the current context. This method allows your widget to modify field values, update state, or pass data back to the host application.
- Update field values
- Set widget or module state
- Pass data to the parent application
window.onload = function () {
ZFAPPS.extension.init().then(function(App) {
ZFAPPS.set('salesorder.name', <value>).then(function (data) {
//response Handling
}).catch(function (err) {
//error Handling
});
});
}
| Property | Request |
|---|---|
| adjustment | salesorder.adjustment |
| adjustment_description | salesorder.adjustment_description |
| adjustment_formatted | salesorder.adjustment_formatted |
| approver_id | salesorder.approver_id |
| approvers_list | salesorder.approvers_list |
| attachment_name | salesorder.attachment_name |
| balance | salesorder.balance |
| balance_formatted | salesorder.balance_formatted |
| bcy_adjustment | salesorder.bcy_adjustment |
| bcy_discount_total | salesorder.bcy_discount_total |
Show More Supported Input Keys
| Property | Request |
|---|---|
| bcy_shipping_charge | salesorder.bcy_shipping_charge |
| bcy_sub_total | salesorder.bcy_sub_total |
| bcy_tax_total | salesorder.bcy_tax_total |
| bcy_total | salesorder.bcy_total |
| billing_address | salesorder.billing_address |
| billing_address_id | salesorder.billing_address_id |
| branch_id | salesorder.branch_id |
| comments | salesorder.comments |
| contact_category | salesorder.contact_category |
| contact_persons | salesorder.contact_persons |
| created_by_email | salesorder.created_by_email |
| created_by_id | salesorder.created_by_id |
| created_date | salesorder.created_date |
| created_date_formatted | salesorder.created_date_formatted |
| created_time | salesorder.created_time |
| created_time_formatted | salesorder.created_time_formatted |
| crm_custom_reference_id | salesorder.crm_custom_reference_id |
| crm_owner_id | salesorder.crm_owner_id |
| currency_code | salesorder.currency_code |
| currency_id | salesorder.currency_id |
| currency_symbol | salesorder.currency_symbol |
| custom_fields | salesorder.custom_fields |
| customer_id | salesorder.customer_id |
| customer_name | salesorder.customer_name |
| date | salesorder.date |
| date_formatted | salesorder.date_formatted |
| default_warehouse_id | salesorder.default_warehouse_id |
| delivery_method | salesorder.delivery_method |
| delivery_method_id | salesorder.delivery_method_id |
| discount | salesorder.discount |
| discount_applied_on_amount | salesorder.discount_applied_on_amount |
| discount_percent | salesorder.discount_percent |
| discount_total | salesorder.discount_total |
| discount_total_formatted | salesorder.discount_total_formatted |
| discount_type | salesorder.discount_type |
| documents | salesorder.documents |
| estimate_id | salesorder.estimate_id |
| exchange_rate | salesorder.exchange_rate |
| invoiced_status | salesorder.invoiced_status |
| invoiced_status_formatted | salesorder.invoiced_status_formatted |
| invoices | salesorder.invoices |
| is_adv_tracking_in_package | salesorder.is_adv_tracking_in_package |
| is_discount_before_tax | salesorder.is_discount_before_tax |
| is_emailed | salesorder.is_emailed |
| is_fba_shipment_created | salesorder.is_fba_shipment_created |
| is_inclusive_tax | salesorder.is_inclusive_tax |
| is_offline_payment | salesorder.is_offline_payment |
| is_pre_gst | salesorder.is_pre_gst |
| last_modified_by_id | salesorder.last_modified_by_id |
| last_modified_time | salesorder.last_modified_time |
| last_modified_time_formatted | salesorder.last_modified_time_formatted |
| line_items | salesorder.line_items |
| lineitem_location_id | salesorder.lineitem_location_id |
| merchant_id | salesorder.merchant_id |
| merchant_name | salesorder.merchant_name |
| notes | salesorder.notes |
| order_status | salesorder.order_status |
| order_status_formatted | salesorder.order_status_formatted |
| paid_status | salesorder.paid_status |
| paid_status_formatted | salesorder.paid_status_formatted |
| payment_terms | salesorder.payment_terms |
| payment_terms_label | salesorder.payment_terms_label |
| price_precision | salesorder.price_precision |
| purchaseorders | salesorder.purchaseorders |
| reference_number | salesorder.reference_number |
| refundable_amount | salesorder.refundable_amount |
| roundoff_value | salesorder.roundoff_value |
| roundoff_value_formatted | salesorder.roundoff_value_formatted |
| salesorder_id | salesorder.salesorder_id |
| salesorder_number | salesorder.salesorder_number |
| salesperson_id | salesorder.salesperson_id |
| salesperson_name | salesorder.salesperson_name |
| shipment_date | salesorder.shipment_date |
| shipment_date_formatted | salesorder.shipment_date_formatted |
| shipping_address | salesorder.shipping_address |
| shipping_address_id | salesorder.shipping_address_id |
| shipping_charge | salesorder.shipping_charge |
| shipping_charge_exclusive_of_tax | salesorder.shipping_charge_exclusive_of_tax |
| shipping_charge_exclusive_of_tax_formatted | salesorder.shipping_charge_exclusive_of_tax_formatted |
| shipping_charge_formatted | salesorder.shipping_charge_formatted |
| shipping_charge_inclusive_of_tax | salesorder.shipping_charge_inclusive_of_tax |
| shipping_charge_inclusive_of_tax_formatted | salesorder.shipping_charge_inclusive_of_tax_formatted |
| shipping_charge_sac_code | salesorder.shipping_charge_sac_code |
| shipping_charge_tax | salesorder.shipping_charge_tax |
| shipping_charge_tax_exemption_code | salesorder.shipping_charge_tax_exemption_code |
| shipping_charge_tax_exemption_id | salesorder.shipping_charge_tax_exemption_id |
| shipping_charge_tax_formatted | salesorder.shipping_charge_tax_formatted |
| shipping_charge_tax_id | salesorder.shipping_charge_tax_id |
| shipping_charge_tax_name | salesorder.shipping_charge_tax_name |
| shipping_charge_tax_percentage | salesorder.shipping_charge_tax_percentage |
| shipping_charge_tax_type | salesorder.shipping_charge_tax_type |
| source | salesorder.source |
| status | salesorder.status |
| status_formatted | salesorder.status_formatted |
| sub_total | salesorder.sub_total |
| sub_total_exclusive_of_discount | salesorder.sub_total_exclusive_of_discount |
| sub_total_exclusive_of_discount_formatted | salesorder.sub_total_exclusive_of_discount_formatted |
| sub_total_formatted | salesorder.sub_total_formatted |
| sub_total_inclusive_of_tax | salesorder.sub_total_inclusive_of_tax |
| sub_total_inclusive_of_tax_formatted | salesorder.sub_total_inclusive_of_tax_formatted |
| submitted_by | salesorder.submitted_by |
| submitted_date | salesorder.submitted_date |
| submitted_date_formatted | salesorder.submitted_date_formatted |
| submitter_id | salesorder.submitter_id |
| tax_rounding | salesorder.tax_rounding |
| tax_total | salesorder.tax_total |
| tax_total_formatted | salesorder.tax_total_formatted |
| taxes | salesorder.taxes |
| template_id | salesorder.template_id |
| template_name | salesorder.template_name |
| template_type | salesorder.template_type |
| template_type_formatted | salesorder.template_type_formatted |
| terms | salesorder.terms |
| total | salesorder.total |
| total_formatted | salesorder.total_formatted |
| total_quantity | salesorder.total_quantity |
| total_quantity_formatted | salesorder.total_quantity_formatted |
| transaction_rounding_type | salesorder.transaction_rounding_type |
| zcrm_potential_id | salesorder.zcrm_potential_id |
| zcrm_potential_name | salesorder.zcrm_potential_name |
Get Salesorders List
Retrieves multiple data points or a collection of records related to the current context. This method is useful for fetching lists, related records, or bulk data required for your widget's functionality.
- Fetch related records
- Retrieve collections of data
- Access lists or tables of information
window.onload = function () {
ZFAPPS.extension.init().then(function(App) {
ZFAPPS.get('salesorders').then(function (data) {
//response Handling
}).catch(function (err) {
//error Handling
});
});
}
| Property | Request |
|---|---|
| company_name | salesorder.company_name |
| created_time | salesorder.created_time |
| created_time_formatted | salesorder.created_time_formatted |
| currency_code | salesorder.currency_code |
| currency_id | salesorder.currency_id |
| customer_id | salesorder.customer_id |
| customer_name | salesorder.customer_name |
| date | salesorder.date |
| date_formatted | salesorder.date_formatted |
| delivery_date | salesorder.delivery_date |
Show More Supported Input Keys
| Property | Request |
|---|---|
| delivery_method | salesorder.delivery_method |
| delivery_method_id | salesorder.delivery_method_id |
| due_by_days | salesorder.due_by_days |
| due_in_days | salesorder.due_in_days |
| salesorder.email | |
| has_attachment | salesorder.has_attachment |
| invoiced_so_status | salesorder.invoiced_so_status |
| invoiced_status | salesorder.invoiced_status |
| invoiced_status_formatted | salesorder.invoiced_status_formatted |
| is_emailed | salesorder.is_emailed |
| last_modified_time | salesorder.last_modified_time |
| order_status | salesorder.order_status |
| order_status_formatted | salesorder.order_status_formatted |
| paid_status | salesorder.paid_status |
| paid_status_formatted | salesorder.paid_status_formatted |
| quantity_invoiced | salesorder.quantity_invoiced |
| reference_number | salesorder.reference_number |
| salesorder_id | salesorder.salesorder_id |
| salesorder_number | salesorder.salesorder_number |
| salesperson_name | salesorder.salesperson_name |
| shipment_date | salesorder.shipment_date |
| shipment_date_formatted | salesorder.shipment_date_formatted |
| shipment_days | salesorder.shipment_days |
| shipped_so_status | salesorder.shipped_so_status |
| status | salesorder.status |
| status_formatted | salesorder.status_formatted |
| total | salesorder.total |
| total_formatted | salesorder.total_formatted |
| total_invoiced_amount | salesorder.total_invoiced_amount |
| total_invoiced_amount_formatted | salesorder.total_invoiced_amount_formatted |
| zcrm_potential_id | salesorder.zcrm_potential_id |
| zcrm_potential_name | salesorder.zcrm_potential_name |
| selected | salesorder.selected |
Set Salesorder customfields
Specifically designed to update custom field values within the current context. This method allows your widget to target and modify custom fields without affecting standard fields, ensuring precise data management.
- Update custom field values
- Manage user-defined data points
- Ensure targeted updates to specific fields
window.onload = function () {
ZFAPPS.extension.init().then(function(App) {
ZFAPPS.set('salesorder.<custom_field_api_name>',<value>).then(function (data) {
//response Handling
}).catch(function (err) {
//error Handling
});
});
}
Get Line Items
This method allows you to retrieve the line items associated with the current sales order. It can be used to fetch details such as product information, quantity, rate, and total for each line item. This is particularly useful when you want to display or utilize the sales order's line item details within your widget or extension.
window.onload = function () {
ZFAPPS.extension.init().then(function(App) {
ZFAPPS.get('salesorder.line_items').then(function (res) {
console.log('salesorder line items : ', res);
}).catch(function (err) {
console.log('Error while fetching salesorder line items : ', err);
});
});
}
| Property | Request |
|---|---|
| line_item_id | line_item_id |
| item_order | item_order |
| item_id | item_id |
| rate | rate |
| name | name |
| description | description |
| quantity | quantity |
| discount | discount |
| discounts | discounts |
| tax_id | tax_id |
Show More Supported Input Keys
| Property | Request |
|---|---|
| tags | tags |
| tax_exemption_code | tax_exemption_code |
| tax_exemption_id | tax_exemption_id |
| avatax_tax_code | avatax_tax_code |
| item_custom_fields | item_custom_fields |
| hsn_or_sac | hsn_or_sac |
| warehouse_id | warehouse_id |
| location_id | location_id |
| gst_treatment_code | gst_treatment_code |
| tax_treatment_code | tax_treatment_code |
| project_id | project_id |
| pricebook_id | pricebook_id |
| header_name | header_name |
| header_id | header_id |
| tax_amount | tax_amount |
| is_discounted | is_discounted |
| unit | unit |
| unit_conversion_id | unit_conversion_id |
| tds_tax_id | tds_tax_id |
| item_meta_fields | item_meta_fields |
| sat_item_key_code | sat_item_key_code |
| unitkey_code | unitkey_code |
| non_taxable_amount | non_taxable_amount |
| product_type | product_type |
| product_tax_category | product_tax_category |
| mapped_items | mapped_items |
| tax_selection_mode | tax_selection_mode |
| line_item_taxes | line_item_taxes |
| line_item_tds | line_item_tds |
| cost_source | cost_source |
| purchase_price | purchase_price |
Set Line Items
This methods is to allowed for set a list of line items in the current invoice. It can be used to set details such as product information, quantity, rate, and total for multiple line items. This is particularly useful when you want to update or set multiple line items details within your widget or extension.This methods is append the line items to the existing line items in the invoice.
window.onload = function () {
ZFAPPS.extension.init().then(function(App) {
var lineItemMetaData =[{'rate':'1000','description':'Table','name':'Table'},{'rate':'1000','description':'Monitor','name':'Monitor'}]
ZFAPPS.set('salesorder.line_items',lineItemMetaData).then(function (res) {
console.log('salesorder line items : ', res);
}).catch(function (err) {
console.log('Error while fetching salesorder line items : ', err);
});
});
}
| Property | Request |
|---|---|
| line_item_id | line_item_id |
| item_order | item_order |
| item_id | item_id |
| rate | rate |
| name | name |
| description | description |
| quantity | quantity |
| discount | discount |
| discounts | discounts |
| tax_id | tax_id |
Show More Supported Input Keys
| Property | Request |
|---|---|
| tags | tags |
| tax_exemption_code | tax_exemption_code |
| tax_exemption_id | tax_exemption_id |
| avatax_tax_code | avatax_tax_code |
| item_custom_fields | item_custom_fields |
| hsn_or_sac | hsn_or_sac |
| warehouse_id | warehouse_id |
| location_id | location_id |
| gst_treatment_code | gst_treatment_code |
| tax_treatment_code | tax_treatment_code |
| project_id | project_id |
| pricebook_id | pricebook_id |
| header_name | header_name |
| header_id | header_id |
| tax_amount | tax_amount |
| is_discounted | is_discounted |
| unit | unit |
| unit_conversion_id | unit_conversion_id |
| tds_tax_id | tds_tax_id |
| item_meta_fields | item_meta_fields |
| sat_item_key_code | sat_item_key_code |
| unitkey_code | unitkey_code |
| non_taxable_amount | non_taxable_amount |
| product_type | product_type |
| product_tax_category | product_tax_category |
| mapped_items | mapped_items |
| tax_selection_mode | tax_selection_mode |
| line_item_taxes | line_item_taxes |
| line_item_tds | line_item_tds |
| cost_source | cost_source |
| purchase_price | purchase_price |
Set Single Line Items
This methods is to allowed for setting/updating a single line item in the current invoice. It can be used to set details such as product information, quantity, rate, and total for a single line item. This is particularly useful when you want to update or set a single line item details within your widget or extension.
window.onload = function () {
ZFAPPS.extension.init().then(function(App) {
ZFAPPS.set('salesorder.line_items[0]',{'rate':'1000'}).then(function (res) {
console.log('salesorder line item rate : ', res);
}).catch(function (err) {
console.log('Error while fetching salesorder line item rate : ', err);
});
});
}
| Property | Request |
|---|---|
| line_item_id | line_item_id |
| item_order | item_order |
| item_id | item_id |
| rate | rate |
| name | name |
| description | description |
| quantity | quantity |
| discount | discount |
| discounts | discounts |
| tax_id | tax_id |
Show More Supported Input Keys
| Property | Request |
|---|---|
| tags | tags |
| tax_exemption_code | tax_exemption_code |
| tax_exemption_id | tax_exemption_id |
| avatax_tax_code | avatax_tax_code |
| item_custom_fields | item_custom_fields |
| hsn_or_sac | hsn_or_sac |
| warehouse_id | warehouse_id |
| location_id | location_id |
| gst_treatment_code | gst_treatment_code |
| tax_treatment_code | tax_treatment_code |
| project_id | project_id |
| pricebook_id | pricebook_id |
| header_name | header_name |
| header_id | header_id |
| tax_amount | tax_amount |
| is_discounted | is_discounted |
| unit | unit |
| unit_conversion_id | unit_conversion_id |
| tds_tax_id | tds_tax_id |
| item_meta_fields | item_meta_fields |
| sat_item_key_code | sat_item_key_code |
| unitkey_code | unitkey_code |
| non_taxable_amount | non_taxable_amount |
| product_type | product_type |
| product_tax_category | product_tax_category |
| mapped_items | mapped_items |
| tax_selection_mode | tax_selection_mode |
| line_item_taxes | line_item_taxes |
| line_item_tds | line_item_tds |
| cost_source | cost_source |
| purchase_price | purchase_price |
Set Bulk Line Items
This methods is to allowed for replacing/updating all the existing line items in the current invoice. It can be used to set details such as product information, quantity, rate, and total for multiple line items. This is particularly useful when you want to update or set multiple line items details within your widget or extension.
window.onload = function () {
ZFAPPS.extension.init().then(function(App) {
var lineItemMetaData =[{'rate':'1000','description':'Table','name':'Table'},{'rate':'1000','description':'Monitor','name':'Monitor'}]
ZFAPPS.set('salesorder.line_items.bulk_update',lineItemMetaData).then(function (res) {
console.log('salesorder line items : ', res);
}).catch(function (err) {
console.log('Error while fetching salesorder line items : ', err);
});
});
}
| Property | Request |
|---|---|
| line_item_id | line_item_id |
| item_order | item_order |
| item_id | item_id |
| rate | rate |
| name | name |
| description | description |
| quantity | quantity |
| discount | discount |
| discounts | discounts |
| tax_id | tax_id |
Show More Supported Input Keys
| Property | Request |
|---|---|
| tags | tags |
| tax_exemption_code | tax_exemption_code |
| tax_exemption_id | tax_exemption_id |
| avatax_tax_code | avatax_tax_code |
| item_custom_fields | item_custom_fields |
| hsn_or_sac | hsn_or_sac |
| warehouse_id | warehouse_id |
| location_id | location_id |
| gst_treatment_code | gst_treatment_code |
| tax_treatment_code | tax_treatment_code |
| project_id | project_id |
| pricebook_id | pricebook_id |
| header_name | header_name |
| header_id | header_id |
| tax_amount | tax_amount |
| is_discounted | is_discounted |
| unit | unit |
| unit_conversion_id | unit_conversion_id |
| tds_tax_id | tds_tax_id |
| item_meta_fields | item_meta_fields |
| sat_item_key_code | sat_item_key_code |
| unitkey_code | unitkey_code |
| non_taxable_amount | non_taxable_amount |
| product_type | product_type |
| product_tax_category | product_tax_category |
| mapped_items | mapped_items |
| tax_selection_mode | tax_selection_mode |
| line_item_taxes | line_item_taxes |
| line_item_tds | line_item_tds |
| cost_source | cost_source |
| purchase_price | purchase_price |
Set Line Items Customfields
This method is allowed for setting/updating custom fields for line items in the current sales order. It can be used to set details such as product information, quantity, rate, total, and custom field values for multiple line items. This is particularly useful when you want to update or set multiple line items details along with their custom field values within your widget or extension.
window.onload = function () {
ZFAPPS.extension.init().then(function(App) {
var lineItemMetaData =[{'rate':'1000','description':'Table','name':'Table','item_custom_fields':[{'api_name':'<line_item_custom_field_name>', 'value':'<value>'}]}]
ZFAPPS.set('salesorder.line_items',lineItemMetaData).then(function (res) {
console.log('salesorder line items : ', res);
}).catch(function (err) {
console.log('Error while fetching salesorder line items : ', err);
});
});
}
| Property | Request |
|---|---|
| line_item_id | line_item_id |
| item_order | item_order |
| item_id | item_id |
| rate | rate |
| name | name |
| description | description |
| quantity | quantity |
| discount | discount |
| discounts | discounts |
| tax_id | tax_id |
Show More Supported Input Keys
| Property | Request |
|---|---|
| tags | tags |
| tax_exemption_code | tax_exemption_code |
| tax_exemption_id | tax_exemption_id |
| avatax_tax_code | avatax_tax_code |
| item_custom_fields | item_custom_fields |
| hsn_or_sac | hsn_or_sac |
| warehouse_id | warehouse_id |
| location_id | location_id |
| gst_treatment_code | gst_treatment_code |
| tax_treatment_code | tax_treatment_code |
| project_id | project_id |
| pricebook_id | pricebook_id |
| header_name | header_name |
| header_id | header_id |
| tax_amount | tax_amount |
| is_discounted | is_discounted |
| unit | unit |
| unit_conversion_id | unit_conversion_id |
| tds_tax_id | tds_tax_id |
| item_meta_fields | item_meta_fields |
| sat_item_key_code | sat_item_key_code |
| unitkey_code | unitkey_code |
| non_taxable_amount | non_taxable_amount |
| product_type | product_type |
| product_tax_category | product_tax_category |
| mapped_items | mapped_items |
| tax_selection_mode | tax_selection_mode |
| line_item_taxes | line_item_taxes |
| line_item_tds | line_item_tds |
| cost_source | cost_source |
| purchase_price | purchase_price |
Events
ON_SALESORDER_PRE_SAVE
This event is triggered just before the salesorder record is saved in your organization. It allows your widget to validate data, modify field values, or perform custom checks before the save operation is completed.
ZFAPPS.extension.init().then(function(App) {
App.instance.on('ON_SALESORDER_PRE_SAVE').then(async function() {
var record = await ZFAPPS.get('salesorder');
record = record?.['custom_fields'];
if (record.cf_approval_required && !record.cf_approval_notes) {
await ZFAPPS.invoke('SHOW_NOTIFICATION', {
type: 'error',
message: 'Approval notes are required when Approval Required is selected.'
});
return {
prevent_save: true
};
}
}).catch(function(err) {
console.error('Error:', err);
});
});
SALESORDER_SAVED
This event is triggered after the salesorder record is successfully saved in your organization. You can use this event to perform post-save actions such as syncing data, triggering notifications, or updating external systems.
ZFAPPS.extension.init().then(function(App) {
App.instance.on('ON_SALESORDER_SAVED').then(function(data) {
var recordId = data && data.record_id;
ZFAPPS.invoke('SHOW_NOTIFICATION', {
type: 'success',
message: 'Record saved successfully. Record ID: ' + recordId
});
console.log('Saved record ID:', recordId);
}).catch(function(err) {
console.error('Error:', err);
});
});
ON_SALESORDER_CHANGE
This event is triggered whenever there is a change in the invoice record while you are creating or editing an invoice. It allows your widget to respond to changes in real time, enabling dynamic updates, validations, or calculations based on the modified invoice data.
ZFAPPS.extension.init().then(function(App) {
App.instance.on('ON_SALESORDER_CHANGE').then(async function() {
try {
var recordResponse = await ZFAPPS.get('salesorder');
var record = recordResponse.salesorder;
var lineItems = record.line_items || [];
for (var i = 0; i < lineItems.length; i++) {
var item = lineItems[i];
// Check if target product
if (item.name === 'Premium Subscription') {
// Skip if discount already applied
if (item.cf_discount_applied) continue;
var response = await ZFAPPS.confirm({
title: 'Discount Available',
message: '10% discount available for this item. Apply now?'
});
if (response && response.ok) {
var discountAmount = (item.rate * 0.10).toFixed(2);
// Update record discount
await ZFAPPS.set('salesorder.discount', discountAmount);
// Mark line item as processed
await ZFAPPS.set(
'salesorder.line_items.' + item.line_item_id + '.cf_discount_applied',
true
);
await ZFAPPS.invoke('SHOW_NOTIFICATION', {
type: 'success',
message: 'Discount applied successfully.'
});
}
}
}
} catch (error) {
console.error('Error:', error);
}
});
});
ON_SALESORDER_PREVIEW
This event is triggered when the preview of a salesorder record is opened in your organization. It allows your widget to access record data and render contextual information during the preview phase.
ZFAPPS.extension.init().then(function(App) {
App.instance.on('ON_SALESORDER_PREVIEW').then(async function() {
var record = await ZFAPPS.get('salesorder');
record = record?.['custom_fields'];
if (record.cf_priority_level === 'High') {
ZFAPPS.invoke('SHOW_NOTIFICATION', {
type: 'error',
message: 'This record is marked as High Priority.'
});
}
}).catch(function(err) {
console.error('Error:', err);
});
});