示例#1
0
 def _add_order_impl(self, customer_id, product_ids, attributes, prices, user, discount_id, campaign_id, incl_tax=True):   #pylint: disable-msg=R0913
     """ KB: [2013-02-20]:
     attributes = [{quantity : 0, product : <Product...>}, {...}]
     """
     cust = Customer.load(customer_id)
     self.forbid_if(not cust or cust.campaign.company.enterprise_id != self.enterprise_id)
     cart = Cart()
     campaign_id = campaign_id if campaign_id else cust.campaign_id
     cart.discount_id = discount_id
     for pid in product_ids.keys():
         quantity = product_ids[pid]
         price = prices[pid] if prices and pid in prices else None
         attrs = {}
         for attr in [attr['attribute_product'] for attr in attributes.values() if str(attr['parent_product'].product_id) == pid]:
             attrs[attr.product_id] = { 'quantity' : 0,
                                        'product' : attr}
         cart.add_item(product=Product.load(pid),
                       campaign=cust.campaign,
                       quantity=quantity,
                       attributes=attrs,
                       base_price=price)
     order = cust.add_order(cart, user, self.enterprise_id, cust.campaign, incl_tax=incl_tax)
     order.flush()
     return order.order_id