summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorstephanchrst <stephanchrst@gmail.com>2023-02-23 10:45:13 +0700
committerstephanchrst <stephanchrst@gmail.com>2023-02-23 10:45:13 +0700
commiteb805076e595f1c757c29357c3e581c89d492138 (patch)
tree10ba613372eb7469342e1d8d34561ca6dd885b8c
parentb94e4ff577c023d0ce1717c01c6080efc988acb7 (diff)
parent5c9214c1c846e61c5356e1b19341b070c2303198 (diff)
Merge branch 'staging' of bitbucket.org:altafixco/indoteknik-addons into staging
-rw-r--r--indoteknik_api/controllers/api_v1/partner.py57
-rw-r--r--indoteknik_api/controllers/api_v1/user.py32
-rw-r--r--indoteknik_api/models/res_users.py7
-rw-r--r--indoteknik_api/models/sale_order.py4
-rwxr-xr-xindoteknik_custom/__manifest__.py2
-rwxr-xr-xindoteknik_custom/models/__init__.py2
-rw-r--r--indoteknik_custom/models/res_partner.py1
-rw-r--r--indoteknik_custom/models/res_partner_company_type.py7
-rw-r--r--indoteknik_custom/models/user_company_request.py15
-rwxr-xr-xindoteknik_custom/security/ir.model.access.csv4
-rw-r--r--indoteknik_custom/views/res_partner.xml3
-rw-r--r--indoteknik_custom/views/res_partner_company_type.xml43
-rw-r--r--indoteknik_custom/views/user_company_request.xml49
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