From f599327f2a6520d4f71ca9e617b005ca11c643bc Mon Sep 17 00:00:00 2001 From: AjmalCybro Date: Thu, 15 Jun 2023 09:58:51 +0530 Subject: [PATCH] Jun 15 : [UPDT] Updated 'pos_report_generator' --- pos_report_generator/doc/RELEASE_NOTES.md | 7 +- pos_report_generator/models/pos_report.py | 82 ++++++++++++----------- 2 files changed, 49 insertions(+), 40 deletions(-) diff --git a/pos_report_generator/doc/RELEASE_NOTES.md b/pos_report_generator/doc/RELEASE_NOTES.md index ddd5b89ee..a94eb97f7 100644 --- a/pos_report_generator/doc/RELEASE_NOTES.md +++ b/pos_report_generator/doc/RELEASE_NOTES.md @@ -3,5 +3,10 @@ #### 03.06.2022 #### Version 16.0.1.0.0 #### ADD -Initial Commit +Initial Commit for POS All in One Report Generator +#### 14.06.2023 +#### Version 16.0.2.0.1 +#### FIX +-Removed the issue not displaying any information when a period is selected. +-Changed the date filter query. \ No newline at end of file diff --git a/pos_report_generator/models/pos_report.py b/pos_report_generator/models/pos_report.py index 471315144..4e2fe5705 100644 --- a/pos_report_generator/models/pos_report.py +++ b/pos_report_generator/models/pos_report.py @@ -20,6 +20,7 @@ ############################################################################# from odoo import models, fields, api +from datetime import datetime import io import json @@ -37,11 +38,16 @@ class PosReportGenerator(models.Model): date_from = fields.Datetime(string="Date From") date_to = fields.Datetime(string="Date to") report_type = fields.Selection([('report_by_order', 'Report By Order'), - ('report_by_order_detail', 'Report By Order Detail'), + ('report_by_order_detail', + 'Report By Order Detail'), ('report_by_product', 'Report By Product'), - ('report_by_categories', 'Report By Categories'), - ('report_by_salesman', 'Report By Salesman'), - ('report_by_payment', 'Report By Payment')], + ('report_by_categories', + 'Report By Categories'), + ('report_by_salesman', + 'Report By Salesman'), + ( + 'report_by_payment', + 'Report By Payment')], default='report_by_order') @api.model @@ -61,7 +67,6 @@ class PosReportGenerator(models.Model): data.update({ 'date_to': report_values.date_to, }) - # print("reports",reports) filters = self.get_filter(option) report = self._get_report_values(data) lines = self._get_report_values(data).get('POS') @@ -101,7 +106,6 @@ class PosReportGenerator(models.Model): r = self.env['pos.report'].search([('id', '=', option[0])]) default_filters = {} - filter_dict = { 'report_type': r.report_type, } @@ -110,14 +114,11 @@ class PosReportGenerator(models.Model): @api.model def create(self, vals): - print("vals", vals) - res = super(PosReportGenerator, self).create(vals) return res def write(self, vals): - res = super(PosReportGenerator, self).write(vals) return res @@ -138,10 +139,12 @@ class PosReportGenerator(models.Model): ''' term = 'Where ' if data.get('date_from'): - query += "Where l.date_order >= '%s' " % data.get('date_from') + query += "Where (l.date_order >= '%s') " % data.get( + 'date_from').strftime('%Y-%m-%d 00:00:00') term = 'AND ' if data.get('date_to'): - query += term + "l.date_order <= '%s' " % data.get('date_to') + query += term + "(l.date_order <= '%s') " % data.get( + 'date_to').strftime('%Y-%m-%d 11:59:59') query += "group by l.user_id,res_users.partner_id,res_partner.name,l.partner_id,l.date_order,pos_session.name,l.session_id,l.name,l.amount_total,l.note,l.id" self._cr.execute(query) report_by_order = self._cr.dictfetchall() @@ -161,16 +164,19 @@ class PosReportGenerator(models.Model): ''' term = 'Where ' if data.get('date_from'): - query += "Where l.date_order >= '%s' " % data.get('date_from') + query += "Where l.date_order >= '%s' " % data.get( + 'date_from').strftime('%Y-%m-%d') term = 'AND ' if data.get('date_to'): - query += term + "l.date_order <= '%s' " % data.get('date_to') + query += term + "l.date_order <= '%s' " % data.get( + 'date_to').strftime('%Y-%m-%d') query += "group by l.user_id,res_users.partner_id,res_partner.name,l.partner_id,l.date_order,pos_session.name,l.session_id,l.name,l.amount_total,l.note,pos_order_line.full_product_name,pos_order_line.price_unit,pos_order_line.price_subtotal,pos_order_line.price_subtotal_incl,pos_order_line.product_id,product_product.default_code" + self._cr.execute(query) report_by_order_details = self._cr.dictfetchall() report_sub_lines.append(report_by_order_details) elif data.get('report_type') == 'report_by_product': - query =''' + query = ''' select l.amount_total,l.amount_paid,sum(pos_order_line.qty) as qty, pos_order_line.full_product_name, pos_order_line.price_unit,product_product.default_code,product_category.name from pos_order as l left join pos_order_line on l.id = pos_order_line.order_id @@ -189,7 +195,7 @@ class PosReportGenerator(models.Model): report_by_product = self._cr.dictfetchall() report_sub_lines.append(report_by_product) elif data.get('report_type') == 'report_by_categories': - query =''' + query = ''' select product_category.name,sum(l.qty) as qty,sum(l.price_subtotal) as amount_total,sum(price_subtotal_incl) as total_incl from pos_order_line as l left join product_template on l.product_id = product_template.id @@ -198,34 +204,36 @@ class PosReportGenerator(models.Model): ''' term = 'Where ' if data.get('date_from'): - query += "Where pos_order.date_order >= '%s' " % data.get('date_from') + query += "Where pos_order.date_order >= '%s' " % data.get( + 'date_from') term = 'AND ' if data.get('date_to'): - query += term + "pos_order.date_order <= '%s' " % data.get('date_to') + query += term + "pos_order.date_order <= '%s' " % data.get( + 'date_to') query += "group by product_category.name" self._cr.execute(query) report_by_categories = self._cr.dictfetchall() report_sub_lines.append(report_by_categories) elif data.get('report_type') == 'report_by_salesman': - query =''' + query = ''' select res_partner.name,sum(pos_order_line.qty) as qty,sum(pos_order_line.price_subtotal) as amount,count(l.id) as order from pos_order as l left join res_users on l.user_id = res_users.id left join res_partner on res_users.partner_id = res_partner.id left join pos_order_line on l.id = pos_order_line.order_id ''' - term = 'Where ' - if data.get('date_from'): - query += "Where l.date_order >= '%s' " % data.get('date_from') - term = 'AND ' - if data.get('date_to'): - query += term + "l.date_order <= '%s' " % data.get('date_to') - query += "group by res_partner.name" - self._cr.execute(query) - report_by_salesman = self._cr.dictfetchall() - report_sub_lines.append(report_by_salesman) + term = 'Where ' + if data.get('date_from'): + query += "Where l.date_order >= '%s' " % data.get('date_from') + term = 'AND ' + if data.get('date_to'): + query += term + "l.date_order <= '%s' " % data.get('date_to') + query += "group by res_partner.name" + self._cr.execute(query) + report_by_salesman = self._cr.dictfetchall() + report_sub_lines.append(report_by_salesman) elif data.get('report_type') == 'report_by_payment': - query =''' + query = ''' select pos_payment_method.name,sum(l.amount_total),pos_session.name as session,pos_config.name as config from pos_order as l left join pos_payment on l.id = pos_payment.pos_order_id @@ -294,9 +302,11 @@ class PosReportGenerator(models.Model): report_res_total = self._get_report_total_value(data, report) if data.get('report_type'): - report_res = self._get_report_sub_lines(data, report, date_from, date_to)[0] + report_res = \ + self._get_report_sub_lines(data, report, date_from, date_to)[0] else: - report_res = self._get_report_sub_lines(data, report, date_from, date_to) + report_res = self._get_report_sub_lines(data, report, date_from, + date_to) if data.get('report_type') == 'report_by_order': report_res_total = self._get_report_total_value(data, report)[0] @@ -310,7 +320,6 @@ class PosReportGenerator(models.Model): } def get_pos_xlsx_report(self, data, response, report_data, dfr_data): - print("fhccccccgjk") report_data_main = json.loads(report_data) output = io.BytesIO() filters = json.loads(data) @@ -370,7 +379,6 @@ class PosReportGenerator(models.Model): for rec_data in report_data_main: one_lst = [] two_lst = [] - print("iiii", rec_data) row += 1 sheet.write(row, col, rec_data['shop'], txt_l) sheet.write(row, col + 1, rec_data['session'], txt_l) @@ -417,7 +425,6 @@ class PosReportGenerator(models.Model): for rec_data in report_data_main: one_lst = [] two_lst = [] - print("iiii", rec_data) row += 1 sheet.write(row, col, rec_data['shop'], txt_l) sheet.write(row, col + 1, rec_data['session'], txt_l) @@ -429,7 +436,8 @@ class PosReportGenerator(models.Model): sheet.write(row, col + 7, rec_data['price_unit'], txt_l) sheet.write(row, col + 8, rec_data['sum'], txt_l) sheet.write(row, col + 9, rec_data['price_subtotal'], txt_l) - sheet.write(row, col + 10, rec_data['price_subtotal_incl'], txt_l) + sheet.write(row, col + 10, rec_data['price_subtotal_incl'], + txt_l) if filters.get('report_type') == 'report_by_product': @@ -462,7 +470,6 @@ class PosReportGenerator(models.Model): for rec_data in report_data_main: one_lst = [] two_lst = [] - print("iiii", rec_data) row += 1 sheet.write(row, col, rec_data['name'], txt_l) sheet.write(row, col + 1, rec_data['default_code'], txt_l) @@ -494,7 +501,6 @@ class PosReportGenerator(models.Model): for rec_data in report_data_main: one_lst = [] two_lst = [] - print("iiii", rec_data) row += 1 sheet.write(row, col, rec_data['name'], txt_l) sheet.write(row, col + 1, rec_data['qty'], txt_l) @@ -524,7 +530,6 @@ class PosReportGenerator(models.Model): for rec_data in report_data_main: one_lst = [] two_lst = [] - print("iiii", rec_data) row += 1 sheet.write(row, col, rec_data['name'], txt_l) sheet.write(row, col + 1, rec_data['order'], txt_l) @@ -555,7 +560,6 @@ class PosReportGenerator(models.Model): name = list(rec_data['name'].values())[0] one_lst = [] two_lst = [] - print("iiii", rec_data) row += 1 sheet.write(row, col, rec_data['config'], txt_l) sheet.write(row, col + 1, rec_data['session'], txt_l)