Skip to content
GitLab
Explorer
Connexion
Navigation principale
Rechercher ou aller à…
Projet
V
vracoop_click_and_collect
Gestion
Activité
Membres
Labels
Programmation
Tickets
Tableaux des tickets
Jalons
Code
Requêtes de fusion
Dépôt
Branches
Validations
Étiquettes
Graphe du dépôt
Comparer les révisions
Analyse
Données d'analyse des chaînes de valeur
Analyse des contributeurs
Données d'analyse du dépôt
Aide
Aide
Support
Documentation de GitLab
Comparer les forfaits GitLab
Forum de la communauté GitLab
Contribuer à GitLab
Donner votre avis
Raccourcis clavier
?
Extraits de code
Groupes
Projets
Afficher davantage de fils d'Ariane
Le Filament
Vracoop
vracoop_click_and_collect
Validations
34b1aa84
Valider
34b1aa84
rédigé
Il y a 5 ans
par
Juliana
Parcourir les fichiers
Options
Téléchargements
Correctifs
Plain Diff
Modifs sur créneau dispo du jour
parent
bce76465
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
Modifications
1
Afficher les modifications d'espaces
En ligne
Côte à côte
Affichage de
1 fichier modifié
models/vracoop_point_retrait.py
+73
-20
73 ajouts, 20 suppressions
models/vracoop_point_retrait.py
avec
73 ajouts
et
20 suppressions
models/vracoop_point_retrait.py
+
73
−
20
Voir le fichier @
34b1aa84
...
@@ -65,7 +65,8 @@ class VracoopPointRetrait(models.Model):
...
@@ -65,7 +65,8 @@ class VracoopPointRetrait(models.Model):
string
=
"
Configuration des horaires
"
)
string
=
"
Configuration des horaires
"
)
nb_max_retrait
=
fields
.
Integer
(
nb_max_retrait
=
fields
.
Integer
(
"
Nombre de retrait max par tranche horaire
"
)
"
Nombre de retrait max par tranche horaire
"
)
nb_day_available
=
fields
.
Integer
(
"
Nombre de jours pour commande
"
)
nb_day_available
=
fields
.
Integer
(
"
Nombre de jours pour commande
"
,
default
=
7
)
@api.multi
@api.multi
def
slot_calculate
(
self
):
def
slot_calculate
(
self
):
...
@@ -100,12 +101,16 @@ class VracoopPointRetrait(models.Model):
...
@@ -100,12 +101,16 @@ class VracoopPointRetrait(models.Model):
(
'
active_day
'
,
'
=
'
,
False
)])
(
'
active_day
'
,
'
=
'
,
False
)])
count_day
=
rec
.
nb_day_available
+
exclure_days_nb
count_day
=
rec
.
nb_day_available
+
exclure_days_nb
# Liste des jours où je peux récupérer la commande
# en fonction nombre de jour dispo sur la fiche du point retrait
list_week
=
list
(
rrule
(
list_week
=
list
(
rrule
(
DAILY
,
DAILY
,
count
=
count_day
,
count
=
count_day
,
dtstart
=
datetime
.
today
()))
dtstart
=
datetime
.
today
()))
for
week
in
list_week
:
for
week
in
list_week
:
# On exclut les jours où la journée
# du point de retrait n'est pas actif
exclure_the_day
=
rec
.
vracoop_retrait_time_ids
.
search
([
exclure_the_day
=
rec
.
vracoop_retrait_time_ids
.
search
([
(
'
vracoop_point_retrait_id
'
,
'
=
'
,
rec
.
id
),
(
'
vracoop_point_retrait_id
'
,
'
=
'
,
rec
.
id
),
(
'
active_day
'
,
'
=
'
,
False
),
(
'
active_day
'
,
'
=
'
,
False
),
...
@@ -113,13 +118,18 @@ class VracoopPointRetrait(models.Model):
...
@@ -113,13 +118,18 @@ class VracoopPointRetrait(models.Model):
if
exclure_the_day
:
if
exclure_the_day
:
pass
pass
else
:
else
:
# Récupération de la ligne du jour correpsondant
corresponding_line
=
rec
.
vracoop_retrait_time_ids
.
search
([
corresponding_line
=
rec
.
vracoop_retrait_time_ids
.
search
([
(
'
vracoop_point_retrait_id
'
,
'
=
'
,
rec
.
id
),
(
'
vracoop_point_retrait_id
'
,
'
=
'
,
rec
.
id
),
(
'
name
'
,
'
=
'
,
week
.
strftime
(
"
%w
"
))])
(
'
name
'
,
'
=
'
,
week
.
strftime
(
"
%w
"
))])
# Récupération du nom du jour et du Short name du jour
for
week_day
in
LIST_WEEK_DAY
:
for
week_day
in
LIST_WEEK_DAY
:
if
week_day
[
2
]
==
int
(
week
.
strftime
(
"
%w
"
)):
if
week_day
[
2
]
==
int
(
week
.
strftime
(
"
%w
"
)):
byweekday
=
week_day
[
1
]
byweekday
=
week_day
[
1
]
day_short_name
=
week_day
[
3
]
day_short_name
=
week_day
[
3
]
# Calcul de l'heure à laquelle la commande est disponible
time_available_week
=
datetime
(
time_available_week
=
datetime
(
week
.
year
,
week
.
month
,
week
.
day
)
+
timedelta
(
week
.
year
,
week
.
month
,
week
.
day
)
+
timedelta
(
hours
=
corresponding_line
.
availability_time
)
hours
=
corresponding_line
.
availability_time
)
...
@@ -140,6 +150,9 @@ class VracoopPointRetrait(models.Model):
...
@@ -140,6 +150,9 @@ class VracoopPointRetrait(models.Model):
week
.
year
,
week
.
month
,
week
.
day
)
+
timedelta
(
week
.
year
,
week
.
month
,
week
.
day
)
+
timedelta
(
hours
=
corresponding_line
.
last_noon_heure
)
hours
=
corresponding_line
.
last_noon_heure
)
# Calcul des Slots (matin et après-midi) par jour en
# fonction de l'intervalle (correspondant au temps de mis
# à disposition) et des dates de début et de fin de retrait
list_slot_per_day_morning
=
list
(
list_slot_per_day_morning
=
list
(
rrule
(
rrule
(
MINUTELY
,
MINUTELY
,
...
@@ -156,26 +169,47 @@ class VracoopPointRetrait(models.Model):
...
@@ -156,26 +169,47 @@ class VracoopPointRetrait(models.Model):
slots
=
[]
slots
=
[]
nb_sale_slot
=
0
nb_sale_slot
=
0
# Heure disponible pour un retrait
# en fonction du temps de préparation
today_hour_available
=
today_datetime
+
timedelta
(
today_hour_available
=
today_datetime
+
timedelta
(
hours
=
corresponding_line
.
preparation_time
)
hours
=
corresponding_line
.
preparation_time
)
# Boucle pour les créneaux du matin
for
slot_elem
in
list_slot_per_day_morning
:
for
slot_elem
in
list_slot_per_day_morning
:
# Conversion du 1er Slot en HH:MM
first_slot
=
slot_elem
.
strftime
(
"
%H:%M
"
)
first_slot
=
slot_elem
.
strftime
(
"
%H:%M
"
)
# Calcul du dernier slot
# en fonction du temps de mis à dsiposition
slot_elem_last
=
slot_elem
+
timedelta
(
slot_elem_last
=
slot_elem
+
timedelta
(
hours
=
corresponding_line
.
availability_time
)
hours
=
corresponding_line
.
availability_time
)
# Conversion du Dernier Slot en HH:MM
last_slot
=
slot_elem_last
.
strftime
(
"
%H:%M
"
)
last_slot
=
slot_elem_last
.
strftime
(
"
%H:%M
"
)
if
slot_elem
>=
last_morning_hour_week
:
if
slot_elem
>=
last_morning_hour_week
:
continue
continue
# Si le jour est égal à la date du jour
if
slot_elem
.
date
()
==
today_datetime
.
date
():
if
slot_elem
.
date
()
==
today_datetime
.
date
():
if
(
slot_elem_last
>
last_morning_hour_week
):
if
(
slot_elem_last
>
last_morning_hour_week
):
if
(
today_hour_available
>
last_morning_hour_week
):
if
(
today_hour_available
>
last_morning_hour_week
):
continue
continue
if
(
today_hour_available
>
slot_elem_last
):
if
(
today_hour_available
>
slot_elem_last
):
continue
continue
if
(
today_hour_available
>
slot_elem
):
slot_elem_first
=
today_hour_available
+
timedelta
(
hours
=
1.0
)
first_slot
=
slot_elem_first
.
strftime
(
"
%H:00
"
)
if
first_slot
==
last_slot
:
continue
if
slot_elem_last
>=
last_morning_hour_week
:
if
slot_elem_last
>=
last_morning_hour_week
:
slot_elem_last
=
last_morning_hour_week
slot_elem_last
=
last_morning_hour_week
last_slot
=
slot_elem_last
.
strftime
(
"
%H:%M
"
)
last_slot
=
slot_elem_last
.
strftime
(
"
%H:%M
"
)
# Check number of maximum withdrawal not reached
# Vérification si
# Nombre max de retrait défini a été atteint
# Pas de controle si La valeur définie est 0
if
rec
.
nb_max_retrait
>
0
:
first_slot_hour
=
first_slot
.
split
(
"
:
"
)
first_slot_hour
=
first_slot
.
split
(
"
:
"
)
first_slot_float
=
float
(
first_slot_float
=
float
(
'
%s.%s
'
%
(
first_slot_hour
[
0
],
first_slot_hour
[
1
]))
'
%s.%s
'
%
(
first_slot_hour
[
0
],
first_slot_hour
[
1
]))
...
@@ -185,27 +219,44 @@ class VracoopPointRetrait(models.Model):
...
@@ -185,27 +219,44 @@ class VracoopPointRetrait(models.Model):
(
'
hour_retrait
'
,
'
=
'
,
first_slot_float
)])
(
'
hour_retrait
'
,
'
=
'
,
first_slot_float
)])
if
nb_sale_slot
<
rec
.
nb_max_retrait
:
if
nb_sale_slot
<
rec
.
nb_max_retrait
:
slots
.
append
((
first_slot
,
last_slot
))
slots
.
append
((
first_slot
,
last_slot
))
else
:
slots
.
append
((
first_slot
,
last_slot
))
# Boucle pour les créneaux de l'après-midi
for
slot_elem
in
list_slot_per_day_noon
:
for
slot_elem
in
list_slot_per_day_noon
:
# Conversion du 1er Slot en HH:MM
first_slot
=
slot_elem
.
strftime
(
"
%H:%M
"
)
first_slot
=
slot_elem
.
strftime
(
"
%H:%M
"
)
# Calcul du dernier slot
# en fonction du temps de mis à dsiposition
slot_elem_last
=
slot_elem
+
timedelta
(
slot_elem_last
=
slot_elem
+
timedelta
(
hours
=
corresponding_line
.
availability_time
)
hours
=
corresponding_line
.
availability_time
)
# Conversion du Dernier Slot en HH:MM
last_slot
=
slot_elem_last
.
strftime
(
"
%H:%M
"
)
last_slot
=
slot_elem_last
.
strftime
(
"
%H:%M
"
)
if
slot_elem
>=
last_noon_hour_week
:
if
slot_elem
>=
last_noon_hour_week
:
continue
continue
# Si le jour est égal à la date du jour
if
slot_elem
.
date
()
==
today_datetime
.
date
():
if
slot_elem
.
date
()
==
today_datetime
.
date
():
if
(
slot_elem_last
>
last_noon_hour_week
):
if
(
slot_elem_last
>
last_noon_hour_week
):
if
(
today_hour_available
>
last_noon_hour_week
):
if
(
today_hour_available
>
last_noon_hour_week
):
continue
continue
if
(
today_hour_available
>
slot_elem_last
):
if
(
today_hour_available
>
slot_elem_last
):
continue
continue
if
(
today_hour_available
>
slot_elem
):
slot_elem_first
=
today_hour_available
+
timedelta
(
hours
=
1.0
)
first_slot
=
slot_elem_first
.
strftime
(
"
%H:00
"
)
if
first_slot
==
last_slot
:
continue
if
slot_elem_last
>=
last_noon_hour_week
:
if
slot_elem_last
>=
last_noon_hour_week
:
slot_elem_last
=
last_noon_hour_week
slot_elem_last
=
last_noon_hour_week
last_slot
=
slot_elem_last
.
strftime
(
"
%H:%M
"
)
last_slot
=
slot_elem_last
.
strftime
(
"
%H:%M
"
)
# Check number of maximum withdrawal not reached
# Vérification si
# Nombre max de retrait défini a été atteint
# Pas de controle si La valeur définie est 0
if
rec
.
nb_max_retrait
>
0
:
first_slot_hour
=
first_slot
.
split
(
"
:
"
)
first_slot_hour
=
first_slot
.
split
(
"
:
"
)
first_slot_float
=
float
(
first_slot_float
=
float
(
'
%s.%s
'
%
(
first_slot_hour
[
0
],
first_slot_hour
[
1
]))
'
%s.%s
'
%
(
first_slot_hour
[
0
],
first_slot_hour
[
1
]))
...
@@ -215,6 +266,8 @@ class VracoopPointRetrait(models.Model):
...
@@ -215,6 +266,8 @@ class VracoopPointRetrait(models.Model):
(
'
hour_retrait
'
,
'
=
'
,
first_slot_float
)])
(
'
hour_retrait
'
,
'
=
'
,
first_slot_float
)])
if
nb_sale_slot
<
rec
.
nb_max_retrait
:
if
nb_sale_slot
<
rec
.
nb_max_retrait
:
slots
.
append
((
first_slot
,
last_slot
))
slots
.
append
((
first_slot
,
last_slot
))
else
:
slots
.
append
((
first_slot
,
last_slot
))
return_slot_list
=
slots
return_slot_list
=
slots
if
return_slot_list
:
if
return_slot_list
:
...
...
Ce diff est replié.
Cliquez pour l'agrandir.
Aperçu
0%
Chargement en cours
Veuillez réessayer
ou
joindre un nouveau fichier
.
Annuler
You are about to add
0
people
to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Enregistrer le commentaire
Annuler
Veuillez vous
inscrire
ou vous
se connecter
pour commenter