From ff2b9a07b1e4bae8697539500f97483361259dab Mon Sep 17 00:00:00 2001 From: 7nimor <7nimor@gmail.com> Date: Tue, 20 Jan 2026 12:15:47 +0330 Subject: [PATCH] update --- bot_eata.py | 152 +++++++++++++++++++++++++++++++++++++++++++++++++- panel/urls.py | 3 +- 2 files changed, 153 insertions(+), 2 deletions(-) diff --git a/bot_eata.py b/bot_eata.py index 07c6627..e8ef46e 100644 --- a/bot_eata.py +++ b/bot_eata.py @@ -5,12 +5,14 @@ import requests from django.db.models import Sum, Q, F from django.http import HttpResponse +from authentication.models import SystemUserProfile from general_urls import base_url_for_sms_report from helper_eata import token, chat_id, chat_id_mali from panel.ProvinceOperator.serializers import TotalWageInformationSerializer from panel.helper_excel import shamsi_date, to_locale_str from panel.models import PoultryHatching, ProvinceKillRequest, KillHousePercentage, TotalWageInformation, \ InternalTransaction, TokenEitaaForEachVet, VetFarm, KillHouseRequest, PoultryRequest, Poultry +from ticket.models import TicketSupport, MessageSupport def format_datetime_to_shamsi(input_date): @@ -1852,4 +1854,152 @@ def send_single_bar_to_eitaa(kill_house_request): response = requests.post(url, data=data, verify=False) except Exception as e: - pass \ No newline at end of file + pass + + +def send_all_bar_to_eitaa_ticket(request): + # url = f'https://eitaayar.ir/api/{token}/sendMessage' + date = datetime.now().date() - timedelta(days=1) + + all_kill_house_requests = KillHouseRequest.objects.filter( + trash=False, + kill_request__recive_date__date__gte=date + ).select_related( + 'province_request__poultry_request__poultry__user__city', + 'kill_request__kill_house__kill_house_operator__user', + 'kill_request__kill_house__system_address__city', + 'add_car__driver' + ) + + poultry_ids = all_kill_house_requests.values_list( + 'province_request__poultry_request__poultry__id', + flat=True + ).distinct() + + vet_farms = VetFarm.objects.filter( + trash=False, + poultry__id__in=poultry_ids + ).select_related('vet__user', 'poultry') + + vet_to_poultries = {} + for vet_farm in vet_farms: + vet_mobile = vet_farm.vet.user.mobile + if vet_mobile not in vet_to_poultries: + vet_to_poultries[vet_mobile] = [] + vet_to_poultries[vet_mobile].append(vet_farm.poultry.id) + + if not vet_to_poultries: + return + + for vet_mobile, poultry_list in vet_to_poultries.items(): + chat_id_eitaa = TokenEitaaForEachVet.objects.filter(vet_mobile=vet_mobile).first() + + if not chat_id_eitaa: + continue + + vet_kill_requests = all_kill_house_requests.filter( + province_request__poultry_request__poultry__id__in=poultry_list + ) + + if not vet_kill_requests.exists(): + continue + + date_time_jalali = format_datetime_to_shamsi(date) + date_shamsi = shamsi_date(date).replace('-', '_') + + base_message = '🗓📢❗ سامانه رصدیار، زنجیره تامین،تولید و توزیع مرغ گوشتی📢❗' + base_message += f'***' + base_message += f'❗{date_time_jalali}❗' + base_message += f'***' + base_message += f' #گزارش_بارها #{date_shamsi}' + base_message += f'***' + base_message += f'تعداد کل بارها: {vet_kill_requests.count()}' + base_message += f'***' + base_message += f'➖➖➖➖➖➖➖➖➖➖' + base_message += '***' + + messages = [] + current_message = base_message + m = 1 + + for entry in vet_kill_requests: + try: + main_quantity = entry.accepted_real_quantity + real_weight = entry.accepted_real_weight + poultry_name = entry.province_request.poultry_request.poultry.unit_name + poultry_mobile = entry.province_request.poultry_request.poultry.user.mobile + + city = entry.province_request.poultry_request.poultry.user.city.name + buyer = entry.kill_request.kill_house.name + buyer_city = entry.kill_request.kill_house.system_address.city.name + buyer_mobile = entry.kill_request.kill_house.kill_house_operator.user.mobile + weight = entry.province_request.poultry_request.Index_weight + order_code = entry.bar_code + recive_date = entry.kill_request.recive_date + recive_date_shamsi = shamsi_date(recive_date) if recive_date else '' + main_quantity = "{:,}".format(int(main_quantity)) + real_weight = "{:,}".format(int(real_weight)) + + driver_name = '-' + driver_mobile = '-' + driver_pelak = '-' + driver_health_code = '-' + if entry.add_car and entry.add_car.driver: + driver_name = entry.add_car.driver.driver_name or '-' + driver_mobile = entry.add_car.driver.driver_mobile or '-' + driver_pelak = entry.add_car.driver.pelak or '-' + driver_health_code = entry.add_car.driver.health_code or '-' + + if entry.province_request.poultry_request.direct_buying == True: + province_type = 'خرید مستقیم' + elif entry.province_request.poultry_request.export == True: + province_type = 'فروش به خارج استان' + else: + province_type = 'اتحادیه' + + driver_info = f' - راننده: {driver_name} ({driver_mobile}) پلاک: {driver_pelak} کد حمل: {driver_health_code}' + + new_message_part = f'{m}. کد بار: {order_code} - حجم بار: {main_quantity} قطعه - وزن بار: {real_weight} - میانگین وزن: {weight} - مرغدار: {poultry_name} ({poultry_mobile}) - شهر: {city} - نوع فروش: {province_type} - خریدار: {buyer} ({buyer_mobile}) - شهر خریدار: {buyer_city}{driver_info} - تاریخ بار: ({recive_date_shamsi}) *** ***' + m += 1 + + if len(current_message) + len(new_message_part) > 4000: + messages.append(current_message) + current_message = base_message + + current_message += new_message_part + except Exception as e: + continue + + if current_message and current_message != base_message: + messages.append(current_message) + + chat_id_eitaa_token = chat_id_eitaa.token + # for message in messages: + # try: + user = SystemUserProfile.objects.filter(trash=False, mobile=chat_id_eitaa.vet_mobile).last() + new_ticket = TicketSupport( + user=user, + title="گزارش بارها", + status='open', + read_only=True, + type_ticket='single', + parent=None, + last_message='Admin', + ) + new_ticket.save() + new_ticket.to_user.add(user) + msg = MessageSupport( + ticket=new_ticket, + message=messages, + created_by=user, + sender='Admin' + ) + msg.save() + # data = { + # 'chat_id': chat_id_eitaa_token, + # 'text': message, + # } + # response = requests.post(url, data=data, verify=False) + + + return HttpResponse('پیام‌ها ارسال شد.') \ No newline at end of file diff --git a/panel/urls.py b/panel/urls.py index b541f91..5ccacf8 100644 --- a/panel/urls.py +++ b/panel/urls.py @@ -113,7 +113,7 @@ from .poultry.views import Cancel_Poultry_Exchange_request, Check_Poultry_Auctio archive_poultry_hatching_with_archive_percent from bot_eata import bot_eitaa_for_bar, bot_eitaa_free_bar, bot_eitaa_for_hatching_gt_50, \ bot_eitaa_for_province_kill_request, daily_manual_transaction_for_eata, transaction_for_eata_new, \ - daily_report_for_each_vet_farm_manual,send_all_bar_to_eitaa + daily_report_for_each_vet_farm_manual, send_all_bar_to_eitaa, send_all_bar_to_eitaa_ticket from django.conf import settings from django.conf.urls.static import static @@ -1392,6 +1392,7 @@ urlpatterns = [ path('fetch_evacuation_details_for_unknown_hatchings/', fetch_evacuation_details_for_unknown_hatchings), path('kdp/', kill_house_debt_report_pdf), path('send_kill_house_debt_report_pdf_sms_manual/', send_kill_house_debt_report_pdf_sms_manual), + path('send_all_bar_to_eitaa_ticket/', send_all_bar_to_eitaa_ticket), ] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)