Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 10.01.2019
Сообщений: 28

Применение скидки к товарам

09.10.2019, 15:49. Показов 2227. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите, пожалуйста, с задачей. Весь мозг уже съел...

Нужно создать товар, который имеет базовую цену и к нему можно применить скидку. Но есть несколько условий:
1. Товар со скидкой не является новым товаром
2. Товар со скидкой не перекрывает старый товар (то есть, один товар может быть представлен несколькими системами, в одной может быть скидка, в другой нет)
3. Товар со скидкой нельзя выбрать для доставки, его можно только забрать самовывозом
4. Товар может иметь скидку 0%, при этом он все еще будет товаром со скидкой.
Вот, что я придумал:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 internal class Product
    {
        public string Name { get; }
        public float Price { get; set; }
        
    }
 
    internal class Discount
    {
        public bool IsDiscount { get; set; }
        public float DiscountSize { get; set; }
 
        public Discount(float discount)
        {
            IsDiscount = true;
            DiscountSize = discount;
        }
 
        public float Apply(Product product)
        {
            if (IsDiscount)
            {
                return product.Price - product.Price * (DiscountSize / 100);
            }
            return product.Price;
        }
    }
Это позволяет мне создать скидку, применить ее к товару и выводить стоимость товара именно со скидкой.
Проблема возникла в доставке. Потому как объект ссылочный тип, то я не могу создать поле IsDiscount, которое бы показывало есть скидка или нет. Потому как, если в одной системе эта переменная будет меняться на true, то это будет меняться во всех системах. Надеюсь, я понятно написал.. Застопорился, не знаю, как правильно сделать.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.10.2019, 15:49
Ответы с готовыми решениями:

Применение скидки с купона на сумму зкаказа
Добрый день! Как сделать применение скидки с купона на сумму всего заказа. Тип скидки: Фиксированная сумма. Тип купона - многоразовый. В...

Данные по товарам
Есть экселевский лист с данными: количество товара на складе, второй лист - счет который будет заполняться в результате работы...

Подсчет остатков по товарам
Добрый вечер, столкнулся со следующей проблемой: в таблице "Заказы" содержатся строки типа "приход" и "расход" для...

11
3566 / 2507 / 1174
Регистрация: 14.08.2016
Сообщений: 8,219
09.10.2019, 16:01
Цитата Сообщение от Fardar Посмотреть сообщение
я не могу создать поле IsDiscount, которое бы показывало есть скидка или нет. Потому как, если в одной системе эта переменная будет меняться на true, то это будет меняться во всех системах.
только если поле статическое, в противном случае, каждый экземпляр класса будет иметь собственное значение
0
0 / 0 / 0
Регистрация: 10.01.2019
Сообщений: 28
09.10.2019, 16:49  [ТС]
Да, но надо, чтобы один и тот же экземпляр в одной системе был со скидкой, а в другой без. Статика дает возможность делать общее поле во всех экземплярах класса с одинаковым значением. То есть, если я у одного экземпляра статическое поле поставлю true, то оно будет true во всех экземплярах. А это вообще не то, что мне нужно.
0
3566 / 2507 / 1174
Регистрация: 14.08.2016
Сообщений: 8,219
09.10.2019, 16:56
ну чЮдес же не бывает, что б одно и тоже было разным
а что значит
Цитата Сообщение от Fardar Посмотреть сообщение
одной системе был со скидкой, а в другой
что это за системы?
0
0 / 0 / 0
Регистрация: 10.01.2019
Сообщений: 28
09.10.2019, 17:00  [ТС]
Ну, допустим, база данных с товарами одна, а магазина два. В одном магазине на этот товар есть скидка, а в другом нет. При этом на складе товар в единственном экземпляре и они просто не могут создать два экземпляра класса, чтобы продавать один товар.
0
3566 / 2507 / 1174
Регистрация: 14.08.2016
Сообщений: 8,219
09.10.2019, 17:32
в системе скидка идет на весь такой товар в этом магазине или часть может быть со скидкой часть без?
0
 Аватар для Kazbek17
