Пожалуйста, обратите внимание: это решение стало хак внутри pyxero, чтобы получить нужный мне результат. Это не может быть лучшим решением для вас.
XML, который генерирует pyxero для «payments.put», не соответствует структуре XML «», найденной в документации xero.
Сначала я изменил структуру вашего словаря так, чтобы XML, сгенерированный в basemanager.py, был похож на документацию.
data = {
'Invoice': {'InvoiceID': "09ff0465-d1b0-4fb3-9e2e-3db4e83bb240"},
'Account': {"AccountID": "58F8AD72-1F2E-AFA2-416C-8F660DDD661B"},
'Date': datetime.datetime.now(),
'Amount': 30.00,
}
xero.payments.put(data)
ошибка все еще сохраняется, поэтому я был вынужден начать изменять код внутри basemanager.py pyxero в.
В basemanager.py на линии 133, изменять форматирование даты:
val = sub_data.strftime('%Y-%m-%dT%H:%M:%S')
к:
val = sub_data.strftime('%Y-%m-%d')
pyxero первоначально возвращение времени. Предполагается, что это только значение даты. Документы предусматривают форматирование.
Затем, опять же в basemanager.py, по строке 257, изменить следующим образом:
body = {'xml': self._prepare_data_for_save(data)}
к:
if self.name == "Payments":
body = {'xml': "<Payments>%s</Payments>" % self._prepare_data_for_save(data)}
else:
body = {'xml': self._prepare_data_for_save(data)}
Пожалуйста, обратите внимание, что для того, чтобы быть в состоянии создать платеж в первую очередь, статус «Статус» счета-фактуры должен быть установлен на «АВТОРИЗОВАН». Кроме того, убедитесь, что сумма «Сумма» платежа не превышает значение «Сумма покупки» счета-фактуры.