Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2006.11.12;
Скачать: [xml.tar.bz2];

Вниз

Опять складские дела   Найти похожие ветки 

 
Ломброзо ©   (2006-10-24 22:42) [0]

Итак, с номенклатурой разобрался, выстроив её в табличке БД деревом.
Некоторые позиции у меня сложные и комплексные, то есть некая позиция номенклатурного справочника не является группой, но включает в себя ссылки на другие позиции. К примеру, в комплексную услугу "Стрижка" входят простые услуги "мытье головы", "собственно стрижка", "сушка феном", а также включается стоимость некоторых расходных материалов.  Таким образом, стоимость комплексной услуги может иметь самостоятельную значимость, а может рассчитываться как сумма стоимостей включенных в неё простых услуг.
Я уперся в пользовательский интерфейс калькулятора сметы. В принципе можно реализовать сложный древовидный UI, всецело полагающийся на интеллект пользователя, с каскадными вычислениями,  но мне кажется, эту задачу можно реализовать как-то изящнее, но пока не знаю как :) прошу помощи.


 
Sergey Masloff   (2006-10-24 22:52) [1]

Хранить формуляр и состав отдельно?
Формуляр: дата мастер название
Состав
 1 Стрижка                         100 р
 1.1 Мытье головы                за счет заведения
 1.2 Сушка феном                30 р
 2 Расходные материалы       20 р
 2.1 5 пшиков одеколона      -
 2.2 Затупились лезвия        -  
 3 Прочее                           -
 3.1 Клиент хамил - штраф   50 р

Редактируются отдельные позиции дерева. Где бесплатно составляющие но есть общая услуга - нолик у составляющих все вешается на корень.

Общая сумма ненулевых позиций поднимается в формуляр


 
Sergey Masloff   (2006-10-24 22:53) [2]

Ну ненаглыядно получилось формуляр это как-бы совсем отдельное и отдельно составляющие.


 
Ломброзо ©   (2006-10-24 22:59) [3]

Аспасиба. Но вот момент:
> Общая сумма ненулевых позиций поднимается в формуляр
Номенклатурный справочник у меня поддерживает историю цен. Вот эта самая общая сумма должна храниться в базе данных и пересчитываться по факту изменения стоимости любой из составляющих, или допустимо сделать стоимость сложной услуги вычисляемым значением? Мне сдается, что первое.


 
Sergey Masloff   (2006-10-24 23:06) [4]

Ломброзо ©   (24.10.06 22:59) [3]
Нет зачем? У тебя есть справочник цен. Они поменялись. Ты мне что пришлешь доп. счет я стригся полгода назад.

Это отдельная сущность - как бы копия справочника. То есть когда выбирается услуга подставляешь не ссылку а копируешь данные по состояние на дату. Можешь кстати хранить в каждой строке ссылку на версию справочника по которой это считалось. Сумма в формуляре пересчитывается триггером при изменении любой позиции в составляющих. После оплаты (или например закрытия периода) переводится в нередактируемое состояние.

Я далек от складов но у себя делаю примерно так.


 
Наиль ©   (2006-10-24 23:07) [5]

Лучше делать поле "составной стоимости услуги" вычисляемой.
Пусть СостУслуга состоит из 100 примитивов.
Пусть цена каждого примитива меняется раз в месяц, тогда СостУслуга будет менятся в среднем три раза в день. Это не реальный пример, но всё таки.

Что касается интерфейса, то в докомпьютерную эру это выглядело так:
СостУслуга, в том числе ...


 
Наиль ©   (2006-10-24 23:09) [6]


> "составной стоимости услуги"

читать как "стоимости составной услуги"


 
Mike Kouzmine ©   (2006-10-24 23:23) [7]

Если разговор идет о парикмахерской, то надо знать как выдаются материалы парикмахерам и т.д. А вообще стоимость услуги должен рассчитывать администратор. Мытье, стрижка, укладка, пиллинг, филлингз и салярий. Если это действительно парикмахерская, то могу подсказать - писал 2 системы учета.


 
Ломброзо ©   (2006-10-24 23:57) [8]

