Esempio n. 1
0
    def get_orders_statuses(self,
                            orders_dispatch_numbers: List[int],
                            show_history: bool = True) -> List[Dict]:
        """
        Статусы заказов
        :param orders_dispatch_numbers: список номеров отправлений СДЭК
        :param show_history: получать историю статусов
        :returns list
        """
        status_report_element = ElementTree.Element(
            'StatusReport',
            ShowHistory=show_history,
        )

        for dispatch_number in orders_dispatch_numbers:
            ElementTree.SubElement(
                status_report_element,
                'Order',
                DispatchNumber=dispatch_number,
            )

        xml = self._exec_xml_request(
            url=self.ORDER_STATUS_URL,
            xml_element=status_report_element,
        )

        return [xml_to_dict(order) for order in xml.findall('Order')]
Esempio n. 2
0
    def delete_orders(self, act_number: str,
                      dispatch_numbers: List[str]) -> List[Dict]:
        """
        Удалить заказ
        :param str act_number: Номера акта приема-передачи.
        Идентификатор заказа в ИС клиента СДЭК.
        :param list dispatch_numbers: Номера заказов СДЭК
        :return: Удаленные заказы
        :rtype: dict
        """
        delete_request_element = ElementTree.Element(
            'DeleteRequest',
            Number=act_number,
            OrderCount=1,
        )

        for dispatch_number in dispatch_numbers:
            ElementTree.SubElement(
                delete_request_element,
                'Order',
                DispatchNumber=dispatch_number,
            )

        xml = self._exec_xml_request(
            url=self.DELETE_ORDER_URL,
            xml_element=delete_request_element,
        )

        return [
            xml_to_dict(order) for order in xml.findall('*[@DispatchNumber]')
        ]
Esempio n. 3
0
    def create_prealerts(self, pre_alert: PreAlert):
        """
        Метод для создания сводного реестра (преалерта), содержащего
        все накладные, товары по которым передаются в СДЭК на доставку.
        :return: Результат создания преалерта
        """
        xml = self._exec_xml_request(
            self.PREALERT_URL,
            xml_element=pre_alert.to_xml(),
        )

        return [xml_to_dict(order) for order in xml.findall('Order')]
Esempio n. 4
0
    def call_courier(self, call_courier: CallCourier) -> Dict:
        """
        Вызов курьера для забора посылки у ИМ
        :param CallCourier call_courier: Запрос вызова
        :return: Объект вызова
        :rtype: dict
        """
        xml = self._exec_xml_request(
            url=self.CALL_COURIER_URL,
            xml_element=call_courier.to_xml(),
        )

        return xml_to_dict(xml.find('Call'))
Esempio n. 5
0
    def create_orders(self, delivery_request: DeliveryRequest):
        """
        Создать заказ
        :param DeliveryRequest delivery_request: Запрос доставки
        :return: Информация о созданном заказе
        :rtype: dict
        """

        xml = self._exec_xml_request(
            url=self.CREATE_ORDER_URL,
            xml_element=delivery_request.to_xml(),
        )

        return [
            xml_to_dict(order) for order in xml.findall('*[@DispatchNumber]')
        ]
Esempio n. 6
0
    def get_orders_info(self,
                        orders_dispatch_numbers: List[int]) -> List[Dict]:
        """
        Информация по заказам
        :param orders_dispatch_numbers: список номеров отправлений СДЭК
        :returns list
        """
        info_request = ElementTree.Element('InfoRequest')
        for dispatch_number in orders_dispatch_numbers:
            ElementTree.SubElement(
                info_request,
                'Order',
                DispatchNumber=dispatch_number,
            )

        xml = self._exec_xml_request(self.ORDER_INFO_URL, info_request)

        return [xml_to_dict(order) for order in xml.findall('Order')]