WebHook Intervention (V5.3)

Résumé

Manipulation de l'entité Intervention (Interventions) en lecture/écriture/suppression via un objet métier depuis une application externe.

Tables

Les tables utilisées sont :

  • sw_data_intervention : Table des interventions

Les tables liées sont :

  • sw_data_interventionequipment : Table des équipements d'une intervention

  • sw_data_interventionpart : Table des pièces d'une intervention

Critères d'activation

WHK_Intervention est défini dans la gestion des webhooks du studio.

Fonctionnement

verb: GET
resultType: simple

"intervention": { "codeintervention": "INF000000001", "customer_ID": "C0000001", "customeraddress_ID": "C0000001-BDX", "title": "Intervention pour changement chaudière", "interventiontype_ID": "INST-CHAUDIERE", "interventionNumber": "INST20191011-00001", "generictype_ID_status": "CLOSED", "startDate": "2020-10-07 15:00:00", "endDate": "2020-10-07 17:00:00" }

verb: GET
resultType: extended

"intervention": { "codeintervention": "INF000000001", "customer_ID": "C0000001", "customeraddress_ID": "C0000001-BDX", "title": "Intervention pour changement chaudière", "interventiontype_ID": "INST-CHAUDIERE", "interventionNumber": "INST20191011-00001", "generictype_ID_status": "CLOSED", "startDate": "2020-10-07 15:00:00", "endDate": "2020-10-07 17:00:00", "comment": "Installation chaudière new power", "contract_ID": null, "internalRemarks": "client sensible", "externalRemarks": "Installation chaudière selon devis numéro G234", "phoneNumber": "0671727374", "contactName": "DESMOUCEAUX Alexandre", "contactEmail": "adesmouceaux@divalto.com", "estimatedDuration": 240, "interventionpriority_ID": "LOW", "requestedDate": "2019-10-26 00:00:00.000", "intervention_ID_parent": null, "branchoffice_ID": null, "interventionrequest_ID": null, "reportEmail": null, "estimatedDuration": null, "operationrange_ID": null, "generictype_ID_followup": null, "commentFollowup": null, "isFrontOfficeCreated": null, "generictype_ID_geoptimizationStatus": null, "equipmentwarrantytype_ID": null, "invoiceOutsideScope": "0", "contract_ID_equipment": null, "timetypeactivity_ID": null, "timeworktimeheader_ID": null, "orderheader_ID": null, "externalID": null, "deal_ID": null, "dealelement_ID": null, "contractToBill": null, "symptom_ID": null, "symptomNotes": null, "dateToCheckContractOrWarrantyOnFollowUp": "", "generictype_ID_managementMode": "INTERVENTION_MANAGEMENT_MODE-BO_WITH_PLANNING", "additionalExternalID": "", "billingComment": "", "generictype_ID_billingFollowUp": "", "nonBillable": "0", "customer_ID_billed": "C0000002", "generictype_ID_nonBillableReason": "" }

verb: GET
resultType: extendedRelated
en complément du résultat pour resultType: extended on aura le détail pour les tables interventiontype, timetypeactivity, customeraddress, generictype_status, contract, deal, dealelement, interventionpriority, symptom, interventionrequest et customer_billed

"related":[ { "interventiontype":{ "codeinterventiontype":"REP", "label":"Réparation", "printTimes":"1", "printProducts":"1", "defaultDuration":"60", "isBreakFix":"1", "color":"ff5252" }, "timetypeactivity":{ "codetimetypeactivity":"PLOM", "label":"Plomberie" }, "customeraddress":{ "codecustomeraddress":"0000360000000002", "customer_ID":"I0001700000000008", "name":"Nouveau site", "site":"1", "generictype_ID_country":"", "generictype_ID_province":"", "baseculture_ID":"", "address1":"25 Rue des pêcheurs", "address2":"", "address3":"", "postalCode":"67000", "city":"Strasbourg", "phoneNumber":"", "faxNumber":"", "mobilePhoneNumber":"", "email":"", "areaCode":"", "contact":"", "gpsLongitude":"7.76106", "gpsLatitude":"48.58294", "gpsAccuracy":"8", "gpsUpdateDate":"2019-04-11 18:36:31", "gpsManual":"", "billingAddress":"0", "defaultBillingAddress":"0", "deliveryAddress":"", "defaultDeliveryAddress":"", "accessCode":"", "floor":"", "apartment":"", "miscInfos":"", "baseuser_ID_favoriteTechnician":"", "erpAddressID":"", "branchoffice_ID":"SXB", "bankholidayparamheader_ID":"" }, "deal":{ "codedeal":"PJ000011", "customer_ID":"C0000001", "label":"Vitrine de magasin", "generictype_ID_dealType":"DEAL_DEALTYPE-PRJ", "dealNumber":"PJ000011", "description":"", "creationDate":"2020-09-18 00:00:00", "closingDate":"", "amount":"300", "probability":"55", "generictype_ID_lossReason":"", "customer_ID_introducer":"", "baseuser_ID":"", "amount2":"", "generictype_ID_status":"DEAL_STATUS-PRJ-1", "lossReasonComment":"", "realClosingDate":"", "dealstep_ID_current":"", "deal_ID_origin":"", "isProject":"1", "manualProbability":"0", "marketinglead_ID_origin":"", "customercontact_ID":"C0000001-DJ" } }]

