Minor fix
This commit is contained in:
parent
2b22781681
commit
3933813eda
|
@ -38,7 +38,8 @@ class MessageBar(QHBoxLayout):
|
|||
type_, msg_string = self.stack_messages.get(msg)
|
||||
if additional_info:
|
||||
msg_string = msg_string % additional_info
|
||||
self.label_info.setText(msg_string)
|
||||
print('----', msg_string)
|
||||
self.label_info.setText(self.tr(msg_string))
|
||||
self.type = type_
|
||||
self.update_style()
|
||||
|
||||
|
|
|
@ -1,12 +1,10 @@
|
|||
# -*- coding: UTF-8 -*-
|
||||
import os
|
||||
import time
|
||||
from datetime import date
|
||||
import logging
|
||||
from pathlib import Path
|
||||
from collections import OrderedDict
|
||||
from PyQt5.QtWidgets import QMainWindow, QDesktopWidget, QLabel, QLineEdit
|
||||
from PyQt5.QtCore import QTimer, QThread, pyqtSignal, Qt
|
||||
from PyQt5.QtWidgets import QMainWindow, QDesktopWidget, QLineEdit
|
||||
from PyQt5.QtCore import QTimer, QThread, pyqtSignal
|
||||
|
||||
from .commons.dialogs import QuickDialog
|
||||
from .commons.dblogin import safe_reconnect
|
||||
|
@ -71,11 +69,10 @@ class FrontWindow(QMainWindow):
|
|||
self.screen_size = 'medium'
|
||||
|
||||
self.timeout = _DEFAULT_TIMEOUT
|
||||
self.set_stack_messages()
|
||||
|
||||
self.setFocus()
|
||||
self.global_timer = 0
|
||||
print('Screen Size: > ', self.screen_size)
|
||||
# print('Screen Size: > ', self.screen_size)
|
||||
_theme = params['theme'] if params.get('theme') else None
|
||||
self.profile_printer = params['profile_printer'] if params.get('profile_printer') else 'TM-P80'
|
||||
self.set_style(SCREENS[self.screen_size], _theme)
|
||||
|
@ -98,21 +95,6 @@ class FrontWindow(QMainWindow):
|
|||
screen = QDesktopWidget().screenGeometry()
|
||||
return screen.width(), screen.height()
|
||||
|
||||
def set_statusbar(self, values):
|
||||
status_bar = self.statusBar()
|
||||
status_bar.setSizeGripEnabled(False)
|
||||
|
||||
for k, v in values.items():
|
||||
_label = QLabel(v['name'] + ':')
|
||||
_label.setAlignment(Qt.AlignRight | Qt.AlignVCenter)
|
||||
_label.setObjectName('label_status_bar')
|
||||
status_bar.addWidget(_label, 1)
|
||||
setattr(self, k, QLabel(str(v['value'])))
|
||||
_field_info = getattr(self, k)
|
||||
_field_info.setObjectName('field_status_bar')
|
||||
_field_info.setAlignment(Qt.AlignLeft | Qt.AlignVCenter)
|
||||
status_bar.addWidget(_field_info)
|
||||
|
||||
def set_style(self, file_css, theme_css=None):
|
||||
styles = []
|
||||
if theme_css:
|
||||
|
@ -146,7 +128,7 @@ class FrontWindow(QMainWindow):
|
|||
self.check_empty_sale()
|
||||
if self.active_weighing and self.reader_thread:
|
||||
self.reader_thread.onClose()
|
||||
super(MainWindow, self).close()
|
||||
super(FrontWindow, self).close()
|
||||
|
||||
def dialog(self, name, response=False):
|
||||
res = QuickDialog(
|
||||
|
@ -174,53 +156,6 @@ class FrontWindow(QMainWindow):
|
|||
def keyReleaseEvent(self, event):
|
||||
self._keyStates[event.key()] = False
|
||||
|
||||
def set_stack_messages(self):
|
||||
messages = {
|
||||
'system_ready': ('info', self.tr('SYSTEM READY...')),
|
||||
'confirm_exit': ('warning', self.tr('DO YOU WANT TO EXIT?')),
|
||||
'confirm_credit': ('question', self.tr('PLEASE CONFIRM YOUR PAYMENT TERM AS CREDIT?')),
|
||||
'sale_number_not_found': ('warning', self.tr('SALE ORDER / INVOICE NUMBER NOT FOUND!')),
|
||||
'sale_closed': ('error', self.tr('THIS SALE IS CLOSED, YOU CAN NOT TO MODIFY!')),
|
||||
'discount_not_valid': ('warning', self.tr('DISCOUNT VALUE IS NOT VALID!')),
|
||||
'add_payment_sale_draft': ('info', self.tr('YOU CAN NOT ADD PAYMENTS TO SALE ON DRAFT STATE!')),
|
||||
'enter_quantity': ('question', self.tr('ENTER QUANTITY...')),
|
||||
'enter_discount': ('question', self.tr('ENTER DISCOUNT...')),
|
||||
'enter_payment': ('question', self.tr('ENTER PAYMENT AMOUNT BY: %s')),
|
||||
'enter_new_price': ('question', self.tr('ENTER NEW PRICE...')),
|
||||
'order_successfully': ('info', self.tr('ORDER SUCCESUFULLY SENT.')),
|
||||
'order_failed': ('warning', self.tr('FAILED SEND ORDER!')),
|
||||
'missing_agent': ('warning', self.tr('MISSING AGENT!')),
|
||||
'missing_salesman': ('warning', self.tr('THERE IS NOT SALESMAN FOR THE SALE!')),
|
||||
'sale_without_products': ('warning', self.tr('YOU CAN NOT CONFIRM A SALE WITHOUT PRODUCTS!')),
|
||||
'user_without_permission': ('error', self.tr('USER WITHOUT PERMISSION FOR SALE POS!')),
|
||||
'quantity_not_valid': ('error', self.tr('THE QUANTITY IS NOT VALID...!')),
|
||||
'user_not_permissions_device': ('error', self.tr('THE USER HAVE NOT PERMISSIONS FOR ACCESS TO DEVICE!')),
|
||||
'missing_party_configuration': ('warning', self.tr('MISSING THE DEFAULT PARTY ON SHOP CONFIGURATION!')),
|
||||
'missing_journal_device': ('error', self.tr('MISSING SET THE JOURNAL ON DEVICE!')),
|
||||
'statement_closed': ('error', self.tr('THERE IS NOT A STATEMENT OPEN FOR THIS DEVICE!')),
|
||||
'product_not_found': ('warning', self.tr('PRODUCT NOT FOUND!')),
|
||||
'must_load_or_create_sale': ('warning', self.tr('FIRST YOU MUST CREATE/LOAD A SALE!')),
|
||||
'new_sale': ('warning', self.tr('DO YOU WANT CREATE NEW SALE?')),
|
||||
'cancel_sale': ('question', self.tr('ARE YOU WANT TO CANCEL SALE?')),
|
||||
'not_permission_delete_sale': ('info', self.tr('YOU HAVE NOT PERMISSIONS FOR DELETE THIS SALE!')),
|
||||
'not_permission_for_cancel': ('info', self.tr('YOU HAVE NOT PERMISSIONS FOR CANCEL THIS SALE!')),
|
||||
'customer_not_credit': ('info', self.tr('THE CUSTOMER HAS NOT CREDIT!')),
|
||||
'agent_not_found': ('warning', self.tr('AGENT NOT FOUND!')),
|
||||
'invalid_commission': ('warning', self.tr('COMMISSION NOT VALID!')),
|
||||
'credit_limit_exceed': ('info', self.tr('CREDIT LIMIT FOR CUSTOMER EXCEED!')),
|
||||
'credit_limit_capacity': ('info', self.tr('THE CUSTOMER CREDIT CAPACITY IS ABOVE 80%')),
|
||||
'not_can_force_assign': ('warning', self.tr('YOU CAN NOT FORCE ASSIGN!')),
|
||||
'send_electronic_failed': ('info', self.tr('FALLO EL ENVIO DE FACTURA!')),
|
||||
'invoice_done_failed': ('info', self.tr('FALLO FINALIZACIÓN DE FACTURA!')),
|
||||
'without_stock_quantity': ('info', self.tr('PRODUCT WITHOUT STOCK: %s')),
|
||||
'not_sale': ('info', self.tr('NOT SALE!...')),
|
||||
'statement_created': ('info', self.tr('STATEMENTS CREATED!')),
|
||||
'statement_finish': ('info', self.tr('STATEMENTS CLOSED!')),
|
||||
'order_dispatched': ('info', self.tr('ORDER DISPATCHED!')),
|
||||
'error_order_dispatched': ('error', self.tr('ERROR TO DISPATCHED ORDER!')),
|
||||
}
|
||||
self.stack_msg = messages
|
||||
|
||||
def create_dialogs(self):
|
||||
self.dialog_control_panel = ControlPanel(self).get(self.menu_control_panel)
|
||||
self.dialog_money_count = DialogTableMoneyCount(self).get()
|
||||
|
@ -407,16 +342,6 @@ class FrontWindow(QMainWindow):
|
|||
self.Channel = FastModel('sale.web_channel', self.ctx)
|
||||
return True
|
||||
|
||||
def create_statusbar(self):
|
||||
values = OrderedDict([
|
||||
('stb_shop', {'name': self.tr('SHOP'), 'value': self.shop['name']}),
|
||||
('stb_device', {'name': self.tr('DEVICE'), 'value': self.device['name']}),
|
||||
('stb_database', {'name': self.tr('DATABASE'), 'value': self.database}),
|
||||
('stb_user', {'name': self.tr('USER'), 'value': self.user}),
|
||||
('stb_printer', {'name': self.tr('PRINTER'), 'value': self.printer_sale_name})
|
||||
])
|
||||
self.set_statusbar(values)
|
||||
|
||||
|
||||
class ClearUi(QThread):
|
||||
sigActionClear = pyqtSignal()
|
||||
|
|
|
@ -1,3 +0,0 @@
|
|||
import os
|
||||
|
||||
locale_path = path_trans = os.path.join(os.path.abspath(os.path.dirname(__file__)), 'i18n_es')
|
Binary file not shown.
|
@ -172,7 +172,7 @@
|
|||
<message>
|
||||
<location filename="../dialogs.py" line="700"/>
|
||||
<source>TYPE VEHICLE:</source>
|
||||
<translation>TIPO DE VEHÍCULO</translation>
|
||||
<translation>TIPO DE VEHÍCULO:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs.py" line="711"/>
|
||||
|
@ -274,7 +274,7 @@
|
|||
<message>
|
||||
<location filename="../dialogs.py" line="325"/>
|
||||
<source>SALES HISTORY</source>
|
||||
<translation>HISTORIAL DE VENTAS:</translation>
|
||||
<translation>HISTORIAL DE VENTAS</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -415,7 +415,7 @@
|
|||
<message>
|
||||
<location filename="../dialogs.py" line="808"/>
|
||||
<source>TOTAL MONEY:</source>
|
||||
<translation>TOTAL DINERO</translation>
|
||||
<translation>TOTAL DINERO:</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -483,245 +483,10 @@
|
|||
<context>
|
||||
<name>FrontWindow</name>
|
||||
<message>
|
||||
<location filename="../frontwindow.py" line="42"/>
|
||||
<location filename="../frontwindow.py" line="40"/>
|
||||
<source>APPLICATION</source>
|
||||
<translation>APLICACION</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../frontwindow.py" line="179"/>
|
||||
<source>SYSTEM READY...</source>
|
||||
<translation>SISTEMA LISTO...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../frontwindow.py" line="180"/>
|
||||
<source>DO YOU WANT TO EXIT?</source>
|
||||
<translation>DESEA SALIR?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../frontwindow.py" line="181"/>
|
||||
<source>PLEASE CONFIRM YOUR PAYMENT TERM AS CREDIT?</source>
|
||||
<translation>CONFIRME QUE LA FORMA DE PAGO ES CREDITO?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../frontwindow.py" line="182"/>
|
||||
<source>SALE ORDER / INVOICE NUMBER NOT FOUND!</source>
|
||||
<translation>ORDEN / FACTURA NO ENCONTRADA!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../frontwindow.py" line="183"/>
|
||||
<source>THIS SALE IS CLOSED, YOU CAN NOT TO MODIFY!</source>
|
||||
<translation>ESTA CUENTA ESTA CERRADA NO PUEDE MODIFICARLA!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../frontwindow.py" line="184"/>
|
||||
<source>DISCOUNT VALUE IS NOT VALID!</source>
|
||||
<translation>DESCUENTO NO VALIDO!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../frontwindow.py" line="185"/>
|
||||
<source>YOU CAN NOT ADD PAYMENTS TO SALE ON DRAFT STATE!</source>
|
||||
<translation>NO PUEDE AGREGAR PAGOS A UNA VENTA EN BORRADOR!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../frontwindow.py" line="186"/>
|
||||
<source>ENTER QUANTITY...</source>
|
||||
<translation>INGRESE LA CANTIDAD...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../frontwindow.py" line="187"/>
|
||||
<source>ENTER DISCOUNT...</source>
|
||||
<translation>INGRESE EL DESCUENTO...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../frontwindow.py" line="188"/>
|
||||
<source>ENTER PAYMENT AMOUNT BY: %s</source>
|
||||
<translation>INGRESE EL VALOR A PAGAR: %s</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../frontwindow.py" line="189"/>
|
||||
<source>ENTER NEW PRICE...</source>
|
||||
<translation>INGRESE EL NUEVO PRECIO...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../frontwindow.py" line="190"/>
|
||||
<source>ORDER SUCCESUFULLY SENT.</source>
|
||||
<translation>ORDEN ENVIADA EXITOSAMENTE.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../frontwindow.py" line="191"/>
|
||||
<source>FAILED SEND ORDER!</source>
|
||||
<translation>FALLO EL ENVIO DE LA ORDEN!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../frontwindow.py" line="192"/>
|
||||
<source>MISSING AGENT!</source>
|
||||
<translation>FALTA EL AGENTE!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../frontwindow.py" line="193"/>
|
||||
<source>THERE IS NOT SALESMAN FOR THE SALE!</source>
|
||||
<translation>NO HAY MESERO ASIGNADO!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../frontwindow.py" line="194"/>
|
||||
<source>YOU CAN NOT CONFIRM A SALE WITHOUT PRODUCTS!</source>
|
||||
<translation>NO PUEDE CONFIRMAR UNA ORDEN SIN PRODUCTOS!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../frontwindow.py" line="195"/>
|
||||
<source>USER WITHOUT PERMISSION FOR SALE POS!</source>
|
||||
<translation>USUARIO SIN PERMISOS DE EVNTAS POS!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../frontwindow.py" line="196"/>
|
||||
<source>THE QUANTITY IS NOT VALID...!</source>
|
||||
<translation>LA CANTIDAD NO ES VÁLIDA...!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../frontwindow.py" line="197"/>
|
||||
<source>THE USER HAVE NOT PERMISSIONS FOR ACCESS TO DEVICE!</source>
|
||||
<translation>EL USUARIO NO TIENE PERMISOS PARA ACCEDER AL DISPOSITIVO!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../frontwindow.py" line="198"/>
|
||||
<source>MISSING THE DEFAULT PARTY ON SHOP CONFIGURATION!</source>
|
||||
<translation>FALTA EL TERCERO POR DEFECTO EN LA CONFIGURACION!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../frontwindow.py" line="199"/>
|
||||
<source>MISSING SET THE JOURNAL ON DEVICE!</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../frontwindow.py" line="200"/>
|
||||
<source>THERE IS NOT A STATEMENT OPEN FOR THIS DEVICE!</source>
|
||||
<translation>NO HAY ESTADOS DE CUENTA ABIERTOS PARA EL DISPOSITIVO!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../frontwindow.py" line="201"/>
|
||||
<source>PRODUCT NOT FOUND!</source>
|
||||
<translation>PRODUCTO NO ENCONTRADO!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../frontwindow.py" line="202"/>
|
||||
<source>FIRST YOU MUST CREATE/LOAD A SALE!</source>
|
||||
<translation>PRIMERO DEBES CREAR/CARGAR UNA VENTA!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../frontwindow.py" line="203"/>
|
||||
<source>DO YOU WANT CREATE NEW SALE?</source>
|
||||
<translation>DESEA CREAR UNA NUEVA ORDER?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../frontwindow.py" line="204"/>
|
||||
<source>ARE YOU WANT TO CANCEL SALE?</source>
|
||||
<translation>DESEA CANCELAR LA VENTA?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../frontwindow.py" line="205"/>
|
||||
<source>YOU HAVE NOT PERMISSIONS FOR DELETE THIS SALE!</source>
|
||||
<translation>NO TIENES PERMISOS PARA BORRAR LA VENTA!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../frontwindow.py" line="206"/>
|
||||
<source>YOU HAVE NOT PERMISSIONS FOR CANCEL THIS SALE!</source>
|
||||
<translation>NO TIENES PERMISOS PARA BORRAR LA VENTA!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../frontwindow.py" line="207"/>
|
||||
<source>THE CUSTOMER HAS NOT CREDIT!</source>
|
||||
<translation>EL CLIENTE NO TIENE CREDITO!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../frontwindow.py" line="208"/>
|
||||
<source>AGENT NOT FOUND!</source>
|
||||
<translation>AGENTE NO ENCONTRADO!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../frontwindow.py" line="209"/>
|
||||
<source>COMMISSION NOT VALID!</source>
|
||||
<translation>COMISION NO VALIDA!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../frontwindow.py" line="210"/>
|
||||
<source>CREDIT LIMIT FOR CUSTOMER EXCEED!</source>
|
||||
<translation>LIMITE DE CREDITO PARA CLIENTE EXCEDIDO!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../frontwindow.py" line="211"/>
|
||||
<source>THE CUSTOMER CREDIT CAPACITY IS ABOVE 80%</source>
|
||||
<translation>EL CLIENTE ESTA EN UNA CAPACIDAD DE CREDITO POR ARRIBA DEL 80%</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../frontwindow.py" line="212"/>
|
||||
<source>YOU CAN NOT FORCE ASSIGN!</source>
|
||||
<translation>TU NO PUEDES FORZAR ASIGNACION!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../frontwindow.py" line="213"/>
|
||||
<source>FALLO EL ENVIO DE FACTURA!</source>
|
||||
<translation>FALLO EL ENVIO DE FACTURA!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../frontwindow.py" line="214"/>
|
||||
<source>FALLO FINALIZACIÃN DE FACTURA!</source>
|
||||
<translation>FALLO FINALIZACIÃN DE FACTURA!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../frontwindow.py" line="215"/>
|
||||
<source>PRODUCT WITHOUT STOCK: %s</source>
|
||||
<translation>PRODUCTO SIN INVENTARIO: %s</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../frontwindow.py" line="216"/>
|
||||
<source>NOT SALE!...</source>
|
||||
<translation>NO HAY VENTA...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../frontwindow.py" line="217"/>
|
||||
<source>STATEMENTS CREATED!</source>
|
||||
<translation>ESTADOS DE CUENTA CREADOS!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../frontwindow.py" line="218"/>
|
||||
<source>STATEMENTS CLOSED!</source>
|
||||
<translation>ESTADOS DE CUENTA CERRADO!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../frontwindow.py" line="219"/>
|
||||
<source>ORDER DISPATCHED!</source>
|
||||
<translation>ORDEN DESPACHADA!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../frontwindow.py" line="220"/>
|
||||
<source>ERROR TO DISPATCHED ORDER!</source>
|
||||
<translation>ERROR EN EL DESAPACHO DE LA ORDEN!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../frontwindow.py" line="411"/>
|
||||
<source>SHOP</source>
|
||||
<translation>TIENDA</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../frontwindow.py" line="411"/>
|
||||
<source>DEVICE</source>
|
||||
<translation>TERMINAL</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../frontwindow.py" line="411"/>
|
||||
<source>DATABASE</source>
|
||||
<translation>BASE DE DATOS</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../frontwindow.py" line="411"/>
|
||||
<source>USER</source>
|
||||
<translation>USUARIO</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../frontwindow.py" line="411"/>
|
||||
<source>PRINTER</source>
|
||||
<translation>IMPRESORA</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Help</name>
|
||||
|
@ -811,7 +576,7 @@
|
|||
<message>
|
||||
<location filename="../commons/dialogs.py" line="316"/>
|
||||
<source>Keys Shortcuts...</source>
|
||||
<translation>ATAJOS DE TECLADO</translation>
|
||||
<translation>ATAJOS DE TECLADO...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../commons/dialogs.py" line="327"/>
|
||||
|
@ -849,7 +614,7 @@
|
|||
<message>
|
||||
<location filename="../commons/dblogin.py" line="80"/>
|
||||
<source>C&ANCEL</source>
|
||||
<translation>CANCELAR</translation>
|
||||
<translation>CANC&ELAR</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../commons/dblogin.py" line="83"/>
|
||||
|
@ -865,287 +630,287 @@
|
|||
<context>
|
||||
<name>MainWindow</name>
|
||||
<message>
|
||||
<location filename="../mainwindow.py" line="2186"/>
|
||||
<location filename="../mainwindow.py" line="2219"/>
|
||||
<source>DATE</source>
|
||||
<translation>FECHA</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.py" line="367"/>
|
||||
<location filename="../mainwindow.py" line="418"/>
|
||||
<source>SALESMAN</source>
|
||||
<translation>VENDEDOR</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.py" line="381"/>
|
||||
<location filename="../mainwindow.py" line="432"/>
|
||||
<source>PAYMENT TERM</source>
|
||||
<translation>PLAZO DE PAGO</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.py" line="374"/>
|
||||
<location filename="../mainwindow.py" line="425"/>
|
||||
<source>No ORDER</source>
|
||||
<translation>No PEDIDO</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.py" line="410"/>
|
||||
<location filename="../mainwindow.py" line="461"/>
|
||||
<source>POSITION</source>
|
||||
<translation>POSICION</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.py" line="418"/>
|
||||
<location filename="../mainwindow.py" line="469"/>
|
||||
<source>AGENT</source>
|
||||
<translation>AGENTE</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.py" line="429"/>
|
||||
<location filename="../mainwindow.py" line="480"/>
|
||||
<source>DELIVERY CHARGE</source>
|
||||
<translation>CARGO DOMICILIO</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.py" line="2113"/>
|
||||
<location filename="../mainwindow.py" line="2146"/>
|
||||
<source>SUBTOTAL</source>
|
||||
<translation>SUBTOTAL</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.py" line="516"/>
|
||||
<location filename="../mainwindow.py" line="567"/>
|
||||
<source>TAXES</source>
|
||||
<translation>IMPUESTOS</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.py" line="524"/>
|
||||
<location filename="../mainwindow.py" line="575"/>
|
||||
<source>DISCOUNT</source>
|
||||
<translation>DESCUENTO</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.py" line="544"/>
|
||||
<location filename="../mainwindow.py" line="595"/>
|
||||
<source>TOTAL</source>
|
||||
<translation>TOTAL</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.py" line="560"/>
|
||||
<location filename="../mainwindow.py" line="611"/>
|
||||
<source>PAID</source>
|
||||
<translation>PAGADO</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.py" line="574"/>
|
||||
<location filename="../mainwindow.py" line="625"/>
|
||||
<source>CHANGE</source>
|
||||
<translation>CAMBIO</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.py" line="2079"/>
|
||||
<location filename="../mainwindow.py" line="2112"/>
|
||||
<source>NAME</source>
|
||||
<translation>NOMBRE</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.py" line="2085"/>
|
||||
<location filename="../mainwindow.py" line="2118"/>
|
||||
<source>DESCRIPTION</source>
|
||||
<translation>DESCRIPCIÓN</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.py" line="2247"/>
|
||||
<location filename="../mainwindow.py" line="2280"/>
|
||||
<source>AMOUNT</source>
|
||||
<translation>VALOR</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.py" line="2073"/>
|
||||
<location filename="../mainwindow.py" line="2106"/>
|
||||
<source>COD</source>
|
||||
<translation>COD</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.py" line="2091"/>
|
||||
<location filename="../mainwindow.py" line="2124"/>
|
||||
<source>UNIT</source>
|
||||
<translation>UND</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.py" line="2098"/>
|
||||
<location filename="../mainwindow.py" line="2131"/>
|
||||
<source>QTY</source>
|
||||
<translation>CANT</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.py" line="2106"/>
|
||||
<location filename="../mainwindow.py" line="2139"/>
|
||||
<source>DISC</source>
|
||||
<translation>DESC</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.py" line="2119"/>
|
||||
<location filename="../mainwindow.py" line="2152"/>
|
||||
<source>NOTE</source>
|
||||
<translation>NOTA</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.py" line="2127"/>
|
||||
<location filename="../mainwindow.py" line="2160"/>
|
||||
<source>UNIT PRICE W TAX</source>
|
||||
<translation>PRECIO UNIT CON IMP</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.py" line="2242"/>
|
||||
<location filename="../mainwindow.py" line="2275"/>
|
||||
<source>STATEMENT JOURNAL</source>
|
||||
<translation>ESTADO DE CUENTA</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.py" line="429"/>
|
||||
<location filename="../mainwindow.py" line="480"/>
|
||||
<source>CUSTOMER</source>
|
||||
<translation>CLIENTE</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.py" line="429"/>
|
||||
<location filename="../mainwindow.py" line="480"/>
|
||||
<source>COMPANY</source>
|
||||
<translation>COMPAÑIA</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.py" line="486"/>
|
||||
<location filename="../mainwindow.py" line="537"/>
|
||||
<source>ASSIGNED TABLE</source>
|
||||
<translation>MESA ASIGNADA</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.py" line="2135"/>
|
||||
<location filename="../mainwindow.py" line="2168"/>
|
||||
<source>FRAC</source>
|
||||
<translation>FRAC</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.py" line="2251"/>
|
||||
<location filename="../mainwindow.py" line="2284"/>
|
||||
<source>VOUCHER</source>
|
||||
<translation>COMPROBANTE</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.py" line="1582"/>
|
||||
<location filename="../mainwindow.py" line="1621"/>
|
||||
<source>DELIVERY MEN</source>
|
||||
<translation>DOMICILIARIO</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.py" line="400"/>
|
||||
<location filename="../mainwindow.py" line="451"/>
|
||||
<source>CHANNEL</source>
|
||||
<translation>CANAL</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.py" line="1578"/>
|
||||
<location filename="../mainwindow.py" line="1617"/>
|
||||
<source>OPEN STATEMENTS</source>
|
||||
<translation>ABRIR ESTADOS DE CUENTA</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.py" line="1579"/>
|
||||
<location filename="../mainwindow.py" line="1618"/>
|
||||
<source>CLOSED STATEMENTS</source>
|
||||
<translation>CERRAR ESTADOS DE CUENTA</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.py" line="1581"/>
|
||||
<location filename="../mainwindow.py" line="1620"/>
|
||||
<source>GLOBAL DISCOUNT</source>
|
||||
<translation>DESCUENTO GLOBAL</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.py" line="1583"/>
|
||||
<location filename="../mainwindow.py" line="1622"/>
|
||||
<source>HELP</source>
|
||||
<translation>AYUDA</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.py" line="2168"/>
|
||||
<location filename="../mainwindow.py" line="2201"/>
|
||||
<source>NUMBER</source>
|
||||
<translation>NÚMERO</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.py" line="2174"/>
|
||||
<location filename="../mainwindow.py" line="2207"/>
|
||||
<source>INVOICE NUMBER</source>
|
||||
<translation>NUMERO DE FACTURA</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.py" line="2180"/>
|
||||
<location filename="../mainwindow.py" line="2213"/>
|
||||
<source>CONSUMER</source>
|
||||
<translation>CONSUMIDOR</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.py" line="2192"/>
|
||||
<location filename="../mainwindow.py" line="2225"/>
|
||||
<source>TOTAL AMOUNT</source>
|
||||
<translation>VALOR TOTAL</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.py" line="2204"/>
|
||||
<location filename="../mainwindow.py" line="2237"/>
|
||||
<source>PARTY</source>
|
||||
<translation>TERCERO</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.py" line="2222"/>
|
||||
<location filename="../mainwindow.py" line="2255"/>
|
||||
<source>NUMBER PLATE</source>
|
||||
<translation>NÚMERO DE PLACA</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.py" line="2228"/>
|
||||
<location filename="../mainwindow.py" line="2261"/>
|
||||
<source>TYPE VEHICLE</source>
|
||||
<translation>TIPO DE VEHICULO</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.py" line="455"/>
|
||||
<location filename="../mainwindow.py" line="506"/>
|
||||
<source>TAKE AWAY</source>
|
||||
<translation>PARA LLEVAR</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.py" line="456"/>
|
||||
<location filename="../mainwindow.py" line="507"/>
|
||||
<source>DELIVERY</source>
|
||||
<translation>DOMICILIO</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.py" line="2142"/>
|
||||
<location filename="../mainwindow.py" line="2175"/>
|
||||
<source>COMMANDED</source>
|
||||
<translation>COMAN</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.py" line="2210"/>
|
||||
<location filename="../mainwindow.py" line="2243"/>
|
||||
<source>ID NUMBER</source>
|
||||
<translation>NUMERO ID</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.py" line="2216"/>
|
||||
<location filename="../mainwindow.py" line="2249"/>
|
||||
<source>PHONE</source>
|
||||
<translation>TELÉFONO</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.py" line="457"/>
|
||||
<location filename="../mainwindow.py" line="508"/>
|
||||
<source>TO TABLE</source>
|
||||
<translation>A LA MESA</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.py" line="459"/>
|
||||
<location filename="../mainwindow.py" line="510"/>
|
||||
<source>KIND</source>
|
||||
<translation>CLASE</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.py" line="532"/>
|
||||
<location filename="../mainwindow.py" line="583"/>
|
||||
<source>VR. PROPINA</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.py" line="538"/>
|
||||
<location filename="../mainwindow.py" line="589"/>
|
||||
<source>VR. DOMIC</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.py" line="552"/>
|
||||
<location filename="../mainwindow.py" line="603"/>
|
||||
<source>NETO TOTAL</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.py" line="294"/>
|
||||
<location filename="../mainwindow.py" line="345"/>
|
||||
<source>START</source>
|
||||
<translation>INICIO</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.py" line="339"/>
|
||||
<location filename="../mainwindow.py" line="390"/>
|
||||
<source>No Invoice</source>
|
||||
<translation>No. Factura</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.py" line="567"/>
|
||||
<location filename="../mainwindow.py" line="618"/>
|
||||
<source>PENDING</source>
|
||||
<translation>PENDIENTE</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.py" line="472"/>
|
||||
<location filename="../mainwindow.py" line="523"/>
|
||||
<source>CASH</source>
|
||||
<translation>EFECTIVO</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.py" line="473"/>
|
||||
<location filename="../mainwindow.py" line="524"/>
|
||||
<source>TERMINAL</source>
|
||||
<translation>DATAFONO</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.py" line="475"/>
|
||||
<location filename="../mainwindow.py" line="526"/>
|
||||
<source>PAYMENT METHOD</source>
|
||||
<translation>METODO DE PAGO</translation>
|
||||
</message>
|
||||
|
@ -1155,7 +920,7 @@
|
|||
<message>
|
||||
<location filename="../commons/menu_list.py" line="111"/>
|
||||
<source>Menu...</source>
|
||||
<translation>Menu</translation>
|
||||
<translation>Menu...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../commons/menu_list.py" line="170"/>
|
||||
|
@ -1181,17 +946,17 @@
|
|||
<message>
|
||||
<location filename="../commons/dialogs.py" line="36"/>
|
||||
<source>Warning...</source>
|
||||
<translation>Advertencia</translation>
|
||||
<translation>Advertencia...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../commons/dialogs.py" line="37"/>
|
||||
<source>Information...</source>
|
||||
<translation>Información</translation>
|
||||
<translation>Información...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../commons/dialogs.py" line="38"/>
|
||||
<source>Action...</source>
|
||||
<translation>Acción</translation>
|
||||
<translation>Acción...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../commons/dialogs.py" line="39"/>
|
||||
|
@ -1224,42 +989,42 @@
|
|||
<message>
|
||||
<location filename="../dialogs.py" line="377"/>
|
||||
<source>PARTY:</source>
|
||||
<translation>CLIENTE</translation>
|
||||
<translation>CLIENTE:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs.py" line="385"/>
|
||||
<source>NUMBER:</source>
|
||||
<translation>NÚMERO</translation>
|
||||
<translation>NÚMERO:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs.py" line="393"/>
|
||||
<source>DATE:</source>
|
||||
<translation>FECHA</translation>
|
||||
<translation>FECHA:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs.py" line="401"/>
|
||||
<source>SALESMAN:</source>
|
||||
<translation>VENDEDOR</translation>
|
||||
<translation>VENDEDOR:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs.py" line="409"/>
|
||||
<source>LINES:</source>
|
||||
<translation>LINEAS</translation>
|
||||
<translation>LINEAS:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs.py" line="419"/>
|
||||
<source>UNTAXED AMOUNT:</source>
|
||||
<translation>BASE</translation>
|
||||
<translation>BASE:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs.py" line="427"/>
|
||||
<source>TAX AMOUNT:</source>
|
||||
<translation>IMPUESTOS</translation>
|
||||
<translation>IMPUESTOS:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs.py" line="435"/>
|
||||
<source>TOTAL AMOUNT:</source>
|
||||
<translation>TOTAL</translation>
|
||||
<translation>TOTAL:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs.py" line="453"/>
|
||||
|
@ -1272,7 +1037,7 @@
|
|||
<message>
|
||||
<location filename="../commons/dialogs.py" line="245"/>
|
||||
<source>Search Products...</source>
|
||||
<translation>Buscar Productos</translation>
|
||||
<translation>Buscar Productos...</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -1412,16 +1177,229 @@
|
|||
<context>
|
||||
<name>SearchWindow</name>
|
||||
<message>
|
||||
<location filename="../commons/search_window.py" line="65"/>
|
||||
<location filename="../commons/search_window.py" line="66"/>
|
||||
<source>SEARCH...</source>
|
||||
<translation>BUSCAR...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../commons/search_window.py" line="171"/>
|
||||
<location filename="../commons/search_window.py" line="172"/>
|
||||
<source>FILTER:</source>
|
||||
<translation>FILTRO:</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>StackMessages</name>
|
||||
<message>
|
||||
<location filename="../stack_messages.py" line="11"/>
|
||||
<source>SYSTEM READY...</source>
|
||||
<translation>SISTEMA LISTO...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../stack_messages.py" line="12"/>
|
||||
<source>DO YOU WANT TO EXIT?</source>
|
||||
<translation>ESTA SEGURO QUE DESEA SALIR?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../stack_messages.py" line="13"/>
|
||||
<source>PLEASE CONFIRM YOUR PAYMENT TERM AS CREDIT?</source>
|
||||
<translation>CONFIRME QUE EL PLAZO DE PAGO ES CREDITO?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../stack_messages.py" line="14"/>
|
||||
<source>SALE ORDER / INVOICE NUMBER NOT FOUND!</source>
|
||||
<translation>PEDIDO / FACTURA NO ENCONTRADA!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../stack_messages.py" line="15"/>
|
||||
<source>THIS SALE IS CLOSED, YOU CAN NOT TO MODIFY!</source>
|
||||
<translation>LA VENTA ESTA CERRA, NO PUEDES MODIFICARLA!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../stack_messages.py" line="16"/>
|
||||
<source>DISCOUNT VALUE IS NOT VALID!</source>
|
||||
<translation>EL DESCUENTO NO ES VALIDO!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../stack_messages.py" line="17"/>
|
||||
<source>YOU CAN NOT ADD PAYMENTS TO SALE ON DRAFT STATE!</source>
|
||||
<translation>NO PUEDE AGREGAR PAGO A UN PEDIDO EN BORRADOR!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../stack_messages.py" line="18"/>
|
||||
<source>ENTER QUANTITY...</source>
|
||||
<translation>INGRESE LA CANTIDAD...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../stack_messages.py" line="19"/>
|
||||
<source>ENTER DISCOUNT...</source>
|
||||
<translation>INGRESE EL DESCUENTO...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../stack_messages.py" line="20"/>
|
||||
<source>ENTER PAYMENT AMOUNT BY: %s</source>
|
||||
<translation>INGRESE EL VALOR A PAGAR EN: %s</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../stack_messages.py" line="21"/>
|
||||
<source>ENTER NEW PRICE...</source>
|
||||
<translation>INGRESE EL PRECIO...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../stack_messages.py" line="22"/>
|
||||
<source>ORDER SUCCESSFULLY SENT</source>
|
||||
<translation>ORDEN ENVIADA EXITOSAMENTE</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../stack_messages.py" line="23"/>
|
||||
<source>FAILED SEND ORDER!</source>
|
||||
<translation>FALLO EL ENVIO DE LA ORDEN!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../stack_messages.py" line="24"/>
|
||||
<source>MISSING AGENT!</source>
|
||||
<translation>FALTA EL AGENTE!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../stack_messages.py" line="25"/>
|
||||
<source>THERE IS NOT SALESMAN FOR THE SALE!</source>
|
||||
<translation>NO HAY VENDEDOR EN EL PEDIDO!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../stack_messages.py" line="26"/>
|
||||
<source>YOU CAN NOT CONFIRM A SALE WITHOUT PRODUCTS!</source>
|
||||
<translation>NO PUEDE CONFIRMAR UNA VENTA SIN PRODUCTOS!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../stack_messages.py" line="27"/>
|
||||
<source>USER WITHOUT PERMISSION FOR SALE POS!</source>
|
||||
<translation>USUARIO SIN PERMISOS PARA VENTAS EN POS!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../stack_messages.py" line="28"/>
|
||||
<source>THE QUANTITY IS NOT VALID...!</source>
|
||||
<translation>LA CANTIDAD NO ES VALIDA!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../stack_messages.py" line="29"/>
|
||||
<source>THE USER HAVE NOT PERMISSIONS FOR ACCESS TO DEVICE!</source>
|
||||
<translation>EL USUARIO NO TIENE PERMISOS PARA ACCEDER AL DISPOSITIVO!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../stack_messages.py" line="30"/>
|
||||
<source>MISSING THE DEFAULT PARTY ON SHOP CONFIGURATION!</source>
|
||||
<translation>FALTA EL TERCERO POR DEFECTO EN LA SUCURSAL!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../stack_messages.py" line="31"/>
|
||||
<source>MISSING SET THE JOURNAL ON DEVICE!</source>
|
||||
<translation>FALTA EL DIARIO EN EL TERMINAL!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../stack_messages.py" line="32"/>
|
||||
<source>THERE IS NOT A STATEMENT OPEN FOR THIS DEVICE!</source>
|
||||
<translation>NO HAY ESTADOS DE CUENTA ABIERTOS PARA ESTE TERMINAL!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../stack_messages.py" line="33"/>
|
||||
<source>PRODUCT NOT FOUND!</source>
|
||||
<translation>PRODUCTO NO ENCONTRADO!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../stack_messages.py" line="34"/>
|
||||
<source>FIRST YOU MUST CREATE/LOAD A SALE!</source>
|
||||
<translation>PRIMERO DEBE CREAR/CARAGR UNA VENTA!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../stack_messages.py" line="35"/>
|
||||
<source>DO YOU WANT CREATE NEW SALE?</source>
|
||||
<translation>DESEA CREAR UNA NUEVA VENTA!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../stack_messages.py" line="36"/>
|
||||
<source>ARE YOU WANT TO CANCEL SALE?</source>
|
||||
<translation>DESEA CACELAR LA VENTA?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../stack_messages.py" line="37"/>
|
||||
<source>YOU HAVE NOT PERMISSIONS FOR DELETE THIS SALE!</source>
|
||||
<translation>NO TIENE PERMISOS PARA BORAR VENTAS!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../stack_messages.py" line="38"/>
|
||||
<source>YOU HAVE NOT PERMISSIONS FOR CANCEL THIS SALE!</source>
|
||||
<translation>NO TIENES PERMISOS PARA CANCELAR LA VENTA!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../stack_messages.py" line="39"/>
|
||||
<source>THE CUSTOMER HAS NOT CREDIT!</source>
|
||||
<translation>EL CLIENTE NO TIENE CUPO DE CREDITO!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../stack_messages.py" line="40"/>
|
||||
<source>AGENT NOT FOUND!</source>
|
||||
<translation>AGENTE NO ENCONTRADO!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../stack_messages.py" line="41"/>
|
||||
<source>COMMISSION NOT VALID!</source>
|
||||
<translation>COMISION NO VALIDA!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../stack_messages.py" line="42"/>
|
||||
<source>CREDIT LIMIT FOR CUSTOMER EXCEED!</source>
|
||||
<translation>LIMITE DE CREDITO DEL CLIENTE EXCEDIDO!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../stack_messages.py" line="43"/>
|
||||
<source>THE CUSTOMER CREDIT CAPACITY IS ABOVE 80%</source>
|
||||
<translation>LA CAPACIDAD DE CREDITO DEL CLIENTE ESTA SOBRE EL 80%</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../stack_messages.py" line="44"/>
|
||||
<source>YOU CAN NOT FORCE ASSIGN!</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../stack_messages.py" line="45"/>
|
||||
<source>FALLO EL ENVIO DE FACTURA!</source>
|
||||
<translation>FALLO EN EL ENVIO DE LA FACTURA!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../stack_messages.py" line="46"/>
|
||||
<source>FALLO FINALIZACIÃN DE FACTURA!</source>
|
||||
<translation type="unfinished">FALLO EN EL PROCESAMIENTO DE LA FACTURA!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../stack_messages.py" line="47"/>
|
||||
<source>PRODUCT WITHOUT STOCK: %s</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../stack_messages.py" line="48"/>
|
||||
<source>NOT SALE!...</source>
|
||||
<translation>NO HAY VENTA!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../stack_messages.py" line="49"/>
|
||||
<source>STATEMENTS CREATED!</source>
|
||||
<translation>ESTADOS DE CUENTA ABIERTOS!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../stack_messages.py" line="50"/>
|
||||
<source>STATEMENTS CLOSED!</source>
|
||||
<translation>ESTADOS DE CUENTA CERRADOS!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../stack_messages.py" line="51"/>
|
||||
<source>ORDER DISPATCHED!</source>
|
||||
<translation>ORDEN DESPACHADA!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../stack_messages.py" line="52"/>
|
||||
<source>ERROR TO DISPATCHED ORDER!</source>
|
||||
<translation>ERROR EN EL DESPACHO DELA ORDEN!</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>StartButtons</name>
|
||||
<message>
|
||||
|
@ -1450,6 +1428,34 @@
|
|||
<translation>IMPRIMIR</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>StatusBar</name>
|
||||
<message>
|
||||
<location filename="../status_bar.py" line="13"/>
|
||||
<source>SHOP</source>
|
||||
<translation>SUCURSAL</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../status_bar.py" line="13"/>
|
||||
<source>DEVICE</source>
|
||||
<translation>TERMINAL</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../status_bar.py" line="13"/>
|
||||
<source>DATABASE</source>
|
||||
<translation>BASE DE DATOS</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../status_bar.py" line="13"/>
|
||||
<source>USER</source>
|
||||
<translation>USUARIO</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../status_bar.py" line="13"/>
|
||||
<source>PRINTER</source>
|
||||
<translation>IMPRESORA</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>TipAmount</name>
|
||||
<message>
|
||||
|
|
|
@ -15,6 +15,8 @@ from PyQt5.QtWidgets import (
|
|||
)
|
||||
|
||||
from .frontwindow import FrontWindow
|
||||
from .status_bar import StatusBar
|
||||
from .stack_messages import StackMessages
|
||||
from app.commons.action import Action
|
||||
from app.commons.forms import GridForm, ComboBox, FieldNumeric
|
||||
from app.commons.messages import MessageBar
|
||||
|
@ -48,6 +50,8 @@ class MainWindow(FrontWindow):
|
|||
super(MainWindow, self).__init__(connection, params, title)
|
||||
self.payment_ctx = {}
|
||||
self.set_keys()
|
||||
# self.set_stack_messages()
|
||||
StackMessages(self)
|
||||
self.stock_context = None
|
||||
self._sale = {}
|
||||
self.ctx = self._context
|
||||
|
@ -76,7 +80,7 @@ class MainWindow(FrontWindow):
|
|||
self.set_printers_usb(PATH_PRINTERS)
|
||||
|
||||
self.set_printing_context()
|
||||
self.create_statusbar()
|
||||
self.statusbar = StatusBar(self)
|
||||
|
||||
self.reader_thread = None
|
||||
self._current_line_id = None
|
||||
|
@ -109,6 +113,53 @@ class MainWindow(FrontWindow):
|
|||
if j['id'] == self.default_journal['id']:
|
||||
self.default_journal = j
|
||||
|
||||
# def set_stack_messages(self):
|
||||
# self.stack_msg = {
|
||||
# 'system_ready': ('info', self.tr('SYSTEM READY...')),
|
||||
# 'confirm_exit': ('warning', self.tr('DO YOU WANT TO EXIT?')),
|
||||
# 'confirm_credit': ('question', self.tr('PLEASE CONFIRM YOUR PAYMENT TERM AS CREDIT?')),
|
||||
# 'sale_number_not_found': ('warning', self.tr('SALE ORDER / INVOICE NUMBER NOT FOUND!')),
|
||||
# 'sale_closed': ('error', self.tr('THIS SALE IS CLOSED, YOU CAN NOT TO MODIFY!')),
|
||||
# 'discount_not_valid': ('warning', self.tr('DISCOUNT VALUE IS NOT VALID!')),
|
||||
# 'add_payment_sale_draft': ('info', self.tr('YOU CAN NOT ADD PAYMENTS TO SALE ON DRAFT STATE!')),
|
||||
# 'enter_quantity': ('question', self.tr('ENTER QUANTITY...')),
|
||||
# 'enter_discount': ('question', self.tr('ENTER DISCOUNT...')),
|
||||
# 'enter_payment': ('question', self.tr('ENTER PAYMENT AMOUNT BY: %s')),
|
||||
# 'enter_new_price': ('question', self.tr('ENTER NEW PRICE...')),
|
||||
# 'order_successfully': ('info', self.tr('ORDER SUCCESSFULLY SENT')),
|
||||
# 'order_failed': ('warning', self.tr('FAILED SEND ORDER!')),
|
||||
# 'missing_agent': ('warning', self.tr('MISSING AGENT!')),
|
||||
# 'missing_salesman': ('warning', self.tr('THERE IS NOT SALESMAN FOR THE SALE!')),
|
||||
# 'sale_without_products': ('warning', self.tr('YOU CAN NOT CONFIRM A SALE WITHOUT PRODUCTS!')),
|
||||
# 'user_without_permission': ('error', self.tr('USER WITHOUT PERMISSION FOR SALE POS!')),
|
||||
# 'quantity_not_valid': ('error', self.tr('THE QUANTITY IS NOT VALID...!')),
|
||||
# 'user_not_permissions_device': ('error', self.tr('THE USER HAVE NOT PERMISSIONS FOR ACCESS TO DEVICE!')),
|
||||
# 'missing_party_configuration': ('warning', self.tr('MISSING THE DEFAULT PARTY ON SHOP CONFIGURATION!')),
|
||||
# 'missing_journal_device': ('error', self.tr('MISSING SET THE JOURNAL ON DEVICE!')),
|
||||
# 'statement_closed': ('error', self.tr('THERE IS NOT A STATEMENT OPEN FOR THIS DEVICE!')),
|
||||
# 'product_not_found': ('warning', self.tr('PRODUCT NOT FOUND!')),
|
||||
# 'must_load_or_create_sale': ('warning', self.tr('FIRST YOU MUST CREATE/LOAD A SALE!')),
|
||||
# 'new_sale': ('warning', self.tr('DO YOU WANT CREATE NEW SALE?')),
|
||||
# 'cancel_sale': ('question', self.tr('ARE YOU WANT TO CANCEL SALE?')),
|
||||
# 'not_permission_delete_sale': ('info', self.tr('YOU HAVE NOT PERMISSIONS FOR DELETE THIS SALE!')),
|
||||
# 'not_permission_for_cancel': ('info', self.tr('YOU HAVE NOT PERMISSIONS FOR CANCEL THIS SALE!')),
|
||||
# 'customer_not_credit': ('info', self.tr('THE CUSTOMER HAS NOT CREDIT!')),
|
||||
# 'agent_not_found': ('warning', self.tr('AGENT NOT FOUND!')),
|
||||
# 'invalid_commission': ('warning', self.tr('COMMISSION NOT VALID!')),
|
||||
# 'credit_limit_exceed': ('info', self.tr('CREDIT LIMIT FOR CUSTOMER EXCEED!')),
|
||||
# 'credit_limit_capacity': ('info', self.tr('THE CUSTOMER CREDIT CAPACITY IS ABOVE 80%')),
|
||||
# 'not_can_force_assign': ('warning', self.tr('YOU CAN NOT FORCE ASSIGN!')),
|
||||
# 'send_electronic_failed': ('info', self.tr('FALLO EL ENVIO DE FACTURA!')),
|
||||
# 'invoice_done_failed': ('info', self.tr('FALLO FINALIZACIÓN DE FACTURA!')),
|
||||
# 'without_stock_quantity': ('info', self.tr('PRODUCT WITHOUT STOCK: %s')),
|
||||
# 'not_sale': ('info', self.tr('NOT SALE!...')),
|
||||
# 'statement_created': ('info', self.tr('STATEMENTS CREATED!')),
|
||||
# 'statement_finish': ('info', self.tr('STATEMENTS CLOSED!')),
|
||||
# 'order_dispatched': ('info', self.tr('ORDER DISPATCHED!')),
|
||||
# 'error_order_dispatched': ('error', self.tr('ERROR TO DISPATCHED ORDER!')),
|
||||
# }
|
||||
# # self.stack_msg = messages
|
||||
|
||||
def set_domains(self):
|
||||
self.domain_search_product = [
|
||||
('code', '!=', None),
|
||||
|
@ -2747,5 +2798,3 @@ class MainWindow(FrontWindow):
|
|||
if self._consumer.get('birthday'):
|
||||
y, m, d = self._consumer['birthday'].split('-')
|
||||
self.row_field_birthday.setDate(QDate(int(y), int(m), int(d)))
|
||||
|
||||
# 2798
|
||||
|
|
|
@ -0,0 +1,53 @@
|
|||
from PyQt5.QtWidgets import QWidget
|
||||
|
||||
__all__ = ['StackMessages']
|
||||
|
||||
|
||||
class StackMessages(QWidget):
|
||||
|
||||
def __init__(self, parent):
|
||||
super(StackMessages, self).__init__(parent)
|
||||
parent.stack_msg = {
|
||||
'system_ready': ('info', self.tr('SYSTEM READY...')),
|
||||
'confirm_exit': ('warning', self.tr('DO YOU WANT TO EXIT?')),
|
||||
'confirm_credit': ('question', self.tr('PLEASE CONFIRM YOUR PAYMENT TERM AS CREDIT?')),
|
||||
'sale_number_not_found': ('warning', self.tr('SALE ORDER / INVOICE NUMBER NOT FOUND!')),
|
||||
'sale_closed': ('error', self.tr('THIS SALE IS CLOSED, YOU CAN NOT TO MODIFY!')),
|
||||
'discount_not_valid': ('warning', self.tr('DISCOUNT VALUE IS NOT VALID!')),
|
||||
'add_payment_sale_draft': ('info', self.tr('YOU CAN NOT ADD PAYMENTS TO SALE ON DRAFT STATE!')),
|
||||
'enter_quantity': ('question', self.tr('ENTER QUANTITY...')),
|
||||
'enter_discount': ('question', self.tr('ENTER DISCOUNT...')),
|
||||
'enter_payment': ('question', self.tr('ENTER PAYMENT AMOUNT BY: %s')),
|
||||
'enter_new_price': ('question', self.tr('ENTER NEW PRICE...')),
|
||||
'order_successfully': ('info', self.tr('ORDER SUCCESSFULLY SENT')),
|
||||
'order_failed': ('warning', self.tr('FAILED SEND ORDER!')),
|
||||
'missing_agent': ('warning', self.tr('MISSING AGENT!')),
|
||||
'missing_salesman': ('warning', self.tr('THERE IS NOT SALESMAN FOR THE SALE!')),
|
||||
'sale_without_products': ('warning', self.tr('YOU CAN NOT CONFIRM A SALE WITHOUT PRODUCTS!')),
|
||||
'user_without_permission': ('error', self.tr('USER WITHOUT PERMISSION FOR SALE POS!')),
|
||||
'quantity_not_valid': ('error', self.tr('THE QUANTITY IS NOT VALID...!')),
|
||||
'user_not_permissions_device': ('error', self.tr('THE USER HAVE NOT PERMISSIONS FOR ACCESS TO DEVICE!')),
|
||||
'missing_party_configuration': ('warning', self.tr('MISSING THE DEFAULT PARTY ON SHOP CONFIGURATION!')),
|
||||
'missing_journal_device': ('error', self.tr('MISSING SET THE JOURNAL ON DEVICE!')),
|
||||
'statement_closed': ('error', self.tr('THERE IS NOT A STATEMENT OPEN FOR THIS DEVICE!')),
|
||||
'product_not_found': ('warning', self.tr('PRODUCT NOT FOUND!')),
|
||||
'must_load_or_create_sale': ('warning', self.tr('FIRST YOU MUST CREATE/LOAD A SALE!')),
|
||||
'new_sale': ('warning', self.tr('DO YOU WANT CREATE NEW SALE?')),
|
||||
'cancel_sale': ('question', self.tr('ARE YOU WANT TO CANCEL SALE?')),
|
||||
'not_permission_delete_sale': ('info', self.tr('YOU HAVE NOT PERMISSIONS FOR DELETE THIS SALE!')),
|
||||
'not_permission_for_cancel': ('info', self.tr('YOU HAVE NOT PERMISSIONS FOR CANCEL THIS SALE!')),
|
||||
'customer_not_credit': ('info', self.tr('THE CUSTOMER HAS NOT CREDIT!')),
|
||||
'agent_not_found': ('warning', self.tr('AGENT NOT FOUND!')),
|
||||
'invalid_commission': ('warning', self.tr('COMMISSION NOT VALID!')),
|
||||
'credit_limit_exceed': ('info', self.tr('CREDIT LIMIT FOR CUSTOMER EXCEED!')),
|
||||
'credit_limit_capacity': ('info', self.tr('THE CUSTOMER CREDIT CAPACITY IS ABOVE 80%')),
|
||||
'not_can_force_assign': ('warning', self.tr('YOU CAN NOT FORCE ASSIGN!')),
|
||||
'send_electronic_failed': ('info', self.tr('SEND INVOICE FAILED!')),
|
||||
'invoice_done_failed': ('info', self.tr('PROCESSING INVOICE FAILED!')),
|
||||
'without_stock_quantity': ('info', self.tr('PRODUCT WITHOUT STOCK: %s')),
|
||||
'not_sale': ('info', self.tr('NOT SALE!...')),
|
||||
'statement_created': ('info', self.tr('STATEMENTS CREATED!')),
|
||||
'statement_finish': ('info', self.tr('STATEMENTS CLOSED!')),
|
||||
'order_dispatched': ('info', self.tr('ORDER DISPATCHED!')),
|
||||
'error_order_dispatched': ('error', self.tr('ERROR TO DISPATCHED ORDER!')),
|
||||
}
|
|
@ -0,0 +1,33 @@
|
|||
from collections import OrderedDict
|
||||
from PyQt5.QtWidgets import QWidget, QLabel
|
||||
from PyQt5.QtCore import Qt
|
||||
|
||||
__all__ = ['StatusBar']
|
||||
|
||||
|
||||
class StatusBar(QWidget):
|
||||
|
||||
def __init__(self, parent):
|
||||
super(StatusBar, self).__init__()
|
||||
p = parent
|
||||
values = OrderedDict([
|
||||
('stb_shop', {'name': self.tr('SHOP'), 'value': p.shop['name']}),
|
||||
('stb_device', {'name': self.tr('DEVICE'), 'value': p.device['name']}),
|
||||
('stb_database', {'name': self.tr('DATABASE'), 'value': p.database}),
|
||||
('stb_user', {'name': self.tr('USER'), 'value': p.user}),
|
||||
('stb_printer', {'name': self.tr('PRINTER'), 'value': p.printer_sale_name})
|
||||
])
|
||||
|
||||
status_bar = p.statusBar()
|
||||
status_bar.setSizeGripEnabled(False)
|
||||
|
||||
for k, v in values.items():
|
||||
_label = QLabel(v['name'] + ':')
|
||||
_label.setAlignment(Qt.AlignRight | Qt.AlignVCenter)
|
||||
_label.setObjectName('label_status_bar')
|
||||
status_bar.addWidget(_label, 1)
|
||||
setattr(parent, k, QLabel(str(v['value'])))
|
||||
_field_info = getattr(parent, k)
|
||||
_field_info.setObjectName('field_status_bar')
|
||||
_field_info.setAlignment(Qt.AlignLeft | Qt.AlignVCenter)
|
||||
status_bar.addWidget(_field_info)
|
50
pospro.pyw
50
pospro.pyw
|
@ -1,50 +0,0 @@
|
|||
#!/usr/bin/env python3
|
||||
# -*- coding: UTF-8 -*-
|
||||
import os
|
||||
import sys
|
||||
|
||||
from PyQt5.QtWidgets import QApplication
|
||||
from PyQt5.QtCore import QTranslator
|
||||
from app.commons.dblogin import Login
|
||||
from app import mainwindow
|
||||
|
||||
try:
|
||||
DIR = os.path.abspath(os.path.normpath(os.path.join(__file__,
|
||||
'..', '..', '..')))
|
||||
if os.path.isdir(DIR):
|
||||
sys.path.insert(0, os.path.dirname(DIR))
|
||||
except NameError:
|
||||
pass
|
||||
|
||||
locale_app = os.path.join(os.path.abspath(
|
||||
os.path.dirname(__file__)), 'app', 'locale', 'i18n_es.qm')
|
||||
|
||||
|
||||
class Client(object):
|
||||
|
||||
def __init__(self, parent=None):
|
||||
self.app = QApplication(sys.argv)
|
||||
self.translator = QTranslator()
|
||||
self.translator.load(locale_app)
|
||||
self.app.installTranslator(self.translator)
|
||||
|
||||
def init_login(self):
|
||||
login = Login(file_config='config_pos.ini')
|
||||
|
||||
while not login.connection:
|
||||
login.run()
|
||||
login.exec_()
|
||||
|
||||
return login.connection, login.params
|
||||
|
||||
def main(self, conn, params):
|
||||
mw = mainwindow.MainWindow(conn, params)
|
||||
self.app.exec_()
|
||||
|
||||
|
||||
client = Client()
|
||||
conn, params = client.init_login()
|
||||
|
||||
if conn:
|
||||
client.main(conn, params)
|
||||
sys.exit()
|
|
@ -1,3 +1,3 @@
|
|||
# Execute in terminal $ pylupdate5 project.pro
|
||||
SOURCES = app/mainwindow.py app/dialogs.py app/reporting.py app/buttonpad.py app/commons/custom_button.py app/commons/buttons.py app/commons/dblogin.py app/commons/dialogs.py app/commons/forms.py app/frontwindow.py app/commons/menu_list.py app/commons/search_window.py
|
||||
SOURCES = app/mainwindow.py app/frontwindow.py app/status_bar.py app/stack_messages.py app/dialogs.py app/reporting.py app/buttonpad.py app/commons/custom_button.py app/commons/buttons.py app/commons/dblogin.py app/commons/dialogs.py app/commons/forms.py app/commons/menu_list.py app/commons/search_window.py app/commons/messages.py
|
||||
TRANSLATIONS = app/locale/i18n_es.ts
|
||||
|
|
Loading…
Reference in New Issue