feat(vtiger-crm): add create case action
This commit is contained in:
@@ -0,0 +1,408 @@
|
||||
export const fields = [
|
||||
{
|
||||
label: 'Summary',
|
||||
key: 'summary',
|
||||
type: 'string',
|
||||
required: true,
|
||||
description: '',
|
||||
variables: true,
|
||||
},
|
||||
{
|
||||
label: 'Record Currency',
|
||||
key: 'recordCurrency',
|
||||
type: 'dropdown',
|
||||
required: false,
|
||||
description: '',
|
||||
variables: true,
|
||||
source: {
|
||||
type: 'query',
|
||||
name: 'getDynamicData',
|
||||
arguments: [
|
||||
{
|
||||
name: 'key',
|
||||
value: 'listRecordCurrencies',
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
{
|
||||
label: 'Case Title',
|
||||
key: 'caseTitle',
|
||||
type: 'string',
|
||||
required: true,
|
||||
description: '',
|
||||
variables: true,
|
||||
},
|
||||
{
|
||||
label: 'Status',
|
||||
key: 'status',
|
||||
type: 'dropdown',
|
||||
required: true,
|
||||
description: '',
|
||||
variables: true,
|
||||
source: {
|
||||
type: 'query',
|
||||
name: 'getDynamicData',
|
||||
arguments: [
|
||||
{
|
||||
name: 'key',
|
||||
value: 'listCaseOptions',
|
||||
},
|
||||
{
|
||||
name: 'parameters.status',
|
||||
value: 'casestatus',
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
{
|
||||
label: 'Priority',
|
||||
key: 'priority',
|
||||
type: 'dropdown',
|
||||
required: true,
|
||||
description: '',
|
||||
variables: true,
|
||||
source: {
|
||||
type: 'query',
|
||||
name: 'getDynamicData',
|
||||
arguments: [
|
||||
{
|
||||
name: 'key',
|
||||
value: 'listCaseOptions',
|
||||
},
|
||||
{
|
||||
name: 'parameters.priority',
|
||||
value: 'casepriority',
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
{
|
||||
label: 'Contact Name',
|
||||
key: 'contactName',
|
||||
type: 'dropdown',
|
||||
required: false,
|
||||
description: '',
|
||||
variables: true,
|
||||
source: {
|
||||
type: 'query',
|
||||
name: 'getDynamicData',
|
||||
arguments: [
|
||||
{
|
||||
name: 'key',
|
||||
value: 'listContacts',
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
{
|
||||
label: 'Organization Name',
|
||||
key: 'organizationName',
|
||||
type: 'dropdown',
|
||||
required: false,
|
||||
description: '',
|
||||
variables: true,
|
||||
source: {
|
||||
type: 'query',
|
||||
name: 'getDynamicData',
|
||||
arguments: [
|
||||
{
|
||||
name: 'key',
|
||||
value: 'listOrganizations',
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
{
|
||||
label: 'Group',
|
||||
key: 'group',
|
||||
type: 'dropdown',
|
||||
required: false,
|
||||
description: '',
|
||||
variables: true,
|
||||
source: {
|
||||
type: 'query',
|
||||
name: 'getDynamicData',
|
||||
arguments: [
|
||||
{
|
||||
name: 'key',
|
||||
value: 'listGroups',
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
{
|
||||
label: 'Assigned To',
|
||||
key: 'assignedTo',
|
||||
type: 'string',
|
||||
required: false,
|
||||
description: '',
|
||||
variables: true,
|
||||
},
|
||||
{
|
||||
label: 'Product Name',
|
||||
key: 'productName',
|
||||
type: 'dropdown',
|
||||
required: false,
|
||||
description: '',
|
||||
variables: true,
|
||||
source: {
|
||||
type: 'query',
|
||||
name: 'getDynamicData',
|
||||
arguments: [
|
||||
{
|
||||
name: 'key',
|
||||
value: 'listProducts',
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
{
|
||||
label: 'Channel',
|
||||
key: 'channel',
|
||||
type: 'dropdown',
|
||||
required: false,
|
||||
description: '',
|
||||
variables: true,
|
||||
source: {
|
||||
type: 'query',
|
||||
name: 'getDynamicData',
|
||||
arguments: [
|
||||
{
|
||||
name: 'key',
|
||||
value: 'listCaseOptions',
|
||||
},
|
||||
{
|
||||
name: 'parameters.channel',
|
||||
value: 'casechannel',
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
{
|
||||
label: 'Resolution',
|
||||
key: 'resolution',
|
||||
type: 'string',
|
||||
required: false,
|
||||
description: '',
|
||||
variables: true,
|
||||
},
|
||||
{
|
||||
label: 'Category',
|
||||
key: 'category',
|
||||
type: 'dropdown',
|
||||
required: false,
|
||||
description: '',
|
||||
variables: true,
|
||||
source: {
|
||||
type: 'query',
|
||||
name: 'getDynamicData',
|
||||
arguments: [
|
||||
{
|
||||
name: 'key',
|
||||
value: 'listCaseOptions',
|
||||
},
|
||||
{
|
||||
name: 'parameters.category',
|
||||
value: 'impact_type',
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
{
|
||||
label: 'Sub Category',
|
||||
key: 'subCategory',
|
||||
type: 'dropdown',
|
||||
required: false,
|
||||
description: '',
|
||||
variables: true,
|
||||
source: {
|
||||
type: 'query',
|
||||
name: 'getDynamicData',
|
||||
arguments: [
|
||||
{
|
||||
name: 'key',
|
||||
value: 'listCaseOptions',
|
||||
},
|
||||
{
|
||||
name: 'parameters.subCategory',
|
||||
value: 'impact_area',
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
{
|
||||
label: 'Resolution Type',
|
||||
key: 'resolutionType',
|
||||
type: 'dropdown',
|
||||
required: false,
|
||||
description: '',
|
||||
variables: true,
|
||||
source: {
|
||||
type: 'query',
|
||||
name: 'getDynamicData',
|
||||
arguments: [
|
||||
{
|
||||
name: 'key',
|
||||
value: 'listCaseOptions',
|
||||
},
|
||||
{
|
||||
name: 'parameters.resolutionType',
|
||||
value: 'resolution_type',
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
{
|
||||
label: 'Deferred Date',
|
||||
key: 'deferredDate',
|
||||
type: 'string',
|
||||
required: false,
|
||||
description: 'format: yyyy-mm-dd',
|
||||
variables: true,
|
||||
},
|
||||
{
|
||||
label: 'Service Contracts',
|
||||
key: 'serviceContracts',
|
||||
type: 'dropdown',
|
||||
required: false,
|
||||
description: '',
|
||||
variables: true,
|
||||
source: {
|
||||
type: 'query',
|
||||
name: 'getDynamicData',
|
||||
arguments: [
|
||||
{
|
||||
name: 'key',
|
||||
value: 'listServiceContracts',
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
{
|
||||
label: 'Asset',
|
||||
key: 'asset',
|
||||
type: 'dropdown',
|
||||
required: false,
|
||||
description: '',
|
||||
variables: true,
|
||||
source: {
|
||||
type: 'query',
|
||||
name: 'getDynamicData',
|
||||
arguments: [
|
||||
{
|
||||
name: 'key',
|
||||
value: 'listAssets',
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
{
|
||||
label: 'SLA Name',
|
||||
key: 'slaName',
|
||||
type: 'dropdown',
|
||||
required: false,
|
||||
description: '',
|
||||
variables: true,
|
||||
source: {
|
||||
type: 'query',
|
||||
name: 'getDynamicData',
|
||||
arguments: [
|
||||
{
|
||||
name: 'key',
|
||||
value: 'listSlaNames',
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
{
|
||||
label: 'Is Billable',
|
||||
key: 'isBillable',
|
||||
type: 'dropdown',
|
||||
required: false,
|
||||
description: '',
|
||||
variables: true,
|
||||
options: [
|
||||
{ label: 'True', value: '1' },
|
||||
{ label: 'False', value: '-1' },
|
||||
],
|
||||
},
|
||||
{
|
||||
label: 'Service',
|
||||
key: 'service',
|
||||
type: 'dropdown',
|
||||
required: false,
|
||||
description: '',
|
||||
variables: true,
|
||||
source: {
|
||||
type: 'query',
|
||||
name: 'getDynamicData',
|
||||
arguments: [
|
||||
{
|
||||
name: 'key',
|
||||
value: 'listServices',
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
{
|
||||
label: 'Rate',
|
||||
key: 'rate',
|
||||
type: 'string',
|
||||
required: false,
|
||||
description: '',
|
||||
variables: true,
|
||||
},
|
||||
{
|
||||
label: 'Service Type',
|
||||
key: 'serviceType',
|
||||
type: 'dropdown',
|
||||
required: false,
|
||||
description: '',
|
||||
variables: true,
|
||||
source: {
|
||||
type: 'query',
|
||||
name: 'getDynamicData',
|
||||
arguments: [
|
||||
{
|
||||
name: 'key',
|
||||
value: 'listCaseOptions',
|
||||
},
|
||||
{
|
||||
name: 'parameters.serviceType',
|
||||
value: 'servicetype',
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
{
|
||||
label: 'Service Location',
|
||||
key: 'serviceLocation',
|
||||
type: 'dropdown',
|
||||
required: false,
|
||||
description: '',
|
||||
variables: true,
|
||||
source: {
|
||||
type: 'query',
|
||||
name: 'getDynamicData',
|
||||
arguments: [
|
||||
{
|
||||
name: 'key',
|
||||
value: 'listCaseOptions',
|
||||
},
|
||||
{
|
||||
name: 'parameters.serviceLocation',
|
||||
value: 'servicelocation',
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
{
|
||||
label: 'Work Location',
|
||||
key: 'workLocation',
|
||||
type: 'string',
|
||||
required: false,
|
||||
description: '',
|
||||
variables: true,
|
||||
},
|
||||
];
|
@@ -0,0 +1,78 @@
|
||||
import defineAction from '../../../../helpers/define-action.js';
|
||||
import { fields } from './fields.js';
|
||||
|
||||
export default defineAction({
|
||||
name: 'Create case',
|
||||
key: 'createCase',
|
||||
description: 'Create a new case.',
|
||||
arguments: fields,
|
||||
|
||||
async run($) {
|
||||
const {
|
||||
summary,
|
||||
recordCurrency,
|
||||
caseTitle,
|
||||
status,
|
||||
priority,
|
||||
contactName,
|
||||
organizationName,
|
||||
group,
|
||||
assignedTo,
|
||||
productName,
|
||||
channel,
|
||||
resolution,
|
||||
category,
|
||||
subCategory,
|
||||
resolutionType,
|
||||
deferredDate,
|
||||
serviceContracts,
|
||||
asset,
|
||||
slaName,
|
||||
isBillable,
|
||||
service,
|
||||
rate,
|
||||
serviceType,
|
||||
serviceLocation,
|
||||
workLocation,
|
||||
} = $.step.parameters;
|
||||
|
||||
const elementData = {
|
||||
description: summary,
|
||||
record_currency_id: recordCurrency,
|
||||
title: caseTitle,
|
||||
casestatus: status,
|
||||
casepriority: priority,
|
||||
contact_id: contactName,
|
||||
parent_id: organizationName,
|
||||
group_id: group,
|
||||
assigned_user_id: assignedTo,
|
||||
product_id: productName,
|
||||
casechannel: channel,
|
||||
resolution: resolution,
|
||||
impact_type: category,
|
||||
impact_area: subCategory,
|
||||
resolution_type: resolutionType,
|
||||
deferred_date: deferredDate,
|
||||
servicecontract_id: serviceContracts,
|
||||
asset_id: asset,
|
||||
slaid: slaName,
|
||||
is_billable: isBillable,
|
||||
billing_service: service,
|
||||
rate: rate,
|
||||
servicetype: serviceType,
|
||||
servicelocation: serviceLocation,
|
||||
work_location: workLocation,
|
||||
};
|
||||
|
||||
const body = {
|
||||
operation: 'create',
|
||||
sessionName: $.auth.data.sessionName,
|
||||
element: JSON.stringify(elementData),
|
||||
elementType: 'Cases',
|
||||
};
|
||||
|
||||
const response = await $.http.post('/webservice.php', body);
|
||||
|
||||
$.setActionItem({ raw: response.data });
|
||||
},
|
||||
});
|
Reference in New Issue
Block a user