Commit 9d665b84 by guanzhenshan

1、逻辑仓库增加现金流30天的收入和支出,增加净值

parent 447cb3c8
......@@ -57,9 +57,7 @@ namespace Bailun.DC.LogicWareHouse
{
cn.Open();
}
cn.Execute("TRUNCATE dc_skuwarehouse_stock_sales", 20 * 60);
var page = 1;
......@@ -70,8 +68,8 @@ namespace Bailun.DC.LogicWareHouse
while (page == 1 || (resultcount > 0))
{
var strlimit = (((page - 1) * pagesize) + "," + pagesize);
var sql = $@"select t1.bailun_sku,t1.warehouse_code,t4.warehouse_name,t4.hq_type,(t1.usable_stock) usable_stock,(t1.usable_stock*t1.unit_price) amount_stock,(t2.quantity_purchase) quantity_purchase,(t2.quantity_purchase*t1.unit_price) purchase_amount,(t2.quantity_transfer) quantity_transfer,(t2.quantity_transfer*t1.unit_price) amount_transit,(t5.oneday_total_sales) oneday_total_sales,(t5.oneday_total_sales*t1.unit_price) amount_onedaysale,(t5.sevenday_total_sales) sevenday_total_sales,(t5.fourteenday_total_sales) fourteenday_total_sales,(t5.thirtyday_total_sales) thirtyday_total_sales,t6.quantity_transfer as quantity_tuneout_onway,t6.quantity_transfer_delivery as quantity_tuneout_30days,t7.quantity_transfer_inbound as quantity_tunein_30days
from (select t01.bailun_sku,t01.warehouse_code,t01.usable_stock,t02.unit_price from dc_base_stock t01
var sql = $@"select t1.bailun_sku,t1.warehouse_code,t4.warehouse_name,t4.hq_type,(t1.usable_stock) usable_stock,((t1.usable_stock)*t1.unit_price) amount_stock,(t2.quantity_purchase) quantity_purchase,(t2.quantity_purchase*t1.unit_price) purchase_amount,(t2.quantity_transfer) quantity_transfer,(t2.quantity_transfer*t1.unit_price) amount_transit,(t5.oneday_total_sales) oneday_total_sales,(t5.oneday_total_sales*t1.unit_price) amount_onedaysale,(t5.sevenday_total_sales) sevenday_total_sales,(t5.fourteenday_total_sales) fourteenday_total_sales,(t5.thirtyday_total_sales) thirtyday_total_sales,t6.quantity_transfer as quantity_tuneout_onway,t6.quantity_transfer_delivery as quantity_tuneout_30days,t7.quantity_transfer_inbound as quantity_tunein_30days,(t5.thirtyday_total_sales/(t1.usable_stock)) as pin_rate_stock
from (select t01.bailun_sku,t01.warehouse_code,(t01.usable_stock+t01.occupy_stock) as usable_stock,t02.unit_price from dc_base_stock t01
join dc_base_sku t02 on t01.bailun_sku=t02.bailun_sku and t02.company_id=1 order by t01.id
limit {strlimit}) t1
left join dc_daily_transit t2 on t1.warehouse_code=t2.warehouse_code and t1.bailun_sku=t2.bailun_sku and t2.record_time='{DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd")}'
......@@ -112,6 +110,12 @@ namespace Bailun.DC.LogicWareHouse
//半成品销量
UpdateSemiSale();
// 更新缺货数和待发货数据
UpdateOutStockAndNoShipping();
//更新30天现金流
UpdateCash30Days();
//保存每日数据快照
SaleWHDailySnaps();
......@@ -270,19 +274,54 @@ namespace Bailun.DC.LogicWareHouse
}
/// <summary>
/// 更新缺货数
/// 更新缺货数和待发货数据
/// </summary>
private void UpdateOutStock()
private void UpdateOutStockAndNoShipping()
{
var sql = @"update dc_skuwarehouse_stock_sales t1
join dc_mid_transit t2 on (t2.quantity_unshipped>0 or t2.quantity_out_stock>0) and t1.bailun_sku=t2.bailun_sku and t1.warehouse_code=t2.warehouse_code
set t1.noshippingcount=t2.quantity_unshipped,t1.nostockcount=t2.quantity_out_stock";
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{
if (cn.State == System.Data.ConnectionState.Closed)
{
cn.Open();
}
cn.Execute("update dc_skuwarehouse_stock_sales set noshippingcount=0,nostockcount=0");
cn.Execute(sql);
}
}
/// <summary>
/// 更新待发货数
/// 更新30天现金流
/// </summary>
private void UpdateNoShipping()
public void UpdateCash30Days()
{
Console.WriteLine("开始执行更新现金流方法 "+DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{
if (cn.State == System.Data.ConnectionState.Closed)
{
cn.Open();
}
cn.Execute("update dc_skuwarehouse_stock_sales set cash_in_30days=0,cash_out_30days=0,cash_net = 0");
var sql = @"update dc_skuwarehouse_stock_sales t1
join dc_base_stock t2 on (t2.pay_amount_30>0 or t2.income_amount_30>0) and t1.bailun_sku=t2.bailun_sku and t1.warehouse_code=t2.warehouse_code
set t1.cash_in_30days=t2.income_amount_30,t1.cash_out_30days=t2.pay_amount_30,t1.cash_net = t2.income_amount_30-t2.pay_amount_30";
var result = cn.Execute(sql);
Console.WriteLine("更新30天现金流的记录数有:" + result);
}
Console.WriteLine(" 更新现金流方法 已完成 " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
}
/// <summary>
......
......@@ -95,5 +95,25 @@ namespace Bailun.DC.Models.Stock
/// 30天内调入数量
/// </summary>
public int? quantity_tunein_30days { get; set; }
/// <summary>
/// 30天现金流收入
/// </summary>
public decimal? cash_in_30days { get; set; }
/// <summary>
/// 30天现金流支出
/// </summary>
public decimal? cash_out_30days { get; set; }
/// <summary>
/// 30天现金流净值,收入-支出
/// </summary>
public decimal? cash_net { get; set; }
/// <summary>
/// 动销率,动销率=过去一个月卖出的SKU/SKU的库存金额
/// </summary>
public decimal? pin_rate_stock { get; set; }
}
}
......@@ -126,5 +126,24 @@ namespace Bailun.DC.Models.Stock
/// </summary>
public int? quantity_tunein_30days { get; set; }
/// <summary>
/// 30天现金流收入
/// </summary>
public decimal? cash_in_30days { get; set; }
/// <summary>
/// 30天现金流支出
/// </summary>
public decimal? cash_out_30days { get; set; }
/// <summary>
/// 30天现金流净值,收入-支出
/// </summary>
public decimal? cash_net { get; set; }
/// <summary>
/// 动销率,动销率=过去一个月卖出的SKU/SKU的库存金额
/// </summary>
public decimal? pin_rate_stock { get; set; }
}
}
......@@ -55,5 +55,35 @@ namespace Bailun.DC.Models.Warehouse
public DateTime? createtime { get; set; }
/// <summary>
/// 缺货数
/// </summary>
public int? nostockcount { get; set; }
/// <summary>
/// 未发货数
/// </summary>
public int? noshippingcount { get; set; }
/// <summary>
/// 30天现金流收入
/// </summary>
public decimal? cash_in_30days { get; set; }
/// <summary>
/// 30天现金流支出
/// </summary>
public decimal? cash_out_30days { get; set; }
/// <summary>
/// 30天现金流净值,收入-支出
/// </summary>
public decimal? cash_net { get; set; }
/// <summary>
/// 动销率,动销率=过去一个月卖出的SKU/SKU的库存金额
/// </summary>
public decimal? pin_rate_stock { get; set; }
}
}
......@@ -78,7 +78,7 @@ namespace Bailun.DC.Services
{
var sqlparam = new DynamicParameters();
var sqlwhere = " where 1=1 ";
var sql = @"select t1.hq_type,t1.warehouse_code,t1.warehouse_name,sum(t1.usable_stock) usable_stock,sum(t1.amount_stock) amount_stock,sum(t1.quantity_purchase) quantity_purchase,sum(t1.purchase_amount) purchase_amount,sum(t1.quantity_transfer) quantity_transfer,sum(t1.amount_transit) amount_transit,sum(t1.oneday_total_sales) oneday_total_sales,sum(t1.amount_onedaysale) amount_onedaysale,sum(t1.sevenday_total_sales) sevenday_total_sales,sum(t1.fourteenday_total_sales) fourteenday_total_sales,sum(t1.thirtyday_total_sales) thirtyday_total_sales,sum(quantity_tuneout_onway) quantity_tuneout_onway,sum(t1.quantity_tuneout_30days) quantity_tuneout_30days,sum(t1.quantity_tunein_30days) quantity_tunein_30days from dc_skuwarehouse_stock_sales t1 ";
var sql = @"select t1.hq_type,t1.warehouse_code,t1.warehouse_name,sum(t1.usable_stock) usable_stock,sum(t1.amount_stock) amount_stock,sum(t1.quantity_purchase) quantity_purchase,sum(t1.purchase_amount) purchase_amount,sum(t1.quantity_transfer) quantity_transfer,sum(t1.amount_transit) amount_transit,sum(t1.oneday_total_sales) oneday_total_sales,sum(t1.amount_onedaysale) amount_onedaysale,sum(t1.sevenday_total_sales) sevenday_total_sales,sum(t1.fourteenday_total_sales) fourteenday_total_sales,sum(t1.thirtyday_total_sales) thirtyday_total_sales,sum(quantity_tuneout_onway) quantity_tuneout_onway,sum(t1.quantity_tuneout_30days) quantity_tuneout_30days,sum(t1.quantity_tunein_30days) quantity_tunein_30days,sum(t1.nostockcount) as nostockcount,sum(t1.noshippingcount) as noshippingcount,sum(cash_in_30days) as cash_in_30days,sum(cash_out_30days) as cash_out_30days,sum(cash_net) as cash_net from dc_skuwarehouse_stock_sales t1 ";
//var sqlcount = "select t1.warehouse_code from dc_skuwarehouse_stock_sales t1 ";
......@@ -136,7 +136,7 @@ namespace Bailun.DC.Services
{
var sqlparam = new DynamicParameters();
var sqlwhere = " where 1=1 ";
var sql = @"select hq_type,warehouse_code,warehouse_name,sum(usable_stock) usable_stock,sum(amount_stock) amount_stock,sum(quantity_purchase) quantity_purchase,sum(purchase_amount) purchase_amount,sum(quantity_transfer) quantity_transfer,sum(amount_transit) amount_transit,sum(oneday_total_sales) oneday_total_sales,sum(amount_onedaysale) amount_onedaysale,sum(sevenday_total_sales) sevenday_total_sales,sum(fourteenday_total_sales) fourteenday_total_sales,sum(thirtyday_total_sales) thirtyday_total_sales,sum(quantity_tuneout_onway) quantity_tuneout_onway,sum(quantity_tuneout_30days) quantity_tuneout_30days,sum(quantity_tunein_30days) quantity_tunein_30days from dc_skuwarehouse_stock_sales ";
var sql = @"select hq_type,warehouse_code,warehouse_name,sum(usable_stock) usable_stock,sum(amount_stock) amount_stock,sum(quantity_purchase) quantity_purchase,sum(purchase_amount) purchase_amount,sum(quantity_transfer) quantity_transfer,sum(amount_transit) amount_transit,sum(oneday_total_sales) oneday_total_sales,sum(amount_onedaysale) amount_onedaysale,sum(sevenday_total_sales) sevenday_total_sales,sum(fourteenday_total_sales) fourteenday_total_sales,sum(thirtyday_total_sales) thirtyday_total_sales,sum(quantity_tuneout_onway) quantity_tuneout_onway,sum(quantity_tuneout_30days) quantity_tuneout_30days,sum(quantity_tunein_30days) quantity_tunein_30days,sum(nostockcount) as nostockcount,sum(noshippingcount) as noshippingcount,sum(cash_in_30days) as cash_in_30days,sum(cash_out_30days) as cash_out_30days,sum(cash_net) as cash_net from dc_skuwarehouse_stock_sales ";
//var sqlcount = "select t1.warehouse_code from dc_skuwarehouse_stock_sales t1 ";
......@@ -175,7 +175,7 @@ namespace Bailun.DC.Services
{
var sqlparam = new DynamicParameters();
var sqlwhere = " where 1=1 ";
var sql = @"select sum(usable_stock) usable_stock,sum(amount_stock) amount_stock,sum(quantity_purchase) quantity_purchase,sum(purchase_amount) purchase_amount,sum(quantity_transfer) quantity_transfer,sum(amount_transit) amount_transit,sum(oneday_total_sales) oneday_total_sales,sum(amount_onedaysale) amount_onedaysale,sum(sevenday_total_sales) sevenday_total_sales,sum(fourteenday_total_sales) fourteenday_total_sales,sum(thirtyday_total_sales) thirtyday_total_sales,sum(quantity_tuneout_onway) quantity_tuneout_onway,sum(quantity_tuneout_30days) quantity_tuneout_30days,sum(quantity_tunein_30days) quantity_tunein_30days from dc_skuwarehouse_stock_sales ";
var sql = @"select sum(usable_stock) usable_stock,sum(amount_stock) amount_stock,sum(quantity_purchase) quantity_purchase,sum(purchase_amount) purchase_amount,sum(quantity_transfer) quantity_transfer,sum(amount_transit) amount_transit,sum(oneday_total_sales) oneday_total_sales,sum(amount_onedaysale) amount_onedaysale,sum(sevenday_total_sales) sevenday_total_sales,sum(fourteenday_total_sales) fourteenday_total_sales,sum(thirtyday_total_sales) thirtyday_total_sales,sum(quantity_tuneout_onway) quantity_tuneout_onway,sum(quantity_tuneout_30days) quantity_tuneout_30days,sum(quantity_tunein_30days) quantity_tunein_30days,sum(nostockcount) as nostockcount,sum(noshippingcount) as noshippingcount,sum(cash_in_30days) as cash_in_30days,sum(cash_out_30days) as cash_out_30days,sum(cash_net) as cash_net from dc_skuwarehouse_stock_sales ";
if (!string.IsNullOrWhiteSpace(warehousetype))
{
......
......@@ -63,6 +63,8 @@ namespace Bailun.DC.Web.Areas.Reports.Controllers
countM.amount_transit = Math.Round(countM.amount_transit??0, 2, MidpointRounding.AwayFromZero);
countM.purchase_amount = Math.Round(countM.purchase_amount ?? 0, 2, MidpointRounding.AwayFromZero);
//,sum(cash_in_30days) as cash_in_30days,sum(cash_out_30days) as cash_out_30days,sum(cash_net) as cash_net
var list = obj.Select(p => new {
amount_onedaysale = (p.amount_onedaysale??0).ToString("N2"),
amount_stock = p.amount_stock.ToString("N2"),
......@@ -82,7 +84,10 @@ namespace Bailun.DC.Web.Areas.Reports.Controllers
quantity_tuneout_onway = (p.quantity_tuneout_onway??0).ToString("N0"),
quantity_tuneout_30days = (p.quantity_tuneout_30days??0).ToString("N0"),
quantity_tunein_30days = (p.quantity_tunein_30days??0).ToString("N0"),
cash_in_30days = (p.cash_in_30days??0).ToString("N2"),
cash_out_30days = (p.cash_out_30days??0).ToString("N2"),
cash_net = (p.cash_net??0).ToString("N2"),
pin_rate_stock = ((p.thirtyday_total_sales??0/p.usable_stock)*100).ToString("N2")
});
return JsonConvert.SerializeObject(new
......@@ -104,6 +109,10 @@ namespace Bailun.DC.Web.Areas.Reports.Controllers
quantity_tuneout_onway = (countM.quantity_tuneout_onway ?? 0).ToString("N0"),
quantity_tuneout_30days = (countM.quantity_tuneout_30days ?? 0).ToString("N0"),
quantity_tunein_30days = (countM.quantity_tunein_30days ?? 0).ToString("N0"),
cash_in_30days = (countM.cash_in_30days ?? 0).ToString("N2"),
cash_out_30days = (countM.cash_out_30days ?? 0).ToString("N2"),
cash_net = (countM.cash_net ?? 0).ToString("N2"),
pin_rate_stock = ((countM.thirtyday_total_sales ?? 0 / countM.usable_stock) * 100).ToString("N2")
},
isexport = (UserAuthorityServices.checkUserExportAuthority("ExportLogicWarehouse", user.GetUserName())?1:0)
......@@ -232,7 +241,13 @@ namespace Bailun.DC.Web.Areas.Reports.Controllers
p.warehouse_name,
quantity_tuneout_onway = p.quantity_tuneout_onway??0,
quantity_tuneout_30days = p.quantity_tuneout_30days,
quantity_tunein_30days = (p.quantity_tunein_30days??0)
quantity_tunein_30days = (p.quantity_tunein_30days??0),
cash_in_30days = (p.cash_in_30days ?? 0).ToString("N2"),
cash_out_30days = (p.cash_out_30days ?? 0).ToString("N2"),
cash_net = (p.cash_net ?? 0).ToString("N2"),
pin_rate_stock = ((p.pin_rate_stock??0) * 100).ToString("N2")
});
return JsonConvert.SerializeObject(new { total = total, rows = list });
......
......@@ -182,7 +182,11 @@
{ field: 'amount_onedaysale', title: '昨日总销售额', width: '130', sortable: true },
{ field: 'sevenday_total_sales', title: '七天销量', width: '100', sortable: true },
{ field: 'fourteenday_total_sales', title: '十四天销量', width: '120', sortable: true },
{ field: 'thirtyday_total_sales', title: '三十天销量', width: '130', sortable: true }
{ field: 'thirtyday_total_sales', title: '三十天销量', width: '130', sortable: true },
{ field: 'cash_in_30days', title: '30天现金流收入', width: '130', sortable: true, iscount: true },
{ field: 'cash_out_30days', title: '30天现金流支出', width: '130', sortable: true, iscount: true },
{ field: 'cash_net', title: '净值(30d)', width: '130', sortable: true, iscount: true },
{ field: 'pin_rate_stock', title: '动销率(30d)', width: '120', sortable: true, iscount: true }
];
var s = '';
......
......@@ -44,6 +44,7 @@
</div>
</div>
@section css{
<link href="~/css/bootstrap-table-fixed-columns.css" rel="stylesheet" />
<style>
.mules {
white-space: nowrap;
......@@ -53,6 +54,7 @@
</style>
}
@section scripts{
<script src="~/js/bootstrap-table-fixed-columns.js" type="text/javascript"></script>
<script type="text/javascript">
var tb;
$(document).ready(function () {
......@@ -111,9 +113,13 @@
{ field: 'amount_onedaysale', title: '昨日总销售额', width: '130', sortable: true, iscount: true },
{ field: 'sevenday_total_sales', title: '七天销量', width: '100', sortable: true, iscount: true },
{ field: 'fourteenday_total_sales', title: '十四天销量', width: '120', sortable: true, iscount: true },
{ field: 'thirtyday_total_sales', title: '三十天销量', width: '130', sortable: true, iscount: true }
{ field: 'thirtyday_total_sales', title: '三十天销量', width: '130', sortable: true, iscount: true },
{ field: 'cash_in_30days', title: '30天现金流收入', width: '130', sortable: true, iscount: true },
{ field: 'cash_out_30days', title: '30天现金流支出', width: '130', sortable: true, iscount: true },
{ field: 'cash_net', title: '净值(30d)', width: '130', sortable: true, iscount: true },
{ field: 'pin_rate_stock', title: '动销率(30d)', width: '120', sortable: true, iscount: true }
];
var url = '@Url.Content("~/Reports/Warehouse/LogicWarehouseJson")' + '?' + $("#toolbar").serialize();
if (tb == undefined) {
......@@ -137,13 +143,16 @@
$('#btnexport').show();
}
}
});
}, {
fixedcol: true,
fixedcolnum: 1
});
}
else {
tb.bootstrapTable('refresh', { url: url });
}
}
function listwarehouse() {
var type = $('#warehousetype').val();
......
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