protected void FillMaster(DataTable masterTable, DataTable detailTable) { md = new MasterDetails[masterTable.Rows.Count]; for (int i = 0; i < masterTable.Rows.Count; i++) { md[i] = new MasterDetails(); DataRow row = masterTable.Rows[i]; CAPTxtIEMaster oMaster = new CAPTxtIEMaster(); oMaster.RecType = "HH"; oMaster.Location = row["Location"].ToString(); oMaster.Operator = row["StaffNumber"].ToString(); oMaster.RecvDate = Convert.ToDateTime(row["TxDate"]); oMaster.Supplier = row["SupplierCode"].ToString(); oMaster.RefNumber = row["Reference"].ToString(); oMaster.Remarks = row["Remarks"].ToString(); oMaster.TxNumber = row["TxNumber"].ToString(); md[i].Master = oMaster; headerCount++; FillDetails(detailTable, row["HeaderId"].ToString(), ref md[i]); } }
private void txtFileName_TextChanged(object sender, EventArgs e) { MasterDetailEngine engine = new MasterDetailEngine(typeof(CAPTxtIEMaster), typeof(CAPTxtIEDetails), new MasterDetailSelector(RecSelector)); md = engine.ReadFile(Path.Combine(mstrDirectory, txtFileName.Text)); for (int i = 0; i < md.Length; i++) { CAPTxtIEMaster CAPItem = md[i].Master as CAPTxtIEMaster; ListViewItem oItem = lvImportedList.Items.Add(CAPItem.RecType); oItem.SubItems.Add(CAPItem.Location); oItem.SubItems.Add(CAPItem.Operator); oItem.SubItems.Add(DateTimeHelper.DateTimeToString(CAPItem.RecvDate, false)); oItem.SubItems.Add(CAPItem.Supplier); oItem.SubItems.Add(CAPItem.RefNumber); oItem.SubItems.Add(CAPItem.Remarks); oItem.SubItems.Add(String.Empty); // 2012.09.14 paulus: 加咗,咁個 colMessage 才有效 } lblTxCount.Text = md.Length.ToString(); }
private int Import() { int result = 0; using (var ctx = new EF6.RT2020Entities()) { using (var scope = ctx.Database.BeginTransaction()) { try { for (int i = 0; i < md.Length; i++) { string txNumber = SystemInfoHelper.Settings.QueuingTxNumber(EnumHelper.TxType.CAP); #region Guid headerId = ImportCAPHeader(md[i].Master as CAPTxtIEMaster, txNumber); CAPTxtIEMaster master = md[i].Master as CAPTxtIEMaster; var oHeader = new EF6.InvtBatchCAP_Header(); oHeader.HeaderId = Guid.NewGuid(); oHeader.TxType = EnumHelper.TxType.CAP.ToString(); oHeader.TxNumber = txNumber; oHeader.TxDate = master.RecvDate; oHeader.WorkplaceId = WorkplaceEx.GetWorkplaceIdByCode(master.Location); oHeader.StaffId = StaffEx.GetStaffIdByStaffNumber(master.Operator); oHeader.SupplierId = SupplierEx.GetSupplierIdBySupplierCode(master.Supplier); oHeader.Status = Convert.ToInt32(EnumHelper.Status.Draft.ToString("d")); oHeader.Reference = master.RefNumber; oHeader.Remarks = master.Remarks; oHeader.CurrencyCode = "HKD"; oHeader.ExchangeRate = (decimal)1; oHeader.CreatedBy = ConfigHelper.CurrentUserId; oHeader.CreatedOn = DateTime.Now; oHeader.ModifiedBy = ConfigHelper.CurrentUserId; oHeader.ModifiedOn = DateTime.Now; ctx.InvtBatchCAP_Header.Add(oHeader); ctx.SaveChanges(); Guid headerId = oHeader.HeaderId; #endregion decimal ttlAmt = 0; #region decimal ttlAmt = ImportCAPDetails(md[i].Details, headerId, txNumber); object[] details = md[i].Details; if (details != null) { for (int j = 0; j < details.Length; j++) { CAPTxtIEDetails detail = details[j] as CAPTxtIEDetails; Guid prodId = GetProductId(detail); if (prodId != Guid.Empty) { var oDetail = new EF6.InvtBatchCAP_Details(); oDetail.DetailsId = Guid.NewGuid(); oDetail.ProductId = prodId; oDetail.HeaderId = headerId; oDetail.LineNumber = j + 1; oDetail.TxNumber = txNumber; oDetail.TxType = EnumHelper.TxType.CAP.ToString(); oDetail.Qty = detail.ReceivedQty; oDetail.UnitAmount = detail.ReceivedUnitAmount; oDetail.UnitAmountInForeignCurrency = detail.ReceivedUnitAmount; ctx.InvtBatchCAP_Details.Add(oDetail); ctx.SaveChanges(); ttlAmt += oDetail.Qty.Value * oDetail.UnitAmount.Value; } else { string skippedProduct = String.Format("?{0} {1} {2} {3}", detail.StockCode, detail.Appendix1, detail.Appendix2, detail.Appendix3); skippedList.Add(skippedProduct); } } } #endregion oHeader = ctx.InvtBatchCAP_Header.Find(headerId); if (oHeader != null) { oHeader.TotalAmount = ttlAmt; ctx.SaveChanges(); UpdateListView(i, txNumber); skippedList.Clear(); } result++; } scope.Commit(); } catch (Exception ex) { scope.Rollback(); } } } return(result); }