Browse Source

需求单No.137215

master
xueyingcheng 8 years ago
parent
commit
151cb0bfe5
8 changed files with 869 additions and 7 deletions
  1. +3
    -3
      B3_YunKen.sln
  2. +9
    -1
      BWP.B3_YunKen.Web/BWP.B3_YunKen.Web.csproj
  3. +386
    -0
      BWP.B3_YunKen.Web/Pages/B3YunKen/Bill/GoodsPackageDetailSet.cs
  4. +276
    -0
      BWP.B3_YunKen.Web/Pages/B3YunKen/Bill/GoodsPackageSet.cs
  5. +111
    -0
      BWP.B3_YunKen/BL/Bill/Goods_PackageBL.cs
  6. +76
    -0
      BWP.B3_YunKen/BO/Bill/Goods_Package.cs
  7. +2
    -2
      BWP.B3_YunKen/BWP.B3_YunKen.csproj
  8. +6
    -1
      WebFolder/Config/Plugins/B3_YunKen.Plugin

+ 3
- 3
B3_YunKen.sln View File

@ -1,6 +1,6 @@

Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2012
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BWP.B3_YunKen", "BWP.B3_YunKen\BWP.B3_YunKen.csproj", "{42F13AF3-93F9-4BAF-9CC5-8F62802AD378}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BWP.B3_YunKen.Web", "BWP.B3_YunKen.Web\BWP.B3_YunKen.Web.csproj", "{E1923EA0-A58E-407B-B90C-837DAB197495}"
@ -8,7 +8,7 @@ EndProject
Project("{E24C65DC-7377-472B-9ABA-BC803B73C61A}") = "WebFolder", "WebFolder\", "{E6C7C6E1-BDF9-4687-913A-28D0365EBA18}"
ProjectSection(WebsiteProperties) = preProject
TargetFrameworkMoniker = ".NETFramework,Version%3Dv4.0"
ProjectReferences = "{e1923ea0-a58e-407b-b90c-837dab197495}|BWP.B3_YunKen.Web.dll;"
ProjectReferences = "{e1923ea0-a58e-407b-b90c-837dab197495}|B3_YunKen.Web.dll;{42F13AF3-93F9-4BAF-9CC5-8F62802AD378}|B3_YunKen.dll;"
Debug.AspNetCompiler.VirtualPath = "/WebFolder"
Debug.AspNetCompiler.PhysicalPath = "WebFolder\"
Debug.AspNetCompiler.TargetPath = "PrecompiledWeb\WebFolder\"


+ 9
- 1
BWP.B3_YunKen.Web/BWP.B3_YunKen.Web.csproj View File

@ -84,6 +84,12 @@
<Compile Include="Pages\B3YunKen\B3YunKenSaleOutStoreToCustomerAccept.cs">
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Pages\B3YunKen\Bill\GoodsPackageDetailSet.cs">
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Pages\B3YunKen\Bill\GoodsPackageSet.cs">
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Pages\B3YunKen\Overlays\OrderEdit_Ext.cs">
<SubType>ASPXCodeBehind</SubType>
</Compile>
@ -93,7 +99,9 @@
<Compile Include="Pages\B3YunKen\Overlays\ProductNoticeEdit_Ext.cs">
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Pages\B3YunKen\Overlays\ProductNoticeReport_Ext.cs" />
<Compile Include="Pages\B3YunKen\Overlays\ProductNoticeReport_Ext.cs">
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Pages\B3YunKen\Overlays\SaleForecastEdit_Ext.cs">
<SubType>ASPXCodeBehind</SubType>
</Compile>


+ 386
- 0
BWP.B3_YunKen.Web/Pages/B3YunKen/Bill/GoodsPackageDetailSet.cs View File

