Browse Source

排宰按照新的模式调整,屠宰单也做相关改动

master
yibo 7 years ago
parent
commit
299ebe812a
23 changed files with 582 additions and 646 deletions
  1. +6
    -18
      B3SheepButcherManage.Web/B3SheepButcherManage.Web.csproj
  2. +2
    -0
      B3SheepButcherManage.Web/Pages/B3SheepButcherManage/BaseInfos/Livestock_/LivestockEdit.cs
  3. +2
    -0
      B3SheepButcherManage.Web/Pages/B3SheepButcherManage/BaseInfos/Livestock_/LivestockList.cs
  4. +0
    -126
      B3SheepButcherManage.Web/Pages/B3SheepButcherManage/Bills/ButcherOrder_/ButcherOrderEdit.cs
  5. +0
    -38
      B3SheepButcherManage.Web/Pages/B3SheepButcherManage/Bills/ButcherOrder_/ButcherOrderList.cs
  6. +0
    -19
      B3SheepButcherManage.Web/Pages/B3SheepButcherManage/Bills/ButcherOrder_/ButcherOrderPrint.cs
  7. +0
    -100
      B3SheepButcherManage.Web/Pages/B3SheepButcherManage/Bills/ButcherOrder_/SelectWeighBillDialog.cs
  8. +0
    -30
      B3SheepButcherManage.Web/Pages/B3SheepButcherManage/Bills/ButcherOrder_/SelectWeighBillDialog.xml
  9. +30
    -8
      B3SheepButcherManage.Web/Pages/B3SheepButcherManage/Bills/Butcher_/ButcherEdit.cs
  10. +209
    -0
      B3SheepButcherManage.Web/Pages/B3SheepButcherManage/Bills/Butcher_/CreateButcher.cs
  11. +15
    -10
      B3SheepButcherManage.Web/Pages/B3SheepButcherManage/Bills/Butcher_/CreateButcher.xml
  12. +0
    -4
      B3SheepButcherManage/B3SheepButcherManage.csproj
  13. +244
    -5
      B3SheepButcherManage/BL/Bill/ButcherBL/ButcherBL.cs
  14. +0
    -133
      B3SheepButcherManage/BL/Bill/ButcherBL/ButcherBL2.cs
  15. +0
    -30
      B3SheepButcherManage/BL/Bill/ButcherOrderBL/ButcherOrderBL.cs
  16. +60
    -1
      B3SheepButcherManage/BL/Bill/WeightBillBL/WeightBillBL.cs
  17. +1
    -1
      B3SheepButcherManage/BO/BaseInfo/Livestock.cs
  18. +3
    -0
      B3SheepButcherManage/BO/Bill/Butcher/Butcher_Detail.cs
  19. +0
    -35
      B3SheepButcherManage/BO/Bill/ButcherOrder/ButcherOrder.cs
  20. +0
    -44
      B3SheepButcherManage/BO/Bill/ButcherOrder/ButcherOrder_Detail.cs
  21. +9
    -0
      B3SheepButcherManage/BO/Bill/WeightBill/WeightBill_Record.cs
  22. +1
    -16
      WebFolder/config/Plugins/B3SheepButcherManage.Plugin
  23. +0
    -28
      WebFolder/config/billreports/B3SheepButcherManage/ButcherOrderPrint.xml

+ 6
- 18
B3SheepButcherManage.Web/B3SheepButcherManage.Web.csproj View File

@ -114,18 +114,6 @@
<Compile Include="Pages\B3SheepButcherManage\BaseInfos\Livestock_\LivestockList.cs"> <Compile Include="Pages\B3SheepButcherManage\BaseInfos\Livestock_\LivestockList.cs">
<SubType>ASPXCodeBehind</SubType> <SubType>ASPXCodeBehind</SubType>
</Compile> </Compile>
<Compile Include="Pages\B3SheepButcherManage\Bills\ButcherOrder_\ButcherOrderEdit.cs">
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Pages\B3SheepButcherManage\Bills\ButcherOrder_\ButcherOrderList.cs">
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Pages\B3SheepButcherManage\Bills\ButcherOrder_\ButcherOrderPrint.cs">
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Pages\B3SheepButcherManage\Bills\ButcherOrder_\SelectWeighBillDialog.cs">
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Pages\B3SheepButcherManage\Bills\Butcher_\ButcherEdit.cs"> <Compile Include="Pages\B3SheepButcherManage\Bills\Butcher_\ButcherEdit.cs">
<SubType>ASPXCodeBehind</SubType> <SubType>ASPXCodeBehind</SubType>
</Compile> </Compile>
@ -135,6 +123,9 @@
<Compile Include="Pages\B3SheepButcherManage\Bills\Butcher_\ButcherPrint.cs"> <Compile Include="Pages\B3SheepButcherManage\Bills\Butcher_\ButcherPrint.cs">
<SubType>ASPXCodeBehind</SubType> <SubType>ASPXCodeBehind</SubType>
</Compile> </Compile>
<Compile Include="Pages\B3SheepButcherManage\Bills\Butcher_\CreateButcher.cs">
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Pages\B3SheepButcherManage\Bills\FixedPrice_\FixedPriceEdit.cs"> <Compile Include="Pages\B3SheepButcherManage\Bills\FixedPrice_\FixedPriceEdit.cs">
<SubType>ASPXCodeBehind</SubType> <SubType>ASPXCodeBehind</SubType>
</Compile> </Compile>
@ -207,12 +198,6 @@
<EmbeddedResource Include="Pages\B3SheepButcherManage\Reports\WeightBillAnalyse_\WeightBillAbnormalAnalyse.xml" /> <EmbeddedResource Include="Pages\B3SheepButcherManage\Reports\WeightBillAnalyse_\WeightBillAbnormalAnalyse.xml" />
<EmbeddedResource Include="Pages\B3SheepButcherManage\Reports\WeightBillAnalyse_\WeightBillAnalyse.xml" /> <EmbeddedResource Include="Pages\B3SheepButcherManage\Reports\WeightBillAnalyse_\WeightBillAnalyse.xml" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Pages\B3SheepButcherManage\Bills\ButcherOrder_\ButcherOrderList.xml" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Pages\B3SheepButcherManage\Bills\ButcherOrder_\SelectWeighBillDialog.xml" />
</ItemGroup>
<ItemGroup> <ItemGroup>
<EmbeddedResource Include="Pages\B3SheepButcherManage\Bills\Butcher_\ButcherList.xml" /> <EmbeddedResource Include="Pages\B3SheepButcherManage\Bills\Butcher_\ButcherList.xml" />
</ItemGroup> </ItemGroup>
@ -228,6 +213,9 @@
<EmbeddedResource Include="Pages\B3SheepButcherManage\Bills\StatPay_\SelectButcherDetailDialog.xml" /> <EmbeddedResource Include="Pages\B3SheepButcherManage\Bills\StatPay_\SelectButcherDetailDialog.xml" />
<EmbeddedResource Include="Pages\B3SheepButcherManage\Reports\StatPayAnalyse_\StatPayAnalyse.xml" /> <EmbeddedResource Include="Pages\B3SheepButcherManage\Reports\StatPayAnalyse_\StatPayAnalyse.xml" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Pages\B3SheepButcherManage\Bills\Butcher_\CreateButcher.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.


+ 2
- 0
B3SheepButcherManage.Web/Pages/B3SheepButcherManage/BaseInfos/Livestock_/LivestockEdit.cs View File

@ -26,6 +26,8 @@ namespace BWP.Web.Pages.B3SheepButcherManage.BaseInfos.Livestock_
config.Add("Name"); config.Add("Name");
config.Add("Code"); config.Add("Code");
config.Add("LiveVarieties_ID"); config.Add("LiveVarieties_ID");
config.Add("Shortcut");
config.Add("SortNum");
config.Add("PrintShortName"); config.Add("PrintShortName");
config.Add("Spec"); config.Add("Spec");


+ 2
- 0
B3SheepButcherManage.Web/Pages/B3SheepButcherManage/BaseInfos/Livestock_/LivestockList.cs View File

@ -23,6 +23,7 @@ namespace BWP.Web.Pages.B3SheepButcherManage.BaseInfos.Livestock_
var prop = new JoinAlias(typeof(GoodsProperty)); var prop = new JoinAlias(typeof(GoodsProperty));
dom.From.AddJoin(JoinType.Inner, new DQDmoSource(prop), DQCondition.EQ(prop, "ID", dom.From.RootSource.Alias, "GoodsProperty_ID")); dom.From.AddJoin(JoinType.Inner, new DQDmoSource(prop), DQCondition.EQ(prop, "ID", dom.From.RootSource.Alias, "GoodsProperty_ID"));
dom.Where.Conditions.Add(DQCondition.EQ(prop, "IsButchery", true)); dom.Where.Conditions.Add(DQCondition.EQ(prop, "IsButchery", true));
dom.OrderBy.Expressions.Add(DQOrderByExpression.Create("SortNum", false));
DomainUtil.AddDomainPermissionLimit(dom, typeof(GoodsProperty), prop); DomainUtil.AddDomainPermissionLimit(dom, typeof(GoodsProperty), prop);
return dom; return dom;
} }
@ -43,6 +44,7 @@ namespace BWP.Web.Pages.B3SheepButcherManage.BaseInfos.Livestock_
if (field == "Name") if (field == "Name")
{ {
AddDFBrowseGridColumn(grid, "LiveVarieties_Name"); AddDFBrowseGridColumn(grid, "LiveVarieties_Name");
AddDFBrowseGridColumn(grid, "SortNum");
} }
} }


