167 lines
7.3 KiB
Python
167 lines
7.3 KiB
Python
import pandas as pd
|
|
from connection import create_connection
|
|
from search import search_article, search_barcode, search_lsa, search_lsv, search_um
|
|
from update import update_article, update_lsa, update_lsv
|
|
from insert import insert_barcode, insert_article, insert_listino_acquisto, insert_listino_vendita
|
|
from write import write_excel
|
|
from upload import upload_excel
|
|
|
|
class bcolors:
|
|
HEADER = '\033[95m'
|
|
OKBLUE = '\033[94m'
|
|
OKCYAN = '\033[96m'
|
|
OKGREEN = '\033[92m'
|
|
WARNING = '\033[93m'
|
|
FAIL = '\033[91m'
|
|
ENDC = '\033[0m'
|
|
BOLD = '\033[1m'
|
|
UNDERLINE = '\033[4m'
|
|
|
|
host = "62.86.98.170"
|
|
user = "root"
|
|
password = "masterkey"
|
|
database = "arc_rumo"
|
|
port = 3307
|
|
|
|
#creo la connessione al database
|
|
connection = create_connection(host, user, password, database, port)
|
|
#leggo il file excel
|
|
file_input = upload_excel()
|
|
df = pd.read_excel(file_input, usecols='A:O', dtype={'CODICE': str, 'DESCRIZIONE': str, 'UN':str, 'SC1': str, 'RICARICA1': str, 'RICARICA2': str, 'RICARICA3': str, 'RICARICA4': str, 'SC2': str, 'CODICE_BARRE': str, 'CODICE ALTERNATIVO': str, 'GRUPPO STATISTICO': str, 'FORNITORE': str,})
|
|
|
|
updated_rows = []
|
|
i=0
|
|
#leggo le colonne del file excel
|
|
for index, row in df.iterrows():
|
|
|
|
codice_articolo = '' if pd.isna(row['CODICE']) else row['CODICE']
|
|
descrizione = '' if pd.isna(row['DESCRIZIONE']) else row['DESCRIZIONE']
|
|
um = '' if pd.isna(row['UN']) else row['UN']
|
|
costo = '' if pd.isna(row['COSTO']) else float(row['COSTO'])
|
|
sc1 = '' if pd.isna(row['SC1']) else row['SC1']
|
|
|
|
ricarica = {"1" : "", "2" : "", "4" : ""}
|
|
|
|
if not pd.isna(row['RICARICA1']):
|
|
ricarica['1'] = row['RICARICA1']
|
|
if not pd.isna(row['RICARICA2']):
|
|
ricarica['2'] = row['RICARICA2']
|
|
#if not pd.isna(row['RICARICA3']):
|
|
# ricarica['3'] = row['RICARICA3']
|
|
if not pd.isna(row['RICARICA4']):
|
|
ricarica['4'] = row['RICARICA4']
|
|
|
|
sc2 = '' if pd.isna(row['SC2']) else row['SC2']
|
|
prezzo_pubblico = '' if pd.isna(row['PREZZO PUBBLICO']) else float(row['PREZZO PUBBLICO'])
|
|
codice_barre = '' if pd.isna(row['CODICE_BARRE']) else row['CODICE_BARRE']
|
|
codice_alternativo = '' if pd.isna(row['CODICE ALTERNATIVO']) else row['CODICE ALTERNATIVO']
|
|
tsa_codice = '' if pd.isna(row['GRUPPO STATISTICO']) else row['GRUPPO STATISTICO']
|
|
frn_codice = '' if pd.isna(row['FORNITORE']) else row['FORNITORE']
|
|
|
|
|
|
descrizione2 = ''
|
|
## se decrizione supera 40
|
|
if len(descrizione) > 40 :
|
|
descrizione1 = descrizione [: 40]
|
|
descrizione2 = descrizione [40 :]
|
|
descrizione = descrizione1
|
|
|
|
updated_rows.append({'ART_CODICE': [0, codice_articolo], 'TUM_CODICE': [0, um], 'CODICE_BARRE': [0, codice_barre], 'LSA_ID': [0, ''], 'LSV_ID': {'1': [0, ''], '2': [0, ''], '4': [0, '']}})
|
|
|
|
if connection :
|
|
|
|
if search_um(connection, um) or um == '':
|
|
updated_rows[i]['TUM_CODICE'] = [2, um]
|
|
|
|
if codice_articolo != '' and descrizione != '':
|
|
if search_article(connection, codice_articolo):
|
|
print(bcolors.OKGREEN+'Articolo trovato: '+codice_articolo, end =" -> ")
|
|
|
|
if update_article(connection, codice_articolo, descrizione, descrizione2, um, codice_alternativo, tsa_codice, frn_codice):
|
|
print(bcolors.OKGREEN + 'Aggiornato')
|
|
updated_rows[i]['ART_CODICE'] = [2, codice_articolo]
|
|
else:
|
|
print(bcolors.FAIL + "Aggiornamento non riuscito")
|
|
updated_rows[i]['ART_CODICE'] = [0, codice_articolo]
|
|
else:
|
|
print(bcolors.WARNING+'Articolo non trovato: '+codice_articolo, end =" -> ")
|
|
if insert_article(connection, codice_articolo, descrizione, descrizione2, um, codice_alternativo, tsa_codice, frn_codice):
|
|
print(bcolors.OKGREEN + 'Inserito')
|
|
updated_rows[i]['ART_CODICE'] = [1, codice_articolo]
|
|
else:
|
|
print(bcolors.FAIL + "Inserimento non riuscito")
|
|
updated_rows[i]['ART_CODICE'] = [0, codice_articolo]
|
|
continue
|
|
else:
|
|
continue
|
|
else:
|
|
print(bcolors.FAIL + 'Unità di misura non presente nel gestionale: ' + um)
|
|
updated_rows[i]['ART_CODICE'] = [0, codice_articolo]
|
|
updated_rows[i]['TUM_CODICE'] = [0, um]
|
|
continue
|
|
|
|
|
|
if codice_barre != '':
|
|
if not search_barcode(connection, codice_articolo, codice_barre):
|
|
print(bcolors.WARNING + 'Barcode non trovato: ' + codice_barre, end=" -> ")
|
|
if insert_barcode(connection, codice_articolo, codice_barre):
|
|
print(bcolors.OKGREEN + 'Inserito')
|
|
updated_rows[i]['CODICE_BARRE'] = [1, codice_barre]
|
|
else:
|
|
print(bcolors.FAIL + "Inserimento non riuscito")
|
|
updated_rows[i]['CODICE_BARRE'] = [0, codice_barre]
|
|
else:
|
|
print(bcolors.OKGREEN + 'Barcode già inserito: ' + codice_barre)
|
|
updated_rows[i]['CODICE_BARRE'] = [2, codice_barre]
|
|
|
|
if costo != '':
|
|
id_lsa = search_lsa(connection, codice_articolo, sc1)
|
|
if id_lsa:
|
|
print(bcolors.OKGREEN + 'Listino di acquisto trovato', end=" -> ")
|
|
if update_lsa(connection, id_lsa[0], costo):
|
|
print(bcolors.OKGREEN + 'Aggiornato')
|
|
updated_rows[i]['LSA_ID'] = [2, id_lsa[0]]
|
|
else:
|
|
print(bcolors.FAIL + "Aggiornamento non riuscito")
|
|
updated_rows[i]['LSA_ID'] = [0, id_lsa[0]]
|
|
else:
|
|
print(bcolors.WARNING + 'Listino di acquisto non trovato', end=" -> ")
|
|
id_lsa = insert_listino_acquisto(connection, codice_articolo, costo, sc1)
|
|
if id_lsa:
|
|
print(bcolors.OKGREEN + 'Inserito')
|
|
updated_rows[i]['LSA_ID'] = [1, id_lsa]
|
|
else:
|
|
print(bcolors.FAIL + "Inserimento non riuscito")
|
|
|
|
|
|
for key, value in ricarica.items():
|
|
id_lsv = search_lsv(connection, codice_articolo, value, key)
|
|
if id_lsv:
|
|
print(bcolors.OKGREEN + 'Listino di vendita trovato', end=" -> ")
|
|
if update_lsv(connection, id_lsv[0], costo, prezzo_pubblico, key, sc1, sc2, value):
|
|
print(bcolors.OKGREEN + 'Aggiornato')
|
|
updated_rows[i]['LSV_ID'][key] = [2, id_lsv[0]]
|
|
else:
|
|
print(bcolors.FAIL + "Aggiornamento non riuscito")
|
|
updated_rows[i]['LSV_ID'][key] = [0, id_lsv[0]]
|
|
else:
|
|
if value != '':
|
|
print(bcolors.WARNING + 'Listino di vendita non trovato', end=" -> ")
|
|
id_lsv = insert_listino_vendita(connection, codice_articolo, costo, prezzo_pubblico, key, sc1, sc2, value)
|
|
if id_lsv:
|
|
print(bcolors.OKGREEN + 'Inserito')
|
|
updated_rows[i]['LSV_ID'][key] = [1, id_lsv]
|
|
else:
|
|
print(bcolors.FAIL + "Inserimento non riuscito")
|
|
|
|
connection.commit()
|
|
|
|
i += 1
|
|
|
|
write_excel(updated_rows)
|
|
|
|
if connection :
|
|
connection.close()
|
|
|
|
|