Перейти к содержанию

067-stenovaru-leftovers

Description

Обновляет остатки по магазинам розничной сети oboi.ru на сайте STENOVA.RU

перейти на страницу проекта в git

Documentation python3.11 docker kubernetes

  • данные из HTTP метода 1С sklad/read/run
  • в environment вынесены ключи и фильтры - настраивай в кубике
  • DEBUG - выведет построчно [store id, article, count]
  • kubernetes > cron

В личном кабинете Стеновы есть тех документация

Про обработку ошибок в API
Похоже на то, что любая ошибка, включая несопотавление по артикулу приводит к пропуску обработки всей задачи. Т.е. менеджерам придется контролировать корректность номенклатуры в цепочке опт-розница. В почте сообщения об ошибках переадресовываю на менеджеров.
Technical task

Мы пропишем склады в Вашу учетную запись, создадим Токен и отправим Вам. Далее Вам требуется написать веб-сервис, который будет генерировать и отдавать на наш новый сайт файл с остатками (пример файла во вложении, инструкция ниже).

Данные в инструкции (токен и код склада) носят информационный характер, по факту токен и идентификаторы складов будут отличаться и должны быть уникальными. Загрузка остатков по API:

Для реализации механизма загрузки остатков по API необходимо привлечение технического специалиста Магазина.

На стороне Магазина разрабатывается веб-сервис, который с заданной периодичностью передает файл с остатками из учетной системы на сайт Стенова. Шаблон файла доступен в ЛК, в разделе «Загрузка остатков». Файл формируется силами Магазина строго по предоставленному шаблону.

Необходимые параметры:

– Тип запроса: POST – URL-адрес: https://new.stenova.ru/api/upload_balance/ - Внимание URL – тестовый! Потом просто поменяем на боевой! – Параметры:

token – Токен (ЛК – Загрузка остатков – Интеграция по API)
balance – Файл с актуальными остатками

Результат загрузки остатков появится в ЛК, в блоке «История загрузки остатков». А так же в ответе на выполняемый POST запрос.

{
    "status": "error",
    "errors": [
        "ldtyflwfn не является числом в строке 2",
        "Отрицательное число остатка в строке 3",
        "Склад с ID об-2, не найден в строке 4"
    ],
    "count": 3
}
Interpretation
  • напрямую из 1С из за отсутствия ms office, думаю не стоит
  • использовать существующий HTTP метод sklad/read/run - данных хватает
  • перечень складов и ключей к ним хранить в environment - крутиться будет на кубе, проще добавлять магазины
  • перечень производителей хранить в enfironment - та же причина
  • предусмотри обработку ошибок доступов в 1С и API
пример формирования XLSX
    #! /usr/bin/env python3
    # -*- coding: utf-8 -*-
    import xlsxwriter

    # Create a workbook and add a worksheet.
    workbook = xlsxwriter.Workbook('Example.xlsx')
    worksheet = workbook.add_worksheet()

    # Some data we want to write to the worksheet.
    expenses = (
        [ "Код склада", "Артикул", "Количество"],
        [ "об-1", "283441", 20],
        [ "об-1", "283442", 10],
        [ "об-1", "283443", 5],
        [ "об-1", "283447", 25],
        [ "мксд-1", "283441", 30],
        [ "мксд-1", "283442", 30],
        [ "мксд-1", "283443", 30],
        [ "мксд-1", "283447", 30],
    )

    # Start from the first cell. Rows and columns are zero indexed.
    row = 0
    col = 0

    # Iterate over the data and write it out row by row.
    for warehouse, article, cost in (expenses):
        worksheet.write(row, col,     warehouse)
        worksheet.write(row, col + 1, article)
        worksheet.write(row, col + 2, cost)
        row += 1

    workbook.close()