public void OnSourceCollectionChanged(object sender, NotifyCollectionChangedEventArgs e) { if (e.Action != NotifyCollectionChangedAction.Add || e.NewItems == null) { return; } if (Source == null) { Source = new WMSBusinessCollection <Entity2GC>(); } foreach (var item in e.NewItems) { if (item == null) { continue; } if (Source == null) { continue; } var newItem = new Entity2GC { ENTITY2GCKEY = ((WMSBusinessObject)item).GetKey().ToString() }; Source.Add(newItem); ChildSource.Add((WMSBusinessObject)item); } }
public void ValidateStrategiesGpvRequirementTest() { var teTypeObject = new TEType(); var property = TypeDescriptor.GetProperties(teTypeObject).Find("GLOBALPARAMVAL", true); if (property == null) { return; } const string strategyName = "gpv.requirement"; WMSValidateAttribute.TestStrategy(strategyName, new ValidateStrategyContext(teTypeObject, property, null, null)).Should().BeTrue(); var arrayGpv = new WMSBusinessCollection <TETypeGPV>(); property.SetValue(teTypeObject, arrayGpv); WMSValidateAttribute.TestStrategy(strategyName, new ValidateStrategyContext(teTypeObject, property, null, null)).Should().BeTrue(); var gpv = new TETypeGPV(); // HACK - знаем что такой GPV есть для TEType gpv.AsDynamic().GLOBALPARAMCODE_R_TETYPEGPV = "TETypeSequence2TENumber"; arrayGpv.Add(gpv); property.SetValue(teTypeObject, arrayGpv); WMSValidateAttribute.TestStrategy(strategyName, new ValidateStrategyContext(teTypeObject, property, null, null)).Should().BeFalse(); }
public WMSBusinessCollection <OutputParam> CreateReportParams(Dictionary <string, Variable[]> epsReports, string resultReportFile, bool?changeOdbc) { var result = new WMSBusinessCollection <OutputParam>(); if (epsReports != null) { foreach (var p in epsReports) { if (!string.IsNullOrEmpty(p.Key)) { result.Add(new OutputParam { OutputParamCode = EpsTaskParams.EpsReport.ToString(), OutputParamValue = p.Key, OutputParamType = EpsParamType.REP.ToString() }); if (p.Value != null) { foreach (var v in p.Value.Where(v => !string.IsNullOrEmpty(v.Value))) { result.Add(new OutputParam { OutputParamCode = v.Value, OutputParamValue = v.SubValue, OutputParamSubvalue = p.Key, OutputParamType = EpsParamType.REP.ToString() }); } } } } } if (!string.IsNullOrEmpty(resultReportFile)) { result.Add(new OutputParam { OutputParamCode = EpsTaskParams.ResultReportFile.ToString(), OutputParamValue = resultReportFile, OutputParamType = EpsParamType.REP.ToString() }); } if (changeOdbc.HasValue) { result.Add(new OutputParam { OutputParamCode = EpsTaskParams.ChangeODBC.ToString(), OutputParamValue = (changeOdbc.Value ? 1 : 0).ToString(CultureInfo.InvariantCulture), OutputParamType = EpsParamType.REP.ToString() }); } return(result.Any() ? result : null); }
public static string ConvertCollectionOutputParamToString(WMSBusinessCollection <OutputParam> collection) { if (collection == null) { return("NULL"); } var result = collection.Select( p => string.Format("({0}='{1}',{2}='{3}',{4}='{5}')", OutputParam.OutputParamCodePropertyName, p.OutputParamCode, OutputParam.OutputParamValuePropertyName, p.OutputParamValue, OutputParam.OutputParamSubvaluePropertyName, p.OutputParamSubvalue)).ToArray(); return(string.Join(",", result)); }
public IEnumerable GetChild(object parent) { var ret = new WMSBusinessCollection <MotionAreaGroup>(); foreach (var item in Source) { if (string.IsNullOrEmpty(item.MotionAreaGroupParent)) { continue; } if (((MotionAreaGroup)parent).GetKey().To <string>() == item.MotionAreaGroupParent) { ret.Add(item); } } return(ret); }
public WMSBusinessCollection <OutputParam> CreateEpsParams(bool useZip, bool useReserveCopy) { var result = new WMSBusinessCollection <OutputParam>(); if (useZip) { result.Add(new OutputParam { OutputParamCode = EpsTaskParams.Zip.ToString(), OutputParamType = EpsParamType.EPS.ToString() }); } if (useReserveCopy) { result.Add(new OutputParam { OutputParamCode = EpsTaskParams.ReserveCopy.ToString(), OutputParamType = EpsParamType.EPS.ToString() }); } return(result.Any() ? result : null); }
public void DeleteAddress() { var mgr = CreateManager(); var client = CreateNew(); var key = client.GetKey(); // создаём инстанс вложенной сущности var address = new AddressBook(); try { #region . Create . var oldLength = 0; // считываем коллекцию вложенных сущностей var addressLst = client.AsDynamic().ADDRESS as IList <AddressBook>; if (addressLst == null) { addressLst = new WMSBusinessCollection <AddressBook>(); client.SetProperty("ADDRESS", addressLst); } else { oldLength = addressLst.Count; } // заполняем ссылки и обязательные поля вложенной сущности address.AsDynamic().ADDRESSBOOKINDEX = TestDecimal; address.AsDynamic().ADDRESSBOOKTYPECODE = "ADR_LEGAL"; // добавляем связь с вложенной сущностью, сохраняем addressLst.Add(address); mgr.Update(client); // читаем из БД по ключу client = mgr.Get(key); var addressLstNew = client.AsDynamic().ADDRESS as IList <AddressBook>; // проверка создания addressLstNew.Should().NotBeNull("Должны были получить хотя бы 1 элемент"); addressLstNew.Count.ShouldBeEquivalentTo(oldLength + 1, "Manager должен создавать вложенные сущности"); #endregion #region . Delete . // удалем связь с вложенной сущностью, сохраняем addressLst = client.AsDynamic().ADDRESS as IList <AddressBook>; address = addressLst[addressLst.Count - 1]; addressLst.Remove(address); mgr.Update(client); // убеждаемся, что корректно удалили client = mgr.Get(key); addressLstNew = client.AsDynamic().ADDRESS as IList <AddressBook>; if (addressLstNew == null) { oldLength.Equals(0); } else { addressLstNew.Count.ShouldBeEquivalentTo(oldLength, "Manager должен удалять вложенные сущности"); } #endregion } catch (Exception ex) { throw new Exception(ex.Message + " УДАЛИТЕ СТРОКУ ИЗ ТАБЛИЦЫ WMSADDRESSBOOK с ADDRESSBOOKINDEX = " + TestDecimal); } finally { ClearForSelf(); } }
public void SKU2TETypeTest() { // создаём инстанс связанной сущности var tte1 = _tteTest1.CreateNew(); var tte2 = _tteTest2.CreateNew(); // создаём инстанс вложенной сущности var sku2tte = new SKU2TTE(); try { #region . Create . // создаём инстанс сущности var mgr = CreateManager(); var obj = mgr.New(); FillRequiredFields(obj); mgr.Insert(ref obj); var key = obj.GetKey(); var oldLength = 0; // считываем коллекцию вложенных сущностей var sku2tteLst = obj.AsDynamic().TETYPE2SKU as IList <SKU2TTE>; if (sku2tteLst == null) { sku2tteLst = new WMSBusinessCollection <SKU2TTE>(); obj.SetProperty("TETYPE2SKU", sku2tteLst); } else { oldLength = sku2tteLst.Count; } // заполняем ссылки и обязательные поля вложенной сущности sku2tte.AsDynamic().SKU2TTEID = TestDecimal; sku2tte.AsDynamic().SKU2TTETETYPECODE = tte1.GetKey(); sku2tte.AsDynamic().SKU2TTESKUID = key; sku2tte.AsDynamic().SKU2TTEQUANTITY = TestDecimal; sku2tte.AsDynamic().SKU2TTEMAXWEIGHT = TestDecimal; sku2tte.AsDynamic().SKU2TTELENGTH = TestDecimal; sku2tte.AsDynamic().SKU2TTEWIDTH = TestDecimal; sku2tte.AsDynamic().SKU2TTEHEIGHT = TestDecimal; //new CreateManager <SKU2TTE>().Insert(ref sku2tte); // добавляем связь с вложенной сущностью, сохраняем sku2tteLst.Add(sku2tte); mgr.Update(obj); // читаем из БД по ключу obj = mgr.Get(key); var sku2tteLstNew = obj.AsDynamic().TETYPE2SKU as IList <SKU2TTE>; // проверка создания sku2tteLstNew.Should().NotBeNull("Должны были получить хотя бы 1 элемент"); var newLength = sku2tteLstNew.Count; newLength.ShouldBeEquivalentTo(oldLength + 1, "Manager должен создавать вложенные сущности"); #endregion #region . Update simple . // сохраняем старое значение не ключевого поля sku2tte = sku2tteLstNew[sku2tteLstNew.Count - 1]; var oldValue = sku2tte.AsDynamic().SKU2TTEHEIGHT; // меняем значение sku2tte.AsDynamic().SKU2TTEHEIGHT = TestDecimal + 1; sku2tteLstNew[sku2tteLstNew.Count - 1] = sku2tte; // сохраняем в базе mgr.Update(obj); // вычитываем из базы obj = mgr.Get(key); sku2tteLstNew = obj.AsDynamic().TETYPE2SKU as IList <SKU2TTE>; sku2tte = sku2tteLstNew[sku2tteLstNew.Count - 1]; // проверяем изменение var newValue = sku2tte.AsDynamic().SKU2TTEHEIGHT; newValue.Equals(oldValue + 1); #endregion #region . Update link . // меняем значение ссылочного поля sku2tte.AsDynamic().SKU2TTETETYPECODE = tte2.GetKey(); sku2tteLstNew[sku2tteLstNew.Count - 1] = sku2tte; // сохраняем в базе mgr.Update(obj); // вычитываем из базы obj = mgr.Get(key); sku2tteLstNew = obj.AsDynamic().TETYPE2SKU as IList <SKU2TTE>; sku2tte = sku2tteLstNew[sku2tteLstNew.Count - 1]; // проверяем изменение var newLink = sku2tte.AsDynamic().SKU2TTETETYPECODE; newLink.Equals(tte2.GetKey()); #endregion #region . Delete . // удалем связь с вложенной сущностью, сохраняем sku2tteLst = obj.AsDynamic().TETYPE2SKU as IList <SKU2TTE>; sku2tte = sku2tteLst[sku2tteLst.Count - 1]; sku2tteLst.Remove(sku2tte); mgr.Update(obj); //new CreateManager <SKU2TTE>().Delete(sku2tte); // убеждаемся, что корректно удалили var deleted = mgr.Get(key); sku2tteLstNew = deleted.AsDynamic().TETYPE2SKU as IList <SKU2TTE>; if (sku2tteLstNew == null) { oldLength.Equals(0); } else { sku2tteLstNew.Count.ShouldBeEquivalentTo(oldLength, "Manager должен удалять вложенные сущности"); } #endregion } catch (Exception ex) { throw new Exception(ex.Message); } finally { #region . ClearForSelf . // чистим за собой if (sku2tte != null) { var sku2tteMgr = CreateManager <SKU2TTE>(); sku2tteMgr.Delete(sku2tte); } ClearForSelf(); #endregion } }
public static OWBPos[] OwbBoxReserve(decimal?owbid, SalesInvoiceWrapper owbwrapper) { if (owbwrapper == null || owbwrapper.OWBBOXRESERVE != 1 || !owbwrapper.MANDANTID.HasValue) { return(new OWBPos[0]); } var mandantid = owbwrapper.MANDANTID.Value; var boxNumbers = owbwrapper.OWBPOSL.Where(p => !string.IsNullOrEmpty(p.OWBPOSBOXNUMBER)) .Select(p => p.OWBPOSBOXNUMBER) .Distinct() .ToArray(); if (boxNumbers.Length == 0) { throw new IntegrationService.IntegrationLogicalException("Номера коробов не определены у всех позиций расходной накладной «{0}» в режиме OWBBOXRESERVE.", owbwrapper.OWBNAME); } var filterConst = string.Format(" AND MANDANTID = {0} AND STATUSCODE_R = '{1}'", mandantid, ProductStates.PRODUCT_FREE); var filterArray = FilterHelper.GetArrayFilterIn("PRODUCTBOXNUMBER", boxNumbers, filterConst); var products = new List <Product>(); using (var mngProduct = IoC.Instance.Resolve <IBaseManager <Product> >()) { foreach (var filter in filterArray) { var res = mngProduct.GetFiltered(filter, GetModeEnum.Partial).ToArray(); if (res.Length > 0) { products.AddRange(res); } } } if (!products.Any()) { throw new IntegrationService.IntegrationLogicalException("Отсутствует свободный товар для формирования позиций расходной накладной «{0}» в режиме OWBBOXRESERVE.", owbwrapper.OWBNAME); } var grProducts = products.GroupBy(k => new { k.ProductBoxNumber, k.SKUID, k.ProductCount, k.PRODUCTOWNER, k.PRODUCTKITARTNAME, k.QLFCode_r, k.QLFDETAILCODE_R, k.ProductExpiryDate, k.ProductBatch, k.FactoryID_R, k.ProductColor, k.ProductSize, k.PRODUCTDATE, k.ProductSerialNumber, k.PRODUCTLOT, k.ProductTone, }); var owbposL = new WMSBusinessCollection <OWBPos>(); var posnumber = 0; foreach (var grp in grProducts) { var owbpos = new OWBPos { OWBID_R = owbid, OWBPOSBOXNUMBER = grp.Key.ProductBoxNumber, MandantID = mandantid, OWBPosOwner = grp.Key.PRODUCTOWNER, OWBPosNumber = ++posnumber, Status = OWBPosStates.OWBPOS_CREATED, SKUID = grp.Key.SKUID, OWBPosCount2SKU = grp.Key.ProductCount, OWBPOSKITARTNAME = grp.Key.PRODUCTKITARTNAME, QLFCODE_R = grp.Key.QLFCode_r, QLFDETAILCODE_R = grp.Key.QLFDETAILCODE_R, OWBPOSEXPIRYDATE = grp.Key.ProductExpiryDate, OWBPosBatch = grp.Key.ProductBatch, FactoryID_R = grp.Key.FactoryID_R, OWBPOSCOLOR = grp.Key.ProductColor, OWBPOSSIZE = grp.Key.ProductSize, OWBPosCount = grp.Sum(p => p.ProductCountSKU), OWBPOSPRODUCTDATE = grp.Key.PRODUCTDATE, OWBPOSSERIALNUMBER = grp.Key.ProductSerialNumber, OWBPOSLOT = grp.Key.PRODUCTLOT, OWBPOSTONE = grp.Key.ProductTone }; owbposL.Add(owbpos); } return(owbposL.ToArray()); }