- Entersoft Expert / Business Suite (installed)
- Microsoft SQL Server Administrator (credentials requirement)
- Company Network Administrator (credentials required)
- D-Net Mobile (installed)
- Slack App (installed, credential requirements)
- Βάσης Δεδομένων (Entersoft SQL SERVER DB)
- Εικονικού Ιδιωτικού Δικτύου (VPN - L2TP with IPSec)
database.mov
simple.mov
final.mov
special_offers.mov
Οι διαφορετικές περιπτώσεις που εμφανίζονται συχνά είναι:
Α. Το προϊόν να έχει μια σταθερή τιμή
Β. Το προϊόν να έχει μια σταθερή τιμή και έκπτωση
Γ. Το προϊόν να είναι σε προσφορά ορισμένου χρόνου και να έχει τοποθετηθεί έκπτωση επί της τιμής
Δ. Το προϊόν να είναι σε προσφορά ορισμένου χρόνου και να έχει τοποθετηθεί απευθείας τιμή.
Όλα τα παραπάνω σενάρια αναγνωρίζονται αυτόματα και δεν χρειάζεται από τον χρήστη να τις διαχωρίσει, σε κάθε περίπτωση το ταμπελάκι διαμορφώνεται ως εξης:
price = (df['ΝΕΑ ΤΙΜΗ'].values[0] if df['ΕΚΠΤΩΣΗ'].values[0] <= 0 else round(df[init_price].values[0] * (100 - df['ΕΚΠΤΩΣΗ'].values[0]) / 100, 2))
- ΚΑΝΟΝΙΚΕΣ ΤΙΜΕΣ / Είδος με Τιμή Λιανικής
- (επιλέξαμε Τag "Best Choice")
- (επιλέξαμε Χρώμα: Πράσινο)
- ΚΑΝΟΝΙΚΕΣ ΤΙΜΕΣ / Είδος με Τιμή Λιανικής και Έκπτωση
- (επιλέξαμε Χρώμα: Πράσινο)
- ΠΡΟΣΦΟΡΕΣ / Προσφορά Ορισμένου Χρόνου με Έκπτωση
- (επιλέξαμε Χρώμα: Κόκκινο)
- ΠΡΟΣΦΟΡΕΣ / Προσφορά Ορισμένου Χρόνου με Απευθείας Ανάθεση Τιμής
- (επιλέξαμε Χρώμα: Κόκκινο)
Για την καλύτερη προώθηση των προϊόντων σε προσφορά, προτείνετε το ταμπελάκι να συνδυάζεται με σήμανση, παρακάτω απεικονίζεται ο Συνδυασμός Προσφοράς με Καρτελάκι Έκπτωσης.
Ταμπελάκια με χρώμα:
Τα ταμπελάκια στο σύνολο τους κάθε φορά είναι αρκετά, για την εκτύπωση τους έχω διαμορφώσει δύο διαφορετικά μεγέθη
Α. Μεγάλο Μέγεθος, εκτυπώνονται 8 ταμπελάκια σε κάθε σελίδα και το χαρτί δεν χωράει στην ετικετοθέση του ραφιού
Β. Μικρό Μέγεθος, εκτυπώνονται 14 ταμπελάκια σε κάθε σελίδα και το χαρτί χωράει ακριβώς στην ετικετοθέση του ραφιού
def a4_page_fit_images(labels, ouptut_name, big=False):
path = pathlib.Path(__file__).parent.resolve()
if big:
image_name = "A4_Labels_Saloon_big.png"
# Συντεταγμένες για κάθε εικόνα
x = [163, 1754]
y = [56, 653, 1250, 1847]
c = list(itertools.product(x, y))
size = (1591, 597)
else:
image_name = "A4_Labels_Saloon.png"
# Συντεταγμένες για κάθε εικόνα
x = [49, 1240]
y = [158, 604, 1050, 1496, 1942, 2388, 2834]
c = list(itertools.product(x, y))
size = (1191, 446)
my_image = Image.open(f'{path}/images/{image_name}')
for name, place in tqdm(zip(labels, c), "A4 Page Maker"):
logger.info(f"Fitting IMAGE: {name} to A4 in (X, Y): {place}")
overlay = Image.open(f"{path}/merged_images/{name}")
overlay = overlay.resize(size, Image.ANTIALIAS)
my_image.paste(overlay, place, mask=overlay)
file_out = f"{path}/to_print_labels/{ouptut_name}"
my_image.save(file_out)
Το τελικό στάδιο είναι η εκτύπωση, σε αυτό το σημείο έχουμε στη διάθεση μας δύο επιλογές:
Α. Άμεση Εκτύπωση, η εκτύπωση ξεκινά άμεσα
B. Χωρίς Εκτύπωση, το πρόγραμμα εμφανίζει τον φάκελο με τις σελίδες προς εκτύπωση
def export_to_printer(printer_name):
path = pathlib.Path(__file__).parent.resolve()
if printer_name == "0":
logger.info("No Print Asked, Opening Folder Instead")
subprocess.call(['open', f"{path}/to_print_labels"])
else:
list_of_names = os.listdir(f"{path}/to_print_labels")
for file_name in list_of_names:
file = f"{path}/to_print_labels/{file_name}"
os.system(f"lpr -P {printer_name} {file}")
- crefi==2.0.9
- pip==22.2.1
- python-barcode==0.14.0
- python-Levenshtein==0.12.2
- pyxattr==0.7.2
- setuptools==63.2.0
- wheel==0.37.1
- pandas~=1.4.3
- uvicorn~=0.18.2
- fastapi~=0.79.0
- pyodbc~=4.0.34
- Pillow~=9.2.0
- CairoSVG~=2.5.2
- tqdm~=4.64.0
- cryptography~=37.0.4
- Version: 3.9
- Ioannis E. Kommas