Commit 6130af1e by guanzhenshan

增加内部编码利润报表

parent 639ce60d
...@@ -7,30 +7,29 @@ namespace Bailun.DC.DailyPlatformReceivable ...@@ -7,30 +7,29 @@ namespace Bailun.DC.DailyPlatformReceivable
{ {
class Program class Program
{ {
static async Task Main(string[] args) //static async Task Main(string[] args)
{ //{
Console.WriteLine("启动服务 " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); // Console.WriteLine("启动服务 " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
var builder = new HostBuilder().ConfigureServices((hostContext, services) => // var builder = new HostBuilder().ConfigureServices((hostContext, services) =>
{ // {
services.AddHostedService<Services>(); // services.AddHostedService<Services>();
}); // });
await builder.RunConsoleAsync(); // await builder.RunConsoleAsync();
} //}
//static void Main(string[] args) static void Main(string[] args)
//{ {
// //Console.WriteLine("Hello World!");
// var _services = new Services(); var _services = new Services();
// var start = DateTime.Parse("2019-11-01"); var start = DateTime.Parse("2019-11-01");
// while (start.AddDays(1) < DateTime.Now) while (start.AddDays(1) < DateTime.Now)
// { {
// Console.WriteLine(start); Console.WriteLine(start);
// _services.Init(start); _services.Init(start);
// start = start.AddDays(1); start = start.AddDays(1);
// } }
//} }
} }
} }
...@@ -37,6 +37,17 @@ namespace Bailun.DC.DailyPlatformReceivable ...@@ -37,6 +37,17 @@ namespace Bailun.DC.DailyPlatformReceivable
Console.WriteLine("任务运行完成 " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); Console.WriteLine("任务运行完成 " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
} }
else if (now.Hour == 5 && now.Minute == 11)
{
var start = now.AddDays(-30);
while (start.AddDays(1) < DateTime.Now)
{
Console.WriteLine(start);
Init(start);
start = start.AddDays(1);
}
}
} }
catch (Exception ex) catch (Exception ex)
...@@ -207,7 +218,7 @@ namespace Bailun.DC.DailyPlatformReceivable ...@@ -207,7 +218,7 @@ namespace Bailun.DC.DailyPlatformReceivable
m.amount_refund = objRefund.amount; m.amount_refund = objRefund.amount;
} }
m.amount_end = m.amount_start + m.amount_sale_shipping - m.amount_platformfee - m.amount_incoming + m.amount_other; m.amount_end = m.amount_start + m.amount_sale_shipping - m.amount_platformfee - m.amount_incoming - m.amount_refund + m.amount_other;
listM.Add(m); listM.Add(m);
} }
......
using System;
using System.Collections.Generic;
using System.Text;
namespace Bailun.DC.Models.Orders
{
/// <summary>
/// 内部编码sku的利润
/// </summary>
public class mInnerCodeProfit
{
/// <summary>
/// sku内部编码
/// </summary>
public string product_inner_code { get; set; }
/// <summary>
/// 平台订单号
/// </summary>
public string origin_order_id { get; set; }
/// <summary>
/// 平台类型
/// </summary>
public string platform_type { get; set; }
/// <summary>
/// 站点
/// </summary>
public string website { get; set; }
/// <summary>
/// 销售帐号
/// </summary>
public string seller_account { get; set; }
/// <summary>
/// 百伦订单状态
/// </summary>
public string bailun_order_status { get; set; }
/// <summary>
/// 付款状态
/// </summary>
public string pay_status { get; set; }
/// <summary>
/// 发货状态
/// </summary>
public string shipping_status { get; set; }
/// <summary>
/// 销售额
/// </summary>
public decimal amount_sales { get; set; }
/// <summary>
/// 平台费
/// </summary>
public decimal cost_platform_fee { get; set; }
/// <summary>
/// 产品成本
/// </summary>
public decimal cost_product { get; set; }
/// <summary>
/// 头程费
/// </summary>
public decimal cost_first { get; set; }
/// <summary>
/// 尾程费
/// </summary>
public decimal cost_logistics { get; set; }
/// <summary>
/// 百伦处理费
/// </summary>
public decimal cost_handle_bailun { get; set; }
/// <summary>
/// 平台操作费
/// </summary>
public decimal cost_handle_platform { get; set; }
/// <summary>
/// paypal费
/// </summary>
public decimal cost_paypal_fee { get; set; }
/// <summary>
/// 总支出
/// </summary>
public decimal cost_total { get; set; }
/// <summary>
/// 销售数量
/// </summary>
public decimal bailun_sku_quantity_ordered { get; set; }
/// <summary>
/// 利润
/// </summary>
public decimal profit_total { get; set; }
/// <summary>
/// 利润率
/// </summary>
public decimal profit_rate { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime create_time { get; set; }
/// <summary>
/// 更新时间
/// </summary>
public DateTime order_update_time { get; set; }
/// <summary>
///
/// </summary>
public string transaction_id { get; set; }
}
}
...@@ -3262,6 +3262,7 @@ namespace Bailun.DC.Services ...@@ -3262,6 +3262,7 @@ namespace Bailun.DC.Services
} }
public mExchangeLoss ListExchangeLossCount(string account, DateTime? start, DateTime? end, int? companyid) public mExchangeLoss ListExchangeLossCount(string account, DateTime? start, DateTime? end, int? companyid)
{ {
var sqlparam = new DynamicParameters(); var sqlparam = new DynamicParameters();
...@@ -3388,6 +3389,104 @@ namespace Bailun.DC.Services ...@@ -3388,6 +3389,104 @@ namespace Bailun.DC.Services
} }
/// <summary>
/// 内部编码Sku的利润
/// </summary>
/// <param name="parameter"></param>
/// <param name="start"></param>
/// <param name="end"></param>
/// <param name="skucode"></param>
/// <param name="orderno"></param>
/// <param name="total"></param>
/// <returns></returns>
public List<mInnerCodeProfit> ListEbayInnerCodeProfit(BtTableParameter parameter, DateTime start, DateTime end, string skucode, string orderno, ref int total)
{
var sqlparam = new DynamicParameters();
var sqlwhere = $@"from dc_base_oms_sku t1
join dc_base_sku t2 on t1.bailun_sku=t2.bailun_sku
where t1.company_id=1 and t1.bailun_order_status!='Canceled' and t1.paid_time>='{start.ToString("yyyy-MM-dd")}' and t1.paid_time<'{end.AddDays(1).ToString("yyyy-MM-dd")}' and t1.has_scalp=0 and t1.has_cancle=0 and t1.has_delete=0 and t1.has_innersale=0 and t1.platform_type='Ebay'
";
var sql = $@"select t2.product_inner_code,t1.origin_order_id,t1.platform_type,t1.website,t1.seller_account,t1.bailun_order_status,t1.pay_status,t1.shipping_status,sum(t1.amount_sales*seller_order_exchange_rate) amount_sales,sum(t1.cost_platform_fee*t1.seller_other_exchange_rate) cost_platform_fee,sum(t1.cost_product) cost_product,sum(t1.cost_first) cost_first,sum(t1.cost_logistics) cost_logistics,sum(t1.cost_handle_bailun) cost_handle_bailun,sum(t1.cost_handle_platform) cost_handle_platform,sum(t1.cost_paypal_fee*t1.seller_order_exchange_rate) cost_paypal_fee,sum(t1.cost_total) cost_total,sum(t1.bailun_sku_quantity_ordered) bailun_sku_quantity_ordered,sum(t1.profit_total) profit_total,(sum(t1.profit_rate)/count(t1.id)) profit_rate,t1.create_time,t1.order_update_time,t1.transaction_id
";
if (!string.IsNullOrEmpty(skucode))
{
sqlwhere += " and t2.product_inner_code=@skucode";
sqlparam.Add("skucode", skucode);
}
if (!string.IsNullOrEmpty(orderno))
{
sqlwhere += " and t1.origin_order_id=@origin_order_id";
sqlparam.Add("origin_order_id", orderno);
}
sqlwhere += "group by t1.origin_order_id,t2.product_inner_code ";
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{
if (cn.State == System.Data.ConnectionState.Closed)
{
cn.Open();
}
var obj = cn.Query<mInnerCodeProfit>(sql + sqlwhere + ((parameter.pageIndex-1)*parameter.limit+","+parameter.limit), sqlparam, null, true, 2 * 60);
total = cn.QueryFirstOrDefault<int>("select count(*) from (select t2.product_inner_code,t1.origin_order_id,t1.platform_type,t1.website " + sqlwhere + ") tb",sqlparam);
return obj.ToList();
}
}
/// <summary>
/// 内部编码Sku的利润汇总
/// </summary>
/// <param name="start"></param>
/// <param name="end"></param>
/// <param name="skucode"></param>
/// <param name="orderno"></param>
/// <returns></returns>
public mInnerCodeProfit ListEbayInnerCodeProfitCount(DateTime start, DateTime end, string skucode, string orderno)
{
var sqlparam = new DynamicParameters();
var sqlwhere = $@"from dc_base_oms_sku t1
join dc_base_sku t2 on t1.bailun_sku=t2.bailun_sku
where t1.company_id=1 and t1.bailun_order_status!='Canceled' and t1.paid_time>='{start.ToString("yyyy-MM-dd")}' and t1.paid_time<'{end.AddDays(1).ToString("yyyy-MM-dd")}' and t1.has_scalp=0 and t1.has_cancle=0 and t1.has_delete=0 and t1.has_innersale=0 and t1.platform_type='Ebay'
";
var sql = $@"select sum(t1.amount_sales*seller_order_exchange_rate) amount_sales,sum(t1.cost_platform_fee*t1.seller_other_exchange_rate) cost_platform_fee,sum(t1.cost_product) cost_product,sum(t1.cost_first) cost_first,sum(t1.cost_logistics) cost_logistics,sum(t1.cost_handle_bailun) cost_handle_bailun,sum(t1.cost_handle_platform) cost_handle_platform,sum(t1.cost_paypal_fee*t1.seller_order_exchange_rate) cost_paypal_fee,sum(t1.cost_total) cost_total,sum(t1.bailun_sku_quantity_ordered) bailun_sku_quantity_ordered,sum(t1.profit_total) profit_total,(sum(t1.profit_rate)/count(t1.id)) profit_rate
";
if (!string.IsNullOrEmpty(skucode))
{
sqlwhere += " and t2.product_inner_code=@skucode";
sqlparam.Add("skucode", skucode);
}
if (!string.IsNullOrEmpty(orderno))
{
sqlwhere += " and t1.origin_order_id=@origin_order_id";
sqlparam.Add("origin_order_id", orderno);
}
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{
if (cn.State == System.Data.ConnectionState.Closed)
{
cn.Open();
}
var obj = cn.QueryFirstOrDefault<mInnerCodeProfit>(sql + sqlwhere ,sqlparam, null,2*60);
return obj;
}
}
#endregion #endregion
#region Platform Common #region Platform Common
......
...@@ -1358,6 +1358,89 @@ namespace Bailun.DC.Web.Areas.Reports.Controllers ...@@ -1358,6 +1358,89 @@ namespace Bailun.DC.Web.Areas.Reports.Controllers
}); });
} }
/// <summary>
/// 内部编码利润
/// </summary>
/// <returns></returns>
public ActionResult ListEbayInnerCodeProfit()
{
return View();
}
/// <summary>
/// 内部编码维度
/// </summary>
/// <param name="parameter"></param>
/// <param name="start"></param>
/// <param name="end"></param>
/// <param name="code"></param>
/// <param name="orderno"></param>
/// <returns></returns>
[BailunAuthentication(LoginMode.Enforce)]
public string ListEbayInnerCodeProfitJson(BtTableParameter parameter, DateTime start, DateTime end, string code, string orderno)
{
var companyid = HttpContextHelper.Current.User.GetCompanyId();
var total = 0;
var _service = new Services.OrdersServices();
var obj = _service.ListEbayInnerCodeProfit(parameter, start, end, code, orderno, ref total);
var objCount = _service.ListEbayInnerCodeProfitCount(start, end, code, orderno);
var list = obj.Select(a => new {
amount_sales = a.amount_sales.ToString("N2"),
a.bailun_order_status,
bailun_sku_quantity_ordered = a.bailun_sku_quantity_ordered.ToString("N0"),
cost_first = a.cost_first.ToString("N2"),
cost_handle_bailun = a.cost_handle_bailun.ToString("N2"),
cost_handle_platform = a.cost_handle_platform.ToString("N2"),
cost_logistics = a.cost_logistics.ToString("N2"),
cost_paypal_fee = a.cost_paypal_fee.ToString("N2"),
cost_platform_fee = a.cost_platform_fee.ToString("N2"),
cost_product = a.cost_product.ToString("N2"),
cost_total = a.cost_total.ToString("N2"),
create_time = a.create_time.ToString("yyyy-MM-dd HH:mm:ss"),
order_update_time = a.order_update_time.ToString("yyyy-MM-dd HH:mm:ss"),
a.origin_order_id,
a.pay_status,
a.platform_type,
a.product_inner_code,
profit_rate = (a.profit_rate*100).ToString("N2"),
profit_total = a.profit_total.ToString("N2"),
a.seller_account,
a.shipping_status,
a.website
});
return JsonConvert.SerializeObject(new
{
total = total,
rows = list,
count_row = new
{
shipping_status = "合计",
amount_sales = objCount.amount_sales.ToString("N2"),
bailun_sku_quantity_ordered = objCount.bailun_sku_quantity_ordered.ToString("N0"),
cost_first = objCount.cost_first.ToString("N2"),
cost_handle_bailun = objCount.cost_handle_bailun.ToString("N2"),
cost_handle_platform = objCount.cost_handle_platform.ToString("N2"),
cost_logistics = objCount.cost_logistics.ToString("N2"),
cost_paypal_fee = objCount.cost_paypal_fee.ToString("N2"),
cost_platform_fee = objCount.cost_platform_fee.ToString("N2"),
cost_product = objCount.cost_product.ToString("N2"),
cost_total = objCount.cost_total.ToString("N2"),
profit_rate = (objCount.profit_rate * 100).ToString("N2"),
profit_total = objCount.profit_total.ToString("N2")
},
companyid = companyid
});
}
#endregion #endregion
#region 平台利润 #region 平台利润
......

