playground:manuel

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
playground:manuel [2011/12/28 16:39] danyplayground:manuel [2018/08/05 15:15] (Version actuelle) melopie
Ligne 1: Ligne 1:
- 
- 
- 
- 
-PhpCompta 
- 
-//**version 5.6**// 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
-Ce programme vous est donné sous licence GNU GPL, il n'est accompagné d'aucune garantie, vous l'utilisez à vos risques et périls.false 
----- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
-**Table des matières** 
- 
-[[#__RefHeading__3837_369900646|Préface]] 3 
- 
-[[#__RefHeading__3186_1659357091|Introduction]] 4 
- 
-[[#__RefHeading__3188_1659357091|Installation]] 5 
- 
-[[#__RefHeading__5024_884180951| 1.Sur une plateforme libre (Linux...)]] 6 
- 
-[[#__RefHeading__3192_1659357091| 2.windows]] 6 
- 
-[[#__RefHeading__5616_369900646|La Comptabilité, la gestion]] 7 
- 
-[[#__RefHeading__3196_1659357091| 1.Définition des termes]] 8 
- 
-[[#__RefHeading__3198_1659357091| 2.Logiciel de comptabilité ou de gestion ?]] 8 
- 
-[[#__RefHeading__3202_1659357091| 3.Mémento de comptabilité]] 9 
- 
-[[#__RefHeading__5618_369900646|Dossier et utilisateurs]] 16 
- 
-[[#__RefHeading__3232_1659357091| 1.Création de dossier]] 17 
- 
-[[#__RefHeading__3234_1659357091| 2.Création de modèle]] 17 
- 
-[[#__RefHeading__3236_1659357091| 3.Création d'utilisateur]] 17 
- 
-[[#__RefHeading__3238_1659357091| 4.Backup]] 17 
- 
-[[#__RefHeading__3240_1659357091| 5.Restaure]] 17 
- 
-[[#__RefHeading__3841_369900646| 6.Sécurité]] 18 
- 
-[[#__RefHeading__3843_369900646|Tenir sa comptabilité avec PhpCompta]] 19 
- 
-[[#__RefHeading__3242_1659357091| 1.Principe de base]] 20 
- 
-[[#__RefHeading__4629_369900646| 2.Paramètrage des dossiers]] 23 
- 
-[[#__RefHeading__3266_1659357091| 3.Journaux]] 28 
- 
-[[#__RefHeading__3268_1659357091| 4.Schéma d'écriture]] 30 
- 
-[[#__RefHeading__33633829| 5.Les rapports]] 33 
- 
-[[#__RefHeading__3260_1659357091| 6.Gestion de stock]] 34 
- 
-[[#__RefHeading__3270_1659357091| 7.Recherche & historique]] 36 
- 
-[[#__RefHeading__3274_1659357091| 8.Rapprochement - réconciliation]] 36 
- 
-[[#__RefHeading__3276_1659357091| 9.Le Lettrage]] 37 
- 
-[[#__RefHeading__34602514| 10.Impression]] 37 
- 
-[[#__RefHeading__3278_1659357091| 11.Avancé]] 39 
- 
-[[#__RefHeading__3280_1659357091| 12.Le module de gestion]] 40 
- 
-[[#__RefHeading__3292_1659357091| 13.Le module de comptabilité analytique]] 41 
- 
-[[#__RefHeading__3322_1659357091|Développement de PhpCompta]] 44 
- 
-[[#__RefHeading__3956_936665047| 1.Adaptation de PhpCompta]] 45 
- 
-[[#__RefHeading__3958_936665047| 2.Développement de PhpCompta]] 46 
- 
-[[#__RefHeading__3328_1659357091| 3.Les extensions]] 51 
- 
-[[#__RefHeading__3330_1659357091| 4.Lien]] 57 
- 
-[[#__RefHeading__3318_1659357091|Annexe ]] 58 
- 
-[[#__RefHeading__4631_369900646| 1.Trucs et astuces]] 59 
- 
-[[#__RefHeading__3332_1659357091| 2.Note de version]] 59 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
 //**Préface**// //**Préface**//
  
Ligne 261: Ligne 97:
  
 =====Logiciel de comptabilité ou de gestion ?===== =====Logiciel de comptabilité ou de gestion ?=====
- 
- 
- 
-====Définition==== 
 La comptabilité consiste, de la manière prévue par les lois sur la comptabilité, à enregistrer toutes les opérations d'une activité commerciale, industrielle ou artisanale. La comptabilité consiste, de la manière prévue par les lois sur la comptabilité, à enregistrer toutes les opérations d'une activité commerciale, industrielle ou artisanale.
  
Ligne 289: Ligne 121:
  
  
-Cependant, sur le site de PhpCompta vous trouverez des liens qui devraient vous aider à commencer cette matière.+Cependant, sur le wiki du  site de PhpCompta vous trouverez des liens qui devraient vous aider à commencer cette matière.
  
  
Ligne 414: Ligne 246:
  
  
-====Belgique Fiscalité, TVA====+=====Belgique Fiscalité, TVA=====
 Toutes les requalifications des montants doivent se faire par le journal des opérations diverses Toutes les requalifications des montants doivent se faire par le journal des opérations diverses
  
Ligne 449: Ligne 281:
  
  
 +
 +==Avance TVA==
 Écriture : Écriture :
  
  
  
-4117 Acompte TVA +|Débit|à|Crédit||| 
- +|4117|Acompte TVA|||| 
- à 5500 Banque +|||à|5500|Banque|
  
  
  
  
 +==Déclaration TVA==
 A la fin du trimestre, il faut regrouper tous les comptes TVA. Si vous devez payer la TVA : A la fin du trimestre, il faut regrouper tous les comptes TVA. Si vous devez payer la TVA :
  
Ligne 469: Ligne 303:
  
  
-451x TVA à payer +|Débit||Crédit||| 
- +|451x|TVA à payer|||| 
- à 411x TVA à récupérer +|||à|411x|TVA à récupérer| 
- +||||4117|Acompte sur TVA| 
- 4117 Acompte sur TVA +||||4519|Compte TVA|
- +
- 4519 Compte TVA+
  
  
Ligne 489: Ligne 321:
  
  
-451x TVA à payer+|Débit|Crédit||| 
 +|451x|TVA à payer||| 
 +|4119|Compte TVA||| 
 +|||411x|TVA à récupérer| 
 +|||4117|Acompte sur TVA|
  
-4119 Compte TVA 
- 
- à 411x TVA à récupérer 
- 
- 4117 Acompte sur TVA 
  
  
Ligne 501: Ligne 332:
  
  
 +==Réception Récapitulatif de la TVA==
 Quand vous recevrez la déclaration constatant votre créance : Quand vous recevrez la déclaration constatant votre créance :
  
Ligne 509: Ligne 341:
  
  
-4118 TVA à rembourser par l'administration+|Débit||Crédit||| 
 +|4118|TVA à rembourser par l'administration|||| 
 +|||à|4119|Compte TVA|
  
- à 4119Compte TVA 
  
  
  
-Ensuite, utilisez le compte 4519 ou 4118 avec un compte en banque quand vous recevrez ou paierez la TVA.+==Paiement TVA== 
 +Ensuite, utilisez le compte 4519 quand vous paierez  ou 4118 quand  vous paierez avec un compte en banque.
  
  
  
 L'extension TVA permet de générer cette écriture. L'extension TVA permet de générer cette écriture.
 +----
  
 ===Déclaration Assujetti TVA=== ===Déclaration Assujetti TVA===
Ligne 732: Ligne 566:
  
  
- Évidemment, les postes comptables peuvent un peu changer suivant la façon dont vous avez adapté votre plan comptable. Faites tout de même attention à ne pas mélanger ce que vous avez acheté il y a deux ans et l'année passée. Normalement, chaque élément faisant l'objet d'un amortissement doit avoir un plan d'amortissement, c'est-à-dire un document qui décrit ce qui est amorti, indique la valeur d'acquisition et quelle somme sera amortie sur quelle année. Le document est de format libre, le mieux est d'utiliser une feuille du tableur d'OpenOffice.org pour résumer tout ce qui doit être amorti. Ce document est appelé tableau d'amortissement. +Les amortissements et le matériel à amortir sont basés sur le poste 24 en Belgique 
 +---- 
 +Évidemment, les postes comptables peuvent un peu changer suivant la façon dont vous avez adapté votre plan comptable. Faites tout de même attention à ne pas mélanger ce que vous avez acheté il y a deux ans et l'année passée. Normalement, chaque élément faisant l'objet d'un amortissement doit avoir un plan d'amortissement, c'est-à-dire un document qui décrit ce qui est amorti, indique la valeur d'acquisition et quelle somme sera amortie sur quelle année. Le document est de format libre, le mieux est d'utiliser une feuille du tableur d'OpenOffice.org pour résumer tout ce qui doit être amorti. Ce document est appelé tableau d'amortissement. 
  
  les montants des amortissement sont hors TVA   les montants des amortissement sont hors TVA 
Ligne 802: Ligne 638:
  
  
-BANQUE Poste comptable de base pour les banques 550 \\  CAISSE Poste comptable pour la caisse 57 \\  COMPTE_COURANT Poste comptable pour le compte courant 56 \\  COMPTE_TVA TVA à payer 451 \\  CUSTOMER Poste comptable de base pour les clients 400 \\  DEP_PRIV Depense a charge du gerant 4890 \\  DNA Dépense non déductible 6740 \\  SUPPLIER Poste par défaut pour les fournisseurs 440 \\  TVA_DED_IMPOT Tva déductible par l'impôt 619000 \\  TVA_DNA Tva non déductible s 6740 \\  VENTE Poste comptable de base pour les ventes 70 \\  VIREMENT_INTERNE Poste Comptable pour les virements internes 58+|BANQUE |Poste comptable de base pour les banques|550
 +|CAISSE|Poste comptable pour la caisse|57
 +|COMPTE_COURANT|Poste comptable pour le compte courant|56
 +|COMPTE_TVA|TVA à payer|451
 +|CUSTOMER|Poste comptable de base pour les clients|400
 +|DEP_PRIV|Depense a charge du gerant|4890
 +|DNA|Dépense non déductible|6740
 +|SUPPLIER|Poste par défaut pour les fournisseurs|440
 +|TVA_DED_IMPOT|Tva déductible par l'impôt|619000
 +|TVA_DNA|Tva non déductible|6740
 +|VENTE|Poste comptable de base pour les ventes|70
 +|VIREMENT_INTERNE|Poste Comptable pour les virements internes|58|
  
  
Ligne 864: Ligne 711:
  
 =====Création d'utilisateur===== =====Création d'utilisateur=====
-Quand vous créez un utilisateur, soit vous en faites un administrateur et donc il aura accès à tous. Soit vous spécifier les droits par dossier. Les droits possibles sont Administrateur Local ou Normal, si vous utilisez Administrateur Local, il aura tous les droits sur ce dossier-là. Si vous lui donner Normal alors vous devrez vous connecter sur ce dossier afin de spécifier ce qu'il faire et voir, par défaut, il n'a accès à rien.+Quand vous créez un utilisateur, soit vous en faites un administrateur et donc il aura accès à tous. Soit vous spécifier les droits par dossier. Les droits possibles sont  normal ou rien là. Si vous lui donner Normal alors vous devrez vous connecter sur ce dossier afin de spécifier ce qu'il faire et voir, par défaut, il n'a accès à rien. Il faut en premier lieu lui donner un profile.
  
 Les utilisateurs peuvent être soit : Les utilisateurs peuvent être soit :
Ligne 870: Ligne 717:
 Des administrateurs, ils ont alors tous les droits sur tous les dossiers Des administrateurs, ils ont alors tous les droits sur tous les dossiers
  
-Des administrateurs locaux, ils ont tous les droits sur  les dossiers auxquels ils peuvent accéder+Des utilisateurs normaux, ils ont que les droits qu'on leur a accordé sur les dossiers auxquels ils peuvent accéder avec le profile donné et les privilèges accordés
  
-Des utilisateurs normaux, ils ont que les droits qu'on leur accordé sur les dossiers auxquels ils peuvent accéder+Si un utilisateur normal  n'accès qu'à un seul dossier, lorsqu'il se connecte il arrive directement soit sur leur dossier.
  
-Des utilisateurs plugin, ils ne peuvent accéder qu'aux plugin (=extension) qu'on leur a permis  pour les dossiers auxquels ils ont accès.  
  
 +=====Profil CFGPROFILE=====
 +Accès Direct : CFGPRO
  
 +Un profil est un ensemble d'éléments accessibles à l'utilisateur, les éléments ne se trouvant pas dans ce profile ne sont pas accessibles à l'utilisateur. Ces éléments sont des modules, des menus, des sous-menus, des impressions ou des plugins. 
  
-Si un utilisateur normal ou un utilisateur plugin, n'a accès qu'à un seul dossierlorsqu'ils se connectent ils arrivent directement soit sur leur dossier soit sur leur plugin.+ 
 +=====Menu CFGMENU===== 
 +Accès Direct : CFGMENU 
 + 
 +Les menus sont constitués d'éléments qui peuvent être regroupés en 
 + 
 + 
 +======Menu====== 
 + 
 +======Sous-menus====== 
 + 
 +======extension (ou plugins)====== 
 + 
 +======Droit d'impression (export CSV ou PDF)====== 
 +Des éléments peuvent être ajoutésdéplacés ou enlevés. Ce qui permet de pouvoir complètement configurer PhpCompta en fonction de l'utilisateur.
  
  
Ligne 891: Ligne 754:
 ---- ----
  
-=====Sécurité=====+=====Sécurité  =====
 PhpCompta a sa propre sécurité, cependant si vous voulez vraiment sécuriser votre comptabilité, vous devez prendre en compte qu'il ne suffit pas de sécuriser votre serveur et PhpCompta mais aussi les programmes sur lequel le programme s'appuie. C'est-à-dire Apache, utilisation de https à la place de http, de PostGresql, de l'utilisation des odbc, du chiffrement des backups, de la traque des mots de passe trop faciles à deviner...  PhpCompta a sa propre sécurité, cependant si vous voulez vraiment sécuriser votre comptabilité, vous devez prendre en compte qu'il ne suffit pas de sécuriser votre serveur et PhpCompta mais aussi les programmes sur lequel le programme s'appuie. C'est-à-dire Apache, utilisation de https à la place de http, de PostGresql, de l'utilisation des odbc, du chiffrement des backups, de la traque des mots de passe trop faciles à deviner... 
  
 La liste est longue et c'est l'ensemble des mesures qui déterminera la sécurité de vos données, il suffit d'une seule faiblesse pour que la sécurité soit insuffisante. Le sujet est très vaste, il englobe trop de choses. C'est pourquoi nous ne traiterons que de PhpCompta uniquement. La liste est longue et c'est l'ensemble des mesures qui déterminera la sécurité de vos données, il suffit d'une seule faiblesse pour que la sécurité soit insuffisante. Le sujet est très vaste, il englobe trop de choses. C'est pourquoi nous ne traiterons que de PhpCompta uniquement.
  
 +Accès direct = CFGSEC
  
 Dans PhpCompta, le module de sécurité permet d'établir quel utilisateur peut accéder à quel dossier, ce qu'il peut y faire, les journaux auxquels il peut accéder...  Dans PhpCompta, le module de sécurité permet d'établir quel utilisateur peut accéder à quel dossier, ce qu'il peut y faire, les journaux auxquels il peut accéder... 
Ligne 902: Ligne 765:
 Chaque fois qu'une page est chargée, le mot de passe et le login utilisateur sont vérifiés pour savoir si primo il a accès à ce qu'il a demandé  et secundo si son compte est actif et que le mot de passe fourni est valide. De plus, les historiques, détails et autre sont filtrés en fonction de l'utilisateur. Chaque fois qu'une page est chargée, le mot de passe et le login utilisateur sont vérifiés pour savoir si primo il a accès à ce qu'il a demandé  et secundo si son compte est actif et que le mot de passe fourni est valide. De plus, les historiques, détails et autre sont filtrés en fonction de l'utilisateur.
  
-Ces valeurs sont stockées sur le serveur. Peu de systèmes vérifient aussi souvent les permissions d'un utilisateur. Évidemment, utiliser le cache de l'explorateur pour découvrir ces informations est une perte de temps, utiliser son historique pour accéder à vos données ne fonctionnera pas non plus. +Pour ajouter un utilisateur, vous devez tout d'abord avoir les droits administrateur et créer l'utilisateur. A ce moment-là, il n'a accès à rien du tout. Il faut ensuite se connecter à un dossier sur lequel vous avez des droits administrateur et l'ajouter, par défaut il ne peut rien faire. A vous de spécifier ce à quoi il peut accéder et son droits par défaut (les journaux, son profil et certaines actions). De cette façon, un utilisateur (sauf avec des droits administrateur) ne peut pas accéder aux nouveaux dossiers. Chaque accès doit être donné explicitement.
- +
-Pour ajouter un utilisateur, vous devez tout d'abord avoir les droits administrateur et créer l'utilisateur. A ce moment-là, il n'a accès à rien du tout. Il faut ensuite se connecter à un dossier sur lequel vous avez des droits administrateur et l'ajouter, par défaut il ne peut rien faire. A vous de spécifier ce à quoi il peut accéder et son droits par défaut (les journaux, les extensions, les actions permises). De cette façon, un utilisateur (sauf avec des droits administrateur) ne peut pas accéder aux nouveaux dossiers. Chaque accès doit être donné explicitement.+
  
  
Ligne 978: Ligne 839:
 Le menu Fiche vous permet d'ajouter et de modifier des fiches mais aussi de leur ajouter des attributs; un attribut est par exemple une adresse, une partie non déductible... Une fiche peut avoir deux postes comptables, suivant qu'on l'utilise au débit ou au crédit; par exemple pour des marchandises à vendre. Pour cela, il suffit de mettre dans le poste comptable de la fiche, les deux postes séparés par une virgule. Dans ce cas-là évidemment il n'y aura pas de numérotation automatique. Les fiches peuvent aussi être déplacés d'une catégorie à une autre, dans ce cas-là, attention les attributs n'existant pas dans la catégorie de destination seront ajoutés.  Le menu Fiche vous permet d'ajouter et de modifier des fiches mais aussi de leur ajouter des attributs; un attribut est par exemple une adresse, une partie non déductible... Une fiche peut avoir deux postes comptables, suivant qu'on l'utilise au débit ou au crédit; par exemple pour des marchandises à vendre. Pour cela, il suffit de mettre dans le poste comptable de la fiche, les deux postes séparés par une virgule. Dans ce cas-là évidemment il n'y aura pas de numérotation automatique. Les fiches peuvent aussi être déplacés d'une catégorie à une autre, dans ce cas-là, attention les attributs n'existant pas dans la catégorie de destination seront ajoutés. 
  
 +
 +
 +Si vous activez la numérotation automatique et le dossier accepte des comptes alphanumérique (AD=COMPANY), le poste comptable calculé sera le poste de base plus le nom de la fiche.
 +----
  
 ====Qu'est-ce le quick code==== ====Qu'est-ce le quick code====
Ligne 1006: Ligne 871:
 Achat Marchandises Class base = 603  \\  Achat Service et biens divers Class base = 61 \\  Administration des Finances \\  Autres fiches : fiches que l'on peut totalement paramétrer\\  Banque Class base = 51 \\  Clients Class base = 410 \\  Contact : contact pour un client, une administration  ou un fournisseur \\  Dépenses non admises Class base = 674 \\  Escomptes accordées Class base = 66 \\  Fournisseurs Class base = 400 \\  Matériel à amortir, immobilisation corporelle Class base = 21 \\  Prêt < a un an Prêt > a un an Class base = 27 \\  Produits Financiers Class base = 76 \\  Salaire Administrateur Class base = 644 \\  Salaire Employé Class base = 641 \\  Salaire Ouvrier Class base = 641 \\  Vente Service Class base = 706\\  Compte Administrateur/Employé : fiche utilisée pour les notes de frais Achat Marchandises Class base = 603  \\  Achat Service et biens divers Class base = 61 \\  Administration des Finances \\  Autres fiches : fiches que l'on peut totalement paramétrer\\  Banque Class base = 51 \\  Clients Class base = 410 \\  Contact : contact pour un client, une administration  ou un fournisseur \\  Dépenses non admises Class base = 674 \\  Escomptes accordées Class base = 66 \\  Fournisseurs Class base = 400 \\  Matériel à amortir, immobilisation corporelle Class base = 21 \\  Prêt < a un an Prêt > a un an Class base = 27 \\  Produits Financiers Class base = 76 \\  Salaire Administrateur Class base = 644 \\  Salaire Employé Class base = 641 \\  Salaire Ouvrier Class base = 641 \\  Vente Service Class base = 706\\  Compte Administrateur/Employé : fiche utilisée pour les notes de frais
  
-Cas spécial : la classe de base "Autre" permet de créer des fiches sur mesure, par exemple: liste des employés, d'adhérents...+Cas spécial : la classe de base "Autre" permet de créer des fiches sur mesure, par exemple: liste des employés, d'adhérents...Bien qu'en fait, les adhérents, les gérants peuvent utilisés des fiches clients ou fournisseurs mais avec un autre poste comptable de base.
  
  
Ligne 1017: Ligne 882:
 ---- ----
  
-====Attribut spéciaux:====+====Attribut spéciaux : dépenses non admises, pourcentage professionnel...:====
 Partie fiscalement non déductible  Partie fiscalement non déductible 
  
Ligne 1024: Ligne 889:
  
  
-Contrepartie pour dépense fiscal. non déd. Poste comptable pour les dépenses non déductibles d'une fiche 
  
 +===Contrepartie pour dépense fiscal. non déd.===
 + Poste comptable pour les dépenses non déductibles d'une fiche
  
  
-TVA non déductible même remarque 
  
-Contrepartie pour TVA non Ded. . Poste comptable pour les TVA non déductibles 
  
 +===TVA non déductible même remarque===
 + Contrepartie pour TVA non Ded. . Poste comptable pour les TVA non déductibles.
  
 +Attention le montant est calculé sur le tout et non sur la partie professionnel 
 +----
  
-TVA non déductible récupérable par l'impôt  
  
-Contrepartie pour TVA récup par impot  Poste comptable pour les TVA  non déductible récupérable par l'impôt 
  
 +===TVA non déductible récupérable par l'impôt ===
 + Contrepartie pour TVA récup par impot  Poste comptable pour les TVA  non déductible récupérable par l'impôt
  
  
-Dépense  charge du grant (partie privé)  pourcentage (entre 0 et 1), qui va partager le montant de la fiche entre dépense et dépense privée 
  
-Contrepartie pour dépense à charge du gérant Poste comptable pour les dépenses à charge du grant (partie privé)   
  
 +===Dépense  charge du grant (partie privé)  ===
 + pourcentage (entre 0 et 1), qui va partager le montant de la fiche entre dépense et dépense privée, 
  
  
-Prix de vente : est le prix qui sera utilisé pour complèter une opération dans un journal de recette (vente)+ 
 +**Si une partie de la dépense est à charge du gérant, cela n'affecte pas la TVA qui reste calculée sur la totalité du montant HTVA. Si une partie de la TVA doit aussi être à la charge du gérant, il faut ajouter les attributs TVA Non Déductible avec le même taux et le compte du gérant dans la contrepartie pour TVA non déductible** 
 +---- 
 + 
 +---- 
 + 
 + 
 + 
 +===Contrepartie pour dépense à charge du gérant === 
 + Poste comptable pour les dépenses à charge du grant (partie privé)   
 + 
 + 
 + 
 + 
 +===Prix de vente=== 
 +  le prix qui sera utilisé pour complèter une opération dans un journal de recette (vente) 
  
  
  
-Prix d'achat : est le prix qui utilisé pour complèter une opération dans un journal de dépense (achat)+===Prix d'achat === 
 + le prix qui sera  utilisé pour complèter une opération dans un journal de dépense (achat)
  
  
Ligne 1127: Ligne 1012:
 ===Suggérer le numéro de pièce justificative=== ===Suggérer le numéro de pièce justificative===
 Si sur oui,alors le programme vous suggère le numéro de la pièce lors de l'encodage des recettes, achat, opérations financières ou diverses Si sur oui,alors le programme vous suggère le numéro de la pièce lors de l'encodage des recettes, achat, opérations financières ou diverses
 +
 +
 +===Utilisez des comptes alphanumériques ===
 +Les postes comptables calculés dans les fiches sont soit le poste comptable plus le nom si ici vous indiquez oui, soit un poste comptable numérique.
  
  
 ====Période==== ====Période====
-C'est l'endroit ou les périodes sont créées, ou fermées. Il faut toujours fermer les périodes en particulier après les déclarations TVA, afin d'éviter que les montants déjà déclarés ne correspondent plus, plus personne ne doit pouvoir encoder dans ces périodes-là.  Les périodes peuvent être soit fermées par journal soit pour tout les journaux (= mode globale). Les périodes peuvent être réouvertes soit par journal soit de manière globale.+C'est l'endroit ou les périodes sont créées, ou fermées. Il faut toujours fermer les périodes en particulier après les déclarations TVA, afin d'éviter que les montants déjà déclarés ne correspondent plus, plus personne ne doit pouvoir encoder dans ces périodes-là.  Les périodes peuvent être soit fermées par journal soit pour tout les journaux (= mode global). Les périodes peuvent être réouvertes soit par journal soit de manière globale.
  
  
  
-Il faut veiller si vous modifier les dates de début et de fin d'une période de ne pas  empièter sur une autre période+Il faut veiller si vous modifiez les dates de début et de fin d'une période de ne pas  déborder sur une autre période
 ---- ----
  
Ligne 1336: Ligne 1225:
  
 ======VEN_ART_NAME Nom de l'article====== ======VEN_ART_NAME Nom de l'article======
 +
 +======VEN_ART_LABEL Ce qui est écrit à la place de la description de la fiche dans les journaux de vente ou d'achat ou le nom de l'article si cette description est vide======
  
 ======VEN_ART_PRICE Prix de l'article====== ======VEN_ART_PRICE Prix de l'article======
Ligne 1752: Ligne 1643:
  
  
-Dans le cas, où on encode directement un paiement une seconde écriture est générée et rapprochée à la première, si le client paie par chèque ou par visa, il est préférable d'utiliser un mode de paiement, sinon vous devrez encoder une seconde opération dans un journal d'opération diverses +Dans le cas, où on encode directement un paiement une seconde écriture est générée et rapprochée à la première, si le client paie par chèque ou par visa, il est préférable d'utiliser un mode de paiement, sinon vous devrez encoder une seconde opération dans un journal d'opération diverses.
  
  
  
 +Dans le cas où une partie de l'achat est une dépense privée, vous pouvez soit changer la fiche et ajouter les attributs « dépense privée » et « contrepartie dépense privée » soit tout simplement crée une fiche « Dépense privée ». Lors de l'encodage de la facture, il suffit de décomposer le montant en 2, professionnel et privé, la première partie utilisera une fiche dépense normale, et l'autre partie utilisera la fiche « dépense privée »
 +----
 +
 +----
 |Débit|Crédit| |Débit|Crédit|
 =====Poste comptable de la fiche fournisseur===== =====Poste comptable de la fiche fournisseur=====
Ligne 1870: Ligne 1765:
 ---- ----
  
-=====Les rapports=====+====== Les rapports ======
  
-====Introduction==== 
 Les rapports permettent de rapidement encoder des rapports. Par exemple, le total des ventes, le total encore à payer, la différence entre les entrées et les charges... Il n'y a pas vraiment de limite.   Les rapports permettent de rapidement encoder des rapports. Par exemple, le total des ventes, le total encore à payer, la différence entre les entrées et les charges... Il n'y a pas vraiment de limite.  
  
- +===== Création =====
- +
- +
-====Création====+
 Les rapports permettent d'utiliser des formules (mod,round,*,-) sur des soldes de comptes. Vous pouvez en afficher un dans l'accueil en le paramétrant dans vos préférences. Les rapports permettent d'utiliser des formules (mod,round,*,-) sur des soldes de comptes. Vous pouvez en afficher un dans l'accueil en le paramétrant dans vos préférences.
- 
- 
  
 Très peu, voire aucun rapport, n'est fourni par défaut, vous devez les ajouter vous-même. Pour cela, soit vous regardez dans le répertoire « contrib/rapport » soit vous allez sur le site de PhpCompta.  Très peu, voire aucun rapport, n'est fourni par défaut, vous devez les ajouter vous-même. Pour cela, soit vous regardez dans le répertoire « contrib/rapport » soit vous allez sur le site de PhpCompta. 
  
 +===== Syntaxe =====
 +Quelques règles ...
  
-===Syntaxe=== +==== Dans la colonne formules ====
-Quelques règles :+
  
 +  * Les postes sont toujours écrits entre crochets; exemple : [ 4511]
 +  * Pour avoir la somme du poste et des sous-postes, il faut utiliser le %; exemple [45%]
 +  * Si vous souhaitez commencer à une autre période pour certains comptes sans tenir compte de la période donnée, vous devez utiliser l'option FROM=MM.YYYY (voir exemple). Ce genre d'option est très utile pour par exemple les déclarations de TVA.
 +  * Si vous souhaitez n'avoir que le crédit ou le débit, utilisez le D ou le C avant la fermeture du crochet.
 +  * Pour avoir un montant négatif si le crédit est supérieur au débit, il faut avoir S avant la fermeture du crochet exemple : [7%S] , [55001S]
  
 +=== Drapeau ===
  
- +  * S= Signed : négatif si C > D 
-==Dans la colonne formules== +  D = Uniquement Débit 
- +  C = uniquement Crédit 
- +  Aucun : valeur absolue de la différence entre D&C
- +
-======les postes sont toujours écrits entre crochets;  +
-exemple : [ 4511] ====== +
- +
-======pour avoir la somme du poste et des sous-postes, il faut utiliser le %; +
-exemple [45%]====== +
- +
-======si vous souhaitez commencer à une autre période pour certains comptes sans tenir compte de la période donnée, vous devez utiliser l'option FROM=MM.YYYY (voir exemple). Ce genre d'option est très utile pour par exemple les déclarations de TVA.====== +
- +
-======Si vous souhaitez n'avoir que le crédit ou le débit, utilisez le D ou le C avant la fermeture du crochet.====== +
- +
-======Pour avoir un montant négatif si le crédit est supérieur au débit, il faut avoir S avant la fermeture du crochet exemple : [7%S] , [55001S]====== +
-Drapeau : +
- +
- +
-=====S= Signed : négatif si C > D===== +
- +
-=====D = Uniquement Débit===== +
- +
-=====C = uniquement Crédit===== +
- +
-=====Aucun : valeur absolue de la différence entre D&C=====+
  
  
 Cas particulier : FROM=00.0000 pour indiquer le début de l'exercice comptable dans lequel vous êtes (voir préférence). Utile si vous avez avez plusieurs exercices comptables dans le même dossier.   Cas particulier : FROM=00.0000 pour indiquer le début de l'exercice comptable dans lequel vous êtes (voir préférence). Utile si vous avez avez plusieurs exercices comptables dans le même dossier.  
  
-Exemples de formule:+=== Exemples de formule ===
  
 +  * Résultat d'exploitation brute  round([7%]-[6%])
 +  * Impôt estimé (sans compter les amortissements) ([7%]-[6%])/0.35
 +  * Total des comptes en banque [550%]
 +  * Total TVA récolté depuis janvier 2005 : [4511]FROM=01.2005
 +  * Perte ou profit ([7%]-[6%]>0)?"Bénéfice":"Perte"
  
- +==== Dans la colonne texte ====
-Résultat d'exploitation brute  round([7%]-[6%]) +
- +
-Impôt estimé (sans compter les amortissements) ([7%]-[6%])/0.35 +
- +
-Total des comptes en banque [550%] +
- +
-Total TVA récolté depuis janvier 2005 : [4511]FROM=01.2005 +
- +
-Perte ou profit ([7%]-[6%]>0)?"Bénéfice":"Perte" +
- +
- +
- +
- +
-==Dans la colonne texte==+
 Il s'agit du label devant la formule, normalement ce label n'est pas interprété sauf si il contient soit une valeur numérique entre crochet avec ou sans la lettre T Il s'agit du label devant la formule, normalement ce label n'est pas interprété sauf si il contient soit une valeur numérique entre crochet avec ou sans la lettre T
  
-exemple +=== Exemples === 
  
-[4511]   Sera remplacé par le libellé du poste comptable+  * [4511]   Sera remplacé par le libellé du poste comptable 
 +  * [4511T]     Sera remplacé par le libellé du poste comptable en majuscule 
 +  * [4511t]     Sera remplacé par le libellé du poste comptable en minuscule
  
-[4511T]     Sera remplacé par le libellé du poste comptable en majuscule +=== Utilisation ===
- +
-[4511t]     Sera remplacé par le libellé du poste comptable en minuscule  +
- +
- +
- +
- +
-====Utilisation ====+
 Les rapports peuvent soit servir dans le menu d'accueil, soit pour impression. Dans l'accueil, vous avez les résultats pour l'exercice courant, dans le cas où votre dossier contient plusieurs exercices comptables, l'exercice utilisé sera celui de la période choisie dans préférence. Les rapports peuvent soit servir dans le menu d'accueil, soit pour impression. Dans l'accueil, vous avez les résultats pour l'exercice courant, dans le cas où votre dossier contient plusieurs exercices comptables, l'exercice utilisé sera celui de la période choisie dans préférence.
  
Ligne 1961: Ligne 1821:
  
  
- +===== Gestion de stock =====
-=====Gestion de stock=====+
  
  
Ligne 2239: Ligne 2098:
 Après avoir encodé une opération, vous pouvez la sauver en tant que modèle afin de la réutiliser par la suite pour pouvoir encoder plus rapidement, ce menu-ci vous permet d'effacer les modèles d'opérations dont vous n'avez plus besoin.  Après avoir encodé une opération, vous pouvez la sauver en tant que modèle afin de la réutiliser par la suite pour pouvoir encoder plus rapidement, ce menu-ci vous permet d'effacer les modèles d'opérations dont vous n'avez plus besoin. 
  
- + 
-====Méthode==== +
-Cette opération n'est pas réversible. +
- +
- +
- +
-Tout d'abord, vous devez clôturer les périodes; une période clôturée est une période où il ne sera pas possible d'ajouter ou de modifier quoi que ce soit. +
- +
-D'ailleurs, il vaut toujours mieux clôturer une période avant de faire la déclaration TVA. Cela empêche les erreurs. +
- +
- +
- +
-Ensuite, vous pourrez centraliser. Pour l'instant, la clôture des périodes se fait par : "Paramètre -> période" et la centralisation se fait par le menu "Avancé -> Centralise" +
  
  
 ====Plan Comptable==== ====Plan Comptable====
- Le plan comptable que vous utilisez, vous pouvez toujours ajouter des postes ou enlever ceux qui n'ont jamais été utilisés.+Le plan comptable que vous utilisez, vous pouvez toujours ajouter des postes ou enlever ceux qui n'ont jamais été utilisés.
  
  
Ligne 2551: Ligne 2398:
  
  
 +
 +Sur le wiki, wiki.phpcompta.eu il y a d'autres exemples d'utilisation de la comptabilité analytique.
  
  
Ligne 2736: Ligne 2585:
  
  
-Connaissant PHP depuis 1998, c'est un langage que je pense maîtriser, j'ai  développé dans chaque version depuis la 1.0. Ayant commencé avant l'arrivée des premiers frameworks, j'ai mis au point une méthode de travail, qui en définitive est un framework maison. Pour le javascript, j'ai utilisé prototype.js, malgré que ce framework est excellent, je l'emploie plus comme une librairie de fonctions.+Connaissant PHP depuis 1998, c'est un langage que je pense maîtriser, j'ai  développé dans chaque version de PHP depuis la 1.0. Ayant commencé avant l'arrivée des premiers frameworks, j'ai mis au point une méthode de travail, qui en définitive est devenu un framework maison. Pour le javascript, j'ai utilisé prototype.js, malgré que ce framework est excellent, je l'emploie plus comme une librairie de fonctions.
  
  
Ligne 2742: Ligne 2591:
 Le développement en MVC est un développement qui suit les concepts Modèle Vue Contrôle. Il en existe 2 versions. Ici, je  ne parlerai que de la première. Le développement en MVC est un développement qui suit les concepts Modèle Vue Contrôle. Il en existe 2 versions. Ici, je  ne parlerai que de la première.
  
-En pratique, je crée 3 répertoires de base /html et /include et /template, le premier contient les « contrôles » le second les «vues» et le troisième les « modèles ».+En pratique, je crée 3 répertoires de base /html et /include et /include/template, le premier contient les « contrôles » le second les «vues» et le troisième les « modèles ».
  
  
 ===Contrôle=== ===Contrôle===
 Un contrôle est une page php, qui en fonction de l'action demandé va inclure la page «modèle» qu'il faut. Un contrôle est une page php, qui en fonction de l'action demandé va inclure la page «modèle» qu'il faut.
 +
 +Dans phpcompta, cette page est :
 +
 +do.php pour toutes les demandes de pages
 +
 +export.php pour toutes les impressions (PDF, CSV, …)
 +
 +ajax_misc.php pour l'ajax((Pour l'ajax, il existe plusieurs fichiers, ajax_misc.php est en général utilisé))
  
 Exemple Exemple
Ligne 2752: Ligne 2609:
 la page contrôle contient la page contrôle contient
  
-{{wiki:controle}} 
  
-L'explication est assez simple, si la page n'est pas appelé avec une variable do, donné par un POST ou GET alors, le traitement s'arrête. Sinon en fonction de  la valeur de la variable, il va inclure le fichier « vue ». Par habitude, mes fichiers vues ont toujours l'extension inc.php.+ 
 +<?php 
 + 
 +if ( !isset ($_REQUEST['do'])) exit(); 
 + 
 +$do=$_REQUEST['do']; 
 + 
 +if ( $do == 'auteur' ) { 
 + 
 + require_once('include/auteur.inc.php'); 
 + 
 +
 + 
 +?> 
 + 
 + 
 + 
 +L'explication est assez simple, si la page n'est pas appelé avec une variable do, donné par un POST ou GET alors, le traitement s'arrête. Sinon en fonction de  la valeur de la variable, il va inclure le fichier « vue ». Par habitude, mes fichiers vues ont toujours l'extension .inc.php
 + 
 + 
 + 
 +Dans PhpCompta, le fichier do.php va chercher la vue à intégrer dans la base de données, ce qui améliore la sécurité mais aussi une grande souplesse pour les menus. Facile d'en ajouter, d'en retirer, de les renommer...
  
  
Ligne 2761: Ligne 2638:
 ===Vue=== ===Vue===
 Grâce à l'exemple vu dans Contrôle, vous avez compris ce qu'est le concept vue: c'est la présentation de votre action. Donc pour continuer l'exemple, dans le document include/auteur.inc.php, on aurait Grâce à l'exemple vu dans Contrôle, vous avez compris ce qu'est le concept vue: c'est la présentation de votre action. Donc pour continuer l'exemple, dans le document include/auteur.inc.php, on aurait
 +
 +<?php
 +
 +require_once ('include/class_auteur.php');
 +
 +if ( ! isset($_REQUEST['sdo']) ) exit();
 +
 +
 +
 +$sdo=$_REQUEST['sdo'];
 +
 +
 +
 +if ( $sdo == 'add' ) {
 +
 + $auteur=**new** Auteur();
 +
 + $auteur->display_form();
 +
 +}
 +
 +?>
  
 Ici, comme dans contrôle, on vérifie qu'une action est bien demandée, si  c'est la cas, on appelle un objet et on lui demande d'afficher quelque chose. Cet objet est ce qui est dans le concept MVC, un modèle. En fait, on dirait une espèce de sous-contrôle Ici, comme dans contrôle, on vérifie qu'une action est bien demandée, si  c'est la cas, on appelle un objet et on lui demande d'afficher quelque chose. Cet objet est ce qui est dans le concept MVC, un modèle. En fait, on dirait une espèce de sous-contrôle
Ligne 2776: Ligne 2675:
 Les colonnes de la table sont dans un tableau et déclaré comme variable privée. Ce point est important. Cela oblige à utiliser les setters/getters. Cela vous permet aussi de faire correspondre des noms parlants à des noms de colonnes parfois hmm... moins parlants. Les colonnes de la table sont dans un tableau et déclaré comme variable privée. Ce point est important. Cela oblige à utiliser les setters/getters. Cela vous permet aussi de faire correspondre des noms parlants à des noms de colonnes parfois hmm... moins parlants.
  
-{{wiki:Cadre4}}+Cependant, je préfère souvent utiliser les commandes SQL plutôt que de passer par les objets. D'abord pour des raisons de performance, d'utilisation de la mémoire... La théorie qui veut que l'application doit être indépendante de la base de données n'est pas un mauvais principe mais dans la vie réelle, il est rare que l 'on change le programme de base de données pour un autre.  
 + 
 +**class** Todo_List\\  {\\  \\    **private** static $variable=array(\\  "id"=>"tl_id",\\  "date"=>"tl_date",\\  "title"=>"tl_title",\\  "desc"=>"tl_desc",\\  "owner"=>"use_login");\\    **private** $cn;\\    **private**  $tl_id,$tl_date,$tl_title,$use_login;\\  \\    **function** %%__%%construct ($p_init) {\\      $this->cn=$p_init;\\      $this->tl_id=0;\\      $this->tl_desc="";\\      $this->use_login=$_SESSION['g_user'];\\  \\    } 
 + 
 + 
 + 
  
 Ici voici, des setters / getters génériques, ce qui permet de ne pas en avoir un par variable. Ce qui est bien pratique. On accède aux données avec set_parameter ('date','01.01.2009') ou avec get_parameter ('date'); Ici voici, des setters / getters génériques, ce qui permet de ne pas en avoir un par variable. Ce qui est bien pratique. On accède aux données avec set_parameter ('date','01.01.2009') ou avec get_parameter ('date');
 +
 +
 +
 +**public** **function** get_parameter($p_string) {\\      if ( array_key_exists($p_string,**self**::$variable) ) {\\        $idx=**self**::$variable[$p_string];\\        return $this->$idx;\\      }\\      else \\        exit (**%%__%%FILE%%__%%**.":".**%%__%%LINE%%__%%**.'Erreur attribut inexistant');\\    }
 +
 +  **public** **function** set_parameter($p_string,$p_value) {\\      if ( array_key_exists($p_string,**self**::$variable) ) {\\        $idx=**self**::$variable[$p_string];\\        if ($this->check($idx,$p_value) == **true** )      $this->$idx=$p_value;\\      }\\      else \\        exit (**%%__%%FILE%%__%%**.":".**%%__%%LINE%%__%%**.'Erreur attribut inexistant');\\         \\    }
  
 Ceci est la fonction qui contrôle que les données sont valides. Cela pourrait aussi être fait dans la base de données, soit avec des contrôles d'intégrités (foreign key, primary key) soit avec des procédures SQL embarquées de contrôle. Ceci est la fonction qui contrôle que les données sont valides. Cela pourrait aussi être fait dans la base de données, soit avec des contrôles d'intégrités (foreign key, primary key) soit avec des procédures SQL embarquées de contrôle.
  
-{{wiki:Cadre6}} 
  
-Enfin la fonction save, qui permet soit d'ajouter soit de même à jour. Évidemment on utilisera des requêtes SQL Prepare, afin d'éviter les problèmes de guillemets et donc d'injection SQL{{wiki:Cadre7}}+ 
 +**public** **function** check($p_idx,&$p_value) {\\  if ( strcmp ($p_idx, 'tl_id') == 0 ) { if ( strlen($p_value) > 6 %%|%%| isNumber ($p_value) == **false**) return **false**;}\\  if ( strcmp ($p_idx, 'tl_date') == 0 ) { if ( strlen(trim($p_value)) ==0 %%|%%|strlen($p_value) > 12 %%|%%| isDate ($p_value) == **false**) return **false**;}\\  if ( strcmp ($p_idx, 'tl_title') == 0 ) { \\    $p_value=substr($p_value,0,120) ;\\    return **true**;\\  }\\  if ( strcmp ($p_idx, 'tl_desc') == 0 ) { $p_value=substr($p_value,0,400) ; return **true**;}\\  return **true**;\\    } 
 + 
 +Enfin la fonction save, qui permet soit d'ajouter soit de même à jour. Évidemment on utilisera des requêtes SQL Prepare, afin d'éviter les problèmes de guillemets et donc d'injection SQL
 + 
 + 
 + 
 +**public** **function** save() {\\      if (  $this->get_parameter("id") == 0 ) \\        $this->insert();\\      else\\        $this->update();\\    }\\  \\    **public** **function** insert() {\\      if ( $this->verify() != 0 ) return;\\  \\      $sql="insert into todo_list (tl_date,tl_title,tl_desc,use_login) ".\\        " values (to_date($1,'DD.MM.YYYY'),$2,$3,$4)  returning tl_id";\\      $res=ExecSqlParam($this->cn,\\  $sql,\\  array($this->tl_date,\\         $this->tl_title,\\         $this->tl_desc,\\         $this->use_login)\\  );\\      $this->tl_id=pg_fetch_result($res,0,0);\\      \\    } 
 + 
 +  **public** **function** update() {\\      if ( $this->verify() != 0 ) return;\\  \\      $sql="update todo_list set tl_title=$1,tl_date=to_date($2,'DD.MM.YYYY'),tl_desc=$3 ".\\        " where tl_id = $4";\\      $res=ExecSqlParam($this->cn,\\  $sql,\\  array($this->tl_title,\\         $this->tl_date,\\         $this->tl_desc,\\         $this->tl_id)\\  );\\  \\    }
  
 Comme cette partie est vraiment répétitive et change peu, j'ai mis au point un script (dev/manage-code/create-file/create_phpclass.py) pour directement générer le code sur base de la définition d'une table. Cela réduit vraiment le temps de travail. Comme cette partie est vraiment répétitive et change peu, j'ai mis au point un script (dev/manage-code/create-file/create_phpclass.py) pour directement générer le code sur base de la définition d'une table. Cela réduit vraiment le temps de travail.
Ligne 2790: Ligne 2709:
  
  
 +static **function** test_me() {\\      $cn=DbConnect(dossier::id());\\      $r=**new** Todo_List($cn);\\      $r->set_parameter('title','test');\\      $r->use_login='phpcompta';\\      $r->set_parameter('date','02.03.2008');\\      $r->save();\\      $r->set_parameter('id',3);\\      $r->load();\\      print_r($r);\\      $r->set_parameter('title','Test UPDATE');\\      $r->save();\\      print_r($r);\\      $r->set_parameter('id',1);\\      $r->delete();\\    }\\      **public** **function** get_info() {    
  
 +    return var_export(**self**::$variable,**true**);  
 +
 +}
  
  
Ligne 2807: Ligne 2730:
 ====partie affichage en HTML==== ====partie affichage en HTML====
 Il est vraiment mais vraiment fastidieux de construire une chaîne de caractère contenant tout le code html, surtout quand on emploie aussi du javascript et des tableaux. La solution que j'ai trouvé, je l'ai trouvé en m'inspirant de l'idée de smarty. En fait, je crée un sous-répertoire dans include que j'appelle template, et dedans je met le code HTML de ce qui doit être affiché Il est vraiment mais vraiment fastidieux de construire une chaîne de caractère contenant tout le code html, surtout quand on emploie aussi du javascript et des tableaux. La solution que j'ai trouvé, je l'ai trouvé en m'inspirant de l'idée de smarty. En fait, je crée un sous-répertoire dans include que j'appelle template, et dedans je met le code HTML de ce qui doit être affiché
 +
 +**Function** display_form() {
 +
 +ob_start();
 +
 +include ('template("auteur_display_form.php");
 +
 +$r=ob_get_contents();
 +
 +$ob_clean();
 +
 +return $r;
 +
  
  
 +}
  
 exemple  Ici on inclus le fichier, comme il est en php, il sera interprété par PHP, il contient surtout du code HTML et des balises PHP,  on peut aussi manipuler la chaîne retournée avec les fonctions de chaînes comme str_replace, strcmp,... Ce qui donne à cette méthode encore plus de souplesse. exemple  Ici on inclus le fichier, comme il est en php, il sera interprété par PHP, il contient surtout du code HTML et des balises PHP,  on peut aussi manipuler la chaîne retournée avec les fonctions de chaînes comme str_replace, strcmp,... Ce qui donne à cette méthode encore plus de souplesse.
Ligne 2862: Ligne 2799:
  
 ====Installation de l'extension==== ====Installation de l'extension====
-\\  Les extensions se trouvent toujours le sous-répertoire PhpCompta/include/ext, pour notre plugin que nous appellerons DUMMY, le répertoire correspondant sera /PhpCompta/include/ext/dummy. La première étape est donc de signaler à PhpCompta l'existence de cette extension. Pour cela, il faut ,dans PhpCompta, aller dans paramètre -> extensions ->ajout.\\  +\\  Les extensions se trouvent toujours le sous-répertoire PhpCompta/include/ext, pour notre plugin que nous appellerons DUMMY, le répertoire correspondant sera /PhpCompta/include/ext/dummy. La première étape est donc de signaler à PhpCompta l'existence de cette extension. Pour cela, il faut ,dans PhpCompta, dans le « direct access »\\  
  
  
Ligne 2872: Ligne 2809:
 ======Code est utilisé pour inclure le fichier du plugin, il correspond au champs caché EXT====== ======Code est utilisé pour inclure le fichier du plugin, il correspond au champs caché EXT======
  
-======Fichier est le chemin complet vers l'extension======+======Fichier est le chemin vers l'extension (sans le répertoire phpcompta/include/ext)====== 
 + \\  
  
-======Sécurité : qui peut appeler le plugin  
-====== 
  Pour notre extension, les valeurs suivantes sont données  Pour notre extension, les valeurs suivantes sont données
  
Ligne 2884: Ligne 2820:
  
 ======Fichier : dummy/dummy.php====== ======Fichier : dummy/dummy.php======
- + \\   \\  Vous sauvez, cliquer sur Extension et vous verrez apparaître un nouveau plugin appelé "Mon dummy à moi"; si vous cliquez dessus, la page ext/dummy/dummy.php sera exécutée.
-======Sécurité : aucune====== +
- \\   \\  Vous sauvez, cliquer sur Extension et vous verrez apparaître un nouveau plugin appelé "Mon dummy à moi"; si vous cliquez dessus, la page ext/dummy/dummy.php sera exécutée; voyez le code du fichier PhpCompta/html/extension.php pour comprendre.+
  
  
Ligne 2892: Ligne 2826:
  
 === Connexion à la base de données=== === Connexion à la base de données===
-Certaines valeurs doivent  toujours être passées à chaque page, par exemple gDossier qui est l'identifiant du dossier.+Certaines valeurs doivent  toujours être passées à chaque page, par exemple gDossier qui est l'identifiant du dossier ou ac qui l'action demandée.
  
  Pour se connecter c'est assez facile, il faut utiliser la classe Database et la classe Dossier.  Pour se connecter c'est assez facile, il faut utiliser la classe Database et la classe Dossier.
Ligne 2902: Ligne 2836:
  echo "L' identifiant de mon dossier est ".dossier::id()."<br>";\\   echo "Son nom réel est ".DOMAIN."dossier".dossier::id()."<br>";\\   echo "Son nom est ".dossier::name()."<br>";\\    echo "L' identifiant de mon dossier est ".dossier::id()."<br>";\\   echo "Son nom réel est ".DOMAIN."dossier".dossier::id()."<br>";\\   echo "Son nom est ".dossier::name()."<br>";\\  
  
-  %%//%% Je me connecte à présent à ce dossier+  //%%//%% Je me connecte à présent à ce dossier//
  
- $cn_db=new Database(dossier::id());+ $cn_db=**new** Database(dossier::id());
  
    
Ligne 2912: Ligne 2846:
 je vois dans fiche_def_ref qu'il s'agit de "7 Matériel à amortir"\\   \\   Pour avoir toutes les fiches, \\    je vois dans fiche_def_ref qu'il s'agit de "7 Matériel à amortir"\\   \\   Pour avoir toutes les fiches, \\   
  
- $fiche= new Fiche($cn_db);\\   $aFicheMateriel=$fiche->getByDef(7); \\  + $fiche= **new** Fiche($cn_db);\\   $aFicheMateriel=$fiche->getByDef(7); \\  
  
  Pour chaque fiche, je veux afficher son nom, son prix, le nombre d'années à amortir et la date d'achat. Je peux en trouver les valeurs dans attr_def ou constant.php, \\    Pour chaque fiche, je veux afficher son nom, son prix, le nombre d'années à amortir et la date d'achat. Je peux en trouver les valeurs dans attr_def ou constant.php, \\  
Ligne 2926: Ligne 2860:
  Uniquement pour l'exercice, nous allons ajouter un FORM.\\   Les données nécessaires dans le FORM sont toujours au minimum: l'id du dossier, le code du plugin.\\   \\   Dans le FORM, on demandera juste à afficher le solde de chaque élément.\\   On aura alors le code suivant, on utilisera la technique des templates \\     Uniquement pour l'exercice, nous allons ajouter un FORM.\\   Les données nécessaires dans le FORM sont toujours au minimum: l'id du dossier, le code du plugin.\\   \\   Dans le FORM, on demandera juste à afficher le solde de chaque élément.\\   On aura alors le code suivant, on utilisera la technique des templates \\   
  
- $year=new IText('year');\\   $str_year=$year->input();\\   $str_submit=HtmlInput::submit('year_left','Appliquer');\\   require_once('template1.php');+ $year=**new** IText('year');\\   $str_year=$year->input();\\   $str_submit=HtmlInput::submit('year_left','Appliquer');\\   require_once('template1.php');
  
  \\   template1.php  \\   template1.php
  
-<FORM METHOD="GET" ACTION="extension.php">\\   <?=dossier::hidden()?>\\   <?=HtmlInput::extension()?>\\   Solde pour l'année : <?=$str_year?>\\   <?=$str_submit?>\\   </form>\\  +<FORM METHOD="GET" ACTION="extension.php">\\   <?=dossier::hidden()?>\\   <?=HtmlInput::extension()?> 
 + 
 + <?=HtmlInput::request_to_hidden(array('ac',plugin_code'),$_REQUEST)?>\\   Solde pour l'année : <?=$str_year?>\\   <?=$str_submit?>\\   </form>\\  
  
 Puis dans le début du fichier ext/dummy/dummy.php, on ajoutera un test pour savoir un FORM a été soumis et on affichera\\  une boîte de dialogue.\\   Puis dans le début du fichier ext/dummy/dummy.php, on ajoutera un test pour savoir un FORM a été soumis et on affichera\\  une boîte de dialogue.\\  
  
-if (isset($_GET['year_left'])){\\     alert('Vous avez demandé le nombre d\'années restantes');\\  }\\  +if (isset($_GET['year_left'])){\\     alert('Vous avez demandé le nombre d**\'**années restantes');\\  }\\  
  
  
Ligne 2946: Ligne 2882:
  
  
-%%//%% se connecter au dossier courant\\  $cn=new Database(dossier::id());+//%%//%% se connecter au dossier courant\\  //$cn=**new**// Database//(//dossier//::id());
  
  
Ligne 2956: Ligne 2892:
  
  
-echo '<form METHOD="get" action="extension.php">';\\  echo dossier::hidden();\\  %%//%% Ceci vous permet de revenir ici (voir extension.php). Cet élément caché permet d'include cette page-ci\\  %%//%% Donc si votre plugin contient plusieurs pages, vous allez devoir ajouter une seconde variable pour\\  %%//%% inclure la page que vous voulez (voir méthode de développement de PhpCompta )\\  echo HtmlInput::extension();\\  \\  echo "Choix de la catégorie de fiche";\\  $select_cat=new ISelect('fd_id');\\  $select_cat->value=$cn->make_array('select fd_id,fd_label from fiche_def where frd_id='.\\  FICHE_TYPE_CLIENT);\\  echo $select_cat->input();\\  echo HtmlInput::submit('display_prop','Afficher les propriétés');\\  \\  echo '</FORM>';+echo '<form METHOD="get" action="extension.php">';\\  echo dossier::hidden();\\  //%%//%% Ceci vous permet de revenir ici (voir extension.php). Cet élément caché permet d'include cette page-ci\\  %%//%% Donc si votre plugin contient plusieurs pages, vous allez devoir ajouter une seconde variable pour\\  %%//%% inclure la page que vous voulez (voir méthode de développement de PhpCompta )\\  //echo// HtmlInput//::extension();//\\  \\  //echo// //"Choix de la catégorie de fiche";//\\  //$select_cat=**new**// ISelect//('fd_id');//\\  //$select_cat->//value//=$cn->//make_array//('select fd_id,fd_label from fiche_def where frd_id='.//\\  FICHE_TYPE_CLIENT//);//\\  //echo// //$select_cat->//input//();//\\  //echo// HtmlInput//::submit('display_prop','Afficher les propriétés');//\\  \\  //echo '</FORM>';
  
 Il faut remarquer 2 choses dans ce FORM, primo, on utilise les objets HtmlInput et ISelect, secundo on doit avoir absolument en variables cachées, le n° de dossier sur  lequel on est connecté, le code de l'extension, qui permettra à extension.php d'include le bon fichier. On utilise ici le protocole GET puisqu'on interroge, le protocole est réservé aux sauvegardes, c'est une convention assez répandue. La différence, est que les requêtes GET se voient dans l'URL, les requêtes POST ne sont jamais dans l'url.\\  \\  \\  L'utilisateur soumet le FORM, donc la feuille se recharge et on arrive à cette partie du code\\  \\  On choisit d'afficher les propriétés avant de confirmer l'import Il faut remarquer 2 choses dans ce FORM, primo, on utilise les objets HtmlInput et ISelect, secundo on doit avoir absolument en variables cachées, le n° de dossier sur  lequel on est connecté, le code de l'extension, qui permettra à extension.php d'include le bon fichier. On utilise ici le protocole GET puisqu'on interroge, le protocole est réservé aux sauvegardes, c'est une convention assez répandue. La différence, est que les requêtes GET se voient dans l'URL, les requêtes POST ne sont jamais dans l'url.\\  \\  \\  L'utilisateur soumet le FORM, donc la feuille se recharge et on arrive à cette partie du code\\  \\  On choisit d'afficher les propriétés avant de confirmer l'import
Ligne 2962: Ligne 2898:
  
  
-if ( isset($_GET['display_prop'])){\\  $a=new Fiche($cn);\\  $prop=$a->toArray($_GET['fd_id']);\\  foreach ($prop as $key=>$value) echo "Index : $key valeur $value <br/>";\\  \\  echo '<form method="POST" action="extension.php"  enctype="multipart/form-data">';\\  echo dossier::hidden();\\  echo HtmlInput::extension();\\  echo HtmlInput::hidden('fd_id',$_GET['fd_id']);\\  $file=new IFile('fichier_csv');\\  echo $file->input();\\  30 echo HtmlInput::submit('start_import','Démarrez importation');\\  echo '</form>';\\  exit;\\  }+if ( isset($_GET['display_prop'])){\\  $a=**new** Fiche($cn);\\  $prop=$a->toArray($_GET['fd_id']);\\  foreach ($prop as $key=>$value) echo "Index : $key valeur $value <br/>";\\  \\  echo '<form method="POST" action="extension.php"  enctype="multipart/form-data">';\\  echo dossier::hidden();\\  echo HtmlInput::extension();\\  echo HtmlInput::hidden('fd_id',$_GET['fd_id']);\\  $file=**new** IFile('fichier_csv');\\  echo $file->input();\\   echo HtmlInput::submit('start_import','Démarrez importation');\\  echo '</form>';\\  exit;\\  }
  
 Voilà, si l'utilisateur clique sur le bouton SUBMIT,  l'importation va  démarrer. Dans notre exemple, on imaginera que le fichier CSV n'a que 4 champs "nom client","prenom client", "numero client","adresse client"\\  \\  Le code qui suit est très simplifié, il n'y a peu voire aucun contrôle ni de gestion d'erreur. Voilà, si l'utilisateur clique sur le bouton SUBMIT,  l'importation va  démarrer. Dans notre exemple, on imaginera que le fichier CSV n'a que 4 champs "nom client","prenom client", "numero client","adresse client"\\  \\  Le code qui suit est très simplifié, il n'y a peu voire aucun contrôle ni de gestion d'erreur.
Ligne 2968: Ligne 2904:
  
  
-if ( isset($_POST['start_import'])){\\  $fd_id=$_POST['fd_id'];\\  $tmp_file=$_FILE['fichier_csv']['tmp_name'];\\  if ( ! is_uploaded_file($tmp_file)) \\  die 'Je ne peux charger ce fichier';\\  %%//%% on ouvre le fichier \\  $f=fopen($tmp_file,'r');\\  %%//%% On récupère les propriétés de cette catégorie de fiche\\  $client=new Fiche($cn);\\  %%//%% $array contient toutes les valeurs nécessaires à Fiche::insert,\\  $array=$client->toArray($_POST['fd_id']);\\  \\  while ( $data=fgetcsv($f)) {\\  %%//%% remarque : on a éliminé les traitements d'erreur\\  \\  %%//%% On  remet tous les attributs (propriétés) à vide\\  foreach(array_keys($array) as $key) $array[$key]="";\\  \\  %%//%% Nom et prénom\\  $array['av_text1']=$data[0].' '.$data[1];\\  %%//%% Numéro de client\\  $array['av_text30']=$data[2];\\  %%//%% Adresse\\  $array['av_text14']=$data[3];\\  %%//%% Quickcode\\  $array['av_text23']="CLI".$data[2];\\  $client->insert($fd_id,$array);\\  }\\  exit;\\  }\\  +if ( isset($_POST['start_import'])){\\  $fd_id=$_POST['fd_id'];\\  $tmp_file=$_FILE['fichier_csv']['tmp_name'];\\  if ( ! is_uploaded_file($tmp_file)) \\  die 'Je ne peux charger ce fichier';\\  //%%//%% on ouvre le fichier \\  //$f=fopen($tmp_file,'r');//\\  %%//%% On récupère les propriétés de cette catégorie de fiche\\  //$client=**new**// Fiche//($cn);//\\  %%//%% $array contient toutes les valeurs nécessaires à Fiche::insert,\\  //$array=$client->//toArray//($_POST['fd_id']);//\\  \\  //while// //(// //$data=fgetcsv($f))// //{//\\  %%//%% remarque : on a éliminé les traitements d'erreur\\  \\  %%//%% On  remet tous les attributs (propriétés) à vide\\  //foreach(array_keys($array)// //as// //$key)// //$array[$key]="";//\\  \\  %%//%% Nom et prénom\\  //$array['av_text1']=$data[0].' '.$data[1];//\\  %%//%% Numéro de client\\  //$array['av_text30']=$data[2];//\\  %%//%% Adresse\\  //$array['av_text14']=$data[3];//\\  %%//%% Quickcode\\  //$array['av_text23']="CLI".$data[2];//\\  //$client->//insert//($fd_id,$array);//\\  //}//\\  //exit;//\\  //}//\\  //
  
 Voici le fichier client.txt Voici le fichier client.txt
Ligne 3070: Ligne 3006:
  
  
-Vous trouverez de la documentation sur les API à utiliser dans votre répertoire :  PhpCompta/doc/html/developper mais surtout sur le site : [[http://www.phpcompta.eu/|http://www.phpcompta.eu]] (section documentation)+Vous trouverez de la documentation sur les API à utiliser dans votre répertoire :  PhpCompta/doc/html/developper mais surtout sur le site : [[http://www.phpcompta.eu/|http://www.phpcompta.eu]]/doc (section documentation)
  
  
Ligne 3090: Ligne 3026:
 il est possible de donner un code STOCK à n'importe quelle fiche, par exemple pour les heures à facturer, les déplacements... Ainsi vous pouvez savoir à tout moment combien d'heures ou de déplacements vous avez facturés, ou la quantité de papier, cartouches d'encre,... qui ont été achetées.. il est possible de donner un code STOCK à n'importe quelle fiche, par exemple pour les heures à facturer, les déplacements... Ainsi vous pouvez savoir à tout moment combien d'heures ou de déplacements vous avez facturés, ou la quantité de papier, cartouches d'encre,... qui ont été achetées..
  
 +**Utiliser le wiki **
  
 +Le wiki complète cette documentation, n'hésitez pas à l'utilisez ou à  l'améliorer
 +
 +
 +=====Accès Direct =====
 +|ACH|Nouvel achat ou dépense|
 +|ANCHOP|Historique des imputations analytiques|
 +|ANCGL|Grand livre d'plan analytique|
 +|ANCBS|Balance simple des imputations analytiques|
 +|ANCBC2|Balance double croisées des imputations analytiques|
 +|ANCTAB|Tableau lié à la comptabilité|
 +|ANCBCC|Lien entre comptabilité et Comptabilité analytique|
 +|ANCGR|Balance par groupe|
 +|SEARCH|Recherche|
 +|DIVPARM|Paramètres divers|
 +|CFGTVA|Config. de la tva|
 +|CARD|Fiche|
 +|STOCK|Stock|
 +|MOD|Menu|
 +|CFGPRO|Configuration profil|
 +|CFGPAY|Config. des méthodes de paiement|
 +|CFGACC|Config. poste comptable de base|
 +|VEN|Nouvelle vente ou recette|
 +|CFGMENU|Configuration des menus et plugins|
 +|COMPANY|Parametre societe|
 +|PERIODE|Gestion des périodes|
 +|SUPPL|Suivi fournisseur|
 +|LET|Lettrage|
 +|ANCODS|OD analytique|
 +|VERIFBIL|Vérification de la comptabilité|
 +|REPORT|Création de rapport|
 +|OPEN|Ecriture d'ouverture|
 +|ACHIMP|Historique achat|
 +|FOLLOW|Suivi, courrier, devis|
 +|FORECAST|Prévision|
 +|EXT|Extensions (plugins)|
 +|CFGDOC|Config. modèle de document|
 +|CFGLED|Configuration des journaux|
 +|PREDOP|Gestion des opérations prédéfinifies|
 +|ADV|Menu avancé|
 +|ANC|Module comptabilité analytique|
 +|CFGSEC|configuration de la sécurité|
 +|PLANANC|Plan analytique|
 +|ANCGROUP|Groupe analytique|
 +|ODSIMP|Historique opérations diverses|
 +|VENMENU|Menu ventes et recettes|
 +|PREFERENCE|Préférence|
 +|HIST|Historique|
 +|MENUFIN|Menu Financier|
 +|FIMP|Historique financier|
 +|MENUACH|Menu achat|
 +|MENUODS|Menu opérations diverses|
 +|ODS|Nouvelle opérations diverses|
 +|FREC|Rapprochement bancaire|
 +|ADM|Suivi administration, banque|
 +|FIN|Nouvel extrait bancaire|
 +|CFGATCARD|Gestion des modèles de fiches|
 +|FSALDO|Solde des comptes en banques, caisse...|
 +|JSSEARCH|Recherche|
 +|LETACC|lettrage par poste comptable|
 +|CARDBAL|Balance par catégorie de fiche|
 +|CUST|Suivi client|
 +|CFGCARDCAT|Gestion catégorie de fiche|
 +|CFGCATDOC|Config. catégorie de documents|
 +|VENIMP|Historique des ventes|
 +|LETCARD|Lettrage par fiche|
 +|CFGPCMN|Config. du plan comptable|
 +|LOGOUT|Sortie|
 +|DASHBOARD|Tableau de bord|
 +|COMPTA|Module comptabilité|
 +|GESTION|Module gestion|
 +|PARAM|Module paramètre|
 +|PRINTJRN|Impression historique|
 +|PRINTREC|Impression des rapprochements|
 +|PRINTPOSTE|Impression du détail d'un poste comptable|
 +|PRINTREPORT|Impression de rapport|
 +|PRINTBILAN|Impression de bilan|
 +|PRINTGL|Impression du grand livre|
 +|PRINTBAL|Impression des balances comptables|
 +|PRINTCARD|Impression catégorie de fiches|
 +|PRINT|Menu impression|
 +|ACCESS|Accueil|
 +|ANCIMP|Impression compta. analytique|
  
  
Ligne 3096: Ligne 3115:
  
 =====Note de version===== =====Note de version=====
 +
 +====Note de version 6.0 (Décembre 2011)====
 +Nouveautés:
 +
 +
 +======Menu complètement configurable, de ce fait, les plugins peuvent apparaître dans n'importe quel menu, sous-menu... ======
 +
 +======Sécurité renforcée, basée sur le profil qui est l'ensemble des menus accessibles à l'utilisateur======
 +
 +======Export du Grand Livre Analytique en CSV======
 +
 +======Les différents configuration de menus sont rassemblé dans des profils, le nombre de profils par dossier est illimité, ils sont configurés dans CFGPRO.======
 +
 +======Accès direct vous permet d'aller directement à l'endroit que vous souhaitez en donnant le code du menu, pendant la frappe, les menus possibles apparaissent (auto-complete).======
 +
 +======Compte alphanumérique, PhpCompta peut utiliser des postes comptables alphanumériques, si le poste comptable est calculé automatiquement alors par défaut PhpCompta créera un poste comptable en ajoutant le nom de la fiche à la classe de base.======
 +
 +======Compte de TVA qui augmente au débit et au crédit, pour certains cas particuliers.======
 +
 +======Nouveau thème dont la police est plus grande======
 +
 +======Dans catégorie fiche, il est possible d'avoir les balances ou l'historique de toutes les fiches======
 +
 +======Possibilité d'éditer les détails dans les journaux achats et ventes, à changer dans COMPANY======
 +Améliorations:
 +
 +
 +======Comptabilité analytique: lors de l'imputation, la valeur qui reste à affecter est directement calculé.======
 +
 +======A l'enregistrement de l'opération, il est présenté un résumé de l'opération qui vient d'être enregistrée.======
 +
 +======Les réconciliations se font dans une fenêtre interne (avant c'était un popup)======
 +
 +======Comptabilité analytique: recherche de fiche dans une fenêtre interne======
 +
 +======Tri apparaissent dans certains menu (sécurité → utilisateurs (SECUSER), administration → utilisateur, …)======
 +
 +======réconciliation n'utilise plus une fenêtre extérieure (popup)======
 +
 +======Possibilité de changer le type d'un document dans le suivi======
 +
 +======Résumé de l'opération enregistrée au lieu d'un simple lien vers le détail de l'opération======
 +
 +======En cas de rapprochement, même avec plusieurs opérations, il y aura un lettrage automatique.======
 +
 +======Amélioration des lettrages multiples (1 à n)======
 +
 +======Mode de paiement se font dorénavant par journaux et non plus par type de journaux======
 +
 +
 +
 +
  
 ====Note de version 5.6 (mai 2011)==== ====Note de version 5.6 (mai 2011)====
Ligne 3127: Ligne 3198:
 ======Problème export CSV historique sans le signe moins pour financier====== ======Problème export CSV historique sans le signe moins pour financier======
  
-======Impossible de réinitialiser le mot de passe======+======Impossibilité  de réinitialiser le mot de passe======
  
  
  • playground/manuel.1325086793.txt.gz
  • Dernière modification : 2013/02/28 00:52
  • (modification externe)