+ 0
- 126
B3SheepButcherManage.Web/Pages/B3SheepButcherManage/Bills/ButcherOrder_/ButcherOrderEdit.cs View File

@ -1,126 +0,0 @@
using BWP.B3SheepButcherManage.BL;
using BWP.B3SheepButcherManage.BO;
using BWP.Web.CustomPageLayout;
using BWP.Web.Layout;
using BWP.Web.WebControls;
using Forks.EnterpriseServices.DataForm;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.UI;
using System.Web.UI.WebControls;
using TSingSoft.WebControls2;
using Forks.Utils.Collections;
using BWP.Web.Utils;
namespace BWP.Web.Pages.B3SheepButcherManage.Bills.ButcherOrder_
{
class ButcherOrderEdit : DepartmentWorkFlowBillEditPage<ButcherOrder, IButcherOrderBL>
{
private DFEditGrid detailGrid;
protected override void BuildBasePropertiesEditor(TitlePanel titlePanel, PageLayoutSection section)
{
var layoutManager = new LayoutManager("main", mDFInfo, mDFContainer);
var config = new AutoLayoutConfig();
config.Add("AccountingUnit_ID");
config.Add("Department_ID");
config.Add("Date");
config.Add("Employee_ID");
config.Add("Remark");
layoutManager.Config = config;
section.ApplyLayout(layoutManager, config, mPageLayoutManager, mDFInfo);
titlePanel.Controls.Add(layoutManager.CreateLayout());
}
protected override void BuildBody(Control form)
{
base.BuildBody(form);
CreateDetailPanel(form.EAdd(new TitlePanel("排宰明细")));
}
private void CreateDetailPanel(TitlePanel titlePanel)
{
var vPanel = new VLayoutPanel();
titlePanel.Controls.Add(vPanel);
if (CanSave)
{
var hPanel = vPanel.Add(new HLayoutPanel(), new VLayoutOption(HorizontalAlign.Left));
var dialogButton = hPanel.Add(new DialogButton
{
Text = "选择过磅单",
Url = string.Format("SelectWeighBillDialog.aspx?ID={0}&", MinDmo.ID)
});
dialogButton.BeforeClientClick = "var accID=__DFContainer.getValue('AccountingUnit_ID'); if (accID == '') { alert('先选择会计单位');return false;}";
dialogButton.ClientDynamicParamGetter = "return 'AccountingUnit_ID=' + __DFContainer.getValue('AccountingUnit_ID')";
dialogButton.Click += delegate
{
detailGrid.GetFromUI();
var details = DialogUtil.GetCachedObj<ButcherOrder_Detail>(this);
var selectItems = detailGrid.GetSelectedItems();
if (selectItems.Count > 0)
{
var selectDetail = (ButcherOrder_Detail)(selectItems[0]);
var idx = Dmo.Details.IndexOf(selectDetail) + 1;
foreach (var detail in details)
{
Dmo.Details.Insert(idx, detail);
idx++;
}
}
else
{
foreach (var detail in details)
Dmo.Details.Add(detail);
}
detailGrid.DataBind();
};
}
var detailEditor = new DFCollectionEditor<ButcherOrder_Detail>(() => Dmo.Details);
detailEditor.AllowDeletionFunc = () => CanSave;
detailEditor.CanDeleteFunc = (detail) => CanSave;
detailEditor.IsEditableFunc = (field, detail) => CanSave;
detailEditor.CanSelectFunc = (detail) => CanSave;
detailGrid = vPanel.Add(new DFEditGrid(detailEditor) { Width = Unit.Percentage(100), MultiSelectionEnabled = CanSave });
detailGrid.Columns.EAdd(new DFEditGridColumn<DFTextBox>("Sequence")).InitEditControl += (sender, e) =>
{
e.Control.Style["width"] = "160px";
};
detailGrid.Columns.EAdd(new DFEditGridColumn<DFTextBox>("WeightBill_ID")).InitEditControl += (sender, e) =>
{
e.Control.Style["width"] = "160px";
};
detailGrid.Columns.Add(new DFEditGridColumn<DFValueLabel>("Supplier_Name"));
detailGrid.Columns.Add(new DFEditGridColumn<DFValueLabel>("BuyNum"));
detailGrid.Columns.EAdd(new DFEditGridColumn<DFTextBox>("Number")).InitEditControl += (sender, e) =>
{
e.Control.Style["width"] = "160px";
};
detailGrid.PreferWidthGridSet = new Dictionary<string, Unit> { { "顺序号", Unit.Percentage(20) }, { "过磅单号", Unit.Percentage(20) }, { "排宰头数", Unit.Percentage(20) } };
var section2 = mPageLayoutManager.AddSection("detailColumns1", "明细");
section2.ApplyLayout(detailGrid, mPageLayoutManager, DFInfo.Get(typeof(ButcherOrder_Detail)));
titlePanel.SetPageLayoutSetting(mPageLayoutManager, section2.Name);
mDFContainer.AddNonDFControl(detailGrid, "$Details");
}
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
if (!IsPostBack)
DataBind();
}
public override void GetFromUI()
{
base.GetFromUI();
detailGrid.GetFromUI();
}
protected override bool EnableReferToCreate
{
get { return false; }
}
}
}

+ 0
- 38
B3SheepButcherManage.Web/Pages/B3SheepButcherManage/Bills/ButcherOrder_/ButcherOrderList.cs View File

@ -1,38 +0,0 @@
using BWP.B3SheepButcherManage.BL;
using BWP.B3SheepButcherManage.BO;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using TSingSoft.WebControls2;
namespace BWP.Web.Pages.B3SheepButcherManage.Bills.ButcherOrder_
{
class ButcherOrderList : DomainBillListPage<ButcherOrder, IButcherOrderBL>
{
protected override void AddQueryControls(VLayoutPanel vPanel)
{
vPanel.Add(CreateDefaultBillQueryControls((panel, config) =>
{
config.Add("Date");
config.Add("AccountingUnit_ID");
config.Add("Department_ID");
config.Add("Employee_ID");
}));
}
protected override void AddDFBrowseGridColumn(DFBrowseGrid grid, string field)
{
base.AddDFBrowseGridColumn(grid, field);
if (field == "BillState")
{
AddDFBrowseGridColumn(grid, "Date");
AddDFBrowseGridColumn(grid, "AccountingUnit_Name");
AddDFBrowseGridColumn(grid, "Department_Name");
AddDFBrowseGridColumn(grid, "Employee_Name");
AddDFBrowseGridColumn(grid, "CheckUser_Name");
AddDFBrowseGridColumn(grid, "Remark");
}
}
}
}

+ 0
- 19
B3SheepButcherManage.Web/Pages/B3SheepButcherManage/Bills/ButcherOrder_/ButcherOrderPrint.cs View File

@ -1,19 +0,0 @@
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.ButcherOrder_
{
class ButcherOrderPrint : DomainTemplatePrintPage<ButcherOrder, IButcherOrderBL>
{
protected override void AddParameters(IDictionary<string, object> dic)
{
dic.Add("$ID", Dmo.ID);
dic.Add("$Details", Dmo.Details);
dic.Add("$DetailType", typeof(ButcherOrder_Detail));
}
}
}

+ 0
- 100
B3SheepButcherManage.Web/Pages/B3SheepButcherManage/Bills/ButcherOrder_/SelectWeighBillDialog.cs View File

