예제 #1
0
def physical_sales(conn, window, eid):  #"Φυσικές πωλήσεις"

    #καταστροφή του παραθύρου επιλογής και δημιουργία καινούργιου
    window.destroy()
    size = "620x600"
    fr, root = scrollbar.scroll_window(size)
    root.title('Φυσικές πωλήσεις')
    root.config(bg='white')

    #εκτέλεση ερωτήματος sql,ανάλογα με την επιλογή του χρήστη που είναι αποθηκευμένη στο "eid"
    cur = conn.cursor()
    cur.execute(f'''
                SELECT * FROM(
                    (select album.album_id, titlos, sum(posothta) as 'sales'
                    from album join pwleitai on album.album_id=pwleitai.album_id
                    where eidos="{eid}"
                    group by album.album_id)
                
                UNION

                    (select album.album_id, titlos,0 
                    from (album left outer join pwleitai on album.album_id=pwleitai.album_id)
                    where album.album_id NOT IN(SELECT album.album_id FROM album join pwleitai on album.album_id=pwleitai.album_id WHERE eidos="{eid}")
                    group by album.album_id
                )) as A
                ORDER BY sales DESC
    ''')
    ans = cur.fetchone()

    #εκτύπωση των ονομάτων των στηλών
    l = Label(
        fr,
        font=('Lucida Console', '11'),
        bg='white',
        text=f'{"Κωδικός":<8}  {"Τίτλος Άλμπουμ":<40}  {"Πωλήσεις {}":<15}'.
        format(eid),
        fg="red2")
    l.grid(sticky=W, column=0, row=0)
    i = 1
    while ans is not None:

        #αλλαγή χρώματος background
        if i % 2:
            color = 'grey97'
        else:
            color = 'white'

        #εκτύπωση δεδομένων
        l = Label(fr,
                  bg=color,
                  text=f'NO.{ans[0]:<5}  {ans[1]:<40}  {ans[2]:<15}',
                  font=('Lucida Console', '11')).grid(sticky=W,
                                                      column=0,
                                                      row=i)
        i = i + 1
        ans = cur.fetchone()
    cur.close()
    root.mainloop()
    return
예제 #2
0
def album_per_studio(conn): #"Άλμπουμ ανά studio ηχογράφησης"

    #δημιουργία παραθύρου
    fr,root=scrollbar.scroll_window("1610x600")
    root.title('Άλμπουμ ανά studio ηχογράφησης')
    root.config(bg='white')
    #εκτέλεση sql
    cur=conn.cursor()
    cur.execute('''SELECT onoma,album_id, titlos, vinyl_stock, CD_stock, release_date, graf_afm,royalties_prof,rec_start,rec_end,hours,hourly_rate
                   FROM album  right outer join studio on studio_afm=studio.afm
                   ORDER BY onoma,album_id''')
    ans=cur.fetchone()
    i=0
    studio=''

    #εκτύπωση αποτελεσμάτων
    Label(fr,bg='white',font=('Lucida Console','10'), width=183, anchor=W, text=f'{"Κωδ. Άλμπ.":<11} {"Τίτλος":<50} {"Απόθεμα Βινυλ.":<14} {"Απόθεμα CD":<11} {"Ημερ.Κυκλοφ.":<12} {"ΑΦΜ γραφίστα":<12} {"Κέρδη πνευμ.δικ.":<16} {"Ημ.έναρξης ηχογραφήσης":<22} {"Ημ.ολοκλ.":<10} {"Ώρες ηχογραφήσης":<16}',fg="red2").grid(column=0,row=i,sticky=W)
    while(ans is not None):
        i=i+1

        #εκτύπωση του ονόματος και της χρέωσης ανα ώρα του studio
        if(str(ans[0])!=studio):
            studio=str(ans[0])
            Label(fr,bg='grey85',font=('Lucida Console','10'),text='{}, Χρέωση:{} ευρώ/ώρα'.format(studio,str(ans[11])),width=183,anchor=W).grid(column=0,row=i,sticky=W)
            i=i+1
        if i%2:
            color='white'
        else:
            color='grey97'
            
        #μετατροπή δεδομένων date
        date=[]
        for c in [5,8,9]:
            if(ans[c]is None or ans[c]=='0000-00-00'):
                date.append('-')
            else:
                date.append(ans[c].strftime("%Y-%m-%d"))
        if(ans[1] is None):
            Label(fr,bg=color,font=('Lucida Console','10'),text=f"{'-':<11} {'-':<50} {'-':<14} {'-':<11} {date[0]:<12} {'-':<12} {'-':<16} {date[1]:<22} {date[2]:<10} {'-':^16}",width=183, anchor=W).grid(column=0,row=i,sticky=W)
        else:
            Label(fr,bg=color,font=('Lucida Console','10'),text=f'{str(ans[1]):<11} {str(ans[2]):<50} {str(ans[3]):<14} {str(ans[4]):<11} {date[0]:<12} {str(ans[6]):<12} {str(ans[7]):<16} {date[1]:<22} {date[2]:<10} {str(ans[10]):^16}',width=183, anchor=W).grid(column=0,row=i,sticky=W)
        ans=cur.fetchone()
    i=i+1

    #κουμπι για μετάβαση στο "show_row" για την εύρεση των στοιχείων επικοινωνίας
    b1=Button(fr,bg='white', width=40, activebackground='light cyan', highlightcolor='light cyan', text="Στοιχεία επικοινωνίας studio",font=('times new roman','13'),command= lambda: basic_functions.select_row_window(5,conn,'epik_studio'))
    b1.grid(column=0,row=i,sticky=S)
    cur.close()
    root.mainloop()
    return
