@startanaicompany/crm 2.3.1 → 2.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.js +11 -1
- package/package.json +1 -1
package/index.js
CHANGED
|
@@ -298,6 +298,8 @@ leadsCmd
|
|
|
298
298
|
.option('--company <company>', 'Company name')
|
|
299
299
|
.option('--status <status>', 'Status: new|contacted|qualified|unresponsive|converted|lost', 'new')
|
|
300
300
|
.option('--source <source>', 'Source: api|import|referral', 'api')
|
|
301
|
+
.option('--deal-value <amount>', 'Deal value (numeric)')
|
|
302
|
+
.option('--pipeline-stage <stage>', 'Pipeline stage: new|prospecting|discovery|qualified|demo_scheduled|demo_completed|proposal_sent|negotiation|contract_sent|closed_won|closed_lost|no_decision|dormant')
|
|
301
303
|
.option('--notes <notes>', 'Notes')
|
|
302
304
|
.option('--assigned-to <assignedTo>', 'Assigned to')
|
|
303
305
|
.option('--tag <tag>', 'Tag (repeatable)', (v, prev) => prev.concat([v]), [])
|
|
@@ -315,6 +317,8 @@ leadsCmd
|
|
|
315
317
|
...(opts.company && { company: opts.company }),
|
|
316
318
|
status: opts.status,
|
|
317
319
|
source: opts.source,
|
|
320
|
+
...(opts.dealValue !== undefined && { deal_value: parseFloat(opts.dealValue) }),
|
|
321
|
+
...(opts.pipelineStage && { pipeline_stage: opts.pipelineStage }),
|
|
318
322
|
...(opts.notes && { notes: opts.notes }),
|
|
319
323
|
...(opts.assignedTo && { assigned_to: opts.assignedTo }),
|
|
320
324
|
...(opts.tag.length > 0 && { tags: opts.tag }),
|
|
@@ -394,6 +398,7 @@ leadsCmd
|
|
|
394
398
|
.option('--company <company>', 'New company')
|
|
395
399
|
.option('--status <status>', 'New status')
|
|
396
400
|
.option('--source <source>', 'New source')
|
|
401
|
+
.option('--deal-value <amount>', 'Deal value (numeric)')
|
|
397
402
|
.option('--notes <notes>', 'New notes')
|
|
398
403
|
.option('--assigned-to <assignedTo>', 'New assigned-to')
|
|
399
404
|
.option('--tag <tag>', 'Replace tags (repeatable)', (v, prev) => prev.concat([v]), [])
|
|
@@ -409,6 +414,7 @@ leadsCmd
|
|
|
409
414
|
...(opts.company !== undefined && { company: opts.company }),
|
|
410
415
|
...(opts.status && { status: opts.status }),
|
|
411
416
|
...(opts.source && { source: opts.source }),
|
|
417
|
+
...(opts.dealValue !== undefined && { deal_value: parseFloat(opts.dealValue) }),
|
|
412
418
|
...(opts.notes !== undefined && { notes: opts.notes }),
|
|
413
419
|
...(opts.assignedTo !== undefined && { assigned_to: opts.assignedTo }),
|
|
414
420
|
...(opts.tag.length > 0 && { tags: opts.tag }),
|
|
@@ -684,6 +690,7 @@ contactsCmd
|
|
|
684
690
|
.option('--phone <phone>', 'Phone number')
|
|
685
691
|
.option('--company <company>', 'Company name')
|
|
686
692
|
.option('--title <title>', 'Job title')
|
|
693
|
+
.option('--role <role>', 'Role: champion|economic_buyer|technical_buyer|gatekeeper|influencer|end_user')
|
|
687
694
|
.option('--tags <tags>', 'Comma-separated tags')
|
|
688
695
|
.option('--notes <notes>', 'Notes')
|
|
689
696
|
.action(async (id, opts) => {
|
|
@@ -697,6 +704,7 @@ contactsCmd
|
|
|
697
704
|
if (opts.phone !== undefined) body.phone = opts.phone;
|
|
698
705
|
if (opts.company !== undefined) body.company = opts.company;
|
|
699
706
|
if (opts.title !== undefined) body.title = opts.title;
|
|
707
|
+
if (opts.role !== undefined) body.role = opts.role;
|
|
700
708
|
if (opts.tags !== undefined) body.tags = opts.tags.split(',').map(t => t.trim());
|
|
701
709
|
if (opts.notes !== undefined) body.notes = opts.notes;
|
|
702
710
|
const res = await client.patch(`/contacts/${id}`, body);
|
|
@@ -887,7 +895,7 @@ leadsStageCmd
|
|
|
887
895
|
|
|
888
896
|
leadsStageCmd
|
|
889
897
|
.command('set <lead-id> <stage>')
|
|
890
|
-
.description('Set pipeline stage: new
|
|
898
|
+
.description('Set pipeline stage: new|prospecting|discovery|qualified|demo_scheduled|demo_completed|proposal_sent|negotiation|contract_sent|closed_won|closed_lost|no_decision|dormant')
|
|
891
899
|
.option('--note <note>', 'Optional note about why stage changed')
|
|
892
900
|
.action(async (leadId, stage, opts) => {
|
|
893
901
|
const globalOpts = program.opts();
|
|
@@ -1012,6 +1020,7 @@ meetingsCmd
|
|
|
1012
1020
|
.option('--video-link <url>', 'Video link')
|
|
1013
1021
|
.option('--notes <notes>', 'Notes')
|
|
1014
1022
|
.option('--outcome <outcome>', 'scheduled | completed | cancelled | no_show')
|
|
1023
|
+
.option('--sentiment <sentiment>', 'positive | neutral | negative | unknown')
|
|
1015
1024
|
.action(async (id, opts) => {
|
|
1016
1025
|
const globalOpts = program.opts();
|
|
1017
1026
|
const client = getClient(globalOpts);
|
|
@@ -1024,6 +1033,7 @@ meetingsCmd
|
|
|
1024
1033
|
if (opts.videoLink !== undefined) body.video_link = opts.videoLink;
|
|
1025
1034
|
if (opts.notes !== undefined) body.notes = opts.notes;
|
|
1026
1035
|
if (opts.outcome !== undefined) body.outcome = opts.outcome;
|
|
1036
|
+
if (opts.sentiment !== undefined) body.sentiment = opts.sentiment;
|
|
1027
1037
|
const res = await client.patch(`/meetings/${id}`, body);
|
|
1028
1038
|
printJSON(res.data);
|
|
1029
1039
|
} catch (err) {
|