From e4158dc69c7d6bca17970dfbc838d9c29a76bd2b Mon Sep 17 00:00:00 2001 From: stephanchrst Date: Tue, 21 Feb 2023 12:01:57 +0700 Subject: scheduler for parsing midtrans notification --- indoteknik_custom/models/midtrans.py | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'indoteknik_custom/models') diff --git a/indoteknik_custom/models/midtrans.py b/indoteknik_custom/models/midtrans.py index 76dee447..df14c129 100644 --- a/indoteknik_custom/models/midtrans.py +++ b/indoteknik_custom/models/midtrans.py @@ -1,5 +1,6 @@ from odoo import fields, models, api import logging +import json _logger = logging.getLogger(__name__) @@ -24,6 +25,30 @@ class MidtransNotification(models.Model): ('authorize', 'Authorize'), ], string='Payment Status', help='Payment Gateway Status / Midtrans / Web, https://docs.midtrans.com/en/after-payment/status-cycle') + payment_type = fields.Char(string='Payment Type', help='Jenis pembayaran dengan Midtrans') + gross_amount = fields.Float(string='Gross Amount', help='Jumlah pembayaran yang dilakukan dengan Midtrans') + + def _parse_notification(self): + query = [ + ('payment_status', '=', False) + ] + notifications = self.env['midtrans.notification'].search(query, order='id') + for notif in notifications: + payment_status = json.loads(notif.json_raw)['transaction_status'] + payment_type = json.loads(notif.json_raw)['payment_type'] + gross_amount = json.loads(notif.json_raw)['gross_amount'] + order_id = json.loads(notif.json_raw)['order_id'] + + orders = order_id.split('_') + order = orders[0] + sale_order = self.env['sale.order'].search([('name', '=', order)], limit=1) + + notif.payment_status = payment_status + notif.payment_type = payment_type + notif.gross_amount = gross_amount + notif.sale_order_id = sale_order.id + + _logger.info('Success Parsing Midtrans Notification %s' % notif.id) class MidtransRecurring(models.Model): -- cgit v1.2.3 From c2105f6b0efdd0bb74b934205bb0acc43b297bdc Mon Sep 17 00:00:00 2001 From: stephanchrst Date: Tue, 21 Feb 2023 13:07:57 +0700 Subject: sale order set midtrans status and others --- indoteknik_custom/models/midtrans.py | 8 ++++---- indoteknik_custom/models/sale_order.py | 2 ++ 2 files changed, 6 insertions(+), 4 deletions(-) (limited to 'indoteknik_custom/models') diff --git a/indoteknik_custom/models/midtrans.py b/indoteknik_custom/models/midtrans.py index df14c129..11b10292 100644 --- a/indoteknik_custom/models/midtrans.py +++ b/indoteknik_custom/models/midtrans.py @@ -25,8 +25,6 @@ class MidtransNotification(models.Model): ('authorize', 'Authorize'), ], string='Payment Status', help='Payment Gateway Status / Midtrans / Web, https://docs.midtrans.com/en/after-payment/status-cycle') - payment_type = fields.Char(string='Payment Type', help='Jenis pembayaran dengan Midtrans') - gross_amount = fields.Float(string='Gross Amount', help='Jumlah pembayaran yang dilakukan dengan Midtrans') def _parse_notification(self): query = [ @@ -44,10 +42,12 @@ class MidtransNotification(models.Model): sale_order = self.env['sale.order'].search([('name', '=', order)], limit=1) notif.payment_status = payment_status - notif.payment_type = payment_type - notif.gross_amount = gross_amount notif.sale_order_id = sale_order.id + sale_order.payment_type = payment_type + sale_order.gross_amount = gross_amount + sale_order.payment_status = payment_status + _logger.info('Success Parsing Midtrans Notification %s' % notif.id) diff --git a/indoteknik_custom/models/sale_order.py b/indoteknik_custom/models/sale_order.py index 519e55ce..35f1af8e 100755 --- a/indoteknik_custom/models/sale_order.py +++ b/indoteknik_custom/models/sale_order.py @@ -67,6 +67,8 @@ class SaleOrder(models.Model): ('authorize', 'Authorize'), ], string='Payment Status', help='Payment Gateway Status / Midtrans / Web, https://docs.midtrans.com/en/after-payment/status-cycle') date_doc_kirim = fields.Datetime(string='Tanggal Kirim di SJ', help="Tanggal Kirim di cetakan SJ yang terakhir, tidak berpengaruh ke Accounting") + payment_type = fields.Char(string='Payment Type', help='Jenis pembayaran dengan Midtrans') + gross_amount = fields.Float(string='Gross Amount', help='Jumlah pembayaran yang dilakukan dengan Midtrans') def calculate_line_no(self): line_no = 0 -- cgit v1.2.3 From d67936f7c5f2e471690d0dc682b8ed97f4097e22 Mon Sep 17 00:00:00 2001 From: stephanchrst Date: Tue, 21 Feb 2023 13:43:01 +0700 Subject: replace strip with slash if searching sale order midtrans --- indoteknik_custom/models/midtrans.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indoteknik_custom/models') diff --git a/indoteknik_custom/models/midtrans.py b/indoteknik_custom/models/midtrans.py index 11b10292..c99c8410 100644 --- a/indoteknik_custom/models/midtrans.py +++ b/indoteknik_custom/models/midtrans.py @@ -38,7 +38,7 @@ class MidtransNotification(models.Model): order_id = json.loads(notif.json_raw)['order_id'] orders = order_id.split('_') - order = orders[0] + order = orders[0].replace('-', '/') sale_order = self.env['sale.order'].search([('name', '=', order)], limit=1) notif.payment_status = payment_status -- cgit v1.2.3 From 5fdade43dd264f834a52194b22a9d687c4dc6aab Mon Sep 17 00:00:00 2001 From: Rafi Zadanly Date: Wed, 22 Feb 2023 17:08:53 +0700 Subject: user company request and register logic --- indoteknik_custom/models/__init__.py | 1 + indoteknik_custom/models/user_company_request.py | 15 +++++++++++++++ 2 files changed, 16 insertions(+) create mode 100644 indoteknik_custom/models/user_company_request.py (limited to 'indoteknik_custom/models') diff --git a/indoteknik_custom/models/__init__.py b/indoteknik_custom/models/__init__.py index 62a024e3..4cb8bdda 100755 --- a/indoteknik_custom/models/__init__.py +++ b/indoteknik_custom/models/__init__.py @@ -32,6 +32,7 @@ from . import stock_picking_type from . import stock_picking from . import stock_vendor from . import user_activity_log +from . import user_company_request from . import users from . import website_brand_homepage from . import website_categories_homepage diff --git a/indoteknik_custom/models/user_company_request.py b/indoteknik_custom/models/user_company_request.py new file mode 100644 index 00000000..c69b789c --- /dev/null +++ b/indoteknik_custom/models/user_company_request.py @@ -0,0 +1,15 @@ +from odoo import models, fields + + +class UserCompanyRequest(models.Model): + _name = 'user.company.request' + _rec_name = 'user_id' + + user_id = fields.Many2one('res.partner', string='User') + user_company_id = fields.Many2one('res.partner', string='Company') + user_input = fields.Char(string='User Input') + is_approve = fields.Selection([ + ('approved', 'Approve'), + ('rejected', 'Reject'), + ], string='Approval') + \ No newline at end of file -- cgit v1.2.3 From 5c9214c1c846e61c5356e1b19341b070c2303198 Mon Sep 17 00:00:00 2001 From: Rafi Zadanly Date: Thu, 23 Feb 2023 10:39:40 +0700 Subject: partner company type and edit partner data --- indoteknik_custom/models/__init__.py | 1 + indoteknik_custom/models/res_partner.py | 1 + indoteknik_custom/models/res_partner_company_type.py | 7 +++++++ 3 files changed, 9 insertions(+) create mode 100644 indoteknik_custom/models/res_partner_company_type.py (limited to 'indoteknik_custom/models') diff --git a/indoteknik_custom/models/__init__.py b/indoteknik_custom/models/__init__.py index 4cb8bdda..ebbf2e09 100755 --- a/indoteknik_custom/models/__init__.py +++ b/indoteknik_custom/models/__init__.py @@ -19,6 +19,7 @@ from . import purchase_order_line from . import purchase_order from . import purchase_outstanding from . import purchase_pricelist +from . import res_partner_company_type from . import res_partner from . import res_users from . import sale_monitoring_detail diff --git a/indoteknik_custom/models/res_partner.py b/indoteknik_custom/models/res_partner.py index 403245fb..1cdf7c72 100644 --- a/indoteknik_custom/models/res_partner.py +++ b/indoteknik_custom/models/res_partner.py @@ -5,3 +5,4 @@ class ResPartner(models.Model): _inherit = 'res.partner' reference_number = fields.Char(string="Reference Number") + company_type_id = fields.Many2one('res.partner.company_type', string='Company Type') diff --git a/indoteknik_custom/models/res_partner_company_type.py b/indoteknik_custom/models/res_partner_company_type.py new file mode 100644 index 00000000..2bd356a1 --- /dev/null +++ b/indoteknik_custom/models/res_partner_company_type.py @@ -0,0 +1,7 @@ +from odoo import models, fields + + +class ResPartnerCompanyType(models.Model): + _name = 'res.partner.company_type' + + name = fields.Char('Name') \ No newline at end of file -- cgit v1.2.3 From 029e8fce907060de2a2514b5abc731f4cd9da96e Mon Sep 17 00:00:00 2001 From: Rafi Zadanly Date: Fri, 24 Feb 2023 15:44:15 +0700 Subject: User company request approve and reject action --- indoteknik_custom/models/user_company_request.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'indoteknik_custom/models') diff --git a/indoteknik_custom/models/user_company_request.py b/indoteknik_custom/models/user_company_request.py index c69b789c..2467261a 100644 --- a/indoteknik_custom/models/user_company_request.py +++ b/indoteknik_custom/models/user_company_request.py @@ -1,4 +1,5 @@ from odoo import models, fields +from odoo.exceptions import UserError class UserCompanyRequest(models.Model): @@ -12,4 +13,19 @@ class UserCompanyRequest(models.Model): ('approved', 'Approve'), ('rejected', 'Reject'), ], string='Approval') + + def write(self, vals): + is_approve = vals.get('is_approve') + if self.is_approve and is_approve: + raise UserError('Tidak dapat mengubah approval yang sudah diisi') + + if not self.is_approve and is_approve: + if is_approve == 'approved': + self.user_id.parent_id = self.user_company_id.id + else: + new_company = self.env['res.partner'].create({ + 'name': self.user_input + }) + self.user_id.parent_id = new_company.id + return super(UserCompanyRequest, self).write(vals) \ No newline at end of file -- cgit v1.2.3