@ -0,0 +1,386 @@
using BWP.B3_YunKen.BO;
using BWP.B3Frameworks.BO;
using BWP.B3Sale.BL;
using BWP.B3Sale.BO;
using BWP.B3UnitedInfos.BO;
using BWP.Web.Utils;
using Forks.EnterpriseServices;
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.HtmlControls;
using TSingSoft.WebControls2;
using TSingSoft.WebPluginFramework;
using Forks.Utils.Collections;
using BWP.B3_YunKen.BL;
using BWP.B3Frameworks.Utils;
using BWP.B3Sale.Utils;
namespace BWP.Web.Pages.B3YunKen.Bill
{
public class GoodsPackageDetailSet : AppBasePage
{
List<PackageDetail> Details
{
get
{
if (ViewState["Details"] == null)
ViewState["Details"] = new List<PackageDetail>();
return (List<PackageDetail>)ViewState["Details"];
}
set { ViewState["Details"] = value; }
}
private List<Tuple<long, string>> WrappageKindList
{
get
{
if (ViewState["WrappageKindList"] == null)
ViewState["WrappageKindList"] = new List<Tuple<long, string>>();
return (List<Tuple<long, string>>)ViewState["WrappageKindList"];
}
set { ViewState["WrappageKindList"] = value; }
}
long GoodsID
{
get
{
if (string.IsNullOrEmpty(Request.QueryString["goodsID"]))
return 0;
return long.Parse(Request.QueryString["goodsID"]);
}
}
long? AccID
{
get
{
if (string.IsNullOrEmpty(Request.QueryString["accID"]))
return null;
return long.Parse(Request.QueryString["accID"]);
}
}
private DFEditGrid _grid;
protected override void InitForm(HtmlForm form)
{
var vPanel = AddChild(form, new VLayoutPanel());
var hPanel = vPanel.Add(new HLayoutPanel());
hPanel.Add(new LiteralControl("<h2>包装物明细</h2>"));
var editor = new DFCollectionEditor<PackageDetail>(() => Details)
{
AllowDeletionFunc = () => false,
CanDeleteFunc = detail => false,
CanSelectFunc = detail => true,
IsEditableFunc = (field, detail) =>
{
switch (field.Name)
{
case "GoodsName":
case "AccountingUnitName":
return false;
}
return true;
},
};
_grid = vPanel.Add(new DFEditGrid(editor));
_grid.Columns.Add(new DFEditGridColumn("AccountingUnitName"));
_grid.Columns.Add(new DFEditGridColumn("GoodsName"));
int i = 1;
foreach (var tuple in WrappageKindList)
{
var col = _grid.Columns.EAdd(new DFEditGridColumn<DFChoiceBox>("ID" + i));
var tuple1 = tuple;
var i1 = i;
col.InitEditControl += (sender, e) =>
{
e.Control.Width = 130;
e.Control.EnableInputArgument = true;
e.Control.EnableTopItem = true;
e.Control.DataKind = B3SaleDataSources.;
e.Control.DFDisplayField = "Name" + i1;
e.Control.OnBeforeDrop = "this.argument2 = dfContainer.getValue('AccountingUnitID') +'|'+" + tuple1.Item1 + ";";
};
col.HeaderText = tuple.Item2;
i++;
}
var colSmall = _grid.Columns.EAdd(new DFEditGridColumn<DFTextBox>("SmallPackNum"));
colSmall.HeaderText = "内包装物数量";
_grid.ValueColumns.Add("AccountingUnitID");
var hPanel2 = vPanel.Add(new HLayoutPanel());
hPanel2.Add(new TSButton("保存", delegate
{
_grid.GetFromUI();
using (var context = new TransactionContext())
{
var bl = BIFactory.Create<IGoods_PackageBL>(context);
foreach (PackageDetail detail in Details)
{
var index = 1;
foreach (var tuple in WrappageKindList)
{
bl.UpdateGoodsPackage(GoodsID, (long?)GetDmoFieldValue(detail, "ID" + index), tuple.Item1, detail.AccountingUnitID, (int)GetDmoFieldValue(detail, "SmallPackNum"));
index++;
}
}
context.Commit();
}
AspUtil.Alert(this, "保存成功");
}));
hPanel2.Add(new TSButton("返回", delegate
{
DialogUtil.SetCachedObj(this, "ok");
}));
}
static void SetDmoField(object destObj, string field, object value)
{
var dDmoInfo = DmoInfo.Get(destObj);
IDmoFieldInfo dfield;
if (!dDmoInfo.Fields.TryGetValue(field, out dfield))
{
return;
}
dfield.SetValue(destObj, value);
}
static object GetDmoFieldValue(object destObj, string field)
{
var dDmoInfo = DmoInfo.Get(destObj);
IDmoFieldInfo dfield;
if (!dDmoInfo.Fields.TryGetValue(field, out dfield))
{
throw new Exception(field + "");
}
return dfield.GetValue(destObj);
}
private void GridDataBind()
{
var acc = new JoinAlias("acc", typeof(AccountingUnit));
var package = new JoinAlias(typeof(TempClass));
var dom = new DQueryDom(acc);
dom.RegisterQueryTable(typeof(TempClass), new[] { "PackageID", "PackageName", "WrappageKindTreeDeep1ID", "AccountingUnitID" }, GetTempDom());
dom.From.AddJoin(JoinType.Left, new DQDmoSource(package), DQCondition.EQ(package, "AccountingUnitID", acc, "ID"));
dom.Columns.Add(DQSelectColumn.Field("PackageID", package));
dom.Columns.Add(DQSelectColumn.Field("PackageName", package));
dom.Columns.Add(DQSelectColumn.Field("WrappageKindTreeDeep1ID", package));
dom.Columns.Add(DQSelectColumn.Field("ID", acc));
dom.Columns.Add(DQSelectColumn.Field("Name", acc));
//dom.Columns.Add(DQSelectColumn.Field("SmallPackNum", package));
if (AccID != null)
{
dom.Where.Conditions.Add(DQCondition.EQ("ID", AccID));
}
else
{
//AuthorizeUtil.AddOrganizationAuthorising(dom, "Organization_ID");
OrganizationUtil.AddOrganizationLimit(dom, typeof(AccountingUnit), acc);
}
Details.Clear();
using (var context = new TransactionContext())
{
var idList = new List<PackageDetail>();
using (var reader = context.Session.ExecuteReader(dom))
{
while (reader.Read())
{
var d = new PackageDetail();
d.PackageID = (long?)reader[0];
d.PackageName = (string)reader[1];
d.AccountingUnitID = (long)reader[3];
d.AccountingUnitName = (string)reader[4];
d.WrappageKindTreeDeep1ID = (long?)reader[2];
idList.Add(d);
}
}
//var goodsName = InnerBLUtil.GetDmoProperty<Goods, string>(GoodsID, "Name", context.Session);
var goodsName = InnerBLUtil.GetDmoPropertyByID<Goods, string>(context.Session, "Name", GoodsID);
var exsitList = idList.Where(x => x.PackageID != null).ToList();
var notExsitList = idList.Where(x => x.PackageID == null).ToList();
foreach (var details in exsitList.GroupBy(x => x.AccountingUnitID))
{
var dmo = new PackageDetail();
dmo.GoodsID = GoodsID;
dmo.GoodsName = goodsName;
dmo.AccountingUnitID = details.Key;
dmo.AccountingUnitName = details.First().AccountingUnitName;
int index = 1;
foreach (var tuple in WrappageKindList)
{
var first = details.FirstOrDefault(x => x.WrappageKindTreeDeep1ID == tuple.Item1);
if (first != null)
{
SetDmoField(dmo, "ID" + index, first.PackageID);
SetDmoField(dmo, "Name" + index, first.PackageName);
// var packClassId = BLUtil.GetDmoProperty<Package, long?>(first.PackageID ?? 0, "WrappageKind_ID", context);
var packClassId = GetTreeDeep1(first.PackageID ?? 0, context);
if (packClassId == 5)//5固定写死
{
var query = new DQueryDom(new JoinAlias(typeof(Goods_Package)));
query.Columns.Add(DQSelectColumn.Field("SmallPackNum"));
query.Where.Conditions.Add(DQCondition.EQ("Goods_ID", GoodsID));
query.Where.Conditions.Add(DQCondition.EQ("Package_ID", first.PackageID));
SetDmoField(dmo, "SmallPackNum", context.Session.ExecuteScalar(query));
}
}
index++;
}
Details.Add(dmo);
}
foreach (var packageDetail in notExsitList)
{
var dmo = new PackageDetail();
dmo.GoodsID = GoodsID;
dmo.GoodsName = goodsName;
dmo.AccountingUnitID = packageDetail.AccountingUnitID;
dmo.AccountingUnitName = packageDetail.AccountingUnitName;
Details.Add(dmo);
}
}
_grid.DataBind();
}
private int GetTreeDeep1(long value, TransactionContext context)
{
//select pack.WrappageKind_ID,cla.* from B3_YunKen_Package pack left join B3_YunKen_WrappageKind cla on pack.WrappageKind_ID=cla.ID where pack.ID=487
var pack = new JoinAlias(typeof(Wrappage));
var packClass = new JoinAlias(typeof(WrappageKind));
var dom = new DQueryDom(pack);
dom.From.AddJoin(JoinType.Left, new DQDmoSource(packClass), DQCondition.EQ(pack, "WrappageKind_ID", packClass, "ID"));
dom.Columns.Add(DQSelectColumn.Field("TreeDeep1ID", packClass));
dom.Where.Conditions.Add(DQCondition.EQ(pack, "ID", value));
return Convert.ToInt32(context.Session.ExecuteScalar(dom));
}
DQueryDom GetTempDom()
{
var acc = new JoinAlias("acc", typeof(AccountingUnit));
var goodsPackage = new JoinAlias(typeof(Goods_Package));
var package = new JoinAlias(typeof(Wrappage));
var dom = new DQueryDom(goodsPackage);
dom.From.AddJoin(JoinType.Left, new DQDmoSource(package), DQCondition.EQ(goodsPackage, "Package_ID", package, "ID"));
dom.From.AddJoin(JoinType.Left, new DQDmoSource(acc), DQCondition.EQ(package, "AccountingUnit_ID", acc, "ID"));
dom.Columns.Add(DQSelectColumn.Field("ID", package));
dom.Columns.Add(DQSelectColumn.Field("Name", package));
dom.Columns.Add(DQSelectColumn.Field("WrappageKind_TreeDeep1ID", package));
dom.Columns.Add(DQSelectColumn.Field("ID", acc));
if (AccID != null)
{
dom.Where.Conditions.Add(DQCondition.EQ(package, "AccountingUnit_ID", AccID));
}
else
{
//AuthorizeUtil.AddOrganizationAuthorising(dom, new KeyValuePair<string, string>("acc", "Organization_ID"));
OrganizationUtil.AddOrganizationLimit(dom, typeof(AccountingUnit), acc);
}
dom.Where.Conditions.Add(DQCondition.EQ(goodsPackage, "Goods_ID", GoodsID));
return dom;
}
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
if (!IsPostBack)
{
GridDataBind();
}
}
protected override void FrameworkInitialize()
{
var dom = new DQueryDom(new JoinAlias(typeof(WrappageKind)));
dom.Where.Conditions.Add(DQCondition.EQ("Depth", 1));
dom.Columns.Add(DQSelectColumn.Field("ID"));
dom.Columns.Add(DQSelectColumn.Field("Name"));
WrappageKindList = dom.EExecuteList<long, string>();
base.FrameworkInitialize();
}
class TempClass
{
public long? PackageID { get; set; }
public string PackageName { get; set; }
public long? WrappageKindTreeDeep1ID { get; set; }
public long AccountingUnitID { get; set; }
}
[DFClass, Serializable]
class PackageDetail
{
public long GoodsID { get; set; }
[LogicName("产品")]
public string GoodsName { get; set; }
public long AccountingUnitID { get; set; }
[LogicName("会计单位")]
public string AccountingUnitName { get; set; }
public long? WrappageKindTreeDeep1ID { get; set; }
public long? PackageID { get; set; }
public string PackageName { get; set; }
public long? ID1 { get; set; }
public long? ID2 { get; set; }
public long? ID3 { get; set; }
public long? ID4 { get; set; }
public long? ID5 { get; set; }
public long? ID6 { get; set; }
public long? ID7 { get; set; }
public long? ID8 { get; set; }
public string Name1 { get; set; }
public string Name2 { get; set; }
public string Name3 { get; set; }
public string Name4 { get; set; }
public string Name5 { get; set; }
public string Name6 { get; set; }
public string Name7 { get; set; }
public string Name8 { get; set; }
private int _smallPackNum = 1;
[LogicName("内包装物数量")]
public int SmallPackNum
{
get { return _smallPackNum; }
set { _smallPackNum = value; }
}
}
}
}

