Case Study: Renting Items in NetSuite (by converting into Fixed Assets)
Context
To operate rental processes in NetSuite, SuiteApps support or integration with third-party programs is usually required. Depending on the complexity of the case, we can provide a solution through a workaround.
In our scenario, our client markets an Automatic Payment Terminal (APT) product and can either sell or rent it to a customer. If an item is rented and the contract ends, it later returns to the client´s warehouse and becomes available to be rented or sold again.
Each APT also has SIM cards that belong to our customer and are subject to a monthly fee, so in both cases we must track their location and the assigned customer.
Since there are 2 alternatives, the products should be bought as Inventory Items, so they don’t start depreciating in the warehouse right away. They can then be converted into Fixed Assets after being rented to a customer. In the future, the Asset can be disposed of or written off.
Both APTs and SIM cards are unique, having serial numbers that must be registered in the system. However, our client didn´t acquire the Advanced Inventory Module! Hence, we also must resort to an alternative solution to track the Items Serialization (This problem will be addressed in more detail in a future article!).
Research & Development
To get an idea of the problem we were facing, we searched the internet for suggestions and found a strong rental solution.
It suggests creating a dummy location named, for example, “Rented Location”. The author then proposes starting by transferring the inventory from the original location (e.g., main warehouse) to the Rental location as an initial step in the renting process.
We would then create a Sales Order (SO) on that “Rented Location” with the item assigned and generate an Item Fulfillment (IF) without ever setting it to “Shipped” Status (otherwise impacts Sales on Accounting and reduces the Inventory Available).
Payments are then issued by clicking on “Next Bill” in the SO which creates, for example, a monthly bill through a Billing Schedule or Memorized Transaction. To cancel the rental, simply “Close Order” and open another transfer order to send the item back to the starting point.
Other Inputs to consider:
- Assigning each location to a single customer (more likely for a B2B scenario). If we enable Advanced Item Location Configuration and disable Multi-Location Inventory, the number of Locations is unlimited;
- If bins are enabled, designate each bin as a customer within the dummy location.
Well, regarding the uncapped locations assumption, we were concerned it might impact system performance or even reveal some hidden constraint only at a later stage. About the bins, we face the same problem as for the serialization: there is no Advanced Inventory Module.
As for the transfer order possibility, it´s a good idea if we want to closely monitor the shipping and receiving of products on a larger scale. After discussing with our client, it was decided to skip this step as the rented volume does not justify the extra effort in the renting process (for now).
Therefore, we did not even need to include a virtual location.
To control the items flow, a Custom Record named “Serial Item List” was designed and is updated on fulfillment, including fields such as:
- Serial Nrº — represents the item’s uniqueness;
- State — identifies the item´s current situation (“On Hand”, “Sold” and “Rented”);
- Type — it can be “Asset” or “Inventory Item”;
- IMEA — the SIM card unique Nrº. This is the reason why we must keep track of the Sold Inventory Items.
To differentiate between a sale and a rental in the SO for the same item, we need to use a Service Item for the rental, such as “Rental — Item X”. To be able to trigger a fulfillment with the Service Item configure — Item Record >> Preferences >> Can Be Fulfilled/Received = Checked. The targeted Inventory/Rental Item must then be associated with the Service Item via customization.
Then, in the IF Record, we enter the respective Inventory Item´s unique Serial Nos. in a custom Subtab.
For this link, we created an Item Field Record as a checkbox applied to Service Items, called “Rental Service?”, that, if checked, displays another Item Field named “Rental Item” from which we can select the Inventory Item.
To source the field, use “List/record” under Type and “Item” on the field below. Then, on “Sourcing & Filtering” Subtab, in a new line add “Type — equal — Inventory Item”.
To make this second field visible and mandatory when the checkbox is ticked and hidden if unticked, a simple workflow was built with 1 State named “Rental Status” that triggers on “Before Record Load” Server side and “After Field Edit” Client side.
The final result in the Service Item Record in Create or Edit mode is then:
This allow us to identify the bounded Inventory Item in the IF and enter the corresponding Serial No. After that, we set the status to “Picked” or “Packed” to maintain the fulfillment open.
Upon saving the IF, a script will run and (potentially) convert the Items into Fixed Assets. We accomplish this operation by automating an Inventory Adjustment Reduction. When placing the same Fixed Asset account in the Inventory Adjustment and in a FAM Asset Type, a new Asset Proposal(s) will be spawned under Fixed Assets >> Transactions >> Asset Proposal, in proportion to the reduced inventory.
Once the Asset is created, the Custom Record updates or adds data accordingly.
In case the set Serial No. on IF is tied to an Asset (meaning it was previously rented and returned), there is no need to create an Inventory Adjustment.
Now how do we sell an Asset?
When fulfilling the APT to sell the product, the Inventory Item is also tagged (with a checkbox named “Rental Item”) so the script can activate and read the Serial No. entered and check the Custom Record for an Asset Match. If yes, the IF will redirect to Asset Disposal (Fixed Assets >> Transactions >> Asset Disposal).
The Business Architecture will then look like this:
Conclusion & Thoughts
There were many possible paths to implement this renting framework. We could have used a virtual location, or several, if our client wanted to keep track of items transition to customers.
It is important to convert items into fixed assets when possible, and control both separately to:
- be able to visualize Fixed Assets on the Balance Sheet;
- avoid incorrectly increasing the inventory valuation (if it is higher than 0 cost) and unbalancing the inventory reports;
- prevent decreasing inventory turnover;
- filter by owned and disposed assets with FAM.
Still, as explained earlier, we should only convert items into assets when they are going to be rented out.
Nevertheless, I did test converting them on Item Receipt after Purchase. Interestingly, found out that a single Asset on FAM can have several quantities associated (we thought each line had a unique asset). So, even for this case, we would need to perform some customizations.
We concluded that in addition to need a Rental Service Item to differentiate both activities, we had to be able to identify an existent Asset through his Serial No. to Sell/Dispose it.
The SIM Cards will never be sold as they belong to our client and are also not worth turning into Fixed Assets. At the moment, they are only being monitored on the Custom Record by Card No. (IMEA) which is linked to the Product, Customer and State.
If necessary, we are considering creating a specific Record for SIM cards, in case more information needs to be stored.
This project was excellent to better understand how business models can be structured with the ERP capabilities available. It was necessary to adapt against some lack of functionalities such as the Advanced Inventory Module, while addressing the client’s objectives.
We also had the opportunity to better understand the FAM bundle and the solutions it offers regarding Renting processes.