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