add option payment with sale_device
This commit is contained in:
parent
5777776a30
commit
299528fa97
|
@ -1,4 +1,5 @@
|
|||
import os
|
||||
|
||||
# from PyQt5.QtCore import QSettings
|
||||
from PySide6.QtCore import QSettings
|
||||
|
||||
|
@ -39,6 +40,7 @@ class Params(object):
|
|||
"mode": "http",
|
||||
"database": "DBNAME",
|
||||
"user": None,
|
||||
"sale_device_code": None,
|
||||
"printer_sale_name": None,
|
||||
"profile_printer": "TM-P80",
|
||||
"row_characters": "48",
|
||||
|
|
|
@ -377,7 +377,7 @@ class ComboBox(QComboBox):
|
|||
selection_model = get_simple_model(obj, values, heads)
|
||||
self.setModel(selection_model)
|
||||
self.setModelColumn(1)
|
||||
selection_model.findItems(str(3), column=0)
|
||||
# selection_model.findItems(str(3), column=0)
|
||||
self.method_on_change = None
|
||||
self.currentIndexChanged.connect(self.on_change)
|
||||
if data.get('default'):
|
||||
|
@ -426,6 +426,23 @@ class ComboBox(QComboBox):
|
|||
idx = model.indexFromItem(items[0])
|
||||
self.setCurrentIndex(idx.row())
|
||||
|
||||
def updateComboBox(self, id_):
|
||||
"only call this function if you don't need require execute onchange"
|
||||
# Block signals temporarily
|
||||
self.blockSignals(True)
|
||||
|
||||
# Set the desired value in the QComboBox
|
||||
if id_:
|
||||
model = self.model()
|
||||
items = model.findItems(str(id_), column=0)
|
||||
idx = model.indexFromItem(items[0])
|
||||
self.setCurrentIndex(idx.row())
|
||||
else:
|
||||
self.setCurrentIndex(-1)
|
||||
|
||||
# Unblock signals after setting the value
|
||||
self.blockSignals(False)
|
||||
|
||||
def set_none(self):
|
||||
self.setCurrentIndex(0)
|
||||
|
||||
|
|
|
@ -1,14 +1,13 @@
|
|||
import os
|
||||
import time
|
||||
from datetime import date
|
||||
import logging
|
||||
import os
|
||||
from datetime import date
|
||||
from pathlib import Path
|
||||
from PySide6.QtWidgets import QMainWindow, QLineEdit
|
||||
|
||||
from PySide6.QtGui import QGuiApplication
|
||||
from PySide6.QtWidgets import QLineEdit, QMainWindow
|
||||
|
||||
from .commons.dialogs import QuickDialog
|
||||
# from .commons.dblogin import safe_reconnect
|
||||
from .proxy import Model, logout
|
||||
from .constants import SCREENS
|
||||
from .constants import DIALOG_REPLY_YES, SCREENS
|
||||
from .dialogs import (
|
||||
Help, ControlPanel, SearchSale, SearchParty, SearchProduct, Position,
|
||||
Comment, DialogPayment, DialogVoucher, DialogPrintInvoice, ProductEdit,
|
||||
|
@ -24,10 +23,9 @@ from .dialogs import (
|
|||
DialogSaleToTransfer, DialogSearchFolioTransfer,
|
||||
DialogSearchSaleTransfer
|
||||
)
|
||||
from .constants import DIALOG_REPLY_YES
|
||||
from .proxy import Model, logout
|
||||
from .version import __version__
|
||||
|
||||
|
||||
__all__ = ['FrontWindow']
|
||||
parent = Path(__file__).parent
|
||||
|
||||
|
@ -246,14 +244,33 @@ class FrontWindow(QMainWindow):
|
|||
self.User = Model('res.user', self.ctx, main_window=self)
|
||||
self._user, = self.User.find([('login', '=', self.user)])
|
||||
self.Company = Model('company.company', self.ctx, main_window=self)
|
||||
self.Device = Model('sale.device', self.ctx, main_window=self)
|
||||
self._company, = self.Company.find([('id', '=', 1)])
|
||||
self.logo = self._company['logo']
|
||||
|
||||
sale_device = self._user['sale_device']
|
||||
if not sale_device:
|
||||
if not sale_device and not self.sale_device_code:
|
||||
return 'user_not_permissions_device'
|
||||
|
||||
if self.sale_device_code:
|
||||
dom_device = ('code', '=', self.sale_device_code)
|
||||
else:
|
||||
dom_device = ('id', '=', sale_device)
|
||||
|
||||
devices = self.Device.find([dom_device])
|
||||
|
||||
if not devices:
|
||||
return 'user_not_permissions_device'
|
||||
|
||||
self.device = devices[0]
|
||||
|
||||
shop_id = self.device['shop.']['id']
|
||||
if shop_id not in self._user['shops']:
|
||||
return 'user_not_permissions_device'
|
||||
|
||||
self.sale_device = self.device['id']
|
||||
self.ctx['user'] = self._user['id']
|
||||
self.ctx['sale_device'] = sale_device
|
||||
self.ctx['sale_device'] = self.device['id']
|
||||
self.ctx['shop'] = self._user['shop']
|
||||
|
||||
self.SaleLine = Model('sale.line', self.ctx, main_window=self)
|
||||
|
@ -264,7 +281,6 @@ class FrontWindow(QMainWindow):
|
|||
self.Employee = Model('company.employee', self.ctx, main_window=self)
|
||||
self.Shop = Model('sale.delivery_party', self.ctx, main_window=self)
|
||||
self.SaleDiscont = Model('sale.discount', self.ctx, main_window=self)
|
||||
self.Device = Model('sale.device', self.ctx, main_window=self)
|
||||
self.Category = Model('product.category', self.ctx, main_window=self)
|
||||
self.PaymentTerm = Model('account.invoice.payment_term', self.ctx, main_window=self)
|
||||
self.Party = Model('party.party', self.ctx, main_window=self)
|
||||
|
@ -278,15 +294,12 @@ class FrontWindow(QMainWindow):
|
|||
self.Agent = Model('commission.agent', self.ctx, main_window=self)
|
||||
self.Comission = Model('commission', self.ctx, main_window=self)
|
||||
|
||||
self.device, = self.Device.find([
|
||||
('id', '=', self._user['sale_device']),
|
||||
])
|
||||
|
||||
self.shop = self.device['shop.']
|
||||
self.shop_taxes = self.shop['taxes.']
|
||||
self.company = self.shop['company']
|
||||
self._journals = self.device['journals.']
|
||||
self.salesman_ids = [s['id'] for s in self.shop.get('salesmans', [])]
|
||||
self.sellers = {s['code']: s for s in self.shop.get('salesmans.', [])}
|
||||
|
||||
# dom_salesman = [
|
||||
# ('company', '=', self.company),
|
||||
|
|
54
app/main.py
54
app/main.py
|
@ -1196,8 +1196,7 @@ class AppWindow(FrontWindow):
|
|||
return
|
||||
if not salesman:
|
||||
return self.dialog('error_salesman_wrong')
|
||||
else:
|
||||
self.salesman = salesman
|
||||
self.salesman = salesman
|
||||
self.Sale.write([self.sale_id], {'salesman': salesman['id']})
|
||||
self.store.update({'salesman': salesman})
|
||||
|
||||
|
@ -1254,16 +1253,17 @@ class AppWindow(FrontWindow):
|
|||
return
|
||||
result = self.dialog_salesman_code.exec_()
|
||||
code = self.field_salesman_code_ask.text()
|
||||
if result == 0:
|
||||
# Cancelled the action
|
||||
return result
|
||||
if not code:
|
||||
return
|
||||
salesman_list = self.Employee.find([
|
||||
('code', '=', code)
|
||||
])
|
||||
if salesman_list:
|
||||
return salesman_list[0]
|
||||
if result != 0 and code:
|
||||
seller = None
|
||||
if code in self.sellers:
|
||||
seller = self.sellers[code]
|
||||
else:
|
||||
sellers = self.Employee.find([('code', '=', code)])
|
||||
if sellers:
|
||||
seller = sellers[0]
|
||||
self.sellers[code] = seller
|
||||
return seller
|
||||
return 0
|
||||
|
||||
def action_delivery_party(self):
|
||||
self.dialog_delivery_party.exec_()
|
||||
|
@ -1290,7 +1290,7 @@ class AppWindow(FrontWindow):
|
|||
|
||||
def open_statement_accepted(self, value):
|
||||
res = self.Sale.faster_open_statement({
|
||||
'device': self.device['id'],
|
||||
'device': self.sale_device,
|
||||
'total_money': Decimal(value),
|
||||
})
|
||||
if res['result']:
|
||||
|
@ -1313,7 +1313,7 @@ class AppWindow(FrontWindow):
|
|||
send_mail = self.field_send_mail.isChecked()
|
||||
self.field_send_mail.setChecked(False)
|
||||
res = self.Sale.faster_close_statement({
|
||||
'device': self.device['id'],
|
||||
'device': self.sale_device,
|
||||
'data': values,
|
||||
'salesman': salesman['id'],
|
||||
'send_mail': send_mail,
|
||||
|
@ -1382,10 +1382,10 @@ class AppWindow(FrontWindow):
|
|||
'state': 'draft',
|
||||
'comment': _sale['comment'],
|
||||
}
|
||||
sale = self.Sale.new_sale(to_create)
|
||||
sale = self.Sale.new_sale(args=[to_create])
|
||||
|
||||
self.SaleLine.write(lines_ids, {'sale': sale['id']})
|
||||
number = self.Sale.set_sale_number({'sale_id': sale['id']})
|
||||
number = self.Sale.set_sale_number(args=[{'sale_id': sale['id']}])
|
||||
self.dialog_split_sale.info(number)
|
||||
self.set_amounts()
|
||||
|
||||
|
@ -1520,7 +1520,9 @@ class AppWindow(FrontWindow):
|
|||
'cash_received': to_numeric(float(amount)),
|
||||
'voucher_number': voucher_number,
|
||||
'extra_paid': False,
|
||||
}, ctx={'advance': True, 'reservation': reservation})
|
||||
'advance': True,
|
||||
'reservation': reservation
|
||||
})
|
||||
|
||||
if res.get('msg') not in ('missing_money', 'ok'):
|
||||
self.dialog(res['msg'])
|
||||
|
@ -2353,12 +2355,13 @@ class AppWindow(FrontWindow):
|
|||
('state', '=', 'draft'),
|
||||
('date', '=', values['date']),
|
||||
('company', '=', company),
|
||||
('sale_device.shop', '=', shop)
|
||||
('sale_device.shop', '=', shop),
|
||||
], fields=['id'])
|
||||
if statements:
|
||||
return
|
||||
values['company'] = company
|
||||
values['shop'] = shop
|
||||
values['device'] = self.sale_device
|
||||
self.dialog_reports.open_report(report_name, values)
|
||||
|
||||
def action_terminal_journal_report(self):
|
||||
|
@ -2663,7 +2666,7 @@ class AppWindow(FrontWindow):
|
|||
'invoice_type': invoice_type[0][0],
|
||||
'company': self.company,
|
||||
'party': self.default_party['id'],
|
||||
'sale_device': self.device['id'],
|
||||
'sale_device': self.sale_device,
|
||||
'payment_method': 'cash',
|
||||
'payment_term': self.default_payment_term['id'],
|
||||
'kind': 'take_away',
|
||||
|
@ -2704,7 +2707,6 @@ class AppWindow(FrontWindow):
|
|||
if self.type_pos_user == 'cashier':
|
||||
self.message_bar.set('not_sale')
|
||||
return
|
||||
|
||||
if self.salesman_required and not self.salesman:
|
||||
salesman = self.action_salesman_code()
|
||||
if salesman == 0:
|
||||
|
@ -2712,8 +2714,7 @@ class AppWindow(FrontWindow):
|
|||
return
|
||||
if not salesman:
|
||||
return self.dialog('error_salesman_wrong')
|
||||
else:
|
||||
self.salesman = salesman
|
||||
self.salesman = salesman
|
||||
|
||||
if self.environment == 'restaurant' and self._sale_pos_restaurant:
|
||||
self.dialog_consumer.clear()
|
||||
|
@ -2743,7 +2744,7 @@ class AppWindow(FrontWindow):
|
|||
'invoice_type': invoice_type[0][0],
|
||||
'company': self.company,
|
||||
'party': self.default_party['id'],
|
||||
'sale_device': self.device['id'],
|
||||
'sale_device': self.sale_device,
|
||||
'payment_method': 'cash',
|
||||
'payment_term': self.default_payment_term['id'],
|
||||
'kind': kind,
|
||||
|
@ -2753,7 +2754,7 @@ class AppWindow(FrontWindow):
|
|||
to_create.update({'salesman': self.salesman['id']})
|
||||
if self.environment != 'restaurant' and self._config.get('use_price_list'):
|
||||
self.field_list_price.set_from_id(self.shop['price_list.']['id'])
|
||||
sale = self.Sale.new_sale(to_create)
|
||||
sale = self.Sale.new_sale(args=[to_create])
|
||||
self.store.set(sale)
|
||||
self.sale_id = sale['id']
|
||||
|
||||
|
@ -3358,10 +3359,13 @@ class AppWindow(FrontWindow):
|
|||
res = self.Sale.faster_add_payment({
|
||||
'sale_id': self.sale_id,
|
||||
'journal_id': journal['id'],
|
||||
'sale_device': self.sale_device,
|
||||
'cash_received': to_numeric(amount),
|
||||
'voucher_number': voucher_number,
|
||||
'extra_paid': False,
|
||||
}, ctx={'advance': False, 'reservation': False})
|
||||
'advance': False,
|
||||
'reservation': False
|
||||
})
|
||||
if res.get("msg") and res.get('msg') not in ('missing_money', 'ok') or res.get('error'):
|
||||
if res.get("msg"):
|
||||
self.dialog(res['msg'])
|
||||
|
|
|
@ -15,7 +15,7 @@ MODELS_RESTAURANT = {
|
|||
},
|
||||
'res.user': {
|
||||
'rec_name': 'name',
|
||||
'fields': ['name', 'sale_device', 'type_pos_user', 'shop']
|
||||
'fields': ['name', 'sale_device', 'type_pos_user', 'shop', 'shops']
|
||||
},
|
||||
'product.category': {
|
||||
'rec_name': 'name',
|
||||
|
@ -124,7 +124,7 @@ MODELS_RESTAURANT = {
|
|||
'shop.invoice_copies', 'shop.pos_authorization', 'shop.discounts',
|
||||
'shop.computer_authorization', 'shop.manual_authorization',
|
||||
'shop.credit_note_electronic_authorization',
|
||||
'shop.salesmans.rec_name', 'shop.discount_pos_method',
|
||||
'shop.salesmans.rec_name', 'shop.salesmans.code', 'shop.discount_pos_method',
|
||||
'shop.debit_note_electronic_authorization',
|
||||
'shop.delivery_man.rec_name', 'shop.price_list.name',
|
||||
'shop.order_copies', 'shop.delivery_man.active',
|
||||
|
@ -134,7 +134,7 @@ MODELS_RESTAURANT = {
|
|||
'rec_name': 'name',
|
||||
'fields': [
|
||||
'taxes', 'product_categories', 'party', 'invoice_copies',
|
||||
'warehouse', 'payment_term', 'salesmans', 'delivery_man',
|
||||
'warehouse', 'payment_term', 'delivery_man',
|
||||
'discounts', 'price_list', 'order_copies']
|
||||
},
|
||||
'product.product': {
|
||||
|
@ -242,7 +242,7 @@ MODELS_RETAIL = {
|
|||
},
|
||||
'res.user': {
|
||||
'rec_name': 'name',
|
||||
'fields': ['name', 'sale_device', 'type_pos_user', 'shop']
|
||||
'fields': ['name', 'sale_device', 'type_pos_user', 'shop', 'shops']
|
||||
},
|
||||
'product.category': {
|
||||
'rec_name': 'name',
|
||||
|
@ -347,7 +347,7 @@ MODELS_RETAIL = {
|
|||
'shop.invoice_copies', 'shop.pos_authorization', 'shop.discounts',
|
||||
'shop.computer_authorization', 'shop.manual_authorization',
|
||||
'shop.credit_note_electronic_authorization',
|
||||
'shop.salesmans.rec_name', 'shop.delivery_man.active',
|
||||
'shop.salesmans.rec_name', 'shop.salesmans.code', 'shop.delivery_man.active',
|
||||
'shop.debit_note_electronic_authorization',
|
||||
'shop.delivery_man.rec_name', 'shop.price_list.name',
|
||||
'shop.order_copies'
|
||||
|
@ -357,7 +357,7 @@ MODELS_RETAIL = {
|
|||
'rec_name': 'name',
|
||||
'fields': [
|
||||
'taxes', 'product_categories', 'party', 'invoice_copies',
|
||||
'warehouse', 'payment_term', 'salesmans', 'delivery_man',
|
||||
'warehouse', 'payment_term', 'delivery_man',
|
||||
'discounts', 'price_list', 'order_copies']
|
||||
},
|
||||
'product.product': {
|
||||
|
|
|
@ -53,10 +53,11 @@ class StoreView(object):
|
|||
val = tr(val)
|
||||
field.setText(str(val))
|
||||
elif isinstance(field, ComboBox):
|
||||
if v:
|
||||
field.set_from_id(v)
|
||||
else:
|
||||
field.set_none()
|
||||
field.updateComboBox(v)
|
||||
# if v:
|
||||
# field.set_from_id(v)
|
||||
# else:
|
||||
# field.set_none()
|
||||
|
||||
def update(self, values):
|
||||
"""
|
||||
|
|
|
@ -5,6 +5,7 @@ port=8010
|
|||
mode=http
|
||||
database=DBNAME
|
||||
user=admin
|
||||
sale_device_code=001
|
||||
|
||||
#########################################
|
||||
# Printer Interface and Printer name
|
||||
|
|
Loading…
Reference in New Issue