add dialog for confirm commission
modify domain sale quotations
This commit is contained in:
parent
307a67cd4c
commit
5cee4984dc
|
@ -43,17 +43,17 @@ class Login(QDialog):
|
|||
params = Params(file_config)
|
||||
self.params = params.params
|
||||
self.setObjectName('dialog_login')
|
||||
if self.params.get('tablet_mode') == 'True':
|
||||
self.tablet_mode = eval(self.params['tablet_mode'])
|
||||
self.set_style([file_tablet_css])
|
||||
else:
|
||||
if self.params.get('theme'):
|
||||
file_theme_css = os.path.join(
|
||||
pkg_dir, 'css', self.params['theme'] + '.css')
|
||||
self.set_style([file_theme_css])
|
||||
else:
|
||||
self.set_style([file_base_css])
|
||||
self.tablet_mode = None
|
||||
# if self.params.get('tablet_mode') == 'True':
|
||||
# self.tablet_mode = eval(self.params['tablet_mode'])
|
||||
# self.set_style([file_tablet_css])
|
||||
# else:
|
||||
# if self.params.get('theme'):
|
||||
# file_theme_css = os.path.join(
|
||||
# pkg_dir, 'css', self.params['theme'] + '.css')
|
||||
# self.set_style([file_theme_css])
|
||||
# else:
|
||||
# self.set_style([file_base_css])
|
||||
# self.tablet_mode = None
|
||||
self.ui = Ui_Login()
|
||||
self.ui.setupUi(self)
|
||||
self.verify_conn_th = VerifyConn(self)
|
||||
|
|
|
@ -12,23 +12,47 @@ pkg_dir = str(Path(os.path.dirname(__file__)).parents[0])
|
|||
path_pos_advanced = os.path.join(pkg_dir, 'share', 'advanced_pos.png')
|
||||
from ..tools import get_screen
|
||||
|
||||
dimensions = {
|
||||
'large': (1173, 666),
|
||||
'medium': (1173, 666),
|
||||
'small': (900, 666),
|
||||
}
|
||||
|
||||
STYLE = """
|
||||
QMainWindow {
|
||||
margin: 0;
|
||||
background-color: rgb(246, 245, 244);
|
||||
}
|
||||
|
||||
"""
|
||||
|
||||
|
||||
class Ui_Login(object):
|
||||
def setupUi(self, MainWindow):
|
||||
if not MainWindow.objectName():
|
||||
MainWindow.setObjectName(u"MainWindow")
|
||||
width, height = get_screen()
|
||||
MainWindow.resize(width*0.6109, height*0.6166)
|
||||
screen_size = 'large'
|
||||
if width <= 1024:
|
||||
screen_size = 'small'
|
||||
elif width <= 1366:
|
||||
screen_size = 'medium'
|
||||
# MainWindow.resize(width*0.6109, height*0.6166)
|
||||
MainWindow.resize(*dimensions[screen_size])
|
||||
icon = QIcon()
|
||||
icon.addFile(u"../.pos_app/presik_pos_v2/app/share/pos-icon.ico", QSize(), QIcon.Normal, QIcon.Off)
|
||||
MainWindow.setWindowIcon(icon)
|
||||
MainWindow.setWindowOpacity(1.0)
|
||||
MainWindow.setStyleSheet(u"margin:0;background-color: rgb(246, 245, 244);")
|
||||
MainWindow.setStyleSheet(STYLE)
|
||||
# MainWindow.setStyleSheet(u"margin:0;background-color: rgb(246, 245, 244);")
|
||||
self.centralwidget = QWidget(MainWindow)
|
||||
self.centralwidget.setObjectName(u"centralwidget")
|
||||
self.gridGroupBoxMain = QGroupBox(self.centralwidget)
|
||||
self.gridGroupBoxMain.setObjectName(u"gridGroupBoxMain")
|
||||
self.gridGroupBoxMain.setGeometry(QRect(0, -10, width*0.6109, 681))
|
||||
qrect = QRect(0, -10, width*0.6109, 681)
|
||||
if screen_size == 'small':
|
||||
qrect = QRect(0, -10, width*0.9, height)
|
||||
self.gridGroupBoxMain.setGeometry(qrect)
|
||||
self.gridLayout_2 = QGridLayout(self.gridGroupBoxMain)
|
||||
self.gridLayout_2.setObjectName(u"gridLayout_2")
|
||||
self.gridLayout = QGridLayout()
|
||||
|
@ -216,7 +240,11 @@ class Ui_Login(object):
|
|||
|
||||
self.label_image = QLabel(self.gridGroupBoxMain)
|
||||
self.label_image.setObjectName(u"label_image")
|
||||
self.label_image.setMaximumSize(QSize(width*0.3807, height*0.6120))
|
||||
size_image = QSize(width*0.3807, height*0.6120)
|
||||
if screen_size == 'small':
|
||||
size_image = QSize(width*0.6807, height)
|
||||
|
||||
self.label_image.setMaximumSize(size_image)
|
||||
self.label_image.setPixmap(QPixmap(path_pos_advanced))
|
||||
self.label_image.setScaledContents(True)
|
||||
|
||||
|
|
|
@ -203,7 +203,7 @@ class SearchSale(SearchWindow):
|
|||
widths_append(90)
|
||||
|
||||
title = ('BUSCAR PEDIDOS...')
|
||||
methods = {
|
||||
self.methods = {
|
||||
'on_selected_method': 'on_selected_sale',
|
||||
'on_return_method': 'on_selected_sale'
|
||||
}
|
||||
|
@ -256,11 +256,15 @@ class SearchSale(SearchWindow):
|
|||
self.buttons_layout_filter.addWidget(self.pushButtonCredit)
|
||||
self.buttons_layout_filter.addWidget(self.pushButtonReservation)
|
||||
widgets_to_create = self.buttons_layout_filter
|
||||
super(SearchSale, self).__init__(parent, headers, None, methods,
|
||||
super(SearchSale, self).__init__(parent, headers, None, self.methods,
|
||||
filter_column=(1, 2, 3, 4, 5, 6, 7), cols_width=widths,
|
||||
title=title, fill=True, widgets=[widgets_to_create])
|
||||
|
||||
def action_search_sale(self, _type):
|
||||
if _type == 'quotation':
|
||||
self.on_return_method = 'on_search_sale_by_number'
|
||||
else:
|
||||
self.on_return_method = 'on_selected_sale'
|
||||
self.parent.search_sales_by_domain(_type)
|
||||
|
||||
|
||||
|
|
41
app/main.py
41
app/main.py
|
@ -252,12 +252,21 @@ class AppWindow(FrontWindow):
|
|||
return
|
||||
if not self.validate_payment_term():
|
||||
return
|
||||
sale, = self.Sale.find([['id', '=', self._sale['id']]], fields=['invoice_type', 'total_amount'])
|
||||
sale_id = self._sale['id']
|
||||
sale, = self.Sale.find([['id', '=', sale_id]], fields=['invoice_type', 'total_amount'])
|
||||
if sale['invoice_type'] == 'P' and self._config.get('uvt_pos') and sale['total_amount'] > self._config['uvt_pos']:
|
||||
return self.dialog('base_uvt_pos')
|
||||
|
||||
args = {'sale_id': self._sale['id']}
|
||||
args = {'sale_id': sale_id}
|
||||
self.Sale.to_quote(args)
|
||||
if self._sale.get('agent.'):
|
||||
sale, = self.Sale.find([['id', '=', sale_id]], fields=['agent.rec_name', 'commission'])
|
||||
msg = 'Agente: ' + sale['agent.'].get('rec_name') + "\n Comision: " + str(sale['commission']) + "%"
|
||||
dialog = self.dialog('confirm_agent', response=True, widgets=[], extra_message=msg)
|
||||
response = dialog.exec_()
|
||||
if response == DIALOG_REPLY_NO:
|
||||
self.Sale.write([sale_id], {'state': 'draft'})
|
||||
return
|
||||
if self.model_sale_lines.rowCount() > 0:
|
||||
if self.check_salesman():
|
||||
# self.state_disabled()
|
||||
|
@ -266,7 +275,7 @@ class AppWindow(FrontWindow):
|
|||
_copies = self.shop['order_copies']
|
||||
if _copies:
|
||||
for i in range(_copies):
|
||||
self.action_send_order(sale_id=self._sale['id'], init_view=False)
|
||||
self.action_send_order(sale_id=sale_id, init_view=False)
|
||||
except Exception as e:
|
||||
logging.error('error de impresion %s', e)
|
||||
pass
|
||||
|
@ -291,11 +300,13 @@ class AppWindow(FrontWindow):
|
|||
def button_to_draft_pressed(self):
|
||||
# Return sale to draft state when state quotation
|
||||
self.Sale.button_method('draft', [self._sale['id']])
|
||||
self._sale['state'] = 'draft'
|
||||
self.buttons_stacked.button_to_draft.hide()
|
||||
self.buttons_stacked.button_to_quote.show()
|
||||
|
||||
def button_to_quote_pressed(self):
|
||||
self.Sale.button_method('quote', [self._sale['id']])
|
||||
self._sale['state'] = 'quotation'
|
||||
self.buttons_stacked.button_to_quote.hide()
|
||||
self.buttons_stacked.button_to_draft.show()
|
||||
|
||||
|
@ -1645,9 +1656,9 @@ class AppWindow(FrontWindow):
|
|||
def action_agent(self):
|
||||
self.dialog_agent.exec_()
|
||||
res = self.field_commission_ask.text()
|
||||
if not res:
|
||||
return
|
||||
# commission = float(res)
|
||||
# if not res:
|
||||
# return
|
||||
commission = float(res or 0)
|
||||
sale, = self.Sale.find([
|
||||
('id', '=', self._sale['id']),
|
||||
])
|
||||
|
@ -1669,11 +1680,11 @@ class AppWindow(FrontWindow):
|
|||
comm_string = str('[' + str(commission) + ']'
|
||||
+ ' ') + (str(self.field_agent_ask.text()))
|
||||
self.field_agent.setText(comm_string)
|
||||
self._set_commission_amount(sale['untaxed_amount'], commission)
|
||||
# self._set_commission_amount(sale['untaxed_amount'], commission)
|
||||
|
||||
def _set_commission_amount(self, untaxed_amount, commission):
|
||||
untaxed_amount = int(untaxed_amount)
|
||||
commission = int(commission)
|
||||
commission = int(commission if commission else 0)
|
||||
total = ((untaxed_amount * commission) / 100)
|
||||
self.field_commission_amount.setText(str(total))
|
||||
|
||||
|
@ -2004,6 +2015,8 @@ class AppWindow(FrontWindow):
|
|||
elif _type == 'reservation':
|
||||
dom.append(('reservation', '=', True))
|
||||
else:
|
||||
self.dialog_search_sales.set_from_values([])
|
||||
return
|
||||
dom.append(('state', '=', 'quotation'))
|
||||
|
||||
# dom.append(['payment_method', '!=', 'all_paid'])
|
||||
|
@ -2021,6 +2034,17 @@ class AppWindow(FrontWindow):
|
|||
self.dialog_search_sales.set_counter_control(sales_draft)
|
||||
print(time.time() - time1, 'search sales')
|
||||
|
||||
def on_search_sale_by_number(self):
|
||||
target = self.dialog_search_sales.filter_field.text()
|
||||
if not target:
|
||||
return
|
||||
dom = [
|
||||
('state', '=', 'quotation'),
|
||||
('number', '=', target)
|
||||
]
|
||||
fields = self.dialog_search_sales.fields_names
|
||||
sales = self.Sale.find(dom, fields=fields, order=[('id', 'DESC')])
|
||||
self.dialog_search_sales.set_from_values(sales)
|
||||
|
||||
def on_selected_sale(self):
|
||||
sale_id = self.dialog_search_sales.get_id()
|
||||
|
@ -3401,6 +3425,7 @@ class AppWindow(FrontWindow):
|
|||
self.action_position()
|
||||
elif key == Qt.Key_Semicolon and self._commission_activated:
|
||||
sale = self.get_current_sale()
|
||||
print(sale, 'this is sale')
|
||||
if sale['state'] == 'draft' and self._state not in ['checkout', 'payment']:
|
||||
self.action_agent()
|
||||
elif key == Qt.Key_QuoteDbl:
|
||||
|
|
|
@ -66,4 +66,5 @@ class StackMessages(QWidget):
|
|||
'dont_delete_product': ('error', 'PARA ELIMINAR UN PRODUCTO DE LA VENTA DEBE FORZAR A BORRADOR EN TRYTON.'),
|
||||
'base_uvt_pos': ('info', 'VENTA SUPERA LA BASE, \n DEBE SELECCIONAR VENTA ELECTRONICA.'),
|
||||
'process_invoice_failed': ('error', 'ERROR AL PROCESAR FACTURA'),
|
||||
'confirm_agent': ('question', 'Confirmar comision de agente')
|
||||
}
|
||||
|
|
|
@ -1 +1 @@
|
|||
__version__ = "6.0.14"
|
||||
__version__ = "6.0.15"
|
||||
|
|
Loading…
Reference in New Issue