@ -1,100 +0,0 @@
using BWP.B3SheepButcherManage.BO;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using TSingSoft.WebControls2;
using Forks.Utils.Collections;
using BWP.Web.Layout;
using Forks.EnterpriseServices.DomainObjects2;
using Forks.EnterpriseServices.DomainObjects2.DQuery;
using Forks.EnterpriseServices.SqlDoms;
using BWP.B3Frameworks.BO.NamedValueTemplate;
using BWP.B3Frameworks;
using BWP.B3Frameworks.Utils;
using Forks.EnterpriseServices.DataForm;
namespace BWP.Web.Pages.B3SheepButcherManage.Bills.ButcherOrder_
{
class SelectWeighBillDialog : DmoMultiSelectDialog<WeightBill, ButcherOrder_Detail>
{
protected override void CreateQueryGridColumns(DFBrowseGrid grid)
{
grid.Columns.Add(new DFBrowseGridColumn("ID"));
grid.Columns.Add(new DFBrowseGridColumn("Supplier_Name"));
grid.Columns.Add(new DFBrowseGridColumn("Number"));
grid.Columns.Add(new DFBrowseGridColumn("LiveColonyHouse_Name"));
grid.Columns.Add(new DFBrowseGridColumn("AlreadyNumber"));
grid.Columns.EAdd(new DFEditGridColumn("ThisNumber")).HeaderText = "本次计划头数";
grid.Columns.Add(new DFBrowseGridColumn("Remark"));
}
protected override void CreateQuery(VLayoutPanel vPanel)
{
var layout = new LayoutManager("", mDFInfo, mQueryContainer);
var config = new AutoLayoutConfig();
config.Add("WeighTime");
layout.Config = config;
vPanel.Add(layout.CreateLayout());
base.CreateQuery(vPanel);
}
protected override DQueryDom GetQueryDom()
{
var dom = base.GetQueryDom();
var detail = JoinAlias.Create("detail");
var temp = new JoinAlias(typeof(AlreadyTemp));
AlreadyTemp.Register(dom);
dom.From.AddJoin(JoinType.Left, new DQDmoSource(temp), DQCondition.EQ(detail, "WeightBill_ID", temp, "WeightBill_ID"));
dom.Columns.Add(DQSelectColumn.Field("Supplier_Name"));
dom.Columns.Add(DQSelectColumn.Field("ID", "过磅单号"));
dom.Columns.Add(DQSelectColumn.Field("BuyNum"));
dom.Columns.Add(DQSelectColumn.Field("Number", detail, "收购头数"));
dom.Columns.Add(DQSelectColumn.Field("LiveColonyHouse_Name", detail));
dom.Columns.Add(DQSelectColumn.Field("AlreadyNumber", temp, "已排头数"));
var lastNumber = DQExpression.Subtract(DQExpression.IfNull(DQExpression.Field(detail, "Number"), DQExpression.Value(0)), DQExpression.IfNull(DQExpression.Field(temp, "AlreadyNumber"), DQExpression.Value(0)));
dom.Columns.Add(DQSelectColumn.Create(lastNumber, "ThisNumber"));
dom.Columns.Add(DQSelectColumn.Field("Remark", detail));
dom.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("AccountingUnit_ID", long.Parse(Request.QueryString["AccountingUnit_ID"])), DQCondition.InEQ("BillState", .), DQCondition.EQ("Domain_ID", DomainContext.Current.ID)));
dom.Where.Conditions.Add(DQCondition.GreaterThan(lastNumber, DQExpression.Value(0)));
OrganizationUtil.AddOrganizationLimit(dom, typeof(WeightBill));
return dom;
}
protected override void SetResultFromDFDataRow(ButcherOrder_Detail dmo, DFDataRow row)
{
var number = (int?)row["Number"];
var already = (int?)row["AlreadyNumber"];
dmo.Supplier_Name = (string)row["Supplier_Name"];
dmo.WeightBill_ID = (long)row["ID"];
dmo.BuyNum = (int?)row["BuyNum"];
var thiNumber = row["ThisNumber"];
if (thiNumber == null)
throw new Exception("本次计划头数不能为空");
dmo.Number = Convert.ToInt32(thiNumber);
var more = (already ?? 0) + (dmo.Number ?? 0) - (number ?? 0);
if (more > 0)
throw new Exception(string.Format("过磅单No.{0} 排宰头数超出收购头数{1}头", dmo.WeightBill_ID, more));
}
class AlreadyTemp
{
public long WeightBill_ID { get; set; }
public int AlreadyNumber { get; set; }
public static void Register(DQueryDom root)
{
var main = new JoinAlias(typeof(ButcherOrder));
var detail = new JoinAlias(typeof(ButcherOrder_Detail));
var query = new DQueryDom(main);
query.From.AddJoin(JoinType.Inner, new DQDmoSource(detail), DQCondition.EQ(main, "ID", detail, "ButcherOrder_ID"));
query.Columns.Add(DQSelectColumn.Field("WeightBill_ID", detail));
query.Columns.Add(DQSelectColumn.Sum(detail, "Number"));
query.GroupBy.Expressions.Add(DQExpression.Field(detail, "WeightBill_ID"));
query.Where.Conditions.Add(DQCondition.And(DQCondition.EQ(main, "Domain_ID", DomainContext.Current.ID), (DQCondition.InEQ(main, "BillState", .))));
root.RegisterQueryTable(typeof(AlreadyTemp), new string[] { "WeightBill_ID", "AlreadyNumber" }, query);
}
}
}
}

+ 0
- 30
B3SheepButcherManage.Web/Pages/B3SheepButcherManage/Bills/ButcherOrder_/SelectWeighBillDialog.xml View File

@ -1,30 +0,0 @@
<?xml version="1.0" encoding="utf-8" ?>
<Select xmlns="urn:XDQuery">
<Columns>
<Field name="ID"/>
</Columns>
<From>
<Join type="Inner">
<DmoClass class="BWP.B3SheepButcherManage.BO.WeightBill, B3SheepButcherManage"/>
<DmoClass class="BWP.B3SheepButcherManage.BO.WeightBill_Record, B3SheepButcherManage" alias="detail"/>
<Condition>
<EQ>
<Field name="ID"/>
<Field name="WeightBill_ID" alias="detail"/>
</EQ>
</Condition>
</Join>
</From>
<Where>
<And>
<GreaterThanOrEqual>
<Field name="WeighTime"/>
<QBE paramName="MinWeighTime" />
</GreaterThanOrEqual>
<LessThanOrEqual>
<Field name="WeighTime"/>
<QBE paramName="MaxWeighTime"/>
</LessThanOrEqual>
</And>
</Where>
</Select>

+ 30
- 8
B3SheepButcherManage.Web/Pages/B3SheepButcherManage/Bills/Butcher_/ButcherEdit.cs View File

