Разработка мобильного приложения для приёмки товара со сканером

TRUETECH занимается разработкой, поддержкой и обслуживанием мобильных приложений iOS, Android, PWA. Имеем большой опыт и экспертизу для публикации мобильных приложений в популярные маркеты Google Play, App Store, Amazon, AppGallery и другие.
Разработка и поддержка любых видов мобильных приложений:
Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

Это лишь некоторые из типы мобильных приложений, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента.

Предлагаемые услуги
Показано 1 из 1 услугВсе 1735 услуг
Разработка мобильного приложения для приёмки товара со сканером
Средняя
от 1 недели до 3 месяцев
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    756
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    624
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1054
  • image_mobile-applications_zippy_411_0.webp
    Разработка мобильного приложения для компании ZIPPY
    947
  • image_mobile-applications_affhome_429_0.webp
    Разработка мобильного приложения для компании Affhome
    874
  • image_mobile-applications_flavors_409_0.webp
    Разработка мобильного приложения для компании FLAVORS
    445

Разработка мобильного приложения для приёмки товара со сканером

Приёмка товара — первая точка контроля в цепочке поставок. Фактическое количество и артикулы расходятся с заказом чаще, чем кажется: пересортица, недостача, повреждённый товар, неправильная маркировка. Мобильное приложение с поддержкой сканирования превращает приёмку из заполнения бумажных актов в структурированный процесс с немедленной верификацией.

Сканирование GS1-128 и SSCC

Товар в поставке маркируется несколькими уровнями: штрихкод единицы (EAN-13/EAN-8), штрихкод коробки/упаковки (ITF-14, Code 128), SSCC на паллете (Serial Shipping Container Code, 18 цифр, Code 128 или GS1-128).

GS1-128 — это Code 128 с Application Identifiers (AI): (00) — SSCC, (01) — GTIN, (17) — срок годности YYMMDD, (10) — номер лота, (37) — количество. Один GS1-128 штрихкод может содержать несколько AI.

class GS1Parser {
    private val GROUP_SEPARATOR = '\u001D' // FNC1

    fun parse(barcode: String): Map<String, String> {
        val result = mutableMapOf<String, String>()
        var pos = 0
        val raw = barcode.replace("]C1", "").replace("]e0", "") // удаляем маркеры сканера

        while (pos < raw.length) {
            val ai = detectAI(raw, pos) ?: break
            pos += ai.length
            val value = extractValue(raw, pos, ai)
            result[ai] = value
            pos += value.length
            if (pos < raw.length && raw[pos] == GROUP_SEPARATOR) pos++
        }
        return result
    }

    private fun detectAI(s: String, pos: Int): String? {
        // AI могут быть 2, 3 или 4 цифры
        return listOf(4, 3, 2).firstNotNullOfOrNull { len ->
            if (pos + len <= s.length && KNOWN_AIS.contains(s.substring(pos, pos + len)))
                s.substring(pos, pos + len) else null
        }
    }
}

DataMatrix и QR коды в фармацевтике и маркировке Честный Знак содержат аналогичные GS1-данные. ML Kit Barcode Scanning декодирует их все; главное — корректно парсить Application Identifiers.

Верификация с заказом на поставку (PO)

Основной сценарий: загружаем Purchase Order (заказ поставщику) перед приёмкой, сканируем приходящий товар, сравниваем факт с планом в реальном времени.

data class ReceivingLine(
    val poLineId: String,
    val sku: String,
    val gtin: String,
    val orderedQty: Double,
    val receivedQty: Double = 0.0,
    val lotNumber: String? = null,
    val expiryDate: LocalDate? = null,
    val status: LineStatus = LineStatus.PENDING
)

class ReceivingViewModel : ViewModel() {
    fun processScan(parsedBarcode: Map<String, String>) {
        val gtin = parsedBarcode["01"] ?: parsedBarcode["02"] ?: return
        val lot = parsedBarcode["10"]
        val expiry = parsedBarcode["17"]?.let { parseExpiry(it) }
        val qty = parsedBarcode["37"]?.toDoubleOrNull() ?: 1.0

        val line = findLineByGtin(gtin) ?: run {
            // Товар не в PO — предупреждение, фиксируем как неожиданный
            recordUnexpectedItem(gtin, qty)
            return
        }

        val updated = line.copy(
            receivedQty = line.receivedQty + qty,
            lotNumber = lot ?: line.lotNumber,
            expiryDate = expiry ?: line.expiryDate,
            status = when {
                line.receivedQty + qty > line.orderedQty * 1.05 -> LineStatus.OVER_RECEIVED
                abs(line.receivedQty + qty - line.orderedQty) < 0.01 -> LineStatus.COMPLETED
                else -> LineStatus.IN_PROGRESS
            }
        )
        updateLine(updated)
    }
}

Перебор (over-receiving) и недобор — оба требуют визуального предупреждения. Цветовая кодировка: зелёный (в допуске), жёлтый (небольшое расхождение), красный (значительный перебор или брак).

Фотофиксация и акт о расхождении

Повреждённый товар требует фотодокументирования. Делаем фото прямо из приложения через CameraX (Android) / AVCaptureSession (iOS), привязываем к позиции приёмки. Фото загружается в S3/MinIO, в акте ссылка на изображение.

Акт о расхождении (форма ТОРГ-2) формируется автоматически по результатам приёмки. PDF через iText на Android или серверная генерация через Puppeteer/WeasyPrint. Подпись приёмщика — SignatureView (рисуем пальцем) или интеграция с DocuSign API для юридически значимого документооборота.

Маркировка Честный Знак

Для товаров, подлежащих обязательной маркировке (молоко, вода, обувь, одежда, парфюм) — верификация кода маркировки через API ГИС МТ (Честный Знак): POST /api/v3/true-api/codes/check с кодом Data Matrix. Ответ содержит статус кода (в обороте, выведен из оборота, не найден) и атрибуты товара.

Разработка приложения приёмки со сканированием GS1-128/DataMatrix, верификацией по PO и актами расхождений: 5-7 недель. С интеграцией Честный Знак, фотофиксацией и двусторонней интеграцией с WMS/1С: 10-14 недель. Стоимость рассчитывается индивидуально.