Ejemplo n.º 1
0
        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]);
            }
        }
Ejemplo n.º 2
0
        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();
        }
Ejemplo n.º 3
0
        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);
        }