+ 276
- 0
BWP.B3_YunKen.Web/Pages/B3YunKen/Bill/GoodsPackageSet.cs View File

@ -0,0 +1,276 @@
using BWP.B3_YunKen.BO;
using BWP.B3Frameworks.BO;
using BWP.B3Frameworks.Utils;
using BWP.B3Sale.BO;
using BWP.B3UnitedInfos.BO;
using BWP.Web.Utils;
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.HtmlControls;
using System.Web.UI.WebControls;
using TSingSoft.WebControls2;
using TSingSoft.WebPluginFramework;
using TSingSoft.WebPluginFramework.Controls;
using TSingSoft.WebPluginFramework.Security;
using Forks.Utils.Collections;
namespace BWP.Web.Pages.B3YunKen.Bill
{
public class GoodsPackageSet : AppBasePage
{
readonly DFInfo _dfInfo = DFInfo.Get(typeof(Goods_Package));
private DFChoiceBox _accountingUnitDfc;
private DFChoiceBox _goodsDfc;
private DFBrowseGrid _grid;
protected override void InitForm(HtmlForm form)
{
CheckRole();
form.Controls.Add(new PageTitle("产品包装物设置"));
var vPanel = new VLayoutPanel();
AddChild(form, vPanel);
CreateQueryControl(vPanel);
CreateGrid(vPanel);
}
void CheckRole()
{
if (!BLContext.User.IsInRole("B3_YunKen.产品包装物设置.访问"))
throw new AppSecurityException("您没有权限访问此页面");
}
private void CreateQueryControl(VLayoutPanel vPanel)
{
var tablePanel = new TableLayoutPanel(6, 2);
vPanel.Add(tablePanel);
int row = 0;
tablePanel.Add(0, 1, row, row + 1, new SimpleLabel("会计单位", 4));
_accountingUnitDfc = tablePanel.Add(1, 2, row, ++row, QueryCreator.DFChoiceBox(_dfInfo.Fields["Package_AccountingUnit_ID"], "授权会计单位"), new TableLayoutOption(Unit.Pixel(180)));
row = 0;
tablePanel.Add(2, 3, row, row + 1, new SimpleLabel("产品", 4));
_goodsDfc = tablePanel.Add(3, 4, row, ++row, QueryCreator.DFChoiceBox(_dfInfo.Fields["Goods_ID"], "存货"), new TableLayoutOption(Unit.Pixel(180)));
}
private void CreateGrid(VLayoutPanel vPanel)
{
var hPanel = vPanel.Add(new HLayoutPanel(), new VLayoutOption(HorizontalAlign.Center));
hPanel.Add(new LiteralControl("<h2>产品明细</h2>"));
hPanel.Add(new TSButton("已配产品", delegate { GridDataBind(true); }));
hPanel.Add(new LiteralControl("&nbsp;&nbsp;"));
hPanel.Add(new TSButton("未配产品", delegate { GridDataBind(); }));
_grid = vPanel.Add(new DFBrowseGrid(new DFDataTableEditor()), new VLayoutOption(HorizontalAlign.Center));
_grid.Width = Unit.Percentage(50);
_grid.Add(new DFBrowseGridAutoColumn("Goods_ID"));
_grid.DFGridSetEnabled = false;
_grid.OnDetailDataBound = (row, obj, index) =>
{
var dataRow = obj as DFDataRow;
if (dataRow == null)
{
return;
}
var goodsID = dataRow["Goods_ID"];
var url = AspUtil.UpdateUrlParam("GoodsPackageDetailSet.aspx", "goodsID", goodsID.ToString());
if (!string.IsNullOrEmpty(_accountingUnitDfc.Value))
{
url = AspUtil.UpdateUrlParam(url, "accID", _accountingUnitDfc.Value);
}
row.Cells[0].InnerHtml = "<a target='_blank' href='' onclick=\"var returnValue = " + string.Format("ShowDialog('{0}'); ", url) + @"return false;"">" + row.Cells[0].InnerHtml + "</a>";
};
}
protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);
DialogUtil.RegisterDialogReturnInput(Page);
}
private List<Tuple<long, string>> WrappageKindList
{
get
{
if (ViewState["WrappageKindList"] == null)
ViewState["WrappageKindList"] = new List<Tuple<long, string>>();
return (List<Tuple<long, string>>)ViewState["WrappageKindList"];
}
set { ViewState["WrappageKindList"] = value; }
}
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
if (!IsPostBack)
{
var dom = new DQueryDom(new JoinAlias(typeof(WrappageKind)));
dom.Where.Conditions.Add(DQCondition.EQ("Depth", 1));
dom.Columns.Add(DQSelectColumn.Field("ID"));
dom.Columns.Add(DQSelectColumn.Field("Name"));
WrappageKindList = dom.EExecuteList<long, string>();
GridDataBind();
}
}
private void GridDataBind(bool configured = false)
{
_grid.Query = GetDQueryDom(configured);
_grid.CurrentPageIndex = 0;
_grid.DataBind();
}
public void DoGridDataBind()
{
_grid.DataBind();
}
private DQueryDom GetDQueryDom(bool configured = false)
{
var goods = new JoinAlias(typeof(Goods));
var temp = new JoinAlias(typeof(TempPackage));
var temp2 = new JoinAlias(typeof(TempPackage2));
var dom = new DQueryDom(goods);
dom.Columns.Add(DQSelectColumn.Create(DQExpression.Field(goods, "ID"), "Goods_ID"));
dom.Columns.Add(DQSelectColumn.Create(DQExpression.Field(goods, "Name"), "产品"));
if (configured)
{
var strings = new string[] { "Goods_ID", "AccountingUnit_Name", "Count" }.ToList();
for (var index = 0; index < WrappageKindList.Count; index++)
{
if (index + 1 > MaxCol)
break;
strings.Add("ID" + (index + 1));
}
strings.Add("SmallPackNum");
dom.RegisterQueryTable(typeof(TempPackage2), strings, GetTempDom2());
dom.From.AddJoin(JoinType.Right, new DQDmoSource(temp2), DQCondition.EQ(temp2, "Goods_ID", goods, "ID"));
dom.Columns.Add(DQSelectColumn.Create(DQExpression.Field(temp2, "Count"), "已配数量"));
dom.Columns.Add(DQSelectColumn.Create(DQExpression.Field(temp2, "AccountingUnit_Name"), "会计单位"));
int i = 1;
foreach (var tuple in WrappageKindList)
{
if (i > MaxCol)
break;
var package = new JoinAlias("p" + i, typeof(Wrappage));
dom.From.AddJoin(JoinType.Left, new DQDmoSource(package), DQCondition.EQ(package, "ID", temp2, "ID" + i));
dom.Columns.Add(
DQSelectColumn.Create(DQExpression.Field(package, "Name"), tuple.Item2));
i++;
}
dom.OrderBy.Expressions.Add(DQOrderByExpression.Create(goods, "Name"));
dom.OrderBy.Expressions.Add(DQOrderByExpression.Create(temp2, "AccountingUnit_Name"));
dom.Columns.Add(DQSelectColumn.Create(DQExpression.Field(temp2, "SmallPackNum"), "内包装物数量"));
}
else
{
dom.RegisterQueryTable(typeof(TempPackage), new[] { "Goods_ID" }, GetTempDom());
dom.From.AddJoin(JoinType.Left, new DQDmoSource(temp), DQCondition.EQ(temp, "Goods_ID", goods, "ID"));
dom.Where.Conditions.Add(DQCondition.IsNull(DQExpression.Field(temp, "Goods_ID")));
}
if (!string.IsNullOrEmpty(_goodsDfc.Value))
{
dom.Where.Conditions.Add(DQCondition.EQ("ID", _goodsDfc.Value));
}
dom.Where.Conditions.Add(DQCondition.IsNotNull(DQExpression.Field(goods, "ID")));
//不显示停用存货
dom.Where.Conditions.Add(DQCondition.InEQ(DQExpression.Field(goods, "Stopped"), DQExpression.Value(0)));
return dom;
}
private DQueryDom GetTempDom()
{
var gpackage = new JoinAlias(typeof(Goods_Package));
var dom = new DQueryDom(gpackage);
dom.Columns.Add(DQSelectColumn.Field("Goods_ID"));
if (!string.IsNullOrEmpty(_accountingUnitDfc.Value))
{
dom.Where.Conditions.Add(DQCondition.EQ("Package_AccountingUnit_ID", _accountingUnitDfc.Value));
}
//AuthorizeUtil.AddOrganizationAuthorising(dom, "Package_AccountingUnit_Organization_ID");
OrganizationUtil.AddOrganizationLimit(dom, typeof(Goods_Package), gpackage);
return dom;
}
private const int MaxCol = 10;
private DQueryDom GetTempDom2()
{
var WrappageKind = new JoinAlias(typeof(WrappageKind));
var gpackage = new JoinAlias(typeof(Goods_Package));
var package = new JoinAlias(typeof(Wrappage));
var acc = new JoinAlias("acc", typeof(AccountingUnit));
var dom = new DQueryDom(gpackage);
dom.From.AddJoin(JoinType.Left, new DQDmoSource(package), DQCondition.EQ(package, "ID", gpackage, "Package_ID"));
dom.From.AddJoin(JoinType.Left, new DQDmoSource(WrappageKind), DQCondition.EQ(package, "WrappageKind_ID", WrappageKind, "ID"));
dom.From.AddJoin(JoinType.Left, new DQDmoSource(acc), DQCondition.EQ(package, "AccountingUnit_ID", acc, "ID"));
dom.Columns.Add(DQSelectColumn.Field("Goods_ID"));
dom.Columns.Add(DQSelectColumn.Field("Name", acc));
dom.Columns.Add(DQSelectColumn.Create(DQExpression.Count(), "Count"));
dom.GroupBy.Expressions.Add(DQExpression.Field("Goods_ID"));
dom.GroupBy.Expressions.Add(DQExpression.Field(acc, "Name"));
int i = 1;
foreach (var tuple in WrappageKindList)
{
if (i > MaxCol)
break;
dom.Columns.Add(
DQSelectColumn.Create(
DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ(WrappageKind, "TreeDeep1ID", tuple.Item1), DQExpression.Field(package, "ID"))), tuple.Item2));
i++;
}
dom.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.InEQ(WrappageKind, "TreeDeep1ID", 5), DQExpression.Value(0), DQExpression.Field(gpackage, "SmallPackNum"))), "SmallPackNum"));
if (!string.IsNullOrEmpty(_accountingUnitDfc.Value))
{
dom.Where.Conditions.Add(DQCondition.EQ(acc, "ID", _accountingUnitDfc.Value));
}
//AuthorizeUtil.AddOrganizationAuthorising(dom, new KeyValuePair<string, string>("acc", "Organization_ID"));
OrganizationUtil.AddOrganizationLimit(dom, typeof(AccountingUnit), acc);
return dom;
}
class TempPackage
{
public long Goods_ID { get; set; }
}
class TempPackage2
{
public string SmallPackNum { get; set; }
public long Goods_ID { get; set; }
public string AccountingUnit_Name { get; set; }
public long Count { get; set; }
public long ID1 { get; set; }
public long ID2 { get; set; }
public long ID3 { get; set; }
public long ID4 { get; set; }
public long ID5 { get; set; }
public long ID6 { get; set; }
public long ID7 { get; set; }
public long ID8 { get; set; }
public long ID9 { get; set; }
public long ID10 { get; set; }
}
}
}