예제 #3
0
def instruments(conn,song,window): #"Οργανοπαίκτες που συμμετείχαν σε ένα τραγούδι"
    window.destroy() #Καταστροφή προηγούμενου παραθύρου
    cur=conn.cursor()

    #Εκτέλεση sql και διαχείριση λαθών
    try:
        cur.execute('''SELECT organopaikths.afm,organopaikths.fullname,organopaikths.specialty
                        FROM organopaikths 
                        WHERE organopaikths.afm in (SELECT symmetexei.afm
						                            FROM symmetexei JOIN tragoudi ON symmetexei.song_id=tragoudi.song_id
						                            WHERE tragoudi.titlos=%s)
	                ''',song)
    except pymysql.Error:
        print("hi")
        cur.close()
        return
    
    #Δημιουργία παραθύρου
    size="750x500"
    fr,root=scrollbar.scroll_window(size)
    root.title('Οργανοπαίκτες που συμμετείχαν σε ένα τραγούδι')
    root.config(bg='white')
    Label(fr,font=('Lucida Console','11'),bg='grey80', width=80, text=('{}'.format(song))).grid(column=0,row=0)
    Label(fr,font=('Lucida Console','11'),bg='white', text=(f'{"ΑΦΜ":<9} {"ΟΝΟΜΑ":<50} {"ΜΟΥΣΙΚΗ ΙΔΙΟΤΗΤΑ":<10}'),fg="red2").grid(sticky=W,column=0,row=1)
    ans=cur.fetchone()
    i=2
    while(ans is not None):

        #Αλλαγή χρώματος background
        if i%2:
            color='grey97'
        else:
            color='white'

        #Εκτύπωση δεδομένων
        Label(fr,font=('Lucida Console','11'),bg=color, width=80, anchor=W, text=(f'{ans[0]:<9} {ans[1]:<50} {ans[2]:<10}')).grid(sticky=W,column=0,row=i)
        ans=cur.fetchone()
        i=i+1
    
    #κουμπί για παραπομπή στην "show_row" για την προβολή των στοιχίων επικοινωνίας
    b1=Button(fr,bg='white', width=40, activebackground='light cyan', highlightcolor='light cyan', text="Στοιχεία επικοινωνίας οργανοπαίκτη",font=('helvetica','11'), command= lambda: basic_functions.select_row_window(5,conn,'epik_organop'))
    b1.grid(column=0,row=i,sticky=S)
    cur.close()
    root.mainloop()
    return None
예제 #4
0
def pelates(conn): #"Πελάτες και ποσότητες των προϊόντων που προμηθεύτηκαν"

    #δημιουργία παραθύρου
    fr,root=scrollbar.scroll_window("800x600")
    root.title('Πελάτες/Ποσότητα προμήθειας')
    root.config(bg='white')

    #εκτέλεση sql
    cur=conn.cursor()
    cur.execute('''
    SELECT pelaths.afm, pelaths.name, pwleitai.eidos,SUM(pwleitai.posothta)
    FROM pelaths left outer join pwleitai on pelaths.afm=pwleitai.afm
    GROUP BY pelaths.afm, pwleitai.eidos
    ''')
    ans=cur.fetchone()

    #εκτύπωση των ονομάτων των στηλών
    p1='ΑΦΜ'
    p2='Όνομα'
    p3='Είδος'
    p4='Ποσότητα'
    i=0
    Label(fr,bg='white',font=('Lucida Console','12'),text=(f'{p1:9} {p2:50} {p3:7} {p4:10}'),fg="red2").grid(column=0,row=i,sticky=W)
    i=1
    while ans is not None:
        if(ans[2] is None):
            eid='-'
            pos='0'
        else:
            eid=ans[2]
            pos=ans[3]
        #αλλαγή του χρώματος background και εκτύπωση των δεδομένων
        if i%2:
            Label(fr,bg='grey96',font=('Lucida Console','12'), text=(f'{ans[0]:9} {ans[1]:50} {eid:7} {pos:<10}')).grid(column=0,row=i,sticky=W)
        else:
            Label(fr,bg='white',font=('Lucida Console','12'),text=(f'{ans[0]:9} {ans[1]:50} {eid:7} {pos:<10}')).grid(column=0,row=i,sticky=W)
        ans=cur.fetchone()
        i=i+1

    #κουμπί παραπομπής στην συνάρτηση "show_row" για την προβολή των στοιχείων επικοινωνίας 
    b1=Button(fr,bg='white', width=40, activebackground='light cyan', highlightcolor='light cyan', text="Στοιχεία επικοινωνίας πελάτη",font=('times new roman','13'),fg='forest green',command= lambda: basic_functions.select_row_window(5,conn,'epik_pelath'))
    b1.grid(column=0,row=i,sticky=S)
    cur.close()
    return