@ -45,22 +45,25 @@ namespace BWP.Web.Pages.B3SheepButcherManage.Bills.Butcher_
titlePanel.Controls.Add(layoutManager.CreateLayout()); titlePanel.Controls.Add(layoutManager.CreateLayout());
} }
private DFDateTimeInput beginInputTime, endInputTime;
private void AddDetails(TitlePanel titlePanel) private void AddDetails(TitlePanel titlePanel)
{ {
var vPanel = titlePanel.EAdd(new VLayoutPanel()); var vPanel = titlePanel.EAdd(new VLayoutPanel());
AddLinkButtons(vPanel); AddLinkButtons(vPanel);
beginInputTime = new DFDateTimeInput();
endInputTime = new DFDateTimeInput();
var hPanel = vPanel.Add(new HLayoutPanel(), new VLayoutOption(HorizontalAlign.Left)); var hPanel = vPanel.Add(new HLayoutPanel(), new VLayoutOption(HorizontalAlign.Left));
if (CanSave) if (CanSave)
{ {
hPanel.Add(new TSButton("创建明细", delegate
{
mDFContainer.GetFromUI();
var msg = mBL.CreateDetailFromWeightClient(Dmo);
AllOrders = Dmo.Details.Where(x => x.PrePhase.HasValue).Select(x => x.PrePhase.Value).OrderBy(x => x).ToList();
AppToUI();
AspUtil.Alert(this, "创建成功!" + msg);
}));
hPanel.Add(new Label() { Text = "读入时间段" });
hPanel.Add(beginInputTime);
hPanel.Add(new LiteralControl("→"));
hPanel.Add(endInputTime);
var readBtn = hPanel.Add(new TSButton("读入称重值"));
readBtn.Click += ReadBtnClick;
} }
var editor = new DFCollectionEditor<Butcher_Detail>(() => FilterDetails()); var editor = new DFCollectionEditor<Butcher_Detail>(() => FilterDetails());
@ -130,6 +133,25 @@ namespace BWP.Web.Pages.B3SheepButcherManage.Bills.Butcher_
}; };
} }
void ReadBtnClick(object sender, EventArgs e)
{
if (beginInputTime.IsEmpty || endInputTime.IsEmpty)
{
AspUtil.Alert(this, "请输入确认时间段!");
return;
}
if (DateTime.Compare(beginInputTime.Date, endInputTime.Date) > 0)
{
AspUtil.Alert(this, "确认时间段: 开始时间 应 早于结束时间!");
return;
}
mBL.ReadAndUpdateDetailFromWeightClient(Dmo, beginInputTime.Value.Value, endInputTime.Value.Value);
AllOrders = Dmo.Details.Where(x => x.PrePhase.HasValue).Select(x => x.PrePhase.Value).OrderBy(x => x).ToList();
AppToUI();
}
private void InsertButcherDetailByID(VLayoutPanel vPanel) private void InsertButcherDetailByID(VLayoutPanel vPanel)
{ {
if (!CheckDefaultRole("添加明细")) if (!CheckDefaultRole("添加明细"))


+ 209
- 0
B3SheepButcherManage.Web/Pages/B3SheepButcherManage/Bills/Butcher_/CreateButcher.cs View File

@ -0,0 +1,209 @@
using BWP.B3Frameworks;
using BWP.B3Frameworks.BO;
using BWP.B3Frameworks.Utils;
using BWP.B3SheepButcherManage.BO;
using BWP.Web.Utils;
using Forks.EnterpriseServices.DataForm;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using TSingSoft.WebControls2;
using TSingSoft.WebPluginFramework;
using Forks.Utils.Collections;
using BWP.B3SheepButcherManage.BL;
using Forks.EnterpriseServices.BusinessInterfaces;
using BWP.Web.Layout;
using BWP.B3ProduceUnitedInfos.NamedValueTemplate;
using Forks.EnterpriseServices.DomainObjects2.DQuery;
using Forks.EnterpriseServices.DomainObjects2;
using Forks.EnterpriseServices.SqlDoms;
using BWP.B3Frameworks.BO.NamedValueTemplate;
namespace BWP.Web.Pages.B3SheepButcherManage.Bills.Butcher_
{
class CreateButcher : AppBasePage
{
IDFInfo mDFInfo = DFInfo.Get(typeof(WeightBill));
protected QueryContainer mQueryContainer;
/// <summary>
/// 查询结果Grid
/// </summary>
protected DFBrowseGrid queryGrid;
protected override void InitForm(HtmlForm form)
{
form.Controls.Add(new LiteralControl("<h1>排宰</h1>"));
mQueryContainer = QueryContainer.FromResource(BasisType.FullName + ".xml", BasisType.Assembly);
var vPanel = new VLayoutPanel();
form.Controls.Add(vPanel);
CreateQuery(vPanel);
CreateQueryGrid(vPanel);
}
private void CreateQueryGrid(VLayoutPanel vPanel)
{
queryGrid = new DFBrowseGrid(new DFDataTableEditor(), GetQueryDom())
{
Width = Unit.Percentage(100),
MultiSelectionEnabled = true,
IgnoreItemsCount = true,
};
CreateQueryGridColumns(queryGrid);
vPanel.Add(queryGrid);
var profile = DomainUserProfileUtil.Load<B3FrameworksDomainUserProfile>();
var hPanel = vPanel.Add(new HLayoutPanel());
hPanel.Add(new SimpleLabel("会计单位"));
var accInput = hPanel.Add(new ChoiceBox(B3FrameworksConsts.DataSources.));
accInput.Width = 160;
accInput.EnableTopItem = true;
if (profile.DefaultAccountingUnit_ID.HasValue)
{
accInput.Value = profile.DefaultAccountingUnit_ID.ToString();
accInput.DisplayValue = profile.DefaultAccountingUnit_Name;
}
hPanel.Add(new SimpleLabel("部门"));
var deptInput = hPanel.Add(new ChoiceBox(B3FrameworksConsts.DataSources.));
deptInput.Width = 160;
deptInput.EnableTopItem = true;
deptInput.EnableInputArgument = true;
var employee = DomainUserUtil.GetCurrentBindingMinEmployee();
if (employee != null && employee.Domain_ID == DomainContext.Current.ID)
{
var deptID = WebBLUtil.GetDmoPropertyByID<Employee, long?>("Department_ID", employee.ID);
if (deptID.HasValue)
{
deptInput.Value = deptID.ToString();
deptInput.DisplayValue = WebBLUtil.GetDmoPropertyByID<string>(typeof(Department), "Name", deptID.Value);
}
}
hPanel.Add(new SimpleLabel("屠宰日期"));
var dateInput = hPanel.Add(new DFDateInput());
dateInput.Value = BLContext.Today;
var button = new TSButton("排宰");
vPanel.Add(button);
button.Click += delegate
{
queryGrid.GetFromUI();
IList<WeightBill_Record> selectedList = new List<WeightBill_Record>();
foreach (var row in queryGrid.GetSelectedItems())
{
var selectDmo = new WeightBill_Record();
selectDmo.ID = (long)row["DetailID"];
selectDmo.WeightBill_ID = (long)row["ID"];
selectDmo.RemainNumber = (int?)row["RemainNumber"];
selectDmo.ButcherNumber = (int?)row["ButcherNumber"];
selectDmo.Number = (int)row["Number"];
selectDmo.LiveColonyHouse_Name = (string)row["LiveColonyHouse_Name"];
selectDmo.LiveVarieties_ID = (long?)row["LiveVarieties_ID"];
selectedList.Add(selectDmo);
}
var mBL = BIFactory.Create<IButcherBL>();
long? accID = null, deptID = null;
if (!accInput.IsEmpty)
accID = long.Parse(accInput.Value);
if (!deptInput.IsEmpty)
deptID = long.Parse(deptInput.Value);
var id = mBL.InsertOrUpdate(accID, deptID, dateInput.Value, selectedList);
queryGrid.DataBind();
AspUtil.Alert(this, string.Format("排宰成功!(屠宰单号No.{0})", id));
};
}
void CreateQueryGridColumns(DFBrowseGrid grid)
{
grid.Columns.Add(new DFBrowseGridColumn("WeighTime"));
grid.Columns.Add(new DFBrowseGridColumn("ID"));
grid.Columns.Add(new DFBrowseGridColumn("Supplier_Name"));
grid.Columns.Add(new DFBrowseGridColumn("LiveVarieties_Name"));
grid.Columns.Add(new DFBrowseGridColumn("LiveColonyHouse_Name"));
grid.Columns.Add(new DFBrowseGridColumn("Number"));
grid.Columns.Add(new DFBrowseGridColumn("Weight"));
grid.Columns.Add(new DFBrowseGridColumn("PlanNumber"));
grid.Columns.Add(new DFBrowseGridColumn("ButcherNumber"));
grid.Columns.EAdd(new DFEditGridColumn<DFTextBox>("RemainNumber")).HeaderText = "本次计划数";
grid.ValueColumns.Add("LiveVarieties_ID");
}
private ChoiceBox _houseInput;
private void CreateQuery(VLayoutPanel vPanel)
{
var panel = new LayoutManager("", mDFInfo, mQueryContainer);
panel.Add("WeighTime", QueryCreator.DateRange(mDFInfo.Fields["WeighTime"], mQueryContainer, "MinWeighTime", "MaxWeighTime", null, BLContext.Today.AddDays(1).AddMinutes(-1)));
panel.Add("活体圈舍", new SimpleLabel("活体圈舍"), _houseInput = new ChoiceBox(B3ProduceUnitedInfos.B3ProduceUnitedInfosDataSources.));
panel["活体圈舍"].NotAutoAddToContainer = true;
_houseInput.Width = 160;
_houseInput.EnableTopItem = true;
_houseInput.EnableInputArgument = true;
_houseInput.CodeArgument=..Value.ToString();
var config = new AutoLayoutConfig();
panel.Config = config;
config.Add("ID");
config.Add("AccountingUnit_ID");
config.Add("Supplier_ID");
config.Add("WeighTime");
config.Add("活体圈舍");
vPanel.Add(panel.CreateLayout());
var qButton = new TSButton("开始查询");
qButton.Click += delegate
{
queryGrid.Reset();
queryGrid.Query = GetQueryDom();
queryGrid.DataBind();
};
vPanel.Add(new HLayoutPanel { qButton, new RedirectTSButton("清除条件") });
}
DQueryDom GetQueryDom()
{
var dom = mQueryContainer.Build();
var detail = new JoinAlias(typeof(WeightBill_Record));
var bill = dom.From.RootSource.Alias;
dom.From.AddJoin(JoinType.Inner, new DQDmoSource(detail), DQCondition.EQ(bill, "ID", detail, "WeightBill_ID"));
dom.Columns.Add(DQSelectColumn.Field("LiveVarieties_Name", detail));
dom.Columns.Add(DQSelectColumn.Field("LiveVarieties_ID", detail));
dom.Columns.Add(DQSelectColumn.Field("Number", detail));
dom.Columns.Add(DQSelectColumn.Field("Weight", detail));
dom.Columns.Add(DQSelectColumn.Field("RemainNumber", detail));
dom.Columns.Add(DQSelectColumn.Field("PlanNumber", detail));
dom.Columns.Add(DQSelectColumn.Field("ButcherNumber", detail));
dom.Columns.Add(DQSelectColumn.Field("LiveColonyHouse_Name", detail));
dom.Columns.Add(DQSelectColumn.Create(DQExpression.Field(detail, "ID"), "DetailID"));
dom.Where.Conditions.Add(DQCondition.EQ("BillState", .));
dom.Where.Conditions.Add(DQCondition.GreaterThan(detail, "RemainNumber", 0));
OrganizationUtil.AddOrganizationLimit<AccountingUnit>(dom, "AccountingUnit_ID");
OrganizationUtil.AddOrganizationLimit<Department>(dom, "Department_ID");
if (!_houseInput.IsEmpty)
{
dom.Where.Conditions.Add(DQCondition.EQ(detail, "LiveColonyHouse_Name", _houseInput.Value));
}
return dom;
}
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
if (!IsPostBack)
{
queryGrid.DataBind();
}
}
}
}

B3SheepButcherManage.Web/Pages/B3SheepButcherManage/Bills/ButcherOrder_/ButcherOrderList.xml → B3SheepButcherManage.Web/Pages/B3SheepButcherManage/Bills/Butcher_/CreateButcher.xml View File

@ -1,10 +1,9 @@
<?xml version="1.0" encoding="utf-8" ?> <?xml version="1.0" encoding="utf-8" ?>
<Select xmlns="urn:XDQuery"> <Select xmlns="urn:XDQuery">
<Columns> <Columns>
<Field name="ID"/>
</Columns> </Columns>
<From> <From>
<DmoClass class="BWP.B3SheepButcherManage.BO.ButcherOrder, B3SheepButcherManage"/>
<DmoClass class="BWP.B3SheepButcherManage.BO.WeightBill, B3SheepButcherManage"/>
</From> </From>
<Where> <Where>
<And> <And>
@ -16,6 +15,14 @@
<Field name="IsLocked"/> <Field name="IsLocked"/>
<QBE paramName="IsLocked"/> <QBE paramName="IsLocked"/>
</EQ> </EQ>
<EQ>
<Field name="Supplier_ID"/>
<QBE paramName="Supplier_ID"/>
</EQ>
<EQ>
<Field name="AccountingUnit_ID"/>
<QBE paramName="AccountingUnit_ID"/>
</EQ>
<Contains> <Contains>
<Field name="Remark"/> <Field name="Remark"/>
<QBE paramName="Remark"/> <QBE paramName="Remark"/>
@ -24,10 +31,6 @@
<Field name="CreateUser_Name"/> <Field name="CreateUser_Name"/>
<QBE paramName="CreateUser_Name"/> <QBE paramName="CreateUser_Name"/>
</Contains> </Contains>
<Contains>
<Field name="CheckUser_Name"/>
<QBE paramName="CheckUser_Name"/>
</Contains>
<EQ> <EQ>
<Field name="AccountingUnit_ID"/> <Field name="AccountingUnit_ID"/>
<QBE paramName="AccountingUnit_ID"/> <QBE paramName="AccountingUnit_ID"/>
@ -40,6 +43,7 @@
<Field name="Department_ID"/> <Field name="Department_ID"/>
<QBE paramName="Department_ID"/> <QBE paramName="Department_ID"/>
</EQ> </EQ>
<GreaterThanOrEqual> <GreaterThanOrEqual>
<Field name="CreateTime"/> <Field name="CreateTime"/>
<QBE paramName="MinCreateTime" /> <QBE paramName="MinCreateTime" />
@ -48,13 +52,14 @@
<Field name="CreateTime"/> <Field name="CreateTime"/>
<QBE paramName="MaxCreateTime"/> <QBE paramName="MaxCreateTime"/>
</LessThanOrEqual> </LessThanOrEqual>
<GreaterThanOrEqual> <GreaterThanOrEqual>
<Field name="Date"/>
<QBE paramName="MinDate" />
<Field name="WeighTime"/>
<QBE paramName="MinWeighTime" />
</GreaterThanOrEqual> </GreaterThanOrEqual>
<LessThanOrEqual> <LessThanOrEqual>
<Field name="Date"/>
<QBE paramName="MaxDate"/>
<Field name="WeighTime"/>
<QBE paramName="MaxWeighTime"/>
</LessThanOrEqual> </LessThanOrEqual>
<EQ> <EQ>
<Field name="BillState"/> <Field name="BillState"/>

+ 0
- 4
B3SheepButcherManage/B3SheepButcherManage.csproj View File

@ -89,14 +89,10 @@
<ItemGroup> <ItemGroup>
<Compile Include="BL\BaseInfo\LivestockBL.cs" /> <Compile Include="BL\BaseInfo\LivestockBL.cs" />
<Compile Include="BL\Bill\ButcherBL\ButcherBL.cs" /> <Compile Include="BL\Bill\ButcherBL\ButcherBL.cs" />
<Compile Include="BL\Bill\ButcherBL\ButcherBL2.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\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_Detail.cs" />
<Compile Include="BO\Bill\Butcher\Butcher.cs" /> <Compile Include="BO\Bill\Butcher\Butcher.cs" />
<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" />


+ 244
- 5
B3SheepButcherManage/BL/Bill/ButcherBL/ButcherBL.cs View File

@ -1,4 +1,5 @@
using BWP.B3Frameworks.BL; using BWP.B3Frameworks.BL;
using BWP.B3Frameworks.BO.NamedValueTemplate;
using BWP.B3SheepButcherManage.BO; using BWP.B3SheepButcherManage.BO;
using BWP.B3SheepButcherManage.Ioc; using BWP.B3SheepButcherManage.Ioc;
using BWP.B3SheepButcherManage.Utils; using BWP.B3SheepButcherManage.Utils;
@ -21,13 +22,15 @@ namespace BWP.B3SheepButcherManage.BL
[LogicName("羊屠宰单")] [LogicName("羊屠宰单")]
public interface IButcherBL : IDepartmentWorkFlowBillBL<Butcher> public interface IButcherBL : IDepartmentWorkFlowBillBL<Butcher>
{ {
string CreateDetailFromWeightClient(Butcher dmo);
[Log(Disabled = true)] [Log(Disabled = true)]
void InsertDetailBySequence(Butcher dmo, long insertIndexId, int count); void InsertDetailBySequence(Butcher dmo, long insertIndexId, int count);
[Log(Disabled = true)] [Log(Disabled = true)]
void DeleteDetail(long butcherID, long? startID, long? endID); void DeleteDetail(long butcherID, long? startID, long? endID);
long InsertOrUpdate(long? accID, long? deptID, DateTime? date, IList<WeightBill_Record> selectedList);
void ReadAndUpdateDetailFromWeightClient(Butcher dmo, DateTime beginTime, DateTime? endTime);
} }
public partial class ButcherBL : DepartmentWorkFlowBillBL<Butcher>, IButcherBL public partial class ButcherBL : DepartmentWorkFlowBillBL<Butcher>, IButcherBL
@ -44,6 +47,13 @@ namespace BWP.B3SheepButcherManage.BL
base.beforeSave(dmo); base.beforeSave(dmo);
} }
protected override void beforeDelete(Butcher dmo)
{
if (dmo.Details.Count > 0)
throw new ApplicationException("单据有屠宰明细,不允许删除");
base.beforeDelete(dmo);
}
string GetConnectionStr(long accountingUnitID) string GetConnectionStr(long accountingUnitID)
{ {
string connectionString = ""; string connectionString = "";
@ -173,6 +183,236 @@ namespace BWP.B3SheepButcherManage.BL
Update(dmo); Update(dmo);
} }
public long InsertOrUpdate(long? accID, long? deptID, DateTime? date, IList<WeightBill_Record> selectedList)
{
if (date == null)
date = BLContext.Today;
var dom = new DQueryDom(new JoinAlias(typeof(Butcher)));
if (accID == null)
dom.Where.Conditions.Add(DQCondition.IsNull(DQExpression.Field("AccountingUnit_ID")));
else
dom.Where.Conditions.Add(DQCondition.EQ("AccountingUnit_ID", accID));
dom.Where.Conditions.Add(DQCondition.GreaterThanOrEqual("Date", date.Value.Date));
dom.Where.Conditions.Add(DQCondition.LessThan("Date", date.Value.Date.AddDays(1)));
dom.Where.Conditions.Add(DQCondition.EQ("BillState", .));
dom.Columns.Add(DQSelectColumn.Field("ID"));
var dmoID = dom.EExecuteScalar<long?>(Session);
Butcher dmo;
if (dmoID == null)
{
dmo = new Butcher();
InitNewDmo(dmo);
if (deptID != null)
dmo.Department_ID = deptID;
if (accID != null)
dmo.AccountingUnit_ID = accID;
dmo.Date = date.Value;
}
else
{
dmo = Load(dmoID.Value);
}
InsertDetail(dmo, selectedList);
if (dmo.ID == 0)
Insert(dmo);
else
{
Update(dmo);
}
var weightBL = BIFactory.Create<IWeightBillBL>(this);
foreach (var weighRecord in selectedList)
{
weightBL.UpdateDetailOtherNumber(weighRecord.ID);
}
return dmo.ID;
}
private static void InsertDetail(Butcher dmo, IList<WeightBill_Record> details)
{
var groups = details.GroupBy(x => x.WeightBill_ID);
var sq = (dmo.Details.Max(x => x.Sequence) ?? 0) + 1;
var lastDetail = dmo.Details.LastOrDefault();
var phasePartI = 1;
var phasePartII = 1;
long? lastWeighID = null;
if (lastDetail != null)
{
if (!string.IsNullOrEmpty(lastDetail.PhaseCode))
{
var strs = lastDetail.PhaseCode.Split('-');
int c1, c2;
if (strs.Length > 0 && int.TryParse(strs[0], out c1))
{
phasePartI = c1;
}
if (strs.Length > 1 && int.TryParse(strs[1], out c2))
{
phasePartII = c2;
}
}
lastWeighID = lastDetail.WeightBill_ID;
}
// var config = new B3ButcherManageOnlineConfiguration();
foreach (var records in groups)
{
foreach (var detail in records)
{
if (detail.PlanNumber == null)
detail.PlanNumber = 0;
if (detail.ButcherNumber == null)
detail.ButcherNumber = 0;
if ((detail.RemainNumber > detail.Number - detail.PlanNumber) ||
(detail.RemainNumber > detail.Number - detail.ButcherNumber))
throw new Exception("本次宰杀头数超出了剩余头数");
// 本次计划数量
for (int i = 0; i < detail.RemainNumber; i++)
{
var bDetail = new Butcher_Detail();
bDetail.Butcher_ID = dmo.ID;
bDetail.Weigh_Detail_ID = detail.ID;
bDetail.WeightBill_ID = detail.WeightBill_ID;
bDetail.Sequence = sq;
// if (config.SubtractWeight.Value != 0)
// bDetail.SubtractWeight = config.SubtractWeight.Value;
bDetail.LiveVarieties_ID = detail.LiveVarieties_ID;
if (lastWeighID == null)
{
lastWeighID = detail.WeightBill_ID;
phasePartII = 1;
}
else if (lastWeighID == detail.WeightBill_ID)
phasePartII++;
else
{
lastWeighID = detail.WeightBill_ID;
phasePartI++;
phasePartII = 1;
}
bDetail.PhaseCode = string.Format("{0}-{1}", phasePartI, phasePartII);
bDetail.PrePhase = phasePartI;
dmo.Details.Add(bDetail);
sq++;
}
}
}
}
public void ReadAndUpdateDetailFromWeightClient(Butcher dmo, DateTime beginTime, DateTime? endTime)
{
var list = GetWeightTable(dmo.AccountingUnit_ID ?? 0, beginTime, endTime);
for (int i = 0; i < list.Count; i++)
{
if (dmo.Details.Count > i)
{
var detail = dmo.Details[i];
var weightdefault = list[i];
detail.Weight = weightdefault.Weight;
detail.SubtractWeight = weightdefault.SubWeight;
detail.FinalWeight = detail.Weight - (detail.SubtractWeight ?? 0);
detail.Livestock_ID = weightdefault.Livestock_ID;
detail.Livestock_Name = weightdefault.Livestock_Name;
detail.PhaseCode = weightdefault.PhaseCode;
}
}
}
private List<tempWeightTable> GetWeightTable(long accountingUnitId, DateTime beginTime, DateTime? endTime)
{
var list = new List<tempWeightTable>();
string connectionString = GetConnectionStr(accountingUnitId); // "Server=.;Database=yandu;Integrated Security=true;";// Get connection string
if (string.IsNullOrEmpty(connectionString))
{
throw new ApplicationException("未设置 屠宰单 数据库连接字符串!");
}
ReadFromWeight(beginTime, endTime, list, connectionString);
return list;
}
private void ReadFromWeight(DateTime beginTime, DateTime? endTime, ICollection<tempWeightTable> list, string connectionString)
{
var selectSql = "select * from [Weight] where [DataTime]>='" + beginTime + "'";
if (endTime.HasValue)
{
selectSql += " and [DataTime]<='" + endTime.Value + "'";
}
selectSql += " Order by DataTime";
using (var sqlUtil = new SqlUtil(connectionString))
{
using (var reader = sqlUtil.ExecuteReader(selectSql))
{
while (reader.Read())
{
var weigh = new tempWeightTable();
if (!(reader["ID"] is DBNull))
{
weigh.ID = Convert.ToInt64(reader["ID"]); // ID
}
if (!(reader["DataTime"] is DBNull))
{
weigh.DateTime = Convert.ToDateTime(reader["DataTime"]); // 日期
}
if (!(reader["Level_Code"] is DBNull))
{
weigh.Level_Code = Convert.ToInt32(reader["Level_Code"]); // 快捷编码
}
if (!(reader["Weight"] is DBNull))
{
weigh.Weight = Convert.ToDecimal(reader["Weight"]); // 重量
}
if (!(reader["SubWeight"] is DBNull))
{
weigh.SubWeight = Convert.ToDecimal(reader["SubWeight"]); // 扣重
}
if (!(reader["Sequence"] is DBNull))
{
weigh.Sequence = Convert.ToInt64(reader["Sequence"]); // 顺序号
}
list.Add(weigh);
}
}
}
var dic = new Dictionary<int, Tuple<long, string>>();
foreach (var table in list)
{
if (table.Level_Code == null)
continue;
if (dic.ContainsKey(table.Level_Code.Value))
{
table.Livestock_ID = dic[table.Level_Code.Value].Item1;
table.Livestock_Name = dic[table.Level_Code.Value].Item2;
}
else
{
var tuple = GetGoods(table.Level_Code.Value);
if (tuple == null)
continue;
table.Livestock_ID = tuple.Item1;
table.Livestock_Name = tuple.Item2;
dic.Add(table.Level_Code.Value, tuple);
}
}
}
Tuple<long, string> GetGoods(int code)
{
var dom = new DQueryDom(new JoinAlias(typeof(Livestock)));
dom.Columns.Add(DQSelectColumn.Field("ID"));
dom.Columns.Add(DQSelectColumn.Field("Name"));
dom.Where.Conditions.Add(DQCondition.EQ("Shortcut", code.ToString()));
dom.Where.Conditions.Add(DQCondition.EQ("Stopped", false));
return dom.EExecuteScalar<long, string>(Session);
}
} }
class tempWeightTable class tempWeightTable
@ -192,9 +432,6 @@ namespace BWP.B3SheepButcherManage.BL
[LogicName("重量")] [LogicName("重量")]
public decimal? Weight { get; set; } public decimal? Weight { get; set; }
[LogicName("备注")]
public string Remark { get; set; }
[LogicName("扣重")] [LogicName("扣重")]
public decimal? SubWeight { get; set; } public decimal? SubWeight { get; set; }
@ -203,5 +440,7 @@ namespace BWP.B3SheepButcherManage.BL
[LogicName("阶段号")] [LogicName("阶段号")]
public string PhaseCode { get; set; } public string PhaseCode { get; set; }
public int? Level_Code { get; set; }
} }
} }

