Odoo-fab

De Admin -- TALEVAS.
(Différences entre les versions)
(script)
(Mise en place)
Ligne 1 : Ligne 1 :
 
= Mise en place =
 
= Mise en place =
 
Installation du module "Manufacturing"
 
Installation du module "Manufacturing"
 +
 +
Ou simplement le module "Inventory Management" qui permet de gérer les stocks.
 +
 +
 +
 
== Produits ==
 
== Produits ==
  
Ligne 11 : Ligne 16 :
 
  - Les services sont des produits immatériels fournis par une société ou un individu
 
  - Les services sont des produits immatériels fournis par une société ou un individu
  
Il '''faut''' qu'un produit soit ''"stockable"'' pour qu'il puisse bénéficier d'un approvisionnement.
+
 
  
 
=== Chaine Logistique ===
 
=== Chaine Logistique ===
Ligne 30 : Ligne 35 :
  
 
TODO c'est là qu'il faudra mettre les pièces nécessaires à la fabrication pour la gestion du stock
 
TODO c'est là qu'il faudra mettre les pièces nécessaires à la fabrication pour la gestion du stock
 
  
 
= script =
 
= script =

Version du 31 mai 2018 à 10:18

Sommaire

Mise en place

Installation du module "Manufacturing"

Ou simplement le module "Inventory Management" qui permet de gérer les stocks.


Produits

Les types de produits

- Produits stockables sont sujets au système de gestion d'inventaire complet : règles de stockage minimum, approvisionnement automatique, etc.

Préférer les produits stockable pour imposer la gestion de la fabrication AVANT la possibilité de faire le bon de livraison

- Produits Consommables sont toujours supposés être en quantité suffisante dans votre stock, dès lors leurs quantités disponibles ne sont pas suivies 

S'ils sont consommables, on peut forcer l'inventaire et faire un bon de livraison sans se préoccuper de la partie fabrication. Attention à l'impact futur !

- Les services sont des produits immatériels fournis par une société ou un individu


Chaine Logistique

- Fabrication : le produit est fabriqué en interne ou le service est fourni par dse ressources internes
- Acheter: le produit est acheté à un fournisseur grâce à un Ordre d'Achat.
- Sur Stock: vos clients sont fournis depuis les stocks disponibles. Si les quantités en stock sont trop faibles pour satisfaire la commande, les règles de stock minimum peuvent déclencher des propositions de bons de commandes fournisseurs.
- A la commande : cet article est acquis uniquement lorsqu'une demande est faite, chaque fois qu'un bon de commande est confirmé. Ceci ne modifie pas votre niveau d'inventaire à moyen terme car vous vous réapprovisionnez avec la même quantité que ce qui a été commandé


il faut créer des nomenclatures pour chaque prodruit

- Bill of material / Nomenclature

"La nomenclature liste tous les éléments utilisés pour fabriquer le produit."

C'est la liste des pièces nécessaires à un produit.

TODO c'est là qu'il faudra mettre les pièces nécessaires à la fabrication pour la gestion du stock

script

Le faire fonctionner sur windows. (testé avec camduct 2017 et 2019 sur windows7 et windows10)

- Installer Python 2.x
- Il faut paramétrer les PATH de stockage des exports camduct.
- Ensuite créer une tâche planifiée

#!/usr/bin/python import sys, getopt, xmlrpclib, datetime, os url = 'http://erp-10.umbo.fr' #db = 'FAC-Prod-10-05' db = 'FAC-prod' username = 'damien@talevas.com' password = '*******' #order_id=4564 common = xmlrpclib.ServerProxy('{}/xmlrpc/2/common'.format(url)) #version = common.version() #print version uid = common.authenticate(db, username, password, {}) #print uid models = xmlrpclib.ServerProxy('{}/xmlrpc/2/object'.format(url)) def main(): inputfile = '' outputfile = '' # folder for source files path = '/root/api-odoo/exports' # path for proceed file store destpath = '/root/api-odoo/exports-done' # folder for source files # path = './work/' # path for proceed file store # destpath = './done' # list files from dir and run insert on each of them. for path,dirs,files in os.walk(path): for filename in files: # print os.path.join(path,filename) # print os.path.join(filename) order_id = filename.replace(".txt", "") # order_id = filename.replace(".TXT", "") order_id = order_id.replace("\ ", "") # convert the string into integer print type(order_id) order_id = int(order_id) print "--",order_id,"--" inputfile = os.path.join(path,filename) print 'Input file is "', inputfile # open file file = open(inputfile, "r") # remove first line used for field description definition = file.readline() print "definition =", definition definition = definition.split(";") i=1 for line in file: # print "line :", line # print line.split(";") product = line.split(";") print "produit", i print definition[0],":",product[0] print definition[1],":",product[1] print definition[2],":",product[2] print definition[3],":",product[3] print definition[4],":",product[4] # print "" i=i+1 # search if product exist product_name = product[3].replace("\"", "") print "product name", product_name product_id = models.execute_kw( db, uid, password, 'product.product', 'search', [[["name","like", product_name]]] ) # print "" # if product not then create it if not product_id : print "product add" print product_name product_id = models.execute_kw(db, uid, password, 'product.product', 'create', [{ 'name':product_name, 'list_price':"1", 'sale_ok':"", 'purchase_ok':"", 'type':"product", # product ou consu si Product alors il faut qu'il soit produit !! 'route_ids':[[6,"false",[5,1]]], }] ) print product_id # create BOM associated to product bom_id = models.execute_kw(db, uid, password, 'mrp.bom', 'create', [{ 'product_tmpl_id':product_id, }] ) # print pid print "" else: print "allready exists" product_id = product_id[0] print product_id print "" # needed products exists # create order product_qty = product[2].replace("\"", "") product_qty = product_qty.replace(" (m)", "") product_qty = product_qty.replace(",", ".") print "product_qty = ", product_qty print "" # Update order ! # create product description product_desc = product_name+" "+product[4]+" "+product[5]+" "+product[6]+" "+product[7]+" "+product[8] print product_desc # add line for each product models.execute_kw(db, uid, password,'sale.order.line', 'create',[ {'order_id' :order_id,'product_id':product_id,'name':product_desc, 'product_uom_qty':product_qty,'price_unit':0} ]) salesorder = models.execute_kw(db,uid,password, 'sale.order','search',[[['id','=',order_id]]]) print models.execute_kw(db,uid,password,'sale.order','read',[salesorder],{'fields': ['name', 'id', 'order_line']}) file.close() # move file once push is OK srcfile = os.path.join(path,filename) print srcfile destfile = os.path.join(destpath,filename) print destfile os.rename(srcfile, destfile) main()