I'm trying to print a purchase order using these instructions for printing an invoice. Can you write complete scripts for the Suitlet, Client Script and the User Event Script? Create a Suitelet Script that will print the Invoice record using a different Template from another custom form.

1. Navigate to Customization > Scripting > Scripts > New

2. Create script file, with the following lines of code:
Note: Kindly replace the form\_internalid to the Internal ID of the form you are using or the Internal ID of a different custom form if you want to preview print template.

function suitelet\_print(request, response) {‌
 var ifid = request.getParameter('custparam\_recid');
 var file = nlapiPrintRecord('TRANSACTION', ifid, 'PDF', {‌
 formnumber: form\_internalid
 });
 //this will allow you to define the template that will be used to print the invoice
 response.setContentType('PDF', 'Print Invoice Record', 'INLINE');
 response.write(file.getValue());
}
3. Script Type: Select Suitelet

4. Scripts subtab:

 

Function: Enter suitelet\_print
5. Click Save

6. Click Deploy Script

7. On the Script Deployment record, enter the following values:

 

Title: Enter Print Invoice Record - Suitelet
8. Click Save
Note: Take note of the Suitelet's Script internal Id and Script Deployment

 

2. Create a Client Script that will hold the function for the button:

1. Navigate to Customization > Scripting > Scripts > New

2. Create script file, with the following lines of code:
Note: Replace the ACCOUNTID as your Account ID, Suitelet\_id as the Suitelet Script record's Internal ID, Suitelet\_Dep\_id as the Suitelet Script record's Deployment ID. Both the Internal ID and the Deployment ID are also visible in the URL section of the Script Deployment record.

function testPrint() {‌
 var suiteletURL = 'https://ACCOUNTID.app.netsuite.com' +
 nlapiResolveURL('SUITELET', Suitelet\_id, Suitelet\_Dep\_id) +
 '&custparam\_recid=' + nlapiGetRecordId();
 //na1 can be changed depending on the data center/url of the user
 //scriptid and deploymentid will depend on the Suitelet that will be created below
 window.open(suiteletURL);
}
3. Script Type: Select Client Script

4. Name: Enter Print Invoice - CS

5. ID: Enter \_print\_invoice\_cs

6. Click Save
Note: Take note of the Client Script's internal script id, for me it was 'customscript\_print\_invoice\_cs'. This will be utilizing the value of the ID field on step 2.4 with the prefix customscript.

 

3. Create a User Event Script that will show a custom Print Button and call the Suitelet to print the Invoice record:

1. Navigate to Customization > Scripting > Scripts > New

2. Create script file, with the following lines of code:
Note: Replace the clientscript\_id as the ID of the Client Script as seen in step 2.4.

function beforeLoad(type, form, request) {‌
 form.setScript('clientscript\_id');
 form.addButton('custpage\_Print\_btn', 'Print Invoice', 'testPrint()');
}
3. Script Type: Select User Event Script

4. Name: Enter Print Invoice - UE

5. ID: Enter \_print\_invoice

6. Scripts subtab:

 

Before Load Function: Enter beforeLoad
7. Click Save

8. Click Deploy Script

9. On the Script Deployment record, enter the following values:

 

Applies To: Enter Invoice
10. Click Save

 

