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')]
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]') ]
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')]
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'))
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]') ]
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')]