ERP-库存与存货-仓储部产品出库


import tkinter as tk
from  tkinter import ttk
from tkinter import *                                                               #导入tkinter
from tkinter import messagebox                                                      #引入弹出框
#from typing import Any, Union
import pymysql                                                                       #导入pymysql
from pymysql.cursors import Cursor                                                  #导入游标
from hashlib import sha1                                                            #导入hashlib,引用函数
from PIL import Image                                                                #图像缩放
from tkinter import Scrollbar
from tkinter.ttk import Treeview
import datetime


window=tk.Tk()
window.title('产品出库单-仓储部')
window.geometry('1200x600-100-100')
window['bg'] = 'Beige'
window.resizable(False, False)#不允许改变窗口大小
class YLCG:                                                             #原料采购
    def __init__(self,window):
        self.conn = pymysql.Connect(
            host='localhost',
            port=3306,
            user='root',
            passwd='12345',
            db='库存与存货系统',
            charset="utf8"
        )

    #Label
        YLCG_name_Label=tk.Label(window,text='产品出库单',font=('Arial',25),bg= 'Beige')
        YLCG_name_Label.place(x=350,y=15)

        YLCG_id_Label=tk.Label(window,text='出库单号:',font=('Arial',12),bg= 'Beige')
        YLCG_id_Label.place(x=100,y=80)

        YLCG_date_Label=tk.Label(window,text='备注:',font=('Arial',12),bg= 'Beige')
        YLCG_date_Label.place(x=300,y=120)

        YLCG_WareHouse_Label=tk.Label(window,text='出库仓库:',font=('Arial',12),bg= 'Beige')
        YLCG_WareHouse_Label.place(x=500,y=80)

        YLCG_Department_Label=tk.Label(window,text='部门:',font=('Arial',12),bg= 'Beige')
        YLCG_Department_Label.place(x=132,y=120)

        YLCG_reference_Label=tk.Label(window,text='出库日期:',font=('Arial',12),bg= 'Beige')
        YLCG_reference_Label.place(x=300,y=83)

        YLCG_ZhiDanRen_Label = tk.Label(window, text='制单人:', font=('Arial', 12),bg= 'Beige')
        YLCG_ZhiDanRen_Label.place(x=100, y=450)


        #详细
        frame = tk.Frame(window)  # 锁定框架
        frame.place(x=85, y=200, width=620, height=230)
        scrollBarx = tk.Scrollbar(frame, orient='horizontal')  # 定义滑动条
        scrollBarx.pack(side=tk.BOTTOM, fill=tk.X)
        scrollBary = tk.Scrollbar(frame)
        scrollBary.pack(side=tk.RIGHT, fill=tk.Y)
        tree = ttk.Treeview(frame, show="headings", xscrollcommand=scrollBarx.set, yscrollcommand=scrollBary.set)
        scrollBarx['command'] = tree.xview  # 根据视图x移动
        scrollBary['command'] = tree.yview  # 根据视图y移动
        tree['columns'] = ('产品编码', '产品名字', '产品类别', '出库数目', '价格', '主计量', '出库时间', '生产批号', '描述', '颜色', '硬度', '供应商ID')
        tree.column('产品编码', width=120, anchor='center')
        tree.column('产品名字', width=120, anchor='center')
        tree.column('产品类别', width=120, anchor='center')
        tree.column('出库数目', width=120, anchor='center')
        tree.column('价格', width=120, anchor='center')
        tree.column('主计量', width=120, anchor='center')
        tree.column('出库时间', width=120, anchor='center')
        tree.column('生产批号', width=120, anchor='center')
        tree.column('描述', width=120, anchor='center')
        tree.column('颜色', width=120, anchor='center')
        tree.column('硬度', width=120, anchor='center')
        tree.column('供应商ID', width=120, anchor='center')

        tree.heading('产品编码', text='产品编码')
        tree.heading('产品名字', text='产品名字')
        tree.heading('产品类别', text='产品类别')
        tree.heading('出库数目', text='出库数目')
        tree.heading('价格', text='价格')
        tree.heading('主计量', text='主计量')
        tree.heading('出库时间', text='出库时间')
        tree.heading('生产批号', text='生产批号')
        tree.heading('描述', text='描述')
        tree.heading('颜色', text='颜色')
        tree.heading('硬度', text='硬度')
        tree.heading('供应商ID', text='供应商ID')
        tree.insert('', 'end', values=('', '', '', '', '', '', '', '', '', '', '', ''))

        def view_material():
            cursor = self.conn.cursor()                                 #从数据库选数据
            cursor.execute("select * from goods_linshi ")
            self.conn.commit()
            data = cursor.fetchall()
            print(data[0][0])

            cursor = self.conn.cursor()                                 #取行数
            cursor.execute("select count(*) from goods_linshi ")
            row1 = cursor.fetchall()
            self.conn.commit()
            row = row1[0][0]
            int(row)
            print(row)
            for i in range(row):
                print(data[0][1])  # 测试
                print(data[i][1])
                tree.insert('', 'end', values=(data[i][0], data[i][1], data[i][2], data[i][3], data[i][4], data[i][5], data[i][6],data[i][7], data[i][8], data[i][9], data[i][10], data[i][11]))

        def add_material():                #产品出库
            cursor = self.conn.cursor()
            cursor.execute("select count(*) from goods_linshi ")
            row1 = cursor.fetchall()
            self.conn.commit()
            row = row1[0][0]
            int(row)
            print(row)   #取行数

            cursor = self.conn.cursor()                 #变动数据
            cursor.execute("select * from goods_linshi ")
            data = cursor.fetchall()
            self.conn.commit()

            for i in range(row):
                cursor = self.conn.cursor()  # 原本数据
                print(data[i][0])
                cursor.execute("select * from goods where `GoodsID`='%s' " %data[i][0])
                print(2)#测试
                datayep = cursor.fetchone()
                print(datayep)
                self.conn.commit()
                ok=datayep[3]-data[i][3]
                cursor.execute("update goods set `GoodsNum`='%s' where `GoodsID`= '%s'" %(ok,data[i][0]))

                #清空临时表
                cursor.execute("DELETE FROM goods_linshi")

            self.conn.commit()

            print(1)                         #此时产品数据库表数据变动


        tk.Button(window, text='确定出库', width=10, height=1, command=add_material,bg= 'LemonChiffon').place(x=500, y=440)
        tk.Button(window, text='查看', width=10, height=1, command=view_material, bg='LemonChiffon').place(x=350, y=440)
        tree.pack()


    def __Entry(self,window):
        YLCG_MaterialID_Entry=tk.Entry(window,width=15)              #出库单号
        YLCG_MaterialID_Entry.place(x=175,y=83)
        YLCG_MaterialID_Entry.insert('end', 124)

        YLCG_MaterialName_Entry=tk.Entry(window,width=18)            #日期
        YLCG_MaterialName_Entry.place(x=375,y=83)
        nowTime = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')  # 现在时间
        YLCG_MaterialName_Entry.insert('end', nowTime)

        YLCG_M_Category_Entry=tk.Entry(window,width=15)              #出库仓库
        YLCG_M_Category_Entry.place(x=575,y=83)
        YLCG_M_Category_Entry.insert('end', '成品库')

        YLCG_MateriralNum_Entry=tk.Entry(window,width=15)            #部门
        YLCG_MateriralNum_Entry.place(x=175,y=123)
        YLCG_MateriralNum_Entry.insert('end', '仓储部')

        YLCG_date_Entry = tk.Entry(window, width=47)
        YLCG_date_Entry.place(x=350, y=120)                           #备注
        YLCG_date_Entry.insert('end', '该表显示当前时间下的准出库情况!')


        YLCG_SupplierID_Entry = tk.Entry(window, width=15)           #制单人
        YLCG_SupplierID_Entry.place(x=170, y=450)
        YLCG_SupplierID_Entry.insert('end', '0001')



    def show(self,window):
        self.__Entry(window)
        window.mainloop()

YLCG=YLCG(window)
YLCG.show(window)

window.mainloop()

猜你喜欢

转载自blog.csdn.net/weixin_40838568/article/details/81043269