Se aplica a
Producto: NetSuite 2025.1
Escenario
Actualmente no existe la posibilidad de incluir directamente entradas de registros personalizados secundarios en las copias de seguridad mediante plantillas PDF/HTML avanzadas. Este seguimiento se realiza en la mejora 304767.
Como solución alternativa, es posible crear un script de evento de usuario beforeLoad que busque en las entradas de subregistro personalizadas y obtenga los resultados en un campo personalizado como objeto JSON. A continuación, Freemarker puede analizar el contenido del campo personalizado y crear una tabla HTML en la impresión. Pasos para establecerlo a continuación.
Debajo de la orden de venta, hay un registro personalizado secundario customrecord172 con varias entradas de registro secundarias. El usuario desea imprimir 3 columnas (nombre, custrecord107 y custrecord112) de estos registros en una tabla como parte de la impresión de la orden de venta.
Nota: Para buscar mejoras y votar por ellas, consulte el artículo 10054, Votación para mejoras
Solución
Create a User Event Script
// SuiteScript 1.0
function customRecordPrint(type, form, request) {
if (type=='print' || type=='edit') {
//create saved search for custom records
var filters=new Array();
filters[0]=new nlobjSearchFilter('custrecord90', null, 'anyof', nlapiGetRecordId());
var columns=new Array();
columns[0]=new nlobjSearchColumn('name');
columns[1]=new nlobjSearchColumn('custrecord107');
columns[2]=new nlobjSearchColumn('custrecord112');
var result=nlapiSearchRecord('customrecord172', null, filters, columns);
var customRecords= {
columns: columns, results: result
}
;
//populate current printout with custom record entries
var columns=customRecords.columns,
results=customRecords.results,
custrecord=form.addField('custpage_custrecord_to_print', 'longtext', '', null, null),
custrecordArray=[];
if (results && results instanceof Array) {
for (var i=0; i < results.length; i++) {
var singleLine= {}
;
for (var j=0; j < columns.length; j++) {
var value=results[i].getValue(columns[j]);
if (j==0 || j==1 || j==2) {
if (value.indexOf('.')==0 || value.indexOf(',')==0 || value.indexOf('-.')==0 || value.indexOf('-,')==0) {
value='0'+value;
}
}
singleLine["col"+j]=(value) ? value : '';
}
custrecordArray.push(singleLine);
}
custrecord.setDefaultValue(JSON.stringify(custrecordArray));
}
}
}
// SuiteScript 2.0
function customRecordPrint(context) {
if (context.type=='print' || context.type=='edit') {
var record=currentRecord.get();
var recid=record.id;
//create saved search for custom records
var filters=new Array();
filters[0]=search.createFilter({
name: 'custrecord90', operator: search.Operator.ANYOF, values: recid
});
var columns=new Array();
columns[0]=search.createColumn({
name: "name"
});
columns[1]=search.createColumn({
name: "custrecord107"
});
columns[2]=search.createColumn({
name: "custrecord112"
});
var mySearch=search.create({
type: 'customrecord172',
columns: columns,
filters: filters
});
var results=mySearch.run();
//populate current printout with custom record entries
var customRecords= {
columns: columns, results: result
}
;
var columns=customRecords.columns,
results=customRecords.results,
custrecord=form.addField({
id : 'custpage_custrecord_to_print', type : serverWidget.FieldType.LONGTEXT, label : ''
}),
custrecordArray=[];
if (results && results instanceof Array) {
for (var i=0; i < results.length; i++) {
var singleLine= {}
;
for (var j=0; j < columns.length; j++) {
var value=results[i].getValue(columns[j]);
if (j==0 || j==1 || j==2) {
if (value.indexOf('.')==0 || value.indexOf(',')==0 || value.indexOf('-.')==0 || value.indexOf('-,')==0) {
value='0'+value;
}
}
singleLine["col"+j]=(value) ? value : '';
}
custrecordArray.push(singleLine);
}
custrecord.setDefaultValue(JSON.stringify(custrecordArray));
}
}
}
< #if record.custpage_custrecord_to_print ? has_content >
<
#assign customrecord = record.custpage_custrecord_to_print ? eval / >
<
table style = "page-break-inside: avoid; width: 100%; margin-top: 10px;" >
<
thead >
<
tr >
<
th align = "left"
colspan = "5"
style = "padding: 10px 6px;" > column 1 < /th> <
th align = "left"
colspan = "5"
style = "padding: 10px 6px;" > column 2 < /th> <
th align = "left"
colspan = "5"
style = "padding: 10px 6px;" > column 3 < /th> <
/tr> <
/thead> <
#list customrecord as customrecord_line >
<
tr >
<
td align = "left"
colspan = "5" > $ {
customrecord_line.col0
} < /td> <
td align = "left"
colspan = "5" > $ {
customrecord_line.col1
} < /td> <
td align = "left"
colspan = "5" > $ {
customrecord_line.col2
} < /td> <
/tr> <
/#list> <
/table> <
/#if>
Descargo de responsabilidad
El código de muestra descrito aquí se proporciona "tal cual", sin garantía de ningún tipo, en la máxima medida permitida por la ley. Oracle + NetSuite Inc. no garantiza el éxito individual que los desarrolladores puedan tener al implementar el código de muestra en sus plataformas de desarrollo ni al utilizar sus propias configuraciones de servidor web.
Oracle + NetSuite Inc. no garantiza ni realiza ninguna declaración sobre el uso, los resultados del uso, la precisión, la puntualidad ni la integridad de los datos o la información relacionados con el código de muestra. Oracle + NetSuite Inc. renuncia a todas las garantías, expresas o implícitas, y en particular, renuncia a todas las garantías de comerciabilidad, idoneidad para un fin determinado y las garantías relacionadas con el código o cualquier servicio o software relacionado con este.
Oracle + NetSuite Inc. no será responsable de ningún daño directo, indirecto o consecuente, ni de ningún coste de ningún tipo que surja de cualquier acción realizada por usted u otros en relación con el código de muestra.