суббота, 21 сентября 2019 г.

Ломтики кода: НДС

Часто используемые и часто же забываемые функции для расчетов с НДС.

Модуль УчетНДСУПКлиентСервер:

// Функция возвращает процент ставки НДС.
//
// Параметры:
//  СтавкаНДС - ПеречислениеСсылка.СтавкиНДС - Ставка НДС.
//
// Возвращаемое значение:
// Число - Процент ставки НДС.
//
Функция ПолучитьСтавкуНДС(СтавкаНДС) Экспорт

// Рассчитывает сумму НДС исходя из суммы и флагов налогообложения.
//
// Параметры:
//  Сумма            - Число - сумма от которой надо рассчитывать налоги;
//  СтавкаНДС        - Число - процентная ставка НДС.
//  СуммаВключаетНДС - Булево - признак включения НДС в сумму ("внутри" или "сверху");
//  НалогообложениеНДС - ПеречислениеСсылка.ТипыНалогообложенияНДС - налогообложение документа
//
// Возвращаемое значение:
//  Число - полученная сумма НДС.
//
Функция РассчитатьСуммуНДС(Сумма, СтавкаНДС, СуммаВключаетНДС = Истина, НалогообложениеНДС = Неопределено) Экспорт


Модуль УчетНДСКлиентСервер

// Производит пересчет цен при изменении флагов учета налогов.
// Пересчет зависит от способа заполнения цен, при заполнении По ценам номенклатуры (при продаже)
// хочется избегать ситуаций, когда компания  «теряет деньги» при пересчете налогов.
// Поэтому если в документе флаг "Учитывать налог" выключен, то цены должны браться напрямую из справочника,
// потому что хочется продавать по той же цене, независимо от режима налогообложения.
// Например, если отпускная цена задана с НП для избежания ошибок округления, то это не значит,
// что при отпуске без НП мы должны продать дешевле. Если же флаг учета налога в документе включен,
// то цены должны пересчитываться при подстановке в документ:
// налог должен включаться или не включаться в зависимости от флага включения налога в типе цен.
// При заполнении по ценам контрагентов (при покупке) хочется хранить цены поставщиков.
// Поэтому нужно пересчитывать всегда по установленным флагам в документе и в типе цен.
// Это гарантирует, что при записи цен в регистр и последующем их чтении,
// например, при заполнении следующего документа, мы с точностью до ошибок округления при пересчете
// получим те же самые цены.
//
// Параметры:
//  Цена                - Число - Пересчитываемое значение цены.
//  ЦенаВключаетНДС     - Булево - Определяет содержит ли переданное значение цены НДС.
//  СуммаВключаетНДС    - Булево - Определяет должно ли новое значение цены включать НДС.
//  СтавкаНДС           - Число - Ставка НДС.
//
// Возвращаемое значение:
//  Число - Новое значение цены.
//
Функция ПересчитатьЦенуПриИзмененииФлаговНалогов(Цена, ЦенаВключаетНДССуммаВключаетНДС, СтавкаНДС) Экспорт

Комментариев нет:

Отправить комментарий