Modifications des modèles de factures Pré-requis :...2 Ajout de zone sur la facture...5 Zones prédéfinies...5 Zones calculées...8 Accès aux champs paramétrables...12 Modification de modèles de factures version 5.5 vers WdEtat 10 ou 12...13 Code pour Insertion d'une image en fond.16 Code pour ajout date de fin et début exercice..17 Code pour extraire les débours et/ou les frais de chancellerie du corps de la facture et les mettre dans un tableau en pied de facture. 17 Code pour gérer un tableau d'échéances de règlement de 15 au lieu de 12..19 Code pour recalculer le prix unitaire en fonction de montant et de la quantité 19 Code pour insérer le nom et prénom du collaborateur niveau 1 de la fiche dossier.20 Code pour récupérer les coordonnées de la banque de cabinet (monobanque) 20 DiaClientSQL Modification des modèles de factures Page 1 sur 21
Pré-requis : - Installer Etats et requête utilisateur - Lancer Etat et requêtes 1/ Fermer le premier écran ouvert par l application : DiaClientSQL Modification des modèles de factures Page 2 sur 21
2/ Ouverture d un projet - Menu «Fichier \ Ouvrir un projet» - cliquer sur les trois petits points puis choisir l exécutable AWClient.exe - valider sur le bouton OK Un nouvel assistant apparaît : faire fermer Le treeview dans la partie droite doit afficher «Projet design7» DiaClientSQL Modification des modèles de factures Page 3 sur 21
3/ Ouverture d un modèle pour modification - menu «fichier\ouvrir» - sélectionner un fichier.wde dans le répertoire MODELES\FACTURES de DiaClient, puis ouvrir. Le modèle de facture sélectionné est maintenant modifiable : DiaClientSQL Modification des modèles de factures Page 4 sur 21
Ajout de zone sur la facture Pour ajouter une zone sur l état deux possibilités sont données : - Soit en utilisant les zones prédéfinies - Soit en utilisant des zones calculées Zones prédéfinies Ces zones sont utilisables directement en nommant le champ calculé comme indiqué dans le tableau. Au lancement de l'édition de la facture la zone sera remplie automatiquement par le programme. Rubriques "Cabinet" LOGO SOCNOM SOCADR1 SOCADR2 SOCPOST SOCLOCALITE SOCTEL SOCFAX DiaClientSQL Modification des modèles de factures Page 5 sur 21
SOCSIRET SOCRC SOCAPE SOCSIRET_LIB SOCAPE_LIB Rubriques "Expéditeur" EXPVILLE EXPDATEFACT LOCALITEICI SIRET : N SIRET APE : CodeAPE Localité de l'expéditeur Date de la facture Ville, Rubriques "Destinataire" NOMDEST ADR1DEST ADR2DEST CPOSTALDEST BXDISTRI VILLEDEST Nom du destinataire Adresse 1 du destinataire Adresse 2 du destinataire Code Postal + " " + Ville Rubriques "Entête Facture" NUMFACT DAT_FACT REF_FACT RéférenceFacture REF_FACT_LIB Référence :... LIBDATEFACT Le date-facture NUMFACTURE N NUM_FACT le DATE_FACTURE LIBENTETE Facture ou Note d'honoraire ou Avoir Dépend de LIB_FACTURE. LIBTYPAI "NET A PAYER " ou "AVOIR" Rubriques "Euro" MONTANTEURO LIBEURO TOTEURO CCODEEURO CCODEMONNAIE1 CCODEMONNAIE2 CCODEMONNAIE3 CCODEMONNAIE4 CCODEMONNAIE5 Rubriques "TVA" TAUXTVA1 BASEHT1 MONTANTTVA1 1èr taux de TVA Base HT Tva DiaClientSQL Modification des modèles de factures Page 6 sur 21
TAUXTVA2 BASEHT2 MONTANTTVA2 TAUXTVA3 BASEHT3 MONTANTTVA3 2ème taux de TVA 3ème taux de TVA Rubriques "Pied Facture" TOTHT TOTTVA TOTTTC FACTACOMPTE FACTTOTAPAYER REGLIBELLE DATEECHEANCE ACOMPTE TOTAPAYER TOTEURO MENTION1 MENTION2 MENTION3 Montant HT Montant TVA Montant TTC Montant de l'acompte Montant à payer Libellé du mode de règlement Date d'échéance Montant de l'acompte (Valeur numérique) Montant à payer (Valeur numérique) Montant en Euro Libellé mention 1 : En votre aimable règlement par... au... TVA déductible après paiement Membre d'une association agréée par l'administration... MENTION4 Pénalités pour retard de paiement,... MENTION5 Libellé mention 5 DATEDEBEXO DATEEXO Date de début d'exercice facture Date de fin d'exercice facture Rubriques "Pied Facture" Cas Particulier du traitement du solde comptable : MENTION_SOLDE_DU M_SOLDE_DU M_SOLDE_AUX M_SOLDE_NET M_SOLDE_TOUTCABINET_DU M_SOLDE_TOUTCABINET_AUX Libellé de la mention solde dû : Solde de votre compte Montant du solde comptable issu du logiciel comptable lié + le montant des factures DiaClient émises non transférées Montant du solde comptable de la comptabilité auxiliaire Montant du solde comptable issu du logiciel comptable lié Montant du solde comptable, tous cabinets confondus, issu du logiciel comptable lié + le montant des factures DiaClient émises non transférées Montant du solde du compte de la comptabilité auxiliaire, tous cabinets DiaClientSQL Modification des modèles de factures Page 7 sur 21
M_SOLDE_TOUTCABINET_NET confondus Montant du solde du comptable, tous cabinets confondus, issu du logiciel comptable lié Rubriques "Echéances de règlement" DATE_ECHEANCE9 MONTANT_ECHEANCE9 Date de l'échéance N 9 champ de type Date (remplacer 9 par le numéro de l'échéance voulue) Montant de l'échéance N 9 (remplacer 9 par le numéro de l'échéance voulue) Rubriques "Ligne de Facture" LIBTACHE COMTACHE PUHT QTE PVHT Libellé de la prestation Ligne commentaire Prix Unitaire Qté Prix de vente HT Zones calculées Si vous ne trouvez pas les champs que vous avez besoins dans les tableaux précédents, ou que vous désirez faire des formules calculées (zone composée de plusieurs zones) il faut utiliser les formules suivantes. La méthode cloetat:azvariable("table.rubrique") permet d'accéder à tous moment de l'édition aux différentes rubriques des fichiers. 1. Créer un nouveau champ définir un nom différent de ceux mentionné plus haut 2. Ajouter une ligne de calcul comme suit dans la section "Avant impression BLOC_HAUT" pour une variable que l on veut afficher dans l entête de la facture. Soit dans la section "Avant impression BLOC_CORPS" pour une variable que l on veut afficher dans les lignes de factures. La fonction AzVariable possède 2 arguments optionnels plibdevant et plibaprès fonction AzVariable(pNomRubrique="", plibdevant="", plibapres="") Ces arguments peuvent être utilisés pour rajouter un libellé après ou avant lorsque la rubrique retourne une valeur. Exemple : ZONE1=cloEtat:AzVariable("SOCIETE.SOC_NOM","","-")+ AzVariable("SOCIETE.SOC_ADR1","","-")+ DiaClientSQL Modification des modèles de factures Page 8 sur 21
Cette formule permet d'afficher les coordonnées du cabinet, si un des éléments de l'adresse n'est pas renseigné le libellé "-" ne sera pas non plus ajouté, évitant ainsi l'affichage de libellé inutilement Rajout d information dans l état cloetat:etat_b_corps_av_imp() ///////////////////////////////////////////////////////////////////// // Ci-dessous votre code pour ajouter des champs calculés // // sur les lignes de factures // //////////////////////////////////////////////////////////////////// cloetat:etat_b_haut_av_imp() ///////////////////////////////////////////////////////////////////// // Ci-dessous votre code pour ajouter des champs calculés // // sur les entêtes de factures // //////////////////////////////////////////////////////////////////// LIBELLE2=cloEtat:AzVariable("SOCIETE.SOC_NOM") DiaClientSQL Modification des modèles de factures Page 9 sur 21
Les tables et rubriques disponibles sont les suivantes : 'ADRESSE','ADR_ID' 'ADRESSE','ADR_B_MORALE' 'ADRESSE','ADR_CODE' 'ADRESSE','ADR_CLICODE_GESCOM' 'ADRESSE','SOC_CODE' 'ADRESSE','TITRE_CODE' 'ADRESSE','ADR_NOM' 'ADRESSE','ADR_PRENOM' 'ADRESSE','ADR_NOMPHON' 'ADRESSE','GENRE_CODE' 'ADRESSE','ADR_ADR1' 'ADRESSE','ADR_ADR2' 'ADRESSE','ADR_ADR3' 'ADRESSE','ADR_VILLE' 'ADRESSE','POSTAL_CODE' 'ADRESSE','PAYS_CODE' 'ADRESSE','REGION_CODE' 'ADRESSE','ADR_ID_PRESC' 'ADRESSE','ADR_TEL1' 'ADRESSE','ADR_TEL2' 'ADRESSE','ADR_FAX' 'ADRESSE','ADR_EMAIL' 'ADRESSE','ADR_WEB' 'ADRESSE','ADR_MEMO_1' 'ADRESSE','ADR_MEMO_2' 'ADRESSE','ADR_MEMO_3' 'ADRESSE','ACT_CODE' 'ADRESSE','NAF_CODE' 'ADRESSE','JUR_CODE' 'ADRESSE','ADR_SIRET' 'ADRESSE','ADR_NUMRC' 'ADRESSE','ADR_NUMTVA' 'ADRESSE','COL_CODE_N1' 'ADRESSE','COL_CODE_N2' 'ADRESSE','COL_CODE_N3' 'ADRESSE','COL_CODE_N4' 'ADRESSE','ADR_DOSSCPTA' 'ADRESSE','ADR_DOSSPAIE' 'ADRESSE','TARIF_CODE' 'ADRESSE','TVACLI_CODE' 'ADRESSE','ADR_I_PERIODE_REG' 'ADRESSE','ADR_I_DELAI_REG' 'ADRESSE','ADR_B_MOIS_REG' 'ADRESSE','ADR_JOURS_REG' 'ADRESSE','ADR_I_NBECH_REG' 'ADRESSE','ADR_B_DECAD_REG' 'ADRESSE','ADR_J_FACTAUTO' 'ADRESSE','REG_CODE' 'ADRESSE','ADR_RIB' 'ADRESSE','ADR_IBAN' 'ADRESSE','ADR_BIC' 'ADRESSE','ADR_NOMBANQ' 'ADRESSE','ADR_AD1BANQ' 'ADRESSE','ADR_VILLBANQ' 'ADRESSE','ADR_B_INTERNE' 'ADRESSE','ADR_NUMCOMPTE' 'ADRESSE','ADR_COLLECTIF' 'ADRESSE','ADR_ID_FACT' 'ADRESSE','ADR_DATE_ENTREE' 'ADRESSE','ADR_DATE_SORTIE' 'ADRESSE','ADR_MOTIF_SORTIE' 'ADRESSE','VENTCLI_CODE' 'ADRESSE','GRP_CODE' 'ADRESSE','ADR_CODE_TITREFACT' 'ADRESSE','ADR_NOMFACT' 'ADRESSE','ADR_AD1FACT' 'ADRESSE','ADR_AD2FACT' 'ADRESSE','ADR_AD3FACT' 'ADRESSE','ADR_CPOSTALFACT' 'ADRESSE','ADR_VILLEFACT' 'ADRESSE','ADR_CODE_PAYSFACT' 'ADRESSE','ADR_M_SOLDE_COMPTABLE' 'ADRESSE','ADR_DATE_SOLDE' 'ADRESSE','ADR_I_ARCHIVEMLAUTO' 'ADRESSE','COL_CODE_CREAT' DiaClientSQL Modification des modèles de factures Page 10 sur 21
'ADRESSE','ADR_DATE_CREAT' 'ADRESSE','COL_CODE_MODIF' 'ADRESSE','ADR_DATE_MODIF' 'ADRESSE','ADR_DATE_TEMPSMIN' 'ADRESSE','ADR_ALIAS' 'SOCIETE','SOC_CODE' 'SOCIETE','TITRE_CODE' 'SOCIETE','SOC_NOM' 'SOCIETE','SOC_ADR1' 'SOCIETE','SOC_ADR2' 'SOCIETE','SOC_ADR3' 'SOCIETE','POSTAL_CODE' 'SOCIETE','SOC_VILLE' 'SOCIETE','SOC_RESPONSABL' 'SOCIETE','SOC_TEL1' 'SOCIETE','SOC_TEL2' 'SOCIETE','SOC_FAX' 'SOCIETE','SOC_EMAIL' 'SOCIETE','SOC_WEB' 'SOCIETE','SOC_MEMO' 'SOCIETE','SOC_NAF' 'SOCIETE','SOC_STATUT' 'SOCIETE','SOC_SIRET' 'SOCIETE','SOC_NUMRC' 'SOCIETE','SOC_NUMTVA' 'SOCIETE','SOC_DATE_DEBUTEXO' 'SOCIETE','SOC_DATE_EXO' 'SOCIETE','SOC_DOSSCPTA' 'SOCIETE','SOC_DOSSGEST' 'SOCIETE','SOC_CPTAPATH' 'SOCIETE','JRN_CODE_JV' 'SOCIETE','SOC_I_TYPECPTA' 'SOCIETE','SOC_GESTPATH' 'SOCIETE','SOC_I_TYPEGEST' 'SOCIETE','MSK_ID' 'SOCIETE','SOC_NOMETAT_FACT' 'SOCIETE','TITRE_CODE_RESP' 'SOCIETE','SOC_BLOB_LOGO' 'SOCIETE','SOC_MEMO_COMFACT' 'SOCIETE','SOC_SECT_ANA' 'SOCIETE','SOC_EQUIV_AROB' 'SOCIETE','SOC_MEMO_MENTION1_FACTURE' 'SOCIETE','SOC_MEMO_MENTION1_AVOIR' 'SOCIETE','SOC_MEMO_MENTION2' 'SOCIETE','SOC_MEMO_MENTION3' 'SOCIETE','SOC_MEMO_MENTION4' 'SOCIETE','SOC_MEMO_MENTION5' 'SOCIETE','SOC_MEMO_MENTION6' 'SOCIETE','SOC_MEMO_MENTION7' 'SOCIETE','SOC_MEMO_MENTION8' 'SOCIETE','SOC_MEMO_MENTION9' 'SOCIETE','SOC_MEMO_MENTION10' 'SOCIETE','SOC_MEMO_MENTIONPIED1' 'SOCIETE','SOC_MEMO_MENTIONPIED2' 'SOCIETE','SOC_MEMO_MENTION_SOLDE_DU' 'LIGNFACT','LFACT_ID' 'LIGNFACT','FACT_ID' 'LIGNFACT','ADR_ID' 'LIGNFACT','LFACT_I_NUMLIGNE' 'LIGNFACT','LFACT_I_CHAPITRE' 'LIGNFACT','PREST_CODE' 'LIGNFACT','EXO_CODE' 'LIGNFACT','LFACT_MEMO' 'LIGNFACT','LFACT_M_QTE' 'LIGNFACT','LFACT_DUREE' 'LIGNFACT','LFACT_M_PU' 'LIGNFACT','LFACT_M_PV' 'LIGNFACT','LFACT_M_PVCOL' 'LIGNFACT','TVAPREST_CODE' 'LIGNFACT','VENTPREST_CODE' 'LIGNFACT','MISS_ID' 'LIGNFACT','MISS_CODE' 'LIGNFACT','HONOECH_ID' DiaClientSQL Modification des modèles de factures Page 11 sur 21
'FACTURE','FACT_ID' 'FACTURE','FACT_NUM' 'FACTURE','FACT_I_NUM' 'FACTURE','ADR_ID' 'FACTURE','FACT_DATE' 'FACTURE','FACT_REF' 'FACTURE','FACT_MEMO' 'FACTURE','EXO_CODE' 'FACTURE','REG_CODE' 'FACTURE','FACT_DATE_ECH' 'FACTURE','FACT_M_ACOMPTE' 'FACTURE','FACT_M_HT' 'FACTURE','FACT_M_TTC' 'FACTURE','FACT_B_REGLE' 'FACTURE','FACT_B_EDITE' 'FACTURE','FACT_B_TRANSFERE' 'FACTURE','SOC_CODE' 'FACTURE','FACT_NOM' 'FACTURE','FACT_AD1' 'FACTURE','FACT_AD2' 'FACTURE','FACT_AD3' 'FACTURE','POSTAL_CODE' 'FACTURE','FACT_VILLE' 'FACTURE','FACT_PAYS' 'FACTURE','FACT_B_VISE' 'FACTURE','FACT_I_ORIGINE' 'FACTURE','TVACLI_CODE' 'FACTURE','VENTCLI_CODE' Accès aux champs paramétrables Pour accéder aux champs paramétrables dans un modèle de facture : Comme pour la fonction azvariable, il est nécessaire de saisir le code windev au bon «endroit». cloetat:etat_b_corps_av_imp() ///////////////////////////////////////////////////////////////////// // Ci-dessous votre code pour ajouter des champs calculés // // sur les lignes de factures // //////////////////////////////////////////////////////////////////// cloetat:etat_b_haut_av_imp() ///////////////////////////////////////////////////////////////////// // Ci-dessous votre code pour ajouter des champs calculés // // sur les entêtes de factures // //////////////////////////////////////////////////////////////////// // Permet de récupérer l identifiant du client iadrid est un entier iadrid=cloetat:azvariable("adresse.adr_id") // remplit la zone R_ECOEFF dans la zone adresse. MONCHAMP=cloEtat:getValeur("CHPPARAM_ADRESSE",iAdrId,"CPADR_R_ECOEFF") DiaClientSQL Modification des modèles de factures Page 12 sur 21
Modification de modèles de factures version 5.5 vers WdEtat 10 ou 12 1) faire la migration en version 7.5 (Nécessite Windev 7.5 - A faire depuis la machine virtuelle XP Windev 7.5) 2) faire la migration en version 10 ou 12 (en ouvrant le modèle avec Etat et Requête) 3) ouvrir l état et supprimer BLOC_DEBUT et BLOC_ (Menu Etat Description Onglet Bloc) 4) remplacer tout le code par le nouveau code (voir annexe 1) 5) supprimer procédure locale FRUPTURE 6) vérifier la taille des blocs début et fin rupture : taille = 0 (Onglet détail) 7) tous les champs du bloc corps doivent être auto extensible (Onglet détail) 8) vérifier la continuité des traits verticaux des champs du BLOC CORPS et BLOC COMPLEMENT (cadres droite et gauche doivent être sélectionnés) 9) vérifier le point de pliage 90mm dans détail BLOC HAUT 10) la taille du BLOC_BAS = la taille du BLOC_1 11) Attention à la position du BLOC RUPTURE qui doit être collé au dernier champ du BLOC HAUT DiaClientSQL Modification des modèles de factures Page 13 sur 21
ANNEXE 1 En bleu le code au format 5 à remplacer En rouge le code au format 12 qui remplace le code version 5 En fond jaune nom des blocs Ouverture de <NOMETAT> PROCEDURE _Simple_E3(_pParam1="", _pparam2="", _pparam3="", _pparam4="") FONCTION EtatFact() GLOBAL inumfic est un entier snomfic est une chaîne = SansEspace(_pParam1) SRupture est une chaîne SNumFac est une chaîne //Code WinDev 5.5 remplacé par la migration : //inumfic=fouvre(snomfic,folecture+fotexte) inumfic=fouvre(snomfic,folecture+0) SI inumfic=-1 ALORS Erreur("Impossible d'ouvrir la source des données") //Code WinDev 5.5 remplacé par la migration : // Ferme ifinetat // // Lecture de la structure de la ligne (entête) // ChargeProcédure("FactFenProc") EXTERNE XinitFacture EXTERNE XLitLigne EXTERNE XLitStructureLigneFacture EXTERNE XAffEcheance EXTERNE xapresimpressionbloccorps gslignelue=flitligne(inumfic) SI PAS XLitStructureLigneFacture(gsLigneLue) ALORS RENVOYER Annuler SI Val(_pParam3) > 0 ALORS //Code WinDev 5.5 remplacé par la migration : // _nbcopie = val(_pparam3) MonEtat..NbCopie = Val(_pParam3) SINON //Code WinDev 5.5 remplacé par la migration : // _nbcopie = 1 MonEtat..NbCopie = 1 //bmsgtstlar=faux // Pour ne pas afficher "L'état est trop large..." //Code WinDev 5.5 remplacé par la migration : //QUAND exception Erreur("Problème rencontré dans l'application.",exception.message) QUAND EXCEPTION Erreur("Problème rencontré dans l'application.",exceptioninfo(errmessage)) GLOBAL cloetat est un CLImpEtatFact() SI cloetat:etat_b_init(_pparam1,_pparam3) <> Vrai ALORS RENVOYER Annuler Lecture des données de <NOMETAT> gslignelue=flitligne(inumfic) SI gslignelue=eot ALORS RENVOYER Annuler srupture=extraitchaîne(gslignelue,1) RENVOYER cloetat:etat_b_litdonnee() Fermeture de <NOMETAT> fferme(inumfic) //Code WinDev 5.5 remplacé par la migration : //girenduimp=_.status girenduimp=istatusimpressionetat() RENVOYER cloetat:etat_b_finlecture() DiaClientSQL Modification des modèles de factures Page 14 sur 21
Avant impression BLOC_HAUT isubstbloc("bas","bloc_1") XinitFacture() snumfac = gslignelue cloetat:etat_b_haut_av_imp() ////////////////////////////////////////////////////////////////////// // Ci-dessous votre code pour ajouter des champs calculés // // sur les entetes et les pieds de factures // ////////////////////////////////////////////////////////////////////// Apres impression BLOC_HAUT cloetat:etat_b_haut_ap_imp() Avant impression BLOC_DRPT1 cloetat:etat_b_drpt1_av_imp() Apres impression BLOC_ DRPT1 cloetat:etat_b_drpt1_ap_imp() Rupture? de BLOC_ DRPT1 RENVOYER cloetat:etat_b_rupture() Avant impression BLOC_CORPS XLitLigne() cloetat:etat_b_corps_av_imp() ////////////////////////////////////////////////////////////////////// // Apres impression BLOC_ CORPS xapresimpressionbloccorps() cloetat:etat_b_corps_ap_imp() Avant impression BLOC_COMPLEMENT cloetat:etat_b_compcorps_av_imp() Apres impression BLOC_ COMPLEMENT cloetat:etat_b_compcorps_ap_imp() Avant impression BLOC_FRPT1 cloetat:etat_b_frpt1_av_imp() Apres impression BLOC_FRPT1 isubstbloc("bas","bloc_bas") //Code WinDev 5.5 remplacé par la migration : //si NbEnrImp<>_.NbEnrImp alors iterminepage SI MonEtat..NbEnrImprimé<>_.NbEnrLus ALORS iterminepage SI cloetat:etat_b_frpt1_ap_imp() ALORS iterminepage Avant impression BLOC_BAS cloetat:etat_b_bas_av_imp() Apres impression BLOC_BAS isubstbloc("bas","bloc_1") XAffEcheance(sNumFac,_pParam2) cloetat:etat_b_bas_ap_imp(_pparam2) Avant impression BLOC_ 1 cloetat:etat_b_bloc1_av_imp() Apres impression BLOC_1 cloetat:etat_b_bloc1_ap_imp() DiaClientSQL Modification des modèles de factures Page 15 sur 21
Insertion d une image de fond au format jpeg à l impression Procédure : 1- Stocker dans le répertoire des modèles de factures la page de fond au format A4 (jpeg). 2- Insérer le code ci-dessous dans «Avant impression de BLOC_HAUT». L exemple cidessous est fait pour un fichier Jpeg dont le nom est «MatriceFIABILITY.jpg». Remplacer avec le nom de votre fichier jpeg. 3- La procédure teste si un répertoire réseau a été défini dans les paramétrages DiaClientSQL. // imprime le fond schaine est une chaîne oparam est un CLFicParam() snomimage est une chaîne = "MatriceFIABILITY.jpg" schaine = oparam:getparam("factures","rep_modele_fact") SI schaine = "" ALORS schaine = ComplèteRep(fRepExe)+"MODELES\FACTURES" SI schaine <> "" ALORS schaine= ComplèteRep(schaine)+ snomimage SI ffichierexiste(schaine) ALORS iimprimeimage(schaine,0,0,ilargeurpage(),ihauteurpage(),iaffichagehomocentré) SINON Erreur("Matrice FIABILITY",snomimage) Astuce : 1- Faire le fond de page A4 avec Word puis imprimer en choisissant l imprimante PDFCreator 2- Choisir «Enregistrer» sur la fenêtre de PDFCreator qui apparaît ; modifier les options de PDFCréator : Formats JPEG : passer de 150 à 300 dpi et qualité de 75 à 100%. 3- Modifier ensuite le type de fichier «Fichier JPEG (*.JPG)» et cliquer sur enregistrer dans le répertoire des modèles de facture. Ajout de la date de début et de fin d exercice oexo est un CLFicExercice scodexo est une chaîne = cloetat:azvariable("facture.exo_code") sadr est une chaîne = cloetat:azvariable("facture.adr_id") ddeb est une Date = oexo:execselect("select EXO_DATE_DEB FROM EXERCICE WHERE ADR_ID=" + QUOTE(sadr) + " AND EXO_CODE=" + QUOTE(scodexo)) dfin est une Date = oexo:execselect("select EXO_DATE_ FROM EXERCICE WHERE ADR_ID=" + QUOTE(sadr) + " AND EXO_CODE=" + QUOTE(scodexo)) sdeb est une chaîne = DateVersChaîne(ddeb,"JJ/MM/AAAA") sfin est une chaîne = DateVersChaîne(dfin,"JJ/MM/AAAA") DiaClientSQL Modification des modèles de factures Page 16 sur 21
// TRACE(scodexo,sadr,sdeb,sfin) LIB_EXO = "Exercice du " + sdeb + " au " + sfin Extraction des frais : (prestations de la facture pour lesquelles la case «frais» est cochée au niveau du paramétrage de la prestation) Attention : la facture sortira à blanc si elle ne comporte qu une seule ligne de frais. Il faut au moins une ligne en plus dans la facture. Soit un commentaire, même à blanc, soit une prestation avec un montant. Créer un champ calculé : exemple : TotFrais PROCEDURE _DetailEch_E1(_pParam1="", _pparam2="", _pparam3="", _pparam4="") GLOBAL cloetat est un CLImpEtatFact() clifact_id est un entier sans signe sur _TAILLE_INT // Identifiant de la facture mmontant_frais est un monétaire // Montant frais SI cloetat:etat_b_init(_pparam1,_pparam3) <> Vrai ALORS RENVOYER Annuler ires est un entier = cloetat:etat_b_litdonnee() SI ires = 2 ALORS //Dernière facture avant sorti d'impression TotFrais = mmontant_frais // on renseigne le total frais dans la facture (dernière). Avant impression. // fin programme RENVOYER ires sprestcode est une chaîne = cloetat:azvariable("lignfact.prest_code") bfrais est un booléen = cloetat:getvaleur("prestation",sprestcode,"prest_b_classfrais") SI clifact_id <> cloetat:azvariable("lignfact.fact_id") ALORS // on est sur une nouvelle facture. TotFrais = mmontant_frais // on renseigne donc le total frais de la facture précédente. clifact_id = cloetat:azvariable("lignfact.fact_id") // on récupéré ID de la nouvelle facture mmontant_frais = 0 // réinitialisation du montant pour la nouvelle facture SI bfrais ALORS // on récupère le montant des frais, pour chaque ligne de ligne de facture mmontant_frais += Val(cloEtat:AzVariable("LIGNFACT.LFACT_M_PV")) cloetat:inblignesauté ++ RENVOYER Faux SINON RENVOYER Vrai DiaClientSQL Modification des modèles de factures Page 17 sur 21
Extraction débours (chapitre 5 pré facturation = Débours + Frais) Créer un champ calculé : exemple : TOTDEBOURS Prendre le même code que pour l extraction des frais. REMPLACER : TotFrais par TOTDEBOURS partout dans le code, ainsi que mmontant_frais par mmontant_debours REMPLACER AUSSI : sprestcode est une chaîne = cloetat:azvariable("lignfact.prest_code") bfrais est un booléen = cloetat:getvaleur("prestation",sprestcode,"prest_b_classfrais") PAR : bfrais est un booléen = (cloetat:azvariable("lignfact.lfact_i_chapitre") = 5 ) Extraction Frais de chancellerie Créer un champ calculé : exemple : FRAIS_CHANCELLERIE Prendre le même code que pour l extraction des frais. REMPLACER : TotFrais par FRAIS_CHANCELLERIE partout dans le code, ainsi que mmontant_frais par MFraisChancellerie REMPLACER AUSSI : sprestcode est une chaîne = cloetat:azvariable("lignfact.prest_code") bfrais est un booléen = cloetat:getvaleur("prestation",sprestcode,"prest_b_classfrais") DiaClientSQL Modification des modèles de factures Page 18 sur 21
PAR : bfrais est un booléen = (cloetat:azvariable("lignfact.lfact_i_chapitre") = 8 ) Tableau de 15 échéances au lieu de 12 prévues 1. Créer un champ calculé FACTID en haut de l état. 2. Ajouter dans le tableau les 3 échéances supplémentaire (DATE_ECHEANCE13, MONTANT_ECHEANCE13, etc) 3. Ajouter le code suivant dans «Avant impression de FACTID FACTID =cloetat:azvariable("facture.fact_id") FACTID..Visible = Faux inb est un entier = 15 sreq est une chaîne sid est une chaîne i est un entier = 1 ifactid est un entier sans signe sur _TAILLE_INT = FACTID closql est un CLSQL() sreq = [ SELECT FACTECH_DATE, FACTECH_M_MONTANT FROM fact_echeance where fact_id = %1 ORDER BY FACTECH_DATE ] sreq = ChaîneConstruit(sReq,iFActId) POUR j = 1 A inb {"DATE_ECHEANCE"+j,indChamp} = "" {"MONTANT_ECHEANCE"+j,indChamp} = "" SI closlq:exec(sreq,sid) ALORS TANTQUE closlq:suivant(sid) SI i <= inb ALORS {"DATE_ECHEANCE"+i,indChamp} = closlq:col(1,sid) {"MONTANT_ECHEANCE"+i,indChamp} = closlq:col(2,sid) i++ Champ prix unitaire recalculé en fonction du montant et de la quantité Insérer le code suivant dans le cadre «Avant impression BLOC_CORPS» DiaClientSQL Modification des modèles de factures Page 19 sur 21
cloetat:etat_b_corps_av_imp() ////////////////////////////////////////////////////////////////////// // Ci-dessous votre code pour ajouter des champs calculés // // sur les lignes de factures // ////////////////////////////////////////////////////////////////////// SI QTE=0 ALORS PUHT=PVHT SINON PUHT=PVHT/QTE Insertion du nom et prénom du niveau 1 collaborateur de la fiche dossier COLN1 ocollab est un CLFicCollab COLN1 = "" SI ocollab:get(cloetat:azvariable("adresse.col_code_n1")) = Vrai ALORS COLN1="Collaborateur N1 : "+ ocollab:getrubrique("col_nom")+" "+ocollab:getrubrique("col_prenom") Récupération des coordonnées de la banque du cabinet (monobanque uniquement) Exemple du tableau en bas de la facture : Nos références bancaires : Nom de la banque Adresse1 - Code Postal Ville IBAN International Bank Account Number BIC Bank Identifier Code FR76 0000 0000 0000 0000 0000 000 XXXXXXX RIB Identifiant national de compte bancaire Banque Guichet N compte Clé 00000 00000 00000000000 00 Sbanque est une chaîne srib est une chaîne osql est un CLSQL Sbanque=oSQL:ExecSelect("SELECT BANQUE_NOM, CONCAT(BANQUE_ADR1,' - ',BANQUE_CP,' ',BANQUE_VILLE),BANQUE_RIB, BANQUE_IBAN, BANQUE_BIC FROM BANQUE WHERE SOC_CODE="+QUOTE(cloEtat:AzVariable("SOCIETE.SOC_CODE"))+" LIMIT 1") DiaClientSQL Modification des modèles de factures Page 20 sur 21
SOCNOMBQ SOCBQADRVILLE srib srib SOCBQBQ SOCBQGUICHET SOCBQCPTE SOCBQCLE = ExtraitChaîne(Sbanque,1,TAB) = ExtraitChaîne(Sbanque,2,TAB) = ExtraitChaîne(Sbanque,3,TAB) = Remplace(sRIB,".","") = Milieu(sRIB,1,5) = Milieu(sRIB,6,5) = Milieu(sRIB,11,11) = Milieu(sRIB,22,2) DiaClientSQL Modification des modèles de factures Page 21 sur 21