Example #1
0
        public BrandItem( RmsAuto.Store.Cms.Entities.Brand brand, RmsAuto.TechDoc.Entities.TecdocBase.Manufacturer manufacturer )
        {
            if( brand == null ) throw new ArgumentNullException( "brand" );
            if( manufacturer == null ) throw new ArgumentNullException( "manufacturer" );

            Brand = brand;
            Manufacturer = manufacturer;
        }
Example #2
0
        public ShoppingCart(int ownerId, string clientId, RmsAuto.Acctg.ClientGroup clientGroup, decimal personalMarkup)
        {
            if( string.IsNullOrEmpty( clientId ) )
                throw new ArgumentException( "Client id cannot be empty", "clientId" );

            _ownerId = ownerId;
            _clientId = clientId;
            _clientGroup = clientGroup;
            _personalMarkup = personalMarkup;
            _storage = new PersistentShoppingCartStorage( _ownerId, _clientId );
        }
        /// <summary>
        /// Инициализация контролов и текущей заявки известными значениями
        /// </summary>
        private void InitControls(RmsAuto.Store.Entities.Reclamation tmpCurrentRequest)
        {
            if (ReclamationType == ReclamationTracking.ReclamationType.Reclamation) // Если заявка на возврат
            {
                _HeaderText.Text = Resources.Reclamations.ReturnRequest;//"Заявка на возврат";
                _Qty.Text = Resources.Reclamations.ReturnQty;//"Количество на возврат";
                _ReclamationReason.Text = Resources.Reclamations.ReturnReason;//"Причина возврата";
                _ReclamationDescription.Text = Resources.Reclamations.ReturnReasonFull;//"Полное описание причины возврата товара";
                phTorg12Number.Visible = phTorg12Price.Visible = true;
                _lSupplyDate.Text = Resources.Reclamations.ReturnInvoiceDate;//"Дата накладной";
                _SupplyDate.Text = CurrentOrderLine.CurrentStatusDate.Value.ToString( "dd.MM.yyyy" );
            }
            else // Если заявка на отказ
            {
                _HeaderText.Text = Resources.Reclamations.RefusalRequest;//"Заявка на отказ";
                _Qty.Text = Resources.Reclamations.RefusalQty;//"Количество на отказ от получения";
                _ReclamationReason.Text = Resources.Reclamations.RefusalReason;//"Причина отказа";
                _ReclamationDescription.Text = Resources.Reclamations.RefusalReasonFull;//"Полное описание причины отказа от получения со склада";
                phUnitQty.Visible = true;
                _lSupplyDate.Text = Resources.Reclamations.RefusalDeliveryDate;//"Дата поступления товара на склад";
                tmpCurrentRequest.UnitQty = CurrentOrderLine.Qty; _UnitQty.Text = CurrentOrderLine.Qty.ToString();
            }

            tmpCurrentRequest.SupplyDate = CurrentOrderLine.CurrentStatusDate;
            tmpCurrentRequest.ReclamationType = ReclamationType;

            _ClientName.Text = tmpCurrentRequest.ClientName = SiteContext.Current.CurrentClient.Profile.ClientName;
            _ClientID.Text = tmpCurrentRequest.ClientID = SiteContext.Current.CurrentClient.Profile.ClientId;
            _ManagerName.Text = tmpCurrentRequest.ManagerName = GetManagerName( SiteContext.Current.CurrentClient.Profile.ManagerId );
            tmpCurrentRequest.ReclamationDate = DateTime.Now; _ReclamationDate.Text = DateTime.Now.ToString( "dd.MM.yyyy" );
            tmpCurrentRequest.OrderID = CurrentOrderLine.OrderID; _OrderID.Text = CurrentOrderLine.OrderID.ToString();
            _OrderDate.Text = tmpCurrentRequest.OrderDate.ToString("dd.MM.yyyy");
            tmpCurrentRequest.EstSupplyDate = CurrentOrderLine.EstSupplyDate; _EstSupplyDate.Text = CurrentOrderLine.EstSupplyDate.HasValue ? CurrentOrderLine.EstSupplyDate.Value.ToString( "dd.MM.yyyy" ) : string.Empty;
            _Manufacturer.Text = tmpCurrentRequest.Manufacturer = CurrentOrderLine.Manufacturer;
            _PartNumber.Text = tmpCurrentRequest.PartNumber = CurrentOrderLine.PartNumber;
            _PartName.Text = tmpCurrentRequest.PartName = CurrentOrderLine.PartName;
            tmpCurrentRequest.SupplierID = CurrentOrderLine.SupplierID;
            tmpCurrentRequest.UnitPrice = CurrentOrderLine.UnitPrice; _UnitPrice.Text = CurrentOrderLine.UnitPrice.ToString();
            tmpCurrentRequest.OrderLineID = CurrentOrderLine.OrderLineID;
            tmpCurrentRequest.AcctgOrderLineID = CurrentOrderLine.AcctgOrderLineID;
        }
