Browse Source

需求单No.141315新增业务单据【羊结算单】;新增功能授权挂上该资源号。新增【羊结算单】数据分析。

master
yibo 7 years ago
parent
commit
3d205517f8
29 changed files with 3556 additions and 74 deletions
  1. +30
    -0
      B3SheepButcherManage.Web/B3SheepButcherManage.Web.csproj
  2. +135
    -0
      B3SheepButcherManage.Web/Pages/B3SheepButcherManage/Bills/StatPay_/SelectButcherDetailDialog.cs
  3. +24
    -0
      B3SheepButcherManage.Web/Pages/B3SheepButcherManage/Bills/StatPay_/SelectButcherDetailDialog.xml
  4. +154
    -0
      B3SheepButcherManage.Web/Pages/B3SheepButcherManage/Bills/StatPay_/SelectHurryButcherDialog.cs
  5. +22
    -0
      B3SheepButcherManage.Web/Pages/B3SheepButcherManage/Bills/StatPay_/SelectHurryButcherDialog.xml
  6. +158
    -0
      B3SheepButcherManage.Web/Pages/B3SheepButcherManage/Bills/StatPay_/SelectWeightDetailDialog.cs
  7. +22
    -0
      B3SheepButcherManage.Web/Pages/B3SheepButcherManage/Bills/StatPay_/SelectWeightDetailDialog.xml
  8. +504
    -0
      B3SheepButcherManage.Web/Pages/B3SheepButcherManage/Bills/StatPay_/StatPayEdit.cs
  9. +121
    -0
      B3SheepButcherManage.Web/Pages/B3SheepButcherManage/Bills/StatPay_/StatPayList.cs
  10. +73
    -0
      B3SheepButcherManage.Web/Pages/B3SheepButcherManage/Bills/StatPay_/StatPayList.xml
  11. +34
    -0
      B3SheepButcherManage.Web/Pages/B3SheepButcherManage/Bills/StatPay_/StatPayPrint.cs
  12. +446
    -0
      B3SheepButcherManage.Web/Pages/B3SheepButcherManage/Reports/StatPayAnalyse_/StatPayAnalyse.cs
  13. +60
    -0
      B3SheepButcherManage.Web/Pages/B3SheepButcherManage/Reports/StatPayAnalyse_/StatPayAnalyse.xml
  14. +41
    -1
      B3SheepButcherManage.Web/Utils/B3SheepButcherManageChoiceBoxProvider.cs
  15. +8
    -0
      B3SheepButcherManage/B3SheepButcherManage.csproj
  16. +26
    -27
      B3SheepButcherManage/BL/Bill/FixedPriceBL/FixedPriceBL.cs
  17. +935
    -0
      B3SheepButcherManage/BL/Bill/StatPayBL/StatPayBL.cs
  18. +41
    -46
      B3SheepButcherManage/BL/Bill/WeightBillBL/WeightBillBL.cs
  19. +1
    -0
      B3SheepButcherManage/BO/Bill/Butcher/Butcher_Detail.cs
  20. +16
    -0
      B3SheepButcherManage/BO/Bill/StatPay/IStatDetail.cs
  21. +250
    -0
      B3SheepButcherManage/BO/Bill/StatPay/StatPay.cs
  22. +108
    -0
      B3SheepButcherManage/BO/Bill/StatPay/StatPay_Butcher.cs
  23. +57
    -0
      B3SheepButcherManage/BO/Bill/StatPay/StatPay_Exception.cs
  24. +80
    -0
      B3SheepButcherManage/BO/Bill/StatPay/StatPay_HurryButcher.cs
  25. +51
    -0
      B3SheepButcherManage/BO/Bill/StatPay/StatPay_OtherReward.cs
  26. +71
    -0
      B3SheepButcherManage/BO/Bill/StatPay/StatPay_Weight.cs
  27. +2
    -0
      B3SheepButcherManage/DmoTypeIDOffsets.cs
  28. +7
    -0
      WebFolder/config/Plugins/B3SheepButcherManage.Plugin
  29. +79
    -0
      WebFolder/config/billreports/B3SheepButcherManage/StatPayPrint.xml

