Browse Source

需求单No.141245做一个当天分割产出与当天销售订单匹配的分析报表,展现出多做多少产品,少做了多少产品;名称为[订单完成情况];

master
yibo 7 years ago
parent
commit
346787b78e
4 changed files with 157 additions and 2 deletions
  1. +6
    -0
      B3ButcherManageToSale.Web/B3ButcherManageToSale.Web.csproj
  2. +146
    -0
      B3ButcherManageToSale.Web/Pages/B3ButcherManageToSale/Reports/OutputToSaleOutDiff_/OutputToSaleOutDiff.cs
  3. +1
    -0
      B3ButcherManageToSale.Web/Pages/B3ButcherManageToSale/Reports/OutputToSaleOutDiff_/OutputToSaleOutDiff.xml
  4. +4
    -2
      WebFolder/config/plugins/B3ButcherManageToSale.plugin

+ 6
- 0
B3ButcherManageToSale.Web/B3ButcherManageToSale.Web.csproj View File

@ -102,12 +102,18 @@
<Compile Include="Pages\B3ButcherManageToSale\Overlays\SaleOutStoreBalance.cs">
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Pages\B3ButcherManageToSale\Reports\OutputToSaleOutDiff_\OutputToSaleOutDiff.cs">
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="PluginClass.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Pages\B3ButcherManageToSale\Overlays\SaleOutStoreBalance.xml" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Pages\B3ButcherManageToSale\Reports\OutputToSaleOutDiff_\OutputToSaleOutDiff.xml" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- 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.


+ 146
- 0
B3ButcherManageToSale.Web/Pages/B3ButcherManageToSale/Reports/OutputToSaleOutDiff_/OutputToSaleOutDiff.cs View File

