Интеграции · курсы валют · Excel
Калькулятор себестоимости импортного товара с живыми курсами и выгрузкой в Excel
Клиент:
Импорт и оптовая торговля, NDA
Категория: Интеграции
Стек: JavaScript, SheetJS (xlsx), PHP (curl_multi), API курсов валют, HTML/CSS
Срок: около 4 недель
Проблема
Себестоимость импортного товара считали в таблице вручную: курс переписывали с сайтов, доставку, пошлину и наценку прикидывали по каждой позиции отдельно. Одна ошибка в формуле — и отдел продаж получал неверную цену.
Ограничения
Поставщики выставляют цены в долларах, евро, рублях и юанях, а считать нужно в тенге; внешний сервис курсов может не ответить, а ключ доступа к нему нельзя отдавать в браузер.
Что сделал
- Карточки позиций: цена, валюта (USD, EUR, RUB, CNY) и количество; все суммы пересчитываются сразу при любом изменении
- Доставка по умолчанию — 6% от суммы товара, при необходимости вводится вручную в евро
- Цепочка расчёта: пошлина, дополнительные расходы, доход на обеспечение, торговая наценка, цена без НДС и бонус менеджера — блоками для администратора и отдела продаж
- Курсы четырёх валют к тенге — параллельными запросами (curl_multi) через PHP-прокси, ключ API остаётся на сервере; рубль и юань — кросс-курсом через доллар
- Три попытки получить курсы с паузой; при сбое — значения по умолчанию и ручная правка любого курса
- Выгрузка расчёта в .xlsx через SheetJS: форматированная таблица с суммами в тенге и себестоимостью по каждой позиции
Архитектура
Форма позиций (JS)
→ PHP-прокси курсов (curl_multi)
→ API курсов валют
→ Расчёт себестоимости
→ Экспорт .xlsx (SheetJS)
Результат
Себестоимость и цена реализации по каждой позиции видны сразу при вводе: курсы подтягиваются сами, а готовый расчёт выгружается в Excel одной кнопкой. Калькулятор выпущен в марте 2025 года.
Что можно переиспользовать
Параллельная загрузка курсов через curl_multi с кросс-курсом
Повторные попытки с фолбэком на ручной ввод
Экспорт табличного расчёта в .xlsx на стороне браузера