+ 0
- 133
B3SheepButcherManage/BL/Bill/ButcherBL/ButcherBL2.cs View File

@ -1,133 +0,0 @@
using BWP.B3Frameworks;
using BWP.B3Frameworks.BO.NamedValueTemplate;
using BWP.B3SheepButcherManage.BO;
using Forks.EnterpriseServices.DomainObjects2;
using Forks.EnterpriseServices.DomainObjects2.DQuery;
using Forks.EnterpriseServices.SqlDoms;
using Forks.Utils.Data;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace BWP.B3SheepButcherManage.BL
{
partial class ButcherBL
{
public string CreateDetailFromWeightClient(Butcher dmo)
{
string connectionString = GetConnectionStr(dmo.AccountingUnit_ID ?? 0);
if (string.IsNullOrEmpty(connectionString))
{
throw new ApplicationException("未设置 屠宰单 数据库连接字符串!");
}
var orderData = TempContainer.GetDate(dmo.Date);
if (!orderData.Any())
throw new Exception("没有排宰数据");
dmo.Details.Clear();
return GetDataByOrder(orderData, connectionString, dmo);
}
string GetDataByOrder(List<TempContainer> orderData, string connectionString, Butcher dmo)
{
var msg = new StringBuilder();
var sql = "select [Index],[Livestock_ID],[Livestock_Name],[Weight],[Time] from [dbo].[B3ClientService_GradeAndWeight_Detail] where [Order]= {0} and [Date] ='" + dmo.Date + "' Order by [Index]";
using (var sqlUtil = new SqlUtil(connectionString))
{
foreach (var item in orderData)
{
var idx = 0;
var s = string.Format(sql, item.Order);
using (var reader = sqlUtil.ExecuteReader(s))
{
while (reader.Read())
{
var detail = new Butcher_Detail();
idx++;
if (!(reader["Index"] is DBNull))
{
detail.Sequence = Convert.ToInt32(reader["Index"]); // 顺序号
}
detail.PrePhase = item.Order;
detail.WeightBill_ID = item.WeightBill_ID;
detail.LiveVarieties_ID = item.LiveVarieties_ID;
detail.LiveVarieties_Name = item.LiveVarieties_Name;
detail.PhaseCode = string.Format("{0}-{1}", detail.PrePhase, idx);
if (!(reader["Livestock_ID"] is DBNull))
{
detail.Livestock_ID = Convert.ToInt64(reader["Livestock_ID"]); // 级别
}
if (!(reader["Livestock_Name"] is DBNull))
{
detail.Livestock_Name = reader["Livestock_Name"].ToString(); // 级别
}
if (!(reader["Weight"] is DBNull))
{
detail.Weight = Convert.ToDecimal(reader["Weight"]); // 重量
}
if (!(reader["Time"] is DBNull))
{
detail.Time = Convert.ToDateTime(reader["Time"]); // 时间
}
dmo.Details.Add(detail);
}
if (item.Number != idx)
msg.Append(string.Format("顺序号{0}排宰{1}头 读入{2}头", item.Order, item.Number, idx));
}
}
}
return msg.ToString();
}
class TempContainer
{
public int Order { get; set; }
public int Number { get; set; }
public long WeightBill_ID { get; set; }
public long? LiveVarieties_ID { get; set; }
public string LiveVarieties_Name { get; set; }
public static List<TempContainer> GetDate(DateTime date)
{
var order = new JoinAlias(typeof(ButcherOrder));
var orderDetail = new JoinAlias(typeof(ButcherOrder_Detail));
var weightDetail = new JoinAlias(typeof(WeightBill_Record));
var query = new DQueryDom(order);
query.From.AddJoin(JoinType.Left, new DQDmoSource(orderDetail), DQCondition.EQ(order, "ID", orderDetail, "ButcherOrder_ID"));
query.From.AddJoin(JoinType.Left, new DQDmoSource(weightDetail), DQCondition.EQ(orderDetail, "WeightBill_ID", weightDetail, "WeightBill_ID"));
query.Columns.Add(DQSelectColumn.Field("Sequence", orderDetail));
query.Columns.Add(DQSelectColumn.Field("Number", orderDetail));
query.Columns.Add(DQSelectColumn.Field("WeightBill_ID", orderDetail));
query.Columns.Add(DQSelectColumn.Field("LiveVarieties_ID", weightDetail));
query.Columns.Add(DQSelectColumn.Field("LiveVarieties_Name", weightDetail));
query.Where.Conditions.Add(DQCondition.And(DQCondition.EQ(order, "Date", date), DQCondition.InEQ("BillState", .), DQCondition.EQ("Domain_ID", DomainContext.Current.ID)));
query.OrderBy.Expressions.Add(DQOrderByExpression.Create(orderDetail, "Sequence"));
var list = new List<TempContainer>();
using (var session = Dmo.NewSession())
{
using (var reader = session.ExecuteReader(query))
{
while (reader.Read())
{
var entity = new TempContainer();
entity.Order = (int)reader[0];
entity.Number = (int?)reader[1] ?? 0;
entity.WeightBill_ID = (long)reader[2];
entity.LiveVarieties_ID = (long?)reader[3];
entity.LiveVarieties_Name = (string)reader[4];
list.Add(entity);
}
}
}
return list;
}
}
}
}