@{
ViewData["Title"] = "内部商品编码利润";
Layout = "~/Pages/Shared/_MainLayout.cshtml";
ViewBag.Nav = new string[] { "分平台利润统计", "Ebay", "内部商品编码利润" };
}
<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="start" name="start" type="text" class="form-control" style="width:130px;" value="@(DateTime.Now.AddDays(-7).ToString("yyyy-MM-dd"))" />
<span>至</span>
<input id="end" name="end" type="text" class="form-control" style="width:130px;" value="@(DateTime.Now.ToString("yyyy-MM-dd"))" />
</div>
<div class="form-group">
<label>&nbsp;</label>
<input id="orderno" name="orderno" class="form-control" style="width:130px;" placeholder="平台订单号" />
</div>
<div class="form-group">
<label>&nbsp;</label>
<input id="sku" name="sku" class="form-control" style="width:130px;" 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-contentc">
<table id="roletable"></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: 'product_inner_code', title: '内部编码', width: '110'
},
{
field: 'origin_order_id', title: '平台单号', width: '160', formatter: function (idx, data) {
return '<div class="mules" title="' + data.origin_order_id + '">' + data.origin_order_id + '</div>';
}
},
{
field: 'platform_type', title: '平台类型', width: '110'
},
{ field: 'website', title: '站点', width: '100' },
{ field: 'seller_account', title: '销售帐号', width: '110' },
{ field: 'bailun_order_status', title: '订单状态', width: '110' },
{ field: 'pay_status', title: '付款状态', width: '130' },
{ field: 'shipping_status', title: '发货状态', width: '110', iscount: true },
{ field: 'amount_sales', title: '销售额', width: '110', sortable: true, iscount: true },
{ field: 'cost_platform_fee', title: '平台费', width: '110', sortable: true, iscount: true },
{ field: 'cost_product', title: '产品成本', width: '110', sortable: true, iscount: true },
{ field: 'cost_first', title: '头程费', width: '110', sortable: true, iscount: true },
{ field: 'cost_logistics', title: '尾程费', width: '100', sortable: true, iscount: true },
{ field: 'cost_handle_bailun', title: '百伦处理费', width: '110', sortable: true, iscount: true },
{ field: 'cost_handle_platform', title: '平台操作费', width: '110', sortable: true, iscount: true },
{ field: 'cost_paypal_fee', title: 'paypal费', width: '110', sortable: true, iscount: true },
{ field: 'cost_total', title: '总支出', width: '110', sortable: true, iscount: true },
{ field: 'bailun_sku_quantity_ordered', title: '销售数量', width: '110', sortable: true, iscount: true },
{ field: 'profit_total', title: '利润', width: '110', sortable: true, iscount: true },
{ field: 'profit_rate', title: '利润率', width: '110' },
{ field: 'create_time', title: '创建时间', width: '130' },
{ field: 'paid_time', title: '付款时间', width: '130' },
{ field: 'order_update_time', title: '更新时间', width: '130' }
];
var url = '@Url.Content("~/Reports/Orders/ListEbayInnerCodeProfitJson")' + '?' + $("#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 listAccount() {
$.submit({
url: '@Url.Content("~/Reports/Orders/ListAccount")',
type:'POST',
paramData: 'platform=@(ViewBag.platform)',
func: function (result) {
if (result != null && result != undefined) {
$('#account').html('<option value="">选择帐号</option>');
for (var i = 0; i < result.length; i++) {
$('#account').append('<option value="' + result[i] + '">' + result[i]+'</option>');
}
}
}
})
}
function listWebsite() {
$.submit({
url: '@Url.Content("~/Reports/Orders/ListWebSite")',
type:'POST',
paramData: 'platform=@(ViewBag.platform)',
func: function (result) {
if (result != null && result != undefined) {
$('#website').html('<option value="">选择站点</option>');
for (var i = 0; i < result.length; i++) {
$('#website').append('<option value="' + result[i] + '">' + result[i]+'</option>');
}
}
}
})
}
</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