예제 #5
0
def contracts(conn,window,choice): #"Στοιχεία συμβολαίων ανά κατηγορία καλλιτεχνών"

    #λεξικό για μετάφραση της εισόδου του χρήστη
    d={}
    d['*** Όλες ***']=['stixourgos', 'syntheths', 'mousikos']
    d['Στιχουργοί']=['stixourgos']
    d['Συνθέτες']=['syntheths']
    d['Μουσικοί']=['mousikos']

    #καταστροφή παραθύρου επιλογής και δημιουργία νέου για τα αποτελέσματα
    window.destroy()
    ch=d[choice]
    cur=conn.cursor()
    size="1000x600"
    fr,root=scrollbar.scroll_window(size)
    root.title('Στοιχεία συμβολαίων ανά κατηγορία καλλιτεχνών')
    root.config(bg='white')
    i=0

    #εκτέλεση επανάληψης για κάθε ιδιότητα. Αν επιλέχθηκε συγκεκριμένη από τον χρήστη, θα εκτελεστεί μόνο μια φορά
    for spec in ch:

        #εκτέλεση ερωτήματος sql
        cur.execute('''
        SELECT {}.afm, firstname, lastname, id_contract, startdate, enddate, pososto
        FROM {} join symbeblhmenos on {}.afm=symbeblhmenos.afm, symbolaio
        WHERE symbeblhmenos.afm=symbolaio.afm 
        ORDER BY {}.afm, enddate DESC
        '''.format(spec, spec, spec, spec))
        ans=cur.fetchone()

        #εκτύπωση ιδιότητας
        if spec=='stixourgos':
            Label(fr,bg='grey80',font=('Lucida Console','13'), width=140, anchor=W, text='ΣΤΙΧΟΥΡΓΟΙ').grid(column=0,row=i)
            i=i+1
        if spec=='syntheths':
            Label(fr,bg='grey80',font=('Lucida Console','13'), width=140, anchor=W, text='ΣΥΝΘΕΤΕΣ').grid(column=0,row=i)
            i=i+1
        if spec=='mousikos':
            Label(fr,bg='grey80',font=('Lucida Console','13'), width=140, anchor=W, text='ΜΟΥΣΙΚΟΙ').grid(column=0,row=i)
            i=i+1

        #εκτύπωση των ονομάτων των στηλών 
        r='ΑΦΜ'
        r0='ΟΝΟΜΑ'
        r1='ΕΠΩΝΥΜΟ'
        r2='ΚΩΔ. ΣΥΜΒ'
        r3='ΗΜ.ΕΝΑΡΞΗΣ'
        r4='ΗΜ.ΛΗΞΗΣ'
        r5='ΠΟΣΟΣΤΟ'
        Label(fr,bg='white',font=('Lucida Console','11'), width=140, anchor=W, text=f'{r:9} {r0:20} {r1:20} {r2:10} {r3:8} {r4:8} {r5:3}',fg="red2").grid(column=0,row=i,sticky=W)
        i=i+1
        blank=''
        afm=''
        while ans is not None:

            #αλλαγή χρώματος background
            if i%2:
                color='white'
            else:
                color='grey97'

            #διαχείρηση δεδομένων date
            if(ans[4] is None):
                data1=''
            else:
                data1=ans[4].strftime("%Y-%m-%d")
            if(ans[5] is None):
                data2=''
            else:
                data2=ans[5].strftime("%Y-%m-%d")

            #εκτύπωση των δεδομένων, αν είναι το πρώτο συμβόλαιο του συμβεβλημένου που εμφανίζεται
            if ans[0]!=afm:
                Label(fr,bg=color, font=('Lucida Console','11'), width=140, anchor=W, text=f'{ans[0]:9} {ans[1]:20} {ans[2]:20} {ans[3]:10} {data1:10} {data2:10} {ans[6]:3}').grid(column=0,row=i,sticky=W)
                i=i+1
                afm=ans[0]

            #εκτύπωση των δεδομένων,αν δεν είναι το πρώτο συμβόλαιο του συμβεβλημένου που εμφανίζεται
            else:
                Label(fr,bg=color, font=('Lucida Console','11'), width=140, anchor=W, text=f'{blank:9} {blank:20} {blank:20} {ans[3]:10} {data1:10} {data2:10} {ans[6]:3}').grid(column=0,row=i,sticky=W)
                i=i+1
            ans=cur.fetchone()
    cur.close()
    Label(fr, bg='white', text='').grid(column=0,row=i,sticky=S)
    i=i+1

    #κουμπί παραπομπής στην συνάρτηση "show_row" για την προβολή των στοιχείων επικοινωνίας 
    b1=Button(fr,bg='white', width=30, activebackground='light cyan', highlightcolor='light cyan', text="Στοιχεία επικοινωνίας συμβεβλημένου",font=('helvetica','11'), command= lambda: basic_functions.select_row_window(5,conn,'epik_symbebl'))
    b1.grid(column=0,row=i, sticky=W)
    root.mainloop()
    return
