PureBasic

Forums PureBasic
Nous sommes le Dim 25/Oct/2020 3:15

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 11 messages ] 
Auteur Message
 Sujet du message: Date de paiement de la retraite
MessagePosté: Ven 07/Juin/2019 10:05 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 02/Oct/2011 16:17
Messages: 2318
Localisation: 50200 Coutances
Bonjour à tous,

pour ceux que ça intéresse, car n'ayant pas de projets de développement en ce moment, j'ai fait ce petit programme qui calcule les dates de paiement de la retraite, mais pas les sommes versées.

Ce programme est largement améliorable.

Code:
;Date de paiement de la retraite
;par Micoute 7 juin 2019
;remis à jour le 17 juin 2019

EnableExplicit

Enumeration Fenetres
  #Fenetre_principale
EndEnumeration

Enumeration Gadgets
  #Txt_Enonce
  #Str_Annee
  #Lst_Paiements
  #Btn_Quitter
EndEnumeration

Enumeration Polices
  #Police
EndEnumeration

Structure sMois
  Nom.s
  Numero.i
EndStructure

Structure sJour
  Nom.s
  Numero.i
EndStructure 

Structure Retraite
  NomMois.s
  NomJour.s
  J.i
  M.i
  A.i
EndStructure

LoadFont(#Police, "Verdana", 12)
SetGadgetFont(#PB_Default, FontID(#Police))

Global Evenement, i, Jour, Mois, Annee = Year(Date()), Retraite.Retraite
Global Dim TabNomMois.sMois(12), Dim TabNomJours.sJour(6)

For i = 1 To 12
  TabNomMois(i)\Nom=StringField("janvier février mars avril mai juin juillet août septembre octobre novembre décembre",i," ")
  TabNomMois(i)\Numero=i
Next i

For i = 0 To 6
  TabNomJours(i)\Nom=StringField("dimanche lundi mardi mercredi jeudi vendredi samedi",i+1," ")
  TabNomJours(i)\Numero=i
Next i


Declare.s Paiement_Retraite(Annee, Mois)
Declare Programme_principal()
Declare Quitter()

Programme_principal()

Procedure Programme_principal()
  If OpenWindow(#Fenetre_principale, 0, 0, 380, 380, "Retraite", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
    TextGadget(#Txt_Enonce, 20, 20, 360, 20, "jours de paiement de la retraite en " + Annee)
    ListIconGadget(#Lst_Paiements, 30, 60, 330, 270, "Date", 320, #LVS_NOCOLUMNHEADER)
    ButtonGadget(#Btn_Quitter, 140, 350, 100, 20, "Quitter")
    i = 1
    While i <= 11
      Paiement_Retraite(Annee, i)
      i + 1
      AddGadgetItem(#Lst_Paiements, i, Retraite\NomMois + " : " + Retraite\NomJour + " " + Retraite\J + " " +TabNomMois(i)\Nom + " " + Retraite\A)
    Wend   
    Paiement_Retraite(Annee + 1, 12)
    AddGadgetItem(#Lst_Paiements, i, "décembre" + " : " + Retraite\NomJour + " " + Retraite\J + " " +TabNomMois(1)\Nom + " " + Retraite\A)
    BindGadgetEvent(#Btn_Quitter, @Quitter())
  EndIf
EndProcedure

Procedure Quitter()
  Select EventType()
    Case #PB_EventType_LeftClick
      CloseWindow(#Fenetre_principale)
      End
  EndSelect
EndProcedure

Repeat
  Evenement = WaitWindowEvent()
  Select Evenement

    Case #PB_Event_Gadget
      Select EventGadget()
        Case #Btn_Quitter
      EndSelect

    Case #PB_Event_CloseWindow
      End
  EndSelect
ForEver

Procedure.s Paiement_Retraite(Annee, Mois)
  Protected Jour = 9, JourSem = 1 ;lundi
  Protected DatePaiement = Date(Annee, Mois, Jour, 0, 0, 0)
  ;Le paiement est effectué le jour ouvré le plus proche du 9, mais jamais après
  If DayOfWeek(DatePaiement) = 0 ;Si c'est un dimanche, on enlève 2 jours
    JourSem = 5
    Jour = 7
    DatePaiement = Date(Annee, Mois, Jour, 0, 0, 0)
  ElseIf DayOfWeek(DatePaiement) = 6 ;Si c'est un samedi, on enlève 1 jour
    JourSem = 5
    Jour = 8
    If mois = 5 ;Si c'est le 8 mai, on soustrait 1 jour
      jour = 7
    EndIf
    DatePaiement = Date(Annee, Mois, Jour, 0, 0, 0)
  EndIf
 
  Retraite\A = Annee
  Retraite\J = Day(Date(Annee, Mois, Jour, 0, 0, 0))
  Retraite\NomJour = TabNomJours(DayOfWeek(DatePaiement) + 1)\Nom
  Retraite\M = Mois
  Retraite\NomMois = TabNomMois(Mois)\Nom
EndProcedure

_________________
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce GT 640 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.72 LTS
Un homme doit être poli, mais il doit aussi être libre !


Dernière édition par Micoute le Lun 17/Juin/2019 8:39, édité 1 fois.

Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Date de paiement de la retraite
MessagePosté: Sam 08/Juin/2019 9:37 
Hors ligne

Inscription: Jeu 05/Fév/2009 17:58
Messages: 980
Merci Micoute :lol:
Dommage que ton programme ne permet pas d'augmenter le montant. :mrgreen: :oops: :lol:


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Date de paiement de la retraite
MessagePosté: Sam 08/Juin/2019 13:46 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 02/Oct/2011 16:17
Messages: 2318
Localisation: 50200 Coutances
Oui, et c'est bien dommage, car ce sera mieux que le loto et moins cher.

D'ailleurs, je l'ai amélioré:
Code:
;Date de paiement de la retraite
;par Micoute 7 juin 2019

EnableExplicit

Enumeration Fenetres
  #Fenetre_principale
EndEnumeration

Enumeration Gadgets
  #Txt_Enonce
  #Str_Annee
  #Lst_Paiements
  #Btn_Quitter
EndEnumeration

Enumeration Polices
  #Police
EndEnumeration

Structure sMois
  Nom.s
  Numero.i
EndStructure

Structure sJour
  Nom.s
  Numero.i
EndStructure 

Structure Retraite
  NomMois.s
  NomJour.s
  J.i
  M.i
  A.i
EndStructure

LoadFont(#Police, "Verdana", 12)
SetGadgetFont(#PB_Default, FontID(#Police))

Global Evenement, i, Jour, Mois, Annee = Year(Date()), Retraite.Retraite
Global Dim TabNomMois.sMois(12), Dim TabNomJours.sJour(6)

For i = 1 To 12
  TabNomMois(i)\Nom=StringField("janvier février mars avril mai juin juillet août septembre octobre novembre décembre",i," ")
  TabNomMois(i)\Numero=i
Next i

For i = 0 To 6
  TabNomJours(i)\Nom=StringField("dimanche lundi mardi mercredi jeudi vendredi samedi",i+1," ")
  TabNomJours(i)\Numero=i
Next i


Declare.s Paiement_Retraite(Annee, Mois)
Declare Programme_principal()
Declare Quitter()

Programme_principal()

Procedure Programme_principal()
  If OpenWindow(#Fenetre_principale, 0, 0, 380, 360, "Retraite", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
    TextGadget(#Txt_Enonce, 20, 20, 360, 20, "jours de paiement de la retraite en " + Annee)
    ListIconGadget(#Lst_Paiements, 30, 60, 330, 250, "Date", 320, #LVS_NOCOLUMNHEADER)
    ButtonGadget(#Btn_Quitter, 140, 330, 100, 20, "Quitter")
    i = 2
    While i <= 11
      Paiement_Retraite(Annee, i)
      i + 1
      AddGadgetItem(#Lst_Paiements, i, Retraite\NomMois + " : " + Retraite\NomJour + " " + Retraite\J + " " +TabNomMois(i-1)\Nom + " " + Retraite\A)
    Wend   
    Paiement_Retraite(Annee + 1, 12)
    AddGadgetItem(#Lst_Paiements, i, "décembre" + " : " + Retraite\NomJour + " " + Retraite\J + " " +TabNomMois(1)\Nom + " " + Retraite\A)
    BindGadgetEvent(#Btn_Quitter, @Quitter())
  EndIf
EndProcedure

Procedure Quitter()
  Select EventType()
    Case #PB_EventType_LeftClick
      CloseWindow(#Fenetre_principale)
      End
  EndSelect
EndProcedure

Repeat
  Evenement = WaitWindowEvent()
  Select Evenement

    Case #PB_Event_Gadget
      Select EventGadget()
        Case #Btn_Quitter
      EndSelect

    Case #PB_Event_CloseWindow
      End
  EndSelect
ForEver

Procedure.s Paiement_Retraite(Annee, Mois)
  Protected Jour = 9, JourSem = 1 ;lundi
  Protected DatePaiement = Date(Annee, Mois, Jour, 0, 0, 0)
  ;Le paiement est effectué le jour ouvré le plus proche du 9, mais jamais après
  If DayOfWeek(DatePaiement) = 0 ;Si c'est un dimanche, on enlève 2 jours
    JourSem = 5
    Jour = 7
    DatePaiement = Date(Annee, Mois, Jour, 0, 0, 0)
  ElseIf DayOfWeek(DatePaiement) = 6 ;Si c'est un samedi, on enlève 1 jour
    JourSem = 5
    Jour = 8
    If mois = 5 ;Si c'est le 8 mai, on soustrait 1 jour
      jour = 7
    EndIf
    DatePaiement = Date(Annee, Mois, Jour, 0, 0, 0)
  EndIf
 
  Retraite\A = Annee
  Retraite\J = Day(Date(Annee, Mois, Jour, 0, 0, 0))
  Retraite\NomJour = TabNomJours(DayOfWeek(DatePaiement) + 1)\Nom
  Retraite\M = Mois
  Retraite\NomMois = TabNomMois(Mois)\Nom
EndProcedure

_________________
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce GT 640 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.72 LTS
Un homme doit être poli, mais il doit aussi être libre !


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Date de paiement de la retraite
MessagePosté: Lun 10/Juin/2019 12:18 
Hors ligne
Avatar de l’utilisateur

Inscription: Jeu 29/Juil/2004 16:33
Messages: 2918
Localisation: Klyntar
Merci Micoute,

Même si je ne suis pas en retraite :lol:






@++

_________________
Windows 10 x64, PureBasic 5.72 1 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Date de paiement de la retraite
MessagePosté: Lun 10/Juin/2019 13:31 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 02/Oct/2011 16:17
Messages: 2318
Localisation: 50200 Coutances
J'espère quand tu auras l'âge, ça existera encore et que ça payera plus que maintenant, car on se retrouve au niveau de ce qu'on gagnait quand on était apprenti.

_________________
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce GT 640 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.72 LTS
Un homme doit être poli, mais il doit aussi être libre !


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Date de paiement de la retraite
MessagePosté: Lun 10/Juin/2019 20:20 
Hors ligne
Avatar de l’utilisateur

Inscription: Jeu 29/Juil/2004 16:33
Messages: 2918
Localisation: Klyntar
Oula, vue la conjoncture actuelle. Quand je serais en retraite, ton code sera malheureusement obsolète. Il faudra faire un programme qui me dit combien je dois a l'état :lol:
A dans 30 ans....






@++

_________________
Windows 10 x64, PureBasic 5.72 1 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Date de paiement de la retraite
MessagePosté: Mar 11/Juin/2019 8:09 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 02/Oct/2011 16:17
Messages: 2318
Localisation: 50200 Coutances
Dans 30 ans, je ne serai plus de ce monde, mais ça ne me fait pas peur.

_________________
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce GT 640 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.72 LTS
Un homme doit être poli, mais il doit aussi être libre !


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Date de paiement de la retraite
MessagePosté: Dim 16/Juin/2019 20:03 
Hors ligne

Inscription: Mer 13/Sep/2017 14:35
Messages: 69
Localisation: Picardie (Somme)
"Bonsoir Michel" Bonjour à tous,

Je vois que tu 'as pas été payé en janvier et décembre 8O ...Je te paie ces 2 mois avec un bon montant ...éh éh :lol: voir code :P /J Michel
Code:
;Date de paiement de la retraite
;par Micoute 7 juin 2019

EnableExplicit

Enumeration Fenetres
  #Fenetre_principale
EndEnumeration

Enumeration Gadgets
  #Txt_Enonce
  #Str_Annee
  #Lst_Paiements
  #Btn_Quitter
EndEnumeration

Enumeration Polices
  #Police
EndEnumeration

Structure sMois
  Nom.s
  Numero.i
EndStructure

Structure sJour
  Nom.s
  Numero.i
EndStructure 

Structure Retraite
  NomMois.s
  NomJour.s
  J.i
  M.i
  A.i
 
EndStructure

LoadFont(#Police, "Verdana", 8)
SetGadgetFont(#PB_Default, FontID(#Police))

Global Evenement, i, Jour, Mois, Annee = Year(Date()), Retraite.Retraite
Global Dim TabNomMois.sMois(12), Dim TabNomJours.sJour(6)

For i = 1 To 12
  TabNomMois(i)\Nom=StringField("Janvier Février Mars Avril Mai Juin Juillet Août Septembre Octobre Novembre Décembre",i," ")
  TabNomMois(i)\Numero=i
Next i

For i = 0 To 6
  TabNomJours(i)\Nom=StringField("Dimanche Lundi Mardi Mercredi Jeudi Vendredi Samedi",i," ")   
  TabNomJours(i)\Numero=i
Next i


Declare.s Paiement_Retraite(Annee, Mois)
Declare Programme_principal()
Declare Quitter()

Programme_principal()

Procedure Programme_principal()
 
  If OpenWindow(#Fenetre_principale, 20, 20, 390, 360, "Retraite", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
    TextGadget(#Txt_Enonce, 20, 20, 460, 20, "Jours de paiement retraite en " + Annee + " allez disons" + ":3200 € " )
    ListIconGadget(#Lst_Paiements, 25, 60, 340, 250, "Date", 420, #LVS_NOCOLUMNHEADER)
    ButtonGadget(#Btn_Quitter, 140, 330, 100, 20, "Quitter")
    i = 1
    While i <= 11
      Paiement_Retraite(Annee, i)
      i + 1
      AddGadgetItem(#Lst_Paiements, i, "" + Retraite\M + " : " + Retraite\NomMois + " : " + Retraite\NomJour + " " + Retraite\J + " " +TabNomMois(i-1)\Nom + " " + Retraite\A)
    Wend   
    Paiement_Retraite(Annee, i)
    AddGadgetItem(#Lst_Paiements, i, "" + Retraite\M + ": Décembre" + " : " + Retraite\NomJour + " " + Retraite\J + " " +TabNomMois(i)\Nom + " " + Retraite\A)
    BindGadgetEvent(#Btn_Quitter, @Quitter())
  EndIf
EndProcedure

Procedure Quitter()
  Select EventType()
    Case #PB_EventType_LeftClick
      CloseWindow(#Fenetre_principale)
      End
  EndSelect
EndProcedure

Repeat
  Evenement = WaitWindowEvent()
  Select Evenement

    Case #PB_Event_Gadget
      Select EventGadget()
        Case #Btn_Quitter
      EndSelect

    Case #PB_Event_CloseWindow
      End
  EndSelect
ForEver

Procedure.s Paiement_Retraite(Annee, Mois)
  Protected Jour = 9, JourSem = 1 ;lundi
  Protected DatePaiement = Date(Annee, Mois, Jour, 0, 0, 0)
  ;Le paiement est effectué le jour ouvré le plus proche du 9, mais jamais après
  If DayOfWeek(DatePaiement) = 0 ;Si c'est un dimanche, on enlève 2 jours
    JourSem = 5
    Jour = 7
    DatePaiement = Date(Annee, Mois, Jour, 0, 0, 0)
  ElseIf DayOfWeek(DatePaiement) = 6 ;Si c'est un samedi, on enlève 1 jour
    JourSem = 5
    Jour = 8
    If mois = 5 ;Si c'est le 8 mai, on soustrait 1 jour
      jour = 7
    EndIf
    DatePaiement = Date(Annee, Mois, Jour, 0, 0, 0)
  EndIf
 
  Retraite\A = Annee

  Retraite\J = Day(Date(Annee, Mois, Jour, 0, 0, 0))
  Retraite\NomJour = TabNomJours(DayOfWeek(DatePaiement) + 1)\Nom
  Retraite\M = Mois
  Retraite\NomMois = TabNomMois(Mois)\Nom
EndProcedure


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Date de paiement de la retraite
MessagePosté: Lun 17/Juin/2019 8:26 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 02/Oct/2011 16:17
Messages: 2318
Localisation: 50200 Coutances
Bonjour Jean-mimi,

tu n'es pas aussi loin de la vérité, mais le paiement de la retraite est effectué quand le mois est achevé, car on doit prouver qu'on était vivant le mois dernier.

Re édition

Code remis à jour au premier poste, car je me suis aperçu que les mois étaient érronés.

Veuillez tous m'excuser pour cette bévue.

_________________
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce GT 640 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.72 LTS
Un homme doit être poli, mais il doit aussi être libre !


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Date de paiement de la retraite
MessagePosté: Mer 19/Juin/2019 7:10 
Hors ligne

Inscription: Mer 13/Sep/2017 14:35
Messages: 69
Localisation: Picardie (Somme)
Bon et Joyeux anniversaire Michel :D :lol:


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Date de paiement de la retraite
MessagePosté: Mer 19/Juin/2019 7:38 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 02/Oct/2011 16:17
Messages: 2318
Localisation: 50200 Coutances
Merci mon bon jean-mimi.

_________________
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce GT 640 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.72 LTS
Un homme doit être poli, mais il doit aussi être libre !


Haut
 Profil  
Répondre en citant le message  
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 11 messages ] 

Heures au format UTC + 1 heure


Qui est en ligne

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


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages

Rechercher:
Aller à:  
cron

 


Powered by phpBB © 2008 phpBB Group | Traduction par: phpBB-fr.com
subSilver+ theme by Canver Software, sponsor Sanal Modifiye