diff options
Diffstat (limited to 'indoteknik_custom/models/sale_order.py')
| -rwxr-xr-x | indoteknik_custom/models/sale_order.py | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/indoteknik_custom/models/sale_order.py b/indoteknik_custom/models/sale_order.py index 8317e1fd..2510d9e5 100755 --- a/indoteknik_custom/models/sale_order.py +++ b/indoteknik_custom/models/sale_order.py @@ -78,6 +78,7 @@ class SaleOrder(models.Model): amount_voucher_disc = fields.Float(string='Voucher Discount') source_id = fields.Many2one('utm.source', 'Source', domain="[('id', 'in', [32, 59, 60, 61])]") estimated_arrival_days = fields.Integer('Estimated Arrival Days', default=0) + picking_iu_id = fields.Many2one('stock.picking', 'Picking IU') def _compute_purchase_total(self): for order in self: @@ -447,6 +448,59 @@ class SaleOrder(models.Model): line.discount = line.initial_discount line.initial_discount = False + def apply_promotion_program(self): + userdata = { + 'user_id': self.partner_id.user_id.id, + 'partner_id': self.partner_id.id + } + + iu_items = [] + for line in self.order_line: + promotion = line.program_line_id.format(user=userdata, qty=line.product_uom_qty) + if promotion['type']['value'] == 'merchandise': + iu_items += filter(lambda x: x['quantity'] > 0, promotion['items']) + + if len(iu_items) > 0: + self._create_promotion_program_iu_docs(iu_items) + + def _create_promotion_program_iu_docs(self, items): + default = { + 'picking_type_id': 33, # PT Indoteknik (Bandengan): Internal Transfers + 'location_id': 57, # BU/Stock + 'location_dest_id': 49, # Virtual Locations/Internal Use + 'account_id': 596, # Biaya awareness + 'product_uom': 1 # Unit + } + + picking_type = self.env['stock.picking.type'].browse(default['picking_type_id']) + picking = self.env['stock.picking'].create({ + 'name': picking_type.sequence_id.next_by_id(), + 'picking_type_id': default['picking_type_id'], + 'partner_id': self.partner_id.id, + 'real_shipping_id': self.real_shipping_id.id, + 'location_id': default['location_id'], + 'location_dest_id': default['location_dest_id'], + 'account_id': default['account_id'], + 'origin': self.display_name, + 'is_internal_use': True + }) + + product_model = self.env['product.product'] + for item in items: + picking.move_ids_without_package.create({ + 'product_id': item['product_id'], + 'name': product_model.browse(item['product_id']).display_name, + 'product_uom_qty': item['quantity'], + 'product_uom': default['product_uom'], + 'location_id': default['location_id'], + 'location_dest_id': default['location_dest_id'], + 'picking_id': picking.id + }) + + self.picking_iu_id = picking.id + + + |
