Using Client Script, auto populate division field in the item line of Purchase Order record corresponding to the Projectcode in the item line.

/**

  • @NApiVersion 2.x
  • @NScriptType ClientScript
  • @NModuleScope SameAccount
    / define([‘N/record’, ‘N/runtime’, ‘N/search’], /*
  • @param{record} record
  • @param{runtime} runtime
  • @param{search} search
    */
    function(record, runtime, search) {
    function setDiv(sublist,recobj){
    var div
    var projectcode= recobj.getCurrentSublistValue({
    sublistId:sublist,
    fieldId:”custcol_cseg13″
    })
    console.log(“projectcode”,projectcode)
    if(projectcode) {
    var customrecord_cseg13SearchObj = search.create({
    type: “customrecord_cseg13”,
    filters:
    [
    [“internalid”, “anyof”, projectcode]
    ],
    columns:
    [
    search.createColumn({name: “custrecord_ref_projectrecord”, label: “Project Record Ref”}),
    search.createColumn({
    name: “custentity8”,
    join: “CUSTRECORD_REF_PROJECTRECORD”,
    label: “Div/Unit”
    })
    ]
    });
    var searchResultCount = customrecord_cseg13SearchObj.runPaged().count;
    log.debug(“customrecord_cseg13SearchObj result count”, searchResultCount);
    customrecord_cseg13SearchObj.run().each(function (result) {
    // .run().each has a limit of 4,000 results
    div = result.getValue(
    {
    name: “custentity8”,
    join: “CUSTRECORD_REF_PROJECTRECORD”,
    label: “Div/Unit”
    }
    )
    // return true;
    });
    console.log(“div”, div)
    if (div) {
    recobj.setCurrentSublistValue({
    sublistId: sublist,
    fieldId: “class”,
    value: div
    })
    var linesublist = recobj.getSublist({sublistId: sublist});
    var div = linesublist.getColumn({fieldId: “class”});
    div.isDisabled = true;
    } else {
    recobj.setCurrentSublistValue({
    sublistId: sublist,
    fieldId: “class”,
    value: null
    })
    var linesublist = recobj.getSublist({sublistId: sublist});
    var div = linesublist.getColumn({fieldId: “class”});
    div.isDisabled = true;
    alert(‘Please ensure that the project is associated to a Division/Unit.’);
    }
    }
    } /**
    • Function to be executed after page is initialized.
      *
    • @param {Object} scriptContext
    • @param {Record} scriptContext.currentRecord – Current form record
    • @param {string} scriptContext.mode – The mode in which the record is being accessed (create, copy, or edit)
      *
    • @since 2015.2
      */
      function pageInit(scriptContext) {
      try {
      var objRecord = scriptContext.currentRecord;
      if (objRecord.type == ‘journalentry’) {
      console.log(‘objRecord.type’,objRecord.type)
      var linesublist = objRecord.getSublist({sublistId: “line”});
      // console.log(‘linesublist’,linesublist)
      var divline = linesublist.getColumn({fieldId: “class”}); // console.log('divline',divline) divline.isDisabled = true; } }catch (e) {
      console.log(‘error@pageInit’,e)
      }
      }
    /**
    • Function to be executed when field is changed.
      *
    • @param {Object} scriptContext
    • @param {Record} scriptContext.currentRecord – Current form record
    • @param {string} scriptContext.sublistId – Sublist name
    • @param {string} scriptContext.fieldId – Field name
    • @param {number} scriptContext.lineNum – Line number. Will be undefined if not a sublist or matrix field
    • @param {number} scriptContext.columnNum – Line number. Will be undefined if not a matrix field
      *
    • @since 2015.2
      */
      function fieldChanged(scriptContext) {
      try {
      var recobj = scriptContext.currentRecord if (scriptContext.sublistId == "line" && scriptContext.fieldId == "custcol_cseg13") setDiv(scriptContext.sublistId, recobj) }catch (e) {
      console.log(‘error@fieldChanged’,e)
      }
      }
    /**
    • Function to be executed when field is slaved.
      *
    • @param {Object} scriptContext
    • @param {Record} scriptContext.currentRecord – Current form record
    • @param {string} scriptContext.sublistId – Sublist name
    • @param {string} scriptContext.fieldId – Field name
      *
    • @since 2015.2
      */
      function postSourcing(scriptContext) {
      try {
      var recobj = scriptContext.currentRecord
      if (scriptContext.sublistId == “line” && scriptContext.fieldId == “account”) {
      setDiv(scriptContext.sublistId, recobj)
      }
      }catch (e) {
      console.log(‘error@postSourcing’,e)
      }
    } /**
    • Function to be executed after sublist is inserted, removed, or edited.
      *
    • @param {Object} scriptContext
    • @param {Record} scriptContext.currentRecord – Current form record
    • @param {string} scriptContext.sublistId – Sublist name
      *
    • @since 2015.2
      */
      function sublistChanged(scriptContext) {
    } /**
    • Function to be executed after line is selected.
      *
    • @param {Object} scriptContext
    • @param {Record} scriptContext.currentRecord – Current form record
    • @param {string} scriptContext.sublistId – Sublist name
      *
    • @since 2015.2
      */
      function lineInit(scriptContext) {
      try {
      var objRecord = scriptContext.currentRecord;
      if (objRecord.type == ‘journalentry’) {
      var linesublist = objRecord.getSublist({sublistId: scriptContext.sublistId});
      // console.log(‘linesublist’,linesublist)
      var div = linesublist.getColumn({fieldId: “class”});
      // var expsublist = objRecord.getSublist({sublistId: “expense”});
      // var divExp = expsublist.getColumn({fieldId: “class”});
      // console.log(‘divItem’,divItem)
      div.isDisabled = true;
      // divExp.isDisabled = true;
      }
      }catch (e) {
      console.log(“error@lineInit”,e)
      }
    } /**
    • Validation function to be executed when field is changed.
      *
    • @param {Object} scriptContext
    • @param {Record} scriptContext.currentRecord – Current form record
    • @param {string} scriptContext.sublistId – Sublist name
    • @param {string} scriptContext.fieldId – Field name
    • @param {number} scriptContext.lineNum – Line number. Will be undefined if not a sublist or matrix field
    • @param {number} scriptContext.columnNum – Line number. Will be undefined if not a matrix field
      *
    • @returns {boolean} Return true if field is valid
      *
    • @since 2015.2
      */
      function validateField(scriptContext) {
    } /**
    • Validation function to be executed when sublist line is committed.
      *
    • @param {Object} scriptContext
    • @param {Record} scriptContext.currentRecord – Current form record
    • @param {string} scriptContext.sublistId – Sublist name
      *
    • @returns {boolean} Return true if sublist line is valid
      *
    • @since 2015.2
      */
      function validateLine(scriptContext) {
    } /**
    • Validation function to be executed when sublist line is inserted.
      *
    • @param {Object} scriptContext
    • @param {Record} scriptContext.currentRecord – Current form record
    • @param {string} scriptContext.sublistId – Sublist name
      *
    • @returns {boolean} Return true if sublist line is valid
      *
    • @since 2015.2
      */
      function validateInsert(scriptContext) {
    } /**
    • Validation function to be executed when record is deleted.
      *
    • @param {Object} scriptContext
    • @param {Record} scriptContext.currentRecord – Current form record
    • @param {string} scriptContext.sublistId – Sublist name
      *
    • @returns {boolean} Return true if sublist line is valid
      *
    • @since 2015.2
      */
      function validateDelete(scriptContext) {
    } /**
    • Validation function to be executed when record is saved.
      *
    • @param {Object} scriptContext
    • @param {Record} scriptContext.currentRecord – Current form record
    • @returns {boolean} Return true if record is valid
      *
    • @since 2015.2
      */
      function saveRecord(scriptContext) {
    } return {
    pageInit: pageInit,
    fieldChanged: fieldChanged,
    postSourcing: postSourcing,
    // sublistChanged: sublistChanged,
    lineInit: lineInit,
    // validateField: validateField,
    // validateLine: validateLine,
    // validateInsert: validateInsert,
    // validateDelete: validateDelete,
    // saveRecord: saveRecord
    };

});

Leave a comment

Your email address will not be published. Required fields are marked *