НДС
08.02.2011
22:48
#1
Считают они по следующей формуле (Сумма * 18 / 118). В чеке у вас так и будет стоять 18%, это ндс выделенный из суммы.
P.S.: Торговля - это не школа и проценты здесь бывают разные.
Спасибо за ответ. Если не сложно все таки почему 18% в торговле не считают по школьной формуле? Там своя формула процентов?
Я действительно хочу понять, чтобы не задавать больше таких вопросов - почему делят на 118 а не 100, получается стоимость товара 100% + 18% НДС-это и есть 22824.9, но ведь 18% берут от общей суммы чека. Причем все покупатели скидку считали иммено так, а продовец(магазин) по вашей схеме.
Маленький экскурс в бух учет можно, буквально откуда такая формула делить на 118. Пожалуйста.
P.S.: Торговля - это не школа и проценты здесь бывают разные.
Спасибо за ответ. Если не сложно все таки почему 18% в торговле не считают по школьной формуле? Там своя формула процентов?
Я действительно хочу понять, чтобы не задавать больше таких вопросов - почему делят на 118 а не 100, получается стоимость товара 100% + 18% НДС-это и есть 22824.9, но ведь 18% берут от общей суммы чека. Причем все покупатели скидку считали иммено так, а продовец(магазин) по вашей схеме.
Маленький экскурс в бух учет можно, буквально откуда такая формула делить на 118. Пожалуйста.
09.02.2011
00:01
#2
"вот, как считается :
//******************************************************************************
// глНачисляемыйНДС(Ставка)
//
// Параметры:
// Ставка - значение типа "Перечисление.СтавкиНДС".
//
// Возвращаемое значение:
// Числовой коэффициент НДС.
//
// Описание:
// По ставке НДС (Перечисление) получаем числовой коэффициент НДС, на который
// необходимо умножить число при начислении НДС сверху для получения суммы НДС.
//
Функция глНачисляемыйНДС(Ставка) Экспорт
Если ПустоеЗначение(Ставка)=1 Тогда
Возврат 0;
ИначеЕсли(Ставка=Перечисление.СтавкиНДС.БезНДС) Тогда
Возврат 0;
ИначеЕсли (Ставка=Перечисление.СтавкиНДС.НДС10) Тогда
Возврат 0.1;
ИначеЕсли (Ставка=Перечисление.СтавкиНДС.НДС20) Тогда
Возврат 0.2;
ИначеЕсли (Ставка=Перечисление.СтавкиНДС.НДС18) Тогда
Возврат 0.18;
ИначеЕсли (Ставка=Перечисление.СтавкиНДС.НДС9_09) Тогда
Возврат 0.09998900010999890001099989000 // Это 0.0909/0.9091;
ИначеЕсли (Ставка=Перечисление.СтавкиНДС.НДС16_67) Тогда
Возврат 0.20004800192007680307212288492 // Это 0.1667/0.8333, только более точно в последнем знаке;
Иначе
Сообщить("Функция глНачисляемыйНДС(Ставка): неверная ставка");
Возврат 0;
КонецЕсли;
КонецФункции //глНачисляемыйНДС()
//******************************************************************************
// глВыделяемыйНДС(Ставка)
//
// Параметры:
// Ставка - значение типа "Перечисление.СтавкиНДС"
//
// Возвращаемое значение:
// Числовой коэффициент НДС.
//
// Описание:
// По ставке НДС (Перечисление) получаем числовой коэффициент НДС, на который
// необходимо умножить число при выделении НДС (если НДС включен в сумму) для
// получения суммы НДС.
//
Функция глВыделяемыйНДС(Ставка) Экспорт
Если ПустоеЗначение(Ставка)=1 Тогда
Возврат 0;
ИначеЕсли(Ставка=Перечисление.СтавкиНДС.БезНДС) Тогда
Возврат 0;
ИначеЕсли (Ставка=Перечисление.СтавкиНДС.НДС10)
или (Ставка=Перечисление.СтавкиНДС.НДС10_110) Тогда
Возврат 0.09090909090909090909090909091; // Это 1/11, только точнее
ИначеЕсли (Ставка=Перечисление.СтавкиНДС.НДС20)
или (Ставка=Перечисление.СтавкиНДС.НДС20_120) Тогда
Возврат 0.166666666666666666666666666667; // Это 1/6, только точнее
ИначеЕсли (Ставка=Перечисление.СтавкиНДС.НДС18)
или (Ставка=Перечисление.СтавкиНДС.НДС18_118) Тогда
Возврат 0.15254237288135593220338983050985 // Это округленный результат 18/118;
ИначеЕсли (Ставка=Перечисление.СтавкиНДС.НДС9_09) Тогда
Возврат 0.0909;
ИначеЕсли (Ставка=Перечисление.СтавкиНДС.НДС16_67) Тогда
Возврат 0.1667;
Иначе
Сообщить("Функция глВыделяемыйНДС(Ставка): неверная ставка");
Возврат 0;
КонецЕсли;
КонецФункции //глВыделяемыйНДС()
//******************************************************************************
// глСтавкаНДСАванса(СтавкаНДС)
//
// Параметры:
// СтавкаНДС - значение перечисления ставки НДС
//
// Возвращаемое значение:
// Ставка НДС (значение перечисления)
//
// Описание:
// Для авансов выбираем ставку НДС: если не выбрана, то 16.67, а иначе
// выбранную в документе (соответствующую ей расчетную).
//
Функция глСтавкаНДСАванса(пСтавкаНДС) Экспорт
Если ПустоеЗначение(пСтавкаНДС)=0 Тогда
Если пСтавкаНДС = Перечисление.СтавкиНДС.НДС10 Тогда
Возврат Перечисление.СтавкиНДС.НДС9_09;
ИначеЕсли пСтавкаНДС = Перечисление.СтавкиНДС.НДС20 Тогда
Возврат Перечисление.СтавкиНДС.НДС16_67;
Иначе
Возврат пСтавкаНДС;
КонецЕсли;
Иначе
Возврат Перечисление.СтавкиНДС.НДС16_67;
КонецЕсли;
КонецФункции // глСтавкаНДСАванса()
//******************************************************************************
// глРасчетНалога(Конт,ВидНалога)
//
// Параметры:
// Конт - контекст документа
// ВидНалога - строка "НДС" или "НП"
//
// Возвращаемое значение:
// Нет
//
// Описание:
// Рассчитываем сумму налога, подставляем ее в документ
//
Процедура глРасчетНалога(Конт,ВидНалога) Экспорт
ЕстьНП = глЕстьРеквизитМнЧ("СуммаНП",Конт.Вид());
СтНП=0;
Если ЕстьНП=1 Тогда
СтНП =?(Конт.УчитыватьНП =1,Конт.СтавкаНП.Ставка/100,0);
КонецЕсли;
СтавкаНДС =?(Конт.УчитыватьНДС=1,Конт.СтавкаНДС,Перечисление.СтавкиНДС.БезНДС);
Если Врег(ВидНалога)="НДС" Тогда
БазаНалога=Конт.Сумма;
Если ЕстьНП=1 Тогда
Если Конт.СуммаВклНП=1 Тогда
БазаНалога=Конт.Сумма/(1+СтНП);
КонецЕсли;
КонецЕсли;
Если Конт.СуммаВклНДС=1 Тогда
Конт.СуммаНДС=БазаНалога*глВыделяемыйНДС(СтавкаНДС);//0.1667, 0.16666(6),...
Иначе
Конт.СуммаНДС=БазаНалога*глНачисляемыйНДС(СтавкаНДС);//0.20, 0.20004...
КонецЕсли;
ИначеЕсли Врег(ВидНалога)="НП" Тогда
Если Конт.СуммаВклНДС=1 Тогда
БазаНалога=Конт.Сумма;
Иначе
БазаНалога=Конт.Сумма*(1+глНачисляемыйНДС(СтавкаНДС));
КонецЕсли;
Если Конт.СуммаВклНП=1 Тогда
Конт.СуммаНП=БазаНалога*СтНП/(1+СтНП);
Иначе
Конт.СуммаНП=БазаНалога*СтНП;
КонецЕсли;
Иначе
Сообщить("РасчетНалога(ВидНалога):неверный вид налога: "+ВидНалога,"i");
КонецЕсли;
КонецПроцедуры //глРасчетНалога() "
//******************************************************************************
// глНачисляемыйНДС(Ставка)
//
// Параметры:
// Ставка - значение типа "Перечисление.СтавкиНДС".
//
// Возвращаемое значение:
// Числовой коэффициент НДС.
//
// Описание:
// По ставке НДС (Перечисление) получаем числовой коэффициент НДС, на который
// необходимо умножить число при начислении НДС сверху для получения суммы НДС.
//
Функция глНачисляемыйНДС(Ставка) Экспорт
Если ПустоеЗначение(Ставка)=1 Тогда
Возврат 0;
ИначеЕсли(Ставка=Перечисление.СтавкиНДС.БезНДС) Тогда
Возврат 0;
ИначеЕсли (Ставка=Перечисление.СтавкиНДС.НДС10) Тогда
Возврат 0.1;
ИначеЕсли (Ставка=Перечисление.СтавкиНДС.НДС20) Тогда
Возврат 0.2;
ИначеЕсли (Ставка=Перечисление.СтавкиНДС.НДС18) Тогда
Возврат 0.18;
ИначеЕсли (Ставка=Перечисление.СтавкиНДС.НДС9_09) Тогда
Возврат 0.09998900010999890001099989000 // Это 0.0909/0.9091;
ИначеЕсли (Ставка=Перечисление.СтавкиНДС.НДС16_67) Тогда
Возврат 0.20004800192007680307212288492 // Это 0.1667/0.8333, только более точно в последнем знаке;
Иначе
Сообщить("Функция глНачисляемыйНДС(Ставка): неверная ставка");
Возврат 0;
КонецЕсли;
КонецФункции //глНачисляемыйНДС()
//******************************************************************************
// глВыделяемыйНДС(Ставка)
//
// Параметры:
// Ставка - значение типа "Перечисление.СтавкиНДС"
//
// Возвращаемое значение:
// Числовой коэффициент НДС.
//
// Описание:
// По ставке НДС (Перечисление) получаем числовой коэффициент НДС, на который
// необходимо умножить число при выделении НДС (если НДС включен в сумму) для
// получения суммы НДС.
//
Функция глВыделяемыйНДС(Ставка) Экспорт
Если ПустоеЗначение(Ставка)=1 Тогда
Возврат 0;
ИначеЕсли(Ставка=Перечисление.СтавкиНДС.БезНДС) Тогда
Возврат 0;
ИначеЕсли (Ставка=Перечисление.СтавкиНДС.НДС10)
или (Ставка=Перечисление.СтавкиНДС.НДС10_110) Тогда
Возврат 0.09090909090909090909090909091; // Это 1/11, только точнее
ИначеЕсли (Ставка=Перечисление.СтавкиНДС.НДС20)
или (Ставка=Перечисление.СтавкиНДС.НДС20_120) Тогда
Возврат 0.166666666666666666666666666667; // Это 1/6, только точнее
ИначеЕсли (Ставка=Перечисление.СтавкиНДС.НДС18)
или (Ставка=Перечисление.СтавкиНДС.НДС18_118) Тогда
Возврат 0.15254237288135593220338983050985 // Это округленный результат 18/118;
ИначеЕсли (Ставка=Перечисление.СтавкиНДС.НДС9_09) Тогда
Возврат 0.0909;
ИначеЕсли (Ставка=Перечисление.СтавкиНДС.НДС16_67) Тогда
Возврат 0.1667;
Иначе
Сообщить("Функция глВыделяемыйНДС(Ставка): неверная ставка");
Возврат 0;
КонецЕсли;
КонецФункции //глВыделяемыйНДС()
//******************************************************************************
// глСтавкаНДСАванса(СтавкаНДС)
//
// Параметры:
// СтавкаНДС - значение перечисления ставки НДС
//
// Возвращаемое значение:
// Ставка НДС (значение перечисления)
//
// Описание:
// Для авансов выбираем ставку НДС: если не выбрана, то 16.67, а иначе
// выбранную в документе (соответствующую ей расчетную).
//
Функция глСтавкаНДСАванса(пСтавкаНДС) Экспорт
Если ПустоеЗначение(пСтавкаНДС)=0 Тогда
Если пСтавкаНДС = Перечисление.СтавкиНДС.НДС10 Тогда
Возврат Перечисление.СтавкиНДС.НДС9_09;
ИначеЕсли пСтавкаНДС = Перечисление.СтавкиНДС.НДС20 Тогда
Возврат Перечисление.СтавкиНДС.НДС16_67;
Иначе
Возврат пСтавкаНДС;
КонецЕсли;
Иначе
Возврат Перечисление.СтавкиНДС.НДС16_67;
КонецЕсли;
КонецФункции // глСтавкаНДСАванса()
//******************************************************************************
// глРасчетНалога(Конт,ВидНалога)
//
// Параметры:
// Конт - контекст документа
// ВидНалога - строка "НДС" или "НП"
//
// Возвращаемое значение:
// Нет
//
// Описание:
// Рассчитываем сумму налога, подставляем ее в документ
//
Процедура глРасчетНалога(Конт,ВидНалога) Экспорт
ЕстьНП = глЕстьРеквизитМнЧ("СуммаНП",Конт.Вид());
СтНП=0;
Если ЕстьНП=1 Тогда
СтНП =?(Конт.УчитыватьНП =1,Конт.СтавкаНП.Ставка/100,0);
КонецЕсли;
СтавкаНДС =?(Конт.УчитыватьНДС=1,Конт.СтавкаНДС,Перечисление.СтавкиНДС.БезНДС);
Если Врег(ВидНалога)="НДС" Тогда
БазаНалога=Конт.Сумма;
Если ЕстьНП=1 Тогда
Если Конт.СуммаВклНП=1 Тогда
БазаНалога=Конт.Сумма/(1+СтНП);
КонецЕсли;
КонецЕсли;
Если Конт.СуммаВклНДС=1 Тогда
Конт.СуммаНДС=БазаНалога*глВыделяемыйНДС(СтавкаНДС);//0.1667, 0.16666(6),...
Иначе
Конт.СуммаНДС=БазаНалога*глНачисляемыйНДС(СтавкаНДС);//0.20, 0.20004...
КонецЕсли;
ИначеЕсли Врег(ВидНалога)="НП" Тогда
Если Конт.СуммаВклНДС=1 Тогда
БазаНалога=Конт.Сумма;
Иначе
БазаНалога=Конт.Сумма*(1+глНачисляемыйНДС(СтавкаНДС));
КонецЕсли;
Если Конт.СуммаВклНП=1 Тогда
Конт.СуммаНП=БазаНалога*СтНП/(1+СтНП);
Иначе
Конт.СуммаНП=БазаНалога*СтНП;
КонецЕсли;
Иначе
Сообщить("РасчетНалога(ВидНалога):неверный вид налога: "+ВидНалога,"i");
КонецЕсли;
КонецПроцедуры //глРасчетНалога() "
Читают тему
(гостей: 2)