DLG DEVELOPPEMENT LOGICIELS DE GESTION

Cité 1406 Lgts Bat 86 No 2 BOUMERDES 35000  Tél : (01)-81-97-68 / 81-61-30

 

PCPAIE 6/Win

STRUCTURE DES FICHIERS DE LA BASE DE DONNEES

 

*      Ce document est adressé aux informaticiens désirant accéder aux données PCPAIE pour en pouvoir tirer des états spécifiques.

 

 

 

FICHIER VALEURS.DTA

 

Ce fichier contient tous les codes-Intitulés des différentes tables Fonctions, Sections, Banques, etc.   le champs TABLE contient l’indicatif de la table. Le couple TABLE-CODE est une clé unique.

Les noms des tables : Section, unité, etc. sont modifiables « Annexes/Paramètres/intitulés des tables », ainsi , par exemple, la table Section peut devenir service.  Les tables dont les noms sont modifiables sont numérotées de 1 à 9.

 

FIELD_NAME

FIELD_TYPE

FIELD_LEN

FIELD_DEC

COMMENTAIRE

TABLE

C

3

0

CODE VALEURS :

FNC    Fonctions

SEC    sections  (1)

BNQ    banques

MTF    motifs de sortie

CON   contrat

DAS    code CNAS

UNT    unité (2)

AFF    affectation (3)

DIP     diplôme  (4)

CAT   catégorie (5)

EMP   code emploi (6)

AT1    attribution 1 (7)

AT2    attribution 2 (8)

AT3    attribution 3 (9)

CODE

C

30

0

CODE DE L’ELEMENT

LIBELLE

C

30

0

LIBELLE

AUX_NOM

C

14

0

CODE COMPTABLE

COMPTE

C

20

0

N° COMPTE ENTREPRISE( POUR LES CODES BANQUES UNIQUEMENT) 

COMPTE_CCP

C

20

0

N° COMPTE CCP DE LA BANQUE DE L’ENTREPRISE  ( POUR LES CODES BANQUES UNIQUEMENT)

NO_AGENCE

C

15

 

N° AGENCE (POUR LES CODES BANQUES UNIQUEMENT)

 

 

 

 

FICHIER SALARIES : LES RENSEIGNEMENTS D’UN SALARIE SONT ECLATES SUR 3 FICHIERS PERS0.DTA, PERS1.DTA et PERS2.DTA

 

 

FICHIER SALARIEàECRAN   « 3-FIXE »

 

RENSEIGNEMENT

FICHIER

FIELD_NAME

FIELD_TYPE

FIELD_LEN

OBS.

MATRICULE

PERS0

PERS1

PERS2

MATRICULE

C

14

 

NOM

PERS0

NOM

C

20

 

PRENOM

PERS0

PRENOM

C

20

 

ADRESSE

PERS2

ADRESSE

ADRESSE2

C

C

42

42

 

SEXE  M/F

PERS0

SEXE

C

1

 

SIT. FAMILLE M/C/V

PERS0

SIT_FAM

C

1

 

NBRE PERSONNES A CHARGE  

PERS0

NBR_PRS_CH

N

2

 

DATE D’ENTREE

PERS0

DTE_ENTREE

D

8

 

N° SECU. SOCIALE

PERS0

N_SECU_SLE

C

20

 

FONCTION

PERS0

SECT1

C

8

àVALEURS.DTA  

préfixe  FNC

SECTION  (1)

PERS0

STRUCTURE

C

8

àVALEURS.DTA

préfixe  SEC

N° GRILLE

PERS0

NO_GRILLE

C

2

 

CODE GRILLE

PERS0

CODE_GRILL

C

8

+NO_GRILLEàGRILLE.DTA

MODE DE REGLEMENT :

0-Espèce

1-CCP

2-BANQUE

3-CHEQUE

PERS0

COD_REGL

N

1

 

N° COMPTE

PERS0

NO_COMPTE

C

20

 

DOMICILIATION SALARIE

PERS0

ORG_PEMPLY

C

8

àVALEURS.DTA  

préfixe  BNQ

DOMICILIATION ENTREPRISE

