Interrogation des fournisseurs (API)

De Wiki1000

Cet exemple montre comment récupérer les fournisseurs avec l'API SData.

L'objectif est de récupérer une liste des fournisseurs comportant :

  • Le code fournisseur
  • Le libellé du fournisseur
  • Le code tiers correspondant
  • L'adresse principale du fournisseur
  • l'IBAN principal du fournisseur

Les ressources SData correspondent aux classes persistantes du modèle de donnée.

Voici une vue du le modèle représentant les fournisseurs dans Sage FRP 1000 :

DcFournisseur.png

Les informations qui nous intéresse sont situées dans plusieurs classes en relation.

Plusieurs solutions sont possibles :

  1. Récupérer les ressources TRoleTiers et filtrer sur la classe de la ressource
  2. Récupérer les ressources TFournisseur
  3. Récupérer les ressources de la vue TvueListeFournisseur
  4. Récupérer les ressources TFournisseur en incluant des informations liées par le tiers, son site et son compte bancaire privilégié

Les deux premières solutions obligeraient a effectuer un ensemble d'interrogation car les informations liées ne sont pas directement retournées par les ressources de base, de toutes les solutions cela serait les moins performantes.

La solution basée sur la vue serait idéale, malheureusement la vue standard ne fourni pas toutes les informations nécessaires.

La meilleur solution reste l'interrogation de TFournisseur en incluant des informations liées, ce qui revient à utiliser une vue temporaire.

La ressource TFournisseur retourne :

http://localhost:8080/sdata/gentiers/tfournisseur?where=tiers.estTiersSociete=false&count=1
{
    "$baseUrl": "http://localhost:8080/sdata/gentiers/",
    "$title": "TFournisseur - -",
    "$updated": "2021-01-27T17:29:11.212Z",
    "$resources": [
        {
            "$url": "TFournisseur('1B28EFFFF1C3000201030000000903C1')",
            "$title": "F-DUCREDIT",
            "$updated": "2009-12-23T15:03:15.000Z",
            "$etag": "1B28EFFFF1C3000201030000000903C1-0000023A000004A0",
            "$shareId": "1B28EFFFF1C300020002000000420002",
            "$shareInfo": "Dossier",
            "$shareLevel": 0,
            "$key": "1B28EFFFF1C3000201030000000903C1",
            "stamp": "0000023A000004A0",
            "assujetiTaxe": false,
            "Caption": "F-DUCREDIT",
            "CategorieComptaTiers": {
                "$key": "1B28EFFFF1C300020041000000380037",
                "$url": "TCategorieComptaTiers('1B28EFFFF1C300020041000000380037')"
            },
            "commentaire": "",
            "cumulQte": false,
            "dateCreation": "2012-12-22T23:00:00.000Z",
            "dateFacturation": {
                "value": 0,
                "title": "Date du traitement"
            },
            "decouvertLimite": {
                "value": 0,
                "CodeDevise": "EUR"
            },
            "devise": {
                "$key": "1B28EFFFF1C300020005000000700005",
                "$url": "TdbfCurrency('1B28EFFFF1C300020005000000700005')"
            },
            "disabled": false,
            "enActivite": true,
            "escompte": {
                "value": 0,
                "Decimales": 4
            },
            "estRoleTiersSociete": false,
            "montantFrancoDePort": {
                "value": 999999999,
                "CodeDevise": "EUR"
            },
            "natureTiers": {
                "value": 0,
                "title": "Client"
            },
            "pourcentageAcompte": {
                "value": 0,
                "Decimales": 4
            },
            "regroupFacture": {
                "value": 0,
                "title": "1 facture par commande"
            },
            "RoleTiersPayeur": {
                "$key": "1B28EFFFF1C3000201030000000903C1",
                "$url": "TRoleTiers('1B28EFFFF1C3000201030000000903C1')"
            },
            "sensible": false,
            "siteFacturation": {
                "$key": "1B28EFFFF1C3000200F80000000903BA",
                "$url": "TSite('1B28EFFFF1C3000200F80000000903BA')"
            },
            "siteLivraisonPrivilegie": {
                "$key": "1B28EFFFF1C3000200FC00000067006F",
                "$url": "TSiteCommerciale('1B28EFFFF1C3000200FC00000067006F')"
            },
            "sitePrivilegie": {
                "$key": "1B28EFFFF1C3000200F80000000903BA",
                "$url": "TSite('1B28EFFFF1C3000200F80000000903BA')"
            },
            "Tiers": {
                "$key": "1B28EFFFF1C3000200F60000000903B6",
                "$url": "TTiers('1B28EFFFF1C3000200F60000000903B6')"
            },
            "typeFacturation": {
                "value": 0,
                "title": "HT"
            },
            "CategorieCollectif": {
                "$key": "1B28EFFFF1C3000202010000000903C6",
                "$url": "TCategorieCollectif('1B28EFFFF1C3000202010000000903C6')"
            },
            "comptePrivilegie": {
                "$key": "1B28EFFFF1C30002001E0000007F05FB",
                "$url": "TCompteGeneral('1B28EFFFF1C30002001E0000007F05FB')"
            },
            "detailAnalyseReglements": "obj://TDetailAnalyseReglements/",
            "nbJMReglement": 0,
            "nbJMRetFactNonReglees": 0,
            "nbJMRetFactReglees": 0,
            "nbJMRetToutesFact": 0,
            "retenueALaSource": {
                "value": 0,
                "title": "Non Soumis"
            },
            "retenueTVA": false,
            "tauxRetenueALaSource": {
                "value": 0,
                "Decimales": 2
            },
            "tauxRetenueTVA": {
                "value": 0,
                "Decimales": 2
            },
            "validationObligatoire": false,
            "existProduitTiers": false,
            "ChiffreAffaires": {
                "value": 0,
                "CodeDevise": ""
            },
            "AccesAPayer": false,
            "fournisseurAPayer": {
                "$key": "1B28EFFFF1C3000201030000000903C1",
                "$url": "TFournisseur('1B28EFFFF1C3000201030000000903C1')"
            },
            "fournisseurFacturant": {
                "$key": "1B28EFFFF1C3000201030000000903C1",
                "$url": "TFournisseur('1B28EFFFF1C3000201030000000903C1')"
            },
            "ndxFournisseurFacturant": 0,
            "regimeFournisseur": {
                "value": 0,
                "title": "Général"
            },
            "RegroupFact": {
                "value": 0,
                "title": "Selon le paramétrage du tiers"
            }
        }
    ],
    "$nextUrl": "http://localhost:8080/sdata/gentiers/tfournisseur?where=tiers.estTiersSociete=false&count=1&startKey='1B28EFFFF1C3000201030000000903C1'&keyDirection=gt"
}

