|
|
using System;
|
|
|
using System.Collections.Generic;
|
|
|
using System.ComponentModel;
|
|
|
using System.Drawing;
|
|
|
using System.Data;
|
|
|
using System.Linq;
|
|
|
using System.Text;
|
|
|
using System.Windows.Forms;
|
|
|
using System.Threading.Tasks;
|
|
|
using POSV.Utils;
|
|
|
using POSV.Entity;
|
|
|
using DevComponents.DotNetBar.Controls;
|
|
|
using POSV.Bean;
|
|
|
using POSV.MessageEvent;
|
|
|
using POS.Language.Language;
|
|
|
|
|
|
namespace POSV.Component
|
|
|
{
|
|
|
[ToolboxItem(true)]
|
|
|
public partial class CashierSettings : AbstractSettings
|
|
|
{
|
|
|
/// <summary>
|
|
|
/// 修改前的数据
|
|
|
/// </summary>
|
|
|
private Dictionary<string, string> _oldValue = new Dictionary<string, string>();
|
|
|
|
|
|
/// <summary>
|
|
|
/// 修改后的数据
|
|
|
/// </summary>
|
|
|
private Dictionary<string, string> _newValue = new Dictionary<string, string>();
|
|
|
|
|
|
private bool _inited = false;
|
|
|
|
|
|
public CashierSettings()
|
|
|
{
|
|
|
InitializeComponent();
|
|
|
|
|
|
this.superTabControl.SelectedTabChanging += OnSelectedTabChanging;
|
|
|
this.superTabControl.SelectedTabChanged += OnSelectedTabChanged;
|
|
|
}
|
|
|
|
|
|
public override void RefreshUi()
|
|
|
{
|
|
|
base.RefreshUi();
|
|
|
}
|
|
|
|
|
|
protected override void OnLoad(EventArgs e)
|
|
|
{
|
|
|
base.OnLoad(e);
|
|
|
|
|
|
if (this.DesignMode) return;
|
|
|
|
|
|
this.BackColor = Color.Transparent;
|
|
|
|
|
|
this.InitUi();
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// 初始化界面
|
|
|
/// </summary>
|
|
|
private void InitUi()
|
|
|
{
|
|
|
//界面加载开始
|
|
|
this._inited = false;
|
|
|
|
|
|
Task.Factory.StartNew(() =>
|
|
|
{
|
|
|
Dictionary<string, string> data = null;
|
|
|
|
|
|
//获取品类分组下的全部参数
|
|
|
using (var db = Global.Instance.OpenDataBase)
|
|
|
{
|
|
|
data = db.Dictionary<string, string>(string.Format(SqlConstant.ConfigQueryByGroupToDictionary, ConfigConstant.CASHIER_GROUP));
|
|
|
}
|
|
|
|
|
|
//将新增加或者变更的参数重新更新到数据库
|
|
|
var defaultValue = ConfigConstant.CashierGroupDefaultValue();
|
|
|
|
|
|
//数据库有配置参数
|
|
|
if (data != null)
|
|
|
{
|
|
|
var diff = defaultValue.Where(kvp => !data.ContainsKey(kvp.Key)).ToDictionary(kvp => kvp.Key, kvp => kvp.Value);
|
|
|
|
|
|
if (diff != null && diff.Keys.Count > 0)
|
|
|
{
|
|
|
var list = new List<Config>();
|
|
|
foreach (var v in diff)
|
|
|
{
|
|
|
var config = new Config();
|
|
|
config.Id = IdWorkerUtils.Instance.NextId();
|
|
|
config.Group = ConfigConstant.CASHIER_GROUP;
|
|
|
config.TenantId = Global.Instance.Authc.TenantId;
|
|
|
config.Keys = v.Key;
|
|
|
config.Values = v.Value;
|
|
|
|
|
|
list.Add(config);
|
|
|
}
|
|
|
//如果数据表中没有配置group相关的信息,更新差异
|
|
|
this.SaveChanged(list);
|
|
|
|
|
|
//将差异合并到data,避免再次访问数据库
|
|
|
data = data.Concat(diff).ToDictionary(x => x.Key, x => x.Value);
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
//加载系统默认参数
|
|
|
data = defaultValue;
|
|
|
|
|
|
var list = new List<Config>();
|
|
|
foreach (var v in defaultValue)
|
|
|
{
|
|
|
var config = new Config();
|
|
|
config.Id = IdWorkerUtils.Instance.NextId();
|
|
|
config.Group = ConfigConstant.CASHIER_GROUP;
|
|
|
config.TenantId = Global.Instance.Authc.TenantId;
|
|
|
config.Keys = v.Key;
|
|
|
config.Values = v.Value;
|
|
|
|
|
|
list.Add(config);
|
|
|
}
|
|
|
|
|
|
//如果数据表中没有配置group相关的信息,保存
|
|
|
this.SaveChanged(list);
|
|
|
}
|
|
|
|
|
|
return data;
|
|
|
}).ContinueWith(task =>
|
|
|
{
|
|
|
if (task.IsFaulted)
|
|
|
{
|
|
|
LOGGER.Error(task.Exception.GetBaseException(), "加载收银参数设置异常");
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
this.Invoke(new Action(() =>
|
|
|
{
|
|
|
BindUi(task.Result);
|
|
|
}));
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
|
|
|
private void BindUi(Dictionary<string, string> data)
|
|
|
{
|
|
|
//变更前的数据单独存储
|
|
|
_oldValue.Clear();
|
|
|
_oldValue = ObjectUtils.Copy<Dictionary<string, string>>(data);
|
|
|
//清理历史变更数据
|
|
|
_newValue.Clear();
|
|
|
|
|
|
//附加符号支持列表
|
|
|
this.cmbAdditional.DataSource = System.Enum.GetNames(typeof(AdditionalType));
|
|
|
//点餐界面排序列表
|
|
|
this.cmbProductOrder.DataSource = System.Enum.GetNames(typeof(ProductOrderType));
|
|
|
|
|
|
|
|
|
//金额尾数处理方式
|
|
|
if (data.ContainsKey(ConfigConstant.CASHIER_MANTISSA))
|
|
|
{
|
|
|
string _value = data[ConfigConstant.CASHIER_MANTISSA].ToString();
|
|
|
switch (_value)
|
|
|
{
|
|
|
case "0"://实款实收(默认)
|
|
|
this.checkBoxX60.Checked = true;
|
|
|
break;
|
|
|
case "1"://元以下的金额四舍五入
|
|
|
this.checkBoxX18.Checked = true;
|
|
|
break;
|
|
|
case "2"://角以下的金额四舍五入
|
|
|
this.checkBoxX19.Checked = true;
|
|
|
break;
|
|
|
case "3": //抹掉元以下的金额
|
|
|
this.checkBoxX3.Checked = true;
|
|
|
break;
|
|
|
case "4": //抹掉角以下的金额
|
|
|
this.checkBoxX6.Checked = true;
|
|
|
break;
|
|
|
default:
|
|
|
this.checkBoxX60.Checked = true;
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
this.checkBoxX60.Checked = true;
|
|
|
}
|
|
|
|
|
|
//界面价格显示小数位数
|
|
|
if (data.ContainsKey(ConfigConstant.CASHIER_PRICE_DIGIT))
|
|
|
{
|
|
|
this.comboBoxEx1.SelectedIndex = this.comboBoxEx1.FindString(data[ConfigConstant.CASHIER_PRICE_DIGIT].ToString());
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
this.comboBoxEx1.SelectedIndex = 2;
|
|
|
}
|
|
|
|
|
|
//界面数量显示小数位数
|
|
|
if (data.ContainsKey(ConfigConstant.CASHIER_QUANTITY_DIGIT))
|
|
|
{
|
|
|
this.comboBoxEx2.SelectedIndex = this.comboBoxEx2.FindString(data[ConfigConstant.CASHIER_QUANTITY_DIGIT].ToString());
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
this.comboBoxEx2.SelectedIndex = 2;
|
|
|
}
|
|
|
|
|
|
//界面小计显示小数位数
|
|
|
if (data.ContainsKey(ConfigConstant.CASHIER_SUBTOTAL_DIGIT))
|
|
|
{
|
|
|
this.comboBoxEx3.SelectedIndex = this.comboBoxEx3.FindString(data[ConfigConstant.CASHIER_SUBTOTAL_DIGIT].ToString());
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
this.comboBoxEx3.SelectedIndex = 2;
|
|
|
}
|
|
|
|
|
|
//POS号(厨显显示)
|
|
|
if (data.ContainsKey(ConfigConstant.CASHIER_POSNO))
|
|
|
{
|
|
|
this.posNoTextBox.Text = data[ConfigConstant.CASHIER_POSNO].ToString();
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
this.posNoTextBox.Text = "";
|
|
|
}
|
|
|
|
|
|
//CheckBoxX处理
|
|
|
foreach (Control control in tabPanel.Controls)
|
|
|
{
|
|
|
if (control is CheckBoxX)
|
|
|
{
|
|
|
var item = control as CheckBoxX;
|
|
|
var key = item.Tag.ToString();
|
|
|
if (data.ContainsKey(key))
|
|
|
{
|
|
|
string _value = data[key].ToString();
|
|
|
item.Checked = _value.Equals("1");
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
item.Checked = false;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//银行卡支付启用MIS
|
|
|
this.comboBoxEx4.DataSource = System.Enum.GetNames(typeof(BankOfMis));
|
|
|
//银行MIS选择
|
|
|
if (data.ContainsKey(ConfigConstant.CONFIG_CASHIER_MISBANK))
|
|
|
{
|
|
|
this.comboBoxEx4.SelectedIndex = this.comboBoxEx4.FindString(data[ConfigConstant.CONFIG_CASHIER_MISBANK].ToString());
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
this.comboBoxEx4.SelectedIndex = 1;
|
|
|
}
|
|
|
|
|
|
//高级 - CheckBoxX
|
|
|
foreach (Control control in tabPanelEx.Controls)
|
|
|
{
|
|
|
if (control is CheckBoxX)
|
|
|
{
|
|
|
var item = control as CheckBoxX;
|
|
|
var key = item.Tag.ToString();
|
|
|
if (data.ContainsKey(key))
|
|
|
{
|
|
|
string _value = data[key].ToString();
|
|
|
item.Checked = _value.Equals("1");
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
item.Checked = false;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//会员 - CheckBoxX
|
|
|
foreach (Control control in tabPanelMember.Controls)
|
|
|
{
|
|
|
if (control is CheckBoxX)
|
|
|
{
|
|
|
var item = control as CheckBoxX;
|
|
|
var key = item.Tag.ToString();
|
|
|
if (data.ContainsKey(key))
|
|
|
{
|
|
|
string _value = data[key].ToString();
|
|
|
item.Checked = _value.Equals("1");
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
item.Checked = false;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//交班 - CheckBoxX
|
|
|
foreach (Control control in tabPanelHand.Controls)
|
|
|
{
|
|
|
if (control is CheckBoxX)
|
|
|
{
|
|
|
var item = control as CheckBoxX;
|
|
|
var key = item.Tag.ToString();
|
|
|
if (data.ContainsKey(key))
|
|
|
{
|
|
|
string _value = data[key].ToString();
|
|
|
item.Checked = _value.Equals("1");
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
item.Checked = false;
|
|
|
}
|
|
|
}
|
|
|
else if (control is GroupPanel)
|
|
|
{
|
|
|
foreach (Control groupItem in control.Controls)
|
|
|
{
|
|
|
var item = groupItem as CheckBoxX;
|
|
|
var key = item.Tag.ToString();
|
|
|
if (data.ContainsKey(key))
|
|
|
{
|
|
|
string _value = data[key].ToString();
|
|
|
item.Checked = _value.Equals("1");
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
item.Checked = false;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//库存 - CheckBoxX
|
|
|
foreach (Control control in tabPanelStock.Controls)
|
|
|
{
|
|
|
if (control is CheckBoxX)
|
|
|
{
|
|
|
var item = control as CheckBoxX;
|
|
|
var key = item.Tag.ToString();
|
|
|
if (data.ContainsKey(key))
|
|
|
{
|
|
|
string _value = data[key].ToString();
|
|
|
item.Checked = _value.Equals("1");
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
item.Checked = false;
|
|
|
}
|
|
|
}
|
|
|
else if (control is GroupPanel)
|
|
|
{
|
|
|
foreach (Control groupItem in control.Controls)
|
|
|
{
|
|
|
var item = groupItem as CheckBoxX;
|
|
|
var key = item.Tag.ToString();
|
|
|
if (data.ContainsKey(key))
|
|
|
{
|
|
|
string _value = data[key].ToString();
|
|
|
item.Checked = _value.Equals("1");
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
item.Checked = false;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//会员卡规则
|
|
|
MemberCardItem cardItem = null;
|
|
|
if (data.ContainsKey(ConfigConstant.CASHIER_MEMBER_CARD))
|
|
|
{
|
|
|
cardItem = JsonUtils.Deserialize<MemberCardItem>(data[ConfigConstant.CASHIER_MEMBER_CARD]);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
cardItem = new MemberCardItem();
|
|
|
cardItem.Enable = true;
|
|
|
cardItem.DefaultType = MemberCardReadType.手机号码;
|
|
|
var list = new List<MemberCardReadType>();
|
|
|
list.Add(MemberCardReadType.磁条卡或IC卡);
|
|
|
list.Add(MemberCardReadType.手机号码);
|
|
|
list.Add(MemberCardReadType.电子卡);
|
|
|
cardItem.ListReader = list;
|
|
|
|
|
|
var types = new List<MemberCardType>();
|
|
|
types.Add(MemberCardType.Mifare);
|
|
|
cardItem.ListType = types;
|
|
|
|
|
|
cardItem.PaymentType = 1;
|
|
|
}
|
|
|
//会员身份识别方式
|
|
|
foreach (var t in cardItem.ListReader)
|
|
|
{
|
|
|
switch (t)
|
|
|
{
|
|
|
case MemberCardReadType.手机号码:
|
|
|
this.checkBoxX14.Checked = true;
|
|
|
break;
|
|
|
case MemberCardReadType.电子卡:
|
|
|
this.checkBoxX15.Checked = true;
|
|
|
break;
|
|
|
case MemberCardReadType.磁条卡或IC卡:
|
|
|
this.checkBoxX13.Checked = true;
|
|
|
break;
|
|
|
default:
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//会员卡介质
|
|
|
foreach (var t in cardItem.ListType)
|
|
|
{
|
|
|
switch (t)
|
|
|
{
|
|
|
case MemberCardType.Magnetic:
|
|
|
this.checkBoxX38.Checked = true;
|
|
|
break;
|
|
|
case MemberCardType.Mifare:
|
|
|
this.checkBoxX39.Checked = true;
|
|
|
break;
|
|
|
default:
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//会员卡功能设置
|
|
|
foreach (var t in cardItem.Function)
|
|
|
{
|
|
|
switch (t)
|
|
|
{
|
|
|
case MemberCardFunctions.会员价优惠:
|
|
|
this.checkBoxX27.Checked = true;
|
|
|
break;
|
|
|
case MemberCardFunctions.会员积分及兑换:
|
|
|
this.checkBoxX30.Checked = true;
|
|
|
break;
|
|
|
case MemberCardFunctions.会员储值及消费:
|
|
|
this.checkBoxX34.Checked = true;
|
|
|
break;
|
|
|
default:
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//会员卡支付认证
|
|
|
if (cardItem.PaymentType == 1)
|
|
|
{
|
|
|
this.checkBoxX28.Checked = true;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
this.checkBoxX26.Checked = true;
|
|
|
}
|
|
|
//卡面号前缀
|
|
|
if (data.ContainsKey(ConfigConstant.CASHIER_CARDNO_PREFIX))
|
|
|
{
|
|
|
this.cardNoPrefixTextBox.Text = data[ConfigConstant.CASHIER_CARDNO_PREFIX].ToString();
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
this.cardNoPrefixTextBox.Text = "";
|
|
|
}
|
|
|
//预设密码
|
|
|
if (data.ContainsKey(ConfigConstant.CONFIG_CASHIER_PREINSTALLPASSWORD))
|
|
|
{
|
|
|
this.preinstallPwdPrefixTextBox.Text = data[ConfigConstant.CONFIG_CASHIER_PREINSTALLPASSWORD].ToString();
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
this.preinstallPwdPrefixTextBox.Text = "";
|
|
|
}
|
|
|
//果盘参数
|
|
|
if (data.ContainsKey(ConfigConstant.CONFIG_CASHIER_GUOPANMSID))
|
|
|
{
|
|
|
this.txtGuoPanMsid.Text = data[ConfigConstant.CONFIG_CASHIER_GUOPANMSID].ToString();
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
this.txtGuoPanMsid.Text = string.Empty;
|
|
|
}
|
|
|
//果盘参数
|
|
|
if (data.ContainsKey(ConfigConstant.CONFIG_CASHIER_GUOPANKEY))
|
|
|
{
|
|
|
this.txtGuoPanApiKey.Text = data[ConfigConstant.CONFIG_CASHIER_GUOPANKEY].ToString();
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
this.txtGuoPanApiKey.Text = string.Empty;
|
|
|
}
|
|
|
//商品附加信息符号
|
|
|
if (data.ContainsKey(ConfigConstant.CASHIER_ADDITIONAL))
|
|
|
{
|
|
|
this.cmbAdditional.SelectedIndex = this.cmbAdditional.FindString(data[ConfigConstant.CASHIER_ADDITIONAL].ToString());
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
this.cmbAdditional.SelectedIndex = 1;
|
|
|
}
|
|
|
|
|
|
//商品附加信息符号
|
|
|
if (data.ContainsKey(ConfigConstant.CASHIER_PRODUCTORDER))
|
|
|
{
|
|
|
this.cmbProductOrder.SelectedIndex = this.cmbProductOrder.FindString(data[ConfigConstant.CASHIER_PRODUCTORDER].ToString());
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
this.cmbProductOrder.SelectedIndex = 1;
|
|
|
}
|
|
|
|
|
|
//最大金额提示
|
|
|
if (data.ContainsKey(ConfigConstant.CONFIG_CASHIER_MAXSALEMONEY))
|
|
|
{
|
|
|
this.formulatemoneyNoTextBox.Text = data[ConfigConstant.CONFIG_CASHIER_MAXSALEMONEY].ToString();
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
this.cmbProductOrder.Text = "";
|
|
|
}
|
|
|
|
|
|
#region 外卖设置
|
|
|
|
|
|
//开启小程序点餐
|
|
|
if (data.ContainsKey(ConfigConstant.CONFIG_CASHIER_ENABLEAPPLETORDER))
|
|
|
{
|
|
|
enableAppOrder.Value = data[ConfigConstant.CONFIG_CASHIER_ENABLEAPPLETORDER].ToString().Equals("1");
|
|
|
}
|
|
|
|
|
|
//开启美团商家外卖
|
|
|
if (data.ContainsKey(ConfigConstant.CONFIG_CASHIER_ENABLESHOPMEITUAN))
|
|
|
{
|
|
|
ShopMeiTuan.Value = data[ConfigConstant.CONFIG_CASHIER_ENABLESHOPMEITUAN].ToString().Equals("1");
|
|
|
}
|
|
|
|
|
|
|
|
|
//禁止启用果盘
|
|
|
if (data.ContainsKey(ConfigConstant.CONFIG_CASHIER_ENABLEMEITUANORDER))
|
|
|
{
|
|
|
EnableMeiTuanOrder.Value = data[ConfigConstant.CONFIG_CASHIER_ENABLEMEITUANORDER].ToString().Equals("1");
|
|
|
}
|
|
|
|
|
|
//禁止果盘转本地单
|
|
|
if (data.ContainsKey(ConfigConstant.CONFIG_CASHIER_ENABLEMEITUANORDERSAVE))
|
|
|
{
|
|
|
EnableMeiTuanOrderSave.Value = data[ConfigConstant.CONFIG_CASHIER_ENABLEMEITUANORDERSAVE].ToString().Equals("1");
|
|
|
}
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
//界面加载完成
|
|
|
this._inited = true;
|
|
|
}
|
|
|
|
|
|
public override List<Config> NewChanged()
|
|
|
{
|
|
|
var result = new List<Config>();
|
|
|
|
|
|
if (!this._inited) return result;
|
|
|
|
|
|
var cashierMantissa = "0";
|
|
|
//实款实收(默认)
|
|
|
if (checkBoxX60.Checked)
|
|
|
{
|
|
|
cashierMantissa = checkBoxX60.Tag.ToString();
|
|
|
}
|
|
|
|
|
|
//元以下的金额四舍五入
|
|
|
if (checkBoxX18.Checked)
|
|
|
{
|
|
|
cashierMantissa = checkBoxX18.Tag.ToString();
|
|
|
}
|
|
|
|
|
|
//角以下的金额四舍五入
|
|
|
if (checkBoxX19.Checked)
|
|
|
{
|
|
|
cashierMantissa = checkBoxX19.Tag.ToString();
|
|
|
}
|
|
|
|
|
|
//抹掉元以下的金额
|
|
|
if (checkBoxX3.Checked)
|
|
|
{
|
|
|
cashierMantissa = checkBoxX3.Tag.ToString();
|
|
|
}
|
|
|
|
|
|
//抹掉角以下的金额
|
|
|
if (checkBoxX6.Checked)
|
|
|
{
|
|
|
cashierMantissa = checkBoxX6.Tag.ToString();
|
|
|
}
|
|
|
|
|
|
|
|
|
//判断金额尾数处理方式是否更改
|
|
|
bool isChanged = !(this._oldValue.ContainsKey(ConfigConstant.CASHIER_MANTISSA) && this._oldValue[ConfigConstant.CASHIER_MANTISSA].Equals(cashierMantissa));
|
|
|
if (isChanged)
|
|
|
{
|
|
|
this._newValue[ConfigConstant.CASHIER_MANTISSA] = cashierMantissa;
|
|
|
}
|
|
|
|
|
|
var _value = "2";
|
|
|
//单价显示小数位数
|
|
|
_value = this.comboBoxEx1.SelectedItem.ToString();
|
|
|
isChanged = !(this._oldValue.ContainsKey(ConfigConstant.CASHIER_PRICE_DIGIT) && this._oldValue[ConfigConstant.CASHIER_PRICE_DIGIT].Equals(_value));
|
|
|
if (isChanged)
|
|
|
{
|
|
|
this._newValue[ConfigConstant.CASHIER_PRICE_DIGIT] = _value;
|
|
|
}
|
|
|
|
|
|
//数量显示小数位数
|
|
|
_value = this.comboBoxEx2.SelectedItem.ToString();
|
|
|
isChanged = !(this._oldValue.ContainsKey(ConfigConstant.CASHIER_QUANTITY_DIGIT) && this._oldValue[ConfigConstant.CASHIER_QUANTITY_DIGIT].Equals(_value));
|
|
|
if (isChanged)
|
|
|
{
|
|
|
this._newValue[ConfigConstant.CASHIER_QUANTITY_DIGIT] = _value;
|
|
|
}
|
|
|
|
|
|
//小计显示小数位数
|
|
|
_value = this.comboBoxEx3.SelectedItem.ToString();
|
|
|
isChanged = !(this._oldValue.ContainsKey(ConfigConstant.CASHIER_SUBTOTAL_DIGIT) && this._oldValue[ConfigConstant.CASHIER_SUBTOTAL_DIGIT].Equals(_value));
|
|
|
if (isChanged)
|
|
|
{
|
|
|
this._newValue[ConfigConstant.CASHIER_SUBTOTAL_DIGIT] = _value;
|
|
|
}
|
|
|
|
|
|
//POS号(厨显显示)
|
|
|
var _value_posNoPrefix = ""; ;
|
|
|
_value_posNoPrefix = this.posNoTextBox.Text;
|
|
|
isChanged = !(this._oldValue.ContainsKey(ConfigConstant.CASHIER_POSNO) && this._oldValue[ConfigConstant.CASHIER_POSNO].Equals(_value));
|
|
|
if (isChanged)
|
|
|
{
|
|
|
this._newValue[ConfigConstant.CASHIER_POSNO] = _value_posNoPrefix;
|
|
|
}
|
|
|
|
|
|
var _whereadditemmoney = "";
|
|
|
_whereadditemmoney = this.formulatemoneyNoTextBox.Text;
|
|
|
isChanged = (this._oldValue.ContainsKey(ConfigConstant.CONFIG_CASHIER_MAXSALEMONEY));
|
|
|
if (isChanged)
|
|
|
{
|
|
|
this._newValue[ConfigConstant.CONFIG_CASHIER_MAXSALEMONEY] = _whereadditemmoney;
|
|
|
}
|
|
|
|
|
|
|
|
|
//CheckBoxX处理
|
|
|
foreach (Control control in tabPanel.Controls)
|
|
|
{
|
|
|
if (control is CheckBoxX)
|
|
|
{
|
|
|
var item = control as CheckBoxX;
|
|
|
var key = item.Tag.ToString();
|
|
|
//忽略为空的
|
|
|
if (string.IsNullOrEmpty(key)) continue;
|
|
|
|
|
|
var value = item.Checked ? "1" : "0";
|
|
|
|
|
|
//判断是否更改,如果过更改压入到 NewValue
|
|
|
bool changed = !(this._oldValue.ContainsKey(key) && this._oldValue[key].Equals(value));
|
|
|
if (changed)
|
|
|
{
|
|
|
this._newValue[key] = value;
|
|
|
}
|
|
|
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//CheckBoxX处理
|
|
|
foreach (Control control in tabPanelEx.Controls)
|
|
|
{
|
|
|
if (control is CheckBoxX)
|
|
|
{
|
|
|
var item = control as CheckBoxX;
|
|
|
var key = item.Tag.ToString();
|
|
|
//忽略为空的
|
|
|
if (string.IsNullOrEmpty(key)) continue;
|
|
|
|
|
|
var value = item.Checked ? "1" : "0";
|
|
|
|
|
|
//判断是否更改,如果过更改压入到 NewValue
|
|
|
bool changed = !(this._oldValue.ContainsKey(key) && this._oldValue[key].Equals(value));
|
|
|
if (changed)
|
|
|
{
|
|
|
this._newValue[key] = value;
|
|
|
}
|
|
|
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//会员设置
|
|
|
foreach (Control control in tabPanelMember.Controls)
|
|
|
{
|
|
|
if (control is CheckBoxX)
|
|
|
{
|
|
|
var item = control as CheckBoxX;
|
|
|
var key = item.Tag.ToString();
|
|
|
//忽略为空的
|
|
|
if (string.IsNullOrEmpty(key)) continue;
|
|
|
|
|
|
var value = item.Checked ? "1" : "0";
|
|
|
|
|
|
//判断是否更改,如果过更改压入到 NewValue
|
|
|
bool changed = !(this._oldValue.ContainsKey(key) && this._oldValue[key].Equals(value));
|
|
|
if (changed)
|
|
|
{
|
|
|
this._newValue[key] = value;
|
|
|
}
|
|
|
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//交班设置
|
|
|
foreach (Control control in tabPanelHand.Controls)
|
|
|
{
|
|
|
if (control is CheckBoxX)
|
|
|
{
|
|
|
var item = control as CheckBoxX;
|
|
|
var key = item.Tag.ToString();
|
|
|
//忽略为空的
|
|
|
if (string.IsNullOrEmpty(key)) continue;
|
|
|
|
|
|
var value = item.Checked ? "1" : "0";
|
|
|
|
|
|
//判断是否更改,如果过更改压入到 NewValue
|
|
|
bool changed = !(this._oldValue.ContainsKey(key) && this._oldValue[key].Equals(value));
|
|
|
if (changed)
|
|
|
{
|
|
|
this._newValue[key] = value;
|
|
|
}
|
|
|
|
|
|
}
|
|
|
else if (control is GroupPanel)
|
|
|
{
|
|
|
foreach (Control groupItem in control.Controls)
|
|
|
{
|
|
|
var item = groupItem as CheckBoxX;
|
|
|
var key = item.Tag.ToString();
|
|
|
//忽略为空的
|
|
|
if (string.IsNullOrEmpty(key)) continue;
|
|
|
|
|
|
var value = item.Checked ? "1" : "0";
|
|
|
|
|
|
//判断是否更改,如果过更改压入到 NewValue
|
|
|
bool changed = !(this._oldValue.ContainsKey(key) && this._oldValue[key].Equals(value));
|
|
|
if (changed)
|
|
|
{
|
|
|
this._newValue[key] = value;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//库存设置
|
|
|
foreach (Control control in tabPanelStock.Controls)
|
|
|
{
|
|
|
if (control is CheckBoxX)
|
|
|
{
|
|
|
var item = control as CheckBoxX;
|
|
|
var key = item.Tag.ToString();
|
|
|
//忽略为空的
|
|
|
if (string.IsNullOrEmpty(key)) continue;
|
|
|
|
|
|
var value = item.Checked ? "1" : "0";
|
|
|
|
|
|
//判断是否更改,如果过更改压入到 NewValue
|
|
|
bool changed = !(this._oldValue.ContainsKey(key) && this._oldValue[key].Equals(value));
|
|
|
if (changed)
|
|
|
{
|
|
|
this._newValue[key] = value;
|
|
|
}
|
|
|
|
|
|
}
|
|
|
else if (control is GroupPanel)
|
|
|
{
|
|
|
foreach (Control groupItem in control.Controls)
|
|
|
{
|
|
|
var item = groupItem as CheckBoxX;
|
|
|
var key = item.Tag.ToString();
|
|
|
//忽略为空的
|
|
|
if (string.IsNullOrEmpty(key)) continue;
|
|
|
|
|
|
var value = item.Checked ? "1" : "0";
|
|
|
|
|
|
//判断是否更改,如果过更改压入到 NewValue
|
|
|
bool changed = !(this._oldValue.ContainsKey(key) && this._oldValue[key].Equals(value));
|
|
|
if (changed)
|
|
|
{
|
|
|
this._newValue[key] = value;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//会员规则处理
|
|
|
var cardItem = new MemberCardItem();
|
|
|
cardItem.Enable = true;
|
|
|
|
|
|
var list = new List<MemberCardReadType>();
|
|
|
|
|
|
if (checkBoxX13.Checked)
|
|
|
{
|
|
|
list.Add(MemberCardReadType.磁条卡或IC卡);
|
|
|
}
|
|
|
if (checkBoxX14.Checked)
|
|
|
{
|
|
|
list.Add(MemberCardReadType.手机号码);
|
|
|
}
|
|
|
if (checkBoxX15.Checked)
|
|
|
{
|
|
|
list.Add(MemberCardReadType.电子卡);
|
|
|
}
|
|
|
|
|
|
cardItem.ListReader = list;
|
|
|
|
|
|
//卡面号前缀
|
|
|
var _value_cardNoPrefix = "";
|
|
|
_value_cardNoPrefix = this.cardNoPrefixTextBox.Text;
|
|
|
isChanged = !(this._oldValue.ContainsKey(ConfigConstant.CASHIER_CARDNO_PREFIX) && this._oldValue[ConfigConstant.CASHIER_CARDNO_PREFIX].Equals(_value));
|
|
|
if (isChanged)
|
|
|
{
|
|
|
this._newValue[ConfigConstant.CASHIER_CARDNO_PREFIX] = _value_cardNoPrefix;
|
|
|
}
|
|
|
|
|
|
//卡面号前缀
|
|
|
var _value_preinstallpassword = "";
|
|
|
_value_preinstallpassword = this.preinstallPwdPrefixTextBox.Text;
|
|
|
isChanged = !(this._oldValue.ContainsKey(ConfigConstant.CONFIG_CASHIER_PREINSTALLPASSWORD) && this._oldValue[ConfigConstant.CONFIG_CASHIER_PREINSTALLPASSWORD].Equals(_value));
|
|
|
if (isChanged)
|
|
|
{
|
|
|
this._newValue[ConfigConstant.CONFIG_CASHIER_PREINSTALLPASSWORD] = _value_preinstallpassword;
|
|
|
}
|
|
|
|
|
|
|
|
|
var _value_Msid = "";
|
|
|
_value_Msid = this.txtGuoPanMsid.Text;
|
|
|
isChanged = !(this._oldValue.ContainsKey(ConfigConstant.CONFIG_CASHIER_GUOPANMSID) && this._oldValue[ConfigConstant.CONFIG_CASHIER_GUOPANMSID].Equals(_value));
|
|
|
if (isChanged)
|
|
|
{
|
|
|
this._newValue[ConfigConstant.CONFIG_CASHIER_GUOPANMSID] = _value_Msid;
|
|
|
}
|
|
|
|
|
|
var _value_Key = "";
|
|
|
_value_Key = this.txtGuoPanApiKey.Text;
|
|
|
isChanged = !(this._oldValue.ContainsKey(ConfigConstant.CONFIG_CASHIER_GUOPANKEY) && this._oldValue[ConfigConstant.CONFIG_CASHIER_GUOPANKEY].Equals(_value));
|
|
|
if (isChanged)
|
|
|
{
|
|
|
this._newValue[ConfigConstant.CONFIG_CASHIER_GUOPANKEY] = _value_Key;
|
|
|
}
|
|
|
|
|
|
|
|
|
//会员卡介质
|
|
|
var types = new List<MemberCardType>();
|
|
|
if (this.checkBoxX38.Checked)
|
|
|
{
|
|
|
types.Add(MemberCardType.Magnetic);
|
|
|
}
|
|
|
if (this.checkBoxX39.Checked)
|
|
|
{
|
|
|
types.Add(MemberCardType.Mifare);
|
|
|
}
|
|
|
cardItem.ListType = types;
|
|
|
|
|
|
|
|
|
//会员卡功能设置
|
|
|
var funs = new List<MemberCardFunctions>();
|
|
|
|
|
|
if (checkBoxX27.Checked)
|
|
|
{
|
|
|
funs.Add(MemberCardFunctions.会员价优惠);
|
|
|
}
|
|
|
if (checkBoxX30.Checked)
|
|
|
{
|
|
|
funs.Add(MemberCardFunctions.会员积分及兑换);
|
|
|
}
|
|
|
if (checkBoxX34.Checked)
|
|
|
{
|
|
|
funs.Add(MemberCardFunctions.会员储值及消费);
|
|
|
}
|
|
|
cardItem.Function = funs;
|
|
|
|
|
|
//会员卡支付认证
|
|
|
if (checkBoxX28.Checked)
|
|
|
{
|
|
|
cardItem.PaymentType = 1;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
cardItem.PaymentType = 0;
|
|
|
}
|
|
|
|
|
|
_value = JsonUtils.Serialize(cardItem);
|
|
|
|
|
|
isChanged = !(this._oldValue.ContainsKey(ConfigConstant.CASHIER_MEMBER_CARD) && this._oldValue[ConfigConstant.CASHIER_MEMBER_CARD].Equals(_value));
|
|
|
if (isChanged)
|
|
|
{
|
|
|
this._newValue[ConfigConstant.CASHIER_MEMBER_CARD] = _value;
|
|
|
}
|
|
|
|
|
|
//银行MIS处理
|
|
|
var bankOfMis = BankOfMis.建行MIS;
|
|
|
if (this.comboBoxEx4.SelectedItem != null)
|
|
|
{
|
|
|
Enum.TryParse(this.comboBoxEx4.SelectedItem.ToString(), out bankOfMis);
|
|
|
}
|
|
|
|
|
|
|
|
|
_value = bankOfMis.ToString();
|
|
|
|
|
|
isChanged = !(this._oldValue.ContainsKey(ConfigConstant.CONFIG_CASHIER_MISBANK) && this._oldValue[ConfigConstant.CONFIG_CASHIER_MISBANK].Equals(_value));
|
|
|
if (isChanged)
|
|
|
{
|
|
|
this._newValue[ConfigConstant.CONFIG_CASHIER_MISBANK] = _value;
|
|
|
}
|
|
|
|
|
|
|
|
|
//商品附加信息符号
|
|
|
var additionalType = AdditionalType.方括号;
|
|
|
Enum.TryParse(this.cmbAdditional.SelectedItem.ToString(), out additionalType);
|
|
|
|
|
|
_value = additionalType.ToString();
|
|
|
|
|
|
isChanged = !(this._oldValue.ContainsKey(ConfigConstant.CASHIER_ADDITIONAL) && this._oldValue[ConfigConstant.CASHIER_ADDITIONAL].Equals(_value));
|
|
|
if (isChanged)
|
|
|
{
|
|
|
this._newValue[ConfigConstant.CASHIER_ADDITIONAL] = _value;
|
|
|
}
|
|
|
//商品排序方式
|
|
|
var productOrderType = ProductOrderType.不排序;
|
|
|
Enum.TryParse(this.cmbProductOrder.SelectedItem.ToString(), out productOrderType);
|
|
|
|
|
|
_value = productOrderType.ToString();
|
|
|
|
|
|
isChanged = !(this._oldValue.ContainsKey(ConfigConstant.CASHIER_PRODUCTORDER) && this._oldValue[ConfigConstant.CASHIER_PRODUCTORDER].Equals(_value));
|
|
|
if (isChanged)
|
|
|
{
|
|
|
this._newValue[ConfigConstant.CASHIER_PRODUCTORDER] = _value;
|
|
|
}
|
|
|
|
|
|
#region 外卖设置
|
|
|
|
|
|
this._newValue[ConfigConstant.CONFIG_CASHIER_ENABLEAPPLETORDER] = this.enableAppOrder.Value ? "1" : "0";
|
|
|
|
|
|
this._newValue[ConfigConstant.CONFIG_CASHIER_ENABLESHOPMEITUAN] = this.ShopMeiTuan.Value ? "1" : "0";
|
|
|
|
|
|
this._newValue[ConfigConstant.CONFIG_CASHIER_ENABLEMEITUANORDER] = this.EnableMeiTuanOrder.Value ? "1" : "0";
|
|
|
|
|
|
this._newValue[ConfigConstant.CONFIG_CASHIER_ENABLEMEITUANORDERSAVE] = this.EnableMeiTuanOrderSave.Value ? "1" : "0";
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
//转换为Config对象,便于存储
|
|
|
foreach (var v in this._newValue)
|
|
|
{
|
|
|
var config = new Config();
|
|
|
|
|
|
config.Id = IdWorkerUtils.Instance.NextId();
|
|
|
config.Group = ConfigConstant.CASHIER_GROUP;
|
|
|
config.TenantId = Global.Instance.Authc.TenantId;
|
|
|
config.Keys = v.Key;
|
|
|
config.Values = v.Value;
|
|
|
|
|
|
result.Add(config);
|
|
|
}
|
|
|
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
|
|
|
public override Tuple<bool, string> SaveChanged(List<Config> data)
|
|
|
{
|
|
|
bool isSuccess = true;
|
|
|
string message = "参数更新成功";
|
|
|
try
|
|
|
{
|
|
|
lock (Global.Instance.SyncLock)
|
|
|
{
|
|
|
using (var db = Global.Instance.OpenDataBase)
|
|
|
{
|
|
|
using (var trans = db.GetTransaction())
|
|
|
{
|
|
|
foreach (var config in data)
|
|
|
{
|
|
|
db.Save(config);
|
|
|
}
|
|
|
trans.Complete();
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
isSuccess = false;
|
|
|
message = "参数更新异常";
|
|
|
|
|
|
LOGGER.Error(ex, message);
|
|
|
}
|
|
|
finally
|
|
|
{
|
|
|
if (isSuccess)
|
|
|
{
|
|
|
//新修改后的参数应用后,重置OldValue,避免用户在没有切换Tab情况下,直接修改当前Tab内容
|
|
|
foreach (var config in data)
|
|
|
{
|
|
|
string key = config.Keys;
|
|
|
string value = config.Values;
|
|
|
this._oldValue[key] = value;
|
|
|
}
|
|
|
|
|
|
this._newValue.Clear();
|
|
|
|
|
|
//更新控件UI
|
|
|
UpdateCashierUi();
|
|
|
}
|
|
|
}
|
|
|
return new Tuple<bool, string>(isSuccess, message);
|
|
|
}
|
|
|
|
|
|
private void UpdateCashierUi()
|
|
|
{
|
|
|
Global.Instance.ReloadConfig(ConfigConstant.CASHIER_GROUP);
|
|
|
}
|
|
|
|
|
|
|
|
|
private void OnSelectedTabChanged(object sender, DevComponents.DotNetBar.SuperTabStripSelectedTabChangedEventArgs e)
|
|
|
{
|
|
|
|
|
|
}
|
|
|
|
|
|
private void OnSelectedTabChanging(object sender, DevComponents.DotNetBar.SuperTabStripSelectedTabChangingEventArgs e)
|
|
|
{
|
|
|
if (e.OldValue == null)
|
|
|
{
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
private void OnButtonOKClick(object sender, EventArgs e)
|
|
|
{
|
|
|
var data = NewChanged();
|
|
|
if (data != null && data.Count > 0)
|
|
|
{
|
|
|
var result = this.SaveChanged(data);
|
|
|
if (result.Item1)
|
|
|
{
|
|
|
string message = "[" + LangProxy.ToLang(this.Tag.ToString()) + LangProxy.ToLang("]的参数修改成功");
|
|
|
DialogForm dialog = new DialogForm(LangProxy.ToLang("参数更新成功"), message, MessageBoxIcon.Information, MessageBoxButtons.OK);
|
|
|
dialog.ShowDialog();
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
string message = "[" + LangProxy.ToLang(this.Tag.ToString()) + LangProxy.ToLang("]的参数修改失败");
|
|
|
DialogForm dialog = new DialogForm(LangProxy.ToLang("参数更新失败"), message, MessageBoxIcon.Error, MessageBoxButtons.OK);
|
|
|
dialog.ShowDialog();
|
|
|
}
|
|
|
|
|
|
if (data.Exists(x => x.Keys == ConfigConstant.CONFIG_CASHIER_ENABLESTUDYMODE))
|
|
|
{
|
|
|
//变动中包含练习模式,发送通知
|
|
|
MsgEvent.Send(Constant.STUDYMODE_CHANGED_NOTIFY, null);
|
|
|
}
|
|
|
|
|
|
}
|
|
|
}
|
|
|
|
|
|
private void OnCardEnableChecked(object sender, EventArgs e)
|
|
|
{
|
|
|
|
|
|
}
|
|
|
|
|
|
private void OnButtonCloseClick(object sender, EventArgs e)
|
|
|
{
|
|
|
var parent = this.FindForm();
|
|
|
if (parent != null && parent is SettingsForm)
|
|
|
{
|
|
|
var settings = parent as SettingsForm;
|
|
|
settings.FormClose();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
private void OnBtnCustomClick(object sender, EventArgs e)
|
|
|
{
|
|
|
var item = sender as NumericTextBox;
|
|
|
|
|
|
NumericKeyboard.ShowKeyboard(this, item);
|
|
|
}
|
|
|
|
|
|
private void groupPanel1_Click(object sender, EventArgs e)
|
|
|
{
|
|
|
|
|
|
}
|
|
|
}
|
|
|
}
|