+ 0
- 30
B3SheepButcherManage/BL/Bill/ButcherOrderBL/ButcherOrderBL.cs View File

@ -1,30 +0,0 @@
using BWP.B3Frameworks.BL;
using BWP.B3SheepButcherManage.BO;
using Forks.EnterpriseServices;
using Forks.EnterpriseServices.BusinessInterfaces;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace BWP.B3SheepButcherManage.BL
{
[BusinessInterface(typeof(ButcherOrderBL))]
[LogicName("羊排宰单")]
public interface IButcherOrderBL : IDepartmentWorkFlowBillBL<ButcherOrder>
{ }
public class ButcherOrderBL : DepartmentWorkFlowBillBL<ButcherOrder>, IButcherOrderBL
{
protected override void beforeSave(ButcherOrder dmo)
{
var idx = 1;
foreach (var detail in dmo.Details)
{
detail.Sequence = idx;
idx++;
}
base.beforeSave(dmo);
}
}
}

+ 60
- 1
B3SheepButcherManage/BL/Bill/WeightBillBL/WeightBillBL.cs View File

@ -15,18 +15,23 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using TSingSoft.WebPluginFramework; using TSingSoft.WebPluginFramework;
using BWP.B3Frameworks.Utils;
namespace BWP.B3SheepButcherManage.BL namespace BWP.B3SheepButcherManage.BL
{ {
[BusinessInterface(typeof(WeightBillBL))] [BusinessInterface(typeof(WeightBillBL))]
[LogicName("羊过磅单")] [LogicName("羊过磅单")]
public interface IWeightBillBL : IDepartmentWorkFlowBillBL<WeightBill> public interface IWeightBillBL : IDepartmentWorkFlowBillBL<WeightBill>
{ }
{
void UpdateDetailOtherNumber(long p);
}
public class WeightBillBL : DepartmentWorkFlowBillBL<WeightBill>, IWeightBillBL public class WeightBillBL : DepartmentWorkFlowBillBL<WeightBill>, IWeightBillBL
{ {
protected override void beforeSave(WeightBill dmo) protected override void beforeSave(WeightBill dmo)
{ {
foreach (var detail in dmo.WeighRecords)
detail.RemainNumber = detail.Number;
if (dmo.WeighRecords.Count > 0) if (dmo.WeighRecords.Count > 0)
{ {
dmo.BuyWeigh1 = dmo.WeighRecords.Sum(x => (x.Weight ?? 0).Value); dmo.BuyWeigh1 = dmo.WeighRecords.Sum(x => (x.Weight ?? 0).Value);
@ -117,6 +122,9 @@ namespace BWP.B3SheepButcherManage.BL
protected override void doUnCheck(WeightBill dmo) protected override void doUnCheck(WeightBill dmo)
{ {
if (dmo.WeighRecords.Any(x => x.PlanNumber > 0 || x.ButcherNumber > 0))
throw new ApplicationException("过磅单已经排宰");
var stayPayBL = BIFactory.Create<IStatPayBL>(Session); var stayPayBL = BIFactory.Create<IStatPayBL>(Session);
var queryDom = new DmoQuery(typeof(StatPay)); var queryDom = new DmoQuery(typeof(StatPay));
queryDom.Where.Conditions.Add(DQCondition.EQ("WeightBill_ID", dmo.ID)); queryDom.Where.Conditions.Add(DQCondition.EQ("WeightBill_ID", dmo.ID));
@ -131,5 +139,56 @@ namespace BWP.B3SheepButcherManage.BL
} }
base.doUnCheck(dmo); base.doUnCheck(dmo);
} }
/// <summary>
/// 更新屠宰单明细的已计划数量,已屠宰数量,剩余数量
/// </summary>
public void UpdateDetailOtherNumber(long weighDetailID)
{
if (weighDetailID == 0)
{
return;
}
var butcher = new JoinAlias(typeof(Butcher));
var detail = new JoinAlias(typeof(Butcher_Detail));
var subQuery = new DQueryDom(detail);
subQuery.From.AddJoin(JoinType.Left, new DQDmoSource(butcher), DQCondition.EQ(detail, "Butcher_ID", butcher, "ID"));
subQuery.Where.Conditions.Add(DQCondition.EQ(detail, "Weigh_Detail_ID", weighDetailID));
subQuery.Where.Conditions.Add(DQCondition.InEQ(butcher, "BillState", .));
subQuery.Columns.Add(DQSelectColumn.Count());
subQuery.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(
DQExpression.LogicCase(DQCondition.IsNotNull(DQExpression.Field("Weight")), DQExpression.ConstValue(1), DQExpression.ConstValue(0))), "HasWeight"));
var tuple = subQuery.EExecuteScalar<long?, int?>(Session);
var planNumber = tuple.Item1 ?? 0;
var butcherNumber = tuple.Item2 ?? 0;
//var hurryDetail = new JoinAlias(typeof(HurryButcher_Detail));
//var hurry = new JoinAlias(typeof(HurryButcher));
//var hurryDom = new DQueryDom(hurryDetail);
//hurryDom.From.AddJoin(JoinType.Left, new DQDmoSource(hurry), DQCondition.EQ(hurryDetail, "HurryButcher_ID", hurry, "ID"));
//hurryDom.Where.Conditions.Add(DQCondition.EQ("Weigh_Detail_ID", weighDetailID));
//hurryDom.Where.Conditions.Add(DQCondition.Or(
// DQCondition.EQ(hurry, "BillState", 单据状态.已审核),
// DQCondition.EQ(hurry, "BillState", 单据状态.已完毕)));
//hurryDom.Columns.Add(DQSelectColumn.Sum("Number"));
//var hurryNumber = (int?)Session.ExecuteScalar(hurryDom);
//butcherNumber = (butcherNumber) + (hurryNumber ?? 0);
//planNumber = (planNumber) + (hurryNumber ?? 0);
var updatedom = new DQUpdateDom(typeof(WeightBill_Record));
updatedom.Where.Conditions.Add(DQCondition.EQ("ID", weighDetailID));
long weightid = InnerBLUtil.GetDmoPropertyByID<long>(Session, typeof(WeightBill_Record), "WeightBill_ID", weighDetailID);
updatedom.Columns.Add(new DQUpdateColumn("PlanNumber", planNumber));//已计划头数
updatedom.Columns.Add(new DQUpdateColumn("ButcherNumber", butcherNumber)); //已屠宰
updatedom.Columns.Add(new DQUpdateColumn("RemainNumber", DQExpression.Subtract(DQExpression.Field("Number"), DQExpression.Value(planNumber > butcherNumber ? planNumber : butcherNumber))));
//剩余头数
Session.ExecuteNonQuery(updatedom);
}
} }
} }