1484 / 939 / 454
Регистрация: 06.02.2012
Сообщений: 2,868
09.10.2019, 17:35
Цитата Сообщение от Fardar Посмотреть сообщение
Ну, допустим, база данных с товарами одна, а магазина два
Тогда не товар должен иметь значение о скидке а магазин. Два магазина должны ссылаться на один и тот - же товар. При выдачи товара со склада, магазин должен ввести для себя пометку. Вот схематично.
Миниатюры
Применение скидки к товарам  
0
0 / 0 / 0
Регистрация: 10.01.2019
Сообщений: 28
09.10.2019, 17:44  [ТС]
Часть товаров в этом магазине может идти без скидки.
0
 Аватар для Kazbek17
1484 / 939 / 454
Регистрация: 06.02.2012
Сообщений: 2,868
09.10.2019, 17:50
Цитата Сообщение от Fardar Посмотреть сообщение
Часть товаров в этом магазине может идти без скидки.
Ну так пускай идет. у вас по дефолту значение о скидки всегда false.
0
0 / 0 / 0
Регистрация: 10.01.2019
Сообщений: 28
09.10.2019, 17:53  [ТС]
Тогда не товар должен иметь значение о скидке а магазин. Два магазина должны ссылаться на один и тот - же товар. При выдачи товара со склада, магазин должен ввести для себя пометку.
Как раз эту схему сейчас пытаюсь реализовать)

Добавлено через 1 минуту
Ну так пускай идет. у вас по дефолту значение о скидки всегда false.
Это был ответ другому человеку, я просто с цитатами еще не разобрался. По Вашей схеме я понимаю о чем речь (вроде), поскольку сейчас на бумаге такую же схему набросал.
0
 Аватар для Kazbek17
1484 / 939 / 454
Регистрация: 06.02.2012
Сообщений: 2,868
09.10.2019, 17:53
Еще раз повторюсь. Товару необязательно знать как он продается, со скидкой или без. Все действия о товаре должен производить "Магазин". В магазине должна быть своя база в которую добавляется товар и у же на основание добавления товара "Магазин" делает отметку о скидке или по умолчанию нет.
0
0 / 0 / 0
Регистрация: 10.01.2019
Сообщений: 28
09.10.2019, 18:00  [ТС]
Товару необязательно знать как он продается, со скидкой или без. Все действия о товаре должен производить "Магазин".
Именно это я сейчас и делаю. Но я не могу ввести одну переменную о скидке в магазин, поскольку товаров много, какие-то со скидкой, какие-то нет. И скидок у магазина может быть много. Я попробую добавить лист скидок в магазин и создать отдельный класс "Скидка", в котором будет лист товаров. Магазин уже будет сравнивать товары в наличие и товары в листах его скидок, если товар есть в одной из скидок, то доставки не будет, будет только самовывоз.
Попробую так, посмотрю, какие проблемы возникнут при таком решении.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.10.2019, 18:00
Помогаю со студенческими работами здесь

Ценники по выбранным товарам
Здравствуйте. С Акцессом не особо дружу, подскажите как сделать: форма, в ней выбираем из таблицы Goods товары, которые нужно вывести в...

Вопрос по категориям и товарам
Я создал в бд 2 таблицы: первая это категории вторая список товаров... как мне теперь сделать чтоб я выбирал категорию и по ней мне...

Абстрактный класс по товарам
Описать абстрактный класс по товарам. Поля: Товар, Магазин, цена, . Сделать функции поиска, удаления и добавление товара

Запрос по клиентам и товарам
Какой клиент, какой товар, сколько, цена, дата и кто его обслужил

Отчет по неликвидным товарам
Добрый день. 1с Розница 8.3 Подскажите пожалуйста можно ли и как получить отчет по залежавшимся (неликвидным) товарам?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru