first push message

This commit is contained in:
2026-07-01 14:41:49 +07:00
parent 6667dec2bf
commit 58b5f46cc4
2951 changed files with 316619 additions and 0 deletions
+68
View File
@@ -0,0 +1,68 @@
# -*- coding: utf-8 -*-
from odoo import models, fields, api
class AddressAddress(models.Model):
_name = 'address.address'
# loc_code = fields.Char()
_rec_name = "location_name"
_description = "Address_Add"
location_name = fields.Char(string='ឈ្មោះទីតាំង', required=True)
parent_location = fields.Many2one('address.address', string='ទីកន្លែងមេ')
children_ids = fields.One2many('address.address', 'parent_location', 'Children', copy=True)
loc_code = fields.Selection([('1', 'រាជធានី/ខេត្ត'),
('2', 'ស្រុក/ខ័ណ្ឌ/ក្រុង'),
('3', 'ឃុំ/សង្កាត់'),
('4', 'ភូមិ')], string='ជា')
# -------------------------------------------------------------------------
# Helper Methods for Portal
# -------------------------------------------------------------------------
@api.model
def get_locations_by_level(self, level_code, parent_id=None):
"""
Get locations filtered by level and optional parent
@param level_code: '1', '2', '3', or '4'
@param parent_id: ID of parent location (for levels 2-4)
@return: recordset of address.address
"""
domain = [('loc_code', '=', level_code)]
if parent_id and level_code != '1':
domain.append(('parent_location', '=', parent_id))
return self.sudo().search(domain, order='location_name')
@api.model
def get_location_path(self, location_id):
"""
Get full path string for a location
@return: "Province > District > Commune > Village"
"""
location = self.browse(location_id)
if not location.exists():
return ''
path = []
current = location
while current:
path.insert(0, current.location_name)
current = current.parent_location
return ' > '.join(path)
@api.model
def get_cascading_options(self, parent_id=None):
"""
Get all child options for cascading dropdowns
Useful for pre-loading in form context
@return: dict of {loc_code: [{id, name}]}
"""
result = {}
for code in ['2', '3', '4']: # District, Commune, Village
domain = [('loc_code', '=', code)]
if parent_id:
# Get children of this parent at any level
domain.append(('parent_location', '=', parent_id))
items = self.sudo().search(domain, order='location_name')
result[code] = [{'id': i.id, 'name': i.location_name} for i in items]
return result