+ 30
- 0
B3SheepButcherManage.Web/B3SheepButcherManage.Web.csproj View File

@ -144,6 +144,24 @@
<Compile Include="Pages\B3SheepButcherManage\Bills\FixedPrice_\FixedPricePrint.cs"> <Compile Include="Pages\B3SheepButcherManage\Bills\FixedPrice_\FixedPricePrint.cs">
<SubType>ASPXCodeBehind</SubType> <SubType>ASPXCodeBehind</SubType>
</Compile> </Compile>
<Compile Include="Pages\B3SheepButcherManage\Bills\StatPay_\SelectButcherDetailDialog.cs">
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Pages\B3SheepButcherManage\Bills\StatPay_\SelectHurryButcherDialog.cs">
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Pages\B3SheepButcherManage\Bills\StatPay_\SelectWeightDetailDialog.cs">
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Pages\B3SheepButcherManage\Bills\StatPay_\StatPayEdit.cs">
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Pages\B3SheepButcherManage\Bills\StatPay_\StatPayList.cs">
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Pages\B3SheepButcherManage\Bills\StatPay_\StatPayPrint.cs">
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Pages\B3SheepButcherManage\Bills\WeightBill_\WeightBillEdit.cs"> <Compile Include="Pages\B3SheepButcherManage\Bills\WeightBill_\WeightBillEdit.cs">
<SubType>ASPXCodeBehind</SubType> <SubType>ASPXCodeBehind</SubType>
</Compile> </Compile>
@ -156,6 +174,9 @@
<Compile Include="Pages\B3SheepButcherManage\Reports\ButcherAnalyse_\ButcherAnalyse.cs"> <Compile Include="Pages\B3SheepButcherManage\Reports\ButcherAnalyse_\ButcherAnalyse.cs">
<SubType>ASPXCodeBehind</SubType> <SubType>ASPXCodeBehind</SubType>
</Compile> </Compile>
<Compile Include="Pages\B3SheepButcherManage\Reports\StatPayAnalyse_\StatPayAnalyse.cs">
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Pages\B3SheepButcherManage\Reports\WeightBillAnalyse_\WeightBillAbnormalAnalyse.cs"> <Compile Include="Pages\B3SheepButcherManage\Reports\WeightBillAnalyse_\WeightBillAbnormalAnalyse.cs">
<SubType>ASPXCodeBehind</SubType> <SubType>ASPXCodeBehind</SubType>
</Compile> </Compile>
@ -198,6 +219,15 @@
<ItemGroup> <ItemGroup>
<EmbeddedResource Include="Pages\B3SheepButcherManage\Reports\ButcherAnalyse_\ButcherAnalyse.xml" /> <EmbeddedResource Include="Pages\B3SheepButcherManage\Reports\ButcherAnalyse_\ButcherAnalyse.xml" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Pages\B3SheepButcherManage\Bills\StatPay_\StatPayList.xml" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Pages\B3SheepButcherManage\Bills\StatPay_\SelectWeightDetailDialog.xml" />
<EmbeddedResource Include="Pages\B3SheepButcherManage\Bills\StatPay_\SelectHurryButcherDialog.xml" />
<EmbeddedResource Include="Pages\B3SheepButcherManage\Bills\StatPay_\SelectButcherDetailDialog.xml" />
<EmbeddedResource Include="Pages\B3SheepButcherManage\Reports\StatPayAnalyse_\StatPayAnalyse.xml" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it. <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets. Other similar extension points exist, see Microsoft.Common.targets.


+ 135
- 0
B3SheepButcherManage.Web/Pages/B3SheepButcherManage/Bills/StatPay_/SelectButcherDetailDialog.cs View File

@ -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;
}
}
}

+ 24
- 0
B3SheepButcherManage.Web/Pages/B3SheepButcherManage/Bills/StatPay_/SelectButcherDetailDialog.xml View File

@ -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>

+ 154
- 0
B3SheepButcherManage.Web/Pages/B3SheepButcherManage/Bills/StatPay_/SelectHurryButcherDialog.cs View File

