diff options
| author | Rafi Zadanly <zadanlyr@gmail.com> | 2024-03-06 10:40:10 +0700 |
|---|---|---|
| committer | Rafi Zadanly <zadanlyr@gmail.com> | 2024-03-06 10:40:10 +0700 |
| commit | d569804844ee77f9f08879dda8c3f1e292470813 (patch) | |
| tree | be8357933ccd751700cbecd00b92c30100b25e7f | |
| parent | f53312f3f2c78d50d838c249a8d0eb1ed1e5b7f2 (diff) | |
Add action web approve on sale order, approval_step on get so api, role aliases on login
| -rw-r--r-- | indoteknik_api/models/res_users.py | 16 | ||||
| -rw-r--r-- | indoteknik_api/models/sale_order.py | 7 | ||||
| -rwxr-xr-x | indoteknik_custom/models/sale_order.py | 15 | ||||
| -rwxr-xr-x | indoteknik_custom/views/sale_order.xml | 6 |
4 files changed, 38 insertions, 6 deletions
diff --git a/indoteknik_api/models/res_users.py b/indoteknik_api/models/res_users.py index eecab6ef..456e52d7 100644 --- a/indoteknik_api/models/res_users.py +++ b/indoteknik_api/models/res_users.py @@ -7,23 +7,29 @@ class ResUsers(models.Model): def api_single_response(self, res_user, with_detail=''): config = self.env['ir.config_parameter'] - partner = res_user.partner_id.get_main_parent() + partner = res_user.partner_id + main_partner = partner.get_main_parent() + + WEB_ROLE_ALIAS = { + 'manager': 2, + 'director': 3 + } data = { 'id': res_user.id, 'parent_id': res_user.parent_id.id or None, 'parent_name': res_user.parent_id.name or None, - 'partner_id': res_user.partner_id.id, + 'partner_id': partner.id, 'name': res_user.name, 'email': res_user.login, 'phone': res_user.phone or '', 'mobile': res_user.mobile or '', 'external': res_user.share, - 'company': partner.company_type == 'company', + 'company': main_partner.company_type == 'company', 'pricelist': res_user.property_product_pricelist.sudo().get_tier_name(), - 'web_role': partner.web_role or None, + 'web_role': WEB_ROLE_ALIAS[partner.web_role] if partner.web_role else None, 'feature': { - 'so_approval': partner.use_so_approval + 'so_approval': main_partner.use_so_approval } } diff --git a/indoteknik_api/models/sale_order.py b/indoteknik_api/models/sale_order.py index 85bf5015..1c0180ec 100644 --- a/indoteknik_api/models/sale_order.py +++ b/indoteknik_api/models/sale_order.py @@ -5,6 +5,12 @@ class SaleOrder(models.Model): _inherit = 'sale.order' def api_v1_single_response(self, sale_order, context=False): + APPROVAL_STEP = { + 'company': 1, + 'cust_manager': 2, + 'cust_director': 3, + } + data = { 'token': self.env['rest.api'].md5_salt(sale_order.id, 'sale.order'), 'id': sale_order.id, @@ -17,6 +23,7 @@ class SaleOrder(models.Model): 'purchase_order_file': True if sale_order.partner_purchase_order_file else False, 'invoice_count': sale_order.invoice_count, 'status': 'draft', + 'approval_step': APPROVAL_STEP[sale_order.web_approval] if sale_order.web_approval else 0, 'date_order': self.env['rest.api'].datetime_to_str(sale_order.date_order, '%d/%m/%Y %H:%M:%S'), 'pickings': [] } diff --git a/indoteknik_custom/models/sale_order.py b/indoteknik_custom/models/sale_order.py index 988f13c8..6fe1db3b 100755 --- a/indoteknik_custom/models/sale_order.py +++ b/indoteknik_custom/models/sale_order.py @@ -636,7 +636,20 @@ class SaleOrder(models.Model): line.discount = line.initial_discount line.initial_discount = False - + def action_web_approve(self): + if self.env.uid != self.partner_id.user_id.id: + raise UserError('You are not authorized to approve this order. Only %s can approve this order.' % self.partner_id.user_id.name) + + self.web_approval = 'company' + return { + 'type': 'ir.actions.client', + 'tag': 'display_notification', + 'params': { + 'title': 'Notification', + 'message': 'Berhasil approve web order', + 'next': {'type': 'ir.actions.act_window_close'}, + } + } diff --git a/indoteknik_custom/views/sale_order.xml b/indoteknik_custom/views/sale_order.xml index 8e05c2e7..8e0c9bbe 100755 --- a/indoteknik_custom/views/sale_order.xml +++ b/indoteknik_custom/views/sale_order.xml @@ -16,10 +16,16 @@ type="object" attrs="{'invisible': [('approval_status', 'in', ['pengajuan1', 'pengajuan2', 'approved'])]}" /> + <button name="action_web_approve" + string="Web Approve" + type="object" + attrs="{'invisible': ['|', '|', ('create_uid', '!=', 25), ('web_approval', '!=', False), ('state', '!=', 'draft')]}" + /> <button name="indoteknik_custom.action_view_uangmuka_penjualan" string="UangMuka" type="action" attrs="{'invisible': [('approval_status', '!=', 'approved')]}"/> </button> <field name="payment_term_id" position="after"> + <field name="create_uid" invisible="1"/> <field name="create_date" invisible="1"/> <field name="shipping_cost_covered" attrs="{'required': ['|', ('create_date', '>', '2023-06-15'), ('create_date', '=', False)]}"/> <field name="shipping_paid_by" attrs="{'required': ['|', ('create_date', '>', '2023-06-15'), ('create_date', '=', False)]}"/> |
