Krishna Karki
Krishna Karki

Reputation: 797

How to create journal entry in netsuite api?

I am trying to create a journal entry on NetSuite using its SuiteScript API.

Here is my code.

export function post() {
  var rec = record.create({
    type: record.Type.JOURNAL_ENTRY,
    isDynamic: true,
  });
  rec.setValue({
    fieldId: "memo",
    value: "from api ",
  });
  rec.setValue({
    fieldId: "type",
    value: "Journal",
  });
  rec.setText({
    fieldId: "type",
    text: "Journal",
  });

  rec.setValue({ fieldId: "transactionnumber", value: "158" });
  rec.setValue({ fieldId: "subsidiary", value: "2" });
  rec.setText({ fieldId: "subsidiary", text: "Headquarters : United States" });
  rec.setValue({ fieldId: "postingperiod", value: "238" });
  rec.setText({ fieldId: "postingperiod", text: "Dec 2021" });
  rec.setValue({ fieldId: "customform", value: "30" });
  rec.setText({ fieldId: "customform", text: "Standard Journal Entry" });

   
  rec.setValue({ fieldId: "exchangerate", value: "1.00" });
  //-------------------------debit------------------------------------------
  //start a new line
  rec.selectNewLine({
    sublistId: "line",
  });

  rec.setCurrentSublistValue({
    sublistId: "line",
    fieldId: "account",
    value: "1",
  });

  rec.setCurrentSublistValue({
    sublistId: "line",
    fieldId: "accounttype",
    value: "AcctRec",
  });

  rec.setCurrentSublistValue({
    sublistId: "line",
    fieldId: "account_display",
    value: "1100 Accounts Receivable",
  });

  rec.setCurrentSublistValue({
    sublistId: "line",
    fieldId: "debit",
    value: "200",
  });
  rec.setCurrentSublistValue({
    sublistId: "line",
    fieldId: "credit",
    value: "",
  });
  //close of line
  rec.commitLine({
    sublistId: "line",
  });
  //----------------------------credit---------------------------------------
  //new line again

  rec.selectNewLine({
    sublistId: "line",
  });

  rec.setCurrentSublistValue({
    sublistId: "line",
    fieldId: "account",
    value: "10",
  });

  rec.setCurrentSublistValue({
    sublistId: "line",
    fieldId: "accounttype",
    value: "OthCurrAsset",
  });

  rec.setCurrentSublistValue({
    sublistId: "line",
    fieldId: "account_display",
    value: "1200 Inventory",
  });

  rec.setCurrentSublistValue({
    sublistId: "line",
    fieldId: "credit",
    value: "200",
  });
  rec.setCurrentSublistValue({
    sublistId: "line",
    fieldId: "debit",
    value: "",
  });
  rec.commitLine({
    sublistId: "line",
  });
  var recordId = rec.save();
  //-------------------------------------------------------------------
  return JSON.stringify(recordId);
}

Everything looks good for me but I am getting the following error

{
    "error": {
        "code": "INVALID_FLD_VALUE",
        "message": "{\"type\":\"error.SuiteScriptError\",\"name\":\"INVALID_FLD_VALUE\",\"message\":\"You have entered an Invalid Field Value 1 for the following field: account\",\"stack\":[\"anonymous(N/serverRecordService)\",\"post(/SuiteScripts/ssv2/journal_restlet.js:73)\"],\"cause\":{\"type\":\"internal error\",\"code\":\"INVALID_FLD_VALUE\",\"details\":\"You have entered an Invalid Field Value 1 for the following field: account\",\"userEvent\":null,\"stackTrace\":[\"anonymous(N/serverRecordService)\",\"post(/SuiteScripts/ssv2/journal_restlet.js:73)\"],\"notifyOff\":false},\"id\":\"\",\"notifyOff\":false,\"userFacing\":false}"
    }
}

Basically which means the account value 1 which I m sending to create line is invalid. But 1 is a valid account id of a Cash account.

This is the response of lines when I call get method.