@ -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)
{
}
}
}

+ 22
- 0
B3SheepButcherManage.Web/Pages/B3SheepButcherManage/Bills/StatPay_/SelectHurryButcherDialog.xml View File

@ -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>

+ 158
- 0
B3SheepButcherManage.Web/Pages/B3SheepButcherManage/Bills/StatPay_/SelectWeightDetailDialog.cs View File

@ -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;
}
}
}

+ 22
- 0
B3SheepButcherManage.Web/Pages/B3SheepButcherManage/Bills/StatPay_/SelectWeightDetailDialog.xml View File

@ -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>

+ 504
- 0
B3SheepButcherManage.Web/Pages/B3SheepButcherManage/Bills/StatPay_/StatPayEdit.cs View File

@ -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();
}
}
}

+ 121
- 0
B3SheepButcherManage.Web/Pages/B3SheepButcherManage/Bills/StatPay_/StatPayList.cs View File

@ -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);
}
}
}

+ 73
- 0
B3SheepButcherManage.Web/Pages/B3SheepButcherManage/Bills/StatPay_/StatPayList.xml View File

@ -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>

+ 34
- 0
B3SheepButcherManage.Web/Pages/B3SheepButcherManage/Bills/StatPay_/StatPayPrint.cs View File

@ -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));
}
}
}

+ 446
- 0
B3SheepButcherManage.Web/Pages/B3SheepButcherManage/Reports/StatPayAnalyse_/StatPayAnalyse.cs View File

@ -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);
}
}
}
}

+ 60
- 0
B3SheepButcherManage.Web/Pages/B3SheepButcherManage/Reports/StatPayAnalyse_/StatPayAnalyse.xml View File

@ -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>

+ 41
- 1
B3SheepButcherManage.Web/Utils/B3SheepButcherManageChoiceBoxProvider.cs View File

@ -1,4 +1,6 @@
using BWP.B3Frameworks.Utils;
using BWP.B3Frameworks;
using BWP.B3Frameworks.BO.NamedValueTemplate;
using BWP.B3Frameworks.Utils;
using BWP.B3ProduceUnitedInfos.NamedValueTemplate; using BWP.B3ProduceUnitedInfos.NamedValueTemplate;
using BWP.B3SheepButcherManage; using BWP.B3SheepButcherManage;
using BWP.B3SheepButcherManage.BO; using BWP.B3SheepButcherManage.BO;
@ -47,6 +49,44 @@ namespace BWP.Web.Utils
} }
return dom.EExecuteList<string, long>().Select(x => new WordPair(x.Item1.ToString(), x.Item2.ToString())); return dom.EExecuteList<string, long>().Select(x => new WordPair(x.Item1.ToString(), x.Item2.ToString()));
}); });
ChoiceBoxSettings.Register(B3SheepButcherManageConsts.DataSources., argu =>
{
var weightBill = new JoinAlias(typeof(WeightBill));
var dom = new DQueryDom(weightBill);
dom.Columns.Add(DQSelectColumn.Field("ID", weightBill));
dom.OrderBy.Expressions.Add(DQOrderByExpression.Create("ID", true));
dom.Where.Conditions.Add(DQCondition.EQ("BillState", .));
if (!string.IsNullOrWhiteSpace(argu.CodeArgument))
{
dom.Where.Conditions.Add(DQCondition.EQ("Supplier_ID", long.Parse(argu.CodeArgument)));
}
OrganizationUtil.AddOrganizationLimit(dom, typeof(WeightBill));
dom.Where.Conditions.Add(DQCondition.EQ("Domain_ID", DomainContext.Current.ID));
return Query(dom);
});
}
private static IEnumerable<WordPair> Query(DQueryDom query)
{
query.Range = SelectRange.Top(100);
using (var session = Dmo.NewSession())
{
using (IDQDataReader reader = session.ExecuteReader(query))
{
while (reader.Read())
{
if (query.Columns.Count == 3)
yield return new WordPair(TreeUtil.GetTreePrefix(Convert.ToInt32(reader[2])) + reader[0], reader[1].ToString());
if (query.Columns.Count == 2)
yield return new WordPair(reader[0].ToString(), reader[1].ToString());
if (query.Columns.Count == 1)
yield return new WordPair(reader[0].ToString());
}
}
session.Commit();
}
} }
} }
} }

