price_service.py 648 B

12345678910111213141516171819202122232425
  1. def calc_price(base_price, option_factors):
  2. price = base_price
  3. for f in option_factors:
  4. price *= float(f.factor)
  5. return round(price, 2)
  6. def apply_adjust(db, machine_id, brand_id, price):
  7. rows = db.execute("""
  8. SELECT factor FROM price_adjust_factor
  9. WHERE level='global'
  10. UNION ALL
  11. SELECT factor FROM price_adjust_factor
  12. WHERE level='brand' AND ref_id=:bid
  13. UNION ALL
  14. SELECT factor FROM price_adjust_factor
  15. WHERE level='machine' AND ref_id=:mid
  16. """, {
  17. "mid": machine_id,
  18. "bid": brand_id
  19. }).fetchall()
  20. for r in rows:
  21. price *= float(r.factor)
  22. return price