TIP: You can type at any time to perform a new search.
Thai Localization - Government Purchase Request
l10n_th_gov_purchase_request · OCA/l10n-thailand
- Repository
- OCA/l10n-thailand · module folder · Try on Runboat
- Module version
- 1.0.0
- Category
- Localization / Purchase
- Folder size
- 0.12 MB
- License
- AGPL-3
- Application
- No
- Auto-installable
- No
- Website
- https://github.com/OCA/l10n-thailand
- Last tracking update
- 2026-08-07 08:43:05
- Authors
- Odoo Community Association (OCA), Ecosoft
- Maintainers
- Odoo Community Association (OCA), Ecosoft
- Committers
- Saran440, OCA-git-bot, oca-ci, ROBBYHOOD9
- Odoo dependencies
- Python dependencies
- None
- System dependencies
- None
- Required by
- None
- Description
This module add following features to Purchase Request document, aimed to follow Thai Government procurement regulation. 1. Add following data to Purchase Request 1.1 Procurement Type (ประเภท) - ซื้อ/จ้าง/เช่า - จ้างที่ปรึกษา - จ้างออกแบบและควบคุมงานก่อสร้าง 1.2 Purchase Type (ระเบียบ) - จัดซื้อจัดจ้างผ่านพัสดุ - วงเงินเล็กน้อย - 79 วรรคสอง - ว.119 1.3 Procurement Method (วิธีการ) - เฉพาะเจาะจง - E-bidding - คัดเลือก - ประกาศเชิญชวนทั่วไป 2. Use substate to add an extra step, to verify document before approved The states of normal purchase request is, - Draft \> To Approve \> Approved Now changed to - Draft \> To Approve (To Verify) \> To Approve (Verified) \> Approved 3. Add/edit following user fields to keep tracks of who is doing what - Prepared By (create_uid) - Requested By (requested_by) - Purchase Representative (assigned_to) - Verified By (verified_by) - Approved By (approved_by) 4. Add new Committee tab for both Procurement (คณะกรรมการจัดซื้อจัดจ้าง) and Work Acceptance (คณะกรรมการตรวจรับ) 5. Check exception logics when sent to approve The exception logic are based on Thai Government procurement regulation year 2560, in summary, - จ้างที่ปรึกษา ต้องมีกรรมการจัดซื้อจัดจ้างอย่างน้อย 5 คน และกรรมการตรวจรับอย่างน้อย 5 คน - จ้างออกแบบและควบคุมงานก่อสร้าง ต้องมีกรรมการจัดซื้อจัดจ้างอย่างน้อย 3 คน และกรรมการตรวจรับอย่างน้อย 3 คน - ระเบียบ วงเงินเล็กน้อย ไม่เกิน 100,000 บาท และต้องมีกรรมการตรวจรับอย่างน้อย 1 คน - ระเบียบ 79 วรรคสอง ไม่เกิน 500,000 บาท - ระเบียบ ว.119 ไม่เกิน 10,000 บาท และต้องมีกรรมการตรวจรับอย่างน้อย 1 คน - ซื้อ/จ้าง/เช่า ไม่เกิน 500,000 บาท ต้องมีกรรมการตรวจรับอย่างน้อย 3 คน - ซื้อ/จ้าง/เช่า เกิน 500,000 บาท ต้องมีกรรมการจัดซื้อจัดจ้างอย่างน้อย 3 คน และกรรมการตรวจรับอย่างน้อย 3 คน
Code Analysis ⓘ
Views touched (10)
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
procurement_method_view_form |
procurement.method.view.form | procurement.method | form | New |
procurement_method_view_list |
procurement.method.view.list | procurement.method | list | New |
procurement_type_view_form |
procurement.type.view.form | procurement.type | form | New |
procurement_type_view_list |
procurement.type.view.list | procurement.type | list | New |
purchase_type_view_form |
purchase.type.view.form | purchase.type | form | New |
purchase_type_view_list |
purchase.type.view.list | purchase.type | list | New |
view_purchase_request_form |
purchase.request.form | purchase.request | form | Inherits purchase_request.view_purchase_request_form |
view_purchase_request_form_substate |
view.purchase.request.form.substate | purchase.request | form | Inherits purchase_request_substate.view_purchase_request_form |
view_purchase_request_search |
purchase.request.list.select | purchase.request | list | Inherits purchase_request.view_purchase_request_search |
view_purchase_request_tree |
purchase.request.tree | purchase.request | tree | Inherits purchase_request.view_purchase_request_tree |
HTTP endpoints (0)
No HTTP endpoints found for this module.
Models touched (7)
New fields (9)
-
approve_roleSelectionrequired=Trueselection=[('chairman', 'Chairman'), ('committee', 'Committee')]string='Role' -
committee_typeSelectionselection=[('procurement', 'Procurement Committee'), ('work_acceptance', 'Work Acceptance Committee')] -
department_idMany2onerelated='employee_id.department_id' -
emailCharrelated='employee_id.work_email' -
employee_idMany2one → hr.employeecomodel_name='hr.employee'index=Trueondelete='restrict'string='Employee' -
nameCharcompute='_compute_default_name'index=Truereadonly=Falserequired=Truestore=Truestring='Committee Name' -
noteText -
phoneCharrelated='employee_id.work_phone' -
request_idMany2one → purchase.requestcomodel_name='purchase.request'index=Trueondelete='cascade'string='Purchase Request'
No public methods.
New fields (4)
-
activeBooleandefault=True -
descriptionTexttranslate=True -
nameCharrequired=True -
sequenceIntegerdefault=10
No public methods.
New fields (5)
-
activeBooleandefault=True -
descriptionTexttranslate=True -
nameCharrequired=True -
product_idMany2one → product.productcomodel_name='product.product'help='Default product for purchase request line' -
sequenceIntegerdefault=10
No public methods.
New fields (14)
-
approved_byMany2one → res.userscomodel_name='res.users'copy=Falseindex=Truetracking=True -
assigned_toMany2onecopy=Falsestring='Purchase Representative' -
date_approvedDatecopy=Falsestring='Approved Date' -
date_verifiedDatecopy=Falsestring='Verified Date' -
expense_reasonTextstring='Reason' -
procurement_committee_idsOne2many → procurement.committeecomodel_name='procurement.committee'copy=Truedomain=[('committee_type', '=', 'procurement')]inverse_name='request_id'string='Procurement Committees' -
procurement_method_idMany2one → procurement.methodcomodel_name='procurement.method'index=Trueondelete='restrict'string='Procurement Method' -
procurement_method_idsMany2manyrelated='purchase_type_id.procurement_method_ids' -
procurement_type_idMany2one → procurement.typecomodel_name='procurement.type'index=Trueondelete='restrict'string='Procurement Type' -
purchase_type_idMany2one → purchase.typecomodel_name='purchase.type'default=<expr>domain=<expr>index=Trueondelete='restrict'string='Purchase Type' -
substate_sequenceIntegerrelated='substate_id.sequence' -
to_createSelectionrelated='purchase_type_id.to_create' -
verified_byMany2one → res.userscomodel_name='res.users'copy=Falseindex=Truetracking=True -
work_acceptance_committee_idsOne2many → procurement.committeecomodel_name='procurement.committee'copy=Truedomain=[('committee_type', '=', 'work_acceptance')]inverse_name='request_id'string='Work Acceptance Committees'
-
action_to_substate(self) -
button_approved(self) -
button_draft(self)Allows the Procurement to reset documents after procurement approved by procurement only. -
button_rejected(self)Allows the Procurement to reject documents after procurement approved by procurement only. -
get_estimated_cost_currency(self, date=False)Get estimated cost with currency
New fields (1)
-
product_idMany2onecompute='_compute_default_product_id'readonly=Falsestore=True
No public methods.
New fields (0)
No new fields.
Public methods (1)-
default_get(self, fields)@api.modelDo not allow, if, - Some PRs is not approved - Some PRs' purchase type is not for Purchase Agreement
New fields (10)
-
activeBooleandefault=True -
codeChar -
descriptionTexttranslate=True -
is_defaultBooleanhelp='Default purchase type on the purchase request'string='Default' -
nameCharrequired=True -
procurement_method_idsMany2many → procurement.methodcomodel_name='procurement.method'help='This field will help to filter procurement method in each purchase type on the purchase request'required=Truestring='Allowed Procurement Method' -
sequenceIntegerdefault=10 -
to_createSelectionhelp='Create purchase agreement or expense when pr is approved'required=Trueselection=[('purchase_agreement', 'Purchase Agreement'), ('expense', 'Expense')] -
visible_on_expenseBooleanstring='Expense' -
visible_on_purchase_requestBooleanstring='Purchase Request'
No public methods.
Loading…
Loading…