示例#1
0
        private void ImportProduces()
        {
            List <DataModel.Model.Produce> produces   = new List <DataModel.Model.Produce>();
            IEnumerable <Category>         categories =
                _categoryRepository.Query().ToList();
            IEnumerable <IEnumerable <KeyValuePair <string, string> > > csvContengs = CsvHepler.GetCsvData(tbPath.Text);
            IEnumerable <KeyValuePair <byte, string> > procedureUnits = CommonHelper.Enumerate <DataType.ProduceUnit>();

            csvContengs.ForEach(x =>
            {
                DataModel.Model.Produce produce = new DataModel.Model.Produce();
                foreach (var y in x)
                {
                    if (!string.IsNullOrEmpty(y.Value))
                    {
                        DataType.ProduceField produceField =
                            (DataType.ProduceField)Enum.Parse(typeof(DataType.ProduceField), y.Key);
                        switch (produceField)
                        {
                        case DataType.ProduceField.Category:
                            Category category = categories
                                                .Single(c => y.Value.Equals(c.Name, StringComparison.CurrentCultureIgnoreCase));
                            produce.CategoryId = category != null ? category.CategoryId : categories.OrderBy(c => c.CategoryId).First().CategoryId;
                            continue;

                        case DataType.ProduceField.ProduceNo:
                            produce.ProduceNo = y.Value;
                            continue;

                        case DataType.ProduceField.Name:
                            produce.Name = y.Value;
                            continue;

                        case DataType.ProduceField.HowUsed:
                            KeyValuePair <byte, string>?howUsed = procedureUnits
                                                                  .SingleOrDefault(
                                u => y.Value.Equals(u.Value, StringComparison.CurrentCultureIgnoreCase));
                            produce.HowUsed = (sbyte?)howUsed.Value.Key;
                            continue;

                        case DataType.ProduceField.FactoryPrice:
                            produce.FactoryPrice = float.Parse(y.Value);
                            continue;

                        case DataType.ProduceField.RetailPrice:
                            produce.RetailPrice = float.Parse(y.Value);
                            continue;

                        default:
                            continue;
                        }
                    }
                }
                produces.Add(produce);
            });

            var existedProduceNos = _produceRepository.Query().Select(x => x.ProduceNo);

            produces.RemoveAll(x => existedProduceNos.Contains(x.ProduceNo));
            _produceRepository.BatchInsertProduces(produces);
            _unitOfWork.Commit();

            System.Windows.MessageBox.Show("商品导入成功!", Properties.Resources.SystemName,
                                           MessageBoxButton.OK, MessageBoxImage.Information);
            Close();
        }
示例#2
0
        private void ImportPurchaseOrders()
        {
            DataModel.Model.PurchaseOrder purchaseOrder = _purchaseOrderRepository
                                                          .Query()
                                                          .OrderByDescending(x => x.DateOriginated)
                                                          .FirstOrDefault(x => x.POStatusCategory == (sbyte)DataType.POStatusCategory.Ordered);

            if (purchaseOrder == null)
            {
                return;
            }

            IList <DataModel.Model.Produce> produces = _produceRepository.Query().ToList();

            IEnumerable <IEnumerable <KeyValuePair <string, string> > > csvContents = CsvHepler.GetCsvData(tbPath.Text);
            IEnumerable <KeyValuePair <byte, string> > procedureUnits = CommonHelper.Enumerate <DataType.ProduceUnit>();

            csvContents.ForEach(x =>
            {
                DataModel.Model.POItem poItem = new DataModel.Model.POItem();
                foreach (var y in x)
                {
                    if (!string.IsNullOrEmpty(y.Value))
                    {
                        DataType.PurchaseOrderField purchaseOrderField =
                            (DataType.PurchaseOrderField)Enum.Parse(typeof(DataType.PurchaseOrderField), y.Key);
                        switch (purchaseOrderField)
                        {
                        case DataType.PurchaseOrderField.ProduceNo:
                            DataModel.Model.Produce produce = produces
                                                              .Single(c => y.Value.Equals(c.ProduceNo, StringComparison.CurrentCultureIgnoreCase));
                            poItem.ProduceId = produce.ProduceId;
                            poItem.Produce   = produce;
                            continue;

                        case DataType.PurchaseOrderField.PriceOrdered:
                            poItem.PriceOrdered = float.Parse(y.Value);
                            continue;

                        case DataType.PurchaseOrderField.PriceReceived:
                            poItem.PriceReceived = float.Parse(y.Value);
                            continue;

                        case DataType.PurchaseOrderField.QuantityOrdered:
                            poItem.QuantityOrdered = float.Parse(y.Value);
                            continue;

                        case DataType.PurchaseOrderField.QuantityReceived:
                            poItem.QuantityReceived = float.Parse(y.Value);
                            continue;

                        default:
                            continue;
                        }
                    }
                }
                poItem.POStatusCategory  = (sbyte)DataType.POItemStatusCategory.Dispatched;
                poItem.CreatedBy         = "admin";
                poItem.CreatedOn         = DateTime.Now;
                poItem.LastModifiedBy    = "admin";
                poItem.LastModifiedOn    = DateTime.Now;
                poItem.RowVersion        = DateTime.Now;
                poItem.Produce.Quantity += poItem.QuantityReceived ?? 0;
                poItem.Produce.Producelogs.Add(new Producelog
                {
                    ChangedBy   = ResourcesHelper.CurrentUser.Name,
                    DateChanged = DateTime.Now,
                    NewValue    = string.Format(ResourcesHelper.PurchaseOrderImporterFormat,
                                                purchaseOrder.PurchaseOrderNo,
                                                (poItem.QuantityReceived ?? 0).ToString("F2"),
                                                (poItem.PriceReceived ?? 0).ToString("F2"),
                                                poItem.Produce.Quantity.ToString("F2"))
                });
                poItem.Produce.LastOrderDate = DateTime.Now;

                purchaseOrder.POItems.Add(poItem);
            });
            purchaseOrder.POStatusCategory = (sbyte)DataType.POStatusCategory.Completed;
            purchaseOrder.TotalAmount      = purchaseOrder.POItems.Sum(x => x.PriceReceived * x.QuantityReceived);
            purchaseOrder.GrandTotal       = (purchaseOrder.TotalAmount ?? 0) + (purchaseOrder.TotalOther ?? 0)
                                             + (purchaseOrder.TotalShipping ?? 0) + (purchaseOrder.TotalTax ?? 0);
            _purchaseOrderRepository.Update(purchaseOrder);
            _unitOfWork.Commit();

            System.Windows.MessageBox.Show("订单导入成功!", Properties.Resources.SystemName,
                                           MessageBoxButton.OK, MessageBoxImage.Information);
            Close();
        }