Commit a84f7a6a by guanzhenshan

增加半成品采购单下单明细导出

parent d3bd432a
...@@ -133,6 +133,32 @@ namespace Bailun.DC.Services ...@@ -133,6 +133,32 @@ namespace Bailun.DC.Services
#endregion #endregion
#region 半成品采购下单
/// <summary>
/// 获取半成品采购下单明细
/// </summary>
/// <param name="start">创建开始时间</param>
/// <param name="end">创建结束时间</param>
/// <param name="companyid">公司id</param>
/// <returns></returns>
public List<mPurchase> ListSemiPurchase(DateTime start, DateTime end, int companyid)
{
var sql = $@"select t1.warehouse_from_code as warehouse_code,t1.warehouse_from_name as warehouse_name,t1.bailun_sku,t1.quantity_purchase as count,(quantity_purchase*unit_price) as amount,t1.unit_price as price,t1.purchase_id,t1.create_time from dc_semi_purchase_info t1 where create_time>='{start.ToString("yyyy-MM-dd HH:mm:ss")}' and create_time<'{end.ToString("yyyy-MM-dd HH:mm:ss")}' and `status`>-1";
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{
if (cn.State == System.Data.ConnectionState.Closed)
{
cn.Open();
}
var obj = cn.Query<mPurchase>(sql, null, null, true, 2 * 60).AsList();
return obj;
}
}
#endregion
} }
} }
...@@ -858,9 +858,10 @@ namespace Bailun.DC.Services ...@@ -858,9 +858,10 @@ namespace Bailun.DC.Services
/// <param name="parameter">分页信息</param> /// <param name="parameter">分页信息</param>
/// <param name="start">开始日期</param> /// <param name="start">开始日期</param>
/// <param name="end">结束日期</param> /// <param name="end">结束日期</param>
/// <param name="isfinish">是否成品,1:成品,0:半成品</param>
/// <param name="total">符合条件的记录数</param> /// <param name="total">符合条件的记录数</param>
/// <returns></returns> /// <returns></returns>
public List<dc_daily_purchase_sales> ListDailyPurchaseSale(BtTableParameter parameter,string warehousetype , string warehouse_code, DateTime start, DateTime end,string skucategoryids, ref int total) public List<dc_daily_purchase_sales> ListDailyPurchaseSale(BtTableParameter parameter,string warehousetype , string warehouse_code, DateTime start, DateTime end,string skucategoryids,int isfinish, ref int total)
{ {
var sqlparam = new DynamicParameters(); var sqlparam = new DynamicParameters();
var sql = $"select max(t1.day) day,t1.warehouse_code,t1.bailun_sku,t1.warehouse_name,sum(t1.count_sales) count_sales,sum(t1.amount_sales) amount_sales,sum(t1.count_purchase) count_purchase,sum(t1.amount_purchase) amount_purchase,sum(t1.count_putin) count_putin,sum(t1.amount_putin) amount_putin,sum(t1.difference_count) difference_count,sum(t1.difference_amount) difference_amount,sum(t1.diff_putin_count) diff_putin_count,sum(t1.diff_putin_amount) diff_putin_amount from dc_daily_purchase_sales t1 "; var sql = $"select max(t1.day) day,t1.warehouse_code,t1.bailun_sku,t1.warehouse_name,sum(t1.count_sales) count_sales,sum(t1.amount_sales) amount_sales,sum(t1.count_purchase) count_purchase,sum(t1.amount_purchase) amount_purchase,sum(t1.count_putin) count_putin,sum(t1.amount_putin) amount_putin,sum(t1.difference_count) difference_count,sum(t1.difference_amount) difference_amount,sum(t1.diff_putin_count) diff_putin_count,sum(t1.diff_putin_amount) diff_putin_amount from dc_daily_purchase_sales t1 ";
...@@ -882,7 +883,7 @@ namespace Bailun.DC.Services ...@@ -882,7 +883,7 @@ namespace Bailun.DC.Services
} }
sqlwhere += $" where t1.day>='{start.ToString("yyyy-MM-dd")}' and t1.day<'{end.AddDays(1).ToString("yyyy-MM-dd")}' "; sqlwhere += $" where t1.day>='{start.ToString("yyyy-MM-dd")}' and t1.day<'{end.AddDays(1).ToString("yyyy-MM-dd")}' and t1.isfinish={isfinish} ";
if (!string.IsNullOrEmpty(warehouse_code)) if (!string.IsNullOrEmpty(warehouse_code))
{ {
...@@ -894,8 +895,8 @@ namespace Bailun.DC.Services ...@@ -894,8 +895,8 @@ namespace Bailun.DC.Services
sql += sqlwhere; sql += sqlwhere;
sql = "select t01.*,t03.stock_end,t03.stockamount_end,t02.stockamount_start,t02.stock_start from (" + sql + ") t01 left join dc_daily_purchase_sales t02 on t01.warehouse_code=t02.warehouse_code and t01.bailun_sku=t02.bailun_sku and t02.day='"+start.ToString("yyyy-MM-dd")+"'"; sql = "select t01.*,t03.stock_end,t03.stockamount_end,t02.stockamount_start,t02.stock_start from (" + sql + ") t01 left join dc_daily_purchase_sales t02 on t01.warehouse_code=t02.warehouse_code and t01.bailun_sku=t02.bailun_sku and t02.day='"+start.ToString("yyyy-MM-dd")+ "' and t02.isfinish="+isfinish;
sql += " left join dc_daily_purchase_sales t03 on t01.warehouse_code=t03.warehouse_code and t01.bailun_sku=t03.bailun_sku and t03.day='" + end.ToString("yyyy-MM-dd") + "'"; sql += " left join dc_daily_purchase_sales t03 on t01.warehouse_code=t03.warehouse_code and t01.bailun_sku=t03.bailun_sku and t03.day='" + end.ToString("yyyy-MM-dd") + "' and t03.isfinish="+isfinish;
if (!string.IsNullOrEmpty(parameter.sort)) if (!string.IsNullOrEmpty(parameter.sort))
{ {
...@@ -910,7 +911,7 @@ namespace Bailun.DC.Services ...@@ -910,7 +911,7 @@ namespace Bailun.DC.Services
cn.Open(); cn.Open();
} }
total = cn.QueryFirstOrDefault<int>("select count(t1.id) from dc_daily_purchase_sales t1 "+sqlwhere,sqlparam); total = cn.QueryFirstOrDefault<int>("select count(*) from (select count(t1.id) from dc_daily_purchase_sales t1 "+sqlwhere+") tt",sqlparam);
var obj = cn.Query<dc_daily_purchase_sales>(sql, sqlparam,null,true,2*60); var obj = cn.Query<dc_daily_purchase_sales>(sql, sqlparam,null,true,2*60);
return obj.AsList(); return obj.AsList();
} }
...@@ -924,7 +925,7 @@ namespace Bailun.DC.Services ...@@ -924,7 +925,7 @@ namespace Bailun.DC.Services
/// <param name="end">结束日期</param> /// <param name="end">结束日期</param>
/// <param name="total">符合条件的记录数</param> /// <param name="total">符合条件的记录数</param>
/// <returns></returns> /// <returns></returns>
public dc_daily_purchase_sales ListDailyPurchaseSaleCount(string warehousetype, string warehouse_code,DateTime start, DateTime end, string skucategoryids) public dc_daily_purchase_sales ListDailyPurchaseSaleCount(string warehousetype, string warehouse_code,DateTime start, DateTime end, string skucategoryids,int isfinish)
{ {
var sqlparam = new DynamicParameters(); var sqlparam = new DynamicParameters();
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 "; 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 ";
...@@ -944,7 +945,7 @@ namespace Bailun.DC.Services ...@@ -944,7 +945,7 @@ namespace Bailun.DC.Services
} }
} }
var sqlwhere = $" where t1.day>='{start.ToString("yyyy-MM-dd")}' and t1.day<'{end.AddDays(1).ToString("yyyy-MM-dd")}'"; var sqlwhere = $" where t1.day>='{start.ToString("yyyy-MM-dd")}' and t1.day<'{end.AddDays(1).ToString("yyyy-MM-dd")}' and t1.isfinish="+isfinish;
if (!string.IsNullOrEmpty(warehouse_code)) if (!string.IsNullOrEmpty(warehouse_code))
{ {
...@@ -1009,7 +1010,7 @@ namespace Bailun.DC.Services ...@@ -1009,7 +1010,7 @@ namespace Bailun.DC.Services
} }
/// <summary> /// <summary>
/// 按简单分类统计sku每日进销差异 (半成品) /// sku每日进销差异 (半成品)
/// </summary> /// </summary>
/// <param name="warehousetype">仓库类型</param> /// <param name="warehousetype">仓库类型</param>
/// <param name="warehouse_code">仓库编码</param> /// <param name="warehouse_code">仓库编码</param>
......
...@@ -56,6 +56,43 @@ namespace Bailun.DC.Web.Areas.ExportFile.Controllers ...@@ -56,6 +56,43 @@ namespace Bailun.DC.Web.Areas.ExportFile.Controllers
} }
/// <summary>
/// 导出半成品采购单明细
/// </summary>
/// <param name="companyid">公司id</param>
/// <param name="start">下单开始时间</param>
/// <param name="end">下单结束时间</param>
/// <returns></returns>
public ActionResult ExportSemiPurchase(int companyid, DateTime start, DateTime end)
{
var _service = new Services.ExportServices();
var obj = _service.ListSemiPurchase(start, end, companyid);
var colNames = new List<string> {"采购入库单号","Sku","仓库编码", "仓库名称", "下单数量",
"下单金额","采购价","下单时间" };
var list = new List<string>();
foreach (var item in obj)
{
list.Add(item.purchase_id + "|" + item.bailun_sku + "|" + item.warehouse_code + "|" + item.warehouse_name + "|" + item.count + "|" +
item.amount + "|" + item.price + "|" + item.create_time);
}
var guid = Guid.NewGuid().ToString();
var filename = "半成品采购下单明细" + start.ToString("yyyy-MM-dd") + "至" + end.ToString("yyyy-MM-dd");
var filepath = _hostingEnvironment.WebRootPath + "\\Files\\Report\\" + DateTime.Now.ToString("yyyy-MM-dd") + "\\";
ToCSV(list, colNames, guid, filepath);
var ms = new System.IO.MemoryStream();
using (var f = new System.IO.FileStream(filepath + guid + ".csv", System.IO.FileMode.Open))
{
f.CopyTo(ms);
}
ms.Position = 0;
return File(ms, "text/csv", filename + ".csv");
}
} }
} }
\ No newline at end of file
...@@ -572,8 +572,8 @@ namespace Bailun.DC.Web.Areas.Reports.Controllers ...@@ -572,8 +572,8 @@ namespace Bailun.DC.Web.Areas.Reports.Controllers
var _service = new Services.WareHouseServices(); var _service = new Services.WareHouseServices();
var total = 0; var total = 0;
var obj = _service.ListDailyPurchaseSale(parameter,warehousetype,warehouse_code,start, end,skucategoryids, ref total); var obj = _service.ListDailyPurchaseSale(parameter,warehousetype,warehouse_code,start, end,skucategoryids, 1, ref total);
var countM = _service.ListDailyPurchaseSaleCount(warehousetype,warehouse_code, start, end,skucategoryids); var countM = _service.ListDailyPurchaseSaleCount(warehousetype,warehouse_code, start, end,skucategoryids, 1);
var list = obj.Select(a => new var list = obj.Select(a => new
{ {
...@@ -630,6 +630,92 @@ namespace Bailun.DC.Web.Areas.Reports.Controllers ...@@ -630,6 +630,92 @@ namespace Bailun.DC.Web.Areas.Reports.Controllers
return View(); return View();
} }
public ActionResult ListDailySemiPurchaseSales(string colname, int dateWay, int t)
{
var start = DateTime.Now.AddDays(-1);
var end = DateTime.Now.AddDays(-1);
//获取列名上的日期
if (dateWay == 2) //按周
{
var s = colname.Substring(0, 9);
start = DateTime.Parse(DateTime.Now.Year + "-" + s.Substring(0, 2) + "-" + s.Substring(2, 2));
end = DateTime.Parse(DateTime.Now.Year + "-" + s.Substring(5, 2) + "-" + s.Substring(7, 2));
}
else if (dateWay == 3) //按月
{
var s = colname.Substring(0, 2);
start = DateTime.Parse(DateTime.Now.Year + "-" + s + "-01");
end = start.AddMonths(1).AddDays(1);
}
ViewBag.start = start.ToString("yyyy-MM-dd");
ViewBag.end = end.ToString("yyyy-MM-dd");
ViewBag.t = t;
return View();
}
[BailunAuthentication(LoginMode.Enforce)]
public string ListDailySemiPurchaseSalesJson(BtTableParameter parameter, DateTime start, DateTime end, int t)
{
var companyid = HttpContextHelper.Current?.User?.GetCompanyId().ToInt32();
var _service = new Services.WareHouseServices();
var total = 0;
var obj = _service.ListDailyPurchaseSale(parameter, "", "", start, end, "", 0, ref total);
var countM = _service.ListDailyPurchaseSaleCount("", "", start, end, "", 0);
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"),
},
companyid
});
}
/// <summary> /// <summary>
/// 按sku分类汇总每日销进差异报表 /// 按sku分类汇总每日销进差异报表
/// </summary> /// </summary>
......
...@@ -186,7 +186,7 @@ ...@@ -186,7 +186,7 @@
function showdetail(categoryname, colname) { function showdetail(categoryname, colname) {
if (categoryname == '原料') { if (categoryname == '原料') {
alert('原料明细还在完善...'); layer_show(categoryname +' '+ colname+' 的Sku明细', '@Url.Content("~/Reports/Warehouse/ListDailySemiPurchaseSales?")' + '&colname=' + colname + '&dateWay=' + $('#dateWay').val() + '&t=' + $('#t').val(), '90%', '90%');
return false; return false;
} }
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
@{ @{
ViewData["Title"] = "Sku采购发货差异报表"; ViewData["Title"] = "Sku采购发货差异报表";
Layout = "~/Pages/Shared/_MainLayout.cshtml"; Layout = "~/Pages/Shared/_MainLayout.cshtml";
ViewBag.Nav = new string[] { "库存", "Sku采购发货差异报表" }; ViewBag.Nav = new string[] { "财务报表", "Sku采购发货差异报表" };
} }
<div class="row"> <div class="row">
......

@{
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="@(ViewBag.start)" />
<span>至</span>
<input id="end" name="end" type="text" class="form-control" style="width:130px;" value="@(ViewBag.end)" />
</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-warning" onclick="exportlistpurchase()">导出采购下单明细</button>
@*<button type="button" class="btn btn-success" onclick="exportlistputin();">导出入库明细</button>
<button type="button" class="btn btn-success" onclick="exportlistshipping();">导出发货明细</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;
var companyid = 0;
$(document).ready(function () {
laydate.render({ elem: '#start' });
laydate.render({ elem: '#end' });
var height = document.body.clientHeight;
$("#roletable").attr("data-height", (height - 170));
$('#t').val(@(ViewBag.t));
list();
})
function list(cid) {
var columns = [
{
field: 'day', title: '统计日期', width: '110'
},
{
field: 'warehouse_name', title: '仓库名称', width: '200'
},
{
field: 'bailun_sku', title: 'Sku', width: '160', iscount: true, 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: '130', sortable: true, iscount: true },
{ field: 'amount_sales', title: '销售(发货)金额', width: '130', 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/ListDailySemiPurchaseSalesJson")' + '?' + $("#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;
}
}
}
}
companyid = d.companyid;
if (cid != undefined) {
showleft();
}
}
}, {
fixedcol: true,
fixedcolnum:1
});
}
else {
tb.bootstrapTable('refresh', { url: url });
}
}
@*function exportlistputin() {
if (confirm("确定要导出入库明细吗?")) {
window.open('@Url.Content("~/ExportFile/Putin/ExportPurchasePutin")' + '?' + $("#toolbar").serialize() + '&companyid=' + companyid, '_blank');
window.open('@Url.Content("~/ExportFile/Putin/ExportAllotPutin")' + '?' + $("#toolbar").serialize() + '&companyid=' + companyid, '_blank');
}
}
function exportlistshipping() {
if (confirm("确定要导出发货明细吗?")) {
window.open('@Url.Content("~/ExportFile/Shipping/ListShipping")' + '?' + $("#toolbar").serialize() + '&companyid=' + companyid, '_blank');
}
}*@
function exportlistpurchase() {
if (confirm('确定要导出采购下单明细吗?')) {
window.open('@Url.Content("~/ExportFile/Purchase/ExportSemiPurchase")' + '?' + $("#toolbar").serialize() + '&companyid=' + companyid, '_blank');
}
}
</script>
}
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