summaryrefslogtreecommitdiff
path: root/indoteknik_custom/models/promotion_program_line.py
diff options
context:
space:
mode:
authorRafi Zadanly <zadanlyr@gmail.com>2023-06-23 11:20:52 +0700
committerRafi Zadanly <zadanlyr@gmail.com>2023-06-23 11:20:52 +0700
commit23014336a1fe1fe5ef54fad30cf6c3d9cc59b2d8 (patch)
tree3b1ee79d1e73b6e02f943411c5a2715c7f16e2f3 /indoteknik_custom/models/promotion_program_line.py
parentae998f145e4f8b4a0939a97c02e70564ef758e73 (diff)
Update response price di product promotion API, Membuat fungsi calculate price promotion, Refactor promotion homepage, Refactor fungsi calculate product price
Diffstat (limited to 'indoteknik_custom/models/promotion_program_line.py')
-rw-r--r--indoteknik_custom/models/promotion_program_line.py43
1 files changed, 28 insertions, 15 deletions
diff --git a/indoteknik_custom/models/promotion_program_line.py b/indoteknik_custom/models/promotion_program_line.py
index 3e419ef9..c888f01a 100644
--- a/indoteknik_custom/models/promotion_program_line.py
+++ b/indoteknik_custom/models/promotion_program_line.py
@@ -71,6 +71,16 @@ class PromotionProgramLine(models.Model):
'qty': 1, 'line_id': program_line.id}
line_free_item.create(data)
+ def calculate_price(self, price):
+ initial_price = price['price']
+ if self.discount_type == 'percentage':
+ price['discount_percentage'] = self.discount_amount
+ price['price_discount'] = initial_price - (initial_price * self.discount_amount / 100)
+ elif self.discount_type == 'fixed_price':
+ price['price_discount'] = self.discount_amount
+ price['discount_percentage'] = round((initial_price - self.discount_amount) / initial_price * 100)
+ return price
+
def get_active_promotions(self, product_id):
current_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
return self.search([
@@ -116,20 +126,23 @@ class PromotionProgramLine(models.Model):
'label': dict(self._fields['promotion_type'].selection).get(self.promotion_type)
}
- def res_format(self, lines, user):
+ def format(self, user = None, pricelist = False):
ir_attachment = self.env['ir.attachment']
- data = []
- for line in lines:
- data.append({
- 'id': line.id,
- 'name': line.name,
- 'image': ir_attachment.api_image('promotion.program.line', 'image', line.id),
- 'minimum_purchase_qty': line.minimum_purchase_qty,
- 'applies_multiply': line.applies_multiply,
- 'remaining_time': line._get_remaining_time(),
- 'type': line._res_promotion_type(),
- 'limit_qty': line._res_limit_qty(),
- 'remaining_qty': line._get_remaining_qty(user),
- })
+ product_price = self.product_id.calculate_website_price(pricelist=pricelist)
+ return {
+ 'id': self.id,
+ 'name': self.name,
+ 'image': ir_attachment.api_image('promotion.program.line', 'image', self.id),
+ 'minimum_purchase_qty': self.minimum_purchase_qty,
+ 'applies_multiply': self.applies_multiply,
+ 'remaining_time': self._get_remaining_time(),
+ 'type': self._res_promotion_type(),
+ 'limit_qty': self._res_limit_qty(),
+ 'remaining_qty': self._get_remaining_qty(user),
+ 'price': self.calculate_price(price=product_price)
+ }
+
+ def res_format(self, user, pricelist):
+ data = [x.format(user, pricelist=pricelist) for x in self]
return data
-
+