Example #4
0
        internal void AssignSparePart(SparePartFranch part, RmsAuto.Acctg.ClientGroup clientGroup, decimal personalMarkup)
        {
            _issues = ShoppingCartItemIssues.NoIssues;

            if (part != null)
            {
                if( UnitPrice != part.GetFinalSalePrice( clientGroup, personalMarkup ) )
                    _issues |= ShoppingCartItemIssues.FinalPartPriceChanged;

                UpdateQtyIssues( part );
                //if (Qty < part.DefaultOrderQty)
                //    _issues |= ShoppingCartItemIssues.QtyBelowRequiredMinimum;
                //else if (Qty % part.DefaultOrderQty != 0)
                //    _issues |= ShoppingCartItemIssues.QtyMultiplicityViolation;

                //if (part.QtyInStock.GetValueOrDefault() > 0 && Qty > part.QtyInStock)
                //    _issues |= ShoppingCartItemIssues.QtyAboveAvailableInStock;

                // deas 25.05.2011 task4218 запрет заказа товаров по нулевой цене
                if ( UnitPrice == 0 )
                    _issues |= ShoppingCartItemIssues.FinalPartPriceNoSet;
            }
            else
                _issues |= ShoppingCartItemIssues.SparePartDiscontinued;

            _part = part;

            //Здесь не нужно использовать фабрику так как
            using (var dc = new StoreDataContext())
            {
                try
                {
                    var resList = dc.spSelSuppliersWithoutAnalogs().ToList().Select( s => s.SupplierID ).ToList<int>();
                    _isAnalogsNotSupported = resList.Contains( part.SupplierID );

                    //TODO: дописать запрос
                    IEnumerable<int> resList2 = dc.ExecuteQuery<int>("Select [SupplierID] From SuppliersWithOnlyAnalogs");
                    if (resList2.Contains(part.SupplierID)) { _isAnalogsNotSupported = null; };
                }
                catch
                {
                    //просто не падаем
                }
                finally
                {
                    if (dc.Connection.State == System.Data.ConnectionState.Open)
                        dc.Connection.Close();
                }
            }
        }
Example #5
0
        public decimal GetFinalSalePrice(RmsAuto.Acctg.ClientGroup clientGroup, decimal personalMarkup )
        {
            GlobalSetting setting = null;
            decimal additionalPriceFactor = 1.0m;
            if (SizeID == 1) /* значит товар - габарит */
            {
                setting = GlobalDBSettings.GlobalSettings.Current.GetSettingByName("PriceFactors.Gabarit");
            }
            else if (SizeID == 2) /* значит товар - шина */
            {
                setting = GlobalDBSettings.GlobalSettings.Current.GetSettingByName("PriceFactors.Tires");
            }
            if (setting != null)
            {
                if (!Decimal.TryParse(
                    setting.Value,
                    NumberStyles.AllowDecimalPoint,
                    new NumberFormatInfo() { NumberDecimalSeparator = "." },
                    out additionalPriceFactor)) { additionalPriceFactor = 1.0m; }
            }

            decimal clientGroupPrice = 0;
            if (SiteContext.Current.InternalFranchName == "rmsauto") //для Москвы цена считается по-старому
            {
                clientGroupPrice = InitialPrice * CorrectionFactor * CorrectionFactor39 * GetCustomFactor(clientGroup)
                    /** GetAdditionalCustomFactor(clientGroup)*/ * additionalPriceFactor + PriceConstantTerm.GetValueOrDefault();
            }
            else
            {
                //считаем цену для франча
                //номер колонки для расчета базовой цены для франча берем из справочника
                RmsAuto.Acctg.ClientGroup cgf = (RmsAuto.Acctg.ClientGroup)AcctgRefCatalog.RmsFranches[SiteContext.Current.InternalFranchName].ClientGroup;
                var clientGroupPrice_Franch = InitialPrice * CorrectionFactor * CorrectionFactor39 * GetCustomFactor(cgf)
                    * GetAdditionalCustomFactor(clientGroup) * additionalPriceFactor + PriceConstantTerm.GetValueOrDefault();
                //считаем цену для РМС
                var clientGroupPrice_RMS = InitialPrice * CorrectionFactor * CorrectionFactor39 * GetCustomFactor(clientGroup)
                    * additionalPriceFactor + PriceConstantTerm.GetValueOrDefault();
                //берем максимальную (исключая таким образом занижение франчами цен относительно наших)
                clientGroupPrice = Math.Max(clientGroupPrice_Franch, clientGroupPrice_RMS);
            }
            var finalPrice = clientGroupPrice * (100 + personalMarkup) / 100;
            return Math.Round(finalPrice, 2); //Math.Round(x, 2) - since coefs have 4-digits accuracy
        }