{
    "line": [
        {
            "scheduletype": "",
            "oldstartdate": "",
            "entity_display": "",
            "memo": "",
            "residual": "",
            "account_cur": "",
            "amortermsrc": "",
            "startdate": "",
            "tax1acct": "",
            "account_cur_fx": "F",
            "cleareddate": "",
            "custcol_adjustment_tax_code": "",
            "grossamt": "",
            "custcol_2663_isperson": false,
            "credit": "",
            "origdebit": 5000,
            "item": "",
            "sys_parentid": "2040634920479734",
            "tax1amt": "",
            "amortizationtype": "",
            "entity2": "",
            "custcol_emirate": "",
            "enddate": "",
            "entitytype": "Entity",
            "lineuniquekey": "89669",
            "hasimmutableamortization": false,
            "taxcode": "",
            "taxcode_display": "",
            "custcol_2663_eft_file_format": "",
            "cleared": "F",
            "line": 0,
            "accounttype": "AcctRec",
            "kpayitem": "",
            "timelineid": "",
            "eliminate": false,
            "custcol_adjustment_field": "",
            "accounteliminate": "F",
            "class_display": "",
            "giftcertcode": "",
            "origcredit": "",
            "sys_id": "2040634962802984",
            "account_display": "1100 Accounts Receivable",
            "btoach": false,
            "custcol_2663_lastname": "",
            "debit": 5000,
            "department": "",
            "oldresidual": "",
            "class": "",
            "ritemcount": "",
            "oldenddate": "",
            "custcol_2663_firstname": "",
            "custcol_far_trn_relatedasset": "",
            "department_display": "",
            "location_display": "",
            "schedule": "",
            "schedulenum": "",
            "taxrate1": "",
            "custcol_2663_companyname": "",
            "location": "",
            "entity_cur": "",
            "account": "6",
            "entity": ""
        },
        {
            "scheduletype": "",
            "oldstartdate": "",
            "entity_display": "",
            "memo": "",
            "residual": "",
            "account_cur": "",
            "amortermsrc": "",
            "startdate": "",
            "tax1acct": "",
            "account_cur_fx": "F",
            "cleareddate": "",
            "custcol_adjustment_tax_code": "",
            "grossamt": "",
            "custcol_2663_isperson": false,
            "credit": 5000,
            "origdebit": "",
            "item": "",
            "sys_parentid": "2040634920479734",
            "tax1amt": "",
            "amortizationtype": "",
            "entity2": "",
            "custcol_emirate": "",
            "enddate": "",
            "entitytype": "Entity",
            "lineuniquekey": "89670",
            "hasimmutableamortization": false,
            "taxcode": "",
            "taxcode_display": "",
            "custcol_2663_eft_file_format": "",
            "cleared": "F",
            "line": 1,
            "accounttype": "OthCurrAsset",
            "kpayitem": "",
            "timelineid": "",
            "eliminate": false,
            "custcol_adjustment_field": "",
            "accounteliminate": "F",
            "class_display": "",
            "giftcertcode": "",
            "origcredit": 5000,
            "sys_id": "2040634962760922",
            "account_display": "1200 Inventory",
            "btoach": false,
            "custcol_2663_lastname": "",
            "debit": "",
            "department": "",
            "oldresidual": "",
            "class": "",
            "ritemcount": "",
            "oldenddate": "",
            "custcol_2663_firstname": "",
            "custcol_far_trn_relatedasset": "",
            "department_display": "",
            "location_display": "",
            "schedule": "",
            "schedulenum": "",
            "taxrate1": "",
            "custcol_2663_companyname": "",
            "location": "",
            "entity_cur": "",
            "account": "10",
            "entity": ""
        }
    ],
    "recmachcustrecord109": [],
    "recmachcustrecord_2663_parent_bill": [],
    "recmachcustrecord_2663_parent_payment": [],
    "recmachcustrecord_2663_transaction": [],
    "recmachcustrecord_assetsourcetrn": [],
    "recmachcustrecord_deprhistjournal": [],
    "recmachcustrecord_far_expinc_transaction": [],
    "recmachcustrecord_nsts_rfc_created_trans": [],
    "recmachcustrecord_nsts_rfc_related_records": [],
    "recmachcustrecord_summary_histjournal": [],
    "recmachcustrecord_wmsse_order_no": [],
    "recmachcustrecord_wmsse_order_no_clt": [],
    "recmachcustrecord_wmsse_ordno": [],
    "recmachcustrecord_wmsse_parent_orderno": [],
    "recmachcustrecord_wmsse_ship_order": [],
    "activities": [],
    "mediaitem": [],
    "usernotes": [],
    "links": [],
    "systemnotes": [],
    "calls": [],
    "tasks": [],
    "events": []
}

