1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies. En savoir plus.
  2. Bonjour tout le monde ! Veillez consulter la Politique de forum pour comprendre nos règles, Merci a vous !
    Rejeter la notice

Aide au calcul du nombre de mois

Discussion dans 'Résolution problème & conseils' créé par vicent54, Fev 26, 2018.

Tags:
  1. gelop4

    gelop4 Member
    MEMBRE WX

    Inscrit:
    Fev 7, 2018
    Messages:
    48
    J'aime reçus:
    90

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    Gelop4:

    d1, d2 dDiff sont des Date
    dDiff est une date ou durée variable?
    Dans les deux cas, il marque l'erreur.
    Étant la date, l'erreur indique qu'une durée champ ne peut pas être convertie en date.
    Cliquez pour agrandir...
    Oui, au temps pour moi, j'ai écrit sans vérifier dans windev.
    En effet la différence de 2 dates donne une durée qui, évidement, na pa de propriété "mois".

    Donc voila la correction, et un solution pour calculer le nombre de mois révolus depuis un 1er décembre.
    Code (Text):

    d1, d2 sont des Dates
    duDiff est une Durée
    d1 = "20171201"
    d2 = "20180131"
    duDiff = d2 - d1
    Trace(duDiff..EnJours)


    // pour calculer les mois révolus depuis un 1er décembre
    nMois est un entier
    SI d2..Année = d1..Année ALORS
        nMois = d2..Mois - d1..Mois
    SINON
        nMois = d2..Mois + (d2..Année - d1..Année - 1) * 12
    FIN
    Trace(nMois)
     
     
  • channibal

    channibal Well-Known Member
    MEMBRE WX

    Inscrit:
    Fev 22, 2018
    Messages:
    210
    J'aime reçus:
    277
    Les premières problématiques constatées:

    - les mois de retard qui ne sont pas payés ils laisseront des vides dans le fichier des paiements : donc il faut envisager de les mettre a jour au moment d'enregistrement d'un nouveau paiement, exemple: si quelqu’un paie 3 mois de retard en aujourd’hui alors il faut passer 3 écritures consécutives avec les dates des mois en retard

    - il faut envisager a supprimer les mois payés de fichier des retard

    voila qlqs remarque en attendant que je termine les procédures de calcule des taux variables et les calcules plus complexes des paiements en periodiques variantes (comme payer par mois puis par trimestre puis par ans ...) etc

    PS: j'ai rectifié qlqs erreurs dans les procédures (mais qui ne changent pas grand chose au résultat attendu.) je mettrai une MAJ plus tard
     
  • channibal

    channibal Well-Known Member
    MEMBRE WX

    Inscrit:
    Fev 22, 2018
    Messages:
    210
    J'aime reçus:
    277
    sinon pour calculer le nombre de mois exacte voici une fonction qui le fait

    son utilisation est identique a DateDifférence

    Syntaxe:
    Résultat = MoisDifférence(dDateDebut,dDatefin)
    Résultat : Entier
    dDateDebut : variable de type date
    dDatefin : variable de type date

    Code (Text):
    PROCEDURE MoisDifférence(dDateDebut est une Date,dDateFin est une Date)

    dDateAVerifier est une Date
    dDernierJour est une Date
    nNbrDeJours est un entier
    nNbrmois est un entier

    nNbrDeJours = DateDifférence(dDateDebut,dDateFin)

    dDateAVerifier = dDateDebut
    nNbrmois = 0

    SELON nNbrDeJours
    //cas 28 février
    //Une année est bissextile si elle est divisible par 4, sauf si cette année est aussi un multiple de 100.
    //L'exception concerne les années multiples de 400 qui sont bissextiles.
        //Pour les autres années, la fonction DateValide() retourne Faux pour le 29 février
        CAS 29
            SI dDateDebut..Mois = 2 ET dDateFin..Mois = 3 ALORS
                dDateAVerifier = dDateFin
                dDateAVerifier--
                dDernierJour=DernierJourDuMois(dDateAVerifier)
                SI dDernierJour = dDateAVerifier ALORS
                    nNbrmois = 1
                FIN
            FIN
        AUTRE CAS
            POUR i = 1 _A_ nNbrDeJours
                dDernierJour=DernierJourDuMois(dDateAVerifier)
                SI dDernierJour = dDateAVerifier ALORS
                    nNbrmois++
                FIN
                dDateAVerifier++
            FIN
    FIN


    RENVOYER nNbrmois
     
     
  • channibal

    channibal Well-Known Member
    MEMBRE WX

    Inscrit:
    Fev 22, 2018
    Messages:
    210
    J'aime reçus:
    277
    dsl pour les postes successives

    Voila une MAJ

    j'ai rectifié un peu le tire et j'ai ajouté un bouton pour calculer automatiquement le montant à payer, le nombre des mensualités, le nombre des mois, des semaines, des années,... selon la periodique...

    ça peut te donner des idées ;)

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

     
    #24 channibal, Mar 1, 2018
    Dernière édition: Mar 5, 2018
    suenodesign apprécie ceci.
  • channibal

    channibal Well-Known Member
    MEMBRE WX

    Inscrit:
    Fev 22, 2018
    Messages:
    210
    J'aime reçus:
    277
    Bonsoir à tous,

    encore des modifications sur le projet:

    - coté des paiements:
    ajout d'un système de paiement par type (<normal> <retard><reliquat>)

    - coté des retard
    amélioration de système de calcul et vérification (encore a améliorer petit a petit mais on y arrivera ;))
    amélioration de système de calcule automatique des cadences de paiement et les montants a payer en appliquant les taux selon la periodique (à améliorer encore pour les cas plus complexes)

    -coté dossiers
    un reste à payer, un ancien solde et un solde en cours ont été ajouter (il faut les entrer dans le système de calcule des retard et paiements...)

    Ce que t'es en train de faire c'est un énorme travail de synthèse, la conception sera exigeante.

    En espérant que cela sera utile et te donnera des nouvelles idées, voici la nouvelle MAJ 02/03/2018

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!



    Bon dev.
     
    #25 channibal, Mar 2, 2018
    Dernière édition: Mar 5, 2018
    suenodesign apprécie ceci.
  • vicent54

    vicent54 Member

    Inscrit:
    Jan 25, 2018
    Messages:
    41
    J'aime reçus:
    15
    Cela m'arrive à plusieurs reprises. Dans ce cas, je l'ai ouvert avec windev 20 la programmation effectuée par Channibal, recompilé, réparé l'analyse et enregistré. Quand je l'ouvre avec windev 22 cela m'arrive:

    windev 22

    Error loading D:\WindevApps\Dettes\FEN_Fiche_F_Paiements.v/dv/ window.
    Unable to complete initialization:
    Le fichier ouvert ne contient pas une description valide (fobjet
    InternalConflict (DL)

    Y a-t-il une solution?

    Merci
     
  • channibal

    channibal Well-Known Member
    MEMBRE WX

    Inscrit:
    Fev 22, 2018
    Messages:
    210
    J'aime reçus:
    277

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    Cela m'arrive à plusieurs reprises. Dans ce cas, je l'ai ouvert avec windev 20 la programmation effectuée par Channibal, recompilé, réparé l'analyse et enregistré. Quand je l'ouvre avec windev 22 cela m'arrive:

    windev 22

    Error loading D:\WindevApps\Dettes\FEN_Fiche_F_Paiements.v/dv/ window.
    Unable to complete initialization:
    Le fichier ouvert ne contient pas une description valide (fobjet
    InternalConflict (DL)

    Y a-t-il une solution?

    Merci
    Cliquez pour agrandir...
    Est ce que le projet s'œuvre correctement avec la version 20?
     
  • obir

    obir Member

    Inscrit:
    Jan 1, 2018
    Messages:
    78
    J'aime reçus:
    78
    Bonjour,

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!


    tu peux me renouveler le lien de (Le projet (Attention c'est une version HFSQL C/S !!!!!!!))
    merci d'avance
     
  • vicent54

    vicent54 Member

    Inscrit:
    Jan 25, 2018
    Messages:
    41
    J'aime reçus:
    15

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    Est ce que le projet s'œuvre correctement avec la version 20?
    Cliquez pour agrandir...
    La version 20 s'ouvre ok.
     
  • gelop4

    gelop4 Member
    MEMBRE WX

    Inscrit:
    Fev 7, 2018
    Messages:
    48
    J'aime reçus:
    90

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    Cela m'arrive à plusieurs reprises. Dans ce cas, je l'ai ouvert avec windev 20 la programmation effectuée par Channibal, recompilé, réparé l'analyse et enregistré. Quand je l'ouvre avec windev 22 cela m'arrive:

    windev 22

    Error loading D:\WindevApps\Dettes\FEN_Fiche_F_Paiements.v/dv/ window.
    Unable to complete initialization:
    Le fichier ouvert ne contient pas une description valide (fobjet
    InternalConflict (DL)

    Y a-t-il une solution?

    Merci
    Cliquez pour agrandir...
    windev 22 détecte un numéro de série blacklisté! et bloque l'ouverture des fichiers.
    Solution: ouvrir/recompiler sous WD 20 avec une clé/dump non générique.

    Solution 2: attendre que j'ai un peu de temps (et de motivation) pour vous faire un programme afin de changer le numéro de série encodé dans les fichiers...
     
  • ProDev

    ProDev Well-Known Member
    MEMBRE WX

    Inscrit:
    Fev 11, 2018
    Messages:
    372
    J'aime reçus:
    373
    Merci gelop4 pour l'info
     
  • vicent54

    vicent54 Member

    Inscrit:
    Jan 25, 2018
    Messages:
    41
    J'aime reçus:
    15

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    windev 22 détecte un numéro de série blacklisté! et bloque l'ouverture des fichiers.
    Solution: ouvrir/recompiler sous WD 20 avec une clé/dump non générique.

    Solution 2: attendre que j'ai un peu de temps (et de motivation) pour vous faire un programme afin de changer le numéro de série encodé dans les fichiers...
    Cliquez pour agrandir...
    J'utilise une clé originale. J'ai eu Wx22.
     
  • channibal

    channibal Well-Known Member
    MEMBRE WX

    Inscrit:
    Fev 22, 2018
    Messages:
    210
    J'aime reçus:
    277
    Bonsoir a tous,

    Une version plus proche de ce qu'on veut faire au finale .

    -Le système de paiement et presque 100% opérationnel (encore Qlqs modifications et améliorations a faire )
    -Le système de calcul des retards et des periodiques amélioré

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    des remarques sur cette version, sommes-nous dans le bon chemin?


    MAJ:

    Il faut supprimer le fichier Ref_TypesPaiement avant de lancer le projet:

    [​IMG]

    Il faut aussi mettre à jour les dossiers depuis le menu Fichier>Administration.

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!



    Bon dev
     
    #33 channibal, Mar 4, 2018
    Dernière édition: Mar 5, 2018
    suenodesign apprécie ceci.
  • ProDev

    ProDev Well-Known Member
    MEMBRE WX

    Inscrit:
    Fev 11, 2018
    Messages:
    372
    J'aime reçus:
    373
    Merci

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

     
  • vicent54

    vicent54 Member

    Inscrit:
    Jan 25, 2018
    Messages:
    41
    J'aime reçus:
    15
    Excellente programmation. Merci de votre aide. Cela me permettra, ainsi qu' à d'autres personnes, d'apprendre une très bonne technique de programmation et de résoudre le problème des paiements mensuels.
    Merci beaucoup.
     
  • channibal

    channibal Well-Known Member
    MEMBRE WX

    Inscrit:
    Fev 22, 2018
    Messages:
    210
    J'aime reçus:
    277
    de rien ;)

    Le but est de te donner des nouvelles idées en proposant des approches différentes au problème.
    Peu importe le pourcentage d'efficacité de traitement, il peut être amélioré au fur et à mesure qu'on avance pour atteindre le but final qui, en développement, n'est jamais été atteint :D

    Sinon, une petite remarque a propos des limites des périodes pour avoir des calculs exactes:
    il faut toujours finir par le même jour
    exp. dans ton cas une année complète doit être
    date début = 01/12/2017 et la date fin = 01/12/2018

    Bon dev.
     
    #36 channibal, Mar 5, 2018
    Dernière édition: Mar 5, 2018
  • vicent54

    vicent54 Member

    Inscrit:
    Jan 25, 2018
    Messages:
    41
    J'aime reçus:
    15
    Une petite clarification. Le dernier jour n'est pas le 1er décembre mais le 30 novembre. N'est-ce pas exact? Je je je
     
  • channibal

    channibal Well-Known Member
    MEMBRE WX

    Inscrit:
    Fev 22, 2018
    Messages:
    210
    J'aime reçus:
    277
    Bonjour,

    Non pas vraiment exact :) n’oublions pas qu'on est en train de calculer des durées, un jour se compose de 24 heures qui commencent le 00:00 du jour (j) et se termine le 23:59, la 59eme seconde dure et se termine à 00:00 le lendemain (j+1) dés le terme "inclus" en français, en arabe (بدخول الغاية )

    Prenons un exemple :
    qlqun veut prendre un congé de 10 jours à partir du 1er juin, quel jour sera son retour au boulot?

    Alors pour calculer le nombre de jour entre le 1 et le 10 juin inclus c'est simple on commence par ajouter un 1 au premier jour (qui est le 1 juin), non?
    1+1 = 2 ?
    si on s’arrête là combien de jour on a ? 1 ou 2?

    tu vois? dés la première itération on se trouve avec une fausse résultat.

    Pour être plus clair réduisant notre nombre de jour de congé à seulement 1 jour (un congé de 1 jour le premier juin seulement) alors comment calculer?
    1+1 = 1? ;)

    conclusion
    si on a une demande de congé avec une date de début = 1 et une date de fin = 11 alors on calcule 10 jours, le 11 sera le jour de reprise.
    si par-contre on a la même demande de congé avec une date de début = 1 et une date de fin = 10 avec le terme inclus mentionné après le 10 alors on calcule 10 jours, le 11 sera le jour de reprise, mais notre système de calcule ne change pas on commence par 1 et on termine par 11, qui sera dans nos deux cas le jour de reprise.

    donc dans ton cas une année commence le 1/12/A et se termine le 1/12/A+1 (parce que le 30/12/A l'année n'est pas encore totalement terminée, elle ne se terminera que quand la 59eme seconde se termine à 00:00 le 1/12/A+1)

    j’espère que j’étais clair. Il est toujours difficile d'expliquer les manipulations des durées et dates, ceux qui ont déjà développé des solutions RH te confirmeront :(
     
    #38 channibal, Mar 6, 2018
    Dernière édition: Mar 6, 2018
    suenodesign apprécie ceci.
  • warjoen

    warjoen Active Member
    MEMBRE WX

    Inscrit:
    Jan 1, 2018
    Messages:
    157
    J'aime reçus:
    122
  • Partager cette page

    Chargement...