1export function onAfterCalculate(quote, lines, conn) {
2 if (lines.length) {
3 var codes = [];
4 lines.forEach(function(line) {
5 var code = line.record['SBQQ__ProductCode__c'];
6 if (code) {
7 codes.push(code);
8 }
9 });
10 if (codes.length) {
11 var conditions = {
12 SBQQ__Category__c: {$in: codes}
13 };
14 var fields = ['Id', 'Name', 'SBQQ__Category__c', 'SBQQ__Value__c'];
15 return conn.sobject('SBQQ__LookupData__c')
16 .find(conditions, fields)
17 .execute(function(err, records) {
18 console.log(records);
19 if (err) {
20 return Promise.reject(err);
21 } else {
22 var valuesByCategory = {};
23 records.forEach(function(record) {
24 valuesByCategory[record.SBQQ__Category__c] = record.SBQQ__Value__c;
25 });
26 var newRecords = [];
27 lines.forEach(function(line) {
28 var code = line.record['SBQQ__ProductCode__c'];
29 var desc = line.record['SBQQ__Description__c'];
30 if (code && desc && !valuesByCategory[code]) {
31 newRecords.push({
32 SBQQ__Category__c: code,
33 SBQQ__Value__c: line.record['SBQQ__Description__c']
34 });
35 }
36 });
37 if (newRecords.length) {
38 return conn.sobject('SBQQ__LookupData__c')
39 .create(newRecords, function(err, ret) {
40 console.log(ret);
41 });
42 }
43 }
44 });
45 }
46 }
47 return Promise.resolve();
48}