Luis
08/17/2025, 4:19 AMLuis
08/17/2025, 4:19 AM/**
* @NApiVersion 2.1
* @NScriptType UserEventScript
* @NModuleScope SameAccount
*/
define(['N/record', 'N/runtime', 'N/search', 'N/log'],
(record, runtime, search, log) => {
const beforeSubmit = (scriptContext) => {
if (scriptContext.type !== scriptContext.UserEventType.CREATE && scriptContext.type !== scriptContext.UserEventType.EDIT) {
`log.debug('Debug', Script did not run for event type: ${scriptContext.type}. Exiting.
);`
return;
}
const newRecord = scriptContext.newRecord;
const subsidiaryId = newRecord.getValue({
fieldId: 'subsidiary'
});
if (!subsidiaryId) {
log.debug('Debug', 'No subsidiary found on the record. Exiting.');
return;
}
try {
const subsidiaryFields = search.lookupFields({
type: record.Type.SUBSIDIARY,
id: subsidiaryId,
columns: ['country']
});
const subsidiaryCountryValue = subsidiaryFields.country[0].value;
`log.debug('Debug', Subsidiary country is: ${subsidiaryCountryValue}
);`
if (subsidiaryCountryValue !== 'US') {
log.debug('Debug', 'Subsidiary country is not USA. Exiting.');
return;
}
const locationId = newRecord.getValue({
fieldId: 'location'
});
if (!locationId) {
log.debug('Debug', 'No location found on the record. Exiting.');
return;
}
const locationFields = search.lookupFields({
type: record.Type.LOCATION,
id: locationId,
columns: [
'address1', 'address2', 'city', 'state', 'zip', 'country'
]
});
log.debug('locationFields ', JSON.stringify(locationFields));
const shippingAddressSubrecord = newRecord.getSubrecord({
fieldId: 'shippingaddress'
});
shippingAddressSubrecord.setValue({
fieldId: 'country',
value: locationFields.country[0].value
});
shippingAddressSubrecord.setValue({
fieldId: 'city',
value: locationFields.city
});
shippingAddressSubrecord.setValue({
fieldId: 'state',
value: locationFields.state
});
shippingAddressSubrecord.setValue({
fieldId: 'zip',
value: locationFields.zip
});
shippingAddressSubrecord.setValue({
fieldId: 'addr1',
value: locationFields.address1
});
if(locationFields.address2) {
shippingAddressSubrecord.setValue({
fieldId: 'addr2',
value: locationFields.address2
});
}
`log.audit('Success', Ship-to address updated from location record for Invoice ID: ${newRecord.id || 'New Record'}
);`
} catch (e) {
log.error({
title: 'Error copying location address',
details: e.toString()
});
}
};
return {
beforeSubmit: beforeSubmit
};
});
Ben Tanner
08/18/2025, 6:25 PMLuis
08/19/2025, 2:50 AMBen Tanner
08/20/2025, 8:00 PMLuis
08/20/2025, 11:08 PMBen Tanner
08/20/2025, 11:30 PMLuis
08/21/2025, 1:16 PMBen Tanner
08/21/2025, 4:38 PMLuis
08/21/2025, 11:42 PMBen Tanner
08/21/2025, 11:49 PMfunction updateShippingAddress(scriptContext) {
var newRecord = scriptContext.newRecord;
var subsidiaryId = newRecord.getValue({ fieldId: 'subsidiary' });
if (!subsidiaryId) {
log.debug('Debug', 'No subsidiary found on the record. Exiting.');
return;
}
try {
// check subsidiary
var subsidiaryFields = search.lookupFields({
type: record.Type.SUBSIDIARY,
id: subsidiaryId,
columns: ['country']
});
var subsidiaryCountryValue = subsidiaryFields.country[0].value;
log.debug('Debug', 'Subsidiary country is: ' + subsidiaryCountryValue);
if (subsidiaryCountryValue !== 'US') {
log.debug('Debug', 'Subsidiary country is not USA. Exiting.');
return;
}
// check location
var locationId = newRecord.getValue({ fieldId: 'location' });
if (!locationId) {
log.debug('Debug', 'No location found on the record. Exiting.');
return;
}
var locationFields = search.lookupFields({
type: record.Type.LOCATION,
id: locationId,
columns: ['address1', 'address2', 'city', 'state', 'zip', 'country']
});
log.debug('locationFields ', JSON.stringify(locationFields));
var shippingAddressSubrecord = newRecord.getSubrecord({ fieldId: 'shippingaddress' });
shippingAddressSubrecord.setValue({ fieldId: 'country', value: locationFields.country[0].value });
shippingAddressSubrecord.setValue({ fieldId: 'city', value: locationFields.city });
shippingAddressSubrecord.setValue({ fieldId: 'state', value: locationFields.state });
shippingAddressSubrecord.setValue({ fieldId: 'zip', value: locationFields.zip });
shippingAddressSubrecord.setValue({ fieldId: 'addr1', value: locationFields.address1 });
if(locationFields.address2) {
shippingAddressSubrecord.setValue({ fieldId: 'addr2', value: locationFields.address2 });
}
log.audit('Success', 'Ship-to address updated from location record for Invoice ID: ' + newRecord.id);
} catch (e) {
log.error({
title: 'Error copying location address',
details: e.toString()
});
}
}
Luis
08/22/2025, 2:15 PM