Page 1 sur 1

Date de paiement de la retraite

Publié : ven. 07/juin/2019 10:05
par Micoute
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 : Tout sélectionner

;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

Re: Date de paiement de la retraite

Publié : sam. 08/juin/2019 9:37
par MLD
Merci Micoute :lol:
Dommage que ton programme ne permet pas d'augmenter le montant. :mrgreen: :oops: :lol:

Re: Date de paiement de la retraite

Publié : sam. 08/juin/2019 13:46
par Micoute
Oui, et c'est bien dommage, car ce sera mieux que le loto et moins cher.

D'ailleurs, je l'ai amélioré:

Code : Tout sélectionner

;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

Re: Date de paiement de la retraite

Publié : lun. 10/juin/2019 12:18
par venom
Merci Micoute,

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






@++

Re: Date de paiement de la retraite

Publié : lun. 10/juin/2019 13:31
par Micoute
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.

Re: Date de paiement de la retraite

Publié : lun. 10/juin/2019 20:20
par venom
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....






@++

Re: Date de paiement de la retraite

Publié : mar. 11/juin/2019 8:09
par Micoute
Dans 30 ans, je ne serai plus de ce monde, mais ça ne me fait pas peur.

Re: Date de paiement de la retraite

Publié : dim. 16/juin/2019 20:03
par Mouillard
"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 : Tout sélectionner

;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

Re: Date de paiement de la retraite

Publié : lun. 17/juin/2019 8:26
par Micoute
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.

Re: Date de paiement de la retraite

Publié : mer. 19/juin/2019 7:10
par Mouillard
Bon et Joyeux anniversaire Michel :D :lol:

Re: Date de paiement de la retraite

Publié : mer. 19/juin/2019 7:38
par Micoute
Merci mon bon jean-mimi.