From 0b85c98761260dd93b70fa429340c4edbf5154b1 Mon Sep 17 00:00:00 2001 From: stephanchrst Date: Mon, 14 Nov 2022 11:45:32 +0700 Subject: add approval if want to return --- indoteknik_custom/models/__init__.py | 1 + indoteknik_custom/models/stock_picking.py | 15 ++++++++++++++- indoteknik_custom/models/stock_picking_return.py | 19 +++++++++++++++++++ indoteknik_custom/views/stock_picking.xml | 9 ++++++++- 4 files changed, 42 insertions(+), 2 deletions(-) create mode 100644 indoteknik_custom/models/stock_picking_return.py diff --git a/indoteknik_custom/models/__init__.py b/indoteknik_custom/models/__init__.py index 94fe56fe..8645fb00 100755 --- a/indoteknik_custom/models/__init__.py +++ b/indoteknik_custom/models/__init__.py @@ -29,3 +29,4 @@ from . import users from . import ir_attachment from . import delivery_carrier from . import dunning_run +from . import stock_picking_return diff --git a/indoteknik_custom/models/stock_picking.py b/indoteknik_custom/models/stock_picking.py index d016e241..2f82c6f6 100644 --- a/indoteknik_custom/models/stock_picking.py +++ b/indoteknik_custom/models/stock_picking.py @@ -50,7 +50,12 @@ class StockPicking(models.Model): approval_status = fields.Selection([ ('pengajuan1', 'Approval Accounting'), ('approved', 'Approved'), - ], string='Approval Status', readonly=True, copy=False, index=True, tracking=3) + ], string='Approval Status', readonly=True, copy=False, index=True, tracking=3, help="Approval Status untuk Internal Use") + + approval_return_status = fields.Selection([ + ('pengajuan1', 'Approval Accounting'), + ('approved', 'Approved'), + ], string='Approval Return Status', readonly=True, copy=False, index=True, tracking=3, help="Approval Status untuk Return") def action_assign(self): res = super(StockPicking, self).action_assign() @@ -68,6 +73,13 @@ class StockPicking(models.Model): raise UserError("Qty tidak boleh 0") pick.approval_status = 'pengajuan1' + def ask_return_approval(self): + for pick in self: + if self.env.user.is_accounting: + pick.approval_return_status = 'approved' + else: + pick.approval_return_status = 'pengajuan1' + def calculate_line_no(self): line_no = 0 for picking in self: @@ -102,6 +114,7 @@ class StockPicking(models.Model): if self.picking_type_id.code == 'incoming' and self.group_id.id == False and self.is_internal_use == False: raise UserError(_('Tidak bisa Validate jika tidak dari Document SO / PO')) + if self.is_internal_use and not self.env.user.is_accounting: raise UserError("Harus di Approve oleh Accounting") res = super(StockPicking, self).button_validate() diff --git a/indoteknik_custom/models/stock_picking_return.py b/indoteknik_custom/models/stock_picking_return.py new file mode 100644 index 00000000..a4a3a500 --- /dev/null +++ b/indoteknik_custom/models/stock_picking_return.py @@ -0,0 +1,19 @@ +from odoo import _, api, fields, models +from odoo.exceptions import UserError +from odoo.tools.float_utils import float_round + + +class ReturnPicking(models.TransientModel): + _inherit = 'stock.return.picking' + + @api.model + def default_get(self, fields): + res = super(ReturnPicking, self).default_get(fields) + + stock_picking = self.env['stock.picking'].search([ + ('id', '=', res['picking_id']), + ]) + if not stock_picking.approval_return_status == 'approved': + raise UserError('Harus Approval Accounting untuk melakukan Retur') + + return res \ No newline at end of file diff --git a/indoteknik_custom/views/stock_picking.xml b/indoteknik_custom/views/stock_picking.xml index d53bf5b5..ce70fdd8 100644 --- a/indoteknik_custom/views/stock_picking.xml +++ b/indoteknik_custom/views/stock_picking.xml @@ -10,6 +10,12 @@
@@ -34,7 +40,8 @@ - + +