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.