Example #6
0
 public decimal GetCustomFactor(RmsAuto.Acctg.ClientGroup clientGroup)
 {
     switch( clientGroup )
     {
         case RmsAuto.Acctg.ClientGroup.Group1: return CustomFactor1;
         case RmsAuto.Acctg.ClientGroup.Group2: return CustomFactor2;
         case RmsAuto.Acctg.ClientGroup.Group3: return CustomFactor3;
         case RmsAuto.Acctg.ClientGroup.Group4: return CustomFactor4;
         case RmsAuto.Acctg.ClientGroup.Group5: return CustomFactor5;
         case RmsAuto.Acctg.ClientGroup.Group6: return CustomFactor6;
         case RmsAuto.Acctg.ClientGroup.Group7: return CustomFactor7;
         case RmsAuto.Acctg.ClientGroup.Group8: return CustomFactor8;
         case RmsAuto.Acctg.ClientGroup.Group9: return CustomFactor9;
         case RmsAuto.Acctg.ClientGroup.Group10: return CustomFactor10;
         case RmsAuto.Acctg.ClientGroup.Group11: return CustomFactor11;
         case RmsAuto.Acctg.ClientGroup.Group12: return CustomFactor12;
         case RmsAuto.Acctg.ClientGroup.Group13: return CustomFactor13;
         case RmsAuto.Acctg.ClientGroup.Group14: return CustomFactor14;
         case RmsAuto.Acctg.ClientGroup.Group15: return CustomFactor15;
         case RmsAuto.Acctg.ClientGroup.Group16: return CustomFactor16;
         case RmsAuto.Acctg.ClientGroup.Group17: return CustomFactor17;
         case RmsAuto.Acctg.ClientGroup.Group18: return CustomFactor18;
         case RmsAuto.Acctg.ClientGroup.Group19: return CustomFactor19;
         case RmsAuto.Acctg.ClientGroup.Group20: return CustomFactor20;
         case RmsAuto.Acctg.ClientGroup.Group21: return CustomFactor21;
         case RmsAuto.Acctg.ClientGroup.Group22: return CustomFactor22;
         case RmsAuto.Acctg.ClientGroup.Group23: return CustomFactor23;
         case RmsAuto.Acctg.ClientGroup.Group24: return CustomFactor24;
         case RmsAuto.Acctg.ClientGroup.Group25: return CustomFactor25;
         case RmsAuto.Acctg.ClientGroup.Group26: return CustomFactor26;
         case RmsAuto.Acctg.ClientGroup.Group27: return CustomFactor27;
         case RmsAuto.Acctg.ClientGroup.Group28: return CustomFactor28;
         case RmsAuto.Acctg.ClientGroup.Group29: return CustomFactor29;
         case RmsAuto.Acctg.ClientGroup.Group30: return CustomFactor30;
         case RmsAuto.Acctg.ClientGroup.Group31: return CustomFactor31;
         case RmsAuto.Acctg.ClientGroup.Group32: return CustomFactor32;
         case RmsAuto.Acctg.ClientGroup.Group33: return CustomFactor33;
         case RmsAuto.Acctg.ClientGroup.Group34: return CustomFactor34;
         case RmsAuto.Acctg.ClientGroup.Group35: return CustomFactor35;
         case RmsAuto.Acctg.ClientGroup.Group36: return CustomFactor36;
         case RmsAuto.Acctg.ClientGroup.Group37: return CustomFactor37;
         case RmsAuto.Acctg.ClientGroup.Group38: return CustomFactor38;
         case RmsAuto.Acctg.ClientGroup.Group39: return CustomFactor39;
         case RmsAuto.Acctg.ClientGroup.Group40: return CustomFactor40;
         case RmsAuto.Acctg.ClientGroup.Group41: return CustomFactor41;
         case RmsAuto.Acctg.ClientGroup.Group42: return CustomFactor42;
         case RmsAuto.Acctg.ClientGroup.Group43: return CustomFactor43;
         case RmsAuto.Acctg.ClientGroup.Group44: return CustomFactor44;
         case RmsAuto.Acctg.ClientGroup.Group45: return CustomFactor45;
         case RmsAuto.Acctg.ClientGroup.Group46: return CustomFactor46;
         case RmsAuto.Acctg.ClientGroup.Group47: return CustomFactor47;
         case RmsAuto.Acctg.ClientGroup.Group48: return CustomFactor48;
         case RmsAuto.Acctg.ClientGroup.Group49: return CustomFactor49;
         case RmsAuto.Acctg.ClientGroup.Group50: return CustomFactor50;
         case RmsAuto.Acctg.ClientGroup.Group51: return CustomFactor51;
         case RmsAuto.Acctg.ClientGroup.Group52: return CustomFactor52;
         case RmsAuto.Acctg.ClientGroup.Group53: return CustomFactor53;
         case RmsAuto.Acctg.ClientGroup.Group54: return CustomFactor54;
         case RmsAuto.Acctg.ClientGroup.Group55: return CustomFactor55;
         case RmsAuto.Acctg.ClientGroup.Group56: return CustomFactor56;
         case RmsAuto.Acctg.ClientGroup.Group57: return CustomFactor57;
         case RmsAuto.Acctg.ClientGroup.Group58: return CustomFactor58;
         case RmsAuto.Acctg.ClientGroup.Group59: return CustomFactor59;
         case RmsAuto.Acctg.ClientGroup.Group60: return CustomFactor60;
         case RmsAuto.Acctg.ClientGroup.Group61: return CustomFactor61;
         case RmsAuto.Acctg.ClientGroup.Group62: return CustomFactor62;
         case RmsAuto.Acctg.ClientGroup.Group63: return CustomFactor63;
         case RmsAuto.Acctg.ClientGroup.Group64: return CustomFactor64;
         case RmsAuto.Acctg.ClientGroup.Group65: return CustomFactor65;
         case RmsAuto.Acctg.ClientGroup.Group66: return CustomFactor66;
         case RmsAuto.Acctg.ClientGroup.Group67: return CustomFactor67;
         case RmsAuto.Acctg.ClientGroup.Group68: return CustomFactor68;
         case RmsAuto.Acctg.ClientGroup.Group69: return CustomFactor69;
         case RmsAuto.Acctg.ClientGroup.Group70: return CustomFactor70;
         case RmsAuto.Acctg.ClientGroup.Group71: return CustomFactor71;
         case RmsAuto.Acctg.ClientGroup.Group72: return CustomFactor72;
         case RmsAuto.Acctg.ClientGroup.Group73: return CustomFactor73;
         case RmsAuto.Acctg.ClientGroup.Group74: return CustomFactor74;
         case RmsAuto.Acctg.ClientGroup.Group75: return CustomFactor75;
         case RmsAuto.Acctg.ClientGroup.Group76: return CustomFactor76;
         case RmsAuto.Acctg.ClientGroup.Group77: return CustomFactor77;
         case RmsAuto.Acctg.ClientGroup.Group78: return CustomFactor78;
         case RmsAuto.Acctg.ClientGroup.Group79: return CustomFactor79;
         case RmsAuto.Acctg.ClientGroup.Group80: return CustomFactor80;
         case RmsAuto.Acctg.ClientGroup.Group81: return CustomFactor81;
         case RmsAuto.Acctg.ClientGroup.Group82: return CustomFactor82;
         case RmsAuto.Acctg.ClientGroup.Group83: return CustomFactor83;
         case RmsAuto.Acctg.ClientGroup.Group84: return CustomFactor84;
         case RmsAuto.Acctg.ClientGroup.Group85: return CustomFactor85;
         case RmsAuto.Acctg.ClientGroup.Group86: return CustomFactor86;
         case RmsAuto.Acctg.ClientGroup.Group87: return CustomFactor87;
         case RmsAuto.Acctg.ClientGroup.Group88: return CustomFactor88;
         case RmsAuto.Acctg.ClientGroup.Group89: return CustomFactor89;
         case RmsAuto.Acctg.ClientGroup.Group90: return CustomFactor90;
         case RmsAuto.Acctg.ClientGroup.Group91: return CustomFactor91;
         case RmsAuto.Acctg.ClientGroup.Group92: return CustomFactor92;
         case RmsAuto.Acctg.ClientGroup.Group93: return CustomFactor93;
         case RmsAuto.Acctg.ClientGroup.Group94: return CustomFactor94;
         case RmsAuto.Acctg.ClientGroup.Group95: return CustomFactor95;
         case RmsAuto.Acctg.ClientGroup.Group96: return CustomFactor96;
         case RmsAuto.Acctg.ClientGroup.Group97: return CustomFactor97;
         case RmsAuto.Acctg.ClientGroup.Group98: return CustomFactor98;
         case RmsAuto.Acctg.ClientGroup.Group99: return CustomFactor99;
         case RmsAuto.Acctg.ClientGroup.Group100: return CustomFactor100;
         default: throw new IndexOutOfRangeException();
     }
 }
