Télédéclarations

Les télédéclarations permettent à l'utilisateur de déclarer auprès des instances publiques toutes les informations qu'il doit faire remonter. Cette spécification permet de définir comment intégrer ces processus directement au sein d'ERP pour que les échanges se fasse de manière transparente et sans ressaisie.

Principe général

Pour chaque service de télédéclaration, 2 librairies seront implémentées :

  1. Bas niveau : Permet d'échanger avec le web service avec les conventions du web services
  2. Haut niveau : Permet d'échanger avec le web service avec les conventions d'Ekylibre ERP (transcodage)

La librairie de haut-niveau repose entièrement sur la librairie de bas-niveau et effectue toutes les opérations de transcodage à la volée en émission et réception.

Bas-niveau

Les librairies bas-niveau sont implémentées dans RAILS_ROOT/lib/tele/<service>. Elles sont directement liées aux protocoles utilisés (SOAP, REST, XML-RPC…). Elles fonctionnent en mode synchrone. L'utilisation de tâches de fond permettront de gérer les opérations longues.

require 'savon'
 
module Tele
  class PAC < Service
 
    def initialize(pacage_number, password)
    end
 
    def retrieve_land_parcels
      ...
    end
 
  end
end

Ces librairies devront être exportable sous forme de gem et totalement indépendante du framework Rails/ERP.

Haut-niveau

Les librairies haut-niveau sont implémentées dans RAILS_ROOT/lib/ekylibre/tele/<service>. Elles sont indépendantes des protocoles utilisés en bas-niveau.

Elles réalisent le transcodage des nomenclatures internes vers celles du service. Ce transcodage devra se faire via des tables de correspondance si cela est possible, ce qui ne sera clairement pas toujours le cas. Exemple sur un code race bovine : bos_taurus_normande (ERP) ⇔ 56 (IDELE)

Ces librairies respectent l'arborescence suivante:

/tele/
  /<<service>>/
    /resources/
    /transcoding/
      /in/
      /out/
    /fetcher.rb
    /generator.rb
    /<<service>>.rb

Le répertoire resources contient tous les fichiers de nomenclature issus du service et nécessaires au bon format de données attendu.

Le répertoire transcoding contient toutes les tables de correspondance. Celles-ci sont divisées dans deux répertoires:

  1. Le dossier in contenant les tables pour les flux entrants (i.e du service vers ERP),
  2. le dossier out contenant les tables pour les flux sortants (i.e ERP vers service).

fetcher.rb a pour rôle d'automatiser la récupération des fichiers de nomenclature du service et les placent dans le dossier resources.

generator.rb s'occupe de la création automatique des tables de correspondances lorsque cela est possible.

«service».rb contient les déclarations des méthodes de haut niveau qui assurent le transcodage et l'appel à la librairie de bas niveau.

Tâches de fond

Transcodage

Les tables de correspondance générées respectent les spécifications YAML. Pour notre exemple cela donne: bos_taurus_normande: '56'. Chaque table est nommée «nom nomenclature interne».yml. Les correspondances ne sont pas forcément du 1 pour 1. Il peut arriver que les deux nomenclatures ne s'accordent pas: Par exemple, une nomenclature interne plus précise que celle du service devra générer une correspondance dans une catégorie divers. Il faut donc prendre en compte les exceptions.

Gestion des exceptions

Le générateur de tables de correspondance vérifie l'existence d'un fichier «nom nomenclature interne».exception.yml pour chaque table. Egalement au format YAML, ce fichier devra être rempli manuellement et spécifie les exceptions.

S'il existe, son contenu sera rajouté à la fin de la table générée. S'il est absent, le générateur considère qu'aucune exception n'est connue.

Lors de la génération de la table, le générateur vérifie que toutes les correspondances sont faites. Dans le cas contraire, il générera lui-même le ou les fichier(s) d'exception «nom nomenclature interne».exception.yml, qu'il faudra remplir à la main. Le générateur alertera alors l'ERP pour que la saisie manuelle soit faite.

Une fois le fichier rempli, le générateur devra être relancé pour prendre en compte les fichiers d'exception nouvellement créés.

Services

Chaque sous-partie concerne un type de télédéclaration.

IDELE