+ 8
- 0
B3SheepButcherManage/B3SheepButcherManage.csproj View File

@ -92,6 +92,7 @@
<Compile Include="BL\Bill\ButcherBL\ButcherBL2.cs" /> <Compile Include="BL\Bill\ButcherBL\ButcherBL2.cs" />
<Compile Include="BL\Bill\ButcherOrderBL\ButcherOrderBL.cs" /> <Compile Include="BL\Bill\ButcherOrderBL\ButcherOrderBL.cs" />
<Compile Include="BL\Bill\FixedPriceBL\FixedPriceBL.cs" /> <Compile Include="BL\Bill\FixedPriceBL\FixedPriceBL.cs" />
<Compile Include="BL\Bill\StatPayBL\StatPayBL.cs" />
<Compile Include="BL\Bill\WeightBillBL\WeightBillBL.cs" /> <Compile Include="BL\Bill\WeightBillBL\WeightBillBL.cs" />
<Compile Include="BO\BaseInfo\Livestock.cs" /> <Compile Include="BO\BaseInfo\Livestock.cs" />
<Compile Include="BO\Bill\ButcherOrder\ButcherOrder.cs" /> <Compile Include="BO\Bill\ButcherOrder\ButcherOrder.cs" />
@ -100,6 +101,13 @@
<Compile Include="BO\Bill\Butcher\Butcher_Detail.cs" /> <Compile Include="BO\Bill\Butcher\Butcher_Detail.cs" />
<Compile Include="BO\Bill\FixedPrice\FixedPrice.cs" /> <Compile Include="BO\Bill\FixedPrice\FixedPrice.cs" />
<Compile Include="BO\Bill\FixedPrice\FixedPrice_Detail.cs" /> <Compile Include="BO\Bill\FixedPrice\FixedPrice_Detail.cs" />
<Compile Include="BO\Bill\StatPay\IStatDetail.cs" />
<Compile Include="BO\Bill\StatPay\StatPay.cs" />
<Compile Include="BO\Bill\StatPay\StatPay_Butcher.cs" />
<Compile Include="BO\Bill\StatPay\StatPay_Exception.cs" />
<Compile Include="BO\Bill\StatPay\StatPay_HurryButcher.cs" />
<Compile Include="BO\Bill\StatPay\StatPay_OtherReward.cs" />
<Compile Include="BO\Bill\StatPay\StatPay_Weight.cs" />
<Compile Include="BO\Bill\WeightBill\WeightBill_AbnormalRecording.cs" /> <Compile Include="BO\Bill\WeightBill\WeightBill_AbnormalRecording.cs" />
<Compile Include="BO\Bill\WeightBill\WeightBill_Record.cs" /> <Compile Include="BO\Bill\WeightBill\WeightBill_Record.cs" />
<Compile Include="BO\Bill\WeightBill\WeightBill.cs" /> <Compile Include="BO\Bill\WeightBill\WeightBill.cs" />


+ 26
- 27
B3SheepButcherManage/BL/Bill/FixedPriceBL/FixedPriceBL.cs View File

