From 34e3cc9c3307be1eacdc8744d377f03689aea0a7 Mon Sep 17 00:00:00 2001 From: Azka Nathan Date: Thu, 25 Jul 2024 15:44:26 +0700 Subject: email reminder cekout --- indoteknik_custom/models/website_user_cart.py | 82 ++++++++++++- indoteknik_custom/views/website_user_cart.xml | 163 ++++++++++++++++++++------ 2 files changed, 207 insertions(+), 38 deletions(-) diff --git a/indoteknik_custom/models/website_user_cart.py b/indoteknik_custom/models/website_user_cart.py index bbff6035..793dda0b 100644 --- a/indoteknik_custom/models/website_user_cart.py +++ b/indoteknik_custom/models/website_user_cart.py @@ -1,5 +1,5 @@ from odoo import fields, models - +from datetime import datetime, timedelta class WebsiteUserCart(models.Model): _name = 'website.user.cart' @@ -15,6 +15,7 @@ class WebsiteUserCart(models.Model): ('buy', 'Buy') ], 'Source', default='add_to_cart') user_other_carts = fields.One2many('website.user.cart', 'id', 'Other Products', compute='_compute_user_other_carts') + is_reminder = fields.Boolean(string='Reminder?') def _compute_user_other_carts(self): for record in self: @@ -129,10 +130,83 @@ class WebsiteUserCart(models.Model): } return result - def action_mail_reminder_to_checkout(self, id): - template = self.env.ref('indoteknik_custom.mail_template_user_cart_reminder_to_checkout') - template.send_mail(int(id), force_send=True) + def action_mail_reminder_to_checkout(self): + # user_ids = self.search([]).mapped('user_id') + + user_ids = [101] + for user in user_ids: + latest_cart = self.search([('user_id', '=', user), ('is_reminder', '=', False)], order='create_date desc', limit=1) + + carts_to_remind = self.search([('user_id', '=', user)]) + if latest_cart and not latest_cart.is_reminder: + for cart in carts_to_remind: + if not cart.program_line_id: + cart.is_selected = True + cart.is_reminder = True + template = self.env.ref('indoteknik_custom.mail_template_user_cart_reminder_to_checkout') + template.send_mail(latest_cart.id, force_send=True) + + def calculate_discount(self, user_id): + carts = self.search([('user_id', '=', user_id)]) + voucher = self.env['voucher'].browse(146) + total_discount = 0.01 + total_voucher = 0.0 + subtotal_website = 0.0 + + for cart in carts: + product_manufacture = cart.product_id.x_manufacture.id + product_price = cart.get_price_website(cart.product_id.id) + subtotal = product_price['price'] * cart.qty + subtotal_website += product_price['price'] + discount_amount = 0.0 + for line in voucher.voucher_line: + if line.manufacture_id.id == product_manufacture: + discount_amount = line.discount_amount + break + + if discount_amount > 0 and subtotal > 0: + product_discount = subtotal - (subtotal * (discount_amount / 100.0)) + voucher_product = subtotal * (discount_amount / 100.0) + total_discount += product_discount + total_voucher += voucher_product + + if total_discount > 0: + ppn = total_discount * 0.11 + return { + 'total_discount': self.format_currency(total_discount), + 'total_voucher': self.format_currency(total_voucher), + 'subtotal_website': self.format_currency(subtotal_website), + 'ppn': self.format_currency(ppn), + 'grand_total': self.format_currency(total_discount + ppn) + } + return self.format_currency(0.0) + + def get_data_promo(self, program_line_id): + program_line_product = self.env['promotion.product'].search([ + ('program_line_id', '=', program_line_id) + ]) + return program_line_product + + def get_price_website(self, product_id): + price_website = self.env['product.pricelist.item'].search([('product_id', '=', product_id), ('pricelist_id', '=', 17022)], limit=1) + + price_tier = self.env['product.pricelist.item'].search([('product_id', '=', product_id), ('pricelist_id', '=', 17023)], limit=1) + + fixed_price = price_website.fixed_price if price_website else 0.0 + discount = price_tier.price_discount if price_tier else 0.0 + + discounted_price = fixed_price - (fixed_price * discount / 100) + + final_price = discounted_price / 1.11 + + return { + 'price': final_price, + 'web_price': discounted_price + } + + + def format_currency(self, number): number = int(number) return "{:,}".format(number).replace(',', '.') \ No newline at end of file diff --git a/indoteknik_custom/views/website_user_cart.xml b/indoteknik_custom/views/website_user_cart.xml index e3630363..09ac7c67 100755 --- a/indoteknik_custom/views/website_user_cart.xml +++ b/indoteknik_custom/views/website_user_cart.xml @@ -16,6 +16,7 @@ + @@ -34,6 +35,7 @@ + @@ -66,9 +68,10 @@ User Cart: Reminder to checkout - Hello ${object.user_id.name} - sales@indoteknik.com - ${object.user_id.login | safe} + Yuk, Checkout barang dikeranjang Kamu pakai Voucher Indoteknik + noreply@indoteknik.com + sales@indoteknik.com + ${object.user_id.partner_id.email | safe} + + + + + - - + + +
@@ -79,8 +82,8 @@ - @@ -98,49 +101,141 @@
- + + Indoteknik
- - - - + + + + % set voucher = object.env['voucher'].browse(146) + % set discount_amount = object.env['website.user.cart'].calculate_discount(object.user_id.id) + % if voucher: + % endif + + + + + % endfor + +
Halo ${object.user_id.name},
Kami harap Anda dalam keadaan baik. Kami ingin mengingatkan Anda bahwa Anda memiliki beberapa produk yang masih ada di keranjang belanja Anda di situs kami, tetapi belum selesai untuk proses checkout.
Jika Anda masih tertarik dengan produk-produk tersebut, jangan ragu untuk segera melanjutkan proses pembayaran. Ini adalah kesempatan Anda untuk mendapatkan barang-barang yang Anda inginkan sebelum kehabisan stok.
Berikut adalah daftar produk yang masih ada di keranjang belanja Anda:
Produk yang kamu pilih masih menunggu dikeranjang belanja nih! Yuk, lakukan checkout barang pilihan kamu pakai voucher lebih hemat dan selesaikan transaksimu sekarang.
Rasakan kemudahan transaksi lebih praktis hanya di Indoteknik.com
Voucher untuk Produk Keranjangmu :
- % set base_url = object.env['ir.config_parameter'].get_param('web.base.url') - % for cart in object.user_other_carts: - % set user_pricelist = cart.user_id.partner_id.property_product_pricelist - % set product_price = cart.product_id.calculate_website_price(pricelist=user_pricelist) - % set product_template_id = cart.product_id.product_tmpl_id.id - % set subtotal = product_price['price_discount'] * cart.qty - - - +
+ + + + + + + + + + + + +
Kode VoucherJumlah Diskon
${voucher.code}Rp${discount_amount['total_voucher']}
+
Berikut adalah daftar produk yang masih ada di keranjang belanja Anda:
+ + % set base_url = object.env['ir.config_parameter'].get_param('web.base.url') + + + + + + + + + + + % for cart in object.user_other_carts: + % set product_price = cart.get_price_website(cart.product_id.id) + % set product_template_id = cart.product_id.product_tmpl_id.id + % set subtotal = product_price['price'] * cart.qty - + + - + % else + + + + + %endif - -
Nama ProdukHarga DiskonJumlahSubtotal
- ${cart.product_id.name} + % if cart.program_line_id: + % set promo = cart.get_data_promo(cart.program_line_id.id) + % set subtotal = promo[0].program_line_id.price * cart.qty + +
+ ${promo[0].program_line_id.program_id.name} +
+
+ % for data in promo: +
+ ${data.product_id.name} +
${data.product_id.name}
+
+ % endfor +
+
+
Rp${cart.format_currency(promo[0].program_line_id.price)}
+
+
${'%d pcs' % cart.qty}
-
${cart.product_id.name}
- % if product_price['discount_percentage'] != 0: -
Rp${cart.format_currency(product_price['price'])} (${'%d' % product_price['discount_percentage']}%)
- % endif -
Rp${cart.format_currency(product_price['price_discount'])} x ${'%d pcs' % cart.qty}
+
Rp${cart.format_currency(subtotal)}
+ ${cart.product_id.name} +
${cart.product_id.name}
+
+
Rp${cart.format_currency(product_price['price'])}
+
+
${'%d pcs' % cart.qty}
+
+
Rp${cart.format_currency(subtotal)}
+
- - % endfor -
+ % set totalan = object.calculate_discount(object.user_id.id) + + + + + + + + + + + + + + + + + + + + + + + + +
Subtotal:Rp${totalan['subtotal_website']}
Pakai Voucher:(Potensi Potongan) Rp${totalan['total_voucher']}
Total:Rp${totalan['total_discount']}
PPN (11%):Rp${totalan['ppn']}
Grand Total:Rp${totalan['grand_total']}
+
+ Cek Keranjang + Bayar Sekarang +
Kami juga ingin memberitahu Anda bahwa kami menyediakan layanan pelanggan yang siap membantu jika Anda memiliki pertanyaan atau memerlukan bantuan dalam proses pembayaran. Jangan ragu untuk menghubungi kami melalui email ini atau nomor layanan pelanggan kami yang tertera di situs.
Terima kasih atas perhatian Anda dan kesempatan untuk melayani Anda. Kami berharap dapat segera melihat Anda menyelesaikan pembelian Anda.
Terima kasih atas perhatian Anda dan kesempatan untuk melayani Anda. Kami berharap dapat segera melihat Anda menyelesaikan pembelian Anda. Untuk pertanyaan lebih lanjut dapat menghubungi nomor Whatsapp Resmi kami di 0817-1718-1922
Hormat kami,
PT. Indoteknik Dotcom Gemilang
sales@indoteknik.com
Email ini dibuat secara otomatis. Mohon tidak mengirimkan balasan ke email ini.

+ style="background-color:rgb(204,204,204);border:medium none;clear:both;display:block;font-size:0px;min-height:1px;line-height:0; margin: 16px 0px 16px 0px;" />
-- cgit v1.2.3