L'Institut de l'Élevage fournit depuis juin 2013 un service web SOAP permettant d'effectuer 14 opérations de déclaration sur les troupeaux bovins :

  1. Enregistrement des données d’un mouvement d’entrée dans l’exploitation.
  2. Fourniture de l’inventaire des animaux présents à un instant donné, ou ayant été présents entre deux dates.
  3. Vérification et enregistrement des données de naissance (y compris de celles relevant de l’ECB) d’un veau né vivant et/ou identifié dans la base locale.
  4. Enregistrement des données de naissance d’un veau mort-né (non bouclé).
  5. Enregistrement des données d’un bovin échangé introduit dans une exploitation.
  6. Notification de première entrée d'un bovin importé - Demande de passage d'un agent identificateur.
  7. Enregistrement des données d’un bovin importé introduit dans une exploitation.
  8. Enregistrement des données d’un mouvement de sortie dans l’exploitation.
  9. Enregistrement d’une demande de commande de boucles de rebouclage.
  10. Enregistrement d’une insémination par l’éleveur IPE.
  11. Fourniture des modifications apportées à des dossiers de bovins d’une exploitation (RETMOUV) depuis une date donnée.
  12. Fourniture des sorties présumées de bovin d’une exploitation.
  13. Enregistrement d’une demande de commande de boucles de naissance.
  14. Fourniture à la demande d’un dossier de bovin.

Spécifications techniques bas-niveaux

Vous trouverez ci-dessous les déclarations des méthodes bas-niveaux destinées à la gestion du webservice Idele.

Définitions des paramètres
Paramètre Type Définition A faire
country_code string (2) Code Pays ISO-2
farm_number string (10) Numéro d'exploitation du compte A faire: renseigner le farm number sur le tiers du of_company
origin_farm_number string (10) Numéro d'exploitation de provenance A faire: Ajouter un indicateur/attribut sur Entity pour stocker le numéro d'exploitation. Tiers lié au colis entrant: farm_number
origin_owner_name string Nom du tiers expéditeur
birth_farm_number string (10) Numéro d'exploitation de naissance A faire: Ajouter un indicateur/attribut sur Entity pour stocker le numéro d'exploitation. Tiers lié au initial_owner : farm_number
start_date date Date début de période de présence des bovins
end_date date Date fin de période de présence des bovins
get_stock bool Indique si le stock de boucles doit être retourné
generation_datetime datetime Date et heure de la génération de la réponse
stock bool Le message contient l'inventaire des boucles
identification_number string(10-12) Numéro national du bovin
sex Nomen Sexe du bovin
race_code Nomen Type racial
date date Date
witness TT Témoin de complétude A faire: Rapport à la date renseignée.
work_number string Numéro de travail
name string Nom du bovin
cpb_filiation_status bool Indique si l'animal est filié (CPB) A faire: Dans un deuxième temps, d'abord lié l'api des taureaux de monte publque dans un schéma externe
first_calving_date date Date de premier vêlage A faire
origin_country_code string (2) Code Pays d'origine de l'animal ISO-2 A faire
origin_identification_number string(10) Numéro d'origine du bovin A faire
end_of_life_date date Date de fin de vie
end_of_life_witness TT Témoin de complétude A faire
entry_date date Date d'entrée
entry_reason TT Raison d'entrée A faire: Sprint1: colonne sur colis entrant avec raison,Plus tard: Si une livraison est liée à une facture d'achat alors A=Achat, P=Prêt/Pension. achat=approvisionnement dans Ekylibre, pension=fonctionnalité à développer
exit_date date Date de sortie
exit_reason TT Raison de sortie
abortion bool Avortement A faire
transplant bool Issu d'une transplantation embryonnaire A faire: Animal.mammalia_reproduction_method_embryo_transplant
twin bool Issu d'une naissance gémélaire A faire: Méthode pour connaître l'origine gémélaire (même mère et Date de naissance identique)
weighed_weight bool Le bovin a été pesé pour déterminer son poids
birth_condition TT Condition de naissance du bovin A faire: Animal.mammalia_birth_condition
birth_weight Int Poids de naissance du bovin. (1-99) Note: Animal.net_mass.to_d(:kilogram)
chest_size Int Tour de poitrine en cm. max length: 3 A faire: A mettre dans les indicateurs des bovins comme le poids
passport_ask Bool Indique si une demande d'édition du passeport en urgence A faire: A mettre dans l'écran dédié des naissances
prod_code string Le type d'atelier du type AtelierBovinIPG A faire: cf page 19, calculé à la volée via activitié
cattle_categ_code string Le code catégorie du bovin A faire: Ajouter un indicateur sur Animal (castration) cf p18
dest_farm_number string (10) Numéro d'exploitation de destination A faire: Ajouter un indicateur/attribut sur Entity pour stocker le numéro d'exploitation
dest_owner_name string Nom du tiers destinataire
insemination_date date Date d'insémination
public bool Indique si la monte est publique
collect bool Indique si l'insémination est réalisée pour collecte embryon
insemination_mode TT Indique le mode d'insémination A faire: (F/C) F=Fraiche, C=Congelé
hormonal treatment Bool Indique si un traitement hormonal est prescrit à la femelle
divided_vial TT Nature de la paillette utilisée A faire (1/2/B/D/M/P/Q/T)1: non fractionnée, 2: fractionnée, B: double dose, D: demi, M: morceau, P: entière, Q: Quart, T: tiers
vial_reference TT Référence de la paillette A faire: Intervention.input.work_number ? + voir la notion de paternité de la semence.
sexing_seed TT Nature du sexage de la paillette A faire (0/1/2) 0: non sexée, 1: sexée mâle, 2: sexée femelle
conventional_buckle bool Indique si la boucle demandée est conventionnelle
work_buckle bool Si la boucle conventionnelle avec numéro de travail uniquement
electronic_buckle bool Indique si la boucle est electronique
replacement_reason TT Motif de la commande de la boucle de rebouclage A faire (C/E/I/L/P/X/Y/Z) Cassé/Electronisation/Illisible/électronique perdu/perdu/anomalie de commande/anomalie de pose/anomalie de fabrication
buckle_pair_count Int Nombre de paires de boucles à commander A faire
buckle_reference string Code produit des boucles commandées A faire
tool_count int Nombre de paires de pinces à commander A faire
tool_reference Code produit des pinces commandées A faire
needle_count Int Nombre de pointeaux à commander A faire
needle_reference string Code produit des pointeaux commandés A faire