PERS0

ORG_PAYEUR

C

8

àVALEURS.DTA  

préfixe  BNQ

DATE DE SORTIE

PERS0

DTE_SORTIE

D

8

 

MOTIF DE SORTIE

PERS0

MOTIF_SORT

C

8

àVALEURS.DTA  

préfixe  MTF

 

 

FICHIER SALARIEàECRAN   « 4-AFFECTATION »

 

RENSEIGNEMENT

FICHIER

FIELD_NAME

FIELD_TYPE

FIELD_LEN

OBS.

CODE CNAS

PERS0

CODE_CAISS

C

8

àVALEURS.DTA  

préfixe  DAS

2-UNITE  (2)

PERS0

UNITE

C

8

àVALEURS.DTA  

préfixe  UNT

3-AFFECTATION (3)

PERS0

AFFECTATIO

C

8

àVALEURS.DTA  

préfixe  AFF

4-DIPLOME (4)

PERS0

DIPLOME

C

8

àVALEURS.DTA  

préfixe  DIP

5-CATEGORIE (5)

PERS0

CATEG_SP

C

8

àVALEURS.DTA  

préfixe  CAT

TYPE CONTRAT

PERS0

CONTRAT

C

8

 

CONTRAT DATE DEBUT

PERS0

DTE_CONT_D

D

8

 

CONTRAT DATE FIN

PERS0

DTE_CONT_F

D

8

 

Congé acquis sur période

Antérieure dont les paies

Ne figurent pas sur écran

« 1-Paies »

- Jours

-Brut cotisable

-Brut non cotisable

 

 

 

 

PERS1

PERS1

PERS1

 

 

 

 

CONGE_AD_J

CONGE_AD_C

CONGE_AD_I

 

 

 

 

N

N

N

 

 

 

 

6.2

12.2

12.2

 

 

 

 

 

 

 

Mode de calcul de l’IRG

0-IRG NORMAL

1-IRG SUD ABAT. 25%

2-IRG SUD ABAT. 50%

3-Exonéré IRG

PERS0

CODE_IRG

N

1

 

Nombre de jours ouvrables

PERS1

NBR_JR_OUV

N

2

 

Nombre d’heures ouvrables

PERS1

NBR_HR_OUV

N

2

 

N° Mutuelle

PERS0

NO_MUTUEL

C

20

 

 

 

FICHIER SALARIEàECRAN   « 5-MEMO »

 

RENSEIGNEMENT

FICHIER

FIELD_NAME

FIELD_TYPE

FIELD_LEN

FIELD_DEC

CODE EMPLOI   (6)

PERS0

CLASSE

C

8

àVALEURS.DTA  

préfixe  MTF

ATTRIBUTION 1 (7)

PERS0

ATTRIB1

C

8

àVALEURS.DTA  

préfixe  AT1

ATTRIBUTION 2 (8)

PERS0

ATTRIB2

C

8

àVALEURS.DTA  

préfixe  AT2

ATTRIBUTION 3 (9)

PERS0

ATTRIB3

C

8

àVALEURS.DTA  

préfixe  AT3

 

TABLEAU DES EVENEMENTS : Fichier EVENTS.DTA

FIELD_NAME

FIELD_TYPE

FIELD_LEN

FIELD_DEC

COMMENTAIRE

MATRICULE

C

14

0

MATRICULE SALARIE

DATE

D

8

0

DATE D’EVENEMENT

LIBELLE

C

40

0

LIBELLE EVENEMENT

 

 

FICHIER SALARIEàECRAN   «6-CIVIL »

 

RENSEIGNEMENT

FICHIER

FIELD_NAME

FIELD_TYPE

FIELD_LEN

FIELD_DEC

DATE NAISSANCE

PERS0

NAISS_DATE

C

10

 

LIEU DE NAISSANCE

PERS2

NAISS_LIEU

C

40

 

FILIATION

PERS2

FILIATION

C

42

 

NOM CONJOINT

PERS2

CONJ_NOM

C

15

 

DATE MARIAGE

PERS2

CONJ_DATEM

D

8

 

CONJOINT TRAVAIL Oui/Non

