summaryrefslogtreecommitdiff
path: root/indoteknik_custom/models/stock_picking.py
diff options
context:
space:
mode:
authorFIN-IT_AndriFP <it@fixcomart.co.id>2025-10-06 09:45:36 +0700
committerFIN-IT_AndriFP <it@fixcomart.co.id>2025-10-06 09:45:36 +0700
commit5e34ad0df7287da35089c29812a208d15598aa06 (patch)
tree2f3dc62e050569a604bc52d2eb18ea98fb9c1981 /indoteknik_custom/models/stock_picking.py
parent3a6a1723928fb250f08376107be006b0567a3f1a (diff)
parentd3fc7f9dfbd3df9687c9531813ac59c3318c6b43 (diff)
Merge branch 'odoo-backup' of https://bitbucket.org/altafixco/indoteknik-addons into pum-v3
Diffstat (limited to 'indoteknik_custom/models/stock_picking.py')
-rw-r--r--indoteknik_custom/models/stock_picking.py31
1 files changed, 22 insertions, 9 deletions
diff --git a/indoteknik_custom/models/stock_picking.py b/indoteknik_custom/models/stock_picking.py
index b27e6b5d..0b91e79d 100644
--- a/indoteknik_custom/models/stock_picking.py
+++ b/indoteknik_custom/models/stock_picking.py
@@ -97,6 +97,7 @@ class StockPicking(models.Model):
approval_status = fields.Selection([
('pengajuan1', 'Approval Accounting'),
+ ('pengajuan2', 'Approval Logistic'),
('approved', 'Approved'),
], string='Approval Status', readonly=True, copy=False, index=True, tracking=3,
help="Approval Status untuk Internal Use")
@@ -152,6 +153,7 @@ class StockPicking(models.Model):
state_reserve = fields.Selection([
('waiting', 'Waiting For Fullfilment'),
('ready', 'Ready to Ship'),
+ ('partial', 'Ready to Ship Partial'),
('done', 'Done'),
('cancel', 'Cancelled'),
], string='Status Reserve', tracking=True, copy=False, help="The current state of the stock picking.")
@@ -393,7 +395,7 @@ class StockPicking(models.Model):
deadline = kirim_date + timedelta(days=1)
deadline = deadline.replace(hour=10, minute=0, second=0)
- if now > deadline:
+ if now > deadline and not self.so_lama:
raise ValidationError(
_("Anda tidak dapat mengubah Tanggal Kirim setelah jam 10:00 pada hari berikutnya!")
)
@@ -1078,7 +1080,6 @@ class StockPicking(models.Model):
return res
-
def ask_approval(self):
if self.env.user.is_accounting:
raise UserError("Bisa langsung Validate")
@@ -1332,7 +1333,6 @@ class StockPicking(models.Model):
current_time = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
self.date_reserved = current_time
-
# Validate Qty Demand Can't higher than Qty Product
if self.location_dest_id.id == 58 and 'BU/INPUT/' in self.name:
for move in self.move_ids_without_package:
@@ -1353,14 +1353,14 @@ class StockPicking(models.Model):
if self.picking_type_code == 'outgoing' and 'BU/OUT/' in self.name:
self.check_koli()
res = super(StockPicking, self).button_validate()
-
+
# Penambahan link PO di Stock Journal untuk Picking BD
for picking in self:
if picking.name and 'BD/' in picking.name and picking.purchase_id:
stock_journal = self.env['account.move'].search([
('ref', 'ilike', picking.name + '%'),
- ('journal_id', '=', 3) # Stock Journal ID
- ], limit = 1)
+ ('journal_id', '=', 3) # Stock Journal ID
+ ], limit=1)
if stock_journal:
stock_journal.write({
'purchase_order_id': picking.purchase_id.id
@@ -2537,9 +2537,22 @@ class ScanKoli(models.Model):
out_moves = self.env['stock.move.line'].search([('picking_id', '=', picking.linked_out_picking_id.id)])
for pick_move in pick_moves:
- corresponding_out_move = out_moves.filtered(lambda m: m.product_id == pick_move.product_id)
- if corresponding_out_move:
- corresponding_out_move.qty_done += pick_move.qty_done
+ corresponding_out_moves = out_moves.filtered(lambda m: m.product_id == pick_move.product_id)
+
+ if len(corresponding_out_moves) == 1:
+ corresponding_out_moves.qty_done += pick_move.qty_done
+
+ elif len(corresponding_out_moves) > 1:
+ qty_koli = pick_move.qty_done
+ for out_move in corresponding_out_moves:
+ if qty_koli <= 0:
+ break
+ # ambil sesuai kebutuhan atau sisa qty
+ qty_to_assign = min(qty_koli, out_move.product_uom_qty)
+ out_move.qty_done += qty_to_assign
+ qty_koli -= qty_to_assign
+
+
def _reset_qty_done_if_no_scan(self, picking_id):
product_bu_pick = self.env['stock.move.line'].search([('picking_id', '=', picking_id)])