Example #7
0
        public decimal GetAdditionalCustomFactor(RmsAuto.Acctg.ClientGroup clientGroup)
        {
            //Если это не франч, то этот параметр не учитывается
            if (SiteContext.Current.InternalFranchName == "rmsauto")
                return 1.0m;

            switch (clientGroup)
            {
                case RmsAuto.Acctg.ClientGroup.Group1:  return AdditionalCF1;
                case RmsAuto.Acctg.ClientGroup.Group2:  return AdditionalCF2;
                case RmsAuto.Acctg.ClientGroup.Group3:  return AdditionalCF3;
                case RmsAuto.Acctg.ClientGroup.Group4:  return AdditionalCF4;
                case RmsAuto.Acctg.ClientGroup.Group5:  return AdditionalCF5;
                case RmsAuto.Acctg.ClientGroup.Group20: return AdditionalCF6;
                case RmsAuto.Acctg.ClientGroup.Group21: return AdditionalCF7;
                case RmsAuto.Acctg.ClientGroup.Group8:  return AdditionalCF8;
                case RmsAuto.Acctg.ClientGroup.Group10: return AdditionalCF9;
                case RmsAuto.Acctg.ClientGroup.Group13: return AdditionalCF10;
                case RmsAuto.Acctg.ClientGroup.Group15: return AdditionalCF11;
                default: throw new IndexOutOfRangeException();
            }
        }
Example #8
0
 private ShoppingCart(RmsAuto.Acctg.ClientGroup clientGroup, decimal personalMarkup)
 {
     _clientGroup = clientGroup;
     _personalMarkup = personalMarkup;
     _storage = new TemporaryShoppingCartStorage();
 }
Example #9
0
 public decimal GetFinalSalePrice(RmsAuto.Acctg.ClientGroup clientGroup, decimal personalMarkup)
 {
     var clientGroupPrice = InitialPrice * CorrectionFactor * CorrectionFactor39 * GetCustomFactor(clientGroup) + _PriceConstantTerm.GetValueOrDefault();
     var finalPrice = clientGroupPrice * (100 + personalMarkup) / 100;
     return Math.Round(finalPrice, 2); //Math.Round(x, 2) - since coefs have 4-digits accuracy
 }
Example #10
0
 public static ClientProfile CreateGuestProfile(RmsAuto.Acctg.ClientGroup clientGroup,decimal personalMarkup)
 {
     return new ClientProfile() { ClientGroup = clientGroup, PersonalMarkup = personalMarkup };
 }