Mike Kouzmine ©   (24.10.06 23:23) [7]

Не, не парикмахерская.
Дык - все же я недопонял.
Пусть администратор решил поменять стоимость одной из простых услуг, входящих в состав сложной.
Что должна сделать система?
1) Автоматом втихаря пересчитать стоимость сложной услуги, записать старую стоимость сложной услуги в историю, а новую цену сложной услуги сделать актуальной
2) Выдать злобное перудпреждение и повелеть администратору нажать специальную кнопку для пересчёта и проделать все те же манипуляции со старой и новой ценами
3) Всякий раз вычислять стоимость сложной услуги суммирвоанием стоимостей простых услуг "на лету", без записи истории её изменений в базу данных?


 
Наиль ©   (2006-10-25 00:03) [9]

Однозначно третий вариант.
Но если очень не хочется, то первый, но это источник возможных ошибок.
Простая услуга может входить в несколько сложных, и их всех (сложных) нужно будет изменять.


 
Mike Kouzmine ©   (2006-10-25 00:03) [10]

Что значит в тихаря. Должен быть приказ руководства или утвержденный прайс. Должен быть ответственный за оперативные изменения. И всякий раз вычислять по текущему прайсу. Как в накладной. Услуга или товар, какая разница. Правда по услуге немного сложнее (если это не бытовая населению), но это тонкости.


 
Наиль ©   (2006-10-25 00:06) [11]

Третий вариант плох тогда, когда состав сложной услуги может меняться.
В этом случае к истории цен, нужна будет история изменении состава сложной услуги.
Но даже в таком случае третий вариант лучше остальных.


 
Mike Kouzmine ©   (2006-10-25 00:08) [12]

Наиль ©   (25.10.06 00:06) [11]
Третий вариант плох тогда, когда состав сложной услуги может меняться.

Она не может меняться. Сложная услуга - это растянутая на несколько отчетных периодов. Но там есть свои механизмы учета.


 
Sergey Masloff   (2006-10-25 06:30) [13]

Ломброзо ©   (24.10.06 23:57) [8]
Давай еще раз. Может все же я тебя не понял. Если разделить термины?

Назовем услугой то что получает клиент. Он это называет: я сходил в парикмахерскую (подстригся, оболванился...) Для него это одна услуга.

С точки зрения парикмахерской услуга является составной, причем каждый составляющий ее элемент тоже составной. Стоимость каждого элемента может записываться в его корень или размазываться по "веткам".

Есть справочник "элементарных" услуг.

Есть справочник цен за определенные услуги

А теперь мне непонятна цель (хотя "моя" система вроде без проблем их решает). Варианты.

1) Пришел клиент набрал услуг получил их и оплачивает. Надо это дело оформить, дать клиенту счет а себе оставить копию для анализа. Появляются две сущности: заказ и элементы
В заказ - дата номер клиент исполнитель статус (например)
В элементах (детализациях)
номер элемента код услуги стоимость ссылка на запись справочника откуда стоимость (да денормализовано несколько но иногда полезно)
Суммы по всем элементам накапливаются и поднимаются записываясь в формуляр - "заказ". Все счастливы. При изменении справочника цен в заказе и его элементах ничего не меняется.

2) Нужно сделать витрину-прайс типовых услуг.
Нет проблем. Создается шаблонный "заказ" с типовыми услугами (несколько на каждые комбинации). В нем цен нет. При запросе клиента в цикле бежим по элементам заказа, от них в справочник цен на нужную дату, подставляем цены суммируем их и результат *и если нужно детализацию) - клиенту отображаем.

3) Почти тоже самое что 2 но еще к шаблонам добавляется конструктор когда клиент может сам удалять-добавлять элементы - и смотреть как что подорожает подешевеет.


 
Александр Иванов ©   (2006-10-25 07:53) [14]


> Ломброзо ©   (24.10.06 22:42) 

