Esempio n. 1
0
        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);
            }
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
 public decimal CaseQuantityFor(SaleProduct product, decimal eachQuantity)
 {
     return Math.Floor(eachQuantity / product.ContainerCapacity);
 }
Esempio n. 4
0
        //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;
        }
Esempio n. 5
0
        //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;
        }
Esempio n. 6
0
        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());
            }

        }
Esempio n. 7
0
        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;
 }
Esempio n. 10
0
 public abstract OrderSaleContextBuilder AddLineItem(SaleProduct product, decimal quantity, bool sellReturnables = false);
Esempio n. 11
0
 public override OrderSaleContextBuilder AddLineItem(SaleProduct product, decimal quantity, bool sellReturnables = false)
 {         
     Sale.AddItem(product, quantity, quantity, sellReturnables);            
     return this;            
 }
Esempio n. 12
0
        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);
        }
Esempio n. 13
0
        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);
            }

        }
Esempio n. 14
0
       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();
       }