/// <summary> /// 计算 /// </summary> private void btnCal_Click(object sender, EventArgs e) { //当月的采购数据 #region string where = " BP.SLIP_DATE >='" + txtDateTime.Value.ToString("yyyy/MM/01") + "' AND BP.SLIP_DATE <'" + txtDateTime.Value.AddMonths(1).ToString("yyyy/MM/01") + "' "; DataTable purchaseDt = bInvoice.GetPurchaseInfo(where).Tables[0]; //销售数据的整理,外币的转换 DataTable pDt = purchaseDt.Clone(); DataRow pDr = null; string currentProductCode = ""; foreach (DataRow dr in purchaseDt.Rows) { decimal exchange = 1; string currencyCode = CConvert.ToString(dr["CURRENCY_CODE"]); if (!CConstant.EXCHANGE_RMB.Equals(currencyCode)) { exchange = bExchange.GetExchange(CConvert.ToDateTime(txtDateTime.Value.ToString("yyyy/MM/01")), currencyCode, CConstant.EXCHANGE_RMB); } //总金额=发票金额*汇率+税+包装金额*汇率 decimal amount = CConvert.ToDecimal(dr["INVOICE_AMOUNT"]) * exchange + CConvert.ToDecimal(dr["TAX_AMOUNT"]) + CConvert.ToDecimal(dr["PACKING_AMOUNT"]) * exchange; string productCode = CConvert.ToString(dr["PRODUCT_CODE"]); if (currentProductCode != productCode) { if (!string.IsNullOrEmpty(currentProductCode)) { pDt.Rows.Add(pDr); } currentProductCode = productCode; pDr = pDt.NewRow(); pDr["RECEIPT_WAREHOUSE_CODE"] = dr["RECEIPT_WAREHOUSE_CODE"]; pDr["PRODUCT_CODE"] = dr["PRODUCT_CODE"]; pDr["QUANTITY"] = dr["QUANTITY"]; pDr["INVOICE_AMOUNT"] = amount; } else { pDr["INVOICE_AMOUNT"] = CConvert.ToDecimal(pDr["INVOICE_AMOUNT"]) + amount; pDr["QUANTITY"] = CConvert.ToDecimal(pDr["QUANTITY"]) + CConvert.ToDecimal(dr["QUANTITY"]); } } if (pDr != null) { pDt.Rows.Add(pDr); } #endregion //当月的销售数据 where = " BS.SLIP_DATE >='" + txtDateTime.Value.ToString("yyyy/MM/01") + "' AND BS.SLIP_DATE <'" + txtDateTime.Value.AddMonths(1).ToString("yyyy/MM/01") + "' "; DataTable salesDt = bInvoice.GetSalesInfo(where).Tables[0]; //上个月的月末数据 where = " YEAR_MONTH ='" + txtDateTime.Value.AddMonths(-1).ToString("yyyyMM") + "' "; DataTable previousMonthStockDt = bInvoice.GetPreviousMonthStockData(where).Tables[0]; //上个月存在的数据的整理 #region DataTable insertDt = previousMonthStockDt.Clone(); DataRow insertDr = null; foreach (DataRow dr in previousMonthStockDt.Rows) { insertDr = insertDt.NewRow(); insertDr["YEAR"] = txtDateTime.Value.ToString("yyyy"); insertDr["MONTH"] = txtDateTime.Value.ToString("MM"); insertDr["YEAR_MONTH"] = txtDateTime.Value.ToString("yyyyMM"); insertDr["WAREHOUSE_CODE"] = dr["WAREHOUSE_CODE"]; insertDr["PRODUCT_CODE"] = dr["PRODUCT_CODE"]; insertDr["PREVIOUS_AMOUNT"] = dr["AMOUNT"]; insertDr["PREVIOUS_QUANTITY"] = dr["STOCK"]; insertDr["PREVIOUS_PRICE"] = dr["PRICE"]; foreach (DataRow purchaseDr in purchaseDt.Rows) { if (CConvert.ToString(purchaseDr["PRODUCT_CODE"]).Equals(dr["PRODUCT_CODE"])) { insertDr["PURCHASE_QUANTITY"] = purchaseDr["QUANTITY"]; insertDr["PURCHASE_AMOUNT"] = purchaseDr["INVOICE_AMOUNT"]; purchaseDt.Rows.Remove(purchaseDr); break; } } foreach (DataRow sDr in salesDt.Rows) { if (CConvert.ToString(sDr["PRODUCT_CODE"]).Equals(dr["PRODUCT_CODE"])) { insertDr["SALES_QUANTITY"] = sDr["QUANTITY"]; salesDt.Rows.Remove(sDr); break; } } decimal price = 0; try { price = (CConvert.ToDecimal(insertDr["PREVIOUS_AMOUNT"]) + CConvert.ToDecimal(insertDr["PURCHASE_AMOUNT"])) / (CConvert.ToDecimal(insertDr["PREVIOUS_QUANTITY"]) + CConvert.ToDecimal(insertDr["PURCHASE_AMOUNT"])); } catch (Exception ex) { } insertDr["PRICE"] = price; insertDr["SALES_AMOUNT"] = price * CConvert.ToDecimal(insertDr["SALES_QUANTITY"]); insertDr["STOCK"] = CConvert.ToDecimal(insertDr["PREVIOUS_QUANTITY"]) + CConvert.ToDecimal(insertDr["PURCHASE_QUANTITY"]) - CConvert.ToDecimal(insertDr["SALES_QUANTITY"]); insertDr["AMOUNT"] = price * CConvert.ToDecimal(insertDr["STOCK"]); insertDr["STATUS_FLAG"] = CConstant.INIT_STATUS; insertDr["CREATE_USER"] = UserTable.CODE; insertDr["LAST_UPDATE_USER"] = UserTable.CODE; insertDt.Rows.Add(insertDr); } #endregion //当月采购数据的整理 #region foreach (DataRow purchaseDr in purchaseDt.Rows) { insertDr = insertDt.NewRow(); insertDr["YEAR"] = txtDateTime.Value.ToString("yyyy"); insertDr["MONTH"] = txtDateTime.Value.ToString("MM"); insertDr["YEAR_MONTH"] = txtDateTime.Value.ToString("yyyyMM"); insertDr["WAREHOUSE_CODE"] = purchaseDr["RECEIPT_WAREHOUSE_CODE"]; insertDr["PRODUCT_CODE"] = purchaseDr["PRODUCT_CODE"]; insertDr["PREVIOUS_AMOUNT"] = 0; insertDr["PREVIOUS_QUANTITY"] = 0; insertDr["PREVIOUS_PRICE"] = 0; insertDr["PURCHASE_QUANTITY"] = purchaseDr["QUANTITY"]; insertDr["PURCHASE_AMOUNT"] = purchaseDr["INVOICE_AMOUNT"]; foreach (DataRow sDr in salesDt.Rows) { if (CConvert.ToString(sDr["PRODUCT_CODE"]).Equals(purchaseDr["PRODUCT_CODE"])) { insertDr["SALES_QUANTITY"] = sDr["QUANTITY"]; salesDt.Rows.Remove(sDr); break; } } decimal price = 0; try { price = (CConvert.ToDecimal(insertDr["PREVIOUS_AMOUNT"]) + CConvert.ToDecimal(insertDr["PURCHASE_AMOUNT"])) / (CConvert.ToDecimal(insertDr["PREVIOUS_QUANTITY"]) + CConvert.ToDecimal(insertDr["PURCHASE_AMOUNT"])); } catch (Exception ex) { } insertDr["PRICE"] = price; insertDr["SALES_AMOUNT"] = price * CConvert.ToDecimal(insertDr["SALES_QUANTITY"]); insertDr["STOCK"] = CConvert.ToDecimal(insertDr["PREVIOUS_QUANTITY"]) + CConvert.ToDecimal(insertDr["PURCHASE_QUANTITY"]) - CConvert.ToDecimal(insertDr["SALES_QUANTITY"]); insertDr["AMOUNT"] = price * CConvert.ToDecimal(insertDr["STOCK"]); insertDr["STATUS_FLAG"] = CConstant.INIT_STATUS; insertDr["CREATE_USER"] = UserTable.CODE; insertDr["LAST_UPDATE_USER"] = UserTable.CODE; insertDt.Rows.Add(insertDr); } #endregion try { if (bInvoice.AddMonthlyStock(insertDt) > 0) { MessageBox.Show("计算完成!", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information); //this.Close(); } else { MessageBox.Show("计算失败!", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information); } } catch (Exception ex) { MessageBox.Show("计算失败,请重试或与系统管理员联系!", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information); Logger.Error("月末计算:", ex); } }
/// <summary> /// OEM制品管理表 /// </summary> public void ExportOEMProduct() { //OEM制品管理表所需要的导出字段 #region exportDt.Columns.Clear(); exportDt.Columns.Add("MACHINE_CODE", Type.GetType("System.String")); //机械编号 exportDt.Columns.Add("MACHINE_NAME", Type.GetType("System.String")); //机械名称 exportDt.Columns.Add("BODY_PURCHASE_ORDER_SLIP_NUMBER", Type.GetType("System.String")); //机械本体采购订单编号D:\龙泽ERP\ERP.WinUI\Finance\FrmSalesSearch.cs exportDt.Columns.Add("BODY_INVOICE_NUMBER_LOCAL", Type.GetType("System.String")); //机械本体采购发票编号 exportDt.Columns.Add("BODY_PURCHASE_SLIP_DATE", Type.GetType("System.String")); //机械本体采购发票日期 exportDt.Columns.Add("BODY_INVOICE_AMOUNT", Type.GetType("System.String")); //机械本体采购发票金额(含税) exportDt.Columns.Add("PART_PURCHASE_ORDER_SLIP_NUMBER", Type.GetType("System.String")); //机械部件采购订单编号(国内) exportDt.Columns.Add("PART_INVOICE_NUMBER_LOCAL", Type.GetType("System.String")); //机械部件采购发票编号(国内) exportDt.Columns.Add("PART_PURCHASE_SLIP_DATE", Type.GetType("System.String")); //机械部件采购发票日期(国内) exportDt.Columns.Add("PART_INVOICE_AMOUNT", Type.GetType("System.Decimal")); //机械部件采购发票金额(含税)(国内) exportDt.Columns.Add("FOREIGN_PURCHASE_ORDER_SLIP_NUMBER", Type.GetType("System.String")); //机械部件采购订单编号(国外) exportDt.Columns.Add("FOREIGN_PURCHASE_INVOICE_NUMBER", Type.GetType("System.String")); //机械部件采购发票编号(国外) exportDt.Columns.Add("FOREIGN_PURCHASE_SLIP_DATE", Type.GetType("System.String")); //机械部件采购发票日期(国外) exportDt.Columns.Add("FOREIGN_INVOICE_AMOUNT", Type.GetType("System.Decimal")); //机械部件采购发票金额(含税)(国外) exportDt.Columns.Add("EXCHANGE_RATE", Type.GetType("System.Decimal")); //外币汇率 exportDt.Columns.Add("RMB_INVOICE_AMOUNT", Type.GetType("System.Decimal")); //外币拆合人民币 exportDt.Columns.Add("TAX_AMOUNT", Type.GetType("System.Decimal")); //税金 exportDt.Columns.Add("TOTAL", Type.GetType("System.Decimal")); //小计 exportDt.Columns.Add("TOTAL_AMOUNT", Type.GetType("System.Decimal")); //总金额(采购金额) exportDt.Columns.Add("ORDER_SLIP_NUMBER", Type.GetType("System.String")); //销售订单编号 exportDt.Columns.Add("CUSTOMER_PO_NUMBER", Type.GetType("System.String")); //销售合同编号 exportDt.Columns.Add("SHIPMENT_SLIP_DATE", Type.GetType("System.String")); //出库日期 exportDt.Columns.Add("SALES_INVOICE_NUMBER", Type.GetType("System.String")); //销售发票NO exportDt.Columns.Add("ORDER_SLIP_DATE", Type.GetType("System.String")); //销售日期 exportDt.Columns.Add("AMOUNT_WITHOUT_TAX", Type.GetType("System.Decimal")); //不含税金额 exportDt.Columns.Add("TOTAL_BODY_AMOUNT", Type.GetType("System.Decimal")); //机械本体不含税金额 exportDt.Columns.Add("PART_AMOUNT", Type.GetType("System.Decimal")); //机械部件不含税金额 exportDt.Columns.Add("GROSS_PROFIT", Type.GetType("System.Decimal")); //利润 exportDt.Columns.Add("CHECK_NUMBER", Type.GetType("System.String")); //检查编号 exportDt.Columns.Add("CHECK_DATE", Type.GetType("System.String")); //检查日期 exportDt.Columns.Add("CUSTOMER_NAME", Type.GetType("System.String")); //代理店名称 exportDt.Columns.Add("ENDER_CUSTOMER_NAME", Type.GetType("System.String")); //需要家 exportDt.Columns.Add("ADDRESS", Type.GetType("System.String")); //纳入先地址 exportDt.Columns.Add("ADDRESS2", Type.GetType("System.String")); //纳入先地址2 exportDt.Columns.Add("FANUC_SERIAL_NUMBER", Type.GetType("System.String")); exportDt.Columns.Add("FANUC_SLIP_NUMBER", Type.GetType("System.String")); #endregion //销售订单编号的取得 #region DataTable slipTable = bInvoice.GetSlipNumber(GetOEMProductConduction()).Tables[0]; string slip_number = ""; foreach (DataRow row in slipTable.Rows) { slip_number += "'" + row["ORDER_SLIP_NUMBER"].ToString() + "',"; } if (string.IsNullOrEmpty(slip_number)) { return; } slip_number = slip_number.Substring(0, slip_number.Length - 1); #endregion //根据取出的slipnumber取得第一部分的数据 机械本体的采购信息 #region DataTable oneDt = bInvoice.GetStatementOneInfo(slip_number).Tables[0]; DataRow dr = null; string machineCode = CConvert.ToString(oneDt.Rows[0]["MACHINE_CODE"]); foreach (DataRow row in oneDt.Rows) { if (machineCode == row["MACHINE_CODE"].ToString()) { dr = exportDt.NewRow(); dr["ORDER_SLIP_NUMBER"] = row["ORDER_SLIP_NUMBER"]; dr["MACHINE_CODE"] = row["MACHINE_CODE"]; dr["MACHINE_NAME"] = row["MACHINE_NAME"]; dr["BODY_PURCHASE_ORDER_SLIP_NUMBER"] = row["PURCHASE_ORDER_NUMBER"]; dr["BODY_INVOICE_NUMBER_LOCAL"] = row["INVOICE_NUMBER"]; dr["BODY_PURCHASE_SLIP_DATE"] = row["SLIP_DATE"]; dr["FANUC_SERIAL_NUMBER"] = row["FANUC_SERIAL_NUMBER"]; dr["FANUC_SLIP_NUMBER"] = row["FANUC_SLIP_NUMBER"]; dr["BODY_INVOICE_AMOUNT"] = addDecimal(dr["BODY_INVOICE_AMOUNT"], row["INVOICE_AMOUNT"]); } else { exportDt.Rows.Add(dr); dr = exportDt.NewRow(); dr["ORDER_SLIP_NUMBER"] = row["ORDER_SLIP_NUMBER"]; dr["MACHINE_CODE"] = row["MACHINE_CODE"]; dr["MACHINE_NAME"] = row["MACHINE_NAME"]; dr["BODY_PURCHASE_ORDER_SLIP_NUMBER"] = row["PURCHASE_ORDER_NUMBER"]; dr["BODY_INVOICE_NUMBER_LOCAL"] = row["INVOICE_NUMBER"]; dr["BODY_PURCHASE_SLIP_DATE"] = row["SLIP_DATE"]; dr["FANUC_SERIAL_NUMBER"] = row["FANUC_SERIAL_NUMBER"]; dr["FANUC_SLIP_NUMBER"] = row["FANUC_SLIP_NUMBER"]; dr["BODY_INVOICE_AMOUNT"] = row["INVOICE_AMOUNT"]; machineCode = row["MACHINE_CODE"].ToString(); } } if (dr != null) { exportDt.Rows.Add(dr); } #endregion //根据取出的ORDER_SLIP_NUMBER取得第二部分的数据 机械部件的采购信息 #region dr = null; BExchange bExchange = new BExchange(); DataTable tmpDt = exportDt.Clone(); DataTable twoDt = bInvoice.GetStatementTwoInfo(slip_number).Tables[0]; string orderSlipNumber = CConvert.ToString(oneDt.Rows[0]["ORDER_SLIP_NUMBER"]); foreach (DataRow row in twoDt.Rows) { if (orderSlipNumber == row["ORDER_SLIP_NUMBER"].ToString()) { dr = tmpDt.NewRow(); dr["ORDER_SLIP_NUMBER"] = row["ORDER_SLIP_NUMBER"]; if (CConvert.ToInt32(row["TYPE"]) == CConstant.ERP_FOREIGN_NUMBER)//国外 { dr["FOREIGN_PURCHASE_ORDER_SLIP_NUMBER"] = addString(dr["FOREIGN_PURCHASE_ORDER_SLIP_NUMBER"], row["PURCHASE_ORDER_SLIP_NUMBER"]); dr["FOREIGN_PURCHASE_INVOICE_NUMBER"] = addString(dr["FOREIGN_PURCHASE_INVOICE_NUMBER"], row["INVOICE_NUMBER"]); dr["FOREIGN_PURCHASE_SLIP_DATE"] = addString(dr["FOREIGN_PURCHASE_SLIP_DATE"], row["SLIP_DATE"]); dr["FOREIGN_INVOICE_AMOUNT"] = addDecimal(dr["FOREIGN_INVOICE_AMOUNT"], row["INVOICE_AMOUNT"]); DateTime datatime = CConvert.ToDateTime(CConvert.ToDateTime(CConvert.ToDateTime(dr["FOREIGN_PURCHASE_SLIP_DATE"]).ToString("yyyy/MM") + "/1")); dr["EXCHANGE_RATE"] = bExchange.GetExchange(datatime, CConstant.EXCHANGE_JP, CConstant.EXCHANGE_RMB); dr["RMB_INVOICE_AMOUNT"] = addDecimal(dr["RMB_INVOICE_AMOUNT"], CConvert.ToDecimal(row["INVOICE_AMOUNT"]) * CConvert.ToDecimal(dr["EXCHANGE_RATE"])); } else if (CConvert.ToInt32(row["TYPE"]) == CConstant.ERP_DOMESTIC_NUMBER)//国内 { dr["PART_PURCHASE_ORDER_SLIP_NUMBER"] = addString(dr["PART_PURCHASE_ORDER_SLIP_NUMBER"], row["PURCHASE_ORDER_SLIP_NUMBER"]); dr["PART_INVOICE_NUMBER_LOCAL"] = addString(dr["PART_INVOICE_NUMBER_LOCAL"], row["INVOICE_NUMBER"]); dr["PART_PURCHASE_SLIP_DATE"] = addString(dr["PART_PURCHASE_SLIP_DATE"], row["SLIP_DATE"]); dr["PART_INVOICE_AMOUNT"] = addDecimal(dr["PART_INVOICE_AMOUNT"], row["INVOICE_AMOUNT"]); } dr["TAX_AMOUNT"] = addDecimal(dr["TAX_AMOUNT"], row["TAX_AMOUNT"]); } else { tmpDt.Rows.Add(dr); orderSlipNumber = row["ORDER_SLIP_NUMBER"].ToString(); dr = tmpDt.NewRow(); dr["ORDER_SLIP_NUMBER"] = row["ORDER_SLIP_NUMBER"]; if (CConvert.ToInt32(row["SUPPLIER_CODE"]) == CConstant.ERP_FOREIGN_NUMBER)//国外 { dr["FOREIGN_PURCHASE_ORDER_SLIP_NUMBER"] = addString(dr["FOREIGN_PURCHASE_ORDER_SLIP_NUMBER"], row["PURCHASE_ORDER_SLIP_NUMBER"]); dr["FOREIGN_PURCHASE_INVOICE_NUMBER"] = addString(dr["FOREIGN_PURCHASE_INVOICE_NUMBER"], row["INVOICE_NUMBER"]); dr["FOREIGN_PURCHASE_SLIP_DATE"] = addString(dr["FOREIGN_PURCHASE_SLIP_DATE"], row["SLIP_DATE"]); dr["FOREIGN_INVOICE_AMOUNT"] = addDecimal(dr["FOREIGN_INVOICE_AMOUNT"], row["INVOICE_AMOUNT"]); dr["EXCHANGE_RATE"] = 0.07; dr["RMB_INVOICE_AMOUNT"] = addDecimal(dr["RMB_INVOICE_AMOUNT"], CConvert.ToDecimal(row["INVOICE_AMOUNT"]) * CConvert.ToDecimal(dr["EXCHANGE_RATE"])); } else if (CConvert.ToInt32(row["SUPPLIER_CODE"]) == CConstant.ERP_DOMESTIC_NUMBER)//国内 { dr["PART_PURCHASE_ORDER_SLIP_NUMBER"] = addString(dr["PART_PURCHASE_ORDER_SLIP_NUMBER"], row["PURCHASE_ORDER_SLIP_NUMBER"]); dr["PART_INVOICE_NUMBER_LOCAL"] = addString(dr["PART_INVOICE_NUMBER_LOCAL"], row["INVOICE_NUMBER"]); dr["PART_PURCHASE_SLIP_DATE"] = addString(dr["PART_PURCHASE_SLIP_DATE"], row["SLIP_DATE"]); dr["PART_INVOICE_AMOUNT"] = addDecimal(dr["PART_INVOICE_AMOUNT"], row["INVOICE_AMOUNT"]); } dr["TAX_AMOUNT"] = addDecimal(dr["TAX_AMOUNT"], row["TAX_AMOUNT"]); } } if (dr != null) { tmpDt.Rows.Add(dr); } #endregion //采购信息段的合并 #region foreach (DataRow row in exportDt.Rows) { foreach (DataRow tRow in tmpDt.Rows) { if (row["ORDER_SLIP_NUMBER"].Equals(tRow["ORDER_SLIP_NUMBER"])) { row["FOREIGN_PURCHASE_ORDER_SLIP_NUMBER"] = tRow["FOREIGN_PURCHASE_ORDER_SLIP_NUMBER"]; row["FOREIGN_PURCHASE_INVOICE_NUMBER"] = tRow["FOREIGN_PURCHASE_INVOICE_NUMBER"]; row["FOREIGN_PURCHASE_SLIP_DATE"] = tRow["FOREIGN_PURCHASE_SLIP_DATE"]; row["FOREIGN_INVOICE_AMOUNT"] = tRow["FOREIGN_INVOICE_AMOUNT"]; row["EXCHANGE_RATE"] = tRow["EXCHANGE_RATE"]; row["RMB_INVOICE_AMOUNT"] = tRow["RMB_INVOICE_AMOUNT"]; row["PART_PURCHASE_ORDER_SLIP_NUMBER"] = tRow["PART_PURCHASE_ORDER_SLIP_NUMBER"]; row["PART_INVOICE_NUMBER_LOCAL"] = tRow["PART_INVOICE_NUMBER_LOCAL"]; row["PART_PURCHASE_SLIP_DATE"] = tRow["PART_PURCHASE_SLIP_DATE"]; row["PART_INVOICE_AMOUNT"] = tRow["PART_INVOICE_AMOUNT"]; row["TAX_AMOUNT"] = tRow["TAX_AMOUNT"]; } } } #endregion //销售信息的取得 #region DataTable OrderTable = bInvoice.GetOrderHeaderInfo(slip_number).Tables[0]; foreach (DataRow erow in exportDt.Rows) { foreach (DataRow Orow in OrderTable.Rows) { if (erow["ORDER_SLIP_NUMBER"].Equals(Orow["SLIP_NUMBER"])) { erow["CUSTOMER_PO_NUMBER"] = Orow["CUSTOMER_PO_NUMBER"]; erow["SALES_INVOICE_NUMBER"] = Orow["SERIAL_NUMBER"]; erow["ORDER_SLIP_DATE"] = Orow["SLIP_DATE"]; erow["AMOUNT_WITHOUT_TAX"] = Orow["AMOUNT_WITHOUT_TAX"]; erow["CHECK_NUMBER"] = Orow["CHECK_NUMBER"]; erow["CHECK_DATE"] = Orow["CHECK_DATE"]; erow["CUSTOMER_NAME"] = Orow["CUSTOMER_NAME"]; erow["ENDER_CUSTOMER_NAME"] = Orow["ENDER_CUSTOMER_NAME"]; erow["ADDRESS"] = Orow["DELIVERY_POINT_NAME"]; erow["ADDRESS2"] = Orow["DELIVERY_POINT_NAME"]; } } } #endregion //销售发票信息的取得 #region DataTable InvoiceTable = bInvoice.GetInvoiceNumber(slip_number).Tables[0]; foreach (DataRow irow in exportDt.Rows) { foreach (DataRow Irow in InvoiceTable.Rows) { if (irow["ORDER_SLIP_NUMBER"].Equals(Irow["ORDER_SLIP_NUMBER"])) { irow["SALES_INVOICE_NUMBER"] = Irow["SALES_INVOICE_NUMBER"]; irow["SHIPMENT_SLIP_DATE"] = Irow["SLIP_DATE"]; } } } #endregion //机器本体的销售信息的取得 #region DataTable TotalBodyAmount = bInvoice.GetAmountWithoutTaxa(slip_number).Tables[0]; foreach (DataRow totalrow in exportDt.Rows) { foreach (DataRow Totalrow in TotalBodyAmount.Rows) { if (totalrow["ORDER_SLIP_NUMBER"].Equals(Totalrow["SLIP_NUMBER"])) { totalrow["TOTAL_BODY_AMOUNT"] = Totalrow["AMOUNT_WITHOUT_TAX"]; } } } #endregion //各种合计金额的计算 #region foreach (DataRow row in exportDt.Rows) { row["TOTAL"] = addDecimal(row["RMB_INVOICE_AMOUNT"], row["TAX_AMOUNT"]); row["TOTAL_AMOUNT"] = addDecimal(row["BODY_INVOICE_AMOUNT"], row["PART_INVOICE_AMOUNT"], row["TOTAL"]); } #endregion //数据的导出 #region Hashtable ht = new Hashtable(); SaveFileDialog sf = new SaveFileDialog(); sf.FileName = "LZ_PRODUCT_MANAGEMENT_" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls"; sf.Filter = "(文件)|*.xls;*.xlsx"; if (sf.ShowDialog(this) == DialogResult.OK) { if (exportDt.Rows.Count > 0) { int ret = CommonExport.ExportOEMProduct(@"rpt\OEM_PRODUCT_MANAGEMENT.xls", sf.FileName, exportDt, ht); if (CConstant.EXPORT_FAILURE.Equals(ret)) { MessageBox.Show("导出失败。", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } else if (CConstant.EXPORT_SUCCESS.Equals(ret)) { MessageBox.Show("导出成功。", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information); } else if (CConstant.EXPORT_RUNNING.Equals(ret)) { MessageBox.Show("文件正在运行,重新生成文件失败。", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } else if (CConstant.EXPORT_TEMPLETE_FILE_NOT_EXIST.Equals(ret)) { MessageBox.Show("模版文件不存在。", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } this.Close(); } else { MessageBox.Show("明细信息不存在。", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } } #endregion }