powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Хранение сумм по накладной
23 сообщений из 23, страница 1 из 1
Хранение сумм по накладной
    #32057875
nandji
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Люди поделитесь опытом.
Кто как хранит суммы в накладной?
Как обеспечиваете целостность суммы?
Какие есть мысли по поводу применения для контроля целостности триггеров.
Есть ли смысл ипользовать вычисляемые поля?
...
Рейтинг: 0 / 0
Хранение сумм по накладной
    #32057893
dao
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В одной таблице заголовок накладной во второй строки накладной - а дальше на сколько фантазии (или задачи :)) ) хватит
...
Рейтинг: 0 / 0
Хранение сумм по накладной
    #32057896
nandji
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
интересен именно вопрос хранение сумм.
то бишь хранить ли все суммы (безндс ндс сндс нп снп) ?
и как обеспечить их адекватность количеству и цене.
интересно кто как это делает ? считает ли на клиенте, на сервере, тригерами или хп, ну вобщем вот ....
...
Рейтинг: 0 / 0
Хранение сумм по накладной
    #32057902
dao
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а эт уже зависит от бизнес правил...
Но нужно принять к сведению - ндс и нс -меняется -соответственно - за какое время у вас открытые накладные?
Я как делал (на 2000) - хранил всё без налогов - для оканчательной суммы высчитывал - (как щас уже точно не помню ). Была функция на входе дата - на выходе по етой дате налог (соответственно ндс и нс)
...
Рейтинг: 0 / 0
Хранение сумм по накладной
    #32057911
Фотография Luchkin Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
лично я планорую хранить по каждой позиции сумму без налогов, ставку НДС, ставку НП. Все остальные суммы (в т.ч. всего по документу) расчётным путём. Грубо, конечно, не совсем гибко, зато быстро и считается запросом элементарно.
...
Рейтинг: 0 / 0
Хранение сумм по накладной
    #32057927
nandji
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тогда по моему не исключена ситуация , когда данные в базе будут не соответствовать распечатанному варианту накладной.
я вот думаю хранить СуммуБезНдс СуммуНдс и СуммуНП ну и ставки налогов конечно
Но меня даже больше интересует вопрос как пересчитывать эти суммы . Вычисляемые поля не катят т.к. возможна ситуация когда в приходной накладной суммы налогов не бьют на копейки .. На данный момент думаю сделать нестед тригеры которые будут считать суммы ...
то есть
if update(Kol) or update(price) => update SummaBezNds
if update(SummaBezNds) => update SummaNds
if update(SummaNds) => update SummaNp
...
Рейтинг: 0 / 0
Хранение сумм по накладной
    #32057930
Фотография Luchkin Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ситуация, когда сумма в базах не будет равна распечатанной только одна: кто-то распечатал, а потом поменял данные :)

Сумма НДС по позиции должна быть распечатана с точностью до копеек (2 знака) так же и считаться должна, сумма по документу равна сумме округлённых значений.
По-моему так. (ц) Винни-Пух
...
Рейтинг: 0 / 0
Хранение сумм по накладной
    #32057932
nandji
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да вопрос про методы пересчета .... :)
...
Рейтинг: 0 / 0
Хранение сумм по накладной
    #32057933
Фотография Luchkin Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может быть, конечно, однако-ж то, что я сказал, следует из того, что данные должны соответствовать напечатанному, а в напечатанном документе нельзя указывать доли копеек, сумма же по колонке НДС должна "катить". Впрочем, спрашивали как, -- я рассказал как у меня. :) успехов.
...
Рейтинг: 0 / 0
Хранение сумм по накладной
    #32057989
ura
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не знаю, как у вас, в Новосибирске, а у нас в Киеве НДС считается от общей суммы накладной, а не от каждой позиции, поэтому сумма по колонке НДС может не "катить".
А что касается хранения сумм - все зависит от сложности пересчета - если нужны просто суммы сНДС,безНДС то можно написать представление/функцию, в которых вычислять суммы, а если алгоритм подсчета сложный - хранить в полях накладной и пересчитывать в триггере/процедуре...
...
Рейтинг: 0 / 0
Хранение сумм по накладной
    #32057993
