/**
* @NApiVersion 2.x
* @NScriptType UserEventScript
* @NModuleScope SameAccount
*/
define( [ 'N/record', 'N/search', 'N/ui/serverWidget' ],
function ( record, search, serverWidget )
{
/**
* Function definition to be triggered before record is loaded.
* @param {Object} context
* @param {Record} context.newRecord - New record
* @param {Record} context.oldRecord - Old record
* @param {string} context.type - Trigger type
* @Since 2015.2
*/
function beforeLoad ( context )
{
try
{
//if(context.type == 'print' || context.type == 'view'){
var rec = record.load( {
type: context.newRecord.type,
id: context.newRecord.id
} );
var form = context.form;
if ( context.type == 'view' )
{
//
//Hide "Pharmacy Rx View" Sublist in view mode
var taxRate = form.getSublist( { id: 'recmachcustrecord_vv_customer' } )
taxRate.displayType = serverWidget.SublistDisplayType.HIDDEN;
}
var custPres = getPresciptions( context.newRecord.id );
createTable( form, custPres, context.newRecord.id );
} catch ( e )
{
log.error( 'ERROR', e.message );
}
}
function createTable ( form, data, custId )
{
var LOGTITLE = "CREATE_TABLE";
var rxSublist = form.addSublist( {
id: 'custpage_presc_table',
type: serverWidget.SublistType.LIST,
label: 'Prescriptions',
tab: 'custom103'
} );
try
{
form.insertSublist( {
sublist: rxSublist,
nextsublist: 'recmachcustrecord_vv_customer'
} );
} catch ( e )
{
log.error( 'WARNING', e.message );
}
var prescriptionLinkField = rxSublist.addField( {
id: 'custpage_prescrptnlink',
type: serverWidget.FieldType.TEXT,
label: 'View Link'
} );
var petField = rxSublist.addField( {
id: 'custpage_petfield',
type: serverWidget.FieldType.TEXT,
label: 'Pet'
} );
var speciesField = rxSublist.addField( {
id: 'custpage_speciesfield',
type: serverWidget.FieldType.TEXT,
label: 'Species'
} );
var vetClinicField = rxSublist.addField( {
id: 'custpage_vetclinicnamefield',
type: serverWidget.FieldType.TEXT,
label: 'Vet'
} );
var itemNumCol = rxSublist.addField( {
id: 'custpage_itemnum',
type: serverWidget.FieldType.TEXT,
label: 'Item #'
} );
var itemNameCol = rxSublist.addField( {
id: 'custpage_itemname',
type: serverWidget.FieldType.TEXT,
label: 'Item Name'
} );
itemNameCol.updateDisplayType( { displayType: serverWidget.FieldDisplayType.HIDDEN } );
var itemDescCol = rxSublist.addField( {
id: 'custpage_itemdescription',
type: serverWidget.FieldType.TEXT,
label: 'Item Description'
} );
var qtyCol = rxSublist.addField( {
id: 'custpage_quantity',
type: serverWidget.FieldType.INTEGER,
label: 'QTY'
} );
var qtyUsedCol = rxSublist.addField( {
id: 'custpage_qtyused',
type: serverWidget.FieldType.INTEGER,
label: 'USED'
} );
var qtyOpenCol = rxSublist.addField( {
id: 'custpage_qtyopen',
type: serverWidget.FieldType.INTEGER,
label: 'REMAINING'
} );
var expirationDate = rxSublist.addField( {
id: 'custpage_expirationdate',
type: serverWidget.FieldType.DATE,
label: 'Expires'
} )
var rxCol = rxSublist.addField( {
id: 'custpage_rxnum',
type: serverWidget.FieldType.TEXT,
label: 'RX #'
} );
var asWrittenCol = rxSublist.addField( {
id: 'custpage_aswritten',
type: serverWidget.FieldType.TEXT,
label: 'As Written'
} );
asWrittenCol.updateDisplayType( { displayType: serverWidget.FieldDisplayType.HIDDEN } );
var openRxCol = rxSublist.addField( {
id: 'custpage_openrx',
type: serverWidget.FieldType.TEXT,
label: 'Open RX'
} );
openRxCol.updateDisplayType( { displayType: serverWidget.FieldDisplayType.HIDDEN } );
var directionsCol = rxSublist.addField( {
id: 'custpage_directions',
type: serverWidget.FieldType.TEXT,
label: 'Directions'
} );
directionsCol.updateDisplayType( { displayType: serverWidget.FieldDisplayType.HIDDEN } );
var commentsCol = rxSublist.addField( {
id: 'custpage_comments',
type: serverWidget.FieldType.TEXT,
label: 'Comments'
} );
commentsCol.updateDisplayType( { displayType: serverWidget.FieldDisplayType.HIDDEN } );
var statusCol = rxSublist.addField( {
id: 'custpage_status',
type: serverWidget.FieldType.TEXT,
label: 'Status'
} );
statusCol.updateDisplayType( { displayType: serverWidget.FieldDisplayType.HIDDEN } );
for ( var i = 0; i < data.length; i++ )
{
if ( data[ i ].itemId != '' )
{
var lineQty = ( data[ i ].qty == '' ) ? 0 : data[ i ].qty;
var usedQty = getUsedQty( data[ i ].itemId, custId, data[ i ].rxId )
var openQty = data[ i ].qty - usedQty < 0 ? "0" : data[ i ].qty - usedQty;
if ( data[ i ].rxNum != '' )
{
rxSublist.setSublistValue( {
id: 'custpage_prescrptnlink',
line: i,
value: data[ i ].viewLink
} );
}
if ( data[ i ].expDate != '' )
{
rxSublist.setSublistValue( {
id: 'custpage_expirationdate',
line: i,
value: data[ i ].expDate
} );
}
if ( data[ i ].pet != '' )
{
rxSublist.setSublistValue( {
id: 'custpage_petfield',
line: i,
value: data[ i ].pet
} );
}
if ( data[ i ].species != '' )
{
rxSublist.setSublistValue( {
id: 'custpage_speciesfield',
line: i,
value: data[ i ].species
} );
}
if ( data[ i ].vet != '' )
{
rxSublist.setSublistValue( {
id: 'custpage_vetclinicnamefield',
line: i,
value: data[ i ].vet + ' ,</br>' + data[ i ].clinic
} );
}
if ( data[ i ].rxNum != '' )
{
rxSublist.setSublistValue( {
id: 'custpage_rxnum',
line: i,
value: data[ i ].rxId
} );
}
if ( data[ i ].itemName != '' )
{
rxSublist.setSublistValue( {
id: 'custpage_itemname',
line: i,
value: data[ i ].itemName
} );
}
if ( data[ i ].itemNum != '' )
{
rxSublist.setSublistValue( {
id: 'custpage_itemnum',
line: i,
value: data[ i ].itemNum
} );
}
if ( data[ i ].desc != '' )
{
rxSublist.setSublistValue( {
id: 'custpage_itemdescription',
line: i,
value: data[ i ].desc
} );
}
//if(lineQty != ''){
rxSublist.setSublistValue( {
id: 'custpage_quantity',
line: i,
value: lineQty.toString()
} );
//}
//if(usedQty != ''){
rxSublist.setSublistValue( {
id: 'custpage_qtyused',
line: i,
value: usedQty.toString()
} );
//}
//if(openQty != ''){
openQty = ( openQty.toString().indexOf( '-' ) == -1 ) ? openQty : 0;
rxSublist.setSublistValue( {
id: 'custpage_qtyopen',
line: i,
value: openQty.toString()
} );
//}
if ( data[ i ].asWritten != '' )
{
rxSublist.setSublistValue( {
id: 'custpage_aswritten',
line: i,
value: 'True'
} );
} else
{
rxSublist.setSublistValue( {
id: 'custpage_aswritten',
line: i,
value: 'False'
} );
}
if ( data[ i ].openRx != '' )
{
rxSublist.setSublistValue( {
id: 'custpage_openrx',
line: i,
value: 'True'
} );
} else
{
rxSublist.setSublistValue( {
id: 'custpage_openrx',
line: i,
value: 'False'
} );
}
if ( data[ i ].directions != '' )
{
rxSublist.setSublistValue( {
id: 'custpage_directions',
line: i,
value: data[ i ].directions
} );
}
if ( data[ i ].comments != '' )
{
rxSublist.setSublistValue( {
id: 'custpage_comments',
line: i,
value: data[ i ].comments
} );
}
if ( data[ i ].status != '' )
{
rxSublist.setSublistValue( {
id: 'custpage_status',
line: i,
value: data[ i ].status
} );
}
}
}
}
function getPresciptions ( custId )
{
var returnValue = [];
var customrecord_vv_prescriptionSearchObj = search.create( {
type: "customrecord_vv_prescription",
filters: [
[ "custrecord_vv_customer", "anyof", custId ]
],
columns: [
"internalid",
"name",
search.createColumn( {
name: "custrecord_vv_rx_number",
join: "CUSTRECORD_VV_PRESCRIPTION_ID"
} ),
search.createColumn( {
name: "custrecord_vv_item_name",
join: "CUSTRECORD_VV_PRESCRIPTION_ID"
} ),
search.createColumn( {
name: "custrecord_vv_item_number",
join: "CUSTRECORD_VV_PRESCRIPTION_ID"
} ),
search.createColumn( {
name: "custrecord_vv_description",
join: "CUSTRECORD_VV_PRESCRIPTION_ID"
} ),
search.createColumn( {
name: "custrecord_vv_refill_quantity",
join: "CUSTRECORD_VV_PRESCRIPTION_ID"
} ),
search.createColumn( {
name: "custrecord_vv_quantity_open",
join: "CUSTRECORD_VV_PRESCRIPTION_ID"
} ),
search.createColumn( {
name: "custrecord_vv_as_written",
join: "CUSTRECORD_VV_PRESCRIPTION_ID"
} ),
search.createColumn( {
name: "custrecord_vv_open_rx",
join: "CUSTRECORD_VV_PRESCRIPTION_ID"
} ),
search.createColumn( {
name: "custrecord_vv_directions",
join: "CUSTRECORD_VV_PRESCRIPTION_ID"
} ),
search.createColumn( {
name: "custrecord_vv_comments",
join: "CUSTRECORD_VV_PRESCRIPTION_ID"
} ),
search.createColumn( {
name: "custrecord_vv_status",
join: "CUSTRECORD_VV_PRESCRIPTION_ID"
} ),
search.createColumn( {
name: "formulatext",
formula: "'<a href=https://386782-sb2.app.netsuite.com/app/common/custom/custrecordentry.nl?rectype=725&id=' || {internalid} || ' target=_blank>View</a>'",
label: "Formula (Text)"
} ),
search.createColumn( { name: "custrecord_vv_pet", label: "Pet" } ),
search.createColumn( { name: "custrecord_vv_species", label: "Species" } ),
search.createColumn( { name: "custrecord_vv_vet", label: "Vet" } ),
search.createColumn( { name: "custrecord_vet_altname", label: "Vet Name" } ),
search.createColumn( { name: "custrecord_vv_clinic_name", label: "Clinic Name" } ),
search.createColumn( { name: "custrecord_vv_expiration_date", label: "Expiration Date" } )
]
} );
var myPagedData = customrecord_vv_prescriptionSearchObj.runPaged();
myPagedData.pageRanges.forEach( function ( pageRange )
{
var myPage = myPagedData.fetch( {
index: pageRange.index
} );
myPage.data.forEach( function ( result )
{
returnValue.push( {
recId: result.getValue( 'internalid' ),
rxId: result.getValue( 'name' ),
rxNum: result.getValue( {
name: 'custrecord_vv_rx_number',
join: 'CUSTRECORD_VV_PRESCRIPTION_ID'
} ),
itemId: result.getValue( {
name: 'custrecord_vv_item_name',
join: 'CUSTRECORD_VV_PRESCRIPTION_ID'
} ),
itemName: result.getText( {
name: 'custrecord_vv_item_name',
join: 'CUSTRECORD_VV_PRESCRIPTION_ID'
} ),
itemNum: result.getValue( {
name: 'custrecord_vv_item_number',
join: 'CUSTRECORD_VV_PRESCRIPTION_ID'
} ),
desc: result.getValue( {
name: 'custrecord_vv_description',
join: 'CUSTRECORD_VV_PRESCRIPTION_ID'
} ),
qty: result.getValue( {
name: 'custrecord_vv_refill_quantity',
join: 'CUSTRECORD_VV_PRESCRIPTION_ID'
} ),
qtyOpen: result.getValue( {
name: 'custrecord_vv_quantity_open',
join: 'CUSTRECORD_VV_PRESCRIPTION_ID'
} ),
asWritten: result.getValue( {
name: 'custrecord_vv_as_written',
join: 'CUSTRECORD_VV_PRESCRIPTION_ID'
} ),
openRx: result.getValue( {
name: 'custrecord_vv_open_rx',
join: 'CUSTRECORD_VV_PRESCRIPTION_ID'
} ),
directions: result.getValue( {
name: 'custrecord_vv_directions',
join: 'CUSTRECORD_VV_PRESCRIPTION_ID'
} ),
comments: result.getValue( {
name: 'custrecord_vv_comments',
join: 'CUSTRECORD_VV_PRESCRIPTION_ID'
} ),
status: result.getValue( {
name: 'custrecord_vv_status',
join: 'CUSTRECORD_VV_PRESCRIPTION_ID'
} ),
viewLink: result.getValue( {
name: "formulatext",
formula: "'<a href=https://386782-sb2.app.netsuite.com/app/common/custom/custrecordentry.nl?rectype=725&id=' || {internalid} || ' target=_blank>View</a>'",
label: "Formula (Text)"
} ),
pet: result.getText( result.columns[ 14 ] ),
species: result.getValue( result.columns[ 15 ] ),
vet: result.getValue( result.columns[ 17 ] ),
clinic: result.getValue( result.columns[ 18 ] ),
expDate: result.getValue( result.columns[ 19 ] )
} )
} );
} );
//alert(returnValue);
return returnValue;
}
function getUsedQty ( itemId, custId, prescId )
{
var qty = 0;
var customrecord_vv_autoship_recordSearchObj = search.create( {
type: "customrecord_vv_autoship_record",
filters: [
[ "custrecord_vv_autoship_item", "anyof", itemId ],
"AND",
[ "custrecord_vv_autoship_customer_src", "anyof", custId ],
"AND",
[ "custrecord_vv_autoship_prescription", "anyof", prescId ]
],
columns: [
search.createColumn( {
name: "custrecord_vv_autoship_quantity",
summary: "SUM"
} )
]
} );
var myPagedData = customrecord_vv_autoship_recordSearchObj.runPaged();
myPagedData.pageRanges.forEach( function ( pageRange )
{
var myPage = myPagedData.fetch( {
index: pageRange.index
} );
myPage.data.forEach( function ( result )
{
qty = result.getValue( {
name: 'custrecord_vv_autoship_quantity',
summary: 'SUM'
} );
} );
} );
qty = ( qty == '' ) ? 0 : qty;
return qty;
}
return {
beforeLoad: beforeLoad,
}
}
);