powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / ERP и учетные системы [игнор отключен] [закрыт для гостей] / Универсальная учётная система МП «УС Land». Вопрос-ответ
25 сообщений из 429, страница 11 из 18
Универсальная учётная система МП «УС Land». Вопрос-ответ
    #36966207
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Обсуждать таким вот образом правку наименования товара - идиотизм, ИМХО.

Надо просто спросить, может ли выводится наимен. товара как периодический реквизит (зависим от даты/условия и т.д.). И ВСЁ !
Может ? Отлично.
Не может ? Жаль. Иногда нужно.

Зачем этот флуд на пять листов, ловля на слове и поиск оговорок оппонентов ?

Устроили тут филиал ПТ :)
...
Рейтинг: 0 / 0
Универсальная учётная система МП «УС Land». Вопрос-ответ
    #36966274
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LSVОбсуждать таким вот образом правку наименования товара - идиотизм, ИМХО.

правка наименования просто как пример того, что некоторые законы построения БД все же нужно пытаться соблюдать. Замените наименование на любое другое свойство, которое является ключем группировки для каких-то бизнес-правил, но при этом зависит от качества ввода данных во времени, суть от этого не изменится.

p.s. ищутся не оговорки, а суть. Из всего можно извлечь пользу. ТС же сам предложил.
...
Рейтинг: 0 / 0
Универсальная учётная система МП «УС Land». Вопрос-ответ
    #36966330
Фотография Андрей Ж.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LSVНадо просто спросить, может ли выводится наимен. товара как периодический реквизит (зависим от даты/условия и т.д.). И ВСЁ ! Может ? Отлично. Не может ? Жаль. Иногда нужно.

Любопытно! Объясните плж, что Вы имели в виду или привести пример такого наименования?
...
Рейтинг: 0 / 0
Универсальная учётная система МП «УС Land». Вопрос-ответ
    #36966344
Фотография Андрей Ж.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafmправка наименования просто как пример того, что некоторые законы построения БД все же нужно пытаться соблюдать.
Вроде бы пояснил, что по большей части БД (как совокупность связанных таблиц и индексов) подчиняется реляционным правилам. "Удачное" попадание "наименование товара" & "автогенерация связанного ассортимента" (учитывая его терминологическую неопределенность) и породило "ПТ".

iscrafmp.s. ищутся не оговорки, а суть. Из всего можно извлечь пользу. ТС же сам предложил.
Я не в обиде, тем более, что "поймали за руку"....
...
Рейтинг: 0 / 0
Универсальная учётная система МП «УС Land». Вопрос-ответ
    #36966350
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Ж.,

Фамилия тоей жены наверное изменлась, когда вышла замуж за тебя?
...
Рейтинг: 0 / 0
Универсальная учётная система МП «УС Land». Вопрос-ответ
    #36966376
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Замените наименование на любое другое свойство, которое является ключем группировки для каких-то бизнес-правил

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

Чел просто написал софтинку. Так, как умеет. На том, на чем умеет. Да, кривовато. Но - дешево и потенциально массово. А если он исправит грамматические ошибки и уберет троекратные повторения восклицательных знаков, то, с учетом предстоящего увеличения максимального количества наемных сотрудников для предприятий с упрощенкой, имеет все шансы увеличить количество клиентов. А если он еще и тупить перестанет, адекватно воспринимая конструктивную критику, шансы многократно возрастут.
...
Рейтинг: 0 / 0
Универсальная учётная система МП «УС Land». Вопрос-ответ
    #36966400
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621,

а как воще с "наименованием" народ работает?
я тут измучившись ввел понтяие "представитель объекта(LookUp)", и отмечаю набор свойств типа как этот "представитель". И этоа фиговина работает каскадно от точки входа в граф связей
есть еще механизм унаследования(миграции) свойств, который тоже можно использовать для представления объекта
...
Рейтинг: 0 / 0
Универсальная учётная система МП «УС Land». Вопрос-ответ
    #36966438
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> а как воще с "наименованием" народ работает?

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

> этоа фиговина работает каскадно от точки входа в граф связей

Я помню, вы говорили об этом. Не было времени попробовать, нет собственной точки зрения.
...
Рейтинг: 0 / 0
Универсальная учётная система МП «УС Land». Вопрос-ответ
    #36966449
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Ж.LSVНадо просто спросить, может ли выводится наимен. товара как периодический реквизит (зависим от даты/условия и т.д.). И ВСЁ ! Может ? Отлично. Не может ? Жаль. Иногда нужно.

Любопытно! Объясните плж, что Вы имели в виду или привести пример такого наименования?1. Индивидуальная запись в каждом документе:
Допустим у вас одна карточка, но написание каждый раз требуется чуть-чуть разное. Разные языки, разные (несущественные) варианты комплектации, сборки и т.д. Когда плодить карточки нет смысла.
Применимо для учета несистематизируемых, уникальных услуг.