PERS0

CONJ_TRAV

C

1

 

 

 

TABLEAU DES   ENFANTS : Fichier ENFANTS.DTA

FIELD_NAME

FIELD_TYPE

FIELD_LEN

FIELD_DEC

COMMENTAIRE

MATRICULE

C

14

0

MATRICULE SALARIE

PRENOM

C

20

0

PRENOM

DATE_NAISS

D

8

0

DATE DE NAISSANCE

SCOLARISE

C

40

0

SCOLARISE OUI/NON

 

RENSEIGNEMENT

FICHIER

FIELD_NAME

FIELD_TYPE

FIELD_LEN

FIELD_DEC

NBR_ENFANT (Total)

PERS0

NBRE_ENF

N

2

 

NBR_ENF_AF

PERS0

NBR_ENF_AF

N

2

 

NBR_ENF_P10

PERS0

NBR_ENFP10

N

2

 

NBR_ENF_M10

PERS0

NBR_ENFM10

N

2

 

 

 

FICHIER SALARIEàECRAN  2-VALEURS

 

RENSEIGNEMENT

FICHIER

FIELD_NAME

FIELD_TYPE

FIELD_LEN

FIELD_DEC

OBSERVATION (F3)

PERS1

NOTEP

C

60

 

 

 

 

 

 

 

LIGNE 01 CODE RUBRIQUE

PERS1

COD_RUB01

C

3

 

LIGNE 01 VALEUR RUBRIQUE

PERS1

VAL_RUB01

N

16

5

….

 

 

LIGNE nn CODE RUBRIQUE

PERS1

COD_RUBnn

C

3

 

LIGNE nn VALEUR RUBRIQUE

PERS1

VAL_RUBnn

N

16

5

...

....

 

 

LIGNE 54 CODE RUBRIQUE

PERS1

COD_RUB54

C

3

 

LIGNE 54 VALEUR RUBRIQUE

PERS1

VAL_RUB54

N

16

5

 

 

 

 

 

 

NOTE EN BAS (F7)

PERS1

PRET_OBS1

C

54

 

 

 

FICHIER PRETS.DTA

 

ECRAN 2-VALEURS accessible par la touche F2.

FIELD_NAME

FIELD_TYPE

FIELD_LEN

FIELD_DEC

OBSERVATION

MATRICULE

C

14

 

MATRICULE DU SALARIE

MOIS

C

8

 

MOIS  06-2000 (Pour les remboursements)

CODE_RUB

N

3

 

CODE RUBRIQUE DE REMBOURSEMENT

DATE

D

8

 

DATE DE PRET/REMBOURSEMENT

LIBELLE

C

30

 

LIBELLE DE PRET

MONTANT

N

10

2

MONTANT DE PRET/REMBOURSEMENT

SENS

C

1

 

P=prêt/ R=remboursement

NO_PRET

N

1

 

N° PRET 1..9

 

 

 

FICHIER PAIES.DTA

 

FIELD_NAME

FIELD_TYPE

FIELD_LEN

FIELD_DEC

OBSERVATION

MATRICULE

C

14

 

MATRICULE DU SALARIE

MOIS

C

8

 

MOIS  06-2000

C_DATE

D

8

 

DATE DE CALCUL DE LA PAIE(DATE  SYSTEME)

C_TIME

C

5

 

HEURE DE CALCUL (HEURE SYSTEME)

MONTANTS

MEMO

 

 

Codes et Montants des rubriques dans le champs mémo. (Voir ci-dessous)

CANRESTORE

L

1

 

Lors de calcul normal d’une paie, la plupart des données variables sont sauvegardées et elles peuvent être restaurées ultérieurement. Si Faux, les données ne peuvent pas être  réstaurées

 

DONNEES SAUVEGARDEES AUTOMATIQUEMENT (A PARTIR DES FICHIERS PERS0.DTA, PERS1.DTA et PERS2.DTA) AU MOMENT DE CALCUL DE LA PAIE:

Si CANRESTORE=Faux les champs suivants ne sont pas utiles.

 

 

 

FIELD_NAME

FIELD_TYPE

