592 lines
41 KiB
C#
592 lines
41 KiB
C#
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 System.Configuration;
|
|
|
|
namespace StockDeduction
|
|
{
|
|
public partial class MainForm : Form
|
|
{
|
|
public MainForm()
|
|
{
|
|
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();
|
|
}
|
|
static string strServer = ConfigurationManager.AppSettings["Server"].ToString();
|
|
static string strPort = ConfigurationManager.AppSettings["Port"].ToString();
|
|
static string strName = ConfigurationManager.AppSettings["Name"].ToString();
|
|
static string strUserName = ConfigurationManager.AppSettings["UserName"].ToString();
|
|
static string strUserPwd = ConfigurationManager.AppSettings["UserPwd"].ToString();
|
|
static AppCode.OracleHelper _OracleHelper = new AppCode.OracleHelper(strServer, strPort, strName, strUserName, strUserPwd);
|
|
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();
|
|
}
|
|
}
|
|
}
|
|
|
|
#region 方法 -> 生成盘点数据
|
|
private void PutInInSales(Transaction _Transaction)
|
|
{
|
|
|
|
try
|
|
{
|
|
StartTime.Text = DateTime.Now.ToString();
|
|
List<SSSB.CHECKCOMMODITY> CHECKCOMMODITYList = new SSSB.CHECKCOMMODITY(_Transaction).FillCollection(
|
|
"WHERE CHECK_STATE = 0 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 = _OracleHelper.ExcuteSqlGetDataSet(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)).Tables[0];
|
|
|
|
//DataTable CHECKCOMMODITYDETAILTable = _CHECKCOMMODITY.ExecuteDataTable(string.Format(
|
|
// @"SELECT * FROM SALESTORE_STORAGE.T_CHECKCOMMODITYDETAIL A WHERE CHECKCOMMODITY_ID = {0} 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.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())
|
|
{
|
|
#region 存储销售数据
|
|
DataTable T_SELLDATA_INSALES = _OracleHelper.ExcuteSqlGetDataSet(
|
|
"SELECT * FROM HIGHWAY_SELLDATA.T_SELLDATA_INSALES WHERE CHECKCOMMODITY_ID = " + _CHECKCOMMODITY.CHECKCOMMODITY_ID).Tables[0];
|
|
if (T_SELLDATA_INSALES.Rows.Count == 0)
|
|
{
|
|
string SQLString = string.Format(@"
|
|
INSERT INTO HIGHWAY_SELLDATA.T_SELLDATA_INSALES (
|
|
CHECKCOMMODITY_ID,SERVERPARTSTOCK_ID,SERVERPARTSHOP_ID,SHOPCODE,
|
|
COMMODITY_ID,SELL_COUNT,SELL_TOTALTAXPRICE)
|
|
SELECT {5},null,{6},{7},
|
|
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,
|
|
CHECKCOMMODITYDETAILTable.Rows[0]["START_DATE"].ToString(),
|
|
CHECKCOMMODITYDETAILTable.Rows[0]["END_DATE"].ToString(), _SERVERPART.PROVINCE_CODE, _CHECKCOMMODITY.CHECKCOMMODITY_ID,
|
|
_CHECKCOMMODITY.SERVERPARTSHOP_ID, _SERVERPARTSHOP.SHOPCODE);
|
|
string sql = "";
|
|
try
|
|
{
|
|
_OracleHelper.ExcuteSql(SQLString);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
|
|
}
|
|
|
|
T_SELLDATA_INSALES = _OracleHelper.ExcuteSqlGetDataSet(@"SELECT * FROM HIGHWAY_SELLDATA.T_SELLDATA_INSALES
|
|
WHERE CHECKCOMMODITY_ID = " + _CHECKCOMMODITY.CHECKCOMMODITY_ID).Tables[0];
|
|
}
|
|
#endregion
|
|
|
|
#region 存储业务数据
|
|
DataTable BACKCOMMODITYTable = _OracleHelper.ExcuteSqlGetDataSet(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,
|
|
CHECKCOMMODITYDETAILTable.Rows[0]["START_DATE"].ToString(),
|
|
CHECKCOMMODITYDETAILTable.Rows[0]["END_DATE"].ToString())).Tables[0];
|
|
|
|
DataTable PREPARECOMMODITYOutTable = _OracleHelper.ExcuteSqlGetDataSet(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,
|
|
CHECKCOMMODITYDETAILTable.Rows[0]["START_DATE"].ToString(),
|
|
CHECKCOMMODITYDETAILTable.Rows[0]["END_DATE"].ToString())).Tables[0];
|
|
|
|
DataTable PREPARECOMMODITYInTable = _OracleHelper.ExcuteSqlGetDataSet(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,
|
|
CHECKCOMMODITYDETAILTable.Rows[0]["START_DATE"].ToString(),
|
|
CHECKCOMMODITYDETAILTable.Rows[0]["END_DATE"].ToString())).Tables[0];
|
|
|
|
DataTable RECEIVECOMMODITYTable = _OracleHelper.ExcuteSqlGetDataSet(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,
|
|
CHECKCOMMODITYDETAILTable.Rows[0]["START_DATE"].ToString(),
|
|
CHECKCOMMODITYDETAILTable.Rows[0]["END_DATE"].ToString())).Tables[0];
|
|
#endregion
|
|
|
|
#region 存储入库数据
|
|
DataTable RECEIVESERVERPARTTable = _OracleHelper.ExcuteSqlGetDataSet(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,
|
|
CHECKCOMMODITYDETAILTable.Rows[0]["START_DATE"].ToString(),
|
|
CHECKCOMMODITYDETAILTable.Rows[0]["END_DATE"].ToString())).Tables[0];
|
|
#endregion
|
|
|
|
#region 团购
|
|
DataTable GROUPPURCHASE_DataTable = _OracleHelper.ExcuteSqlGetDataSet(@"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('" + CHECKCOMMODITYDETAILTable.Rows[0]["START_DATE"].ToString() +
|
|
"','YYYY-MM-DD HH24:MI:SS') AND TO_DATE('" + CHECKCOMMODITYDETAILTable.Rows[0]["END_DATE"].ToString() +
|
|
"','YYYY-MM-DD HH24:MI:SS') AND B.SERVERPARTSHOP_ID = " + _SERVERPARTSHOP.SERVERPARTSHOP_ID +
|
|
" GROUP BY A.COMMODITY_ID").Tables[0];
|
|
#endregion
|
|
|
|
#region 加工单
|
|
DataTable PROCESSORDER_DataTable = _OracleHelper.ExcuteSqlGetDataSet(@"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('" + CHECKCOMMODITYDETAILTable.Rows[0]["START_DATE"].ToString() +
|
|
"','YYYY-MM-DD HH24:MI:SS') AND TO_DATE('" + CHECKCOMMODITYDETAILTable.Rows[0]["END_DATE"].ToString() +
|
|
"','YYYY-MM-DD HH24:MI:SS') AND B.SERVERPARTSHOP_ID = " + _SERVERPARTSHOP.SERVERPARTSHOP_ID +
|
|
" GROUP BY A.COMMODITY_ID").Tables[0];
|
|
#endregion
|
|
|
|
#region 本期报损溢
|
|
DataTable LOSSPROFITGOODS_DataTable = _OracleHelper.ExcuteSqlGetDataSet(@"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('" + CHECKCOMMODITYDETAILTable.Rows[0]["START_DATE"].ToString() +
|
|
"','YYYY-MM-DD HH24:MI:SS') AND TO_DATE('" + CHECKCOMMODITYDETAILTable.Rows[0]["END_DATE"].ToString() +
|
|
"','YYYY-MM-DD HH24:MI:SS') AND SERVERPARTSHOP_ID = " + _SERVERPARTSHOP.SERVERPARTSHOP_ID +
|
|
" GROUP BY COMMODITY_ID").Tables[0];
|
|
#endregion
|
|
|
|
#region 本期库存
|
|
DataTable SERVERPARTSTOCK_DataTable = _OracleHelper.ExcuteSqlGetDataSet(@"SELECT
|
|
ROUND(NVL(SUM(OVERPLUSCOUNT * PURCHASE_TAXPRICE),0),2),COMMODITY_ID
|
|
FROM SALESTORE_STORAGE.T_SERVERPARTSTOCK WHERE SERVERPARTSHOP_ID = " +
|
|
_SERVERPARTSHOP.SERVERPARTSHOP_ID + " GROUP BY COMMODITY_ID").Tables[0];
|
|
|
|
#endregion
|
|
|
|
#region 存储上期结存
|
|
DataTable INSALES_STATISTICTable = _OracleHelper.ExcuteSqlGetDataSet(string.Format(
|
|
@"SELECT COMMODITY_ID,NVL(OVERPLUSCOUNT,0)AS OVERPLUSCOUNT,NVL(OVERPLUS_AMOUNT,0) AS OVERPLUS_AMOUNT,
|
|
NVL(OVERPLUS_PRICE,0) AS OVERPLUS_PRICE
|
|
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,9999)) ORDER BY CHECKDATE DESC",
|
|
_SERVERPART.SERVERPART_ID, _SERVERPARTSHOP.SERVERPARTSHOP_ID, _CHECKCOMMODITY.CHECKDATE)).Tables[0];
|
|
#endregion
|
|
|
|
List<string> _list = new List<string>();
|
|
//存储库存数据
|
|
|
|
|
|
DataTable SERVERPARTSTOCKTable = _OracleHelper.ExcuteSqlGetDataSet(
|
|
string.Format("SELECT * FROM SALESTORE_STORAGE.T_SERVERPARTSTOCK WHERE SERVERPARTSHOP_ID ={0} ORDER BY OPERATE_STATE",
|
|
_SERVERPARTSHOP.SERVERPARTSHOP_ID)).Tables[0];
|
|
|
|
try
|
|
{
|
|
|
|
DataTable _INSALES = _OracleHelper.ExcuteSqlGetDataSet("SELECT * FROM SALESTORE_STORAGE.T_INSALES WHERE CHECKCOMMODITY_ID = " +
|
|
_CHECKCOMMODITY.CHECKCOMMODITY_ID).Tables[0];
|
|
|
|
|
|
DataTable _d_COMMODITY = _OracleHelper.ExcuteSqlGetDataSet("SELECT * FROM HIGHWAY_STORAGE.V_WHOLE_COMMODITY ").Tables[0];
|
|
foreach (DataRow _DataRow in CHECKCOMMODITYDETAILTable.Rows)
|
|
{
|
|
if (_INSALES.Select(" COMMODITY_ID = " + _DataRow["COMMODITY_ID"].ToString()).Length == 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;
|
|
double _OVERPLUSCOUNT = 0, _OVERPLUS_AMOUNT = 0, _OVERPLUS_PRICE = 0;
|
|
|
|
|
|
if (_d_COMMODITY.Select("COMMODITY_ID = " + _DataRow["COMMODITY_ID"].ToString()).Length > 0 &&
|
|
SERVERPARTSTOCKTable.Select("COMMODITY_ID = " + _DataRow["COMMODITY_ID"].ToString()).Length > 0)
|
|
{
|
|
string _PURCHASE_TAXPRICE = "NULLL", _PURCHASE_PRICE = "NULLL";
|
|
//移动平均和先进先出 计算损溢的成本价不一样
|
|
if (Transfer_Type == "MAP")
|
|
{
|
|
DataRow SERVERPARTSTOCK = SERVERPARTSTOCKTable.Select("COMMODITY_ID = " +
|
|
_DataRow["COMMODITY_ID"].ToString())[0];
|
|
_PURCHASE_TAXPRICE = SERVERPARTSTOCK["PURCHASE_TAXPRICE"].ToString();
|
|
_PURCHASE_PRICE = SERVERPARTSTOCK["PURCHASE_PRICE"].ToString();
|
|
}
|
|
else
|
|
{
|
|
List<SSSB.SERVERPARTSTOCK> SERVERPARTSTOCKList = new SSSB.SERVERPARTSTOCK(_Transaction).FillCollection(
|
|
"WHERE OVERPLUSCOUNT > 0 AND COMMODITY_ID = " + _DataRow["COMMODITY_ID"].ToString() +
|
|
" AND SERVERPARTSHOP_ID = " + _SERVERPARTSHOP.SERVERPARTSHOP_ID + " AND RECEIVE_DATE <= TO_DATE('" +
|
|
_CHECKCOMMODITY.CHECKDATE + "','YYYY/MM/DD HH24:MI:SS') ORDER BY RECEIVE_DATE,SERVERPARTSTOCK_ID");
|
|
if (SERVERPARTSTOCKList.Count == 0)
|
|
{
|
|
SERVERPARTSTOCKList = new SSSB.SERVERPARTSTOCK(_Transaction).FillCollection(
|
|
"WHERE COMMODITY_ID = " + _DataRow["COMMODITY_ID"].ToString() + " AND SERVERPARTSHOP_ID = " +
|
|
_CHECKCOMMODITY.SERVERPARTSHOP_ID + " ORDER BY RECEIVE_DATE DESC,SERVERPARTSTOCK_ID DESC");
|
|
}
|
|
|
|
if (SERVERPARTSTOCKList != null && SERVERPARTSTOCKList.Count > 0)
|
|
{
|
|
_PURCHASE_TAXPRICE = SERVERPARTSTOCKList[0].PURCHASE_TAXPRICE.ToString();
|
|
_PURCHASE_PRICE = SERVERPARTSTOCKList[0].PURCHASE_PRICE.ToString();
|
|
}
|
|
}
|
|
|
|
|
|
#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);
|
|
M_SELL_TOTALPRICE = (M_SELL_TOTALTAXPRICE / 1.13).Round(2);
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region 入库数据
|
|
DataRow[] _RECEIVESERVERPART_DataRow = RECEIVESERVERPARTTable.Select("COMMODITY_ID = " +
|
|
_DataRow["COMMODITY_ID"].ToString());
|
|
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 退货数据
|
|
DataRow[] _BACKCOMMODITY_DataRow = BACKCOMMODITYTable.Select("COMMODITY_ID = " +
|
|
_DataRow["COMMODITY_ID"].ToString());
|
|
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 = PREPARECOMMODITYOutTable.Select("COMMODITY_ID = " +
|
|
_DataRow["COMMODITY_ID"].ToString());
|
|
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 = PREPARECOMMODITYInTable.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 = RECEIVECOMMODITYTable.Select("COMMODITY_ID = " +
|
|
_DataRow["COMMODITY_ID"].ToString());
|
|
|
|
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
|
|
|
|
#region 团购
|
|
DataRow[] _GROUPPURCHASE_DataRow = GROUPPURCHASE_DataTable.Select("COMMODITY_ID = " +
|
|
_DataRow["COMMODITY_ID"].ToString());
|
|
if (_GROUPPURCHASE_DataRow.Length > 0)
|
|
{
|
|
_GROUPPURCHASE_COUNT = Convert.ToDouble(_GROUPPURCHASE_DataRow[0][0]);
|
|
_GROUPPURCHASE_AMOUNT = Convert.ToDouble(_GROUPPURCHASE_DataRow[0][1]);
|
|
_GROUPPURCHASE_COST = Convert.ToDouble(_GROUPPURCHASE_DataRow[0][2]);
|
|
}
|
|
#endregion
|
|
|
|
#region 加工
|
|
DataRow[] _PROCESSORDER_DataRow = PROCESSORDER_DataTable.Select("COMMODITY_ID = " +
|
|
_DataRow["COMMODITY_ID"].ToString());
|
|
if (_PROCESSORDER_DataRow.Length > 0)
|
|
{
|
|
_PROCESSORDER_COUNT = Convert.ToDouble(_PROCESSORDER_DataRow[0][0]);
|
|
_PROCESSORDER_AMOUNT = Convert.ToDouble(_PROCESSORDER_DataRow[0][1]);
|
|
_PROCESSORDER_PRICE = Convert.ToDouble(_PROCESSORDER_DataRow[0][2]);
|
|
}
|
|
#endregion
|
|
|
|
#region 报损益流程
|
|
DataRow[] _LOSSPROFITGOODS_DataRow = LOSSPROFITGOODS_DataTable.Select("COMMODITY_ID = " +
|
|
_DataRow["COMMODITY_ID"].ToString());
|
|
if (_LOSSPROFITGOODS_DataRow.Length > 0)
|
|
{
|
|
_LOSSPROFIT_CHECKCOUNT = Convert.ToDouble(_LOSSPROFITGOODS_DataRow[0][0]);
|
|
_LOSSPROFIT_CHECKAMOUNT = Convert.ToDouble(_LOSSPROFITGOODS_DataRow[0][1]);
|
|
_LOSSPROFIT_CHECKPRICE = Convert.ToDouble(_LOSSPROFITGOODS_DataRow[0][2]);
|
|
}
|
|
#endregion
|
|
|
|
#region 本期结存
|
|
//_OVERPLUSCOUNT = Convert.ToDouble(_DataRow["CUROVERPLUSCOUNT"].ToString()).Round(2);
|
|
//DataRow[] _SERVERPARTSTOCK_DataRow = SERVERPARTSTOCK_DataTable.Select(
|
|
// "COMMODITY_ID = " + _DataRow["COMMODITY_ID"].ToString());
|
|
//if (_SERVERPARTSTOCK_DataRow.Length > 0)
|
|
//{
|
|
// if (SERVERPARTSTOCK["PURCHASE_TAXPRICE"] == null)
|
|
// {
|
|
// _OVERPLUS_AMOUNT = Convert.ToDouble(_SERVERPARTSTOCK_DataRow[0][0]).Round(2);
|
|
// }
|
|
// else
|
|
// {
|
|
// _OVERPLUS_AMOUNT = (_OVERPLUSCOUNT *
|
|
// Convert.ToDouble(SERVERPARTSTOCK["PURCHASE_TAXPRICE"])).Round(2);
|
|
// }
|
|
// if (SERVERPARTSTOCK["PURCHASE_PRICE"] == null)
|
|
// {
|
|
// _OVERPLUS_PRICE = (_OVERPLUS_AMOUNT / 1.13).Round(2);
|
|
// }
|
|
// else
|
|
// {
|
|
// _OVERPLUS_PRICE = (_OVERPLUSCOUNT *
|
|
// Convert.ToDouble(SERVERPARTSTOCK["PURCHASE_PRICE"])).Round(2);
|
|
// }
|
|
//}
|
|
//else
|
|
//{
|
|
// _OVERPLUS_AMOUNT = 0;
|
|
// _OVERPLUS_PRICE = 0;
|
|
//}
|
|
#endregion
|
|
|
|
#region 上期结存数据
|
|
DataRow[] _INSALES_STATISTIC_DataRow = INSALES_STATISTICTable.Select("COMMODITY_ID = " +
|
|
_DataRow["COMMODITY_ID"].ToString());
|
|
if (_INSALES_STATISTIC_DataRow.Length > 0)
|
|
{
|
|
M_LAST_OVERPLUSCOUNT = Convert.ToDouble(_INSALES_STATISTIC_DataRow[0]["OVERPLUSCOUNT"]).Round(2);
|
|
M_LAST_OVERPLUSAMOUNT = Convert.ToDouble(_INSALES_STATISTIC_DataRow[0]["OVERPLUS_AMOUNT"]).Round(2);
|
|
M_LAST_OVERPLUSPRICE = Convert.ToDouble(_INSALES_STATISTIC_DataRow[0]["OVERPLUS_PRICE"]).Round(2);
|
|
}
|
|
#endregion
|
|
|
|
string 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,
|
|
_PURCHASE_TAXPRICE, M_PURCHASE_TOTALTAXPRICE,
|
|
_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);
|
|
_list.Add(SQLString);
|
|
|
|
}
|
|
/*else
|
|
{
|
|
_CHECKCOMMODITY.ExecuteNonQuery(string.Format(@"INSERT INTO SALESTORE_STORAGE.T_INSALES (
|
|
CHECKCOMMODITY_ID,CHECKCOMMODITYDETAIL_ID,COMMODITY_ID)
|
|
VALUES ({0},{1},{2})", _CHECKCOMMODITY.CHECKCOMMODITY_ID,
|
|
_DataRow["CHECKCOMMODITYDETAIL_ID"].ToString(), _DataRow["COMMODITY_ID"].ToString()), null);
|
|
}*/
|
|
}
|
|
}
|
|
|
|
|
|
if (_list.Count > 0)
|
|
{
|
|
_OracleHelper.ExecuteSqlTran(_list.ToArray());
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
LogHelper.WriteSendLog(ex.ToString(), DateTime.Now.ToString("yyyyMMdd"));
|
|
throw;
|
|
}
|
|
|
|
_Transaction.Commit();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
LogHelper.WriteSendLog(ex.ToString(), DateTime.Now.ToString("yyyyMMdd"));
|
|
throw;
|
|
}
|
|
|
|
|
|
EndTime.Text = DateTime.Now.ToString();
|
|
}
|
|
#endregion
|
|
}
|
|
}
|