using System; using System.Collections.Generic; using System.Data; using System.Windows.Forms; using SuperMap.RealEstate.ServiceModel; using HWSB = SuperMap.RealEstate.HighWay.Storage.Business; using SSSB = SuperMap.RealEstate.SaleStore.Storage.Business; using SocketTransfer.SDK; using HZQR.Common; namespace StockDeduction { public partial class MainForm_New : Form { public MainForm_New() { InitializeComponent(); Transaction _Transaction = new Transaction(); try { PutInInSales(_Transaction); } catch (Exception ex) { LogHelper.WriteSendLog(ex.Message, DateTime.Now.ToString("yyyyMMdd")); _Transaction.Rollback(); } finally { if (_Transaction.IsOpen) { _Transaction.Dispose(); } } timer1.Start(); } #region 方法 -> 5分钟定时器 private void timer1_Tick(object sender, EventArgs e) { Transaction _Transaction = new Transaction(); try { PutInInSales(_Transaction); } catch (Exception ex) { LogHelper.WriteSendLog(ex.Message, DateTime.Now.ToString("yyyyMMdd")); _Transaction.Rollback(); } finally { if (_Transaction.IsOpen) { _Transaction.Dispose(); } } } #endregion #region 方法 -> 生成盘点数据 private void PutInInSales(Transaction _Transaction) { string StartDate = "", SQLString = ""; StartTime.Text = DateTime.Now.ToString(); //读取未完成盘点的单据 List CHECKCOMMODITYList = new SSSB.CHECKCOMMODITY(_Transaction).FillCollection( "WHERE CHECK_STATE = 0 AND SHOPCODE IS NOT NULL AND CHECK_TYPE NOT IN (2000,3000,9999)"); foreach (SSSB.CHECKCOMMODITY _CHECKCOMMODITY in CHECKCOMMODITYList) { string Transfer_Type = string.Empty; //判断门店成本结算方式是“先进先出”还是“移动平均” if (new HWSB.RTBUSINESSLIMIT(_Transaction).GetCount("WHERE DATA_TYPE = 3010 AND SERVERPARTSHOP_ID = " + _CHECKCOMMODITY.SERVERPARTSHOP_ID + " AND DATA_VALUE IN (2000,3000) AND RTBUSINESSLIMIT_STATE = 1") > 0) { //先进先出 Transfer_Type = "FIFO"; } else { //移动平均 Transfer_Type = "MAP"; } //根据盘点单查询还未生成盘点结果的明细数据 DataTable CHECKCOMMODITYDETAILTable = _CHECKCOMMODITY.ExecuteDataTable(string.Format( @"SELECT * FROM SALESTORE_STORAGE.T_CHECKCOMMODITYDETAIL_{0} A WHERE CHECKCOMMODITY_ID = {1} AND NOT EXISTS(SELECT 1 FROM SALESTORE_STORAGE.T_INSALES B WHERE A.CHECKCOMMODITY_ID = B.CHECKCOMMODITY_ID AND A.COMMODITY_ID = B.COMMODITY_ID) ORDER BY CHECKCOMMODITYDETAIL_ID", _CHECKCOMMODITY.SERVERPART_ID, _CHECKCOMMODITY.CHECKCOMMODITY_ID)); if (CHECKCOMMODITYDETAILTable.Rows.Count > 0) { HWSB.SERVERPART _SERVERPART = new HWSB.SERVERPART(_Transaction); HWSB.SERVERPARTSHOP _SERVERPARTSHOP = new HWSB.SERVERPARTSHOP(_Transaction); _SERVERPART.SERVERPART_ID = _CHECKCOMMODITY.SERVERPART_ID; _SERVERPARTSHOP.SERVERPARTSHOP_ID = _CHECKCOMMODITY.SERVERPARTSHOP_ID; if (_SERVERPART.Select() && _SERVERPARTSHOP.Select()) { //获取上期盘点时间 List LastCHECKCOMMODITY = new SSSB.CHECKCOMMODITY(_Transaction).FillCollection(string.Format(@" WHERE CHECK_STATE = 1 AND SHOPCODE IS NOT NULL AND SERVERPART_ID = {0} AND SERVERPARTSHOP_ID = {1} AND CHECKDATE < TO_DATE('{2}','YYYY/MM/DD HH24:MI:SS') AND CHECK_TYPE NOT IN (2000) ORDER BY CHECKDATE DESC", _SERVERPART.SERVERPART_ID, _SERVERPARTSHOP.SERVERPARTSHOP_ID, _CHECKCOMMODITY.CHECKDATE)); if (LastCHECKCOMMODITY.Count > 0) { StartDate = LastCHECKCOMMODITY[0].CHECKDATE.ToString(); } else { //查询不到,则设置默认时间 StartDate = "2020/1/1"; } #region 存储销售数据 DataTable T_SELLDATA_INSALES = _CHECKCOMMODITY.ExecuteDataTable( "SELECT * FROM HIGHWAY_SELLDATA.T_SELLDATA_INSALES WHERE CHECKCOMMODITY_ID = " + _CHECKCOMMODITY.CHECKCOMMODITY_ID); if (T_SELLDATA_INSALES.Rows.Count == 0) { SQLString = string.Format(@"INSERT INTO HIGHWAY_SELLDATA.T_SELLDATA_INSALES ( CHECKCOMMODITY_ID,SERVERPARTSTOCK_ID,SERVERPARTSHOP_ID,SHOPCODE, COMMODITY_ID,SELL_COUNT,SELL_TOTALTAXPRICE,SELL_TOTALPRICE) SELECT {0},NULL,{1},'{2}',COMMODITY_ID,SUM(SELL_COUNT), SUM(OPERATE_TAXAMOUNT),SUM(OPERATE_AMOUNT) FROM SALESTORE_STORAGE.T_STOCKLOG WHERE OPERATE_TYPE = 5000 AND SERVERPARTSHOP_ID = {1} AND OPERATE_DATE > TO_DATE('{3}','YYYY/MM/DD HH24:MI:SS') AND OPERATE_DATE <= TO_DATE('{4}','YYYY/MM/DD HH24:MI:SS')", _CHECKCOMMODITY.CHECKCOMMODITY_ID, _CHECKCOMMODITY.SERVERPARTSHOP_ID, _SERVERPARTSHOP.SHOPCODE, StartDate, _CHECKCOMMODITY.CHECKDATE.Value); T_SELLDATA_INSALES = _CHECKCOMMODITY.ExecuteDataTable( "SELECT * FROM HIGHWAY_SELLDATA.T_SELLDATA_INSALES WHERE CHECKCOMMODITY_ID = " + _CHECKCOMMODITY.CHECKCOMMODITY_ID); } #endregion #region 存储业务数据 //上期结存 SQLString = @"SELECT COMMODITY_ID,OPERATE_COUNT, OPERATE_TAXAMOUNT,OPERATE_AMOUNT,OPERATE_TYPE FROM SALESTORE_STORAGE.T_STOCKLOG WHERE OPERATE_TYPE IN (6000) AND SERVERPARTSHOP_ID = " + _CHECKCOMMODITY.SERVERPARTSHOP_ID; DataTable LastCheckInfo = _CHECKCOMMODITY.ExecuteDataTable(SQLString); //获取入库、调拨、退货、领用 SQLString = string.Format(@"SELECT OPERATE_TYPE,COMMODITY_ID,SUM(OPERATE_COUNT) AS OPERATE_COUNT, SUM(OPERATE_TAXAMOUNT) AS OPERATE_TAXAMOUNT,SUM(OPERATE_AMOUNT) AS OPERATE_AMOUNT FROM SALESTORE_STORAGE.T_STOCKLOG WHERE OPERATE_TYPE IN (1000,2000,3000,4000,6000) AND SERVERPARTSHOP_ID = {0} AND OPERATE_DATE > TO_DATE('{1}','YYYY/MM/DD HH24:MI:SS') AND OPERATE_DATE <= TO_DATE('{2}','YYYY/MM/DD HH24:MI:SS') GROUP BY OPERATE_TYPE,COMMODITY_ID", _CHECKCOMMODITY.SERVERPARTSHOP_ID, StartDate, _CHECKCOMMODITY.CHECKDATE.Value); DataTable dtBusinessData = _CHECKCOMMODITY.ExecuteDataTable(SQLString); #endregion //存储库存数据 DataTable SERVERPARTSTOCKTable = new SSSB.SERVERPARTSTOCK(_Transaction).FillDataTable( "WHERE SERVERPARTSHOP_ID = " + _SERVERPARTSHOP.SERVERPARTSHOP_ID + " AND OPERATE_STATE <= 8000"); SERVERPARTSTOCKTable.DefaultView.Sort = "OPERATE_STATE,RECEIVE_DATE,SERVERPARTSTOCK_ID"; SERVERPARTSTOCKTable = SERVERPARTSTOCKTable.DefaultView.ToTable(); foreach (DataRow _DataRow in CHECKCOMMODITYDETAILTable.Rows) { //过滤没有商品信息的盘点数据,对已生成数据的信息进行去重判断 if (!string.IsNullOrWhiteSpace(_DataRow["COMMODITY_ID"].ToString()) && _CHECKCOMMODITY.ExecuteDataTable("SELECT 1 FROM SALESTORE_STORAGE.T_INSALES WHERE CHECKCOMMODITY_ID = " + _CHECKCOMMODITY.CHECKCOMMODITY_ID + " AND COMMODITY_ID = " + _DataRow["COMMODITY_ID"].ToString()).Rows.Count == 0) { double M_PURCHASE_COUNT = 0, M_PURCHASE_TOTALTAXPRICE = 0, M_PURCHASE_TOTALPRICE = 0, M_SELL_COUNT = 0, M_SELL_TOTALTAXPRICE = 0, M_SELL_TOTALPRICE = 0, M_TRANSFER_COUNT = 0, M_TRANSFER_AMOUNT = 0, M_TRANSFER_PRICE = 0, M_RECEIVE_COUNT = 0, M_RECEIVE_AMOUNT = 0, M_RECEIVE_PRICE = 0, M_BACK_COUNT = 0, M_BACK_AMOUNT = 0, M_BACK_PRICE = 0, M_LAST_OVERPLUSCOUNT = 0, M_LAST_OVERPLUSAMOUNT = 0, M_LAST_OVERPLUSPRICE = 0; double _GROUPPURCHASE_COUNT = 0, _GROUPPURCHASE_AMOUNT = 0, _GROUPPURCHASE_COST = 0, _PROCESSORDER_COUNT = 0, _PROCESSORDER_AMOUNT = 0, _PROCESSORDER_PRICE = 0, _LOSSPROFIT_CHECKCOUNT = 0, _LOSSPROFIT_CHECKAMOUNT = 0, _LOSSPROFIT_CHECKPRICE = 0; //根据商品内码查询商品数据 DataTable CommodityTable = _SERVERPART.ExecuteDataTable( "SELECT * FROM V_WHOLE_COMMODITY WHERE COMMODITY_ID = " + _DataRow["COMMODITY_ID"].ToString()); if (CommodityTable.Rows.Count > 0 && SERVERPARTSTOCKTable.Select("COMMODITY_ID = " + _DataRow["COMMODITY_ID"].ToString()).Length > 0) { //含税成本、除税成本 string M_PURCHASE_TAXPRICE = "NULL", M_PURCHASE_PRICE = "NULL"; #region 上期结存数据 DataRow[] _INSALES_STATISTIC_DataRow = LastCheckInfo.Select("COMMODITY_ID = " + _DataRow["COMMODITY_ID"].ToString()); if (_INSALES_STATISTIC_DataRow.Length > 0) { M_LAST_OVERPLUSCOUNT = Convert.ToDouble(_INSALES_STATISTIC_DataRow[0]["OPERATE_COUNT"]).Round(2); M_LAST_OVERPLUSAMOUNT = Convert.ToDouble(_INSALES_STATISTIC_DataRow[0]["OPERATE_TAXAMOUNT"]).Round(2); M_LAST_OVERPLUSPRICE = Convert.ToDouble(_INSALES_STATISTIC_DataRow[0]["OPERATE_AMOUNT"]).Round(2); } #endregion #region 销售数据 DataRow[] _T_SELLDATA_DataRow = T_SELLDATA_INSALES.Select("COMMODITY_ID = " + _DataRow["COMMODITY_ID"].ToString()); if (_T_SELLDATA_DataRow.Length > 0) { M_SELL_COUNT = Convert.ToDouble(_T_SELLDATA_DataRow[0]["SELL_COUNT"] == null ? 0 : _T_SELLDATA_DataRow[0]["SELL_COUNT"]).Round(2); M_SELL_TOTALTAXPRICE = Convert.ToDouble(_T_SELLDATA_DataRow[0]["SELL_TOTALTAXPRICE"] == null ? 0 : _T_SELLDATA_DataRow[0]["SELL_TOTALTAXPRICE"]).Round(2); if (!string.IsNullOrWhiteSpace(CommodityTable.Rows[0]["RETAIL_DUTY"].ToString())) { double _RETAIL_DUTY = CommodityTable.Rows[0]["RETAIL_DUTY"].TryParseToDouble().Round(6); M_SELL_TOTALPRICE = (M_SELL_TOTALTAXPRICE / (1 + _RETAIL_DUTY / 100.00)).Round(2); } //else //{ // M_SELL_TOTALPRICE = _T_SELLDATA_DataRow[0]["SELL_TOTALPRICE"].TryParseToDouble().Round(2); //} } #endregion #region 入库数据 DataRow[] _RECEIVESERVERPART_DataRow = dtBusinessData.Select("COMMODITY_ID = " + _DataRow["COMMODITY_ID"].ToString() + " AND OPERATE_TYPE = 1000"); if (_RECEIVESERVERPART_DataRow.Length > 0) { M_PURCHASE_COUNT = Convert.ToDouble(_RECEIVESERVERPART_DataRow[0][1]).Round(2); M_PURCHASE_TOTALTAXPRICE = Convert.ToDouble(_RECEIVESERVERPART_DataRow[0][2]).Round(2); M_PURCHASE_TOTALPRICE = Convert.ToDouble(_RECEIVESERVERPART_DataRow[0][3]).Round(2); } #endregion #region 获取库存的成本【移动平均和先进先出 计算损溢的成本价不一样】 if (Transfer_Type == "MAP") { //如果上期结存+本期入库+本期调拨=0,则以上期库存成本准计入本期库存 if (M_LAST_OVERPLUSCOUNT.TryParseToDecimal() + M_PURCHASE_COUNT.TryParseToDecimal() + M_TRANSFER_COUNT.TryParseToDecimal() == 0 || M_LAST_OVERPLUSAMOUNT.TryParseToDecimal() + M_PURCHASE_TOTALTAXPRICE.TryParseToDecimal() + M_TRANSFER_AMOUNT.TryParseToDecimal() == 0 || M_LAST_OVERPLUSPRICE.TryParseToDecimal() + M_PURCHASE_TOTALPRICE.TryParseToDecimal() + M_TRANSFER_PRICE.TryParseToDecimal() == 0) { DataRow SERVERPARTSTOCK = SERVERPARTSTOCKTable.Select("COMMODITY_ID = " + _DataRow["COMMODITY_ID"].ToString())[0]; //含税成本 if (!string.IsNullOrWhiteSpace(SERVERPARTSTOCK["PURCHASE_TAXPRICE"].ToString())) { M_PURCHASE_TAXPRICE = SERVERPARTSTOCK["PURCHASE_TAXPRICE"].ToString(); } //除税成本 if (!string.IsNullOrWhiteSpace(SERVERPARTSTOCK["PURCHASE_PRICE"].ToString())) { M_PURCHASE_PRICE = SERVERPARTSTOCK["PURCHASE_PRICE"].ToString(); } } else { //含税成本=(上期结存含税金额+入库含税金额+调拨含税金额)/(入库数量+调入数量) M_PURCHASE_TAXPRICE = ((M_LAST_OVERPLUSAMOUNT.TryParseToDouble() + M_PURCHASE_TOTALTAXPRICE.TryParseToDouble() + M_TRANSFER_AMOUNT.TryParseToDouble()) / (M_LAST_OVERPLUSCOUNT.TryParseToDouble() + M_PURCHASE_COUNT.TryParseToDouble() + M_TRANSFER_COUNT.TryParseToDouble())).Round(6).ToString(); //除税成本=(上期结存除税金额+入库除税金额+调拨除税金额)/(入库数量+调入数量) M_PURCHASE_PRICE = ((M_LAST_OVERPLUSPRICE.TryParseToDouble() + M_PURCHASE_TOTALPRICE.TryParseToDouble() + M_TRANSFER_PRICE.TryParseToDouble()) / (M_LAST_OVERPLUSCOUNT.TryParseToDouble() + M_PURCHASE_COUNT.TryParseToDouble() + M_TRANSFER_COUNT.TryParseToDouble())).Round(6).ToString(); } } else { DataRow SERVERPARTSTOCK = SERVERPARTSTOCKTable.Select("COMMODITY_ID = " + _DataRow["COMMODITY_ID"].ToString())[0]; //含税成本 if (!string.IsNullOrWhiteSpace(SERVERPARTSTOCK["PURCHASE_TAXPRICE"].ToString())) { M_PURCHASE_TAXPRICE = SERVERPARTSTOCK["PURCHASE_TAXPRICE"].ToString(); } //除税成本 if (!string.IsNullOrWhiteSpace(SERVERPARTSTOCK["PURCHASE_PRICE"].ToString())) { M_PURCHASE_PRICE = SERVERPARTSTOCK["PURCHASE_PRICE"].ToString(); } } #endregion #region 退货数据 DataRow[] _BACKCOMMODITY_DataRow = dtBusinessData.Select("COMMODITY_ID = " + _DataRow["COMMODITY_ID"].ToString() + " AND OPERATE_TYPE = 3000"); if (_BACKCOMMODITY_DataRow.Length > 0) { M_BACK_COUNT = Convert.ToDouble(_BACKCOMMODITY_DataRow[0][1]).Round(2); M_BACK_AMOUNT = Convert.ToDouble(_BACKCOMMODITY_DataRow[0][2]).Round(2); M_BACK_PRICE = Convert.ToDouble(_BACKCOMMODITY_DataRow[0][3]).Round(2); } #endregion #region 调拨数据 DataRow[] _PREPARECOMMODITY_Out_DataRow = dtBusinessData.Select("COMMODITY_ID = " + _DataRow["COMMODITY_ID"].ToString() + " AND OPERATE_TYPE = 2000"); if (_PREPARECOMMODITY_Out_DataRow.Length > 0) { M_TRANSFER_COUNT = Convert.ToDouble(_PREPARECOMMODITY_Out_DataRow[0][1]).Round(2); M_TRANSFER_AMOUNT = Convert.ToDouble(_PREPARECOMMODITY_Out_DataRow[0][2]).Round(2); M_TRANSFER_PRICE = Convert.ToDouble(_PREPARECOMMODITY_Out_DataRow[0][3]).Round(2); } DataRow[] _PREPARECOMMODITY_In_DataRow = dtBusinessData.Select("COMMODITY_ID = " + _DataRow["COMMODITY_ID"].ToString()); if (_PREPARECOMMODITY_In_DataRow.Length > 0) { M_TRANSFER_COUNT = (M_TRANSFER_COUNT - Convert.ToDouble(_PREPARECOMMODITY_In_DataRow[0][1])).Round(2); M_TRANSFER_AMOUNT = (M_TRANSFER_AMOUNT - Convert.ToDouble(_PREPARECOMMODITY_In_DataRow[0][2])).Round(2); M_TRANSFER_PRICE = (M_TRANSFER_PRICE - Convert.ToDouble(_PREPARECOMMODITY_In_DataRow[0][3])).Round(2); } #endregion #region 领用数据 DataRow[] _RECEIVECOMMODITY_DataRow = dtBusinessData.Select("COMMODITY_ID = " + _DataRow["COMMODITY_ID"].ToString() + " AND OPERATE_TYPE = 4000"); if (_RECEIVECOMMODITY_DataRow.Length > 0) { M_RECEIVE_COUNT = Convert.ToDouble(_RECEIVECOMMODITY_DataRow[0][1]).Round(2); M_RECEIVE_AMOUNT = Convert.ToDouble(_RECEIVECOMMODITY_DataRow[0][2]).Round(2); M_RECEIVE_PRICE = Convert.ToDouble(_RECEIVECOMMODITY_DataRow[0][3]).Round(2); } #endregion SQLString = string.Format(@"INSERT INTO SALESTORE_STORAGE.T_INSALES ( CHECKCOMMODITY_ID,CHECKCOMMODITYDETAIL_ID,COMMODITY_ID,COMMODITY_TYPE, COMMODITYTYPE_NAME,BUSINESSTYPE,COMMODITY_CODE,COMMODITY_NAME,COMMODITY_BARCODE, COMMODITY_UNIT,COMMODITY_RULE,COMMODITY_RETAILPRICE,COMMODITY_PURCHASEPRICE, PURCHASE_COUNT,PURCHASE_TAXPRICE,PURCHASE_TOTALTAXPRICE, PURCHASE_PRICE,PURCHASE_TOTALPRICE,SELL_COUNT, SELL_UNITTAXPRICE,SELL_TOTALTAXPRICE,SELL_UNITPRICE, SELL_TOTALPRICE,SELL_COST,SELL_COSTPRICE,TRANSFER_COUNT, TRANSFER_AMOUNT,TRANSFER_PRICE,RECEIVE_COUNT,RECEIVE_AMOUNT, RECEIVE_PRICE,BACK_COUNT,BACK_AMOUNT,BACK_PRICE, LAST_OVERPLUSCOUNT,LAST_OVERPLUSAMOUNT,LAST_OVERPLUSPRICE, PROCESSORDER_COUNT,PROCESSORDER_AMOUNT,PROCESSORDER_PRICE, GROUPPURCHASE_COUNT,GROUPPURCHASE_AMOUNT,GROUPPURCHASE_COST, LOSSPROFIT_CHECKCOUNT,LOSSPROFIT_CHECKAMOUNT,LOSSPROFIT_CHECKPRICE) SELECT {0},{1},COMMODITY_ID,COMMODITY_TYPE,COMMODITYTYPE_NAME,BUSINESSTYPE, COMMODITY_CODE,COMMODITY_NAME,COMMODITY_BARCODE,COMMODITY_UNIT,COMMODITY_RULE, COMMODITY_RETAILPRICE,COMMODITY_PURCHASEPRICE,{2},{3},{4}, NVL({5},ROUND({3} / ROUND(1 + NVL(A.DUTY_PARAGRAPH,13) / 100,2),6)), {6},{7},COMMODITY_RETAILPRICE,{8},ROUND(COMMODITY_RETAILPRICE / ROUND(1 + NVL(A.RETAIL_DUTY,13) / 100,2),6), {9},NULL,NULL,{10},{11},{12},{13},{14},{15},{16},{17},{18},{19},{20}, {21},{23},{24},{25},{26},{27},{28},{29},{30},{31} FROM HIGHWAY_STORAGE.V_WHOLE_COMMODITY A, HIGHWAY_STORAGE.T_COMMODITYTYPE B WHERE A.COMMODITY_TYPE = B.COMMODITYTYPE_ID AND A.COMMODITY_ID = {22}", _CHECKCOMMODITY.CHECKCOMMODITY_ID, _DataRow["CHECKCOMMODITYDETAIL_ID"].ToString(), M_PURCHASE_COUNT, M_PURCHASE_TAXPRICE, M_PURCHASE_TOTALTAXPRICE, M_PURCHASE_PRICE, M_PURCHASE_TOTALPRICE, M_SELL_COUNT, M_SELL_TOTALTAXPRICE, M_SELL_TOTALPRICE, M_TRANSFER_COUNT, M_TRANSFER_AMOUNT, M_TRANSFER_PRICE, M_RECEIVE_COUNT, M_RECEIVE_AMOUNT, M_RECEIVE_PRICE, M_BACK_COUNT, M_BACK_AMOUNT, M_BACK_PRICE, M_LAST_OVERPLUSCOUNT, M_LAST_OVERPLUSAMOUNT, M_LAST_OVERPLUSPRICE, _DataRow["COMMODITY_ID"].ToString(), _PROCESSORDER_COUNT, _PROCESSORDER_AMOUNT, _PROCESSORDER_PRICE, _GROUPPURCHASE_COUNT, _GROUPPURCHASE_AMOUNT, _GROUPPURCHASE_COST, _LOSSPROFIT_CHECKCOUNT, _LOSSPROFIT_CHECKAMOUNT, _LOSSPROFIT_CHECKPRICE); try { _CHECKCOMMODITY.ExecuteNonQuery(SQLString, null); } catch { LogHelper.WriteSendLog(SQLString, DateTime.Now.ToString("yyyyMMdd")); } } else if (CommodityTable.Rows.Count > 0) { DataRow drCommodity = CommodityTable.Rows[0]; SQLString = string.Format(@"INSERT INTO SALESTORE_STORAGE.T_INSALES ( CHECKCOMMODITY_ID,CHECKCOMMODITYDETAIL_ID,COMMODITY_ID,COMMODITY_TYPE, COMMODITYTYPE_NAME,BUSINESSTYPE,COMMODITY_CODE,COMMODITY_NAME,COMMODITY_BARCODE, COMMODITY_UNIT,COMMODITY_RULE,COMMODITY_RETAILPRICE,COMMODITY_PURCHASEPRICE, PURCHASE_COUNT,PURCHASE_TAXPRICE,PURCHASE_TOTALTAXPRICE, PURCHASE_PRICE,PURCHASE_TOTALPRICE,SELL_COUNT, SELL_UNITTAXPRICE,SELL_TOTALTAXPRICE,SELL_UNITPRICE, SELL_TOTALPRICE,SELL_COST,SELL_COSTPRICE,TRANSFER_COUNT, TRANSFER_AMOUNT,TRANSFER_PRICE,RECEIVE_COUNT,RECEIVE_AMOUNT, RECEIVE_PRICE,BACK_COUNT,BACK_AMOUNT,BACK_PRICE, LAST_OVERPLUSCOUNT,LAST_OVERPLUSAMOUNT,LAST_OVERPLUSPRICE, PROCESSORDER_COUNT,PROCESSORDER_AMOUNT,PROCESSORDER_PRICE, GROUPPURCHASE_COUNT,GROUPPURCHASE_AMOUNT,GROUPPURCHASE_COST, LOSSPROFIT_CHECKCOUNT,LOSSPROFIT_CHECKAMOUNT,LOSSPROFIT_CHECKPRICE) SELECT {0},{1},COMMODITY_ID,COMMODITY_TYPE,COMMODITYTYPE_NAME,BUSINESSTYPE, COMMODITY_CODE,COMMODITY_NAME,COMMODITY_BARCODE,COMMODITY_UNIT,COMMODITY_RULE, COMMODITY_RETAILPRICE,COMMODITY_PURCHASEPRICE,0,COMMODITY_PURCHASEPRICE,0, ROUND(COMMODITY_PURCHASEPRICE / ROUND(1 + NVL(A.DUTY_PARAGRAPH,13) / 100,2),6), 0,0,COMMODITY_RETAILPRICE,0,ROUND(COMMODITY_RETAILPRICE / ROUND(1 + NVL(A.RETAIL_DUTY,13) / 100,2),6), 0,NULL,NULL,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 FROM HIGHWAY_STORAGE.V_WHOLE_COMMODITY A, HIGHWAY_STORAGE.T_COMMODITYTYPE B WHERE A.COMMODITY_TYPE = B.COMMODITYTYPE_ID AND A.COMMODITY_ID = {2}", _CHECKCOMMODITY.CHECKCOMMODITY_ID, _DataRow["CHECKCOMMODITYDETAIL_ID"].ToString(), _DataRow["COMMODITY_ID"].ToString()); _CHECKCOMMODITY.ExecuteNonQuery(SQLString, null); } } } /*_CHECKCOMMODITY.ExecuteNonQuery(string.Format(@"UPDATE SALESTORE_STORAGE.T_CHECKCOMMODITYDETAIL B SET (B.PURCHASE_TAXPRICE,B.PURCHASE_PRICE) = (SELECT C.PURCHASE_TAXPRICE,C.PURCHASE_PRICE FROM SALESTORE_STORAGE.T_INSALES C WHERE B.CHECKCOMMODITYDETAIL_ID = C.CHECKCOMMODITYDETAIL_ID) WHERE B.CHECKCOMMODITY_ID = {0} AND EXISTS (SELECT 1 FROM SALESTORE_STORAGE.T_INSALES C WHERE B.CHECKCOMMODITYDETAIL_ID = C.CHECKCOMMODITYDETAIL_ID)", _CHECKCOMMODITY.CHECKCOMMODITY_ID), null);*/ _CHECKCOMMODITY.ExecuteNonQuery(string.Format(@"UPDATE SALESTORE_STORAGE.T_CHECKCOMMODITYDETAIL_{0} B SET (B.PURCHASE_TAXPRICE,B.PURCHASE_PRICE) = (SELECT C.PURCHASE_TAXPRICE,C.PURCHASE_PRICE FROM SALESTORE_STORAGE.T_INSALES C WHERE B.CHECKCOMMODITYDETAIL_ID = C.CHECKCOMMODITYDETAIL_ID) WHERE B.CHECKCOMMODITY_ID = {1} AND EXISTS (SELECT 1 FROM SALESTORE_STORAGE.T_INSALES C WHERE B.CHECKCOMMODITYDETAIL_ID = C.CHECKCOMMODITYDETAIL_ID)", _CHECKCOMMODITY.SERVERPART_ID, _CHECKCOMMODITY.CHECKCOMMODITY_ID), null); _Transaction.Commit(); } } } EndTime.Text = DateTime.Now.ToString(); } #endregion } }