SuiteScript 2 can send pdf statements

2019-06-07 14:36发布

问题:

I am having a hard time getting a statement to render in SS2, I had found an answer is SS1 and hadn't used it sometime back but it doesn't seem to work in ss2. I am using the SS2 render.statement method but I am getting an "error.SuiteScriptError","name":"UNEXPECTED_ERROR","message":null,"stack":["renderStatement(N/render.js)" I am unclear as to what some of the arguments actually are. the entityid I think is the customer id, the printMode is the pdf enum, the formId I have no idea, it says it wants a number but I don't see internal ids next to the forms in the list like other objects in NetSuite, I have the InternalIds on. StartDate is a date before you want to start pulling in transactions from? Statement date? Todays Date? OpentransactionOnly true. Any help with this is appreciated.

thanks

回答1:

Many of the parameters in this API call mimic the UI options on the 'Print Individual Statement' page. I've copied some of the field level help there to help explain each setting.

  • entityId - internal ID of the customer. NOTE: I have had errors in the past which were solved by using parseInt(customer).

  • printMode - the print mode to render this statement in (eitherrender.PrintMode.HTML or render.PrintMode.PDF)

  • formId - internal ID of the form to use to print the statement. Leave this option off to use the default statement form.

  • startDate - If you choose to enter a date, this is the date of the oldest transaction that appears on the statement. If you choose to note enter a date, all transactions in the customer's history appear on the statement.

  • statementDate - Statement date. The date in this field is the date used to calculate aging and the date that appears on the statement form.

  • openTransactionsOnly - Select this option to include only open transactions on statements. If you have entered a start date, open transactions from that start date appear. If you have not entered a start date, all open transactions appear. The Show Only Open Transaction option is most useful for statements printed as of your current today date. If you select Show Only Open Transactions and are using a date other that today’s date, you may have balance discrepancies.

Here is an code snippet. It uses the moment.js for calculating the dates of the first and last day of the previous month.

var startDate = format.format({
  value: moment().subtract(1, 'months').startOf('month').toDate(),
  type: format.Type.DATE
});

var statementDate = format.format({
  value: moment().subtract(1, 'months').endOf('month').toDate(),
  type: format.Type.DATE
});

var statement = render.statement({
  entityId: parseInt(customer),
  printMode: render.PrintMode.PDF,
  startDate: startDate,
  statementDate: statementDate
});