^ Types complexes ^

farm
animals[]
identity
birth_date
mother
father
end_of_life
mouvements[]
entry
exit
buckles[]
buckles_serie[]
presumed_exits[]
presumed_exit[]

TT: tables de transcodage | Nomen: Nomenclature

Enregistrement des données d’un mouvement d’entrée dans l’exploitation

create_cattle_entrance:

Paramètres attendus Spécificité du message
farm_number Numéro d'exploitation française.
identification_number
entry_date
entry_reason
origin_farm_number
origin_owner_name
prod_code
cattle_categ_code
Fourniture de l’inventaire des animaux présents à un instant donné, ou ayant été présents entre deux dates

get_list:

Paramètres attendus Spécificité du message
farm_number Numéro d'exploitation française.
start_date
end_date
get_stock

Réponse

generation_datetime
farm
country_code
farm_number (8)
start_date
stock
animals
identity
country_code
identification_number
sex
race_code
birth_date
date
witness
work_number
name
mother
country_code
identification_number
race_code
father
country_code
identification_number
race_code
farm_number
cpb_filiation_status
first_calving_date
origin_country_code
origin_identification_number
end_of_life
end_of_life_date
end_of_life_witness
mouvements
entry
entry_date
entry_reason
exit
exit_date
exit_reason
buckles
buckles_serie
country_code
start_date
quantity
Vérification et enregistrement des données de naissance (y compris de celles relevant de l’ECB) d’un veau né vivant et/ou identifié dans la base locale

create_cattle_new_birth:

Paramètres attendus Spécificité du message
farm_number Numéro d'exploitation française.
identification_number
sex
race_code
birth_date
work_number
name
transplant
abortion
twin
birth_condition
birth_weight
weighed_weight
chest_size
mother
identification_number
race_code
father
identification_number
race_code
passport_ask
prod_code
Enregistrement des données de naissance d’un veau mort-né (non bouclé)

