using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Collections; using System.Windows.Forms; using CoreFS.CA06; using Infragistics.Win.UltraWinGrid; using Infragistics.Win; using SaleBusiness = Core.StlMes.Client.Sale.BLL.SaleBusinessMgt; namespace Core.StlMes.Client.Sale.UI.Balance.BalanceAccount { public partial class DlgInvoicePrint : Form { private Core.StlMes.Client.Sale.BLL.SaleBusinessMgt.Balance.SlmBalanceInfo slmBalanceInfo = null; public DlgInvoicePrint(CoreFS.CA06.OpeBase ob) { this._ob = ob; InitializeComponent(); } private CoreFS.CA06.OpeBase _ob = null; public List listInvoiceNo = null; public Boolean isOrgInvoice = false; private int _RowCount = 0; private void DlgInvoicePrint_Load(object sender, EventArgs e) { this.MaximizeBox = false; this.ultraGrid1.DisplayLayout.Override.RowSelectors = DefaultableBoolean.False; this.ultraGrid1.DisplayLayout.Override.RowSelectorNumberStyle = RowSelectorNumberStyle.None; slmBalanceInfo = new Core.StlMes.Client.Sale.BLL.SaleBusinessMgt.Balance.SlmBalanceInfo(this._ob); if (!isOrgInvoice) this.InitData(); else this.InitDataOrg(); } /// /// 设置首次结算单位 /// /// private Hashtable GetFST_DRAWEE_UNIT() { Hashtable hs = new Hashtable(); //天津钢管集团股份有限公司 hs.Add("120603", new CompanyAddressAndTaxNum("天津钢管集团股份有限公司", " ", " ", " ")); hs.Add("120604", new CompanyAddressAndTaxNum("天津钢管钢铁贸易有限公司", " ", " ", " ")); hs.Add("120605", new CompanyAddressAndTaxNum("天津钢管国际贸易有限公司", " ", " ", " ")); hs.Add("120606", new CompanyAddressAndTaxNum("天津钢管制造有限公司", " ", " ", " ")); return hs; } class CompanyAddressAndTaxNum { private string _BUYERNAME = ""; private string _TAXNO = ""; private string _ADDRESS = ""; private string _ACCOUNT = ""; public CompanyAddressAndTaxNum(string buyername, string taxno, string address, string account) { this._BUYERNAME = buyername; this._TAXNO = taxno; this._ADDRESS = address; this._ACCOUNT = account; } public string BUYERNAME { get { return this._BUYERNAME; } set { this._BUYERNAME = value; } } public string TAXNO { get { return this._TAXNO; } set { this._TAXNO = value; } } public string ADDRESS { get { return this._ADDRESS; } set { this._ADDRESS = value; } } public string ACCOUNT { get { return this._ACCOUNT; } set { this._ACCOUNT = value; } } } private void InitDataOrg() { string INVOICENOZ = "INVOICENOZ"; string INVOICENO = "INVOICENO"; string firstInviceCmp = "FST_DRAWEE_UNIT"; string firstInviceCmpValue = ""; DataSet ds = this.slmBalanceInfo.GetInvoicedSlmBalanceInfoByListInvoiceNoOrg(listInvoiceNo); if (ds == null || ds.Tables.Count == 0 || ds.Tables[0].Rows.Count == 0) return; Hashtable hsCmp = GetFST_DRAWEE_UNIT(); Hashtable hs = new Hashtable(); Hashtable hsdetail = new Hashtable(); System.Collections.Generic.List listrow = new System.Collections.Generic.List(); foreach (DataRow dr in ds.Tables[0].Rows) { // string invoiceno = dr[INVOICENO].ToString(); if (dr[firstInviceCmp].ToString() == "120603" || dr[firstInviceCmp].ToString() == "120604" || dr[firstInviceCmp].ToString() == "120605") { string invoicenoz = dr[INVOICENOZ].ToString(); if (hs.ContainsKey(invoicenoz)) { listrow = (List)hs[invoicenoz]; hs.Remove(invoicenoz); } else { listrow = new List(); } if (!listrow.Contains(dr)) { listrow.Add(dr); } hs.Add(invoicenoz, listrow); } } Hashtable hsrows = new Hashtable(); foreach (string s in hs.Keys) { listrow = (List)hs[s]; DataRow ugrP = listrow[0]; int rowIndex = 0; Infragistics.Win.UltraWinGrid.UltraGridRow ugrN = null; //新行 DataRow ugrC = null; for (int j = 0; j < listrow.Count; j++) { if (j == 8) rowIndex = 0; ugrC = listrow[j]; if (rowIndex == 0) { ugrN = this.ultraGrid1.DisplayLayout.Bands[0].AddNew(); for (int k = 0; k < this.ultraGrid1.DisplayLayout.Bands[0].Columns.Count; k++) { ugrN.Cells[k].Value = this.ultraGrid1.DisplayLayout.Bands[0].Columns[k].DefaultCellValue; } // 首次受票人 firstInviceCmpValue = ugrP[firstInviceCmp].ToString(); // UnboundColumn36 buyername //UnboundColumn37 taxno // UnboundColumn38 address and phone // UnboundColumn39 bank account CompanyAddressAndTaxNum cmp = (CompanyAddressAndTaxNum)hsCmp["120606"]; ugrN.Cells["UnboundColumn36"].Value = cmp.BUYERNAME; ugrN.Cells["UnboundColumn37"].Value = cmp.TAXNO; ugrN.Cells["UnboundColumn38"].Value = cmp.ADDRESS; ugrN.Cells["UnboundColumn39"].Value = cmp.ACCOUNT; if (hsCmp.Contains(ugrP["BUYERCODE"].ToString())) { CompanyAddressAndTaxNum cmp1 = (CompanyAddressAndTaxNum)hsCmp[ugrP["BUYERCODE"].ToString()]; ugrN.Cells[2].Value = cmp1.BUYERNAME; ugrN.Cells[3].Value = cmp1.TAXNO; ugrN.Cells[4].Value = cmp1.ADDRESS; ugrN.Cells[5].Value = cmp1.ACCOUNT; } ugrN.Cells[0].Value = ugrC["INVOICENO"].ToString().Split('.')[0]; ugrN.Cells[1].Value = System.DateTime.Today.ToShortDateString(); // ugrN.Cells[2].Value = ugrP["BUYERNAME"]; // ugrN.Cells[3].Value = ugrP["TAXNO"]; // ugrN.Cells[4].Value = ugrP["ADDRESS"]; // ugrN.Cells[5].Value = ugrP["ACCOUNT"]; ugrN.Cells[74].Value = ugrC["AUDITINGPERSON"]; ugrN.Cells[75].Value = ugrC["INVOICEPERSON"]; ugrN.Cells[72].Value = ugrC["REMARK"]; } ugrN.Cells[6 + 8 * rowIndex].Value = ugrC["CATEGORY"] + " " + ugrC["STEELCODE"]; ugrN.Cells[7 + 8 * rowIndex].Value = ugrC["SPEC"]; ugrN.Cells[8 + 8 * rowIndex].Value = "吨"; ugrN.Cells[9 + 8 * rowIndex].Value = ugrC["WEIGHT"]; ugrN.Cells[10 + 8 * rowIndex].Value = ugrC["PRICE"]; ugrN.Cells[11 + 8 * rowIndex].Value = ugrC["MONEY"].ToString(); // ugrN.Cells[11 + 8 * rowIndex].Value = System.Math.Round(GetNoNullDec(ugrC["MONEY"]) / 1.16, 2); // ugrN.Cells[12 + 8 * rowIndex].Value = "17%"; // ugrN.Cells[13 + 8 * rowIndex].Value = ugrC["TAXMONEY"]; if (rowIndex == 7 || j == listrow.Count - 1) { double fl1 = GetTotalMoney(ugrN); double fl2 = 0; double fl3 = fl1 + fl2; ugrN.Cells["UnboundColumn26"].Value = "¥" + Convert.ToString(fl1); // ugrN.Cells["UnboundColumn28"].Value = "¥" + Convert.ToString(fl2); ugrN.Cells[70].Value = "¥" + Util.ConverObject.ConvertNumberToChinese(Convert.ToString((int)(Math.Round(fl3 * 100)))); ugrN.Cells[71].Value = "¥" + Convert.ToString(fl3); ugrN.Cells["UnboundColumn24"].Value = this.GetTotalWeight(ugrN); } rowIndex++; } } this.ultraGrid1.UpdateData(); _RowCount = this.ultraGrid1.Rows.Count; if (this.ultraGrid1.Rows.Count > 0) this.ultraGrid1.Rows[0].Activate(); this.ultraMaskedEdit2.InputMask = string.Format(@"nnn \o\f\ \{0}", _RowCount.ToString()); this.ultraMaskedEdit2.Text = string.Format("1 of {0}", _RowCount.ToString()); } private void InitData() { string INVOICENOZ = "INVOICENOZ"; string INVOICENO = "INVOICENO"; string firstInviceCmp = "FST_DRAWEE_UNIT"; string firstInviceCmpValue = ""; DataSet ds = this.slmBalanceInfo.GetInvoicedSlmBalanceInfoByListInvoiceNo(listInvoiceNo); if (ds == null || ds.Tables.Count == 0 || ds.Tables[0].Rows.Count == 0) return; Hashtable hsCmp = GetFST_DRAWEE_UNIT(); Hashtable hs = new Hashtable(); Hashtable hsdetail = new Hashtable(); System.Collections.Generic.List listrow = new System.Collections.Generic.List(); foreach (DataRow dr in ds.Tables[0].Rows) { // string invoiceno = dr[INVOICENO].ToString(); string invoicenoz = dr[INVOICENOZ].ToString(); if (hs.ContainsKey(invoicenoz)) { listrow = (List)hs[invoicenoz]; hs.Remove(invoicenoz); } else { listrow = new List(); } if (!listrow.Contains(dr)) { listrow.Add(dr); } hs.Add(invoicenoz, listrow); } Hashtable hsrows = new Hashtable(); foreach (string s in hs.Keys) { listrow = (List)hs[s]; DataRow ugrP = listrow[0]; int rowIndex = 0; Infragistics.Win.UltraWinGrid.UltraGridRow ugrN = null; //新行 DataRow ugrC = null; for (int j = 0; j < listrow.Count; j++) { if (j == 8) rowIndex = 0; ugrC = listrow[j]; if (rowIndex == 0) { ugrN = this.ultraGrid1.DisplayLayout.Bands[0].AddNew(); for (int k = 0; k < this.ultraGrid1.DisplayLayout.Bands[0].Columns.Count; k++) { ugrN.Cells[k].Value = this.ultraGrid1.DisplayLayout.Bands[0].Columns[k].DefaultCellValue; } // 首次受票人 firstInviceCmpValue = ugrP[firstInviceCmp].ToString(); // UnboundColumn36 buyername //UnboundColumn37 taxno // UnboundColumn38 address and phone // UnboundColumn39 bank account if (hsCmp.ContainsKey(firstInviceCmpValue)) { CompanyAddressAndTaxNum cmp = (CompanyAddressAndTaxNum)hsCmp[firstInviceCmpValue]; ugrN.Cells["UnboundColumn36"].Value = cmp.BUYERNAME; ugrN.Cells["UnboundColumn37"].Value = cmp.TAXNO; ugrN.Cells["UnboundColumn38"].Value = cmp.ADDRESS; ugrN.Cells["UnboundColumn39"].Value = cmp.ACCOUNT; } else { continue; } ugrN.Cells[0].Value = ugrC["INVOICENO"].ToString().Split('.')[0]; ugrN.Cells[1].Value = System.DateTime.Today.ToShortDateString(); ugrN.Cells[2].Value = ugrP["BUYERNAME"]; ugrN.Cells[3].Value = ugrP["TAXNO"]; ugrN.Cells[4].Value = ugrP["ADDRESS"]; ugrN.Cells[5].Value = ugrP["ACCOUNT"]; ugrN.Cells[74].Value = ugrC["AUDITINGPERSON"]; ugrN.Cells[75].Value = ugrC["INVOICEPERSON"]; ugrN.Cells[72].Value = ugrC["REMARK"]; } ugrN.Cells[6 + 8 * rowIndex].Value = ugrC["CATEGORY"] + " " + ugrC["STEELCODE"]; ugrN.Cells[7 + 8 * rowIndex].Value = ugrC["SPEC"]; ugrN.Cells[8 + 8 * rowIndex].Value = "吨"; ugrN.Cells[9 + 8 * rowIndex].Value = ugrC["WEIGHT"]; ugrN.Cells[10 + 8 * rowIndex].Value = ugrC["PRICE"]; // ugrN.Cells[11 + 8 * rowIndex].Value = System.Math.Round(GetNoNullDec(ugrC["MONEY"]) / 1.16, 2); ugrN.Cells[11 + 8 * rowIndex].Value = ugrC["MONEY"].ToString(); // ugrN.Cells[12 + 8 * rowIndex].Value = "17%"; // ugrN.Cells[13 + 8 * rowIndex].Value = ugrC["TAXMONEY"]; if (rowIndex == 7 || j == listrow.Count - 1) { double fl1 = GetTotalMoney(ugrN); // float fl2 = GetTotalTax(fl1); double fl2 = 0; double fl3 = fl1 + fl2; ugrN.Cells["UnboundColumn26"].Value = "¥" + Convert.ToString(fl1); // ugrN.Cells["UnboundColumn28"].Value = "¥" + Convert.ToString(fl2); ugrN.Cells[70].Value = "¥" + Util.ConverObject.ConvertNumberToChinese(Convert.ToString((int)(Math.Round(fl3 * 100)))); ugrN.Cells[71].Value = "¥" + Convert.ToString(fl3); ugrN.Cells["UnboundColumn24"].Value = this.GetTotalWeight(ugrN); } rowIndex++; } } this.ultraGrid1.UpdateData(); _RowCount = this.ultraGrid1.Rows.Count; if (this.ultraGrid1.Rows.Count > 0) this.ultraGrid1.Rows[0].Activate(); this.ultraMaskedEdit2.InputMask = string.Format(@"nnn \o\f\ \{0}", _RowCount.ToString()); this.ultraMaskedEdit2.Text = string.Format("1 of {0}", _RowCount.ToString()); } private float GetNoNullDec(object obj) { if (obj == null || obj == DBNull.Value) return 0; try { return Convert.ToSingle(obj); } catch { return 0; } } private double GetTotalMoney(Infragistics.Win.UltraWinGrid.UltraGridRow ugr) { double fl = 0; double fl1 = 0; for (int i = 0; i < 8; i++) { if (ugr.Cells[11 + 8 * i].Value == null) continue; try { fl1 = Convert.ToDouble(ugr.Cells[11 + 8 * i].Value); } catch { fl1 = 0; } fl += fl1; } return fl; } private float GetTotalWeight(Infragistics.Win.UltraWinGrid.UltraGridRow ugr) { float fl = 0; float fl1 = 0; for (int i = 0; i < 8; i++) { if (ugr.Cells[11 + 8 * i].Value == null) continue; try { fl1 = Convert.ToSingle(ugr.Cells[9 + 8 * i].Value); } catch { fl1 = 0; } fl += fl1; } return fl; } private float GetTotalTax(float fl) { float fl1 = (float)0.13; fl = fl * fl1; return fl; } private void Init() { Infragistics.Win.UltraWinGrid.UltraGridRow ugr = this.ultraGrid1.DisplayLayout.Bands[0].AddNew(); ugr.Cells["UnboundColumn5"].Value = "开票日期"; } private void button2_Click(object sender, EventArgs e) { this.Close(); } private void button1_Click(object sender, EventArgs e) { this.DialogResult = DialogResult.OK; this.ultraPrintPreviewDialog1.ShowDialog(); } private void ultraMaskedEdit2_EditorButtonClick(object sender, Infragistics.Win.UltraWinEditors.EditorButtonEventArgs e) { int min = (int)this.ultraMaskedEdit2.MinValue; int max = (int)this.ultraMaskedEdit2.MaxValue; int newValue = min; EditorWithMask maskEdit = e.Button.Editor as EditorWithMask; try { string maskText = maskEdit.GetText(Infragistics.Win.UltraWinMaskedEdit.MaskMode.Raw); if (!Convert.IsDBNull(maskText)) newValue = int.Parse(maskText); } catch { } switch (e.Button.Key) { case "First": newValue = min; break; case "Last": newValue = max; break; case "Next": newValue++; break; case "Previous": newValue--; break; } if (newValue < 1) newValue = 1; else if (newValue > _RowCount) newValue = _RowCount; e.Button.Editor.Value = newValue; this.ultraGrid1.Rows[newValue - 1].Activate(); } private void button3_Click(object sender, EventArgs e) { Util.UtilUltraGrid.ExportGridDataToExcel(this.Text, this.ultraGrid1); } } }