예제 #6
0
def band_singers(conn,window,choice): #"Συγκροτήματα/Τραγουδιστές"
    window.destroy() #καταστροφή προηγούμενου παραθύρου

    #δημιουργία λεξικού για μετατροπή της επιλογής του χρήστη
    d={'Συγκροτήματα':'1','Τραγουδιστές':'2'}
    ch=d[choice]
    cur=conn.cursor()

    #δημιουργία καινούργιου παραθύρου
    size="800x600"
    fr,root=scrollbar.scroll_window(size)
    root.title('Συγκροτήματα/Τραγουδιστές')
    root.config(bg='white')
    i=0

    #ανάλογα με την επιλογή του χρήστη, θέτουμε το "char" και εμφανίζουμε το κατάλληλο μήνυμα 
    if(ch=='1'):
        char='>'
        Label(fr,bg='grey80',font=('Lucida Console','12'),text='Ονόματα συγκροτημάτων και αντίστοιχα μέλη:',width=61, anchor=W).grid(column=0,row=i)
    else:
        char='='
        Label(fr,bg='grey80',font=('Lucida Console','12'),text='Τραγουδιστές:',width=61, anchor=W).grid(column=0,row=i)

    #εκτέλεση sql
    #Το "char" που ορίστηκε παραπάνω, διαμορφώνει κατάλληλα το ερώτημα ανάλογα με την επιλογή του χρήστη
    cur.execute('''
    SELECT mousikos.afm, firstname, lastname, specialty,(SELECT stage_name FROM persona_group WHERE persona_group.artist_id=mousikos.artist_id)
    FROM (mousikos JOIN symbeblhmenos ON mousikos.afm=symbeblhmenos.afm)
    WHERE artist_id in (SELECT artist_id FROM mousikos GROUP BY artist_id HAVING count(artist_id){}1)
    ORDER BY artist_id,mousikos.afm
    '''.format(char))
    ans=cur.fetchone()
    artist_name=''
    i=i+1

    #εκτύπωση των ονομάτων των στηλών
    Label(fr,bg='white',font=('Lucida Console','11'),text=f'\n{"ΑΦΜ":<9} {"ΟΝΟΜΑ":<20} {"ΕΠΩΝΥΜΟ":<20} {"ΜΟΥΣΙΚΗ ΙΔΙΟΤΗΤΑ":<16}',fg="red2",width=68, anchor=W).grid(column=0,row=i,sticky=W)
    i=i+1

    #εκτύπωση αποτελεσμάτων
    while ans is not None:

        #Αν το καλλιτεχνικό όνομα δεν έχει ξαναεμφανιστεί, εκτυπώνεται  
        if(artist_name!=ans[4]):
            Label(fr,bg='grey85',font=('Lucida Console','11'),text='{}'.format(ans[4]),width=68,anchor=W).grid(column=0,row=i,sticky=W)
            artist_name=ans[4]
            i=i+1

        #αλλαγή χρώματος background
        if i%2:
            color='white'
        else:
            color='grey97'

        #εκτύπωση των δεδομένων
        Label(fr,bg=color,font=('Lucida Console','11'),text=f'{ans[0]:<9} {ans[1]:<20} {ans[2]:<20} {ans[3]:<16}',width=68, anchor=W).grid(column=0,row=i,sticky=W)
        i=i+1
        ans=cur.fetchone()

    #κουμπί παραπομπής στη συνάρτηση "show_row" για την προβολή των στοιχείων επικοινωνίας
    b1=Button(fr,bg='white', width=40, activebackground='light cyan', highlightcolor='light cyan', text="Στοιχεία επικοινωνίας συμβεβλημένου",font=('helvetica','13'),command= lambda: basic_functions.select_row_window(5,conn,'epik_symbebl'))
    b1.grid(column=0,row=i,sticky=S)
    cur.close()
    root.mainloop()
    return
