Skip to content
GitLab
Explorer
Connexion
Navigation principale
Rechercher ou aller à…
Projet
L
lefilament_link_sale_project
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
lefilament_link_sale_project
Validations
ac043bfe
Valider
ac043bfe
rédigé
Il y a 3 ans
par
Juliana
Parcourir les fichiers
Options
Téléchargements
Correctifs
Plain Diff
[MIG] Migration 14.0
parent
73099f6e
Branches
Branches contenant la validation
Aucune étiquette associée trouvée
1 requête de fusion
!1
14.0 sale overview
Modifications
2
Afficher les modifications d'espaces
En ligne
Côte à côte
Affichage de
2 fichiers modifiés
__manifest__.py
+1
-1
1 ajout, 1 suppression
__manifest__.py
models/project_overview.py
+30
-27
30 ajouts, 27 suppressions
models/project_overview.py
avec
31 ajouts
et
28 suppressions
__manifest__.py
+
1
−
1
Voir le fichier @
ac043bfe
...
@@ -3,7 +3,7 @@
...
@@ -3,7 +3,7 @@
'
summary
'
:
"""
Filament - Lien entre commandes et projets
"""
,
'
summary
'
:
"""
Filament - Lien entre commandes et projets
"""
,
'
author
'
:
"
Le Filament
"
,
'
author
'
:
"
Le Filament
"
,
'
website
'
:
"
https://www.le-filament.com
"
,
'
website
'
:
"
https://www.le-filament.com
"
,
'
version
'
:
'
1
3
.0.1.0.1
'
,
'
version
'
:
'
1
4
.0.1.0.1
'
,
'
license
'
:
"
AGPL-3
"
,
'
license
'
:
"
AGPL-3
"
,
'
category
'
:
'
Sale Management
'
,
'
category
'
:
'
Sale Management
'
,
'
depends
'
:
[
'
sale_timesheet
'
,
'
project
'
],
'
depends
'
:
[
'
sale_timesheet
'
,
'
project
'
],
...
...
Ce diff est replié.
Cliquez pour l'agrandir.
models/project_overview.py
+
30
−
27
Voir le fichier @
ac043bfe
...
@@ -30,12 +30,14 @@ class Project(models.Model):
...
@@ -30,12 +30,14 @@ class Project(models.Model):
# ------------------------------------------------------
# ------------------------------------------------------
# CRUD methods (ORM overrides)
# CRUD methods (ORM overrides)
# ------------------------------------------------------
# ------------------------------------------------------
def
_table_get_line_values
(
self
):
def
_table_get_line_values
(
self
,
employees
=
None
):
"""
return the header and the rows informations of the table
"""
"""
return the header and the rows informations of the table
"""
if
not
self
:
if
not
self
:
return
False
return
False
uom_hour
=
self
.
env
.
ref
(
'
uom.product_uom_hour
'
)
uom_hour
=
self
.
env
.
ref
(
'
uom.product_uom_hour
'
)
company_uom
=
self
.
env
.
company
.
timesheet_encode_uom_id
is_uom_day
=
company_uom
and
company_uom
==
self
.
env
.
ref
(
'
uom.product_uom_day
'
)
# build SQL query and fetch raw data
# build SQL query and fetch raw data
query
,
query_params
=
self
.
_table_rows_sql_query
()
query
,
query_params
=
self
.
_table_rows_sql_query
()
...
@@ -80,9 +82,11 @@ class Project(models.Model):
...
@@ -80,9 +82,11 @@ class Project(models.Model):
# rows_sale_line[sale_line_row_key][-2] = sale_line.product_uom._compute_quantity(
# rows_sale_line[sale_line_row_key][-2] = sale_line.product_uom._compute_quantity(
# sale_line.product_uom_qty, uom_hour, raise_if_failure=False) if sale_line else 0.0
# sale_line.product_uom_qty, uom_hour, raise_if_failure=False) if sale_line else 0.0
rows_sale_line_all_data
=
{}
if
not
employees
:
employees
=
self
.
env
[
'
hr.employee
'
].
sudo
().
search
(
self
.
env
[
'
account.analytic.line
'
].
_domain_employee_id
())
for
row_key
,
row_employee
in
rows_employee
.
items
():
for
row_key
,
row_employee
in
rows_employee
.
items
():
sale_line_id
=
row_key
[
1
]
sale_order_id
,
sale_line_id
,
employee_id
=
row_key
sale_order_id
=
row_key
[
0
]
# sale line row
# sale line row
sale_line_row_key
=
(
sale_order_id
,
sale_line_id
)
sale_line_row_key
=
(
sale_order_id
,
sale_line_id
)
if
sale_line_row_key
not
in
rows_sale_line
:
if
sale_line_row_key
not
in
rows_sale_line
:
...
@@ -100,18 +104,19 @@ class Project(models.Model):
...
@@ -100,18 +104,19 @@ class Project(models.Model):
# rows_sale_line[sale_line_row_key][-2] = sale_line.product_uom._compute_quantity(
# rows_sale_line[sale_line_row_key][-2] = sale_line.product_uom._compute_quantity(
# sale_line.product_uom_qty, uom_hour, raise_if_failure=False) if sale_line else 0.0
# sale_line.product_uom_qty, uom_hour, raise_if_failure=False) if sale_line else 0.0
for
index
in
range
(
len
(
rows_employee
[
row_key
])):
if
sale_line_row_key
not
in
rows_sale_line_all_data
:
if
index
!=
0
:
rows_sale_line_all_data
[
sale_line_row_key
]
=
[
0
]
*
len
(
row_employee
)
rows_sale_line
[
sale_line_row_key
][
index
]
+=
rows_employee
[
row_key
][
index
]
for
index
in
range
(
1
,
len
(
row_employee
)):
if
employee_id
in
employees
.
ids
:
rows_sale_line
[
sale_line_row_key
][
index
]
+=
row_employee
[
index
]
rows_sale_line_all_data
[
sale_line_row_key
][
index
]
+=
row_employee
[
index
]
if
not
rows_sale_line
[
sale_line_row_key
][
0
].
get
(
'
is_milestone
'
):
if
not
rows_sale_line
[
sale_line_row_key
][
0
].
get
(
'
is_milestone
'
):
rows_sale_line
[
sale_line_row_key
][
-
1
]
=
rows_sale_line
[
sale_line_row_key
][
-
2
]
-
\
rows_sale_line
[
sale_line_row_key
][
-
1
]
=
rows_sale_line
[
sale_line_row_key
][
-
2
]
-
\
rows_sale_line
[
sale_line_row_key
][
5
]
rows_sale_line
_all_data
[
sale_line_row_key
][
5
]
else
:
else
:
rows_sale_line
[
sale_line_row_key
][
-
1
]
=
0
rows_sale_line
[
sale_line_row_key
][
-
1
]
=
0
rows_sale_order
=
{}
# so -> [INFO, before, M1, M2, M3, Done, M3, M4, M5, After, Forecasted]
rows_sale_order
=
{}
# so -> [INFO, before, M1, M2, M3, Done, M3, M4, M5, After, Forecasted]
rows_sale_order_done_sold
=
{
key
:
dict
(
sold
=
0.0
,
done
=
0.0
)
for
key
in
set
(
map_sol_so
.
values
())
|
set
([
None
])}
# SO id -> {'sold':0.0, 'done': 0.0}
for
row_key
,
row_sale_line
in
rows_sale_line
.
items
():
for
row_key
,
row_sale_line
in
rows_sale_line
.
items
():
sale_order_id
=
row_key
[
0
]
sale_order_id
=
row_key
[
0
]
# sale order row
# sale order row
...
@@ -122,19 +127,8 @@ class Project(models.Model):
...
@@ -122,19 +127,8 @@ class Project(models.Model):
'
type
'
:
'
sale_order
'
}]
+
default_row_vals
[
'
type
'
:
'
sale_order
'
}]
+
default_row_vals
[
:]
# INFO, before, M1, M2, M3, Done, M3, M4, M5, After, Forecasted
:]
# INFO, before, M1, M2, M3, Done, M3, M4, M5, After, Forecasted
for
index
in
range
(
len
(
rows_sale_line
[
row_key
])):
for
index
in
range
(
1
,
len
(
row_sale_line
)):
if
index
!=
0
:
rows_sale_order
[
sale_order_id
][
index
]
+=
row_sale_line
[
index
]
rows_sale_order
[
sale_order_id
][
index
]
+=
rows_sale_line
[
row_key
][
index
]
# do not sum the milestone SO line for sold and done (for remaining computation)
if
not
rows_sale_line
[
row_key
][
0
].
get
(
'
is_milestone
'
):
rows_sale_order_done_sold
[
sale_order_id
][
'
sold
'
]
+=
rows_sale_line
[
row_key
][
-
2
]
rows_sale_order_done_sold
[
sale_order_id
][
'
done
'
]
+=
rows_sale_line
[
row_key
][
5
]
# remaining computation of SO row, as Sold - Done (timesheet total)
for
sale_order_id
,
done_sold_vals
in
rows_sale_order_done_sold
.
items
():
if
sale_order_id
in
rows_sale_order
:
rows_sale_order
[
sale_order_id
][
-
1
]
=
done_sold_vals
[
'
sold
'
]
-
done_sold_vals
[
'
done
'
]
# group rows SO, SOL and their related employee rows.
# group rows SO, SOL and their related employee rows.
timesheet_forecast_table_rows
=
[]
timesheet_forecast_table_rows
=
[]
...
@@ -142,16 +136,25 @@ class Project(models.Model):
...
@@ -142,16 +136,25 @@ class Project(models.Model):
timesheet_forecast_table_rows
.
append
(
sale_order_row
)
timesheet_forecast_table_rows
.
append
(
sale_order_row
)
for
sale_line_row_key
,
sale_line_row
in
rows_sale_line
.
items
():
for
sale_line_row_key
,
sale_line_row
in
rows_sale_line
.
items
():
if
sale_order_id
==
sale_line_row_key
[
0
]:
if
sale_order_id
==
sale_line_row_key
[
0
]:
sale_order_row
[
0
][
'
has_children
'
]
=
True
timesheet_forecast_table_rows
.
append
(
sale_line_row
)
timesheet_forecast_table_rows
.
append
(
sale_line_row
)
for
employee_row_key
,
employee_row
in
rows_employee
.
items
():
for
employee_row_key
,
employee_row
in
rows_employee
.
items
():
if
sale_order_id
==
employee_row_key
[
0
]
and
sale_line_row_key
[
1
]
==
employee_row_key
[
1
]:
if
sale_order_id
==
employee_row_key
[
0
]
and
sale_line_row_key
[
1
]
==
employee_row_key
[
1
]
and
\
employee_row_key
[
2
]
in
employees
.
ids
:
sale_line_row
[
0
][
'
has_children
'
]
=
True
timesheet_forecast_table_rows
.
append
(
employee_row
)
timesheet_forecast_table_rows
.
append
(
employee_row
)
if
is_uom_day
:
# convert all values from hours to days
for
row
in
timesheet_forecast_table_rows
:
for
index
in
range
(
1
,
len
(
row
)):
row
[
index
]
=
round
(
uom_hour
.
_compute_quantity
(
row
[
index
],
company_uom
,
raise_if_failure
=
False
),
2
)
# complete table data
# complete table data
return
{
return
{
'
header
'
:
self
.
_table_header
(),
'
header
'
:
self
.
_table_header
(),
'
rows
'
:
timesheet_forecast_table_rows
'
rows
'
:
timesheet_forecast_table_rows
}
}
# ------------------------------------------------------
# ------------------------------------------------------
# Actions
# Actions
# ------------------------------------------------------
# ------------------------------------------------------
...
...
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