verb: PUT
Selon webhookVersion renseigné dans le header :

  • webhookVersion = 1 -> les blocs json interventiontype, customer et site sont obligatoires.

  • webhookVersion = 2 -> les blocs json interventiontype, customer et site ne doivent plus être renseignés, sinon il y aura une erreur en retour. Ils doivent être appelés explicitement par leur webhooks correspondants (interventiontype, customer et customeraddress) en amont. Valeur par défaut si non renseigné.

La description pour webhookVersion = 1 peut être consultée dans les pages de la version Divalto weavy 5.5 et antérieures.

{ "intervention": { "codeintervention": "INF000000001", /* Code globalement unique de l'intervention (Varchar (255))*/ "customeraddress_ID": "C0000001-BDX", /* Code adresse client (ForeignKey () - sw_data_customeraddress.codecustomeraddress)*/ "title": "Intervention pour changement chaudière", /* Titre de l'intervention (Varchar (255))*/ "comment": "Installation chaudière new power", /* Observations (Text (65535))*/ "interventionNumber": "INST20191011-00001", /* N° d'intervention (Varchar (64))*/ "interventiontype_ID": "INST-CHAUDIERE", /* Code type d'intervention (ForeignKey () - sw_data_interventiontype.codeinterventiontype)*/ "internalRemarks": "client sensible", /* Commentaires internes non imprimés sur le rapport (Text (65535))*/ "externalRemarks": "Installation chaudière selon devis numéro G234", /* Commentaires externes imprimés sur le rapport (Text (65535))*/ "phoneNumber": "0671727374", /* N° de téléphone du contact client pour l'intervention (Varchar (64))*/ "contactName": "DESMOUCEAUX Alexandre", /* Nom du contact client pour l'intervention (Varchar (255))*/ "contactEmail": "adesmouceaux@divalto.com", /* Email du contact client pour l'intervention (Varchar (255))*/ "generictype_ID_status": null, /* Statut de l'intervention. Si vide on le positionne à l'intégration dans weavy lors d'une création (READYTOPLAN par défaut) (ForeignKey () - sw_data_generictype.codegenerictype avec dataType = INTERVENTION_STATUS)*/ "estimatedDuration": 240, /* Durée estimée. Si le type d'intervention a une durée, la remettre ici (Int ())*/ "interventionpriority_ID": null, /* Priorité d'intervention. Si vide, on le positionne à l'intégration dans weavy (LOW par défaut) (ForeignKey () - sw_data_interventionpriority.codeinterventionpriority)*/ "requestedDate": "2019-10-26 00:00:00", /* Date d'intervention demandée (DateTime ())*/ "contract_ID": null, /* Code du contrat si lié à un contrat (ForeignKey () - sw_data_contract.codecontract)*/ "intervention_ID_parent": null, /* Code de l'intervention parente (nécessite que la parente a été créée avant celle-ci) (ForeignKey () - sw_data_intervention.codeintervention)*/ "branchoffice_ID": null, /* Code de l'agence de rattachement. Si vide on le positionne à l'intégration dans weavy lors d'une création (ForeignKey () - sw_data_branchoffice.codebranchoffice)*/ "reportEmail": "", /* Email pour le rapport (Varchar (255))*/ "operationrange_ID": "", /* Code opération/gamme (ForeignKey () - sw_data_operationrange.codeoperationrange)*/ "generictype_ID_followup": "INTERVENTION_FOLLOWUP-INTERVENTION", /* Code suite à donner (ForeignKey () - sw_data_generictype.codegenerictype avec datatype = INTERVENTION_FOLLOWUP)*/ "commentFollowup": "", /* Commentaire suite à donner (Text (65535))*/ "invoiceOutsideScope": "", /* Facturation hors garantie/contrat (Valeurs possibles : 0,1) (Bool ())*/ "deal_ID": "", /* Code affaire (ForeignKey () - sw_data_deal.codedeal)*/ "dealelement_ID": "", /* Code élément d'affaire (ForeignKey () - sw_data_dealelement.codedealelement)*/ "timetypeactivity_ID": "", /* Code activité (ForeignKey () - sw_data_timetypeactivity.codetimetypeactivity)*/ "contractToBill": "", /* Contrat à facturer (Valeurs possibles : 0,1) (Varchar (64))*/ "interventionrequest_ID": "", /* Code demande d'intervention (ForeignKey () - sw_data_interventionrequest.codeinterventionrequest)*/ "externalID": "DTR 1 C12", /* Origine externe (Varchar (64))*/ "symptom_ID": "", /* Code symptôme (ForeignKey () - sw_data_symptom.codesymptom)*/ "symptomNotes": "", /* Notes liées aux symptômes (Text (65535))*/ "dateToCheckContractOrWarrantyOnFollowUp": "", /* Date de vérification du contrat ou de la garantie (DateTime ())*/ "generictype_ID_managementMode": "INTERVENTION_MANAGEMENT_MODE-BO_WITH_PLANNING", /* Mode de gestion (ForeignKey () - sw_data_generictype.codegenerictype avec datatype = INTERVENTION_MANAGEMENT_MODE)*/ "additionalExternalID": "", /* Origine externe complémentaire (Varchar (255))*/ "billingComment": "", /* Commentaire facturation (Text (65535))*/ "generictype_ID_billingFollowUp": "", /* Suivi de facturation (ForeignKey () - sw_data_generictype.codegenerictype avec datatype = INTERVENTION_BILLING_FOLLOWUP)*/ "nonBillable": "0", /* Non facturable (Valeurs possibles : 0,1) (Bool ())*/ "customer_ID_billed": "C0000002", /* Tiers facturé (ForeignKey () - sw_data_customer.codecustomer)*/ "generictype_ID_nonBillableReason": "" /* Motif non facturable (ForeignKey () - sw_data_generictype.codegenerictype avec datatype = INTERVENTION_NONBILLABLEREASON)*/ "internalcodeintervention": null /* codeintervention original de weavy pour transcodage (Varchar (255))*/ }, "interventionequipment": [ { "codeinterventionequipment": "INF000000001-BAL01-201910", /* Code globalement unique d'un équipement dans une intervention. Composé : codeintervention + "-" + codeequipment (Varchar(255))*/ "intervention_ID": "INF000000001", /* Code intervention. Optionnel : reprendre le code intervention du bloc json "intervention", si non fourni reprend automatiquement le code intervention (ForeignKey () - sw_data_intervention.codeintervention)*/ "equipment_ID" : "BAL01-201910", /* Code de l'équipement. Doit avoir été créé avant la création de l'intervention (ForeignKey () - sw_data_equipment.codeequipment)*/ "addedByUser": false, /* Equipment ajouté par l'utilisateur (Valeurs possibles : 0,1) (Bool ()) */ "contract_ID": null /* Code du contrat si lié à un contrat (ForeignKey () - sw_data_contract.codecontract)*/ }, { "codeinterventionequipment": "INF000000001-CHA01-201910", /* Code globalement unique d'un équipement dans une intervention. Composé : codeintervention + "-" + codeequipment (Varchar(255))*/ "intervention_ID": "INF000000001", /* Code intervention. Optionnel : reprendre le code intervention du bloc json "intervention", si non fourni reprend automatiquement le code intervention (ForeignKey () - sw_data_intervention.codeintervention)*/ "equipment_ID" : "CHA01-201910", /* Code de l'équipement. Doit avoir été créé avant la création de l'intervention (ForeignKey () - sw_data_equipment.codeequipment)*/ "addedByUser": false, /* Equipment ajouté par l'utilisateur (Valeurs possibles : 0,1) (Bool ()) */ "contract_ID": null /* Code du contrat si lié à un contrat (ForeignKey () - sw_data_contract.codecontract)*/ } ], "interventionpart": [ { "codeinterventionpart": "INF000000001-BAL01-201910-BLO0001-L-BLANC-1", /* Code globalement unique de la pièce dans l'intervention. Composé : codeintervention + "-" + codeequipment + "-" + codeproduct + "-" + linenumber (Varchar (255) */ "intervention_ID": "INF000000001", /* Code intervention. Optionnel : reprendre le code intervention du bloc json "intervention", si non fourni reprend automatiquement le code intervention (ForeignKey () - sw_data_intervention.codeintervention)*/ "interventionequipment_ID" : "INF000000001-BAL01-201910", /* Code de l'équipement de l'intervention. A renseigner si la pièce est rattachée à l'équipement (ForeignKey () - sw_data_interventionequipment.codeinterventionequipment)*/ "product_ID": "BLO0001-L-BLANC", /* Code de l'article (ForeignKey () - sw_data_product.codeproduct)*/ "productCode": "BLO0001-L-BLANC", /* Code article de la pièce (Varchar(255))*/ "productDescription": "Filtre charbon universel", /* Libellé de l'article dans la pièce (Varchar(255))*/ "lineNumber": 1, /* Numéro de ligne (Int)*/ "estimatedQuantity": 1, /* Quantité estimée (Double)*/ }, { "codeinterventionpart": "INF000000001--ALB0001-2", /* Code globalement unique de la pièce dans l'intervention. Composé : codeintervention + "-" + codeequipment + "-" + codeproduct + "-" + linenumber (Varchar (255) */ "intervention_ID": "INF000000001", /* Code intervention. Optionnel : reprendre le code intervention du bloc json "intervention", si non fourni reprend automatiquement le code intervention (ForeignKey () - sw_data_intervention.codeintervention)*/ "interventionequipment_ID" : null, /* Code de l'équipement de l'intervention. A renseigner si la pièce est rattachée à l'équipement (ForeignKey () - sw_data_interventionequipment.codeinterventionequipment)*/ "product_ID": "ALB0001", /* Code de l'article (ForeignKey () - sw_data_product.codeproduct)*/ "productCode": "ALB0001", /* Code article de la pièce (Varchar(255))*/ "productDescription": "Album", /* Libellé de l'article dans la pièce (Varchar(255))*/ "lineNumber": 2, /* Numéro de ligne (Int)*/ "estimatedQuantity": 3 /* Quantité estimée (Double)*/ } ] }

