FrmCostDetail.cs 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Data;
  4. using System.Linq;
  5. using System.Windows.Forms;
  6. namespace LYFZ.Software.MainBusiness.StatisticalInquiry
  7. {
  8. public partial class FrmCostDetail : LYFZ.Software.UI.StatisticalInquiry.FrmCostDetail
  9. {
  10. private System.Data.DataSet _dataSet = null;
  11. private DataGridViewRow _dataGridViewRow = null;
  12. DataTable _dataTable = null;
  13. string _listNullColumn = "";
  14. string _listShowColumns = " 类型, 项目, 成本, 售价, 数量";
  15. string _listHideColumns = "";
  16. System.Data.DataTable _dataScenery = null;
  17. bool _IsChildrenOrder = false;
  18. public FrmCostDetail( DataGridViewRow dataGridViewRow, bool IsChildrenOrder = false )
  19. {
  20. _dataGridViewRow = dataGridViewRow;
  21. _IsChildrenOrder = IsChildrenOrder;
  22. // 按Excape退出;
  23. this.KeyPreview = true;
  24. this.KeyDown += FrmCostDetail_KeyDown;
  25. // 数据加载;
  26. this.Load += FrmCostDetail_Load;
  27. // 显示数据;
  28. this.Shown += FrmCostDetail_Shown;
  29. // 选中行时;
  30. this.dgv.SelectionChanged += Dgv_SelectionChanged;
  31. if (_dataGridViewRow != null)
  32. {
  33. decimal selling_price = Convert.ToDecimal( _dataGridViewRow.Cells["套系价格"].Value.ToString() ) + Convert.ToDecimal( _dataGridViewRow.Cells["加挑总价"].Value.ToString() );
  34. decimal cost_price = Convert.ToDecimal( _dataGridViewRow.Cells["商品成本"].Value.ToString() ) + Convert.ToDecimal( _dataGridViewRow.Cells["服务成本"].Value.ToString() ) + Convert.ToDecimal( _dataGridViewRow.Cells["加挑成本"].Value.ToString() );
  35. // 订单售价;
  36. this.lab_selling_price.Text = selling_price.ToString();
  37. // 订单成本;
  38. this.lab_cost_price.Text = cost_price.ToString();
  39. // 毛利;
  40. this.lab_gross_profit.Text = ( selling_price - cost_price ).ToString();
  41. // 毛利率;
  42. if (selling_price != 0 )
  43. this.lab_gross_rate.Text = ( (selling_price - cost_price) / selling_price * 100).ToString();
  44. }
  45. }
  46. private void Dgv_SelectionChanged( object sender, EventArgs e )
  47. {
  48. DataGridViewRow dgrCurrent = this.dgv.SelectedRows[0];
  49. if ( dgrCurrent.Cells[0].Value == null )
  50. return;
  51. dgrCurrent.DefaultCellStyle.SelectionForeColor = dgrCurrent.DefaultCellStyle.ForeColor;
  52. dgrCurrent.DefaultCellStyle.SelectionBackColor = dgrCurrent.DefaultCellStyle.BackColor;
  53. }
  54. private void FrmCostDetail_Shown( object sender, EventArgs e )
  55. {
  56. // 获取数据;
  57. _dataScenery = _dataSet.Tables["ds"];
  58. System.Data.DataTable dataProduct = _dataSet.Tables["ds1"];
  59. System.Data.DataTable dataService = _dataSet.Tables["ds2"];
  60. System.Data.DataTable dataPlusProduct = _dataSet.Tables["ds3"];
  61. DataPadding( _dataScenery, "订单景点" );
  62. DataPadding( dataProduct, "订单商品", IsShowScenery: true );
  63. DataPadding( dataService, "订单服务", IsShowScenery: true );
  64. DataPadding( dataPlusProduct, "订单加挑", IsShowScenery: true, IsAddNullRow: false );
  65. }
  66. private void FrmCostDetail_Load( object sender, EventArgs e )
  67. {
  68. LYFZ.DAL.CostAccounting costAccounting = new DAL.CostAccounting();
  69. _dataSet = costAccounting.GetCostDetail( _dataGridViewRow.Tag.ToString() );
  70. // 初始化Columns;
  71. InitDataGridViewColumns();
  72. }
  73. private void FrmCostDetail_KeyDown( object sender, KeyEventArgs e )
  74. {
  75. if ( e.KeyCode == Keys.Escape )
  76. this.Close();
  77. }
  78. private void InitDataGridViewColumns()
  79. {
  80. DataGridViewTextBoxColumn column = null;
  81. if ( !string.IsNullOrEmpty( _listShowColumns ) )
  82. {
  83. // 有必须的话, 清空之前的列头信息;
  84. this.dgv.Rows.Clear();
  85. this.dgv.Columns.Clear();
  86. List<string> listColumns = _listShowColumns.Split( ',' ).ToList();
  87. for ( int i = 0; i < listColumns.Count; i++ )
  88. {
  89. column = new DataGridViewTextBoxColumn();
  90. column.ReadOnly = true;
  91. column.Name = listColumns[i].Trim();
  92. column.HeaderText = listColumns[i].Trim();
  93. // 是否排序;
  94. column.SortMode = DataGridViewColumnSortMode.NotSortable;
  95. this.dgv.Columns.Add( column );
  96. }
  97. this.dgv.ColumnHeadersHeight = 25;
  98. this.dgv.Columns[1].Width = 250;
  99. this.dgv.Columns[4].Width = 88;
  100. this.dgv.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
  101. this.dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
  102. }
  103. this.dgv.ColumnHeadersVisible = false;
  104. //this.dgv.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
  105. }
  106. private void DataPadding( DataTable dataTable, string strType, bool IsShowScenery = false, bool IsAddNullRow = true )
  107. {
  108. DataGridViewRow data = null;
  109. data = new DataGridViewRow();
  110. data.CreateCells( this.dgv );
  111. data.Cells[0].Value = strType;
  112. data.Cells[1].Value = "项目";
  113. data.Cells[2].Value = "成本";
  114. data.Cells[3].Value = "售价";
  115. data.Cells[4].Value = "数量";
  116. data.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
  117. data.DefaultCellStyle.ForeColor = System.Drawing.Color.FloralWhite;
  118. data.DefaultCellStyle.BackColor = System.Drawing.Color.FromArgb( 48, 108, 150 );
  119. this.dgv.Rows.Add( data );
  120. foreach ( DataRow item in dataTable.Rows )
  121. {
  122. data = new DataGridViewRow();
  123. data.DefaultCellStyle.ForeColor = System.Drawing.Color.Black;
  124. data.DefaultCellStyle.BackColor = System.Drawing.Color.AntiqueWhite;
  125. data.CreateCells( this.dgv );
  126. if ( !IsShowScenery )
  127. data.Cells[1].Value = item["名称"];
  128. else
  129. {
  130. if ( _IsChildrenOrder )
  131. {
  132. foreach ( DataRow dr in _dataScenery.Rows )
  133. {
  134. if ( dr["子单号"].ToUpperString() == item["子单号"].ToUpperString() )
  135. {
  136. data.Cells[1].Value = "[" + dr["名称"].ToString() + "]" + item["名称"].ToString();
  137. break;
  138. }
  139. }
  140. }
  141. else
  142. {
  143. data.Cells[1].Value = item["名称"];
  144. }
  145. }
  146. data.Cells[2].Value = item["成本"];
  147. data.Cells[3].Value = item["售价"];
  148. data.Cells[4].Value = item["数量"];
  149. this.dgv.Rows.Add( data );
  150. }
  151. // 空行;
  152. if ( IsAddNullRow )
  153. {
  154. data = new DataGridViewRow();
  155. data.DefaultCellStyle.BackColor = System.Drawing.Color.White;
  156. this.dgv.Rows.Add( data );
  157. }
  158. }
  159. }
  160. }