@ -22,33 +22,32 @@ namespace BWP.B3SheepButcherManage.BL
{ {
public void RsetPrice(FixedPrice dmo) public void RsetPrice(FixedPrice dmo)
{ {
//var dom = new DmoQuery(typeof(StatPay));
//dom.Where.Conditions.Add(DQCondition.EQ("BillState", 单据状态.未审核));
//dom.Where.Conditions.Add(DQCondition.EQ("FixedPrice_ID", dmo.ID));
//var statPayList = Session.ExecuteList(dom);
//var statPayBL = BIFactory.Create<IStatPayBL>(Session);
//foreach (StatPay statPay in statPayList)
//{
// var needUpdate = false;
// foreach (var butcherDetail in statPay.Details)
// {
// var pay = statPay;
// var detail = butcherDetail;
// var priceDetail = dmo.Details.FirstOrDefault(
// x => x.ValuationArea_ID == pay.ValuationArea_ID &&
// x.Livestock_ID == detail.Livestock_ID &&
// x.HogGrade_ID == detail.HogGrade_ID);
// if (priceDetail != null)
// {
// detail.Price = priceDetail.Price;
// needUpdate = true;
// }
// }
// if (needUpdate)
// {
// statPayBL.Update(statPay);
// }
//}
var dom = new DmoQuery(typeof(StatPay));
dom.Where.Conditions.Add(DQCondition.EQ("BillState", .));
dom.Where.Conditions.Add(DQCondition.EQ("FixedPrice_ID", dmo.ID));
var statPayList = Session.ExecuteList(dom);
var statPayBL = BIFactory.Create<IStatPayBL>(Session);
foreach (StatPay statPay in statPayList)
{
var needUpdate = false;
foreach (var butcherDetail in statPay.Details)
{
var pay = statPay;
var detail = butcherDetail;
var priceDetail = dmo.Details.FirstOrDefault(
x => x.ValuationArea_ID == pay.ValuationArea_ID &&
x.Livestock_ID == detail.Livestock_ID);
if (priceDetail != null)
{
detail.Price = priceDetail.Price;
needUpdate = true;
}
}
if (needUpdate)
{
statPayBL.Update(statPay);
}
}
} }
} }
} }

+ 935
- 0
B3SheepButcherManage/BL/Bill/StatPayBL/StatPayBL.cs View File

@ -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);
}
}
}
}

+ 41
- 46
B3SheepButcherManage/BL/Bill/WeightBillBL/WeightBillBL.cs View File

@ -81,59 +81,54 @@ namespace BWP.B3SheepButcherManage.BL
protected override void doCheck(WeightBill dmo) protected override void doCheck(WeightBill dmo)
{ {
//if (dmo.WeighShedWeight.Count <= 0)
//{
// var statPay = new StatPay();
var statPay = new StatPay();
// var bl = BIFactory.Create<IStatPayBL>(Session);
// bl.InitNewDmo(statPay);
// statPay.Supplier_ID = dmo.Supplier_ID;
// statPay.BillType = mDmoTypeID;
// statPay.Weigh_ID = dmo.ID;
// statPay.WeighTime = dmo.WeighTime;
// statPay.RealWeight = dmo.BuyWeigh1;
// statPay.RealNumber = dmo.BuyNum;
// statPay.Department_ID = dmo.Department_ID;
// statPay.Employee_ID = dmo.Employee_ID;
// statPay.AccountingUnit_ID = dmo.AccountingUnit_ID;
// statPay.FarmingContract_ID = dmo.FarmingContract_ID;
// statPay.ValuationArea_ID = dmo.ValuationArea_ID;
// if (dmo.MoneyCountMethod != null)
// {
// statPay.MoneyCountMethod = dmo.MoneyCountMethod.Value;
// }
// if (dmo.WeighAbnormalRecording.Count > 0)
// {
// foreach (var abnormal in dmo.WeighAbnormalRecording)
// {
// var exception = new StatPay_Exception();
// exception.RewardItem_ID = abnormal.RewardItem_ID;
// // exception.Price = abnormal;
// exception.Money = (decimal?)abnormal.Abnormal_Money;
// statPay.ExceptDetails.Add(exception);
// }
// }
var bl = BIFactory.Create<IStatPayBL>(Session);
bl.InitNewDmo(statPay);
statPay.Supplier_ID = dmo.Supplier_ID;
statPay.WeightBill_ID = dmo.ID;
statPay.WeighTime = dmo.WeighTime;
statPay.RealWeight = dmo.BuyWeigh1;
statPay.RealNumber = dmo.BuyNum;
statPay.Department_ID = dmo.Department_ID;
statPay.Employee_ID = dmo.Employee_ID;
statPay.AccountingUnit_ID = dmo.AccountingUnit_ID;
statPay.ValuationArea_ID = dmo.ValuationArea_ID;
if (dmo.MoneyCountMethod != null)
{
statPay.MoneyCountMethod = dmo.MoneyCountMethod.Value;
}
if (dmo.WeighAbnormalRecording.Count > 0)
{
foreach (var abnormal in dmo.WeighAbnormalRecording)
{
var exception = new StatPay_Exception();
exception.RewardItem_ID = abnormal.RewardItem_ID;
// exception.Price = abnormal;
exception.Money = (decimal?)abnormal.Abnormal_Money;
statPay.ExceptionDetails.Add(exception);
}
}
// bl.Insert(statPay);
// AppendMessage("生成结算单No." + statPay.ID);
//}
bl.Insert(statPay);
AppendMessage("生成结算单No." + statPay.ID);
base.doCheck(dmo); base.doCheck(dmo);
} }
protected override void doUnCheck(WeightBill dmo) protected override void doUnCheck(WeightBill dmo)
{ {
//var stayPayBL = BIFactory.Create<IStatPayBL>(Session);
//var queryDom = new DmoQuery(typeof(StatPay));
//queryDom.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("BillType", mDmoTypeID), DQCondition.EQ("Weigh_ID", dmo.ID)));
//foreach (StatPay pay in Session.ExecuteList(queryDom))
//{
// if (pay.BillState != 单据状态.未审核)
// {
// throw new Exception("结算单:" + pay.ID + " 单据状态不是未审核");
// }
// stayPayBL.Delete(pay);
// AppendMessage("删除结算单No." + pay.ID);
//}
var stayPayBL = BIFactory.Create<IStatPayBL>(Session);
var queryDom = new DmoQuery(typeof(StatPay));
queryDom.Where.Conditions.Add(DQCondition.EQ("WeightBill_ID", dmo.ID));
foreach (StatPay pay in Session.ExecuteList(queryDom))
{
if (pay.BillState != .)
{
throw new Exception("结算单:" + pay.ID + " 单据状态不是未审核");
}
stayPayBL.Delete(pay);
AppendMessage("删除结算单No." + pay.ID);
}
base.doUnCheck(dmo); base.doUnCheck(dmo);
} }
} }


