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