From f4f150ec2492b048886e1965a0a650864295c76c Mon Sep 17 00:00:00 2001 From: Rafi Zadanly Date: Mon, 15 May 2023 16:22:21 +0700 Subject: grand total field, compute grand total, sale order print for website, fix sale order download pdf api --- indoteknik_api/controllers/api_v1/sale_order.py | 10 +- indoteknik_api/models/sale_order.py | 3 +- indoteknik_custom/__manifest__.py | 3 +- indoteknik_custom/models/sale_order.py | 5 + indoteknik_custom/report/report_sale_order.xml | 273 ++++++++++++++++++++++++ indoteknik_custom/views/sale_order.xml | 1 + 6 files changed, 290 insertions(+), 5 deletions(-) create mode 100644 indoteknik_custom/report/report_sale_order.xml diff --git a/indoteknik_api/controllers/api_v1/sale_order.py b/indoteknik_api/controllers/api_v1/sale_order.py index ec39b32a..8fe1bb52 100644 --- a/indoteknik_api/controllers/api_v1/sale_order.py +++ b/indoteknik_api/controllers/api_v1/sale_order.py @@ -187,7 +187,7 @@ class SaleOrder(controller.Controller): return self.response('Unauthorized') sale_order = request.env['sale.order'].sudo().search_read([('id', '=', id)], ['name']) - pdf, type = request.env['ir.actions.report'].sudo().search([('report_name', '=', 'sale.report_saleorder')])._render_qweb_pdf([id]) + pdf, type = request.env['ir.actions.report'].sudo().search([('report_name', '=', 'indoteknik_custom.report_saleorder_website')])._render_qweb_pdf([id]) if pdf and len(sale_order) > 0: return rest_api.response_attachment({ 'content': pdf, @@ -235,7 +235,9 @@ class SaleOrder(controller.Controller): 'po_number': [], 'po_file': [], 'type': [], - 'delivery_amount': ['number', 'default:0'] + 'delivery_amount': ['number', 'default:0'], + 'carrier_id': [], + 'delivery_service_type': [] }) if not params['valid']: @@ -260,7 +262,9 @@ class SaleOrder(controller.Controller): 'partner_purchase_order_file': params['value']['po_file'], 'delivery_amt': params['value']['delivery_amount'], 'shipping_cost_covered': 'customer', - 'shipping_paid_by': 'customer' + 'shipping_paid_by': 'customer', + 'carrier_id': params['value']['carrier_id'], + 'delivery_service_type': params['value']['delivery_service_type'], } if params['value']['type'] == 'sale_order': parameters['approval_status'] = 'pengajuan1' diff --git a/indoteknik_api/models/sale_order.py b/indoteknik_api/models/sale_order.py index cadf9f77..9661a0ba 100644 --- a/indoteknik_api/models/sale_order.py +++ b/indoteknik_api/models/sale_order.py @@ -12,7 +12,7 @@ class SaleOrder(models.Model): 'sales': sale_order.user_id.name, 'amount_untaxed': sale_order.amount_untaxed, 'amount_tax': sale_order.amount_tax, - 'amount_total': sale_order.amount_total, + 'amount_total': sale_order.grand_total, 'purchase_order_name': sale_order.partner_purchase_order_name or sale_order.client_order_ref, 'purchase_order_file': True if sale_order.partner_purchase_order_file else False, 'invoice_count': sale_order.invoice_count, @@ -49,6 +49,7 @@ class SaleOrder(models.Model): data_with_detail = { 'payment_term': sale_order.payment_term_id.name or '', 'products': [], + 'delivery_amount': sale_order.delivery_amt or 0, 'address': { 'customer': res_users.api_address_response(sale_order.partner_id), 'invoice': res_users.api_address_response(sale_order.partner_invoice_id), diff --git a/indoteknik_custom/__manifest__.py b/indoteknik_custom/__manifest__.py index d9e98975..c52e27b7 100755 --- a/indoteknik_custom/__manifest__.py +++ b/indoteknik_custom/__manifest__.py @@ -79,7 +79,8 @@ 'report/report_banner_banner2.xml', 'report/purchase_order.xml', 'report/report_invoice.xml', - 'report/report_picking.xml' + 'report/report_picking.xml', + 'report/report_sale_order.xml', ], 'demo': [], 'css': [], diff --git a/indoteknik_custom/models/sale_order.py b/indoteknik_custom/models/sale_order.py index 69e96968..14c87641 100755 --- a/indoteknik_custom/models/sale_order.py +++ b/indoteknik_custom/models/sale_order.py @@ -73,6 +73,7 @@ class SaleOrder(models.Model): gross_amount = fields.Float(string='Gross Amount', help='Jumlah pembayaran yang dilakukan dengan Midtrans') notification = fields.Char(string='Notification', help='Dapat membantu error dari approval') 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') @api.model def _generate_so_access_token(self, limit=50): @@ -362,6 +363,10 @@ class SaleOrder(models.Model): for line in self.order_line: line.product_id_change() + def _compute_grand_total(self): + for order in self: + order.grand_total = order.delivery_amt + order.amount_total + class SaleOrderLine(models.Model): _inherit = 'sale.order.line' diff --git a/indoteknik_custom/report/report_sale_order.xml b/indoteknik_custom/report/report_sale_order.xml new file mode 100644 index 00000000..595a989f --- /dev/null +++ b/indoteknik_custom/report/report_sale_order.xml @@ -0,0 +1,273 @@ + + + + + Quotation / Order (Website) + sale.order + qweb-pdf + indoteknik_custom.report_saleorder_website + indoteknik_custom.report_saleorder_website + (object.state in ('draft', 'sent') and 'Quotation - %s' % (object.name)) or 'Order - %s' % (object.name) + + report + + + + + + + + + + + \ No newline at end of file diff --git a/indoteknik_custom/views/sale_order.xml b/indoteknik_custom/views/sale_order.xml index fde93a9b..c66201a9 100755 --- a/indoteknik_custom/views/sale_order.xml +++ b/indoteknik_custom/views/sale_order.xml @@ -65,6 +65,7 @@ + -- cgit v1.2.3