콘텐츠로 건너뛰기
메뉴
커뮤니티에 참여하려면 회원 가입을 하시기 바랍니다.
신고된 질문입니다
1 회신
1994 화면

I did this function to create delivery order for each order line when the locations is different in order lines

and create one deivery order when all order lines have the same location

but only one product appear in the delivery order when i select multi product with the same location

class SaleOrder(models.Model):
_inherit = 'sale.order'

@api.model
def action_confirm(self):
res = super(SaleOrder, self)

locations = []
for line in res.order_line:

if line.location_ids not in locations:
locations.append(line.location_ids)
picking_vals = {
'origin':res.name,
'partner_id': res.partner_shipping_id.id,
'location_id': line.location_ids.id,
'location_dest_id': res.partner_shipping_id.property_stock_customer.id,
'picking_type_id': self.env.ref('stock.picking_type_out').id,
'sale_id': res.id,

'move_ids_without_package': [( {
'name': line.name,
'product_id': line.product_id.id,
'product_uom': line.product_template_id.uom_id.id,
'location_id': line.location_ids.id,
'location_dest_id': res.partner_shipping_id.property_stock_customer.id,
'product_uom_qty':line.product_uom_qty,
#'quantity_done': ,
#'forecast_availability':
})],
}

delivery_order=self.env['stock.picking'].create(picking_vals)
delivery_order.state= 'assigned'
#res.write({'state':'done'})
res.write(res._prepare_confirmation_values())
return res


아바타
취소
베스트 답변

Hi,

The problem lies in the fact that you are appending unique places by using the locations list to keep track of them. To make a delivery order for each set of order lines with the same location, you should first arrange the order lines according to location.

class SaleOrder(models.Model):
_inherit = 'sale.order'

@api.model
def action_confirm(self):
    res = super(SaleOrder, self)

    locations = {}
    for line in res.order_line:
        location_id = line.location_ids.id

        if location_id not in locations:
            locations[location_id] = []

        locations[location_id].append(line)

    for location_id, order_lines in locations.items():
        picking_vals = {
            'origin': res.name,
            'partner_id': res.partner_shipping_id.id,
            'location_id': location_id,
            'location_dest_id': res.partner_shipping_id.property_stock_customer.id,
            'picking_type_id': self.env.ref('stock.picking_type_out').id,
            'sale_id': res.id,
            'move_ids_without_package': [],
        }

        for line in order_lines:
            move_vals = {
                'name': line.name,
                'product_id': line.product_id.id,
                'product_uom': line.product_template_id.uom_id.id,
                'location_id': location_id,
                'location_dest_id': res.partner_shipping_id.property_stock_customer.id,
                'product_uom_qty': line.product_uom_qty,
            }
            picking_vals['move_ids_without_package'].append((0, 0, move_vals))

        delivery_order = self.env['stock.picking'].create(picking_vals)
        delivery_order.state = 'assigned'

    res.write(res._prepare_confirmation_values())
    return res


Hope it helps

아바타
취소
관련 게시물 답글 화면 활동
3
11월 23
3963
2
5월 25
3012
0
11월 24
668
1
8월 24
1151
1
8월 24
2212