Bonjour,
J'ai un petit souci, et je ne comprends pas pourquoi…
Voilà un morceau de code qui est censé injecter des
purchase.product_supplier
product, = Product.find([('code', '=', article['Article_Id'])])
template = product.template
product_supplier = ProductSupplier()
product_supplier.product = template
product_supplier.name = template.name
product_supplier.currency = get_currency()
#debug('Currency du product supplier = '+str(product_supplier.currency))
product_supplier.company = get_company()
product_supplier.code = article['Ref_Fournisseur']
product_supplier.delivery_time = article['Delai_Reappro']
#product_supplier.sequence = i
supplier, = Party.find([('name', '=',
osi_encode_db(article['Denomination']))])
product_supplier.party = supplier
product_supplier.save()
product_supplier_price = ProductSupplierPrice()
product_supplier_price.quantity = article['Qte_Minimum']
product_supplier_price.unit_price = article['Prix_Achat']
product_supplier.prices.append(product_supplier_price)
product_supplier.save()
article, c'est un dico tiré d'une base de données
get_currency() est une fonction importée qui renvoie l'instance Euro de
currency.currency
Ce code est dans un script article.py.
Si je lance le script avec un if __name__ == '__main__', tout va bien.
Si j'exécute ce code (une fois) avec ipython, tout va bien également.
Mais si je lance la fonction d'import via mon script principal, là, j'obtiens:
File "transfert.py", line 408, in <module>
main(args.modules, args.dossier_id, args.dbopensi)
File "transfert.py", line 378, in main
importer_articles(conn_osi)
File "/home/jm/rcs/OpenSI2Tryton/src/articles.py", line 452, in
importer_articles
creer_articles(conn_osi)
File "/home/jm/rcs/OpenSI2Tryton/src/articles.py", line 435, in creer_articles
ajouter_fournisseur_article(conn_osi, article['Fiche_Article_Id'])
File "/home/jm/rcs/OpenSI2Tryton/src/articles.py", line 346, in
ajouter_fournisseur_article
product_supplier.save()
File "/home/jm/rcs/proteus/proteus/__init__.py", line 664, in save
self.__id, = self._proxy.create([values], context)
File "/home/jm/rcs/proteus/proteus/config.py", line 144, in __call__
result = rpc.result(meth(*args, **kwargs))
File "/home/jm/rcs/trytond/trytond/model/modelsql.py", line 361, in create
cls.__raise_integrity_error(exception, values)
File "/home/jm/rcs/trytond/trytond/model/modelsql.py", line 208, in
__raise_integrity_error
error_args=cls._get_error_args(field_name))
File "/home/jm/rcs/trytond/trytond/error.py", line 74, in raise_user_error
raise UserError(error)
trytond.exceptions.UserError: ('UserError', (u'The field "Currency" on "Product
Supplier" is required.', ''))
Il me semble bien donner une valeur pour l'attribut currency, justement.
Je ne sais pas trop si ça a rapport directement avec Tryton, ou avec mon
Python qui n'est pas au top, mais si quelqu'un avait une idée, ça
m'arrangerait…
Merci.
--
jm