diff options
| author | Rafi Zadanly <zadanlyr@gmail.com> | 2024-04-26 14:14:16 +0700 |
|---|---|---|
| committer | Rafi Zadanly <zadanlyr@gmail.com> | 2024-04-26 14:14:16 +0700 |
| commit | b5a42eda62ae2b3536a072b9cb21a61e91a7b49a (patch) | |
| tree | ffa4386b0480b7b2c098680b0fbae7675ab213af | |
| parent | d026ce987698790c8424a1b88d7bfacf1508dad6 (diff) | |
Add res partner site feature
| -rw-r--r-- | indoteknik_api/models/__init__.py | 1 | ||||
| -rw-r--r-- | indoteknik_api/models/res_partner.py | 14 | ||||
| -rw-r--r-- | indoteknik_api/models/sale_order.py | 1 | ||||
| -rwxr-xr-x | indoteknik_custom/__manifest__.py | 1 | ||||
| -rwxr-xr-x | indoteknik_custom/models/__init__.py | 1 | ||||
| -rw-r--r-- | indoteknik_custom/models/res_partner.py | 27 | ||||
| -rw-r--r-- | indoteknik_custom/models/res_partner_site.py | 20 | ||||
| -rwxr-xr-x | indoteknik_custom/security/ir.model.access.csv | 3 | ||||
| -rw-r--r-- | indoteknik_custom/views/res_partner.xml | 5 | ||||
| -rw-r--r-- | indoteknik_custom/views/res_partner_site.xml | 28 |
10 files changed, 84 insertions, 17 deletions
diff --git a/indoteknik_api/models/__init__.py b/indoteknik_api/models/__init__.py index 8c85938c..892d2657 100644 --- a/indoteknik_api/models/__init__.py +++ b/indoteknik_api/models/__init__.py @@ -9,4 +9,3 @@ from . import sale_order from . import x_manufactures from . import website_content from . import coupon_program -from . import res_partner diff --git a/indoteknik_api/models/res_partner.py b/indoteknik_api/models/res_partner.py deleted file mode 100644 index 57200ac1..00000000 --- a/indoteknik_api/models/res_partner.py +++ /dev/null @@ -1,14 +0,0 @@ -from odoo import models - - -class ResPartner(models.Model): - _inherit = 'res.partner' - - def get_main_parent(self): - partner = self - - while partner.parent_id: - partner = partner.parent_id - - return partner -
\ No newline at end of file diff --git a/indoteknik_api/models/sale_order.py b/indoteknik_api/models/sale_order.py index 969fd79f..c98834bf 100644 --- a/indoteknik_api/models/sale_order.py +++ b/indoteknik_api/models/sale_order.py @@ -8,7 +8,6 @@ class SaleOrder(models.Model): APPROVAL_STEP = { 'company': 1, 'cust_manager': 2, - 'cust_procurement': 3, 'cust_director': 3 } diff --git a/indoteknik_custom/__manifest__.py b/indoteknik_custom/__manifest__.py index 1bfaa722..f1f3f9b6 100755 --- a/indoteknik_custom/__manifest__.py +++ b/indoteknik_custom/__manifest__.py @@ -121,6 +121,7 @@ 'views/cust_commision.xml', 'views/stock_quant.xml', 'views/purchasing_job_state.xml', + 'views/res_partner_site.xml', 'report/report.xml', 'report/report_banner_banner.xml', 'report/report_banner_banner2.xml', diff --git a/indoteknik_custom/models/__init__.py b/indoteknik_custom/models/__init__.py index 92a0f232..160d2af3 100755 --- a/indoteknik_custom/models/__init__.py +++ b/indoteknik_custom/models/__init__.py @@ -110,3 +110,4 @@ from . import cust_commision from . import report_stock_forecasted from . import web_logging from . import sales_order_fullfillment +from . import res_partner_site diff --git a/indoteknik_custom/models/res_partner.py b/indoteknik_custom/models/res_partner.py index ad6fd6ec..bc8e2b0d 100644 --- a/indoteknik_custom/models/res_partner.py +++ b/indoteknik_custom/models/res_partner.py @@ -31,6 +31,33 @@ class ResPartner(models.Model): ('director', 'Director'), ('procurement', 'Procurement'), ], string='Web Role') + site_id = fields.Many2one('res.partner.site', string='Site') + main_parent_id = fields.Many2one('res.partner', string='Main Parent', compute='_compute_main_parent_id') + + @api.onchange('site_id') + def _onchange_site_id(self): + for rec in self: + if not rec.site_id: continue + site = rec.site_id + + rec.street = site.street + rec.street2 = site.street2 + rec.city = site.city + rec.state_id = site.state_id + rec.country_id = site.country_id + rec.zip = site.zip + + def get_main_parent(self): + partner = self + + while partner.parent_id: + partner = partner.parent_id + + return partner + + def _compute_main_parent_id(self): + for partner in self: + partner.main_parent_id = partner.get_main_parent() def get_child_ids(self): partner = self.env['res.partner'].search([('id', '=', self.id)], limit=1) diff --git a/indoteknik_custom/models/res_partner_site.py b/indoteknik_custom/models/res_partner_site.py new file mode 100644 index 00000000..00850c97 --- /dev/null +++ b/indoteknik_custom/models/res_partner_site.py @@ -0,0 +1,20 @@ +from odoo import models, fields, api + +class ResPartnerSite(models.Model): + _name = 'res.partner.site' + + partner_ids = fields.One2many('res.partner', 'site_id', string='Partners') + partner_id = fields.Many2one('res.partner', string='Partner') + name = fields.Char(string='Name') + street = fields.Char(string='Street') + street2 = fields.Char(string='Street 2') + city = fields.Char(string='City') + state_id = fields.Many2one('res.country.state', string='State') + country_id = fields.Many2one('res.country', string='Country') + zip = fields.Char(string='Zip') + + @api.model + def create(self, vals): + rec = super(ResPartnerSite, self).create(vals) + rec.partner_id = rec.partner_id.get_main_parent() + return rec
\ No newline at end of file diff --git a/indoteknik_custom/security/ir.model.access.csv b/indoteknik_custom/security/ir.model.access.csv index 6d265748..f03e0118 100755 --- a/indoteknik_custom/security/ir.model.access.csv +++ b/indoteknik_custom/security/ir.model.access.csv @@ -109,4 +109,5 @@ access_report_logbook_sj_line,access.report.logbook.sj.line,model_report_logbook access_cust_commision,access.cust.commision,model_cust_commision,,1,1,1,1 access_report_stock_report_product_product_replenishment,access.report.stock.report_product_product_replenishment,model_report_stock_report_product_product_replenishment,,1,1,1,1 access_sales_order_fullfillment,access.sales.order.fullfillment,model_sales_order_fullfillment,,1,1,1,1 -access_purchasing_job_state,access.purchasing.job.state,model_purchasing_job_state,,1,1,1,1
\ No newline at end of file +access_purchasing_job_state,access.purchasing.job.state,model_purchasing_job_state,,1,1,1,1 +access_res_partner_site,access.res_partner_site,model_res_partner_site,,1,1,1,1
\ No newline at end of file diff --git a/indoteknik_custom/views/res_partner.xml b/indoteknik_custom/views/res_partner.xml index e7b8517a..f79b684e 100644 --- a/indoteknik_custom/views/res_partner.xml +++ b/indoteknik_custom/views/res_partner.xml @@ -31,6 +31,11 @@ <field name="use_only_ready_stock" attrs="{'invisible': [('parent_id', '!=', False), ('company_type', '!=', 'company')]}" /> <field name="web_role" attrs="{'invisible': ['|', ('parent_id', '=', False), ('company_type', '=', 'company')]}" /> </field> + <xpath expr="//field[@name='child_ids']/form//field[@name='name']" position="before"> + <field name="parent_id" invisible="1" /> + <field name="main_parent_id" invisible="1" /> + <field name="site_id" attrs="{'readonly': [('parent_id', '=', False)]}" domain="[('partner_id', '=', main_parent_id)]" context="{'default_partner_id': active_id}" /> + </xpath> </field> </record> </data> diff --git a/indoteknik_custom/views/res_partner_site.xml b/indoteknik_custom/views/res_partner_site.xml new file mode 100644 index 00000000..df4c8c4a --- /dev/null +++ b/indoteknik_custom/views/res_partner_site.xml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<odoo> + <data> + <record id="res_partner_site_form_view" model="ir.ui.view"> + <field name="name">Partner Site</field> + <field name="model">res.partner.site</field> + <field name="arch" type="xml"> + <form> + <group> + <group> + <field name="name" required="1" /> + <field name="partner_id" invisible="1" /> + <label for="street" string="Address" /> + <div class="o_address_format" name="div_address"> + <field name="street" placeholder="Street..." class="o_address_street"/> + <field name="street2" placeholder="Street 2..." class="o_address_street"/> + <field name="city" placeholder="City" class="o_address_city"/> + <field name="state_id" class="o_address_state" placeholder="State" options="{'no_open': True, 'no_quick_create': True}" context="{'country_id': country_id, 'default_country_id': country_id, 'zip': zip}"/> + <field name="zip" placeholder="ZIP" class="o_address_zip"/> + <field name="country_id" placeholder="Country" class="o_address_country" options='{"no_open": True, "no_create": True}'/> + </div> + </group> + </group> + </form> + </field> + </record> + </data> +</odoo>
\ No newline at end of file |
