1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
| Public Sub Form_Current()
Dim sql As String, DateBonus As Date, MtBonus As Double, DatDernAchat As Date
'Réinitialiser le sfrm_Clients01
Me.sfrm_Clients01!zdlVendeurs = " "
DoCmd.GoToControl "sfrm_Clients01"
DoCmd.GoToRecord , , acNewRec
'Aménager les données statistiques
If IsNull(Me.txt_Nom) Then 'C'est donc un nouveau client à créer
Me.ZdtMin = ""
Me.zdtDateMin = ""
Me.zdtMax = ""
Me.zdtDateMax = ""
Me.zdtTotalAchats = ""
Me.zdtNbreAchats = ""
Me.zdtAchatMoyen = ""
Else 'C'est un client ancien (déjà enregistré)
Me.ZdtMin = DMin("Num_MontantAchat", "tventes", "Id_client=" & Me.Id_client)
Me.zdtDateMin = DLookup("Dte_DateAchat", "tventes", "Id_client=" & Me.Id_client _
& " And Num_MontantAchat=" & Replace(Me.ZdtMin, ",", "."))
Me.zdtMax = DMax("Num_MontantAchat", "tventes", "Id_client=" & Me.Id_client)
Me.zdtDateMax = DLookup("Dte_DateAchat", "tventes", "Id_client=" & Me.Id_client _
& " And Num_MontantAchat=" & Replace(Me.zdtMax, ",", "."))
Me.zdtTotalAchats = DSum("Num_MontantAchat", "tventes", "Id_client=" & Me.Id_client)
Me.zdtNbreAchats = DCount("Num_MontantAchat", "tventes", "Id_client=" & Me.Id_client)
Me.zdtAchatMoyen = Me.zdtTotalAchats / Me.zdtNbreAchats
End If
'Aménager BonusAnniv
'S'il n'y a jamais eu d'achat --> pas de bonus
If DCount("*", "tventes", "Id_client=" & Nz(Me.Id_client, 0)) = 0 Then GoTo FinCalculBonusAnniv
'Y a-t-il eu un anniversaire depuis dernier achat, si oui ---> bonus
DatDernAchat = DMax("Dte_DateAchat", "tventes", "Id_client=" & Me.Id_client)
If DatDernAchat < DernierAnniversaire(Nz(Me.Dte_DateNaissance, #1/1/2000#)) Then
'créer un bonus
'chercher le 1er anniversaire qui a suivi le dernier achat
DateBonus = Format(Nz(Me.Dte_DateNaissance, #1/1/2000#), "dd/mm/") _
& Format(DatDernAchat, "yy")
If DateBonus < DatDernAchat Then DateBonus = Format(DateBonus, "dd/mm/") _
& Format(DateBonus, "yy") + 1
Reboucler:
If DateBonus > DernierAnniversaire(Nz(Me.Dte_DateNaissance, #1/1/2000#)) _
Then GoTo FinCalculBonusAnniv
MtBonus = Capital(Me.Id_client, DateBonus) * DLookup("ResultatNum", "tAutresParametres", "Argument=""TauxBonus""")
sql = "INSERT INTO tBonusAnniv ( id_Client, DateBonus, MtBonus ) SELECT " _
& Me.Id_client & " AS Expr1, " _
& """" & DateBonus & """ AS Expr2, " _
& Replace(MtBonus, ",", ".") & " AS Expr3;"
DoCmd.SetWarnings False
DoCmd.RunSQL (sql)
DoCmd.SetWarnings True
Me.sfrm_Clients03.Requery
'reboucler si plusieurs anniversaires depuis dernier achat
If DateBonus <= DernierAnniversaire(Nz(Me.Dte_DateNaissance, #1/1/2000#)) Then
DateBonus = Format(DateBonus, "dd/mm/") & Format(DateBonus, "yy") + 1
GoTo Reboucler
End If
End If
FinCalculBonusAnniv:
'Positionner le curseur sur recherche
DoCmd.GoToControl "zdlRechercheClient"
'montrer ou cacher le bouton Bénéficier Ristourne selon les circonstances
If Me.zdtRistournePotentielle <> 0 Then
Me.BtBeneficier.Visible = True
Else
Me.BtBeneficier.Visible = False
End If
End Sub |
Partager