2016-05-31 3 views
0

Я пытаюсь добавить платеж в xero, используя библиотеку python pyxero для python3. Я могу добавлять счета и контакты, но платежи всегда возвращают исключение проверки. Вот данные я представления:Ошибка проверки проверки библиотеки PyXero

payments.put([{'Amount': '20.00', 
       'Date': datetime.date(2016, 5, 25), 
       'AccountCode': 'abc123', 
       'Reference': '8831_5213', 
       'InvoiceID': '09ff0465-d1b0-4fb3-9e2e-3db4e83bb240'}]) 

И ответ ксеро:

xero.exceptions.XeroBadRequest: ValidationException: A validation exception occurred 

ответ

1

Пожалуйста, обратите внимание: это решение стало хак внутри 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)} 

Пожалуйста, обратите внимание, что для того, чтобы быть в состоянии создать платеж в первую очередь, статус «Статус» счета-фактуры должен быть установлен на «АВТОРИЗОВАН». Кроме того, убедитесь, что сумма «Сумма» платежа не превышает значение «Сумма покупки» счета-фактуры.

Смежные вопросы