├── icone.ico
├── _imgs
├── email.png
├── logo.PNG
├── phone.png
├── user.png
└── instagram.png
├── __pycache__
├── xml.cpython-39.pyc
├── main.cpython-39.pyc
├── database.cpython-39.pyc
├── ui_login.cpython-39.pyc
├── ui_main.cpython-39.pyc
└── xml_files.cpython-39.pyc
├── .gitignore
├── main.spec
├── xml_files.py
├── ui_login.py
├── login.ui
├── database.py
├── main.py
├── ui_main.py
└── ui_main.ui
/icone.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pytax/Sistema-de-Gerenciamento-de-Estoque/HEAD/icone.ico
--------------------------------------------------------------------------------
/_imgs/email.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pytax/Sistema-de-Gerenciamento-de-Estoque/HEAD/_imgs/email.png
--------------------------------------------------------------------------------
/_imgs/logo.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pytax/Sistema-de-Gerenciamento-de-Estoque/HEAD/_imgs/logo.PNG
--------------------------------------------------------------------------------
/_imgs/phone.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pytax/Sistema-de-Gerenciamento-de-Estoque/HEAD/_imgs/phone.png
--------------------------------------------------------------------------------
/_imgs/user.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pytax/Sistema-de-Gerenciamento-de-Estoque/HEAD/_imgs/user.png
--------------------------------------------------------------------------------
/_imgs/instagram.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pytax/Sistema-de-Gerenciamento-de-Estoque/HEAD/_imgs/instagram.png
--------------------------------------------------------------------------------
/__pycache__/xml.cpython-39.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pytax/Sistema-de-Gerenciamento-de-Estoque/HEAD/__pycache__/xml.cpython-39.pyc
--------------------------------------------------------------------------------
/__pycache__/main.cpython-39.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pytax/Sistema-de-Gerenciamento-de-Estoque/HEAD/__pycache__/main.cpython-39.pyc
--------------------------------------------------------------------------------
/__pycache__/database.cpython-39.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pytax/Sistema-de-Gerenciamento-de-Estoque/HEAD/__pycache__/database.cpython-39.pyc
--------------------------------------------------------------------------------
/__pycache__/ui_login.cpython-39.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pytax/Sistema-de-Gerenciamento-de-Estoque/HEAD/__pycache__/ui_login.cpython-39.pyc
--------------------------------------------------------------------------------
/__pycache__/ui_main.cpython-39.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pytax/Sistema-de-Gerenciamento-de-Estoque/HEAD/__pycache__/ui_main.cpython-39.pyc
--------------------------------------------------------------------------------
/__pycache__/xml_files.cpython-39.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pytax/Sistema-de-Gerenciamento-de-Estoque/HEAD/__pycache__/xml_files.cpython-39.pyc
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | venv
2 | files
3 | .idea
4 | build
5 | dist
6 | icons
7 | icons.qrc
8 | Resumo de notas.xlsx
9 | Sistema de gerenciamento.exe
10 | system.db
11 | ui_main.ui
12 | ui_main_pt.ui
13 | index.html
14 | Media
15 | player
16 | xml
17 | dist
18 |
19 |
20 |
--------------------------------------------------------------------------------
/main.spec:
--------------------------------------------------------------------------------
1 | # -*- mode: python ; coding: utf-8 -*-
2 |
3 |
4 | block_cipher = None
5 |
6 |
7 | a = Analysis(['main.py'],
8 | pathex=['C:\\Users\\nicol\\OneDrive\\Canal Youtube\\PyTax\\Interface - Pyside2\\Project_01_system'],
9 | binaries=[],
10 | datas=[],
11 | hiddenimports=[],
12 | hookspath=[],
13 | hooksconfig={},
14 | runtime_hooks=[],
15 | excludes=[],
16 | win_no_prefer_redirects=False,
17 | win_private_assemblies=False,
18 | cipher=block_cipher,
19 | noarchive=False)
20 | pyz = PYZ(a.pure, a.zipped_data,
21 | cipher=block_cipher)
22 |
23 | exe = EXE(pyz,
24 | a.scripts,
25 | a.binaries,
26 | a.zipfiles,
27 | a.datas,
28 | [],
29 | name='main',
30 | debug=False,
31 | bootloader_ignore_signals=False,
32 | strip=False,
33 | upx=True,
34 | upx_exclude=[],
35 | runtime_tmpdir=None,
36 | console=False,
37 | disable_windowed_traceback=False,
38 | target_arch=None,
39 | codesign_identity=None,
40 | entitlements_file=None , icon='icone.ico')
41 |
--------------------------------------------------------------------------------
/xml_files.py:
--------------------------------------------------------------------------------
1 | import os
2 | import xml.etree.ElementTree as Et
3 | from datetime import date
4 |
5 | class Read_xml():
6 | def __init__(self, directory) -> None:
7 | self.directory = directory
8 |
9 | def all_files(self):
10 | return [ os.path.join(self.directory, arq) for arq in os.listdir(self.directory)
11 | if arq.lower().endswith(".xml")]
12 |
13 |
14 | def nfe_data(self, xml):
15 | root = Et.parse(xml).getroot()
16 | nsNFe = {"ns": "http://www.portalfiscal.inf.br/nfe"}
17 |
18 | #DADOS DA NFE
19 | NFe = self.check_none(root.find("./ns:NFe/ns:infNFe/ns:ide/ns:nNF", nsNFe)) #1
20 | serie = self.check_none(root.find("./ns:NFe/ns:infNFe/ns:ide/ns:serie", nsNFe)) #2
21 | data_emissao = self.check_none(root.find("./ns:NFe/ns:infNFe/ns:ide/ns:dhEmi", nsNFe))
22 | data_emissao = F"{data_emissao[8:10]}/{data_emissao[5:7]}/{data_emissao[:4]}"
23 |
24 | # DADOS EMITENTES
25 | chave = self.check_none(root.find("./ns:protNFe/ns:infProt/ns:chNFe", nsNFe))
26 | cnpj_emitente = self.check_none(root.find("./ns:NFe/ns:infNFe/ns:emit/ns:CNPJ", nsNFe))
27 | nome_emitente = self.check_none(root.find("./ns:NFe/ns:infNFe/ns:emit/ns:xNome", nsNFe)) #1
28 |
29 | cnpj_emitente = self.format_cnpj(cnpj_emitente)
30 | valorNfe = self.check_none(root.find("./ns:NFe/ns:infNFe/ns:total/ns:ICMSTot/ns:vNF", nsNFe)) #13
31 | data_importacao = date.today()
32 | data_importacao = data_importacao.strftime('%d/%m/%Y')
33 | data_saida = ""
34 | usuario = ''
35 |
36 | itemNota = 1
37 | notas = []
38 |
39 | for item in root.findall("./ns:NFe/ns:infNFe/ns:det", nsNFe):
40 |
41 | # DADOS DO ITEM =======================================================================================
42 | cod = self.check_none(item.find(".ns:prod/ns:cProd", nsNFe))
43 | qntd = self.check_none(item.find(".ns:prod/ns:qCom", nsNFe))
44 | descricao = self.check_none(item.find(".ns:prod/ns:xProd", nsNFe))
45 | unidade_medida = self.check_none(item.find(".ns:prod/ns:uCom", nsNFe))
46 | valorProd = self.check_none(item.find (".ns:prod/ns:vProd", nsNFe))
47 |
48 | dados = [NFe, serie, data_emissao,chave, cnpj_emitente, nome_emitente,
49 | valorNfe, itemNota, cod, qntd, descricao, unidade_medida, valorProd,
50 | data_importacao, usuario, data_saida]
51 |
52 | notas.append(dados)
53 | itemNota +=1
54 | return notas
55 |
56 | def check_none(self, var):
57 | if var == None:
58 | return ""
59 | else:
60 | try:
61 | return var.text.replace('.',',')
62 | except:
63 | return var.text
64 |
65 | def format_cnpj(self, cnpj):
66 | try:
67 | cnpj = f'{cnpj[:2]}.{cnpj[2:5]}.{cnpj[5:8]}/{cnpj[8:12]}-{cnpj[12:14]}'
68 | return cnpj
69 |
70 | except:
71 | return ""
72 |
73 | if __name__ == "__main__":
74 | xml = Read_xml('C:\\Users\\nicol\\OneDrive\\Canal Youtube\\PyTax\\Interface - Pyside2\\Project_01_system\\xml')
75 | all = xml.all_files()
76 |
77 | for i in all:
78 | result = xml.nfe_data(i)
79 |
80 | print(result)
--------------------------------------------------------------------------------
/ui_login.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 |
3 | ################################################################################
4 | ## Form generated from reading UI file 'login.ui'
5 | ##
6 | ## Created by: Qt User Interface Compiler version 5.15.2
7 | ##
8 | ## WARNING! All changes made in this file will be lost when recompiling UI file!
9 | ################################################################################
10 |
11 | from PySide2.QtCore import *
12 | from PySide2.QtGui import *
13 | from PySide2.QtWidgets import *
14 |
15 |
16 | class Ui_Login(object):
17 | def setupUi(self, Login):
18 | if not Login.objectName():
19 | Login.setObjectName(u"Login")
20 | Login.resize(532, 506)
21 | Login.setStyleSheet(u"background-color: rgb(0, 80, 121);")
22 | self.label = QLabel(Login)
23 | self.label.setObjectName(u"label")
24 | self.label.setGeometry(QRect(190, 30, 151, 141))
25 | self.label.setStyleSheet(u"background-color:None;")
26 | self.label.setPixmap(QPixmap(u"../../../../Projetos/Empresas/Transtellini/Icons/icon_title.png"))
27 | self.label.setScaledContents(True)
28 | self.frame = QFrame(Login)
29 | self.frame.setObjectName(u"frame")
30 | self.frame.setGeometry(QRect(80, 140, 381, 321))
31 | self.frame.setStyleSheet(u"background-color: rgba(0,0,0,0.2)")
32 | self.frame.setFrameShape(QFrame.StyledPanel)
33 | self.frame.setFrameShadow(QFrame.Raised)
34 | self.txt_login = QLineEdit(self.frame)
35 | self.txt_login.setObjectName(u"txt_login")
36 | self.txt_login.setGeometry(QRect(60, 60, 251, 31))
37 | self.txt_login.setStyleSheet(u"color:#fff; font-size: 16px;")
38 | self.txt_login.setAlignment(Qt.AlignCenter)
39 | self.btn_login = QPushButton(self.frame)
40 | self.btn_login.setObjectName(u"btn_login")
41 | self.btn_login.setGeometry(QRect(100, 230, 181, 41))
42 | self.btn_login.setCursor(QCursor(Qt.PointingHandCursor))
43 | self.btn_login.setStyleSheet(u"QPushButton{color: rgb(255, 255, 255); border-radius: 10px; font-size: 16px; background-color:rgb(0, 0, 10);;}\n"
44 | "\n"
45 | "QPushButton:hover{background-color: #fff; color:black}\n"
46 | "\n"
47 | "")
48 | self.txt_password = QLineEdit(self.frame)
49 | self.txt_password.setObjectName(u"txt_password")
50 | self.txt_password.setGeometry(QRect(60, 140, 251, 31))
51 | self.txt_password.setStyleSheet(u"color:#fff; font-size: 16px;")
52 | self.txt_password.setEchoMode(QLineEdit.Password)
53 | self.txt_password.setAlignment(Qt.AlignCenter)
54 | QWidget.setTabOrder(self.txt_login, self.txt_password)
55 | QWidget.setTabOrder(self.txt_password, self.btn_login)
56 |
57 | self.retranslateUi(Login)
58 |
59 | QMetaObject.connectSlotsByName(Login)
60 | # setupUi
61 |
62 | def retranslateUi(self, Login):
63 | Login.setWindowTitle(QCoreApplication.translate("Login", u"Form", None))
64 | self.label.setText("")
65 | self.txt_login.setText("")
66 | self.txt_login.setPlaceholderText(QCoreApplication.translate("Login", u"User", None))
67 | self.btn_login.setText(QCoreApplication.translate("Login", u"LOGIN", None))
68 | self.txt_password.setText("")
69 | self.txt_password.setPlaceholderText(QCoreApplication.translate("Login", u"Password", None))
70 | # retranslateUi
71 |
72 |
--------------------------------------------------------------------------------
/login.ui:
--------------------------------------------------------------------------------
1 |
2 |
3 | Login
4 |
5 |
6 |
7 | 0
8 | 0
9 | 532
10 | 506
11 |
12 |
13 |
14 | Form
15 |
16 |
17 | background-color: rgb(0, 80, 121);
18 |
19 |
20 |
21 |
22 | 190
23 | 30
24 | 151
25 | 141
26 |
27 |
28 |
29 | background-color:None;
30 |
31 |
32 |
33 |
34 |
35 | ../../../../Projetos/Empresas/Transtellini/Icons/icon_title.png
36 |
37 |
38 | true
39 |
40 |
41 |
42 |
43 |
44 | 80
45 | 140
46 | 381
47 | 321
48 |
49 |
50 |
51 | background-color: rgba(0,0,0,0.2)
52 |
53 |
54 | QFrame::StyledPanel
55 |
56 |
57 | QFrame::Raised
58 |
59 |
60 |
61 |
62 | 60
63 | 60
64 | 251
65 | 31
66 |
67 |
68 |
69 | color:#fff; font-size: 16px;
70 |
71 |
72 |
73 |
74 |
75 | Qt::AlignCenter
76 |
77 |
78 | User
79 |
80 |
81 |
82 |
83 |
84 | 100
85 | 230
86 | 181
87 | 41
88 |
89 |
90 |
91 | PointingHandCursor
92 |
93 |
94 | QPushButton{color: rgb(255, 255, 255); border-radius: 10px; font-size: 16px; background-color:rgb(0, 0, 10);;}
95 |
96 | QPushButton:hover{background-color: #fff; color:black}
97 |
98 |
99 |
100 |
101 | LOGIN
102 |
103 |
104 |
105 |
106 |
107 | 60
108 | 140
109 | 251
110 | 31
111 |
112 |
113 |
114 | color:#fff; font-size: 16px;
115 |
116 |
117 |
118 |
119 |
120 | QLineEdit::Password
121 |
122 |
123 | Qt::AlignCenter
124 |
125 |
126 | Password
127 |
128 |
129 |
130 |
131 |
132 | txt_login
133 | txt_password
134 | btn_login
135 |
136 |
137 |
138 |
139 |
--------------------------------------------------------------------------------
/database.py:
--------------------------------------------------------------------------------
1 | import sqlite3
2 | from sqlite3.dbapi2 import Cursor
3 |
4 |
5 | class DataBase():
6 | def __init__(self, name = "system.db") -> None:
7 | self.name = name
8 | def conecta(self):
9 | self.connection = sqlite3.connect(self.name)
10 |
11 | def close_connection(self):
12 | try:
13 | self.connection.close()
14 | except:
15 | pass
16 |
17 | def create_table_users(self):
18 | try:
19 | cursor = self.connection.cursor()
20 | cursor.execute("""
21 |
22 | CREATE TABLE IF NOT EXISTS users(
23 |
24 | id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
25 | name TEXT NOT NULL,
26 | user TEXT UNIQUE NOT NULL,
27 | password TEXT NOT NULL,
28 | access TEXT NOT NULL
29 |
30 | );
31 |
32 | """)
33 | except AttributeError:
34 | print("faça a conexão")
35 |
36 | def insert_user(self, name, user, password, access):
37 |
38 | cursor = self.connection.cursor()
39 | cursor.execute("""
40 |
41 | INSERT INTO users(name, user, password, access) VALUES(?,?,?,?)
42 |
43 | """,(name,user, password, access))
44 | self.connection.commit()
45 |
46 | def check_user(self, user, password):
47 |
48 | try:
49 | cursor = self.connection.cursor()
50 | cursor.execute("""
51 |
52 | SELECT * FROM users;
53 |
54 | """)
55 |
56 | for linha in cursor.fetchall():
57 | if linha[2].upper() == user.upper() and linha[3] == password and linha[4] == "Administrador":
58 | return "Administrador"
59 |
60 | elif linha[2].upper() == user.upper() and linha[3] == password and linha[4] == "Usuário":
61 | return "user"
62 |
63 | else:
64 | continue
65 | return "sem acesso"
66 | except:
67 | pass
68 |
69 | def insert_data(self, full_dataset):
70 |
71 | cursor = self.connection.cursor()
72 |
73 | campos_tabela = (
74 | 'NFe','serie','data_emissao','chave','cnpj_emitente','nome_emitente',
75 | 'valorNfe','itemNota','cod','qntd','descricao','unidade_medida','valorProd',
76 | 'data_importacao','usuario','data_saida' )
77 | qntd = ','.join(map(str, '?'*16))
78 | query = f"""INSERT INTO Notas {campos_tabela} VALUES ({qntd})"""
79 |
80 | try:
81 | for nota in full_dataset:
82 | cursor.execute(query, tuple(nota))
83 | self.connection.commit()
84 | except sqlite3.IntegrityError:
85 | print('Nota já existe no banco')
86 |
87 | def create_table_nfe(self):
88 |
89 | cursor = self.connection.cursor()
90 |
91 | cursor.execute(f"""
92 |
93 | CREATE TABLE IF NOT EXISTS Notas(
94 |
95 | NFe TEXT,
96 | serie TEXT,
97 | data_emissao TEXT,
98 | chave TEXT,
99 | cnpj_emitente TEXT,
100 | nome_emitente TEXT,
101 | valorNfe TEXT,
102 | itemNota TEXT,
103 | cod TEXT,
104 | qntd TEXT,
105 | descricao TEXT,
106 | unidade_medida TEXT,
107 | valorProd TEXT,
108 | data_importacao TEXT,
109 | usuario TEXT,
110 | data_saida TEXT,
111 |
112 |
113 |
114 | PRIMARY KEY(Chave, Nfe, itemNota)
115 |
116 | );
117 |
118 | """)
119 |
120 | def uptdate_estoque(self, data_saida, user, notas):
121 | try:
122 | cursor = self.connection.cursor()
123 | for nota in notas:
124 | cursor.execute(f"""UPDATE Notas SET Data_saida = '{data_saida}',
125 | usuario ='{user}' WHERE Nfe = '{nota}'""")
126 | self.connection.commit()
127 |
128 | except AttributeError:
129 | print("faça a conexão para alterar campos")
130 |
131 | def update_estorno(self, notas):
132 |
133 | try:
134 | cursor = self.connection.cursor()
135 |
136 | for nota in notas:
137 | cursor.execute(f"UPDATE Notas SET Data_saida = '' WHERE NFe = {nota}" )
138 |
139 | self.connection.commit()
140 |
141 | except AttributeError:
142 | print('faça a conexão para alterar campos.')
143 |
144 | if __name__ == "__main__":
145 |
146 | db = DataBase()
147 | db.conecta()
148 | db.create_table_users()
149 | db.create_table_nfe()
150 | db.close_connection()
151 |
--------------------------------------------------------------------------------
/main.py:
--------------------------------------------------------------------------------
1 | from os import access
2 |
3 | from PySide2 import QtCore
4 | from PySide2.QtGui import QIcon
5 | from numpy import equal
6 | from xml_files import Read_xml
7 | from PySide2.QtWidgets import(QApplication, QFileDialog,
8 | QMainWindow, QMessageBox, QTreeWidgetItem, QWidget)
9 | from ui_login import Ui_Login
10 | from ui_main import Ui_MainWindow
11 | import sys
12 | from database import DataBase
13 | from xml_files import Read_xml
14 | import sqlite3
15 | import pandas as pd
16 | from PySide2.QtSql import QSqlDatabase, QSqlTableModel
17 | import re
18 | from datetime import date
19 | import matplotlib.pyplot as plt
20 |
21 |
22 | class Login(QWidget, Ui_Login):
23 | def __init__(self) -> None:
24 | super(Login, self).__init__()
25 | self.tentativas = 0
26 | self.setupUi(self)
27 | self.setWindowTitle("Login do Sistema")
28 | appIcon = QIcon('_imgs/logo.PNG')
29 | self.setWindowIcon(appIcon)
30 |
31 | self.btn_login.clicked.connect(self.checkLogin)
32 |
33 |
34 | def checkLogin(self):
35 |
36 | self.users = DataBase()
37 | self.users.conecta()
38 | autenticado = self.users.check_user(self.txt_login.text().upper(), self.txt_password.text())
39 |
40 | if autenticado.lower() == "administrador" or autenticado.lower() == "user":
41 |
42 | self.w = MainWindow(self.txt_login.text(), autenticado.lower())
43 | self.w.show()
44 | self.close()
45 | else:
46 |
47 | if self.tentativas < 3:
48 | msg = QMessageBox()
49 | msg.setIcon(QMessageBox.Warning)
50 | msg.setWindowTitle("Erro ao acessar")
51 | msg.setText(f'Login ou senha incorreto \n \n Tentativa: {self.tentativas +1} de 3')
52 | msg.exec_()
53 | self.tentativas += 1
54 | if self.tentativas == 3:
55 | #bloquear o usuário
56 | self.users.close_connection()
57 | sys.exit(0)
58 |
59 |
60 | class MainWindow(QMainWindow, Ui_MainWindow):
61 | def __init__(self, username, user):
62 | super(MainWindow, self).__init__()
63 | self.setupUi(self)
64 | self.setWindowTitle("Sistema de gerenciamento")
65 | appIcon = QIcon('_imgs/logo.PNG')
66 | self.setWindowIcon(appIcon)
67 |
68 |
69 | self.user = username
70 | if user.lower() == "user":
71 | self.btn_pg_cadastro.setVisible(False)
72 |
73 | #*************PAGINAS DO SISTEMA***********************************************
74 | self.btn_home.clicked.connect(lambda: self.Pages.setCurrentWidget(self.pg_home))
75 | self.btn_tables.clicked.connect(lambda: self.Pages.setCurrentWidget(self.pg_table))
76 | self.btn_contato.clicked.connect(lambda: self.Pages.setCurrentWidget(self.pg_contato))
77 | self.btn_sobre.clicked.connect(lambda: self.Pages.setCurrentWidget(self.pg_sobre))
78 | self.btn_pg_cadastro.clicked.connect(lambda: self.Pages.setCurrentWidget(self.pg_cadastro))
79 | self.btn_pg_import.clicked.connect(lambda: self.Pages.setCurrentWidget(self.pg_import))
80 |
81 | self.btn_cadastrar.clicked.connect(self.subscribe_user)
82 |
83 | #ARQUIVO XML
84 | self.btn_open.clicked.connect(self.open_path)
85 | self.btn_import.clicked.connect(self.import_xml_files)
86 |
87 | #filtro
88 | self.txt_search.textChanged.connect(self.update_filter)
89 |
90 | #gerar saida e estorno
91 | self.btn_gerar.clicked.connect(self.gerar_saida)
92 | self.btn_estorno.clicked.connect(self.gerar_estorno)
93 |
94 | self.btn_excel.clicked.connect(self.excel_file)
95 |
96 | self.btn_chart.clicked.connect(self.graphic)
97 |
98 | self.reset_table()
99 |
100 | def subscribe_user(self):
101 |
102 | if self.txt_senha.text() != self.txt_senha_2.text():
103 | msg = QMessageBox()
104 | msg.setIcon(QMessageBox.Warning)
105 | msg.setWindowTitle("Senhas divirgentes")
106 | msg.setText("A senha não é igual!")
107 | msg.exec_()
108 | return None
109 |
110 | nome = self.txt_nome.text()
111 | user = self.txt_usuario.text()
112 | password = self.txt_senha.text()
113 | access = self.cb_perfil.currentText()
114 |
115 | db = DataBase()
116 | db.conecta()
117 | db.insert_user(nome, user, password, access)
118 | db.close_connection()
119 |
120 | msg = QMessageBox()
121 | msg.setIcon(QMessageBox.Information)
122 | msg.setWindowTitle("Cadastro de usuário")
123 | msg.setText("Cadastro realizado com sucesso!")
124 | msg.exec_()
125 |
126 | self.txt_nome.setText("")
127 | self.txt_usuario.setText("")
128 | self.txt_senha.setText("")
129 | self.txt_senha_2.setText("")
130 |
131 | def open_path(self):
132 | self.path = QFileDialog.getExistingDirectory(self,str("Open Directory"),
133 | "/home",
134 | QFileDialog.ShowDirsOnly
135 |
136 | | QFileDialog.DontResolveSymlinks)
137 | self.txt_file.setText(self.path)
138 |
139 | def import_xml_files(self):
140 |
141 | xml = Read_xml(self.txt_file.text())
142 | all = xml.all_files()
143 | self.progressBar.setMaximum(len(all))
144 |
145 | db = DataBase()
146 | db.conecta()
147 | cont = 1
148 |
149 | for i in all:
150 | self.progressBar.setValue(cont)
151 | fullDataSet = xml.nfe_data(i)
152 | db.insert_data(fullDataSet)
153 | cont+=1
154 |
155 | #ATUALIZA A TABELA
156 |
157 | msg = QMessageBox()
158 | msg.setIcon(QMessageBox.Information)
159 | msg.setWindowTitle("Importação XML")
160 | msg.setText("importação concluída!")
161 | msg.exec_()
162 | self.progressBar.setValue(0)
163 |
164 |
165 |
166 |
167 | db.close_connection()
168 |
169 | def table_estoque(self):
170 |
171 | self.tw_estoque.setStyleSheet(u" QHeaderView{ color:black}; color:#fff;font-size: 15px;")
172 | cn = sqlite3.connect('system.db')
173 | result = pd.read_sql_query("SELECT * FROM Notas WHERE data_saida = ''", cn)
174 | result = result.values.tolist()
175 |
176 | self.x = ""
177 |
178 | for i in result:
179 | #faz o check para identificar a mesma nota e adicionar um nivel
180 | if i[0] == self.x:
181 | QTreeWidgetItem(self.campo, i)
182 | else:
183 | self.campo = QTreeWidgetItem(self.tw_estoque, i)
184 | self.campo.setCheckState(0, QtCore.Qt.CheckState.Unchecked)
185 |
186 | self.x = i[0]
187 |
188 | self.tw_estoque.setSortingEnabled(True)
189 |
190 | for i in range(1,15):
191 | self.tw_estoque.resizeColumnToContents(i)
192 |
193 | def table_saida(self):
194 |
195 | self.tw_saida.setStyleSheet(u" QHeaderView{ color:black}; color:#fff;font-size: 15px;")
196 | cn = sqlite3.connect('system.db')
197 | result = pd.read_sql_query("""SELECT Nfe, serie, data_importacao, data_saida, usuario
198 | FROM Notas WHERE data_saida != ''""", cn)
199 | result = result.values.tolist()
200 |
201 | self.x = ""
202 |
203 | for i in result:
204 | #faz o check para identificar a mesma nota e adicionar um nivel
205 | if i[0] == self.x:
206 | QTreeWidgetItem(self.campo, i)
207 | else:
208 | self.campo = QTreeWidgetItem(self.tw_saida, i)
209 | self.campo.setCheckState(0, QtCore.Qt.CheckState.Unchecked)
210 |
211 | self.x = i[0]
212 |
213 | self.tw_saida.setSortingEnabled(True)
214 |
215 | for i in range(1,15):
216 | self.tw_saida.resizeColumnToContents(i)
217 |
218 | def table_geral(self):
219 |
220 | self.tb_geral.setStyleSheet(u" QHeaderView{ color:black}; color:#fff;font-size: 15px;")
221 |
222 | db = QSqlDatabase("QSQLITE")
223 | db.setDatabaseName("system.db")
224 | db.open()
225 |
226 | self.model = QSqlTableModel(db=db)
227 | self.tb_geral.setModel(self.model)
228 | self.model.setTable("Notas")
229 | self.model.select()
230 |
231 | def reset_table(self):
232 | self.tw_estoque.clear()
233 | self.tw_saida.clear()
234 |
235 | self.table_saida()
236 | self.table_estoque()
237 | self.table_geral()
238 |
239 | def update_filter(self, s):
240 | s = re.sub("[\W_]+", "", s)
241 | filter_str = 'Nfe LIKE "%{}%"'.format(s)
242 | self.model.setFilter(filter_str)
243 |
244 | def gerar_saida(self):
245 |
246 | self.checked_items_out = []
247 |
248 | def recurse(parent_item):
249 | for i in range(parent_item.childCount()):
250 | child = parent_item.child(i)
251 | grand_children = child.childCount()
252 | if grand_children > 0:
253 | recurse(child)
254 | if child.checkState(0) == QtCore.Qt.Checked:
255 | self.checked_items_out.append(child.text(0))
256 |
257 | recurse(self.tw_estoque.invisibleRootItem())
258 |
259 | #Pergunta se usuario realmente deseja fazer isos.
260 | self.question('saída')
261 |
262 | def gerar_estorno(self):
263 |
264 | self.checked_items = []
265 |
266 | def recurse(parent_item):
267 | for i in range(parent_item.childCount()):
268 | child = parent_item.child(i)
269 | grand_children = child.childCount()
270 | if grand_children > 0:
271 | recurse(child)
272 | if child.checkState(0) == QtCore.Qt.Checked:
273 | self.checked_items.append(child.text(0))
274 |
275 | recurse(self.tw_saida.invisibleRootItem())
276 | self.question('estorno')
277 |
278 | def question(self, table):
279 |
280 | msgBox = QMessageBox()
281 |
282 | if table == 'estorno':
283 | msgBox.setText("Deseja estornar as notas selecionadas?")
284 | msgBox.setInformativeText("As selecionadas voltarão para o estoque \n clique em 'Yes' para confirmar.")
285 | msgBox.setStandardButtons(QMessageBox.Yes | QMessageBox.No)
286 | msgBox.setDetailedText(f"Notas: {self.checked_items}")
287 |
288 | else:
289 | msgBox.setText("Deseja Gerar saída das nota selecionadas?")
290 | msgBox.setInformativeText("As notas abaixo será baixada no estoque \n clique em 'Yes' para confirmar.")
291 | msgBox.setStandardButtons(QMessageBox.Yes | QMessageBox.No)
292 | msgBox.setDetailedText(f"Notas: {self.checked_items_out}")
293 |
294 | msgBox.setIcon(QMessageBox.Question)
295 | ret = msgBox.exec_()
296 |
297 | if ret == QMessageBox.Yes:
298 | if table == "estorno":
299 | self.db = DataBase()
300 | self.db.conecta()
301 | self.db.update_estorno(self.checked_items)
302 | self.db.close_connection()
303 | self.reset_table()
304 | else:
305 | data_saida = date.today()
306 | data_saida = data_saida.strftime('%d/%m/%Y')
307 | self.db = DataBase()
308 | self.db.conecta()
309 | self.db.uptdate_estoque(data_saida, self.user, self.checked_items_out)
310 | self.db.close_connection()
311 | self.reset_table()
312 |
313 | def excel_file(self):
314 |
315 | cnx = sqlite3.connect('system.db')
316 | result = pd.read_sql_query("SELECT * FROM Notas", cnx)
317 | result.to_excel("Resumo de notas.xlsx", sheet_name='Notas', index=False)
318 |
319 | msg = QMessageBox()
320 | msg.setIcon(QMessageBox.Information)
321 | msg.setWindowTitle("Relatório de Notas")
322 | msg.setText("Relatório gerado com sucesso!")
323 | msg.exec_()
324 |
325 | def graphic(self):
326 |
327 | cnx = sqlite3.connect("system.db")
328 | estoque = pd.read_sql_query('SELECT * FROM Notas', cnx)
329 | saida = pd.read_sql_query("SELECT * FROM Notas WHERE data_saida != ''", cnx)
330 |
331 | estoque = len(estoque)
332 | saida = len(saida)
333 |
334 | labels = "Estoque", "Saídas"
335 | sizes = [estoque, saida]
336 | fig1, axl = plt.subplots()
337 | axl.pie(sizes, labels=labels, autopct='%1.1f%%', shadow=True, startangle=90)
338 | axl.axis("equal")
339 |
340 | plt.show()
341 |
342 |
343 | if __name__ == "__main__":
344 | app = QApplication(sys.argv)
345 | window = Login()
346 | window.show()
347 | app.exec_()
--------------------------------------------------------------------------------
/ui_main.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 |
3 | ################################################################################
4 | ## Form generated from reading UI file 'ui_main.ui'
5 | ##
6 | ## Created by: Qt User Interface Compiler version 5.15.2
7 | ##
8 | ## WARNING! All changes made in this file will be lost when recompiling UI file!
9 | ################################################################################
10 |
11 | from PySide2.QtCore import *
12 | from PySide2.QtGui import *
13 | from PySide2.QtWidgets import *
14 |
15 |
16 | class Ui_MainWindow(object):
17 | def setupUi(self, MainWindow):
18 | if not MainWindow.objectName():
19 | MainWindow.setObjectName(u"MainWindow")
20 | MainWindow.resize(855, 542)
21 | MainWindow.setStyleSheet(u"background-color: rgb(0, 0,10);")
22 | self.centralwidget = QWidget(MainWindow)
23 | self.centralwidget.setObjectName(u"centralwidget")
24 | self.verticalLayout_2 = QVBoxLayout(self.centralwidget)
25 | self.verticalLayout_2.setObjectName(u"verticalLayout_2")
26 | self.frame = QFrame(self.centralwidget)
27 | self.frame.setObjectName(u"frame")
28 | self.frame.setStyleSheet(u"background-color: rgb(0, 0, 20);\n"
29 | "")
30 | self.frame.setFrameShape(QFrame.StyledPanel)
31 | self.frame.setFrameShadow(QFrame.Raised)
32 | self.horizontalLayout = QHBoxLayout(self.frame)
33 | self.horizontalLayout.setObjectName(u"horizontalLayout")
34 | self.btn_home = QPushButton(self.frame)
35 | self.btn_home.setObjectName(u"btn_home")
36 | sizePolicy = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred)
37 | sizePolicy.setHorizontalStretch(0)
38 | sizePolicy.setVerticalStretch(0)
39 | sizePolicy.setHeightForWidth(self.btn_home.sizePolicy().hasHeightForWidth())
40 | self.btn_home.setSizePolicy(sizePolicy)
41 | self.btn_home.setMinimumSize(QSize(0, 35))
42 | self.btn_home.setStyleSheet(u"QPushButton{\n"
43 | " color: rgb(255, 255, 255);\n"
44 | " border-radius: 1px;\n"
45 | " font-size: 16px;\n"
46 | " background-color: rgb(0, 80, 121);\n"
47 | "}\n"
48 | "\n"
49 | "QPushButton:hover{background-color: #fff; color:black}\n"
50 | "")
51 |
52 | self.horizontalLayout.addWidget(self.btn_home)
53 |
54 | self.btn_pg_import = QPushButton(self.frame)
55 | self.btn_pg_import.setObjectName(u"btn_pg_import")
56 | self.btn_pg_import.setMinimumSize(QSize(0, 33))
57 | self.btn_pg_import.setCursor(QCursor(Qt.PointingHandCursor))
58 | self.btn_pg_import.setStyleSheet(u"QPushButton{\n"
59 | " color: rgb(255, 255, 255);\n"
60 | " border-radius: 1px;\n"
61 | " font-size: 16px;\n"
62 | " background-color: rgb(0, 80, 121);\n"
63 | "}\n"
64 | "\n"
65 | "QPushButton:hover{background-color: #fff; color:black}\n"
66 | "")
67 |
68 | self.horizontalLayout.addWidget(self.btn_pg_import)
69 |
70 | self.btn_tables = QPushButton(self.frame)
71 | self.btn_tables.setObjectName(u"btn_tables")
72 | self.btn_tables.setMinimumSize(QSize(0, 33))
73 | self.btn_tables.setStyleSheet(u"QPushButton{\n"
74 | " color: rgb(255, 255, 255);\n"
75 | " border-radius: 1px;\n"
76 | " font-size: 16px;\n"
77 | " background-color: rgb(0, 80, 121);\n"
78 | "}\n"
79 | "\n"
80 | "QPushButton:hover{background-color: #fff; color:black}\n"
81 | "")
82 |
83 | self.horizontalLayout.addWidget(self.btn_tables)
84 |
85 | self.btn_sobre = QPushButton(self.frame)
86 | self.btn_sobre.setObjectName(u"btn_sobre")
87 | self.btn_sobre.setMinimumSize(QSize(0, 33))
88 | self.btn_sobre.setStyleSheet(u"QPushButton{\n"
89 | " color: rgb(255, 255, 255);\n"
90 | " border-radius: 1px;\n"
91 | " font-size: 16px;\n"
92 | " background-color: rgb(0, 80, 121);\n"
93 | "}\n"
94 | "\n"
95 | "QPushButton:hover{background-color: #fff; color:black}\n"
96 | "")
97 |
98 | self.horizontalLayout.addWidget(self.btn_sobre)
99 |
100 | self.btn_contato = QPushButton(self.frame)
101 | self.btn_contato.setObjectName(u"btn_contato")
102 | self.btn_contato.setMinimumSize(QSize(0, 33))
103 | self.btn_contato.setStyleSheet(u"QPushButton{\n"
104 | " color: rgb(255, 255, 255);\n"
105 | " border-radius: 1px;\n"
106 | " font-size: 16px;\n"
107 | " background-color: rgb(0, 80, 121);\n"
108 | "}\n"
109 | "\n"
110 | "QPushButton:hover{background-color: #fff; color:black}\n"
111 | "")
112 |
113 | self.horizontalLayout.addWidget(self.btn_contato)
114 |
115 |
116 | self.verticalLayout_2.addWidget(self.frame)
117 |
118 | self.Pages = QStackedWidget(self.centralwidget)
119 | self.Pages.setObjectName(u"Pages")
120 | self.Pages.setStyleSheet(u"background-color: rgb(0, 80, 121);")
121 | self.pg_table = QWidget()
122 | self.pg_table.setObjectName(u"pg_table")
123 | self.verticalLayout_8 = QVBoxLayout(self.pg_table)
124 | self.verticalLayout_8.setObjectName(u"verticalLayout_8")
125 | self.tabWidget = QTabWidget(self.pg_table)
126 | self.tabWidget.setObjectName(u"tabWidget")
127 | self.tables = QWidget()
128 | self.tables.setObjectName(u"tables")
129 | self.verticalLayout_7 = QVBoxLayout(self.tables)
130 | self.verticalLayout_7.setObjectName(u"verticalLayout_7")
131 | self.horizontalLayout_3 = QHBoxLayout()
132 | self.horizontalLayout_3.setObjectName(u"horizontalLayout_3")
133 | self.verticalLayout_6 = QVBoxLayout()
134 | self.verticalLayout_6.setObjectName(u"verticalLayout_6")
135 | self.verticalLayout_5 = QVBoxLayout()
136 | self.verticalLayout_5.setObjectName(u"verticalLayout_5")
137 | self.label_3 = QLabel(self.tables)
138 | self.label_3.setObjectName(u"label_3")
139 |
140 | self.verticalLayout_5.addWidget(self.label_3)
141 |
142 | self.tw_estoque = QTreeWidget(self.tables)
143 | self.tw_estoque.setObjectName(u"tw_estoque")
144 | self.tw_estoque.setStyleSheet(u"")
145 | self.tw_estoque.setAlternatingRowColors(False)
146 |
147 | self.verticalLayout_5.addWidget(self.tw_estoque)
148 |
149 |
150 | self.verticalLayout_6.addLayout(self.verticalLayout_5)
151 |
152 | self.verticalLayout_4 = QVBoxLayout()
153 | self.verticalLayout_4.setObjectName(u"verticalLayout_4")
154 | self.label_2 = QLabel(self.tables)
155 | self.label_2.setObjectName(u"label_2")
156 |
157 | self.verticalLayout_4.addWidget(self.label_2)
158 |
159 | self.tw_saida = QTreeWidget(self.tables)
160 | self.tw_saida.setObjectName(u"tw_saida")
161 | self.tw_saida.setStyleSheet(u"")
162 |
163 | self.verticalLayout_4.addWidget(self.tw_saida)
164 |
165 |
166 | self.verticalLayout_6.addLayout(self.verticalLayout_4)
167 |
168 |
169 | self.horizontalLayout_3.addLayout(self.verticalLayout_6)
170 |
171 | self.frame_2 = QFrame(self.tables)
172 | self.frame_2.setObjectName(u"frame_2")
173 | sizePolicy1 = QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Preferred)
174 | sizePolicy1.setHorizontalStretch(0)
175 | sizePolicy1.setVerticalStretch(0)
176 | sizePolicy1.setHeightForWidth(self.frame_2.sizePolicy().hasHeightForWidth())
177 | self.frame_2.setSizePolicy(sizePolicy1)
178 | self.frame_2.setFrameShape(QFrame.StyledPanel)
179 | self.frame_2.setFrameShadow(QFrame.Raised)
180 | self.verticalLayout_3 = QVBoxLayout(self.frame_2)
181 | self.verticalLayout_3.setObjectName(u"verticalLayout_3")
182 | self.btn_gerar = QPushButton(self.frame_2)
183 | self.btn_gerar.setObjectName(u"btn_gerar")
184 | self.btn_gerar.setMinimumSize(QSize(100, 27))
185 | self.btn_gerar.setCursor(QCursor(Qt.PointingHandCursor))
186 | self.btn_gerar.setStyleSheet(u"QPushButton{\n"
187 | " color: rgb(0,0,10);\n"
188 | " border-radius: 10px; \n"
189 | " font-size: 16px; \n"
190 | " background-color: #fff;\n"
191 | ";}\n"
192 | "\n"
193 | "QPushButton:hover{\n"
194 | " \n"
195 | " background-color: rgb(170, 255, 255);\n"
196 | " color:black\n"
197 | "}\n"
198 | "")
199 |
200 | self.verticalLayout_3.addWidget(self.btn_gerar)
201 |
202 | self.btn_estorno = QPushButton(self.frame_2)
203 | self.btn_estorno.setObjectName(u"btn_estorno")
204 | self.btn_estorno.setMinimumSize(QSize(100, 27))
205 | self.btn_estorno.setCursor(QCursor(Qt.PointingHandCursor))
206 | self.btn_estorno.setStyleSheet(u"QPushButton{\n"
207 | " color: rgb(0,0,10);\n"
208 | " border-radius: 10px; \n"
209 | " font-size: 16px; \n"
210 | " background-color: #fff;\n"
211 | ";}\n"
212 | "\n"
213 | "QPushButton:hover{\n"
214 | " \n"
215 | " background-color: rgb(170, 255, 255);\n"
216 | " color:black\n"
217 | "}\n"
218 | "\n"
219 | "")
220 |
221 | self.verticalLayout_3.addWidget(self.btn_estorno)
222 |
223 | self.btn_ = QPushButton(self.frame_2)
224 | self.btn_.setObjectName(u"btn_")
225 | self.btn_.setMinimumSize(QSize(100, 27))
226 | self.btn_.setCursor(QCursor(Qt.PointingHandCursor))
227 | self.btn_.setStyleSheet(u"QPushButton{\n"
228 | " color: rgb(0,0,10);\n"
229 | " border-radius: 10px;\n"
230 | " font-size: 16px; \n"
231 | " background-color: #fff;\n"
232 | ";}\n"
233 | "\n"
234 | "QPushButton:hover{\n"
235 | " background-color: #fff;\n"
236 | " color:black\n"
237 | "}")
238 |
239 | self.verticalLayout_3.addWidget(self.btn_)
240 |
241 | self.verticalSpacer = QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Expanding)
242 |
243 | self.verticalLayout_3.addItem(self.verticalSpacer)
244 |
245 |
246 | self.horizontalLayout_3.addWidget(self.frame_2)
247 |
248 |
249 | self.verticalLayout_7.addLayout(self.horizontalLayout_3)
250 |
251 | self.tabWidget.addTab(self.tables, "")
252 | self.tab_2 = QWidget()
253 | self.tab_2.setObjectName(u"tab_2")
254 | self.verticalLayout_10 = QVBoxLayout(self.tab_2)
255 | self.verticalLayout_10.setObjectName(u"verticalLayout_10")
256 | self.label_17 = QLabel(self.tab_2)
257 | self.label_17.setObjectName(u"label_17")
258 | font = QFont()
259 | font.setPointSize(20)
260 | font.setBold(True)
261 | font.setWeight(75)
262 | self.label_17.setFont(font)
263 | self.label_17.setStyleSheet(u"color: rgb(255, 255, 255);")
264 | self.label_17.setAlignment(Qt.AlignCenter)
265 |
266 | self.verticalLayout_10.addWidget(self.label_17)
267 |
268 | self.horizontalLayout_4 = QHBoxLayout()
269 | self.horizontalLayout_4.setObjectName(u"horizontalLayout_4")
270 | self.btn_chart = QPushButton(self.tab_2)
271 | self.btn_chart.setObjectName(u"btn_chart")
272 | self.btn_chart.setMinimumSize(QSize(123, 28))
273 | self.btn_chart.setSizeIncrement(QSize(0, 0))
274 | self.btn_chart.setCursor(QCursor(Qt.PointingHandCursor))
275 | self.btn_chart.setStyleSheet(u"QPushButton{\n"
276 | " color: rgb(0,0,10);\n"
277 | " border-radius: 10px; \n"
278 | " font-size: 16px; \n"
279 | " background-color: #fff;\n"
280 | ";}\n"
281 | "\n"
282 | "QPushButton:hover{\n"
283 | " \n"
284 | " background-color: rgb(170, 255, 255);\n"
285 | " color:black\n"
286 | "}\n"
287 | "\n"
288 | "")
289 |
290 | self.horizontalLayout_4.addWidget(self.btn_chart)
291 |
292 | self.btn_excel = QPushButton(self.tab_2)
293 | self.btn_excel.setObjectName(u"btn_excel")
294 | self.btn_excel.setMinimumSize(QSize(123, 28))
295 | self.btn_excel.setSizeIncrement(QSize(0, 0))
296 | self.btn_excel.setCursor(QCursor(Qt.PointingHandCursor))
297 | self.btn_excel.setStyleSheet(u"QPushButton{\n"
298 | " color: rgb(0,0,10);\n"
299 | " border-radius: 10px; \n"
300 | " font-size: 16px; \n"
301 | " background-color: #fff;\n"
302 | ";}\n"
303 | "\n"
304 | "QPushButton:hover{\n"
305 | " \n"
306 | " background-color: rgb(170, 255, 255);\n"
307 | " color:black\n"
308 | "}\n"
309 | "\n"
310 | "")
311 |
312 | self.horizontalLayout_4.addWidget(self.btn_excel)
313 |
314 |
315 | self.verticalLayout_10.addLayout(self.horizontalLayout_4)
316 |
317 | self.txt_search = QLineEdit(self.tab_2)
318 | self.txt_search.setObjectName(u"txt_search")
319 | font1 = QFont()
320 | font1.setPointSize(11)
321 | self.txt_search.setFont(font1)
322 | self.txt_search.setStyleSheet(u"color: rgb(255, 255, 255);")
323 | self.txt_search.setAlignment(Qt.AlignCenter)
324 |
325 | self.verticalLayout_10.addWidget(self.txt_search)
326 |
327 | self.tb_geral = QTableView(self.tab_2)
328 | self.tb_geral.setObjectName(u"tb_geral")
329 |
330 | self.verticalLayout_10.addWidget(self.tb_geral)
331 |
332 | self.tabWidget.addTab(self.tab_2, "")
333 |
334 | self.verticalLayout_8.addWidget(self.tabWidget)
335 |
336 | self.Pages.addWidget(self.pg_table)
337 | self.pg_home = QWidget()
338 | self.pg_home.setObjectName(u"pg_home")
339 | self.verticalLayout = QVBoxLayout(self.pg_home)
340 | self.verticalLayout.setObjectName(u"verticalLayout")
341 | self.label = QLabel(self.pg_home)
342 | self.label.setObjectName(u"label")
343 | self.label.setStyleSheet(u" background-color: rgb(0, 80, 121);\n"
344 | "\n"
345 | "")
346 |
347 | self.verticalLayout.addWidget(self.label)
348 |
349 | self.btn_pg_cadastro = QPushButton(self.pg_home)
350 | self.btn_pg_cadastro.setObjectName(u"btn_pg_cadastro")
351 | self.btn_pg_cadastro.setMinimumSize(QSize(0, 33))
352 | font2 = QFont()
353 | font2.setPointSize(10)
354 | self.btn_pg_cadastro.setFont(font2)
355 | self.btn_pg_cadastro.setCursor(QCursor(Qt.PointingHandCursor))
356 | self.btn_pg_cadastro.setStyleSheet(u"QPushButton{color:#fff;}\n"
357 | "\n"
358 | "QPushButton:hover{\n"
359 | " background-color: rgb(255, 255, 255);\n"
360 | " color:black\n"
361 | " }")
362 |
363 | self.verticalLayout.addWidget(self.btn_pg_cadastro)
364 |
365 | self.Pages.addWidget(self.pg_home)
366 | self.pg_import = QWidget()
367 | self.pg_import.setObjectName(u"pg_import")
368 | self.verticalLayout_11 = QVBoxLayout(self.pg_import)
369 | self.verticalLayout_11.setObjectName(u"verticalLayout_11")
370 | self.label_18 = QLabel(self.pg_import)
371 | self.label_18.setObjectName(u"label_18")
372 | self.label_18.setFont(font)
373 | self.label_18.setStyleSheet(u"color: rgb(255, 255, 255);")
374 | self.label_18.setAlignment(Qt.AlignCenter)
375 |
376 | self.verticalLayout_11.addWidget(self.label_18)
377 |
378 | self.horizontalLayout_2 = QHBoxLayout()
379 | self.horizontalLayout_2.setObjectName(u"horizontalLayout_2")
380 | self.txt_file = QLineEdit(self.pg_import)
381 | self.txt_file.setObjectName(u"txt_file")
382 | self.txt_file.setMinimumSize(QSize(0, 28))
383 | self.txt_file.setFont(font1)
384 | self.txt_file.setStyleSheet(u"color: rgb(255, 255, 255);")
385 | self.txt_file.setAlignment(Qt.AlignCenter)
386 |
387 | self.horizontalLayout_2.addWidget(self.txt_file)
388 |
389 | self.btn_open = QPushButton(self.pg_import)
390 | self.btn_open.setObjectName(u"btn_open")
391 | self.btn_open.setMinimumSize(QSize(123, 28))
392 | self.btn_open.setSizeIncrement(QSize(0, 0))
393 | self.btn_open.setCursor(QCursor(Qt.PointingHandCursor))
394 | self.btn_open.setStyleSheet(u"QPushButton{\n"
395 | " color: rgb(0,0,10);\n"
396 | " border-top-right-radius:15px;\n"
397 | " font-size: 16px; \n"
398 | " background-color: #fff;\n"
399 | ";}\n"
400 | "\n"
401 | "QPushButton:hover{\n"
402 | " \n"
403 | " background-color: rgb(170, 255, 255);\n"
404 | " color:black\n"
405 | "}\n"
406 | "\n"
407 | "")
408 |
409 | self.horizontalLayout_2.addWidget(self.btn_open)
410 |
411 |
412 | self.verticalLayout_11.addLayout(self.horizontalLayout_2)
413 |
414 | self.horizontalLayout_11 = QHBoxLayout()
415 | self.horizontalLayout_11.setObjectName(u"horizontalLayout_11")
416 | self.label_4 = QLabel(self.pg_import)
417 | self.label_4.setObjectName(u"label_4")
418 |
419 | self.horizontalLayout_11.addWidget(self.label_4)
420 |
421 | self.btn_import = QPushButton(self.pg_import)
422 | self.btn_import.setObjectName(u"btn_import")
423 | self.btn_import.setMinimumSize(QSize(123, 28))
424 | self.btn_import.setSizeIncrement(QSize(0, 0))
425 | self.btn_import.setCursor(QCursor(Qt.PointingHandCursor))
426 | self.btn_import.setStyleSheet(u"QPushButton{\n"
427 | " color: rgb(0,0,10);\n"
428 | " border-radius: 10px; \n"
429 | " font-size: 16px; \n"
430 | " background-color: #fff;\n"
431 | ";}\n"
432 | "\n"
433 | "QPushButton:hover{\n"
434 | " \n"
435 | " background-color: rgb(170, 255, 255);\n"
436 | " color:black\n"
437 | "}\n"
438 | "\n"
439 | "")
440 |
441 | self.horizontalLayout_11.addWidget(self.btn_import)
442 |
443 | self.label_5 = QLabel(self.pg_import)
444 | self.label_5.setObjectName(u"label_5")
445 |
446 | self.horizontalLayout_11.addWidget(self.label_5)
447 |
448 |
449 | self.verticalLayout_11.addLayout(self.horizontalLayout_11)
450 |
451 | self.progressBar = QProgressBar(self.pg_import)
452 | self.progressBar.setObjectName(u"progressBar")
453 | self.progressBar.setStyleSheet(u"QProgressBar{ background-color: rgba(0, 0, 0,0.1);\n"
454 | " color: rgb(255, 255, 255);\n"
455 | " border-style: none;\n"
456 | " text-align: center;\n"
457 | " border-radius:10px;\n"
458 | " \n"
459 | " }\n"
460 | " \n"
461 | " \n"
462 | "QProgressBar::chunk{ background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:1, stop:0 rgba(6, 75, 149, 255), stop:1 rgba(72, 130, 157, 255));\n"
463 | " border-radius:10px;\n"
464 | " }")
465 | self.progressBar.setValue(0)
466 |
467 | self.verticalLayout_11.addWidget(self.progressBar)
468 |
469 | self.Pages.addWidget(self.pg_import)
470 | self.pg_cadastro = QWidget()
471 | self.pg_cadastro.setObjectName(u"pg_cadastro")
472 | self.verticalLayout_9 = QVBoxLayout(self.pg_cadastro)
473 | self.verticalLayout_9.setObjectName(u"verticalLayout_9")
474 | self.label_14 = QLabel(self.pg_cadastro)
475 | self.label_14.setObjectName(u"label_14")
476 | self.label_14.setFont(font)
477 | self.label_14.setStyleSheet(u"color: rgb(255, 255, 255);")
478 | self.label_14.setAlignment(Qt.AlignCenter)
479 |
480 | self.verticalLayout_9.addWidget(self.label_14)
481 |
482 | self.label_6 = QLabel(self.pg_cadastro)
483 | self.label_6.setObjectName(u"label_6")
484 | self.label_6.setFont(font2)
485 | self.label_6.setAlignment(Qt.AlignCenter)
486 |
487 | self.verticalLayout_9.addWidget(self.label_6)
488 |
489 | self.horizontalLayout_8 = QHBoxLayout()
490 | self.horizontalLayout_8.setObjectName(u"horizontalLayout_8")
491 | self.horizontalLayout_8.setContentsMargins(50, -1, -1, -1)
492 | self.label_7 = QLabel(self.pg_cadastro)
493 | self.label_7.setObjectName(u"label_7")
494 | sizePolicy.setHeightForWidth(self.label_7.sizePolicy().hasHeightForWidth())
495 | self.label_7.setSizePolicy(sizePolicy)
496 |
497 | self.horizontalLayout_8.addWidget(self.label_7)
498 |
499 | self.txt_nome = QLineEdit(self.pg_cadastro)
500 | self.txt_nome.setObjectName(u"txt_nome")
501 | sizePolicy2 = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed)
502 | sizePolicy2.setHorizontalStretch(0)
503 | sizePolicy2.setVerticalStretch(0)
504 | sizePolicy2.setHeightForWidth(self.txt_nome.sizePolicy().hasHeightForWidth())
505 | self.txt_nome.setSizePolicy(sizePolicy2)
506 | self.txt_nome.setStyleSheet(u"color:rgba(211, 239, 251,1);\n"
507 | "border-bottom:1px solid white;\n"
508 | "border-radius: None;\n"
509 | "background-color:rgba(85, 115, 155,0.1);\n"
510 | "font-family:Trebuchet MS; \n"
511 | "font-size:21px;")
512 |
513 | self.horizontalLayout_8.addWidget(self.txt_nome)
514 |
515 |
516 | self.verticalLayout_9.addLayout(self.horizontalLayout_8)
517 |
518 | self.horizontalLayout_7 = QHBoxLayout()
519 | self.horizontalLayout_7.setObjectName(u"horizontalLayout_7")
520 | self.horizontalLayout_7.setContentsMargins(50, -1, -1, -1)
521 | self.label_8 = QLabel(self.pg_cadastro)
522 | self.label_8.setObjectName(u"label_8")
523 |
524 | self.horizontalLayout_7.addWidget(self.label_8)
525 |
526 | self.txt_usuario = QLineEdit(self.pg_cadastro)
527 | self.txt_usuario.setObjectName(u"txt_usuario")
528 | self.txt_usuario.setStyleSheet(u"color:rgba(211, 239, 251,1);\n"
529 | "border-bottom:1px solid white;\n"
530 | "border-radius: None;\n"
531 | "background-color:rgba(85, 115, 155,0.1);\n"
532 | "font-family:Trebuchet MS; \n"
533 | "font-size:21px;")
534 |
535 | self.horizontalLayout_7.addWidget(self.txt_usuario)
536 |
537 |
538 | self.verticalLayout_9.addLayout(self.horizontalLayout_7)
539 |
540 | self.horizontalLayout_6 = QHBoxLayout()
541 | self.horizontalLayout_6.setObjectName(u"horizontalLayout_6")
542 | self.horizontalLayout_6.setContentsMargins(50, -1, -1, -1)
543 | self.label_9 = QLabel(self.pg_cadastro)
544 | self.label_9.setObjectName(u"label_9")
545 |
546 | self.horizontalLayout_6.addWidget(self.label_9)
547 |
548 | self.txt_senha = QLineEdit(self.pg_cadastro)
549 | self.txt_senha.setObjectName(u"txt_senha")
550 | self.txt_senha.setStyleSheet(u"color:rgba(211, 239, 251,1);\n"
551 | "border-bottom:1px solid white;\n"
552 | "border-radius: None;\n"
553 | "background-color:rgba(85, 115, 155,0.1);\n"
554 | "font-family:Trebuchet MS; \n"
555 | "font-size:21px;")
556 | self.txt_senha.setEchoMode(QLineEdit.Password)
557 |
558 | self.horizontalLayout_6.addWidget(self.txt_senha)
559 |
560 |
561 | self.verticalLayout_9.addLayout(self.horizontalLayout_6)
562 |
563 | self.horizontalLayout_5 = QHBoxLayout()
564 | self.horizontalLayout_5.setObjectName(u"horizontalLayout_5")
565 | self.horizontalLayout_5.setContentsMargins(50, -1, -1, -1)
566 | self.label_10 = QLabel(self.pg_cadastro)
567 | self.label_10.setObjectName(u"label_10")
568 |
569 | self.horizontalLayout_5.addWidget(self.label_10)
570 |
571 | self.txt_senha_2 = QLineEdit(self.pg_cadastro)
572 | self.txt_senha_2.setObjectName(u"txt_senha_2")
573 | self.txt_senha_2.setStyleSheet(u"color:rgba(211, 239, 251,1);\n"
574 | "border-bottom:1px solid white;\n"
575 | "border-radius: None;\n"
576 | "background-color:rgba(85, 115, 155,0.1);\n"
577 | "font-family:Trebuchet MS; \n"
578 | "font-size:21px;")
579 | self.txt_senha_2.setEchoMode(QLineEdit.Password)
580 |
581 | self.horizontalLayout_5.addWidget(self.txt_senha_2)
582 |
583 |
584 | self.verticalLayout_9.addLayout(self.horizontalLayout_5)
585 |
586 | self.horizontalLayout_9 = QHBoxLayout()
587 | self.horizontalLayout_9.setObjectName(u"horizontalLayout_9")
588 | self.horizontalLayout_9.setContentsMargins(50, -1, -1, -1)
589 | self.label_11 = QLabel(self.pg_cadastro)
590 | self.label_11.setObjectName(u"label_11")
591 |
592 | self.horizontalLayout_9.addWidget(self.label_11)
593 |
594 | self.cb_perfil = QComboBox(self.pg_cadastro)
595 | self.cb_perfil.addItem("")
596 | self.cb_perfil.addItem("")
597 | self.cb_perfil.setObjectName(u"cb_perfil")
598 | sizePolicy2.setHeightForWidth(self.cb_perfil.sizePolicy().hasHeightForWidth())
599 | self.cb_perfil.setSizePolicy(sizePolicy2)
600 | font3 = QFont()
601 | font3.setPointSize(12)
602 | self.cb_perfil.setFont(font3)
603 | self.cb_perfil.setStyleSheet(u"color: rgb(255, 255, 255);")
604 |
605 | self.horizontalLayout_9.addWidget(self.cb_perfil)
606 |
607 |
608 | self.verticalLayout_9.addLayout(self.horizontalLayout_9)
609 |
610 | self.horizontalLayout_10 = QHBoxLayout()
611 | self.horizontalLayout_10.setObjectName(u"horizontalLayout_10")
612 | self.label_12 = QLabel(self.pg_cadastro)
613 | self.label_12.setObjectName(u"label_12")
614 |
615 | self.horizontalLayout_10.addWidget(self.label_12)
616 |
617 | self.btn_cadastrar = QPushButton(self.pg_cadastro)
618 | self.btn_cadastrar.setObjectName(u"btn_cadastrar")
619 | self.btn_cadastrar.setMinimumSize(QSize(0, 35))
620 | self.btn_cadastrar.setStyleSheet(u"QPushButton{\n"
621 | " color: rgb(0,0,10);\n"
622 | " border-radius: 10px; \n"
623 | " font-size: 16px; \n"
624 | " background-color: #fff;\n"
625 | ";}\n"
626 | "\n"
627 | "QPushButton:hover{\n"
628 | " \n"
629 | " background-color: rgb(170, 255, 255);\n"
630 | " color:black\n"
631 | "}\n"
632 | "\n"
633 | "")
634 |
635 | self.horizontalLayout_10.addWidget(self.btn_cadastrar)
636 |
637 | self.label_13 = QLabel(self.pg_cadastro)
638 | self.label_13.setObjectName(u"label_13")
639 |
640 | self.horizontalLayout_10.addWidget(self.label_13)
641 |
642 |
643 | self.verticalLayout_9.addLayout(self.horizontalLayout_10)
644 |
645 | self.Pages.addWidget(self.pg_cadastro)
646 | self.pg_contato = QWidget()
647 | self.pg_contato.setObjectName(u"pg_contato")
648 | self.verticalLayout_12 = QVBoxLayout(self.pg_contato)
649 | self.verticalLayout_12.setObjectName(u"verticalLayout_12")
650 | self.label_15 = QLabel(self.pg_contato)
651 | self.label_15.setObjectName(u"label_15")
652 | self.label_15.setFont(font)
653 | self.label_15.setStyleSheet(u"color: rgb(255, 255, 255);")
654 | self.label_15.setAlignment(Qt.AlignCenter)
655 |
656 | self.verticalLayout_12.addWidget(self.label_15)
657 |
658 | self.label_19 = QLabel(self.pg_contato)
659 | self.label_19.setObjectName(u"label_19")
660 | sizePolicy.setHeightForWidth(self.label_19.sizePolicy().hasHeightForWidth())
661 | self.label_19.setSizePolicy(sizePolicy)
662 | self.label_19.setAlignment(Qt.AlignCenter)
663 |
664 | self.verticalLayout_12.addWidget(self.label_19)
665 |
666 | self.horizontalLayout_15 = QHBoxLayout()
667 | self.horizontalLayout_15.setObjectName(u"horizontalLayout_15")
668 | self.label_27 = QLabel(self.pg_contato)
669 | self.label_27.setObjectName(u"label_27")
670 |
671 | self.horizontalLayout_15.addWidget(self.label_27)
672 |
673 | self.horizontalLayout_12 = QHBoxLayout()
674 | self.horizontalLayout_12.setObjectName(u"horizontalLayout_12")
675 | self.label_24 = QLabel(self.pg_contato)
676 | self.label_24.setObjectName(u"label_24")
677 | sizePolicy1.setHeightForWidth(self.label_24.sizePolicy().hasHeightForWidth())
678 | self.label_24.setSizePolicy(sizePolicy1)
679 |
680 | self.horizontalLayout_12.addWidget(self.label_24)
681 |
682 | self.label_20 = QLabel(self.pg_contato)
683 | self.label_20.setObjectName(u"label_20")
684 | sizePolicy.setHeightForWidth(self.label_20.sizePolicy().hasHeightForWidth())
685 | self.label_20.setSizePolicy(sizePolicy)
686 | self.label_20.setAlignment(Qt.AlignLeading|Qt.AlignLeft|Qt.AlignVCenter)
687 |
688 | self.horizontalLayout_12.addWidget(self.label_20)
689 |
690 |
691 | self.horizontalLayout_15.addLayout(self.horizontalLayout_12)
692 |
693 | self.label_28 = QLabel(self.pg_contato)
694 | self.label_28.setObjectName(u"label_28")
695 |
696 | self.horizontalLayout_15.addWidget(self.label_28)
697 |
698 |
699 | self.verticalLayout_12.addLayout(self.horizontalLayout_15)
700 |
701 | self.horizontalLayout_16 = QHBoxLayout()
702 | self.horizontalLayout_16.setObjectName(u"horizontalLayout_16")
703 | self.label_29 = QLabel(self.pg_contato)
704 | self.label_29.setObjectName(u"label_29")
705 |
706 | self.horizontalLayout_16.addWidget(self.label_29)
707 |
708 | self.horizontalLayout_13 = QHBoxLayout()
709 | self.horizontalLayout_13.setObjectName(u"horizontalLayout_13")
710 | self.label_25 = QLabel(self.pg_contato)
711 | self.label_25.setObjectName(u"label_25")
712 | sizePolicy1.setHeightForWidth(self.label_25.sizePolicy().hasHeightForWidth())
713 | self.label_25.setSizePolicy(sizePolicy1)
714 |
715 | self.horizontalLayout_13.addWidget(self.label_25)
716 |
717 | self.label_21 = QLabel(self.pg_contato)
718 | self.label_21.setObjectName(u"label_21")
719 | sizePolicy.setHeightForWidth(self.label_21.sizePolicy().hasHeightForWidth())
720 | self.label_21.setSizePolicy(sizePolicy)
721 | self.label_21.setAlignment(Qt.AlignLeading|Qt.AlignLeft|Qt.AlignVCenter)
722 |
723 | self.horizontalLayout_13.addWidget(self.label_21)
724 |
725 |
726 | self.horizontalLayout_16.addLayout(self.horizontalLayout_13)
727 |
728 | self.label_30 = QLabel(self.pg_contato)
729 | self.label_30.setObjectName(u"label_30")
730 |
731 | self.horizontalLayout_16.addWidget(self.label_30)
732 |
733 |
734 | self.verticalLayout_12.addLayout(self.horizontalLayout_16)
735 |
736 | self.horizontalLayout_17 = QHBoxLayout()
737 | self.horizontalLayout_17.setObjectName(u"horizontalLayout_17")
738 | self.label_31 = QLabel(self.pg_contato)
739 | self.label_31.setObjectName(u"label_31")
740 |
741 | self.horizontalLayout_17.addWidget(self.label_31)
742 |
743 | self.horizontalLayout_14 = QHBoxLayout()
744 | self.horizontalLayout_14.setObjectName(u"horizontalLayout_14")
745 | self.label_26 = QLabel(self.pg_contato)
746 | self.label_26.setObjectName(u"label_26")
747 | sizePolicy1.setHeightForWidth(self.label_26.sizePolicy().hasHeightForWidth())
748 | self.label_26.setSizePolicy(sizePolicy1)
749 |
750 | self.horizontalLayout_14.addWidget(self.label_26)
751 |
752 | self.label_22 = QLabel(self.pg_contato)
753 | self.label_22.setObjectName(u"label_22")
754 | sizePolicy.setHeightForWidth(self.label_22.sizePolicy().hasHeightForWidth())
755 | self.label_22.setSizePolicy(sizePolicy)
756 | self.label_22.setAlignment(Qt.AlignLeading|Qt.AlignLeft|Qt.AlignVCenter)
757 |
758 | self.horizontalLayout_14.addWidget(self.label_22)
759 |
760 |
761 | self.horizontalLayout_17.addLayout(self.horizontalLayout_14)
762 |
763 | self.label_32 = QLabel(self.pg_contato)
764 | self.label_32.setObjectName(u"label_32")
765 |
766 | self.horizontalLayout_17.addWidget(self.label_32)
767 |
768 |
769 | self.verticalLayout_12.addLayout(self.horizontalLayout_17)
770 |
771 | self.Pages.addWidget(self.pg_contato)
772 | self.pg_sobre = QWidget()
773 | self.pg_sobre.setObjectName(u"pg_sobre")
774 | self.verticalLayout_13 = QVBoxLayout(self.pg_sobre)
775 | self.verticalLayout_13.setObjectName(u"verticalLayout_13")
776 | self.label_16 = QLabel(self.pg_sobre)
777 | self.label_16.setObjectName(u"label_16")
778 | self.label_16.setFont(font)
779 | self.label_16.setStyleSheet(u"color: rgb(255, 255, 255);")
780 | self.label_16.setAlignment(Qt.AlignCenter)
781 |
782 | self.verticalLayout_13.addWidget(self.label_16)
783 |
784 | self.verticalSpacer_2 = QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Expanding)
785 |
786 | self.verticalLayout_13.addItem(self.verticalSpacer_2)
787 |
788 | self.label_23 = QLabel(self.pg_sobre)
789 | self.label_23.setObjectName(u"label_23")
790 | self.label_23.setWordWrap(True)
791 |
792 | self.verticalLayout_13.addWidget(self.label_23)
793 |
794 | self.verticalSpacer_3 = QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Expanding)
795 |
796 | self.verticalLayout_13.addItem(self.verticalSpacer_3)
797 |
798 | self.Pages.addWidget(self.pg_sobre)
799 |
800 | self.verticalLayout_2.addWidget(self.Pages)
801 |
802 | MainWindow.setCentralWidget(self.centralwidget)
803 |
804 | self.retranslateUi(MainWindow)
805 |
806 | self.Pages.setCurrentIndex(1)
807 | self.tabWidget.setCurrentIndex(0)
808 |
809 |
810 | QMetaObject.connectSlotsByName(MainWindow)
811 | # setupUi
812 |
813 | def retranslateUi(self, MainWindow):
814 | MainWindow.setWindowTitle(QCoreApplication.translate("MainWindow", u"MainWindow", None))
815 | self.btn_home.setText(QCoreApplication.translate("MainWindow", u"HOME", None))
816 | self.btn_pg_import.setText(QCoreApplication.translate("MainWindow", u"Importar", None))
817 | self.btn_tables.setText(QCoreApplication.translate("MainWindow", u"TABLES", None))
818 | self.btn_sobre.setText(QCoreApplication.translate("MainWindow", u"SOBRE", None))
819 | self.btn_contato.setText(QCoreApplication.translate("MainWindow", u"CONTATO", None))
820 | self.label_3.setText(QCoreApplication.translate("MainWindow", u"
Estoque
", None))
821 | ___qtreewidgetitem = self.tw_estoque.headerItem()
822 | ___qtreewidgetitem.setText(14, QCoreApplication.translate("MainWindow", u"Usu\u00e1rio", None));
823 | ___qtreewidgetitem.setText(13, QCoreApplication.translate("MainWindow", u"Data Importa\u00e7\u00e3o", None));
824 | ___qtreewidgetitem.setText(12, QCoreApplication.translate("MainWindow", u"Valor Produto", None));
825 | ___qtreewidgetitem.setText(11, QCoreApplication.translate("MainWindow", u"Unidade medida", None));
826 | ___qtreewidgetitem.setText(10, QCoreApplication.translate("MainWindow", u"Descri\u00e7\u00e3o", None));
827 | ___qtreewidgetitem.setText(9, QCoreApplication.translate("MainWindow", u"Quantidade", None));
828 | ___qtreewidgetitem.setText(8, QCoreApplication.translate("MainWindow", u"Cod Item", None));
829 | ___qtreewidgetitem.setText(7, QCoreApplication.translate("MainWindow", u"Item", None));
830 | ___qtreewidgetitem.setText(6, QCoreApplication.translate("MainWindow", u"Total Nfe", None));
831 | ___qtreewidgetitem.setText(5, QCoreApplication.translate("MainWindow", u"Emitente", None));
832 | ___qtreewidgetitem.setText(4, QCoreApplication.translate("MainWindow", u"Cnpj_emitente", None));
833 | ___qtreewidgetitem.setText(3, QCoreApplication.translate("MainWindow", u"Chave", None));
834 | ___qtreewidgetitem.setText(2, QCoreApplication.translate("MainWindow", u"Data_emissao", None));
835 | ___qtreewidgetitem.setText(1, QCoreApplication.translate("MainWindow", u"Serie", None));
836 | ___qtreewidgetitem.setText(0, QCoreApplication.translate("MainWindow", u"Nfe", None));
837 | self.label_2.setText(QCoreApplication.translate("MainWindow", u"Sa\u00edda
", None))
838 | ___qtreewidgetitem1 = self.tw_saida.headerItem()
839 | ___qtreewidgetitem1.setText(4, QCoreApplication.translate("MainWindow", u"USU\u00c1RIO", None));
840 | ___qtreewidgetitem1.setText(3, QCoreApplication.translate("MainWindow", u"DATA SA\u00cdDA", None));
841 | ___qtreewidgetitem1.setText(2, QCoreApplication.translate("MainWindow", u"DATA IMPORTA\u00c7\u00c3O", None));
842 | ___qtreewidgetitem1.setText(1, QCoreApplication.translate("MainWindow", u"SERIE", None));
843 | ___qtreewidgetitem1.setText(0, QCoreApplication.translate("MainWindow", u"Nfe", None));
844 | self.btn_gerar.setText(QCoreApplication.translate("MainWindow", u"Gerar sa\u00edda", None))
845 | self.btn_estorno.setText(QCoreApplication.translate("MainWindow", u"Estorno", None))
846 | self.btn_.setText("")
847 | self.tabWidget.setTabText(self.tabWidget.indexOf(self.tables), QCoreApplication.translate("MainWindow", u"Base", None))
848 | self.label_17.setText(QCoreApplication.translate("MainWindow", u"GERAL", None))
849 | self.btn_chart.setText(QCoreApplication.translate("MainWindow", u"Gerar Gr\u00e1fico", None))
850 | self.btn_excel.setText(QCoreApplication.translate("MainWindow", u"Gerar Excel", None))
851 | self.txt_search.setPlaceholderText(QCoreApplication.translate("MainWindow", u"Filtro", None))
852 | self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_2), QCoreApplication.translate("MainWindow", u"GERAL", None))
853 | self.label.setText(QCoreApplication.translate("MainWindow", u"PYTAX
Sistema de gerenciamento

", None))
854 | self.btn_pg_cadastro.setText(QCoreApplication.translate("MainWindow", u"Cadastrar Usu\u00e1rio", None))
855 | self.label_18.setText(QCoreApplication.translate("MainWindow", u"IMPORTAR XML", None))
856 | self.txt_file.setPlaceholderText(QCoreApplication.translate("MainWindow", u"Seleciona a pasta com os arquivos XML --->", None))
857 | self.btn_open.setText(QCoreApplication.translate("MainWindow", u"Abrir", None))
858 | self.label_4.setText("")
859 | self.btn_import.setText(QCoreApplication.translate("MainWindow", u"IMPORTAR", None))
860 | self.label_5.setText("")
861 | self.label_14.setText(QCoreApplication.translate("MainWindow", u"Tela de cadastro", None))
862 | self.label_6.setText(QCoreApplication.translate("MainWindow", u"
CADASTRAR USU\u00c1RIO
", None))
863 | self.label_7.setText(QCoreApplication.translate("MainWindow", u"Nome:
", None))
864 | self.label_8.setText(QCoreApplication.translate("MainWindow", u"Usu\u00e1rio
", None))
865 | self.label_9.setText(QCoreApplication.translate("MainWindow", u"Senha:
", None))
866 | self.label_10.setText(QCoreApplication.translate("MainWindow", u"Senha:
", None))
867 | self.label_11.setText(QCoreApplication.translate("MainWindow", u"Perfil:
", None))
868 | self.cb_perfil.setItemText(0, QCoreApplication.translate("MainWindow", u"Usu\u00e1rio", None))
869 | self.cb_perfil.setItemText(1, QCoreApplication.translate("MainWindow", u"Administrador", None))
870 |
871 | self.label_12.setText("")
872 | self.btn_cadastrar.setText(QCoreApplication.translate("MainWindow", u"Cadastrar", None))
873 | self.label_13.setText("")
874 | self.label_15.setText(QCoreApplication.translate("MainWindow", u"CONTATOS", None))
875 | self.label_19.setText(QCoreApplication.translate("MainWindow", u"Desenvolvedor: Nicolas almeida
", None))
876 | self.label_27.setText("")
877 | self.label_24.setText(QCoreApplication.translate("MainWindow", u"
", None))
878 | self.label_20.setText(QCoreApplication.translate("MainWindow", u"(11)98013-0552
", None))
879 | self.label_28.setText("")
880 | self.label_29.setText("")
881 | self.label_25.setText(QCoreApplication.translate("MainWindow", u"
", None))
882 | self.label_21.setText(QCoreApplication.translate("MainWindow", u" contato@pytax.net
", None))
883 | self.label_30.setText("")
884 | self.label_31.setText("")
885 | self.label_26.setText(QCoreApplication.translate("MainWindow", u"
", None))
886 | self.label_22.setText(QCoreApplication.translate("MainWindow", u"pytax
", None))
887 | self.label_32.setText("")
888 | self.label_16.setText(QCoreApplication.translate("MainWindow", u"SOBRE", None))
889 | self.label_23.setText(QCoreApplication.translate("MainWindow", u"Este sistema faz a imoprta\u00e7\u00e3o de arquivos XML e faz o controle do estoque de acordo com a entrada de notas e sa\u00eddas apontadas pelo usu\u00e1rio.
", None))
890 | # retranslateUi
891 |
892 |
--------------------------------------------------------------------------------
/ui_main.ui:
--------------------------------------------------------------------------------
1 |
2 |
3 | MainWindow
4 |
5 |
6 |
7 | 0
8 | 0
9 | 855
10 | 542
11 |
12 |
13 |
14 | MainWindow
15 |
16 |
17 | background-color: rgb(0, 0,10);
18 |
19 |
20 |
21 | -
22 |
23 |
24 | background-color: rgb(0, 0, 20);
25 |
26 |
27 |
28 | QFrame::StyledPanel
29 |
30 |
31 | QFrame::Raised
32 |
33 |
34 |
-
35 |
36 |
37 |
38 | 0
39 | 0
40 |
41 |
42 |
43 |
44 | 0
45 | 35
46 |
47 |
48 |
49 | QPushButton{
50 | color: rgb(255, 255, 255);
51 | border-radius: 1px;
52 | font-size: 16px;
53 | background-color: rgb(0, 80, 121);
54 | }
55 |
56 | QPushButton:hover{background-color: #fff; color:black}
57 |
58 |
59 |
60 | HOME
61 |
62 |
63 |
64 | -
65 |
66 |
67 |
68 | 0
69 | 33
70 |
71 |
72 |
73 | PointingHandCursor
74 |
75 |
76 | QPushButton{
77 | color: rgb(255, 255, 255);
78 | border-radius: 1px;
79 | font-size: 16px;
80 | background-color: rgb(0, 80, 121);
81 | }
82 |
83 | QPushButton:hover{background-color: #fff; color:black}
84 |
85 |
86 |
87 | Importar
88 |
89 |
90 |
91 | -
92 |
93 |
94 |
95 | 0
96 | 33
97 |
98 |
99 |
100 | QPushButton{
101 | color: rgb(255, 255, 255);
102 | border-radius: 1px;
103 | font-size: 16px;
104 | background-color: rgb(0, 80, 121);
105 | }
106 |
107 | QPushButton:hover{background-color: #fff; color:black}
108 |
109 |
110 |
111 | TABLES
112 |
113 |
114 |
115 | -
116 |
117 |
118 |
119 | 0
120 | 33
121 |
122 |
123 |
124 | QPushButton{
125 | color: rgb(255, 255, 255);
126 | border-radius: 1px;
127 | font-size: 16px;
128 | background-color: rgb(0, 80, 121);
129 | }
130 |
131 | QPushButton:hover{background-color: #fff; color:black}
132 |
133 |
134 |
135 | SOBRE
136 |
137 |
138 |
139 | -
140 |
141 |
142 |
143 | 0
144 | 33
145 |
146 |
147 |
148 | QPushButton{
149 | color: rgb(255, 255, 255);
150 | border-radius: 1px;
151 | font-size: 16px;
152 | background-color: rgb(0, 80, 121);
153 | }
154 |
155 | QPushButton:hover{background-color: #fff; color:black}
156 |
157 |
158 |
159 | CONTATO
160 |
161 |
162 |
163 |
164 |
165 |
166 | -
167 |
168 |
169 | background-color: rgb(0, 80, 121);
170 |
171 |
172 | 1
173 |
174 |
175 |
176 |
-
177 |
178 |
179 | 0
180 |
181 |
182 |
183 | Base
184 |
185 |
186 |
-
187 |
188 |
-
189 |
190 |
-
191 |
192 |
-
193 |
194 |
195 | <html><head/><body><p align="center"><span style=" font-size:12pt; font-weight:600; color:#ffffff;">Estoque</span></p></body></html>
196 |
197 |
198 |
199 | -
200 |
201 |
202 |
203 |
204 |
205 | false
206 |
207 |
208 |
209 | Nfe
210 |
211 |
212 |
213 |
214 | Serie
215 |
216 |
217 |
218 |
219 | Data_emissao
220 |
221 |
222 |
223 |
224 | Chave
225 |
226 |
227 |
228 |
229 | Cnpj_emitente
230 |
231 |
232 |
233 |
234 | Emitente
235 |
236 |
237 |
238 |
239 | Total Nfe
240 |
241 |
242 |
243 |
244 | Item
245 |
246 |
247 |
248 |
249 | Cod Item
250 |
251 |
252 |
253 |
254 | Quantidade
255 |
256 |
257 |
258 |
259 | Descrição
260 |
261 |
262 |
263 |
264 | Unidade medida
265 |
266 |
267 |
268 |
269 | Valor Produto
270 |
271 |
272 |
273 |
274 | Data Importação
275 |
276 |
277 |
278 |
279 | Usuário
280 |
281 |
282 |
283 |
284 |
285 |
286 | -
287 |
288 |
-
289 |
290 |
291 | <html><head/><body><p align="center"><span style=" font-size:12pt; font-weight:600; color:#ffffff;">Saída</span></p></body></html>
292 |
293 |
294 |
295 | -
296 |
297 |
298 |
299 |
300 |
301 |
302 | Nfe
303 |
304 |
305 |
306 |
307 | SERIE
308 |
309 |
310 |
311 |
312 | DATA IMPORTAÇÃO
313 |
314 |
315 |
316 |
317 | DATA SAÍDA
318 |
319 |
320 |
321 |
322 | USUÁRIO
323 |
324 |
325 |
326 |
327 |
328 |
329 |
330 |
331 | -
332 |
333 |
334 |
335 | 0
336 | 0
337 |
338 |
339 |
340 | QFrame::StyledPanel
341 |
342 |
343 | QFrame::Raised
344 |
345 |
346 |
-
347 |
348 |
349 |
350 | 100
351 | 27
352 |
353 |
354 |
355 | PointingHandCursor
356 |
357 |
358 | QPushButton{
359 | color: rgb(0,0,10);
360 | border-radius: 10px;
361 | font-size: 16px;
362 | background-color: #fff;
363 | ;}
364 |
365 | QPushButton:hover{
366 |
367 | background-color: rgb(170, 255, 255);
368 | color:black
369 | }
370 |
371 |
372 |
373 | Gerar saída
374 |
375 |
376 |
377 | -
378 |
379 |
380 |
381 | 100
382 | 27
383 |
384 |
385 |
386 | PointingHandCursor
387 |
388 |
389 | QPushButton{
390 | color: rgb(0,0,10);
391 | border-radius: 10px;
392 | font-size: 16px;
393 | background-color: #fff;
394 | ;}
395 |
396 | QPushButton:hover{
397 |
398 | background-color: rgb(170, 255, 255);
399 | color:black
400 | }
401 |
402 |
403 |
404 |
405 | Estorno
406 |
407 |
408 |
409 | -
410 |
411 |
412 |
413 | 100
414 | 27
415 |
416 |
417 |
418 | PointingHandCursor
419 |
420 |
421 | QPushButton{
422 | color: rgb(0,0,10);
423 | border-radius: 10px;
424 | font-size: 16px;
425 | background-color: #fff;
426 | ;}
427 |
428 | QPushButton:hover{
429 | background-color: #fff;
430 | color:black
431 | }
432 |
433 |
434 |
435 |
436 |
437 |
438 | -
439 |
440 |
441 | Qt::Vertical
442 |
443 |
444 |
445 | 20
446 | 40
447 |
448 |
449 |
450 |
451 |
452 |
453 |
454 |
455 |
456 |
457 |
458 |
459 |
460 | GERAL
461 |
462 |
463 | -
464 |
465 |
466 |
467 | 20
468 | 75
469 | true
470 |
471 |
472 |
473 | color: rgb(255, 255, 255);
474 |
475 |
476 | GERAL
477 |
478 |
479 | Qt::AlignCenter
480 |
481 |
482 |
483 | -
484 |
485 |
-
486 |
487 |
488 |
489 | 123
490 | 28
491 |
492 |
493 |
494 |
495 | 0
496 | 0
497 |
498 |
499 |
500 | PointingHandCursor
501 |
502 |
503 | QPushButton{
504 | color: rgb(0,0,10);
505 | border-radius: 10px;
506 | font-size: 16px;
507 | background-color: #fff;
508 | ;}
509 |
510 | QPushButton:hover{
511 |
512 | background-color: rgb(170, 255, 255);
513 | color:black
514 | }
515 |
516 |
517 |
518 |
519 | Gerar Gráfico
520 |
521 |
522 |
523 | -
524 |
525 |
526 |
527 | 123
528 | 28
529 |
530 |
531 |
532 |
533 | 0
534 | 0
535 |
536 |
537 |
538 | PointingHandCursor
539 |
540 |
541 | QPushButton{
542 | color: rgb(0,0,10);
543 | border-radius: 10px;
544 | font-size: 16px;
545 | background-color: #fff;
546 | ;}
547 |
548 | QPushButton:hover{
549 |
550 | background-color: rgb(170, 255, 255);
551 | color:black
552 | }
553 |
554 |
555 |
556 |
557 | Gerar Excel
558 |
559 |
560 |
561 |
562 |
563 | -
564 |
565 |
566 |
567 | 11
568 |
569 |
570 |
571 | color: rgb(255, 255, 255);
572 |
573 |
574 | Qt::AlignCenter
575 |
576 |
577 | Filtro
578 |
579 |
580 |
581 | -
582 |
583 |
584 |
585 |
586 |
587 |
588 |
589 |
590 |
591 |
592 | -
593 |
594 |
595 | background-color: rgb(0, 80, 121);
596 |
597 |
598 |
599 |
600 | <html><head/><body><p align="center"><span style=" font-size:48pt; font-weight:600; color:#ffffff;">PYTAX</span></p><p align="center"><span style=" font-size:24pt; color:#ffffff;">Sistema de gerenciamento</span></p><p align="center"><span style=" font-size:24pt; color:#ffffff;"><img src="_imgs/logo.png"/></span></p></body></html>
601 |
602 |
603 |
604 | -
605 |
606 |
607 |
608 | 0
609 | 33
610 |
611 |
612 |
613 |
614 | 10
615 |
616 |
617 |
618 | PointingHandCursor
619 |
620 |
621 | QPushButton{color:#fff;}
622 |
623 | QPushButton:hover{
624 | background-color: rgb(255, 255, 255);
625 | color:black
626 | }
627 |
628 |
629 | Cadastrar Usuário
630 |
631 |
632 |
633 |
634 |
635 |
636 |
637 | -
638 |
639 |
640 |
641 | 20
642 | 75
643 | true
644 |
645 |
646 |
647 | color: rgb(255, 255, 255);
648 |
649 |
650 | IMPORTAR XML
651 |
652 |
653 | Qt::AlignCenter
654 |
655 |
656 |
657 | -
658 |
659 |
-
660 |
661 |
662 |
663 | 0
664 | 28
665 |
666 |
667 |
668 |
669 | 11
670 |
671 |
672 |
673 | color: rgb(255, 255, 255);
674 |
675 |
676 | Qt::AlignCenter
677 |
678 |
679 | Seleciona a pasta com os arquivos XML --->
680 |
681 |
682 |
683 | -
684 |
685 |
686 |
687 | 123
688 | 28
689 |
690 |
691 |
692 |
693 | 0
694 | 0
695 |
696 |
697 |
698 | PointingHandCursor
699 |
700 |
701 | QPushButton{
702 | color: rgb(0,0,10);
703 | border-top-right-radius:15px;
704 | font-size: 16px;
705 | background-color: #fff;
706 | ;}
707 |
708 | QPushButton:hover{
709 |
710 | background-color: rgb(170, 255, 255);
711 | color:black
712 | }
713 |
714 |
715 |
716 |
717 | Abrir
718 |
719 |
720 |
721 |
722 |
723 | -
724 |
725 |
-
726 |
727 |
728 |
729 |
730 |
731 |
732 | -
733 |
734 |
735 |
736 | 123
737 | 28
738 |
739 |
740 |
741 |
742 | 0
743 | 0
744 |
745 |
746 |
747 | PointingHandCursor
748 |
749 |
750 | QPushButton{
751 | color: rgb(0,0,10);
752 | border-radius: 10px;
753 | font-size: 16px;
754 | background-color: #fff;
755 | ;}
756 |
757 | QPushButton:hover{
758 |
759 | background-color: rgb(170, 255, 255);
760 | color:black
761 | }
762 |
763 |
764 |
765 |
766 | IMPORTAR
767 |
768 |
769 |
770 | -
771 |
772 |
773 |
774 |
775 |
776 |
777 |
778 |
779 | -
780 |
781 |
782 | QProgressBar{ background-color: rgba(0, 0, 0,0.1);
783 | color: rgb(255, 255, 255);
784 | border-style: none;
785 | text-align: center;
786 | border-radius:10px;
787 |
788 | }
789 |
790 |
791 | QProgressBar::chunk{ background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:1, stop:0 rgba(6, 75, 149, 255), stop:1 rgba(72, 130, 157, 255));
792 | border-radius:10px;
793 | }
794 |
795 |
796 | 0
797 |
798 |
799 |
800 |
801 |
802 |
803 |
804 | -
805 |
806 |
807 |
808 | 20
809 | 75
810 | true
811 |
812 |
813 |
814 | color: rgb(255, 255, 255);
815 |
816 |
817 | Tela de cadastro
818 |
819 |
820 | Qt::AlignCenter
821 |
822 |
823 |
824 | -
825 |
826 |
827 |
828 | 10
829 |
830 |
831 |
832 | <html><head/><body><p align="center"><img src="_imgs/user.png"/></p><p align="center"><span style=" font-size:14pt; font-weight:600; color:#ffffff;">CADASTRAR USUÁRIO</span></p></body></html>
833 |
834 |
835 | Qt::AlignCenter
836 |
837 |
838 |
839 | -
840 |
841 |
842 | 50
843 |
844 |
-
845 |
846 |
847 |
848 | 0
849 | 0
850 |
851 |
852 |
853 | <html><head/><body><p><span style=" font-size:12pt; font-weight:600; color:#ffffff;">Nome:</span></p></body></html>
854 |
855 |
856 |
857 | -
858 |
859 |
860 |
861 | 0
862 | 0
863 |
864 |
865 |
866 | color:rgba(211, 239, 251,1);
867 | border-bottom:1px solid white;
868 | border-radius: None;
869 | background-color:rgba(85, 115, 155,0.1);
870 | font-family:Trebuchet MS;
871 | font-size:21px;
872 |
873 |
874 |
875 |
876 |
877 | -
878 |
879 |
880 | 50
881 |
882 |
-
883 |
884 |
885 | <html><head/><body><p><span style=" font-size:12pt; font-weight:600; color:#ffffff;">Usuário</span></p></body></html>
886 |
887 |
888 |
889 | -
890 |
891 |
892 | color:rgba(211, 239, 251,1);
893 | border-bottom:1px solid white;
894 | border-radius: None;
895 | background-color:rgba(85, 115, 155,0.1);
896 | font-family:Trebuchet MS;
897 | font-size:21px;
898 |
899 |
900 |
901 |
902 |
903 | -
904 |
905 |
906 | 50
907 |
908 |
-
909 |
910 |
911 | <html><head/><body><p><span style=" font-size:12pt; font-weight:600; color:#ffffff;">Senha:</span></p></body></html>
912 |
913 |
914 |
915 | -
916 |
917 |
918 | color:rgba(211, 239, 251,1);
919 | border-bottom:1px solid white;
920 | border-radius: None;
921 | background-color:rgba(85, 115, 155,0.1);
922 | font-family:Trebuchet MS;
923 | font-size:21px;
924 |
925 |
926 | QLineEdit::Password
927 |
928 |
929 |
930 |
931 |
932 | -
933 |
934 |
935 | 50
936 |
937 |
-
938 |
939 |
940 | <html><head/><body><p><span style=" font-size:12pt; font-weight:600; color:#ffffff;">Senha:</span></p></body></html>
941 |
942 |
943 |
944 | -
945 |
946 |
947 | color:rgba(211, 239, 251,1);
948 | border-bottom:1px solid white;
949 | border-radius: None;
950 | background-color:rgba(85, 115, 155,0.1);
951 | font-family:Trebuchet MS;
952 | font-size:21px;
953 |
954 |
955 | QLineEdit::Password
956 |
957 |
958 |
959 |
960 |
961 | -
962 |
963 |
964 | 50
965 |
966 |
-
967 |
968 |
969 | <html><head/><body><p><span style=" font-size:12pt; font-weight:600; color:#ffffff;">Perfil:</span></p></body></html>
970 |
971 |
972 |
973 | -
974 |
975 |
976 |
977 | 0
978 | 0
979 |
980 |
981 |
982 |
983 | 12
984 |
985 |
986 |
987 | color: rgb(255, 255, 255);
988 |
989 |
-
990 |
991 | Usuário
992 |
993 |
994 | -
995 |
996 | Administrador
997 |
998 |
999 |
1000 |
1001 |
1002 |
1003 | -
1004 |
1005 |
-
1006 |
1007 |
1008 |
1009 |
1010 |
1011 |
1012 | -
1013 |
1014 |
1015 |
1016 | 0
1017 | 35
1018 |
1019 |
1020 |
1021 | QPushButton{
1022 | color: rgb(0,0,10);
1023 | border-radius: 10px;
1024 | font-size: 16px;
1025 | background-color: #fff;
1026 | ;}
1027 |
1028 | QPushButton:hover{
1029 |
1030 | background-color: rgb(170, 255, 255);
1031 | color:black
1032 | }
1033 |
1034 |
1035 |
1036 |
1037 | Cadastrar
1038 |
1039 |
1040 |
1041 | -
1042 |
1043 |
1044 |
1045 |
1046 |
1047 |
1048 |
1049 |
1050 |
1051 |
1052 |
1053 |
1054 | -
1055 |
1056 |
1057 |
1058 | 20
1059 | 75
1060 | true
1061 |
1062 |
1063 |
1064 | color: rgb(255, 255, 255);
1065 |
1066 |
1067 | CONTATOS
1068 |
1069 |
1070 | Qt::AlignCenter
1071 |
1072 |
1073 |
1074 | -
1075 |
1076 |
1077 |
1078 | 0
1079 | 0
1080 |
1081 |
1082 |
1083 | <html><head/><body><p><span style=" font-size:16pt; font-weight:600; color:#ffffff;">Desenvolvedor: Nicolas almeida</span></p></body></html>
1084 |
1085 |
1086 | Qt::AlignCenter
1087 |
1088 |
1089 |
1090 | -
1091 |
1092 |
-
1093 |
1094 |
1095 |
1096 |
1097 |
1098 |
1099 | -
1100 |
1101 |
-
1102 |
1103 |
1104 |
1105 | 0
1106 | 0
1107 |
1108 |
1109 |
1110 | <html><head/><body><p><img src="_imgs/phone.png"/></p></body></html>
1111 |
1112 |
1113 |
1114 | -
1115 |
1116 |
1117 |
1118 | 0
1119 | 0
1120 |
1121 |
1122 |
1123 | <html><head/><body><p><span style=" font-size:14pt; font-weight:600; color:#ffffff;">(11)98013-0552</span></p></body></html>
1124 |
1125 |
1126 | Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter
1127 |
1128 |
1129 |
1130 |
1131 |
1132 | -
1133 |
1134 |
1135 |
1136 |
1137 |
1138 |
1139 |
1140 |
1141 | -
1142 |
1143 |
-
1144 |
1145 |
1146 |
1147 |
1148 |
1149 |
1150 | -
1151 |
1152 |
-
1153 |
1154 |
1155 |
1156 | 0
1157 | 0
1158 |
1159 |
1160 |
1161 | <html><head/><body><p><img src="_imgs/email.png"/></p></body></html>
1162 |
1163 |
1164 |
1165 | -
1166 |
1167 |
1168 |
1169 | 0
1170 | 0
1171 |
1172 |
1173 |
1174 | <html><head/><body><p><span style=" font-size:14pt; font-weight:600; color:#ffffff;"> contato@pytax.net</span></p></body></html>
1175 |
1176 |
1177 | Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter
1178 |
1179 |
1180 |
1181 |
1182 |
1183 | -
1184 |
1185 |
1186 |
1187 |
1188 |
1189 |
1190 |
1191 |
1192 | -
1193 |
1194 |
-
1195 |
1196 |
1197 |
1198 |
1199 |
1200 |
1201 | -
1202 |
1203 |
-
1204 |
1205 |
1206 |
1207 | 0
1208 | 0
1209 |
1210 |
1211 |
1212 | <html><head/><body><p><img src="_imgs/instagram.png"/></p></body></html>
1213 |
1214 |
1215 |
1216 | -
1217 |
1218 |
1219 |
1220 | 0
1221 | 0
1222 |
1223 |
1224 |
1225 | <html><head/><body><p><span style=" font-size:14pt; font-weight:600; color:#ffffff;">pytax</span></p></body></html>
1226 |
1227 |
1228 | Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter
1229 |
1230 |
1231 |
1232 |
1233 |
1234 | -
1235 |
1236 |
1237 |
1238 |
1239 |
1240 |
1241 |
1242 |
1243 |
1244 |
1245 |
1246 |
1247 | -
1248 |
1249 |
1250 |
1251 | 20
1252 | 75
1253 | true
1254 |
1255 |
1256 |
1257 | color: rgb(255, 255, 255);
1258 |
1259 |
1260 | SOBRE
1261 |
1262 |
1263 | Qt::AlignCenter
1264 |
1265 |
1266 |
1267 | -
1268 |
1269 |
1270 | Qt::Vertical
1271 |
1272 |
1273 |
1274 | 20
1275 | 40
1276 |
1277 |
1278 |
1279 |
1280 | -
1281 |
1282 |
1283 | <html><head/><body><p align="center"><span style=" font-size:16pt; color:#ffffff;">Este sistema faz a imoprtação de arquivos XML e faz o controle do estoque de acordo com a entrada de notas e saídas apontadas pelo usuário.</span></p></body></html>
1284 |
1285 |
1286 | true
1287 |
1288 |
1289 |
1290 | -
1291 |
1292 |
1293 | Qt::Vertical
1294 |
1295 |
1296 |
1297 | 20
1298 | 40
1299 |
1300 |
1301 |
1302 |
1303 |
1304 |
1305 |
1306 |
1307 |
1308 |
1309 |
1310 |
1311 |
1312 |
1313 |
--------------------------------------------------------------------------------