summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAzka Nathan <darizkyfaz@gmail.com>2024-07-30 13:07:46 +0700
committerAzka Nathan <darizkyfaz@gmail.com>2024-07-30 13:07:46 +0700
commit5dd31ffbce1fef2e29a3d17bafd13569763805e8 (patch)
tree5d1219398f4374f4993bcf891d033005e5df03f8
parent1e1e3226e84b6e8d7a628855051e0768b7d4e71e (diff)
add qr code to sale order
-rwxr-xr-xindoteknik_custom/models/sale_order.py21
-rwxr-xr-xindoteknik_custom/views/sale_order.xml1
2 files changed, 21 insertions, 1 deletions
diff --git a/indoteknik_custom/models/sale_order.py b/indoteknik_custom/models/sale_order.py
index 9093b4c4..3f23f65d 100755
--- a/indoteknik_custom/models/sale_order.py
+++ b/indoteknik_custom/models/sale_order.py
@@ -1,7 +1,8 @@
from odoo import fields, models, api, _
from odoo.exceptions import UserError, ValidationError
from datetime import datetime, timedelta
-import logging, random, string, requests, math, json, re
+import logging, random, string, requests, math, json, re, qrcode, base64
+from io import BytesIO
from collections import defaultdict
_logger = logging.getLogger(__name__)
@@ -75,6 +76,7 @@ class SaleOrder(models.Model):
delivery_service_type = fields.Char(string='Delivery Service Type', help='data dari rajaongkir')
grand_total = fields.Monetary(string='Grand Total', help='Amount total + amount delivery', compute='_compute_grand_total')
payment_link_midtrans = fields.Char(string='Payment Link', help='Url payment yg digenerate oleh midtrans, harap diserahkan ke customer agar dapat dilakukan pembayaran secara mandiri')
+ payment_qr_code = fields.Binary("Payment QR Code")
due_id = fields.Many2one('due.extension', string="Due Extension", readonly=True, tracking=True)
customer_type = fields.Selection([
('pkp', 'PKP'),
@@ -292,6 +294,23 @@ class SaleOrder(models.Model):
redirect_url = json.loads(lookup_json)['redirect_url']
self.payment_link_midtrans = str(redirect_url)
+ # Generate QR code
+ qr = qrcode.QRCode(
+ version=1,
+ error_correction=qrcode.constants.ERROR_CORRECT_L,
+ box_size=10,
+ border=4,
+ )
+ qr.add_data(redirect_url)
+ qr.make(fit=True)
+ img = qr.make_image(fill_color="black", back_color="white")
+
+ buffer = BytesIO()
+ img.save(buffer, format="PNG")
+ qr_code_img = base64.b64encode(buffer.getvalue()).decode()
+
+ self.payment_qr_code = qr_code_img
+
@api.model
def _generate_so_access_token(self, limit=50):
orders = self.search([('access_token', '=', False)], limit=limit)
diff --git a/indoteknik_custom/views/sale_order.xml b/indoteknik_custom/views/sale_order.xml
index b8927a18..04f21d83 100755
--- a/indoteknik_custom/views/sale_order.xml
+++ b/indoteknik_custom/views/sale_order.xml
@@ -168,6 +168,7 @@
<field name="gross_amount" readonly="True"/>
<field name="payment_type" readonly="True"/>
<field name="payment_status" readonly="True"/>
+ <field name="payment_qr_code" widget="image" readonly="True"/>
</group>
</group>
</page>