diff --git a/packages/backend/src/apps/vtiger-crm/triggers/index.js b/packages/backend/src/apps/vtiger-crm/triggers/index.js index 537f97fc..1e81b4b1 100644 --- a/packages/backend/src/apps/vtiger-crm/triggers/index.js +++ b/packages/backend/src/apps/vtiger-crm/triggers/index.js @@ -1,5 +1,6 @@ import newCases from './new-cases/index.js'; import newContacts from './new-contacts/index.js'; import newInvoices from './new-invoices/index.js'; +import newLeads from './new-leads/index.js'; -export default [newCases, newContacts, newInvoices]; +export default [newCases, newContacts, newInvoices, newLeads]; diff --git a/packages/backend/src/apps/vtiger-crm/triggers/new-leads/index.js b/packages/backend/src/apps/vtiger-crm/triggers/new-leads/index.js new file mode 100644 index 00000000..84754f06 --- /dev/null +++ b/packages/backend/src/apps/vtiger-crm/triggers/new-leads/index.js @@ -0,0 +1,41 @@ +import defineTrigger from '../../../../helpers/define-trigger.js'; + +export default defineTrigger({ + name: 'New leads', + key: 'newLeads', + pollInterval: 15, + description: 'Triggers when a new lead is created.', + + async run($) { + let offset = 0; + const limit = 100; + let hasMore = true; + + const params = { + operation: 'query', + sessionName: $.auth.data.sessionName, + query: `SELECT * FROM Leads ORDER BY createdtime DESC LIMIT ${offset}, ${limit};`, + }; + + do { + const { data } = await $.http.get('/webservice.php', { + params, + }); + offset = limit + offset; + + if (!data?.result?.length) { + hasMore = false; + return; + } + + for (const item of data.result) { + $.pushTriggerItem({ + raw: item, + meta: { + internalId: item.id, + }, + }); + } + } while (hasMore); + }, +}); diff --git a/packages/docs/pages/apps/vtiger-crm/triggers.md b/packages/docs/pages/apps/vtiger-crm/triggers.md index 01ed4573..0f2e5476 100644 --- a/packages/docs/pages/apps/vtiger-crm/triggers.md +++ b/packages/docs/pages/apps/vtiger-crm/triggers.md @@ -7,6 +7,8 @@ items: desc: Triggers when a new contact is created. - name: New invoices desc: Triggers when a new invoice is created. + - name: New leads + desc: Triggers when a new lead is created. ---