+ 111
- 0
BWP.B3_YunKen/BL/Bill/Goods_PackageBL.cs View File

@ -0,0 +1,111 @@
using BWP.B3_YunKen.BO;
using BWP.B3Frameworks.BL;
using BWP.B3Frameworks.Utils;
using BWP.B3Sale.BO;
using BWP.B3UnitedInfos.BO;
using Forks.EnterpriseServices;
using Forks.EnterpriseServices.BusinessInterfaces;
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 TSingSoft.WebPluginFramework;
namespace BWP.B3_YunKen.BL
{
[BusinessInterface(typeof(Goods_PackageBL))]
[LogicName("包装物")]
public interface IGoods_PackageBL : IBaseInfoBL<Goods_Package>
{
void UpdateGoodsPackage(long goodsID, long? packageID, long classID, long accID, int smallPackNum);
}
public class Goods_PackageBL : BaseInfoBL<Goods_Package>, IGoods_PackageBL
{
private int _cludeClassId = 5; //5 固定写死
public void UpdateGoodsPackage(long goodsID, long? packageID, long classID, long accID, int smallPackNum)
{
long? cid;
if (packageID != null)
{
//cid = BLUtil.GetDmoProperty<Wrappage, long?>(packageID.Value, "PackageClass_TreeDeep1ID", Session);
cid = InnerBLUtil.GetDmoPropertyByID<Wrappage, long?>(Session, "WrappageKind_TreeDeep1ID", packageID.Value);
}
else
{
cid = classID;
}
var query = new DmoQuery(typeof(Goods_Package));
query.Where.Conditions.Add(DQCondition.EQ("Goods_ID", goodsID));
query.Where.Conditions.Add(DQCondition.EQ("PackageClass_TreeDeep1ID", cid));
query.Where.Conditions.Add(DQCondition.EQ("Package_AccountingUnit_ID", accID));
var dmo = (Goods_Package)Session.ExecuteScalar(query);
if (packageID == null)
{
if (dmo != null)
Session.Delete(dmo);
}
else
{
//var price = BLUtil.GetDmoProperty<Wrappage, decimal?>(packageID.Value, "Price", Session);
var price = InnerBLUtil.GetDmoPropertyByID<Wrappage, decimal?>(Session, "Price", packageID.Value);
// var packClassId = BLUtil.GetDmoProperty<Package, long?>(packageID.Value, "PackageClass_ID", Session);
int packClassId = GetTreeDeep1(packageID.Value, Session);
if (dmo == null)
{
dmo = new Goods_Package { Goods_ID = goodsID, Package_ID = packageID, Price = price };
if (packClassId == _cludeClassId)
{
dmo.SmallPackNum = smallPackNum;
}
else
{
dmo.SmallPackNum = 1;
}
Session.Insert(dmo);
}
else if (dmo.Package_ID != packageID || (packClassId == _cludeClassId && dmo.SmallPackNum != smallPackNum))
{
dmo.Package_ID = packageID;
if (packClassId == _cludeClassId)
{
dmo.SmallPackNum = smallPackNum;
}
else
{
dmo.SmallPackNum = 1;
}
dmo.Date = BLContext.Today;
dmo.Price = price;
Session.Update(dmo);
}
}
}
private int GetTreeDeep1(long value, IDmoSession session)
{
//select pack.PackageClass_ID,cla.* from SaleYunKen_Package pack left join SaleYunKen_PackageClass cla on pack.PackageClass_ID=cla.ID where pack.ID=487
var pack = new JoinAlias(typeof(Wrappage));
var packClass = new JoinAlias(typeof(WrappageKind));
var dom = new DQueryDom(pack);
dom.From.AddJoin(JoinType.Left, new DQDmoSource(packClass), DQCondition.EQ(pack, "WrappageKind_ID", packClass, "ID"));
dom.Columns.Add(DQSelectColumn.Field("TreeDeep1ID", packClass));
dom.Where.Conditions.Add(DQCondition.EQ(pack, "ID", value));
return Convert.ToInt32(session.ExecuteScalar(dom));
}
}
}

