You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1094 lines
38 KiB
C#

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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)
{
}
}
}