summaryrefslogtreecommitdiff
path: root/indoteknik_custom/models/stock_picking.py
diff options
context:
space:
mode:
Diffstat (limited to 'indoteknik_custom/models/stock_picking.py')
-rw-r--r--indoteknik_custom/models/stock_picking.py73
1 files changed, 48 insertions, 25 deletions
diff --git a/indoteknik_custom/models/stock_picking.py b/indoteknik_custom/models/stock_picking.py
index c8424121..a14e71a3 100644
--- a/indoteknik_custom/models/stock_picking.py
+++ b/indoteknik_custom/models/stock_picking.py
@@ -54,6 +54,11 @@ class StockPicking(models.Model):
('approved', 'Approved'),
], string='Approval Status', readonly=True, copy=False, index=True, tracking=3, help="Approval Status untuk Internal Use")
+ approval_receipt_status = fields.Selection([
+ ('pengajuan1', 'Approval Logistic'),
+ ('approved', 'Approved'),
+ ], string='Approval Receipt Status', readonly=True, copy=False, index=True, tracking=3, help="Approval Status untuk Receipt")
+
approval_return_status = fields.Selection([
('pengajuan1', 'Approval Finance'),
('approved', 'Approved'),
@@ -184,17 +189,18 @@ class StockPicking(models.Model):
if self.env.user.is_accounting:
raise UserError("Bisa langsung Validate")
- if self.is_internal_use:
- stock_move_lines = self.env['stock.move.line'].search([
- ('picking_id', '!=', False),
- ('product_id', '=', 236805),
- ('picking_id.partner_id', '=', self.partner_id.id),
- ('qty_done', '>', 0),
- ])
- list_state = ['confirmed', 'done']
- for stock_move_line in stock_move_lines:
- if stock_move_line.picking_id.state not in list_state:
- continue
+ # for calendar distribute only
+ # if self.is_internal_use:
+ # stock_move_lines = self.env['stock.move.line'].search([
+ # ('picking_id', '!=', False),
+ # ('product_id', '=', 236805),
+ # ('picking_id.partner_id', '=', self.partner_id.id),
+ # ('qty_done', '>', 0),
+ # ])
+ # list_state = ['confirmed', 'done']
+ # for stock_move_line in stock_move_lines:
+ # if stock_move_line.picking_id.state not in list_state:
+ # continue
# raise UserError('Sudah pernah dikirim kalender')
for pick in self:
@@ -205,6 +211,12 @@ class StockPicking(models.Model):
raise UserError("Qty tidak boleh 0")
pick.approval_status = 'pengajuan1'
+ def ask_receipt_approval(self):
+ if self.env.user.is_logistic_approver:
+ raise UserError('Bisa langsung validate tanpa Ask Receipt')
+ else:
+ self.approval_receipt_status = 'pengajuan1'
+
def ask_return_approval(self):
for pick in self:
if self.env.user.is_accounting:
@@ -264,30 +276,41 @@ class StockPicking(models.Model):
if self.is_internal_use and not self.env.user.is_accounting:
raise UserError("Harus di Approve oleh Accounting")
+ if self.picking_type_id.id == 28 and not self.env.user.is_logistic_approver:
+ raise UserError("Harus di Approve oleh Logistik")
+
if self.group_id.sale_id:
if self.group_id.sale_id.payment_link_midtrans:
if self.group_id.sale_id.payment_status != 'settlement':
raise UserError('Uang belum masuk (settlement), mohon konfirmasi ke sales atau finance')
- if self.is_internal_use:
- stock_move_lines = self.env['stock.move.line'].search([
- ('picking_id', '!=', False),
- ('product_id', '=', 236805),
- ('picking_id.partner_id', '=', self.partner_id.id),
- ('qty_done', '>', 0),
- ])
- list_state = ['confirmed', 'done']
- for stock_move_line in stock_move_lines:
- if stock_move_line.picking_id.state not in list_state:
- continue
+ # for distribute calendar only
+ # if self.is_internal_use:
+ # stock_move_lines = self.env['stock.move.line'].search([
+ # ('picking_id', '!=', False),
+ # ('product_id', '=', 236805),
+ # ('picking_id.partner_id', '=', self.partner_id.id),
+ # ('qty_done', '>', 0),
+ # ])
+ # list_state = ['confirmed', 'done']
+ # for stock_move_line in stock_move_lines:
+ # if stock_move_line.picking_id.state not in list_state:
+ # continue
# raise UserError('Sudah pernah dikirim kalender')
- for line in self.move_line_ids_without_package:
- if line.move_id.sale_line_id and self.picking_type_id.code == 'outgoing':
+ if self.picking_type_id.code == 'outgoing':
+ for line in self.move_line_ids_without_package:
if line.move_id.sale_line_id.qty_delivered + line.qty_done > line.move_id.sale_line_id.product_uom_qty:
raise UserError("Qty Delivered akan lebih dari Qty SO")
+ elif self.picking_type_id.code == 'incoming':
+ for line in self.move_ids_without_package:
+ if line.purchase_line_id.qty_received + line.quantity_done > line.purchase_line_id.product_qty:
+ raise UserError('Qty Received akan lebih dari Qty PO')
- self.approval_status = 'approved'
+ if self.is_internal_use:
+ self.approval_status = 'approved'
+ elif self.picking_type_id.code == 'incoming':
+ self.approval_receipt_status = 'approved'
res = super(StockPicking, self).button_validate()
self.calculate_line_no()