Commit 5c3fe7d8 by guanzhenshan

调整每月销售利润的服务

parent a7f0bbff
......@@ -57,14 +57,12 @@ namespace Bailun.DC.MonthSaleProfit
/// <param name="day"></param>
public void Init(DateTime day)
{
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{
if (cn.State == System.Data.ConnectionState.Closed)
{
cn.Open();
}
var objOrder = new Models.Orders.dc_base_oms_order();
var objFBA = new Models.Orders.dc_base_oms_order();
var sql = "";
var m = new dc_month_sale_profit {
var m = new dc_month_sale_profit
{
actual_profit = 0,
amount_sale = 0,
balance_of_profit = 0,
......@@ -84,9 +82,9 @@ namespace Bailun.DC.MonthSaleProfit
ls_head_cost = 0,
ls_oversea_storage = 0,
ls_platform_operation_fee = 0,
ls_tail_cost=0,
manager_cost_count=0,
manager_cost_finish_wh=0,
ls_tail_cost = 0,
manager_cost_count = 0,
manager_cost_finish_wh = 0,
manager_cost_gzbailun = 0,
manager_cost_hkbailun = 0,
manager_cost_meijiadian = 0,
......@@ -98,30 +96,38 @@ namespace Bailun.DC.MonthSaleProfit
nonbusiness_pay = 0,
other_incoming = 0,
participation_in_profit = 0,
payfor_platform_related_fee=0,
payfor_platform_related_fee = 0,
pt_count = 0,
pt_ebay_postingfee=0,
pt_incoming=0,
pt_paypal_fee=0,
pt_platformfee=0,
pt_platform_ad_subscribe_fee=0,
pt_platform_logistics_fee=0,
pt_platform_storage_fee=0,
pt_refund_amount=0,
sale_fee_count=0,
sale_manager_cost=0,
sale_profit=0,
sale_profit_rate=0
pt_ebay_postingfee = 0,
pt_incoming = 0,
pt_paypal_fee = 0,
pt_platformfee = 0,
pt_platform_ad_subscribe_fee = 0,
pt_platform_logistics_fee = 0,
pt_platform_storage_fee = 0,
pt_refund_amount = 0,
sale_fee_count = 0,
sale_manager_cost = 0,
sale_profit = 0,
sale_profit_rate = 0
};
var sql = $@"select sum(t2.amount_sales*t1.quantity_shipped*t2.seller_order_exchange_rate) as amount_sales,sum(t2.cost_product*t1.quantity_shipped) as cost_product,sum(t2.cost_platform_fee*(if(t2.platform_type='Ebay',t2.seller_other_exchange_rate,t2.seller_order_exchange_rate))*t1.quantity_shipped) as cost_platform_fee,sum(t2.cost_paypal_fee*t2.seller_order_exchange_rate*t1.quantity_shipped) as cost_paypal_fee,sum(t2.cost_first*t1.quantity_shipped) as cost_first,sum(t2.cost_logistics*t1.quantity_shipped) as cost_logistics,sum(t2.cost_handle_platform*t1.quantity_shipped) as cost_handle_platform from dc_base_oms_pick t1
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString_read))
{
if(cn.State== System.Data.ConnectionState.Closed)
{
cn.Open();
}
sql = $@"select sum(t2.amount_sales*t1.quantity_shipped*t2.seller_order_exchange_rate) as amount_sales,sum(t2.cost_product*t1.quantity_shipped) as cost_product,sum(t2.cost_platform_fee*(if(t2.platform_type='Ebay',t2.seller_other_exchange_rate,t2.seller_order_exchange_rate))*t1.quantity_shipped) as cost_platform_fee,sum(t2.cost_paypal_fee*t2.seller_order_exchange_rate*t1.quantity_shipped) as cost_paypal_fee,sum(t2.cost_first*t1.quantity_shipped) as cost_first,sum(t2.cost_logistics*t1.quantity_shipped) as cost_logistics,sum(t2.cost_handle_platform*t1.quantity_shipped) as cost_handle_platform from dc_base_oms_pick t1
join dc_base_oms_sku t2 on t1.bailun_order_id = t2.bailun_order_id and t1.bailun_sku=t2.bailun_sku and t2.bailun_order_status != 'Canceled' and t2.has_scalp = 0 and ((t2.platform_type!='FBA' and t2.bailun_order_status!='CantHandle') or t2.platform_type='FBA') and t2.has_scalp = 0 and t2.has_innersale = 0 and t2.has_delete=0 and t2.company_id=1
where t1.has_delete=0 and t1.shipping_status = 'TotalShipping' and t1.company_id=1 and t1.shipping_time>='{day.ToString("yyyy-MM-dd")}' and t1.shipping_time<'{day.AddMonths(1).ToString("yyyy-MM-dd")}'";
var objOrder = cn.QueryFirstOrDefault<Models.Orders.dc_base_oms_order>(sql, null, null, 6 * 60);
objOrder = cn.QueryFirstOrDefault<Models.Orders.dc_base_oms_order>(sql, null, null, 6 * 60);
sql = $@"select sum(amount_sales*seller_order_exchange_rate) as amount_sales,sum(cost_product) as cost_product,sum(cost_platform_fee*seller_order_exchange_rate) as cost_platform_fee,sum(cost_first) as cost_first,sum(cost_logistics) as cost_logistics,sum(cost_fba_fee*seller_order_exchange_rate) cost_fba_fee from dc_base_oms_order tb where tb.company_id=1 and tb.bailun_order_status!='Canceled' and ((tb.platform_type!='FBA' and tb.bailun_order_status!='CantHandle') or tb.platform_type='FBA') and tb.has_scalp=0 and tb.has_innersale=0 and tb.bailun_interception_status in ('None','Failed') and tb.platform_type='FBA' and tb.create_time>='{day.ToString("yyyy-MM-dd")}' and tb.create_time<'{day.AddMonths(1).ToString("yyyy-MM-dd")}'";
var objFBA = cn.QueryFirstOrDefault<Models.Orders.dc_base_oms_order>(sql, null, null, 6 * 60);
objFBA = cn.QueryFirstOrDefault<Models.Orders.dc_base_oms_order>(sql, null, null, 6 * 60);
decimal? obj = 0;
......@@ -208,13 +214,13 @@ namespace Bailun.DC.MonthSaleProfit
m.sale_profit = m.amount_sale - (m.cost_sale + m.cost_sale_) - m.sale_fee_count;
//销售毛利率 = 销售利润/销售额
m.sale_profit_rate = m.amount_sale>0?m.sale_profit / m.amount_sale:0;
m.sale_profit_rate = m.amount_sale > 0 ? m.sale_profit / m.amount_sale : 0;
//销售相关的管理成本=处理费+直接支付的与销售平台相关费用
m.sale_manager_cost = m.handlingcharges + m.payfor_platform_related_fee;
//直接管理成本=管理成本香港百伦+管理成本广州百伦+管理成本成品仓+财务费用+管理成本杨杉+管理成本信荟蓝
m.direct_manager_cost = m.manager_cost_hkbailun + m.manager_cost_gzbailun + m.manager_cost_finish_wh + m.finance_fee+m.manager_cost_meijiadian+m.manager_cost_yangshan+m.manager_cost_xinhuilan;
m.direct_manager_cost = m.manager_cost_hkbailun + m.manager_cost_gzbailun + m.manager_cost_finish_wh + m.finance_fee + m.manager_cost_meijiadian + m.manager_cost_yangshan + m.manager_cost_xinhuilan;
//管理成本合计=直接管理成本+销售相关的管理成本
m.manager_cost_count = m.direct_manager_cost + m.sale_manager_cost;
......@@ -223,16 +229,24 @@ namespace Bailun.DC.MonthSaleProfit
m.business_profit = m.sale_profit - m.manager_cost_count;
//营业毛利率=营业利润/销售额
m.business_profit_rate = m.amount_sale>0? m.business_profit / m.amount_sale:0;
m.business_profit_rate = m.amount_sale > 0 ? m.business_profit / m.amount_sale : 0;
//实际利润=营业利润+其他收入+营业外收入-营业外支出
m.actual_profit = m.business_profit + m.other_incoming + m.nonbusiness_income - m.nonbusiness_pay;
//利润结余=实际利润-分红
m.balance_of_profit = m.actual_profit - m.participation_in_profit;
}
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{
if (cn.State == System.Data.ConnectionState.Closed)
{
cn.Open();
}
cn.Execute("delete from dc_month_sale_profit where month='" + m.month + "'");
sql = $@"insert dc_month_sale_profit (actual_profit,amount_sale,balance_of_profit,business_profit,business_profit_rate,cost_sale,createtime,direct_manager_cost,finance_fee,handlingcharges,lastupdatetime,lastupdateuserid,lastupdateusername,ls_count,ls_head_cost,ls_oversea_storage,ls_platform_operation_fee,ls_tail_cost,manager_cost_count,manager_cost_finish_wh,manager_cost_gzbailun,manager_cost_hkbailun,manager_cost_meijiadian,month,nonbusiness_income,nonbusiness_pay,other_incoming,participation_in_profit,payfor_platform_related_fee,pt_count,pt_ebay_postingfee,pt_incoming,pt_paypal_fee,pt_platformfee,pt_platform_ad_subscribe_fee,pt_platform_logistics_fee,pt_platform_storage_fee,pt_refund_amount,sale_fee_count,sale_manager_cost,sale_profit,sale_profit_rate,manager_cost_yangshan,manager_cost_xinhuilan) values
({m.actual_profit},{m.amount_sale},{m.balance_of_profit},{m.business_profit},{m.business_profit_rate},{m.cost_sale},'{m.createtime.ToString("yyyy-MM-dd HH:mm:ss")}',{m.direct_manager_cost},{m.finance_fee},{m.handlingcharges},'{m.lastupdatetime.ToString("yyyy-MM-dd HH:mm:ss")}',{m.lastupdateuserid},'{m.lastupdateusername}',{m.ls_count},{m.ls_head_cost},{m.ls_oversea_storage},{m.ls_platform_operation_fee},{m.ls_tail_cost},{m.manager_cost_count},{m.manager_cost_finish_wh},{m.manager_cost_gzbailun},{m.manager_cost_hkbailun},{m.manager_cost_meijiadian},'{m.month}',{m.nonbusiness_income},{m.nonbusiness_pay},{m.other_incoming},{m.participation_in_profit},{m.payfor_platform_related_fee},{m.pt_count},{m.pt_ebay_postingfee},{m.pt_incoming},{m.pt_paypal_fee},{m.pt_platformfee},{m.pt_platform_ad_subscribe_fee},{m.pt_platform_logistics_fee},{m.pt_platform_storage_fee},{m.pt_refund_amount},{m.sale_fee_count},{m.sale_manager_cost},{m.sale_profit},{m.sale_profit_rate},{m.manager_cost_yangshan},{m.manager_cost_xinhuilan})";
......@@ -243,28 +257,44 @@ namespace Bailun.DC.MonthSaleProfit
public void Update(DateTime day)
{
//更新前半年的
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
var list = new List<dc_month_sale_profit>();
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString_read))
{
if (cn.State == System.Data.ConnectionState.Closed)
if(cn.State== System.Data.ConnectionState.Closed)
{
cn.Open();
}
var list = cn.Query<dc_month_sale_profit>("select * from dc_month_sale_profit where month>'"+day.AddMonths(-3).ToString("yyyy-MM")+"'");
list = cn.Query<dc_month_sale_profit>("select * from dc_month_sale_profit where month>'" + day.AddMonths(-3).ToString("yyyy-MM") + "'").AsList();
}
foreach (var m in list)
{
var start = DateTime.Parse(m.month + "-01");
var sql = $@"select sum(t2.amount_sales*t1.quantity_shipped*t2.seller_order_exchange_rate) as amount_sales,sum(t2.cost_product*t1.quantity_shipped) as cost_product,sum(t2.cost_platform_fee*(if(t2.platform_type='Ebay',t2.seller_other_exchange_rate,t2.seller_order_exchange_rate))*t1.quantity_shipped) as cost_platform_fee,sum(t2.cost_paypal_fee*t2.seller_order_exchange_rate*t1.quantity_shipped) as cost_paypal_fee,sum(t2.cost_first*t1.quantity_shipped) as cost_first,sum(t2.cost_logistics*t1.quantity_shipped) as cost_logistics,sum(t2.cost_handle_platform*t1.quantity_shipped) as cost_handle_platform from dc_base_oms_pick t1
var objOrder = new Models.Orders.dc_base_oms_order();
var objFBA = new Models.Orders.dc_base_oms_order();
var sql = "";
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString_read))
{
if (cn.State == System.Data.ConnectionState.Closed)
{
cn.Open();
}
sql = $@"select sum(t2.amount_sales*t1.quantity_shipped*t2.seller_order_exchange_rate) as amount_sales,sum(t2.cost_product*t1.quantity_shipped) as cost_product,sum(t2.cost_platform_fee*(if(t2.platform_type='Ebay',t2.seller_other_exchange_rate,t2.seller_order_exchange_rate))*t1.quantity_shipped) as cost_platform_fee,sum(t2.cost_paypal_fee*t2.seller_order_exchange_rate*t1.quantity_shipped) as cost_paypal_fee,sum(t2.cost_first*t1.quantity_shipped) as cost_first,sum(t2.cost_logistics*t1.quantity_shipped) as cost_logistics,sum(t2.cost_handle_platform*t1.quantity_shipped) as cost_handle_platform from dc_base_oms_pick t1
join dc_base_oms_sku t2 on t1.bailun_order_id = t2.bailun_order_id and t1.bailun_sku=t2.bailun_sku and t2.bailun_order_status != 'Canceled' and t2.has_scalp = 0 and ((t2.platform_type!='FBA' and t2.bailun_order_status!='CantHandle') or t2.platform_type='FBA') and t2.has_scalp = 0 and t2.has_innersale = 0 and t2.has_delete=0 and t2.company_id=1
where t1.has_delete=0 and t1.shipping_status = 'TotalShipping' and t1.company_id=1 and t1.shipping_time>='{start.ToString("yyyy-MM-dd")}' and t1.shipping_time<'{start.AddMonths(1).ToString("yyyy-MM-dd")}'";
var objOrder = cn.QueryFirstOrDefault<Models.Orders.dc_base_oms_order>(sql, null, null, 6 * 60);
objOrder = cn.QueryFirstOrDefault<Models.Orders.dc_base_oms_order>(sql, null, null, 6 * 60);
sql = $@"select sum(amount_sales*seller_order_exchange_rate) as amount_sales,sum(cost_product) as cost_product,sum(cost_platform_fee*seller_order_exchange_rate) as cost_platform_fee,sum(cost_first) as cost_first,sum(cost_logistics) as cost_logistics,sum(cost_fba_fee*seller_order_exchange_rate) cost_fba_fee from dc_base_oms_order tb where tb.company_id=1 and tb.bailun_order_status!='Canceled' and ((tb.platform_type!='FBA' and tb.bailun_order_status!='CantHandle') or tb.platform_type='FBA') and tb.has_scalp=0 and tb.has_innersale=0 and tb.bailun_interception_status in ('None','Failed') and tb.platform_type='FBA' and tb.create_time>='{start.ToString("yyyy-MM-dd")}' and tb.create_time<'{start.AddMonths(1).ToString("yyyy-MM-dd")}'";
var objFBA = cn.QueryFirstOrDefault<Models.Orders.dc_base_oms_order>(sql, null, null, 6 * 60);
objFBA = cn.QueryFirstOrDefault<Models.Orders.dc_base_oms_order>(sql, null, null, 6 * 60);
decimal? obj = 0;
......@@ -322,7 +352,7 @@ namespace Bailun.DC.MonthSaleProfit
sql = $@"select sum(t1.amount_refund_rmb) from dc_base_crm_refund t1 where t1.shipping_status in ('TotalShipping','PartShipping') and t1.is_deleted=0 and is_freeze=0 and t1.company_id=1 and t1.refund_time>='{start.ToString("yyyy-MM-dd")}' and t1.refund_time<'{start.AddMonths(1).ToString("yyyy-MM-dd")}' and t1.shipping_status!='UnShipping'";
obj = cn.QueryFirstOrDefault<decimal?>(sql, null, null, 2 * 60);
m.pt_refund_amount = obj ?? 0;
}
//头程费
m.ls_head_cost = objOrder.cost_first;
......@@ -363,7 +393,7 @@ namespace Bailun.DC.MonthSaleProfit
m.sale_manager_cost = m.handlingcharges + m.payfor_platform_related_fee;
//直接管理成本=管理成本香港百伦+管理成本广州百伦+管理成本成品仓+财务费用+管理成本美甲店
m.direct_manager_cost = m.manager_cost_hkbailun + m.manager_cost_gzbailun + m.manager_cost_finish_wh + m.finance_fee+m.manager_cost_meijiadian+m.manager_cost_yangshan+m.manager_cost_xinhuilan;
m.direct_manager_cost = m.manager_cost_hkbailun + m.manager_cost_gzbailun + m.manager_cost_finish_wh + m.finance_fee + m.manager_cost_meijiadian + m.manager_cost_yangshan + m.manager_cost_xinhuilan;
//管理成本合计=直接管理成本+销售相关的管理成本
m.manager_cost_count = m.direct_manager_cost + m.sale_manager_cost;
......@@ -380,7 +410,16 @@ namespace Bailun.DC.MonthSaleProfit
//利润结余=实际利润-分红
m.balance_of_profit = m.actual_profit - m.participation_in_profit;
sql = $@"update dc_month_sale_profit set amount_sale="+m.amount_sale+ ",cost_sale="+m.cost_sale+ ",pt_platformfee="+m.pt_platformfee+ ",pt_ebay_postingfee="+m.pt_ebay_postingfee+ ",pt_paypal_fee="+m.pt_paypal_fee+ ",pt_platform_logistics_fee="+m.pt_platform_logistics_fee+ ",pt_platform_ad_subscribe_fee="+m.pt_platform_ad_subscribe_fee+ ",pt_refund_amount="+m.pt_refund_amount+ ",ls_head_cost="+m.ls_head_cost+ ",ls_tail_cost="+m.ls_tail_cost+ ",ls_platform_operation_fee="+m.ls_platform_operation_fee+ ",pt_count="+m.pt_count+ ",pt_incoming="+m.pt_incoming+ ",ls_count="+m.ls_count+ ",sale_fee_count="+m.sale_fee_count+ ",sale_profit="+m.sale_profit+ ",sale_profit_rate="+m.sale_profit_rate+ ",sale_manager_cost="+m.sale_manager_cost+ ",direct_manager_cost="+m.direct_manager_cost+ ",manager_cost_count="+m.manager_cost_count+ ",business_profit="+m.business_profit+ ",business_profit_rate="+m.business_profit_rate+ ",actual_profit="+m.actual_profit+ ",balance_of_profit="+m.balance_of_profit+ ",manager_cost_yangshan=" + m.manager_cost_yangshan+",manager_cost_xinhuilan=" + m.manager_cost_xinhuilan+" where id=" + m.id;
//更新前半年的
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{
if (cn.State == System.Data.ConnectionState.Closed)
{
cn.Open();
}
sql = $@"update dc_month_sale_profit set amount_sale=" + m.amount_sale + ",cost_sale=" + m.cost_sale + ",pt_platformfee=" + m.pt_platformfee + ",pt_ebay_postingfee=" + m.pt_ebay_postingfee + ",pt_paypal_fee=" + m.pt_paypal_fee + ",pt_platform_logistics_fee=" + m.pt_platform_logistics_fee + ",pt_platform_ad_subscribe_fee=" + m.pt_platform_ad_subscribe_fee + ",pt_refund_amount=" + m.pt_refund_amount + ",ls_head_cost=" + m.ls_head_cost + ",ls_tail_cost=" + m.ls_tail_cost + ",ls_platform_operation_fee=" + m.ls_platform_operation_fee + ",pt_count=" + m.pt_count + ",pt_incoming=" + m.pt_incoming + ",ls_count=" + m.ls_count + ",sale_fee_count=" + m.sale_fee_count + ",sale_profit=" + m.sale_profit + ",sale_profit_rate=" + m.sale_profit_rate + ",sale_manager_cost=" + m.sale_manager_cost + ",direct_manager_cost=" + m.direct_manager_cost + ",manager_cost_count=" + m.manager_cost_count + ",business_profit=" + m.business_profit + ",business_profit_rate=" + m.business_profit_rate + ",actual_profit=" + m.actual_profit + ",balance_of_profit=" + m.balance_of_profit + ",manager_cost_yangshan=" + m.manager_cost_yangshan + ",manager_cost_xinhuilan=" + m.manager_cost_xinhuilan + " where id=" + m.id;
cn.Execute(sql);
}
......
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