예제 #7
0
def printing(table,sql,conn,window):#εκτύπωση δεδομένων

    #παίρνουμε τα ονόματα των στηλών και το μέγιστο μέγεθος χαρακτήρων (αν υπάρχει)
    cur=conn.cursor()
    cur.execute('''SELECT COLUMN_NAME,CHARACTER_MAXIMUM_LENGTH
                       FROM `INFORMATION_SCHEMA`.`COLUMNS` 
                       WHERE `TABLE_SCHEMA`='recordcompany2' 
                       AND `TABLE_NAME`=%s ''',table)
    info=cur.fetchall()
    info_arr=[]
    N=len(info)

    #δημιουργία του πίνακα info_arr που θα έχει το μέγιστο μέγεθος χαρακτήρων για κάθε στήλη
    for i in range(N):
        temp=0
        if(info[i][1] is None):
            if(('order_date' not in info[i][0])):
                temp=13
            else:
                temp=19
        else:
            temp=int(info[i][1])
        if(temp>len(greek(info[i][0]))):
            info_arr.append(temp)
        else:
            info_arr.append(len(greek(info[i][0])))

    #εκτέλεση sql και διαχείριση των λαθών
    cur.execute(sql)
    row=cur.fetchone()
    if(row is None):
        error("Δεν βρέθηκε!")
    else:
        #καταστροφή του παλιού παραθύρου,αν υπήρχε
        if(window!=0):window.destroy()
        #δημιουργία νέου παραθύρου
        fr,root=scrollbar.scroll_window("1600x600")
        root.title('Εκτύπωη Δεδομένων')
        #εκτύπωση των ονομάτων των στηλών
        for i in range(N):
            Label(fr,bg='white',font=('Lucida Console','10'),text=f'{greek(info[i][0]):<{info_arr[i]}} ',width=info_arr[i]+1,fg="red2",anchor=W).grid(column=i,row=0,sticky=W)
        c=1
        while row is not None:
            #εναλλαγή χρώματος
            if c%2:
                color='grey97'
            else:
                color='white'
            #μετατροπή δεδομένων σε μορφή str για εκτύπωση
            for i in range(N):
                if row[i] is None or row[i]=='0000-00-00' or row[i]=='0000-00-00 00:00:00':
                    data='-'
                elif('date' not in info[i][0] and 'rec' not in info[i][0]):
                    data=str(row[i])
                else:
                    if('order_date' in info[i][0]):
                        data = row[i].strftime("%Y-%m-%d %H:%M:%S")
                    elif('diarkeia' in info[i][0]):
                        data = row[i].strftime("%H:%M:%S")
                    else:
                        data = row[i].strftime("%Y-%m-%d")
                        
                #εκτύπωση στοιχείων γραμμής
                Label(fr,bg=color,font=('Lucida Console','10'),text=f'{data:<{info_arr[i]}} ',width=info_arr[i]+1,anchor=W).grid(column=i,row=c,sticky=W)
            c=c+1
            row=cur.fetchone()
        cur.close()
    return
예제 #8
0
def grafistas(conn): #"Γραφίστες και τα άλμπουμ που έχουν επιμεληθεί"

    #δημιουργία παραθύρου
    fr,root=scrollbar.scroll_window("1550x600")
    root.title('Γραφίστες/άλμπουμ')
    root.config(bg='white')

    #εκτέλεση ερωτήματος sql
    cur=conn.cursor()
    cur.execute('''SELECT afm,fullname,amka,address,city,tk,album_id,titlos,release_date
                    FROM grafistas left OUTER JOIN ALBUM on afm=graf_afm
                    ORDER BY afm''')
    graf=cur.fetchone()
    afm=''
    i=0
    a=0

    #εκτύπωση δεδομένων
    while(graf is not None):

        #αν το ΑΦΜ του γραφίστα δεν έχει ξαναεμφανιστεί
        if(afm!=graf[0]):
            
            #αλλαγή χρώματος background
            if a%2:
                color='grey97'
            else:
                color='white'
            a=a+1
            i=i+1
            afm=graf[0]

            #εκτύπωση των ονομάτων των στηλών                                     
            Label(fr,bg=color,font=('Lucida Console','11'),text=(f'\n{"ΑΦΜ":<9} {"ΟΝΟΜΑ":<50} {"ΑΜΚΑ":<16} {"ΔΙΕΥΘΥΝΣΗ":<30} {"ΠΟΛΗ":<30} {"ΤΚ":<5}\n'),anchor=W, fg='forest green',width=150).grid(column=0,row=i,sticky=W)
            i=i+1

            #εκτύπωση στοιχείων γραφίστα
            Label(fr,bg=color,font=('Lucida Console','11'),text=(f'{graf[0]:<9} {graf[1]:<50} {graf[2]:<16} {graf[3]:<30} {graf[4]:<30} {graf[5]:<5}'),anchor=W, width=150).grid(column=0,row=i,sticky=W)
            i=i+1

            #αν έχει επιμεληθεί άλμπουμ ο γραφίστας, εκτύπωση του κατάλληλου μηνύματος και των αντίστοιχων ονομάτων των στηλών
            if(graf[6] is not None):
                Label(fr,bg=color,font=('Lucida Console','11'),text=("\n\nΑΛΜΠΟΥΜ ΠΟΥ ΕΧΕΙ ΕΠΙΜΕΛΗΘΕΙ:\n"), width=150, anchor=W, fg='forest green').grid(column=0,row=i, sticky=W)
                i=i+1
                Label(fr,bg=color,font=('Lucida Console','11'),text=(f'{"ΚΩΔΙΚΟΣ":<9} {"ΤΙΤΛΟΣ ΑΛΜΠΟΥΜ":<50} {"ΗΜ.ΚΥΚΛΟΦΟΡΙΑΣ":^14}\n'),anchor=W, fg='forest green',width=150).grid(column=0,row=i,sticky=W)
                i=i+1

            #εκτύπωση μηνύματος αν δεν έχει επιμεληθεί άλμπουμ
            else:
                Label(fr,bg=color,font=('Lucida Console','11'),text=("\n\nΔεν έχει επιμεληθεί αλμπουμ\n"),fg='forest green', anchor=W, width=150).grid(column=0,row=i, sticky=W)
                i=i+1   

        #διαχείριση των δεδομένων τύπου date και εκτύπωση των δεδομένων των άλμπουμ που έχει επιμεληθεί
        if(graf[6] is not None):
            data=[]
            data.append(str(graf[6]))
            data.append(str(graf[7]))
            data.append(graf[8].strftime("%Y-%m-%d"))
            Label(fr,bg=color,font=('Lucida Console','11'),text=(f'{data[0]:<9} {data[1]:<50} {data[2]:<16}'), anchor=W, width=150).grid(column=0,row=i,sticky=W)
            i=i+1
        graf=cur.fetchone()

    #κουμπί παραπομπής στην συνάρτηση "show_row" για την προβολή των στοιχείων επικοινωνίας 
    b1=Button(fr,bg='white', width=40, activebackground='light cyan', highlightcolor='light cyan', text="Στοιχεία επικοινωνίας γραφίστα",font=('times new roman','13'),fg='dark green',command= lambda: basic_functions.select_row_window(5,conn,'epik_graf'))
    b1.grid(column=0,row=i,sticky=S)
    cur.close
    return
