Source code for pochta.api.documents
from __future__ import annotations
from datetime import date
from typing import TYPE_CHECKING, Optional
from requests import Response
from pochta.enums import PrintType
from pochta.utils import HTTPMethod
if TYPE_CHECKING:
from pochta import Delivery
[docs]class Documents:
"""
Методы API Документов.
Используется через объект :class:`Delivery <pochta.delivery.Delivery>` или вручную.
"""
def __init__(self, client: Delivery) -> None:
"""
Инициализация API Документов.
:param client: API клиент Доставки
"""
self._client = client
[docs] def create_all_docs(self, batch_name: str) -> Response:
"""
Генерация пакета документации.
Генерирует и возвращает zip архив с 4-мя файлами:
- Export.xls , Export.csv - список с основными данными по заявкам в составе партии
- F103.pdf - форма ф103 по заявкам в составе партии
- В зависимости от типа и категории отправлений, формируется комбинация из
сопроводительных документов в формате pdf ( формы: f7, f112, f22)
https://otpravka.pochta.ru/specification#/documents-create_all_docs
:param batch_name: Наименование партии
:return: Ответ API
"""
url = f'/1.0/forms/{batch_name}/zip-all'
res = self._client.request(HTTPMethod.GET, url, stream=True)
return res
[docs] def create_f7_f22(self, shipment_id: str, sending_date: Optional[date] = None,
print_type: Optional[PrintType] = None) -> Response:
"""
Генерация печатной формы Ф7п.
Генерирует и возвращает pdf файл с формой ф7п для указанного заказа.
Опционально в файл прикрепляется форма Ф22 (посылка онлайн).
Если параметр sending-date не передается, берется текущая дата.
https://otpravka.pochta.ru/specification#/documents-create_f7_f22
:param shipment_id: Уникальный идентификатор заказа
:param sending_date: Дата отправки в почтовое отделение (yyyy-MM-dd)
:param print_type: Тип печати
:return: Ответ API
"""
url = f'/1.0/forms/{shipment_id}/f7pdf'
if isinstance(sending_date, date):
sending_date = sending_date.isoformat()
params = {
'sending-date': sending_date,
'print-type': print_type,
}
res = self._client.request(HTTPMethod.GET, url, params=params, stream=True)
return res
[docs] def create_f112(self, shipment_id: str, sending_date: Optional[date] = None) -> Response:
"""
Генерация печатной формы Ф112ЭК.
Генерирует и возвращает pdf-файл с заполненной формой Ф112ЭК для указанного заказа.
Только для заказа с «наложенным платежом». Если заказ не имеет данного атрибута,
метод вернет ошибку. Если параметр sending-date не передается, берется текущая дата.
https://otpravka.pochta.ru/specification#/documents-create_f112
:param shipment_id: Уникальный идентификатор заказа
:param sending_date: Дата отправки в почтовое отделение (yyyy-MM-dd)
:return: Ответ API
"""
url = f'/1.0/forms/{shipment_id}/f112pdf'
if isinstance(sending_date, date):
sending_date = sending_date.isoformat()
params = {'sending-date': sending_date}
res = self._client.request(HTTPMethod.GET, url, params=params, stream=True)
return res
[docs] def create_forms_backlog(self, shipment_id: str,
sending_date: Optional[date] = None) -> Response:
"""
Генерация печатных форм для заказа (до формирования партии).
Генерирует и возвращает pdf файл, который может содержать в зависимости от типа отправления:
- форму ф7п (посылка, посылка-онлайн, бандероль, курьер-онлайн)
- форму Е-1 (EMS, EMS-оптимальное, Бизнес курьер, Бизнес курьер экспресс)
- конверт (письмо заказное)
Опционально прикрепляются формы: Ф112ЭК (отправление с наложенным платежом),
Ф22 (посылка онлайн), уведомление (для заказного письма или бандероли).
https://otpravka.pochta.ru/specification#/documents-create_forms_backlog
:param shipment_id: Уникальный идентификатор заказа
:param sending_date: Дата отправки в почтовое отделение (yyyy-MM-dd)
:return: Ответ API
"""
url = f'/1.0/forms/backlog/{shipment_id}/forms'
if isinstance(sending_date, date):
sending_date = sending_date.isoformat()
params = {'sending-date': sending_date}
res = self._client.request(HTTPMethod.GET, url, params=params, stream=True)
return res
[docs] def create_forms(self, shipment_id: str, sending_date: Optional[date] = None,
print_type: Optional[PrintType] = None) -> Response:
"""
Генерация печатных форм для заказа.
Генерирует и возвращает pdf файл, который содержит, либо:
- форму ф7п (посылка, посылка-онлайн, бандероль, курьер-онлайн)
- форму Е-1 (EMS, EMS-оптимальное, Бизнес курьер, Бизнес курьер экспресс)
- конверт (письмо заказное)
Опционально прикрепляются формы: Ф112ЭК (отправление с наложенным платежом),
Ф22 (посылка онлайн), уведомление и опись вложения (для заказного письма или бандероли).
https://otpravka.pochta.ru/specification#/documents-create_forms
:param shipment_id: Уникальный идентификатор заказа
:param sending_date: Дата отправки в почтовое отделение (yyyy-MM-dd)
:param print_type: Тип печати
:return: Ответ API
"""
url = f'/1.0/forms/{shipment_id}/forms'
if isinstance(sending_date, date):
sending_date = sending_date.isoformat()
params = {
'sending-date': sending_date,
'print-type': print_type,
}
res = self._client.request(HTTPMethod.GET, url, params=params, stream=True)
return res
[docs] def create_f103(self, batch_name: str) -> Response:
"""
Генерация печатной формы Ф103.
Генерирует и возвращает pdf файл с формой Ф103 для указанной партии.
https://otpravka.pochta.ru/specification#/documents-create_f103
:param batch_name: Наименование партии
:return: Ответ API
"""
url = f'/1.0/forms/{batch_name}/f103pdf'
res = self._client.request(HTTPMethod.GET, url, stream=True)
return res
[docs] def checkin(self, batch_name: str) -> dict:
"""
Подготовка и отправка электронной формы Ф103.
Присваивает уникальную версию партии для дальнейшего приема этой партии сотрудниками ОПС.
Отправляет по e-mail электронную форму Ф103 в ОПС для регистрации.
https://otpravka.pochta.ru/specification#/documents-checkin
:param batch_name: Наименование партии
:return: Результат операции
"""
url = f'/1.0/batch/{batch_name}/checkin'
res = self._client.request(HTTPMethod.GET, url)
return res.json()
[docs] def create_comp_check_form(self, batch_name: str) -> Response:
"""
Генерация печатной формы акта осмотра содержимого.
Генерирует и возвращает pdf файл с формой акта осмотра содержимого для указанной партии.
https://otpravka.pochta.ru/specification#/documents-create_comp_check_form
:param batch_name: Наименование партии
:return: Ответ API
"""
url = f'/1.0/forms/{batch_name}/completeness-checking-form'
res = self._client.request(HTTPMethod.GET, url, stream=True)
return res