2. Модельный ряд:
Допустим со временем незначительно меняется дизайн/артикул товара. Чтоб не нарушить историю продаж просто немного корректируем название. Но в старых документах будет отображаться по прежнему старое название (зависит от даты документа).
Референцирование неск. карточек на одну - из другой оперы.

Также может быть зависимость названия от прочих факторов.

Наличие таких механизмов в системе - хороший тон. Не только применительно к товару.
Просьба не путать с модельными/размерными/цветовыми рядами. Это немного с другой оперы, хотя и близко по теме.

зы: фамилия, имя и даже пол - по большому счету периодические реквизиты
...
Рейтинг: 0 / 0
Универсальная учётная система МП «УС Land». Вопрос-ответ
    #36966467
Фотография Андрей Ж.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosАндрей Ж., Фамилия тоей жены наверное изменлась, когда вышла замуж за тебя?
1. Верно фамилия изменилась и ооочень давно...
2. Изменился её "статус" и "свойства" для этого в системе есть два типа операций:
- инвентаризация (для торговли ситуация "пересорта") при заводится новая карта, с новым названием "обнаруженного" товара и понижаются остатки "утеренного" товара
- производство . В процессе обработки полуфабрикат меняет "набор свойств", например "чушка" становиться "чушкой обработанной", т.е. уменьшается остаток "чушки" и порождается новый "товар" со своими свойствами "чушка обработанная"
...
Рейтинг: 0 / 0
Универсальная учётная система МП «УС Land». Вопрос-ответ
    #36966468
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621,

пока модельно не включил "историчность",но в одной заказно проге 2 года назад придумал более общий механизм, типа "представитель из списка", историчность частный случай этого. Пример, "основное место работы", "примушественное место пребывание" т.д.
Решается миграцией свойства из подчиненного типа вверх по связям графа, т.е. анплогично "представитель" Только направление миграции обратное и есть правила выбора.
Стоит в ближайщих планах, счас делаю универсальные настраиваемые кодировщики (типа генерация кода, номера, наименования и т.д.)
...
Рейтинг: 0 / 0
Универсальная учётная система МП «УС Land». Вопрос-ответ
    #36966474
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Ж.ViPRosАндрей Ж., Фамилия тоей жены наверное изменлась, когда вышла замуж за тебя?
- производство . В процессе обработки полуфабрикат меняет "набор свойств", например "чушка" становиться "чушкой обработанной", т.е. уменьшается остаток "чушки" и порождается новый "товар" со своими свойствами "чушка обработанная"
Тут нового ничего нет как раз, просто "чушка" приобретает свойство "обработано", если конечно процесс неразрущающий или не синтезирующий
мне нравится такой стиль мышления
объекты рождаются, живут и умирают
...
Рейтинг: 0 / 0
Универсальная учётная система МП «УС Land». Вопрос-ответ
    #36966496
Фотография Андрей Ж.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здесь чётко выявляется специфика работы "УС" с объектом учёта - "товар":
LSV1. Индивидуальная запись в каждом документе: Допустим у вас одна карточка, но написание каждый раз требуется чуть-чуть разное. Разные языки, разные (несущественные) варианты комплектации, сборки и т.д. Когда плодить карточки нет смысла.
В "УС" обязательное размножение карточек в данной ситуации... Описаное Вами похоже на "ведение бланков страховых полисов" - они "в наименовании" различаются только "номером", но всё равно каждый из них является "документом строгой отчётности" и контролируется индивидуально. Второй пример "в Башкирии чел ведёт учёт газетной продукции" - меняется только номер издания, но это разные "товары" со своей историей, которые периодически "сбрасывают" в архив.

LSVПрименимо для учета несистематизируемых, уникальных услуг.
Аналогично - заводиться каждый раз новый объект "товар" и отслеживается "история" услуги, а для анализа по "типу услуг" используют или (ВО) "ассортимент" или реальный объект "раздел учёта".

LSV2. Модельный ряд: Допустим со временем незначительно меняется дизайн/артикул товара. Чтоб не нарушить историю продаж просто немного корректируем название. Но в старых документах будет отображаться по прежнему старое название (зависит от даты документа).
Аналогично пояснению по "услугам", но если "характеристики" при смене "модельного ряда" некритичны, то вводят НОВЫЙ объект "товар" без изменения наименования (изменяются другие свойства, например "артикул"), а "история продаж" контролируется или в терминах "ассортимент" или "склеянного товара (объекта)".
...
Рейтинг: 0 / 0
Универсальная учётная система МП «УС Land». Вопрос-ответ
    #36966501
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> историчность частный случай этого