Here account ids are 6 and 10. I still get the same error even I use 6 and 10 in the account fields. Does anyone know how to solve this issue?

Thanks, Krishna

Upvotes: 5

Views: 3412

Answers (3)

Krishna Karki
Krishna Karki

Reputation: 797

The problem was subsidiary and my account ids were not matching. Here is the complete code if someone needs it in the future.

export function post() {
  var rec = record.create({
    type: record.Type.JOURNAL_ENTRY,
    isDynamic: true,
  });
  rec.setValue({
    fieldId: "memo",
    value: "from api ",
  });
  rec.setValue({
    fieldId: "type",
    value: "Journal",
  });
  rec.setText({
    fieldId: "type",
    text: "Journal",
  });

  // rec.setValue({ fieldId: "transactionnumber", value: "158" });
  rec.setValue({ fieldId: "subsidiary", value: "2" });
  rec.setText({ fieldId: "subsidiary", text: "Headquarters : United States" });
  rec.setValue({ fieldId: "postingperiod", value: "238" });
  rec.setText({ fieldId: "postingperiod", text: "Dec 2021" });
  rec.setValue({ fieldId: "trandate", value: new Date("12/27/2021") });

  // rec.setValue({ fieldId: "customform", value: "30" });
  // rec.setText({ fieldId: "customform", text: "Standard Journal Entry" });

  rec.setValue({ fieldId: "exchangerate", value: "1.00" });
  //-------------------------debit------------------------------------------
  //start a new line
  rec.selectNewLine({
    sublistId: "line",
  });

  rec.setCurrentSublistValue({
    sublistId: "line",
    fieldId: "account",
    value: 363,
  });

  rec.setCurrentSublistValue({
    sublistId: "line",
    fieldId: "accounttype",
    value: "AcctRec",
  });

  rec.setCurrentSublistValue({
    sublistId: "line",
    fieldId: "account_display",
    value: "1100 Accounts Receivable",
  });

  rec.setCurrentSublistValue({
    sublistId: "line",
    fieldId: "debit",
    value: "200",
  });
  rec.setCurrentSublistValue({
    sublistId: "line",
    fieldId: "credit",
    value: "",
  });
  //close of line
  rec.commitLine({
    sublistId: "line",
  });
  //----------------------------credit---------------------------------------
  //new line again

  rec.selectNewLine({
    sublistId: "line",
  });

  rec.setCurrentSublistValue({
    sublistId: "line",
    fieldId: "account",
    value: 10,
  });

  rec.setCurrentSublistValue({
    sublistId: "line",
    fieldId: "accounttype",
    value: "OthCurrAsset",
  });

  rec.setCurrentSublistValue({
    sublistId: "line",
    fieldId: "account_display",
    value: "1200 Inventory",
  });

  rec.setCurrentSublistValue({
    sublistId: "line",
    fieldId: "credit",
    value: "200",
  });
  rec.setCurrentSublistValue({
    sublistId: "line",
    fieldId: "debit",
    value: "",
  });
  rec.commitLine({
    sublistId: "line",
  });
  var recordId = rec.save();
  //-------------------------------------------------------------------
  return JSON.stringify(recordId);
}

Upvotes: 3

Pierre Plourde
Pierre Plourde

Reputation: 1042

It looks like you are trying to set the account using the account name or account number rather than the account internal id. The setCurrentSublistValue call, when dealing with a linked record like this, needs the internal ID, not the name or number:

rec.setCurrentSublistValue({
    sublistId: "line",
    fieldId: "account_display",
    value: "{internalid of account}",
  });

EDIT: Assuming here that you mean to use SuiteScript 2.0, since that's the code you wrote, and not SuiteTalk, which is different code altogether.

Upvotes: 0

Sayeesh
Sayeesh

Reputation: 236

I guess its throwing an error because you are passing the account value as a string.

Try this -

rec.setCurrentSublistValue({
    sublistId: "line",
    fieldId: "account",
    value: Number(1)   //Change this
});

Let me know in case of any issues.

Upvotes: 0

Related Questions