В КУРСЕ?

Разбираемся в теме

Скрипт подсчёта покупок: почему итоговая сумма может оказаться неверной?

Автоматический счётчик расходов кажется простой задачей: найти суммы и сложить. Но на странице покупок могут одновременно находиться неоплаченные заявки, повторные записи и возвраты. Поэтому сначала нужно определить смысл итогового числа. Рассмотрим собственную локальную сводку по вымышленным операциям, без установки чужого скрипта и передачи данных аккаунта.

Решите, что именно считается расходом

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

Отделите дубли от повторных покупок

Одна операция иногда попадает в выгрузку дважды, например на границе страниц или после повторного объединения файлов. Удалять всё с одинаковой суммой нельзя: несколько покупок могут стоить одинаково. Надёжнее сопоставлять устойчивый идентификатор и согласованные поля. Если идентификатора нет, возможное совпадение следует помечать для проверки, а не молча удалять. Отчёт должен показывать не только итог, но и число учтённых, исключённых и сомнительных строк. Тогда неожиданное изменение суммы можно объяснить.

Приведите денежные значения к явному формату

Строки с пробелами, символами валюты и разными десятичными разделителями требуют аккуратного разбора. Нельзя просто убрать всю пунктуацию, не определив формат. Для рублей удобно хранить значения в целых копейках в пределах точного диапазона выбранного типа либо использовать подходящую десятичную арифметику. Обычные двоичные числа с плавающей точкой не представляют некоторые десятичные дроби точно. Валюты сначала учитывают отдельно; объединять рубли и евро простым сложением бессмысленно без явно заданного пересчёта.

Проверьте итог на маленьком наборе

Возьмём оплату А на тысячу двести рублей, её точный дубль, оплату Б на восемьсот рублей, неоплаченную заявку В на пятьсот и подтверждённый возврат трёхсот рублей по операции А. Чистый итог равен тысяче семистам рублям. Дубль и заявка не добавляют расход, возврат уменьшает его. Такой маленький пример позволяет проверить логику до работы с настоящими сведениями. Автоматизация должна сохранять исходные записи и объяснение исключений. Итоговая сумма служит информацией для размышления, а не моральной оценкой человека.

Попробуйте на практике

Составьте бумажный тест для счётчика расходов из пяти строк учебного примера.

  1. Запишите идентификаторы А, повтор А, Б, В и отдельный идентификатор возврата со ссылкой на А. Укажите суммы, валюту, тип и статус каждой строки.
  2. Сначала вручную определите, какие записи описывают состоявшиеся оплаты. Отдельно пометьте точный дубль и неоплаченную заявку.
  3. Представьте рублёвые суммы в целых копейках и выполните сложение с учётом возврата. Сверьте результат с расчётом в рублях.
  4. Измените статус заявки В на подтверждённую оплату и рассчитайте новый итог. Не меняйте другие строки, чтобы проверить именно это правило.
  5. Добавьте условную операцию в другой валюте без курса пересчёта. Запишите её отдельным итогом и объясните, почему общий результат пока нельзя получить.

Как проверить результат. Первый итог составляет 1700 рублей, после подтверждения заявки В 2200 рублей. Дубль не учтён дважды, возврат имеет отрицательный вклад, валюты не смешаны.

Частые вопросы

Можно ли определять дубль только по одинаковой цене?

Нет. Цена не идентифицирует операцию. Нужны устойчивый идентификатор или дополнительные подтверждения совпадения.

Если скрипт показал число без ошибки, ему можно доверять?

Отсутствие технической ошибки не подтверждает правильность правил учёта. Нужны ручная сверка небольшого примера и понятный отчёт о том, какие строки включены.

Самостоятельный разбор темы. Содержание конкретной обучающей программы здесь не представлено.

Зарегистрируйтесь, чтобы уточнить возможность доступа к этому материалу

Зарегистрироваться
← К списку материалов