diff options
| author | Azka Nathan <darizkyfaz@gmail.com> | 2024-07-30 13:07:46 +0700 |
|---|---|---|
| committer | Azka Nathan <darizkyfaz@gmail.com> | 2024-07-30 13:07:46 +0700 |
| commit | 5dd31ffbce1fef2e29a3d17bafd13569763805e8 (patch) | |
| tree | 5d1219398f4374f4993bcf891d033005e5df03f8 | |
| parent | 1e1e3226e84b6e8d7a628855051e0768b7d4e71e (diff) | |
add qr code to sale order
| -rwxr-xr-x | indoteknik_custom/models/sale_order.py | 21 | ||||
| -rwxr-xr-x | indoteknik_custom/views/sale_order.xml | 1 |
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> |