+ 1
- 0
B3SheepButcherManage/BO/Bill/Butcher/Butcher_Detail.cs View File

@ -16,6 +16,7 @@ namespace BWP.B3SheepButcherManage.BO
[Serializable, DFClass, LogicName("屠宰单明细")] [Serializable, DFClass, LogicName("屠宰单明细")]
public class Butcher_Detail : Base public class Butcher_Detail : Base
{ {
[LogicName("屠宰单号")]
[DbColumn(Index = IndexType.Normal, AllowNull = false)] [DbColumn(Index = IndexType.Normal, AllowNull = false)]
public long Butcher_ID { get; set; } public long Butcher_ID { get; set; }


+ 16
- 0
B3SheepButcherManage/BO/Bill/StatPay/IStatDetail.cs View File

@ -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; }
}
}

+ 250
- 0
B3SheepButcherManage/BO/Bill/StatPay/StatPay.cs View File

@ -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;
}
}
}

+ 108
- 0
B3SheepButcherManage/BO/Bill/StatPay/StatPay_Butcher.cs View File

@ -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>
{
}
}

+ 57
- 0
B3SheepButcherManage/BO/Bill/StatPay/StatPay_Exception.cs View File

@ -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>
{
}
}

+ 80
- 0
B3SheepButcherManage/BO/Bill/StatPay/StatPay_HurryButcher.cs View File

@ -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>
{
}
}

+ 51
- 0
B3SheepButcherManage/BO/Bill/StatPay/StatPay_OtherReward.cs View File

@ -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>
{ }
}

+ 71
- 0
B3SheepButcherManage/BO/Bill/StatPay/StatPay_Weight.cs View File

@ -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>
{
}
}

+ 2
- 0
B3SheepButcherManage/DmoTypeIDOffsets.cs View File

