В первый класс

Мнение о том каким должен быть «настоящий» класс. Этапы разработки класса. В этой статье я изложу свое мнение о том, каким должен быть настоящий класс, от и до.

Перед прочтением желательно прочитать help по ключевому слову CLASS. Если в процессе чтения вам встретятся незнакомые операторы, команды, ключевые слова — читайте также help и по ним в стандартной помощи Клариона — F1.

Не так давно я в который раз получил задание на создание отчета вида: товар, цена, количество, сумма без НДС, сумма НДС, сумма. Последние три поля являются расчетными.
И мне опять пришлось вспоминать, а вернее выводить формулу для расчета НДС. Расчет НДС можно производить разными путями, например:

  • можно рассчитать по формуле «сумму без НДС», по формуле «сумму НДС», а поле «сумма» получить сложением ранее рассчитанных полей;
  • можно рассчитать по формуле «сумму без НДС», по формуле «сумму», а «сумму НДС» получить как разницу.

Так как расчет носит приблизительный характер, то используя разные подходы можно получить несколько разные цифры, возможно они будут отличаться лишь сотыми частями, но при суммировании большого количество товаров дадут разницу на копейки. Т.е. может получиться так, что если один отчет рассчитывается по одному методу, а второй по другому, то итоговые суммы в этих отчетах будут отличаться, хотя данные для отчетов одинаковые. Естественно, бухгалтеру это не понравится.
И, несколько неожиданно для меня самого, я пришел к выводу, что необходимо написать класс для расчета НДС. Написать и забыть вообще о том как же рассчитывается этот налог. Это очень простая идея и ее также легко реализовать.

Задача класса
Исторически сложилось, что все цены на товар в нашей компании указываются с НДС. Также для расчета НДС известно количество товара и ставка налога. Следовательно, для получения всех необходимых мне сумм, мне нужны следующие формулы:

 Сумма с НДС   = Количество * Цена

 Сумма без НДС = Сумма с НДС * 100 / (100 + Ставка НДС)

 Сумма НДС     = Сумма с НДС - Сумма без НДС

Другие суммы мне не нужны. Т.е. задача класса сводится к расчету нужной мне суммы.

Выбор инструмента и подготовка к кодированию
Я всегда пользуюсь xNDClass (654). Пример выполнен на C55h, ABC, на Legacy шаблонах не проверялся.

© Still Zero, 2005-2006. Все права защищены.