NiceGuy240
NiceGuy240

Reputation: 1

Fill duedate field based on value of terms field

Is it possible to fill the duedate field based on the terms field? For example, I have a date in the duedate field, but I want to extend it based on the terms field. How can I do it? Through Suitescript or workflow?

The code is incomplete because I don’t know if I’m on the right path. (NB: It is a user event)

function beforeLoad(context) {
    
}

function beforeSubmit(context) {
    
}

function afterSubmit(context) {
   var dataEntrega = context.currentRecord

   currentRecordRecord.getValue({
       fieldId: 'duedate'
   })

   var dataCondicoes = context.currentRecord

   currentRecord.getValue({
       fieldId: 'terms'
   })

   

}

return {
    beforeLoad: beforeLoad,
    beforeSubmit: beforeSubmit,
    afterSubmit: afterSubmit
}

Upvotes: 0

Views: 730

Answers (2)

Martha
Martha

Reputation: 764

The following code should work. Depending on your needs I recommend adding some limitations to when this logic is executed. For example you can only execute based on if the transaction/record mode is create/copy (decide if you want to include edit or not). You can also check the status of the transaction, and only execute if the status is not partially paid/paid in full...

function afterSubmit(context) {

  //load record
  var curRec = context.newRecord; //can substitute "context.oldRecord", or "currentRecord.get();"

  //get current due date
  var transDueDate = curRec.getValue({fieldId: 'duedate'});

  //get the terms, this will likely come as an internal id. use getText if you want the text.
  var transTerms = curRec.getValue({fieldId: 'terms'});

  //empty string to hold terms as a number of days
  var addtlDays;

  //transform the internal id to terms as a number of days
  switch (transTerms){
    case 1: // Ex: 1 = internal id for term "Net 15"
      addtlDays = 15;
      break;

    case 2: // Ex: 2 = internal id for term "Net 30"
      addtlDays = 30;
      break;

    //add additional case statements as needed

    default:
      addtlDays = 0;
  }

  //calculuate the new due date
  var d = new Date(transDueDate);
  var newDueDate = d.setDate(d.getDate() + addtlDays);

  //set the new due date
  curRec.setValue({
    fieldId: 'duedate',
    value: newDueDate,
    ignoreFieldChange: true //optional, default is false
  });
}

Upvotes: 0

Rusty Shackles
Rusty Shackles

Reputation: 2840

Why do you need to script this? I believe the due date is calculated based on the terms out of the box, no need for scripting

Upvotes: 0

Related Questions