Odoo11 - `create_invoices ()` Ошибка, нужен один аргумент, тогда как ранее использовался с двумя аргументами - PullRequest
0 голосов
/ 03 ноября 2018

Я работаю в проекте Odoo моей компании.

Инженер до меня (теперь он подал в отставку) создал скрипт Go, который периодически запускается для создания счетов из заказов на продажу. Этот скрипт Go отлично работает.

Теперь мы понимаем, что создание счета-фактуры может быть выполнено также через Автоматизированные / Запланированные Действия Odoo.

Моя текущая задача - перевести его скрипт Go в Автоматизированное действие Odoo.

Но у меня есть проблема ....

В его скрипте Go есть такие коды:

param := []interface{}{
    c.cred.Db,
    c.uid,
    c.cred.Password,
    "sale.advance.payment.inv",
    "create_invoices",
    []int{
        paymentID,
    },
    map[string]interface{}{
        "context": map[string]interface{}{
            "active_id":    salesOrderID,
            "active_ids":   []int{salesOrderID},
            "active_model": "sales.order",
        },
    },
}

Коды в основном предназначены для работы с моделью "sale.advance.payment.inv", а затем вызывают метод create_invoices.

С первым параметром - объект платежа. Вторым параметром является JSON / Python Dict чего-то вроде этого:

{
    'context':
    {
        'active_id'   :  so['id'],
        'active_ids'  : [so['id']],
        'active_model': 'sales.order'
    }
}

Мое автоматическое действие выглядит так:

paymentInAdvModel = env["sale.advance.payment.inv"]
paymentInAdv = paymentInAdvModel.create(
    {
        'advance_payment_method': 'delivered',
        'amount': 0,
    }
)

paymentInAdv.create_invoices(
    [paymentInAdv],
    {
        'context':
        {
            'active_id'   :  so['id'],
            'active_ids'  : [so['id']],
            'active_model': 'sales.order'
        }
    }
)

В Automated Action есть эта ошибка:

ValueError:: "create_invoices () принимает 1 позиционный аргумент, но 3 было дано" при оценке

На что обратить внимание:

  • В нем говорится, что для метода "create_invoices" нужен только один параметр. Я предоставил два параметра, но ошибка сказала, что у меня есть три введенных параметра. Я предполагаю, что другим параметром является Питон self.
  • Единственная документация, которую я имею, это посмотреть на репозиторий Odoo GitHub по этой ссылке: https://github.com/odoo/odoo/search?q=create_invoices&unscoped_q=create_invoices
    • Который относится только к одной функции с именем create_invoices и принимает только один параметр.
  • Скрипт Go работает нормально. Но эта ошибка не позволяет мне преобразовывать коды Go в автоматическое действие Python Odoo.

У кого-нибудь есть решения, поэтому я могу использовать create_invoices() с тем же параметром, что и скрипт Go?

1 Ответ

0 голосов
/ 03 ноября 2018

Вам не нужно передавать список при вызове метода create_invoice, а также вам нужно передавать контекст с помощью метода with_context ().

Попробуйте следующий код:

ctx = {
    'active_id'   :  so['id'],
    'active_ids'  : [so['id']],
    'active_model': 'sales.order'
}
paymentInAdv.with_context(ctx).create_invoices()

Надеюсь, это поможет вам.

...