Skip to content
Snippets Groups Projects
Commit 1ea04d6e authored by Bouchaira Neirouz's avatar Bouchaira Neirouz
Browse files

application

parent b2e1b689
No related branches found
No related tags found
No related merge requests found
......@@ -7,26 +7,49 @@ import numpy as np # Add this line to import numpy
# Initialize session state for page if not already set
if 'page' not in st.session_state:
st.session_state.page = None
tab1, tab2, tab3 = st.tabs(["Suivi des employés", "Création d'un compte employé", "Bonus"])
tab1, tab2, tab3,tab4 = st.tabs(["Suivi des employés","Employés avec 3 ans d'anciénneté", "Création d'un compte employé", "Bonus"])
with tab1:
st.title("Suivi Employés")
# Add code for "Suivi Employés" page here
st.write("Page de suivi des employés")
# Connect to the database
conn= sqlite3.connect(r'C:\Users\neiro\Documents\+\GitHub\sgbd-usine\donnees\company.db')
cursor = conn.cursor()
# Fetch all employee records
cursor.execute("SELECT DATE_LUNDI,SALAIRE_SEMAINE.NUMERO_EMPLOYE,NOM,PRENOM, SALAIRE_APRES,NB_HEURES, NB_PRODUCTION,ANCIENNETE,NOEL, DATE_DEBUT FROM SALAIRE_SEMAINE JOIN EMPLOYE ON EMPLOYE.NUMERO_EMPLOYE = SALAIRE_SEMAINE.NUMERO_EMPLOYE")
tab11,tab12 = st.tabs(["Totalité des employés","Employés avec une diminution de salaire"])
cursor.execute("SELECT DATE_LUNDI,SALAIRE_SEMAINE.NUMERO_EMPLOYE,NOM,PRENOM,SALAIRE_BASE,SALAIRE_AVANT, SALAIRE_APRES,NB_HEURES, NB_PRODUCTION,RETARD,ANCIENNETE,NOEL, DATE_DEBUT FROM SALAIRE_SEMAINE JOIN EMPLOYE ON EMPLOYE.NUMERO_EMPLOYE = SALAIRE_SEMAINE.NUMERO_EMPLOYE")
employees = cursor.fetchall()
# Convert the employee records to a DataFrame
df = pd.DataFrame(employees, columns=[desc[0] for desc in cursor.description])
df.columns = ['Date du lundi', 'Numéro employé', 'Nom', 'Prénom', 'Salaire semaine', 'Nombre d\'heures', 'Nombre de production', 'Ancienneté', 'Bonus de Noël', 'Date de début']
# Display the DataFrame with Streamlit
df.columns = ['Date du lundi', 'Numéro employé', 'Nom', 'Prénom', 'Salaire base', 'Salaire avant primes','Salaire réel', 'Nombre d\'heures', 'Nombre de production', 'Retard','Ancienneté', 'Bonus de Noël', 'Date de début']
with tab11:
# Add code for "Suivi Employés" page here
st.write("Page de suivi des salaires des employés par semaine (question 1)")
st.dataframe(df)
conn.close()
with tab12:
st.write("Page de suivi des salaires des employés ayant eu une diminution par semaine (question 3)")
st.dataframe(df[df['Salaire avant primes']<df['Salaire base']])
conn.close()
with tab2:
conn= sqlite3.connect(r'C:\Users\neiro\Documents\+\GitHub\sgbd-usine\donnees\company.db')
cursor = conn.cursor()
st.write("Page des employés avec 3 ans d'anciénneté (question 2)")
# Fetch all employee records
cursor.execute("SELECT NUMERO_EMPLOYE,NOM,PRENOM,TYPE,DATE_DEBUT FROM EMPLOYE")
employees = cursor.fetchall()
df=pd.DataFrame(employees, columns=[desc[0] for desc in cursor.description])
from datetime import datetime
today = datetime.today()
df['DATE_DEBUT'] = pd.to_datetime(df['DATE_DEBUT'])
df = df[(today - df['DATE_DEBUT']).dt.days > 3 * 365]
df.columns = ['Numéro employé', 'Nom', 'Prénom', 'Type du contrat', 'Date de début']
st.write("Liste des employés journaliers")
st.dataframe(df[df['Type du contrat']==1])
st.write("Liste des employés par production")
st.dataframe(df[df['Type du contrat'] == 2])
with tab3:
st.title("Création de compte employé")
conn= sqlite3.connect(r'C:\Users\neiro\Documents\+\GitHub\sgbd-usine\donnees\company.db')
cursor = conn.cursor()
......
Source diff could not be displayed: it is too large. Options to address this: view the blob.
No preview for this file type
%% Cell type:code id: tags:
``` python
import sqlite3
# Connect to the database
conn = sqlite3.connect('company.db')
# Create a cursor object
cursor = conn.cursor()
print("Connected to company.db")
```
%% Output
Connected to company.db
%% Cell type:code id: tags:
``` python
## Production
from datetime import datetime, timedelta
# Fetch all employees
cursor.execute("SELECT NUMERO_EMPLOYE, CS_PRODUCTION,CS_JOURNEE, DATE_DEBUT FROM EMPLOYE")
employees = cursor.fetchall()
cursor.execute("SELECT MAX(NUM_LOG_JOUR_PROD) FROM LOG_JOURNEE_PROD")
last_log_num_prod = cursor.fetchone()[0] or 0
cursor.execute("SELECT MAX(NUM_LOG_JOUR_JOUR) FROM LOG_JOURNEE_JOUR")
last_log_num_jour = cursor.fetchone()[0] or 0
# Loop through each employee
for employee in employees:
NUMERO_EMPLOYE, CS_PRODUCTION,CS_JOURNEE, DATE_DEBUT = employee
start_date = datetime.strptime(DATE_DEBUT, '%Y-%m-%d')
end_date = datetime.today()
delta = end_date - start_date
if CS_JOURNEE is not None:
cursor.execute(f"SELECT DEBUT_SAMEDI FROM GRILLE_SALAIRE_HORAIRE WHERE CS_HORAIRE = {CS_JOURNEE}")
debut_samedi = cursor.fetchone()[0]
for i in range(delta.days + 1):
datei = start_date + timedelta(days=i)
week_day = datei.weekday()
if week_day == 6:
continue
if week_day == 5:
last_log_num_jour += 1
cursor.execute("""
INSERT INTO LOG_JOURNEE_JOUR (NUM_LOG_JOUR_JOUR, DATE,WEEK_DAY, NUMERO_EMPLOYE,HEURE_ARRIVEE,HEURE_ARRIVEE_PREVUE, HEURE_FIN, NB_HEURES,NB_HEURES_SUP, RETARD)
VALUES (?, ?, ?,?, ?, ?, ?,?,?,?)""",(last_log_num_jour, datei.strftime('%Y-%m-%d'),week_day, NUMERO_EMPLOYE,str(debut_samedi)+':00',str(debut_samedi)+':00',str(debut_samedi+3)+':00',3,0, False ) )
INSERT INTO LOG_JOURNEE_JOUR (NUM_LOG_JOUR_JOUR, DATE,WEEK_DAY, NUMERO_EMPLOYE,HEURE_ARRIVEE,HEURE_ARRIVEE_PREVUE, HEURE_FIN,NB_HEURES_PREVUES, NB_HEURES,NB_HEURES_SUP, RETARD)
VALUES (?, ?, ?,?, ?, ?, ?,?,?,?,?)""",(last_log_num_jour, datei.strftime('%Y-%m-%d'),week_day, NUMERO_EMPLOYE,str(debut_samedi)+':00',str(debut_samedi)+':00',str(debut_samedi+3)+':00',3,3,0, False ) )
else:
last_log_num_jour += 1
cursor.execute("""
INSERT INTO LOG_JOURNEE_JOUR (NUM_LOG_JOUR_JOUR, DATE,WEEK_DAY, NUMERO_EMPLOYE,HEURE_ARRIVEE,HEURE_ARRIVEE_PREVUE, HEURE_FIN, NB_HEURES,NB_HEURES_SUP, RETARD)
VALUES (?, ?, ?,?, ?, ?, ?,?,?,?)""",(last_log_num_jour, datei.strftime('%Y-%m-%d'),week_day, NUMERO_EMPLOYE,str(8)+':00',str(8)+':00',str(8+9)+':00',9,0, False ) )
INSERT INTO LOG_JOURNEE_JOUR (NUM_LOG_JOUR_JOUR, DATE,WEEK_DAY, NUMERO_EMPLOYE,HEURE_ARRIVEE,HEURE_ARRIVEE_PREVUE, HEURE_FIN,NB_HEURES_PREVUES, NB_HEURES,NB_HEURES_SUP, RETARD)
VALUES (?, ?, ?,?, ?, ?, ?,?,?,?,?)""",(last_log_num_jour, datei.strftime('%Y-%m-%d'),week_day, NUMERO_EMPLOYE,str(8)+':00',str(8)+':00',str(8+9)+':00',9,9,0, False ) )
if CS_PRODUCTION is not None:
cursor.execute(f"SELECT PIECE_JOUR , DEBUT_SAMEDI FROM GRILLE_SALAIRE_PROD WHERE CS_PRODUCTION = {CS_PRODUCTION}")
piece_jour,debut_samedi = cursor.fetchone()
for i in range(delta.days + 1):
datei = start_date + timedelta(days=i)
week_day = datei.weekday()
if week_day == 6:
continue
if week_day == 5:
last_log_num_prod += 1
cursor.execute("""
INSERT INTO LOG_JOURNEE_PROD (NUM_LOG_JOUR_PROD, DATE,WEEK_DAY, NUMERO_EMPLOYE,NB_PIECES,NB_PIECES_SUP,HEURE_ARRIVEE,HEURE_ARRIVEE_PREVUE,RETARD)
VALUES (?, ?, ?,?, ?, ?, ?,?,?)
""", (last_log_num_prod, datei.strftime('%Y-%m-%d'),week_day, NUMERO_EMPLOYE,piece_jour,0,str(debut_samedi)+':00',str(debut_samedi)+':00',False ))
INSERT INTO LOG_JOURNEE_PROD (NUM_LOG_JOUR_PROD, DATE,WEEK_DAY, NUMERO_EMPLOYE,NB_PIECES_PREVUES,NB_PIECES,NB_PIECES_SUP,HEURE_ARRIVEE,HEURE_ARRIVEE_PREVUE,RETARD)
VALUES (?, ?, ?,?, ?, ?, ?,?,?,?)
""", (last_log_num_prod, datei.strftime('%Y-%m-%d'),week_day, NUMERO_EMPLOYE,piece_jour,piece_jour,0,str(debut_samedi)+':00',str(debut_samedi)+':00',False ))
else:
last_log_num_prod += 1
cursor.execute("""
INSERT INTO LOG_JOURNEE_PROD (NUM_LOG_JOUR_PROD, DATE,WEEK_DAY, NUMERO_EMPLOYE,NB_PIECES,NB_PIECES_SUP,HEURE_ARRIVEE,HEURE_ARRIVEE_PREVUE,RETARD)
VALUES (?, ?, ?,?, ?, ?, ?,?,?)
""", (last_log_num_prod, datei.strftime('%Y-%m-%d'),week_day, NUMERO_EMPLOYE,piece_jour,0,'8:00','8:00',False ))
INSERT INTO LOG_JOURNEE_PROD (NUM_LOG_JOUR_PROD, DATE,WEEK_DAY, NUMERO_EMPLOYE,NB_PIECES_PREVUES,NB_PIECES,NB_PIECES_SUP,HEURE_ARRIVEE,HEURE_ARRIVEE_PREVUE,RETARD)
VALUES (?, ?, ?,?, ?, ?, ?,?,?,?)
""", (last_log_num_prod, datei.strftime('%Y-%m-%d'),week_day, NUMERO_EMPLOYE,piece_jour,piece_jour,0,'8:00','8:00',False ))
# Commit the changes
conn.commit()
```
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment