https://github.com/press-magvoda-ru/a1/blob/mainOfdyt/splitingOfMandV.py
(проект в стадии интенсивного прихорашивания)
две отдельные A и B коммунальные организации изготовив наборы pdf файлов квитанций видаА и видаB соответсвенно печатали у печатника P и "рассылали" своим потребителям посредстом службы доставки S
программа по возможности совмещает на один лист страницы квитанций(полученые в виде как раньше получал печатник P) от A и B адрессованные одному потребителю и полученные наборы отправляет печатнику P в печать для дальнейшей "разноски" по потребителям доставщиком S
всё элементарно при игнорировании нюансов существующих реализаций :
на входе 2 дерева файлов с готовыми на печать пачками квитанций в pdf виде
пачки и структура окаменевшее унаследованное
на выходе - совмещение квитанций относящихся(«по возможности») к одному получателю на один лист(на обе стороны) (входные квитанции на страницах - если потребуется можно сжать(отдельные новые приседания) что бы совмещать от большего количества источников на один лист(upd: в одну «связку» одного-пары-тройки-листов)
переупорядочивание(основанное на порядке в пачках одного из деревьев) пачек для группировки и уменьшения «трения» осуществляемого физическими доставщиками (в пока «это не особо нужно» - переставить дома что бы порядок их обхода совпадал бы с их коротким физ обходом - коммивоеджер на минималках)- ща просто дома по возрастанию(цифр) их адреса на улице и квартир в домах - привычный доставщикам
ну и недостатистика - за всю эту экономию кто типо несёт издержки
как то так
зы:пет-проект актуализивался по мере перехода на безбумажные(электронные) квитанции - ибо стали рубить издержки на доставщиков имхо
Файл:~2distNxt.py :
import os, sys
p=os.path.abspath(sys.argv[0])
p=os.path.dirname(p)
a=list(os.walk(p))[0][1]
print(a)
b=f'{int(max(a))+1:02}'
os.makedirs(dst:=p+'\\'+b)
lst=open('lst','r').read().splitlines()
for fl in lst:
f=f'copy "{fl}" "{dst}"'
print(f,':')
os.system(f)
from rezname import rezname
import os
pyuic5 guiForPairing.ui -o guiForPairing.py
~2distNxt.py to next
os.system(f'(tm&&pyinstaller splitingOfMandV.py -n splitingOfMandV{rezname()} -c -F -i logo.ico&&tm)>o{rezname()}')
- pymupdf для fitz
- PyQt5 для гуя
- openpyxl
- pandas - саммый децл для кой какой статистики
- собирать под 3.10-3.12(3.13 ...)
- ...
зы - это набросок