/// <summary> /// PV /// </summary> /// <param name="FormID"></param> /// <returns></returns> private bool ExportPVDataByFormID(int FormID, int logId) { ExportDataDS.ExportDataDataTable l_dtExportData = new ExportDataDS.ExportDataDataTable(); PurchaseDS.FormPVDetailDataTable l_dtFormPVDetail = new PurchaseDS.FormPVDetailDataTable(); PurchaseDS.FormPVRow l_drFormPV = new PurchaseDS.FormPVDataTable().NewFormPVRow(); FormMarketingBLL formmarkbll = new FormMarketingBLL(); FormPurchaseBLL formPurchaseBLL = new FormPurchaseBLL(); MasterDataBLL masterdatabll = new MasterDataBLL(); FormDS.FormDataTable l_dtform = formmarkbll.GetFormByID(FormID); FormDS.FormRow l_drform = l_dtform.NewFormRow(); try { if (l_dtform.Rows.Count > 0) { l_drform = l_dtform[0]; if (l_drform.IsFinanceRemarkNull()) { logbll.InsertExportLogDetail(logId, "单据编号:" + l_drform.FormNo + ",提交人:" + new StuffUserBLL().GetStuffUserById(l_drform.UserID)[0].StuffName + ",错误信息:财务摘要为空,导出失败!"); return false; } l_drFormPV = formPurchaseBLL.GetFormPVByID(FormID); //PurchaseDS.FormInvoiceDataTable l_dtFormInvoice = formPurchaseBLL.GetFormInvoiceByFormID(FormID); ExportDataDS.ExportDataRow l_drExportData = l_dtExportData.NewExportDataRow(); l_drExportData.FormID = FormID; l_drExportData.CompanyCode = masterdatabll.GetCompanyById(masterdatabll.GetVendorTypeById(masterdatabll.GetVendorByID(l_drFormPV.VendorID).VendorTypeID).CompanyID).CompanyCode; //验证公司是否和成本中心对应的一致 string CCCompanyCode = masterdatabll.GetCompanyById(masterdatabll.GetCostCenterById(l_drform.CostCenterID).CompanyID).CompanyCode; if (l_drExportData.CompanyCode != CCCompanyCode) { logbll.InsertExportLogDetail(logId, "单据编号:" + l_drform.FormNo + ",提交人:" + new StuffUserBLL().GetStuffUserById(l_drform.UserID)[0].StuffName + ",错误信息:Company Code不一致,无法导出!"); return false; } l_drExportData.VendorCode = masterdatabll.GetVendorByID(l_drFormPV.VendorID).VendorCode; if (l_drExportData.IsVendorCodeNull() || string.IsNullOrEmpty(l_drExportData.VendorCode)) { logbll.InsertExportLogDetail(logId, "单据编号:" + l_drform.FormNo + ",提交人:" + new StuffUserBLL().GetStuffUserById(l_drform.UserID)[0].StuffName + ",错误信息:Vendor Code为空,无法导出!"); return false; } //发票号码改为单据编号,单据编号变为10位 l_drExportData.Invoice = l_drform.FormNo; //l_drExportData.Invoicedate = l_drform.SubmitDate.ToString("yyyyMMdd"); l_drExportData.Invoicedate = getInvoiceDate(l_drform.FormID, l_drform.SubmitDate); //if (l_dtFormInvoice.Rows.Count > 1) // l_drExportData.Reference = l_dtFormInvoice[1].InvoiceNo; //if (l_dtFormInvoice.Rows.Count > 0) { // l_drExportData.Invoice = l_dtFormInvoice[0].InvoiceNo; // l_drExportData.Invoicedate = l_dtFormInvoice[0].InvoiceDate.ToString("yyyyMMdd"); //} else { // l_drExportData.Invoice = l_drform.FormNo; // l_drExportData.Invoicedate = l_drform.SubmitDate.ToString("yyyyMMdd"); //} l_drExportData.TotalMoney = l_drFormPV.AMTBeforeTax; //l_drExportData.Currency = masterdatabll.GetCurrencyByID(l_drFormPV.CurrencyID).CurrencyShortName; //l_drExportData.ExchangeRate = l_drFormPV.ExchangeRate; l_drExportData.ManageExpenseItem = masterdatabll.GetItemCategoryById(l_drFormPV.FinalItemCategoryID).AccountingName; l_drExportData.CostCenter = masterdatabll.GetCostCenterById(l_drform.CostCenterID).CostCenterCode; l_drExportData.AccountCode = masterdatabll.GetItemCategoryById(l_drFormPV.FinalItemCategoryID).AccountingCode; l_drExportData.DetailMoney = l_drFormPV.AMTBeforeTax; if (!l_drFormPV.IsFormPOIDNull()) { PurchaseDS.FormPORow formPO = formPurchaseBLL.GetFormPOByID(l_drFormPV.FormPOID); l_drExportData.PONumber = formPO.BPCSPONo; PurchaseDS.FormPODetailDataTable formPODetail = formPurchaseBLL.GetPODetailByFormPOID(l_drFormPV.FormPOID); l_drExportData.POLineNumber = formPODetail.Rows.Count.ToString(); } else { l_drExportData.PONumber = 0; l_drExportData.POLineNumber = "0"; } l_drExportData.FinanceRemark = l_drform.FinanceRemark; l_drExportData.FormNo = l_drform.FormNo; l_drExportData.TaxAmt = l_drFormPV.AMTTax; l_drExportData.TaxRateCode = masterdatabll.GetVatTypeById(l_drFormPV.VatRateID)[0].VatTypeName; l_dtExportData.AddExportDataRow(l_drExportData); if (l_dtExportData.Rows.Count == 0) { logbll.InsertExportLogDetail(logId, "单据编号:" + l_drform.FormNo + ",提交人:" + new StuffUserBLL().GetStuffUserById(l_drform.UserID)[0].StuffName + ",错误信息:无明细数据,无法导出!"); return false; } ExportByFormView(l_dtExportData); } } catch (Exception e) { logbll.InsertExportLogDetail(logId, "单据编号:" + l_drform.FormNo + ",提交人:" + new StuffUserBLL().GetStuffUserById(l_drform.UserID)[0].StuffName + ",错误信息:" + e.Message); return false; } return true; }
private string getInvoiceDate(int FormID, DateTime SubmitDate) { FormPurchaseBLL formPurchaseBLL = new FormPurchaseBLL(); //get PV Object PurchaseDS.FormPVRow l_drFormPV = formPurchaseBLL.GetFormPVByID(FormID); //如有发票,取最近发票日期 if (l_drFormPV.InvoiceStatusID == 1) { //有发票 //get Invoice ObjectList PurchaseDS.FormInvoiceDataTable l_dtFormInvoice = formPurchaseBLL.GetFormInvoiceByFormID(FormID); //获取付款申请单上最晚发票的日期,默认第一条发票信息,如大于一条,循环遍历最近发票日期 DateTime invoiceTime = l_dtFormInvoice[0].InvoiceDate; //遍历发票日期 for (int i = 0; i < l_dtFormInvoice.Rows.Count; i++) { for (int j = i + 1; j < l_dtFormInvoice.Rows.Count; j++) { //发票日期比较 if (DateTime.Compare(l_dtFormInvoice[i].InvoiceDate, l_dtFormInvoice[j].InvoiceDate) > 0) { //取到的最近日期和默认值或前一次最近日期比较 if (DateTime.Compare(l_dtFormInvoice[i].InvoiceDate, invoiceTime) > 0) { //设置日期 invoiceTime = l_dtFormInvoice[i].InvoiceDate; } } else { //取到的最近日期和默认值或前一次最近日期比较 if (DateTime.Compare(l_dtFormInvoice[j].InvoiceDate, invoiceTime) > 0) { //设置日期 invoiceTime = l_dtFormInvoice[j].InvoiceDate; } } } } //发票日期 TimeSpan invoiceDate = new TimeSpan(invoiceTime.Ticks); //提交日期 TimeSpan _submitDate = new TimeSpan(SubmitDate.Ticks); //日期获取间隔天数 int intervalDays = invoiceDate.Subtract(_submitDate).Duration().Days; if (intervalDays < 14) { //如未到14天,则为提交日期 return invoiceTime.ToString("yyyyMMdd"); } else { //如该付款申请单上最晚发票日期大于提交日期14天 return SubmitDate.ToString("yyyyMMdd"); } } return SubmitDate.ToString("yyyyMMdd"); }