+ 1
- 1
B3SheepButcherManage/BO/BaseInfo/Livestock.cs View File

@ -20,6 +20,6 @@ namespace BWP.B3SheepButcherManage.BO
[DFCPrompt("畜类属性", Property = "GoodsProperty_ID")] [DFCPrompt("畜类属性", Property = "GoodsProperty_ID")]
[DFCPrompt("畜类属性", Property = "GoodsProperty_Name")] [DFCPrompt("畜类属性", Property = "GoodsProperty_Name")]
public class Livestock : B3ProduceUnitedInfos.BO.GoodsExt public class Livestock : B3ProduceUnitedInfos.BO.GoodsExt
{
{
} }
} }

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

@ -97,6 +97,9 @@ namespace BWP.B3SheepButcherManage.BO
[ReferenceTo(typeof(WeightBill), "Supplier_Name")] [ReferenceTo(typeof(WeightBill), "Supplier_Name")]
[Join("WeightBill_ID", "ID")] [Join("WeightBill_ID", "ID")]
public string WeightBill_Supplier_Name { get; set; } public string WeightBill_Supplier_Name { get; set; }
[LogicName("过磅单明细ID")]
public long? Weigh_Detail_ID { get; set; }
} }
[Serializable] [Serializable]


+ 0
- 35
B3SheepButcherManage/BO/Bill/ButcherOrder/ButcherOrder.cs View File

