summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRafi Zadanly <zadanlyr@gmail.com>2024-03-06 10:40:10 +0700
committerRafi Zadanly <zadanlyr@gmail.com>2024-03-06 10:40:10 +0700
commitd569804844ee77f9f08879dda8c3f1e292470813 (patch)
treebe8357933ccd751700cbecd00b92c30100b25e7f
parentf53312f3f2c78d50d838c249a8d0eb1ed1e5b7f2 (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.py16
-rw-r--r--indoteknik_api/models/sale_order.py7
-rwxr-xr-xindoteknik_custom/models/sale_order.py15
-rwxr-xr-xindoteknik_custom/views/sale_order.xml6
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', '&gt;', '2023-06-15'), ('create_date', '=', False)]}"/>
<field name="shipping_paid_by" attrs="{'required': ['|', ('create_date', '&gt;', '2023-06-15'), ('create_date', '=', False)]}"/>