Commit 305efb2c by guanzhenshan

修改

parent 5099774d
......@@ -80,6 +80,16 @@ namespace Bailun.DC.Models
public decimal amount_putin { get; set; }
/// <summary>
/// 发货数量
/// </summary>
public int count_shipping { get; set; }
/// <summary>
/// 发货金额
/// </summary>
public decimal amount_shipping { get; set; }
/// <summary>
/// 采购下单的差异数
/// </summary>
public int difference_count { get; set; }
......
......@@ -852,12 +852,65 @@ namespace Bailun.DC.Services
}
}
/// <summary>
/// 获取sku+仓库每日采购下单数、入库数、发货数和库存变化报表
/// </summary>
/// <param name="parameter">分页信息</param>
/// <param name="start">开始日期</param>
/// <param name="end">结束日期</param>
/// <param name="total">符合条件的记录数</param>
/// <returns></returns>
public List<dc_daily_purchase_sales> ListDailyPurchaseSale(BtTableParameter parameter, DateTime start, DateTime end,ref int total)
{
var sql = $"select t1.* from dc_daily_purchase_sales t1 ";
var sqlwhere = $" where t1.day='{end.ToString("yyyy-MM-dd")}'";
if (!string.IsNullOrEmpty(parameter.sort))
{
sql += " order by t1."+parameter.sort+" "+parameter.order;
}
sql += sqlwhere;
sql += " limit "+(parameter.pageIndex-1)*parameter.limit+","+parameter.limit;
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{
if (cn.State == System.Data.ConnectionState.Closed)
{
cn.Open();
}
public List<dc_daily_purchase_sales> ListDailyPurchaseSale(BtTableParameter parameter, DateTime start, DateTime end)
total = cn.QueryFirstOrDefault<int>("select count(t1.id) from dc_daily_purchase_sales t1 "+sqlwhere);
var obj = cn.Query<dc_daily_purchase_sales>(sql, null,null,true,2*60);
return obj.AsList();
}
}
/// <summary>
/// 获取sku+仓库每日采购下单数、入库数、发货数和库存变化报表
/// </summary>
/// <param name="parameter">分页信息</param>
/// <param name="start">开始日期</param>
/// <param name="end">结束日期</param>
/// <param name="total">符合条件的记录数</param>
/// <returns></returns>
public dc_daily_purchase_sales ListDailyPurchaseSaleCount(DateTime start, DateTime end)
{
var sql = "select * from dc_daily_purchase_sales ";
var sql = $"select sum(stock_start) stock_start,sum(stockamount_start) stockamount_start,sum(stock_end) stock_end,sum(stockamount_end) stockamount_end,sum(count_sales) count_sales,sum(amount_sales) amount_sales,sum(count_purchase) count_purchase,sum(amount_purchase) amount_purchase,sum(count_putin) count_putin,sum(amount_putin) amount_putin,sum(difference_count) difference_count,sum(difference_amount) difference_amount,sum(diff_putin_count) diff_putin_count,sum(diff_putin_amount) diff_putin_amount from dc_daily_purchase_sales t1 ";
return null;
var sqlwhere = $" where t1.day='{end.ToString("yyyy-MM-dd")}'";
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{
if (cn.State == System.Data.ConnectionState.Closed)
{
cn.Open();
}
var obj = cn.QueryFirstOrDefault<dc_daily_purchase_sales>(sql + sqlwhere,null,null,2*60);
return obj;
}
}
}
......
......@@ -67,7 +67,7 @@ namespace Bailun.DC.SkuDailyPurchaseAndSales
//再保存卖出的
sql = $@"select t1.warehouse_code,t1.warehouse_name,t1.bailun_sku,sum(t1.bailun_sku_quantity_ordered) count,sum(t1.bailun_sku_quantity_ordered*t2.unit_price) amount from dc_base_oms_sku t1
left join dc_base_sku t2 on t1.bailun_sku=t2.bailun_sku
where t1.has_delete=0 and t1.has_scalp=0 and t1.bailun_payment_status!='Canceled' and t1.paid_time>='2019-08-07' and t1.paid_time<'2019-08-08' and t1.bailun_order_status!='Canceled' and t1.warehouse_code!=''
where t1.has_delete=0 and t1.has_scalp=0 and t1.bailun_payment_status!='Canceled' and t1.paid_time>='{start.ToString("yyyy-MM-dd HH:mm:ss")}' and t1.paid_time<'{end.ToString("yyyy-MM-dd HH:mm:ss")}' and t1.bailun_order_status!='Canceled' and t1.warehouse_code!=''
group by t1.warehouse_code,t1.bailun_sku; ";
var objSales = cn.Query<Models.mSkuCount>(sql, null, null, true, 2 * 60).AsList();
......@@ -84,6 +84,12 @@ namespace Bailun.DC.SkuDailyPurchaseAndSales
group by tb.warehouse_code,tb.bailun_sku";
var objPutin = cn.Query<Models.mSkuCount>(sql, null, null, true, 2 * 60).AsList();
sql = $@"select t1.warehouse_code,t1.warehouse_name,t1.bailun_sku,sum(t1.quantity_shipped) count,sum(t1.quantity_shipped*t2.unit_price) amount from dc_base_oms_pick t1
left join dc_base_sku t2 on t1.bailun_sku=t2.bailun_sku
where t1.has_delete=0 and t1.shipping_status='TotalShipping' and t1.shipping_time>='{start.ToString("yyyy-MM-dd HH:mm:ss")}' and t1.shipping_time<'{end.ToString("yyyy-MM-dd HH:mm:ss")}'
group by t1.warehouse_code,t1.bailun_sku";
var objShipping = cn.Query<Models.mSkuCount>(sql, null, null, true, 2 * 60).AsList();
var list = new List<dc_daily_purchase_sales>();
foreach (var item in objStock)
......@@ -142,10 +148,18 @@ namespace Bailun.DC.SkuDailyPurchaseAndSales
m.amount_putin = objPI.amount;
}
//发货数
var objShip = objShipping.Where(a => a.bailun_sku == item.bailun_sku && a.warehouse_code == item.warehouse_code).FirstOrDefault();
if (objShip != null)
{
m.count_shipping = objShip.count;
m.amount_shipping = objShip.amount;
}
m.difference_count = m.count_purchase - m.count_sales;
m.difference_amount = m.amount_purchase - m.amount_sales;
m.diff_putin_count = m.count_putin - m.count_sales;
m.diff_putin_amount = m.amount_putin - m.amount_sales;
m.diff_putin_count = m.count_putin - m.count_shipping;
m.diff_putin_amount = m.amount_putin - m.amount_shipping;
list.Add(m);
}
......
......@@ -147,21 +147,5 @@ namespace Bailun.DC.Web.Areas.Reports.Controllers
return File(ms, "text/csv", filename + ".csv");
}
/// <summary>
/// SKU 的每日采购和发货情况报表
/// </summary>
/// <returns></returns>
public ActionResult ListDailyPurchaseSales()
{
return View();
}
public string ListDailyPurchaseSalesJson(BtTableParameter parameter, DateTime start, DateTime end)
{
//var result = new Services.
return "";
}
}
}
\ No newline at end of file
......@@ -497,6 +497,75 @@ namespace Bailun.DC.Web.Areas.Reports.Controllers
});
}
/// <summary>
/// SKU 的每日采购和发货情况报表
/// </summary>
/// <returns></returns>
public ActionResult ListDailyPurchaseSales()
{
return View();
}
/// <summary>
/// SKU 的每日采购和发货情况报表
/// </summary>
/// <param name="parameter"></param>
/// <param name="start"></param>
/// <param name="end"></param>
/// <param name="t"></param>
/// <returns></returns>
public string ListDailyPurchaseSalesJson(BtTableParameter parameter, DateTime start, DateTime end,int t)
{
var _service = new Services.WareHouseServices();
var total = 0;
var obj = _service.ListDailyPurchaseSale(parameter, start, end, ref total);
var countM = _service.ListDailyPurchaseSaleCount(start, end);
var list = obj.Select(a => new
{
day = a.day.ToString("yyyy-MM-dd"),
//amount_purchase = a.amount_purchase.ToString("N2"),
//amount_putin = a.amount_putin.ToString("N2"),
amount_sales = a.amount_sales.ToString("N2"),
a.bailun_sku,
//a.count_purchase,
//a.count_putin,
a.count_sales,
stockamount_end = a.stockamount_end.ToString("N2"),
stockamount_start = a.stockamount_start.ToString("N2"),
a.stock_end,
a.stock_start,
a.warehouse_code,
a.warehouse_name,
count_purchase = t==1?a.count_purchase:a.count_putin,
amount_purchase = (t == 1 ? a.amount_purchase : a.amount_putin).ToString("N2"),
diff_count = t == 1 ? a.difference_count : a.diff_putin_count,
diff_amount = (t == 1 ? a.difference_amount : a.diff_putin_amount).ToString("N2"),
});
return JsonConvert.SerializeObject(new { total = total, rows = list,
count_row = new
{
bailun_sku = "总计",
amount_sales = countM.amount_sales.ToString("N2"),
countM.count_sales,
stockamount_end = countM.stockamount_end.ToString("N2"),
stockamount_start = countM.stockamount_start.ToString("N2"),
countM.stock_end,
countM.stock_start,
count_purchase = t == 1 ? countM.count_purchase : countM.count_putin,
amount_purchase = (t == 1 ? countM.amount_purchase : countM.amount_putin).ToString("N2"),
diff_count = t == 1 ? countM.difference_count : countM.diff_putin_count,
diff_amount = (t == 1 ? countM.difference_amount : countM.diff_putin_amount).ToString("N2"),
}
});
}
#region 利润
/// <summary>
......