FIELD_LEN

NO_PROFIL

N

1

CONGE

L

1

SIT_FAM

C

1

NBRE_ENF

N

2

NBR_ENF_AF

N

2

NBR_ENFP10

N

2

NBR_ENFM10

N

2

NBR_PRS_CH

N

2

CONJ_TRAV

C

1

CODE_IRG

N

1

NBR_JR_OUV

N

5.2

NBR_HR_OUV

N

6.2

NO_GRILLE

C

2

CODE_GRILLE

C

8

ORG_PAYEUR

C

8

ORG_PEMPLY

C

8

SECT1

C

8

CODE_CAISS

C

8

CLASSE

C

8

STRUCTURE

C

8

UNITE

C

8

AFFECTATIO

C

8

CONTRAT

C

8

ATTRIB1

C

8

ATTRIB2

C

8

ATTRIB3

C

8

 

 

STRUCTURE DU CHAMPS MONTANTS.

 

 

 

 

 

Procédure de lecture du champs montants dans un tableau sous clipper :

 

 

Uses Paies.Dta  Index Paie.Tri      // ouvrir le fichier

Seek ‘…………..24502-2000’        //se positionner sur la paie 02-2000 du salarié N° 245

Public TAB_VALEURS[800]

LirePaieMontants ()   // Toutes les valeurs sont lues dans le tableau TAB_VALEURS

                                    //La valeur de la rubrique R500 est dans TAB_VALEURS[500]

 

 

 

Procedure LirePaieMontants()

Local MemoLen, PosCR, MemoStr, I, Rud_Code, Rub_Val

Afill(TAB_VALEURS,0)

** éliminer la première ligne et mémoriser le résultat dans MemoStr.

MemoLen= len(paies->MONTANTS)

PosCR  = At( chr(13)+chr(10),paies->MONTANTS)

MemoStr = right(paies->MONTANTS , MemoLen - PosCR + 1)

** décoder MemoStr

for i:=1 to Mlcount(MemoStr,20,4,.f.)

    MemoLine := alltrim(memoline(MemoStr , 20 , i , 4 , .f. ))

    Rub_Code:=Val(left(MemoLine,3))

    Rub_Val := val(right( MemoLine , Len(MemoLine)-3 ))

    TAB_VALEURS[RUB_CODE]:= RUB_VAL

next

return                  // fin de procedure LirePaieCourante()

 

 

 

Procédure d’écriture du champs montants depuis un tableau sous clipper :

 

TAB_VALEURS[800]   // Tableau des valeurs des rubriques.

Replace PAIES->MONTANTS with MemoPaieMontants()

 

 

function MemoPaieMontants()

Local MemoVal, I

MemoVal:=chr(13)+chr(10)   // première ligne vide

For i:=1 to 800

 If Abs(TAB_VALEURS[I])>0

        MemoVal:=MemoVal+Strzero(i,3)+Alltrim(Str(TAB_VALEURS[I]))+chr(13)+chr(10)

 Endif

Next

Return MemoVal

 

 

Procédure de lecture du champs montants dans un tableau sous delphi

 

Un projet, sous delphi, permet à titre d’exemple d’utiliser l’unité  PCPAIE_procs.Pas.  Vous pouvez le télécharger Ici.

 

unit PCPAIE_procs;

 

interface

 

(************************************************************************************)

(*******UNITE DEVELOPPEE PAR DLG-BOUMERDES LE 18/01/2009*****************************)

