|
|
@ -520,80 +520,65 @@ namespace BWP.B3SheepButcherManage.BL |
|
|
|
|
|
|
|
|
public void AddOtherReward(StatPay dmo) |
|
|
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) |
|
|
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) |
|
|
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) |
|
|
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) |
|
|
private void CancelAllDetails<T>(long statPayID) |
|
|
|