@{
ViewData["Title"] = "Sku采购发货差异报表";
Layout = "~/Pages/Shared/_MainLayout.cshtml";
ViewBag.Nav = new string[] { "库存", "Sku采购发货差异报表" };
}
<div class="row">
<div class="col-sm-12">
<div class="ibox-content m-b-sm border-bottom">
<form id="toolbar">
<div class="form-inline" style="line-height:40px;">
<div class="form-group">
<label>统计类型:</label>
<select id="t" name="t" class="form-control">
<option value="1">按采购下单</option>
<option value="2">按入库</option>
</select>
</div>
<div class="form-group">
<label>统计时间</label>
<input id="start" name="start" type="text" class="form-control" style="width:130px;" value="@(DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd"))" />
<span>至</span>
<input id="end" name="end" type="text" class="form-control" style="width:130px;" 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>
@*<button type="button" class="btn btn-success" onclick="exportlist();">导出</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{
<link href="~/css/bootstrap-table-fixed-columns.css" rel="stylesheet" />
<style>
.mules {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
</style>
}
@section scripts{
<script src="~/js/bootstrap-table-fixed-columns.js" type="text/javascript"></script>
<script type="text/javascript">
var tb;
$(document).ready(function () {
laydate.render({ elem: '#start' });
laydate.render({ elem: '#end' });
var height = document.body.clientHeight;
$("#roletable").attr("data-height", (height - 170));
list();
})
function list() {
var columns = [
{
field: 'day', title: '统计日期', width: '110'
},
{
field: 'warehouse_name', title: '仓库名称', width: '200'
},
{
field: 'bailun_sku', title: 'Sku', width: '160', formatter: function (idx, data) {
return '<div class="mules" title="' + data.bailun_sku + '">' + data.bailun_sku+'</div>';
}
},
{ field: 'stock_start', title: '期初库存', width: '100' },
{ field: 'stockamount_start', title: '期初库存金额', width: '130' },
{ field: 'count_purchase', title: '采购(入库)数', width: '130', sortable: true, iscount: true },
{ field: 'amount_purchase', title: '采购(入库)金额', width: '130', sortable: true, iscount: true },
{ field: 'count_sales', title: '销售数', width: '100', sortable: true, iscount: true },
{ field: 'amount_sales', title: '销售金额', width: '120', sortable: true, iscount: true },
{ field: 'diff_count', title: '差异数', width: '100', sortable: true, iscount: true },
{ field: 'diff_amount', title: '差异金额', width: '110', sortable: true, iscount: true },
{ field: 'stock_end', title: '期末库存', width: '100', sortable: true, iscount: true },
{ field: 'stockamount_end', title: '期末库存金额', width: '130', sortable: true, iscount: true }
];
var url = '@Url.Content("~/Reports/Warehouse/ListDailyPurchaseSalesJson")' + '?' + $("#toolbar").serialize();
if (tb == undefined) {
tb = OnlyTable("roletable", columns, url, "", {
showfooter: true, loadsuccess: function (d) {
//替换汇总行的相关列值
var tr = $('.fixed-table-footer').find('tr');
for (var c in columns) {
var key = columns[c].field;
if (columns[c].iscount) {
for (var v in d.count_row) {
if (key == v) {
tr.find('td').eq(c).children('div').first().html(d.count_row[v]);
break;
}
}
}
}
}
}, {
fixedcol: true,
fixedcolnum:1
});
}
else {
tb.bootstrapTable('refresh', { url: url });
}
}
function exportlist() {
if (confirm("确定要导出吗?")) {
window.open('@Url.Content("~/Reports/Orders/ExportEbayOrders")' + '?' + $("#toolbar").serialize(), '_blank');
}
}
</script>
}
......@@ -115,6 +115,9 @@
<li>
<a class="J_menuItem" href="@Url.Content("~/Reports/Warehouse/WarehouseRedundancy")" data-index="0">仓库库存分析报表</a>
</li>
<li>
<a class="J_menuItem" href="@Url.Content("~/Reports/Warehouse/ListDailyPurchaseSales")" data-index="0">SKU采购销售差异报表</a>
</li>
</ul>
</li>
<li>
......
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