예제 #9
0
def profit_per_album(conn):  #"Έσοδα ανά άλμπουμ"

    #δημιουργία παραθύρου
    size = "620x600"
    fr, root = scrollbar.scroll_window(size)
    root.title('Έσοδα ανά άλμπουμ')

    #εκτέλεση ερωτήματος sql για την εύρεση των συνολικών εσόδων απο τις πωλήσεις κάθε αλμπουμ
    cur = conn.cursor()
    cur.execute('''
    select album.album_id, titlos, sum(posothta*item_profit) as 'synoliko kerdos'
    from album left outer join pwleitai on album.album_id=pwleitai.album_id
    group by album.album_id''')
    ans = cur.fetchone()

    #αποθήκευση απάντησης σε λίστα
    a = []
    while ans is not None:
        a.append(list(ans))
        ans = cur.fetchone()
    cur.close()

    #εκτέλεση ερωτήματος sql για την εύρεση του συνολικού ποσού που δαπανήθηκε για την καταχώρηση στα ψηφιακά καταστήματα
    cur2 = conn.cursor()
    cur2.execute('''
    select album.album_id, titlos, sum(adm_fee)
    from (album join pwleitai on album.album_id=pwleitai.album_id) join psif_dianomh on pwleitai.afm=psif_dianomh.afm
    group by album.album_id
    order by album.album_id''')
    b = cur2.fetchone()
    i = 0
    while b is not None:

        #αφαίρεση του κόστους καταχώρησης από τα συνολικά έσοδα από τις πωλήσεις του άλμπουμ
        if b[2] is not None: a[i][2] = int(a[i][2]) - int(b[2])
        b = cur2.fetchone()
        i = i + 1
    i = 1

    #εκτύπωση των ονομάτων των στηλών
    Label(
        fr,
        bg='white',
        font=('Lucida Console', '11'),
        text=f'{"Κωδικός":<8}  {"Τίτλος Άλμπουμ":<40}  {"Συνολικά έσοδα":<14}',
        fg="red2").grid(sticky=W, column=0, row=0)
    for i in range(len(a)):

        #αλλαγή του χρώματος background
        if i % 2:
            color = 'grey97'
        else:
            color = 'white'

        #εκτύπωση αποτελεσμάτων
        if (a[i][2] is None):
            a[i][2] = 0
        Label(fr,
              bg=color,
              font=('Lucida Console', '11'),
              width=70,
              anchor=W,
              text=f'{a[i][0]:<8}  {a[i][1]:<40}  {a[i][2]:<13}').grid(
                  sticky=W, column=0, row=i + 2)
    cur2.close()
    root.mainloop()
    return