Et le tiers correspondant :

http://localhost:8080/sdata/gentiers/ttiers('1B28EFFFF1C3000200F60000000903B6')
{
    "$baseUrl": "http://localhost:8080/sdata/gentiers/",
    "$title": "TTiers - -",
    "$updated": "2021-01-27T17:30:57.744Z",
    "$resources": [
        {
            "$url": "TTiers('1B28EFFFF1C3000200F60000000903B6')",
            "$title": "DUCREDIT  Sa",
            "$updated": "2010-03-19T12:42:13.000Z",
            "$etag": "1B28EFFFF1C3000200F60000000903B6-000002B500004B64",
            "$shareId": "1B28EFFFF1C300020002000000420002",
            "$shareInfo": "Dossier",
            "$shareLevel": 0,
            "$key": "1B28EFFFF1C3000200F60000000903B6",
            "$baseUrl": "http://localhost:8080/sdata/GenTiers/-/",
            "stamp": "000002B500004B64",
            "Activite": {
                "$key": "1B28EFFFF1C30002000600000010003A",
                "$url": "TActivite('1B28EFFFF1C30002000600000010003A')"
            },
            "assujettiTVA": {
                "value": 0,
                "title": "Taxable"
            },
            "BlocageReglement": false,
            "capital": {
                "value": 1000000,
                "CodeDevise": "EUR"
            },
            "Caption": "DUCREDIT  Sa",
            "chiffreAffaires": {
                "value": 0,
                "CodeDevise": "EUR"
            },
            "code": "DUCREDIT",
            "codeSIRET": "101 001 010 10101",
            "CodificationAPE": {
                "$key": "1B28EFFFF1C30002000B00000010028C",
                "$url": "TCodificationAPE('1B28EFFFF1C30002000B00000010028C')"
            },
            "commentaire": "Société  financière  DUCREDITRole  de  FournisseurPartagé  pour  toutes  les  sociétés  du  Dossier",
            "Compensable": false,
            "CorrespondanceGroupe": {
                "$key": "1B28EFFFF1C3000200F70000000903B9",
                "$url": "TCorrespondanceGroupeTiers('1B28EFFFF1C3000200F70000000903B9')"
            },
            "dateCapital": "2012-12-22T23:00:00.000Z",
            "dateCreation": "2012-12-22T23:00:00.000Z",
            "disabled": false,
            "disabledDupli": false,
            "echeancementDecaissement": {
                "$key": "1B28EFFFF1C30002000F0000001A017E",
                "$url": "TEcheancement('1B28EFFFF1C30002000F0000001A017E')"
            },
            "echeancementEncaissement": {
                "$key": "1B28EFFFF1C30002000F000000C30013",
                "$url": "TEcheancement('1B28EFFFF1C30002000F000000C30013')"
            },
            "effectif": 0,
            "estClient": false,
            "estCodeSIRETRequis": false,
            "estCodeSIRETValide": false,
            "estContactVisible": false,
            "estFournisseur": false,
            "EstGroupe": false,
            "estIntraGroupe": false,
            "estMajInfoSolvabilite": false,
            "estSalarie": false,
            "estTiersConfiance": true,
            "estTiersDivers": false,
            "EstTiersSociete": false,
            "estTransporteur": false,
            "FlagModificationList": "",
            "FormeJuridique": {
                "$key": "1B28EFFFF1C3000200110000011E0001",
                "$url": "TFormeJuridique('1B28EFFFF1C3000200110000011E0001')"
            },
            "garanties": false,
            "immatriculationRegistre": "009918888888",
            "incidentPaiement": false,
            "invocableCreerClient": false,
            "invocableCreerDivers": false,
            "invocableCreerFourni": false,
            "invocableCreerSalarie": false,
            "invocableCreerTransporteur": false,
            "invocableModifClient": false,
            "invocableModifCompteBq": false,
            "invocableModifDivers": false,
            "invocableModifFourni": false,
            "invocableModifSalar": false,
            "invocableModifTransporteur": false,
            "modeReglementDecaissement": {
                "$key": "1B28EFFFF1C300020014000000710003",
                "$url": "TModeReglement('1B28EFFFF1C300020014000000710003')"
            },
            "modeReglementEncaissement": {
                "$key": "1B28EFFFF1C300020014000000710000",
                "$url": "TModeReglement('1B28EFFFF1C300020014000000710000')"
            },
            "Modifiable": false,
            "numeroTraitement": 0,
            "numeroTVACEE": "FR 66516166666",
            "Pays": {
                "$key": "1B28EFFFF1C3000200150000001700FD",
                "$url": "TPays('1B28EFFFF1C3000200150000001700FD')"
            },
            "raisonSociale": "DUCREDIT  Sa",
            "resultat": {
                "value": 0,
                "CodeDevise": "EUR"
            },
            "RoleTiersList": [
                {
                    "$key": "1B28EFFFF1C3000201030000000903C1",
                    "assujetiTaxe": false,
                    "Caption": "F-DUCREDIT",
                    "CategorieComptaTiers": {
                        "$key": "1B28EFFFF1C300020041000000380037",
                        "$url": "TCategorieComptaTiers('1B28EFFFF1C300020041000000380037')"
                    },
                    "commentaire": "",
                    "cumulQte": false,
                    "dateCreation": "2012-12-22T23:00:00.000Z",
                    "dateFacturation": {
                        "value": 0,
                        "title": "Date du traitement"
                    },
                    "decouvertLimite": {
                        "value": 0,
                        "CodeDevise": "EUR"
                    },
                    "devise": {
                        "$key": "1B28EFFFF1C300020005000000700005",
                        "$url": "TdbfCurrency('1B28EFFFF1C300020005000000700005')"
                    },
                    "disabled": false,
                    "enActivite": true,
                    "escompte": {
                        "value": 0,
                        "Decimales": 4
                    },
                    "estRoleTiersSociete": false,
                    "montantFrancoDePort": {
                        "value": 999999999,
                        "CodeDevise": "EUR"
                    },
                    "natureTiers": {
                        "value": 0,
                        "title": "Client"
                    },
                    "pourcentageAcompte": {
                        "value": 0,
                        "Decimales": 4
                    },
                    "regroupFacture": {
                        "value": 0,
                        "title": "1 facture par commande"
                    },
                    "RoleTiersPayeur": {
                        "$key": "1B28EFFFF1C3000201030000000903C1",
                        "$url": "TRoleTiers('1B28EFFFF1C3000201030000000903C1')"
                    },
                    "sensible": false,
                    "siteFacturation": {
                        "$key": "1B28EFFFF1C3000200F80000000903BA",
                        "$url": "TSite('1B28EFFFF1C3000200F80000000903BA')"
                    },
                    "siteLivraisonPrivilegie": {
                        "$key": "1B28EFFFF1C3000200FC00000067006F",
                        "$url": "TSiteCommerciale('1B28EFFFF1C3000200FC00000067006F')"
                    },
                    "sitePrivilegie": {
                        "$key": "1B28EFFFF1C3000200F80000000903BA",
                        "$url": "TSite('1B28EFFFF1C3000200F80000000903BA')"
                    },
                    "typeFacturation": {
                        "value": 0,
                        "title": "HT"
                    },
                    "CategorieCollectif": {
                        "$key": "1B28EFFFF1C3000202010000000903C6",
                        "$url": "TCategorieCollectif('1B28EFFFF1C3000202010000000903C6')"
                    },
                    "comptePrivilegie": {
                        "$key": "1B28EFFFF1C30002001E0000007F05FB",
                        "$url": "TCompteGeneral('1B28EFFFF1C30002001E0000007F05FB')"
                    },
                    "detailAnalyseReglements": "obj://TDetailAnalyseReglements/",
                    "nbJMReglement": 0,
                    "nbJMRetFactNonReglees": 0,
                    "nbJMRetFactReglees": 0,
                    "nbJMRetToutesFact": 0,
                    "retenueALaSource": {
                        "value": 0,
                        "title": "Non Soumis"
                    },
                    "retenueTVA": false,
                    "tauxRetenueALaSource": {
                        "value": 0,
                        "Decimales": 2
                    },
                    "tauxRetenueTVA": {
                        "value": 0,
                        "Decimales": 2
                    },
                    "validationObligatoire": false,
                    "existProduitTiers": false,
                    "ChiffreAffaires": {
                        "value": 0,
                        "CodeDevise": ""
                    },
                    "AccesAPayer": false,
                    "fournisseurAPayer": {
                        "$key": "1B28EFFFF1C3000201030000000903C1",
                        "$url": "TFournisseur('1B28EFFFF1C3000201030000000903C1')"
                    },
                    "fournisseurFacturant": {
                        "$key": "1B28EFFFF1C3000201030000000903C1",
                        "$url": "TFournisseur('1B28EFFFF1C3000201030000000903C1')"
                    },
                    "ndxFournisseurFacturant": 0,
                    "regimeFournisseur": {
                        "value": 0,
                        "title": "Général"
                    },
                    "RegroupFact": {
                        "value": 0,
                        "title": "Selon le paramétrage du tiers"
                    }
                }
            ],
            "SiteCommercialeList": [
                {
                    "$key": "1B28EFFFF1C3000200FC00000067006F",
                    "actif": true,
                    "Adresse": {
                        "$key": "1B28EFFFF1C3000200FB0000000903BC",
                        "$url": "TAdresse('1B28EFFFF1C3000200FB0000000903BC')"
                    },
                    "Caption": "SIEGE DUCREDIT SA",
                    "code": "SITE01",
                    "conserverReliquat": true,
                    "livraisonPartielleAcceptee": true,
                    "livraisonPartielleReliquat": false,
                    "PourcentAccepteReliquat": 0,
                    "RegroupementLivraison": {
                        "value": 0,
                        "title": "Aucun"
                    },
                    "Site": {
                        "$key": "1B28EFFFF1C3000200F80000000903BA",
                        "$url": "TSite('1B28EFFFF1C3000200F80000000903BA')"
                    }
                }
            ],
            "sitesList": [
                {
                    "$key": "1B28EFFFF1C3000200F80000000903BA",
                    "Adresse": {
                        "$key": "1B28EFFFF1C3000200FB0000000903BC",
                        "$url": "TAdresse('1B28EFFFF1C3000200FB0000000903BC')",
                        "adresseNormalisee": "",
                        "codePostal": "920000",
                        "complementAdresse": "La  Défense",
                        "estValide": true,
                        "geoloc": {
                            "value": "",
                            "lat": 0,
                            "long": 0
                        },
                        "nomRueVoie": "Rue de la Finance",
                        "NPAI": false,
                        "Pays": {
                            "$key": "1B28EFFFF1C3000200150000001700FD",
                            "$url": "TPays('1B28EFFFF1C3000200150000001700FD')"
                        },
                        "siteInternet": "www",
                        "telephone1": "0178271717",
                        "typePersonne": {
                            "value": 0,
                            "title": "Personne morale"
                        },
                        "varNoErreurGeoloc": false,
                        "ville": "NANTERRE"
                    },
                    "assujettiTaxeSalaire": false,
                    "Caption": "SIEGE DUCREDIT SA",
                    "code": "SITE01",
                    "commentaire": "",
                    "estAdministratif": true,
                    "estLivraison": true,
                    "estLocalisation": false,
                    "estSiteSociete": false,
                    "idxDepot": 0,
                    "interlocuteurPrivilegie": {
                        "$key": "1B28EFFFF1C30002010F0000000903C9",
                        "$url": "TInterlocuteur('1B28EFFFF1C30002010F0000000903C9')"
                    },
                    "interlocuteursList": [
                        {
                            "$key": "1B28EFFFF1C30002010F0000000903C9",
                            "actif": true,
                            "Caption": "DUCREDIT Denis",
                            "Civilite": {
                                "$key": "1B28EFFFF1C3000200D20000003628AB",
                                "$url": "TCivilite('1B28EFFFF1C3000200D20000003628AB')"
                            },
                            "commentaire": "",
                            "Fonction": {
                                "$key": "1B28EFFFF1C3000200100000003A00F9",
                                "$url": "TFonction('1B28EFFFF1C3000200100000003A00F9')"
                            },
                            "identiteNormalisee": "",
                            "nom": "DUCREDIT",
                            "prenom": "Denis"
                        }
                    ],
                    "Langue": {
                        "$key": "1B28EFFFF1C3000200130000003A024E",
                        "$url": "TLangue('1B28EFFFF1C3000200130000003A024E')"
                    },
                    "SiteCommerciale": {
                        "$key": "1B28EFFFF1C3000200FC00000067006F",
                        "$url": "TSiteCommerciale('1B28EFFFF1C3000200FC00000067006F')"
                    },
                    "TerritorialiteTaxe": {
                        "$key": "1B28EFFFF1C3000200C0000000362816",
                        "$url": "TTerritorialiteTaxe('1B28EFFFF1C3000200C0000000362816')"
                    },
                    "depotPrivilegieEtablissement": false,
                    "gestionBudgetaire": {
                        "value": 0,
                        "title": "Aucune"
                    },
                    "complementLigne": false,
                    "complementPiece": false,
                    "invocableMajDemat": false
                }
            ],
            "SiteSociete": {
                "$key": "1B28EFFFF1C3000200F80000000903BA",
                "$url": "TSite('1B28EFFFF1C3000200F80000000903BA')"
            },
            "socialData": "",
            "Supprimable": false,
            "surveillance": false,
            "typeAcceptation": {
                "value": 0,
                "title": "Accepté"
            },
            "typePersonne": {
                "value": 0,
                "title": "Personne morale"
            },
            "varModeConfirmation": false,
            "estMouvementeCpt": true,
            "invocableMiseAJour": false,
            "CodeImputationFrais": {
                "value": 1,
                "title": "Partagé"
            },
            "modeReglement": {
                "value": 0,
                "title": "Autre"
            }
        }
    ]
}

Requête incluant des attributs liés

Les informations que l'on souhaite retourner sont incluses dans le fournisseur, l'adresse de son site et le compte bancaire de son tiers.

Pour réaliser une requête incluant des attributs liés on utilise le paramètre "select" en indiquant la liste des attributs devant être retourné :

http://localhost:8080/sdata/gentiers/tfournisseur?select=code,tiers.code,tiers.raisonSociale,sitefacturation.adresse.nomRueVoie,tiers.CptBqPrivilegieDec.upperIBAN&count=1
{
    "$baseUrl": "http://localhost:8080/sdata/typedefpackage/",
    "$title": "TFournisseur - -",
    "$updated": "2021-01-27T16:54:34.486Z",
    "$resources": [
        {
            "$url": "TFournisseur('1B28EFFFF1C300020103000000090507')",
            "$title": "1B28EFFFF1C300020103000000090507",
            "$updated": "2010-03-29T13:17:25.000Z",
            "$etag": "1B28EFFFF1C300020103000000090507-000002FF000000A0",
            "$shareId": "1B28EFFFF1C300020002000000420002",
            "$shareInfo": "Dossier",
            "$shareLevel": 0,
            "$key": "1B28EFFFF1C300020103000000090507",
            "stamp": "000002FF000000A0",
            "code": "S1",
            "nomRueVoie": "18 RUE LECOURBE",
            "raisonSociale": "Société S1",
            "upperIBAN": "FR7630002026581326555985432"
        }
    ],
    "$nextUrl": "http://localhost:8080/sdata/typedefpackage/tfournisseur?select=code,tiers.code,tiers.raisonSociale,sitefacturation.adresse.nomRueVoie,tiers.CptBqPrivilegieDec.upperIBAN&count=1&startKey='1B28EFFFF1C300020103000000090507'&keyDirection=gt"
}
Tip-20px.png Tip : Lorsque la clause select contient des attributs liés l'exécution utilise une vue temporaire sur la classe de la ressource.

Attributs liés non définis

Lorsque vous utilisez des attributs liés vous devez vérifier que les références correspondantes sont bien définies.

A défaut les ressources contenant des références vides ne seront retournées.

Pour contourner ce problème, utilisez un spécificateur de référence incluant les références vides.

Par exemple dans notre exemple, le compte bancaire n'est pas obligatoire, pour certain tiers il peut pas être défini :

http://localhost:8080/sdata/gentiers/tfournisseur(1B28EFFFF1C3000201030000000903C1)?select=code,tiers.code,tiers.raisonSociale,sitefacturation.adresse.nomRueVoie,tiers.CptBqPrivilegieDec.upperIBAN&count=1
500: Internal error
The resource doesn't exist.

Si vous remplacez tiers.CptBqPrivilegieDec.upperIBAN par tiers.CptBqPrivilegieDec.+upperIBAN :

http://localhost:8080/sdata/gentiers/tfournisseur(1B28EFFFF1C3000201030000000903C1)?select=code,tiers.code,tiers.raisonSociale,sitefacturation.adresse.nomRueVoie,tiers.CptBqPrivilegieDec.+upperIBAN&count=1
200 : OK
{
    "$baseUrl": "http://localhost:8080/sdata/gentiers/",
    "$title": "TFournisseur - -",
    "$updated": "2021-01-27T17:42:56.615Z",
    "$resources": [
        {
            "$url": "TFournisseur('1B28EFFFF1C3000201030000000903C1')",
            "$title": "1B28EFFFF1C3000201030000000903C1",
            "$updated": "2009-12-23T15:03:15.000Z",
            "$etag": "1B28EFFFF1C3000201030000000903C1-0000023A000004A0",
            "$shareId": "1B28EFFFF1C300020002000000420002",
            "$shareInfo": "Dossier",
            "$shareLevel": 0,
            "$key": "1B28EFFFF1C3000201030000000903C1",
            "$baseUrl": "http://localhost:8080/sdata/GenTiers/-/",
            "stamp": "0000023A000004A0",
            "code": "DUCREDIT",
            "nomRueVoie": "Rue de la Finance",
            "raisonSociale": "DUCREDIT  Sa"
        }
    ]
}
Tip-20px.png Tip : En terme SQL la notation pointée est transcrite en jointures, si la jointure est exacte et que la valeur de la données de jointure est nulle la ligne n'est pas retournée
Outils personnels