summaryrefslogtreecommitdiff
path: root/indoteknik_custom/models
diff options
context:
space:
mode:
authorRafi Zadanly <zadanlyr@gmail.com>2023-07-18 16:38:29 +0700
committerRafi Zadanly <zadanlyr@gmail.com>2023-07-18 16:38:29 +0700
commitd966917a5ba95074b6773f49fcb2c3c924296029 (patch)
tree1522069c54c85dad7ec01ae9c16000034cde8878 /indoteknik_custom/models
parente0102841e6e21c7b583f096914aa4ba1a28e1587 (diff)
Fix lost merge voucher with promotion program
Diffstat (limited to 'indoteknik_custom/models')
-rw-r--r--indoteknik_custom/models/promotion_program.py7
-rw-r--r--indoteknik_custom/models/promotion_program_free_item.py6
-rw-r--r--indoteknik_custom/models/promotion_program_line.py24
-rw-r--r--indoteknik_custom/models/website_user_cart.py13
4 files changed, 22 insertions, 28 deletions
diff --git a/indoteknik_custom/models/promotion_program.py b/indoteknik_custom/models/promotion_program.py
index bc7f2c49..e60f48e1 100644
--- a/indoteknik_custom/models/promotion_program.py
+++ b/indoteknik_custom/models/promotion_program.py
@@ -15,8 +15,5 @@ class PromotionProgram(models.Model):
("all_user", "All User"),
("login_user", "Login User")
])
- program_line = fields.One2many(
- comodel_name="promotion.program.line", inverse_name="program_id", string="Program Line")
- keywords = fields.One2many(
- comodel_name="promotion.program.keyword", inverse_name="program_id", string="Keywords"
- )
+ program_line = fields.One2many(comodel_name="promotion.program.line", inverse_name="program_id", string="Program Line")
+ keywords = fields.One2many(comodel_name="promotion.program.keyword", inverse_name="program_id", string="Keywords")
diff --git a/indoteknik_custom/models/promotion_program_free_item.py b/indoteknik_custom/models/promotion_program_free_item.py
index ddd97765..705456dd 100644
--- a/indoteknik_custom/models/promotion_program_free_item.py
+++ b/indoteknik_custom/models/promotion_program_free_item.py
@@ -5,8 +5,6 @@ class PromotionProgramFreeItem(models.Model):
_name = "promotion.program.free_item"
_rec_name = "product_id"
- product_id = fields.Many2one(
- comodel_name="product.product", string="Product Variant")
+ product_id = fields.Many2one(comodel_name="product.product", string="Product Variant")
qty = fields.Integer(string="Qty")
- line_id = fields.Many2one(
- comodel_name="promotion.program.line", string="Program Line")
+ line_id = fields.Many2one(comodel_name="promotion.program.line", string="Program Line")
diff --git a/indoteknik_custom/models/promotion_program_line.py b/indoteknik_custom/models/promotion_program_line.py
index 7aaff4c4..077f7e12 100644
--- a/indoteknik_custom/models/promotion_program_line.py
+++ b/indoteknik_custom/models/promotion_program_line.py
@@ -7,10 +7,8 @@ class PromotionProgramLine(models.Model):
name = fields.Char(string="Name")
image = fields.Binary(string="Image")
- product_id = fields.Many2one(
- comodel_name="product.product", string="Product Variant")
- program_id = fields.Many2one(
- comodel_name="promotion.program", string="Program")
+ product_id = fields.Many2one(comodel_name="product.product", string="Product Variant")
+ program_id = fields.Many2one(comodel_name="promotion.program", string="Program")
discount_type = fields.Selection(selection=[
("percentage", "Percentage"),
("fixed_price", "Fixed Price"),
@@ -22,18 +20,12 @@ class PromotionProgramLine(models.Model):
("discount_loading", "Discount Loading"),
("merchandise", "Merchandise")
], string="Promotion Type")
- minimum_purchase_qty = fields.Integer(
- string="Minimum Purchase Qty", help="Minimum Qty to applied discount loading")
- applies_multiply = fields.Boolean(
- string="Applies Multiply", help="Is applies multiply")
- limit_qty = fields.Integer(
- string="Limit Qty", help="Limit Qty product in promotion")
- limit_qty_user = fields.Integer(
- string="Limit Qty / User", help="Limit Qty per User")
- limit_qty_transaction = fields.Integer(
- string="Limit Qty / Transaction", help="Limit Qty per Transaction")
- line_free_item = fields.One2many(
- comodel_name="promotion.program.free_item", inverse_name="line_id", string="Line Free Item")
+ minimum_purchase_qty = fields.Integer(string="Minimum Purchase Qty", help="Minimum Qty to applied discount loading")
+ applies_multiply = fields.Boolean(string="Applies Multiply", help="Is applies multiply")
+ limit_qty = fields.Integer(string="Limit Qty", help="Limit Qty product in promotion")
+ limit_qty_user = fields.Integer(string="Limit Qty / User", help="Limit Qty per User")
+ limit_qty_transaction = fields.Integer(string="Limit Qty / Transaction", help="Limit Qty per Transaction")
+ line_free_item = fields.One2many(comodel_name="promotion.program.free_item", inverse_name="line_id", string="Line Free Item")
display_on_homepage = fields.Boolean(string="Display on Homepage")
order_line_ids = fields.One2many('sale.order.line', 'program_line_id')
diff --git a/indoteknik_custom/models/website_user_cart.py b/indoteknik_custom/models/website_user_cart.py
index 388151ab..a8cde228 100644
--- a/indoteknik_custom/models/website_user_cart.py
+++ b/indoteknik_custom/models/website_user_cart.py
@@ -16,14 +16,21 @@ class WebsiteUserCart(models.Model):
'partner_id': self.user_id.partner_id.id,
'user_id': self.user_id.id
}
- product_product = self.env['product.product']
- product = product_product.v2_api_single_response(self.product_id)
+ product = self.product_id.v2_api_single_response(self.product_id)
+ product['cart_id'] = self.id
product['quantity'] = self.qty
product['subtotal'] = self.qty * product['price']['price_discount']
product['selected'] = self.is_selected
product['program'] = None
+ product['can_buy'] = True
if self.program_line_id:
- product['program'] = self.program_line_id.res_format_cart(user_data)
+ product['program'] = self.program_line_id.res_format_cart(user=user_data, quantity=self.qty)
+
+ if product['program']:
+ if self.qty < product['program']['minimum_purchase_qty'] or self.qty > product['program']['remaining_qty']['transaction']:
+ product['can_buy'] = False
+ product['price'] = product['program']['price']
+
return product
def get_products(self):