Commit 664109ac by guanzhenshan

资产负债表增加手工导入明细功能

parent 6d388260
using System;
using System.Collections.Generic;
using System.Text;
namespace Bailun.DC.Models
{
/// <summary>
/// 资产负债表导入明细数据表
/// </summary>
public class dc_balance_sheet_subdetail
{
public int id { get; set; }
/// <summary>
/// 类型
/// </summary>
public string type { get; set; }
/// <summary>
/// 类型说明
/// </summary>
public string type_note { get; set; }
/// <summary>
/// 统计日期
/// </summary>
public DateTime day { get; set; }
/// <summary>
/// 来源
/// </summary>
public string fromsource { get; set; }
/// <summary>
/// 金额类型或名称
/// </summary>
public string detailname { get; set; }
/// <summary>
/// 金额
/// </summary>
public decimal amount { get; set; }
/// <summary>
/// 备注1
/// </summary>
public string note1 { get; set; }
/// <summary>
/// 备注2
/// </summary>
public string note2 { get; set; }
/// <summary>
/// 备注3
/// </summary>
public string note3 { get; set; }
/// <summary>
/// 备注4
/// </summary>
public string note4 { get; set; }
/// <summary>
/// 备注5
/// </summary>
public string note5 { get; set; }
/// <summary>
///
/// </summary>
public DateTime createtime { get; set; }
/// <summary>
///
/// </summary>
public int createuserid { get; set; }
/// <summary>
///
/// </summary>
public string createusername { get; set; }
}
}
using System;
using System.Collections.Generic;
using System.Text;
using Dapper;
using MySql.Data.MySqlClient;
using Bailun.DC.Common;
using Bailun.DC.Models;
namespace Bailun.DC.Services
{
public class BalanceSheetServices
{
/// <summary>
/// 获取资产负债表导入表格的汇总金额
/// </summary>
/// <param name="type">金额类型</param>
/// <param name="day">统计日期</param>
/// <returns></returns>
public decimal GetCount(string type, DateTime day)
{
var sql = $"select sum(amount) amount from dc_balance_sheet_subdetail where type='{type}' and day='{day.ToString("yyyy-MM-dd")}'";
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{
if (cn.State == System.Data.ConnectionState.Closed)
{
cn.Open();
}
return cn.QueryFirstOrDefault<decimal?>(sql)??0;
}
}
/// <summary>
/// 获取资产负债表导入表格的列表
/// </summary>
/// <param name="type"></param>
/// <param name="day"></param>
/// <returns></returns>
public List<dc_balance_sheet_subdetail> List(string type, DateTime day,BtTableParameter parameter,ref int total)
{
var sql = $"select * from dc_balance_sheet_subdetail where type='{type}' and day='{day.ToString("yyyy-MM-dd")}'";
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{
if (cn.State == System.Data.ConnectionState.Closed)
{
cn.Open();
}
var obj = cn.Page<dc_balance_sheet_subdetail>(parameter.pageIndex,parameter.limit,sql,ref total).AsList();
return obj;
}
}
/// <summary>
/// 新增资产负债表导入表格数据
/// </summary>
/// <param name="m"></param>
/// <returns></returns>
public int Add(dc_balance_sheet_subdetail m)
{
try
{
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{
if (cn.State == System.Data.ConnectionState.Closed)
{
cn.Open();
}
var result = cn.Insert<dc_balance_sheet_subdetail>(m);
return result ?? 0;
}
}
catch (Exception ex)
{
return 0;
}
}
public int AddRang(List<dc_balance_sheet_subdetail> list)
{
var result = 0;
foreach (var item in list)
{
result += Add(item);
}
return result;
}
}
}
......@@ -970,7 +970,7 @@ namespace Bailun.DC.Services
/// <param name="currency">币种</param>
/// <param name="day">销售日期</param>
/// <returns></returns>
public dc_platform_balance GetPlatformBalance(string platform, string currency, DateTime day)
public dc_platform_balance GetPlatformBalance(string platform, string currency, DateTime day,string account)
{
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{
......@@ -979,7 +979,7 @@ namespace Bailun.DC.Services
cn.Open();
}
var obj = cn.QueryFirstOrDefault<dc_platform_balance>($"select * from dc_platform_balance where platformcode='{platform}' and currency='{currency}' and day='{day.ToString("yyyy-MM-dd")}' and delstatus=0");
var obj = cn.QueryFirstOrDefault<dc_platform_balance>($"select * from dc_platform_balance where account='{account}' and platformcode='{platform}' and currency='{currency}' and day='{day.ToString("yyyy-MM-dd")}' and delstatus=0");
return obj;
}
......@@ -1798,11 +1798,12 @@ namespace Bailun.DC.Services
var sql = $"select sum(case when platform != 'Ebay' then amount_end else 0 end) - sum(case when platform = 'Ebay' then amount_end else 0 end) as amount from dc_daily_receivable where day = '{date.ToString("yyyy-MM-dd")}'";
var objRec = cn.QueryFirstOrDefault<decimal?>(sql);
sql = $"select sum((amount - ifnull(had_pay, 0) + ifnull(compensate, 0)) * to_rmb_rate) from dc_daily_fee where recoed_time = '{date.ToString("yyyy-MM-dd")}' and company_value in (53,3,5,60,66,59,50,8,1,61,2,70)";
var objBorr = cn.QueryFirstOrDefault<decimal?>(sql);
//sql = $"select sum((amount - ifnull(had_pay, 0) + ifnull(compensate, 0)) * to_rmb_rate) from dc_daily_fee where recoed_time = '{date.ToString("yyyy-MM-dd")}' and company_value in (53,3,5,60,66,59,50,8,1,61,2,70)";
//var objBorr = cn.QueryFirstOrDefault<decimal?>(sql);
var objHander = new BalanceSheetServices().GetCount("accounts_receivable_import", date);
return new Tuple<decimal, decimal>(objRec ?? 0, objBorr ?? 0);
return new Tuple<decimal, decimal>(objRec ?? 0, objHander);
}
}
......
......@@ -211,6 +211,9 @@ namespace Bailun.DC.Web.Areas.Reports.Controllers
m.ismark = 2;
}
}
}
......@@ -311,8 +314,8 @@ namespace Bailun.DC.Web.Areas.Reports.Controllers
m.withdraw_amount = m.withdraw_amount ?? 0;
m.platform_balance = m.platform_balance ?? 0;
m.logistics_prepayment = m.logistics_prepayment ?? 0;
m.finished_prepayment = m.finished_prepayment ?? 0;
m.semi_prepayment = m.semi_prepayment ?? 0;
m.finished_prepayment = -(m.finished_prepayment ?? 0);
m.semi_prepayment = -(m.semi_prepayment ?? 0);
m.fba_inventory_amount = m.fba_inventory_amount ?? 0;
m.not_fba_inventory_amount = m.not_fba_inventory_amount ?? 0;
......@@ -1545,7 +1548,8 @@ namespace Bailun.DC.Web.Areas.Reports.Controllers
a.bank_card,
a.bank_card_user,
balance_rmb = a.balance_rmb.ToString("N2"),
statistical_time = a.statistical_time.ToString("yyyy-MM-dd")
statistical_time = a.statistical_time.ToString("yyyy-MM-dd"),
});
return JsonConvert.SerializeObject(new {total=total,rows=list});
......@@ -1564,12 +1568,12 @@ namespace Bailun.DC.Web.Areas.Reports.Controllers
var obj = _services.ListBankBalance(request, date, paycompanyid, ref total);
var colNames = new List<string> {"银行名称","银行卡号","持卡人", "帐号余额", "日期"};
var colNames = new List<string> {"付款主体","银行名称","银行卡号","持卡人", "帐号余额", "日期"};
var list = new List<string>();
foreach (var item in obj)
{
list.Add(item.bank_name + "|" + item.bank_card + "|" + item.bank_card_user + "|" + item.balance_rmb.ToString("N2") + "|" + item.statistical_time.ToString("yyyy-MM-dd")
list.Add(item.company_name+"|"+item.bank_name + "|" + item.bank_card + "|" + item.bank_card_user + "|" + item.balance_rmb.ToString("N2") + "|" + item.statistical_time.ToString("yyyy-MM-dd")
);
}
......@@ -3341,6 +3345,192 @@ namespace Bailun.DC.Web.Areas.Reports.Controllers
return View();
}
public ActionResult BalanceSheetSubDetail(string type, DateTime day)
{
ViewBag.type = type;
ViewBag.day = day.ToString("yyyy-MM-dd");
return View();
}
/// <summary>
/// 资产负债表手工导入明细数据
/// </summary>
/// <param name="parameter"></param>
/// <param name="type"></param>
/// <param name="day"></param>
/// <returns></returns>
[BailunAuthentication(LoginMode.Enforce)]
public string ListBalanceSheetSubDetailJson(BtTableParameter parameter,string type, DateTime day)
{
var user = HttpContextHelper.Current?.User;
var total = 0;
var _service = new Services.BalanceSheetServices();
var obj = _service.List(type, day,parameter,ref total);
var objCount = _service.GetCount(type, day);
var list = obj.Select(a => new {
a.fromsource,
a.detailname,
a.amount,
day = a.day.ToString("yyyy-MM-dd"),
a.note1,
a.note2,
a.note3,
a.note4,
a.note5
});
return JsonConvert.SerializeObject(new
{
total = total,
rows = list,
count_row = new
{
fromsource = "总计",
amount = objCount,
},
uid = user != null ? user.GetUid() : 0,
username = user != null ? user.GetUserName() : ""
});
}
/// <summary>
/// 导入资产负债表手工数据
/// </summary>
/// <param name="type"></param>
/// <returns></returns>
public ActionResult UploadBalanceSheetSubDetail(string type,string typename,int uid,string username)
{
if (Request.Form.Files.Count == 0)
{
return Json(new
{
success = false,
msg = "请上传文件!"
});
}
var file = Request.Form.Files[0];
Dictionary<string, DataTable> dic = Base.NpolHelper.ExcelToDataTable(file.OpenReadStream(), file.FileName, true);
if (dic.Count > 0)
{
var tb = dic.FirstOrDefault();
var list = new List<dc_balance_sheet_subdetail>();
var service = new Services.BalanceSheetServices();
for (var i = 0; i < tb.Value.Rows.Count; i++)
{
var row = tb.Value.Rows[i];
try
{
var day = row["日期"].ToString();
var source = row["来源"].ToString();
if (string.IsNullOrWhiteSpace(day) || string.IsNullOrWhiteSpace(source))
{
continue;
}
var detailname = row["类型/名称"].ToString();
var amount = row["金额"].ToString();
if (string.IsNullOrWhiteSpace(detailname))
{
return Json(new
{
success = false,
msg = "类型/名称不能为空!",
});
}
if (string.IsNullOrWhiteSpace(amount))
{
return Json(new
{
success = false,
msg = "金额不能为空!",
});
}
decimal _amount = 0;
decimal.TryParse(amount, out _amount);
if (_amount == 0)
{
return Json(new
{
success = false,
msg = "金额不能为0!",
});
}
var note1 = row["备注1"].ToString();
var note2 = row["备注2"].ToString();
var note3 = row["备注3"].ToString();
var note4 = row["备注4"].ToString();
var note5 = row["备注5"].ToString();
list.Add(new dc_balance_sheet_subdetail {
amount = _amount,
fromsource = source,
detailname = detailname,
day = DateTime.Parse(day),
note1 = note1,
note2 = note2,
note3 = note3,
note4 = note4,
note5 = note5,
createtime = DateTime.Now,
createuserid = uid,
createusername = username,
type = type,
type_note = "",
});
}
catch (Exception ex)
{
return Json(new
{
success = false,
msg = "导入失败,异常信息:" + ex.Message
});
}
}
if (list.Count == 0)
{
return Json(new
{
success = false,
msg = "表格没有数据。",
});
}
var result = service.AddRang(list);
return Json(new
{
success = result>0,
msg = ""
});
}
else
{
return Json(new
{
success = false,
msg = "请上传文件"
});
}
}
#endregion
#region 平台余额
......@@ -3437,6 +3627,7 @@ namespace Bailun.DC.Web.Areas.Reports.Controllers
try
{
var platformcode = row["平台名称"].ToString();
var account = row["帐号"].ToString();
if (string.IsNullOrEmpty(platformcode))
{
......@@ -3464,6 +3655,15 @@ namespace Bailun.DC.Web.Areas.Reports.Controllers
});
}
if (string.IsNullOrWhiteSpace(account))
{
return Json(new
{
success = false,
msg = "帐号不能为空!"
});
}
var objplatform = service.GetPlatformByName(platformcode);
if (objplatform == null)
{
......@@ -3483,7 +3683,7 @@ namespace Bailun.DC.Web.Areas.Reports.Controllers
listRate.Add(rate);
}
var m = new Services.FinanceReportServices().GetPlatformBalance(platformcode, currency, day);
var m = new Services.FinanceReportServices().GetPlatformBalance(platformcode, currency, day,account);
//区分销售和财务
if ((row["平台每日到账额"].ToString() == "")) //销售
......@@ -3516,7 +3716,7 @@ namespace Bailun.DC.Web.Areas.Reports.Controllers
list.Add(new dc_platform_balance
{
id= (m!=null?m.id:0),
account = "",
account = account,
currency = currency,
amount = amount,
exchangerate = rate.Item2,
......@@ -3559,7 +3759,7 @@ namespace Bailun.DC.Web.Areas.Reports.Controllers
list.Add(new dc_platform_balance {
id = (m!=null?m.id:0),
account = "",
account = account,
currency = currency,
amount = (m!=null?m.amount:0),
amount_rmb = (m!=null?m.amount_rmb:0),
......

@{
ViewData["Title"] = "手工导入";
Layout = "~/Pages/Shared/_MainLayout.cshtml";
}
<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>
<input id="day" name="day" class="form-control" style="width:120px;" value="@(ViewBag.day)" />
</div>
<div class="form-group">
<button type="button" class="btn btn-success" onclick="list();">查询</button>
<button id="btn_Upload" class="btn btn-success">导入</button>
<a id="btn_UpdateTemplate" class="btn btn-default" href="@Url.Content("~/templatefile/balance_template.xlsx")" target="_blank">下载导入模版</a>
</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="~/js/webuploader-0.1.5/webuploader.css" rel="stylesheet" />
<style>
.webuploader-pick {
position: relative;
display: block;
cursor: pointer;
background: none;
padding: 0px;
color: #fff;
text-align: center;
border-radius: 3px;
overflow: hidden;
}
.webuploader-container {
background-color: cornflowerblue !important;
}
</style>
}
@section scripts{
<script src="~/js/webuploader-0.1.5/webuploader.min.js"></script>
<script>
var BASE_URL = '@(Url.Content("~/js/webuploader-0.1.5/"))';
var tb;
$(document).ready(function () {
var height = document.body.clientHeight;
$("#roletable").attr("data-height", (height - 100));
laydate.render({ elem: '#day' });
list();
})
function list() {
var day = $('#day').val();
if (day == '') {
alert('请选择日期');
return false;
}
var columns = [
{ field: 'fromsource', title: '来源', width: '140', sortable: false, iscount: true },
{ field: 'detailname', title: '类型/名称', width: '110', sortable: false },
{ field: 'amount', title: '金额', width: '110', sortable: true, iscount: true },
{ field: 'note1', title: '备注1', width: '150', sortable: false },
{ field: 'note2', title: '备注2', width: '150', sortable: false }
];
var url = '@Url.Content("~/Reports/Finance/ListBalanceSheetSubDetailJson")' + '?type=@(ViewBag.type)&day='+day;
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;
}
}
}
}
uploadfile('btn_Upload',
'@Url.Content("~/Reports/Finance/UploadBalanceSheetSubDetail?type="+ ViewBag.type)' + '?uid=' + d.uid +'&username='+d.username,
function(result){
if(result.success)
{
alert('上传成功!');
list();
}
else
{
alert(result.msg);
}
});
}
});
}
else {
tb.bootstrapTable('refresh', { url: url });
}
}
function uploadfile(id,url,callback)
{
var uploader = new WebUploader.Uploader({
// swf文件路径
swf: BASE_URL + 'Uploader.swf',
// 文件接收服务端。
server: url!=undefined?url:'@Url.Content("~/File/UploadFile")',
// 选择文件的按钮。可选。
// 内部根据当前运行是创建,可能是input元素,也可能是flash.
pick: '#'+id,
// 不压缩image, 默认如果是jpeg,文件上传前会压缩一把再上传!
resize: false,
auto:true
});
uploader.on('uploadSuccess', function (file, response) {
if(callback!=undefined)
{
callback(response);
}
});
uploader.on('uploadError', function (file) {
layer.msg("上传出错");
});
}
</script>
}
......@@ -62,7 +62,7 @@
function list() {
var columns = [
//{ field: 'company_name', title: '付款主体', width: '120', sortable: true },
{ field: 'company_name', title: '付款主体', width: '120'},
{ field: 'bank_name', title: '银行名称', width: '130', sortable: true },
{ field: 'bank_card', title: '银行卡号', width: '140', sortable: true},
{ field: 'bank_card_user', title: '持卡人', width: '160', sortable: true },
......
......@@ -20,11 +20,17 @@
<td>@(ViewBag.m.Item1.ToString("N2"))</td>
<td><a class="btn btn-xs btn-primary" onclick="showdetail('@ViewBag.date.ToString("yyyy-MM-dd") 平台应收账款','@Url.Content("~/Reports/Finance/ListReceivablesPlatform?date="+ViewBag.date+"&paycompanyid="+ViewBag.paycompanyid)')">查看明细</a></td>
</tr>
<tr>
@*<tr>
<td>2</td>
<td>借支应收账款</td>
<td>@(ViewBag.m.Item2.ToString("N2"))</td>
<td><a class="btn btn-xs btn-primary" onclick="showdetail('@ViewBag.date.ToString("yyyy-MM-dd") 借支应收账款','@Url.Content("~/Reports/Finance/ListBorrowAmount?date="+ViewBag.date+"&paycompanyid="+ViewBag.paycompanyid)')">查看明细</a></td>
</tr>*@
<tr>
<td>2</td>
<td>手工导入</td>
<td>@(ViewBag.m.Item2.ToString("N2"))</td>
<td><a class="btn btn-xs btn-primary" onclick="showdetail('@ViewBag.date.ToString("yyyy-MM-dd") 应收账款手工导入','@Url.Content("~/Reports/Finance/BalanceSheetSubDetail?day="+ViewBag.date+"&type=accounts_receivable_import")')">查看明细</a></td>
</tr>
</table>
</div>
......
......@@ -29,8 +29,8 @@
<body class="fixed-sidebar full-height-layout gray-bg" style="overflow:hidden">
<script type="text/javascript">
login_localhost();
//login();
//login_localhost();
login();
window.location = "@Url.Content("~/Home/Main")";
</script>
</body>
......
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