Фотография Luchkin Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда непонятно, зачем триггеры. Завести кучу полей/связанных таблиц, в которых хранить данные. А расчитывать их исключительно программой при редактировании документа. Кто-то зашёл, что-то изменил, заложенный в программе алгоритм всё просчитал как нужно и запихал данные в соответствующие таблицы.
всё. Иль не прав я? (в сомнениях...)
...
Рейтинг: 0 / 0
Хранение сумм по накладной
    #32058000
ura
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лучше пересчитывать на сервере в рамках одной транзакции - так надежнее
...
Рейтинг: 0 / 0
Хранение сумм по накладной
    #32058134
Bzzzzz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1. Налоги. В жизни бывает и так, и эдак. И с общей сумы, и с позиции, и с единицы. В свое время навешался вдоваль... Т.ч. конкретно рекомендую хранить и способы начисления для каждой накладной.
2. Суммы, кшно, хранить можно, но зачем? Насолить нормализации? Или в качестве контроля? Если последнее - разумнее использовать товарный отчет.
3. ИМНО. Все это привел исключительно из своего опыта, из разных контор, но со схожими сценариями. Когда начинают матответственные расходиться с бухами, и У ВСЕХ будет своя цифирь, доказывать что ты не верблюд можно только опираясь на бумаги, а не на CRC... А для этого поменьше ненужного, и побольше ограничений!
...
Рейтинг: 0 / 0
Хранение сумм по накладной
    #32058154
Фотография Garya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что, траблы с местом на диске? Если нет, то лучше под каждое поле строки накладной завести нормальное (не вычисляемое, а нормальное) поле в таблице. И кроме того, завести отдельные поля для итогов. Что это дает?
1. Вы можете ввести в любое поле суммы вручную, если в какой-то супер-пупер маразматической ситуации бизнеслогика расчета всех расчетных полей окажется бессильной.
2. Вы сможете ввести некоторую часть полей, а остальные "попросите" вычислить ваше приложение. А когда оно это сделает, у вас опять-таки будет возможность проконтролировать ее расчет и подправить , если вы с ним не вполне согласны.
3. Вы сможете запускать расчет итоговых сумм через заданные в строчках суммы, а сможете и наоборот - получать строчки через заданную итоговую сумму.
4. Все проблемы с округлениями решаются на выбор - либо подгонкой позиций в строках, либо подгонкой итоговых сумм (зависит от того, что именно вы считаете неизменным, а что переменным).

А где и как реализовать расчет выисляемых полей - на триггерах ли, на хранимых процедурах, либо вообще на клиенте - это дело вкуса.
...
Рейтинг: 0 / 0
Хранение сумм по накладной
    #32058168
ura
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Суммы хранить иногда нужно для повышения быстродействия при выводе. Правда тогда приходится жертвовать быстродействием при вводе... Все определяется интенсивностью того и другого.
...
Рейтинг: 0 / 0
Хранение сумм по накладной
    #32058177
Фотография Garya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не только быстродействием. Если у тебя время от времени:
а) Изменяется ставка НДС
б) То возникает, то исчезает, то изменяет ставку СПН
в) То возникает, то исчезает, то изменяет ставку НП
г) То появляются, то исчезают акцизы
д) Изменяются алгоритмы расчета НДС по документам на ГСМ (то ли нужно учитывать налог на ГСМ, то ли нельзя, толи включается туда налог на выбросы в окр.среду, то ли нет)
е) и т.д. и т.п.
... И, наконец, тебе нужна возможность распечатать старый документ в том виде, в каком он был, когда еще НП не было в помине, а СПН был, и не 1.5%, а 3%...

Тогда тебе от предложенной схемы ну просто никуда не деться... Алгоритмы меняются - данные остаются...
...
Рейтинг: 0 / 0
Хранение сумм по накладной
    #32058180
ura
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То Garya: Совершенно согласен, в таких случаях конечно хранить, а алгоритм пересчета предоставлять вводить пользователю - это будет механизм бух. проводок.
...
Рейтинг: 0 / 0
Хранение сумм по накладной
    #32058184
