Exemple #1
0
 def add_products(self, ids, context={}):
     obj = self.browse(ids)[0]
     pricelist = obj.pricelist_id
     categ_ids = [c.id for c in obj.product_categs]
     for prod in get_model("product").search_browse([["categs.id", "in", categ_ids]]):
         factor = pricelist.factor or 1.0
         if pricelist.base_price == "product":
             base_price = prod.sale_price or 0
         elif pricelist.base_price == "other_pricelist":
             if not pricelist.other_pricelist_id:
                 raise Exception("Missing base price list")
             base_price = get_model("price.list").get_price(
                 pricelist.other_pricelist_id.id, prod.id, 1) or 0  # XXX: qty
         elif pricelist.base_price == "volume":
             base_price = prod.volume or 0
         else:
             raise Exception("Invalid base price type")
         price = utils.round_amount(base_price * factor, pricelist.rounding, pricelist.rounding_method)
         vals = {
             "list_id": pricelist.id,
             "product_id": prod.id,
             "price": price,
         }
         get_model("price.list.item").create(vals)
     return {
         "next": {
             "name": "pricelist_item",
         },
         "flash": "Products added to price list",
     }
Exemple #2
0
 def add_products(self, ids, context={}):
     obj = self.browse(ids)[0]
     pricelist = obj.pricelist_id
     categ_ids = [c.id for c in obj.product_categs]
     for prod in get_model("product").search_browse(
         [["categs.id", "in", categ_ids]]):
         factor = pricelist.factor or 1.0
         if pricelist.base_price == "product":
             base_price = prod.sale_price or 0
         elif pricelist.base_price == "other_pricelist":
             if not pricelist.other_pricelist_id:
                 raise Exception("Missing base price list")
             base_price = get_model("price.list").get_price(
                 pricelist.other_pricelist_id.id, prod.id,
                 1) or 0  # XXX: qty
         elif pricelist.base_price == "volume":
             base_price = prod.volume or 0
         else:
             raise Exception("Invalid base price type")
         price = utils.round_amount(base_price * factor, pricelist.rounding,
                                    pricelist.rounding_method)
         vals = {
             "list_id": pricelist.id,
             "product_id": prod.id,
             "price": price,
         }
         get_model("price.list.item").create(vals)
     return {
         "next": {
             "name": "pricelist_item",
         },
         "flash": "Products added to price list",
     }
Exemple #3
0
 def update_prices(self, ids, context={}):
     for obj in self.browse(ids):
         for line in obj.lines:
             prod = line.product_id
             factor = obj.factor or 1.0
             if obj.base_price == "product":
                 base_price = prod.sale_price
             elif obj.base_price == "other_pricelist":
                 if not obj.other_pricelist_id:
                     raise Exception("Missing base price list")
                 base_price = self.get_price(obj.other_pricelist_id.id, prod.id, 1)  # XXX: qty
             elif obj.base_price == "volume":
                 base_price = prod.volume or 0
             else:
                 raise Exception("Invalid base price type")
             price = utils.round_amount(base_price * factor, obj.rounding, obj.rounding_method)
             line.write({"price": price})
Exemple #4
0
 def update_prices(self, ids, context={}):
     for obj in self.browse(ids):
         for line in obj.lines:
             prod = line.product_id
             factor = obj.factor or 1.0
             if obj.base_price == "product":
                 base_price = prod.sale_price
             elif obj.base_price == "other_pricelist":
                 if not obj.other_pricelist_id:
                     raise Exception("Missing base price list")
                 base_price = self.get_price(obj.other_pricelist_id.id,
                                             prod.id, 1)  # XXX: qty
             elif obj.base_price == "volume":
                 base_price = prod.volume or 0
             else:
                 raise Exception("Invalid base price type")
             price = utils.round_amount(base_price * factor, obj.rounding,
                                        obj.rounding_method)
             line.write({"price": price})