using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Web; using SSB = SuperMap.RealEstate.Seller.Storage.Business; using HSB = SuperMap.RealEstate.HighWay.Storage.Business; using SSSB = SuperMap.RealEstate.SaleStore.Storage.Business; using QRWL.Common; using SuperMap.RealEstate.CoreFrameWork; namespace SuperMap.RealEstate.SaleStore.Storage.Common { public class PurchaseCommodity { #region 获取请购商品 /// /// 获取请购商品 /// /// 采购单ID /// 数据库服务参数 /// 单位数组 /// 是否显示配送信息 /// public static string getPurchaseDetail(string PURCHASE_ID, ServiceModel.Transaction _Transaction, Dictionary _DictString, bool bFalse) { string reString = string.Empty; try { //获得枚举信息 Business.PURCHASE _PURCHASE = new Business.PURCHASE(_Transaction); _PURCHASE.PURCHASE_ID_Encrypt = PURCHASE_ID; if (_PURCHASE.Select()) { //DataTable RELATIONTABLES = new Business.CommonHelper().GetRELATIONTABLES( // _PURCHASE.PURCHASE_ID.ToEncrypt(), "FORMATTABLE_ID", _Transaction); DataTable _DataTable = new Business.PURCHASEDETAIL(_Transaction).ExecuteDataTable( @"SELECT PURCHASEDETAIL_ID,COMMODITY_ID,COMMODITY_NAME,SERVERPARTSHOP_ID,SERVERPART_ID, UNIT,UNITCOUNT,PURCHASE_COUNT,PURCHASE_TAXPRICE,PURCHASE_PRICE,PURCHASE_TOTALPRICE, SUPPORT_PRICE,COMMODITY_RULE,COMMODITY_WEIGHT,PURCHASE_ID,PURCHASETYPE, PURCHASEDETAIL_DESC,COMMODITY_CODE,COMMODITY_BARCODE,DUTY_PARAGRAPH, PURCHASE_SELLPRICE,PURCHASE_TAXSELLPRICE,PURCHASE_TOTALAMOUNT,RETAIL_DUTY, SELL_AVERAGEPRICE,SUPPLIER_ID,SUPPLIER_NAME,LAST_COUNT,STORAGE_STATE, NULL AS LAST_SCOUNT,NULL AS DELIVER_STATE FROM SALESTORE_STORAGE.T_PURCHASEDETAIL WHERE PURCHASE_ID = " + _PURCHASE.PURCHASE_ID + " ORDER BY PURCHASEDETAIL_ID"); _DataTable.Columns.Add("STORAGE_STATE_NAME"); _DataTable.Columns.Add("DELIVER_STATE_NAME"); _DataTable.Columns.Add("DISPLAY");//是否显示配送信息 _DataTable.Columns.Add("STYLE");//是否显示配送信息 _DataTable.Columns.Add("TOCAL_COUNT");//配送总量 DataTable _RECEIVE_DataTable = new Business.PURCHASEDETAIL(_Transaction).ExecuteDataTable( @"SELECT B.RECEIVECENTER_STATE,A.COMMODITY_BARCODE,B.DELIVERSERVERPART_ID FROM SALESTORE_STORAGE.T_RECEIVEDETAILSERVERPART A, SALESTORE_STORAGE.T_RECEIVESERVERPART B WHERE A.RECEIVESERVERPART_ID = B.RECEIVESERVERPART_ID AND B.PURCHASE_ID = " + _PURCHASE.PURCHASE_ID); foreach (DataRow _DataRow in _DataTable.Rows) { if (!string.IsNullOrEmpty(_DataRow["UNITCOUNT"].ToString()) && !string.IsNullOrEmpty(_DataRow["PURCHASE_COUNT"].ToString())) { _DataRow["TOCAL_COUNT"] = (double.Parse(_DataRow["UNITCOUNT"].ToString()) * double.Parse(_DataRow["PURCHASE_COUNT"].ToString())); } else { _DataRow["TOCAL_COUNT"] = 0; } if (_PURCHASE.PURCHASE_TYPE == 1000 || _PURCHASE.PURCHASE_TYPE == 3000) { _DataRow["DISPLAY"] = "display:none"; switch (_DataRow["STORAGE_STATE"].ToString()) { case "0": _DataRow["STORAGE_STATE_NAME"] = "未入库"; _DataRow["LAST_SCOUNT"] = Convert.ToDouble(_DataRow["UNITCOUNT"].ToString()) * Convert.ToDouble(_DataRow["PURCHASE_COUNT"].ToString()); break; case "1": _DataRow["LAST_SCOUNT"] = _DataRow["LAST_COUNT"]; _DataRow["STORAGE_STATE_NAME"] = "部分入库"; _DataRow["STYLE"] = "color:red;"; break; case "9": _DataRow["LAST_SCOUNT"] = "0"; _DataRow["STORAGE_STATE_NAME"] = "入库完成"; break; } } else if (_PURCHASE.PURCHASE_TYPE == 4000) { if (bFalse) { _DataRow["DISPLAY"] = ""; } else { _DataRow["DISPLAY"] = "display:none"; } switch (_DataRow["STORAGE_STATE"].ToString()) { case "0": _DataRow["DELIVER_STATE_NAME"] = "未配送"; break; case "1": _DataRow["DELIVER_STATE_NAME"] = "部分配送"; _DataRow["STYLE"] = "color:red;"; break; case "9": _DataRow["DELIVER_STATE_NAME"] = "配送完成"; break; } // string _PURCHASE_ID = RELATIONTABLES.Rows[0]["NEXTTABLE_ID"].ToString(); SSB.GOODSDELIVERDETAIL _GOODSDELIVERDETAIL = new SSB.GOODSDELIVERDETAIL(_Transaction); _GOODSDELIVERDETAIL.AddSearchParameter("PURCHASE_ID", PURCHASE_ID.ToDecrypt()); _GOODSDELIVERDETAIL.AddSearchParameter("COMMODITY_BARCODE", _DataRow["COMMODITY_BARCODE"].ToString()); if (_GOODSDELIVERDETAIL.Search()) { if (bFalse) { DataTable GOODSDELIVERDETAIL = _GOODSDELIVERDETAIL.ExecuteDataTable( @"SELECT NVL(SUM(LAST_COUNT),0) FROM SELLER_STORAGE.T_GOODSDELIVERDETAIL WHERE NVL(STORAGE_STATE,0) < 9 AND PURCHASE_ID = " + PURCHASE_ID.ToDecrypt() + " AND COMMODITY_BARCODE = '" + _DataRow["COMMODITY_BARCODE"].ToString() + "'"); int _nCount = new Business.CommonHelper().GetRECEIVESERVERPART_COUNT(PURCHASE_ID, _Transaction); if (_nCount > 0 && _GOODSDELIVERDETAIL.GetCount("WHERE STORAGE_STATE < 9 AND PURCHASE_ID = " + PURCHASE_ID.ToDecrypt()) == 0 && _DataRow["LAST_COUNT"].ToString() == "0") { DataRow[] _RECEIVE_DataRow = _RECEIVE_DataTable.Select(" DELIVERSERVERPART_ID = " + _GOODSDELIVERDETAIL.GOODSDELIVER_ID + " AND COMMODITY_BARCODE = '" + _GOODSDELIVERDETAIL.COMMODITY_BARCODE + "'"); if (_RECEIVE_DataRow.Length > 0) { _DataRow["STORAGE_STATE_NAME"] = DictionaryHelper.GetFieldEnumName("CENPURCHASE_STATE", _RECEIVE_DataRow[0]["RECEIVECENTER_STATE"].ToString(), _Transaction); } _DataRow["LAST_SCOUNT"] = "0"; } else if (_nCount > 0 && GOODSDELIVERDETAIL.Rows.Count > 0 && GOODSDELIVERDETAIL.Rows[0][0].ToString() != "0") { _DataRow["LAST_SCOUNT"] = GOODSDELIVERDETAIL.Rows[0][0].ToString(); _DataRow["STORAGE_STATE_NAME"] = "部分入库"; _DataRow["STYLE"] = "color:red;"; } } else { switch (_GOODSDELIVERDETAIL.STORAGE_STATE.ToString()) { case "0": _DataRow["STORAGE_STATE_NAME"] = "未入库"; _DataRow["LAST_SCOUNT"] = string.IsNullOrEmpty(_GOODSDELIVERDETAIL.LAST_COUNT.ToString()) ? 0 : _GOODSDELIVERDETAIL.LAST_COUNT; break; case "1": _DataRow["STORAGE_STATE_NAME"] = "部分入库"; _DataRow["LAST_SCOUNT"] = string.IsNullOrEmpty(_GOODSDELIVERDETAIL.LAST_COUNT.ToString()) ? 0 : _GOODSDELIVERDETAIL.LAST_COUNT; _DataRow["STYLE"] = "color:red;"; break; case "9": DataRow[] _RECEIVE_DataRow = _RECEIVE_DataTable.Select(" DELIVERSERVERPART_ID = " + _GOODSDELIVERDETAIL.GOODSDELIVER_ID + " AND COMMODITY_BARCODE = '" + _GOODSDELIVERDETAIL.COMMODITY_BARCODE + "'"); if (_RECEIVE_DataRow.Length > 0) { _DataRow["STORAGE_STATE_NAME"] = DictionaryHelper.GetFieldEnumName("CENPURCHASE_STATE", _RECEIVE_DataRow[0]["RECEIVECENTER_STATE"].ToString(), _Transaction); } _DataRow["LAST_SCOUNT"] = string.IsNullOrEmpty(_GOODSDELIVERDETAIL.LAST_COUNT.ToString()) ? 0 : _GOODSDELIVERDETAIL.LAST_COUNT; break; } } } } string _PURCHASEDETAIL_DESC = string.Empty; _DictString.TryGetValue(_DataRow["UNIT"].ToString(), out _PURCHASEDETAIL_DESC); _DataRow["PURCHASEDETAIL_DESC"] = _PURCHASEDETAIL_DESC; } reString = JsonHelper.DataTableToJson(_DataTable, "PURCHASEDETAIL"); } } catch (Exception ex) { //记录日志 SuperMap.RealEstate.Utility.ErrorLogHelper.Write(ex); reString = "error:" + ex.Message; } return reString; } #endregion #region 获取请购商品 /// /// 获取请购商品 /// /// 采购单ID /// 数据库服务参数 /// 单位数组 /// 是否显示配送信息 /// public static string getReceiveDetail(string PURCHASE_ID, string GOODSDELIVER_ID, ServiceModel.Transaction _Transaction, Dictionary _DictString) { string reString = string.Empty; try { //获得枚举信息 Business.PURCHASE _PURCHASE = new Business.PURCHASE(_Transaction); _PURCHASE.PURCHASE_ID_Encrypt = PURCHASE_ID; if (_PURCHASE.Select()) { //DataTable RELATIONTABLES = new Business.CommonHelper().GetRELATIONTABLES( // _PURCHASE.PURCHASE_ID.ToEncrypt(), "FORMATTABLE_ID", _Transaction); DataTable _DataTable = new DataTable(); if (_PURCHASE.PURCHASE_TYPE == 1000) { _DataTable = new Business.PURCHASEDETAIL(_Transaction).ExecuteDataTable( @"SELECT PURCHASEDETAIL_ID,COMMODITY_ID,COMMODITY_NAME,SERVERPARTSHOP_ID,SERVERPART_ID, UNIT,UNITCOUNT,PURCHASE_COUNT,PURCHASE_TAXPRICE,PURCHASE_PRICE,PURCHASE_TOTALPRICE, SUPPORT_PRICE,COMMODITY_RULE,COMMODITY_WEIGHT,PURCHASE_ID,PURCHASETYPE, PURCHASEDETAIL_DESC,COMMODITY_CODE,COMMODITY_BARCODE,DUTY_PARAGRAPH, PURCHASE_SELLPRICE,PURCHASE_TAXSELLPRICE,PURCHASE_TOTALAMOUNT,RETAIL_DUTY, SELL_AVERAGEPRICE,SUPPLIER_ID,SUPPLIER_NAME,NVL(LAST_COUNT,0) AS LAST_COUNT,STORAGE_STATE FROM SALESTORE_STORAGE.T_PURCHASEDETAIL WHERE PURCHASE_ID = " + _PURCHASE.PURCHASE_ID + " ORDER BY PURCHASEDETAIL_ID"); _DataTable.Columns.Add("STORAGE_STATE_NAME");//入库状态 _DataTable.Columns.Add("LAST_SCOUNT");//未入库数量 _DataTable.Columns.Add("STYLE"); _DataTable.Columns.Add("DELIVER_STATE_NAME");//配送状态 _DataTable.Columns.Add("DELIVER_SCOUNT");//配送数量 _DataTable.Columns.Add("DISPLAY");//是否显示配送信息 foreach (DataRow _DataRow in _DataTable.Rows) { _DataRow["DISPLAY"] = "display:none"; switch (_DataRow["STORAGE_STATE"].ToString()) { case "0": _DataRow["STORAGE_STATE_NAME"] = "未入库"; _DataRow["LAST_SCOUNT"] = Convert.ToDouble(_DataRow["UNITCOUNT"].ToString()) * Convert.ToDouble(_DataRow["PURCHASE_COUNT"].ToString()); break; case "1": _DataRow["STORAGE_STATE_NAME"] = "部分入库"; _DataRow["LAST_SCOUNT"] = _DataRow["LAST_COUNT"]; _DataRow["STYLE"] = "color:red;"; break; case "9": _DataRow["LAST_SCOUNT"] = "0"; _DataRow["STORAGE_STATE_NAME"] = "入库完成"; break; } string _PURCHASEDETAIL_DESC = string.Empty; _DictString.TryGetValue(_DataRow["UNIT"].ToString(), out _PURCHASEDETAIL_DESC); _DataRow["PURCHASEDETAIL_DESC"] = _PURCHASEDETAIL_DESC; } } else { //if (RELATIONTABLES != null && RELATIONTABLES.Rows.Count > 0) //{ _DataTable = new Business.PURCHASEDETAIL(_Transaction).ExecuteDataTable( string.Format(@"SELECT A.PURCHASEDETAIL_ID,A.COMMODITY_ID,A.COMMODITY_NAME,A.SERVERPARTSHOP_ID,A.SERVERPART_ID, A.UNIT,A.UNITCOUNT,A.PURCHASE_COUNT,A.PURCHASE_TAXPRICE,A.PURCHASE_PRICE,A.PURCHASE_TOTALPRICE, A.SUPPORT_PRICE,A.COMMODITY_RULE,A.COMMODITY_WEIGHT,A.PURCHASE_ID,A.PURCHASETYPE, A.PURCHASEDETAIL_DESC,A.COMMODITY_CODE,A.COMMODITY_BARCODE,A.DUTY_PARAGRAPH, A.PURCHASE_SELLPRICE,A.PURCHASE_TAXSELLPRICE,A.PURCHASE_TOTALAMOUNT,A.RETAIL_DUTY, A.SELL_AVERAGEPRICE,A.SUPPLIER_ID,A.SUPPLIER_NAME,A.LAST_COUNT,A.STORAGE_STATE, SUM(C.LAST_COUNT) AS LAST_SCOUNT,MIN(C.STORAGE_STATE) AS DELIVER_STATE FROM SALESTORE_STORAGE.T_PURCHASEDETAIL A, SALESTORE_STORAGE.T_PURCHASE B, SELLER_STORAGE.T_GOODSDELIVERDETAIL C WHERE A.PURCHASE_ID = B.PURCHASE_ID AND B.PURCHASE_ID = C.PURCHASE_ID AND A.COMMODITY_BARCODE = C.COMMODITY_BARCODE AND A.PURCHASE_ID={0} AND C.GOODSDELIVER_ID={1} GROUP BY A.PURCHASEDETAIL_ID,A.COMMODITY_ID,A.COMMODITY_NAME,A.SERVERPARTSHOP_ID,A.SERVERPART_ID, A.UNIT,A.UNITCOUNT,A.PURCHASE_COUNT,A.PURCHASE_TAXPRICE,A.PURCHASE_PRICE,A.PURCHASE_TOTALPRICE, A.SUPPORT_PRICE,A.COMMODITY_RULE,A.COMMODITY_WEIGHT,A.PURCHASE_ID,A.PURCHASETYPE, A.PURCHASEDETAIL_DESC,A.COMMODITY_CODE,A.COMMODITY_BARCODE,A.DUTY_PARAGRAPH, A.PURCHASE_SELLPRICE,A.PURCHASE_TAXSELLPRICE,A.PURCHASE_TOTALAMOUNT,A.RETAIL_DUTY, A.SELL_AVERAGEPRICE,A.SUPPLIER_ID,A.SUPPLIER_NAME,A.LAST_COUNT,A.STORAGE_STATE", PURCHASE_ID.ToDecrypt(), GOODSDELIVER_ID.ToDecrypt())); _DataTable.Columns.Add("STORAGE_STATE_NAME");//入库状态 _DataTable.Columns.Add("STYLE"); _DataTable.Columns.Add("DELIVER_STATE_NAME");//配送状态 _DataTable.Columns.Add("DELIVER_SCOUNT");//配送数量 _DataTable.Columns.Add("DISPLAY");//是否显示配送信息 foreach (DataRow _DataRow in _DataTable.Rows) { _DataRow["DISPLAY"] = ""; switch (_DataRow["STORAGE_STATE"].ToString()) { case "0": _DataRow["DELIVER_STATE_NAME"] = "未配送"; _DataRow["DELIVER_SCOUNT"] = _DataRow["LAST_COUNT"]; _DataRow["STYLE"] = "color:red;"; break; case "1": _DataRow["DELIVER_STATE_NAME"] = "部分配送"; _DataRow["DELIVER_SCOUNT"] = _DataRow["LAST_COUNT"]; _DataRow["STYLE"] = "color:red;"; break; case "9": _DataRow["DELIVER_STATE_NAME"] = "全部配送"; _DataRow["DELIVER_SCOUNT"] = 0; break; } switch (_DataRow["DELIVER_STATE"].ToString()) { case "0": _DataRow["STORAGE_STATE_NAME"] = "未入库"; _DataRow["LAST_SCOUNT"] = Convert.ToDouble(_DataRow["UNITCOUNT"].ToString()) * Convert.ToDouble(_DataRow["PURCHASE_COUNT"].ToString()); break; case "1": _DataRow["STORAGE_STATE_NAME"] = "部分入库"; _DataRow["LAST_SCOUNT"] = _DataRow["LAST_SCOUNT"]; _DataRow["STYLE"] = "color:red;"; break; case "9": _DataRow["LAST_SCOUNT"] = "0"; _DataRow["STORAGE_STATE_NAME"] = "入库完成"; break; } string _PURCHASEDETAIL_DESC = string.Empty; _DictString.TryGetValue(_DataRow["UNIT"].ToString(), out _PURCHASEDETAIL_DESC); _DataRow["PURCHASEDETAIL_DESC"] = _PURCHASEDETAIL_DESC; } // } } reString = JsonHelper.DataTableToJson(_DataTable, "PURCHASEDETAIL"); } } catch (Exception ex) { //记录日志 SuperMap.RealEstate.Utility.ErrorLogHelper.Write(ex); reString = "error:" + ex.Message; } return reString; } #endregion #region 比较库存差异 public static string setStatistiAction(string _SHOP_IDs, ServiceModel.Transaction _Transaction) { string reString = string.Empty; string strMsg = string.Empty; string dt_sql = string.Empty; bool bFalse = true; foreach (string _SERVERPARTSHOP_ID in _SHOP_IDs.Split(',')) { dt_sql = String.Format(@"SELECT distinct A.COMMODITY_ID FROM SALESTORE_STORAGE.T_SERVERPARTSTOCK A,HIGHWAY_STORAGE.V_WHOLE_COMMODITY D WHERE A.COMMODITY_ID = D.COMMODITY_ID AND A.SERVERPARTSHOP_ID ={0} ORDER BY A.COMMODITY_ID ", _SERVERPARTSHOP_ID); string sql_del = "DELETE FROM SALESTORE_STORAGE.T_STATISTI A WHERE A.SERVERPARTSHOP_ID = " + _SERVERPARTSHOP_ID; SSSB.CHECKCOMMODITY _CHECKCOMMODITY = new SSSB.CHECKCOMMODITY(_Transaction); _CHECKCOMMODITY.ExecuteNonQuery(sql_del, null); HSB.SERVERPARTSHOP _SERVERPARTSHOP = new HSB.SERVERPARTSHOP(_Transaction); _SERVERPARTSHOP.SERVERPARTSHOP_ID_Encrypt = _SERVERPARTSHOP_ID.ToEncrypt(); if (!_SERVERPARTSHOP.Select()) { bFalse = false; strMsg = "门店不存在,请确认!"; break; } HSB.SERVERPART _SERVERPART = new HSB.SERVERPART(_Transaction); _SERVERPART.SERVERPART_ID = _SERVERPARTSHOP.SERVERPART_ID; if (!_SERVERPART.Select()) { bFalse = false; strMsg = "服务区不存在,请确认!"; break; } string START_DATE = string.Empty; string END_DATE = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); DataTable _Data_CHECKCOMMODITY = _CHECKCOMMODITY.ExecuteDataTable( "SELECT CHECKDATE FROM SALESTORE_STORAGE.T_CHECKCOMMODITY A WHERE A.SERVERPARTSHOP_ID = " + _SERVERPARTSHOP.SERVERPARTSHOP_ID + " AND A.CHECK_STATE = 1 ORDER BY CHECKDATE DESC"); if (_Data_CHECKCOMMODITY != null && _Data_CHECKCOMMODITY.Rows.Count > 0 && _Data_CHECKCOMMODITY.Rows[0]["CHECKDATE"] != null) { START_DATE = _Data_CHECKCOMMODITY.Rows[0]["CHECKDATE"].ToString(); } else { START_DATE = "2000-01-01"; } if (_CHECKCOMMODITY.GetCount("WHERE CHECK_STATE = 0 AND SERVERPARTSHOP_ID = " + _SERVERPARTSHOP.SERVERPARTSHOP_ID) > 0) { END_DATE = _CHECKCOMMODITY.FillCollection("WHERE SERVERPARTSHOP_ID = " + _SERVERPARTSHOP.SERVERPARTSHOP_ID + " AND CHECK_STATE = 0 ORDER BY CHECKDATE DESC")[0].CHECKDATE.Value.ToString("yyyy-MM-dd HH:mm:ss"); } #region 存储销售数据 string SQLString = string.Format(@" SELECT SERVERPARTCODE,SHOPCODE,COMMODITY_CODE, COMMODITY_ID,SUM(TOTALCOUNT) AS TOTALCOUNT,SUM(TOTALSELLAMOUNT) AS TOTALSELLAMOUNT FROM (SELECT B.COMMODITY_ID,A.ENDDATE,A.SERVERPARTCODE,A.SHOPCODE, A.COMMODITY_CODE,A.TOTALCOUNT,A.TOTALSELLAMOUNT FROM HIGHWAY_EXCHANGE.T_COMMODITYSALE_MARKET A, HIGHWAY_STORAGE.V_WHOLE_COMMODITY B WHERE A.COMMODITY_CODE = B.COMMODITY_CODE AND A.SERVERPARTCODE = '{0}' AND A.SHOPCODE = '{1}' AND A.ENDDATE > TO_DATE('{2}','YYYY/MM/DD HH24:MI:SS') AND A.ENDDATE <= TO_DATE('{3}','YYYY/MM/DD HH24:MI:SS') AND B.PROVINCE_CODE = {4} UNION ALL SELECT B.COMMODITY_ID,A.SELLDATA_DATE,A.SERVERPARTCODE,A.SHOPCODE, A.COMMODITY_CODE,A.SELLCOUNT,A.FACTAMOUNT FROM HIGHWAY_SELLDATA.T_SUPPLEMENT A, HIGHWAY_STORAGE.V_WHOLE_COMMODITY B WHERE A.COMMODITY_ID = B.COMMODITY_ID AND A.SERVERPARTCODE = '{0}' AND A.SHOPCODE = '{1}' AND A.SELLDATA_DATE > TO_DATE('{2}','YYYY/MM/DD HH24:MI:SS') AND A.SELLDATA_DATE <= TO_DATE('{3}','YYYY/MM/DD HH24:MI:SS')) GROUP BY COMMODITY_ID,SERVERPARTCODE,SHOPCODE,COMMODITY_CODE", _SERVERPART.SERVERPART_CODE, _SERVERPARTSHOP.SHOPCODE, START_DATE, END_DATE, _SERVERPART.PROVINCE_CODE); DataTable T_SELLDATA_INSALES = new DataTable(); T_SELLDATA_INSALES.Columns.Add("SERVERPARTSHOP_ID"); T_SELLDATA_INSALES.Columns.Add("SHOPCODE"); T_SELLDATA_INSALES.Columns.Add("COMMODITY_ID"); T_SELLDATA_INSALES.Columns.Add("SELL_COUNT"); foreach (DataRow _DataRow in _SERVERPART.ExecuteDataTable(SQLString).Rows) { DataRow _SELLDATA_INSALES_Row = T_SELLDATA_INSALES.NewRow(); _SELLDATA_INSALES_Row["SERVERPARTSHOP_ID"] = _SERVERPARTSHOP.SERVERPARTSHOP_ID; _SELLDATA_INSALES_Row["SHOPCODE"] = _SERVERPARTSHOP.SHOPCODE; _SELLDATA_INSALES_Row["COMMODITY_ID"] = _DataRow["COMMODITY_ID"]; _SELLDATA_INSALES_Row["SELL_COUNT"] = _DataRow["TOTALCOUNT"]; T_SELLDATA_INSALES.Rows.Add(_SELLDATA_INSALES_Row); } #endregion #region 存储业务数据 DataTable BACKCOMMODITYTable = _CHECKCOMMODITY.ExecuteDataTable(string.Format(@"SELECT COMMODITY_ID,NVL(SUM(BACK_COUNT),0),NVL(SUM(BACKTAXPRICE),0),NVL(SUM(BACKPRICE),0) FROM SALESTORE_STORAGE.V_BACKCOMMODITY WHERE SERVERPARTSHOP_ID = {0} AND SERVERPART_ID = {1} AND BACK_DATE > TO_DATE('{2}','YYYY/MM/DD HH24:MI:SS') AND BACK_DATE <= TO_DATE('{3}','YYYY/MM/DD HH24:MI:SS') GROUP BY COMMODITY_ID", _SERVERPARTSHOP.SERVERPARTSHOP_ID, _SERVERPART.SERVERPART_ID, START_DATE, END_DATE), null); DataTable PREPARECOMMODITYOutTable = _CHECKCOMMODITY.ExecuteDataTable(string.Format(@"SELECT B.COMMODITY_ID,NVL(SUM(A.PREPARECOUNT),0), NVL(SUM(ROUND(NVL(A.TRANSFERTAXPRICE,A.PREPARECOUNT * A.PURCHASE_TAXPRICE),2)),0), NVL(SUM(ROUND(NVL(A.TRANSFERPRICE,A.PREPARECOUNT * A.PURCHASE_PRICE),2)),0) FROM SALESTORE_STORAGE.T_PREPARECOMMODITY A, SALESTORE_STORAGE.T_SERVERPARTSTOCK B WHERE A.SERVERPARTSTOCK_ID = B.SERVERPARTSTOCK_ID AND B.SERVERPARTSHOP_ID = {0} AND B.SERVERPART_ID = {1} AND A.PREPAREDATE > TO_DATE('{2}','YYYY/MM/DD HH24:MI:SS') AND A.PREPAREDATE <= TO_DATE('{3}','YYYY/MM/DD HH24:MI:SS') GROUP BY B.COMMODITY_ID", _SERVERPARTSHOP.SERVERPARTSHOP_ID, _SERVERPART.SERVERPART_ID, START_DATE, END_DATE), null); DataTable PREPARECOMMODITYInTable = _CHECKCOMMODITY.ExecuteDataTable(string.Format(@"SELECT COMMODITY_ID,NVL(SUM(PREPARECOUNT),0), NVL(SUM(ROUND(NVL(TRANSFERTAXPRICE,PREPARECOUNT * PURCHASE_TAXPRICE),2)),0), NVL(SUM(ROUND(NVL(TRANSFERPRICE,PREPARECOUNT * PURCHASE_PRICE),2)),0) FROM SALESTORE_STORAGE.T_PREPARECOMMODITY WHERE TARGETSHOP_ID = {0} AND TARGETSERVERPART_ID = {1} AND PREPAREDATE > TO_DATE('{2}','YYYY/MM/DD HH24:MI:SS') AND PREPAREDATE <= TO_DATE('{3}','YYYY/MM/DD HH24:MI:SS') GROUP BY COMMODITY_ID", _SERVERPARTSHOP.SERVERPARTSHOP_ID, _SERVERPART.SERVERPART_ID, START_DATE, END_DATE), null); DataTable RECEIVECOMMODITYTable = _CHECKCOMMODITY.ExecuteDataTable(string.Format(@"SELECT B.COMMODITY_ID,NVL(SUM(A.RECEIVE_COUNT),0), NVL(SUM(ROUND(NVL(A.RECEIVETAXPRICE,A.RECEIVE_COUNT * A.PURCHASE_TAXPRICE),2)),0), NVL(SUM(ROUND(NVL(A.RECEIVEPRICE,A.RECEIVE_COUNT * A.PURCHASE_PRICE),2)),0) FROM SALESTORE_STORAGE.T_RECEIVECOMMODITY A, SALESTORE_STORAGE.T_SERVERPARTSTOCK B WHERE A.SERVERPARTSTOCK_ID = B.SERVERPARTSTOCK_ID AND B.SERVERPARTSHOP_ID = {0} AND B.SERVERPART_ID = {1} AND A.RECEIVE_DATE > TO_DATE('{2}','YYYY/MM/DD HH24:MI:SS') AND A.RECEIVE_DATE <= TO_DATE('{3}','YYYY/MM/DD HH24:MI:SS') GROUP BY B.COMMODITY_ID", _SERVERPARTSHOP.SERVERPARTSHOP_ID, _SERVERPART.SERVERPART_ID, START_DATE, END_DATE), null); #endregion #region 存储入库数据 DataTable RECEIVESERVERPARTTable = _CHECKCOMMODITY.ExecuteDataTable(string.Format( @"SELECT B.COMMODITY_ID,NVL(SUM(NVL(B.DELIVERCOUNT,B.UNITCOUNT * B.DELIVERCOUNT)),0), NVL(SUM(ROUND(NVL(B.RECEIVE_TOTALPRICE,B.DELIVERCOUNT * B.UNITCOUNT * B.PURCHASE_TAXPRICE),2)),0), NVL(SUM(NVL(ROUND(NVL(B.RECEIVE_TOTALAMOUNT,B.DELIVERCOUNT * B.UNITCOUNT * B.PURCHASE_PRICE),2), ROUND(NVL(B.RECEIVE_TOTALPRICE,B.DELIVERCOUNT * B.UNITCOUNT * B.PURCHASE_TAXPRICE / 1.13),2))),0) FROM SALESTORE_STORAGE.T_RECEIVESERVERPART A, SALESTORE_STORAGE.T_RECEIVEDETAILSERVERPART_{0} B WHERE A.RECEIVESERVERPART_ID = B.RECEIVESERVERPART_ID AND NVL(B.SERVERPARTSHOP_ID,A.SERVERPARTSHOP_ID) = {1} AND A.RECEIVECENTER_DATE > TO_DATE('{2}','YYYY/MM/DD HH24:MI:SS') AND A.RECEIVECENTER_DATE <= TO_DATE('{3}','YYYY/MM/DD HH24:MI:SS') AND EXISTS (SELECT 1 FROM SALESTORE_STORAGE.T_STORAGEBILL C WHERE A.RECEIVESERVERPART_ID = C.RECEIVESERVERPART_ID) GROUP BY B.COMMODITY_ID", _SERVERPART.SERVERPART_ID, _SERVERPARTSHOP.SERVERPARTSHOP_ID, START_DATE, END_DATE)); #endregion #region 团购 DataTable GROUPPURCHASE_DataTable = _CHECKCOMMODITY.ExecuteDataTable(@"SELECT NVL(SUM(A.GROUPPURCHASE_COUNT),0), ROUND(NVL(SUM(A.TOTAL_TAXSELLPRICE),0),2),ROUND(NVL(SUM(A.TOTAL_TAXPRICE),0),2) ,COMMODITY_ID FROM SALESTORE_STORAGE.T_GROUPPURCHASEDETAIL A ,SALESTORE_STORAGE.T_GROUPPURCHASE B WHERE A.GROUPPURCHASE_ID = B.GROUPPURCHASE_ID AND B.GROUPPURCHASE_STATE = 1090 AND B.GROUPPURCHASE_DATE BETWEEN TO_DATE('" + START_DATE + "','YYYY-MM-DD HH24:MI:SS') AND TO_DATE('" + END_DATE + "','YYYY-MM-DD HH24:MI:SS') AND B.SERVERPARTSHOP_ID = " + _SERVERPARTSHOP.SERVERPARTSHOP_ID + " GROUP BY A.COMMODITY_ID"); #endregion #region 加工单 DataTable PROCESSORDER_DataTable = _CHECKCOMMODITY.ExecuteDataTable(@"SELECT SUM((CASE WHEN A.PROCESSORDER_TYPE IN (1000,2010) THEN -1 ELSE 1 END) * NVL(A.PROCESSORDER_COUNT,0)), SUM((CASE WHEN A.PROCESSORDER_TYPE IN (1000,2010) THEN -1 ELSE 1 END) * NVL(A.TOTAL_TAXPRICE,A.PROCESSORDER_COUNT * A.PROCESSORDER_TAXPRICE)), SUM((CASE WHEN A.PROCESSORDER_TYPE IN (1000,2010) THEN -1 ELSE 1 END) * NVL(A.TOTAL_PRICE,A.PROCESSORDER_COUNT * A.PROCESSORDER_PRICE)),COMMODITY_ID FROM SALESTORE_STORAGE.T_PROCESSORDERDETAIL A ,SALESTORE_STORAGE.T_PROCESSORDER B WHERE A.PROCESSORDER_ID = B.PROCESSORDER_ID AND B.PROCESSORDER_STATE = 1090 AND B.PROCESSORDER_DATE BETWEEN TO_DATE('" + START_DATE + "','YYYY-MM-DD HH24:MI:SS') AND TO_DATE('" + END_DATE + "','YYYY-MM-DD HH24:MI:SS') AND B.SERVERPARTSHOP_ID = " + _SERVERPARTSHOP.SERVERPARTSHOP_ID + " GROUP BY A.COMMODITY_ID"); #endregion #region 本期报损溢 DataTable LOSSPROFITGOODS_DataTable = _CHECKCOMMODITY.ExecuteDataTable(@"SELECT NVL(SUM(LOSSPROFIT_COUNT),0), NVL(SUM(ROUND(NVL(LOSSPROFIT_TAXPRICE,LOSSPROFIT_COUNT * PURCHASE_TAXPRICE),2)),0), NVL(SUM(ROUND(NVL(LOSSPROFIT_PRICE,LOSSPROFIT_COUNT * PURCHASE_PRICE),2)),0),COMMODITY_ID FROM SALESTORE_STORAGE.T_LOSSPROFITGOODS WHERE LOSSPROFIT_DATE BETWEEN TO_DATE('" + START_DATE + "','YYYY-MM-DD HH24:MI:SS') AND TO_DATE('" + END_DATE + "','YYYY-MM-DD HH24:MI:SS') AND SERVERPARTSHOP_ID = " + _SERVERPARTSHOP.SERVERPARTSHOP_ID + " GROUP BY COMMODITY_ID"); #endregion #region 本期库存 DataTable SERVERPARTSTOCK_DataTable = _CHECKCOMMODITY.ExecuteDataTable(@"SELECT SUM(NVL(OVERPLUSCOUNT,0)) AS OVERPLUSCOUNT,COMMODITY_ID FROM SALESTORE_STORAGE.T_SERVERPARTSTOCK WHERE SERVERPARTSHOP_ID = " + _SERVERPARTSHOP.SERVERPARTSHOP_ID + " GROUP BY COMMODITY_ID"); #endregion #region 存储上期结存 DataTable INSALES_STATISTICTable = _CHECKCOMMODITY.ExecuteDataTable(string.Format( @"SELECT * FROM SALESTORE_STORAGE.T_INSALES_STATISTIC_{0} A WHERE SERVERPART_ID = {0} AND SERVERPARTSHOP_ID = {1} AND A.CHECKDATE >= TO_DATE('{2}','YYYY/MM/DD HH24:MI:SS') AND EXISTS (SELECT 1 FROM SALESTORE_STORAGE.T_CHECKCOMMODITY B WHERE A.SERVERPARTSHOP_ID = B.SERVERPARTSHOP_ID AND B.CHECK_STATE = 1 AND A.CHECKDATE = B.CHECKDATE AND B.CHECK_TYPE NOT IN (2000)) ORDER BY CHECKDATE DESC", _SERVERPART.SERVERPART_ID, _SERVERPARTSHOP.SERVERPARTSHOP_ID, START_DATE)); #endregion #region 商品信息 DataTable _Data_COMMODITY = _CHECKCOMMODITY.ExecuteDataTable( "SELECT A.COMMODITY_ID,A.COMMODITY_NAME,A.COMMODITY_BARCODE FROM HIGHWAY_STORAGE.V_WHOLE_COMMODITY A "); #endregion string _COMMODITY_ID = string.Empty; int num = 0; string sql = string.Empty; try { foreach (DataRow item in new Business.CHECKCOMMODITY(_Transaction).ExecuteDataTable(dt_sql).Rows) { DataRow[] _DataRow_COMMODITY = _Data_COMMODITY.Select(" COMMODITY_ID = " + (item["COMMODITY_ID"] == null ? "0" : item["COMMODITY_ID"])); if (_DataRow_COMMODITY.Length > 0) { _COMMODITY_ID = _DataRow_COMMODITY[0]["COMMODITY_ID"].ToString(); double PURCHASE_COUNT = 0, SELL_COUNT = 0, TRANSFER_COUNT = 0, RECEIVE_COUNT = 0, BACK_COUNT = 0, LAST_OVERPLUSCOUNT = 0, OVERPLUSCOUNT = 0, GROUPPURCHASE_COUNT = 0, PROCESSORDER_COUNT = 0, LOSSPROFIT_CHECKCOUNT = 0, LOSSPROFIT_COUNT = 0; #region 销售数据 DataRow[] _T_SELLDATA_DataRow = T_SELLDATA_INSALES.Select("COMMODITY_ID = '" + _COMMODITY_ID + "'"); if (_T_SELLDATA_DataRow.Length > 0) { SELL_COUNT = Convert.ToDouble(_T_SELLDATA_DataRow[0]["SELL_COUNT"] == null ? 0 : _T_SELLDATA_DataRow[0]["SELL_COUNT"]).Round(2); } #endregion #region 入库数据 DataRow[] _RECEIVESERVERPART_DataRow = RECEIVESERVERPARTTable.Select("COMMODITY_ID = " + _COMMODITY_ID); if (_RECEIVESERVERPART_DataRow.Length > 0) { PURCHASE_COUNT = Convert.ToDouble(_RECEIVESERVERPART_DataRow[0][1]).Round(2); } #endregion #region 退货数据 DataRow[] _BACKCOMMODITY_DataRow = BACKCOMMODITYTable.Select("COMMODITY_ID = " + _COMMODITY_ID); if (_BACKCOMMODITY_DataRow.Length > 0) { BACK_COUNT = Convert.ToDouble(_BACKCOMMODITY_DataRow[0][1]).Round(2); } #endregion #region 调拨数据 DataRow[] _PREPARECOMMODITY_Out_DataRow = PREPARECOMMODITYOutTable.Select("COMMODITY_ID = " + _COMMODITY_ID); if (_PREPARECOMMODITY_Out_DataRow.Length > 0) { TRANSFER_COUNT = Convert.ToDouble(_PREPARECOMMODITY_Out_DataRow[0][1]).Round(2); } DataRow[] _PREPARECOMMODITY_In_DataRow = PREPARECOMMODITYInTable.Select("COMMODITY_ID = " + _COMMODITY_ID); if (_PREPARECOMMODITY_In_DataRow.Length > 0) { TRANSFER_COUNT = TRANSFER_COUNT - Convert.ToDouble(_PREPARECOMMODITY_In_DataRow[0][1]).Round(2); } #endregion #region 领用数据 DataRow[] _RECEIVECOMMODITY_DataRow = RECEIVECOMMODITYTable.Select("COMMODITY_ID = " + _COMMODITY_ID); if (_RECEIVECOMMODITY_DataRow.Length > 0) { RECEIVE_COUNT = Convert.ToDouble(_RECEIVECOMMODITY_DataRow[0][1]).Round(2); } #endregion #region 团购 DataRow[] _GROUPPURCHASE_DataRow = GROUPPURCHASE_DataTable.Select("COMMODITY_ID = " + _COMMODITY_ID); if (_GROUPPURCHASE_DataRow.Length > 0) { GROUPPURCHASE_COUNT = Convert.ToDouble(_GROUPPURCHASE_DataRow[0][0]); } #endregion #region 加工 DataRow[] _PROCESSORDER_DataRow = PROCESSORDER_DataTable.Select("COMMODITY_ID = " + _COMMODITY_ID); if (_PROCESSORDER_DataRow.Length > 0) { PROCESSORDER_COUNT = Convert.ToDouble(_PROCESSORDER_DataRow[0][0]); } #endregion #region 报损益流程 DataRow[] _LOSSPROFITGOODS_DataRow = LOSSPROFITGOODS_DataTable.Select("COMMODITY_ID = " + _COMMODITY_ID); if (_LOSSPROFITGOODS_DataRow.Length > 0) { LOSSPROFIT_CHECKCOUNT = Convert.ToDouble(_LOSSPROFITGOODS_DataRow[0][0]); } #endregion #region 上期结存数据 DataRow[] _INSALES_STATISTIC_DataRow = INSALES_STATISTICTable.Select("COMMODITY_ID = " + _COMMODITY_ID); if (_INSALES_STATISTIC_DataRow.Length > 0) { LAST_OVERPLUSCOUNT = Convert.ToDouble(_INSALES_STATISTIC_DataRow[0]["OVERPLUSCOUNT"]).Round(2); } #endregion #region 本期结存 DataRow[] _SERVERPARTSTOCK_DataRow = SERVERPARTSTOCK_DataTable.Select("COMMODITY_ID = " + _COMMODITY_ID); if (_SERVERPARTSTOCK_DataRow.Length > 0) { OVERPLUSCOUNT = Convert.ToDouble(_SERVERPARTSTOCK_DataRow[0]["OVERPLUSCOUNT"]).Round(2); } #endregion LOSSPROFIT_COUNT = (OVERPLUSCOUNT - (LAST_OVERPLUSCOUNT + PURCHASE_COUNT - BACK_COUNT - TRANSFER_COUNT - RECEIVE_COUNT - SELL_COUNT - GROUPPURCHASE_COUNT - PROCESSORDER_COUNT + LOSSPROFIT_CHECKCOUNT)).Round(2); sql = string.Format(@"INSERT INTO SALESTORE_STORAGE.T_STATISTI( STATISTI_ID,SERVERPART_ID,SERVERPARTSHOP_ID, COMMODITY_ID,COMMODITY_NAME,COMMODITY_BARCODE, PURCHASE_COUNT,SELL_COUNT,TRANSFER_COUNT,RECEIVE_COUNT,BACK_COUNT, LAST_OVERPLUSCOUNT,OVERPLUSCOUNT,GROUPPURCHASE_COUNT,PROCESSORDER_COUNT, LOSSPROFIT_CHECKCOUNT,LOSSPROFIT_COUNT,STATISTI_TIME) VALUES(SALESTORE_STORAGE.SEQ_STATISTI.Nextval,'{0}','{1}', '{2}','{3}','{4}', '{5}','{6}','{7}','{8}','{9}', '{10}','{11}','{12}','{13}', '{14}','{15}',to_date('{16}','YYYY/MM/DD HH24:MI:SS'))", _SERVERPART.SERVERPART_ID, _SERVERPARTSHOP.SERVERPARTSHOP_ID, _DataRow_COMMODITY[0]["COMMODITY_ID"], _DataRow_COMMODITY[0]["COMMODITY_NAME"].ToString().Replace("'", ""), _DataRow_COMMODITY[0]["COMMODITY_BARCODE"], PURCHASE_COUNT, SELL_COUNT, TRANSFER_COUNT, RECEIVE_COUNT, BACK_COUNT, LAST_OVERPLUSCOUNT, OVERPLUSCOUNT, GROUPPURCHASE_COUNT, PROCESSORDER_COUNT, LOSSPROFIT_CHECKCOUNT, LOSSPROFIT_COUNT, END_DATE); _CHECKCOMMODITY.ExecuteNonQuery(sql, null); num++; } } } catch (Exception ex) { reString = ex.Message; bFalse = false; break; } } if (bFalse) { _Transaction.Commit(); } else { _Transaction.Rollback(); } return reString; } #endregion } }