+ 76
- 0
BWP.B3_YunKen/BO/Bill/Goods_Package.cs View File

@ -0,0 +1,76 @@
using BWP.B3Frameworks.BO;
using BWP.B3Sale.BO;
using BWP.B3UnitedInfos.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.WebPluginFramework;
namespace BWP.B3_YunKen.BO
{
public class Goods_Package : BaseInfo
{
[LogicName("产品ID")]
public long? Goods_ID { get; set; }
[LogicName("包装物")]
public long? Package_ID { get; set; }
[LogicName("价格")]
public decimal? Price { get; set; }
private int _smallPackNum = 1;
[LogicName("小包装物数量")]
[DbColumn(DefaultValue = 1)]
public int SmallPackNum
{
get { return _smallPackNum; }
set { _smallPackNum = value; }
}
private DateTime? _date = BLContext.Today;
[LogicName("启用日期")]
public DateTime? Date
{
get { return _date; }
set { _date = value; }
}
[Join("Goods_ID", "ID")]
[LogicName("产品")]
[ReferenceTo(typeof(Goods), "Name")]
public string Goods_Name { get; set; }
[DFPrompt("包装物")]
[Join("Package_ID", "ID")]
[ReferenceTo(typeof(Wrappage), "Name")]
public string Package_Name { get; set; }
[Join("Package_ID", "ID")]
[ReferenceTo(typeof(Wrappage), "WrappageKind_TreeDeep1ID")]
public long? PackageClass_TreeDeep1ID { get; set; }
[DFPrompt("会计单位")]
[LogicName("会计单位D")]
[Join("Package_ID", "ID")]
[ReferenceTo(typeof(Wrappage), "AccountingUnit_ID")]
public long? Package_AccountingUnit_ID { get; set; }
[DFPrompt("会计单位")]
[Join("Package_ID", "ID")]
[ReferenceTo(typeof(Wrappage), "AccountingUnit_Name")]
public string Package_AccountingUnit_Name { get; set; }
//[Join("Package_ID", "ID")]
//[ReferenceTo(typeof(Wrappage), "AccountingUnit_Organization_ID")]
//public long? Package_AccountingUnit_Organization_ID { get; set; }
}
}