Сложно сказать. Ее тоже можно рассматривать по-разному. Контекст, коды, имена, внешние источники - для них понятие "история изменений" можно интерпретировать по разному (даже если реализована она одинаково для всего перечисленного). Но если здесь использовать еще и семантику... проще не начинать. ;) Работает - и отлично.

> Стоит в ближайщих планах, счас делаю универсальные настраиваемые кодировщики

Можно подробнее о правилах?
...
Рейтинг: 0 / 0
Универсальная учётная система МП «УС Land». Вопрос-ответ
    #36966513
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621,

нет я говорю о простых атомарных изменениях, и даже НЕ изменениях, а о наборе альтернатив
а равило выбора , это правило выбора из альтернатив, допустим Мах(Дата), битовы поля и предикат, одним слово Where для Join, описываться будет у связи (т.е., будет атрибутом связи между типами
В "Представитель" это было просто "ИД=ИДСсылки", а тут будет "distinct ИДСсылки=ИД And 'where'"
...
Рейтинг: 0 / 0
Универсальная учётная система МП «УС Land». Вопрос-ответ
    #36966524
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
аааа
ты о правилах синтеза :)
ну пока простые функции и шаблоны еще не углубился, зчаю свой и чужой опыт
...
Рейтинг: 0 / 0
Универсальная учётная система МП «УС Land». Вопрос-ответ
    #36966528
Фотография Андрей Ж.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый вечер!
Давно "картинки" не показывал? Обсудим "любимую" здесь тему "производства" и как иллюстрацию буду показывать процесс изготовления "напитка тыквенного" (очень простое изделие и высоко оцененное, как говорят "самим" - весь выпуск до 2012 года утверждают, что выкуплен "управлением делами")

Оперативные режимы "производства" разделены на 4 задачи:

1. "Операции изготовления". В соответствии с технологическими (калькуляционными) картами происходит преобразование одних "товарных" объектов в другие на основе (ВО) "ассортимент" при серийном производстве либо "ручное преобразование" товарных объектов при "штучном" производстве. Печатаются схемы производства, спецификации, производится расчёт з/пл и т.д.

2. "Составление технологических карт". По названию всё понятно, но так же печатаются "рецептуры" для поваров, сводные калькуляции для "бригад".

3. "Влияние цены сырья на цену изделия". Прогнозный механизм планирования ценообразования готовых изделий. Подбор/изменение состава изделий с целью оптимизации цены (себестоимости).

4. "Прогноз закупок под план выпуска". Анализ складских запасов и рекомендации по закупу недостающего покупного сырья и полуфабрикатов. Формирования оперативного плана "бригадам" по производству. Печать директив.
...
Рейтинг: 0 / 0
Универсальная учётная система МП «УС Land». Вопрос-ответ
    #36966533
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> ты о правилах синтеза :)

Да. ;) Сейчас задумался об описании правил, но тоже ничего конкретного пока не выбрал.
...
Рейтинг: 0 / 0
Универсальная учётная система МП «УС Land». Вопрос-ответ
    #36966554
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621,

ну я честно немного упредил что ДЕЛАЮ, токо собираюсь в эти выходные сделать
особо не думал, но в мозгах маска составная и функции синтеза частей маски по каким то правилам
как задавать правила пока не знаю, ну кроме тривиальных инкремент, декремент,нехт из списка и т.д.
...
Рейтинг: 0 / 0
Универсальная учётная система МП «УС Land». Вопрос-ответ
    #36966556
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
период уникальности и т.д.
что то похожее уже делал в бухглатерии, но там было только инкремент и период уникльности
...
Рейтинг: 0 / 0
Универсальная учётная система МП «УС Land». Вопрос-ответ
    #36966560
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и еще хотеразобраться алгоритмаии штрихкодировани, тольео ЕАН13 работал, может там уже все это есть?
...
Рейтинг: 0 / 0
Универсальная учётная система МП «УС Land». Вопрос-ответ
    #36966561
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Ж. но если "характеристики" при смене "модельного ряда" некритичны, то вводят НОВЫЙ объект "товар" без изменения наименования (изменяются другие свойства, например "артикул"), а "история продаж" контролируется или в терминах "ассортимент" или "склеянного товара (объекта)".Это чревато:
* Путаницей, т.к. оператору появляется не одна а несколько карточек.
* Усложняется отчетность, т.к. фактически один товар нужно отображать как сумму из разных карточек.
* Управление таким ассортиментом усложняется: переоценка, возвраты, заказы, квалификация персонала.

Пример: В продуктах питания часто немного меняется внешний вид и Ш/Код. Как правило не рационально делать новую карточку. Просто добавляют еще один ШК.

