using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using PosDataTest.Common; namespace PosDataTest { public class GoodsAddHelper { /// /// 留夫鸭销售模式 /// /// 条码 /// 销售列表 /// out[保质期状态] /// out[商品行] /// public static bool GetLFY(string inputBarcode, DataTable commodityTable, out PosDictionary.GuaranteeState guaranteeState, out DataRow commodityRow) { //01234567 8901 234567 89 //05314020 0290 180914 08808 if (inputBarcode.Length < 23) { commodityRow = null; guaranteeState = PosDictionary.GuaranteeState.OK; return false; } string _strBarcode = inputBarcode.Substring(0, 8); string _strWeight = inputBarcode.Substring(8, 4); if (!decimal.TryParse(_strWeight, out decimal _decWeight)) { commodityRow = null; guaranteeState = PosDictionary.GuaranteeState.OK; return false; } _decWeight = _decWeight / 1000; string _strProductionDate = inputBarcode.Substring(12, 6); if (!DateTime.TryParseExact(_strProductionDate, "yyMMdd", System.Globalization.CultureInfo.CurrentCulture, System.Globalization.DateTimeStyles.None, out DateTime _ProductionDate)) { commodityRow = null; guaranteeState = PosDictionary.GuaranteeState.OK; return false; } string _strSelect = string.Format(@"SELECT DISTINCT A.COMMODITY_NAME,A.COMMODITY_RETAILPRICE, A.COMMODITY_CODE,A.COMMODITY_TYPE,A.COMMODITY_SYMBOL,A.COMMODITY_BARCODE, A.COMMODITY_MEMBERPRICE,ISNULL(A.METERINGMETHOD,1) AS METERINGMETHOD, ISNULL(A.GUARANTEE_DAY,0) AS GUARANTEE_DAY,ISNULL(A.REMINDER_DAY,0) AS REMINDER_DAY, ISNULL(B.KITCHENCONFIG_INDEX,1000) AS KITCHENCONFIG_INDEX,A.COMMODITY_UNIT FROM T_COMMODITYEX A LEFT JOIN T_KITCHENCONFIG B ON A.COMMODITY_TYPE = B.COMMODITYTYPE WHERE A.ISVALID = 1 AND A.SERVERPARTSHOP_ID = {0} AND A.COMMODITY_BARCODE = '{1}'", QualityHelper.serverpartshop_id, _strBarcode); try { using (DataTable _DataTable = ESSupport.Lib.SyBaseHelper.QueryOdbc(_strSelect).Tables[0]) { if (_DataTable.Rows.Count > 0) { commodityRow = commodityTable.NewRow(); commodityRow["commodity_barcode"] = _DataTable.Rows[0]["COMMODITY_BARCODE"]; commodityRow["commodity_name"] = _DataTable.Rows[0]["COMMODITY_NAME"]; commodityRow["commodity_unit"] = _DataTable.Rows[0]["COMMODITY_UNIT"]; commodityRow["PrintGoodsName"] = _DataTable.Rows[0]["COMMODITY_NAME"]; commodityRow["commodity_code"] = _DataTable.Rows[0]["COMMODITY_CODE"]; commodityRow["commodity_retailprice"] = _DataTable.Rows[0]["COMMODITY_RETAILPRICE"]; commodityRow["discount_rate"] = 0; commodityRow["actualprice"] = _DataTable.Rows[0]["COMMODITY_RETAILPRICE"]; commodityRow["memberprice"] = _DataTable.Rows[0]["COMMODITY_MEMBERPRICE"]; commodityRow["price"] = (decimal)_DataTable.Rows[0]["METERINGMETHOD"] == 1 ? (decimal)_DataTable.Rows[0]["COMMODITY_RETAILPRICE"] : ((decimal)_DataTable.Rows[0]["COMMODITY_RETAILPRICE"] * _decWeight); commodityRow["count"] = (decimal)_DataTable.Rows[0]["METERINGMETHOD"] == 1 ? 1 : _decWeight; commodityRow["foreground"] = "#575757"; commodityRow["background"] = "#91DAC9"; commodityRow["kitchenindex"] = _DataTable.Rows[0]["KITCHENCONFIG_INDEX"]; commodityRow["commodity_type"] = _DataTable.Rows[0]["COMMODITY_TYPE"]; commodityRow["commodity_symbol"] = _DataTable.Rows[0]["COMMODITY_SYMBOL"]; //计算到期日期 if ((decimal)_DataTable.Rows[0]["GUARANTEE_DAY"] > 0) { DateTime _GuaranteeDate = _ProductionDate.AddDays((int)(decimal)_DataTable.Rows[0]["GUARANTEE_DAY"]); if (_GuaranteeDate < DateTime.Today) { guaranteeState = PosDictionary.GuaranteeState.Expire; } else { if ((_GuaranteeDate - DateTime.Today).TotalDays <= (int)(decimal)_DataTable.Rows[0]["REMINDER_DAY"]) { guaranteeState = PosDictionary.GuaranteeState.Reminder; } else { guaranteeState = PosDictionary.GuaranteeState.OK; } } } else { guaranteeState = PosDictionary.GuaranteeState.OK; } return true; } else { commodityRow = null; guaranteeState = PosDictionary.GuaranteeState.OK; return false; } } } catch (Exception ex) { ESSupport.Lib.LogHelper.WriteServiceLog("留夫鸭错误:" + ex.Message); commodityRow = null; guaranteeState = PosDictionary.GuaranteeState.OK; return false; } } /// /// 查询商品信息 /// /// 商品条码 /// 商品列表 /// 称重标识 /// 是否叠加 /// public static DataRow IsVague(string inputBarcode, DataTable goodsTable, string weighSign, out bool IsOverly) { DataRow _DataRow = goodsTable.NewRow(); IsOverly = true; decimal Price = 0; decimal Count = 0; string sql = string.Format(@"SELECT DISTINCT A.COMMODITY_NAME,A.COMMODITY_RETAILPRICE, A.COMMODITY_CODE,A.COMMODITY_TYPE,A.COMMODITY_SYMBOL,A.COMMODITY_BARCODE, A.COMMODITY_MEMBERPRICE,ISNULL(B.KITCHENCONFIG_INDEX,1000) AS KITCHENCONFIG_INDEX, ISNULL(A.METERINGMETHOD,1) AS METERINGMETHOD,A.COMMODITY_UNIT FROM T_COMMODITYEX A LEFT JOIN T_KITCHENCONFIG B ON A.COMMODITY_TYPE = B.COMMODITYTYPE WHERE A.ISVALID = 1 AND A.SERVERPARTSHOP_ID = {0} AND {1}", ESSupport.DataStorage.DataFunction.QueryShopID(QualityHelper.serverpartcode,QualityHelper.shopcode), (QualityHelper.input_mode == "1" && inputBarcode.Length <= 4) ? string.Format(" COMMODITY_HOTKEY = '{0}'", inputBarcode) : string.Format(" (COMMODITY_BARCODE = '{0}' OR COMMODITY_CODE = '{0}' OR UPPER(COMMODITY_EN) = '{0}')", inputBarcode.ToUpper())); DataTable _GoodsTable = ESSupport.Lib.SyBaseHelper.QueryOdbc(sql).Tables[0]; if (_GoodsTable.Rows.Count > 1) { return null; } if (_GoodsTable.Rows.Count == 0) { if (inputBarcode.Length < 13) { return null; } string _strGoodsSign = inputBarcode.Substring(0, 2); string _strCommodityCode = ""; if (_strGoodsSign == weighSign) { _strCommodityCode = inputBarcode.Substring(2, 5); _GoodsTable = ESSupport.Lib.SyBaseHelper.QueryOdbc(string.Format( @"SELECT DISTINCT A.COMMODITY_NAME,A.COMMODITY_RETAILPRICE, A.COMMODITY_CODE,A.COMMODITY_TYPE,A.COMMODITY_SYMBOL, A.COMMODITY_BARCODE,A.COMMODITY_RULE,A.COMMODITY_MEMBERPRICE, ISNULL(A.METERINGMETHOD,1) AS METERINGMETHOD, ISNULL(B.KITCHENCONFIG_INDEX,1000) AS KITCHENCONFIG_INDEX,A.COMMODITY_UNIT FROM T_COMMODITYEX A LEFT JOIN T_KITCHENCONFIG B ON A.COMMODITY_TYPE = B.COMMODITYTYPE,T_COMMODITYSCALE C WHERE A.ISVALID = 1 AND A.SERVERPARTSHOP_ID = {0} AND A.COMMODITY_CODE = C.COMMODITY_CODE AND C.SCALE_CODE = '{1}'", QualityHelper.serverpartshop_id, _strCommodityCode)).Tables[0]; if (_GoodsTable.Rows.Count == 1) { if ((decimal)_GoodsTable.Rows[0]["METERINGMETHOD"] == 0) { IsOverly = false; Price = decimal.Parse(inputBarcode.Substring(7, 5)) / 100; Count = Math.Round(Price / (decimal)_GoodsTable.Rows[0]["COMMODITY_RETAILPRICE"], 3, MidpointRounding.AwayFromZero); } else { return null; } } else { return null; } } else { return null; } } _DataRow["commodity_barcode"] = _GoodsTable.Rows[0]["commodity_barcode"]; _DataRow["commodity_name"] = _GoodsTable.Rows[0]["commodity_name"]; _DataRow["commodity_unit"] = _GoodsTable.Rows[0]["commodity_unit"]; _DataRow["PrintGoodsName"] = _GoodsTable.Rows[0]["commodity_name"]; _DataRow["commodity_code"] = _GoodsTable.Rows[0]["commodity_code"]; _DataRow["commodity_retailprice"] = _GoodsTable.Rows[0]["commodity_retailprice"]; _DataRow["discount_rate"] = 0; _DataRow["actualprice"] = _GoodsTable.Rows[0]["commodity_retailprice"]; _DataRow["memberprice"] = _GoodsTable.Rows[0]["commodity_memberprice"]; _DataRow["price"] = IsOverly ? (decimal)_GoodsTable.Rows[0]["commodity_retailprice"] : Price; _DataRow["count"] = IsOverly ? 1 : Count; _DataRow["foreground"] = "#575757"; _DataRow["background"] = "#91DAC9"; _DataRow["kitchenindex"] = _GoodsTable.Rows[0]["kitchenconfig_index"]; _DataRow["commodity_type"] = _GoodsTable.Rows[0]["commodity_type"]; _DataRow["commodity_symbol"] = _GoodsTable.Rows[0]["commodity_symbol"]; _DataRow["meteringmethod"] = _GoodsTable.Rows[0]["meteringmethod"]; _DataRow["kitchenconfig_index"] = _GoodsTable.Rows[0]["kitchenconfig_index"]; _DataRow["commodity_memberprice"] = _GoodsTable.Rows[0]["commodity_memberprice"]; return _DataRow; } } }