public void BarcodeScanned() { BarcodeProducts BarcodeProduct = new BarcodeProducts() { Product = session.Query <Product>().First(), Producer = session.Query <Producer>().First(), Barcode = "30" }; model.User.IsStockEnabled = true; model.Waybill.IsCreatedByUser = true; session.Save(BarcodeProduct); var result = model.BarcodeScanned("30").GetEnumerator(); result.MoveNext(); var dialog = ((AddWaybillLineFromCatalog)((DialogResult)result.Current).Model); dialog.SupplierCost.Value = 10; dialog.Quantity.Value = 3; dialog.OK(); result.MoveNext(); Assert.AreEqual(BarcodeProduct.Producer.Id, model.CurrentWaybillLine.Value.ProducerId); Assert.AreEqual(BarcodeProduct.Product.Id, model.CurrentWaybillLine.Value.ProductId); }
public IEnumerable <IResult> BarcodeScanned(string barcode) { if (checkType == CheckType.CheckReturn) { Warning.Show(Common.Tools.Message.Warning($"При открытом документе возврат, сканирование не возможено")); yield break; } var line = Lines.FirstOrDefault(x => x.Barcode == barcode && !x.Confirmed); if (line != null) { line.ConfirmedQuantity++; yield break; } var stocks = Env.Query(s => Stock.AvailableStocks(s, Address).Where(x => x.Barcode == barcode).ToArray()).Result; if (stocks.Length == 0) { if (Settings.Value.FreeSale) { BarcodeProducts BarcodeProduct = Session.Query <BarcodeProducts>() .Where(x => x.Barcode == barcode).FirstOrDefault(); if (BarcodeProduct != null) { var inputQuantity = new InputQuantityRetailCost(BarcodeProduct); yield return(new DialogResult(inputQuantity, resizable: false)); if (!inputQuantity.WasCancelled) { AddBarcodeProduct(inputQuantity.BarcodeProduct.Value, (uint)inputQuantity.Quantity.Value, (decimal)inputQuantity.RetailCost.Value); yield break; } } } else { Manager.Warning($"Товар с кодом {barcode} не найден"); yield break; } } if (stocks.Length == 1) { AddStock(stocks[0]); yield break; } var model = new ExpSelector(stocks.Select(x => x.Exp.GetValueOrDefault()).Distinct().OrderBy(x => x).ToArray()); model.Name = $"Укажите срок годности - {stocks[0].Product}"; yield return(new DialogResult(model)); var first = stocks.First(x => x.Exp == model.CurrentExp); AddStock(first); }
public CheckLine(BarcodeProducts barcodeProduct, uint quantity, decimal retailCost) { BarcodeProduct = barcodeProduct; Barcode = barcodeProduct.Barcode; Product = barcodeProduct.Product.Name; ProductId = barcodeProduct.Product.Id; CatalogId = barcodeProduct.Product.CatalogId; Producer = barcodeProduct.Producer.Name; ProducerId = barcodeProduct.Producer.Id; Quantity = quantity; RetailCost = retailCost; }
private void AddBarcodeProduct(BarcodeProducts item, uint quantity, decimal retailCost) { if (checkType == null) { checkType = CheckType.SaleBuyer; } var exists = Lines.FirstOrDefault(x => x.BarcodeProduct.Id == item.Id && x.RetailCost == retailCost); if (exists != null) { exists.Quantity += quantity; } else { var line = new CheckLine(item, quantity, retailCost); Lines.Add(line); CurrentLine.Value = line; } }
public AddWaybillLineFromCatalog(BarcodeProducts barcodeProducts) { InitFields(); DisplayName = "Добавление из каталога"; CurrentCatalog = new NotifyValue <Catalog>(); CatalogTerm = new NotifyValue <string>(); ProducerTerm = new NotifyValue <string>(); CurrentProducer = new NotifyValue <Producer>(); WasCancelled = true; IsOkEnabled.Value = false; CurrentCatalog.Value = Session.Get <Catalog>(barcodeProducts.Product.CatalogId); CatalogTerm.Value = Session.Get <Catalog>(barcodeProducts.Product.CatalogId).FullName; CurrentProducer.Value = Session.Get <Producer>(barcodeProducts.Producer.Id); ProducerTerm.Value = Session.Get <Producer>(barcodeProducts.Producer.Id).Name; CurrentCatalog.Changed() .Merge(CurrentProducer.Changed()) .Merge(SupplierCost.Changed()) .Merge(Quantity.Changed()) .Subscribe(_ => IsOkEnabled.Value = CurrentCatalog.Value != null && CurrentProducer.Value != null && SupplierCost.Value > 0 && Quantity.Value > 0); }
public IEnumerable <IResult> BarcodeScanned(string barcode) { if (!User.IsStockEnabled || !CanAddFromCatalog) { yield break; } BarcodeProducts BarcodeProduct = Session.Query <BarcodeProducts>() .Where(x => x.Barcode == barcode).FirstOrDefault(); if (BarcodeProduct != null) { var dlg = new AddWaybillLineFromCatalog(BarcodeProduct); yield return(new DialogResult(dlg)); if (dlg.WasCancelled) { yield break; } var line = new WaybillLine(Waybill) { CatalogId = dlg.CurrentCatalog.Value.Id, ProductId = Session.Query <Product>().FirstOrDefault(r => r.CatalogId == dlg.CurrentCatalog.Value.Id)?.Id, Product = dlg.CurrentCatalog.Value.FullName, ProducerId = dlg.CurrentProducer.Value.Id, Producer = dlg.CurrentProducer.Value.Name, SupplierCost = dlg.SupplierCost.Value, Quantity = dlg.Quantity.Value }; CurrentLine.Value = Lines.Value.AddNewItem(line); CurrentWaybillLine = CurrentLine.OfType <WaybillLine>().ToValue(); } else { Manager.Notify("Товар по штрихкоду не найден"); } }
public void Setup() { settings.Waybills.Add(new WaybillSettings(user, address)); session.DeleteEach <Stock>(); session.DeleteEach <BarcodeProducts>(); model = Open(new Frontend2()); catalog = session.Query <Catalog>().First(); stock = new Stock() { Product = catalog.FullName, CatalogId = catalog.Id, Status = StockStatus.Available, RejectStatus = RejectStatus.NotDefective, Address = address, RetailCost = 1, Quantity = 5, ReservedQuantity = 0, Barcode = "10", ProductId = 1, Exp = SystemTime.Now() }; stateless.Insert(stock); var product1 = GetProduct("АЦЕТИЛСАЛИЦИЛОВАЯ КИСЛОТА табл. 0.5 г N10"); var stockForList = new Stock(session, product1, address, StockStatus.Available, 133) { Quantity = 5, Barcode = "4605635002748", Exp = SystemTime.Now() }; stateless.Insert(stockForList); var product2 = GetProduct("АЦЕТИЛСАЛИЦИЛОВАЯ КИСЛОТА табл. 0.5г N20"); stockForList = new Stock(session, product2, address, StockStatus.Available, 132) { Quantity = 5, Barcode = "4605635002748", Exp = SystemTime.Now() }; stateless.Insert(stockForList); var products = new[] { GetProduct("АСПИРИН БАЙЕР табл. 100мг N20"), GetProduct("АСПИРИН БАЙЕР табл. 500 мг N10"), GetProduct("АСПИРИН БАЙЕР табл. 500 мг N10"), }; for (int i = 0; i < 3; i++) { stockForList = new Stock(session, products[i], address, StockStatus.Available, 132) { Address = address, Quantity = 2 + i, }; stateless.Insert(stockForList); } BarcodeProduct = new BarcodeProducts() { Product = product1, Producer = session.Query <Producer>().First(), Barcode = "30" }; stateless.Insert(BarcodeProduct); session.DeleteEach <Check>(); session.Flush(); }
public InputQuantityRetailCost(BarcodeProducts barcodeProduct) { InitFields(); BarcodeProduct.Value = barcodeProduct; WasCancelled = true; }