Repository navigation
0. Introduction
This is a version of ERPNext V12, made by Selangor Human Resource Development Center (SHRDC) for Lembaga Getah Malaysia (LGM), in conjunction with SHRDC's training program for ERPNext.
This project was initiated in December 2023, and was closed on February 2024 as completed. This project was then re-opened in July 2026, to add a few additional features as requested by LGM. The project has since changed hands when it was re-opened, which is when this updated version of the Wiki is made.
Thus, most of the information here is based on what the new maintainer has been able to piece together, for archival and future reference purposes.
Project was completed and closed. The production repository was hosted on the previous maintainer's personal GitHub account, with the Docker image of a stable build also hosted by their Docker Hub account.
It appears a major overhaul happened between January - February, which created a comparably different version compared to the Docker image left behind. It had the inclusion of more Doctypes such as "Stages", which replaced the compounding and curing components inside the Technological Request Sheets. However, when the latest version of this was reviewed on GitHub, it was significantly incomplete, with many breaking issues. However, everyone who was involved in the project said it was working properly. Thus, it is strongly suspected that a properly working overhaul version was actually completed with local commits, but the commits were not pushed to the cloud repository, nor uploaded as a Docker image. Upon checking, the previous maintainer no longer has access to their local repository files, so it is reasonable to assume that the remaining local commits are lost to time.
LGM has been testing the system, but has not put it into production yet. LGM staff have also been trying to make NodeRed integrations into the server to allow for additional simple features or workarounds. LGM reached out to SHRDC to ask if it is possible to implement the following:
-
Work Order
- Insufficient material detection + material transfer page prompt
- In-progress/Completed statuses
- Automatic stock entry/issue for materials + product item based on reference number value
- Functionality to cancel work orders, and refund materials from unused job cards
- Move weighing functionality to job card
-
Job Cards
- Have weighing functionality from Work Order
- Splitting job cards based on ingredient type, not mixer numbers
- Material issue for consumed ingredients, and material transfer for unconsumed ingredients
-
Misc
- Relabeling of certain fields, mainly replacing 'mixer' -> 'mix', 'ingredient_weight' -> 'requested weight', 'weighed' -> 'actual_weight'
- Extra WIP warehouse for unused work order materials
- Removal of unnecessary "ingredient density" field for compounding ingredients
The production repository which was previously under the previous maintainer's account, has now been forked under SHRDC's msf4 account. The incomplete commits for the overhauled version have been archived with the tag archive/incomplete-overhaul, and the main branch has been rolled back to the last know stable version (the one in January, where the Docker image was based on), and the new features were built on top of this.
This modified version is created to have customised features tailored to LGM's rubber manufacturing workflow, created by forking ERPNext V12 and adding custom LGM Doctypes to it under the "projects" module. These custom Doctypes usually have "LGM" at the end of their names.
Among the most relevant ones include:
- Technological Request Sheets LGM (Substitute for Bill of Materials with no routing, as rubber manufacturing workflow is already predefined)
- Work Order LGM
- Job Card LGM
The Work Order LGM and Job Card LGM Doctypes do not replace the regular ERPNext versions. These are entirely separate Doctypes.
While none of the functionality of the original Doctypes that come by default with ERPNext V12 have changed, additional custom fields have been added to original Doctypes, such as Stock Entry. They are used to keep track of which Work Order LGM they are associated with the check for duplicates, among other options. These fields can be found in the production repo's code, under erpnext/hooks.py, in the "fixtures" list. When backing up and importing data between different versions, this could cause a schema mismatch, and could cause unexpected behaviour with the data. Please check data after restores.
For developers, it is important to note that these changes are NOT done as a custom app - these are custom Doctypes directly added into ERPNext, which might cause differences during development compared to a custom app. In addition, a lot of advice found online for ERPNext V16 may not necessarily apply to ERPNext V12, so it is recommended to take advice with a grain of salt and test thoroughly before pushing to production.
- A Technological Request Sheet is created, alongside the other Doctypes necessary for submission (Ingredients, Factory, Mixer, Rheometer, etc.). The user fills in the weight of the compounding/curing ingredients for each mix, and fills in the mixing/curing process details where applicable.
- A Work Order LGM is created from the Technological Request Sheet, where most of the values are carried over. The user fills in the source warehouses for each ingredient for each mix, which will be used to create a material transfer stock entry of the ingredients from the selected source materials to the WIP warehouse, acting as a reservation for the ingredients.
- Multiple Job Card LGM copies (1 for compounding, 1 for curing) are created from the Work Order LGM. The user starts the timer in the top right corner to begin the shift, fills in the actual weight of each mix (or uses the NodeRed weighing function to do it), and completes the job by stopping the timer by pressing the same button at the end of the shift. The completed job card is then submitted. The ingredients for each job card are then consumed via Material Issue based on the actual weight, and leftover ingredients are sent to the unused warehouse.
- After all Job Card LGMs are completed, the parent Work Order LGM will also be completed, and reference product items (1 for each mix) will be created based on the Reference No set in the parent Technological Request Sheet and sent to the Finished Goods warehouse.
Note:
-
Work Orders can be cancelled, upon which unsubmitted job cards will have their reserved ingredients in the WIP warehouse released to the Unused WIP warehouse. In reality, both warehouses are part of the same warehouse (Bilik Menimbang in the real world), this separation only exists to keep track of which ingredients in the Bilik Menimbang are reserved and which ones aren't.
-
Job Cards can also be cancelled, but with more steps.
- Cancelling the submitted job card. This should give an error message showing which stock entry it is tied to.
- Click the stock entry in the error message, and cancel it first, reversing the stock entry transaction.
- Cancel the job card again, which should succeed this time.
- A replacement job card can be either created by selecting the "Create Job Card" button in the Work Order again, which only recreates the necessary job cards, or by clicking the "amend" button on the cancelled job card to resubmit a new job card.
Here are the pages