+ 2
- 2
BWP.B3_YunKen/BWP.B3_YunKen.csproj View File

@ -62,6 +62,8 @@
<Reference Include="Wpf.System, Version=1.3.0.0, Culture=neutral, PublicKeyToken=a04fa581c0f74d43, processorArchitecture=MSIL" />
</ItemGroup>
<ItemGroup>
<Compile Include="BL\Bill\Goods_PackageBL.cs" />
<Compile Include="BO\Bill\Goods_Package.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Rpcs\DriverRpc.cs" />
<Compile Include="TimerTask\NullifyCustomerTask.cs" />
@ -71,10 +73,8 @@
<ItemGroup>
<Folder Include="BL\BaseInfo\" />
<Folder Include="BL\Base\" />
<Folder Include="BL\Bill\" />
<Folder Include="BO\BaseInfo\" />
<Folder Include="BO\Base\" />
<Folder Include="BO\Bill\" />
<Folder Include="BO\TreeBaseInfo\" />
<Folder Include="BO\Views\" />
</ItemGroup>


+ 6
- 1
WebFolder/Config/Plugins/B3_YunKen.Plugin View File

@ -26,11 +26,16 @@
<FunctionGroup name="报表" roleSchemas="employee">
<Function index="0" name="客户停用表" />
</FunctionGroup>
<FunctionGroup name="产品包装物设置" roleSchemas="employee">
<Function index="0" name="访问" />
</FunctionGroup>
</Security>
<Menus>
<Menu id="0001" name="/B3耘垦模块/销售预报调整" roles="B3_YunKen.销售预报调整.访问" url="B3YunKen/SaleForecastUpdateList_/SaleForecastUpdateList.aspx"/>
<Menu id="0002" name="/B3耘垦模块/耘垦出库转验收" roles="B3Sale.客户验收.新建" url="B3YunKen/B3YunKenSaleOutStoreToCustomerAccept.aspx"/>
<Menu id="0003" name="/B3耘垦模块/报表/客户停用表" roles="B3_YunKen.报表.客户停用表" url="B3YunKen/Reports/CustomerStopByTaskReport.aspx"/>
<Menu id="0003" name="/B3耘垦模块/报表/客户停用表" roles="B3_YunKen.报表.客户停用表" url="B3YunKen/Reports/CustomerStopByTaskReport.aspx"/>
<Menu id="0004" name="/B3耘垦模块/产品包装物设置" roles="B3_YunKen.产品包装物设置.访问" url="B3YunKen/Bill/GoodsPackageSet.aspx" />
</Menus>
</Plugin>

Loading…
Cancel
Save