first commit
This commit is contained in:
commit
55f2888951
|
@ -0,0 +1,30 @@
|
||||||
|
# Игнорировать файлы с расширением .log и .tmp
|
||||||
|
*.log
|
||||||
|
*.tmp
|
||||||
|
|
||||||
|
# Игнорировать директорию с именем temp
|
||||||
|
temp/
|
||||||
|
.ruff_cache/
|
||||||
|
|
||||||
|
# Игнорировать файл config.ini
|
||||||
|
config.ini
|
||||||
|
|
||||||
|
# Игнорировать все файлы в директории temp_folder
|
||||||
|
temp_folder/*
|
||||||
|
|
||||||
|
# Игнорировать все файлы и поддиректории в директории logs
|
||||||
|
logs/*
|
||||||
|
.venv/
|
||||||
|
keyroz.txt
|
||||||
|
.env
|
||||||
|
creds_service_acc.json
|
||||||
|
test.py
|
||||||
|
test1.py
|
||||||
|
notfiles.xlsx
|
||||||
|
__pycache__
|
||||||
|
output.json
|
||||||
|
*.zip
|
||||||
|
*.db
|
||||||
|
# Игнорировать все файлы и директории, кроме файла important.txt и директории docs
|
||||||
|
!/requirements.txt
|
||||||
|
!/docs/
|
|
@ -0,0 +1,9 @@
|
||||||
|
# Добавление с коментариев в товар вес продуктов!
|
||||||
|
|
||||||
|
* :white_check_mark: Получаем у какого товара есть вес это в коментариях
|
||||||
|
* :white_check_mark: Получаем получаем товар в сделке
|
||||||
|
* :white_check_mark: Собираем в товары товар с Весом из коментариев!
|
||||||
|
|
||||||
|
> Что нужно не забыть и нет в проекте!
|
||||||
|
> файл со всеми паролями и доступами
|
||||||
|
|
|
@ -0,0 +1,18 @@
|
||||||
|
aiohttp==3.8.5
|
||||||
|
aiosignal==1.3.1
|
||||||
|
asttokens==2.4.0
|
||||||
|
async-timeout==4.0.3
|
||||||
|
attrs==23.1.0
|
||||||
|
beartype==0.16.2
|
||||||
|
charset-normalizer==3.3.0
|
||||||
|
fast-bitrix24==1.5.16
|
||||||
|
frozenlist==1.4.0
|
||||||
|
icontract==2.6.4
|
||||||
|
idna==3.4
|
||||||
|
more-itertools==10.1.0
|
||||||
|
multidict==6.0.4
|
||||||
|
python-dotenv==1.0.0
|
||||||
|
six==1.16.0
|
||||||
|
tqdm==4.66.1
|
||||||
|
typing_extensions==4.8.0
|
||||||
|
yarl==1.9.2
|
|
@ -0,0 +1,100 @@
|
||||||
|
from fast_bitrix24 import Bitrix
|
||||||
|
import re
|
||||||
|
from difflib import SequenceMatcher
|
||||||
|
from dotenv import load_dotenv
|
||||||
|
import os
|
||||||
|
load_dotenv()
|
||||||
|
|
||||||
|
|
||||||
|
B24 = os.getenv('BITRIX')
|
||||||
|
|
||||||
|
# замените на ваш вебхук для доступа к Bitrix24
|
||||||
|
webhook = B24
|
||||||
|
b = Bitrix(webhook)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
idss = '35578'
|
||||||
|
deals = b.get_all(
|
||||||
|
'crm.deal.list',
|
||||||
|
params={
|
||||||
|
'select': ['COMMENTS'],
|
||||||
|
'filter': {'ID': idss}
|
||||||
|
})
|
||||||
|
|
||||||
|
# print(deals)
|
||||||
|
for d in deals:
|
||||||
|
com = d['COMMENTS']
|
||||||
|
# print(com)
|
||||||
|
pattern = re.compile(r'Product - (.*?)\s*Additional info:', re.DOTALL)
|
||||||
|
pattern_kg = re.compile(r'\[\*\]кг: (.*?)\[/list\]', re.DOTALL)
|
||||||
|
|
||||||
|
# Используем findall для поиска всех совпадений
|
||||||
|
matches_product = pattern.findall(com)
|
||||||
|
matches_kg = pattern_kg.findall(com)
|
||||||
|
|
||||||
|
# Объединяем совпадения в одну строку
|
||||||
|
result = [f"{product} кг: {kg}" for product, kg in zip(matches_product, matches_kg)]
|
||||||
|
|
||||||
|
# Выводим результат
|
||||||
|
tovar_name = []
|
||||||
|
for item in result:
|
||||||
|
# print(item)
|
||||||
|
names = item
|
||||||
|
tovar_name.append(names)
|
||||||
|
print(tovar_name)
|
||||||
|
|
||||||
|
tov = []
|
||||||
|
tovar = b.get_all('crm.deal.productrows.get', params= {"ID": idss} )
|
||||||
|
# print(tovar)
|
||||||
|
for t in tovar:
|
||||||
|
product_id = t['PRODUCT_ID']
|
||||||
|
product_name = t['PRODUCT_NAME']
|
||||||
|
price = t['PRICE']
|
||||||
|
quan = t['QUANTITY']
|
||||||
|
data = {'PRODUCT_ID': product_id, 'PRODUCT_NAME': product_name,
|
||||||
|
'PRICE': price, 'QUANTITY': quan}
|
||||||
|
tov.append(data)
|
||||||
|
# print(tov)
|
||||||
|
|
||||||
|
def similar(a, b):
|
||||||
|
return SequenceMatcher(None, a, b).ratio()
|
||||||
|
|
||||||
|
threshold = 0.6 # Задайте порог схожести по вашему усмотрению
|
||||||
|
|
||||||
|
similar_items = []
|
||||||
|
|
||||||
|
for product_info in tov:
|
||||||
|
found_similar = False
|
||||||
|
for product_name in tovar_name:
|
||||||
|
if similar(product_info['PRODUCT_NAME'], product_name) > threshold:
|
||||||
|
similar_items.append({'PRODUCT_ID': product_info['PRODUCT_ID'],
|
||||||
|
'PRODUCT_NAME': f"{product_info['PRODUCT_NAME']} {product_name}",
|
||||||
|
'PRICE': product_info['PRICE'],
|
||||||
|
'QUANTITY': product_info['QUANTITY']})
|
||||||
|
# Удалить найденный элемент из product_names
|
||||||
|
tovar_name.remove(product_name)
|
||||||
|
found_similar = True
|
||||||
|
break
|
||||||
|
|
||||||
|
if not found_similar:
|
||||||
|
similar_items.append(product_info)
|
||||||
|
|
||||||
|
|
||||||
|
tovar_up = b.call(
|
||||||
|
"crm.deal.productrows.set",
|
||||||
|
|
||||||
|
{
|
||||||
|
"ID": idss,
|
||||||
|
'rows':similar_items
|
||||||
|
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue