Comment lire un champ crypté de la BDD ?

Forum consacré aux développements d'applications interfacées avec les logiciels Sage

Modérateurs: Super Modérateur, Modérateurs

Règles du forum
Merci de prendre connaissance des règles d'utilisation du forum

Avant de poster un nouveau message, utilisez la fonction RECHERCHER. Indiquez la VERSION de votre logiciel et toutes informations utiles à la résolution de votre question. Ne rédigez pas vos messages en MAJUSCULES. Soyez courtois et pensez aux formules de POLITESSE d'usage. Les messages à vocation COMMERCIALE ou PUBLICITAIRE seront supprimés.

*** LORSQU'UN SUJET EST RESOLU, SON AUTEUR DOIT EDITER LE 1ER MESSAGE DU SUJET EN HAUT DE PAGE ET COCHER "SUJET RESOLU" ***

Comment lire un champ crypté de la BDD ?

Messagede Josette92 » Jeu 7 Oct 2010 15:17

Bonjour,

J'utilise SAGE Paie 100 avec une base de données SQL Server, et après avoir fouillé partout sur le net, je n'ai pas trouvé de solution. Je poste donc ici en dernier recours.

Mon objectif est de lister tous les salaires des employés pour les utiliser dans une application PHP. Après du temps de recherche au milieu de toutes les tables de la BDD, je pense que les salaires sont stockés dans la table T_HST_SALAIRE dans le champ "SalaireBase". Seulement, comme bcp d'autres champs, "SalaireBase" est crypté. J'obtiens par exemple ce genre de résultat : 0x000040D871BEB851EB850000

Ma question est donc la suivante : comment je peux obtenir une valeur visible (donc non codée) de ce résultat ? (0x000040D871BEB851EB850000). Ou comment décoder ce champ pour me permettre d'obtenir la liste de tous les salaires ?

Par avance je vous remercie.
Josette92
Posteur néophyte
Posteur néophyte
 
Messages: 9
Inscription: Jeu 7 Oct 2010 14:45

Re: Comment lire un champ crypté de la BDD ?

Messagede OokieDookie » Ven 8 Oct 2010 11:53

Bonjour,

Il faut utiliser la fonction utilisateur dbo.DecryptConstante avec la colonne concernée (ou toute colonne de type de données TConstante)
Le résultat retourné est alphanumérique (dans l'application, l'utilisateur saisit un code constante ou un montant directement).

Attention : Bug d'install sur SQL Server 2005, pas gênant pour le produit, mais empêchant la fonction de retourner correctement les résultats dans des requêtes SQL directes.
Il faut faire pointer manullement la PS étendue xpCstGetDouble de la base master vers la DLL C:\Windows\System32\SageProckStock.dll
SQL 2008 64 bits: ça ne fonctionnera pas (DLL en 32 bits) :?

Concernant les salaires, seuls les historiques renverront une valeur correcte. Il faut pointer sur la table T_CUMSAL en utilisant un filtre sur OpCstCumul = 59 (= constante SALBASE) pour avoir les salaires en cours

Code: Tout sélectionner
SELECT
   S.SA_CompteurNumero, -- Compteur du salariĂ©, lien avec NumSalarie dans toutes les autres tables
   S.Nom,
   S.Prenom,
   H.DateHist,
--   RTRIM(ISNULL(dbo.DecryptConstante(H.SalaireBase), '')) AS SalaireBase, -- T_HST_SALAIRE
--   RTRIM(ISNULL(dbo.DecryptConstante(C.ElementCumul), '')) AS SalaireBaseEnCours, -- En cours
   H.InfoEnCours, -- 1 = En cours => DateHist NULL, 0 = historique => DateHist alimentĂ©e
   CASE H.InfoEnCours
      WHEN 1 THEN RTRIM(ISNULL(dbo.DecryptConstante(C.ElementCumul), ''))
      ELSE RTRIM(ISNULL(dbo.DecryptConstante(H.SalaireBase), ''))
   END AS SalaireBase
FROM
   T_SAL S
INNER JOIN
   T_HST_SALAIRE H
ON
   S.SA_CompteurNumero = H.NumSalarie
INNER JOIN
   T_CUMSAL C
ON
   S.SA_CompteurNumero = C.NumSalarie
AND
   C.OpCstCumul = 59
ORDER BY
   S.MatriculeSalarie,
   H.InfoEnCours DESC,
   H.DateHist DESC


Ce post et celui-ci vous donneront des infos supplémentaires.


HTH,
"L'expérience est le nom que chacun donne à ses erreurs." (O. Wilde)
Qualité et précision de la question conditionnent celles de la réponse. :roll:
:arrow:Nouveau venu ? Une urgence ? A lire...
:arrow:SMS-addict / M(o)ufles OEM ?
Avatar de l’utilisateur
OokieDookie
Modérateur
Modérateur
 
Messages: 1012
Inscription: Jeu 14 Fév 2008 13:50
Localisation: Paris

Re: Comment lire un champ crypté de la BDD ?

Messagede Josette92 » Ven 8 Oct 2010 15:40

Bonjour OokieDookie.

Je te remercie pour ta réponse détaillée.
Je testerai ta solution en début de semaine prochaine et je vous tiendrai informé de mon avancée.

Bon après-midi.
Josette92
Posteur néophyte
Posteur néophyte
 
Messages: 9
Inscription: Jeu 7 Oct 2010 14:45

Re: Comment lire un champ crypté de la BDD ?

Messagede Josette92 » Jeu 21 Oct 2010 17:36

Bonjour,

Avant de tester votre requĂŞte OokieDookie, j'ai simplement voulu tester la fonction "DecryptConstante" en tapant ceci sous SQL Server : Select dbo.DecryptConstante(0x000040D871BEB851EB850000)

Seulement j'ai un message d'erreur me disant que la fonction XP_CstGetDouble est manquante. Après quelques recherches, j'ai vu que normalement elle était dans dans les procédures stockées étendues de la base de données master. Mais elle ne s'y trouve pas. Comment se fait-il ? Que dois-je faire pour avoir la fonction XP_CstGetDouble sur SQL Server, et ainsi réussir à exécuter DecryptConstante ?

Merci pour votre aide,
Bonne fin de journée.
Josette92
Posteur néophyte
Posteur néophyte
 
Messages: 9
Inscription: Jeu 7 Oct 2010 14:45

Re: Comment lire un champ crypté de la BDD ?

Messagede OokieDookie » Ven 22 Oct 2010 10:07

Bonjour,

Il faut installer les composants SQL Server de la paie sur l'instance concernée à partir du DVD d'installation.

HTH,
"L'expérience est le nom que chacun donne à ses erreurs." (O. Wilde)
Qualité et précision de la question conditionnent celles de la réponse. :roll:
:arrow:Nouveau venu ? Une urgence ? A lire...
:arrow:SMS-addict / M(o)ufles OEM ?
Avatar de l’utilisateur
OokieDookie
Modérateur
Modérateur
 
Messages: 1012
Inscription: Jeu 14 Fév 2008 13:50
Localisation: Paris

Re: Comment lire un champ crypté de la BDD ?

Messagede Josette92 » Ven 22 Oct 2010 12:21

Bonjour,

Merci OokieDookie, la fonction est bien insérée. Le composant était pourtant déjà installé à la base, mais le fait de l'avoir réinstallé l'a ajoutée.

Par contre, maintenant si je lance votre requête ajoutée lors de votre 1er message ici, ou ma simple requête test (Select dbo.DecryptConstante(0x000040D871BEB851EB850000)) il me souligne dbo.DecryptConstante et j'ai le message d'erreur suivant lorsque je lance les requêtes :

Msg 4121, Niveau 16, État 1, Ligne 1
Impossible de trouver la colonne "dbo" la fonction définie par l'utilisateur ou l'agrégat "dbo.DecryptConstante". Le nom pourrait également être ambigu.

Que dois-je faire pour résoudre ce nouveau problème ?

En tout cas merci pour vos réponses rapides.

Bonne journée.
Josette92
Posteur néophyte
Posteur néophyte
 
Messages: 9
Inscription: Jeu 7 Oct 2010 14:45

Re: Comment lire un champ crypté de la BDD ?

Messagede OokieDookie » Ven 22 Oct 2010 13:39

Re,

Il faut se mettre sur une BDD Sage Paie, ou appeller la constante avec le préfixe de la base concernée.

SELECT SagePaieSQL.dbo.DecryptConstante(0x000040D871BEB851EB850000)

