Configuration du traitement d'import
La table de configuration permet de faire la correspondance entre les balises XML et les objets et champs d'openprod.
1. Détails
Utiliser les Onchanges : Si cette case est coché, les onchanges se déclencheront lors
Répertoire pour intégration des document D.T. : il s'agit de l'emplacement dans le quelle on va trouver les plans correspondant à des produits. Lors de l'exécution du traitement d'import, tous les fichier de ce dossier seront importés et associé a l'article ayant le même code que le nom du fichier
Séparateur indice documentaire : Permet de donner le séparateur entre le code produit et la version dans le nom des fichiers.
Dossier produit : Permet de préciser le dossier dans le quelle sera mis le document Open-Prod créer par l'import du fichier. dans cette zone, on peut utiliser les balises suivantes : product_code , product_version , active_company. exemple : Root/active_company/product_code.
Remarque : Si les dossier n'existent pas, ils seront créés. La date sera ajouté à la fin du nom du fichier pour éviter les doubons.
Action serveur : une fois l'import réalisé, cette action serveur se déclenchera.
Remarque : si l'action serveur est créer sur le modèle xml.import.processing. L'appel de la fonction get_all_data_by_model(Model,Type) pour récupérer tous les enregistrements du modèle demandé crée ou modifié par le traitement d'import. Exemple :
#récupère la liste des produits créés ou modifiés par le traitement d'import
product_rcs=object.get_all_data_by_model('product.product',['create','update'])
Cela permettra par exemple d'activer toutes les nomenclatures importées.
2. Balises
dans cette partie il faut décrire la structure du fichier XML et y faire correspondre des objets ou champs openprod.
Type Neutre : Balise ne corredpondant pas à un élément de openprod.
Type Objet : Balise corredpondant à un objet openprod (exemple : Nomenclature)
Dans ce cas, il est nécessaire de préciser les champs suivant :
Objet : Modèle openprod correspondant
Domaine de recherche : permet de sélectionner l'enregistrement à mettre à jour (si la case mettre à jour l'objet est chochée) ; si l'enregistrement n'est pas trouvé et que la case "Créer l'enregistrement est crée alors l'enregistrement sera créé. Si la condition du domaine renvoie plusieurs enregistrement l'import échouera. Particularité : dans ce cas : [["code","=",""]] les "" seront remplacé par la valeur de la balise liée que code décrite dans les balises enfant. Dans les exemples ci-dessus on constate que 2 balises sont mappées sur l'objet nomenclature cependant, dans un cas le domaine précise ["bom_id","!=",false] pour les lignes et dans l'autre cas ["bom_id","=",false] pour les entêtes. Remarque : si on met un domaine jamais vrai, un enregistrement sera crée pour chaque balise rencontrée !
Nom du champs dans l'objet parent : si la balise parente est un objet, il faudra préciser le champs correspondant dans l'objet parent (exemple : champs composant de l'entête de nomenclature)
Type d'import de liste : si le nom du champs dans l'objet parent est un one2many ou many2many alors on pourra décider soit de remplacer les enregistrement trouvés, soit de les ajouter.
Est requis : permet de renvoyer une erreur si cette balise n'est pas trouvée
Balise enfant : dans le cas d'une balise de type objet (exemple : produit), on peut détailler les balises enfants (exemple : code, nom...)
Type Champ : Balise corredpondant à un champ openprod (exemple : code)
Champs en relation avec le texte : permet de faire la correspondance avec le champ Open-Prod si la balise contient du texte exemple : <Libelle>Vis 45544</Libelle> (remarque : ce mode de relation ne fonction pas toujours très bien. Préférer les relation par attribut quitte à les convertir dans le pré-traitement)
Attribut cible : permet de faire la correspondance avec le champ Open-Prod si la valeur est contenu dans un attribut de la balise : exemple : <Code value="PR45544"/>. dans ce cas, il faut commencer par créer la relation avec les attributs plus bas avant de pouvoir sélectionner l'attribut dans la liste.