diff options
| author | stephanchrst <stephanchrst@gmail.com> | 2023-02-23 10:45:13 +0700 |
|---|---|---|
| committer | stephanchrst <stephanchrst@gmail.com> | 2023-02-23 10:45:13 +0700 |
| commit | eb805076e595f1c757c29357c3e581c89d492138 (patch) | |
| tree | 10ba613372eb7469342e1d8d34561ca6dd885b8c | |
| parent | b94e4ff577c023d0ce1717c01c6080efc988acb7 (diff) | |
| parent | 5c9214c1c846e61c5356e1b19341b070c2303198 (diff) | |
Merge branch 'staging' of bitbucket.org:altafixco/indoteknik-addons into staging
| -rw-r--r-- | indoteknik_api/controllers/api_v1/partner.py | 57 | ||||
| -rw-r--r-- | indoteknik_api/controllers/api_v1/user.py | 32 | ||||
| -rw-r--r-- | indoteknik_api/models/res_users.py | 7 | ||||
| -rw-r--r-- | indoteknik_api/models/sale_order.py | 4 | ||||
| -rwxr-xr-x | indoteknik_custom/__manifest__.py | 2 | ||||
| -rwxr-xr-x | indoteknik_custom/models/__init__.py | 2 | ||||
| -rw-r--r-- | indoteknik_custom/models/res_partner.py | 1 | ||||
| -rw-r--r-- | indoteknik_custom/models/res_partner_company_type.py | 7 | ||||
| -rw-r--r-- | indoteknik_custom/models/user_company_request.py | 15 | ||||
| -rwxr-xr-x | indoteknik_custom/security/ir.model.access.csv | 4 | ||||
| -rw-r--r-- | indoteknik_custom/views/res_partner.xml | 3 | ||||
| -rw-r--r-- | indoteknik_custom/views/res_partner_company_type.xml | 43 | ||||
| -rw-r--r-- | indoteknik_custom/views/user_company_request.xml | 49 |
13 files changed, 218 insertions, 8 deletions
diff --git a/indoteknik_api/controllers/api_v1/partner.py b/indoteknik_api/controllers/api_v1/partner.py index 09b3caa0..8c7dbd57 100644 --- a/indoteknik_api/controllers/api_v1/partner.py +++ b/indoteknik_api/controllers/api_v1/partner.py @@ -81,3 +81,60 @@ class Partner(controller.Controller): 'id': partner.id, }) + @http.route(prefix + 'partner/<id>', auth='public', methods=['PUT', 'OPTIONS'], csrf=False) + def write_partner_by_id(self, **kw): + if not self.authenticate(): + return self.response(code=401, description='Unauthorized') + + params = self.get_request_params(kw, { + 'id': ['required', 'number'], + 'name': [], + 'company_type_id': ['number'], + 'industry_id': ['number'], + 'tax_name': ['alias:nama_wajib_pajak'], + 'npwp': [], + }) + + if not params['valid']: + return self.response(code=400, description=params) + + partner = request.env[self._name].search([('id', '=', params['value']['id'])], limit=1) + if not partner: + return self.response(code=404, description='User not found') + + partner.write(params['value']) + + return self.response({ + 'id': partner.id + }) + + @http.route(prefix + 'partner/industry', auth='public', methods=['GET', 'OPTIONS']) + def get_partner_industry(self): + if not self.authenticate(): + return self.response(code=401, description='Unauthorized') + + partner_industry = request.env['res.partner.industry'].search([]) + data = [] + for industry in partner_industry: + data.append({ + 'id': industry.id, + 'name': industry.name + }) + + return self.response(data) + + @http.route(prefix + 'partner/company_type', auth='public', methods=['GET', 'OPTIONS']) + def get_partner_company_type(self): + if not self.authenticate(): + return self.response(code=401, description='Unauthorized') + + partner_company_type = request.env['res.partner.company_type'].search([]) + data = [] + for company_type in partner_company_type: + data.append({ + 'id': company_type.id, + 'name': company_type.name + }) + + return self.response(data) + diff --git a/indoteknik_api/controllers/api_v1/user.py b/indoteknik_api/controllers/api_v1/user.py index 17bc931e..800f6bf1 100644 --- a/indoteknik_api/controllers/api_v1/user.py +++ b/indoteknik_api/controllers/api_v1/user.py @@ -3,6 +3,7 @@ from odoo import http from odoo.http import request from odoo.tools.config import config import random, string +from difflib import SequenceMatcher class User(controller.Controller): @@ -62,20 +63,43 @@ class User(controller.Controller): return self.response(code=400, description='email, name and password is required') user = self.get_user_by_email(email) - if user: return self.response({ 'register': False, 'reason': 'EMAIL_USED' }) - - user = request.env['res.users'].create({ + + user_data = { 'name': name, 'login': email, 'password': password, 'active': False, 'sel_groups_1_9_10': 9 - }) + } + + user = request.env['res.users'].create(user_data) + + company = kw.get('company', False) + if company: + parameter = [ + ('company_type', '=', 'company'), + ('name', 'ilike', company) + ] + match_company = request.env['res.partner'].search(parameter, limit=1) + match_ratio = 0 + if match_company: + match_ratio = SequenceMatcher(None, match_company.name, company).ratio() + if match_ratio > 0.7: + request.env['user.company.request'].create({ + 'user_id': user.partner_id.id, + 'user_company_id': match_company.id, + 'user_input': company + }) + else: + new_company = request.env['res.partner'].create({ + 'name': company + }) + user.parent_id = new_company.id return self.response({'register': True}) diff --git a/indoteknik_api/models/res_users.py b/indoteknik_api/models/res_users.py index 99a3838d..5032f3af 100644 --- a/indoteknik_api/models/res_users.py +++ b/indoteknik_api/models/res_users.py @@ -7,6 +7,7 @@ class ResUsers(models.Model): def api_single_response(self, res_user, with_detail=''): data = { 'id': res_user.id, + 'parent_id': res_user.parent_id.id or False, 'partner_id': res_user.partner_id.id, 'name': res_user.name, 'email': res_user.login, @@ -32,7 +33,11 @@ class ResUsers(models.Model): 'city': None, 'district': None, 'sub_district': None, - 'zip': user.zip or '' + 'zip': user.zip or '', + 'company_type_id': user.company_type_id.id or None, + 'industry_id': user.industry_id.id or None, + 'tax_name': user.nama_wajib_pajak or '', + 'npwp': user.npwp or '', } if user.kota_id: diff --git a/indoteknik_api/models/sale_order.py b/indoteknik_api/models/sale_order.py index 66ef27fa..ca6baff0 100644 --- a/indoteknik_api/models/sale_order.py +++ b/indoteknik_api/models/sale_order.py @@ -33,9 +33,9 @@ class SaleOrder(models.Model): picking_count['assigned'] += 1 if picking.state == 'done': picking_count['done'] += 1 - if picking_count['assigned'] > 0: + if picking_count['done'] > 0: data['status'] = 'shipping' - if picking_count['done'] > 0: + if picking_count['assigned'] > 0: data['status'] = 'partial_shipping' if sale_order.state == 'done': data['status'] = 'done' diff --git a/indoteknik_custom/__manifest__.py b/indoteknik_custom/__manifest__.py index 243b3028..449fd09c 100755 --- a/indoteknik_custom/__manifest__.py +++ b/indoteknik_custom/__manifest__.py @@ -16,6 +16,7 @@ 'views/delivery_order.xml', 'views/product_pricelist.xml', 'views/res_groups.xml', + 'views/res_partner_company_type.xml', 'views/res_partner.xml', 'views/product_pricelist_item.xml', 'views/product_public_category.xml', @@ -25,6 +26,7 @@ 'views/sale_monitoring.xml', 'views/sale_monitoring_detail.xml', 'views/user_activity_log.xml', + 'views/user_company_request.xml', 'views/vit_kelurahan.xml', 'views/vit_kecamatan.xml', 'views/vit_kota.xml', diff --git a/indoteknik_custom/models/__init__.py b/indoteknik_custom/models/__init__.py index 62a024e3..ebbf2e09 100755 --- a/indoteknik_custom/models/__init__.py +++ b/indoteknik_custom/models/__init__.py @@ -19,6 +19,7 @@ from . import purchase_order_line from . import purchase_order from . import purchase_outstanding from . import purchase_pricelist +from . import res_partner_company_type from . import res_partner from . import res_users from . import sale_monitoring_detail @@ -32,6 +33,7 @@ from . import stock_picking_type from . import stock_picking from . import stock_vendor from . import user_activity_log +from . import user_company_request from . import users from . import website_brand_homepage from . import website_categories_homepage diff --git a/indoteknik_custom/models/res_partner.py b/indoteknik_custom/models/res_partner.py index 403245fb..1cdf7c72 100644 --- a/indoteknik_custom/models/res_partner.py +++ b/indoteknik_custom/models/res_partner.py @@ -5,3 +5,4 @@ class ResPartner(models.Model): _inherit = 'res.partner' reference_number = fields.Char(string="Reference Number") + company_type_id = fields.Many2one('res.partner.company_type', string='Company Type') diff --git a/indoteknik_custom/models/res_partner_company_type.py b/indoteknik_custom/models/res_partner_company_type.py new file mode 100644 index 00000000..2bd356a1 --- /dev/null +++ b/indoteknik_custom/models/res_partner_company_type.py @@ -0,0 +1,7 @@ +from odoo import models, fields + + +class ResPartnerCompanyType(models.Model): + _name = 'res.partner.company_type' + + name = fields.Char('Name')
\ No newline at end of file diff --git a/indoteknik_custom/models/user_company_request.py b/indoteknik_custom/models/user_company_request.py new file mode 100644 index 00000000..c69b789c --- /dev/null +++ b/indoteknik_custom/models/user_company_request.py @@ -0,0 +1,15 @@ +from odoo import models, fields + + +class UserCompanyRequest(models.Model): + _name = 'user.company.request' + _rec_name = 'user_id' + + user_id = fields.Many2one('res.partner', string='User') + user_company_id = fields.Many2one('res.partner', string='Company') + user_input = fields.Char(string='User Input') + is_approve = fields.Selection([ + ('approved', 'Approve'), + ('rejected', 'Reject'), + ], string='Approval') +
\ 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 977f3a1b..d5142381 100755 --- a/indoteknik_custom/security/ir.model.access.csv +++ b/indoteknik_custom/security/ir.model.access.csv @@ -33,4 +33,6 @@ access_midtrans_recurring,access.midtrans.recurring,model_midtrans_recurring,,1, access_midtrans_account,access.midtrans.account,model_midtrans_account,,1,1,1,1 access_ip_lookup,access.ip.lookup,model_ip_lookup,,1,1,1,1 access_ip_lookup_line,access.ip.lookup.line,model_ip_lookup_line,,1,1,1,1 -access_wati_notification,access.wati.notification,model_wati_notification,,1,1,1,1
\ No newline at end of file +access_wati_notification,access.wati.notification,model_wati_notification,,1,1,1,1 +access_user_company_request,access.user.company.request,model_user_company_request,,1,1,1,1 +access_res_partner_company_type,access.res.partner.company_type,model_res_partner_company_type,,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 673718c4..47f41ab2 100644 --- a/indoteknik_custom/views/res_partner.xml +++ b/indoteknik_custom/views/res_partner.xml @@ -9,6 +9,9 @@ <field name="vat" position="after"> <field name="reference_number"/> </field> + <field name="industry_id" position="after"> + <field name="company_type_id"/> + </field> </field> </record> </data> diff --git a/indoteknik_custom/views/res_partner_company_type.xml b/indoteknik_custom/views/res_partner_company_type.xml new file mode 100644 index 00000000..ed21c1c9 --- /dev/null +++ b/indoteknik_custom/views/res_partner_company_type.xml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<odoo> + <record id="res_partner_company_type_tree" model="ir.ui.view"> + <field name="name">res.partner.company_type.tree</field> + <field name="model">res.partner.company_type</field> + <field name="arch" type="xml"> + <tree> + <field name="name"/> + </tree> + </field> + </record> + + <record id="res_partner_company_type_form" model="ir.ui.view"> + <field name="name">res.partner.company_type.form</field> + <field name="model">res.partner.company_type</field> + <field name="arch" type="xml"> + <form> + <sheet> + <group> + <group> + <field name="name"/> + </group> + </group> + </sheet> + </form> + </field> + </record> + + <record id="action_res_partner_company_type" model="ir.actions.act_window"> + <field name="name">Company Type</field> + <field name="type">ir.actions.act_window</field> + <field name="res_model">res.partner.company_type</field> + <field name="view_mode">tree,form</field> + </record> + + <menuitem + id="menu_res_partner_company_type" + name="Company Type" + parent="contacts.res_partner_menu_config" + sequence="2" + action="action_res_partner_company_type" + /> +</odoo>
\ No newline at end of file diff --git a/indoteknik_custom/views/user_company_request.xml b/indoteknik_custom/views/user_company_request.xml new file mode 100644 index 00000000..0b787683 --- /dev/null +++ b/indoteknik_custom/views/user_company_request.xml @@ -0,0 +1,49 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<odoo> + <record id="user_company_request_tree" model="ir.ui.view"> + <field name="name">user.company.request.tree</field> + <field name="model">user.company.request</field> + <field name="arch" type="xml"> + <tree create="0"> + <field name="user_id"/> + <field name="user_company_id"/> + <field name="user_input"/> + <field name="is_approve"/> + </tree> + </field> + </record> + + <record id="user_company_request_form" model="ir.ui.view"> + <field name="name">user.company.request.form</field> + <field name="model">user.company.request</field> + <field name="arch" type="xml"> + <form create="0"> + <sheet> + <group> + <group> + <field name="user_id" readonly="1"/> + <field name="user_company_id" readonly="1"/> + <field name="user_input" readonly="1"/> + <field name="is_approve"/> + </group> + </group> + </sheet> + </form> + </field> + </record> + + <record id="action_user_company_request" model="ir.actions.act_window"> + <field name="name">User Company Request</field> + <field name="type">ir.actions.act_window</field> + <field name="res_model">user.company.request</field> + <field name="view_mode">tree,form</field> + </record> + + <menuitem + id="menu_user_company_request" + name="User Company Request" + parent="contacts.menu_contacts" + sequence="3" + action="action_user_company_request" + /> +</odoo>
\ No newline at end of file |