create_cattle_stillbirth:

Paramètres attendus Spécificité du message
farm_number Numéro d'exploitation française.
sex
race_code
birth_date
work_number
name
transplant
abortion
twin
birth_condition
birth_weight
weighed_weight
chest_size
mother
identification_number
race_code
father
identification_number
race_code
Enregistrement des données d’un bovin échangé introduit dans une exploitation

create_switched_animal:

Paramètres attendus Spécificité du message
farm_number Numéro d'exploitation française.
identification_number
sex
race_code
birth_date
witness
work_number
name
cpb_filiation_status
mother
identification_number
race_code
father
identification_number
race_code
birth_farm_number
entry_date
entry_reason
origin_farm_number
origin_owner_name
prod_code
cattle_categ_code

create_imported_animal:

Paramètres attendus Spécificité du message
farm_number Numéro d'exploitation française.
identification_number
sex
race_code
birth_date
witness
work_number
name
cpb_filiation_status
mother
identification_number
race_code
father
identification_number
race_code
birth_farm_number
entry_date
entry_reason
origin_farm_number
origin_owner_name
origin_identification_number
origin_country_code
prod_code
cattle_categ_code
Enregistrement des données d’un bovin importé introduit dans une exploitation

create_imported_animal_notice:

Paramètres attendus Spécificité du message
farm_number Numéro d'exploitation française.
origin_identification_number
Enregistrement des données d’un mouvement de sortie dans l’exploitation

create_cattle_exit:

Paramètres attendus Spécificité du message
farm_number Numéro d'exploitation française.
identification_number
exit_date
exit_reason
dest_farm_number
dest_owner_name
Enregistrement d’une demande de commande de boucles de rebouclage

create_rebuckling:

Paramètres attendus Spécificité du message
farm_number Numéro d'exploitation française.
identification_number
conventional_buckle
work_buckle
electronic_buckle
replacement_reason
Enregistrement d’une insémination par l’éleveur IPE

create_insemination:

Paramètres attendus Spécificité du message
farm_number Numéro d'exploitation française.
mother
identification_number Numéro UE
father
identification_number
insemination_date
public
collect
insemination_mode
hormonal treatment
divided_vial
vial_reference
sexing_seed
Fourniture des modifications apportées à des dossiers de bovins d’une exploitation (RETMOUV) depuis une date donnée

get_case_feedback:

Paramètres attendus Spécificité du message
farm_number Numéro d'exploitation française.
start_date Date début de fourniture des dossiers

Réponse:

generation_datetime
farm
country_code
farm_number (8)
start_date
animals
identity
country_code
identification_number
sex
race_code
birth_date
date
witness
work_number
name
mother
country_code
identification_number
race_code
father
country_code
identification_number
race_code
farm_number
cpb_filiation_status
first_calving_date
origin_country_code
origin_identification_number
end_of_life
end_of_life_date
end_of_life_witness
mouvements
entry
entry_date
entry_reason
exit
exit_date
exit_reason

get_presumed_exit:

Paramètres attendus Spécificité du message
farm_number Numéro d'exploitation française.

Réponse:

generation_datetime
farm
country_code
farm_number (8)
presumed_exits
presumed_exit
animal
identification_number
exit_date
Enregistrement d’une demande de commande de boucles de naissance

create_buckle_request:

Paramètres attendus Spécificité du message
farm_number Numéro d'exploitation française.
buckle_pair_count
buckle_reference
tool_count
tool_reference
needle_count
needle_reference
Fourniture à la demande d’un dossier de bovin

get_animal_case:

Paramètres attendus Spécificité du message
farm_number Numéro d'exploitation française.
identification_number Numéro UE

Réponse:

animal
identity
country_code
identification_number
sex
race_code
birth_date
date
witness
work_number
name
mother
country_code
identification_number
race_code
father
country_code
identification_number
race_code
farm_number
cpb_filiation_status
first_calving_date
origin_country_code
origin_identification_number
end_of_life
end_of_life_date
end_of_life_witness
mouvements
entry
entry_date
entry_reason
exit
exit_date
exit_reason

TéléPAC

bloc à faire

GAMMA (Douanes)

bloc à faire