@ -14,6 +14,7 @@ namespace BWP.B3SheepButcherManage
public const byte WeightBill = 3; public const byte WeightBill = 3;
public const byte ButcherOrder = 4; public const byte ButcherOrder = 4;
public const byte Butcher = 5; public const byte Butcher = 5;
public const byte StatPay = 6;
} }
public static class DataSources public static class DataSources
@ -21,6 +22,7 @@ namespace BWP.B3SheepButcherManage
internal const string Prefix = "B3SheepButcherManager_"; internal const string Prefix = "B3SheepButcherManager_";
public const string = Prefix + "可屠宰存货属性"; public const string = Prefix + "可屠宰存货属性";
public const string = Prefix + "活体级别"; public const string = Prefix + "活体级别";
public const string = Prefix + "已审核过磅单";
} }
public static class GlobalFlags public static class GlobalFlags


+ 7
- 0
WebFolder/config/Plugins/B3SheepButcherManage.Plugin View File

@ -108,6 +108,12 @@
<Function index="9" name="作废" /> <Function index="9" name="作废" />
<Function index="10" name="完毕"/> <Function index="10" name="完毕"/>
<Function index="11" name="撤销完毕"/> <Function index="11" name="撤销完毕"/>
<Function index="12" name="胴体编辑单价"/>
<Function index="13" name="胴体编辑折扣"/>
<Function index="14" name="删除奖罚明细"/>
<Function index="15" name="新增奖罚明细"/>
<Function index="16" name="编辑过磅单号"/>
<Function index="17" name="数据分析"/>
</FunctionGroup> </FunctionGroup>
<!--<FunctionGroup name="报表" roleSchemas="employee"> <!--<FunctionGroup name="报表" roleSchemas="employee">
<Function index="0" name="过磅单分析" /> <Function index="0" name="过磅单分析" />
@ -119,6 +125,7 @@
<Menu id="0003" features="B3SheepButcherManage.0001" name="/B3羊屠宰场管理/业务单据/羊过磅单" roles="B3SheepButcherManage.羊过磅单.访问" url="B3SheepButcherManage/Bills/WeightBill_/WeightBillList.aspx"/> <Menu id="0003" features="B3SheepButcherManage.0001" name="/B3羊屠宰场管理/业务单据/羊过磅单" roles="B3SheepButcherManage.羊过磅单.访问" url="B3SheepButcherManage/Bills/WeightBill_/WeightBillList.aspx"/>
<Menu id="0004" features="B3SheepButcherManage.0002" name="/B3羊屠宰场管理/业务单据/羊排宰单" roles="B3SheepButcherManage.羊排宰单.访问" url="B3SheepButcherManage/Bills/ButcherOrder_/ButcherOrderList.aspx"/> <Menu id="0004" features="B3SheepButcherManage.0002" name="/B3羊屠宰场管理/业务单据/羊排宰单" roles="B3SheepButcherManage.羊排宰单.访问" url="B3SheepButcherManage/Bills/ButcherOrder_/ButcherOrderList.aspx"/>
<Menu id="0005" features="B3SheepButcherManage.0003" name="/B3羊屠宰场管理/业务单据/羊屠宰单" roles="B3SheepButcherManage.羊屠宰单.访问" url="B3SheepButcherManage/Bills/Butcher_/ButcherList.aspx"/> <Menu id="0005" features="B3SheepButcherManage.0003" name="/B3羊屠宰场管理/业务单据/羊屠宰单" roles="B3SheepButcherManage.羊屠宰单.访问" url="B3SheepButcherManage/Bills/Butcher_/ButcherList.aspx"/>
<Menu id="0006" features="B3SheepButcherManage.0004" name="/B3羊屠宰场管理/业务单据/羊结算单" roles="B3SheepButcherManage.羊结算单.访问" url="B3SheepButcherManage/Bills/StatPay_/StatPayList.aspx"/>
</Menus> </Menus>
<Features> <Features>


+ 79
- 0
WebFolder/config/billreports/B3SheepButcherManage/StatPayPrint.xml View File

@ -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>

Loading…
Cancel
Save