powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите люди добрые!!!!!!
5 сообщений из 5, страница 1 из 1
Помогите люди добрые!!!!!!
    #32058897
Vedma
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Народ, помогите в решании такой проблемки. Я не могу написать сохраненку для подбивки по копейкам.
Типовая бухгалтерская задачка.
Т.е есть таблица, в которой, предположим 2 поля: Money, Komisiya
Money - содержит цифру (округленную до 2 знака), а в Komisiya должна содержаться цифра (округленную до 2 знака)- Х% (т.е какой-то процент от Money), т.е 0,001*Х
проблема в том, что если брать % из общей суммы
round(Money*Х*0.01,2),
то он не сходится с суммой того же % по каждой записи -
sum(Komisiya*X*0.01)
Необходимо раскидать по полю Komisiya по 0,01, что бы было полное схождение.
...
Рейтинг: 0 / 0
Помогите люди добрые!!!!!!
    #32058910
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Самый простой способ - округлить все кроме одного, а последнее считать как общая сумма минус сумма оставшихся округлённых.
А вообще эта проблемма гораздо сложнее, чем кажется на первый взгляд. Так что сочувствую.
...
Рейтинг: 0 / 0
Помогите люди добрые!!!!!!
    #32058918
Vedma
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Оно то так-то...
было бы все классно, если бы эта разница была в 1 коп., а она (зараза), как правило, совсем другая :(((
А бухгалтерия штука тонкая...
Я то и алгоритм придумала, но в сохраненку впихнуть не получается :(((
...
Рейтинг: 0 / 0
Помогите люди добрые!!!!!!
    #32058921
Фотография akuz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот процедура добавления/вычитания заданной суммы из накладной. Ответ в последнем апдейте. Подбивка суммы делается по самой денежной строке. Вы можете усложнить, сделав кол-во апдейтов равным <общее расхождение> / 0.01. Для накладной вроде катит, т.к. по отдельности строки мало кого интересуют.
Хотя с другой стороны может возникнуть вопрос, а почему у вас комиссия по строке неправильно считается!?
Типовая бухгалтерская задачка - пусть её бухгалтер и решает!
Код: 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.
ALTER PROCEDURE add_cost_to_nakladnaya
	@id int,
	@cost money
AS
	DECLARE @old_total money, @f float, @d money

SET NOCOUNT ON
BEGIN TRANSACTION

	SELECT @old_total = SUM(pdi.subtotal)
	FROM primary_doc_items pdi
	WHERE pdi.primary_doc = @id
	IF @@ERROR <>  0  GOTO error

	SET @f =  1  + (CONVERT(float,@cost) / CONVERT(float,@old_total))

	UPDATE primary_doc_items SET
		price = CONVERT(money,ROUND(CONVERT(float,price) * @f, 2 ))
	WHERE primary_doc_items.primary_doc = @id
	IF @@ERROR <>  0  GOTO error

	SELECT @d = SUM(pdi.subtotal) - @old_total - @cost
	FROM primary_doc_items pdi
	WHERE pdi.primary_doc = @id

	UPDATE primary_doc_items SET
		price = price - ROUND(@d / quantity, 2 )
	WHERE primary_doc = @id
		AND EXISTS(SELECT TOP  1   1  FROM primary_doc_items pdi WHERE pdi.id = primary_doc_items.id ORDER BY pdi.quantity, pdi.price DESC)
	IF @@ERROR <>  0  GOTO error

COMMIT TRANSACTION
GOTO release
error:
ROLLBACK TRANSACTION
release:
GO
...
Рейтинг: 0 / 0
Помогите люди добрые!!!!!!
    #32059119
Feos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мне кажется заработает такой код.
Проще не бывает!

create table #T(ID int, sum1 decimal(10,4), tot_sum decimal(10,4))

insert #T(id, sum1) values(1, 10.21)
insert #T(id, sum1) values(2,20.46 )
insert #T(id, sum1) values(3, 15.23)
insert #T(id, sum1) values(4, 16.49)
insert #T(id, sum1) values(5, 10.21)
insert #T(id, sum1) values(6,20.46 )
insert #T(id, sum1) values(7, 15.23)
insert #T(id, sum1) values(8, 16.49)

update #T set tot_sum = sum1*0.01

select *
from #t

declare @d decimal(10,4)

set @d = 0

update #T set @d=tot_sum + @d-round(@d,2),
tot_sum=round(@d,2)

select *
from #t

drop table #T


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


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