예제 #10
0
def songInfo_perAlbum(conn, choice):  #"Στοιχεία τραγουδιών ανά άλμπουμ"
    if (choice == '**Όλα τα Άλμπουμ**'):
        choice = ''

    #Δημιουργία παραθύρου
    size = "1300x600"
    fr, root = scrollbar.scroll_window(size)
    root.title('Στοιχεία τραγουδιών ανά άλμπουμ')
    root.config(bg='white')
    cur = conn.cursor()
    if choice != '':
        try:  #Εκτέλεση sql για συγκεκριμένο άλμπουμ που είναι αποθηκευμένο στο "choice"
            cur.execute(
                '''
            SELECT album.titlos, anhkei.track_no, tragoudi.titlos, diarkeia, s_language
            FROM tragoudi, anhkei, album
            WHERE anhkei.song_id=tragoudi.song_id AND anhkei.album_id=album.album_id AND album.titlos=%s
            ORDER BY album.titlos, anhkei.track_no, tragoudi.titlos''', choice)
        except pymysql.Error:
            cur.close()
            return
    else:  #Εκτέλεση sql για όλα τα άλμπουμ
        cur.execute('''
        SELECT album.titlos, anhkei.track_no, tragoudi.titlos, diarkeia, s_language
        FROM tragoudi, anhkei, album
        WHERE anhkei.song_id=tragoudi.song_id AND anhkei.album_id=album.album_id
        ORDER BY album.titlos, anhkei.track_no, tragoudi.titlos''')
    ans = cur.fetchone()
    album = ''
    row_num = 0
    color_num = 0
    while ans is not None:
        if ans[0] != album:  #Αν δεν έχει ξαναεμφανιστεί το συγκεκριμένο άλμπουμ
            Label(fr,
                  font=('Lucida Console', '12'),
                  bg='grey80',
                  width=140,
                  anchor=W,
                  text=ans[0]).grid(sticky=W, column=0, row=row_num)
            row_num = row_num + 1
            r = 'No.'
            r0 = 'Τίτλος Τραγουδιού'
            r1 = 'Ερμηνεία'
            r2 = 'Μουσική'
            r3 = 'Στίχοι'
            r4 = 'Διάρκεια'
            r5 = 'Γλώσσα'
            Label(
                fr,
                font=('Lucida Console', '10'),
                bg='white',
                width=180,
                anchor=W,
                text=(f'{r:3} {r0:40} {r1:50} {r2:20} {r3:20} {r4:8} {r5:6}'),
                fg="magenta").grid(sticky=W, column=0, row=row_num)
            album = ans[0]
            row_num = row_num + 1

        #Εύρεση του καλλιτεχνικού ονόματος του ερμηνευτή
        cur1 = conn.cursor()
        art_num = cur1.execute(
            '''
        SELECT stage_name
        FROM (tragoudi join ermhneyei on tragoudi.song_id=ermhneyei.song_id), persona_group
        WHERE ermhneyei.artist_id=persona_group.artist_id AND tragoudi.titlos=%s''',
            ans[2])
        a = cur1.fetchone()
        artists = []
        if (a is None): artists.append(' ')
        while a is not None:
            artists.append(a[0])
            a = cur1.fetchone()

        #Εύρεση των συνθετών ενός τραγουδιού
        cur2 = conn.cursor()
        syn_num = cur2.execute(
            '''
        SELECT lastname
        FROM (tragoudi join synthetei on tragoudi.song_id=synthetei.song_id), symbeblhmenos
        WHERE synthetei.afm=symbeblhmenos.afm AND tragoudi.titlos=%s''',
            ans[2])
        s = cur2.fetchone()
        synth = []
        if (s is None): synth.append(' ')
        while s is not None:
            synth.append(s[0])
            s = cur2.fetchone()

        #Εύρεση των στιχουργών ενός τραγουδιού
        cur3 = conn.cursor()
        stix_num = cur3.execute(
            '''
        SELECT lastname
        FROM (tragoudi join grafei on tragoudi.song_id=grafei.song_id), symbeblhmenos
        WHERE grafei.afm=symbeblhmenos.afm AND tragoudi.titlos=%s''', ans[2])
        st = cur3.fetchone()
        stix = []
        if (st is None): stix.append(' ')
        while st is not None:
            stix.append(st[0])
            st = cur3.fetchone()

        diarkeia = str(ans[3])

        #Αλλαγή χρώματος background
        if color_num % 2:
            color = 'white'
        else:
            color = 'grey97'

        #Εκτύπωση δεδομένων
        Label(
            fr,
            font=('Lucida Console', '10'),
            bg=color,
            width=180,
            anchor=W,
            text=
            f'{ans[1]:<3} {ans[2]:40} {artists[0]:50} {synth[0]:20} {stix[0]:20} {diarkeia:8}  {ans[4]:^6}'
        ).grid(sticky=W, column=0, row=row_num)
        row_num = row_num + 1
        i = 1
        blank = ''
        num = [art_num, syn_num, stix_num]
        num.sort()
        while i < num[2]:
            if i < num[0]:
                Label(
                    fr,
                    font=('Lucida Console', '10'),
                    bg=color,
                    width=180,
                    anchor=W,
                    text=f'{blank:45} {artists[i]:50} {synth[i]:20} {stix[i]:20}'
                ).grid(sticky=W, column=0, row=row_num)
            elif i < num[1]:
                if art_num == num[0]:
                    Label(fr,
                          font=('Lucida Console', '10'),
                          bg=color,
                          width=180,
                          anchor=W,
                          text=f'{blank:95} {synth[i]:20} {stix[i]:20}').grid(
                              sticky=W, column=0, row=row_num)
                elif syn_num == num[0]:
                    Label(fr,
                          font=('Lucida Console', '10'),
                          bg=color,
                          width=180,
                          anchor=W,
                          text=
                          f'{blank:45} {artists[i]:50} {blank:20} {stix[i]:20}'
                          ).grid(sticky=W, column=0, row=row_num)
                elif stix_num == num[0]:
                    Label(
                        fr,
                        font=('Lucida Console', '10'),
                        bg=color,
                        width=180,
                        anchor=W,
                        text=f'{blank:45} {artists[i]:50} {synth[i]:20}').grid(
                            sticky=W, column=0, row=row_num)
            else:
                if art_num == num[2]:
                    Label(fr,
                          font=('Lucida Console', '10'),
                          bg=color,
                          width=180,
                          anchor=W,
                          text=f'{blank:45} {artists[i]:50}').grid(sticky=W,
                                                                   column=0,
                                                                   row=row_num)
                elif syn_num == num[2]:
                    Label(fr,
                          font=('Lucida Console', '10'),
                          bg=color,
                          width=180,
                          anchor=W,
                          text=f'{blank:95} {synth[i]:20}').grid(sticky=W,
                                                                 column=0,
                                                                 row=row_num)
                elif stix_num == num[2]:
                    Label(fr,
                          font=('Lucida Console', '10'),
                          bg=color,
                          width=180,
                          anchor=W,
                          text=f'{blank:116} {stix[i]:20}').grid(sticky=W,
                                                                 column=0,
                                                                 row=row_num)
            row_num = row_num + 1
            i = i + 1
        color_num = color_num + 1
        ans = cur.fetchone()
    return
