diff --git a/B3SheepButcherManage.Web/B3SheepButcherManage.Web.csproj b/B3SheepButcherManage.Web/B3SheepButcherManage.Web.csproj
index c700425..f8550f7 100644
--- a/B3SheepButcherManage.Web/B3SheepButcherManage.Web.csproj
+++ b/B3SheepButcherManage.Web/B3SheepButcherManage.Web.csproj
@@ -144,6 +144,18 @@
ASPXCodeBehind
+
+ ASPXCodeBehind
+
+
+ ASPXCodeBehind
+
+
+ ASPXCodeBehind
+
+
+ ASPXCodeBehind
+
ASPXCodeBehind
@@ -177,6 +189,9 @@
ASPXCodeBehind
+
+ ASPXCodeBehind
+
ASPXCodeBehind
@@ -235,6 +250,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/B3SheepButcherManage.Web/Utils/B3SheepButcherManageChoiceBoxProvider.cs b/B3SheepButcherManage.Web/Utils/B3SheepButcherManageChoiceBoxProvider.cs
index 74fbf8a..1430b67 100644
--- a/B3SheepButcherManage.Web/Utils/B3SheepButcherManageChoiceBoxProvider.cs
+++ b/B3SheepButcherManage.Web/Utils/B3SheepButcherManageChoiceBoxProvider.cs
@@ -59,6 +59,8 @@ namespace BWP.Web.Utils
{
dom.Where.Conditions.Add(DQCondition.EQ("Supplier_ID", long.Parse(argu.CodeArgument)));
}
+ if (!string.IsNullOrEmpty(argu.InputArgument))
+ dom.Where.Conditions.Add(DQCondition.Like("ID", argu.InputArgument));
OrganizationUtil.AddOrganizationLimit(dom, typeof(WeightBill));
dom.Where.Conditions.Add(DQCondition.EQ("Domain_ID", DomainContext.Current.ID));
return Query(dom);
diff --git a/B3SheepButcherManage/B3SheepButcherManage.csproj b/B3SheepButcherManage/B3SheepButcherManage.csproj
index 8a8e3ce..558cbdd 100644
--- a/B3SheepButcherManage/B3SheepButcherManage.csproj
+++ b/B3SheepButcherManage/B3SheepButcherManage.csproj
@@ -91,6 +91,7 @@
+
@@ -100,6 +101,8 @@
+
+
diff --git a/B3SheepButcherManage/BL/Bill/PayBL/PayBL.cs b/B3SheepButcherManage/BL/Bill/PayBL/PayBL.cs
new file mode 100644
index 0000000..6fe5c79
--- /dev/null
+++ b/B3SheepButcherManage/BL/Bill/PayBL/PayBL.cs
@@ -0,0 +1,83 @@
+using BWP.B3Frameworks.BL;
+using BWP.B3Frameworks.BO.MoneyTemplate;
+using BWP.B3Frameworks.BO.NamedValueTemplate;
+using BWP.B3SheepButcherManage.BO;
+using Forks.EnterpriseServices;
+using Forks.EnterpriseServices.BusinessInterfaces;
+using Forks.EnterpriseServices.DomainObjects2;
+using Forks.EnterpriseServices.DomainObjects2.DQuery;
+using Forks.EnterpriseServices.SqlDoms;
+using Forks.Utils;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using TSingSoft.WebPluginFramework;
+
+namespace BWP.B3SheepButcherManage.BL.Bill.PayBL
+{
+ [BusinessInterface(typeof(PayBL))]
+ [LogicName("羊付款单")]
+ public interface IPayBL : IDepartmentWorkFlowBillBL
+ { }
+
+ public class PayBL : DepartmentWorkFlowBillBL, IPayBL
+ {
+ protected override void doCheck(Pay dmo)
+ {
+
+ foreach (var detail in dmo.Details)
+ {
+ var notPayMoney = (detail.StatPay_Money ?? 0) - (detail.AlreadyPaidMoney ?? 0);
+ if ((detail.Money ?? 0) > notPayMoney)
+ {
+ throw new ApplicationException(string.Format("结算单No.{0} 本次付款金额{1}大于未付款金额{2}", detail.StatPay_ID, detail.Money, notPayMoney));
+ }
+ else
+ {
+ detail.AlreadyPaidMoney = detail.AlreadyPaidMoney + detail.Money;
+ }
+ }
+
+ base.doCheck(dmo);
+ UpdateStatPayMoney(dmo);
+ }
+
+ protected override void doUnCheck(Pay dmo)
+ {
+
+ base.doUnCheck(dmo);
+ UpdateStatPayMoney(dmo);
+ }
+
+ private void UpdateStatPayMoney(Pay dmo)
+ {
+ var statPayIds = dmo.Details.Select(x => x.StatPay_ID).ToList();
+ var detail = new JoinAlias(typeof(Pay_Detail));
+ var bill = new JoinAlias(typeof(Pay));
+ var dom = new DQueryDom(detail);
+ dom.From.AddJoin(JoinType.Inner, new DQDmoSource(bill), DQCondition.EQ(bill, "ID", detail, "Pay_ID"));
+ dom.Where.Conditions.Add(DQCondition.Or(DQCondition.EQ(bill, "BillState", 单据状态.已审核), DQCondition.EQ(bill, "BillState", 单据状态.已完毕)));
+ dom.Where.Conditions.EFieldInList("StatPay_ID", statPayIds);
+
+ dom.Columns.Add(DQSelectColumn.Sum(detail, "Money"));
+ dom.Columns.Add(DQSelectColumn.Field("StatPay_ID", detail));
+ dom.Columns.Add(DQSelectColumn.Sum(detail, "AlreadyPaidMoney"));
+
+ dom.GroupBy.Expressions.Add(DQExpression.Field(detail, "StatPay_ID"));
+
+ var tupleList = dom.EExecuteList?, long, Money<金额>?>(Session);
+ foreach (var statPayId in statPayIds)
+ {
+ var money = tupleList.Sum(x => x.Item2 == statPayId ? ((x.Item1 ?? 0).Value + (x.Item3 ?? 0).Value) : 0m);
+
+ var update = new DQUpdateDom(typeof(StatPay));
+ update.Columns.Add(new DQUpdateColumn("PaidMoney", money));
+ update.Columns.Add(new DQUpdateColumn("RowVersion",
+ DQExpression.Add(DQExpression.Field("RowVersion"), DQExpression.ConstValue(1))));
+ update.Where.Conditions.Add(DQCondition.EQ("ID", statPayId));
+ Session.ExecuteNonQuery(update);
+ }
+ }
+ }
+}
diff --git a/B3SheepButcherManage/BL/Bill/StatPayBL/StatPayBL.cs b/B3SheepButcherManage/BL/Bill/StatPayBL/StatPayBL.cs
index 71de6d9..39aee1b 100644
--- a/B3SheepButcherManage/BL/Bill/StatPayBL/StatPayBL.cs
+++ b/B3SheepButcherManage/BL/Bill/StatPayBL/StatPayBL.cs
@@ -453,69 +453,68 @@ namespace BWP.B3SheepButcherManage.BL
public void CancelAllHurryButchers(long statPayID)
{
- //CancelAllDetails(statPayID);
+ CancelAllDetails(statPayID);
}
public void AddHurryButchers(StatPay dmo)
{
- return;
- //var detailAlias = new JoinAlias(typeof(HurryButcher_Detail));
- //var billAlias = new JoinAlias(typeof(HurryButcher));
- //var dom = new DQueryDom(detailAlias);
- //dom.From.AddJoin(JoinType.Inner, new DQDmoSource(billAlias), DQCondition.EQ(billAlias, "ID", detailAlias, "HurryButcher_ID"));
-
- //dom.Where.Conditions.Add(DQCondition.EQ(detailAlias, "StatPay_ID", dmo.ID));
-
- //dom.Columns.Add(DQSelectColumn.Field("HurryButcher_ID"));
- //dom.GroupBy.Expressions.Add(DQExpression.Field("HurryButcher_ID"));
-
- //dom.Columns.Add(DQSelectColumn.Field("Livestock_ID"));
- //dom.GroupBy.Expressions.Add(DQExpression.Field("Livestock_ID"));
-
- //dom.Columns.Add(DQSelectColumn.Field("Livestock_Name"));
- //dom.GroupBy.Expressions.Add(DQExpression.Field("Livestock_Name"));
-
- //dom.Columns.Add(DQSelectColumn.Sum("Weight"));
- //dom.Columns.Add(DQSelectColumn.Sum("Number"));
-
- //dom.Columns.Add(DQSelectColumn.Field("Remark"));
- //dom.GroupBy.Expressions.Add(DQExpression.Field("Remark"));
-
- //dom.Columns.Add(DQSelectColumn.Sum("GrossWeight"));
-
- //dom.Columns.Add(DQSelectColumn.Field("LiveVarieties_ID"));
- //dom.GroupBy.Expressions.Add(DQExpression.Field("LiveVarieties_ID"));
-
- //dom.Columns.Add(DQSelectColumn.Field("LiveVarieties_Name"));
- //dom.GroupBy.Expressions.Add(DQExpression.Field("LiveVarieties_Name"));
-
- //using (var reader = Session.ExecuteReader(dom))
- //{
- // dmo.HurryButcherDetails.Clear();
- // while (reader.Read())
- // {
- // var detail = new StatPay_HurryButcher();
- // detail.HurryButcher_ID = (long?)reader[0];
- // detail.Livestock_ID = (long?)reader[1];
- // detail.Livestock_Name = (string)reader[2];
- // detail.Weight = (Money?)reader[3];
- // detail.Number = (int?)reader[4];
- // detail.Remark = (string)reader[5];
- // detail.PriceWeight = detail.Weight;
- // detail.GrossWeight = (Money?)reader[6];
- // detail.LiveVarieties_ID = (long?)reader[7];
- // detail.LiveVarieties_Name = (string)reader[8];
- // dmo.HurryButcherDetails.Add(detail);
- // }
- //}
-
- //SetPrice(dmo, dmo.HurryButcherDetails);
- //foreach (var detail in dmo.HurryButcherDetails)
- //{
- // detail.Money = detail.Price * detail.Weight;
- //}
-
- //ResetAcquisitionInfo(dmo);
+ var detailAlias = new JoinAlias(typeof(HurryButcher_Detail));
+ var billAlias = new JoinAlias(typeof(HurryButcher));
+ var dom = new DQueryDom(detailAlias);
+ dom.From.AddJoin(JoinType.Inner, new DQDmoSource(billAlias), DQCondition.EQ(billAlias, "ID", detailAlias, "HurryButcher_ID"));
+
+ dom.Where.Conditions.Add(DQCondition.EQ(detailAlias, "StatPay_ID", dmo.ID));
+
+ dom.Columns.Add(DQSelectColumn.Field("HurryButcher_ID"));
+ dom.GroupBy.Expressions.Add(DQExpression.Field("HurryButcher_ID"));
+
+ dom.Columns.Add(DQSelectColumn.Field("Livestock_ID"));
+ dom.GroupBy.Expressions.Add(DQExpression.Field("Livestock_ID"));
+
+ dom.Columns.Add(DQSelectColumn.Field("Livestock_Name"));
+ dom.GroupBy.Expressions.Add(DQExpression.Field("Livestock_Name"));
+
+ dom.Columns.Add(DQSelectColumn.Sum("Weight"));
+ dom.Columns.Add(DQSelectColumn.Sum("Number"));
+
+ dom.Columns.Add(DQSelectColumn.Field("Remark"));
+ dom.GroupBy.Expressions.Add(DQExpression.Field("Remark"));
+
+ dom.Columns.Add(DQSelectColumn.Sum("GrossWeight"));
+
+ dom.Columns.Add(DQSelectColumn.Field("LiveVarieties_ID"));
+ dom.GroupBy.Expressions.Add(DQExpression.Field("LiveVarieties_ID"));
+
+ dom.Columns.Add(DQSelectColumn.Field("LiveVarieties_Name"));
+ dom.GroupBy.Expressions.Add(DQExpression.Field("LiveVarieties_Name"));
+
+ using (var reader = Session.ExecuteReader(dom))
+ {
+ dmo.HurryButcherDetails.Clear();
+ while (reader.Read())
+ {
+ var detail = new StatPay_HurryButcher();
+ detail.HurryButcher_ID = (long?)reader[0];
+ detail.Livestock_ID = (long?)reader[1];
+ detail.Livestock_Name = (string)reader[2];
+ detail.Weight = (Money?)reader[3];
+ detail.Number = (int?)reader[4];
+ detail.Remark = (string)reader[5];
+ detail.PriceWeight = detail.Weight;
+ detail.GrossWeight = (Money?)reader[6];
+ detail.LiveVarieties_ID = (long?)reader[7];
+ detail.LiveVarieties_Name = (string)reader[8];
+ dmo.HurryButcherDetails.Add(detail);
+ }
+ }
+
+ SetPrice(dmo, dmo.HurryButcherDetails);
+ foreach (var detail in dmo.HurryButcherDetails)
+ {
+ detail.Money = detail.Price * detail.Weight;
+ }
+
+ ResetAcquisitionInfo(dmo);
}
public void AddOtherReward(StatPay dmo)
diff --git a/B3SheepButcherManage/BO/Bill/Pay/Pay.cs b/B3SheepButcherManage/BO/Bill/Pay/Pay.cs
new file mode 100644
index 0000000..09d1461
--- /dev/null
+++ b/B3SheepButcherManage/BO/Bill/Pay/Pay.cs
@@ -0,0 +1,111 @@
+using BWP.B3Frameworks;
+using BWP.B3Frameworks.BO;
+using BWP.B3Frameworks.BO.MoneyTemplate;
+using BWP.B3ProcurementInterface.BO;
+using BWP.B3ProcurementInterface.Utils;
+using BWP.B3UnitedInfos;
+using BWP.B3UnitedInfos.BO;
+using Forks.EnterpriseServices;
+using Forks.EnterpriseServices.DataForm;
+using Forks.EnterpriseServices.DomainObjects2;
+using Forks.Utils;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BWP.B3SheepButcherManage.BO
+{
+ [Serializable]
+ [DFClass]
+ [LogicName("羊付款单")]
+ [BillAccountTarget(typeof(Supplier))]
+ [DmoTypeID(B3FrameworksConsts.DmoTypeIDBases.B3SheepButcherManage, B3SheepButcherManageConsts.DmoTypeIDOffsets.Pay)]
+ public class Pay : DepartmentWorkFlowBill
+ {
+ [LogicName("供应商")]
+ [DFDataKind(B3ProcurementInterfaceDataSources.供应商)]
+ [DFExtProperty(B3FrameworksConsts.DFExtProperties.DisplayField, "Supplier_Name")]
+ [DFExtProperty(B3FrameworksConsts.DFExtProperties.QueryDataKind, B3ProcurementInterfaceDataSources.供应商全部)]
+ public long? Supplier_ID { get; set; }
+
+ private DateTime? mDate = DateTime.Today;
+
+ [LogicName("付款日期")]
+ public DateTime? Date
+ {
+ get { return mDate; }
+ set { mDate = value; }
+ }
+
+ [LogicName("付款账户")]
+ [DFDataKind(B3UnitedInfosConsts.DataSources.账户)]
+ [DFExtProperty(B3FrameworksConsts.DFExtProperties.DisplayField, "Account_Name")]
+ public long? Account_ID { get; set; }
+
+ [LogicName("付款金额")]
+ public Money<金额>? Money { get; set; }
+
+ [LogicName("付款对象")]
+ [DFDataKind(B3ProcurementInterfaceDataSources.供应商)]
+ [DFExtProperty(B3FrameworksConsts.DFExtProperties.DisplayField, "PaySupplier_Name")]
+ [DFExtProperty(B3FrameworksConsts.DFExtProperties.QueryDataKind, B3ProcurementInterfaceDataSources.供应商全部)]
+ public long? PaySupplier_ID { get; set; }
+
+ [LogicName("付款对象")]
+ [ReferenceTo(typeof(Supplier), "Name")]
+ [Join("PaySupplier_ID", "ID")]
+ public string PaySupplier_Name { get; set; }
+
+
+ [LogicName("支付账户")]
+ [ReferenceTo(typeof(Supplier), "AccountNo")]
+ [Join("PaySupplier_ID", "ID")]
+ public string PaySupplier_AccountNo { get; set; }
+
+ private Pay_DetailCollection mDetails = new Pay_DetailCollection();
+
+ [OneToMany(typeof(Pay_Detail), "ID")]
+ [Join("ID", "Pay_ID")]
+ public Pay_DetailCollection Details
+ {
+ get
+ {
+ return mDetails;
+ }
+ }
+
+ #region ReferenceTo
+
+ [LogicName("供应商")]
+ [ReferenceTo(typeof(Supplier), "Name")]
+ [Join("Supplier_ID", "ID")]
+ public string Supplier_Name { get; set; }
+
+ [LogicName("付款账户")]
+ [ReferenceTo(typeof(Account), "Name")]
+ [Join("Account_ID", "ID")]
+ public string Account_Name { get; set; }
+
+ [ReferenceTo(typeof(Account), "BankAccountNumber")]
+ [Join("Account_ID", "ID")]
+ [DFPrompt("银行账号")]
+ public string Account_BankAccountNumber { get; set; }
+
+ #endregion
+
+ public IList CreateBillAccount()
+ {
+ var list = new List();
+ var target = new BaseDetailAccountInfo();
+ var dateTime = Date;
+ if (dateTime != null)
+ target.Date = dateTime.Value.Date;
+ //target.Money = Money ?? 0;
+ target.TargetID = Supplier_ID ?? 0;
+ target.TargetTypeID = DmoTypeIDAttribute.GetID(typeof(Supplier));
+ list.Add(target);
+ return list;
+ }
+ }
+}
diff --git a/B3SheepButcherManage/BO/Bill/Pay/Pay_Detail.cs b/B3SheepButcherManage/BO/Bill/Pay/Pay_Detail.cs
new file mode 100644
index 0000000..9189b4f
--- /dev/null
+++ b/B3SheepButcherManage/BO/Bill/Pay/Pay_Detail.cs
@@ -0,0 +1,58 @@
+using BWP.B3Frameworks.BO;
+using BWP.B3Frameworks.BO.MoneyTemplate;
+using Forks.EnterpriseServices;
+using Forks.EnterpriseServices.DataDictionary;
+using Forks.EnterpriseServices.DataForm;
+using Forks.EnterpriseServices.DomainObjects2;
+using Forks.Utils;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BWP.B3SheepButcherManage.BO
+{
+ [LogicName("付款明细")]
+ [DFClass, Serializable]
+ public class Pay_Detail : Base
+ {
+ [LogicName("付款单号"), DbColumn(Index = IndexType.Normal)]
+ public long Pay_ID { get; set; }
+
+ [LogicName("结算单")]
+ public long? StatPay_ID { get; set; }
+
+ [LogicName("备注")]
+ public string Remark { get; set; }
+
+ [LogicName("本次付款金额")]
+ public Money<金额>? Money { get; set; }
+
+ [LogicName("结算日期")]
+ [ReferenceTo(typeof(StatPay), "Date")]
+ [Join("StatPay_ID", "ID")]
+ public DateTime? StatPay_Date { get; set; }
+
+ [LogicName("过磅时间")]
+ [ReferenceTo(typeof(StatPay), "WeighTime")]
+ [Join("StatPay_ID", "ID")]
+ public DateTime? WeighTime { get; set; }
+
+ [LogicName("过磅单")]
+ [ReferenceTo(typeof(StatPay), "WeightBill_ID")]
+ [Join("StatPay_ID", "ID")]
+ public long? Weigh_ID { get; set; }
+
+ [LogicName("应付金额")]
+ [ReferenceTo(typeof(StatPay), "ActualMoney")]
+ [Join("StatPay_ID", "ID")]
+ public Money<金额>? StatPay_Money { get; set; }
+
+ [LogicName("已付金额")]
+ public Money<金额>? AlreadyPaidMoney { get; set; }
+ }
+
+ [Serializable]
+ public class Pay_DetailCollection : DmoCollection
+ { }
+}
diff --git a/B3SheepButcherManage/DmoTypeIDOffsets.cs b/B3SheepButcherManage/DmoTypeIDOffsets.cs
index 068f85a..0312e01 100644
--- a/B3SheepButcherManage/DmoTypeIDOffsets.cs
+++ b/B3SheepButcherManage/DmoTypeIDOffsets.cs
@@ -16,6 +16,7 @@ namespace BWP.B3SheepButcherManage
public const byte Butcher = 5;
public const byte StatPay = 6;
public const byte HurryButcher = 7;
+ public const byte Pay = 8;
}
public static class DataSources
diff --git a/WebFolder/config/Plugins/B3SheepButcherManage.Plugin b/WebFolder/config/Plugins/B3SheepButcherManage.Plugin
index e06aed6..a661caa 100644
--- a/WebFolder/config/Plugins/B3SheepButcherManage.Plugin
+++ b/WebFolder/config/Plugins/B3SheepButcherManage.Plugin
@@ -116,6 +116,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -128,12 +144,14 @@
+
+
diff --git a/WebFolder/config/billreports/B3SheepButcherManage/PayPrint.xml b/WebFolder/config/billreports/B3SheepButcherManage/PayPrint.xml
new file mode 100644
index 0000000..089a2f3
--- /dev/null
+++ b/WebFolder/config/billreports/B3SheepButcherManage/PayPrint.xml
@@ -0,0 +1,32 @@
+
+
+
+
+
+ 羊付款单№$Dmo.ID
+
+
+
+
+
+
+
+
+
+
+ 付款明细]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+