summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIT Fixcomart <it@fixcomart.co.id>2023-08-10 05:02:39 +0000
committerIT Fixcomart <it@fixcomart.co.id>2023-08-10 05:02:39 +0000
commit9f8664c33429e41c6133ba2b325662245ffbc92d (patch)
treebce73d880f28edb48810fe263c8bcd717339b9be
parent1e3ea5f5df6794ffb5712389deca6d0d868cfc0a (diff)
parent659268250145b51e8700bc01871ae3bba34f76f3 (diff)
Merged in change/feature/voucher (pull request #96)
Change/feature/voucher
-rw-r--r--indoteknik_api/controllers/api_v1/voucher.py4
-rw-r--r--indoteknik_api/models/product_product.py4
-rw-r--r--indoteknik_custom/models/website_user_cart.py16
-rw-r--r--indoteknik_custom/views/mail_template_po.xml6
-rwxr-xr-xindoteknik_custom/views/website_user_cart.xml104
5 files changed, 127 insertions, 7 deletions
diff --git a/indoteknik_api/controllers/api_v1/voucher.py b/indoteknik_api/controllers/api_v1/voucher.py
index 3a2c798e..0b769ee7 100644
--- a/indoteknik_api/controllers/api_v1/voucher.py
+++ b/indoteknik_api/controllers/api_v1/voucher.py
@@ -75,5 +75,7 @@ class Voucher(controller.Controller):
voucher['has_flashsale_products'] = has_flashsale_products
voucher['discount_voucher'] = discount_voucher
voucher['difference_to_apply'] = difference_to_apply
+
+ sorted_vouchers = sorted(vouchers, key=lambda x: x['can_apply'], reverse=True)
- return self.response(vouchers)
+ return self.response(sorted_vouchers)
diff --git a/indoteknik_api/models/product_product.py b/indoteknik_api/models/product_product.py
index ff7c6498..a2d2f8a2 100644
--- a/indoteknik_api/models/product_product.py
+++ b/indoteknik_api/models/product_product.py
@@ -55,8 +55,8 @@ class ProductProduct(models.Model):
product_promotions = program_line.get_active_promotions(self.id)
return True if len(product_promotions) > 0 else False
- def calculate_website_price(self):
- pricelist = self.env.user_pricelist
+ def calculate_website_price(self, pricelist=False):
+ pricelist = pricelist or self.env.user_pricelist
config = self.env['ir.config_parameter']
product_pricelist_tier1 = int(config.get_param('product.pricelist.tier1'))
diff --git a/indoteknik_custom/models/website_user_cart.py b/indoteknik_custom/models/website_user_cart.py
index 9b82aa93..bf7016f8 100644
--- a/indoteknik_custom/models/website_user_cart.py
+++ b/indoteknik_custom/models/website_user_cart.py
@@ -14,6 +14,12 @@ class WebsiteUserCart(models.Model):
('add_to_cart', 'Add To Cart'),
('buy', 'Buy')
], 'Source', default='add_to_cart')
+ user_other_carts = fields.One2many('website.user.cart', 'id', 'Other Products', compute='_compute_user_other_carts')
+
+ def _compute_user_other_carts(self):
+ for record in self:
+ others = self.search([('user_id', '=', record.user_id.id)])
+ record.user_other_carts = others
def get_product(self):
user_data = {
@@ -84,4 +90,12 @@ class WebsiteUserCart(models.Model):
'has_product_without_weight': any(not product.get('weight') or product.get('weight') == 0 for product in products),
'products': products
}
- return result \ No newline at end of file
+ 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 format_currency(self, number):
+ number = int(number)
+ return "{:,}".format(number).replace(',', '.') \ No newline at end of file
diff --git a/indoteknik_custom/views/mail_template_po.xml b/indoteknik_custom/views/mail_template_po.xml
index 77c21837..410520b3 100644
--- a/indoteknik_custom/views/mail_template_po.xml
+++ b/indoteknik_custom/views/mail_template_po.xml
@@ -54,10 +54,10 @@
% if line.price_vendor != 0 and line.price_unit != line.price_vendor
<ul>
<li>Nama Produk: ${line.product_id.name}</li>
- <li>Harga Unit dalam PO: ${line.price_unit}</li>
- <li>Harga Unit dalam Purchase Pricelist: ${line.price_vendor}</li>
+ <li>Harga Unit dalam PO: Rp ${'{:,.2f}'.format(line.price_unit)}</li>
+ <li>Harga Unit dalam Purchase Pricelist: Rp ${'{:,.2f}'.format(line.price_vendor)}</li>
</ul>
- % endif
+ % endif
% endfor
Silahkan periksa dan lakukan koreksi jika diperlukan.
<br/><br/>
diff --git a/indoteknik_custom/views/website_user_cart.xml b/indoteknik_custom/views/website_user_cart.xml
index f942cdda..f43c9f63 100755
--- a/indoteknik_custom/views/website_user_cart.xml
+++ b/indoteknik_custom/views/website_user_cart.xml
@@ -49,5 +49,109 @@
sequence="1"
action="website_user_cart_action"
/>
+
+ <record id="cron_user_cart_reminder_to_checkout" model="ir.cron">
+ <field name="name">User Cart: Reminder to checkout</field>
+ <field name="interval_number">1</field>
+ <field name="interval_type">days</field>
+ <field name="numbercall">-1</field>
+ <field name="doall" eval="False"/>
+ <field name="model_id" ref="indoteknik_custom.model_website_user_cart"/>
+ <field name="code">model.action_mail_reminder_to_checkout()</field>
+ <field name="state">code</field>
+ <field name="priority">75</field>
+ <field name="active">False</field>
+ </record>
+
+ <record id="mail_template_user_cart_reminder_to_checkout" model="mail.template">
+ <field name="name">User Cart: Reminder to checkout</field>
+ <field name="model_id" ref="indoteknik_custom.model_website_user_cart"/>
+ <field name="subject">Hello ${object.user_id.name}</field>
+ <field name="email_from">sales@indoteknik.com</field>
+ <field name="email_to">${object.user_id.login | safe}</field>
+ <field name="body_html" type="html">
+ <table border="0" cellpadding="0" cellspacing="0" style="padding-top: 16px; background-color: #F1F1F1; font-family:Inter, Helvetica, Verdana, Arial,sans-serif; line-height: 24px; color: #454748; width: 100%; border-collapse:separate;">
+ <tr><td align="center">
+ <table border="0" cellpadding="0" cellspacing="0" width="590" style="font-size: 13px; padding: 16px; background-color: white; color: #454748; border-collapse:separate;">
+ <!-- HEADER -->
+ <tbody>
+ <tr>
+ <td align="center" style="min-width: 590px;">
+ <table border="0" cellpadding="0" cellspacing="0" width="590" style="min-width: 590px; background-color: white; padding: 0px 8px 0px 8px; border-collapse:separate;">
+ <tr>
+ <td valign="middle">
+ <span></span>
+ </td>
+ </tr>
+
+ <tr>
+ <td colspan="2" style="text-align:center;">
+ <hr width="100%" 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;" />
+ </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <!-- CONTENT -->
+ <tr>
+ <td align="center" style="min-width: 590px;">
+ <table border="0" cellpadding="0" cellspacing="0" width="590" style="min-width: 590px; background-color: white; padding: 0px 8px 0px 8px; border-collapse:separate;">
+ <tr><td style="padding-bottom: 24px;">Halo ${object.user_id.name},</td></tr>
+
+ <tr><td style="padding-bottom: 16px;">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.</td></tr>
+ <tr><td style="padding-bottom: 16px;">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.</td></tr>
+ <tr><td style="padding-bottom: 16px;">Berikut adalah daftar produk yang masih ada di keranjang belanja Anda:</td></tr>
+ <!-- PRODUCT TABLE -->
+ <tr><td>
+ % 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
+ <a href="https://indoteknik.com/shop/cart">
+ <table style="box-shadow: rgba(0, 0, 0, 0.16) 0px 1px 4px; width: 100%; margin-bottom: 12px; color: black !important;">
+ <tbody>
+ <tr>
+ <td style="width: 120px; padding: 8px !important;">
+ <img src="${base_url}api/image/product.template/image_512/${product_template_id}" alt="${cart.product_id.name}" width="120" height="120" style="object-fit: fill; object-position: center;"/>
+ </td>
+ <td style="vertical-align: top; padding: 8px;">
+ <div style="font-weight: 600;">${cart.product_id.name}</div>
+ % if product_price['discount_percentage'] != 0:
+ <div><span style="text-decoration: line-through;">Rp${cart.format_currency(product_price['price'])}</span> (${'%d' % product_price['discount_percentage']}%)</div>
+ % endif
+ <div>Rp${cart.format_currency(product_price['price_discount'])} x ${'%d pcs' % cart.qty}</div>
+ <div style="font-weight: 600;">Rp${cart.format_currency(subtotal)}</div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </a>
+ % endfor
+ </td></tr>
+
+ <tr><td style="padding-bottom: 16px;">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.</td></tr>
+ <tr><td style="padding-bottom: 16px;">Terima kasih atas perhatian Anda dan kesempatan untuk melayani Anda. Kami berharap dapat segera melihat Anda menyelesaikan pembelian Anda.</td></tr>
+
+ <tr><td style="padding-bottom: 2px;">Hormat kami,</td></tr>
+ <tr><td style="padding-bottom: 2px;">PT. Indoteknik Dotcom Gemilang</td></tr>
+ <tr><td style="padding-bottom: 2px;">sales@indoteknik.com</td></tr>
+ <tr>
+ <td style="text-align:center;">
+ <hr width="100%"
+ 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;" />
+ </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </td></tr>
+ </table>
+ </field>
+ </record>
+
</data>
</odoo> \ No newline at end of file