public void AddItem(SaleProduct product, decimal quantity, decimal available, bool includeReturnables) { var item = AddItem(product, quantity); item.AvailableQauntity = available; item.SaleQuantity = item.Quantity; if (includeReturnables) { SellReturnablesForItem(item); } }
private void InsertProduct(string description, decimal inventoryBalance = 0) { var saleProduct = new SaleProduct(Guid.NewGuid()); saleProduct.Description = description; var inventoryProduct = new Inventory(Guid.NewGuid()); inventoryProduct.Balance = inventoryBalance; inventoryProduct.ProductMasterID = saleProduct.Id; Database.InsertWithChildren(saleProduct, recursive: true); Database.InsertWithChildren(inventoryProduct, recursive:true); }
public decimal CaseQuantityFor(SaleProduct product, decimal eachQuantity) { return Math.Floor(eachQuantity / product.ContainerCapacity); }
//This method is used when the user adds an item via the UI public ProductLineItem AddItem(SaleProduct product, decimal quantity) { var item = AddItem(Guid.NewGuid(), product, product.Id, quantity, PriceFor(product), VatRateFor(product)); if (product.ReturnableProduct != null) { AddReturnableItem(Guid.NewGuid(), product.ReturnableProduct, product.ReturnableProduct.Id, quantity, PriceFor(product.ReturnableProduct)); } var caseQuantity = CaseQuantityFor(product, quantity); if (product.ReturnableContainer != null && caseQuantity > 0) { AddReturnableItem(Guid.NewGuid(), product.ReturnableContainer, product.ReturnableContainer.Id, caseQuantity, PriceFor(product.ReturnableContainer)); } return item; }
//This method is called when constructing the order from commands as part of a DB rebuild or when the Hub modified the order public ProductLineItem AddItem(Guid lineItemId, SaleProduct product, Guid saleProductId, decimal quantity, decimal price, decimal vatRate) { var item = new ProductLineItem(lineItemId, Id) { Quantity = quantity, Product = product, ProductMasterId = saleProductId, Price = price, VatRate = vatRate }; LineItems.Add(item); return item; }
private bool HasProductChanged(SaleProduct item) { using (var context = ObjectFactory.Container.GetNestedContainer()) { var product = context.GetInstance<IProductRepository>().GetById(item.Id); if (product == null) return true; var desc = product.Description.Trim().ToLower(); var itemdesc =item.Description.Trim().ToLower(); var productprice = Math.Round(product.ExFactoryPrice, 2); var itemprice=Math.Round(product.ExFactoryPrice, 2); return (product.Id != item.Id) || (product.Brand.Id != item.Brand.Id) || (productprice != itemprice) || (desc != itemdesc)||(product.ProductCode.ToLower()!=item.ProductCode.ToLower()); } }
private SaleProduct[] ConstructProducts(List<ProductImport> entities) { var temp = new List<SaleProduct>(); var defaultSupplier = ObjectFactory.GetInstance<ISupplierRepository>().GetAll(true).FirstOrDefault(p => p.Name != null && p.Name.Equals("default")); if (defaultSupplier == null) { defaultSupplier = new Supplier(Guid.NewGuid()) { Name = "default", Code = "default", Description = "default" }; try { ObjectFactory.GetInstance<ISupplierRepository>().Save(defaultSupplier); } catch { } } foreach (var entity in entities) { var product = ObjectFactory.GetInstance<IProductRepository>().GetByCode(entity.ProductCode) as SaleProduct; bool isNew = false; if(product==null) { isNew = true; product= new SaleProduct(Guid.NewGuid()); } var brand = ObjectFactory.GetInstance<IProductBrandRepository>().GetAll(true) .FirstOrDefault( p => p.Code != null && (p.Code.Equals(entity.BrandCode, StringComparison.CurrentCultureIgnoreCase)) || p.Name != null && p.Name.Equals(entity.BrandCode, StringComparison.CurrentCultureIgnoreCase)); if (string.IsNullOrEmpty(entity.BrandCode)) brand = ObjectFactory.GetInstance<IProductBrandRepository>().GetAll(true).FirstOrDefault(p => p.Code != null && (p.Code.Equals("default", StringComparison.CurrentCultureIgnoreCase) || p.Name != null && p.Name.Equals("default", StringComparison.CurrentCultureIgnoreCase))); if (brand == null) { brand = ObjectFactory.GetInstance<IProductBrandRepository>().GetAll(true).FirstOrDefault(p => p.Code != null && p.Code == "default") ?? new ProductBrand(Guid.NewGuid()) { Code = string.IsNullOrEmpty(entity.BrandCode) ? "default" : entity.BrandCode, Name = string.IsNullOrEmpty(entity.BrandCode) ? "default" : entity.BrandCode, Supplier = defaultSupplier }; try { ObjectFactory.GetInstance<IProductBrandRepository>().Save(brand); } catch { } } product.Brand = brand; if (product.ProductType == null) { var productType = ObjectFactory.GetInstance<IProductTypeRepository>().GetAll(true).FirstOrDefault( p => p.Code != null && p.Code.Equals("default", StringComparison.CurrentCultureIgnoreCase) || p.Name != null && p.Name.Equals("default", StringComparison.CurrentCultureIgnoreCase)); if (productType == null) { productType = new ProductType(Guid.NewGuid()) { Name = "default", Code = "default", Description = "default" }; try { ObjectFactory.GetInstance<IProductTypeRepository>().Save(productType); } catch { } } product.ProductType = productType; } if (product.PackagingType == null) { var packagingType = ObjectFactory.GetInstance<IProductPackagingTypeRepository>().GetAll(true).FirstOrDefault( p => p.Code != null && p.Code.Equals("default", StringComparison.CurrentCultureIgnoreCase) || p.Name != null && p.Name.Equals("default", StringComparison.CurrentCultureIgnoreCase)); if (packagingType == null) { packagingType = new ProductPackagingType(Guid.NewGuid()) { Name = "default", Code = "default", Description = "default" }; try { ObjectFactory.GetInstance<IProductPackagingTypeRepository>().Save(packagingType); } catch { } } product.PackagingType = packagingType; } if (product.Packaging == null) { var packaging = ObjectFactory.GetInstance<IProductPackagingRepository>().GetAll(true).FirstOrDefault( p => p.Code != null && p.Code.Equals("default", StringComparison.CurrentCultureIgnoreCase) || p.Name != null && p.Name.Equals("default", StringComparison.CurrentCultureIgnoreCase)); if (packaging == null) { packaging = new ProductPackaging(Guid.NewGuid()) { Name = "default", Code = "default", Description = "default", }; try { ObjectFactory.GetInstance<IProductPackagingRepository>().Save(packaging); } catch { } } product.Packaging = packaging; } if (product.VATClass == null) { var productVat = ObjectFactory.GetInstance<IVATClassRepository>().GetAll(true).FirstOrDefault( p => p.VatClass != null && p.VatClass == "defaultVAT" || p.Name != null && p.Name.Equals("defaultVAT", StringComparison.CurrentCultureIgnoreCase)); if (productVat == null) { var viatItem = new VATClass.VATClassItem(Guid.NewGuid()) { EffectiveDate = DateTime.Now, Rate = 0, }; productVat = new VATClass(Guid.NewGuid()) { Name = "defaultVAT", VatClass = "defaultVAT", }; productVat.VATClassItems.Add(viatItem); try { ObjectFactory.GetInstance<IVATClassRepository>().Save(productVat); } catch { } } product.VATClass = productVat; } if (product.Flavour == null) { var flavor = ObjectFactory.GetInstance<IProductFlavourRepository>().GetAll(true).FirstOrDefault( p => p.Name != null && p.Name == "defaultflavor" || p.Code != null && p.Code.Equals("defaultflavor", StringComparison.CurrentCultureIgnoreCase)); if (flavor == null) { flavor = new ProductFlavour(Guid.NewGuid()) { Name = "defaultflavor", Code = "defaultflavor", Description = "defaultflavor", ProductBrand = brand }; try { ObjectFactory.GetInstance<IProductFlavourRepository>().Save(flavor); } catch { } } product.Flavour = flavor; } product.ProductCode = entity.ProductCode; product._Status = EntityStatus.Active; product.ExFactoryPrice = entity.ExFactoryPrice; product.Description = entity.Description.Trim(); if (isNew || HasProductChanged(product)) temp.Add(product); } return temp.ToArray(); }
/**/ public ReturnableProductDTO Map(ReturnableProduct returnableProduct) { if (returnableProduct == null) return null; return Mapper.Map<ReturnableProduct, ReturnableProductDTO>(returnableProduct); } /**/ public SaleProductDTO Map(SaleProduct saleProduct) { if (saleProduct == null) return null; return Mapper.Map<SaleProduct, SaleProductDTO>(saleProduct); }
public override OrderSaleContextBuilder AddLineItem(SaleProduct product, decimal quantity, bool sellReturnables = false) { //Returnables are included automatically for all orders Sale.AddItem(product, quantity, quantity, sellReturnables); return this; }
public abstract OrderSaleContextBuilder AddLineItem(SaleProduct product, decimal quantity, bool sellReturnables = false);
public override OrderSaleContextBuilder AddLineItem(SaleProduct product, decimal quantity, bool sellReturnables = false) { Sale.AddItem(product, quantity, quantity, sellReturnables); return this; }
private BaseProductLineItem AddProductLineItem(Order order, SaleProduct product, AddMainOrderLineItemCommand command) { var vatRate = command.LineItemVatValue/command.ValueLineItem; return order.AddItem(command.CommandId, product, product.Id, command.Qty, command.ValueLineItem, vatRate); }
private bool HasProductChanged(SaleProduct item) { using (var context = ObjectFactory.Container.GetNestedContainer()) { var product = context.GetInstance<IProductRepository>().GetByCode(item.ProductCode, true); if (product == null) return true; var desc = product.Description.Trim().ToLower(); var itemdesc = item.Description.Trim().ToLower(); var productprice = Math.Round((decimal) product.ExFactoryPrice, 2); var itemprice = Math.Round((decimal) product.ExFactoryPrice, 2); var itemVATClassId= item.VATClass!=null?item.VATClass.Id.ToString():""; var productVATClassId = product.VATClass != null ? product.VATClass.Id.ToString() : ""; return (product.Id != item.Id) || (product.Brand.Id != item.Brand.Id) || (productprice != itemprice) || (desc != itemdesc) || (productVATClassId!=itemVATClassId); } }
private SaleProduct[] ConstructProducts(IEnumerable<ProductImport> entities) { var temp = new List<SaleProduct>(); var defaultSupplier = ObjectFactory.GetInstance<ISupplierRepository>().GetAll(true).FirstOrDefault(p => p.Name != null && p.Name.Equals("default")); if (defaultSupplier == null) { defaultSupplier = new Supplier(Guid.NewGuid()) { Name = "default", Code = "default", Description = "default" }; try { ObjectFactory.GetInstance<ISupplierRepository>().Save(defaultSupplier); } catch { } } var validEntities = entities.Where(p => p.Description != null && !p.Description.ToLower().Contains("discontinued")); foreach (var entity in validEntities) { var product = ObjectFactory.GetInstance<IProductRepository>().GetByCode(entity.ProductCode, true) as SaleProduct; bool isNew = false; if(product==null) { product = new SaleProduct(Guid.NewGuid()); isNew = true; } #region brand var allBrands = ObjectFactory.GetInstance<IProductBrandRepository>().GetAll(true).ToList(); var brand = allBrands .FirstOrDefault( p => p.Code != null && p.Code.Equals(entity.BrandCode, StringComparison.CurrentCultureIgnoreCase) || p.Name != null && p.Name.Equals(entity.BrandCode, StringComparison.CurrentCultureIgnoreCase) ); if (string.IsNullOrEmpty(entity.BrandCode)) brand = allBrands.FirstOrDefault(p => p.Code != null && p.Code == "default"); if (brand == null) { brand = allBrands.FirstOrDefault(p => p.Code != null && p.Code == "default") ?? new ProductBrand(Guid.NewGuid()) { Code = string.IsNullOrEmpty(entity.BrandCode) ? "default" : entity.BrandCode, Name = string.IsNullOrEmpty(entity.BrandCode) ? "default" : entity.BrandCode, Supplier = defaultSupplier }; try { ObjectFactory.GetInstance<IProductBrandRepository>().Save(brand); } catch { } } product.Brand = brand; #endregion #region Product Type var productType = ObjectFactory.GetInstance<IProductTypeRepository>().GetAll(true).FirstOrDefault( p => p.Code != null && p.Code.Equals(entity.ProductTypeCode, StringComparison.CurrentCultureIgnoreCase) || p.Code!= null &&p.Code.Equals("default", StringComparison.CurrentCultureIgnoreCase) || p.Name != null && p.Name.Equals("default", StringComparison.CurrentCultureIgnoreCase)); if (productType == null) { productType = new ProductType(Guid.NewGuid()) { Name = string.IsNullOrEmpty(entity.ProductTypeCode) ? "default" : entity.ProductTypeCode, Code = string.IsNullOrEmpty(entity.ProductTypeCode) ? "default" : entity.ProductTypeCode, Description = string.IsNullOrEmpty(entity.ProductTypeCode) ? "default" : entity.ProductTypeCode }; try { ObjectFactory.GetInstance<IProductTypeRepository>().Save(productType); }catch { } } product.ProductType = productType; #endregion #region Packaging type var allPackagingTypes = ObjectFactory.GetInstance<IProductPackagingTypeRepository>().GetAll(true).ToList(); ProductPackagingType packagingType = null; if (string.IsNullOrEmpty(entity.PackagingTypeCode)) packagingType = allPackagingTypes.FirstOrDefault(p => p.Name != null && p.Name == "default"); else { packagingType = allPackagingTypes.FirstOrDefault( p => p.Code != null && p.Code.Equals(entity.PackagingTypeCode, StringComparison.CurrentCultureIgnoreCase)); } if(packagingType==null) { packagingType =allPackagingTypes.FirstOrDefault(p => p.Name != null && p.Name == "default")?? new ProductPackagingType(Guid.NewGuid()) { Name = string.IsNullOrEmpty(entity.PackagingTypeCode) ? "default" : entity.PackagingTypeCode, Code = string.IsNullOrEmpty(entity.PackagingTypeCode) ? "default" : entity.PackagingTypeCode, Description = string.IsNullOrEmpty(entity.PackagingTypeCode) ? "default" : entity.PackagingTypeCode }; try { ObjectFactory.GetInstance<IProductPackagingTypeRepository>().Save(packagingType); } catch { } } product.PackagingType = packagingType; #endregion #region Packaging var packagings = ObjectFactory.GetInstance<IProductPackagingRepository>().GetAll(true).ToList(); ProductPackaging packaging; if(string.IsNullOrEmpty(entity.PackagingCode)) packaging = packagings.FirstOrDefault( p => p.Code != null && p.Code.Equals("default", StringComparison.CurrentCultureIgnoreCase)); else { packaging = packagings.FirstOrDefault( p => p.Code != null && p.Code.Equals(entity.PackagingCode, StringComparison.CurrentCultureIgnoreCase)); } if(packaging==null) { packaging = packagings.FirstOrDefault( p => p.Code != null && p.Code.Equals("default", StringComparison.CurrentCultureIgnoreCase)) ?? new ProductPackaging(Guid.NewGuid()) { Name = string.IsNullOrEmpty(entity.PackagingCode) ? "default" : entity.PackagingCode, Code = string.IsNullOrEmpty(entity.PackagingCode) ? "default" : entity.PackagingCode, Description = string.IsNullOrEmpty(entity.PackagingCode) ? "default" : entity.PackagingCode }; try { ObjectFactory.GetInstance<IProductPackagingRepository>().Save(packaging); }catch { } } product.Packaging = packaging; #endregion #region VAT VATClass productVat; var productVats = ObjectFactory.GetInstance<IVATClassRepository>().GetAll(true).ToList(); if(string.IsNullOrEmpty(entity.VATClass)) productVat= productVats.FirstOrDefault(p => p.VatClass != null && p.VatClass.Equals("defaultVAT", StringComparison.CurrentCultureIgnoreCase)); else { productVat = productVats.FirstOrDefault( p => p.VatClass != null && p.VatClass.Equals(entity.VATClass, StringComparison.CurrentCultureIgnoreCase) || p.Name != null && p.Name.Equals(entity.VATClass, StringComparison.CurrentCultureIgnoreCase)); } if(productVat==null) { var viatItem = new VATClass.VATClassItem(Guid.NewGuid()) { EffectiveDate = DateTime.Now, Rate = 0, }; productVat = productVats.FirstOrDefault( p => p.VatClass != null && p.VatClass.Equals("defaultVAT", StringComparison.CurrentCultureIgnoreCase)) ?? new VATClass(Guid.NewGuid()) { Name = string.IsNullOrEmpty(entity.VATClass) ? "defaultVAT" : entity.VATClass, VatClass = string.IsNullOrEmpty(entity.VATClass) ? "defaultVAT" : entity.VATClass, }; productVat.VATClassItems.Add(viatItem); try { ObjectFactory.GetInstance<IVATClassRepository>().Save(productVat); }catch { } } product.VATClass = productVat; #endregion #region Flavour var allFlavors = ObjectFactory.GetInstance<IProductFlavourRepository>().GetAll(true).ToList(); ProductFlavour flavor; if (string.IsNullOrEmpty(entity.ProductFlavourCode)) flavor = allFlavors.FirstOrDefault( p => p.Code != null && p.Code.Equals("defaultflavor", StringComparison.CurrentCultureIgnoreCase)); else { flavor=allFlavors.FirstOrDefault(p => p.Code != null && p.Code == entity.ProductFlavourCode); } if(flavor==null) { flavor = allFlavors.FirstOrDefault( p => p.Code != null && p.Code.Equals("defaultflavor", StringComparison.CurrentCultureIgnoreCase)) ?? new ProductFlavour(Guid.NewGuid()) { Name = string.IsNullOrEmpty(entity.ProductFlavourCode) ? "defaultflavor" : entity.ProductFlavourCode, Code = string.IsNullOrEmpty(entity.ProductFlavourCode) ? "defaultflavor" : entity.ProductFlavourCode, Description = string.IsNullOrEmpty(entity.ProductFlavourCode) ? "defaultflavor" : entity.ProductFlavourCode, ProductBrand = product.Brand }; try { ObjectFactory.GetInstance<IProductFlavourRepository>().Save(flavor); } catch (Exception ex) { FileUtility.LogError(ex.Message); } } product.Flavour = flavor; #endregion #region Discount Group if(!string.IsNullOrEmpty(entity.DiscountGroup)) { DiscountGroup discountGroup = ObjectFactory.GetInstance<IGroupDiscountMapper>().FindByCode(entity.DiscountGroup); if(discountGroup==null) { discountGroup = new DiscountGroup(Guid.NewGuid()) { Code = entity.DiscountGroup.Trim(), Name = entity.DiscountGroup.Trim(), _Status = EntityStatus.Active }; try { ObjectFactory.GetInstance<IGroupDiscountMapper>().Insert(discountGroup); }catch(Exception ex) { FileUtility.LogError(ex.Message); } } } #endregion product.ProductCode = entity.ProductCode; product.ExFactoryPrice = entity.ExFactoryPrice; product.Description = entity.Description; UpdateDefaultTierPricing(product.Id, product.ExFactoryPrice, product.ExFactoryPrice); if (isNew || HasProductChanged(product)) temp.Add(product); } return temp.ToArray(); }