@ -1,35 +0,0 @@
using BWP.B3Frameworks;
using BWP.B3Frameworks.Attributes;
using BWP.B3Frameworks.BO;
using Forks.EnterpriseServices;
using Forks.EnterpriseServices.DataForm;
using Forks.EnterpriseServices.DomainObjects2;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using TSingSoft.WebControls2;
namespace BWP.B3SheepButcherManage.BO
{
[DFClass, Serializable]
[LogicName("羊排宰单")]
[DmoTypeID(B3FrameworksConsts.DmoTypeIDBases.B3SheepButcherManage, B3SheepButcherManageConsts.DmoTypeIDOffsets.ButcherOrder)]
[EditUrl("~/B3SheepButcherManage/Bills/ButcherOrder_/ButcherOrderEdit.aspx")]
public class ButcherOrder : DepartmentWorkFlowBill
{
private DateTime dt = DateTime.Today;
[LogicName("宰杀日期")]
[DFExtProperty("WebControlType", DFEditControl.DateInput)]
public DateTime Date { get { return dt; } set { dt = value; } }
private ButcherOrder_DetailCollection mDetail = new ButcherOrder_DetailCollection();
[OneToMany(typeof(ButcherOrder_Detail), "Sequence", false)]
[Join("ID", "ButcherOrder_ID")]
public ButcherOrder_DetailCollection Details
{
get { return mDetail; }
set { mDetail = value; }
}
}
}

+ 0
- 44
B3SheepButcherManage/BO/Bill/ButcherOrder/ButcherOrder_Detail.cs View File

@ -1,44 +0,0 @@
using BWP.B3Frameworks.BO;
using Forks.EnterpriseServices;
using Forks.EnterpriseServices.DataDictionary;
using Forks.EnterpriseServices.DataForm;
using Forks.EnterpriseServices.DomainObjects2;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace BWP.B3SheepButcherManage.BO
{
[DFClass, Serializable]
[LogicName("羊排宰单_明细")]
public class ButcherOrder_Detail : Base
{
[DbColumn(Index = IndexType.Normal, AllowNull = false)]
public long ButcherOrder_ID { get; set; }
[LogicName("顺序号")]
[DFNotEmpty]
public int Sequence { get; set; }
[LogicName("过磅单号")]
public long? WeightBill_ID { get; set; }
[Join("WeightBill_ID", "ID")]
[LogicName("收购头数")]
[ReferenceTo(typeof(WeightBill), "BuyNum")]
public int? BuyNum { get; set; }
[LogicName("排宰头数")]
public int? Number { get; set; }
[Join("WeightBill_ID", "ID")]
[LogicName("供应商")]
[ReferenceTo(typeof(WeightBill), "Supplier_Name")]
public string Supplier_Name { get; set; }
}
[Serializable]
public class ButcherOrder_DetailCollection : DmoCollection<ButcherOrder_Detail>
{ }
}

+ 9
- 0
B3SheepButcherManage/BO/Bill/WeightBill/WeightBill_Record.cs View File

@ -27,6 +27,15 @@ namespace BWP.B3SheepButcherManage.BO
[Join("LiveVarieties_ID", "ID")] [Join("LiveVarieties_ID", "ID")]
public string LiveVarieties_Name { get; set; } public string LiveVarieties_Name { get; set; }
[LogicName("剩余头数")]
public int? RemainNumber { get; set; }
[LogicName("已计划头数")]
public int? PlanNumber { get; set; }
[LogicName("已屠宰头数")]
public int? ButcherNumber { get; set; }
[LogicName("数量")] [LogicName("数量")]
public int? Number { get; set; } public int? Number { get; set; }


+ 1
- 16
WebFolder/config/Plugins/B3SheepButcherManage.Plugin View File

@ -63,20 +63,6 @@
<Function index="13" name="数据分析"/> <Function index="13" name="数据分析"/>
<Function index="14" name="异常分析"/> <Function index="14" name="异常分析"/>
</FunctionGroup> </FunctionGroup>
<FunctionGroup name="羊排宰单" roleSchemas="employee" features="B3SheepButcherManage.0002">
<Function index="0" name="访问" />
<Function index="1" name="新建" />
<Function index="2" name="编辑" />
<Function index="3" name="删除" />
<Function index="4" name="审核" />
<Function index="5" name="撤销" />
<Function index="6" name="锁定" />
<Function index="7" name="解锁" />
<Function index="8" name="管理" />
<Function index="9" name="作废" />
<Function index="10" name="完毕"/>
<Function index="11" name="撤销完毕"/>
</FunctionGroup>
<FunctionGroup name="羊屠宰单" roleSchemas="employee" features="B3SheepButcherManage.0003"> <FunctionGroup name="羊屠宰单" roleSchemas="employee" features="B3SheepButcherManage.0003">
<Function index="0" name="访问" /> <Function index="0" name="访问" />
<Function index="1" name="新建" /> <Function index="1" name="新建" />
@ -123,14 +109,13 @@
<Menu id="0001" name="/B3羊屠宰场管理/基础档案/级别" roles="B3SheepButcherManage.级别.访问" url="B3SheepButcherManage/BaseInfos/Livestock_/LivestockList.aspx"/> <Menu id="0001" name="/B3羊屠宰场管理/基础档案/级别" roles="B3SheepButcherManage.级别.访问" url="B3SheepButcherManage/BaseInfos/Livestock_/LivestockList.aspx"/>
<Menu id="0002" name="/B3羊屠宰场管理/业务单据/羊定价单" roles="B3SheepButcherManage.羊定价单.访问" url="B3SheepButcherManage/Bills/FixedPrice_/FixedPriceList.aspx"/> <Menu id="0002" name="/B3羊屠宰场管理/业务单据/羊定价单" roles="B3SheepButcherManage.羊定价单.访问" url="B3SheepButcherManage/Bills/FixedPrice_/FixedPriceList.aspx"/>
<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.0003" name="/B3羊屠宰场管理/业务单据/羊排宰" roles="B3SheepButcherManage.羊屠宰单.访问" url="B3SheepButcherManage/Bills/Butcher_/CreateButcher.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"/> <Menu id="0006" features="B3SheepButcherManage.0004" name="/B3羊屠宰场管理/业务单据/羊结算单" roles="B3SheepButcherManage.羊结算单.访问" url="B3SheepButcherManage/Bills/StatPay_/StatPayList.aspx"/>
</Menus> </Menus>
<Features> <Features>
<Feature id="0001" name="羊过磅单"/> <Feature id="0001" name="羊过磅单"/>
<Feature id="0002" name="羊排宰单"/>
<Feature id="0003" name="羊屠宰单"/> <Feature id="0003" name="羊屠宰单"/>
<Feature id="0004" name="羊结算单"/> <Feature id="0004" name="羊结算单"/>
</Features> </Features>


+ 0
- 28
WebFolder/config/billreports/B3SheepButcherManage/ButcherOrderPrint.xml View File

@ -1,28 +0,0 @@
<?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="Date" lblWidth="4"/>
<Field name="Employee_Name" lblWidth="4"/>
<Field name="Remark" lblWidth="4"/>
</DFInfoBand>
<HtmlBand>
<![CDATA[<h2>排宰明细</h2>]]>
</HtmlBand>
<DFListBand collection="$Details" itemType="$DetailType" enablePaging="true" >
<Field name="Sequence"/>
<Field name="WeightBill_ID"/>
<Field name="Supplier_Name" />
<Field name="BuyNum" />
<Field name="Number"/>
</DFListBand>
</Bands>
</BillReport>
</Report>
</BillReports>

Loading…
Cancel
Save