А возможен ли вариант когда в результате услуги появится из одного наименования номенклатуры другой?
Пример: входная номенклатура: Банан, услуга: очистка банана, результат: чищеный банан.
Тогда услуги правильней назвать техпроцессами и посмотреть вариант реализации. В сети их должно быть много.


 
Mike Kouzmine ©   (2006-10-25 09:56) [15]

Александр Иванов ©   (25.10.06 07:53) [14] Вы забыли добавить - вывоз мусора, покупка утенка для унитаза. Не надо доводить все до абсурда.


 
kaif ©   (2006-10-25 10:02) [16]

2 Ломброзо ©
ИМХО, "история цен" - совершенно бессмысленное понятие, если это учетная задача.
Максимум - должна быть текущая цена в справонике.
В учете существует история сделок (продаж. услуг), осуществленных по каким-то конкретным историческим ценам.
А история цен - это когда даже если сделок нет, то все равно всякое изменение цены записывается и хранится в виде истории именно цены в условиях отсутствия сделок.
Это может быть осмысленно в маркетологических задачах, но не в учетных. В учете нет такого факта как "измененная цена". Максимум, что может быть - это "прайс от такого-то числа" - отдельный документ, в котором перечислены все позиции, на которые вводилась новая цена, и автор такого прайса. Такой прайс можно распечатать торжестаенно и повесить на стену, а потом положить в ящичек и наслаждаться, если делать больше нечего. Хотя ппроще складывать в ящичек "текущий прайс". Зачем хранить все эти прайсы задним числом - я не знаю. Наверно для того чтобы еще больше склонить пользователя к безалаберности и дать ему еще одну взоможность запускать дела и вводить данные задним числом, этак три месяца спустя того, как произошли реальные события и так приперло, что дальше некуда.


 
Александр Иванов ©   (2006-10-25 10:10) [17]


> Mike Kouzmine ©   (25.10.06 09:56) [15]

Не понял, где там абсурд. Может и есть, но не вижу.
Мне показалось, что задача очень близка к задаче производственного учета.  И, если это так, то в сети есть масса описаний реализации.


 
Ломброзо ©   (2006-10-25 10:33) [18]

Всем спасибо, кажется, утряслось. Итак, я решил:
- атомарная единица - простая услуга (и её стоимость)
- значение "стоимость сложной услуги" в справочнике номенклатуры особого смысла не имеет
- стоимость сложной услуги в заказе - это сумма стоимостей включенных в неё простых услуг (помноженных на количество)


 
VICTOR_   (2006-10-25 11:01) [19]

>>>2) Выдать злобное перудпреждение и повелеть администратору нажать специальную кнопку для пересчёта и проделать все те же манипуляции со старой и новой ценами

Дело в том, что клиент действительно оплачивает услуги по прайс-листу. То есть расчет на лету возможен только, если в прайс-лист НЕ включаются "сложные услуги".
Если же в прайс-лист включены и "сложные услуги", тогда при изменении стоимости "простой услуги" программа должна все аккуратно пересчитать, распечатать новые калькуляционные листы(сметы) и новый прайс-лист.

Насколько я понял "простые услуги" считаются по отпускной стоимости. В противном случае (при расчете по входным ценам) надо рассматривать и анализировать процент наценки, так как отпускная стоимость "сложной услуги" может и не изменится при изменении входной стоимости "простой услуги".


 
Vemer ©   (2006-10-26 01:45) [20]

Формировать цены по текущим ценам из справочника,
но писать в базу по каждой сделке что заплачено конкретно по какой позиции - отпадает надобность в танцах с бубном с историей цен.



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2006.11.12;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.52 MB
Время: 0.043 c
2-1161686802
Krants
2006-10-24 14:46
2006.11.12
Вызвать Hint


4-1150840652
Ain
2006-06-21 01:57
2006.11.12
Работа с видеокартой


15-1161346025
McSimm
2006-10-20 16:07
2006.11.12
Дабы не офтопить:


2-1162035733
Star dust
2006-10-28 15:42
2006.11.12
ini-файл


4-1151304560
DeadMeat
2006-06-26 10:49
2006.11.12
Форматирование текста по центру в TEdit





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский