Browse Source

结算单计算奖罚。

master
yibo 7 years ago
parent
commit
a2826a9c3f
1 changed files with 106 additions and 130 deletions
  1. +106
    -130
      B3SheepButcherManage/BL/Bill/StatPayBL/StatPayBL.cs

+ 106
- 130
B3SheepButcherManage/BL/Bill/StatPayBL/StatPayBL.cs View File

@ -520,80 +520,65 @@ namespace BWP.B3SheepButcherManage.BL
public void AddOtherReward(StatPay dmo)
{
//var oldList = dmo.OtherRewardDetails.ToList();
//foreach (StatPay_OtherReward reward in oldList)
//{
// if (reward.Sanction_CreateType == 创建方式.自动)
// {
// dmo.OtherRewardDetails.Remove(reward);
// }
//}
//var sanction = new JoinAlias(typeof(SanctionSetting));
//var abnormalItem = new JoinAlias(typeof(AbnormalItem));
//var dom = new DQueryDom(sanction);
//dom.From.AddJoin(JoinType.Left, new DQDmoSource(abnormalItem),
// DQCondition.EQ(sanction, "AbnormalItem_ID", abnormalItem, "ID"));
//dom.Columns.Add(DQSelectColumn.Field("Name", abnormalItem));
//dom.Columns.Add(DQSelectColumn.Field("ID", sanction));
//dom.Columns.Add(DQSelectColumn.Field("Condition", sanction));
//dom.Columns.Add(DQSelectColumn.Field("BeforeScript", sanction));
//dom.Where.Conditions.Add(DQCondition.EQ(sanction, "FitBill", 单据类型.结算单));
//dom.Where.Conditions.Add(DQCondition.EQ("BillState", 单据状态.已审核));
//dom.Where.Conditions.Add(DQCondition.EQ("Domain_ID", DomainContext.Current.ID));
//dom.Where.Conditions.Add(DQCondition.EQ(sanction, "AccountingUnit_ID", dmo.AccountingUnit_ID));
//var sanctionList = dom.EExecuteList<string, long, string, string>(Session);
//foreach (var tuple in sanctionList)
//{
// if (string.IsNullOrEmpty(tuple.Item3))
// continue;
// var runner = new Runner();
// runner.Global["奖罚依据"] = "";
// runner.Execute(tuple.Item4);
// var bType = TypeMarshal.AsString(runner.Global["奖罚依据"]);
// switch (bType)
// {
// case "屠宰单":
// AddRewardWithButcher(dmo, runner, tuple);
// break;
// case "屠宰异常单":
// AddRewardWithButcherAbnormal(dmo, runner, tuple);
// break;
// default:
// AddDefaultOtherReward(dmo, runner, tuple);
// break;
// }
//}
dmo.OtherRewardDetails.Clear();
var sanction = new JoinAlias(typeof(CW.SanctionSetting));
var abnormalItem = new JoinAlias(typeof(CW.RewardItem));
var dom = new DQueryDom(sanction);
dom.From.AddJoin(JoinType.Left, new DQDmoSource(abnormalItem),
DQCondition.EQ(sanction, "RewardItem_ID", abnormalItem, "ID"));
dom.Columns.Add(DQSelectColumn.Field("Name", abnormalItem));
dom.Columns.Add(DQSelectColumn.Field("ID", sanction));
dom.Columns.Add(DQSelectColumn.Field("Condition", sanction));
dom.Columns.Add(DQSelectColumn.Field("BeforeScript", sanction));
dom.Where.Conditions.Add(DQCondition.EQ(sanction, "FitBill", .));
dom.Where.Conditions.Add(DQCondition.EQ("BillState", .));
var sanctionList = dom.EExecuteList<string, long, string, string>(Session);
foreach (var tuple in sanctionList)
{
if (string.IsNullOrEmpty(tuple.Item3))
continue;
if (string.IsNullOrEmpty(tuple.Item4))
continue;
var runner = new Runner();
runner.Global["奖罚依据"] = "";
runner.Execute(tuple.Item4);
var bType = TypeMarshal.AsString(runner.Global["奖罚依据"]);
switch (bType)
{
case "屠宰单":
AddRewardWithButcher(dmo, runner, tuple);
break;
}
}
}
private void AddDefaultOtherReward(StatPay dmo, Runner runner, Tuple<string, long, string, string> tuple)
{
//runner.Global["单价"] = 0m;
//runner.Global["头数"] = 0;
//runner.Global["金额"] = 0m;
runner.Global["单价"] = 0m;
runner.Global["头数"] = 0;
runner.Global["金额"] = 0m;
//runner.Execute(tuple.Item3 ?? string.Empty);
//var price = TypeMarshal.AsNumber(runner.Global["单价"]);
//var number = TypeMarshal.AsNumber(runner.Global["头数"]);
//var money = TypeMarshal.AsNumber(runner.Global["金额"]);
runner.Execute(tuple.Item3 ?? string.Empty);
var price = TypeMarshal.AsNumber(runner.Global["单价"]);
var number = TypeMarshal.AsNumber(runner.Global["头数"]);
var money = TypeMarshal.AsNumber(runner.Global["金额"]);
//var reDetail = new StatPay_OtherReward();
//reDetail.Price = price;
//reDetail.Number = number;
//reDetail.Money = money;
var reDetail = new StatPay_OtherReward();
reDetail.Price = price;
reDetail.Number = number;
reDetail.Money = money;
//if ((reDetail.Money ?? 0) == 0)
//{
// return;
//}
if ((reDetail.Money ?? 0) == 0)
{
return;
}
//reDetail.Sanction_ID = tuple.Item2;
//reDetail.AbnormalItem_Name = tuple.Item1;
//DmoUtil.RefreshDependency(reDetail, "Sanction_ID");
//dmo.OtherRewardDetails.Add(reDetail);
reDetail.RewardItem_ID = tuple.Item2;
reDetail.RewardItem_Name = tuple.Item1;
DmoUtil.RefreshDependency(reDetail, "RewardItem_ID");
dmo.OtherRewardDetails.Add(reDetail);
}
private DQueryDom GetRewardButcherIdDom(long? dmoWeighId)
@ -694,75 +679,66 @@ namespace BWP.B3SheepButcherManage.BL
private void AddRewardWithButcher(StatPay dmo, Runner runner, Tuple<string, long, string, string> tuple)
{
//var dom = new DQueryDom(new JoinAlias(typeof(Butcher_Detail)));//WeightBill_ID 过磅单号
//dom.Where.Conditions.Add(DQCondition.EQ("StatPay_ID", dmo.ID));
//if (GlobalFlags.get(B3ButcherManageConsts.GlobalFlags.StatPayAddRewardWithButcherUseWeight))
// dom.Columns.Add(DQSelectColumn.Field("Weight"));
//else
// dom.Columns.Add(DQSelectColumn.Field("FinalWeight"));
//dom.Columns.Add(DQSelectColumn.Field("Technics"));
//dom.Columns.Add(DQSelectColumn.Field("WeightBill_ID"));
var dom = new DQueryDom(new JoinAlias(typeof(Butcher_Detail)));//WeightBill_ID 过磅单号
dom.Where.Conditions.Add(DQCondition.EQ("StatPay_ID", dmo.ID));
dom.Columns.Add(DQSelectColumn.Field("Weight"));
dom.Columns.Add(DQSelectColumn.Field("WeightBill_ID"));
//var list = new List<Tuple<Money<decimal>, NamedValue<工艺>?, long>>();
//using (var reader = Session.ExecuteReader(dom))
//{
// while (reader.Read())
// {
// var w = (Money<decimal>?)reader[0];
// if (w.HasValue)
// list.Add(new Tuple<Money<decimal>, NamedValue<工艺>?, long>(w.Value, (NamedValue<工艺>?)reader[1], (long)reader[2]));
// }
//}
var list = new List<Tuple<Money<decimal>, long>>();
using (var reader = Session.ExecuteReader(dom))
{
while (reader.Read())
{
var w = (Money<decimal>?)reader[0];
if (w.HasValue)
list.Add(new Tuple<Money<decimal>, long>(w.Value, (long)reader[1]));
}
}
//var details = new List<StatPay_OtherReward>();
//foreach (var w in list)
//{
// runner.Global["屠宰单结算重"] = w.Item1;
// if (w.Item2.HasValue)
// runner.Global["工艺"] = w.Item2.Value.Name;
// else
// runner.Global["工艺"] = "";
// runner.Global["屠宰异常单头数"] = 0;
// runner.Global["单价"] = 0m;
// runner.Global["头数"] = 0;
// runner.Global["金额"] = 0m;
// runner.Global["结算奖罚重量"] = 0m;
// var var = new OnLoadVar
// {
// Loader = (() => GetSubWeightByScanId(w.Item3, tuple.Item2))
// };
// runner.Global["扣重"] = var;
// runner.Execute(tuple.Item3);
// var price = TypeMarshal.AsNumber(runner.Global["单价"]);
// var number = TypeMarshal.AsNumber(runner.Global["头数"]);
// var money = TypeMarshal.AsNumber(runner.Global["金额"]);
// var rewardWeight = TypeMarshal.AsNumber(runner.Global["结算奖罚重量"]);
// if (money == 0 && rewardWeight == 0)
// {
// continue;
// }
var details = new List<StatPay_OtherReward>();
foreach (var w in list)
{
runner.Global["屠宰单结算重"] = w.Item1;
runner.Global["屠宰异常单头数"] = 0;
runner.Global["单价"] = 0m;
runner.Global["头数"] = 0;
runner.Global["金额"] = 0m;
runner.Global["结算奖罚重量"] = 0m;
var var = new OnLoadVar
{
Loader = (() => GetSubWeightByScanId(w.Item2, tuple.Item2))
};
runner.Global["扣重"] = var;
runner.Execute(tuple.Item3);
var price = TypeMarshal.AsNumber(runner.Global["单价"]);
var number = TypeMarshal.AsNumber(runner.Global["头数"]);
var money = TypeMarshal.AsNumber(runner.Global["金额"]);
var rewardWeight = TypeMarshal.AsNumber(runner.Global["结算奖罚重量"]);
if (money == 0 && rewardWeight == 0)
{
continue;
}
// var detail = new StatPay_OtherReward();
// detail.Price = price;
// detail.Number = number;
// detail.Money = money;
// detail.Weight = rewardWeight;
// details.Add(detail);
//}
//var groups = details.GroupBy(x => x.Price);
//foreach (var @group in groups)
//{
// var detail = @group.FirstOrDefault();
// detail.Sanction_ID = tuple.Item2;
// detail.AbnormalItem_Name = tuple.Item1;
// detail.Price = group.Key;
// detail.Number = group.Sum(x => (x.Number ?? 0).Value);
// detail.Money = group.Sum(x => (x.Money ?? 0).Value);
// detail.Weight = group.Sum(x => (x.Weight ?? 0).Value);
// DmoUtil.RefreshDependency(detail, "Sanction_ID");
// dmo.OtherRewardDetails.Add(detail);
//}
var detail = new StatPay_OtherReward();
detail.Price = price;
detail.Number = number;
detail.Money = money;
detail.Weight = rewardWeight;
details.Add(detail);
}
var groups = details.GroupBy(x => x.Price);
foreach (var @group in groups)
{
var detail = @group.FirstOrDefault();
detail.RewardItem_ID = tuple.Item2;
detail.RewardItem_Name = tuple.Item1;
detail.Price = group.Key;
detail.Number = group.Sum(x => (x.Number ?? 0).Value);
detail.Money = group.Sum(x => (x.Money ?? 0).Value);
detail.Weight = group.Sum(x => (x.Weight ?? 0).Value);
dmo.OtherRewardDetails.Add(detail);
}
}
private void CancelAllDetails<T>(long statPayID)


Loading…
Cancel
Save