По услугам: Если каждый раз услуга уникальна (ремонт/монтаж в квартире, доставка с доп. услугами), то делать каждый раз новые карточки может быть просто нерационально. Достаточно по парочке на каждую категорию работ.
Некот. системы дублируют текст названия товара в теле документа (Тот же Навижен). Как раз для таких случаев. В конкретный документ можно внести произвольный текст карточки.
К конце концов заказчик может потребовать именно такую-то формулировку. От него требует начальство.
...
Рейтинг: 0 / 0
Универсальная учётная система МП «УС Land». Вопрос-ответ
    #36966582
Фотография Андрей Ж.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Увидел несколько сторонних замечаний, но перед сменой "тематики" оперативной беседы размещу "заготовки" и описание, а если будет интерес, то продолжу рассказывать о "производственном" контуре системы...

Закупается сырьё (сахар, кислота, банки, крышки) и всё это храниться на "складе сырья". Тыква поступает сразу с поля в "цех изготовления" пройдя анализы в лаборатории. Далее её моют и пропаривают для снятия кожуры (отходы затем продают для свинок), смешивают и "варят" в вакууме (большая пароварка). Все технологии отработаны и не описаны детально в техкартах программы . Затем разливают по банкам, стерилезуют, накрываю крышкой и перевозят в "отдел упаковки". В окончании, перед "вывозом" наклеиваються этикетки и упаковываются в коробки.
...
Рейтинг: 0 / 0
Универсальная учётная система МП «УС Land». Вопрос-ответ
    #36966588
Фотография Андрей Ж.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosи еще хотеразобраться алгоритмаии штрихкодировани, тольео ЕАН13 работал, может там уже все это есть?
20 0 0376 21120 5
Константа/Весовой товар/Код товара/Вес товара(или иное)/Контрольная цифра

1)Константа – код принимающий значение 20 (по EAN-13 если первая цифра 2, то это локальный штрих-код)
2)Весовой товар – префикс принимающий значение 0-штучный товар 1-весовой товар (также здесь можно закодировать еще что либо). Сделан для того, чтобы, к примеру, в условиях склада использовать вес товара для кодировки другой информации, например количества на паллете, количество в ящике, сумма цены закупа.
3)Код товара – собственно код товара
4)Вес товара – Если префикс вес товара принимает значение 1, то собственно вес товара, если 0, то другая информация, либо нули,для удобства запоминания локального ШК в магазине
5) Контрольная цифра – по EAN-13 служит для контроля введенных данных, рассчитывается по ШК по формуле приведенной в конце документа (копипаст с википедии), т.е. программа должна уметь его рассчитывать.

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

Контрольная сумма есть остаток от деления на 10 суммы из цифр номера, умноженных на соответствующие коэффициенты из таблицы. Если контрольная сумма есть 0, то номер признаётся правильным.

Если нужно подсчитать требуемое контрольное число для произвольного номера, нужно вначале поставить «0» на крайнюю правую позицию, посчитать контрольную сумму, а затем, если она не равна нулю, заменить этот «0» на «10 — контрольная сумма».

Конкретные примеры:
4600051000057 (сигареты «Прима») — код EAN-13.
4x1+ 6x3+ 0x1+ 0x3+ 0x1+ 5x3+ 1x1+ 0x3+ 0x1+ 0x3+ 0x1+ 5x3+ 7x1=
4+ 18+ 0+ 0+ 0+ 15+ 1+ 0+ 0+ 0+ 0+ 15+ 7= 60.
Контрольная сумма = 0 — номер правильный.
...
Рейтинг: 0 / 0
Универсальная учётная система МП «УС Land». Вопрос-ответ
    #36966608
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Ж.,

ну я ж говорил что только ЕАН13 и генерировал :)
вот вдруг пригодится :)
Код: plaintext
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.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
263.
264.
265.
266.
267.
268.
269.
270.
271.
272.
273.
274.
275.
276.
277.
278.
279.
280.
281.
282.
283.
284.
285.
286.
287.
288.
289.
290.
291.
292.
293.
294.
295.
296.
297.
298.
299.
300.
301.
302.
303.
304.
305.
306.
307.
308.
309.
310.
311.
312.
313.
314.
315.
316.
317.
318.
319.
320.
321.
322.
323.
324.
325.
326.
327.
328.
329.
330.
331.
332.
333.
334.
335.
336.
337.
338.
339.
340.
341.
342.
343.
344.
345.
346.
347.
348.
349.
350.
351.
352.
353.
354.
355.
356.
357.
358.
359.
360.
361.
362.
363.
364.
365.
366.
367.
368.
369.
370.
371.
372.
373.
374.
375.
376.
using System;
using System.Data;
using System.Data.SqlClient;
using Microsoft.SqlServer.Server;


