diff options
| author | stephanchrst <stephanchrst@gmail.com> | 2022-11-14 11:45:32 +0700 |
|---|---|---|
| committer | stephanchrst <stephanchrst@gmail.com> | 2022-11-14 11:45:32 +0700 |
| commit | 0b85c98761260dd93b70fa429340c4edbf5154b1 (patch) | |
| tree | 8ddc71d430371289834db659c3cb247a4712a10e | |
| parent | d6c056a43636bd2707620649cb1917ea341f1400 (diff) | |
add approval if want to return
| -rwxr-xr-x | indoteknik_custom/models/__init__.py | 1 | ||||
| -rw-r--r-- | indoteknik_custom/models/stock_picking.py | 15 | ||||
| -rw-r--r-- | indoteknik_custom/models/stock_picking_return.py | 19 | ||||
| -rw-r--r-- | indoteknik_custom/views/stock_picking.xml | 9 |
4 files changed, 42 insertions, 2 deletions
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 @@ <button name="ask_approval" string="Ask Approval" type="object" + attrs="{'invisible': [('is_internal_use', '=', False)]}" + /> + <button name="ask_return_approval" + string="Ask Return/Acc" + type="object" + attrs="{'invisible': ['|', ('state', '=', 'draft'), ('state', '=', 'cancel'), ('approval_return_status', '=', 'pengajuan1')]}" /> </button> <div class="oe_title" position="after"> @@ -34,7 +40,8 @@ <field name="real_shipping_id"/> </field> <field name="origin" position="after"> - <field name="approval_status"/> + <field name="approval_status" attrs="{'invisible': [('is_internal_use', '=', False)]}"/> + <field name="approval_return_status" attrs="{'invisible': [('approval_return_status', '=', False)]}"/> <field name="summary_qty_operation"/> <field name="count_line_operation"/> <field name="account_id" |