Фотография Гнездин Петр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Согласен с Garya. Добавлю лишь, что для гарантии получения впоследствии точно такого же документа, как был выдан на печать ранее, нужно хранить также все шаблоны, по которым формируется внешний вид. А то, к примеру, довольно странно выглядят графы "номер ГТД" и "страна происхождения" в счете-фактуре 5-летней давности... А завтра введут еще "страну утилизации" :-)) -- и что тогда делать без старого шаблона?
...
Рейтинг: 0 / 0
Хранение сумм по накладной
    #32058192
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Достали меня однажды такими проблемами. Хранилась у меня цена без НДС, количество и ставка НДС. Я

взял и стал выводить поле "Сумма НДС для единицы товара" с ТРЕМЯ знаками после запятой. Что бы

самые умные в столбик дольше складывали. Все нормально, все довольны. Ни у каких проверок

претензий к такому выводу не было. Налоговой пофиг, она смотрит НДС с суммы накладной, всякие

внутренние ревизоры не соображают, что так нельзя. А почему собственно нельзя? Нигде не сказано,

в каком формате должны быть числа. В некоторых сферах все суммы в копейках пишутся.
...
Рейтинг: 0 / 0
Хранение сумм по накладной
    #32058230
Фотография Garya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А у нас бы бухгалтерия еще долго подтверждающие документы трясла бы, пока все хвосты в полкопейки бы не закрылись... :)
...
Рейтинг: 0 / 0
Хранение сумм по накладной
    #32058251
Фотография akuz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот так примерно, с вычисляемыми полями, для обычной торговли, обычными товарами, для сложных случаев, описанных Garya, может не пойти.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
CREATE TABLE [primary_doc_items] (
	[id] [int] IDENTITY ( 1 ,  1 ) NOT NULL ,
	[primary_doc] [int] NOT NULL ,  -- ссылка на документ (заголовок)
 
	[product] [int] NOT NULL CONSTRAINT [DF_primary_doc_items_product] DEFAULT ( 0 ),  -- товар
 
	[quantity] [float] NOT NULL CONSTRAINT [DF_primary_doc_items_quantity] DEFAULT ( 1 ),  -- кол-во
 
	[price] [money] NOT NULL CONSTRAINT [DF_primary_doc_items_price] DEFAULT ( 0 ),  -- цена с НДС
 
	[nds] [decimal]( 6 ,  2 ) NOT NULL CONSTRAINT [DF_primary_doc_items_nds] DEFAULT ( 20 ),  -- ставка НДС в %
 
	[subtotal] AS (convert(money,round(([quantity] * [price]), 2 ))) ,  -- сумма с НДС
 
	[subtotal_nds] AS (convert(money,round(([quantity] * [price] * [nds] / ( 100  + [nds])), 2 ))) ,  -- сумма НДС
 
	[price_without_nds] AS (convert(money,([price] - round(([price] * [nds] / ( 100  + [nds])), 2 )))) ,  -- цена без НДС
 
	[subtotal_without_nds] AS (convert(money,round(([quantity] * ([price] - round(([price] * [nds] / ( 100  + [nds])), 2 ))), 2 ))) ,  -- сумма без НДС
 
)

А вручную корректировать - извините.
2 * 2 = 4
...
Рейтинг: 0 / 0
Хранение сумм по накладной
    #32058570
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для Garya. Так у нашей бухгалтерии как раз тики-тики были. Это у покупателей такие чеканутые бухи встречались, которые на калькуляторах все расчеты проверяли.
...
Рейтинг: 0 / 0
Хранение сумм по накладной
    #32058656
nandji
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как однажды сказал один мой приятель "Чувствуешь себя маленькой девочкой в темном лесу" )

2akuz: :)

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

2ura я вот тоже думаю что суммы все таки надо хранить т.к. при вводе документа оператор просто не сможет обогнать сервер а при рассчете остатков на некий момент времени тут уж все хотят чтоб нажал и готово
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Хранение сумм по накладной
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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