Compléments :

  • A la fin de la création/modification d'une intervention si codeintervention=intervention_ID (c'est le cas si on ne renseigne pas le codeintervention) et que interventionNumber n'est pas renseigné alors interventionNumber sera mis à jour avec la forme visuelle de intervention_ID. Exemple : si intervention_ID=6690000005994, alors interventionNumber=669-05994

  • A la fin de la création/modification d’une intervention, on crée également les gammes d’opérations selon le paramétrage existant.

  • Dans la réponse du webhook, on retourne également "interventionNumber"

"response": { "data": [{ "action": "value", // inserted or updated "intervention_ID": "value", value is ID created/updated "codeintervention": "value", // value is code created/updated "interventionNumber": "value" // value is calculate or given by the user }] }

verb: LIST
resultType: simple, extended reprendre les définitions du GET

"filters:" { "codeIntervention": "value", filter is equal "interventionNumber": "value", filter is equal "title": "value", filter is contains "codeCustomer": "value", filter is equal "codeCustomerAddress": "value", filter is equal "codeContract": "value", filter is equal "startDate": "value", filter is greater or equal to "startDateBetween": "value1|value2", filter is between value1 and value2 "endDate": "value", filter is lesser or equal to "endDateBetween": "value1|value2", filter is between value1 and value2 "interventionType": "value", filter is equal "codeDeal": "value", filter is equal "codeStatus": "value" filter is equal }, "orderBy": "value"

Valeurs possibles pour le tri "orderBy" :

  • interventionNumberAsc : par n° d'intervention ascendant

  • startDateDesc : par date de début descendant

  • startDateAsc : par date de début ascendant

  • requestedDateDesc : par date souhaitée descendant

  • requestedDateAsc : par date souhaitée ascendant

verb: DELETE
Une suppression d'une intervention (sw_data_intervention) va supprimer en cascade les éléments dans les tables liées sw_data_interventionequipment et sw_data_interventionpart.