Commit 5adb84b9 by guanzhenshan

增加半成品仓库进销存报表,半成品sku进销存报表

parent d75c0559
......@@ -3170,6 +3170,8 @@ group by currency";
#region 进销存
#region 成品仓
/// <summary>
/// 仓库进销存
/// </summary>
......@@ -3180,7 +3182,7 @@ group by currency";
/// <param name="end">期末日期</param>
/// <param name="total">符合条件的记录数</param>
/// <returns></returns>
public List<dc_daily_purchase_sell_stock> ListWHPurchaseSellStock(BtTableParameter parameter, string warehousetype, string warehouse, DateTime start, DateTime end,ref int total)
public List<dc_daily_purchase_sell_stock> ListWHPurchaseSellStock(BtTableParameter parameter, string warehousetype, string warehouse, DateTime start, DateTime end, ref int total)
{
var sqlparam = new DynamicParameters();
var sqlcount = $@"select count(DISTINCT t1.warehouse_code) from dc_daily_purchase_sell_stock t1 ";
......@@ -3189,14 +3191,14 @@ group by currency";
if (!string.IsNullOrEmpty(warehousetype))
{
sql += " join dc_base_warehouse t2 on t1.warehouse_code=t2.warehouse_code and t2.hq_type='"+warehousetype+"'";
sqlcount += " join dc_base_warehouse t2 on t1.warehouse_code=t2.warehouse_code and t2.hq_type='"+warehousetype+"'";
sql += " join dc_base_warehouse t2 on t1.warehouse_code=t2.warehouse_code and t2.hq_type='" + warehousetype + "'";
sqlcount += " join dc_base_warehouse t2 on t1.warehouse_code=t2.warehouse_code and t2.hq_type='" + warehousetype + "'";
//sqlparam.Add("hq_type", warehousetype);
if (!string.IsNullOrEmpty(warehouse))
{
sql += " and t2.warehouse_code='"+warehouse+"'";
sqlcount += " and t2.warehouse_code='"+warehouse+"'";
sql += " and t2.warehouse_code='" + warehouse + "'";
sqlcount += " and t2.warehouse_code='" + warehouse + "'";
//sqlparam.Add("warehouse", warehouse);
}
}
......@@ -3232,7 +3234,7 @@ group by currency";
if (!string.IsNullOrEmpty(parameter.sort))
{
sql += " order by "+parameter.sort+" "+parameter.order;
sql += " order by " + parameter.sort + " " + parameter.order;
}
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
......@@ -3264,7 +3266,7 @@ group by currency";
/// <param name="start">期初日期</param>
/// <param name="end">期末日期</param>
/// <returns></returns>
public dc_daily_purchase_sell_stock ListWHPurchaseSellStockCount(string warehousetype, string warehouse, DateTime start, DateTime end,string sku=null)
public dc_daily_purchase_sell_stock ListWHPurchaseSellStockCount(string warehousetype, string warehouse, DateTime start, DateTime end, string sku = null)
{
var sqlparam = new DynamicParameters();
var sql = $@"select sum(t2.end_onway_count) start_onway_count,sum(t2.end_stock_count) start_stock_count,sum(t2.end_onway_amount) start_onway_amount,sum(t2.end_stock_amount) start_stock_amount,sum(t3.end_onway_count) end_onway_count,sum(t3.end_stock_count) end_stock_count,sum(t3.end_onway_amount) end_onway_amount,sum(t3.end_stock_amount) end_stock_amount,sum(t4.end_stock_amount) as amount,sum(t4.end_stock_count) as count,sum(t3.end_stock_count-t2.end_stock_count) diff_stock_count,sum(t3.end_stock_amount-t2.end_stock_amount) diff_stock_amount,sum(t3.end_onway_count-t2.end_onway_count) diff_onway_count,sum(t3.end_onway_amount-t2.end_onway_amount) diff_onway_amount from (select DISTINCT t1.bailun_sku,t1.warehouse_code,t1.warehouse_name from dc_daily_purchase_sell_stock t1
......@@ -3272,19 +3274,19 @@ group by currency";
if (!string.IsNullOrEmpty(warehousetype))
{
sql += " join dc_base_warehouse t2 on t1.warehouse_code=t2.warehouse_code and t2.hq_type='"+warehousetype+"'";
sql += " join dc_base_warehouse t2 on t1.warehouse_code=t2.warehouse_code and t2.hq_type='" + warehousetype + "'";
//sqlparam.Add("hq_type", warehousetype);
if (!string.IsNullOrEmpty(warehouse))
{
sql += " and t2.warehouse_code='"+warehouse+"'";
sql += " and t2.warehouse_code='" + warehouse + "'";
//sqlparam.Add("warehouse", warehouse);
}
}
if (!string.IsNullOrEmpty(warehouse))
{
sql += $@" where (t1.record_time='{start.ToString("yyyy-MM-dd")}' or t1.record_time='{end.ToString("yyyy-MM-dd")}') {(!string.IsNullOrEmpty(sku)?" and t1.bailun_sku='"+sku+"'":"")}) t1
sql += $@" where (t1.record_time='{start.ToString("yyyy-MM-dd")}' or t1.record_time='{end.ToString("yyyy-MM-dd")}') {(!string.IsNullOrEmpty(sku) ? " and t1.bailun_sku='" + sku + "'" : "")}) t1
left join dc_daily_purchase_sell_stock t2 on t1.bailun_sku=t2.bailun_sku and t1.warehouse_code=t2.warehouse_code and t2.record_time='{start.ToString("yyyy-MM-dd")}' and t2.warehouse_code='{warehouse}'
left join dc_daily_purchase_sell_stock t3 on t1.bailun_sku=t3.bailun_sku and t1.warehouse_code=t3.warehouse_code and t3.record_time='{end.ToString("yyyy-MM-dd")}' and t2.warehouse_code='{warehouse}'";
}
......@@ -3331,7 +3333,7 @@ group by currency";
/// <param name="end">期末日期</param>
/// <param name="total">符合条件的记录数</param>
/// <returns></returns>
public List<dc_daily_purchase_sell_stock> ListSkuPurchaseSellStock(BtTableParameter parameter, string sku, string warehousetype, string warehouse, DateTime start, DateTime end,ref int total)
public List<dc_daily_purchase_sell_stock> ListSkuPurchaseSellStock(BtTableParameter parameter, string sku, string warehousetype, string warehouse, DateTime start, DateTime end, ref int total)
{
var sqlparam = new DynamicParameters();
var sql = $@"select t1.bailun_sku,t4.sku_title_cn,t1.warehouse_code,t1.warehouse_name,t2.end_onway_count as start_onway_count,t2.end_stock_count as start_stock_count,t2.end_onway_amount as start_onway_amount,t2.end_stock_amount as start_stock_amount,t3.end_onway_count,t3.end_stock_count,t3.end_onway_amount,t3.end_stock_amount,(if(t3.end_stock_count is null,0,t3.end_stock_count)-if(t2.end_stock_count is null,0,t2.end_stock_count)) diff_stock_count,(if(t3.end_stock_amount is null,0,t3.end_stock_amount)-if(t2.end_stock_amount is null,0,t2.end_stock_amount)) diff_stock_amount,(if(t3.end_onway_count is null,0,t3.end_onway_count)-if(t2.end_onway_count is null,0,t2.end_onway_count)) diff_onway_count,(if(t3.end_onway_amount is null,0,t3.end_onway_amount)-if(t2.end_onway_amount is null,0,t2.end_onway_amount)) diff_onway_amount,t5.end_stock_amount amount,t5.end_stock_count as count from
......@@ -3344,13 +3346,13 @@ group by currency";
if (!string.IsNullOrEmpty(warehousetype))
{
sql += " join dc_base_warehouse t2 on t1.warehouse_code=t2.warehouse_code and t2.hq_type=@hq_type";
sqlcount += " join dc_base_warehouse t2 on t1.warehouse_code=t2.warehouse_code and t2.hq_type='"+warehousetype+"'";
sqlcount += " join dc_base_warehouse t2 on t1.warehouse_code=t2.warehouse_code and t2.hq_type='" + warehousetype + "'";
sqlparam.Add("hq_type", warehousetype);
if (!string.IsNullOrEmpty(warehouse))
{
sql += " and t2.warehouse_code=@warehouse";
sqlcount += " and t2.warehouse_code='"+warehouse+"'";
sqlcount += " and t2.warehouse_code='" + warehouse + "'";
sqlparam.Add("warehouse", warehouse);
}
}
......@@ -3396,7 +3398,7 @@ group by currency";
tb = "t3.";
}
sql += " order by "+tb+parameter.sort+" "+parameter.order;
sql += " order by " + tb + parameter.sort + " " + parameter.order;
}
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
......@@ -3406,14 +3408,265 @@ group by currency";
cn.Open();
}
total = cn.ExecuteScalar<int>(sqlcount,null, null, 2 * 60);
total = cn.ExecuteScalar<int>(sqlcount, null, null, 2 * 60);
var obj = cn.Query<dc_daily_purchase_sell_stock>(sql+" limit "+((parameter.pageIndex-1)*parameter.limit+","+parameter.limit), sqlparam, null,true, 2 * 60);
var obj = cn.Query<dc_daily_purchase_sell_stock>(sql + " limit " + ((parameter.pageIndex - 1) * parameter.limit + "," + parameter.limit), sqlparam, null, true, 2 * 60);
return obj.ToList();
}
}
#endregion
#region 半成品仓
/// <summary>
/// 仓库进销存
/// </summary>
/// <param name="parameter">分页信息</param>
/// <param name="warehousetype">仓库类型</param>
/// <param name="warehouse">仓库编码</param>
/// <param name="start">期初日期</param>
/// <param name="end">期末日期</param>
/// <param name="total">符合条件的记录数</param>
/// <returns></returns>
public List<dc_semi_daily_purchase_sell_stock> ListSemiWHPurchaseSellStock(BtTableParameter parameter, string warehousetype, string warehouse, DateTime start, DateTime end, ref int total)
{
var sqlparam = new DynamicParameters();
var sqlcount = $@"select count(DISTINCT t1.warehouse_code) from dc_semi_daily_purchase_sell_stock t1 ";
var sql = $@"select t1.warehouse_code,t1.warehouse_name,sum(t2.end_onway_count) start_onway_count,sum(t2.end_stock_count) start_stock_count,sum(t2.end_onway_amount) start_onway_amount,sum(t2.end_stock_amount) start_stock_amount,sum(t3.end_onway_count) end_onway_count,sum(t3.end_stock_count) end_stock_count,sum(t3.end_onway_amount) end_onway_amount,sum(t3.end_stock_amount) end_stock_amount,t4.end_stock_amount as amount,t4.end_stock_count as count,sum(if(t3.end_stock_count is null,0,t3.end_stock_count)-if(t2.end_stock_count is null,0,t2.end_stock_count)) diff_stock_count,sum(if(t3.end_stock_amount is null,0,t3.end_stock_amount)-if(t2.end_stock_amount is null,0,t2.end_stock_amount)) diff_stock_amount,sum(if(t3.end_onway_count is null,0,t3.end_onway_count)-if(t2.end_onway_count is null,0,t2.end_onway_count)) diff_onway_count,sum(if(t3.end_onway_amount is null,0,t3.end_onway_amount)-if(t2.end_onway_amount is null,0,t2.end_onway_amount)) diff_onway_amount from (select DISTINCT t1.bailun_sku,t1.warehouse_code,t1.warehouse_name from dc_semi_daily_purchase_sell_stock t1
";
if (!string.IsNullOrEmpty(warehousetype))
{
sql += " join dc_base_warehouse t2 on t1.warehouse_code=t2.warehouse_code and t2.hq_type='" + warehousetype + "'";
sqlcount += " join dc_base_warehouse t2 on t1.warehouse_code=t2.warehouse_code and t2.hq_type='" + warehousetype + "'";
//sqlparam.Add("hq_type", warehousetype);
if (!string.IsNullOrEmpty(warehouse))
{
sql += " and t2.warehouse_code='" + warehouse + "'";
sqlcount += " and t2.warehouse_code='" + warehouse + "'";
//sqlparam.Add("warehouse", warehouse);
}
}
if (!string.IsNullOrEmpty(warehouse))
{
sql += $@" where t1.record_time='{start.ToString("yyyy-MM-dd")}' or t1.record_time='{end.ToString("yyyy-MM-dd")}') t1
left join dc_semi_daily_purchase_sell_stock t2 on t1.bailun_sku=t2.bailun_sku and t1.warehouse_code=t2.warehouse_code and t2.record_time='{start.ToString("yyyy-MM-dd")}' and t2.warehouse_code='{warehouse}'
left join dc_semi_daily_purchase_sell_stock t3 on t1.bailun_sku=t3.bailun_sku and t1.warehouse_code=t3.warehouse_code and t3.record_time='{end.ToString("yyyy-MM-dd")}' and t3.warehouse_code='{warehouse}'";
}
else
{
sql += $@" where t1.record_time='{start.ToString("yyyy-MM-dd")}' or t1.record_time='{end.ToString("yyyy-MM-dd")}') t1
left join dc_semi_daily_purchase_sell_stock t2 on t1.bailun_sku=t2.bailun_sku and t1.warehouse_code=t2.warehouse_code and t2.record_time='{start.ToString("yyyy-MM-dd")}'
left join dc_semi_daily_purchase_sell_stock t3 on t1.bailun_sku=t3.bailun_sku and t1.warehouse_code=t3.warehouse_code and t3.record_time='{end.ToString("yyyy-MM-dd")}'";
}
sql += $"left join (select t01.bailun_sku,t01.warehouse_code,sum((t01.end_stock_count-t01.start_stock_count)+(t01.end_onway_count-t01.start_onway_count)) end_stock_count,sum((t01.end_stock_amount-t01.start_stock_amount)+(t01.end_onway_amount-t01.start_onway_amount)) end_stock_amount from dc_semi_daily_purchase_sell_stock t01 ";
if (!string.IsNullOrEmpty(warehousetype))
{
sql += " join dc_base_warehouse t02 on t01.warehouse_code=t02.warehouse_code and t02.hq_type='" + warehousetype + "'";
if (!string.IsNullOrEmpty(warehouse))
{
sql += " and t02.warehouse_code='" + warehouse + "'";
}
}
sql += $" where t01.record_time>='{start.ToString("yyyy-MM-dd")}' and t01.record_time<='{end.ToString("yyyy-MM-dd")}' group by t01.bailun_sku,t01.warehouse_code) t4 on t1.bailun_sku=t4.bailun_sku and t4.warehouse_code=t1.warehouse_code";
sql += " group by t1.warehouse_code ";
sqlcount += $" where t1.record_time='{start.ToString("yyyy-MM-dd")}' or t1.record_time='{end.ToString("yyyy-MM-dd")}'";
if (!string.IsNullOrEmpty(parameter.sort))
{
sql += " order by " + parameter.sort + " " + parameter.order;
}
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{
if (cn.State == ConnectionState.Closed)
{
cn.Open();
}
try
{
var obj = cn.Page<dc_semi_daily_purchase_sell_stock>(parameter.pageIndex, parameter.limit, sql, ref total, sqlparam, sqlcount, 2 * 60);
return obj.ToList();
}
catch (Exception ex)
{
throw ex;
}
}
}
/// <summary>
/// 仓库进销存总计
/// </summary>
/// <param name="warehousetype">仓库类型</param>
/// <param name="warehouse">仓库编码</param>
/// <param name="start">期初日期</param>
/// <param name="end">期末日期</param>
/// <returns></returns>
public dc_semi_daily_purchase_sell_stock ListSemiWHPurchaseSellStockCount(string warehousetype, string warehouse, DateTime start, DateTime end, string sku = null)
{
var sqlparam = new DynamicParameters();
var sql = $@"select sum(t2.end_onway_count) start_onway_count,sum(t2.end_stock_count) start_stock_count,sum(t2.end_onway_amount) start_onway_amount,sum(t2.end_stock_amount) start_stock_amount,sum(t3.end_onway_count) end_onway_count,sum(t3.end_stock_count) end_stock_count,sum(t3.end_onway_amount) end_onway_amount,sum(t3.end_stock_amount) end_stock_amount,sum(t4.end_stock_amount) as amount,sum(t4.end_stock_count) as count,sum(t3.end_stock_count-t2.end_stock_count) diff_stock_count,sum(t3.end_stock_amount-t2.end_stock_amount) diff_stock_amount,sum(t3.end_onway_count-t2.end_onway_count) diff_onway_count,sum(t3.end_onway_amount-t2.end_onway_amount) diff_onway_amount from (select DISTINCT t1.bailun_sku,t1.warehouse_code,t1.warehouse_name from dc_semi_daily_purchase_sell_stock t1
";
if (!string.IsNullOrEmpty(warehousetype))
{
sql += " join dc_base_warehouse t2 on t1.warehouse_code=t2.warehouse_code and t2.hq_type='" + warehousetype + "'";
//sqlparam.Add("hq_type", warehousetype);
if (!string.IsNullOrEmpty(warehouse))
{
sql += " and t2.warehouse_code='" + warehouse + "'";
//sqlparam.Add("warehouse", warehouse);
}
}
if (!string.IsNullOrEmpty(warehouse))
{
sql += $@" where (t1.record_time='{start.ToString("yyyy-MM-dd")}' or t1.record_time='{end.ToString("yyyy-MM-dd")}') {(!string.IsNullOrEmpty(sku) ? " and t1.bailun_sku='" + sku + "'" : "")}) t1
left join dc_semi_daily_purchase_sell_stock t2 on t1.bailun_sku=t2.bailun_sku and t1.warehouse_code=t2.warehouse_code and t2.record_time='{start.ToString("yyyy-MM-dd")}' and t2.warehouse_code='{warehouse}'
left join dc_semi_daily_purchase_sell_stock t3 on t1.bailun_sku=t3.bailun_sku and t1.warehouse_code=t3.warehouse_code and t3.record_time='{end.ToString("yyyy-MM-dd")}' and t2.warehouse_code='{warehouse}'";
}
else
{
sql += $@" where (t1.record_time='{start.ToString("yyyy-MM-dd")}' or t1.record_time='{end.ToString("yyyy-MM-dd")}'){(!string.IsNullOrEmpty(sku) ? " and t1.bailun_sku='" + sku + "'" : "")}) t1
left join dc_semi_daily_purchase_sell_stock t2 on t1.bailun_sku=t2.bailun_sku and t1.warehouse_code=t2.warehouse_code and t2.record_time='{start.ToString("yyyy-MM-dd")}'
left join dc_semi_daily_purchase_sell_stock t3 on t1.bailun_sku=t3.bailun_sku and t1.warehouse_code=t3.warehouse_code and t3.record_time='{end.ToString("yyyy-MM-dd")}'";
}
sql += $"left join (select t01.bailun_sku,t01.warehouse_code,sum((t01.end_stock_count-t01.start_stock_count)+(t01.end_onway_count-t01.start_onway_count)) end_stock_count,sum((t01.end_stock_amount-t01.start_stock_amount)+(t01.end_onway_amount-t01.start_onway_amount)) end_stock_amount from dc_semi_daily_purchase_sell_stock t01 ";
if (!string.IsNullOrEmpty(warehousetype))
{
sql += " join dc_base_warehouse t02 on t01.warehouse_code=t02.warehouse_code and t02.hq_type='" + warehousetype + "'";
if (!string.IsNullOrEmpty(warehouse))
{
sql += " and t02.warehouse_code='" + warehouse + "'";
}
}
sql += $" where (t01.record_time>='{start.ToString("yyyy-MM-dd")}' and t01.record_time<='{end.ToString("yyyy-MM-dd")}') {(!string.IsNullOrEmpty(sku) ? " and t01.bailun_sku='" + sku + "'" : "")} group by t01.bailun_sku,t01.warehouse_code) t4 on t1.bailun_sku=t4.bailun_sku and t4.warehouse_code=t1.warehouse_code";
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{
if (cn.State == ConnectionState.Closed)
{
cn.Open();
}
var obj = cn.QueryFirstOrDefault<dc_semi_daily_purchase_sell_stock>(sql, sqlparam, null, 2 * 60);
return obj;
}
}
/// <summary>
/// Sku进销存列表
/// </summary>
/// <param name="parameter">分页信息</param>
/// <param name="sku">sku编码</param>
/// <param name="warehousetype">仓库类型</param>
/// <param name="warehouse">仓库编码</param>
/// <param name="start">期初日期</param>
/// <param name="end">期末日期</param>
/// <param name="total">符合条件的记录数</param>
/// <returns></returns>
public List<dc_semi_daily_purchase_sell_stock> ListSemiSkuPurchaseSellStock(BtTableParameter parameter, string sku, string warehousetype, string warehouse, DateTime start, DateTime end, ref int total)
{
var sqlparam = new DynamicParameters();
var sql = $@"select t1.bailun_sku,t4.sku_title_cn,t1.warehouse_code,t1.warehouse_name,t2.end_onway_count as start_onway_count,t2.end_stock_count as start_stock_count,t2.end_onway_amount as start_onway_amount,t2.end_stock_amount as start_stock_amount,t3.end_onway_count,t3.end_stock_count,t3.end_onway_amount,t3.end_stock_amount,(if(t3.end_stock_count is null,0,t3.end_stock_count)-if(t2.end_stock_count is null,0,t2.end_stock_count)) diff_stock_count,(if(t3.end_stock_amount is null,0,t3.end_stock_amount)-if(t2.end_stock_amount is null,0,t2.end_stock_amount)) diff_stock_amount,(if(t3.end_onway_count is null,0,t3.end_onway_count)-if(t2.end_onway_count is null,0,t2.end_onway_count)) diff_onway_count,(if(t3.end_onway_amount is null,0,t3.end_onway_amount)-if(t2.end_onway_amount is null,0,t2.end_onway_amount)) diff_onway_amount,t5.end_stock_amount amount,t5.end_stock_count as count from
(select DISTINCT t1.bailun_sku,t1.warehouse_code,t1.warehouse_name from dc_semi_daily_purchase_sell_stock t1
";
var sqlcount = $@"select count(*) from (select distinct t1.bailun_sku,t1.warehouse_code from dc_semi_daily_purchase_sell_stock t1 ";
if (!string.IsNullOrEmpty(warehousetype))
{
if (!string.IsNullOrEmpty(warehousetype))
{
sql += " join dc_base_warehouse t2 on t1.warehouse_code=t2.warehouse_code and t2.hq_type=@hq_type";
sqlcount += " join dc_base_warehouse t2 on t1.warehouse_code=t2.warehouse_code and t2.hq_type='" + warehousetype + "'";
sqlparam.Add("hq_type", warehousetype);
if (!string.IsNullOrEmpty(warehouse))
{
sql += " and t2.warehouse_code=@warehouse";
sqlcount += " and t2.warehouse_code='" + warehouse + "'";
sqlparam.Add("warehouse", warehouse);
}
}
}
sql += $" where (t1.record_time='{start.ToString("yyyy-MM-dd")}' or t1.record_time='{end.ToString("yyyy-MM-dd")}') ";
if (!string.IsNullOrEmpty(sku))
{
sql += " and t1.bailun_sku=@sku";
sqlparam.Add("sku", sku);
}
sql += ") t1";
sql += $@" left join dc_semi_daily_purchase_sell_stock t2 on t1.bailun_sku=t2.bailun_sku and t1.warehouse_code=t2.warehouse_code and t2.record_time='{start.ToString("yyyy-MM-dd")}'
left join dc_semi_daily_purchase_sell_stock t3 on t1.bailun_sku = t3.bailun_sku and t1.warehouse_code = t3.warehouse_code and t3.record_time = '{end.ToString("yyyy-MM-dd")}'
left join dc_base_sku t4 on t1.bailun_sku = t4.bailun_sku ";
sql += $"left join (select t01.bailun_sku,t01.warehouse_code,sum((t01.end_stock_count-t01.start_stock_count)+(t01.end_onway_count-t01.start_onway_count)) end_stock_count,sum((t01.end_stock_amount-t01.start_stock_amount)+(t01.end_onway_amount-t01.start_onway_amount)) end_stock_amount from dc_semi_daily_purchase_sell_stock t01 ";
if (!string.IsNullOrEmpty(warehousetype))
{
sql += " join dc_base_warehouse t02 on t01.warehouse_code=t02.warehouse_code and t02.hq_type='" + warehousetype + "'";
if (!string.IsNullOrEmpty(warehouse))
{
sql += " and t02.warehouse_code='" + warehouse + "'";
}
}
sql += $" where (t01.record_time>='{start.ToString("yyyy-MM-dd")}' and t01.record_time<='{end.ToString("yyyy-MM-dd")}') {(!string.IsNullOrEmpty(sku) ? " and t01.bailun_sku='" + sku + "'" : "")} group by t01.bailun_sku,t01.warehouse_code) t5 on t1.bailun_sku=t5.bailun_sku and t5.warehouse_code=t1.warehouse_code";
sqlcount += $" where t1.record_time='{start.ToString("yyyy-MM-dd")}' or t1.record_time='{end.ToString("yyyy-MM-dd")}' {(!string.IsNullOrEmpty(sku) ? " and t1.bailun_sku='" + sku + "'" : "")}) as tb";
if (!string.IsNullOrEmpty(parameter.sort))
{
var tb = "";
if (parameter.sort.IndexOf("start") >= 0)
{
tb = "t2.";
}
else if (parameter.sort.IndexOf("end") >= 0)
{
tb = "t3.";
}
sql += " order by " + tb + parameter.sort + " " + parameter.order;
}
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{
if (cn.State == ConnectionState.Closed)
{
cn.Open();
}
total = cn.ExecuteScalar<int>(sqlcount, null, null, 2 * 60);
var obj = cn.Query<dc_semi_daily_purchase_sell_stock>(sql + " limit " + ((parameter.pageIndex - 1) * parameter.limit + "," + parameter.limit), sqlparam, null, true, 2 * 60);
return obj.ToList();
}
}
#endregion
#endregion
......
......@@ -1074,6 +1074,23 @@ namespace Bailun.DC.Services
}
}
/// <summary>
/// 半成品仓库列表
/// </summary>
/// <returns></returns>
public List<Tuple<string, string>> ListSemiWareHouse()
{
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{
if (cn.State == System.Data.ConnectionState.Closed)
{
cn.Open();
}
var obj = cn.Query<dc_semi_daily_purchase_sell_stock>("select warehouse_code,warehouse_name from dc_semi_daily_purchase_sell_stock group by warehouse_code");
return obj.Select(a => new Tuple<string, string>(a.warehouse_code, a.warehouse_name)).ToList();
}
}
}
}
......@@ -5189,6 +5189,8 @@ namespace Bailun.DC.Web.Areas.Reports.Controllers
#region 进销存报表
#region 成品仓
/// <summary>
/// 仓库进销存报表
/// </summary>
......@@ -5354,6 +5356,182 @@ namespace Bailun.DC.Web.Areas.Reports.Controllers
}
#endregion
#region 半成品仓
/// <summary>
/// 半成品仓库进销存报表
/// </summary>
/// <returns></returns>
public ActionResult SemiWHPurchaseSellStock()
{
return View();
}
/// <summary>
/// 半成品仓库进销存报表
/// </summary>
/// <param name="parameter">分页信息</param>
/// <param name="warehousetype">仓库类型</param>
/// <param name="warehouse">仓库编码</param>
/// <param name="start">期初时间</param>
/// <param name="end">期末时间</param>
/// <returns></returns>
public string SemiWHPurchaseSellStockJson(BtTableParameter parameter, string warehousetype, string warehouse, DateTime start, DateTime end)
{
var total = 0;
var _services = new Services.FinanceReportServices();
var obj = _services.ListSemiWHPurchaseSellStock(parameter, warehousetype, warehouse, start, end, ref total);
var objCount = _services.ListSemiWHPurchaseSellStockCount(warehousetype, warehouse, start, end);
var list = obj.Select(a => new {
a.warehouse_code,
a.warehouse_name,
start_onway_amount = a.start_onway_amount.ToString("N2"),
start_onway_count = a.start_onway_count.ToString("N0"),
start_stock_amount = a.start_stock_amount.ToString("N2"),
start_stock_count = a.start_stock_count.ToString("N0"),
end_onway_amount = a.end_onway_amount.ToString("N2"),
end_onway_count = a.end_onway_count.ToString("N0"),
end_stock_amount = a.end_stock_amount.ToString("N2"),
end_stock_count = a.end_stock_count.ToString("N0"),
diff_onway_amount = (a.end_onway_amount - a.start_onway_amount).ToString("N2"),
diff_onway_count = (a.end_onway_count - a.start_onway_count).ToString("N0"),
diff_stock_amount = (a.end_stock_amount - a.start_stock_amount).ToString("N2"),
diff_stock_count = (a.end_stock_count - a.start_stock_count).ToString("N0"),
count = a.count.ToString("N0"),
amount = a.amount.ToString("N2"),
});
return JsonConvert.SerializeObject(new
{
total = total,
rows = list,
count_row = new
{
warehouse_name = "总计",
start_onway_amount = objCount.start_onway_amount.ToString("N2"),
start_onway_count = objCount.start_onway_count.ToString("N0"),
start_stock_amount = objCount.start_stock_amount.ToString("N2"),
start_stock_count = objCount.start_stock_count.ToString("N0"),
end_onway_amount = objCount.end_onway_amount.ToString("N2"),
end_onway_count = objCount.end_onway_count.ToString("N0"),
end_stock_amount = objCount.end_stock_amount.ToString("N2"),
end_stock_count = objCount.end_stock_count.ToString("N0"),
diff_onway_amount = (objCount.end_onway_amount - objCount.start_onway_amount).ToString("N2"),
diff_onway_count = (objCount.end_onway_count - objCount.start_onway_count).ToString("N0"),
diff_stock_amount = (objCount.end_stock_amount - objCount.start_stock_amount).ToString("N2"),
diff_stock_count = (objCount.end_stock_count - objCount.start_stock_count).ToString("N0"),
count = objCount.count.ToString("N0"),
amount = objCount.amount.ToString("N2"),
}
});
}
/// <summary>
/// 半成品 Sku进销存报表
/// </summary>
/// <returns></returns>
public ActionResult SemiSkuPurchaseSellStock(string warehouse, DateTime? start, DateTime? end)
{
string warehousetype = "";
if (!string.IsNullOrEmpty(warehouse))
{
var objWH = new Services.WareHouseServices().GetWarehouse(warehouse);
if (objWH != null)
{
warehousetype = objWH.hq_type;
}
}
ViewBag.warehousetype = warehousetype;
ViewBag.warehouse = warehouse;
ViewBag.start = start.HasValue ? start.Value.ToString("yyyy-MM-dd") : DateTime.Now.AddDays(-7).ToString("yyyy-MM-dd");
ViewBag.end = end.HasValue ? end.Value.ToString("yyyy-MM-dd") : DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd");
return View();
}
/// <summary>
/// 半成品 Sku进销存报表
/// </summary>
/// <param name="parameter">分页信息</param>
/// <param name="warehousetype">仓库类型</param>
/// <param name="warehouse">仓库编码</param>
/// <param name="start">期初日期</param>
/// <param name="end">期末日期</param>
/// <returns></returns>
public string SemiSkuPurchaseSellStockJson(BtTableParameter parameter, string sku, string warehousetype, string warehouse, DateTime start, DateTime end)
{
var _service = new Services.FinanceReportServices();
var total = 0;
var obj = _service.ListSemiSkuPurchaseSellStock(parameter, sku, warehousetype, warehouse, start, end, ref total);
var objCount = _service.ListSemiWHPurchaseSellStockCount(warehousetype, warehouse, start, end, sku);
var list = obj.Select(a => new {
a.bailun_sku,
a.sku_title_cn,
a.warehouse_code,
a.warehouse_name,
start_onway_amount = a.start_onway_amount.ToString("N2"),
start_onway_count = a.start_onway_count.ToString("N0"),
start_stock_amount = a.start_stock_amount.ToString("N2"),
start_stock_count = a.start_stock_count.ToString("N0"),
end_onway_amount = a.end_onway_amount.ToString("N2"),
end_onway_count = a.end_onway_count.ToString("N0"),
end_stock_amount = a.end_stock_amount.ToString("N2"),
end_stock_count = a.end_stock_count.ToString("N0"),
diff_onway_amount = (a.end_onway_amount - a.start_onway_amount).ToString("N2"),
diff_onway_count = (a.end_onway_count - a.start_onway_count).ToString("N0"),
diff_stock_amount = (a.end_stock_amount - a.start_stock_amount).ToString("N2"),
diff_stock_count = (a.end_stock_count - a.start_stock_count).ToString("N0"),
count = a.count.ToString("N0"),
amount = a.amount.ToString("N2"),
});
return JsonConvert.SerializeObject(new
{
total = total,
rows = list,
count_row = new
{
warehouse_name = "总计",
start_onway_amount = objCount.start_onway_amount.ToString("N2"),
start_onway_count = objCount.start_onway_count.ToString("N0"),
start_stock_amount = objCount.start_stock_amount.ToString("N2"),
start_stock_count = objCount.start_stock_count.ToString("N0"),
end_onway_amount = objCount.end_onway_amount.ToString("N2"),
end_onway_count = objCount.end_onway_count.ToString("N0"),
end_stock_amount = objCount.end_stock_amount.ToString("N2"),
end_stock_count = objCount.end_stock_count.ToString("N0"),
diff_onway_amount = (objCount.end_onway_amount - objCount.start_onway_amount).ToString("N2"),
diff_onway_count = (objCount.end_onway_count - objCount.start_onway_count).ToString("N0"),
diff_stock_amount = (objCount.end_stock_amount - objCount.start_stock_amount).ToString("N2"),
diff_stock_count = (objCount.end_stock_count - objCount.start_stock_count).ToString("N0"),
count = objCount.count.ToString("N0"),
amount = objCount.amount.ToString("N2"),
}
});
}
#endregion
#endregion
......
......@@ -1395,7 +1395,23 @@ namespace Bailun.DC.Web.Areas.Reports.Controllers
#endregion
/// <summary>
/// 半成品仓库列表
/// </summary>
/// <returns></returns>
[HttpPost]
public JsonResult SemiWarehouse()
{
var obj = new Services.WareHouseServices().ListSemiWareHouse();
var list = obj.Select(a => new {
warehouse_code = a.Item1,
warehouse_name = a.Item2
});
return Json(list);
}
}
class SkuCategory_Col
......
@{
ViewData["Title"] = "半成品SKU进销存";
Layout = "~/Pages/Shared/_MainLayout.cshtml";
ViewBag.Nav = new string[] { "财务报表", "半成品SKU进销存" };
}
<div class="row">
<div class="col-sm-12">
<div class="alert alert-warning">
说明:差异=期末-期初
</div>
<div class="ibox-content m-b-sm border-bottom">
<form id="toolbar">
<div class="form-inline" style="line-height:40px;">
<div class="form-group" style="display:none;">
<label>仓库类型:</label>
<select id="warehousetype" name="warehousetype" class="form-control">
<option value="">选择仓库类型</option>
<option value="国内仓">国内仓</option>
<option value="海外仓">海外仓</option>
<option value="FBA仓">FBA仓</option>
<option value="第三方仓库">第三方仓库</option>
<option value="半成品仓">半成品仓</option>
<option value="耗材仓">耗材仓</option>
</select>
</div>
<div class="form-group">
<label>仓库:</label>
<select id="warehouse" name="warehouse" class="form-control">
<option value="">请选择仓库</option>
</select>
</div>
<div class="form-group">
<label>日期</label>
<input id="start" name="start" class="form-control" style="width:100px" value="@ViewBag.start" />至
<input id="end" name="end" class="form-control" style="width:100px" value="@ViewBag.end" />
</div>
<div class="form-group">
<label>&nbsp;</label>
<input id="sku" name="sku" class="form-control" style="width:120px" placeholder="sku编码" />
</div>
<div class="form-group">
<label>&nbsp;</label>
<button type="button" class="btn btn-primary" onclick="list();"><i class="fa fa-search"></i>&nbsp;查询</button>
</div>
</div>
</form>
</div>
<div class="ibox-content m-b-sm border-bottom">
<table id="roletable" style="table-layout:fixed;"></table>
</div>
</div>
</div>
@section css{
<style>
.mules {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
</style>
}
@section scripts{
<script type="text/javascript">
var first = true;
var tb;
$(document).ready(function () {
var height = document.body.clientHeight;
$("#roletable").attr("data-height", (height - 160));
laydate.render({ elem: '#start' });
laydate.render({ elem: '#end' });
listwarehouse();
})
function list(t,w) {
var columns = [
{ field: 'bailun_sku', title: 'Sku', width: '120' },
{
field: 'sku_title_cn', title: 'sku名称', width: '180', formatter: function (idx, data) {
return '<div class="mules" title="' + data.sku_title_cn + '">' + data.sku_title_cn + '</div>';
}
},
{ field: 'warehouse_name', title: '仓库名称', width: '180', iscount: true },
{ field: 'start_stock_amount', title: '期初-在库金额', width: '130', iscount: true, sortable: true },
{ field: 'start_stock_count', title: '期初-在库数量', width: '130', iscount: true, sortable: true },
{ field: 'start_onway_amount', title: '期初-在途金额', width: '130', iscount: true, sortable: true },
{ field: 'start_onway_count', title: '期初-在途数量', width: '130', iscount: true, sortable: true },
{ field: 'end_stock_amount', title: '期末-在库金额', width: '130', iscount: true, sortable: true },
{ field: 'end_stock_count', title: '期末-在库数量', width: '130', iscount: true, sortable: true },
{ field: 'end_onway_amount', title: '期末-在途金额', width: '130', iscount: true, sortable: true },
{ field: 'end_onway_count', title: '期末-在途数量', width: '130', iscount: true, sortable: true },
{ field: 'diff_stock_amount', title: '差异-在库金额', width: '130', iscount: true, sortable: true },
{ field: 'diff_stock_count', title: '差异-在库数量', width: '130', iscount: true, sortable: true },
{ field: 'diff_onway_amount', title: '差异-在途金额', width: '130', iscount: true, sortable: true },
{ field: 'diff_onway_count', title: '差异-在途数量', width: '130', iscount: true, sortable: true },
{ field: 'amount', title: '总金额(差异)', width: '130', iscount: true, sortable: true },
{ field: 'count', title: '总数量(差异)', width: '130', iscount: true, sortable: true }
];
var url = '@Url.Content("~/Reports/Finance/SemiSkuPurchaseSellStockJson")' + '?' + $("#toolbar").serialize();
if (tb == undefined) {
tb = OnlyTable("roletable", columns, url, "", {
showfooter: true, showCount: true
});
}
else {
tb.bootstrapTable('refresh', { url: url });
}
}
function listwarehouse() {
var type = $('#warehousetype').val();
$.submit({
url: '@Url.Content("~/Reports/Warehouse/SemiWarehouse")',
paramData: 'warehousetype=' + type,
type:'POST',
func: function (result) {
if (result != null && result != undefined) {
$('#warehouse').html('<option value="">仓库不限</option>');
for (var i = 0; i < result.length; i++) {
$('#warehouse').append('<option value="' + result[i].warehouse_code + '">' + result[i].warehouse_name + '</option>');
}
if (first) {
$('#warehouse').val('@ViewBag.warehouse');
list();
first = false;
}
}
}
})
}
</script>
}

@{
ViewData["Title"] = "半成品仓库进销存";
Layout = "~/Pages/Shared/_MainLayout.cshtml";
ViewBag.Nav = new string[] { "财务报表", "半成品仓库进销存" };
}
<div class="row">
<div class="col-sm-12">
<div class="alert alert-warning">
说明:差异=期末-期初
</div>
<div class="ibox-content m-b-sm border-bottom">
<form id="toolbar">
<div class="form-inline" style="line-height:40px;">
<div class="form-group" style="display:none;">
<label>仓库类型:</label>
<select id="warehousetype" name="warehousetype" class="form-control">
<option value="">选择仓库类型</option>
<option value="国内仓">国内仓</option>
<option value="海外仓">海外仓</option>
<option value="FBA仓">FBA仓</option>
<option value="第三方仓库">第三方仓库</option>
<option value="半成品仓">半成品仓</option>
<option value="耗材仓">耗材仓</option>
</select>
</div>
<div class="form-group">
<label>仓库:</label>
<select id="warehouse" name="warehouse" class="form-control">
<option value="">请选择仓库</option>
</select>
</div>
<div class="form-group">
<label>日期</label>
<input id="start" name="start" class="form-control" style="width:100px" value="@(DateTime.Now.AddDays(-7).ToString("yyyy-MM-dd"))" />至
<input id="end" name="end" class="form-control" style="width:100px" value="@(DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd"))" />
</div>
<div class="form-group">
<label>&nbsp;</label>
<button type="button" class="btn btn-primary" onclick="list();"><i class="fa fa-search"></i>&nbsp;查询</button>
</div>
</div>
</form>
</div>
<div class="ibox-content m-b-sm border-bottom">
<table id="roletable" style="table-layout:fixed;"></table>
</div>
</div>
</div>
@section css{
<style>
.mules {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
</style>
}
@section scripts{
<script type="text/javascript">
var tb;
$(document).ready(function () {
var height = document.body.clientHeight;
$("#roletable").attr("data-height", (height - 160));
laydate.render({ elem: '#start' });
laydate.render({ elem: '#end' });
list();
listwarehouse();
})
function list() {
var columns = [
{
field: 'warehouse_name', title: '仓库名称', width: '180', iscount: true, formatter: function (idx, data) {
return '<a href="javascript:;" onclick="details(\'' + data.warehouse_code + '\',\'' + data.warehouse_name + '\')">' + data.warehouse_name+'</a>';
}
},
{ field: 'start_stock_amount', title: '期初-在库金额', width: '130', iscount: true, sortable: true },
{ field: 'start_stock_count', title: '期初-在库数量', width: '130', iscount: true, sortable: true },
{ field: 'start_onway_amount', title: '期初-在途金额', width: '130', iscount: true, sortable: true },
{ field: 'start_onway_count', title: '期初-在途数量', width: '130', iscount: true, sortable: true },
{ field: 'end_stock_amount', title: '期末-在库金额', width: '130', iscount: true, sortable: true },
{ field: 'end_stock_count', title: '期末-在库数量', width: '130', iscount: true, sortable: true },
{ field: 'end_onway_amount', title: '期末-在途金额', width: '130', iscount: true, sortable: true },
{ field: 'end_onway_count', title: '期末-在途数量', width: '130', iscount: true, sortable: true },
{ field: 'diff_stock_amount', title: '差异-在库金额', width: '130', iscount: true, sortable: true },
{ field: 'diff_stock_count', title: '差异-在库数量', width: '130', iscount: true, sortable: true },
{ field: 'diff_onway_amount', title: '差异-在途金额', width: '130', iscount: true, sortable: true },
{ field: 'diff_onway_count', title: '差异-在途数量', width: '130', iscount: true, sortable: true },
{ field: 'amount', title: '总金额(差异)', width: '130', iscount: true, sortable: true },
{ field: 'count', title: '总数量(差异)', width: '130', iscount: true, sortable: true }
];
var url = '@Url.Content("~/Reports/Finance/SemiWHPurchaseSellStockJson")' + '?' + $("#toolbar").serialize();
if (tb == undefined) {
tb = OnlyTable("roletable", columns, url, "", {
showfooter: true, showCount: true
});
}
else {
tb.bootstrapTable('refresh', { url: url });
}
}
function listwarehouse() {
var type = $('#warehousetype').val();
$.submit({
url: '@Url.Content("~/Reports/Warehouse/SemiWarehouse")',
paramData: 'warehousetype=' + type,
type:'POST',
func: function (result) {
if (result != null && result != undefined) {
$('#warehouse').html('<option value="">仓库不限</option>');
for (var i = 0; i < result.length; i++) {
$('#warehouse').append('<option value="' + result[i].warehouse_code + '">' + result[i].warehouse_name + '</option>');
}
}
}
})
}
function details(code,name) {
var start = $('#start').val();
var end = $('#end').val();
layer_show(name + ' Sku进销存', '@Url.Content("~/Reports/Finance/SemiSkuPurchaseSellStock?warehouse=")' + code + '&start=' + start + '&end=' + end, '90%', '90%');
}
</script>
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment