summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorstephanchrst <stephanchrst@gmail.com>2023-10-26 11:09:33 +0700
committerstephanchrst <stephanchrst@gmail.com>2023-10-26 11:09:33 +0700
commit556c95e1fe466448eee0e823adc6a5757638272d (patch)
tree554e7d5706c8e36408ff70dfa89c3e0c5d33e8b4
parent9292b2e0865500077281e2c410d264011b9a65da (diff)
fix bug in sale order while compute date reserved
-rwxr-xr-xindoteknik_custom/models/sale_order.py56
1 files changed, 30 insertions, 26 deletions
diff --git a/indoteknik_custom/models/sale_order.py b/indoteknik_custom/models/sale_order.py
index 9da6d9fb..cc6941a9 100755
--- a/indoteknik_custom/models/sale_order.py
+++ b/indoteknik_custom/models/sale_order.py
@@ -82,16 +82,16 @@ class SaleOrder(models.Model):
email = fields.Char(string='Email')
picking_iu_id = fields.Many2one('stock.picking', 'Picking IU')
helper_by_id = fields.Many2one('res.users', 'Helper By')
- picking_ids = fields.Many2many('stock.picking', string='Pickings', compute='_get_pickings', readonly=True, copy=False, search="_search_picking_ids")
+ # picking_ids = fields.Many2many('stock.picking', string='Pickings', compute='_get_pickings', readonly=True, copy=False, search="_search_picking_ids")
- def _get_pickings(self):
- state = ['assigned']
- for order in self:
- pickings = self.env['stock.picking'].search([
- ('sale_id.id', '=', order.id),
- ('state', 'in', state)
- ])
- order.picking_ids = pickings
+ # def _get_pickings(self):
+ # state = ['assigned']
+ # for order in self:
+ # pickings = self.env['stock.picking'].search([
+ # ('sale_id.id', '=', order.id),
+ # ('state', 'in', state)
+ # ])
+ # order.picking_ids = pickings
@api.model
def action_multi_update_state(self):
@@ -208,30 +208,34 @@ class SaleOrder(models.Model):
for picking in sale.picking_ids:
sum_qty_pick = sum(move_line.product_uom_qty for move_line in picking.move_ids_without_package)
sum_qty_reserved = sum(move_line.product_uom_qty for move_line in picking.move_line_ids_without_package)
- if sum_qty_pick == sum_qty_reserved:
+ if picking.state == 'done':
+ continue
+ elif sum_qty_pick == sum_qty_reserved and not picking.date_reserved:# baru ke reserved
current_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
picking.date_reserved = current_time
+ elif sum_qty_pick == sum_qty_reserved:# sudah ada data reserved
+ picking.date_reserved = picking.date_reserved
else:
picking.date_reserved = ''
_logger.info('Calculate SO Status %s' % sale.id)
- def _search_picking_ids(self, operator, value):
- if operator == 'in' and value:
- self.env.cr.execute("""
- SELECT array_agg(so.sale_id)
- FROM stock_picking so
- WHERE
- so.sale_id is not null and so.id = ANY(%s)
- """, (list(value),))
- so_ids = self.env.cr.fetchone()[0] or []
- return [('id', 'in', so_ids)]
- elif operator == '=' and not value:
- order_ids = self._search([
- ('order_line.invoice_lines.move_id.move_type', 'in', ('out_invoice', 'out_refund'))
- ])
- return [('id', 'not in', order_ids)]
- return ['&', ('order_line.invoice_lines.move_id.move_type', 'in', ('out_invoice', 'out_refund')), ('order_line.invoice_lines.move_id', operator, value)]
+ # def _search_picking_ids(self, operator, value):
+ # if operator == 'in' and value:
+ # self.env.cr.execute("""
+ # SELECT array_agg(so.sale_id)
+ # FROM stock_picking so
+ # WHERE
+ # so.sale_id is not null and so.id = ANY(%s)
+ # """, (list(value),))
+ # so_ids = self.env.cr.fetchone()[0] or []
+ # return [('id', 'in', so_ids)]
+ # elif operator == '=' and not value:
+ # order_ids = self._search([
+ # ('order_line.invoice_lines.move_id.move_type', 'in', ('out_invoice', 'out_refund'))
+ # ])
+ # return [('id', 'not in', order_ids)]
+ # return ['&', ('order_line.invoice_lines.move_id.move_type', 'in', ('out_invoice', 'out_refund')), ('order_line.invoice_lines.move_id', operator, value)]
@api.onchange('partner_shipping_id')
def onchange_partner_shipping(self):