Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/johnkommas/barcodereader

Barcode Generator From Entersoft SQL
https://github.com/johnkommas/barcodereader

barcode-generator bolt bot cryptography fastapi label-tags labels odbc pandas pillow price-tags pyodbc python slack slackbolt slackbot sqllite3 uvicorn

Last synced: about 1 month ago
JSON representation

Barcode Generator From Entersoft SQL

Awesome Lists containing this project

README

        

[![MIT licensed](https://img.shields.io/badge/license-MIT-brightgreen.svg?style=for-the-badge)](LICENSE)
[![GitHub code size in bytes](https://img.shields.io/github/repo-size/johnkommas/BarcodeReader?style=for-the-badge)](CODE_SIZE)
![GitHub repo file count](https://img.shields.io/github/directory-file-count/johnkommas/BarcodeReader?style=for-the-badge)
[![GitHub forks](https://img.shields.io/github/forks/johnkommas/BarcodeReader?style=for-the-badge)](FORKS)
[![GitHub issues](https://img.shields.io/github/issues/johnkommas/BarcodeReader?style=for-the-badge)](ISSUES)
[![GitHub last commit](https://img.shields.io/github/last-commit/johnkommas/BarcodeReader?style=for-the-badge)](COMMIT)
[![GitHub language count](https://img.shields.io/github/languages/count/johnkommas/BarcodeReader?style=for-the-badge)](LANGUAGES)
[![GitHub top language](https://img.shields.io/github/languages/top/johnkommas/BarcodeReader?style=for-the-badge)](lang)
[![Discord](https://img.shields.io/discord/583993547792056321?style=for-the-badge)](https://discord.gg/PJAT7XNshB)

---
![image](https://github.com/johnkommas/BarcodeReader/blob/master/my_app/SELF_LABEL/images/Mixture.png?raw=true)

---
# ΑΠΑΙΤΗΣΕΙΣ ΛΟΓΙΣΜΙΚΟΥ
- 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)

https://user-images.githubusercontent.com/54149422/181605383-0f466b64-9308-436e-ac37-308ff8467259.mov

---

# SVG BARCODE GENERATOR PREVIEW

![image](https://raw.githubusercontent.com/johnkommas/BarcodeReader/ea7afc5e2e9c56dd8a2c37febb5105a04b41447b/app/images/20002459.svg) ![image](https://raw.githubusercontent.com/johnkommas/BarcodeReader/c72c662eedf800ba3b9731d203a8afabda002323/app/images/3228020232028.svg) ![image](https://raw.githubusercontent.com/johnkommas/BarcodeReader/3a34d254a98831d397a91f2c7e67c14243be0165/app/images/5035766641223.svg) ![image](https://raw.githubusercontent.com/johnkommas/BarcodeReader/3a34d254a98831d397a91f2c7e67c14243be0165/app/images/8437013754460.svg) ![image](https://raw.githubusercontent.com/johnkommas/BarcodeReader/824bb79488e0692f624b7167ad3d324b56fef59a/app/images/5201314166795.svg)

---

# Δημιουργία Normal Price Tag

https://user-images.githubusercontent.com/54149422/181936319-cf0cc556-b86f-420f-8d40-eaf394274c17.mov

---

# Τελικό Αποτέλεσμα

https://user-images.githubusercontent.com/54149422/181936202-aa7af04f-7bd8-4a26-9ea6-188cc61de4ba.mov

---

# Προσφορές

https://user-images.githubusercontent.com/54149422/181995686-51b41d61-9832-4ea1-8023-a885fbdd7cd4.mov

---

# Ταμπελάκι Σήμανσης Τιμής - Προσφοράς - Ιδιότητας

> Οι διαφορετικές περιπτώσεις που εμφανίζονται συχνά είναι:

> Α. Το προϊόν να έχει μια σταθερή τιμή

> Β. Το προϊόν να έχει μια σταθερή τιμή και έκπτωση

> Γ. Το προϊόν να είναι σε προσφορά ορισμένου χρόνου και να έχει τοποθετηθεί έκπτωση επί της τιμής

> Δ. Το προϊόν να είναι σε προσφορά ορισμένου χρόνου και να έχει τοποθετηθεί απευθείας τιμή.

> Όλα τα παραπάνω σενάρια αναγνωρίζονται αυτόματα και δεν χρειάζεται από τον χρήστη να τις διαχωρίσει,
σε κάθε περίπτωση το ταμπελάκι διαμορφώνεται ως εξης:


```python
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")
- (επιλέξαμε Χρώμα: Πράσινο)

![0102](https://github.com/johnkommas/BarcodeReader/blob/master/my_app/SELF_LABEL/images/A.png?raw=true)

- ΚΑΝΟΝΙΚΕΣ ΤΙΜΕΣ / Είδος με Τιμή Λιανικής και Έκπτωση
- (επιλέξαμε Χρώμα: Πράσινο)

![0102](https://github.com/johnkommas/BarcodeReader/blob/master/my_app/SELF_LABEL/images/D.png?raw=true)

- ΠΡΟΣΦΟΡΕΣ / Προσφορά Ορισμένου Χρόνου με Έκπτωση
- (επιλέξαμε Χρώμα: Κόκκινο)

![0102](https://github.com/johnkommas/BarcodeReader/blob/master/my_app/SELF_LABEL/images/B.png?raw=true)

- ΠΡΟΣΦΟΡΕΣ / Προσφορά Ορισμένου Χρόνου με Απευθείας Ανάθεση Τιμής
- (επιλέξαμε Χρώμα: Κόκκινο)

![0102](https://github.com/johnkommas/BarcodeReader/blob/master/my_app/SELF_LABEL/images/C.png?raw=true)
> Για την καλύτερη προώθηση των προϊόντων σε προσφορά, προτείνετε το ταμπελάκι να συνδυάζεται με σήμανση, παρακάτω απεικονίζεται
ο Συνδυασμός Προσφοράς με Καρτελάκι Έκπτωσης.

![0101](https://github.com/johnkommas/BarcodeReader/blob/master/my_app/SELF_LABEL/images/Discount%20LATO_.png?raw=true)

---
> Ταμπελάκια με χρώμα:

![0101](https://github.com/johnkommas/BarcodeReader/blob/master/my_app/SELF_LABEL/images/A4_PAGE4.png?raw=true)
---
> Τα ταμπελάκια στο σύνολο τους κάθε φορά είναι αρκετά, για την εκτύπωση τους έχω διαμορφώσει δύο διαφορετικά μεγέθη

> Α. Μεγάλο Μέγεθος, εκτυπώνονται 8 ταμπελάκια σε κάθε σελίδα και το χαρτί δεν χωράει στην ετικετοθέση του ραφιού

> Β. Μικρό Μέγεθος, εκτυπώνονται 14 ταμπελάκια σε κάθε σελίδα και το χαρτί χωράει ακριβώς στην ετικετοθέση του ραφιού

```python
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)
```

### 8 Printable Labels per Page (A4) (SPECIAL OFFER)

![0102](https://github.com/johnkommas/BarcodeReader/blob/master/my_app/SELF_LABEL/images/A4_PAGE1.png?raw=true)

---

### 8 Printable Labels per Page (A4) (NORMAL PRICES WITH TAG)
![0102](https://github.com/johnkommas/BarcodeReader/blob/master/my_app/SELF_LABEL/images/A4_PAGE3.png?raw=true)

---

### 14 Printable Labels per Page (A4)

![0102](https://github.com/johnkommas/BarcodeReader/blob/master/my_app/SELF_LABEL/images/A4_PAGE2.png?raw=true)

---
### Εκτύπωση
> Το τελικό στάδιο είναι η εκτύπωση, σε αυτό το σημείο έχουμε στη διάθεση μας δύο επιλογές:

> Α. Άμεση Εκτύπωση, η εκτύπωση ξεκινά άμεσα

> B. Χωρίς Εκτύπωση, το πρόγραμμα εμφανίζει τον φάκελο με τις σελίδες προς εκτύπωση

```python
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}")
```
---
### Requirements
- 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

---

### Python Version
- Version: 3.9

---

### Contributors

- Ioannis E. Kommas

#### Thank you to everyone who has contributed. We appreciate you!