(*******LIRE LES MONTANTS D'UNE PAIES DANS UN TABLEAU *******************************)

(*******CHAMPS MEMO MONTANTS DE LA TABLE PAIES.DTA EN FORMAT XBASE*******************)

(*******TESTEE SOUS DELPHI 6 ADAPTABLE FACILEMENT AUX AUTRES VERSIONS DE DELPHI******)

(************************************************************************************)

 

uses  SysUtils, Classes;

Const

  MaxRubriques=899;

 

Type

 TTAB_VALEURS= array [1..MaxRubriques] of Extended;

var

  TAB_VAL_RUB:TTAB_VALEURS;    // TAB_VAL_RUB[xxx] contient la valeur de la rubrique Rxxx

 

 

procedure Memo_Montants_Decoder(MemoMontants:string); // Décoder les valeurs d'une paie dans TAB_VAL_RUB

function  Memo_Montants_Coder:string; // Coder les valeurs d'une paie TAB_VAL_RUB dans une chaine Mémo

 

// Structure de MemoMontants:

//Première  Ligne: divers renseignements

//Autres ligne:  chaque ligne contient le code de la rubrique (sur 3 positions) suivi de la valeur de la rubrique.

//Exemple 01412545.225 signifie que la rubrique R014 a comme valeur 12545.225.

 

 

implementation

 

(*********************************************************************************************)

 

procedure Decoder_Ligne(cMontant:string);

var iLenMontant, nCodeRub:integer;

    CurMontant:Extended;

begin

  iLenMontant:=Length(cMontant);

  if iLenMontant<4 then Exit;

  nCodeRub:=StrToInt(Copy(cMontant,1,3));

  CurMontant:=StrToCurr(Copy(cMontant,4,iLenMontant-3));

  if (nCodeRub=0) or (Abs(CurMontant)<0.009) then Exit;

  TAB_VAL_RUB[nCodeRub]:=CurMontant;

end;

 

(*********************************************************************************************)

 

var OldDecimalSeparator, OldThousandSeparator:Char;

procedure Save_And_Set_Point_Decimal_Separateur;

begin

  OldDecimalSeparator:=DecimalSeparator;    // sauvegarder les valeurs actuelles

  OldThousandSeparator:=ThousandSeparator;

 

  // La fonction de conversion StrToCurr doit utiliser le . comme sépareur décimale

  DecimalSeparator:='.';

  ThousandSeparator:=' ';

 

end;

 

procedure Restore_Old_Separateurs;

begin

  DecimalSeparator:=OldDecimalSeparator;   //  restaurer les valeurs sauvegardeés

  ThousandSeparator:=OldThousandSeparator;

end;

(*********************************************************************************************)

 

procedure Memo_Montants_Decoder(MemoMontants:string);

var ListMontants:TStringList;

    iLengthStr,i:integer;

begin

 

  FillChar(TAB_VAL_RUB   ,Sizeof(TAB_VAL_RUB), 0); // Remise à zéro

 

   // Supprimer la première ligne de MemoMontants de cette manière

  iLengthStr:=Length(MemoMontants);

  i:=1;

  while (i<=iLengthStr) and Not (MemoMontants[i] in [#13]) do Inc(i);

  while (i<=iLengthStr) and (MemoMontants[i] in [#13,#10,#26]) do Inc(i);

  if (i<=iLengthStr) then MemoMontants:=Copy(MemoMontants,i,iLengthStr-i)

  else Exit;

 

  Save_And_Set_Point_Decimal_Separateur;

 

  ListMontants:=TStringList.Create;

  ListMontants.Text:=MemoMontants;    // MemoMontants sera traitée comme tableau de lignes ListMontants[0..n]

  for i:=0 to ListMontants.Count-1 do Decoder_Ligne(ListMontants[i]);

  ListMontants.Free;

 

  Restore_Old_Separateurs;

 

end;

 

 

(*********************************************************************************************)

 

function  Memo_Montants_Coder:string; // Coder les valeurs d'une paie TAB_VAL_RUB dans une chaine Mémo

var i:integer;  cStr:string;

 

    function Str_i_3pos:string;

    begin   // 1-->'001'   25-->'025' 200->'200'

       if i<10 then  Result:='00'+IntToStr(i)

       else if i<100 then  Result:='0'+IntToStr(i)

       else Result:=IntToStr(i);

    end;

begin

   Save_And_Set_Point_Decimal_Separateur;

 

   Result:=#13#10;   // première ligne vide

   For i:=1 to MaxRubriques do if Abs(TAB_VAL_RUB[i])>0.009 then

       Result:=Result+Str_i_3pos+FormatFloat('###0.0000',TAB_VAL_RUB[i])+#13#10;

 

   Restore_Old_Separateurs

 

end;

 

end.