@ -0,0 +1,146 @@
using BWP.B3ButcherManage.BO;
using BWP.B3Frameworks;
using BWP.B3Frameworks.BO.NamedValueTemplate;
using BWP.B3Frameworks.Utils;
using BWP.B3Sale.BO;
using BWP.B3UnitedInfos.BO;
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;
using TSingSoft.WebControls2;
using TSingSoft.WebPluginFramework;
namespace BWP.Web.Pages.B3ButcherManageToSale.Reports.OutputToSaleOutDiff_
{
class OutputToSaleOutDiff : DFBrowseGridReportPage<Output>
{
protected override string AccessRoleName
{
get { return "B3ButcherManageToSale.报表分析.订单完成情况"; }
}
protected override string Caption
{
get { return "订单完成情况"; }
}
protected override void InitQueryPanel(QueryPanel queryPanel)
{
//base.InitQueryPanel(queryPanel);
queryPanel.ConditonPanel.EAdd(CreateDataRangePanel());
}
HLayoutPanel CreateDataRangePanel()
{
var hPanel = new HLayoutPanel();
hPanel.Add(new LiteralControl("<span style='color:red'>*</span>仓库:"));
hPanel.Add(QueryCreator.DFChoiceBoxEnableMultiSelection(mDFInfo.Fields["ID"], mQueryContainer, "Store_ID", B3FrameworksConsts.DataSources.));
hPanel.Add(new LiteralControl("<span style='color:red'>*</span>日期:"));
hPanel.Add(QueryCreator.DateRange(mDFInfo.Fields["Date"], mQueryContainer, "MinDate", "MaxDate", DateTime.Today, DateTime.Today + new TimeSpan(23, 59, 29)));
return hPanel;
}
protected override DQueryDom GetQueryDom()
{
var minInput = mQueryContainer.GetControl<DateInput>("MinDate");
var maxInput = mQueryContainer.GetControl<DateInput>("MaxDate");
var storeInput = mQueryContainer.GetControl<DFChoiceBox>("Store_ID");
if (minInput.IsEmpty)
throw new Exception("请选择开始日期");
if (maxInput.IsEmpty)
throw new Exception("请选择结束日期");
if (storeInput.IsEmpty)
throw new Exception("请选择仓库");
var main = new JoinAlias(typeof(UnionTemp));
var goods = new JoinAlias(typeof(Goods));
var query = new DQueryDom(main);
UnionTemp.Register(query, minInput.Date, maxInput.Date, storeInput.GetValues().Select(x => long.Parse(x)));
query.From.AddJoin(JoinType.Left, new DQDmoSource(goods), DQCondition.EQ(main, "Goods_ID", goods, "ID"));
query.Columns.Add(DQSelectColumn.Field("Code", goods, "编码"));
query.Columns.Add(DQSelectColumn.Field("Name", goods, "名称"));
query.Columns.Add(DQSelectColumn.Field("Spec", goods, "规格"));
query.Columns.Add(DQSelectColumn.Sum("UnitNum", "订货|数量"));
SumColumnIndexs.Add(query.Columns.Count - 1);
query.Columns.Add(DQSelectColumn.Field("MainUnit", goods, "订货|单位"));
query.Columns.Add(DQSelectColumn.Sum("SecondNumber", "订货|辅数量"));
SumColumnIndexs.Add(query.Columns.Count - 1);
query.Columns.Add(DQSelectColumn.Field("SecondUnit", goods, "订货|辅单位"));
query.Columns.Add(DQSelectColumn.Sum("OutUnitNum", "产出|数量"));
SumColumnIndexs.Add(query.Columns.Count - 1);
query.Columns.Add(DQSelectColumn.Sum("OutSecondNumber", "产出|辅数量"));
SumColumnIndexs.Add(query.Columns.Count - 1);
query.Columns.Add(DQSelectColumn.Create(DQExpression.Subtract(DQExpression.IfNull(DQExpression.Sum(DQExpression.Field("UnitNum")), DQExpression.Value(0)), DQExpression.IfNull(DQExpression.Sum(DQExpression.Field("OutUnitNum")), DQExpression.Value(0))).ECastType<Money<decimal>?>(), "差异|数量"));
SumColumnIndexs.Add(query.Columns.Count - 1);
GroupSumColumnIndexs.Add(query.Columns.Count - 1);
query.Columns.Add(DQSelectColumn.Create(DQExpression.Subtract(DQExpression.IfNull(DQExpression.Sum(DQExpression.Field("SecondNumber")), DQExpression.Value(0)), DQExpression.IfNull(DQExpression.Sum(DQExpression.Field("OutSecondNumber")), DQExpression.Value(0))).ECastType<Money<decimal>?>(), "差异|辅数量"));
SumColumnIndexs.Add(query.Columns.Count - 1);
GroupSumColumnIndexs.Add(query.Columns.Count - 1);
query.GroupBy.Expressions.Add(DQExpression.Field(goods, "Code"));
query.GroupBy.Expressions.Add(DQExpression.Field(goods, "Name"));
query.GroupBy.Expressions.Add(DQExpression.Field(goods, "Spec"));
query.GroupBy.Expressions.Add(DQExpression.Field(goods, "MainUnit"));
query.GroupBy.Expressions.Add(DQExpression.Field(goods, "SecondUnit"));
return query;
}
}
class UnionTemp
{
public long Goods_ID { get; set; }
public Money<decimal>? UnitNum { get; set; }
public Money<decimal>? SecondNumber { get; set; }
public Money<decimal?> OutUnitNum { get; set; }
public Money<decimal>? OutSecondNumber { get; set; }
public static void Register(DQueryDom root, DateTime minDate, DateTime maxDate, IEnumerable<long> storeID)
{
var query = GetSaleOutStore(minDate, maxDate, storeID);
query.UnionNext.Select = GetOutput(minDate, maxDate);
OrganizationUtil.RegisterOrganizationQueryTable(root);
root.RegisterQueryTable(typeof(UnionTemp), new string[] { "Goods_ID", "UnitNum", "SecondNumber", "OutUnitNum", "OutSecondNumber" }, query);
}
static DQueryDom GetSaleOutStore(DateTime minDate, DateTime maxDate, IEnumerable<long> storeID)
{
var main = new JoinAlias(typeof(SaleOutStore));
var detail = new JoinAlias(typeof(SaleOutStore_Detail));
var query = new DQueryDom(main);
query.From.AddJoin(JoinType.Inner, new DQDmoSource(detail), DQCondition.EQ(main, "ID", detail, "SaleOutStore_ID"));
query.Columns.Add(DQSelectColumn.Field("SaleGoods_ID", detail));
query.Columns.Add(DQSelectColumn.Field("UnitNum", detail));
query.Columns.Add(DQSelectColumn.Field("SecondNumber", detail));
query.Columns.Add(DQSelectColumn.Create(DQExpression.NULL, "OutUnitNum"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.NULL, "OutSecondNumber"));
query.Where.Conditions.Add(DQCondition.And(DQCondition.Between("LoadTime", minDate, maxDate), DQCondition.InList(DQExpression.Field("Store_ID"), storeID.Select(x => DQExpression.Value(x)).ToArray()), DQCondition.EQ("BillState", .)));
OrganizationUtil.AddOrganizationLimit(query, typeof(SaleOutStore));
return query;
}
static DQueryDom GetOutput(DateTime minDate, DateTime maxDate)
{
var main = new JoinAlias(typeof(Output));
var detail = new JoinAlias(typeof(Output_Detail));
var query = new DQueryDom(main);
query.From.AddJoin(JoinType.Inner, new DQDmoSource(detail), DQCondition.EQ(main, "ID", detail, "Output_ID"));
query.Columns.Add(DQSelectColumn.Field("Goods_ID", detail));
query.Columns.Add(DQSelectColumn.Create(DQExpression.NULL, "UnitNum"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.NULL, "SecondNumber"));
query.Columns.Add(DQSelectColumn.Field("Number", detail));
query.Columns.Add(DQSelectColumn.Field("SecondNumber", detail));
query.Where.Conditions.Add(DQCondition.And(DQCondition.Between("Date", minDate, maxDate), DQCondition.InEQ("BillState", .)));
OrganizationUtil.AddOrganizationLimit(query, typeof(Output));
return query;
}
}
}

+ 1
- 0
B3ButcherManageToSale.Web/Pages/B3ButcherManageToSale/Reports/OutputToSaleOutDiff_/OutputToSaleOutDiff.xml View File

@ -0,0 +1 @@
<?xml version="1.0" encoding="utf-8" ?>

+ 4
- 2
WebFolder/config/plugins/B3ButcherManageToSale.plugin View File

@ -14,10 +14,12 @@
<Profiles>
</Profiles>
<Security>
<FunctionGroup name="报表分析" roleSchemas="employee">
<Function index="0" name="订单完成情况"/>
</FunctionGroup>
</Security>
<Menus>
<Menu id="0001" name="/屠宰销售/报表分析/订单完成情况" roles="B3ButcherManageToSale.报表分析.订单完成情况" url="B3ButcherManageToSale/Reports/OutputToSaleOutDiff_/OutputToSaleOutDiff.aspx"/>
</Menus>
<Features>
</Features>


Loading…
Cancel
Save