예제 #11
0
def album_per_genre(conn):  #"Άλμπουμ ανά μουσικό είδος"
    fr, root = scrollbar.scroll_window("1335x600")  #Δημιουργία παραθύρου
    root.title('Άλμπουμ ανά μουσικό είδος')
    root.config(bg='white')
    cur = conn.cursor()
    #Εκτέλεση sql
    cur.execute(
        '''SELECT * FROM((SELECT A.genre,B.album_id, B.titlos, vinyl_stock, CD_stock, release_date, graf_afm,royalties_prof,total
                                  FROM (SELECT * FROM ypagetai) AS A,
                                      (SELECT album.album_id, album.titlos, vinyl_stock, CD_stock, release_date, graf_afm,royalties_prof,COUNT(anhkei.song_id) AS total
                                      FROM (album join anhkei on album.album_id=anhkei.album_id)
                                      GROUP BY anhkei.album_id) AS B
                                  WHERE A.album_id=B.album_id
                                  ORDER BY genre, album_id)
                                UNION
                                (SELECT genre,'-','-','-','-','-','-','-','-' 
                                FROM eidos 
                                WHERE genre NOT IN (SELECT genre FROM ypagetai))
                                ) as C
                ORDER BY genre, album_id DESC''')
    ans = cur.fetchone()
    i = 0
    eidos = ''

    #Εκτύπωση των ονομάτων των στηλών
    Label(
        fr,
        bg='white',
        font=('Lucida Console', '11'),
        width=146,
        anchor=W,
        text=
        f'{"Κωδ. Άλμπ.":<11} {"Τίτλος":<50} {"Απόθεμα Βινυλ.":<14} {"Απόθεμα CD":<11} {"Ημερ.Κυκλοφ.":<12} {"ΑΦΜ γραφίστα":<12} {"Κέρδη πνευμ.δικ.":<16} {"Αρ.τραγουδιών":<13}',
        fg="red2").grid(column=0, row=i, sticky=W)
    while (ans is not None):
        i = i + 1

        #εάν το είδος δεν έχει εμφανιστεί ξανά
        if (str(ans[0]) != eidos):
            eidos = str(ans[0])
            cur2 = conn.cursor()

            #Εύρεση μέσων πωλήσεων ανά άλμπουμ
            cur2.execute(f'''SELECT round(AVG(Α.total_sales)) FROM
                            (SELECT (SUM(posothta)) as total_sales
                            FROM (ypagetai join pwleitai on ypagetai.album_id=pwleitai.album_id)
                            where genre="{eidos}"
                            GROUP BY pwleitai.album_id) AS Α''')
            Label(fr,
                  bg='grey85',
                  font=('Lucida Console', '11'),
                  text='{}, Μέσες πωλήσεις:{}'.format(eidos,
                                                      str(cur2.fetchone()[0])),
                  width=146,
                  anchor=W).grid(column=0, row=i, sticky=W)
            i = i + 1
            cur2.close()

        #Αλλαγή χρώματος background
        if i % 2:
            color = 'white'
        else:
            color = 'grey97'

        #Διαχείριση δεδομένων date
        if (ans[5] is None or ans[5] == '0000-00-00' or ans[5] == '-'):
            date = '-'
        else:
            date = str(ans[5])

        #εκτύπωση δεδομένων
        Label(
            fr,
            bg=color,
            font=('Lucida Console', '11'),
            text=
            f'{str(ans[1]):<11} {str(ans[2]):<50} {str(ans[3]):<14} {str(ans[4]):<11} {date:<12} {str(ans[6]):<12} {str(ans[7]):<16} {str(ans[8]):<13}',
            width=146,
            anchor=W).grid(column=0, row=i, sticky=W)
        ans = cur.fetchone()
    cur.close()
    root.mainloop()
    return