HTH,
"L'expérience est le nom que chacun donne à ses erreurs." (O. Wilde)
Qualité et précision de la question conditionnent celles de la réponse. :roll:
:arrow:Nouveau venu ? Une urgence ? A lire...
:arrow:SMS-addict / M(o)ufles OEM ?
Avatar de l’utilisateur
OokieDookie
Modérateur
Modérateur
 
Messages: 1012
Inscription: Jeu 14 Fév 2008 13:50
Localisation: Paris

Re: Comment lire un champ crypté de la BDD ?

Messagede Josette92 » Ven 22 Oct 2010 14:32

Re-bonjour,

Un coup les requêtes fonctionnent, un coup non, c'est un peu étrange, toutefois ça fonctionne parfaitement. Merci de votre aide pour la résolution de ce problème.

Pour finir, votre requête renvoie des salaires que je n'arrive pas à retrouver si je regarde une fiche de paie extraite du livret de paie de Sage. Comment puis-je récupérer la vraie valeur net réelle retournée par Sage qui se trouve affichée sur toutes les fiches de paie ?

Cordialement.
Josette92
Posteur néophyte
Posteur néophyte
 
Messages: 9
Inscription: Jeu 7 Oct 2010 14:45

Re: Comment lire un champ crypté de la BDD ?

Messagede Josette92 » Ven 22 Oct 2010 14:41

Rectification le salaire de base est marqué en valeur mensuelle. Mais au final c'est la valeur net que j'aimerais récupérer.

Donc est-il possible d'avoir le net directement ?
Sinon comment avoir le total brut ainsi que le total cotisation (+les remboursements éventuels etc) ? Auquel cas il restera juste à faire une opération de soustraction et d'addition.

Cordialement.
Josette92
Posteur néophyte
Posteur néophyte
 
Messages: 9
Inscription: Jeu 7 Oct 2010 14:45

Re: Comment lire un champ crypté de la BDD ?

Messagede OokieDookie » Mar 26 Oct 2010 12:25

Bonjour,

Dans un des liens que je vous ai donné vous avez une requête qui permet d'obtenir la liste des cumuls que vous pouvez appeler.

Utilisez la valeur de l'entité pour filtrer une requête sur :
T_CUMSAL (colonne OpCstCumul) pour les cumuls IMTA (donc ValeurIntermediaire avant clôture, ValeurMensuelle après)
T_HCUM (colonne Entite) pour les historiques mois par mois

Pour le net, vous devez donc utiliser 4 (NETIMPO) ou 3 (NETPAIE)

HTH,
"L'expérience est le nom que chacun donne à ses erreurs." (O. Wilde)
Qualité et précision de la question conditionnent celles de la réponse. :roll:
:arrow:Nouveau venu ? Une urgence ? A lire...
:arrow:SMS-addict / M(o)ufles OEM ?
Avatar de l’utilisateur
OokieDookie
Modérateur
Modérateur
 
Messages: 1012
Inscription: Jeu 14 Fév 2008 13:50
Localisation: Paris

Re: Comment lire un champ crypté de la BDD ?

Messagede Josette92 » Mer 27 Oct 2010 11:20

Bonjour,

Oui j'ai regardé les liens hier dans la matinée justement. Et j'ai fini par trouver dans la base de données les valeurs qui correspondent au bulletin de paie dans la table T_HCUM comme vous venez de le mentionner. Ensuite, il faut effectivement jouer sur le n° de l'entité pour trouver le net.

En tout cas mon problème est entièrement résolu.

Merci beaucoup OokieDookie pour votre temps et vos qualités de réponses.


Cordialement.
Josette92
Posteur néophyte
Posteur néophyte
 
Messages: 9
Inscription: Jeu 7 Oct 2010 14:45

Re: Comment lire un champ crypté de la BDD ?

Messagede OokieDookie » Mer 27 Oct 2010 12:17

Avec plaisir.

SVP éditez votre PREMIER message pour passer le sujet en résolu.

Bonne journée.
"L'expérience est le nom que chacun donne à ses erreurs." (O. Wilde)
Qualité et précision de la question conditionnent celles de la réponse. :roll:
:arrow:Nouveau venu ? Une urgence ? A lire...
:arrow:SMS-addict / M(o)ufles OEM ?
Avatar de l’utilisateur
OokieDookie
Modérateur
Modérateur
 
Messages: 1012
Inscription: Jeu 14 Fév 2008 13:50
Localisation: Paris


Retourner vers Développements ODBC, Objets métiers, SQL

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités