From 239c5c1403c0e47408ca0a0ad5b715e130f0c391 Mon Sep 17 00:00:00 2001 From: Oscar Alvarez Date: Sun, 24 Jan 2021 16:22:40 -0500 Subject: [PATCH] Minor fix discount --- app/mainwindow.py | 39 ++++++++++++++++++++++++++++----------- 1 file changed, 28 insertions(+), 11 deletions(-) diff --git a/app/mainwindow.py b/app/mainwindow.py index 1f42e71..31ec91b 100644 --- a/app/mainwindow.py +++ b/app/mainwindow.py @@ -1271,13 +1271,29 @@ class MainWindow(FrontWindow): if discount and discount.isdigit(): self.validate_discount(discount) - def validate_discount(self, record): - if self.model_sale_lines.rowCount() > 0: + def validate_discount(self, rec): + if self.model_sale_lines.rowCount() == 0: + return + + type_ = rec['type_discount'] + discount = int(rec['discount']) + if type_ == 'fixed': + sale_line, = self.SaleLine.find([ + ('id', '=', self._current_line_id) + ]) + price_w_tax = sale_line['product']['sale_price_w_tax'] + price = price_w_tax - discount + if price < 0: + price = 0 + res = self.set_unit_price(price) + else: + # If type is percentage will apply to all lines lines = [line['id'] for line in self.model_sale_lines._data] - res = self.set_discount(int(record['discount']), lines) - if not res: - self.message_bar.set('discount_not_valid') - return False + res = self.set_discount(discount, lines) + + if not res: + self.message_bar.set('discount_not_valid') + return False def _print_order(self, sale_id, kind, reversion=False): result = False @@ -1683,7 +1699,8 @@ class MainWindow(FrontWindow): def on_selected_discount(self, discount): self.dialog_auth_discount.close() self.dialog_control_panel.close() - print('Discount/..........', discount) + self.dialog_fixed_discount.close() + self.dialog_product_edit.close() if self._state == 'payment': dialog = self.dialog('cant_add_discount') dialog.exec_() @@ -2289,8 +2306,9 @@ class MainWindow(FrontWindow): def on_change_line_selected(self, key): self.table_sale_lines.moved_selection(key) - def action_discount_line(self): + def action_discount_line(self, record): self.dialog_fixed_discount.exec_() + self.dialog_addition_product.close() def action_addition_line(self): if not self._current_line: @@ -2330,7 +2348,7 @@ class MainWindow(FrontWindow): if self._config['tip_product']['code'] == removed_item['product.code']: self.Sale.write([self._sale['id']], {'tip': None}) - def set_discount(self, eval_value, lines_ids=[]): + def set_discount(self, eval_value, lines_ids=[], type_='percentage'): res = False try: value = round(float(str(eval_value)), 6) @@ -2347,7 +2365,7 @@ class MainWindow(FrontWindow): records = self.SaleLine.faster_set_discount({ 'line_ids': target_lines, - 'value': value + 'value': value, }) for rec in records: self.model_sale_lines.update_record(rec) @@ -2618,7 +2636,6 @@ class MainWindow(FrontWindow): if unit_price: diff = abs(current_unit_price - float(unit_price)) if diff > 1: - # unit_price = self.state_line.pop('unit_price') self._sign = '/' self._process_price(unit_price) self._sign = None