using LYFZ.Software.MainBusiness.DoorCityProcess; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Linq; using System.Windows.Forms; namespace LYFZ.Software.MainBusiness.StatisticalInquiry { public partial class FrmCosting : LYFZ.Software.UI.StatisticalInquiry.FrmCosting { private delegate void UpdateControl(); public FrmCosting() { this.ucPagerEx1.EventPaging += ucPagerEx1_EventPaging; this.cmbtreevStoreName.ComboBoxTree_NodeMouseClick += CmbtreevStoreName_ComboBoxTree_NodeMouseClick; // 获取分店信息; LYFZ.Software.MainBusiness.DoorCityProcess.PublicCodeClasses.BindGroupStoreName( this.cmbtreevStoreName, StrGroupKeyCode: "retailProcess", StrKeyCode: "st013" ); #region 新版本成本核算; // 初始化DataGridView; InitDataGridViewColumns( _listShowColumns, _listHideColumns ); // checkbox; this.cb_pickup.CheckedChanged += Cb_pickup_CheckedChanged; // datagridview双击; this.dgv.CellDoubleClick += Dgv_CellDoubleClick; #endregion } private void Dgv_CellDoubleClick( object sender, DataGridViewCellEventArgs e ) { // 参数校验; if ( e.RowIndex < 0 || e.RowIndex == this.dgv.RowCount ) return; // 订单号; FrmCostDetail frmCostDetail = new FrmCostDetail( this.dgv.Rows[e.RowIndex], this._dataTable.Rows[e.RowIndex]["订单类型"].ToString() == "1" ); frmCostDetail.ShowDialog(); } private void Cb_pickup_CheckedChanged( object sender, EventArgs e ) { this.PublicFunctionRows(); } private void CmbtreevStoreName_ComboBoxTree_NodeMouseClick( object sender, TreeNodeMouseClickEventArgs e ) { this.PublicFunctionRows(); } /// /// 加载 /// /// /// protected override void FrmCosting_Shown( object sender, EventArgs e ) { txtTimeStart.Text = SDateTime.Now.ToString( "yyyy-MM-dd" ); txtTimeEnd.Text = Convert.ToDateTime( SDateTime.Now ).AddMonths( 1 ).AddSeconds( -1 ).ToString( "yyyy-MM-dd" ); LYFZ.Software.MainBusiness.DoorCityProcess.PublicCodeClasses.BindComboBoxTreeView_DepartmentAndEmployee( this.txtTsorder_OpenSingle, IsFirstNodeNull: true ); //绑定数据 Bind(); //导出 btnExPort.Enabled = LYFZ.BLL.BLL_ErpUser.GetRights( LYFZ.BLL.BLL_ErpUser.CurrentUserRights.CostingCompetence, CustomAttributes.OperatingAuthority.DataExport ); ///控制统计查询成本核算的版本权 //LYFZSS.SystemSpecterPossessed.ISystemSpecterPossessed.GetMySystemSpecter = LYFZSS.SystemSpecterType.SST_C; bool b = LYFZ.Software.MainBusiness.VersionControl.StaticVersion.UIFunctionVersion( VersionControl.VersionFunctionEnum.统计查询成本核算 ); if ( !b ) { btnClose_Click( null, null ); } } /// /// 人员选择事件 /// /// /// protected override void txtTsorder_OpenSingle_ComboBoxTreeViewEx_TextChanged( object sender, TreeViewEventArgs e ) { Bind(); } /// /// 时间查询 /// /// /// protected override void btnSelect_Click( object sender, EventArgs e ) { if ( string.IsNullOrEmpty( txtTimeStart.DateValue ) ) { MessageBoxCustom.Show( "开始时间不能为空!" ); return; } if ( string.IsNullOrEmpty( txtTimeEnd.DateValue ) ) { MessageBoxCustom.Show( "结束时间不能为空!" ); return; } //绑定数据 Bind(); } /// /// 导出 /// /// /// protected override void btnExPort_Click( object sender, EventArgs e ) { dgv.ExportDataTable(); } /// /// 关闭 /// /// /// protected override void btnClose_Click( object sender, EventArgs e ) { this.Close(); } /// /// 时间控件 /// /// /// protected override void txtTimeStart_Leave( object sender, EventArgs e ) { if ( string.IsNullOrEmpty( this.txtTimeStart.DateValue ) ) { MessageBoxCustom.Show( "开始时间格式输入错误" ); txtTimeStart.DateValue = SDateTime.Now.ToString( "yyyy-MM" ) + "-01"; } } /// /// /// /// /// protected override void txtTimeStart_Enter( object sender, EventArgs e ) { if ( string.IsNullOrEmpty( this.txtTimeStart.DateValue ) ) { txtTimeStart.DateValue = SDateTime.Now.ToString( "yyyy-MM" ) + "-01"; } } /// /// /// /// /// protected override void txtTimeEnd_Leave( object sender, EventArgs e ) { if ( string.IsNullOrEmpty( this.txtTimeEnd.DateValue ) ) { MessageBoxCustom.Show( "结束时间格式输入错误" ); txtTimeEnd.DateValue = Convert.ToDateTime( Convert.ToDateTime( SDateTime.Now.ToString( "yyyy-MM" ) + "-01" ).AddMonths( 1 ).AddSeconds( -1 ) ).ToString( "yyyy-MM-dd" ); } } /// /// /// /// /// protected override void txtTimeEnd_Enter( object sender, EventArgs e ) { if ( string.IsNullOrEmpty( this.txtTimeEnd.DateValue ) ) { txtTimeEnd.DateValue = Convert.ToDateTime( Convert.ToDateTime( SDateTime.Now.ToString( "yyyy-MM" ) + "-01" ).AddMonths( 1 ).AddSeconds( -1 ) ).ToString( "yyyy-MM-dd" ); } } LYFZ.BLL.BLL_FinancialStatements FinancialStatementsbll = new BLL.BLL_FinancialStatements(); LYFZ.BLL.BLL_ErpOrderProductList OrderProductListbll = new BLL.BLL_ErpOrderProductList(); LYFZ.BLL.BLL_ErpWeddingService WeddingServicebll = new BLL.BLL_ErpWeddingService(); LYFZ.BLL.BLL_ErpPlusPickItems PlusPickItemsbll = new BLL.BLL_ErpPlusPickItems(); LYFZ.BLL.BLL_ErpOrder orbll = new BLL.BLL_ErpOrder(); void PublicFunctionRows() { PublicFunctionRowsEx(); return; this.dgv.Rows.Clear(); string StrWhere = "Ord_Class = '1'"; if ( !string.IsNullOrEmpty( this.txtOrd_Number.Text.Trim() ) ) { StrWhere += " And (Ord_Number like '%" + this.txtOrd_Number.Text.Trim() + "%' or Ord_SinceOrderNumber like '%" + this.txtOrd_Number.Text.Trim() + "%' or 客户姓名 like '%" + this.txtOrd_Number.Text.Trim() + "%' or 客户拼音 like '%" + this.txtOrd_Number.Text.Trim() + "%' or 客户电话 like '%" + this.txtOrd_Number.Text.Trim() + "%')"; } else { StrWhere += PublicCodeClasses.GetDateTime( "订单时间", txtTimeStart.Text, txtTimeEnd.Text ); } if ( !string.IsNullOrEmpty( txtTsorder_OpenSingle.Text.Trim() ) ) { StrWhere += " And 接单人编号 like '%" + txtTsorder_OpenSingle.Tag.ToString().Trim() + "%' "; } StrWhere += LYFZ.Software.MainBusiness.DoorCityProcess.PublicCodeClasses.GetGroupQueryWhere( this.cmbtreevStoreName, "Ord_DividedShop" ); LYFZ.ComponentLibrary.FrmLoadHandling.LoadDoWorkMethod( delegate ( object obj, BackgroundWorker backgroundWorker ) { backgroundWorker.ReportProgress( 0, "正在获取数据 ..." ); string StrTableName = "( " + "select Ord_Number,Ord_SinceOrderNumber,Ord_Class,Ord_DividedShop,Cus_Name AS 客户姓名,Cus_Name_py AS 客户拼音,Cus_Telephone AS 客户电话," + "case when Ord_SinceOrderNumber <> '' then Ord_SinceOrderNumber else Ord_Number end AS 订单号,Ord_CreateDatetime AS 订单时间," + "(Ord_SeriesPrice+ " + "case when (select Count(ID) AS CountID from tb_ErpPlusPickItems where Plu_OrdNumber = Ord_Number) > 0 then " + " case when (select sum(case when Plu_GoodsCosts <> '' then convert(decimal(10,2),dbo.fn_GetSumArray(Plu_GoodsCosts)) else 0 end) from tb_ErpPlusPickItems where Plu_OrdNumber = Ord_Number) is null then 0 else (select sum(case when Plu_GoodsCosts <> '' then convert(decimal(10,2),dbo.fn_GetSumArray(Plu_GoodsCosts)) else 0 end) from tb_ErpPlusPickItems where Plu_OrdNumber = Ord_Number) end " + " else 0 end) AS 套系价格, " + "(select stuff((select ',' + OrdPe_OrdersPerson from tb_ErpOrdersPerson where OrdPe_OrderNumber = Ord_Number for xml path('')),1,1,'')) as 接单人编号, " + "(select stuff((select ',' + dbo.fn_CheckUserIDGetUserName(OrdPe_OrdersPerson) from tb_ErpOrdersPerson where OrdPe_OrderNumber = Ord_Number for xml path('')),1,1,'')) as 接单人, " + "(isnull((select sum(OPlist_CostPrice * OPlist_ProdQuantity) from tb_ErpOrderProductList where OPlist_Type = '1' And OPlist_OrderNumber = Ord_Number),0) + " + "isnull((select sum(Ws_ProdCostPrice * Ws_ProdQuantity) from tb_ErpWeddingService where Ws_Number = Ord_Number),0) + " + "isnull((select sum(Ordpg_CostPrice) from tb_ErpOrdersPhotography where Ordpg_Number = Ord_Number),0) + " + "isnull((select sum(case when Plu_GoodsCosts <> '' then convert(decimal(10,2),dbo.fn_GetSumArray(Plu_GoodsCosts)) else 0 end) from tb_ErpPlusPickItems where Plu_OrdNumber = Ord_Number),0)) AS 套系成本 " + "from tb_ErpOrder Left Join tempTB_AggregationCustomer on Ord_Number = GP_OrderNumber " + ") as tb "; string StrColumnName = "Ord_Number,订单号,客户姓名,客户电话,接单人,套系价格,套系成本"; DataTable dt = orbll.GetView_Custom( StrTableName, StrWhere: StrWhere, ShowColumnName: StrColumnName ).Tables[0]; if ( dt.Rows.Count > 0 ) { string StrWhere2 = ""; for ( int i = 0; i < dt.Rows.Count; i++ ) { StrWhere2 += "'" + dt.Rows[i]["Ord_Number"].ToString().Trim() + "',"; } string StrTableName2 = "select OPlist_OrderNumber AS 订单号,OPlist_ProdName AS 商品名称,OPlist_CostPrice AS 商品单价,OPlist_ProdQuantity AS 商品数量 from tb_ErpOrderProductList where OPlist_Type = '1' And OPlist_OrderNumber in (" + StrWhere2.TrimEnd( ',' ) + ") " + "UNION ALL " + "select Ws_Number AS 订单号,Ws_ProdName AS 商品名称,Ws_ProdCostPrice AS 商品单价,Ws_ProdQuantity AS 商品数量 from tb_ErpWeddingService where Ws_Number in (" + StrWhere2.TrimEnd( ',' ) + ") " + "UNION ALL " + "select Ordpg_Number AS 订单号,Ordpg_Sights AS 商品名称,Ordpg_CostPrice AS 商品单价,1 AS 商品数量 from tb_ErpOrdersPhotography where Ordpg_Number in (" + StrWhere2.TrimEnd( ',' ) + ") "; DataTable tbl = orbll.GetView_Custom( StrTableName2 ).Tables[0]; DataTable tblPlus = orbll.GetView_Custom( "tb_ErpPlusPickItems", StrWhere: "Plu_OrdNumber in (" + StrWhere2.TrimEnd( ',' ) + ")", ShowColumnName: "Plu_OrdNumber,Plu_Goods,Plu_GoodsCosts" ).Tables[0]; backgroundWorker.ReportProgress( 0, "正在绑定数据 ..." ); for ( int i = 0; i < tblPlus.Rows.Count; i++ ) { try { string[] StrArray1 = tblPlus.Rows[i]["Plu_Goods"].ToString().Trim().Split( ',' ); string[] StrArray2 = tblPlus.Rows[i]["Plu_GoodsCosts"].ToString().Trim().Split( ',' ); for ( int j = 0; j < StrArray1.Length; j++ ) { DataRow newRow = tbl.NewRow(); newRow["订单号"] = tblPlus.Rows[i]["Plu_OrdNumber"].ToString().Trim(); newRow["商品名称"] = StrArray1[j].ToString().Trim(); if ( j < StrArray2.Length ) { newRow["商品单价"] = StrArray2[j].ToString().Trim(); } else { newRow["商品单价"] = "0"; } newRow["商品数量"] = 1; tbl.Rows.Add( newRow ); } } catch { } } try { this.Invoke( new UpdateControl( delegate () { #region 绑定订单 //总售价 decimal TotalPrice = 0; //总成本 decimal TotalCost = 0; for ( int i = 0; i < dt.Rows.Count; i++ ) { DataRow[] dtRows = tbl.Select( "订单号 = '" + dt.Rows[i]["Ord_Number"].ToString().Trim() + "'" ); DataGridViewRow dgvr = new DataGridViewRow(); DataGridViewCell cell = null; cell = new DataGridViewTextBoxCell(); cell.Value = dt.Rows[i]["订单号"].ToString().Trim(); dgvr.Cells.Add( cell ); cell = new DataGridViewTextBoxCell(); cell.Value = dt.Rows[i]["客户姓名"].ToString().Trim(); dgvr.Cells.Add( cell ); cell = new DataGridViewTextBoxCell(); cell.Value = dt.Rows[i]["客户电话"].ToString().Trim(); dgvr.Cells.Add( cell ); cell = new DataGridViewTextBoxCell(); cell.Value = dt.Rows[i]["接单人"].ToString().Trim(); dgvr.Cells.Add( cell ); cell = new DataGridViewTextBoxCell(); cell.Value = dt.Rows[i]["套系价格"].ToString().Trim(); dgvr.Cells.Add( cell ); TotalPrice += Convert.ToDecimal( dt.Rows[i]["套系价格"] ); cell = new DataGridViewTextBoxCell(); cell.Value = dt.Rows[i]["套系成本"].ToString().Trim(); dgvr.Cells.Add( cell ); TotalCost += Convert.ToDecimal( dt.Rows[i]["套系成本"] ); if ( dtRows.Length > 0 ) { cell = new DataGridViewTextBoxCell(); cell.Value = dtRows[0]["商品名称"].ToString().Trim(); dgvr.Cells.Add( cell ); cell = new DataGridViewTextBoxCell(); cell.Value = dtRows[0]["商品单价"].ToString().Trim(); dgvr.Cells.Add( cell ); cell = new DataGridViewTextBoxCell(); cell.Value = dtRows[0]["商品数量"].ToString().Trim(); dgvr.Cells.Add( cell ); } else { for ( int j = 0; j < 3; j++ ) { cell = new DataGridViewTextBoxCell(); cell.Value = ""; dgvr.Cells.Add( cell ); } } this.dgv.Rows.Add( dgvr ); #region 绑定商品数据 for ( int j = 1; j < dtRows.Length; j++ ) { dgvr = new DataGridViewRow(); for ( int k = 0; k < 6; k++ ) { cell = new DataGridViewTextBoxCell(); cell.Value = ""; dgvr.Cells.Add( cell ); } cell = new DataGridViewTextBoxCell(); cell.Value = dtRows[j]["商品名称"].ToString().Trim(); dgvr.Cells.Add( cell ); cell = new DataGridViewTextBoxCell(); cell.Value = dtRows[j]["商品单价"].ToString().Trim(); dgvr.Cells.Add( cell ); cell = new DataGridViewTextBoxCell(); cell.Value = dtRows[j]["商品数量"].ToString().Trim(); dgvr.Cells.Add( cell ); this.dgv.Rows.Add( dgvr ); } #endregion } #endregion #region 合计项目 //单数 this.lblSingular.Text = dt.Rows.Count.ToString(); //总售价 this.lblTotalPrice.Text = TotalPrice.ToString( "N2" ); //总成本 this.lbltotalCost.Text = TotalCost.ToString( "N2" ); //毛利 this.lblGrossProfit.Text = ( Convert.ToDecimal( this.lblTotalPrice.Text ) - Convert.ToDecimal( this.lbltotalCost.Text ) ).ToString( "N2" ); //毛利率 ((总售价-总成本)/总售价)*100 if ( Convert.ToDecimal( this.lblSingular.Text ) == 0 ) { this.lblGrossMargin.Text = "100%"; } else { if ( Convert.ToDecimal( this.lblTotalPrice.Text ) != Convert.ToDecimal( "0" ) ) { this.lblGrossMargin.Text = ( ( ( Convert.ToDecimal( this.lblTotalPrice.Text ) - Convert.ToDecimal( this.lbltotalCost.Text ) ) / Convert.ToDecimal( this.lblTotalPrice.Text ) ) * 100 ).ToString( "N2" ) + "%"; } else { this.lblGrossMargin.Text = "0%"; } } //平均售价 if ( Convert.ToDecimal( lblSingular.Text ) == 0 ) { this.lblAverageSellingPrice.Text = "0.00"; } else { this.lblAverageSellingPrice.Text = ( Convert.ToDecimal( this.lblTotalPrice.Text ) / Convert.ToInt32( this.lblSingular.Text ) ).ToString( "N2" ); } //平均成本 if ( Convert.ToDecimal( lblSingular.Text ) == 0 ) { this.lblAverageCost.Text = "0.00"; } else { this.lblAverageCost.Text = ( Convert.ToDecimal( this.lbltotalCost.Text ) / Convert.ToInt32( this.lblSingular.Text ) ).ToString( "N2" ); } //平均毛利 if ( Convert.ToDecimal( lblSingular.Text ) == 0 ) { this.lblAverageGrossProfit.Text = "0.00"; } else { this.lblAverageGrossProfit.Text = ( Convert.ToDecimal( this.lblGrossProfit.Text ) / Convert.ToInt32( this.lblSingular.Text ) ).ToString( "N2" ); } #endregion } ) ); } catch ( Exception e ) { } } } ); } #region 新版本成本核算; IEnumerable _rows = null; DataTable _dataTable = null; string _listNullColumn = "订单号, 接单人, 顾客姓名, 顾客电话, 套系名称, 套系价格"; string _listShowColumns = "订单号, 接单人, 顾客姓名, 顾客电话, 套系名称, 套系价格, 拍摄景点, 商品成本, 服务成本, 景点成本, 加挑总价, 加挑成本"; string _listHideColumns = "自定义单号,订单类型,订单类别,订单日期,分店编号,顾客拼音,取件状态,取件时间"; void PublicFunctionRowsEx() { _dataTable = null; this.dgv.Rows.Clear(); this.lblSingular.Text = "0"; this.lblTotalPrice.Text = "0"; this.lbltotalCost.Text = "0"; this.lblGrossProfit.Text = "0"; this.lblGrossMargin.Text = "0%"; this.lblAverageSellingPrice.Text = "0.00"; this.lblAverageGrossProfit.Text = "0.00"; LYFZ.DAL.CostAccounting costAccounting = new DAL.CostAccounting(); // 获取分店编号; string branchId = null; if ( LYFZ.Software.MainBusiness.CommonLogical.SuccessfulLogin.IsGroupEdition ) branchId = this.cmbtreevStoreName.Tag.ToString().Trim(); string clerkId = null; if ( !string.IsNullOrEmpty( txtTsorder_OpenSingle.Text.Trim() ) ) clerkId = txtTsorder_OpenSingle.Tag.ToString().Trim(); LYFZ.ComponentLibrary.FrmLoadHandling.LoadDoWorkMethod( delegate ( object obj, BackgroundWorker backgroundWorker ) { backgroundWorker.ReportProgress( 0, "正在获取数据 ..." ); // 获取成本核算数据集; _dataTable = costAccounting.GetCostAccountingEx( this.cb_pickup.Checked, txtTimeStart.Value, txtTimeEnd.Value, branchId, clerkId, txtOrd_Number.Text ); } ); if ( _dataTable == null ) return; _rows = from pp in _dataTable.AsEnumerable() select pp; this.dgv.RowCount = _dataTable.Rows.Count; // 订单总数; int nOrderCount = _rows.GroupBy( e => e.Field( "订单号" ) ).Count(); // 订单总售价; decimal TotalPrice = _rows.Select( e => e.Field( "套系价格" ) ).Sum() + _rows.Select( e => e.Field( "加挑总价" ) ).Sum(); // 订单总成本; decimal TotalCost = _rows.Select( e => e.Field( "商品成本" ) ).Sum() + _rows.Select( e => e.Field( "服务成本" ) ).Sum() + _rows.Select( e => e.Field( "景点成本" ) ).Sum() + _rows.Select( e => e.Field( "加挑成本" ) ).Sum(); #region 合计项目 //单数; this.lblSingular.Text = nOrderCount.ToString(); //总售价; this.lblTotalPrice.Text = TotalPrice.ToString( "N2" ); //总成本; this.lbltotalCost.Text = TotalCost.ToString( "N2" ); //毛利; this.lblGrossProfit.Text = ( TotalPrice - TotalCost ).ToString( "N2" ); //毛利率 ((总售价-总成本)/总售价)*100; if ( nOrderCount == 0 ) { this.lblGrossMargin.Text = "100%"; } else { if ( TotalPrice != Convert.ToDecimal( "0" ) ) this.lblGrossMargin.Text = ( ( ( TotalPrice - TotalCost ) / TotalPrice ) * 100 ).ToString( "N2" ) + "%"; else this.lblGrossMargin.Text = "0%"; } //平均售价; if ( nOrderCount == 0 ) this.lblAverageSellingPrice.Text = "0.00"; else this.lblAverageSellingPrice.Text = ( TotalPrice / nOrderCount ).ToString( "N2" ); //平均成本; if ( nOrderCount == 0 ) this.lblAverageCost.Text = "0.00"; else this.lblAverageCost.Text = ( TotalCost / nOrderCount ).ToString( "N2" ); //平均毛利; if ( nOrderCount == 0 ) this.lblAverageGrossProfit.Text = "0.00"; else this.lblAverageGrossProfit.Text = ( ( TotalPrice - TotalCost ) / nOrderCount ).ToString( "N2" ); #endregion } /// /// 初始化DataGridView列; /// void InitDataGridViewColumns( string strColumns /*逗号分隔*/, string strHideFields = ""/*逗号分隔*/, bool IsSortMode = false ) { DataGridViewTextBoxColumn column = null; if ( !string.IsNullOrEmpty( strColumns ) ) { // 有必须的话, 清空之前的列头信息; this.dgv.Rows.Clear(); this.dgv.Columns.Clear(); List listColumns = strColumns.Split( ',' ).ToList(); List listHideFields = strHideFields.Split( ',' ).ToList(); for ( int i = 0; i < listColumns.Count; i++ ) { column = new DataGridViewTextBoxColumn(); column.ReadOnly = true; column.Name = listColumns[i].Trim(); column.HeaderText = listColumns[i].Trim(); // 是否有隐藏列; if ( listHideFields.Contains( listColumns[i].Trim() ) ) column.Visible = false; // 是否排序; if ( IsSortMode ) column.SortMode = DataGridViewColumnSortMode.Automatic; this.dgv.Columns.Add( column ); } this.dgv.ColumnHeadersHeight = 25; this.dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing; } // 虚拟模式显示数据; this.dgv.VirtualMode = true; this.dgv.CellValueNeeded += Dgv_CellValueNeeded; } private void Dgv_CellValueNeeded( object sender, DataGridViewCellValueEventArgs e ) { // 参数校验; if ( _dataTable == null || 0 == _dataTable.Rows.Count || e.RowIndex == _dataTable.Rows.Count ) return; // 当前行; DataGridViewRow dgrCurrent = this.dgv.Rows[e.RowIndex]; if ( e.RowIndex != 0 && _dataTable.Rows[e.RowIndex]["订单号"].Equals( _dataTable.Rows[e.RowIndex - 1]["订单号"] ) ) {// 同一订单的; // 上一行颜色; DataGridViewRow dgrLast = this.dgv.Rows[e.RowIndex - 1]; dgrCurrent.Tag = dgrLast.Tag; if ( dgrCurrent.DefaultCellStyle.BackColor != dgrLast.DefaultCellStyle.BackColor ) dgrCurrent.DefaultCellStyle.BackColor = dgrLast.DefaultCellStyle.BackColor; // 如果是不显示的列字段, 退出; if ( _listNullColumn.Contains( this.dgv.Columns[e.ColumnIndex].Name.Trim() ) ) return; if ( this.dgv.Columns[e.ColumnIndex].Name.Trim() != "StrIsAddColumnsNull" ) e.Value = _dataTable.Rows[e.RowIndex][this.dgv.Columns[e.ColumnIndex].Name.Trim()].ToString(); } else {// 下一订单的; dgrCurrent.Tag = _dataTable.Rows[e.RowIndex]["订单号"]; if ( this.dgv.Columns[e.ColumnIndex].Name.Trim() != "StrIsAddColumnsNull" ) e.Value = _dataTable.Rows[e.RowIndex][this.dgv.Columns[e.ColumnIndex].Name.Trim()].ToString(); // 订单行是否更色; if ( e.RowIndex != 0 ) {// 非第一行; DataGridViewRow dgrLast = this.dgv.Rows[e.RowIndex - 1]; if ( dgrLast.DefaultCellStyle.BackColor == System.Drawing.Color.PowderBlue ) dgrCurrent.DefaultCellStyle.BackColor = System.Drawing.Color.PapayaWhip; else dgrCurrent.DefaultCellStyle.BackColor = System.Drawing.Color.PowderBlue; } else {// 第一行时; dgrCurrent.DefaultCellStyle.BackColor = System.Drawing.Color.PowderBlue; } } } #endregion DataTable dtProductList = null; DataTable dtWeddingService = null; DataTable dtPlusPickItems = null; /// /// 绑定数据 /// public void Bind() { PublicFunctionRows(); //this.ucPagerEx1.PageCurrent = 1; //this.ucPagerEx1.PageSize = 200; //this.ucPagerEx1.Bind(); } /// /// 画分页 /// /// /// private int ucPagerEx1_EventPaging( UCPager.EventPagingArg e ) { //总售价 decimal TotalPrice = 0; //总成本 decimal totalCost = 0; LYFZ.UCPager.PageData pageData = new LYFZ.UCPager.PageData(); this.dgv.Rows.Clear(); DataTable dt = new DataTable(); string StrWhere = ""; #region 查询条件 if ( txtTsorder_OpenSingle.Text.Trim() == "" ) { if ( string.IsNullOrEmpty( txtOrd_Number.Text.Trim() ) ) { StrWhere = " ord_class='1' " + PublicCodeClasses.GetDateTime( "Ord_CreateDatetime", txtTimeStart.Text, txtTimeEnd.Text ); } else { StrWhere = " ord_class='1' " + PublicCodeClasses.GetDateTime( "Ord_CreateDatetime", txtTimeStart.Text, txtTimeEnd.Text ) + " and (Ord_Number like '%" + txtOrd_Number.Text + "%' or Ord_SinceOrderNumber like '%" + txtOrd_Number.Text + "%')"; } } else { if ( string.IsNullOrEmpty( txtOrd_Number.Text.Trim() ) ) { StrWhere = " ord_class='1' and Ord_OrdersPersonID like '%" + txtTsorder_OpenSingle.Tag.ToString() + "%' " + PublicCodeClasses.GetDateTime( "Ord_CreateDatetime", txtTimeStart.Text, txtTimeEnd.Text ); } else { StrWhere = " ord_class='1' and Ord_OrdersPersonID like '%" + txtTsorder_OpenSingle.Tag.ToString() + "%' and (Ord_Number like '%" + txtOrd_Number.Text + "%' or Ord_SinceOrderNumber like '%" + txtOrd_Number.Text + "%')" + PublicCodeClasses.GetDateTime( "Ord_CreateDatetime", txtTimeStart.Text, txtTimeEnd.Text ); } } #endregion LYFZ.ComponentLibrary.FrmLoadHandling.LoadDoWorkMethod( delegate ( object obj, BackgroundWorker backgroundWorker ) { pageData.TableName = "Vw_Customer_PaymentOrders"; pageData.PageIndex = this.ucPagerEx1.PageCurrent; pageData.PageSize = this.ucPagerEx1.PageSize; pageData.QueryCondition = StrWhere.ToString(); pageData.QueryFieldName = " ID,Ord_Number,Ord_DividedShop,Ord_Type,Ord_SeriesName,Ord_SeriesPrice,Ord_Class,GP_OrderNumber,GP_CustomerGroupID,Cus_Name,Cus_Name_py,Cus_Telephone,Ord_OrdersPersonID,Ord_OrdersPerson,Ord_CreateDatetime,PickupStatusCount,Ord_SinceOrderNumber"; pageData.OrderStr = "ID desc"; DataSet da = pageData.QueryDataTable(); dt = da.Tables[0]; if ( dt.Rows.Count > 0 ) { if ( dtProductList == null ) { dtProductList = OrderProductListbll.GetAllList().Tables[0]; } if ( dtWeddingService == null ) { dtWeddingService = WeddingServicebll.GetAllList().Tables[0]; } if ( dtPlusPickItems == null ) { dtPlusPickItems = PlusPickItemsbll.GetAllList().Tables[0]; } this.Invoke( new UpdateControl( delegate () { for ( int t = 0; t < dt.Rows.Count; t++ ) { #region 获取订单 DataGridViewRow dgvr = new DataGridViewRow(); DataGridViewCell cell = null; //订单号 cell = new DataGridViewTextBoxCell(); if ( !string.IsNullOrEmpty( dt.Rows[t]["Ord_SinceOrderNumber"].ToString() ) ) { cell.Value = dt.Rows[t]["Ord_SinceOrderNumber"].ToString(); } else { cell.Value = dt.Rows[t]["Ord_Number"].ToString(); } dgvr.Cells.Add( cell ); //姓名 cell = new DataGridViewTextBoxCell(); cell.Value = dt.Rows[t]["Cus_Name"].ToString().Trim(); dgvr.Cells.Add( cell ); //电话 cell = new DataGridViewTextBoxCell(); cell.Value = dt.Rows[t]["Cus_Telephone"].ToString(); dgvr.Cells.Add( cell ); //接单人 cell = new DataGridViewTextBoxCell(); cell.Value = dt.Rows[t]["Ord_OrdersPerson"].ToString(); dgvr.Cells.Add( cell ); // 售价 decimal SJ = FinancialStatementsbll.GetSellingPrice( dt.Rows[t]["Ord_Number"].ToString(), "", "" ); cell = new DataGridViewTextBoxCell(); cell.Value = SJ.ToString( "N2" ); dgvr.Cells.Add( cell ); //合计售价 TotalPrice += SJ; // 成本 decimal CB = FinancialStatementsbll.GetCostsPrice( dt.Rows[t]["Ord_Number"].ToString(), "", "" ); cell = new DataGridViewTextBoxCell(); cell.Value = CB.ToString( "N2" ); dgvr.Cells.Add( cell ); totalCost += CB; //商品名称 cell = new DataGridViewTextBoxCell(); DataRow[] dtProductList2 = dtProductList.Select( "OPlist_OrderNumber='" + dt.Rows[t]["Ord_Number"].ToString() + "' and OPlist_Type='2'" ); if ( dtProductList2.Length > 0 ) { cell.Value = dtProductList2[0]["OPlist_ProdName"].ToString(); } else { cell.Value = ""; } dgvr.Cells.Add( cell ); //单价 cell = new DataGridViewTextBoxCell(); if ( dtProductList2.Length > 0 ) { cell.Value = dtProductList2[0]["OPlist_CostPrice"].ToString().Trim(); } else { cell.Value = ""; } dgvr.Cells.Add( cell ); //数量 cell = new DataGridViewTextBoxCell(); if ( dtProductList2.Length > 0 ) { cell.Value = dtProductList2[0]["OPlist_ProdQuantity"].ToString(); } else { cell.Value = ""; } dgvr.Cells.Add( cell ); this.dgv.Rows.Add( dgvr ); #endregion #region 获取订单套系商品 dtProductList2 = dtProductList.Select( "OPlist_OrderNumber='" + dt.Rows[t]["Ord_Number"].ToString() + "' and OPlist_Type='1'" ); if ( dtProductList2.Length > 0 ) { for ( int t1 = 1; t1 < dtProductList2.Length; t1++ ) { dgvr = new DataGridViewRow(); cell = null; //订单号 cell = new DataGridViewTextBoxCell(); cell.Value = ""; dgvr.Cells.Add( cell ); //姓名 cell = new DataGridViewTextBoxCell(); cell.Value = ""; dgvr.Cells.Add( cell ); //电话 cell = new DataGridViewTextBoxCell(); cell.Value = ""; dgvr.Cells.Add( cell ); //接单人 cell = new DataGridViewTextBoxCell(); cell.Value = ""; dgvr.Cells.Add( cell ); // 售价 cell = new DataGridViewTextBoxCell(); cell.Value = ""; dgvr.Cells.Add( cell ); // 成本 cell = new DataGridViewTextBoxCell(); cell.Value = ""; dgvr.Cells.Add( cell ); //商品名称 cell = new DataGridViewTextBoxCell(); cell.Value = dtProductList2[t1]["OPlist_ProdName"].ToString(); dgvr.Cells.Add( cell ); //单价 cell = new DataGridViewTextBoxCell(); cell.Value = dtProductList2[t1]["OPlist_CostPrice"].ToString(); dgvr.Cells.Add( cell ); //数量 cell = new DataGridViewTextBoxCell(); cell.Value = dtProductList2[t1]["OPlist_ProdQuantity"].ToString(); dgvr.Cells.Add( cell ); this.dgv.Rows.Add( dgvr ); } } #endregion #region 获取服务商品 DataRow[] dtWeddingService2 = dtWeddingService.Select( "Ws_Number='" + dt.Rows[t]["Ord_Number"].ToString() + "'" ); if ( dtWeddingService2.Length > 0 ) { for ( int t2 = 0; t2 < dtWeddingService2.Length; t2++ ) { dgvr = new DataGridViewRow(); cell = null; //订单号 cell = new DataGridViewTextBoxCell(); cell.Value = ""; dgvr.Cells.Add( cell ); //姓名 cell = new DataGridViewTextBoxCell(); cell.Value = ""; dgvr.Cells.Add( cell ); //电话 cell = new DataGridViewTextBoxCell(); cell.Value = ""; dgvr.Cells.Add( cell ); //接单人 cell = new DataGridViewTextBoxCell(); cell.Value = ""; dgvr.Cells.Add( cell ); // 售价 cell = new DataGridViewTextBoxCell(); cell.Value = ""; dgvr.Cells.Add( cell ); //成本 cell = new DataGridViewTextBoxCell(); cell.Value = ""; dgvr.Cells.Add( cell ); //商品名称 cell = new DataGridViewTextBoxCell(); cell.Value = dtWeddingService2[t2]["Ws_ProdName"].ToString(); dgvr.Cells.Add( cell ); //单价 cell = new DataGridViewTextBoxCell(); cell.Value = dtWeddingService2[t2]["Ws_ProdCostPrice"].ToString(); dgvr.Cells.Add( cell ); //数量 cell = new DataGridViewTextBoxCell(); cell.Value = dtWeddingService2[t2]["Ws_ProdQuantity"].ToString(); dgvr.Cells.Add( cell ); this.dgv.Rows.Add( dgvr ); } } #endregion #region 获取后期收款加挑物品 DataRow[] dtPlusPickItems2 = dtPlusPickItems.Select( "Plu_OrdNumber='" + dt.Rows[t]["Ord_Number"].ToString() + "'" ); if ( dtPlusPickItems2.Length > 0 ) { for ( int t3 = 0; t3 < dtPlusPickItems2.Length; t3++ ) { string[] Plu_Goods = dtPlusPickItems2[t3]["Plu_Goods"].ToString().Split( ',' ); string[] Plu_GoodsCosts = dtPlusPickItems2[t3]["Plu_GoodsCosts"].ToString().Split( ',' ); for ( int y = 0; y < Plu_Goods.Length; y++ ) { #region dgvr = new DataGridViewRow(); cell = null; //订单号 cell = new DataGridViewTextBoxCell(); cell.Value = ""; dgvr.Cells.Add( cell ); //姓名 cell = new DataGridViewTextBoxCell(); cell.Value = ""; dgvr.Cells.Add( cell ); //女电话 cell = new DataGridViewTextBoxCell(); cell.Value = ""; dgvr.Cells.Add( cell ); //接单人 cell = new DataGridViewTextBoxCell(); cell.Value = ""; dgvr.Cells.Add( cell ); #region 售价 cell = new DataGridViewTextBoxCell(); cell.Value = ""; dgvr.Cells.Add( cell ); #endregion #region 成本 //获取套系商品 cell = new DataGridViewTextBoxCell(); cell.Value = ""; dgvr.Cells.Add( cell ); #endregion //商品名称 cell = new DataGridViewTextBoxCell(); cell.Value = Plu_Goods[y].ToString(); dgvr.Cells.Add( cell ); //单价 cell = new DataGridViewTextBoxCell(); cell.Value = Convert.ToDecimal( Plu_GoodsCosts[y] ).ToString( "N2" ); dgvr.Cells.Add( cell ); //数量 cell = new DataGridViewTextBoxCell(); cell.Value = "1"; dgvr.Cells.Add( cell ); this.dgv.Rows.Add( dgvr ); #endregion } } } #endregion #region 获取订单景点 if ( dt.Rows[t]["Ord_Type"].ToString().Trim() != "1" ) { DataTable dtPhotography = orbll.GetView_Custom( "tb_ErpOrdersPhotography", StrWhere: "Ordpg_Number = '" + dt.Rows[t]["Ord_Number"].ToString().Trim() + "'", ShowColumnName: "Ordpg_Sights,Ordpg_CostPrice" ).Tables[0]; if ( dtPhotography.Rows.Count > 0 ) { for ( int i = 0; i < dtPhotography.Rows.Count; i++ ) { dgvr = new DataGridViewRow(); cell = null; //订单号 cell = new DataGridViewTextBoxCell(); cell.Value = ""; dgvr.Cells.Add( cell ); //姓名 cell = new DataGridViewTextBoxCell(); cell.Value = ""; dgvr.Cells.Add( cell ); //电话 cell = new DataGridViewTextBoxCell(); cell.Value = ""; dgvr.Cells.Add( cell ); //接单人 cell = new DataGridViewTextBoxCell(); cell.Value = ""; dgvr.Cells.Add( cell ); cell = new DataGridViewTextBoxCell(); cell.Value = ""; dgvr.Cells.Add( cell ); //获取套系商品 cell = new DataGridViewTextBoxCell(); cell.Value = ""; dgvr.Cells.Add( cell ); //商品名称 cell = new DataGridViewTextBoxCell(); cell.Value = dtPhotography.Rows[i]["Ordpg_Sights"].ToString(); dgvr.Cells.Add( cell ); //单价 cell = new DataGridViewTextBoxCell(); cell.Value = dtPhotography.Rows[i]["Ordpg_CostPrice"].ToString(); dgvr.Cells.Add( cell ); //数量 cell = new DataGridViewTextBoxCell(); cell.Value = "1"; dgvr.Cells.Add( cell ); this.dgv.Rows.Add( dgvr ); } } } #endregion } #region 合计项目 //单数 this.lblSingular.Text = dt.Rows.Count.ToString(); //总售价 this.lblTotalPrice.Text = TotalPrice.ToString( "N2" ); //总成本 this.lbltotalCost.Text = totalCost.ToString( "N2" ); //毛利 this.lblGrossProfit.Text = ( Convert.ToDecimal( this.lblTotalPrice.Text ) - Convert.ToDecimal( this.lbltotalCost.Text ) ).ToString( "N2" ); //毛利率 ((总售价-总成本)/总售价)*100 if ( Convert.ToDecimal( this.lblSingular.Text ) == 0 ) { this.lblGrossMargin.Text = "100%"; } else { if ( Convert.ToDecimal( this.lblTotalPrice.Text ) != Convert.ToDecimal( "0" ) ) { this.lblGrossMargin.Text = ( ( ( Convert.ToDecimal( this.lblTotalPrice.Text ) - Convert.ToDecimal( this.lbltotalCost.Text ) ) / Convert.ToDecimal( this.lblTotalPrice.Text ) ) * 100 ).ToString( "N2" ) + "%"; } else { this.lblGrossMargin.Text = "0%"; } } //平均售价 if ( Convert.ToDecimal( lblSingular.Text ) == 0 ) { this.lblAverageSellingPrice.Text = "0.00"; } else { this.lblAverageSellingPrice.Text = ( Convert.ToDecimal( this.lblTotalPrice.Text ) / Convert.ToInt32( this.lblSingular.Text ) ).ToString( "N2" ); } //平均成本 if ( Convert.ToDecimal( lblSingular.Text ) == 0 ) { this.lblAverageCost.Text = "0.00"; } else { this.lblAverageCost.Text = ( Convert.ToDecimal( this.lbltotalCost.Text ) / Convert.ToInt32( this.lblSingular.Text ) ).ToString( "N2" ); } //平均毛利 if ( Convert.ToDecimal( lblSingular.Text ) == 0 ) { this.lblAverageGrossProfit.Text = "0.00"; } else { this.lblAverageGrossProfit.Text = ( Convert.ToDecimal( this.lblGrossProfit.Text ) / Convert.ToInt32( this.lblSingular.Text ) ).ToString( "N2" ); } #endregion } ) ); } } ); try { dgv.ClearSelection(); this.ucPagerEx1.TbDataSource = dt; } catch { } return pageData.TotalCount; } } }