This post will show you how to generate running number using K2 SmartForm. Running Number is a common feature in transaction forms, such as Invoice Number, Purchase Order Number, Quotation Number, etc. It is always incremented by 1 for each saved entry.
In this post, I will show you an example how to generate request number for Room Booking Request. Room Booking Request can be used for requesting a room for a purpose such as meeting, interviewing, and so on.
Let’s create our Room Booking Request SmartObject, give it name as Booking:
Request Number will contain running number which we’ll develop later in this post.
Let’s create Auto Number SmartObject:
Current Number will contain a number which is always increment by 1 for each new booking request.
Then, using SmartObject tester, insert a default row to Auto Number SmartObject:
Give the value 1 to Current Number and RO for Request Type, then click Execute to create a new row.
Now, we will generate a view for booking request data entry, right click on Booking SmartObject, then click Generate Views, click Item and give it name as Booking Item:
Click OK to generate the view.
Make a view layout to be neat looking as follow:
Delete Create, Delete, Load buttons as we don’t need them, change Save button text to Save as Draft. Then add two text boxes to the view, give them name Current Number Text Box and Increment Number Text Box, we can place them anywhere since we will make them as invisible to users. In my example below, the two new text boxes is placed next to Save as Draft button.
Switch to Rules tab and inspect when Save Button is clicked rule, K2 Designer has created a default behavior for Save:
Add a new action Execute SmartObject method before Execute the Save method.
In the newly added action: select Auto Number SmartObject, and select Load method.
Click configure option of the newly added action:
In Request Type input mapping type RO:
Click Next, then map Current Number property to Current Number Text Box:
Add a new action again of Execute SmartObject method after Execute the Save method, select Auto Number Smart Object and Save method:
Click configure option:
Map Increment Text Box to Current Number and type RO in Request Type:
Click Finish to close configuration window.
Add a new action again of Close browser window:
Click Finish to close Rules Wizard Configuration window.
Switch back to Layout tab, then select Increment Text Box, select Expression property, click Add to create a new expression. Drag Current Number Text Box to expression details area , drag Plus operator from Operators tab – Operators node, and type 1 after Plus operator. Click Validate to verify the expression.
If the expression validation passes, click Finish twice to return to view layout.
Select Request Number Text Box, then select Expression property, click Add to create a new expression. Give it name Running Number Format as expression name. Drag Concatenate function from Operators tab – Text node, and drag Pad Left function as follow:
Click Finish twice to return to view layout. Make the Current Number Text Box and Increment Number Text Box invisible by unchecking Visible check box property.
Click Finish again to save the view.
Now we can try to run the view. Click on Booking Item view at the tree node, you will see Runtime URL at right panel, click the Runtime URL, the browser will create a new window/tab:
Click Save as Draft to save entry and the view will be closed after saving.
To view the request data, switch to SmartObject Tester, select Booking SmartObject, right click and select Execute SmartObject, change Method to Execute to GetList and click Execute button:
Why my request number starts from 7 ? Because I had tried to create data before I wrote this blog post and I deleted them all. But if you follow steps in this article, your request number must be started from 1 (RO001).