-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathspec_suitelet_render.js
97 lines (97 loc) · 3.88 KB
/
spec_suitelet_render.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
define(['N/render', 'N/record', 'N/search'], function(render, record, search){
/**
* @NApiVersion 2.x
* @NScriptType Suitelet
* @appliedtorecord lotnumberedassemblyitem
*/
/**
* <code>onRequest</code> event handler
* @gov 0
*
* @param request
* {Object}
* @param response
* {String}
*
* @return {void}
*
* @static
* @function onRequest
*/
function onRequest(context) {
var bomArrayString = context.request.parameters.bomArrayString; //gets parameters from bom suitelet
var custom_id = parseInt(context.request.parameters.custom_id);
const bomArray = JSON.parse(bomArrayString);
var renderer = render.create();
var index = 0;
for (index = 0; index < bomArray.length; index++){ //executes for all bom components
var bomSearch = search.load({ //finds and loads bom components, no assemblies
id: 'customsearchbom_no_wip'
});
var idFilter = search.createFilter({
name: 'internalid',
operator: 'is',
values: [parseInt(bomArray[index])]
});
bomSearch.filters.push(idFilter);
var bom_search_result = bomSearch.run().getRange(0, 1000);
var bomSearchName = "bom" + index; //creates template name for bom
renderer.addSearchResults({ //adds bom to renderer
templateName: bomSearchName,
searchResult: bom_search_result
});
}
var revisions_search = search.load({ //loads search to find all spec revision memos, date ascending
id: 'customsearchspec_rev_asc'
});
var recordFilter = search.createFilter({
name: 'internalid',
operator: 'is',
values: [custom_id]
});
revisions_search.filters.push(recordFilter);
var revisions_results = revisions_search.run();
var results = revisions_results.getRange(0, 1000);
renderer.addSearchResults({ //adds search results to renderer
templateName: "spec_revisions",
searchResult: results
});
var desc_revisions_search = search.load({ //loads search to find all spec revision memos, date descending
id: 'customsearchspec_rev_desc'
});
desc_revisions_search.filters.push(recordFilter);
var desc_revisions_results = desc_revisions_search.run();
var desc_results = desc_revisions_results.getRange(0, 1000);
renderer.addSearchResults({ //adds search results to renderer
templateName: "date_desc",
searchResult: desc_results
});
var assemblyRecord = record.load({
type: record.Type.LOT_NUMBERED_ASSEMBLY_ITEM,
id: custom_id
});
renderer.addRecord({ //adds current record to renderer
templateName: 'record',
record: assemblyRecord
});
assemblyRecord.setValue({ //adds number of boms to record field
fieldId: "custitemnumsearches",
value: index,
ignoreFieldChange: false
});
assemblyRecord.save();
renderer.setTemplateByScriptId("CUSTTMPL_124_7232941_757"); //sets template as spec html template
context.response.addHeader({
name: 'Content-Type:',
value: 'application/pdf'
});
context.response.addHeader({
name: 'Content-Disposition',
value: 'inline; filename="Spec.pdf"'
});
renderer.renderPdfToResponse(context.response); //opens rendered pdf in new tab
}
return {
onRequest: onRequest
}
});