| @ -0,0 +1,135 @@ | |||||
| using BWP.B3Frameworks.BO.NamedValueTemplate; | |||||
| using BWP.B3Frameworks.Utils; | |||||
| using BWP.B3SheepButcherManage.BL; | |||||
| using BWP.B3SheepButcherManage.BO; | |||||
| using Forks.EnterpriseServices.BusinessInterfaces; | |||||
| using Forks.EnterpriseServices.DataForm; | |||||
| using Forks.EnterpriseServices.DomainObjects2; | |||||
| using Forks.EnterpriseServices.DomainObjects2.DQuery; | |||||
| using Forks.EnterpriseServices.SqlDoms; | |||||
| using System; | |||||
| using System.Collections.Generic; | |||||
| using System.Linq; | |||||
| using System.Text; | |||||
| using System.Web.UI; | |||||
| using System.Web.UI.WebControls; | |||||
| using TSingSoft.WebControls2; | |||||
| namespace BWP.Web.Pages.B3SheepButcherManage.Bills.StatPay_ | |||||
| { | |||||
| class SelectButcherDetailDialog : DmoMultiSelectDialog<Butcher_Detail, StatPay_Butcher> | |||||
| { | |||||
| long? DmoID | |||||
| { | |||||
| get | |||||
| { | |||||
| var strW = Request.QueryString["DmoID"]; | |||||
| if (string.IsNullOrEmpty(strW)) | |||||
| return null; | |||||
| return long.Parse(strW); | |||||
| } | |||||
| } | |||||
| DFCheckBox _hideSelected; | |||||
| protected override void CreateQuery(VLayoutPanel vPanel) | |||||
| { | |||||
| var tablePanel = new TableLayoutPanel(8, 2); | |||||
| vPanel.Add(tablePanel); | |||||
| tablePanel.Add(0, 1, 0, 1, new DFLabel(mDFInfo.Fields["Butcher_ID"], 4)); | |||||
| tablePanel.Add(1, 2, 0, 1, mQueryContainer.Add(new DFTextBox(mDFInfo.Fields["Butcher_ID"]), "Butcher_ID")); | |||||
| tablePanel.Add(2, 3, 0, 1, new DFLabel(mDFInfo.Fields["Sequence"], 4)); | |||||
| tablePanel.Add(3, 4, 0, 1, mQueryContainer.Add(new DFTextBox(mDFInfo.Fields["Sequence"]), "Sequence")); | |||||
| tablePanel.Add(4, 5, 0, 1, new DFLabel(mDFInfo.Fields["PhaseCode"], 4)); | |||||
| tablePanel.Add(5, 6, 0, 1, mQueryContainer.Add(new DFTextBox(mDFInfo.Fields["PhaseCode"]), "PhaseCode")); | |||||
| _hideSelected = new DFCheckBox { Text = "隐藏已选单据", Checked = true }; | |||||
| tablePanel.Add(6, 7, 0, 1, _hideSelected); | |||||
| base.CreateQuery(vPanel); | |||||
| } | |||||
| protected override void SetResultFromDFDataRow(StatPay_Butcher dmo, DFDataRow row) | |||||
| { | |||||
| } | |||||
| protected override void AddSelectButtons(Control parent) | |||||
| { | |||||
| } | |||||
| protected override void CreateQueryGrid(VLayoutPanel vPanel) | |||||
| { | |||||
| var hPanel = new HLayoutPanel(); | |||||
| vPanel.Add(hPanel, new VLayoutOption(HorizontalAlign.Left)); | |||||
| var select = new TSButton("选择"); | |||||
| var cancel = new TSButton("取消"); | |||||
| hPanel.Add(select); | |||||
| hPanel.Add(cancel); | |||||
| select.Click += delegate | |||||
| { | |||||
| if (DmoID == null) | |||||
| throw new ApplicationException("结算单号为空"); | |||||
| var list = queryGrid.GetSelectedItems().Select(row => (long)row["ID"]).ToList(); | |||||
| var bl = BIFactory.Create<IStatPayBL>(); | |||||
| bl.SetButcherDetails(list, DmoID.Value); | |||||
| queryGrid.DataBind(); | |||||
| }; | |||||
| cancel.Click += delegate | |||||
| { | |||||
| if (DmoID == null) | |||||
| throw new ApplicationException("结算单号为空"); | |||||
| var list = queryGrid.GetSelectedItems().Select(row => (long)row["ID"]).ToList(); | |||||
| var bl = BIFactory.Create<IStatPayBL>(); | |||||
| bl.CancelButcherDetails(list, DmoID.Value); | |||||
| queryGrid.DataBind(); | |||||
| }; | |||||
| base.CreateQueryGrid(vPanel); | |||||
| } | |||||
| protected override void CreateQueryGridColumns(DFBrowseGrid grid) | |||||
| { | |||||
| grid.Columns.Add(new DFBrowseGridColumn("Butcher_ID")); | |||||
| grid.Columns.Add(new DFBrowseGridColumn("Sequence")); | |||||
| grid.Columns.Add(new DFBrowseGridColumn("PhaseCode")); | |||||
| grid.Columns.Add(new DFBrowseGridColumn("WeightBill_ID")); | |||||
| grid.Columns.Add(new DFBrowseGridColumn("Livestock_Name")); | |||||
| grid.Columns.Add(new DFBrowseGridColumn("Weight")); | |||||
| grid.Columns.Add(new DFBrowseGridColumn("FinalWeight")); | |||||
| grid.Columns.Add(new DFBrowseGridColumn("StatPay_ID")); | |||||
| grid.Columns.Add(new DFBrowseGridColumn("Remark")); | |||||
| } | |||||
| protected override DQueryDom GetQueryDom() | |||||
| { | |||||
| var bill = new JoinAlias(typeof(Butcher)); | |||||
| var detail = JoinAlias.Create("detail"); | |||||
| var dom = base.GetQueryDom(); | |||||
| dom.From.AddJoin(JoinType.Left, new DQDmoSource(bill), DQCondition.EQ(detail, "Butcher_ID", bill, "ID")); | |||||
| dom.Columns.Add(DQSelectColumn.Field("ID")); | |||||
| using (var context = new TransactionContext()) | |||||
| { | |||||
| var weightID = InnerBLUtil.GetDmoPropertyByID<long?>(context.Session, typeof(StatPay), "WeightBill_ID", DmoID ?? 0); | |||||
| if (weightID != null) | |||||
| dom.Where.Conditions.Add(DQCondition.EQ("WeightBill_ID", weightID)); | |||||
| } | |||||
| if (_hideSelected.Checked) | |||||
| { | |||||
| dom.Where.Conditions.Add(DQCondition.IsNull(DQExpression.Field("StatPay_ID"))); | |||||
| } | |||||
| dom.Where.Conditions.Add(DQCondition.IsNotNull(DQExpression.Field("Weight"))); | |||||
| dom.Where.Conditions.Add(DQCondition.EQ(bill, "BillState", 单据状态.已审核)); | |||||
| return dom; | |||||
| } | |||||
| } | |||||
| } | |||||
| @ -0,0 +1,24 @@ | |||||
| <?xml version="1.0" encoding="utf-8" ?> | |||||
| <Select xmlns="urn:XDQuery"> | |||||
| <Columns> | |||||
| </Columns> | |||||
| <From> | |||||
| <DmoClass class="BWP.B3SheepButcherManage.BO.Butcher_Detail, B3SheepButcherManage" alias="detail" /> | |||||
| </From> | |||||
| <Where> | |||||
| <And> | |||||
| <EQ> | |||||
| <Field name="Butcher_ID"/> | |||||
| <QBE paramName="Butcher_ID"/> | |||||
| </EQ> | |||||
| <EQ> | |||||
| <Field name="Sequence"/> | |||||
| <QBE paramName="Sequence"/> | |||||
| </EQ> | |||||
| <EQ> | |||||
| <Field name="PhaseCode"/> | |||||
| <QBE paramName="PhaseCode"/> | |||||
| </EQ> | |||||
| </And> | |||||
| </Where> | |||||
| </Select> | |||||
| @ -0,0 +1,154 @@ | |||||
| using System; | |||||
| using System.Collections.Generic; | |||||
| using System.Linq; | |||||
| using System.Text; | |||||
| using TSingSoft.WebPluginFramework.Pages; | |||||
| namespace BWP.Web.Pages.B3SheepButcherManage.Bills.StatPay_ | |||||
| { | |||||
| class SelectHurryButcherDialog:ServerPage //: DmoMultiSelectDialog<HurryButcher, StatPay_HurryButcher> | |||||
| { | |||||
| //long? DmoID | |||||
| //{ | |||||
| // get | |||||
| // { | |||||
| // var strW = Request.QueryString["DmoID"]; | |||||
| // if (string.IsNullOrEmpty(strW)) | |||||
| // return null; | |||||
| // return long.Parse(strW); | |||||
| // } | |||||
| //} | |||||
| //DFCheckBox _hideSelected; | |||||
| //protected override void CreateQuery(VLayoutPanel vPanel) | |||||
| //{ | |||||
| // var tablePanel = new TableLayoutPanel(8, 2); | |||||
| // vPanel.Add(tablePanel); | |||||
| // tablePanel.Add(0, 1, 0, 1, new DFLabel(mDFInfo.Fields["ID"], 4)); | |||||
| // tablePanel.Add(1, 2, 0, 1, mQueryContainer.Add(new DFTextBox(mDFInfo.Fields["ID"]), "ID")); | |||||
| // tablePanel.Add(4, 5, 0, 1, new DFLabel(mDFInfo.Fields["Supplier_ID"], 4)); | |||||
| // tablePanel.Add(5, 6, 0, 1, mQueryContainer.Add(QueryCreator.DFChoiceBox(mDFInfo.Fields["Supplier_ID"], B3ProcurementInterfaceDataSources.供应商用于屠宰场), "Supplier_ID")); | |||||
| // _hideSelected = new DFCheckBox { Text = "隐藏已选单据", Checked = true }; | |||||
| // tablePanel.Add(6, 7, 0, 1, _hideSelected); | |||||
| // base.CreateQuery(vPanel); | |||||
| //} | |||||
| //protected override void SetResultFromDFDataRow(StatPay_HurryButcher dmo, DFDataRow row) | |||||
| //{ | |||||
| //} | |||||
| //protected override void AddSelectButtons(Control parent) | |||||
| //{ | |||||
| //} | |||||
| //protected override void CreateQueryGrid(VLayoutPanel vPanel) | |||||
| //{ | |||||
| // base.CreateQueryGrid(vPanel); | |||||
| // var hPanel = new HLayoutPanel(); | |||||
| // vPanel.Add(hPanel, new VLayoutOption(HorizontalAlign.Left)); | |||||
| // var select = new TSButton("选择"); | |||||
| // var cancel = new TSButton("取消"); | |||||
| // hPanel.Add(select); | |||||
| // hPanel.Add(cancel); | |||||
| // select.Click += delegate | |||||
| // { | |||||
| // if (DmoID == null) | |||||
| // throw new ApplicationException("结算单号为空"); | |||||
| // var list = queryGrid.GetSelectedItems().Select(row => (long)row["DetailID"]).ToList(); | |||||
| // var bl = BIFactory.Create<IStatPayBL>(); | |||||
| // bl.SetHurryButchers(list, DmoID.Value); | |||||
| // queryGrid.DataBind(); | |||||
| // }; | |||||
| // cancel.Click += delegate | |||||
| // { | |||||
| // if (DmoID == null) | |||||
| // throw new ApplicationException("结算单号为空"); | |||||
| // var list = queryGrid.GetSelectedItems().Select(row => (long)row["DetailID"]).ToList(); | |||||
| // var bl = BIFactory.Create<IStatPayBL>(); | |||||
| // bl.CancelHurryButchers(list, DmoID.Value); | |||||
| // queryGrid.DataBind(); | |||||
| // }; | |||||
| //} | |||||
| //protected override void CreateQueryGridColumns(DFBrowseGrid grid) | |||||
| //{ | |||||
| // grid.Columns.Add(new DFBrowseGridColumn("ID")); | |||||
| // grid.Columns.Add(new DFBrowseGridColumn("Date")); | |||||
| // grid.Columns.Add(new DFBrowseGridColumn("Employee_Name")); | |||||
| // grid.Columns.Add(new DFBrowseGridColumn("Supplier_Name")); | |||||
| // grid.Columns.Add(new DFBrowseGridColumn("BillState")); | |||||
| // grid.Columns.Add(new DFBrowseGridColumn("StatPay_ID")); | |||||
| // grid.Columns.Add(new DFBrowseGridColumn("LiveVarieties_Name")); | |||||
| // grid.Columns.Add(new DFBrowseGridColumn("Livestock_Name")); | |||||
| // grid.Columns.Add(new DFBrowseGridColumn("Number")); | |||||
| // grid.Columns.Add(new DFBrowseGridColumn("Weight")); | |||||
| // grid.Columns.Add(new DFBrowseGridColumn("Weigh_ID")); | |||||
| // grid.Columns.Add(new DFBrowseGridColumn("Remark")); | |||||
| //} | |||||
| //protected override DQueryDom GetQueryDom() | |||||
| //{ | |||||
| // var dom = base.GetQueryDom(); | |||||
| // var main = dom.From.RootSource.Alias; | |||||
| // var detail = new JoinAlias(typeof(HurryButcher_Detail)); | |||||
| // dom.Columns.Add(DQSelectColumn.Field("ID", main)); | |||||
| // dom.Columns.Add(DQSelectColumn.Field("Date", main)); | |||||
| // dom.Columns.Add(DQSelectColumn.Field("Employee_Name", main)); | |||||
| // dom.Columns.Add(DQSelectColumn.Field("Remark", main)); | |||||
| // dom.Columns.Add(DQSelectColumn.Field("BillState", main)); | |||||
| // dom.Columns.Add(DQSelectColumn.Field("StatPay_ID", detail)); | |||||
| // dom.Columns.Add(DQSelectColumn.Field("Livestock_Name", detail)); | |||||
| // dom.Columns.Add(DQSelectColumn.Field("LiveVarieties_ID", detail)); | |||||
| // dom.Columns.Add(DQSelectColumn.Field("LiveVarieties_Name", detail)); | |||||
| // dom.Columns.Add(DQSelectColumn.Field("Number", detail)); | |||||
| // dom.Columns.Add(DQSelectColumn.Field("Weight", detail)); | |||||
| // dom.Columns.Add(DQSelectColumn.Field("Weigh_ID", detail)); | |||||
| // dom.Columns.Add(DQSelectColumn.Create(DQExpression.Field(detail, "ID"), "DetailID")); | |||||
| // dom.From.AddJoin(JoinType.Left, new DQDmoSource(detail), DQCondition.EQ(main, "ID", detail, "HurryButcher_ID")); | |||||
| // using (var context = new TransactionContext()) | |||||
| // { | |||||
| // var supID = InnerBLUtil.GetDmoPropertyByID<long?>(context.Session, typeof(StatPay), "Supplier_ID", DmoID ?? 0); | |||||
| // dom.Where.Conditions.Add(DQCondition.EQ("Supplier_ID", supID)); | |||||
| // var weightID = InnerBLUtil.GetDmoPropertyByID<long?>(context.Session, typeof(StatPay), "Weigh_ID", DmoID ?? 0); | |||||
| // var weightDate = InnerBLUtil.GetDmoPropertyByID<DateTime?>(context.Session, typeof(WeighBill), "WeighTime", weightID ?? 0); | |||||
| // if (weightDate.HasValue) | |||||
| // { | |||||
| // var startDate = weightDate.Value.Date; | |||||
| // var endDate = weightDate.Value.AddDays(1); | |||||
| // var beforeWeighCondition = DQCondition.And(DQCondition.IsNull(DQExpression.Field(detail, "Weigh_ID")), | |||||
| // DQCondition.EQ(detail, "AfterWeigh", false), DQCondition.GreaterThanOrEqual("Date", startDate), | |||||
| // DQCondition.LessThan("Date", endDate)); | |||||
| // dom.Where.Conditions.Add(DQCondition.Or(DQCondition.EQ(detail, "Weigh_ID", weightID), beforeWeighCondition)); | |||||
| // } | |||||
| // } | |||||
| // if (_hideSelected.Checked) | |||||
| // { | |||||
| // dom.Where.Conditions.Add(DQCondition.IsNull(DQExpression.Field(detail, "StatPay_ID"))); | |||||
| // } | |||||
| // dom.Where.Conditions.Add(DQCondition.EQ(main, "BillState", 单据状态.已审核)); | |||||
| // return dom; | |||||
| //} | |||||
| protected override void InitForm(System.Web.UI.HtmlControls.HtmlForm form) | |||||
| { | |||||
| } | |||||
| } | |||||
| } | |||||
| @ -0,0 +1,22 @@ | |||||
| <?xml version="1.0" encoding="utf-8" ?> | |||||
| <Select xmlns="urn:XDQuery"> | |||||
| <Columns> | |||||
| </Columns> | |||||
| <From> | |||||
| <DmoClass class="BWP.B3SheepButcherManage.BO.HurryButcher, B3SheepButcherManage" alias="bill" /> | |||||
| </From> | |||||
| <Where> | |||||
| <And> | |||||
| <EQ> | |||||
| <Field name="ID"/> | |||||
| <QBE paramName="ID"/> | |||||
| </EQ> | |||||
| <EQ> | |||||
| <Field name="Supplier_ID"/> | |||||
| <QBE paramName="Supplier_ID"/> | |||||
| </EQ> | |||||
| </And> | |||||
| </Where> | |||||
| </Select> | |||||
| @ -0,0 +1,158 @@ | |||||
| using BWP.B3Frameworks.BO.NamedValueTemplate; | |||||
| using BWP.B3Frameworks.Utils; | |||||
| using BWP.B3ProcurementInterface.Utils; | |||||
| using BWP.B3SheepButcherManage.BO; | |||||
| using BWP.Web.Utils; | |||||
| using Forks.EnterpriseServices.BusinessInterfaces; | |||||
| using Forks.EnterpriseServices.DataForm; | |||||
| using Forks.EnterpriseServices.DomainObjects2; | |||||
| using Forks.EnterpriseServices.DomainObjects2.DQuery; | |||||
| using Forks.EnterpriseServices.SqlDoms; | |||||
| using System; | |||||
| using System.Collections.Generic; | |||||
| using System.Linq; | |||||
| using System.Text; | |||||
| using System.Web.UI; | |||||
| using TSingSoft.WebControls2; | |||||
| namespace BWP.Web.Pages.B3SheepButcherManage.Bills.StatPay_ | |||||
| { | |||||
| class SelectWeightDetailDialog : DmoMultiSelectDialog<WeightBill, StatPay_Weight> | |||||
| { | |||||
| long? DmoID | |||||
| { | |||||
| get | |||||
| { | |||||
| var strW = Request.QueryString["DmoID"]; | |||||
| if (string.IsNullOrEmpty(strW)) | |||||
| return null; | |||||
| return long.Parse(strW); | |||||
| } | |||||
| } | |||||
| DFCheckBox _hideSelected; | |||||
| protected override void CreateQuery(VLayoutPanel vPanel) | |||||
| { | |||||
| var tablePanel = new TableLayoutPanel(8, 2); | |||||
| vPanel.Add(tablePanel); | |||||
| tablePanel.Add(0, 1, 0, 1, new DFLabel(mDFInfo.Fields["ID"], 4)); | |||||
| tablePanel.Add(1, 2, 0, 1, mQueryContainer.Add(new DFTextBox(mDFInfo.Fields["ID"]), "ID")); | |||||
| tablePanel.Add(4, 5, 0, 1, new DFLabel(mDFInfo.Fields["Supplier_ID"], 4)); | |||||
| tablePanel.Add(5, 6, 0, 1, mQueryContainer.Add(QueryCreator.DFChoiceBox(mDFInfo.Fields["Supplier_ID"], B3ProcurementInterfaceDataSources.供应商用于屠宰场), "Supplier_ID")); | |||||
| _hideSelected = new DFCheckBox { Text = "隐藏已选单据", Checked = true }; | |||||
| tablePanel.Add(6, 7, 0, 1, _hideSelected); | |||||
| base.CreateQuery(vPanel); | |||||
| } | |||||
| protected override void SetResultFromDFDataRow(StatPay_Weight dmo, DFDataRow row) | |||||
| { | |||||
| } | |||||
| protected override void AddSelectButtons(Control parent) | |||||
| { | |||||
| } | |||||
| protected override void CreateQueryGrid(VLayoutPanel vPanel) | |||||
| { | |||||
| // base.CreateQueryGrid(vPanel); | |||||
| // var hPanel = new HLayoutPanel(); | |||||
| // vPanel.Add(hPanel, new VLayoutOption(HorizontalAlign.Left)); | |||||
| // var select = new TSButton("选择"); | |||||
| // var cancel = new TSButton("取消"); | |||||
| // | |||||
| // hPanel.Add(select); | |||||
| // hPanel.Add(cancel); | |||||
| // | |||||
| // select.Click += delegate | |||||
| // { | |||||
| // if (DmoID == null) | |||||
| // throw new ApplicationException("结算单号为空"); | |||||
| // var list = queryGrid.GetSelectedItems().Select(row => (long)row["ID"]).ToList(); | |||||
| // | |||||
| // var bl = BIFactory.Create<IStatPayBL>(); | |||||
| // bl.SetButcherDetails(list, DmoID.Value); | |||||
| // queryGrid.DataBind(); | |||||
| // }; | |||||
| // cancel.Click += delegate | |||||
| // { | |||||
| // if (DmoID == null) | |||||
| // throw new ApplicationException("结算单号为空"); | |||||
| // var list = queryGrid.GetSelectedItems().Select(row => (long)row["ID"]).ToList(); | |||||
| // var bl = BIFactory.Create<IStatPayBL>(); | |||||
| // bl.CancelButcherDetails(list, DmoID.Value); | |||||
| // queryGrid.DataBind(); | |||||
| // }; | |||||
| } | |||||
| protected override void CreateQueryGridColumns(DFBrowseGrid grid) | |||||
| { | |||||
| grid.Columns.Add(new DFBrowseGridColumn("ID")); | |||||
| grid.Columns.Add(new DFBrowseGridColumn("Date")); | |||||
| grid.Columns.Add(new DFBrowseGridColumn("Employee_Name")); | |||||
| grid.Columns.Add(new DFBrowseGridColumn("Supplier_Name")); | |||||
| grid.Columns.Add(new DFBrowseGridColumn("BillState")); | |||||
| grid.Columns.Add(new DFBrowseGridColumn("StatPay_ID")); | |||||
| grid.Columns.Add(new DFBrowseGridColumn("Livestock_Name")); | |||||
| grid.Columns.Add(new DFBrowseGridColumn("Number")); | |||||
| grid.Columns.Add(new DFBrowseGridColumn("Weight")); | |||||
| grid.Columns.Add(new DFBrowseGridColumn("WeightBill_ID")); | |||||
| grid.Columns.Add(new DFBrowseGridColumn("Remark")); | |||||
| } | |||||
| protected override DQueryDom GetQueryDom() | |||||
| { | |||||
| var dom = base.GetQueryDom(); | |||||
| var main = dom.From.RootSource.Alias; | |||||
| var detail = new JoinAlias(typeof(WeightBill_Record)); | |||||
| dom.Columns.Add(DQSelectColumn.Field("ID", main)); | |||||
| dom.Columns.Add(DQSelectColumn.Field("Date", main)); | |||||
| dom.Columns.Add(DQSelectColumn.Field("Employee_Name", main)); | |||||
| dom.Columns.Add(DQSelectColumn.Field("Remark", main)); | |||||
| dom.Columns.Add(DQSelectColumn.Field("BillState", main)); | |||||
| dom.Columns.Add(DQSelectColumn.Field("StatPay_ID", detail)); | |||||
| dom.Columns.Add(DQSelectColumn.Field("Livestock_Name", detail)); | |||||
| dom.Columns.Add(DQSelectColumn.Field("Number", detail)); | |||||
| dom.Columns.Add(DQSelectColumn.Field("Weight", detail)); | |||||
| dom.Columns.Add(DQSelectColumn.Field("WeightBill_ID", detail)); | |||||
| dom.Columns.Add(DQSelectColumn.Create(DQExpression.Field(detail, "ID"), "DetailID")); | |||||
| dom.From.AddJoin(JoinType.Left, new DQDmoSource(detail), DQCondition.EQ(main, "ID", detail, "WeightBill_ID")); | |||||
| using (var context = new TransactionContext()) | |||||
| { | |||||
| var supID = InnerBLUtil.GetDmoPropertyByID<long?>(context.Session, typeof(StatPay), "Supplier_ID", DmoID ?? 0); | |||||
| dom.Where.Conditions.Add(DQCondition.EQ("Supplier_ID", supID)); | |||||
| var weightBillID = InnerBLUtil.GetDmoPropertyByID<long?>(context.Session, typeof(StatPay), "WeightBill_ID", DmoID ?? 0); | |||||
| var weightDate = InnerBLUtil.GetDmoPropertyByID<DateTime?>(context.Session, typeof(WeightBill), "WeighTime", weightBillID ?? 0); | |||||
| if (weightDate.HasValue) | |||||
| { | |||||
| var startDate = weightDate.Value.Date; | |||||
| var endDate = weightDate.Value.AddDays(1); | |||||
| var beforeWeighCondition = DQCondition.And(DQCondition.IsNull(DQExpression.Field(detail, "WeightBill_ID")),DQCondition.GreaterThanOrEqual("Date", startDate), | |||||
| DQCondition.LessThan("Date", endDate)); | |||||
| dom.Where.Conditions.Add(DQCondition.Or(DQCondition.EQ(detail, "WeightBill_ID", weightBillID), beforeWeighCondition)); | |||||
| } | |||||
| } | |||||
| if (_hideSelected.Checked) | |||||
| { | |||||
| dom.Where.Conditions.Add(DQCondition.IsNull(DQExpression.Field(detail, "StatPay_ID"))); | |||||
| } | |||||
| dom.Where.Conditions.Add(DQCondition.EQ(main, "BillState", 单据状态.已审核)); | |||||
| return dom; | |||||
| } | |||||
| } | |||||
| } | |||||
| @ -0,0 +1,22 @@ | |||||
| <?xml version="1.0" encoding="utf-8" ?> | |||||
| <Select xmlns="urn:XDQuery"> | |||||
| <Columns> | |||||
| </Columns> | |||||
| <From> | |||||
| <DmoClass class="BWP.B3SheepButcherManage.BO.WeightBill, B3SheepButcherManage" alias="bill" /> | |||||
| </From> | |||||
| <Where> | |||||
| <And> | |||||
| <EQ> | |||||
| <Field name="ID"/> | |||||
| <QBE paramName="ID"/> | |||||
| </EQ> | |||||
| <EQ> | |||||
| <Field name="Supplier_ID"/> | |||||
| <QBE paramName="Supplier_ID"/> | |||||
| </EQ> | |||||
| </And> | |||||
| </Where> | |||||
| </Select> | |||||
| @ -0,0 +1,504 @@ | |||||
| using BWP.B3CowButcherManage.NamedValueTemplate; | |||||
| using BWP.B3SheepButcherManage.BL; | |||||
| using BWP.B3SheepButcherManage.BO; | |||||
| using BWP.Web.WebControls; | |||||
| using Forks.EnterpriseServices.DataForm; | |||||
| using Forks.Utils; | |||||
| using System; | |||||
| using System.Collections.Generic; | |||||
| using System.Linq; | |||||
| using System.Text; | |||||
| using System.Web.UI; | |||||
| using TSingSoft.WebControls2; | |||||
| using Forks.Utils.Collections; | |||||
| using System.Web.UI.WebControls; | |||||
| using BWP.Web.CustomPageLayout; | |||||
| using BWP.Web.Layout; | |||||
| using BWP.Web.Utils; | |||||
| using BWP.B3SheepButcherManage; | |||||
| using BWP.B3CowButcherManage; | |||||
| namespace BWP.Web.Pages.B3SheepButcherManage.Bills.StatPay_ | |||||
| { | |||||
| class StatPayEdit : DepartmentWorkFlowBillEditPage<StatPay, IStatPayBL> | |||||
| { | |||||
| protected DFEditGrid _butcherGrid; | |||||
| protected DFEditGrid _weightGrid; | |||||
| protected DFEditGrid _hurryButcherGrid; | |||||
| protected DFEditGrid _exceptionGrid; | |||||
| protected DFEditGrid _otherRewardGrid; | |||||
| private NamedValue<计价方式> moneyCountMethod = 计价方式.胴体价; | |||||
| protected override void BuildBody(Control control) | |||||
| { | |||||
| base.BuildBody(control); | |||||
| var clientPageView = new ClientPageView(); | |||||
| control.EAdd(clientPageView); | |||||
| clientPageView.TabPosition = TabPosition.Top; | |||||
| if (moneyCountMethod == 计价方式.毛重价) | |||||
| { | |||||
| AddWeightDetails(clientPageView); | |||||
| } | |||||
| else | |||||
| { | |||||
| AddDetails(clientPageView); | |||||
| AddHurryButcherDetails(clientPageView); | |||||
| } | |||||
| AddExceptionDetails(control.EAdd(new TitlePanel("过磅异常", "过磅异常"))); | |||||
| AddOtherRewardDetails(control.EAdd(new TitlePanel("结算奖罚", "结算奖罚"))); | |||||
| } | |||||
| private void AddWeightDetails(ClientPageView clientPageView) | |||||
| { | |||||
| var clientTab = new ClientTab("过磅信息"); | |||||
| clientPageView.Tabs.Add(clientTab); | |||||
| var vPanel = clientTab.EAdd(new VLayoutPanel()); | |||||
| // AddWeightToolsBar(vPanel); | |||||
| var editor = new DFCollectionEditor<StatPay_Weight>(() => Dmo.WeightDetails); | |||||
| editor.AllowDeletionFunc = () => false; | |||||
| editor.CanDeleteFunc = detail => false; | |||||
| editor.IsEditableFunc = (field, detail) => CanSave; | |||||
| _weightGrid = new DFEditGrid(editor); | |||||
| _weightGrid.DFGridSetEnabled = false; | |||||
| _weightGrid.Width = Unit.Percentage(100); | |||||
| _weightGrid.ShowLineNo = true; | |||||
| _weightGrid.Columns.Add(new DFEditGridColumn<DFValueLabel>("WeightBill_ID")); | |||||
| _weightGrid.Columns.Add(new DFEditGridColumn<DFValueLabel>("LiveVarieties_Name")); | |||||
| _weightGrid.Columns.EAdd(new DFEditGridColumn<DFValueLabel>("Number")).SumMode = SumMode.Sum; | |||||
| _weightGrid.Columns.EAdd(new DFEditGridColumn<DFValueLabel>("Weight")).SumMode = SumMode.Sum; | |||||
| _weightGrid.Columns.Add(new DFEditGridColumn<DFValueLabel>("Price")); | |||||
| _weightGrid.Columns.EAdd(new DFEditGridColumn<DFValueLabel>("Money")).SumMode = SumMode.Sum; | |||||
| _weightGrid.Columns.Add(new DFEditGridColumn("Remark")); | |||||
| var section = mPageLayoutManager.AddSection("DetaiColumns5", "过磅信息列"); | |||||
| section.ApplyLayout(_weightGrid, mPageLayoutManager, DFInfo.Get(typeof(StatPay_Weight))); | |||||
| vPanel.Add(_weightGrid); | |||||
| } | |||||
| private void AddWeightToolsBar(VLayoutPanel vPanel) | |||||
| { | |||||
| if (!CanSave || IsNew) | |||||
| return; | |||||
| var hPanel = vPanel.Add(new HLayoutPanel(), new VLayoutOption(HorizontalAlign.Left)); | |||||
| var dialogButton = hPanel.Add(new DialogButton | |||||
| { | |||||
| Text = "选择过磅记录", | |||||
| Url = "SelectWeightDetailDialog.aspx?DmoID=" + MinDmo.ID.ToString() | |||||
| }); | |||||
| dialogButton.Enabled = !IsNew; | |||||
| } | |||||
| protected override void BuildBasePropertiesEditor(TitlePanel titlePanel, PageLayoutSection pageLayoutSection) | |||||
| { | |||||
| var layoutManager = new LayoutManager("", mDFInfo, mDFContainer); | |||||
| layoutManager.Add("WeightBill_ID", InputCreator.DFChoiceBox(B3SheepButcherManageConsts.DataSources.已审核过磅单, "WeightBill_ID")); | |||||
| layoutManager.Add("ActualPrice", CreateActualPrice()); | |||||
| var config = new AutoLayoutConfig(); | |||||
| layoutManager.Config = config; | |||||
| config.Add("AccountingUnit_ID"); | |||||
| config.Add("Supplier_ID"); | |||||
| config.Add("Department_ID"); | |||||
| config.Add("Employee_ID"); | |||||
| config.Add("Date"); | |||||
| config.Add("ValuationArea_ID"); | |||||
| config.Add("MoneyCountMethod"); | |||||
| config.Add("FixedPrice_ID"); | |||||
| config.Add("WeighTime"); | |||||
| config.Add("WeightBill_ID"); | |||||
| config.Add("RealNumber"); | |||||
| config.Add("RealWeight"); | |||||
| config.Add("WeightSumRate"); | |||||
| config.Add("RawPrice"); | |||||
| config.Add("Money"); | |||||
| config.Add("ActualPrice"); | |||||
| config.Add("ActualMoney"); | |||||
| config.Add("Remark"); | |||||
| pageLayoutSection.SetRequired("AccountingUnit_ID"); | |||||
| pageLayoutSection.ApplyLayout(layoutManager, config, mPageLayoutManager, mDFInfo); | |||||
| titlePanel.Controls.Add(layoutManager.CreateLayout()); | |||||
| } | |||||
| Panel CreateActualPrice() | |||||
| { | |||||
| var panel = new Panel(); | |||||
| var priceInput = mDFContainer.Add(new DFTextBox(mDFInfo.Fields["ActualPrice"]) { Width = Unit.Pixel(92) }, "ActualPrice"); | |||||
| if (!MinDmo.UpdateActualPrice) | |||||
| SetTextBoxReadOnly(priceInput); | |||||
| panel.EAdd(priceInput); | |||||
| if (CanSave) | |||||
| { | |||||
| var btn = panel.EAdd(new TSButton()); | |||||
| btn.Text = MinDmo.UpdateActualPrice ? "按毛价" : "自定义"; | |||||
| btn.Click += (sender, e) => | |||||
| { | |||||
| Dmo.UpdateActualPrice = !Dmo.UpdateActualPrice; | |||||
| if (Dmo.UpdateActualPrice) | |||||
| priceInput.Attributes.Remove("readonly"); | |||||
| else | |||||
| { | |||||
| SetTextBoxReadOnly(priceInput); | |||||
| priceInput.Text = null; | |||||
| } | |||||
| btn.Text = Dmo.UpdateActualPrice ? "按毛价" : "自定义"; | |||||
| }; | |||||
| } | |||||
| return panel; | |||||
| } | |||||
| void SetTextBoxReadOnly(TextBox box) | |||||
| { | |||||
| box.Attributes.Add("readonly", "readonly"); | |||||
| box.Style.Add("background-color", "inherit"); | |||||
| } | |||||
| private void AddDetails(ClientPageView clientPageView) | |||||
| { | |||||
| var clientTab = new ClientTab("屠宰记录"); | |||||
| clientPageView.Tabs.Add(clientTab); | |||||
| var vPanel = clientTab.EAdd(new VLayoutPanel()); | |||||
| AddButcherToolsBar(vPanel); | |||||
| var editor = new DFCollectionEditor<StatPay_Butcher>(() => Dmo.Details); | |||||
| editor.AllowDeletionFunc = () => false; | |||||
| editor.CanDeleteFunc = detail => false; | |||||
| var editPrice = CheckDefaultRole("胴体编辑单价"); | |||||
| var editDiscount = CheckDefaultRole("胴体编辑折扣"); | |||||
| editor.IsEditableFunc = (field, detail) => | |||||
| { | |||||
| switch (field.Name) | |||||
| { | |||||
| case "Price": | |||||
| return CanSave && editPrice; | |||||
| case "Discount": | |||||
| return CanSave && editDiscount; | |||||
| } | |||||
| return CanSave; | |||||
| }; | |||||
| _butcherGrid = new DFEditGrid(editor); | |||||
| _butcherGrid.DFGridSetEnabled = false; | |||||
| _butcherGrid.Width = Unit.Percentage(100); | |||||
| _butcherGrid.ShowLineNo = true; | |||||
| _butcherGrid.Columns.Add(new DFEditGridColumn<DFValueLabel>("Butcher_ID")); | |||||
| _butcherGrid.Columns.Add(new DFEditGridColumn<DFValueLabel>("LiveVarieties_Name")); | |||||
| _butcherGrid.Columns.EAdd(new DFEditGridColumn<DFChoiceBox>("Livestock_ID")).InitEditControl += (sender, e) => | |||||
| { | |||||
| e.Control.EnableInputArgument = true; | |||||
| e.Control.DataKind = B3SheepButcherManageConsts.DataSources.活体级别; | |||||
| e.Control.DFDisplayField = "Livestock_Name"; | |||||
| e.Control.Width = 180; | |||||
| }; | |||||
| _butcherGrid.Columns.EAdd(new DFEditGridColumn<DFValueLabel>("Number")).SumMode = SumMode.Sum; | |||||
| _butcherGrid.Columns.EAdd(new DFEditGridColumn<DFValueLabel>("Weight")).SumMode = SumMode.Sum; | |||||
| _butcherGrid.Columns.Add(new DFEditGridColumn<DFValueLabel>("OldPriceWeight")); | |||||
| if (EnableSubWeight) | |||||
| { | |||||
| _butcherGrid.Columns.EAdd(new DFEditGridColumn("SubWeight")).SumMode = SumMode.Sum; | |||||
| } | |||||
| _butcherGrid.Columns.EAdd(new DFEditGridColumn("PriceWeight")).SumMode = SumMode.Sum; | |||||
| _butcherGrid.Columns.Add(new DFEditGridColumn<DFTextBox>("Discount")); | |||||
| _butcherGrid.Columns.Add(new DFEditGridColumn<DFTextBox>("Price")); | |||||
| _butcherGrid.Columns.EAdd(new DFEditGridColumn<DFValueLabel>("Money")).SumMode = SumMode.Sum; | |||||
| _butcherGrid.Columns.Add(new DFEditGridColumn("Remark")); | |||||
| var section = mPageLayoutManager.AddSection("DetaiColumns", "屠宰明细列"); | |||||
| section.ApplyLayout(_butcherGrid, mPageLayoutManager, DFInfo.Get(typeof(StatPay_Butcher))); | |||||
| vPanel.Add(_butcherGrid); | |||||
| } | |||||
| protected virtual bool EnableSubWeight | |||||
| { | |||||
| get { return false; } | |||||
| } | |||||
| //屠宰记录按钮 | |||||
| private void AddButcherToolsBar(VLayoutPanel vPanel) | |||||
| { | |||||
| if (!CanSave || IsNew) | |||||
| return; | |||||
| var hPanel = vPanel.Add(new HLayoutPanel(), new VLayoutOption(HorizontalAlign.Left)); | |||||
| var dialogButton = hPanel.Add(new DialogButton | |||||
| { | |||||
| Text = "选择结算明细", | |||||
| Url = "SelectButcherDetailDialog.aspx?DmoID=" + MinDmo.ID.ToString() | |||||
| }); | |||||
| dialogButton.Enabled = !IsNew; | |||||
| var sumBt = hPanel.Add(new TSButton("汇总")); | |||||
| sumBt.Click += delegate | |||||
| { | |||||
| GetFromUI(); | |||||
| AddButcherDetails(Dmo); | |||||
| AppToUI(); | |||||
| }; | |||||
| var cleraBt = hPanel.Add(new TSButton("清除")); | |||||
| cleraBt.OnClientClick = "return confirm('确定要清除明细记录吗?');"; | |||||
| cleraBt.Click += delegate | |||||
| { | |||||
| mBL.CancelAllButcherDetails(Dmo.ID); | |||||
| Dmo.Details.Clear(); | |||||
| _butcherGrid.DataBind(); | |||||
| }; | |||||
| } | |||||
| protected virtual void AddButcherDetails(StatPay dmo) | |||||
| { | |||||
| mBL.AddButcherDetails(Dmo); | |||||
| } | |||||
| private void AddHurryButcherDetails(ClientPageView clientPageView) | |||||
| { | |||||
| var clientTab = new ClientTab("急宰记录"); | |||||
| clientPageView.Tabs.Add(clientTab); | |||||
| var vPanel = clientTab.EAdd(new VLayoutPanel()); | |||||
| AddHurryButcherToolsBar(vPanel); | |||||
| var editor = new DFCollectionEditor<StatPay_HurryButcher>(() => Dmo.HurryButcherDetails); | |||||
| editor.AllowDeletionFunc = () => false; | |||||
| editor.CanDeleteFunc = detail => false; | |||||
| editor.IsEditableFunc = (field, detail) => CanSave; | |||||
| _hurryButcherGrid = new DFEditGrid(editor); | |||||
| _hurryButcherGrid.DFGridSetEnabled = false; | |||||
| _hurryButcherGrid.Width = Unit.Percentage(100); | |||||
| _hurryButcherGrid.ShowLineNo = true; | |||||
| _hurryButcherGrid.Columns.Add(new DFEditGridColumn<DFValueLabel>("HurryButcher_ID")); | |||||
| _hurryButcherGrid.Columns.Add(new DFEditGridColumn<DFValueLabel>("LiveVarieties_Name")); | |||||
| _hurryButcherGrid.Columns.Add(new DFEditGridColumn<DFValueLabel>("Livestock_Name")); | |||||
| _hurryButcherGrid.Columns.EAdd(new DFEditGridColumn<DFValueLabel>("GrossWeight")).SumMode = SumMode.Sum; | |||||
| _hurryButcherGrid.Columns.EAdd(new DFEditGridColumn<DFValueLabel>("Weight")).SumMode = SumMode.Sum; | |||||
| _hurryButcherGrid.Columns.EAdd(new DFEditGridColumn<DFValueLabel>("Number")).SumMode = SumMode.Sum; | |||||
| _hurryButcherGrid.Columns.EAdd(new DFEditGridColumn("PriceWeight")).SumMode = SumMode.Sum; | |||||
| _hurryButcherGrid.Columns.Add(new DFEditGridColumn("Price")); | |||||
| _hurryButcherGrid.Columns.EAdd(new DFEditGridColumn<DFValueLabel>("Money")).SumMode = SumMode.Sum; | |||||
| _hurryButcherGrid.Columns.Add(new DFEditGridColumn("Remark")); | |||||
| var section = mPageLayoutManager.AddSection("DetaiColumns2", "急宰明细列"); | |||||
| section.ApplyLayout(_hurryButcherGrid, mPageLayoutManager, DFInfo.Get(typeof(StatPay_HurryButcher))); | |||||
| vPanel.Add(_hurryButcherGrid); | |||||
| } | |||||
| private void AddHurryButcherToolsBar(VLayoutPanel vPanel) | |||||
| { | |||||
| if (!CanSave || IsNew) | |||||
| return; | |||||
| var hPanel = vPanel.Add(new HLayoutPanel(), new VLayoutOption(HorizontalAlign.Left)); | |||||
| var dialogButton = hPanel.Add(new DialogButton | |||||
| { | |||||
| Text = "选择急宰明细", | |||||
| Url = "SelectHurryButcherDialog.aspx?DmoID=" + MinDmo.ID.ToString() | |||||
| }); | |||||
| dialogButton.Enabled = !IsNew; | |||||
| var sumBt = hPanel.Add(new TSButton("汇总")); | |||||
| sumBt.Click += delegate | |||||
| { | |||||
| mBL.AddHurryButchers(Dmo); | |||||
| AppToUI(); | |||||
| }; | |||||
| var cleraBt = hPanel.Add(new TSButton("清除")); | |||||
| cleraBt.OnClientClick = "return confirm('确定要清除明细记录吗?');"; | |||||
| cleraBt.Click += delegate | |||||
| { | |||||
| mBL.CancelAllHurryButchers(Dmo.ID); | |||||
| Dmo.HurryButcherDetails.Clear(); | |||||
| _hurryButcherGrid.DataBind(); | |||||
| }; | |||||
| } | |||||
| private void AddExceptionDetails(TitlePanel titlePanel) | |||||
| { | |||||
| var vPanel = titlePanel.EAdd(new VLayoutPanel()); | |||||
| var editor = new DFCollectionEditor<StatPay_Exception>(() => Dmo.ExceptionDetails); | |||||
| editor.AllowDeletionFunc = () => false; | |||||
| editor.CanDeleteFunc = detail => false; | |||||
| editor.IsEditableFunc = (field, detail) => CanSave; | |||||
| _exceptionGrid = new DFEditGrid(editor); | |||||
| _exceptionGrid.DFGridSetEnabled = false; | |||||
| _exceptionGrid.Width = Unit.Percentage(100); | |||||
| _exceptionGrid.ShowLineNo = true; | |||||
| var column = new DFEditGridColumn<DFChoiceBox>("RewardItem_ID"); | |||||
| column.InitEditControl += (sender, e) => | |||||
| { | |||||
| e.Control.Width = Unit.Pixel(60); | |||||
| e.Control.EnableInputArgument = true; | |||||
| e.Control.DataKind = B3CowButcherManageConsts.DataSources.奖罚项目; | |||||
| e.Control.DFDisplayField = "RewardItem_Name"; | |||||
| e.Control.OnBeforeDrop = "this.codeArgument=__DFContainer.getValue('AccountingUnit_ID');"; | |||||
| }; | |||||
| _exceptionGrid.Columns.Add(column); | |||||
| _exceptionGrid.Columns.EAdd(new DFEditGridColumn("Number")).SumMode = SumMode.Sum; | |||||
| _exceptionGrid.Columns.Add(new DFEditGridColumn("Price")); | |||||
| _exceptionGrid.Columns.EAdd(new DFEditGridColumn<DFValueLabel>("DeductWeight")).SumMode = SumMode.Sum; | |||||
| _exceptionGrid.Columns.EAdd(new DFEditGridColumn<DFValueLabel>("Money")).SumMode = SumMode.Sum; | |||||
| _exceptionGrid.Columns.Add(new DFEditGridColumn("Remark")); | |||||
| var section = mPageLayoutManager.AddSection("DetaiColumns3", "过磅异常"); | |||||
| section.ApplyLayout(_exceptionGrid, mPageLayoutManager, DFInfo.Get(typeof(StatPay_Exception))); | |||||
| vPanel.Add(_exceptionGrid); | |||||
| } | |||||
| private void AddOtherRewardDetails(TitlePanel titlePanel) | |||||
| { | |||||
| var vPanel = titlePanel.EAdd(new VLayoutPanel()); | |||||
| AddOtherRewardToolsBar(vPanel); | |||||
| var editor = new DFCollectionEditor<StatPay_OtherReward>(() => Dmo.OtherRewardDetails); | |||||
| var delete = CheckDefaultRole("删除奖罚明细"); | |||||
| editor.AllowDeletionFunc = () => CanSave && delete; | |||||
| editor.CanDeleteFunc = detail => CanSave && delete; | |||||
| editor.IsEditableFunc = (field, detail) => CanSave; | |||||
| _otherRewardGrid = new DFEditGrid(editor); | |||||
| _otherRewardGrid.DFGridSetEnabled = false; | |||||
| _otherRewardGrid.Width = Unit.Percentage(100); | |||||
| _otherRewardGrid.ShowLineNo = true; | |||||
| var column = new DFEditGridColumn<DFChoiceBox>("RewardItem_ID"); | |||||
| column.InitEditControl += (sender, e) => | |||||
| { | |||||
| e.Control.Width = Unit.Pixel(160); | |||||
| e.Control.EnableInputArgument = true; | |||||
| e.Control.DataKind = B3CowButcherManageConsts.DataSources.奖罚项目; | |||||
| e.Control.DFDisplayField = "RewardItem_Name"; | |||||
| e.Control.OnBeforeDrop = "this.codeArgument=__DFContainer.getValue('AccountingUnit_ID');"; | |||||
| }; | |||||
| _otherRewardGrid.Columns.Add(column); | |||||
| _otherRewardGrid.Columns.EAdd(new DFEditGridColumn<DFTextBox>("Number") { SumMode = SumMode.Sum }).InitEditControl += (sender, e) => | |||||
| { | |||||
| e.Control.Style["width"] = "150px"; | |||||
| }; | |||||
| _otherRewardGrid.Columns.EAdd(new DFEditGridColumn<DFTextBox>("Weight") { SumMode = SumMode.Sum }).InitEditControl += (sender, e) => | |||||
| { | |||||
| e.Control.Style["width"] = "150px"; | |||||
| }; | |||||
| _otherRewardGrid.Columns.EAdd(new DFEditGridColumn<DFTextBox>("Price") { SumMode = SumMode.Sum }).InitEditControl += (sender, e) => | |||||
| { | |||||
| e.Control.Style["width"] = "150px"; | |||||
| }; | |||||
| _otherRewardGrid.Columns.EAdd(new DFEditGridColumn<DFValueLabel>("Money")).SumMode = SumMode.Sum; | |||||
| _otherRewardGrid.Columns.EAdd(new DFEditGridColumn<DFTextBox>("Remark")).InitEditControl += (sender, e) => | |||||
| { | |||||
| e.Control.Style["width"] = "150px"; | |||||
| }; | |||||
| var dic = new Dictionary<string, Unit>(); | |||||
| dic.Add("序号", Unit.Percentage(5)); | |||||
| dic.Add("奖罚项目", Unit.Percentage(16)); | |||||
| dic.Add("数量", Unit.Percentage(15)); | |||||
| dic.Add("重量", Unit.Percentage(15)); | |||||
| dic.Add("单价", Unit.Percentage(15)); | |||||
| dic.Add("金额", Unit.Percentage(15)); | |||||
| dic.Add("备注", Unit.Percentage(15)); | |||||
| _otherRewardGrid.PreferWidthGridSet = dic; | |||||
| var section = mPageLayoutManager.AddSection("DetaiColumns4", "结算奖罚"); | |||||
| section.ApplyLayout(_otherRewardGrid, mPageLayoutManager, DFInfo.Get(typeof(StatPay_OtherReward))); | |||||
| vPanel.Add(_otherRewardGrid); | |||||
| } | |||||
| private void AddOtherRewardToolsBar(VLayoutPanel vPanel) | |||||
| { | |||||
| if (!CanSave || IsNew) | |||||
| return; | |||||
| var hPanel = vPanel.Add(new HLayoutPanel(), new VLayoutOption(HorizontalAlign.Left)); | |||||
| if (CheckDefaultRole("新增奖罚明细")) | |||||
| { | |||||
| var newBt = hPanel.Add(new TSButton("新建")); | |||||
| newBt.Click += delegate | |||||
| { | |||||
| _otherRewardGrid.GetFromUI(); | |||||
| var detail = new StatPay_OtherReward(); | |||||
| Dmo.OtherRewardDetails.Add(detail); | |||||
| _otherRewardGrid.DataBind(); | |||||
| }; | |||||
| } | |||||
| var sumBt = hPanel.Add(new TSButton("加载")); | |||||
| sumBt.Click += delegate | |||||
| { | |||||
| AddOtherReward(Dmo); | |||||
| _otherRewardGrid.DataBind(); | |||||
| }; | |||||
| } | |||||
| protected virtual void AddOtherReward(StatPay dmo) | |||||
| { | |||||
| mBL.AddOtherReward(Dmo); | |||||
| } | |||||
| public override void AppToUI() | |||||
| { | |||||
| base.AppToUI(); | |||||
| if (moneyCountMethod != 计价方式.胴体价) | |||||
| { | |||||
| _weightGrid.DataBind(); | |||||
| } | |||||
| if (moneyCountMethod != 计价方式.毛重价) | |||||
| { | |||||
| _butcherGrid.DataBind(); | |||||
| _hurryButcherGrid.DataBind(); | |||||
| } | |||||
| _exceptionGrid.DataBind(); | |||||
| _otherRewardGrid.DataBind(); | |||||
| if (!CheckDefaultRole("编辑过磅单号")) | |||||
| mDFContainer.MakeReadonly("WeightBill_ID"); | |||||
| } | |||||
| public override void GetFromUI() | |||||
| { | |||||
| base.GetFromUI(); | |||||
| if (moneyCountMethod == 计价方式.毛重价) | |||||
| { | |||||
| _weightGrid.GetFromUI(); | |||||
| } | |||||
| else | |||||
| { | |||||
| _butcherGrid.GetFromUI(); | |||||
| _hurryButcherGrid.GetFromUI(); | |||||
| } | |||||
| _exceptionGrid.GetFromUI(); | |||||
| _otherRewardGrid.GetFromUI(); | |||||
| } | |||||
| } | |||||
| } | |||||
| @ -0,0 +1,121 @@ | |||||
| using BWP.B3Frameworks; | |||||
| using BWP.B3Frameworks.BO.MoneyTemplate; | |||||
| using BWP.B3Frameworks.BO.NamedValueTemplate; | |||||
| using BWP.B3SheepButcherManage.BL; | |||||
| using BWP.B3SheepButcherManage.BO; | |||||
| 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 System.Web.UI.WebControls; | |||||
| using TSingSoft.WebControls2; | |||||
| using CW = BWP.B3CowButcherManage.BO; | |||||
| namespace BWP.Web.Pages.B3SheepButcherManage.Bills.StatPay_ | |||||
| { | |||||
| class StatPayList : DomainBillListPage<StatPay, IStatPayBL> | |||||
| { | |||||
| DropDownList payStateSelect; | |||||
| protected override void AddQueryControls(VLayoutPanel vPanel) | |||||
| { | |||||
| vPanel.Add(CreateDefaultBillQueryControls((panel, config) => | |||||
| { | |||||
| panel.Add("WeightBill_ID", new DFTextBox(mDFInfo.Fields["WeightBill_ID"])); | |||||
| panel.Add("PayState", new SimpleLabel("付款状态"), payStateSelect = new DropDownList()); | |||||
| panel["PayState"].NotAutoAddToContainer = true; | |||||
| payStateSelect.Items.Add(""); | |||||
| payStateSelect.Items.Add("已付款"); | |||||
| payStateSelect.Items.Add("未付款"); | |||||
| payStateSelect.Items.Add("部分付款"); | |||||
| config.Add("Date"); | |||||
| config.Add("AccountingUnit_ID"); | |||||
| config.Add("Department_ID"); | |||||
| config.Add("Employee_ID"); | |||||
| config.Add("Supplier_ID"); | |||||
| config.Add("WeightBill_ID"); | |||||
| config.Add("PayState"); | |||||
| })); | |||||
| } | |||||
| protected override void AddDFBrowseGridColumn(DFBrowseGrid grid, string field) | |||||
| { | |||||
| base.AddDFBrowseGridColumn(grid, field); | |||||
| if (field == "BillState") | |||||
| { | |||||
| AddDFBrowseGridColumn(grid, "WeightBill_ID"); | |||||
| AddDFBrowseGridColumn(grid, "AccountingUnit_Name"); | |||||
| AddDFBrowseGridColumn(grid, "Department_Name"); | |||||
| AddDFBrowseGridColumn(grid, "Supplier_Name"); | |||||
| AddDFBrowseGridColumn(grid, "Employee_Name"); | |||||
| AddDFBrowseGridColumn(grid, "CheckUser_Name"); | |||||
| AddDFBrowseGridColumn(grid, "Remark"); | |||||
| } | |||||
| } | |||||
| protected override Forks.EnterpriseServices.DomainObjects2.DQuery.DQueryDom GetQueryDom() | |||||
| { | |||||
| var root = base.GetQueryDom(); | |||||
| if (payStateSelect.SelectedIndex != 0) | |||||
| { | |||||
| PayTemp.Register(root); | |||||
| var temp = new JoinAlias(typeof(PayTemp)); | |||||
| root.From.AddJoin(JoinType.Left, new DQDmoSource(temp), DQCondition.EQ(root.From.RootSource.Alias, "ID", temp, "StatPayID")); | |||||
| switch (payStateSelect.SelectedIndex) | |||||
| { | |||||
| case 1: | |||||
| root.Where.Conditions.Add(DQCondition.GreaterThanOrEqual(DQExpression.Field(temp, "Money"), DQExpression.Field("ActualMoney"))); | |||||
| break; | |||||
| case 2: | |||||
| root.Where.Conditions.Add(DQCondition.IsNull(DQExpression.Field(temp, "StatPayID"))); | |||||
| break; | |||||
| default: | |||||
| root.Where.Conditions.Add(DQCondition.LessThan(DQExpression.Field(temp, "Money"), DQExpression.Field("ActualMoney"))); | |||||
| break; | |||||
| } | |||||
| } | |||||
| return root; | |||||
| } | |||||
| protected override void InitToolBar(HLayoutPanel toolbar) | |||||
| { | |||||
| base.InitToolBar(toolbar); | |||||
| if (!CheckDefaultRole("数据分析", true)) | |||||
| return; | |||||
| var button = new TSButton("数据分析") { UseSubmitBehavior = false }; | |||||
| button.OnClientClick = "preventEventDefault(event);OpenUrlInTopTab('B3SheepButcherManage/Reports/StatPayAnalyse_/StatPayAnalyse.aspx','数据分析');"; | |||||
| toolbar.Add(button); | |||||
| } | |||||
| public override bool EnableBatchCheck | |||||
| { | |||||
| get | |||||
| { | |||||
| return true; | |||||
| } | |||||
| } | |||||
| } | |||||
| class PayTemp | |||||
| { | |||||
| public long StatPayID { get; set; } | |||||
| public Money<金额>? Money { get; set; } | |||||
| public static void Register(DQueryDom root) | |||||
| { | |||||
| var main = new JoinAlias(typeof(CW.Pay)); | |||||
| var detail = new JoinAlias(typeof(CW.Pay_Detail)); | |||||
| var query = new DQueryDom(detail); | |||||
| query.From.AddJoin(JoinType.Left, new DQDmoSource(main), DQCondition.EQ(main, "ID", detail, "Pay_ID")); | |||||
| query.Columns.Add(DQSelectColumn.Field("StatPay_ID")); | |||||
| query.Columns.Add(DQSelectColumn.Sum("Money")); | |||||
| query.GroupBy.Expressions.Add(DQExpression.Field("StatPay_ID")); | |||||
| query.Where.Conditions.Add(DQCondition.And(DQCondition.GreaterThanOrEqual(main, "BillState", 单据状态.已审核), DQCondition.EQ(main, "Domain_ID", DomainContext.Current.ID))); | |||||
| root.RegisterQueryTable(typeof(PayTemp), new string[] { "StatPayID", "Money" }, query); | |||||
| } | |||||
| } | |||||
| } | |||||
| @ -0,0 +1,73 @@ | |||||
| <?xml version="1.0" encoding="utf-8" ?> | |||||
| <Select xmlns="urn:XDQuery"> | |||||
| <Columns> | |||||
| <Field name="ID"/> | |||||
| </Columns> | |||||
| <From> | |||||
| <DmoClass class="BWP.B3SheepButcherManage.BO.StatPay, B3SheepButcherManage"/> | |||||
| </From> | |||||
| <Where> | |||||
| <And> | |||||
| <EQ> | |||||
| <Field name="ID"/> | |||||
| <QBE paramName="ID"/> | |||||
| </EQ> | |||||
| <EQ> | |||||
| <Field name="Supplier_ID"/> | |||||
| <QBE paramName="Supplier_ID"/> | |||||
| </EQ> | |||||
| <EQ> | |||||
| <Field name="AccountingUnit_ID"/> | |||||
| <QBE paramName="AccountingUnit_ID"/> | |||||
| </EQ> | |||||
| <EQ> | |||||
| <Field name="Department_ID"/> | |||||
| <QBE paramName="Department_ID"/> | |||||
| </EQ> | |||||
| <EQ> | |||||
| <Field name="Employee_ID"/> | |||||
| <QBE paramName="Employee_ID"/> | |||||
| </EQ> | |||||
| <EQ> | |||||
| <Field name="WeightBill_ID"/> | |||||
| <QBE paramName="WeightBill_ID"/> | |||||
| </EQ> | |||||
| <EQ> | |||||
| <Field name="IsLocked"/> | |||||
| <QBE paramName="IsLocked"/> | |||||
| </EQ> | |||||
| <Contains> | |||||
| <Field name="Remark"/> | |||||
| <QBE paramName="Remark"/> | |||||
| </Contains> | |||||
| <Contains> | |||||
| <Field name="CreateUser_Name"/> | |||||
| <QBE paramName="CreateUser_Name"/> | |||||
| </Contains> | |||||
| <Contains> | |||||
| <Field name="CheckUser_Name"/> | |||||
| <QBE paramName="CheckUser_Name"/> | |||||
| </Contains> | |||||
| <GreaterThanOrEqual> | |||||
| <Field name="CreateTime"/> | |||||
| <QBE paramName="MinCreateTime" /> | |||||
| </GreaterThanOrEqual> | |||||
| <LessThanOrEqual> | |||||
| <Field name="CreateTime"/> | |||||
| <QBE paramName="MaxCreateTime"/> | |||||
| </LessThanOrEqual> | |||||
| <GreaterThanOrEqual> | |||||
| <Field name="Date"/> | |||||
| <QBE paramName="MinDate" /> | |||||
| </GreaterThanOrEqual> | |||||
| <LessThanOrEqual> | |||||
| <Field name="Date"/> | |||||
| <QBE paramName="MaxDate"/> | |||||
| </LessThanOrEqual> | |||||
| <EQ> | |||||
| <Field name="BillState"/> | |||||
| <QBE paramName ="BillState"/> | |||||
| </EQ> | |||||
| </And> | |||||
| </Where> | |||||
| </Select> | |||||
| @ -0,0 +1,34 @@ | |||||
| using BWP.B3SheepButcherManage.BL; | |||||
| using BWP.B3SheepButcherManage.BO; | |||||
| using System; | |||||
| using System.Collections.Generic; | |||||
| using System.Linq; | |||||
| using System.Text; | |||||
| namespace BWP.Web.Pages.B3SheepButcherManage.Bills.StatPay_ | |||||
| { | |||||
| class StatPayPrint : DomainTemplatePrintPage<StatPay, IStatPayBL> | |||||
| { | |||||
| protected override void AddParameters(IDictionary<string, object> dic) | |||||
| { | |||||
| dic.Add("$ID", Dmo.ID); | |||||
| dic.Add("$Details", Dmo.Details); | |||||
| dic.Add("$DetailType", typeof(StatPay_Butcher)); | |||||
| dic.Add("$HurryButcherDetails", Dmo.HurryButcherDetails); | |||||
| dic.Add("$HurryButcherType", typeof(StatPay_HurryButcher)); | |||||
| dic.Add("$ExceptionDetails", Dmo.ExceptionDetails); | |||||
| dic.Add("$ExceptionType", typeof(StatPay_Exception)); | |||||
| dic.Add("$OtherRewardDetails", Dmo.OtherRewardDetails); | |||||
| dic.Add("$OtherRewardType", typeof(StatPay_OtherReward)); | |||||
| dic.Add("$WeightDetails", Dmo.WeightDetails); | |||||
| dic.Add("$WeightType", typeof(StatPay_Weight)); | |||||
| } | |||||
| } | |||||
| } | |||||
| @ -0,0 +1,446 @@ | |||||
| using BWP.B3Frameworks; | |||||
| using BWP.B3Frameworks.BO.MoneyTemplate; | |||||
| using BWP.B3Frameworks.BO.NamedValueTemplate; | |||||
| using BWP.B3Frameworks.Utils; | |||||
| using BWP.B3SheepButcherManage.BO; | |||||
| using BWP.Web.Layout; | |||||
| using BWP.Web.Utils; | |||||
| using BWP.Web.WebControls; | |||||
| 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 System.Web.UI.WebControls; | |||||
| using TSingSoft.WebControls2; | |||||
| using TSingSoft.WebPluginFramework; | |||||
| namespace BWP.Web.Pages.B3SheepButcherManage.Reports.StatPayAnalyse_ | |||||
| { | |||||
| class StatPayAnalyse : DFBrowseGridReportPage<StatPay> | |||||
| { | |||||
| protected override string AccessRoleName | |||||
| { | |||||
| get { return "B3SheepButcherManage.羊结算单.数据分析"; } | |||||
| } | |||||
| protected override string Caption | |||||
| { | |||||
| get { return "结算单数据分析"; } | |||||
| } | |||||
| protected override string QueryOptionsTabName | |||||
| { | |||||
| get | |||||
| { | |||||
| return "选项"; | |||||
| } | |||||
| } | |||||
| decimal? objToDecimal(object obj) | |||||
| { | |||||
| if (obj == null) | |||||
| { | |||||
| return null; | |||||
| } | |||||
| var r = Convert.ToDecimal(obj); | |||||
| if (r == 0) | |||||
| return null; | |||||
| return r; | |||||
| } | |||||
| protected override void InitBrowseGrid(DFBrowseGrid grid) | |||||
| { | |||||
| if (DetailTypeSelect.SelectedItem.Text == "出肉率") | |||||
| { | |||||
| grid.DataFilter = (table) => | |||||
| { | |||||
| //try | |||||
| //{ | |||||
| // table.SumRow["白条均价"] = (Money<金额>?)(objToDecimal(table.SumRow["实付金额"]) / objToDecimal(table.SumRow["结算总重"])); | |||||
| //} | |||||
| //catch | |||||
| //{ | |||||
| //} | |||||
| try | |||||
| { | |||||
| table.SumRow["毛重均价"] = (Money<金额>?)(objToDecimal(table.SumRow["实付金额"]) / objToDecimal(table.SumRow["收购重量"])); | |||||
| } | |||||
| catch (Exception) | |||||
| { | |||||
| } | |||||
| try | |||||
| { | |||||
| table.SumRow["毛重均重"] = (Money<金额>?)(objToDecimal(table.SumRow["收购重量"]) / objToDecimal(table.SumRow["收购头数"])); | |||||
| } | |||||
| catch (Exception) | |||||
| { | |||||
| } | |||||
| try | |||||
| { | |||||
| if (!UseWeightSumRate2) | |||||
| table.SumRow["出肉率"] = (Money<金额>?)(objToDecimal(table.SumRow["结算总重"]) / objToDecimal(table.SumRow["收购重量"]) * 100) + "%"; | |||||
| } | |||||
| catch (Exception) | |||||
| { | |||||
| } | |||||
| }; | |||||
| } | |||||
| else | |||||
| FillOtherSumColumn(grid); | |||||
| base.InitBrowseGrid(grid); | |||||
| } | |||||
| void FillOtherSumColumn(DFBrowseGrid grid) | |||||
| { | |||||
| grid.DataFilter = (table) => | |||||
| { | |||||
| var query = base.GetQueryDom().Clone() as DQueryDom; | |||||
| OrganizationUtil.AddOrganizationLimit(query, typeof(StatPay)); | |||||
| switch (statlist.SelectedValue) | |||||
| { | |||||
| case "1": | |||||
| query.Where.Conditions.Add(DQCondition.Or(DQCondition.And(DQCondition.GreaterThanOrEqual("PaidMoney", 0), DQCondition.LessThan("PaidMoney", "ActualMoney")), DQCondition.IsNull(DQExpression.Field("PaidMoney")))); | |||||
| break; | |||||
| case "2": | |||||
| query.Where.Conditions.Add(DQCondition.GreaterThanOrEqual("PaidMoney", "ActualMoney")); | |||||
| break; | |||||
| } | |||||
| query.Columns.Add(DQSelectColumn.Sum("PaidMoney")); | |||||
| query.Columns.Add(DQSelectColumn.Sum("Money")); | |||||
| query.Columns.Add(DQSelectColumn.Sum("ActualMoney")); | |||||
| Money<金额> PaidMoney = 0; | |||||
| Money<金额> Money = 0; | |||||
| Money<金额> ActualMoney = 0; | |||||
| using (var session = Dmo.NewSession()) | |||||
| { | |||||
| using (var reader = session.ExecuteReader(query)) | |||||
| { | |||||
| if (reader.Read()) | |||||
| { | |||||
| PaidMoney = (Money<金额>?)reader[0] ?? 0; | |||||
| Money = (Money<金额>?)reader[1] ?? 0; | |||||
| ActualMoney = (Money<金额>?)reader[2] ?? 0; | |||||
| } | |||||
| } | |||||
| } | |||||
| try | |||||
| { | |||||
| table.SumRow["已付金额"] = PaidMoney; | |||||
| } | |||||
| catch (Exception) | |||||
| { | |||||
| } | |||||
| try | |||||
| { | |||||
| table.SumRow["应付金额"] = Money; | |||||
| } | |||||
| catch (Exception) | |||||
| { | |||||
| } | |||||
| try | |||||
| { | |||||
| table.SumRow["盈亏金额"] = (Money<金额>)(Money - ActualMoney); | |||||
| } | |||||
| catch (Exception) | |||||
| { | |||||
| } | |||||
| try | |||||
| { | |||||
| table.SumRow["未付金额"] = (Money<金额>)(ActualMoney - PaidMoney); | |||||
| } | |||||
| catch (Exception) | |||||
| { | |||||
| } | |||||
| }; | |||||
| } | |||||
| protected override bool NotWaitingUserInput() | |||||
| { | |||||
| if (!string.IsNullOrEmpty(Request.QueryString["detailType"])) | |||||
| { | |||||
| return true; | |||||
| } | |||||
| return base.NotWaitingUserInput(); | |||||
| } | |||||
| DFDropDownList DetailTypeSelect | |||||
| { | |||||
| get | |||||
| { | |||||
| if (ViewState["DetailTypeSelect"] == null) | |||||
| { | |||||
| ViewState["DetailTypeSelect"] = new DFDropDownList(); | |||||
| } | |||||
| return (DFDropDownList)ViewState["DetailTypeSelect"]; | |||||
| } | |||||
| set { ViewState["DetailTypeSelect"] = value; } | |||||
| } | |||||
| protected override void InitQueryPanel(QueryPanel queryPanel) | |||||
| { | |||||
| if (!IsPostBack) | |||||
| { | |||||
| DetailTypeSelect.Items.Add(new ListItem("出肉率", typeof(StatPay).FullName)); | |||||
| DetailTypeSelect.Items.Add(new ListItem("屠宰", typeof(StatPay_Butcher).FullName)); | |||||
| DetailTypeSelect.Items.Add(new ListItem("过磅异常", typeof(StatPay_Exception).FullName)); | |||||
| DetailTypeSelect.Items.Add(new ListItem("奖罚", typeof(StatPay_OtherReward).FullName)); | |||||
| DetailTypeSelect.Items.Add(new ListItem("急宰", typeof(StatPay_HurryButcher).FullName)); | |||||
| } | |||||
| DetailTypeSelect.AutoPostBack = true; | |||||
| DetailTypeSelect.TextChanged += delegate | |||||
| { | |||||
| Response.Redirect(AspUtil.UpdateUrlParam(Request.RawUrl, "detailType", DetailTypeSelect.SelectedValue)); | |||||
| }; | |||||
| base.InitQueryPanel(queryPanel); | |||||
| } | |||||
| DropDownList statlist; | |||||
| protected override void AddQueryControls(VLayoutPanel vPanel) | |||||
| { | |||||
| var layoutManager = new LayoutManager("", mDFInfo, mQueryContainer); | |||||
| layoutManager.Add("WeightBill_ID", QueryCreator.DFTextBox(mDFInfo.Fields["WeightBill_ID"])); | |||||
| if (!string.IsNullOrEmpty(Request.QueryString["detailType"])) | |||||
| { | |||||
| DetailTypeSelect.SelectedValue = Request.QueryString["detailType"]; | |||||
| } | |||||
| layoutManager.Add("DetailType", new SimpleLabel("分析类型"), DetailTypeSelect); | |||||
| layoutManager["DetailType"].NotAutoAddToContainer = true; | |||||
| DFNamedValueInput<单据状态> input; | |||||
| layoutManager.Add("BillState", input = QueryCreator.一般单据状态(mDFInfo.Fields["BillState"], true)); | |||||
| input.Value = 单据状态.已审核; | |||||
| var config = new AutoLayoutConfig() { Cols = 4 }; | |||||
| statlist = new DropDownList(); | |||||
| statlist.Items.Add(new ListItem() { Text = "", Value = "0" }); | |||||
| statlist.Items.Add(new ListItem() { Text = "已付款", Value = "1" }); | |||||
| statlist.Items.Add(new ListItem() { Text = "付款完成", Value = "2" }); | |||||
| layoutManager.Add("PayStat", new SimpleLabel("付款状态"), statlist); | |||||
| config.Add("DetailType"); | |||||
| config.Add("AccountingUnit_ID"); | |||||
| config.Add("ID"); | |||||
| config.Add("BillState"); | |||||
| config.Add("Supplier_ID"); | |||||
| config.Add("SupplierClass_ID"); | |||||
| config.Add("Employee_ID"); | |||||
| config.Add("ValuationArea_ID"); | |||||
| config.Add("Date"); | |||||
| config.Add("PayStat"); | |||||
| config.Add("WeightBill_ID"); | |||||
| config.Add("WeighTime"); | |||||
| layoutManager.Config = config; | |||||
| vPanel.Add(layoutManager.CreateLayout()); | |||||
| base.AddQueryControls(vPanel); | |||||
| } | |||||
| ReportDisplayOptionHelper mDisplayOptionHelper = new ReportDisplayOptionHelper(); | |||||
| protected override void AddQueryOptions(VLayoutPanel vPanel) | |||||
| { | |||||
| mDisplayOptionHelper.AddOptionItem("会计单位", "bill", "AccountingUnit_Name", true); | |||||
| mDisplayOptionHelper.AddOptionItem("计价区域", "bill", "ValuationArea_Name", true); | |||||
| mDisplayOptionHelper.AddOptionItem("供应商", "bill", "Supplier_Name", true); | |||||
| mDisplayOptionHelper.AddOptionItem("供应商分类", "bill", "SupplierClass_Name", true); | |||||
| mDisplayOptionHelper.AddOptionItem("结算单号", "bill", "ID", true); | |||||
| mDisplayOptionHelper.AddOptionItem("结算日期", "bill", "Date", true); | |||||
| mDisplayOptionHelper.AddOptionItem("经办人", "bill", "Employee_Name", true); | |||||
| mDisplayOptionHelper.AddOptionItem("过磅单号", "bill", "WeightBill_ID", true); | |||||
| mDisplayOptionHelper.AddOptionItem("过磅时间", "bill", "WeighTime", true); | |||||
| mDisplayOptionHelper.AddOptionItem("已付金额", "bill", "PaidMoney", false, true); | |||||
| mDisplayOptionHelper.AddOptionItem("应付金额", "bill", "Money", false, true); | |||||
| mDisplayOptionHelper.AddOptionItem("盈亏金额", () => DQExpression.Subtract(DQExpression.Field("Money"), DQExpression.Field("ActualMoney")), false, true);//应付-实付金额 | |||||
| mDisplayOptionHelper.AddOptionItem("未付金额", () => DQExpression.Subtract(DQExpression.Field("ActualMoney"), DQExpression.Field("PaidMoney")), false, true);//实付金额-已付金额 | |||||
| //mDisplayOptionHelper.AddOptionItem("来源地", "bill", "ID", true); | |||||
| AddDetailOptionItems(mDisplayOptionHelper, DetailTypeSelect.SelectedItem.Text); | |||||
| AddQueryOption(DetailTypeSelect.SelectedItem.Text + "显示字段", mDisplayOptionHelper.GetAllDisplayNames(), mDisplayOptionHelper.GetDefaultSelelectedDisplayNames()); | |||||
| base.AddQueryOptions(vPanel); | |||||
| } | |||||
| protected virtual bool UseWeightSumRate2 { get { return false; } } | |||||
| private void AddDetailOptionItems(ReportDisplayOptionHelper mDisplayOptionHelper, string detailTypeName) | |||||
| { | |||||
| switch (detailTypeName) | |||||
| { | |||||
| case "出肉率": | |||||
| mDisplayOptionHelper.AddOptionItem("阶段号", "_prePhaseAlias", "PrePhase", true); | |||||
| mDisplayOptionHelper.AddOptionItem("收购重量", "bill", "RealWeight", true, true); | |||||
| mDisplayOptionHelper.AddOptionItem("收购头数", "bill", "RealNumber", true, true); | |||||
| //mDisplayOptionHelper.AddOptionItem("胴体重", "bill", "RealNumber", true,true); | |||||
| mDisplayOptionHelper.AddOptionItem("计价总重", "bill", "PriceWeight", true, true); | |||||
| mDisplayOptionHelper.AddOptionItem("结算总重", "bill", "StatPayTotalWeight", true, true); | |||||
| //mDisplayOptionHelper.AddOptionItem("计价重均价", "bill", "RealNumber", true); | |||||
| mDisplayOptionHelper.AddOptionItem("毛重均价", "bill", "RawPrice", true); | |||||
| //(PriceWeight + HurryPriceWeight) / this.RealWeight; | |||||
| mDisplayOptionHelper.AddOptionItem("实付金额", "bill", "ActualMoney", true, true); | |||||
| mDisplayOptionHelper.AddOptionItem("毛重均重", () => | |||||
| { | |||||
| return DQExpression.Divide(DQExpression.Field("RealWeight"), DQExpression.NullIfZero(DQExpression.Field("RealNumber"))); | |||||
| }, true); | |||||
| AddDefaultDressingPercentage(mDisplayOptionHelper); | |||||
| break; | |||||
| case "屠宰": | |||||
| mDisplayOptionHelper.AddOptionItem("阶段号", "_prePhaseAlias", "PrePhase", true); | |||||
| mDisplayOptionHelper.AddOptionItem("屠宰单号", "detail", "Butcher_ID", true); | |||||
| mDisplayOptionHelper.AddOptionItem("级别", "detail", "Livestock_Name"); | |||||
| mDisplayOptionHelper.AddOptionItem("头数", "detail", "Number", false, true); | |||||
| mDisplayOptionHelper.AddOptionItem("重量", "detail", "Weight", false, true); | |||||
| mDisplayOptionHelper.AddOptionItem("计价重", "detail", "PriceWeight", false, true); | |||||
| mDisplayOptionHelper.AddOptionItem("结算总重", "bill", "StatPayTotalWeight", false, true); | |||||
| mDisplayOptionHelper.AddOptionItem("原结算重", "detail", "OldPriceWeight", false, true); | |||||
| mDisplayOptionHelper.AddOptionItem("单价", "detail", "Price"); | |||||
| mDisplayOptionHelper.AddOptionItem("活体品种", "detail", "LiveVarieties_Name"); | |||||
| mDisplayOptionHelper.AddOptionItem("金额", "detail", "Money", false, true); | |||||
| mDisplayOptionHelper.AddOptionItem("折扣", "detail", "Discount"); | |||||
| mDisplayOptionHelper.AddOptionItem("备注", "detail", "Remark"); | |||||
| break; | |||||
| case "副产品": | |||||
| mDisplayOptionHelper.AddOptionItem("重量", "detail", "Weight", true, true); | |||||
| mDisplayOptionHelper.AddOptionItem("备注", "detail", "Remark"); | |||||
| break; | |||||
| case "过磅异常": | |||||
| mDisplayOptionHelper.AddOptionItem("异常项目", "detail", "RewardItem_Name", true); | |||||
| mDisplayOptionHelper.AddOptionItem("头数", "detail", "Number", true); | |||||
| mDisplayOptionHelper.AddOptionItem("单价", "detail", "Price", true); | |||||
| mDisplayOptionHelper.AddOptionItem("金额", "detail", "Money", true, true); | |||||
| mDisplayOptionHelper.AddOptionItem("备注", "detail", "Remark", true); | |||||
| break; | |||||
| case "奖罚": | |||||
| mDisplayOptionHelper.AddOptionItem("奖罚项目", "detail", "RewardItem_Name", true); | |||||
| mDisplayOptionHelper.AddOptionItem("数量", "detail", "Number", true); | |||||
| mDisplayOptionHelper.AddOptionItem("重量", "detail", "Weight", true, true); | |||||
| mDisplayOptionHelper.AddOptionItem("单价", "detail", "Price", true); | |||||
| mDisplayOptionHelper.AddOptionItem("金额", "detail", "Money", true, true); | |||||
| mDisplayOptionHelper.AddOptionItem("备注", "detail", "Remark", true); | |||||
| break; | |||||
| case "急宰": | |||||
| mDisplayOptionHelper.AddOptionItem("头数", "detail", "Number", true, true); | |||||
| mDisplayOptionHelper.AddOptionItem("级别", "detail", "Livestock_Name", true); | |||||
| mDisplayOptionHelper.AddOptionItem("重量", "detail", "Weight", true, true); | |||||
| mDisplayOptionHelper.AddOptionItem("单价", "detail", "Price", true); | |||||
| mDisplayOptionHelper.AddOptionItem("金额", "detail", "Money", true, true); | |||||
| mDisplayOptionHelper.AddOptionItem("备注", "detail", "Remark", true); | |||||
| break; | |||||
| } | |||||
| } | |||||
| protected virtual void AddDefaultDressingPercentage(ReportDisplayOptionHelper mDisplayOptionHelper) | |||||
| { | |||||
| mDisplayOptionHelper.AddOptionItem("出肉率", | |||||
| () => | |||||
| { | |||||
| return DQExpression | |||||
| .Divide(DQExpression.Add(DQExpression.Field("PriceWeight"), DQExpression.Field("HurryPriceWeight")), | |||||
| DQExpression.NullIfZero(DQExpression.Field("RealWeight"))).ECastType<Money<百分数>?>(); | |||||
| }, true); | |||||
| } | |||||
| protected override DQueryDom GetQueryDom() | |||||
| { | |||||
| var query = base.GetQueryDom(); | |||||
| OrganizationUtil.AddOrganizationLimit(query, typeof(StatPay)); | |||||
| var bill = JoinAlias.Create("bill"); | |||||
| var prePhase = new JoinAlias("_prePhaseAlias", typeof(ForPrePhaseTemp)); | |||||
| mDisplayOptionHelper.AddAlias("bill", bill); | |||||
| if (DetailTypeSelect.SelectedItem.Text == "出肉率") | |||||
| AddPurchaseOrderJoinAlias(query, prePhase); | |||||
| else | |||||
| { | |||||
| if (DetailTypeSelect.SelectedItem.Text == "屠宰") | |||||
| AddPurchaseOrderJoinAlias(query, prePhase); | |||||
| AddDetailJoin(query); | |||||
| } | |||||
| switch (statlist.SelectedValue) | |||||
| { | |||||
| case "1": | |||||
| query.Where.Conditions.Add(DQCondition.Or(DQCondition.And(DQCondition.GreaterThanOrEqual(bill, "PaidMoney", 0), DQCondition.LessThan(bill, "PaidMoney", bill, "ActualMoney")), DQCondition.IsNull(DQExpression.Field("PaidMoney")))); | |||||
| break; | |||||
| case "2": | |||||
| query.Where.Conditions.Add(DQCondition.GreaterThanOrEqual(bill, "PaidMoney", bill, "ActualMoney")); | |||||
| break; | |||||
| } | |||||
| mDisplayOptionHelper.AddSelectColumns(query, (name) => OptionIsSelected(DetailTypeSelect.SelectedItem.Text + "显示字段", name), SumColumnIndexs, GroupSumColumnIndexs); | |||||
| var dic = new Dictionary<string, string> { { "已付金额", "PaidMoney" }, { "应付金额", "Money" } }; | |||||
| if (DetailTypeSelect.SelectedItem.Text != "出肉率") | |||||
| { | |||||
| foreach (var c in query.Columns) | |||||
| { | |||||
| if (dic.ContainsKey(c.Name)) | |||||
| { | |||||
| query.GroupBy.Expressions.Add(DQExpression.Field(bill, dic[c.Name])); | |||||
| //SumColumnIndexs.Remove(query.Columns.IndexOf(c)); | |||||
| } | |||||
| else | |||||
| { | |||||
| if (c.Name == "盈亏金额") | |||||
| { | |||||
| query.GroupBy.Expressions.Add(DQExpression.Field(bill, "Money")); | |||||
| query.GroupBy.Expressions.Add(DQExpression.Field(bill, "ActualMoney")); | |||||
| //SumColumnIndexs.Remove(query.Columns.IndexOf(c)); | |||||
| } | |||||
| else if (c.Name == "未付金额") | |||||
| { | |||||
| query.GroupBy.Expressions.Add(DQExpression.Field(bill, "ActualMoney")); | |||||
| query.GroupBy.Expressions.Add(DQExpression.Field(bill, "PaidMoney")); | |||||
| //SumColumnIndexs.Remove(query.Columns.IndexOf(c)); | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| return query; | |||||
| } | |||||
| private void AddPurchaseOrderJoinAlias(DQueryDom query, JoinAlias prePhase) | |||||
| { | |||||
| ForPrePhaseTemp.Register(query); | |||||
| query.From.AddJoin(JoinType.Left, new DQDmoSource(prePhase), DQCondition.EQ(query.From.RootSource.Alias, "ID", prePhase, "StatPay_ID")); | |||||
| mDisplayOptionHelper.AddAlias("_prePhaseAlias", prePhase); | |||||
| if (query.OrderBy.Expressions.Count == 0) | |||||
| { | |||||
| if (query.Columns.Any(x => x.Name == "阶段号")) | |||||
| query.OrderBy.Expressions.Add(DQOrderByExpression.Create(prePhase, "PrePhase")); | |||||
| } | |||||
| } | |||||
| private void AddDetailJoin(DQueryDom query) | |||||
| { | |||||
| var detail = new JoinAlias("detail", Type.GetType(DetailTypeSelect.SelectedValue + ",B3SheepButcherManage")); | |||||
| mDisplayOptionHelper.AddAlias("detail", detail); | |||||
| query.From.AddJoin(JoinType.Left, new DQDmoSource(detail), DQCondition.EQ(JoinAlias.Create("bill"), "ID", detail, "StatPay_ID")); | |||||
| } | |||||
| class ForPrePhaseTemp | |||||
| { | |||||
| public long StatPay_ID { get; set; } | |||||
| public int? PrePhase { get; set; } | |||||
| public static void Register(DQueryDom root) | |||||
| { | |||||
| var main = new JoinAlias("_butcher", typeof(Butcher)); | |||||
| var detail = new JoinAlias("_butcherDetail", typeof(Butcher_Detail)); | |||||
| var query = new DQueryDom(main); | |||||
| query.From.AddJoin(JoinType.Left, new DQDmoSource(detail), DQCondition.EQ(main, "ID", detail, "Butcher_ID")); | |||||
| query.Columns.Add(DQSelectColumn.Field("StatPay_ID", detail)); | |||||
| query.Columns.Add(DQSelectColumn.Field("PrePhase", detail)); | |||||
| query.GroupBy.Expressions.Add(DQExpression.Field(detail, "StatPay_ID")); | |||||
| query.GroupBy.Expressions.Add(DQExpression.Field(detail, "PrePhase")); | |||||
| query.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("Domain_ID", DomainContext.Current.ID), DQCondition.GreaterThanOrEqual("BillState", 单据状态.已审核))); | |||||
| root.RegisterQueryTable(typeof(ForPrePhaseTemp), new string[] { "StatPay_ID", "PrePhase" }, query); | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| @ -0,0 +1,60 @@ | |||||
| <?xml version="1.0" encoding="utf-8" ?> | |||||
| <Select xmlns="urn:XDQuery"> | |||||
| <Columns> | |||||
| </Columns> | |||||
| <From> | |||||
| <DmoClass class="BWP.B3SheepButcherManage.BO.StatPay,B3SheepButcherManage" alias="bill" /> | |||||
| </From> | |||||
| <Where> | |||||
| <And> | |||||
| <EQ> | |||||
| <Field name="ID"/> | |||||
| <QBE paramName="ID"/> | |||||
| </EQ> | |||||
| <EQ> | |||||
| <Field name="AccountingUnit_ID"/> | |||||
| <QBE paramName="AccountingUnit_ID"/> | |||||
| </EQ> | |||||
| <EQ> | |||||
| <Field name="Supplier_ID"/> | |||||
| <QBE paramName="Supplier_ID"/> | |||||
| </EQ> | |||||
| <EQ> | |||||
| <Field name="WeightBill_ID"/> | |||||
| <QBE paramName="WeightBill_ID"/> | |||||
| </EQ> | |||||
| <EQ> | |||||
| <Field name="SupplierClass_ID"/> | |||||
| <QBE paramName="SupplierClass_ID"/> | |||||
| </EQ> | |||||
| <EQ> | |||||
| <Field name="Employee_ID"/> | |||||
| <QBE paramName="Employee_ID"/> | |||||
| </EQ> | |||||
| <EQ> | |||||
| <Field name="ValuationArea_ID"/> | |||||
| <QBE paramName="ValuationArea_ID"/> | |||||
| </EQ> | |||||
| <EQ> | |||||
| <Field name="BillState"/> | |||||
| <QBE paramName="BillState"/> | |||||
| </EQ> | |||||
| <GreaterThanOrEqual> | |||||
| <Field name="Date"/> | |||||
| <QBE paramName="MinDate" /> | |||||
| </GreaterThanOrEqual> | |||||
| <LessThanOrEqual> | |||||
| <Field name="Date"/> | |||||
| <QBE paramName="MaxDate"/> | |||||
| </LessThanOrEqual> | |||||
| <GreaterThanOrEqual> | |||||
| <Field name="WeighTime"/> | |||||
| <QBE paramName="MinWeighTime" /> | |||||
| </GreaterThanOrEqual> | |||||
| <LessThanOrEqual> | |||||
| <Field name="WeighTime"/> | |||||
| <QBE paramName="MaxWeighTime"/> | |||||
| </LessThanOrEqual> | |||||
| </And> | |||||
| </Where> | |||||
| </Select> | |||||
| @ -0,0 +1,935 @@ | |||||
| using BWP.B3CowButcherManage.NamedValueTemplate; | |||||
| using BWP.B3Frameworks; | |||||
| using BWP.B3Frameworks.BL; | |||||
| using BWP.B3Frameworks.BO.NamedValueTemplate; | |||||
| using BWP.B3Frameworks.Utils; | |||||
| using BWP.B3SheepButcherManage.BO; | |||||
| using BWP.B3SheepButcherManage.Utils; | |||||
| using Forks.EnterpriseServices; | |||||
| using Forks.EnterpriseServices.BusinessInterfaces; | |||||
| using Forks.EnterpriseServices.DomainObjects2; | |||||
| using Forks.EnterpriseServices.DomainObjects2.DQuery; | |||||
| using Forks.EnterpriseServices.SimpleScript; | |||||
| using Forks.EnterpriseServices.SqlDoms; | |||||
| using Forks.Utils; | |||||
| using System; | |||||
| using System.Collections; | |||||
| using System.Collections.Generic; | |||||
| using System.Linq; | |||||
| using System.Text; | |||||
| using TSingSoft.WebPluginFramework; | |||||
| using CW = BWP.B3CowButcherManage.BO; | |||||
| namespace BWP.B3SheepButcherManage.BL | |||||
| { | |||||
| [LogicName("羊结算单")] | |||||
| [BusinessInterface(typeof(StatPayBL))] | |||||
| public interface IStatPayBL : IDepartmentWorkFlowBillBL<StatPay> | |||||
| { | |||||
| [Log(Disabled = true)] | |||||
| void SetDetailPrice(StatPay dmo); | |||||
| [Log(Disabled = true)] | |||||
| void SetButcherDetails(List<long> detailList, long statPayID); | |||||
| [Log(Disabled = true)] | |||||
| void CancelButcherDetails(List<long> detailList, long statPayID); | |||||
| [Log(Disabled = true)] | |||||
| void AddButcherDetails(StatPay dmo); | |||||
| [Log(Disabled = true)] | |||||
| void CancelAllButcherDetails(long statPayID); | |||||
| [Log(Disabled = true)] | |||||
| void SetHurryButchers(List<long> detailList, long statPayID); | |||||
| [Log(Disabled = true)] | |||||
| void CancelHurryButchers(List<long> detailList, long statPayID); | |||||
| [Log(Disabled = true)] | |||||
| void CancelAllHurryButchers(long statPayID); | |||||
| [Log(Disabled = true)] | |||||
| void AddHurryButchers(StatPay dmo); | |||||
| [Log(Disabled = true)] | |||||
| void AddOtherReward(StatPay dmo); | |||||
| void WeightCreateStayDom(StatPay statPay); | |||||
| } | |||||
| public class StatPayBL : DepartmentWorkFlowBillBL<StatPay>, IStatPayBL | |||||
| { | |||||
| protected override void doDelete(StatPay dmo) | |||||
| { | |||||
| dmo.WeightBill_ID = null; | |||||
| base.doDelete(dmo); | |||||
| } | |||||
| protected override void doInitNewDmo(StatPay dmo) | |||||
| { | |||||
| base.doInitNewDmo(dmo); | |||||
| FillValuationArea(dmo); | |||||
| } | |||||
| void FillValuationArea(StatPay dmo) | |||||
| { | |||||
| if (dmo.AccountingUnit_ID == null) | |||||
| return; | |||||
| var query = new DQueryDom(new JoinAlias(typeof(CW.ValuationArea))); | |||||
| query.Columns.Add(DQSelectColumn.Field("ID")); | |||||
| query.Columns.Add(DQSelectColumn.Field("Name")); | |||||
| query.Range = SelectRange.Top(2); | |||||
| query.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("AccountingUnit_ID", dmo.AccountingUnit_ID), DQCondition.EQ("Stopped", false))); | |||||
| var result = query.EExecuteList<long, string>(); | |||||
| if (result.Count == 1) | |||||
| { | |||||
| dmo.ValuationArea_ID = result.First().Item1; | |||||
| dmo.ValuationArea_Name = result.First().Item2; | |||||
| } | |||||
| } | |||||
| protected override void beforeDelete(StatPay dmo) | |||||
| { | |||||
| //删除的时候删掉屠宰记录明细上的结算单号 | |||||
| UpdateButcherDetailStatPayIdNull(dmo.Details.Select(x => x.StatPay_ID).ToList()); | |||||
| base.beforeDelete(dmo); | |||||
| } | |||||
| void UpdateButcherDetailStatPayIdNull(List<long> ids) | |||||
| { | |||||
| if (ids.Count == 0) | |||||
| { | |||||
| return; | |||||
| } | |||||
| var dom = new DQUpdateDom(typeof(Butcher_Detail)); | |||||
| dom.Where.Conditions.EFieldInList("ID", ids); | |||||
| dom.Columns.Add(new DQUpdateColumn("StatPay_ID", DQExpression.NULL)); | |||||
| Session.ExecuteNonQuery(dom); | |||||
| } | |||||
| protected override void beforeSave(StatPay dmo) | |||||
| { | |||||
| if (dmo.ValuationArea_ID == null) | |||||
| FillValuationArea(dmo); | |||||
| RefreshPriceID(dmo); | |||||
| foreach (var detail in dmo.HurryButcherDetails) | |||||
| { | |||||
| detail.Money = detail.Price * detail.Weight; | |||||
| } | |||||
| foreach (var detail in dmo.Details) | |||||
| { | |||||
| detail.Money = detail.PriceWeight * detail.Price * ((detail.Discount ?? 100) / 100); | |||||
| } | |||||
| foreach (StatPay_OtherReward detail in dmo.OtherRewardDetails) | |||||
| { | |||||
| detail.Money = detail.Price * detail.Number; | |||||
| } | |||||
| if (dmo.MoneyCountMethod != 计价方式.毛重价) | |||||
| { | |||||
| foreach (StatPay_Exception detail in dmo.ExceptionDetails) | |||||
| { | |||||
| detail.Money = detail.Price * detail.Number; | |||||
| } | |||||
| } | |||||
| dmo.BillMoney = dmo.Details.Sum(x => (x.Money ?? 0).Value) + dmo.HurryButcherDetails.Sum(x => (x.Money ?? 0).Value) + dmo.ExceptionDetails.Sum(x => (x.Money ?? 0).Value) + dmo.OtherRewardDetails.Sum(x => (x.Money ?? 0).Value); | |||||
| dmo.ExceptionMoney = dmo.ExceptionDetails.Sum(x => (x.Money ?? 0).Value); | |||||
| dmo.OtherRewardMoney = dmo.OtherRewardDetails.Sum(x => (x.Money ?? 0).Value); | |||||
| SetDmoProperties(dmo); | |||||
| if (dmo.MoneyCountMethod == 计价方式.毛重价) | |||||
| { | |||||
| SetPrice(dmo); | |||||
| foreach (var item in dmo.WeightDetails) | |||||
| { | |||||
| item.Money = item.Price * item.Weight; | |||||
| } | |||||
| dmo.Money = dmo.WeightDetails.Sum(x => (x.Money ?? 0).Value) - dmo.ExceptionDetails.Sum(x => (x.Money ?? 0).Value) - dmo.OtherRewardDetails.Sum(x => (x.Money ?? 0).Value); | |||||
| } | |||||
| base.beforeSave(dmo); | |||||
| } | |||||
| public void WeightCreateStayDom(StatPay dmo) | |||||
| { | |||||
| if (dmo.ValuationArea_ID == null) | |||||
| FillValuationArea(dmo); | |||||
| RefreshPriceID(dmo); | |||||
| if (dmo.MoneyCountMethod == 计价方式.毛重价) | |||||
| { | |||||
| SetPrice(dmo); | |||||
| foreach (var item in dmo.WeightDetails) | |||||
| { | |||||
| item.Money = item.Price * item.Number; | |||||
| } | |||||
| dmo.Money = dmo.WeightDetails.Sum(x => (x.Money ?? 0).Value) - | |||||
| dmo.ExceptionDetails.Sum(x => (x.Money ?? 0).Value) - | |||||
| dmo.OtherRewardDetails.Sum(x => (x.Money ?? 0).Value); | |||||
| } | |||||
| } | |||||
| private void SetPrice(StatPay dmo) | |||||
| { | |||||
| if (dmo.FixedPrice_ID == null || dmo.ValuationArea_ID == null) | |||||
| return; | |||||
| var bl = BIFactory.Create<IFixedPriceBL>(BCWrapClassType.Inner, this); | |||||
| var weighPrice = bl.Load(dmo.FixedPrice_ID.Value); | |||||
| if (weighPrice == null) | |||||
| return; | |||||
| foreach (var detail in dmo.WeightDetails) | |||||
| { | |||||
| var avgW = (detail.Number ?? 0) == 0 ? 0 : (detail.Weight / detail.Number); | |||||
| var priceDetail = weighPrice.Details.FirstOrDefault( | |||||
| x => | |||||
| { | |||||
| var result = x.LiveVarieties_ID == detail.LiveVarieties_ID && x.ValuationArea_ID == dmo.ValuationArea_ID; | |||||
| return result; | |||||
| }); | |||||
| if (priceDetail == null) | |||||
| continue; | |||||
| detail.Price = priceDetail.Price; | |||||
| } | |||||
| } | |||||
| private void RefreshPriceID(StatPay dmo) | |||||
| { | |||||
| var detail = new JoinAlias(typeof(FixedPrice_Detail)); | |||||
| var bill = new JoinAlias(typeof(FixedPrice)); | |||||
| var dom = new DQueryDom(bill); | |||||
| dom.From.AddJoin(JoinType.Inner, new DQDmoSource(detail), DQCondition.EQ(bill, "ID", detail, "FixedPrice_ID")); | |||||
| dom.Where.Conditions.Add(DQCondition.EQ(detail, "ValuationArea_ID", dmo.ValuationArea_ID)); | |||||
| dom.Where.Conditions.Add(DQCondition.EQ(bill, "AccountingUnit_ID", dmo.AccountingUnit_ID)); | |||||
| dom.Where.Conditions.Add(DQCondition.EQ("BillState", 单据状态.已审核)); | |||||
| dom.Where.Conditions.Add(DQCondition.LessThanOrEqual("ExeTime", dmo.WeighTime)); | |||||
| dom.Columns.Add(DQSelectColumn.Field("ID")); | |||||
| dom.OrderBy.Expressions.Add(DQOrderByExpression.Create("ID", true)); | |||||
| var id = dom.EExecuteScalar<long?>(Session); | |||||
| if (id != dmo.FixedPrice_ID) | |||||
| { | |||||
| if (dmo.Details.Count != 0) | |||||
| { | |||||
| throw new ApplicationException("定价单已变更!需要清除屠宰明细"); | |||||
| } | |||||
| if (dmo.HurryButcherDetails.Count != 0) | |||||
| { | |||||
| throw new ApplicationException("定价单已变更!需要清除急宰明细"); | |||||
| } | |||||
| } | |||||
| dmo.FixedPrice_ID = id; | |||||
| } | |||||
| private void SetDmoProperties(StatPay dmo) | |||||
| { | |||||
| dmo.SumWeight = dmo.Details.Sum(x => (x.Weight ?? 0).Value); | |||||
| dmo.PriceWeight = dmo.Details.Sum(x => (x.PriceWeight ?? 0).Value); | |||||
| dmo.HurryPriceWeight = dmo.HurryButcherDetails.Sum(x => (x.PriceWeight ?? 0).Value); | |||||
| dmo.StatPayTotalWeight = (dmo.PriceWeight ?? 0) + (dmo.HurryPriceWeight ?? 0); | |||||
| if (dmo.RealWeight.HasValue && dmo.RealWeight.Value != 0) | |||||
| { | |||||
| dmo.CheckTareWeightPrice = (dmo.BillMoney ?? 0) / dmo.RealWeight; | |||||
| if (dmo.CheckTareWeightPrice != null) | |||||
| { | |||||
| dmo.CheckTareWeightPrice = decimal.Round(dmo.CheckTareWeightPrice.Value.Value, 2); | |||||
| } | |||||
| //胴体率计算公式=胴体重/毛重 | |||||
| dmo.NewBodyRate = dmo.Details.Sum(x => (x.Weight ?? 0).Value) / dmo.RealWeight; | |||||
| } | |||||
| dmo.Money = dmo.BillMoney; | |||||
| //5、实付单价默认=毛重单价,可以修改,并保存; | |||||
| //6、实付金额=收购重量*实付单价 | |||||
| if (!dmo.UpdateActualPrice) | |||||
| { | |||||
| dmo.ActualMoney = dmo.Money; | |||||
| } | |||||
| else | |||||
| { | |||||
| dmo.ActualMoney = dmo.ActualPrice * dmo.RealWeight; | |||||
| } | |||||
| if (dmo.RealWeight != null && dmo.RealWeight != 0) | |||||
| { | |||||
| //毛重均价=应付金额/收购重量 调整为 毛重均价=实付金额/收购重量 | |||||
| dmo.RawPrice = Math.Round((dmo.ActualMoney ?? 0) / (dmo.RealWeight), 2); | |||||
| } | |||||
| if (!dmo.UpdateActualPrice) | |||||
| { | |||||
| dmo.ActualPrice = dmo.RawPrice; | |||||
| } | |||||
| } | |||||
| protected override List<string> MinDmoProperties | |||||
| { | |||||
| get | |||||
| { | |||||
| var list = base.MinDmoProperties; | |||||
| list.Add("WeightBill_ID"); | |||||
| list.Add("UpdateActualPrice"); | |||||
| return list; | |||||
| } | |||||
| } | |||||
| public void SetButcherDetails(List<long> detailList, long statPayID) | |||||
| { | |||||
| SetDetails<Butcher_Detail>(detailList, statPayID); | |||||
| } | |||||
| public void CancelButcherDetails(List<long> detailList, long statPayID) | |||||
| { | |||||
| CancelDetails<Butcher_Detail>(detailList, statPayID); | |||||
| } | |||||
| //屠宰记录汇总 急宰汇总 重新计算收购头数,收购重量 | |||||
| public void ResetAcquisitionInfo(StatPay dmo) | |||||
| { | |||||
| var 屠宰记录头数 = dmo.Details.Sum(x => x.Number ?? 0); | |||||
| var 急宰记录头数 = dmo.HurryButcherDetails.Sum(x => x.Number ?? 0); //StatPay_HurryButcher | |||||
| var 磅后记录头数 = dmo.HurryButcherDetails.Sum(x => x.Number ?? 0); | |||||
| // if (屠宰记录头数 + 急宰记录头数 == dmo.RealNumber) | |||||
| // { | |||||
| // return; | |||||
| // } | |||||
| var 总磅后头数 = 屠宰记录头数 + 磅后记录头数; | |||||
| var 过磅单已结算 = Get过磅单已结算(dmo.ID, dmo.WeightBill_ID); | |||||
| var 已结算过磅单头数 = 过磅单已结算.Item1; | |||||
| var 已结算过磅单重量 = Math.Round((decimal)过磅单已结算.Item2, 2); | |||||
| if (总磅后头数 + 已结算过磅单头数 > (dmo.WeighBill_BuyNum ?? 0)) | |||||
| { | |||||
| throw new Exception("已结算头数:" + 已结算过磅单头数 + " 本次结算头数:" + 总磅后头数 + "不能大于 过磅单:" + dmo.WeightBill_ID + " 总收购头数:" + dmo.WeighBill_BuyNum); | |||||
| } | |||||
| dmo.RealNumber = 屠宰记录头数 + 急宰记录头数;//收购头数计算 | |||||
| var 榜前急宰重量 = Math.Round(dmo.HurryButcherDetails.Sum(x => (decimal?)x.Weight ?? 0), 2); | |||||
| if (总磅后头数 + 已结算过磅单头数 == (dmo.WeighBill_BuyNum ?? 0)) | |||||
| { | |||||
| //如果刚好等于过磅单的头数,则重量直接减掉,防止小数点 | |||||
| dmo.RealWeight = 榜前急宰重量 + (Math.Round((decimal)(dmo.WeighBill_BuyWeigh1 ?? 0), 2) - 已结算过磅单重量);//收购重量计算 | |||||
| } | |||||
| else | |||||
| { | |||||
| var 过磅单每头猪的重量 = dmo.WeighBill_BuyWeigh1 / dmo.WeighBill_BuyNum; | |||||
| var 本次榜后结算重量 = Math.Round((总磅后头数 * 过磅单每头猪的重量 ?? 0), 2); | |||||
| dmo.RealWeight = 榜前急宰重量 + 本次榜后结算重量; | |||||
| } | |||||
| //更新到数据库 | |||||
| UpdateHeadNumAndWeight(dmo.ID, dmo.RealNumber, dmo.RealWeight); | |||||
| } | |||||
| private void UpdateHeadNumAndWeight(long dmoId, int? dmoRealNumber, Money<decimal>? dmoRealWeight) | |||||
| { | |||||
| var updateDom = new DQUpdateDom(typeof(StatPay)); | |||||
| updateDom.Where.Conditions.Add(DQCondition.EQ("ID", dmoId)); | |||||
| updateDom.Columns.Add(new DQUpdateColumn("RealNumber", dmoRealNumber)); | |||||
| updateDom.Columns.Add(new DQUpdateColumn("RealWeight", dmoRealWeight)); | |||||
| Session.ExecuteNonQuery(updateDom); | |||||
| } | |||||
| private Tuple<int, Money<decimal>> Get过磅单已结算(long dmoId, long? dmoWeighId) | |||||
| { | |||||
| var query = new DmoQuery(typeof(StatPay)); | |||||
| query.Where.Conditions.Add(DQCondition.InEQ("BillState", 单据状态.已作废)); | |||||
| query.Where.Conditions.Add(DQCondition.InEQ("ID", dmoId)); | |||||
| query.Where.Conditions.Add(DQCondition.EQ("WeightBill_ID", dmoWeighId ?? 0)); | |||||
| query.Where.Conditions.Add(DQCondition.EQ("Domain_ID", DomainContext.Current.ID)); | |||||
| var list = Session.ExecuteList(query).Cast<StatPay>().ToList(); | |||||
| var 屠宰记录头数 = list.Sum(x => x.Details.Sum(y => y.Number ?? 0)); | |||||
| var 榜后急宰记录头数 = list.Sum(x => x.HurryButcherDetails.Sum(z => z.Number ?? 0)); | |||||
| var 已结算头数 = 屠宰记录头数 + 榜后急宰记录头数; | |||||
| // var 屠宰记录重量 = list.Sum(x => x.Details.Sum(y => (decimal?)y.Weight ?? 0)); | |||||
| // var 榜后急宰记录重量 = list.Sum(x => x.HurryButcherDetails.Where(y => y.AfterWeigh).Sum(z => (decimal?)z.Weight ?? 0)); | |||||
| var 榜前急宰记录重量 = list.Sum(x => x.HurryButcherDetails.Sum(z => (decimal?)z.Weight ?? 0)); | |||||
| var 结算单总收购重量 = list.Sum(x => (decimal?)x.RealWeight ?? 0); | |||||
| var 已结算收购重量 = 结算单总收购重量 - 榜前急宰记录重量; | |||||
| return new Tuple<int, Money<decimal>>(已结算头数, 已结算收购重量); | |||||
| } | |||||
| //屠宰记录汇总 | |||||
| public void AddButcherDetails(StatPay dmo) | |||||
| { | |||||
| var dom = new DQueryDom(new JoinAlias(typeof(Butcher_Detail)));//屠宰单明细 | |||||
| dom.Where.Conditions.Add(DQCondition.EQ("StatPay_ID", dmo.ID));//结算单 | |||||
| dom.Columns.Add(DQSelectColumn.Field("Butcher_ID")); | |||||
| dom.Columns.Add(DQSelectColumn.Field("Livestock_ID")); | |||||
| dom.Columns.Add(DQSelectColumn.Field("Livestock_Name")); | |||||
| dom.Columns.Add(DQSelectColumn.Field("FinalWeight")); | |||||
| dom.Columns.Add(DQSelectColumn.Field("Remark")); | |||||
| dom.Columns.Add(DQSelectColumn.Field("LiveVarieties_ID")); | |||||
| dom.Columns.Add(DQSelectColumn.Field("LiveVarieties_Name")); | |||||
| dom.OrderBy.Expressions.Add(DQOrderByExpression.Create("LiveVarieties_ID", false)); | |||||
| var list = new StatPay_ButcherCollection(); | |||||
| using (var reader = Session.ExecuteReader(dom)) | |||||
| { | |||||
| while (reader.Read()) | |||||
| { | |||||
| var detail = new StatPay_Butcher(); | |||||
| detail.Butcher_ID = (long?)reader[0]; | |||||
| detail.Livestock_ID = (long?)reader[1]; | |||||
| detail.Livestock_Name = (string)reader[2]; | |||||
| detail.Number = 1; | |||||
| detail.Weight = (Money<decimal>?)(reader[3]); | |||||
| detail.Remark = (string)reader[4]; | |||||
| detail.OldPriceWeight = detail.Weight; | |||||
| detail.PriceWeight = detail.Weight; | |||||
| detail.LiveVarieties_ID = (long?)reader[5]; | |||||
| detail.LiveVarieties_Name = (string)reader[6]; | |||||
| list.Add(detail); | |||||
| } | |||||
| } | |||||
| SetPrice(dmo, list); | |||||
| dmo.Details.Clear(); | |||||
| var groupByPrice = list.GroupBy(x => new { x.LiveVarieties_ID, x.Livestock_ID, x.Butcher_ID, x.Remark, x.Price }); | |||||
| foreach (var newDetail in groupByPrice) | |||||
| { | |||||
| var weight = newDetail.Sum(x => (x.Weight ?? 0).Value); | |||||
| var first = newDetail.FirstOrDefault(); | |||||
| var d = new StatPay_Butcher | |||||
| { | |||||
| Butcher_ID = first.Butcher_ID, | |||||
| Livestock_ID = first.Livestock_ID, | |||||
| Livestock_Name = first.Livestock_Name, | |||||
| LiveVarieties_ID = first.LiveVarieties_ID, | |||||
| LiveVarieties_Name = first.LiveVarieties_Name, | |||||
| Number = newDetail.Count(), | |||||
| OldPriceWeight = weight, | |||||
| Weight = weight, | |||||
| Discount = first.Discount, | |||||
| Remark = first.Remark, | |||||
| Price = first.Price | |||||
| }; | |||||
| d.PriceWeight = d.Weight; | |||||
| d.Money = d.PriceWeight * d.Price * ((d.Discount ?? 100) / 100); | |||||
| dmo.Details.Add(d); | |||||
| } | |||||
| ResetAcquisitionInfo(dmo); | |||||
| } | |||||
| public void CancelAllButcherDetails(long statPayID) | |||||
| { | |||||
| var wid = InnerBLUtil.GetDmoPropertyByID<long?>(Session, typeof(StatPay), "WeightBill_ID", statPayID); | |||||
| if (wid.HasValue) | |||||
| { | |||||
| var sql = string.Format("update d set d.StatPay_ID = null from B3SheepButcherManage_Butcher_Detail d left outer join B3SheepButcherManage_StatPay m on d.StatPay_ID=m.ID where d.WeightBill_ID={0} and m.ID is null and d.StatPay_ID is not null", wid); | |||||
| Session.ExecuteSqlNonQuery(sql); | |||||
| } | |||||
| CancelAllDetails<Butcher_Detail>(statPayID); | |||||
| } | |||||
| public void SetHurryButchers(List<long> detailList, long statPayID) | |||||
| { | |||||
| //SetDetails<HurryButcher_Detail>(detailList, statPayID); | |||||
| } | |||||
| public void CancelHurryButchers(List<long> detailList, long statPayID) | |||||
| { | |||||
| //CancelDetails<HurryButcher_Detail>(detailList, statPayID); | |||||
| } | |||||
| public void CancelAllHurryButchers(long statPayID) | |||||
| { | |||||
| //CancelAllDetails<HurryButcher_Detail>(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<decimal>?)reader[3]; | |||||
| // detail.Number = (int?)reader[4]; | |||||
| // detail.Remark = (string)reader[5]; | |||||
| // detail.PriceWeight = detail.Weight; | |||||
| // detail.GrossWeight = (Money<decimal>?)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) | |||||
| { | |||||
| //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; | |||||
| // } | |||||
| //} | |||||
| } | |||||
| private void AddDefaultOtherReward(StatPay dmo, Runner runner, Tuple<string, long, string, string> tuple) | |||||
| { | |||||
| //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["金额"]); | |||||
| //var reDetail = new StatPay_OtherReward(); | |||||
| //reDetail.Price = price; | |||||
| //reDetail.Number = number; | |||||
| //reDetail.Money = money; | |||||
| //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); | |||||
| } | |||||
| private DQueryDom GetRewardButcherIdDom(long? dmoWeighId) | |||||
| { | |||||
| var query = new DQueryDom(new JoinAlias(typeof(Butcher_Detail))); | |||||
| query.Where.Conditions.Add(DQCondition.EQ("WeightBill_ID", dmoWeighId)); | |||||
| query.Columns.Add(DQSelectColumn.Field("Butcher_ID")); | |||||
| query.Distinct = true; | |||||
| return query; | |||||
| } | |||||
| //根据屠宰单号分开 | |||||
| private void AddRewardWithButcherAbnormal(StatPay dmo, Runner runner, Tuple<string, long, string, string> tuple) | |||||
| { | |||||
| var dom1 = new DQueryDom(new JoinAlias(typeof(Butcher_Detail))); | |||||
| dom1.Where.Conditions.Add(DQCondition.EQ("StatPay_ID", dmo.ID)); | |||||
| dom1.Columns.Add(DQSelectColumn.Field("PrePhase")); | |||||
| dom1.Columns.Add(DQSelectColumn.Field("Butcher_ID")); | |||||
| dom1.Distinct = true; | |||||
| var result = dom1.EExecuteList<int?, long?>(Session); | |||||
| if (result == null) | |||||
| return; | |||||
| var phaseList = result.GroupBy(x => x.Item2); | |||||
| // var detail = new JoinAlias(typeof(ButcherAbnormalRecordDetailed)); | |||||
| // var bill = new JoinAlias(typeof(ButcherAbnormalRecord)); | |||||
| // var dom = new DQueryDom(detail); | |||||
| // var allCondtions = DQCondition.Or(phaseList.Select(x => | |||||
| //DQCondition.And( | |||||
| // DQCondition.EQ(bill, "Butcher_ID", x.Key), | |||||
| // DQCondition.InList( | |||||
| // DQExpression.Field(detail, "PrePhase"), | |||||
| // x.Select(y => DQExpression.Value(y.Item1)).ToArray()) | |||||
| // ) | |||||
| //)); | |||||
| // dom.From.AddJoin(JoinType.Inner, new DQDmoSource(bill), DQCondition.EQ(detail, "ButcherAbnormalRecordDetailed_ID", bill, "ID")); | |||||
| // dom.Where.Conditions.Add(DQCondition.And(DQCondition.EQ(bill, "AccountingUnit_ID", dmo.AccountingUnit_ID), DQCondition.EQ(bill, "BillState", 单据状态.已审核))); dom.Where.Conditions.Add(DQCondition.EQ(detail, "Sanction_ID", tuple.Item2)); | |||||
| // dom.Where.Conditions.Add(allCondtions); | |||||
| // dom.Columns.Add(DQSelectColumn.Sum("Number")); | |||||
| // dom.Columns.Add(DQSelectColumn.Sum("SubWeight")); | |||||
| // int numberAbn = 0; | |||||
| // decimal subWeightAbn = 0m; | |||||
| // using (var reader = Session.ExecuteReader(dom)) | |||||
| // { | |||||
| // if (reader.Read()) | |||||
| // { | |||||
| // numberAbn = ((int?)reader[0]) ?? 0; | |||||
| // subWeightAbn = ((decimal?)reader[1]) ?? 0; | |||||
| // } | |||||
| // } | |||||
| // runner.Global["屠宰单结算重"] = 0; | |||||
| // runner.Global["屠宰异常单头数"] = numberAbn; | |||||
| // runner.Global["屠宰异常单扣重"] = subWeightAbn; | |||||
| // runner.Global["单价"] = 0m; | |||||
| // runner.Global["头数"] = 0; | |||||
| // runner.Global["金额"] = 0m; | |||||
| // runner.Global["结算奖罚重量"] = 0m; | |||||
| // 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) | |||||
| // { | |||||
| // return; | |||||
| // } | |||||
| // var reDetail = new StatPay_OtherReward(); | |||||
| // reDetail.Price = price; | |||||
| // reDetail.Number = number; | |||||
| // reDetail.Money = money; | |||||
| // reDetail.Weight = rewardWeight; | |||||
| // reDetail.Sanction_ID = tuple.Item2; | |||||
| // reDetail.AbnormalItem_Name = tuple.Item1; | |||||
| // DmoUtil.RefreshDependency(reDetail, "Sanction_ID"); | |||||
| // dmo.OtherRewardDetails.Add(reDetail); | |||||
| } | |||||
| private decimal? GetSubWeightByScanId(long weighid, long sanction_ID) | |||||
| { | |||||
| var bill = new JoinAlias(typeof(WeightBill)); | |||||
| var detail = new JoinAlias(typeof(WeightBill_AbnormalRecording)); | |||||
| // | |||||
| var query = new DQueryDom(bill); | |||||
| query.From.AddJoin(JoinType.Left, new DQDmoSource(detail), DQCondition.EQ(bill, "ID", detail, "WeightBill_ID")); | |||||
| query.Where.Conditions.Add(DQCondition.EQ(bill, "ID", weighid)); | |||||
| query.Where.Conditions.Add(DQCondition.EQ(detail, "ID", sanction_ID)); | |||||
| query.Columns.Add(DQSelectColumn.Field("SubWeight", detail)); | |||||
| return query.EExecuteScalar<decimal?>(Session); | |||||
| } | |||||
| 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 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 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 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); | |||||
| //} | |||||
| } | |||||
| private void CancelAllDetails<T>(long statPayID) | |||||
| { | |||||
| var dom = new DQUpdateDom(typeof(T)); | |||||
| dom.Where.Conditions.Add(DQCondition.EQ("StatPay_ID", statPayID)); | |||||
| dom.Columns.Add(new DQUpdateColumn("StatPay_ID", DQExpression.NULL)); | |||||
| Session.ExecuteNonQuery(dom); | |||||
| } | |||||
| private void SetDetails<T>(IList ids, long statPayID) | |||||
| { | |||||
| if (ids.Count == 0) | |||||
| throw new Exception("没有选择记录"); | |||||
| var dom = new DQUpdateDom(typeof(T)); | |||||
| dom.Where.Conditions.Add(DQCondition.IsNull(DQExpression.Field("StatPay_ID"))); | |||||
| dom.Where.Conditions.Add(DQCondition.IsNotNull(DQExpression.Field("Weight"))); | |||||
| dom.Where.Conditions.EFieldInList("ID", ids); | |||||
| dom.Columns.Add(new DQUpdateColumn("StatPay_ID", statPayID)); | |||||
| Session.ExecuteNonQuery(dom); | |||||
| } | |||||
| private void CancelDetails<T>(IList ids, long statPayID) | |||||
| { | |||||
| if (ids.Count == 0) | |||||
| throw new Exception("没有选择记录"); | |||||
| var dom = new DQUpdateDom(typeof(T)); | |||||
| dom.Where.Conditions.Add(DQCondition.EQ("StatPay_ID", statPayID)); | |||||
| dom.Where.Conditions.EFieldInList("ID", ids); | |||||
| dom.Columns.Add(new DQUpdateColumn("StatPay_ID", DQExpression.NULL)); | |||||
| Session.ExecuteNonQuery(dom); | |||||
| } | |||||
| private void SetPrice(StatPay dmo, IEnumerable<IStatDetail> list) | |||||
| { | |||||
| foreach (var detail in list) | |||||
| { | |||||
| if (detail.Remark == null) | |||||
| detail.Remark = ""; | |||||
| } | |||||
| if (dmo.FixedPrice_ID == null || dmo.ValuationArea_ID == null) | |||||
| return; | |||||
| var bl = BIFactory.Create<IFixedPriceBL>(BCWrapClassType.Inner, this); | |||||
| var weighPrice = bl.Load(dmo.FixedPrice_ID.Value); | |||||
| if (weighPrice == null) | |||||
| return; | |||||
| bool isStatPay_Butcher = false; | |||||
| bool isHurry = false; | |||||
| if (list.Any()) | |||||
| { | |||||
| var ft = list.First().GetType(); | |||||
| if (ft == typeof(StatPay_Butcher)) | |||||
| isStatPay_Butcher = true; | |||||
| else if (ft == typeof(StatPay_HurryButcher)) | |||||
| isHurry = true; | |||||
| } | |||||
| foreach (var detail in list) | |||||
| { | |||||
| FixedPrice_Detail priceDetail = null; | |||||
| if (isStatPay_Butcher) | |||||
| priceDetail = weighPrice.Details.FirstOrDefault( | |||||
| x => (x.LiveVarieties_ID ?? 0) == (detail.LiveVarieties_ID ?? 0) && x.Livestock_ID == detail.Livestock_ID && x.ValuationArea_ID == dmo.ValuationArea_ID); | |||||
| else if (isHurry) | |||||
| priceDetail = | |||||
| weighPrice.Details.FirstOrDefault( | |||||
| x => (x.LiveVarieties_ID ?? 0) == (detail.LiveVarieties_ID ?? 0) && x.Livestock_ID == detail.Livestock_ID && x.ValuationArea_ID == dmo.ValuationArea_ID); | |||||
| else | |||||
| priceDetail = | |||||
| weighPrice.Details.FirstOrDefault( | |||||
| x => x.Livestock_ID == detail.Livestock_ID && x.ValuationArea_ID == dmo.ValuationArea_ID); | |||||
| if (priceDetail == null) | |||||
| continue; | |||||
| detail.Price = priceDetail.Price; | |||||
| } | |||||
| } | |||||
| public void SetDetailPrice(StatPay dmo) | |||||
| { | |||||
| var list = BeforeSetPrice(dmo.ID, this); | |||||
| DoSetDetailPrice(dmo, list); | |||||
| } | |||||
| private static StatPay_ButcherCollection BeforeSetPrice(long id, StatPayBL statPayBL) | |||||
| { | |||||
| var config = new B3SheepButcherManageConfig().SubtractWeight.Value; | |||||
| if (config == 0) | |||||
| config = 1m; | |||||
| var dom = new DQueryDom(new JoinAlias(typeof(Butcher_Detail))); | |||||
| dom.Where.Conditions.Add(DQCondition.EQ("StatPay_ID", id)); | |||||
| dom.Columns.Add(DQSelectColumn.Field("Butcher_ID")); | |||||
| // 重量 - 扣重 | |||||
| dom.Columns.Add(DQSelectColumn.Create(DQExpression.Subtract(DQExpression.IfNull(DQExpression.Multiply(DQExpression.Field("Weight"), DQExpression.Value(config)), DQExpression.Value(0)), DQExpression.IfNull(DQExpression.Field("SubtractWeight"), DQExpression.Value(0))), "finalWeight")); | |||||
| dom.Columns.Add(DQSelectColumn.Field("Remark")); | |||||
| dom.Columns.Add(DQSelectColumn.Field("Livestock_ID")); | |||||
| var list = new StatPay_ButcherCollection(); | |||||
| using (var reader = statPayBL.Session.ExecuteReader(dom)) | |||||
| { | |||||
| while (reader.Read()) | |||||
| { | |||||
| var detail = new StatPay_Butcher | |||||
| { | |||||
| Butcher_ID = (long?)reader[0], | |||||
| Number = 1 | |||||
| }; | |||||
| var dec = Math.Floor(Convert.ToDecimal(reader[1]) * 10); | |||||
| detail.Weight = dec / 10; | |||||
| detail.Remark = (string)reader[2]; | |||||
| detail.OldPriceWeight = detail.Weight; | |||||
| detail.PriceWeight = detail.Weight; | |||||
| detail.Livestock_ID = (long?)reader[3]; | |||||
| list.Add(detail); | |||||
| } | |||||
| } | |||||
| return list; | |||||
| } | |||||
| private void DoSetDetailPrice(StatPay dmo, StatPay_ButcherCollection list) | |||||
| { | |||||
| if (dmo.WeightBill_ID == null || dmo.FixedPrice_ID == null || dmo.ValuationArea_ID == null) | |||||
| return; | |||||
| var bl = BIFactory.Create<IFixedPriceBL>(BCWrapClassType.Inner, this); | |||||
| var weighPrice = bl.Load(dmo.FixedPrice_ID.Value); | |||||
| if (weighPrice == null) | |||||
| return; | |||||
| foreach (var detail in list) | |||||
| { | |||||
| foreach (var priceDetail in weighPrice.Details.Where(x => x.ValuationArea_ID == dmo.ValuationArea_ID && x.Livestock_ID == detail.Livestock_ID)) | |||||
| { | |||||
| detail.Price = priceDetail.Price; | |||||
| detail.WeighPrice_DetailID = priceDetail.ID; | |||||
| if (string.IsNullOrEmpty(detail.Remark)) | |||||
| { | |||||
| detail.Remark = null; | |||||
| } | |||||
| break; | |||||
| } | |||||
| } | |||||
| dmo.Details.Clear(); | |||||
| var groupByPrice = list.GroupBy(x => new { x.Livestock_ID, x.WeighPrice_DetailID, x.Butcher_ID, x.Remark, x.Discount, x.Price }); | |||||
| foreach (var newDetail in groupByPrice) | |||||
| { | |||||
| var weight = newDetail.Sum(x => | |||||
| { | |||||
| if (x.Weight.HasValue) | |||||
| return x.Weight.Value.Value; | |||||
| else | |||||
| return 0; | |||||
| }); | |||||
| var d = new StatPay_Butcher | |||||
| { | |||||
| Butcher_ID = newDetail.First().Butcher_ID, | |||||
| Livestock_ID = newDetail.First().Livestock_ID, | |||||
| Livestock_Name = newDetail.First().Livestock_Name, | |||||
| Number = newDetail.Count(), | |||||
| Weight = weight, | |||||
| Discount = newDetail.First().Discount, | |||||
| Remark = newDetail.First().Remark, | |||||
| OldPriceWeight = weight, | |||||
| PriceWeight = weight, | |||||
| Price = newDetail.First().Price | |||||
| }; | |||||
| d.Money = d.PriceWeight * d.Price * ((d.Discount ?? 100) / 100); | |||||
| dmo.Details.Add(d); | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| @ -0,0 +1,16 @@ | |||||
| using Forks.Utils; | |||||
| using System; | |||||
| using System.Collections.Generic; | |||||
| using System.Linq; | |||||
| using System.Text; | |||||
| namespace BWP.B3SheepButcherManage.BO | |||||
| { | |||||
| public interface IStatDetail | |||||
| { | |||||
| string Remark { get; set; } | |||||
| long? Livestock_ID { get; set; } | |||||
| long? LiveVarieties_ID { get; set; } | |||||
| Money<decimal>? Price { get; set; } | |||||
| } | |||||
| } | |||||
| @ -0,0 +1,250 @@ | |||||
| using BWP.B3CowButcherManage; | |||||
| using BWP.B3Frameworks; | |||||
| using BWP.B3Frameworks.Attributes; | |||||
| using BWP.B3Frameworks.BO; | |||||
| using BWP.B3Frameworks.BO.MoneyTemplate; | |||||
| using BWP.B3ProcurementInterface.BO; | |||||
| using BWP.B3ProcurementInterface.Utils; | |||||
| 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; | |||||
| using TSingSoft.WebControls2; | |||||
| using TSingSoft.WebPluginFramework; | |||||
| using BWP.B3CowButcherManage.NamedValueTemplate; | |||||
| using CW = BWP.B3CowButcherManage.BO; | |||||
| namespace BWP.B3SheepButcherManage.BO | |||||
| { | |||||
| [DFClass] | |||||
| [LogicName("羊结算单")] | |||||
| [Serializable] | |||||
| [BillAccountTarget(typeof(Supplier))] | |||||
| [DmoTypeID(B3FrameworksConsts.DmoTypeIDBases.B3SheepButcherManage, B3SheepButcherManageConsts.DmoTypeIDOffsets.StatPay)] | |||||
| [EditUrl("~/B3SheepButcherManage/Bills/StatPay_/StatPayEdit.aspx")] | |||||
| public class StatPay : DepartmentWorkFlowBill, IEnableExportToAccountBill | |||||
| { | |||||
| [LogicName("供应商")] | |||||
| [DFDataKind(B3ProcurementInterfaceDataSources.供应商用于屠宰场)] | |||||
| [DFExtProperty(B3FrameworksConsts.DFExtProperties.DisplayField, "Supplier_Name")] | |||||
| [DFExtProperty(B3FrameworksConsts.DFExtProperties.QueryDataKind, B3ProcurementInterfaceDataSources.供应商用于屠宰场)] | |||||
| public long? Supplier_ID { get; set; } | |||||
| private DateTime? _date = BLContext.Today; | |||||
| [LogicName("核算日期")] | |||||
| public DateTime? Date | |||||
| { | |||||
| get { return _date; } | |||||
| set { _date = value; } | |||||
| } | |||||
| [LogicName("应付金额")] | |||||
| [DFExtProperty("WebControlType", DFEditControl.StaticText)] | |||||
| public Money<金额>? Money { get; set; } | |||||
| [LogicName("实付金额")] | |||||
| [DFExtProperty("WebControlType", DFEditControl.StaticText)] | |||||
| public Money<金额>? ActualMoney { get; set; } | |||||
| [LogicName("实付单价")] | |||||
| public Money<decimal>? ActualPrice { get; set; } | |||||
| [LogicName("修改实付")] | |||||
| [DbColumn(DefaultValue = 0)] | |||||
| public bool UpdateActualPrice { get; set; } | |||||
| [LogicName("重量总重")] | |||||
| public Money<decimal>? SumWeight { get; set; } | |||||
| [LogicName("屠宰总重")] | |||||
| public Money<decimal>? PriceWeight { get; set; } | |||||
| [LogicName("急宰总重")] | |||||
| public Money<decimal>? HurryPriceWeight { get; set; } | |||||
| [LogicName("结算总重")] | |||||
| public Money<decimal>? StatPayTotalWeight { get; set; } | |||||
| [LogicName("已付金额")] | |||||
| public Money<金额>? PaidMoney { get; set; } | |||||
| [LogicName("单据金额")] | |||||
| public Money<金额>? BillMoney { get; set; } | |||||
| [LogicName("过磅单")] | |||||
| [DFExtProperty("WebControlType", DFEditControl.StaticText)] | |||||
| public long? WeightBill_ID { get; set; } | |||||
| [LogicName("定价单")] | |||||
| [DFExtProperty("WebControlType", DFEditControl.StaticText)] | |||||
| public long? FixedPrice_ID { get; set; } | |||||
| [LogicName("计价区域")] | |||||
| [DFDataKind(B3CowButcherManageConsts.DataSources.计价区域全部)] | |||||
| [DFExtProperty(B3FrameworksConsts.DFExtProperties.DisplayField, "ValuationArea_Name")] | |||||
| [DFExtProperty(B3FrameworksConsts.DFExtProperties.QueryDataKind, B3CowButcherManageConsts.DataSources.计价区域全部)] | |||||
| public long? ValuationArea_ID { get; set; } | |||||
| private NamedValue<计价方式> _moneyCountMethod = 计价方式.胴体价; | |||||
| [LogicName("计价方式")] | |||||
| [DFNotEmpty] | |||||
| public NamedValue<计价方式> MoneyCountMethod | |||||
| { | |||||
| get { return _moneyCountMethod; } | |||||
| set { _moneyCountMethod = value; } | |||||
| } | |||||
| [LogicName("毛重单价")] | |||||
| [DFExtProperty("WebControlType", DFEditControl.StaticText)] | |||||
| public Money<decimal>? RawPrice { get; set; } | |||||
| [LogicName("收购头数")] | |||||
| [DFExtProperty("WebControlType", DFEditControl.StaticText)] | |||||
| public int? RealNumber { get; set; } | |||||
| [LogicName("收购重量")] | |||||
| [DFExtProperty("WebControlType", DFEditControl.StaticText)] | |||||
| public Money<decimal>? RealWeight { get; set; } | |||||
| [LogicName("考核单价")] | |||||
| public Money<decimal>? CheckTareWeightPrice { get; set; } | |||||
| [LogicName("胴体率")] | |||||
| public Money<百分数>? NewBodyRate { get; set; } | |||||
| [LogicName("过磅异常金额")] | |||||
| public Money<金额>? ExceptionMoney { get; set; } | |||||
| [LogicName("结算奖罚金额")] | |||||
| public Money<金额>? OtherRewardMoney { get; set; } | |||||
| [LogicName("供应商分类")] | |||||
| [ReferenceTo(typeof(Supplier), "SupplierClass_ID")] | |||||
| [Join("Supplier_ID", "ID")] | |||||
| [DFDataKind(B3ProcurementInterfaceDataSources.供应商分类)] | |||||
| public long? SupplierClass_ID { get; set; } | |||||
| [LogicName("供应商分类")] | |||||
| [ReferenceTo(typeof(Supplier), "SupplierClass_Name")] | |||||
| [Join("Supplier_ID", "ID")] | |||||
| public string SupplierClass_Name { get; set; } | |||||
| [Join("Supplier_ID", "ID")] | |||||
| [LogicName("供应商")] | |||||
| [ReferenceTo(typeof(Supplier), "Name")] | |||||
| public string Supplier_Name { get; set; } | |||||
| [Join("Supplier_ID", "ID")] | |||||
| [LogicName("供应商编号")] | |||||
| [ReferenceTo(typeof(Supplier), "Code")] | |||||
| public string Supplier_Code { get; set; } | |||||
| [Join("Supplier_ID", "ID")] | |||||
| [LogicName("供应商来源地")] | |||||
| [ReferenceTo(typeof(Supplier), "Address")] | |||||
| public string Supplier_Address { get; set; } | |||||
| [Join("ValuationArea_ID", "ID")] | |||||
| [LogicName("计价区域")] | |||||
| [ReferenceTo(typeof(CW.ValuationArea), "Name")] | |||||
| public string ValuationArea_Name { get; set; } | |||||
| [LogicName("过磅时间")] | |||||
| [ReferenceTo(typeof(WeightBill), "WeighTime")] | |||||
| [Join("WeightBill_ID", "ID")] | |||||
| public DateTime? WeighTime { get; set; } | |||||
| [LogicName("过磅单收购头数")] | |||||
| [ReferenceTo(typeof(WeightBill), "BuyNum")] | |||||
| [Join("WeightBill_ID", "ID")] | |||||
| public int? WeighBill_BuyNum { get; set; } | |||||
| [LogicName("过磅单收购重量")] | |||||
| [ReferenceTo(typeof(WeightBill), "BuyWeigh1")] | |||||
| [Join("WeightBill_ID", "ID")] | |||||
| public Money<decimal>? WeighBill_BuyWeigh1 { get; set; } | |||||
| [LogicName("出肉率")] | |||||
| [NonDmoProperty] | |||||
| public Money<百分数>? WeightSumRate | |||||
| { | |||||
| get | |||||
| { | |||||
| if (RealWeight != 0) | |||||
| { | |||||
| return (PriceWeight + HurryPriceWeight) / this.RealWeight; | |||||
| } | |||||
| return null; | |||||
| } | |||||
| } | |||||
| private readonly StatPay_ButcherCollection _details = new StatPay_ButcherCollection(); | |||||
| //屠宰 | |||||
| [OneToMany(typeof(StatPay_Butcher), "ID")] | |||||
| [Join("ID", "StatPay_ID")] | |||||
| public StatPay_ButcherCollection Details | |||||
| { | |||||
| get { return _details; } | |||||
| } | |||||
| private readonly StatPay_HurryButcherCollection _hurryButcherDetails = new StatPay_HurryButcherCollection(); | |||||
| //急宰 | |||||
| [OneToMany(typeof(StatPay_HurryButcher), "ID")] | |||||
| [Join("ID", "StatPay_ID")] | |||||
| public StatPay_HurryButcherCollection HurryButcherDetails | |||||
| { | |||||
| get { return _hurryButcherDetails; } | |||||
| } | |||||
| private readonly StatPay_WeightCollection _weightDetails = new StatPay_WeightCollection(); | |||||
| //过磅 | |||||
| [OneToMany(typeof(StatPay_Weight), "ID")] | |||||
| [Join("ID", "StatPay_ID")] | |||||
| public StatPay_WeightCollection WeightDetails | |||||
| { | |||||
| get { return _weightDetails; } | |||||
| } | |||||
| private readonly StatPay_ExceptionCollection _exceptionDetails = new StatPay_ExceptionCollection(); | |||||
| //异常 | |||||
| [OneToMany(typeof(StatPay_Exception), "ID")] | |||||
| [Join("ID", "StatPay_ID")] | |||||
| public StatPay_ExceptionCollection ExceptionDetails | |||||
| { | |||||
| get { return _exceptionDetails; } | |||||
| } | |||||
| private readonly StatPay_OtherRewardCollection _otherRewardDetails = new StatPay_OtherRewardCollection(); | |||||
| //奖罚明细 | |||||
| [OneToMany(typeof(StatPay_OtherReward), "ID")] | |||||
| [Join("ID", "StatPay_ID")] | |||||
| public StatPay_OtherRewardCollection OtherRewardDetails | |||||
| { | |||||
| get { return _otherRewardDetails; } | |||||
| } | |||||
| public IList<BaseDetailAccountInfo> CreateBillAccount() | |||||
| { | |||||
| var list = new List<BaseDetailAccountInfo>(); | |||||
| 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; | |||||
| } | |||||
| } | |||||
| } | |||||
| @ -0,0 +1,108 @@ | |||||
| using BWP.B3Frameworks.BO; | |||||
| using BWP.B3Frameworks.BO.MoneyTemplate; | |||||
| using BWP.B3ProduceUnitedInfos.BO; | |||||
| 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 | |||||
| { | |||||
| [DFClass] | |||||
| [LogicName("羊结算单屠宰记录汇总")] | |||||
| [Serializable] | |||||
| public class StatPay_Butcher : Base, IStatDetail | |||||
| { | |||||
| [DbColumn(Index = IndexType.Normal)] | |||||
| [LogicName("结算单")] | |||||
| public long StatPay_ID { get; set; } | |||||
| [LogicName("屠宰单号")] | |||||
| public long? Butcher_ID { get; set; } | |||||
| [LogicName("级别")] | |||||
| public long? Livestock_ID { get; set; } | |||||
| [LogicName("头数")] | |||||
| public int? Number { get; set; } | |||||
| [LogicName("重量")] | |||||
| public Money<decimal>? Weight { get; set; } | |||||
| [LogicName("计价重")] | |||||
| public Money<decimal>? PriceWeight { get; set; } | |||||
| [LogicName("原结算重")] | |||||
| public Money<decimal>? OldPriceWeight { get; set; } | |||||
| [LogicName("单价")] | |||||
| public Money<decimal>? Price { get; set; } | |||||
| [LogicName("定价单明细ID")] | |||||
| [NonDmoProperty] | |||||
| public Money<decimal>? WeighPrice_DetailID { get; set; } | |||||
| [LogicName("活体品种")] | |||||
| public long? LiveVarieties_ID { get; set; } | |||||
| [LogicName("金额")] | |||||
| public Money<金额>? Money { get; set; } | |||||
| [LogicName("折扣")] | |||||
| public Money<decimal>? Discount { get; set; } | |||||
| [LogicName("备注")] | |||||
| public string Remark { get; set; } | |||||
| [LogicName("活体品种")] | |||||
| [ReferenceTo(typeof(LiveVarieties), "Name")] | |||||
| [Join("LiveVarieties_ID", "ID")] | |||||
| public string LiveVarieties_Name { get; set; } | |||||
| [LogicName("活体品种编码")] | |||||
| [ReferenceTo(typeof(LiveVarieties), "Code")] | |||||
| [Join("LiveVarieties_ID", "ID")] | |||||
| public string LiveVarieties_Code { get; set; } | |||||
| [LogicName("级别")] | |||||
| [ReferenceTo(typeof(Livestock), "Name")] | |||||
| [Join("Livestock_ID", "ID")] | |||||
| public string Livestock_Name { get; set; } | |||||
| [LogicName("级别编号")] | |||||
| [ReferenceTo(typeof(Livestock), "Code")] | |||||
| [Join("Livestock_ID", "ID")] | |||||
| public string Livestock_Code { get; set; } | |||||
| [LogicName("级别规格")] | |||||
| [ReferenceTo(typeof(Livestock), "Spec")] | |||||
| [Join("Livestock_ID", "ID")] | |||||
| public string Livestock_Spec { get; set; } | |||||
| [LogicName("主单位")] | |||||
| [ReferenceTo(typeof(Livestock), "MainUnit")] | |||||
| [Join("Livestock_ID", "ID")] | |||||
| public string Livestock_MainUnit { get; set; } | |||||
| [LogicName("辅单位")] | |||||
| [ReferenceTo(typeof(Livestock), "SecondUnit")] | |||||
| [Join("Livestock_ID", "ID")] | |||||
| public string Livestock_SecondUnit { get; set; } | |||||
| [LogicName("税率")] | |||||
| [ReferenceTo(typeof(Livestock), "TaxRate")] | |||||
| [Join("Livestock_ID", "ID")] | |||||
| public Money<税率>? Livestock_TaxRate { get; set; } | |||||
| } | |||||
| [Serializable] | |||||
| public class StatPay_ButcherCollection : DmoCollection<StatPay_Butcher> | |||||
| { | |||||
| } | |||||
| } | |||||
| @ -0,0 +1,57 @@ | |||||
| 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 | |||||
| { | |||||
| [DFClass] | |||||
| [LogicName("羊结算单异常")] | |||||
| [Serializable] | |||||
| public class StatPay_Exception : Base | |||||
| { | |||||
| [DbColumn(Index = IndexType.Normal)] | |||||
| public long StatPay_ID { get; set; } | |||||
| [LogicName("异常项目")] | |||||
| [DFNotEmpty] | |||||
| public long? RewardItem_ID { get; set; } | |||||
| [LogicName("头数")] | |||||
| [DFNotEmpty] | |||||
| public int? Number { get; set; } | |||||
| [LogicName("单价")] | |||||
| public Money<decimal>? Price { get; set; } | |||||
| [LogicName("扣重")] | |||||
| public Money<decimal>? DeductWeight { get; set; } | |||||
| [LogicName("金额")] | |||||
| public Money<金额>? Money { get; set; } | |||||
| [LogicName("备注")] | |||||
| public string Remark { get; set; } | |||||
| [LogicName("异常项目")] | |||||
| [ReferenceTo(typeof(BWP.B3CowButcherManage.BO.RewardItem), "Name")] | |||||
| [Join("RewardItem_ID", "ID")] | |||||
| public string RewardItem_Name { get; set; } | |||||
| } | |||||
| [Serializable] | |||||
| public class StatPay_ExceptionCollection : DmoCollection<StatPay_Exception> | |||||
| { | |||||
| } | |||||
| } | |||||
| @ -0,0 +1,80 @@ | |||||
| using BWP.B3Frameworks.BO; | |||||
| using BWP.B3Frameworks.BO.MoneyTemplate; | |||||
| using BWP.B3ProduceUnitedInfos.BO; | |||||
| 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 | |||||
| { | |||||
| [DFClass] | |||||
| [LogicName("羊结算单急宰记录汇总")] | |||||
| [Serializable] | |||||
| public class StatPay_HurryButcher : Base, IStatDetail | |||||
| { | |||||
| [DbColumn(Index = IndexType.Normal)] | |||||
| public long StatPay_ID { get; set; } | |||||
| [LogicName("急宰单号")] | |||||
| public long? HurryButcher_ID { get; set; } | |||||
| [LogicName("级别")] | |||||
| public long? Livestock_ID { get; set; } | |||||
| [LogicName("头数")] | |||||
| public int? Number { get; set; } | |||||
| [LogicName("重量")] | |||||
| public Money<decimal>? Weight { get; set; } | |||||
| [LogicName("结算重")] | |||||
| public Money<decimal>? PriceWeight { get; set; } | |||||
| [LogicName("单价")] | |||||
| public Money<decimal>? Price { get; set; } | |||||
| [LogicName("金额")] | |||||
| public Money<金额>? Money { get; set; } | |||||
| [LogicName("备注")] | |||||
| public string Remark { get; set; } | |||||
| [LogicName("毛重")] | |||||
| public Money<decimal>? GrossWeight { get; set; } | |||||
| [LogicName("级别")] | |||||
| [ReferenceTo(typeof(Livestock), "Name")] | |||||
| [Join("Livestock_ID", "ID")] | |||||
| public string Livestock_Name { get; set; } | |||||
| [LogicName("级别编号")] | |||||
| [ReferenceTo(typeof(Livestock), "Code")] | |||||
| [Join("Livestock_ID", "ID")] | |||||
| public string Livestock_Code { get; set; } | |||||
| [LogicName("级别规格")] | |||||
| [ReferenceTo(typeof(Livestock), "Spec")] | |||||
| [Join("Livestock_ID", "ID")] | |||||
| public string Livestock_Spec { get; set; } | |||||
| [LogicName("活体品种")] | |||||
| public long? LiveVarieties_ID { get; set; } | |||||
| [LogicName("活体品种")] | |||||
| [ReferenceTo(typeof(LiveVarieties), "Name")] | |||||
| [Join("LiveVarieties_ID", "ID")] | |||||
| public string LiveVarieties_Name { get; set; } | |||||
| } | |||||
| [Serializable] | |||||
| public class StatPay_HurryButcherCollection : DmoCollection<StatPay_HurryButcher> | |||||
| { | |||||
| } | |||||
| } | |||||
| @ -0,0 +1,51 @@ | |||||
| 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 | |||||
| { | |||||
| [DFClass] | |||||
| [LogicName("羊结算单奖罚明细")] | |||||
| [Serializable] | |||||
| public class StatPay_OtherReward : Base | |||||
| { | |||||
| [LogicName("结算单")] | |||||
| [DbColumn(Index = IndexType.Normal)] | |||||
| public long StatPay_ID { get; set; } | |||||
| [LogicName("奖罚项目")] | |||||
| public long? RewardItem_ID { get; set; } | |||||
| [LogicName("单价")] | |||||
| public Money<decimal>? Price { get; set; } | |||||
| [LogicName("重量")] | |||||
| public Money<decimal>? Weight { get; set; } | |||||
| [LogicName("数量")] | |||||
| public Money<decimal>? Number { get; set; } | |||||
| [LogicName("金额")] | |||||
| public Money<金额>? Money { get; set; } | |||||
| [LogicName("备注")] | |||||
| public string Remark { get; set; } | |||||
| [LogicName("奖罚项目")] | |||||
| [ReferenceTo(typeof(BWP.B3CowButcherManage.BO.RewardItem), "Name")] | |||||
| [Join("RewardItem_ID", "ID")] | |||||
| public string RewardItem_Name { get; set; } | |||||
| } | |||||
| [Serializable] | |||||
| public class StatPay_OtherRewardCollection : DmoCollection<StatPay_OtherReward> | |||||
| { } | |||||
| } | |||||
| @ -0,0 +1,71 @@ | |||||
| using BWP.B3Frameworks; | |||||
| using BWP.B3Frameworks.BO; | |||||
| using BWP.B3Frameworks.BO.MoneyTemplate; | |||||
| using BWP.B3ProduceUnitedInfos; | |||||
| using BWP.B3ProduceUnitedInfos.BO; | |||||
| 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; | |||||
| using TSingSoft.WebControls2; | |||||
| namespace BWP.B3SheepButcherManage.BO | |||||
| { | |||||
| [DFClass] | |||||
| [LogicName("羊结算单过磅汇总")] | |||||
| [Serializable] | |||||
| public class StatPay_Weight : Base | |||||
| { | |||||
| [LogicName("结算单")] | |||||
| [DbColumn(Index = IndexType.Normal)] | |||||
| public long StatPay_ID { get; set; } | |||||
| [LogicName("过磅单号")] | |||||
| public long? Weight_ID { get; set; } | |||||
| [LogicName("过磅明细单号")] | |||||
| public long? Weight_Detail_ID { get; set; } | |||||
| [LogicName("活体品种")] | |||||
| [DFExtProperty("WebControlType", DFEditControl.ChoiceBox)] | |||||
| [DFDataKind(B3ProduceUnitedInfosDataSources.活体品种)] | |||||
| [DFExtProperty(B3FrameworksConsts.DFExtProperties.DisplayField, "LiveVarieties_Name")] | |||||
| [DFExtProperty(B3FrameworksConsts.DFExtProperties.QueryDataKind, B3ProduceUnitedInfosDataSources.活体品种)] | |||||
| public long? LiveVarieties_ID { get; set; } | |||||
| [LogicName("头数")] | |||||
| public Money<decimal>? Number { get; set; } | |||||
| [LogicName("重量")] | |||||
| public Money<decimal>? Weight { get; set; } | |||||
| [LogicName("金额")] | |||||
| public Money<金额>? Money { get; set; } | |||||
| [LogicName("单价")] | |||||
| public Money<decimal>? Price { get; set; } | |||||
| [LogicName("备注")] | |||||
| public string Remark { get; set; } | |||||
| [LogicName("活体品种")] | |||||
| [ReferenceTo(typeof(LiveVarieties), "Name")] | |||||
| [Join("LiveVarieties_ID", "ID")] | |||||
| public string LiveVarieties_Name { get; set; } | |||||
| [LogicName("活体品种编码")] | |||||
| [ReferenceTo(typeof(LiveVarieties), "Code")] | |||||
| [Join("LiveVarieties_ID", "ID")] | |||||
| public string LiveVarieties_Code { get; set; } | |||||
| } | |||||
| [Serializable] | |||||
| public class StatPay_WeightCollection : DmoCollection<StatPay_Weight> | |||||
| { | |||||
| } | |||||
| } | |||||
| @ -0,0 +1,79 @@ | |||||
| <?xml version="1.0" encoding="utf-8"?> | |||||
| <BillReports xmlns="urn:BillReports" version="1.0" displayName="羊结算单" phyName="羊结算单"> | |||||
| <Report phyName="标准格式"> | |||||
| <BillReport xmlns="urn:BillReport" version="1" displayName="标准格式" > | |||||
| <Bands> | |||||
| <TextBand fontName="黑体" fontSize="15" align="Center">羊结算单№$Dmo.ID</TextBand> | |||||
| <DFInfoBand object="$Dmo" cols="4"> | |||||
| <Field name="AccountingUnit_Name" lblWidth="4"/> | |||||
| <Field name="Department_Name" lblWidth="4"/> | |||||
| <Field name="Supplier_Name" lblWidth="4"/> | |||||
| <Field name="Employee_Name" lblWidth="4"/> | |||||
| <Field name="ValuationArea_Name" lblWidth="4"/> | |||||
| <Field name="Date" lblWidth="4"/> | |||||
| <Field name="Weigh_ID" lblWidth="4"/> | |||||
| <Field name="RealNumber" lblWidth="4"/> | |||||
| <Field name="RealWeight" lblWidth="4"/> | |||||
| <Field name="WeightSumRate" lblWidth="4"/> | |||||
| <Field name="Money" lblWidth="4"/> | |||||
| <Field name="ActualPrice" lblWidth="4"/> | |||||
| <Field name="ActualMoney" lblWidth="4"/> | |||||
| <Field name="Remark" lblWidth="4"/> | |||||
| </DFInfoBand> | |||||
| <HtmlBand> | |||||
| <![CDATA[<h2>屠宰记录</h2>]]> | |||||
| </HtmlBand> | |||||
| <DFListBand collection="$Details" itemType="$DetailType" enablePaging="true" rowsPerPage="20" > | |||||
| <Field name="Butcher_ID"/> | |||||
| <Field name="LiveVarieties_Name"/> | |||||
| <Field name="Livestock_Name" /> | |||||
| <Field name="Number" sum="true"/> | |||||
| <Field name="Weight" sum="true"/> | |||||
| <Field name="PriceWeight" sum="true"/> | |||||
| <Field name="Discount" /> | |||||
| <Field name="Price" /> | |||||
| <Field name="Money" sum="true"/> | |||||
| <Field name="Remark" /> | |||||
| </DFListBand> | |||||
| <HtmlBand> | |||||
| <![CDATA[<h2>急宰记录</h2>]]> | |||||
| </HtmlBand> | |||||
| <DFListBand collection="$HurryButcherDetails" itemType="$HurryButcherType" enablePaging="false" > | |||||
| <Field name="HurryButcher_ID"/> | |||||
| <Field name="Livestock_Name"/> | |||||
| <Field name="Number" sum="true"/> | |||||
| <Field name="Weight" sum="true"/> | |||||
| <Field name="GrossWeight" sum="true"/> | |||||
| <Field name="PriceWeight" sum="true"/> | |||||
| <Field name="Price"/> | |||||
| <Field name="Money" sum="true"/> | |||||
| </DFListBand> | |||||
| <HtmlBand> | |||||
| <![CDATA[<h2>异常记录</h2>]]> | |||||
| </HtmlBand> | |||||
| <DFListBand collection="$ExceptionDetails" itemType="$ExceptionType" enablePaging="false" > | |||||
| <Field name="RewardItem_Name"/> | |||||
| <Field name="Number" sum="true"/> | |||||
| <Field name="Price"/> | |||||
| <Field name="Money" sum="true"/> | |||||
| <Field name="Remark" /> | |||||
| </DFListBand> | |||||
| <HtmlBand> | |||||
| <![CDATA[<h2>结算奖罚</h2>]]> | |||||
| </HtmlBand> | |||||
| <DFListBand collection="$OtherRewardDetails" itemType="$OtherRewardType" enablePaging="false" > | |||||
| <Field name="RewardItem_Name"/> | |||||
| <Field name="Number" sum="true"/> | |||||
| <Field name="Weight" sum="true"/> | |||||
| <Field name="Price" /> | |||||
| <Field name="Money" sum="true"/> | |||||
| <Field name="Remark" /> | |||||
| </DFListBand> | |||||
| </Bands> | |||||
| </BillReport> | |||||
| </Report> | |||||
| </BillReports> | |||||