Once the setup is done, a custom "Print Invoice" button will appear on the Invoice record on view mode. Upon clicking the button, it will redirect you to a Suitelet that shows a preview of the Printable Invoice record that uses your desired Template.
Note: Defining the Internal ID of the formnumber for nlapiPrintRecord() will allow you to use a different Template when printing the Invoice record. By defining this value, the script will use the selected "Print Template" on the Custom Form.
이 송장 인쇄 지침을 사용하여 구매 주문서를 인쇄하려고 합니다. 수틀릿, 클라이언트 스크립트 및 사용자 이벤트 스크립트에 대한 완전한 스크립트를 작성할 수 있나요? 다른 사용자 지정 양식의 다른 템플릿을 사용하여 송장 레코드를 인쇄하는 수틀릿 스크립트를 생성합니다.1. 사용자 지정 > 스크립팅 > 스크립트 > 새로 만들기로 이동합니다.2. 다음 코드 줄을 사용하여 스크립트 파일을 생성합니다:참고: 인쇄 템플릿을 미리 보려면 form\_internalid를 사용 중인 양식의 내부 ID 또는 다른 사용자 지정 양식의 내부 ID로 바꾸세요.함수 suitelet\_print(요청, 응답) { var ifid = request.getParameter('custparam\_recid'); var file = nlapiPrintRecord('TRANSACTION', ifid, 'PDF', { 폼번호: 폼\_내부ID }); //송장 인쇄에 사용될 템플릿을 정의할 수 있습니다. response.setContentType('PDF', '인보이스 레코드 인쇄', 'INLINE'); response.write(file.getValue());}3. 스크립트 유형: 수틀릿 선택4. 스크립트 하위 탭을 선택합니다: 함수: 수틀릿\_인쇄 입력5. 저장을 클릭합니다.6. 스크립트 배포를 클릭합니다.7. 스크립트 배포 레코드에 다음 값을 입력합니다: 제목: 인보이스 레코드 인쇄 - 수틀릿 입력8. 저장을 클릭합니다.참고: Suitelet의 스크립트 내부 ID 및 스크립트 배포를 기록해 두세요. 2. 버튼의 기능을 담을 클라이언트 스크립트를 생성합니다:1. 사용자 지정 > 스크립팅 > 스크립트 > 새로 만들기로 이동합니다.2. 다음 코드 줄로 스크립트 파일을 생성합니다:참고: ACCOUNTID를 계정 ID로, Suitelet\_id를 수틀릿 스크립트 레코드의 내부 ID로, Suitelet\_Dep\_id를 수틀릿 스크립트 레코드의 배포 ID로 바꾸세요. 내부 ID와 배포 ID는 모두 스크립트 배포 레코드의 URL 섹션에서도 볼 수 있습니다.함수 testPrint() { var suiteletURL = 'https://ACCOUNTID.app.netsuite.com' + nlapiResolveURL('SUITELET', Suitelet\_id, Suitelet\_Dep\_id) +. '&custparam\_recid=' + nlapiGetRecordId(); //na1은 사용자의 데이터 센터/URL에 따라 변경될 수 있습니다. //스크립트ID와 배포ID는 아래에 생성될 Suitelet에 따라 달라집니다. window.open(suiteletURL);}3. 스크립트 유형: 클라이언트 스크립트 선택4. 이름: 송장 인쇄 - CS 입력5. ID: 입력 \_인쇄\_인보이스\_cs6. 저장 클릭참고: 클라이언트 스크립트의 내부 스크립트 ID를 기록해 두세요. 제 경우에는 'customscript\_print\_invoice\_cs'였습니다. 이는 2.4단계의 ID 필드 값에 접두사 customscript가 붙은 값을 활용합니다. 3. 사용자 지정 인쇄 버튼을 표시하는 사용자 이벤트 스크립트를 생성하고 수틀릿을 호출하여 인보이스 레코드를 인쇄합니다:1. 사용자 지정 > 스크립팅 > 스크립트 > 새로 만들기로 이동합니다.2. 다음 코드 줄을 사용하여 스크립트 파일을 생성합니다:참고: 2.4단계에서와 같이 clientscript\_id를 클라이언트 스크립트의 ID로 바꿉니다.함수 beforeLoad(type, form, request) { form.setScript('clientscript\_id'); form.addButton('custpage\_Print\_btn', '인보이스 인쇄', 'testPrint()');}3. 스크립트 유형: 사용자 이벤트 스크립트 선택4. Name: 송장 인쇄 입력 - UE5. ID: 입력 \_인보이스\_인보이스6. 스크립트 하위 탭: 로드 전 함수: 비포로드 입력7. 저장을 클릭합니다.8. 스크립트 배포를 클릭합니다.9. 스크립트 배포 레코드에 다음 값을 입력합니다: 적용 대상: 인보이스 입력10. 저장을 클릭합니다. 설정이 완료되면 보기 모드의 송장 레코드에 사용자 지정 "송장 인쇄" 버튼이 나타납니다. 버튼을 클릭하면 원하는 템플릿을 사용하는 인쇄 가능한 인보이스 레코드의 미리 보기를 보여주는 수틀릿으로 리디렉션됩니다.참고: nlapiPrintRecord()에 양식 번호의 내부 ID를 정의하면 인보이스 레코드를 인쇄할 때 다른 템플릿을 사용할 수 있습니다. 이 값을 정의하면 스크립트에서 사용자 지정 양식에서 선택한 "인쇄 템플릿"을 사용합니다.