public partial class Triggers
{
    [Microsoft.SqlServer.Server.SqlTrigger (Name="Barcode", Target="Поставки_ЗТ", Event="AFTER INSERT,UPDATE,DELETE")]
    public static void Barcode()
    {
       SqlTriggerContext triggContext = SqlContext.TriggerContext;

       if (triggContext.TriggerAction == TriggerAction.Insert)
       {
           SqlConnection conn = new SqlConnection("context connection=true");
           conn.Open();

           SqlCommand sqlComm = new SqlCommand("SELECT Счетчик from Счетчик_штрихкодов with (UPDLOCK)", conn);
           Int64 counter = (Int64) sqlComm.ExecuteScalar();

           sqlComm.CommandText = "SELECT Скидка,Надбавка,[Курс к ВУ],[Курс ВУ к МВ],Поставщик_ID,Сезон from Счет_ЗТ where ID=(SELECT Счет_ID from Детали_счета_ЗТ where ID=(SELECT Top 1 Детали_Счета_ID from INSERTED))";
           SqlDataReader reader = sqlComm.ExecuteReader();
           reader.Read();
           decimal skid = reader.GetDecimal( 0 );
           decimal nadb = reader.GetDecimal( 1 );
           decimal kursV = reader.GetDecimal( 2 );
           decimal kurs = reader.GetDecimal( 3 );
           Guid post = reader.GetGuid( 4 );
           string sezon = reader.GetString( 5 );
           reader.Close();

           sqlComm.CommandText = "SELECT Цена,Коэффициент," +
                                 "Счет_ID,Производитель,Коллекция,Линия,Наименование,Модель,Артикль,Цвет,Стандарт" +
                                 " from Детали_счета_ЗТ where ID=(SELECT Top 1 Детали_Счета_ID from INSERTED)";
           reader = sqlComm.ExecuteReader();
           reader.Read();

           Guid shetid = reader.GetGuid(reader.GetOrdinal("Счет_ID"));
           decimal sena = reader.GetDecimal(reader.GetOrdinal("Цена"));
           decimal koef = reader.GetDecimal(reader.GetOrdinal("Коэффициент"));
           string proiz = reader.GetString(reader.GetOrdinal("Производитель"));
           string koll = reader.GetString(reader.GetOrdinal("Коллекция"));
           string lin = reader.GetString(reader.GetOrdinal("Линия"));
           string naim = reader.GetString(reader.GetOrdinal("Наименование"));
           string mod = reader.GetString(reader.GetOrdinal("Модель"));
           string art = reader.GetString(reader.GetOrdinal("Артикль"));
           string svet = reader.GetString(reader.GetOrdinal("Цвет"));
           string stan = reader.GetString(reader.GetOrdinal("Стандарт"));

           reader.Close();

           sqlComm.CommandText = "SELECT ID," +
                                 "R01,R02,R03,R04,R05,R06,R07,R08,R09,R10,R11,R12,R13,R14,R15,R16," +
                                 "Z01,Z02,Z03,Z04,Z05,Z06,Z07,Z08,Z09,Z10,Z11,Z12,Z13,Z14,Z15,Z16" +
                                 " from INSERTED";
           reader = sqlComm.ExecuteReader();
           reader.Read();

           Guid idd = reader.GetGuid(reader.GetOrdinal("ID"));
           string[] R = new string[ 16 ];
           int[] Z = new int[ 16 ];
           for (int i =  0 ; i <  16 ; i++)
           {
               R[i] = reader.GetString(i +  1 );
               Z[i] = reader.GetInt32(i +  17 );
           }

           reader.Close();

           sena = (((sena - ((sena /  100 ) * skid)) /  100 ) * ( 100  + nadb)) * koef * kursV;
//           string sena_S = ((decimal.Truncate(decimal.Ceiling(sena))).ToString()).PadLeft( 5 , '0');
// вставил потом, можно отменить
           string sena_S = Convert.ToString((decimal.Round(sena,  0 )));
           if (sena_S.Length >  0 )
           {
               if (sena_S[sena_S.Length -  1 ] <= '2')
               {
                   sena_S = sena_S.Substring( 0 , sena_S.Length -  1 ) + "0";
               }

               if ((sena_S[sena_S.Length -  1 ] > '2') && (sena_S[sena_S.Length -  1 ] <= '7'))
               {
                   sena_S = sena_S.Substring( 0 , sena_S.Length -  1 ) + "5";
               }

               if (sena_S[sena_S.Length -  1 ] == '8')
               {
                   sena_S = Convert.ToString(decimal.Parse(sena_S) +  2 );
               }

               if (sena_S[sena_S.Length -  1 ] == '9')
               {
                   sena_S = Convert.ToString(decimal.Parse(sena_S) +  1 );
               }
           }
           sena = Convert.ToDecimal(sena_S);
           sena_S = '5' + sena_S.PadLeft( 4 , '0');
// вставил потом, можно отменить

           sqlComm.CommandText = "INSERT into Детали_счета_ЗТ_EAV (Поставщик_ID,ID,Счет_ID,Детали_ID,Производитель,Сезон,Коллекция,Линия,Наименование,Модель,Артикль,Цвет,Стандарт,Размер,Цена,Курс,Штрих_код)" +
                    " values(@post,NewId(),@shetid,@idd,@proiz,@sezon,@koll,@lin,@naim,@mod,@art,@svet,@stan,@r,@sena,@kurs,@code)";
           sqlComm.Parameters.Clear();
           sqlComm.Parameters.Add("@post", SqlDbType.UniqueIdentifier);
           sqlComm.Parameters.Add("@idd", SqlDbType.UniqueIdentifier);
           sqlComm.Parameters.Add("@shetid", SqlDbType.UniqueIdentifier);
           sqlComm.Parameters.Add("@proiz", SqlDbType.NVarChar,  50 );
           sqlComm.Parameters.Add("@sezon", SqlDbType.NVarChar,  50 );
           sqlComm.Parameters.Add("@koll", SqlDbType.NVarChar,  50 );
           sqlComm.Parameters.Add("@lin", SqlDbType.NVarChar,  50 );
           sqlComm.Parameters.Add("@naim", SqlDbType.NVarChar,  50 );
           sqlComm.Parameters.Add("@mod", SqlDbType.NVarChar,  50 );
           sqlComm.Parameters.Add("@art", SqlDbType.NVarChar,  50 );
           sqlComm.Parameters.Add("@svet", SqlDbType.NVarChar,  50 );
           sqlComm.Parameters.Add("@stan", SqlDbType.NVarChar,  50 );
           sqlComm.Parameters.Add("@r", SqlDbType.NVarChar,  6 );
//           sqlComm.Parameters.Add("@z", SqlDbType.Int);
           sqlComm.Parameters.Add("@sena", SqlDbType.Money);
           sqlComm.Parameters.Add("@kurs", SqlDbType.Money);
           sqlComm.Parameters.Add("@code", SqlDbType.NVarChar,  13 );

           sqlComm.Parameters["@post"].Value = post;
           sqlComm.Parameters["@idd"].Value = idd;
           sqlComm.Parameters["@shetid"].Value = shetid;
           sqlComm.Parameters["@proiz"].Value = proiz;
           sqlComm.Parameters["@sezon"].Value = sezon;
           sqlComm.Parameters["@koll"].Value = koll;
           sqlComm.Parameters["@lin"].Value = lin;
           sqlComm.Parameters["@naim"].Value = naim;
           sqlComm.Parameters["@mod"].Value = mod;
           sqlComm.Parameters["@art"].Value = art;
           sqlComm.Parameters["@svet"].Value = svet;
           sqlComm.Parameters["@stan"].Value = stan;
           sqlComm.Parameters["@sena"].Value = sena;
           sqlComm.Parameters["@kurs"].Value = kurs;
//           sqlComm.Parameters["@z"].Value =  1 ;

           for (int j =  0 ; j <  16 ; j++)
           {
               string code; 
               if (Z[j] >  0 )
               {
                   sqlComm.Parameters["@r"].Value = R[j];

//                   counter++;

                   int yz = Z[j];
                   for (int y =  1 ; y <= yz; y++)
                   {
                       counter++;

                       code = sena_S + (counter.ToString()).PadLeft( 7 , '0');
                       int k_odd =  0 ;
                       int k_even =  0 ;
                       for (int k =  0 ; k <=  11 ; k +=  2 )
                       {
                           k_odd += int.Parse(code[k].ToString());
                       }
                       for (int k =  1 ; k <=  11 ; k +=  2 )
                       {
                           k_even += int.Parse(code[k].ToString());
                       }
                       k_even = k_even *  3  + k_odd;
                       k_even =  10  - int.Parse(((k_even.ToString())[(((k_even.ToString()).Length) -  1 )]).ToString());
                       if (k_even >  9 )
                       {
                           code += "0";
                       }
                       else
                       {
                           code += k_even.ToString();
                       }
                       sqlComm.Parameters["@code"].Value = code;

                       sqlComm.ExecuteNonQuery();
                   }
               }
           }

           sqlComm.Parameters.Clear();
           sqlComm.CommandText = "Update Счетчик_штрихкодов set Счетчик=@counter";
           sqlComm.Parameters.AddWithValue("@counter", counter);
           sqlComm.ExecuteNonQuery();

           conn.Close();
       }

       if (triggContext.TriggerAction == TriggerAction.Update)
       {
           SqlConnection conn = new SqlConnection("context connection=true");
           conn.Open();
           SqlCommand sqlComm = new SqlCommand("Delete from Детали_счета_ЗТ_EAV where (Детали_ID in" +
                                               " (Select ID from deleted))", conn);
           sqlComm.ExecuteNonQuery();

           sqlComm.CommandText = "SELECT Счетчик from Счетчик_штрихкодов with (UPDLOCK)";
           Int64 counter = (Int64)sqlComm.ExecuteScalar();

           sqlComm.CommandText = "SELECT Скидка,Надбавка,[Курс к ВУ],[Курс ВУ к МВ],Поставщик_ID,Сезон from Счет_ЗТ where ID=(SELECT Счет_ID from Детали_счета_ЗТ where ID=(SELECT Top 1 Детали_Счета_ID from INSERTED))";
           SqlDataReader reader = sqlComm.ExecuteReader();
           reader.Read();
           decimal skid = reader.GetDecimal( 0 );
           decimal nadb = reader.GetDecimal( 1 );
           decimal kursV = reader.GetDecimal( 2 );
           decimal kurs = reader.GetDecimal( 3 );
           Guid post = reader.GetGuid( 4 );
           string sezon = reader.GetString( 5 );
           reader.Close();

           sqlComm.CommandText = "SELECT Цена,Коэффициент," +
                                 "Счет_ID,Производитель,Коллекция,Линия,Наименование,Модель,Артикль,Цвет,Стандарт" +
                                 " from Детали_счета_ЗТ where ID=(SELECT Top 1 Детали_Счета_ID from INSERTED)";
           reader = sqlComm.ExecuteReader();
           reader.Read();

           Guid shetid = reader.GetGuid(reader.GetOrdinal("Счет_ID"));
           decimal sena = reader.GetDecimal(reader.GetOrdinal("Цена"));
           decimal koef = reader.GetDecimal(reader.GetOrdinal("Коэффициент"));
           string proiz = reader.GetString(reader.GetOrdinal("Производитель"));
           string koll = reader.GetString(reader.GetOrdinal("Коллекция"));
           string lin = reader.GetString(reader.GetOrdinal("Линия"));
           string naim = reader.GetString(reader.GetOrdinal("Наименование"));
           string mod = reader.GetString(reader.GetOrdinal("Модель"));
           string art = reader.GetString(reader.GetOrdinal("Артикль"));
           string svet = reader.GetString(reader.GetOrdinal("Цвет"));
           string stan = reader.GetString(reader.GetOrdinal("Стандарт"));

           reader.Close();

           sqlComm.CommandText = "SELECT ID," +
                                 "R01,R02,R03,R04,R05,R06,R07,R08,R09,R10,R11,R12,R13,R14,R15,R16," +
                                 "Z01,Z02,Z03,Z04,Z05,Z06,Z07,Z08,Z09,Z10,Z11,Z12,Z13,Z14,Z15,Z16" +
                                 " from INSERTED";
           reader = sqlComm.ExecuteReader();
           reader.Read();

           Guid idd = reader.GetGuid(reader.GetOrdinal("ID"));
           string[] R = new string[ 16 ];
           int[] Z = new int[ 16 ];
           for (int i =  0 ; i <  16 ; i++)
           {
               R[i] = reader.GetString(i +  1 );
               Z[i] = reader.GetInt32(i +  17 );
           }

           reader.Close();

           sena = (((sena - ((sena /  100 ) * skid)) /  100 ) * ( 100  + nadb)) * koef * kursV;
           //           string sena_S = ((decimal.Truncate(decimal.Ceiling(sena))).ToString()).PadLeft( 5 , '0');
           // вставил потом, можно отменить
           string sena_S = Convert.ToString((decimal.Round(sena,  0 )));
           if (sena_S.Length >  0 )
           {
               if (sena_S[sena_S.Length -  1 ] <= '2')
               {
                   sena_S = sena_S.Substring( 0 , sena_S.Length -  1 ) + "0";
               }

               if ((sena_S[sena_S.Length -  1 ] > '2') && (sena_S[sena_S.Length -  1 ] <= '7'))
               {
                   sena_S = sena_S.Substring( 0 , sena_S.Length -  1 ) + "5";
               }

               if (sena_S[sena_S.Length -  1 ] == '8')
               {
                   sena_S = Convert.ToString(decimal.Parse(sena_S) +  2 );
               }

               if (sena_S[sena_S.Length -  1 ] == '9')
               {
                   sena_S = Convert.ToString(decimal.Parse(sena_S) +  1 );
               }
           }
           sena = Convert.ToDecimal(sena_S);
           sena_S = '5' + sena_S.PadLeft( 4 , '0');
           // вставил потом, можно отменить

           sqlComm.CommandText = "INSERT into Детали_счета_ЗТ_EAV (Поставщик_ID,ID,Счет_ID,Детали_ID,Производитель,Сезон,Коллекция,Линия,Наименование,Модель,Артикль,Цвет,Стандарт,Размер,Цена,Курс,Штрих_код)" +
                    " values(@post,NewId(),@shetid,@idd,@proiz,@sezon,@koll,@lin,@naim,@mod,@art,@svet,@stan,@r,@sena,@kurs,@code)";
           sqlComm.Parameters.Clear();
           sqlComm.Parameters.Add("@post", SqlDbType.UniqueIdentifier);
           sqlComm.Parameters.Add("@idd", SqlDbType.UniqueIdentifier);
           sqlComm.Parameters.Add("@shetid", SqlDbType.UniqueIdentifier);
           sqlComm.Parameters.Add("@proiz", SqlDbType.NVarChar,  50 );
           sqlComm.Parameters.Add("@sezon", SqlDbType.NVarChar,  50 );
           sqlComm.Parameters.Add("@koll", SqlDbType.NVarChar,  50 );
           sqlComm.Parameters.Add("@lin", SqlDbType.NVarChar,  50 );
           sqlComm.Parameters.Add("@naim", SqlDbType.NVarChar,  50 );
           sqlComm.Parameters.Add("@mod", SqlDbType.NVarChar,  50 );
           sqlComm.Parameters.Add("@art", SqlDbType.NVarChar,  50 );
           sqlComm.Parameters.Add("@svet", SqlDbType.NVarChar,  50 );
           sqlComm.Parameters.Add("@stan", SqlDbType.NVarChar,  50 );
           sqlComm.Parameters.Add("@r", SqlDbType.NVarChar,  6 );
           //           sqlComm.Parameters.Add("@z", SqlDbType.Int);
           sqlComm.Parameters.Add("@sena", SqlDbType.Money);
           sqlComm.Parameters.Add("@kurs", SqlDbType.Money);
           sqlComm.Parameters.Add("@code", SqlDbType.NVarChar,  13 );

           sqlComm.Parameters["@post"].Value = post;
           sqlComm.Parameters["@idd"].Value = idd;
           sqlComm.Parameters["@shetid"].Value = shetid;
           sqlComm.Parameters["@proiz"].Value = proiz;
           sqlComm.Parameters["@sezon"].Value = sezon;
           sqlComm.Parameters["@koll"].Value = koll;
           sqlComm.Parameters["@lin"].Value = lin;
           sqlComm.Parameters["@naim"].Value = naim;
           sqlComm.Parameters["@mod"].Value = mod;
           sqlComm.Parameters["@art"].Value = art;
           sqlComm.Parameters["@svet"].Value = svet;
           sqlComm.Parameters["@stan"].Value = stan;
           sqlComm.Parameters["@sena"].Value = sena;
           sqlComm.Parameters["@kurs"].Value = kurs;
           //           sqlComm.Parameters["@z"].Value =  1 ;

           for (int j =  0 ; j <  16 ; j++)
           {
               string code;
               if (Z[j] >  0 )
               {
                   sqlComm.Parameters["@r"].Value = R[j];

                   //                   counter++;

                   int yz = Z[j];
                   for (int y =  1 ; y <= yz; y++)
                   {
                       counter++;

                       code = sena_S + (counter.ToString()).PadLeft( 7 , '0');
                       int k_odd =  0 ;
                       int k_even =  0 ;
                       for (int k =  0 ; k <=  11 ; k +=  2 )
                       {
                           k_odd += int.Parse(code[k].ToString());
                       }
                       for (int k =  1 ; k <=  11 ; k +=  2 )
                       {
                           k_even += int.Parse(code[k].ToString());
                       }
                       k_even = k_even *  3  + k_odd;
                       k_even =  10  - int.Parse(((k_even.ToString())[(((k_even.ToString()).Length) -  1 )]).ToString());
                       if (k_even >  9 )
                       {
                           code += "0";
                       }
                       else
                       {
                           code += k_even.ToString();
                       }
                       sqlComm.Parameters["@code"].Value = code;

                       sqlComm.ExecuteNonQuery();
                   }
               }
           }

           sqlComm.Parameters.Clear();
           sqlComm.CommandText = "Update Счетчик_штрихкодов set Счетчик=@counter";
           sqlComm.Parameters.AddWithValue("@counter", counter);
           sqlComm.ExecuteNonQuery();

           conn.Close();
       }

       if (triggContext.TriggerAction == TriggerAction.Delete)
       {
           SqlConnection conn = new SqlConnection("context connection=true");
           conn.Open();
           SqlCommand sqlComm = new SqlCommand("Delete from Детали_счета_ЗТ_EAV where (Детали_ID in" +
                                               " (Select ID from deleted))", conn);
           sqlComm.ExecuteNonQuery();

           conn.Close();
       }
    }
}
...
Рейтинг: 0 / 0
25 сообщений из 429, страница 11 из 18
Форумы / ERP и учетные системы [игнор отключен] [закрыт для гостей] / Универсальная учётная система МП «УС Land». Вопрос-ответ
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]