2005 lines
95 KiB
Python
2005 lines
95 KiB
Python
from datetime import datetime, timedelta
|
||
|
||
import jdatetime
|
||
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):
|
||
if isinstance(input_date, datetime):
|
||
input_date = input_date.date()
|
||
|
||
shamsi_date = jdatetime.date.fromgregorian(date=input_date)
|
||
shamsi_date_str = shamsi_date.strftime('%Y/%m/%d')
|
||
|
||
weekday_str = input_date.strftime('%A')
|
||
weekdays = {
|
||
'Saturday': 'شنبه',
|
||
'Sunday': 'یکشنبه',
|
||
'Monday': 'دوشنبه',
|
||
'Tuesday': 'سهشنبه',
|
||
'Wednesday': 'چهارشنبه',
|
||
'Thursday': 'پنجشنبه',
|
||
'Friday': 'جمعه'
|
||
}
|
||
weekday_str_fa = weekdays.get(weekday_str, '')
|
||
|
||
formatted_date = f"گزارش {weekday_str_fa} به تاریخ {shamsi_date_str}"
|
||
|
||
return formatted_date
|
||
|
||
|
||
def bot_eitaa_for_bar(request):
|
||
url = f'https://eitaayar.ir/api/{token}/sendMessage'
|
||
date = datetime.now().date()
|
||
response = requests.get(
|
||
f'https://{base_url_for_sms_report}backend.rasadyaar.ir/province_request_letter/?date={date}')
|
||
date_time_jalali = format_datetime_to_shamsi(date)
|
||
|
||
if response.status_code == 200:
|
||
data = response.json()
|
||
|
||
allocation = data.get('allocation', [])
|
||
kill_house_num = 1
|
||
messages_sent = 0
|
||
|
||
for entry in allocation:
|
||
date_shamsi = shamsi_date(date).replace('-', '_')
|
||
base_message = '🗓📢❗ سامانه رصدیار، زنجیره تامین،تولید و توزیع مرغ گوشتی📢❗\n'
|
||
base_message += f'❗{date_time_jalali}❗\n'
|
||
base_message += f' #گزارش_بار_داخل_استان #{date_shamsi}\n\n'
|
||
total_quantity = entry.get('total_quantity')
|
||
if total_quantity and int(total_quantity) > 0:
|
||
len_bar = entry.get('province_kill_request')
|
||
killer = 'کشتارگاه' if entry.get('killer') == False else 'کشتارکن'
|
||
name = entry.get("name").replace(' ', '_')
|
||
mobile = entry.get("kill_house_operator").get("user").get("mobile")
|
||
total_quantity = "{:,}".format(int(total_quantity))
|
||
|
||
current_message = base_message
|
||
current_message += f'🟢 {killer} #{name} ({mobile})\n'
|
||
current_message += f'تعداد کل بار: {len(len_bar)}\n'
|
||
current_message += f'حجم کل بار: {total_quantity}\n'
|
||
current_message += f'--------------------------------\n'
|
||
|
||
m = 1
|
||
for request1 in entry.get('province_kill_request', []):
|
||
poultry = request1.get('poultry', 'نامشخص')
|
||
poultry_mobile = request1.get('poultry_mobile', 'نامشخص')
|
||
quantity = request1.get('quantity', 0)
|
||
average_weight = request1.get('Index_weight', 'نامشخص')
|
||
weight = request1.get('weight', 'نامشخص')
|
||
car_type = request1.get('car_type', 'نامشخص')
|
||
driver_name = request1.get('driver_name', 'نامشخص')
|
||
traffic_code = request1.get('traffic_code', 'نامشخص')
|
||
pelak = request1.get('pelak', 'نامشخص')
|
||
quantity = "{:,}".format(int(quantity))
|
||
weight = "{:,}".format(int(weight))
|
||
|
||
current_message += f'\n🔸{m}-مرغدار: {poultry} ({poultry_mobile})\n'
|
||
current_message += f'میانگین وزن بار: {average_weight}\n'
|
||
current_message += f'حجم بار: {quantity}\n'
|
||
current_message += f'وزن بار: {weight}\n'
|
||
current_message += f'نوع ماشین: {car_type}\n'
|
||
current_message += f'نام راننده: {driver_name}\n'
|
||
current_message += f'کد حمل و نقل: {traffic_code}\n'
|
||
current_message += f'پلاک: {pelak}\n'
|
||
current_message += '-' * 30 + '\n'
|
||
m += 1
|
||
|
||
data = {
|
||
'chat_id': chat_id,
|
||
'text': current_message,
|
||
}
|
||
response = requests.post(url, data=data, verify=False)
|
||
if response.status_code == 200:
|
||
messages_sent += 1
|
||
kill_house_num += 1
|
||
|
||
return HttpResponse(f'{messages_sent} پیام با موفقیت ارسال شد.')
|
||
|
||
return HttpResponse('Error fetching data', status=500)
|
||
|
||
|
||
def bot_eitaa_free_bar(request):
|
||
url = f'https://eitaayar.ir/api/{token}/sendMessage'
|
||
date = datetime.now().date()
|
||
response = requests.get(
|
||
f'https://{base_url_for_sms_report}backend.rasadyar.com/province_request_letter/?date={date}')
|
||
date_time_jalali = format_datetime_to_shamsi(date)
|
||
if response.status_code == 200:
|
||
data = response.json()
|
||
date_shamsi = shamsi_date(date).replace('-', '_')
|
||
out_province = data.get('out_province', [])
|
||
base_message = '🗓📢❗ سامانه رصدیار، زنجیره تامین،تولید و توزیع مرغ گوشتی📢❗\n'
|
||
base_message += f'❗{date_time_jalali}❗\n'
|
||
base_message += f' #گزارش_خارج_استان #{date_shamsi}\n\n'
|
||
base_message += f'تعداد کل سفارشات: {len(out_province)}\n'
|
||
base_message += f'➖➖➖➖➖➖➖➖➖➖\n'
|
||
|
||
messages = []
|
||
current_message = base_message
|
||
m = 1
|
||
for entry in out_province:
|
||
quantity = entry['quantity']
|
||
poultry_name = entry['poultry']['user']['fullname']
|
||
poultry_mobile = entry['poultry']['user']['mobile']
|
||
buyer_fullname = entry['out_province_poultry_request_buyer']['fullname']
|
||
buyer_mobile = entry['out_province_poultry_request_buyer']['mobile']
|
||
buyer_city = entry['out_province_poultry_request_buyer']['city']
|
||
city = entry['poultry']['user']['city']['name']
|
||
weight = entry.get('Index_weight', 'نامشخص')
|
||
weight_all = quantity * weight
|
||
quantity = "{:,}".format(entry['quantity'])
|
||
weight_all = "{:,}".format(int(weight_all))
|
||
|
||
new_message_part = f'{m}:\n'
|
||
new_message_part += f"🟢 مرغدار : {poultry_name} ({poultry_mobile})\n"
|
||
new_message_part += f"شهر: {city}\n"
|
||
new_message_part += f"🔸 خریدار : {buyer_fullname} ({buyer_mobile})\n"
|
||
new_message_part += f"شهر: {buyer_city}\n"
|
||
new_message_part += f"میانگین وزن : {weight}\n"
|
||
new_message_part += f" تعداد : {quantity}\n"
|
||
new_message_part += f" وزن تقریبی : {weight_all}\n"
|
||
new_message_part += '\n➖➖➖➖➖➖➖➖➖➖\n'
|
||
m += 1
|
||
if len(current_message) + len(new_message_part) > 4000:
|
||
messages.append(current_message)
|
||
current_message = base_message
|
||
|
||
current_message += new_message_part
|
||
|
||
if current_message and current_message != base_message:
|
||
messages.append(current_message)
|
||
|
||
for message in messages:
|
||
data = {
|
||
'chat_id': chat_id,
|
||
'text': message,
|
||
}
|
||
response = requests.post(url, data=data, verify=False)
|
||
|
||
return HttpResponse(f'{len(messages)} پیام ارسال شد.')
|
||
|
||
|
||
def bot_eitaa_for_hatching_gt_50(request):
|
||
url = f'https://eitaayar.ir/api/{token}/sendMessage'
|
||
date = datetime.now().date()
|
||
date_time_jalali = format_datetime_to_shamsi(date)
|
||
date_shamsi = shamsi_date(date).replace('-', '_')
|
||
base_message = '🗓📢❗ سامانه رصدیار، زنجیره تامین،تولید و توزیع مرغ گوشتی📢❗\n'
|
||
base_message += f'❗{date_time_jalali}❗\n'
|
||
base_message += f' #گزارش_فارم_بالای_50_روز #{date_shamsi}\n\n'
|
||
base_message += f'➖➖➖➖➖➖➖➖➖➖\n'
|
||
|
||
poultry_hatching = PoultryHatching.objects.filter(trash=False, chicken_age__gte=50)
|
||
m = 1
|
||
for hatching in poultry_hatching:
|
||
message = f'{m}-مرغدار {hatching.poultry.unit_name}\n' \
|
||
f''
|
||
m += 1
|
||
base_message += message
|
||
data = {
|
||
'chat_id': chat_id,
|
||
'text': base_message,
|
||
}
|
||
response = requests.post(url, data=data, verify=False)
|
||
return HttpResponse(f'{len(base_message)} پیام ارسال شد.')
|
||
|
||
|
||
def bot_eitaa_for_province_kill_request(request):
|
||
if base_url_for_sms_report in ('ma', 'test'):
|
||
url = f'https://eitaayar.ir/api/{token}/sendMessage'
|
||
date = datetime.now().date()
|
||
province_kill_requests = ProvinceKillRequest.objects.filter(trash=False, state__in=('accepted', 'pending'),
|
||
return_to_province=False,
|
||
kill_request__recive_date__date=date) \
|
||
.order_by('-kill_request__recive_date').only('main_quantity', 'quantity',
|
||
'province_request__poultry_request__Index_weight',
|
||
'main_quantity', 'province_request__poultry_request__export',
|
||
'province_request__poultry_request__poultry__unit_name',
|
||
'province_request__city_request_Poultry__poultry_request__poultry__user__mobile',
|
||
'province_request__city_request_Poultry__poultry_request__poultry__user__city__name',
|
||
'kill_request__kill_house__name',
|
||
'kill_request__kill_house__kill_house_operator__user__mobile',
|
||
'province_request__poultry_request__direct_buying',
|
||
'province_request__poultry_request__order_code',
|
||
'kill_request__kill_house__system_address__city__name')
|
||
date_time_jalali = format_datetime_to_shamsi(date)
|
||
|
||
date_shamsi = shamsi_date(date).replace('-', '_')
|
||
base_message = '🗓📢❗ سامانه رصدیار، زنجیره تامین،تولید و توزیع مرغ گوشتی📢❗\n'
|
||
base_message += f'❗{date_time_jalali}❗\n'
|
||
base_message += f' #گزارش_تخصیصات #{date_shamsi}\n\n'
|
||
base_message += f'تعداد کل تخصیصات: {len(province_kill_requests)}\n'
|
||
base_message += f'➖➖➖➖➖➖➖➖➖➖\n'
|
||
|
||
messages = []
|
||
current_message = base_message
|
||
m = 1
|
||
for entry in province_kill_requests:
|
||
main_quantity = entry.main_quantity
|
||
remain_quantity = entry.quantity if entry.return_to_province == False else 0
|
||
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.province_request.poultry_request.order_code
|
||
weight_all = remain_quantity * weight
|
||
main_quantity = "{:,}".format(main_quantity)
|
||
remain_quantity = "{:,}".format(remain_quantity)
|
||
weight_all = "{:,}".format(int(weight_all))
|
||
|
||
if entry.province_request.poultry_request.direct_buying == True:
|
||
province_type = 'خرید مستقیم'
|
||
elif entry.province_request.poultry_request.export == True:
|
||
province_type = 'فروش به خارج استان'
|
||
else:
|
||
province_type = 'اتحادیه'
|
||
new_message_part = f'{m}:\n'
|
||
new_message_part += f"🟢 مرغدار : {poultry_name} ({poultry_mobile})\n"
|
||
new_message_part += f"شهر: {city}\n"
|
||
new_message_part += f"کد سفارش: {order_code}\n"
|
||
new_message_part += f"نوع فروش: {province_type}\n"
|
||
new_message_part += f" تعداد تخصیصی :{main_quantity}\n"
|
||
new_message_part += f"مانده قابل تخصیص :{remain_quantity}\n"
|
||
new_message_part += f"میانگین وزن : {weight}\n"
|
||
new_message_part += f"وزن تقریبی :{weight_all}\n"
|
||
new_message_part += f"\n"
|
||
new_message_part += f"🔴🔴خریدار : {buyer} ({buyer_mobile})\n"
|
||
new_message_part += f"شهر خریدار: {buyer_city}\n"
|
||
new_message_part += '\n➖➖➖➖➖➖➖➖➖➖\n'
|
||
m += 1
|
||
if len(current_message) + len(new_message_part) > 4000:
|
||
messages.append(current_message)
|
||
current_message = base_message
|
||
|
||
current_message += new_message_part
|
||
|
||
if current_message and current_message != base_message:
|
||
messages.append(current_message)
|
||
|
||
for message in messages:
|
||
data = {
|
||
'chat_id': chat_id,
|
||
'text': message,
|
||
}
|
||
response = requests.post(url, data=data, verify=False)
|
||
|
||
return HttpResponse(f'{len(messages)} پیام ارسال شد.')
|
||
|
||
|
||
def bot_eitaa_for_each_province_kill_request(entry, vet):
|
||
if base_url_for_sms_report in ('ma', 'test'):
|
||
messages = []
|
||
chat_id_eitaa = None
|
||
if vet:
|
||
chat_id_eitaa = TokenEitaaForEachVet.objects.filter(vet_mobile=vet.vet.user.mobile).first()
|
||
|
||
url = f'https://eitaayar.ir/api/{token}/sendMessage'
|
||
date = datetime.now().date()
|
||
|
||
date_time_jalali = format_datetime_to_shamsi(date)
|
||
|
||
date_shamsi = shamsi_date(date).replace('-', '_')
|
||
base_message = '🗓📢❗ سامانه رصدیار، زنجیره تامین،تولید و توزیع مرغ گوشتی📢❗\n'
|
||
base_message += f'❗{date_time_jalali}❗\n'
|
||
base_message += f' #گزارش_تخصیصات #{date_shamsi}\n\n'
|
||
base_message += f'➖➖➖➖➖➖➖➖➖➖\n'
|
||
|
||
current_message = base_message
|
||
m = 1
|
||
|
||
main_quantity = entry.main_quantity
|
||
remain_quantity = (entry.main_quantity - entry.total_killed_quantity) if (
|
||
entry.main_quantity - entry.total_killed_quantity) > 0 else 0
|
||
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.province_request.poultry_request.order_code
|
||
weight_all = entry.total_killed_quantity * weight
|
||
main_quantity = "{:,}".format(main_quantity)
|
||
remain_quantity = "{:,}".format(remain_quantity)
|
||
weight_all = "{:,}".format(int(weight_all))
|
||
|
||
if entry.province_request.poultry_request.direct_buying == True:
|
||
province_type = 'خرید مستقیم'
|
||
elif entry.province_request.poultry_request.export == True:
|
||
province_type = 'فروش به خارج استان'
|
||
elif entry.market == True:
|
||
province_type = 'پنل معاملاتی'
|
||
else:
|
||
province_type = 'اتحادیه'
|
||
new_message_part = f'{m}:\n'
|
||
new_message_part += f"🟢 مرغدار : {poultry_name} ({poultry_mobile})\n"
|
||
new_message_part += f"شهر: {city}\n"
|
||
new_message_part += f"کد سفارش: {order_code}\n"
|
||
new_message_part += f"نوع فروش: {province_type}\n"
|
||
new_message_part += f" تعداد تخصیصی :{main_quantity}\n"
|
||
new_message_part += f"مانده قابل تخصیص :{remain_quantity}\n"
|
||
new_message_part += f"میانگین وزن : {weight}\n"
|
||
new_message_part += f"وزن تقریبی :{weight_all}\n"
|
||
new_message_part += f"\n"
|
||
new_message_part += f"🔴🔴خریدار : {buyer} ({buyer_mobile})\n"
|
||
new_message_part += f"شهر خریدار: {buyer_city}\n"
|
||
new_message_part += '\n➖➖➖➖➖➖➖➖➖➖\n'
|
||
m += 1
|
||
if len(current_message) + len(new_message_part) > 4000:
|
||
messages.append(current_message)
|
||
current_message = base_message
|
||
|
||
current_message += new_message_part
|
||
|
||
if current_message and current_message != base_message:
|
||
messages.append(current_message)
|
||
if chat_id_eitaa:
|
||
chat_id_eitaa = chat_id_eitaa.token
|
||
for message in messages:
|
||
data = {
|
||
'chat_id': chat_id_eitaa,
|
||
'text': message,
|
||
}
|
||
response = requests.post(url, data=data, verify=False)
|
||
for message in messages:
|
||
data = {
|
||
'chat_id': chat_id,
|
||
'text': message,
|
||
}
|
||
response = requests.post(url, data=data, verify=False)
|
||
|
||
|
||
def bot_eitaa_for_each_delete_province_kill_request(entry):
|
||
url = f'https://eitaayar.ir/api/{token}/sendMessage'
|
||
date = datetime.now().date()
|
||
order_code = entry.province_request.poultry_request.order_code
|
||
date_time_jalali = format_datetime_to_shamsi(date)
|
||
|
||
date_shamsi = shamsi_date(date).replace('-', '_')
|
||
base_message = '🗓📢❗ سامانه رصدیار، زنجیره تامین،تولید و توزیع مرغ گوشتی📢❗\n'
|
||
base_message += f'❗{date_time_jalali}❗\n'
|
||
base_message += f' #گزارش_تخصیصات_حذف_شده #{date_shamsi}\n\n'
|
||
base_message += f'❗❗❗❗اصلاحیه تخصیص حذف شده با کد سفارش {order_code}❗❗❗❗\n\n'
|
||
base_message += f'➖➖➖➖➖➖➖➖➖➖\n'
|
||
|
||
messages = []
|
||
current_message = base_message
|
||
m = 1
|
||
|
||
main_quantity = entry.main_quantity
|
||
remain_quantity = (entry.main_quantity - entry.total_killed_quantity) if (
|
||
entry.main_quantity - entry.total_killed_quantity) > 0 else 0
|
||
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
|
||
|
||
weight_all = entry.total_killed_quantity * weight
|
||
main_quantity = "{:,}".format(main_quantity)
|
||
remain_quantity = "{:,}".format(remain_quantity)
|
||
weight_all = "{:,}".format(int(weight_all))
|
||
|
||
if entry.province_request.poultry_request.direct_buying == True:
|
||
province_type = 'خرید مستقیم'
|
||
elif entry.province_request.poultry_request.export == True:
|
||
province_type = 'فروش به خارج استان'
|
||
elif entry.market == True:
|
||
province_type = 'پنل معاملاتی'
|
||
else:
|
||
province_type = 'اتحادیه'
|
||
new_message_part = f'{m}:\n'
|
||
new_message_part += f"🟢 مرغدار : {poultry_name} ({poultry_mobile})\n"
|
||
new_message_part += f"شهر: {city}\n"
|
||
new_message_part += f"کد سفارش: {order_code}\n"
|
||
new_message_part += f"نوع فروش: {province_type}\n"
|
||
new_message_part += f" تعداد تخصیصی :{main_quantity}\n"
|
||
new_message_part += f"مانده قابل تخصیص :{remain_quantity}\n"
|
||
new_message_part += f"میانگین وزن : {weight}\n"
|
||
new_message_part += f"وزن تقریبی :{weight_all}\n"
|
||
new_message_part += f"\n"
|
||
new_message_part += f"🔴🔴خریدار : {buyer} ({buyer_mobile})\n"
|
||
new_message_part += f"شهر خریدار: {buyer_city}\n"
|
||
new_message_part += '\n➖➖➖➖➖➖➖➖➖➖\n'
|
||
new_message_part += f'❗❗❗تخصیص با کد سفارش {order_code} حذف شده است❗❗❗'
|
||
m += 1
|
||
if len(current_message) + len(new_message_part) > 4000:
|
||
messages.append(current_message)
|
||
current_message = base_message
|
||
|
||
current_message += new_message_part
|
||
|
||
if current_message and current_message != base_message:
|
||
messages.append(current_message)
|
||
|
||
for message in messages:
|
||
data = {
|
||
'chat_id': chat_id,
|
||
'text': message,
|
||
}
|
||
response = requests.post(url, data=data, verify=False)
|
||
|
||
|
||
def bot_eitaa_out_province_live_bar(request, poultry_requests, vet):
|
||
chat_id_eitaa = None
|
||
if vet:
|
||
chat_id_eitaa = TokenEitaaForEachVet.objects.filter(vet_mobile=vet.vet.user.mobile).first()
|
||
url = f'https://eitaayar.ir/api/{token}/sendMessage'
|
||
date = datetime.now().date()
|
||
response = poultry_requests
|
||
date_time_jalali = format_datetime_to_shamsi(date)
|
||
|
||
date_shamsi = shamsi_date(date).replace('-', '_')
|
||
out_province = len(poultry_requests)
|
||
base_message = '🗓📢❗ سامانه رصدیار، زنجیره تامین،تولید و توزیع مرغ گوشتی📢❗\n'
|
||
base_message += f'❗{date_time_jalali}❗\n'
|
||
base_message += f' #گزارش_فروش_مرغ_زنده_خارج_استان #{date_shamsi}\n\n'
|
||
base_message += f'تعداد کل سفارشات: {out_province}\n'
|
||
base_message += f'➖➖➖➖➖➖➖➖➖➖\n'
|
||
|
||
messages = []
|
||
current_message = base_message
|
||
m = 1
|
||
|
||
quantity = poultry_requests.aggregate(total=Sum('quantity'))[
|
||
'total'] or 0
|
||
poultry_name = poultry_requests.last().poultry.user.fullname
|
||
poultry_mobile = poultry_requests.last().poultry.user.mobile
|
||
buyer_fullname = poultry_requests.last().out_province_poultry_request_buyer.fullname
|
||
buyer_mobile = poultry_requests.last().out_province_poultry_request_buyer.mobile
|
||
buyer_city = poultry_requests.last().out_province_poultry_request_buyer.city
|
||
city = poultry_requests.last().poultry.user.city.name
|
||
weight = poultry_requests.aggregate(total=Sum('Index_weight'))[
|
||
'total'] or 0
|
||
weight = weight / out_province if out_province > 0 else 0
|
||
weight_all = quantity * weight
|
||
quantity = "{:,}".format(quantity)
|
||
weight_all = "{:,}".format(int(weight_all))
|
||
|
||
new_message_part = f'{m}:\n'
|
||
new_message_part += f"🟢 مرغدار : {poultry_name} ({poultry_mobile})\n"
|
||
new_message_part += f"شهر: {city}\n"
|
||
new_message_part += f"🔸 خریدار : {buyer_fullname} ({buyer_mobile})\n"
|
||
new_message_part += f"شهر: {buyer_city}\n"
|
||
new_message_part += f"میانگین وزن : {weight}\n"
|
||
new_message_part += f" تعداد : {quantity}\n"
|
||
new_message_part += f" وزن تقریبی : {weight_all}\n"
|
||
new_message_part += '\n➖➖➖➖➖➖➖➖➖➖\n'
|
||
m += 1
|
||
if len(current_message) + len(new_message_part) > 4000:
|
||
messages.append(current_message)
|
||
current_message = base_message
|
||
|
||
current_message += new_message_part
|
||
|
||
if current_message and current_message != base_message:
|
||
messages.append(current_message)
|
||
if chat_id_eitaa:
|
||
chat_id_eitaa = chat_id_eitaa.token
|
||
for message in messages:
|
||
data = {
|
||
'chat_id': chat_id_eitaa,
|
||
'text': message,
|
||
}
|
||
response = requests.post(url, data=data, verify=False)
|
||
for message in messages:
|
||
data = {
|
||
'chat_id': chat_id,
|
||
'text': message,
|
||
}
|
||
response = requests.post(url, data=data, verify=False)
|
||
|
||
return HttpResponse(f'{len(messages)} پیام ارسال شد.')
|
||
|
||
|
||
def transaction_for_eata(request, transaction):
|
||
if transaction.payer_type == 'poultry':
|
||
pass
|
||
else:
|
||
url = f'https://eitaayar.ir/api/{token}/sendMessage'
|
||
date = datetime.now().date()
|
||
if base_url_for_sms_report == 'ma':
|
||
province = 'مرکزی'
|
||
elif base_url_for_sms_report == 'ha':
|
||
province = 'همدان'
|
||
elif base_url_for_sms_report == 'ku':
|
||
province = 'کردستان'
|
||
elif base_url_for_sms_report == 'bu':
|
||
province = 'بوشهر'
|
||
else:
|
||
province = 'تست'
|
||
date_shamsi = shamsi_date(date).replace('-', '_')
|
||
base_message = '🗓📢❗ سامانه رصدیار، زنجیره تامین،تولید و توزیع مرغ گوشتی📢❗\n'
|
||
base_message += f' #گزارش_تراکنش_پرداختی #{date_shamsi}\n'
|
||
base_message += f' #استان_{province}\n\n'
|
||
base_message += f'➖➖➖➖➖➖➖➖➖➖\n'
|
||
|
||
messages = []
|
||
current_message = base_message
|
||
|
||
from_date = jdatetime.date.fromgregorian(
|
||
year=transaction.date.year,
|
||
month=transaction.date.month,
|
||
day=transaction.date.day
|
||
).strftime('%Y-%m-%d')
|
||
reversed_date = reversed(from_date.split("-"))
|
||
separate = "-"
|
||
date = separate.join(reversed_date)
|
||
union_share = "{:,}".format(transaction.union_share)
|
||
company_share = "{:,}".format(transaction.company_share)
|
||
guilds_share = "{:,}".format(transaction.guilds_share)
|
||
others_share = "{:,}".format(transaction.other_share)
|
||
amount = "{:,}".format(transaction.amount)
|
||
|
||
if transaction.payer_type == 'kill_house':
|
||
if transaction.kill_house.killer == True and transaction.kill_house.type == 'exclusive':
|
||
parent = KillHousePercentage.objects.get(kill_house=transaction.kill_house, trash=False)
|
||
payer_type = f'کشتارکن اختصاصی {parent.kill_house_for_killer.name}'
|
||
elif transaction.kill_house.killer == True and transaction.kill_house.type == 'public':
|
||
payer_type = 'کشتارکن عمومی'
|
||
else:
|
||
payer_type = 'کشتارگاه'
|
||
payer_unit_name = transaction.kill_house.name
|
||
else:
|
||
payer_type = 'مرغدار'
|
||
payer_unit_name = transaction.poultry.unit_name
|
||
|
||
new_message_part = f"🟢 پرداخت کننده : {transaction.payer_fullname}\n"
|
||
new_message_part += f"🟢 تلفن : {transaction.payer_mobile}\n"
|
||
new_message_part += f"🟢 ماهیت پرداخت کننده : {payer_type}\n"
|
||
new_message_part += f"🟢 نام واحد : {payer_unit_name}\n"
|
||
new_message_part += f"تاریخ پرداخت: {date}\n"
|
||
new_message_part += f"مبلغ کل تراکنش: {amount} ریال \n"
|
||
new_message_part += f"\n"
|
||
new_message_part += f"🔸 سهم اتحادیه مرغدارن : {union_share} ریال \n"
|
||
new_message_part += f"🔸 سهم شرکت : {company_share} ریال \n"
|
||
new_message_part += f"🔸 سهم صنف پروتئین : {guilds_share} ریال \n"
|
||
new_message_part += f"🔸 سهم دامپزشک : {others_share} ریال \n"
|
||
new_message_part += f"\n"
|
||
# if base_url_for_sms_report == 'ma':
|
||
# new_message_part += f"‼توجه: سهم صنف پروتئین به حساب اتحادیه مرغدارن واریز شد.‼"
|
||
if base_url_for_sms_report == 'ha':
|
||
new_message_part += f"‼توجه: سهم صنف پروتئین و مسئول فنی فارم به حساب اتحادیه مرغدارن واریز شد.‼"
|
||
new_message_part += '\n➖➖➖➖➖➖➖➖➖➖\n'
|
||
|
||
if len(current_message) + len(new_message_part) > 4000:
|
||
messages.append(current_message)
|
||
current_message = base_message
|
||
|
||
current_message += new_message_part
|
||
|
||
if current_message and current_message != base_message:
|
||
messages.append(current_message)
|
||
|
||
for message in messages:
|
||
data = {
|
||
'chat_id': chat_id_mali,
|
||
'text': message,
|
||
}
|
||
response = requests.post(url, data=data, verify=False)
|
||
|
||
return HttpResponse('ok')
|
||
|
||
|
||
def daily_cron_job_transaction_for_eata():
|
||
total_wage_info = TotalWageInformation.objects.get(trash=False)
|
||
serializer = TotalWageInformationSerializer(total_wage_info).data
|
||
total_wage = "{:,}".format(int(serializer['wage_info']['total_wage']))
|
||
total_unpaid_wage = "{:,}".format(int(serializer['wage_info']['total_unpaid_wage']))
|
||
total_paid_wage = "{:,}".format(int(serializer['wage_info']['total_paid_wage']))
|
||
|
||
company_unpaid_wage = next(
|
||
(share["total_unpaid_wage"] for share in serializer['wage_info']['shares'] if share["name"] == "شرکت"), None)
|
||
company_total_unpaid_wage = "{:,}".format(int(company_unpaid_wage)) if company_unpaid_wage is not None else "0"
|
||
company_total_wage = next(
|
||
(share["total_wage"] for share in serializer['wage_info']['shares'] if share["name"] == "شرکت"), None)
|
||
company_total_wage = "{:,}".format(int(company_total_wage)) if company_total_wage is not None else "0"
|
||
company_paid_wage = next(
|
||
(share["total_paid_wage"] for share in serializer['wage_info']['shares'] if share["name"] == "شرکت"),
|
||
None)
|
||
company_total_paid_wage = "{:,}".format(int(company_paid_wage)) if company_paid_wage is not None else "0"
|
||
|
||
guilds_unpaid_wage = next(
|
||
(share["total_unpaid_wage"] for share in serializer['wage_info']['shares'] if share["name"] == "صنف پروتئین"),
|
||
None)
|
||
guilds_total_unpaid_wage = "{:,}".format(int(guilds_unpaid_wage)) if guilds_unpaid_wage is not None else "0"
|
||
guilds_wage = next(
|
||
(share["total_wage"] for share in serializer['wage_info']['shares'] if share["name"] == "صنف پروتئین"), None)
|
||
guilds_total_wage = "{:,}".format(int(guilds_wage)) if guilds_wage is not None else "0"
|
||
|
||
guilds_paid_wage = next(
|
||
(share["total_paid_wage"] for share in serializer['wage_info']['shares'] if share["name"] == "صنف پروتئین"),
|
||
None)
|
||
guilds_total_paid_wage = "{:,}".format(int(guilds_paid_wage)) if guilds_paid_wage is not None else "0"
|
||
|
||
union_unpaid_wage = next(
|
||
(share["total_unpaid_wage"] for share in serializer['wage_info']['shares'] if share["name"] == "اتحادیه"), None)
|
||
union_total_unpaid_wage = "{:,}".format(int(union_unpaid_wage)) if union_unpaid_wage is not None else "0"
|
||
union_wage = next(
|
||
(share["total_wage"] for share in serializer['wage_info']['shares'] if share["name"] == "اتحادیه"), None)
|
||
union_total_wage = "{:,}".format(int(union_wage)) if union_wage is not None else "0"
|
||
union_paid_wage = next(
|
||
(share["total_paid_wage"] for share in serializer['wage_info']['shares'] if share["name"] == "اتحادیه"),
|
||
None)
|
||
union_total_paid_wage = "{:,}".format(int(union_paid_wage)) if union_paid_wage is not None else "0"
|
||
|
||
other_unpaid_wage = next(
|
||
(share["total_unpaid_wage"] for share in serializer['wage_info']['shares'] if share["name"] == "دامپزشک"), None)
|
||
other_total_unpaid_wage = "{:,}".format(int(other_unpaid_wage)) if other_unpaid_wage is not None else "0"
|
||
other_wage = next(
|
||
(share["total_wage"] for share in serializer['wage_info']['shares'] if share["name"] == "دامپزشک"), None)
|
||
other_total_wage = "{:,}".format(int(other_wage)) if other_wage is not None else "0"
|
||
other_paid_wage = next(
|
||
(share["total_paid_wage"] for share in serializer['wage_info']['shares'] if share["name"] == "دامپزشک"), None)
|
||
other_total_paid_wage = "{:,}".format(int(other_paid_wage)) if other_paid_wage is not None else "0"
|
||
|
||
date = datetime.now().date()
|
||
|
||
url = f'https://eitaayar.ir/api/{token}/sendMessage'
|
||
|
||
if base_url_for_sms_report == 'ma':
|
||
province = 'مرکزی'
|
||
elif base_url_for_sms_report == 'ha':
|
||
province = 'همدان'
|
||
elif base_url_for_sms_report == 'ku':
|
||
province = 'کردستان'
|
||
elif base_url_for_sms_report == 'bu':
|
||
province = 'بوشهر'
|
||
else:
|
||
province = 'تست'
|
||
date_shamsi = shamsi_date(date).replace('-', '_')
|
||
base_message = '🗓📢❗ سامانه رصدیار، زنجیره تامین،تولید و توزیع مرغ گوشتی📢❗\n'
|
||
base_message += f' #اطلاعات_جامع_تعرفه #{date_shamsi}\n'
|
||
base_message += f' #استان_{province}\n\n'
|
||
base_message += f'➖➖➖➖➖➖➖➖➖➖\n'
|
||
|
||
messages = []
|
||
current_message = base_message
|
||
|
||
union_share = union_total_paid_wage
|
||
company_share = company_total_paid_wage
|
||
guilds_share = guilds_total_paid_wage
|
||
other_share = other_total_paid_wage
|
||
|
||
amount = total_paid_wage
|
||
|
||
new_message_part = f"مجموع تعرفه: {total_wage} ریال \n"
|
||
new_message_part += f"مجموع پرداختی: {amount} ریال \n"
|
||
new_message_part += f"مجموع باقیمانده: {total_unpaid_wage} ریال \n"
|
||
new_message_part += f"\n"
|
||
new_message_part += f"🔸 کل سهم اتحادیه مرغدارن : {union_total_wage} ریال \n"
|
||
new_message_part += f"🔸واریزی سهم اتحادیه مرغدارن : {union_share} ریال \n"
|
||
new_message_part += f"🔸مانده سهم اتحادیه مرغدارن : {union_total_unpaid_wage} ریال \n"
|
||
new_message_part += f"\n"
|
||
new_message_part += f"🔹کل سهم شرکت : {company_total_wage} ریال \n"
|
||
new_message_part += f"🔹واریزی سهم شرکت : {company_share} ریال \n"
|
||
new_message_part += f"🔹مانده سهم شرکت : {company_total_unpaid_wage} ریال \n"
|
||
new_message_part += f"\n"
|
||
new_message_part += f"🔻 کل سهم صنف پروتئین : {guilds_total_wage} ریال \n"
|
||
new_message_part += f"🔻 واریزی سهم صنف پروتئین : {guilds_share} ریال \n"
|
||
new_message_part += f"🔻 مانده سهم صنف پروتئین : {guilds_total_unpaid_wage} ریال \n"
|
||
new_message_part += f"\n"
|
||
# if base_url_for_sms_report == 'ma':
|
||
# new_message_part += f"‼توجه: سهم صنف پروتئین به حساب اتحادیه مرغدارن واریز شد.‼"
|
||
if base_url_for_sms_report == 'ha':
|
||
new_message_part += f"\n"
|
||
new_message_part += f"🔻 کل سهم دامپزشک : {other_total_wage} ریال \n"
|
||
new_message_part += f"🔻 واریزی سهم دامپزشک : {other_share} ریال \n"
|
||
new_message_part += f"🔻 مانده سهم دامپزشک : {other_total_unpaid_wage} ریال \n"
|
||
new_message_part += f"\n"
|
||
new_message_part += f"‼توجه: سهم صنف پروتئین و مسئول فنی فارم به حساب اتحادیه مرغدارن واریز شد.‼"
|
||
new_message_part += '\n➖➖➖➖➖➖➖➖➖➖\n'
|
||
|
||
if len(current_message) + len(new_message_part) > 4000:
|
||
messages.append(current_message)
|
||
current_message = base_message
|
||
|
||
current_message += new_message_part
|
||
|
||
if current_message and current_message != base_message:
|
||
messages.append(current_message)
|
||
|
||
for message in messages:
|
||
data = {
|
||
'chat_id': chat_id_mali,
|
||
'text': message,
|
||
}
|
||
response = requests.post(url, data=data, verify=False)
|
||
|
||
|
||
def bot_eitaa_for_bug_reporter(text):
|
||
token = "bot363954:e3d4dca2-f1b3-4f44-b5a9-d48aa11c79b8"
|
||
chat_id = 10473672
|
||
url = f'https://eitaayar.ir/api/{token}/sendMessage'
|
||
t = f"\n"
|
||
t += f" {text['result']} \n"
|
||
t += f"\n"
|
||
t += f"\n"
|
||
t += f"عنوان خطا:"
|
||
t += f"\n"
|
||
t += f"\n"
|
||
t += f"{text['error_title']} \n"
|
||
t += f"\n"
|
||
t += f"\n"
|
||
t += f"پیغام خطا:"
|
||
t += f"\n"
|
||
t += f"\n"
|
||
t += f"{text['error_message']} \n"
|
||
t += f"\n"
|
||
t += f"\n"
|
||
t += f"توضیحات بیشتر:"
|
||
t += f"\n"
|
||
t += f"\n"
|
||
t += f"{text['error_traceback']} \n"
|
||
|
||
data = {
|
||
'chat_id': chat_id,
|
||
'text': t,
|
||
}
|
||
response = requests.post(url, data=data, verify=False)
|
||
|
||
|
||
def daily_manual_transaction_for_eata(request):
|
||
total_wage_info = TotalWageInformation.objects.get(trash=False)
|
||
serializer = TotalWageInformationSerializer(total_wage_info).data
|
||
total_wage = "{:,}".format(int(serializer['wage_info']['total_wage']))
|
||
total_unpaid_wage = "{:,}".format(int(serializer['wage_info']['total_unpaid_wage']))
|
||
total_paid_wage = "{:,}".format(int(serializer['wage_info']['total_paid_wage']))
|
||
|
||
company_unpaid_wage = next(
|
||
(share["total_unpaid_wage"] for share in serializer['wage_info']['shares'] if share["name"] == "شرکت"), None)
|
||
company_total_unpaid_wage = "{:,}".format(int(company_unpaid_wage)) if company_unpaid_wage is not None else "0"
|
||
company_total_wage = next(
|
||
(share["total_wage"] for share in serializer['wage_info']['shares'] if share["name"] == "شرکت"), None)
|
||
company_total_wage = "{:,}".format(int(company_total_wage)) if company_total_wage is not None else "0"
|
||
company_paid_wage = next(
|
||
(share["total_paid_wage"] for share in serializer['wage_info']['shares'] if share["name"] == "شرکت"),
|
||
None)
|
||
company_total_paid_wage = "{:,}".format(int(company_paid_wage)) if company_paid_wage is not None else "0"
|
||
|
||
guilds_unpaid_wage = next(
|
||
(share["total_unpaid_wage"] for share in serializer['wage_info']['shares'] if share["name"] == "صنف پروتئین"),
|
||
None)
|
||
guilds_total_unpaid_wage = "{:,}".format(int(guilds_unpaid_wage)) if guilds_unpaid_wage is not None else "0"
|
||
guilds_wage = next(
|
||
(share["total_wage"] for share in serializer['wage_info']['shares'] if share["name"] == "صنف پروتئین"), None)
|
||
guilds_total_wage = "{:,}".format(int(guilds_wage)) if guilds_wage is not None else "0"
|
||
|
||
guilds_paid_wage = next(
|
||
(share["total_paid_wage"] for share in serializer['wage_info']['shares'] if share["name"] == "صنف پروتئین"),
|
||
None)
|
||
guilds_total_paid_wage = "{:,}".format(int(guilds_paid_wage)) if guilds_paid_wage is not None else "0"
|
||
|
||
union_unpaid_wage = next(
|
||
(share["total_unpaid_wage"] for share in serializer['wage_info']['shares'] if share["name"] == "اتحادیه"), None)
|
||
union_total_unpaid_wage = "{:,}".format(int(union_unpaid_wage)) if union_unpaid_wage is not None else "0"
|
||
union_wage = next(
|
||
(share["total_wage"] for share in serializer['wage_info']['shares'] if share["name"] == "اتحادیه"), None)
|
||
union_total_wage = "{:,}".format(int(union_wage)) if union_wage is not None else "0"
|
||
union_paid_wage = next(
|
||
(share["total_paid_wage"] for share in serializer['wage_info']['shares'] if share["name"] == "اتحادیه"),
|
||
None)
|
||
union_total_paid_wage = "{:,}".format(int(union_paid_wage)) if union_paid_wage is not None else "0"
|
||
|
||
other_unpaid_wage = next(
|
||
(share["total_unpaid_wage"] for share in serializer['wage_info']['shares'] if share["name"] == "دامپزشک"), None)
|
||
other_total_unpaid_wage = "{:,}".format(int(other_unpaid_wage)) if other_unpaid_wage is not None else "0"
|
||
other_wage = next(
|
||
(share["total_wage"] for share in serializer['wage_info']['shares'] if share["name"] == "دامپزشک"), None)
|
||
other_total_wage = "{:,}".format(int(other_wage)) if other_wage is not None else "0"
|
||
other_paid_wage = next(
|
||
(share["total_paid_wage"] for share in serializer['wage_info']['shares'] if share["name"] == "دامپزشک"), None)
|
||
other_total_paid_wage = "{:,}".format(int(other_paid_wage)) if other_paid_wage is not None else "0"
|
||
|
||
date = datetime.now().date()
|
||
|
||
url = f'https://eitaayar.ir/api/{token}/sendMessage'
|
||
|
||
if base_url_for_sms_report == 'ma':
|
||
province = 'مرکزی'
|
||
elif base_url_for_sms_report == 'ha':
|
||
province = 'همدان'
|
||
elif base_url_for_sms_report == 'ku':
|
||
province = 'کردستان'
|
||
elif base_url_for_sms_report == 'bu':
|
||
province = 'بوشهر'
|
||
else:
|
||
province = 'تست'
|
||
date_shamsi = shamsi_date(date).replace('-', '_')
|
||
base_message = '🗓📢❗ سامانه رصدیار، زنجیره تامین،تولید و توزیع مرغ گوشتی📢❗\n'
|
||
base_message += f' #اطلاعات_جامع_تعرفه #{date_shamsi}\n'
|
||
base_message += f' #استان_{province}\n\n'
|
||
base_message += f'➖➖➖➖➖➖➖➖➖➖\n'
|
||
|
||
messages = []
|
||
current_message = base_message
|
||
|
||
union_share = union_total_paid_wage
|
||
company_share = company_total_paid_wage
|
||
guilds_share = guilds_total_paid_wage
|
||
other_share = other_total_paid_wage
|
||
|
||
amount = total_paid_wage
|
||
|
||
new_message_part = f"مجموع تعرفه: {total_wage} ریال \n"
|
||
new_message_part += f"مجموع پرداختی: {amount} ریال \n"
|
||
new_message_part += f"مجموع باقیمانده: {total_unpaid_wage} ریال \n"
|
||
new_message_part += f"\n"
|
||
new_message_part += f"🔸 کل سهم اتحادیه مرغدارن : {union_total_wage} ریال \n"
|
||
new_message_part += f"🔸واریزی سهم اتحادیه مرغدارن : {union_share} ریال \n"
|
||
new_message_part += f"🔸مانده سهم اتحادیه مرغدارن : {union_total_unpaid_wage} ریال \n"
|
||
new_message_part += f"\n"
|
||
new_message_part += f"🔹کل سهم شرکت : {company_total_wage} ریال \n"
|
||
new_message_part += f"🔹واریزی سهم شرکت : {company_share} ریال \n"
|
||
new_message_part += f"🔹مانده سهم شرکت : {company_total_unpaid_wage} ریال \n"
|
||
new_message_part += f"\n"
|
||
new_message_part += f"🔻 کل سهم صنف پروتئین : {guilds_total_wage} ریال \n"
|
||
new_message_part += f"🔻 واریزی سهم صنف پروتئین : {guilds_share} ریال \n"
|
||
new_message_part += f"🔻 مانده سهم صنف پروتئین : {guilds_total_unpaid_wage} ریال \n"
|
||
new_message_part += f"\n"
|
||
# if base_url_for_sms_report == 'ma':
|
||
# new_message_part += f"‼توجه: سهم صنف پروتئین به حساب اتحادیه مرغدارن واریز شد.‼"
|
||
if base_url_for_sms_report == 'ha':
|
||
new_message_part += f"\n"
|
||
new_message_part += f"🔻 کل سهم دامپزشک : {other_total_wage} ریال \n"
|
||
new_message_part += f"🔻 واریزی سهم دامپزشک : {other_share} ریال \n"
|
||
new_message_part += f"🔻 مانده سهم دامپزشک : {other_total_unpaid_wage} ریال \n"
|
||
new_message_part += f"\n"
|
||
new_message_part += f"‼توجه: سهم صنف پروتئین و مسئول فنی فارم به حساب اتحادیه مرغدارن واریز شد.‼"
|
||
new_message_part += '\n➖➖➖➖➖➖➖➖➖➖\n'
|
||
|
||
if len(current_message) + len(new_message_part) > 4000:
|
||
messages.append(current_message)
|
||
current_message = base_message
|
||
|
||
current_message += new_message_part
|
||
|
||
if current_message and current_message != base_message:
|
||
messages.append(current_message)
|
||
|
||
for message in messages:
|
||
data = {
|
||
'chat_id': chat_id_mali,
|
||
'text': message,
|
||
}
|
||
response = requests.post(url, data=data, verify=False)
|
||
|
||
return HttpResponse('ok')
|
||
|
||
|
||
def transaction_for_eata_new(request):
|
||
transactions = InternalTransaction.objects.filter(trash=False, status='completed', date__date=datetime.now().date())
|
||
for transaction in transactions:
|
||
if transaction.payer_type == 'poultry':
|
||
pass
|
||
else:
|
||
url = f'https://eitaayar.ir/api/{token}/sendMessage'
|
||
date = datetime.now().date()
|
||
if base_url_for_sms_report == 'ma':
|
||
province = 'مرکزی'
|
||
elif base_url_for_sms_report == 'ha':
|
||
province = 'همدان'
|
||
elif base_url_for_sms_report == 'ku':
|
||
province = 'کردستان'
|
||
elif base_url_for_sms_report == 'bu':
|
||
province = 'بوشهر'
|
||
else:
|
||
province = 'تست'
|
||
date_shamsi = shamsi_date(date).replace('-', '_')
|
||
base_message = '🗓📢❗ سامانه رصدیار، زنجیره تامین،تولید و توزیع مرغ گوشتی📢❗\n'
|
||
base_message += f' #گزارش_تراکنش_پرداختی #{date_shamsi}\n'
|
||
base_message += f' #استان_{province}\n\n'
|
||
base_message += f'➖➖➖➖➖➖➖➖➖➖\n'
|
||
|
||
messages = []
|
||
current_message = base_message
|
||
|
||
from_date = jdatetime.date.fromgregorian(
|
||
year=transaction.date.year,
|
||
month=transaction.date.month,
|
||
day=transaction.date.day
|
||
).strftime('%Y-%m-%d')
|
||
reversed_date = reversed(from_date.split("-"))
|
||
separate = "-"
|
||
date = separate.join(reversed_date)
|
||
union_share = "{:,}".format(transaction.union_share)
|
||
company_share = "{:,}".format(transaction.company_share)
|
||
guilds_share = "{:,}".format(transaction.guilds_share)
|
||
others_share = "{:,}".format(transaction.other_share)
|
||
amount = "{:,}".format(transaction.amount)
|
||
|
||
if transaction.payer_type == 'kill_house':
|
||
if transaction.kill_house.killer == True and transaction.kill_house.type == 'exclusive':
|
||
parent = KillHousePercentage.objects.get(kill_house=transaction.kill_house, trash=False)
|
||
payer_type = f'کشتارکن اختصاصی {parent.kill_house_for_killer.name}'
|
||
elif transaction.kill_house.killer == True and transaction.kill_house.type == 'public':
|
||
payer_type = 'کشتارکن عمومی'
|
||
else:
|
||
payer_type = 'کشتارگاه'
|
||
payer_unit_name = transaction.kill_house.name
|
||
else:
|
||
payer_type = 'مرغدار'
|
||
payer_unit_name = transaction.poultry.unit_name
|
||
|
||
new_message_part = f"🟢 پرداخت کننده : {transaction.payer_fullname}\n"
|
||
new_message_part += f"🟢 تلفن : {transaction.payer_mobile}\n"
|
||
new_message_part += f"🟢 ماهیت پرداخت کننده : {payer_type}\n"
|
||
new_message_part += f"🟢 نام واحد : {payer_unit_name}\n"
|
||
new_message_part += f"تاریخ پرداخت: {date}\n"
|
||
new_message_part += f"مبلغ کل تراکنش: {amount} ریال \n"
|
||
new_message_part += f"\n"
|
||
new_message_part += f"🔸 سهم اتحادیه مرغدارن : {union_share} ریال \n"
|
||
new_message_part += f"🔸 سهم شرکت : {company_share} ریال \n"
|
||
new_message_part += f"🔸 سهم صنف پروتئین : {guilds_share} ریال \n"
|
||
new_message_part += f"🔸 سهم دامپزشک : {others_share} ریال \n"
|
||
new_message_part += f"\n"
|
||
# if base_url_for_sms_report == 'ma':
|
||
# new_message_part += f"‼توجه: سهم صنف پروتئین به حساب اتحادیه مرغدارن واریز شد.‼"
|
||
if base_url_for_sms_report == 'ha':
|
||
new_message_part += f"‼توجه: سهم صنف پروتئین و مسئول فنی فارم به حساب اتحادیه مرغدارن واریز شد.‼"
|
||
new_message_part += '\n➖➖➖➖➖➖➖➖➖➖\n'
|
||
|
||
if len(current_message) + len(new_message_part) > 4000:
|
||
messages.append(current_message)
|
||
current_message = base_message
|
||
|
||
current_message += new_message_part
|
||
|
||
if current_message and current_message != base_message:
|
||
messages.append(current_message)
|
||
|
||
for message in messages:
|
||
data = {
|
||
'chat_id': chat_id_mali,
|
||
'text': message,
|
||
}
|
||
response = requests.post(url, data=data, verify=False)
|
||
|
||
return HttpResponse('ok')
|
||
|
||
|
||
def daily_report_for_each_vet_farm_manual(request):
|
||
date1 = datetime.strptime(str(request.GET['date1']), '%Y-%m-%d').date()
|
||
date2 = datetime.strptime(str(request.GET['date2']), '%Y-%m-%d').date()
|
||
|
||
url = f'https://eitaayar.ir/api/{token}/sendMessage'
|
||
today = datetime.now().date()
|
||
date_time_jalali = format_datetime_to_shamsi(today)
|
||
date_shamsi = shamsi_date(date1).replace('-', '_')
|
||
date_shamsi2 = shamsi_date(date2).replace('-', '_')
|
||
|
||
vet_tokens = list(
|
||
TokenEitaaForEachVet.objects
|
||
.all()
|
||
.only("vet_mobile", "token")
|
||
.values_list('vet_mobile', flat=True)
|
||
.distinct()
|
||
)
|
||
if not vet_tokens:
|
||
return HttpResponse('no vets')
|
||
|
||
vet_farms_qs = VetFarm.objects.filter(trash=False, vet__user__mobile__in=vet_tokens) \
|
||
.only("id", "vet__user__mobile", "poultry__id")
|
||
|
||
poultry_qs = Poultry.objects.filter(trash=False, id__in=vet_farms_qs.values_list('poultry__id', flat=True)) \
|
||
.only("id", "unit_name", "breeding_unique_id")
|
||
|
||
poultry_map = {p.id: p.breeding_unique_id for p in poultry_qs}
|
||
poultry_breeding_ids = set(poultry_map.values())
|
||
|
||
vet_farm_pairs = list(vet_farms_qs.values_list('vet__user__mobile', 'poultry__id'))
|
||
breeding_to_vets = {}
|
||
for vet_mobile, poultry_id in vet_farm_pairs:
|
||
breeding = poultry_map.get(poultry_id)
|
||
if breeding:
|
||
breeding_to_vets.setdefault(breeding, set()).add(vet_mobile)
|
||
|
||
kill_request_qs = KillHouseRequest.objects.filter(
|
||
trash=False,
|
||
kill_request__recive_date__date__gte=date1,
|
||
kill_request__recive_date__date__lte=date2,
|
||
province_request__poultry_request__poultry__in=poultry_qs
|
||
).only(
|
||
"bar_code", "accepted_real_quantity", "clearance_code", "quarantine_quantity",
|
||
"quarantine_code_state",
|
||
"kill_request__recive_date",
|
||
"killhouse_user__name",
|
||
"province_request__poultry_request__poultry__unit_name",
|
||
)
|
||
|
||
poultry_request_out_qs = PoultryRequest.objects.filter(
|
||
trash=False,
|
||
out=True,
|
||
send_date__date__gte=date1,
|
||
send_date__date__lte=date2,
|
||
poultry__in=poultry_qs
|
||
).only(
|
||
"order_code", "quantity", "send_date", "quarantine_code",
|
||
"buyer_fullname", "buyer_province", "buyer_city",
|
||
"poultry__unit_name"
|
||
)
|
||
|
||
kill_house_request_code_quarantine = list(kill_request_qs.values_list('clearance_code', flat=True).distinct())
|
||
kill_house_free_sale = list(poultry_request_out_qs.filter(quarantine_code__isnull=False)
|
||
.values_list('quarantine_code', flat=True).distinct())
|
||
result = list(filter(None, kill_house_request_code_quarantine)) + list(filter(None, kill_house_free_sale))
|
||
|
||
rsi_url = (
|
||
f'https://rsibackend.rasadyar.com/app/send_different_bar/?province={base_url_for_sms_report}'
|
||
f'&date1={date1}&date2={date2}'
|
||
)
|
||
try:
|
||
rsi_resp = requests.post(rsi_url, json=result, headers={'Content-Type': 'application/json'})
|
||
rsi_data = rsi_resp.json() if rsi_resp.status_code == 200 else []
|
||
except Exception:
|
||
rsi_data = []
|
||
|
||
diffrent_rsi_by_vet = {vet: {'in': [], 'out': []} for vet in vet_tokens}
|
||
|
||
for data in rsi_data:
|
||
try:
|
||
part_code = data['hatching']['poultry']['PartIdCode']
|
||
except Exception:
|
||
continue
|
||
if part_code not in breeding_to_vets:
|
||
continue
|
||
date_str = str(data.get('Date', '')).split('T')[0]
|
||
try:
|
||
date_n = datetime.strptime(date_str, '%Y-%m-%d').date()
|
||
except Exception:
|
||
continue
|
||
|
||
info = 'کد قرنطینه: {0} - حجم: {1} قطعه-مرغدار:{2} - مقصد بار: {3} - تاریخ بار: ({4})'.format(
|
||
data.get('TrackingCode', ''),
|
||
to_locale_str(int(data.get('GoodAmount', 0))),
|
||
data.get('hatching', {}).get('poultry', {}).get('UnitName', ''),
|
||
data.get('DesUnitName', ''),
|
||
shamsi_date(date_n),
|
||
)
|
||
vets_for_part = breeding_to_vets.get(part_code, set())
|
||
for v in vets_for_part:
|
||
if data.get('Out') is False:
|
||
diffrent_rsi_by_vet[v]['in'].append(info)
|
||
else:
|
||
diffrent_rsi_by_vet[v]['out'].append(info)
|
||
|
||
for vet_mobile in vet_tokens:
|
||
vet_specific_farms_qs = vet_farms_qs.filter(vet__user__mobile=vet_mobile)
|
||
if not vet_specific_farms_qs.exists():
|
||
continue
|
||
|
||
vet_poultry_ids = list(vet_specific_farms_qs.values_list('poultry__id', flat=True).distinct())
|
||
|
||
vet_kill_request = kill_request_qs.filter(
|
||
province_request__poultry_request__poultry__in=vet_poultry_ids
|
||
)
|
||
vet_poultry_request_out = poultry_request_out_qs.filter(poultry__in=vet_poultry_ids)
|
||
|
||
base_message = (
|
||
'🗓📢❗ سامانه رصدیار، زنجیره تامین،تولید و توزیع مرغ گوشتی📢❗\n'
|
||
f'❗{date_time_jalali}❗\n'
|
||
f' #گزارش_بارهای_فاقد_مجوز_از_تاریخ_{date_shamsi}_تا_تاریخ_{date_shamsi2} #\n\n'
|
||
f'➖➖➖➖➖➖➖➖➖➖\n'
|
||
)
|
||
current_message = base_message
|
||
messages = []
|
||
|
||
def _add_text(txt):
|
||
nonlocal current_message, messages, base_message
|
||
if not txt:
|
||
return
|
||
if len(current_message) + len(txt) > 4000:
|
||
messages.append(current_message)
|
||
current_message = base_message
|
||
current_message += txt
|
||
|
||
in_has_code_qs = vet_kill_request.filter(clearance_code__isnull=False)
|
||
in_no_code_qs = vet_kill_request.filter(clearance_code__isnull=True)
|
||
in_has_code_count = in_has_code_qs.count()
|
||
in_no_code_count = in_no_code_qs.count()
|
||
|
||
base_vet_message = 'دامپزشک محترم فارم({0}) گزارش عملکرد بارها به شرح زیر میباشد:\n'.format(
|
||
vet_specific_farms_qs.first()
|
||
.vet.user.fullname if vet_specific_farms_qs.first() else '-')
|
||
_add_text(base_vet_message)
|
||
bars_info = []
|
||
for kill_req in in_no_code_qs:
|
||
try:
|
||
unit_name = kill_req.province_request.poultry_request.poultry.unit_name
|
||
except Exception:
|
||
unit_name = ''
|
||
bars_info.append(
|
||
'کد بار: {0} - حجم: {1} قطعه-مرغدار:{4} - مقصد بار: {2} - تاریخ بار: ({3})'.format(
|
||
kill_req.bar_code,
|
||
to_locale_str(int(kill_req.accepted_real_quantity or 0)),
|
||
getattr(kill_req.killhouse_user, 'name', ''),
|
||
shamsi_date(kill_req.kill_request.recive_date) if getattr(kill_req.kill_request, 'recive_date',
|
||
None) else '',
|
||
unit_name
|
||
)
|
||
)
|
||
bars_details = "\n".join([f"{i + 1}. {info}" for i, info in enumerate(bars_info)])
|
||
|
||
diffrent_bars_info = []
|
||
diffrent_qs = in_has_code_qs.filter(~Q(quarantine_quantity=F('quantity')))
|
||
for kill_req in diffrent_qs:
|
||
if kill_req.quarantine_quantity:
|
||
quarantine_quantity = to_locale_str(int(kill_req.quarantine_quantity))
|
||
diffrent_quantity = to_locale_str(
|
||
int(kill_req.quarantine_quantity) - int(kill_req.accepted_real_quantity))
|
||
else:
|
||
state = getattr(kill_req, 'quarantine_code_state', None)
|
||
if state == 'contradiction':
|
||
quarantine_quantity = 'مغایرت کد رهگیری'
|
||
elif state == 'noclearance':
|
||
quarantine_quantity = 'فاقد کد رهگیری'
|
||
elif state == 'notconfirmed':
|
||
quarantine_quantity = 'عدم تایید راهداری'
|
||
else:
|
||
quarantine_quantity = 'ادغام'
|
||
diffrent_quantity = 0
|
||
diffrent_bars_info.append(
|
||
'کد بار: {0} - حجم: {1} قطعه-مرغدار:{4} - کد قرنطینه: {2} - استعلام از قرنطینه: ({3})-اختلاف:{6}- تاریخ بار: ({5})'.format(
|
||
kill_req.bar_code,
|
||
to_locale_str(int(kill_req.accepted_real_quantity or 0)),
|
||
kill_req.clearance_code or '',
|
||
quarantine_quantity,
|
||
getattr(kill_req.province_request.poultry_request.poultry, 'unit_name', ''),
|
||
shamsi_date(kill_req.kill_request.recive_date) if getattr(kill_req.kill_request, 'recive_date',
|
||
None) else '',
|
||
diffrent_quantity
|
||
)
|
||
)
|
||
diffrent_bars_details = "\n".join([f"{i + 1}. {info}" for i, info in enumerate(diffrent_bars_info)])
|
||
|
||
new_message_part_in = '❗❗ - تعداد بارهای داخل استان دارای مجوز قرنطینه {0} عدد و تعداد بار های فاقد مجوز {1} عدد میباشد.\n\n'.format(
|
||
in_has_code_count, in_no_code_count
|
||
)
|
||
if bars_info:
|
||
new_message_part_in += "بارهای داخل استان فاقد قرنطینه به شرح زیر میباشد:\n"
|
||
new_message_part_in += f"{bars_details}\n"
|
||
new_message_part_in += "--------------------------------\n"
|
||
if diffrent_bars_info:
|
||
new_message_part_in += "از بارهای داخل استان دارای مجوز تعداد {} بار دارای مغایرت در داده هستند:\n".format(
|
||
diffrent_qs.count())
|
||
new_message_part_in += f"{diffrent_bars_details}\n"
|
||
new_message_part_in += "--------------------------------\n"
|
||
|
||
rsi_in_list = diffrent_rsi_by_vet.get(vet_mobile, {}).get('in', [])
|
||
if rsi_in_list:
|
||
new_message_part_in += "با توجه به رصد هوش مصنوعی سامانه تعداد {} بار داخل استان در سامانه رصدیار ثبت نشده است:\n".format(
|
||
len(rsi_in_list))
|
||
new_message_part_in += "\n".join([f"{i + 1}. {it}" for i, it in enumerate(rsi_in_list)])
|
||
new_message_part_in += "\n--------------------------------\n"
|
||
|
||
new_message_part_in += "\n➖➖➖➖➖➖➖➖➖➖\n"
|
||
|
||
_add_text(new_message_part_in)
|
||
|
||
out_has_code_count = vet_poultry_request_out.filter(quarantine_code__isnull=False).count()
|
||
out_no_code_qs = vet_poultry_request_out.filter(quarantine_code__isnull=True)
|
||
out_no_code_count = out_no_code_qs.count()
|
||
|
||
bars_info_out = []
|
||
for poultry_req in out_no_code_qs:
|
||
bars_info_out.append(
|
||
'کد سفارش: {0} - حجم: {1} قطعه-مرغدار:{4} - خریدار: {2} - استان خریدار:{5} - شهر خریدار:{6} - تاریخ بار: ({3})'.format(
|
||
poultry_req.order_code,
|
||
to_locale_str(int(poultry_req.quantity or 0)),
|
||
poultry_req.buyer_fullname or '',
|
||
shamsi_date(poultry_req.send_date) if getattr(poultry_req, 'send_date', None) else '',
|
||
getattr(poultry_req.poultry, 'unit_name', ''),
|
||
poultry_req.buyer_province or '',
|
||
poultry_req.buyer_city or '',
|
||
)
|
||
)
|
||
bars_details_out = "\n".join([f"{i + 1}. {info}" for i, info in enumerate(bars_info_out)])
|
||
|
||
new_message_part_out = '❗❗ - تعداد بارهای خارج استان دارای مجوز قرنطینه {0} عدد و تعداد بار های فاقد مجوز {1} عدد میباشد.\n\n'.format(
|
||
out_has_code_count, out_no_code_count
|
||
)
|
||
if bars_info_out:
|
||
new_message_part_out += "بارهای خارج استان فاقد قرنطینه به شرح زیر میباشد:\n"
|
||
new_message_part_out += f"{bars_details_out}\n"
|
||
new_message_part_out += "--------------------------------\n"
|
||
|
||
rsi_out_list = diffrent_rsi_by_vet.get(vet_mobile, {}).get('out', [])
|
||
if rsi_out_list:
|
||
new_message_part_out += "با توجه به رصد هوش مصنوعی سامانه تعداد {} بار خارج استان در سامانه رصدیار ثبت نشده است:\n".format(
|
||
len(rsi_out_list))
|
||
new_message_part_out += "\n".join([f"{i + 1}. {it}" for i, it in enumerate(rsi_out_list)])
|
||
new_message_part_out += "\n--------------------------------\n"
|
||
|
||
new_message_part_out += "\n➖➖➖➖➖➖➖➖➖➖\n"
|
||
|
||
_add_text(new_message_part_out)
|
||
|
||
if current_message and current_message != base_message:
|
||
messages.append(current_message)
|
||
|
||
chat_token = TokenEitaaForEachVet.objects.filter(vet_mobile=vet_mobile).values_list('token', flat=True).first()
|
||
if chat_token and messages:
|
||
for message in messages:
|
||
try:
|
||
requests.post(url, data={'chat_id': chat_token, 'text': message}, verify=False)
|
||
except Exception:
|
||
pass
|
||
for message in messages:
|
||
data = {
|
||
'chat_id': chat_id,
|
||
'text': message,
|
||
}
|
||
response = requests.post(url, data=data, verify=False)
|
||
return HttpResponse('ok')
|
||
|
||
|
||
def daily_report_for_each_vet_farm_cron():
|
||
today = datetime.now().date() - timedelta(days=1)
|
||
|
||
date1 = today
|
||
date2 = today
|
||
|
||
url = f'https://eitaayar.ir/api/{token}/sendMessage'
|
||
date_time_jalali = format_datetime_to_shamsi(today)
|
||
date_shamsi = shamsi_date(date1).replace('-', '_')
|
||
date_shamsi2 = shamsi_date(date2).replace('-', '_')
|
||
|
||
vet_tokens = list(
|
||
TokenEitaaForEachVet.objects
|
||
.all()
|
||
.only("vet_mobile", "token")
|
||
.values_list('vet_mobile', flat=True)
|
||
.distinct()
|
||
)
|
||
if not vet_tokens:
|
||
return HttpResponse('no vets')
|
||
|
||
vet_farms_qs = VetFarm.objects.filter(trash=False, vet__user__mobile__in=vet_tokens) \
|
||
.only("id", "vet__user__mobile", "poultry__id")
|
||
|
||
poultry_qs = Poultry.objects.filter(trash=False, id__in=vet_farms_qs.values_list('poultry__id', flat=True)) \
|
||
.only("id", "unit_name", "breeding_unique_id")
|
||
|
||
poultry_map = {p.id: p.breeding_unique_id for p in poultry_qs}
|
||
poultry_breeding_ids = set(poultry_map.values())
|
||
|
||
vet_farm_pairs = list(vet_farms_qs.values_list('vet__user__mobile', 'poultry__id'))
|
||
breeding_to_vets = {}
|
||
for vet_mobile, poultry_id in vet_farm_pairs:
|
||
breeding = poultry_map.get(poultry_id)
|
||
if breeding:
|
||
breeding_to_vets.setdefault(breeding, set()).add(vet_mobile)
|
||
|
||
kill_request_qs = KillHouseRequest.objects.filter(
|
||
trash=False,
|
||
kill_request__recive_date__date__gte=date1,
|
||
kill_request__recive_date__date__lte=date2,
|
||
province_request__poultry_request__poultry__in=poultry_qs
|
||
).only(
|
||
"bar_code", "accepted_real_quantity", "clearance_code", "quarantine_quantity",
|
||
"quarantine_code_state",
|
||
"kill_request__recive_date",
|
||
"killhouse_user__name",
|
||
"province_request__poultry_request__poultry__unit_name",
|
||
)
|
||
|
||
poultry_request_out_qs = PoultryRequest.objects.filter(
|
||
trash=False,
|
||
out=True,
|
||
send_date__date__gte=date1,
|
||
send_date__date__lte=date2,
|
||
poultry__in=poultry_qs
|
||
).only(
|
||
"order_code", "quantity", "send_date", "quarantine_code",
|
||
"buyer_fullname", "buyer_province", "buyer_city",
|
||
"poultry__unit_name"
|
||
)
|
||
|
||
kill_house_request_code_quarantine = list(kill_request_qs.values_list('clearance_code', flat=True).distinct())
|
||
kill_house_free_sale = list(poultry_request_out_qs.filter(quarantine_code__isnull=False)
|
||
.values_list('quarantine_code', flat=True).distinct())
|
||
result = list(filter(None, kill_house_request_code_quarantine)) + list(filter(None, kill_house_free_sale))
|
||
|
||
rsi_url = (
|
||
f'https://rsibackend.rasadyar.com/app/send_different_bar/?province={base_url_for_sms_report}'
|
||
f'&date1={date1}&date2={date2}'
|
||
)
|
||
try:
|
||
rsi_resp = requests.post(rsi_url, json=result, headers={'Content-Type': 'application/json'})
|
||
rsi_data = rsi_resp.json() if rsi_resp.status_code == 200 else []
|
||
except Exception:
|
||
rsi_data = []
|
||
|
||
diffrent_rsi_by_vet = {vet: {'in': [], 'out': []} for vet in vet_tokens}
|
||
|
||
for data in rsi_data:
|
||
try:
|
||
part_code = data['hatching']['poultry']['PartIdCode']
|
||
except Exception:
|
||
continue
|
||
if part_code not in breeding_to_vets:
|
||
continue
|
||
date_str = str(data.get('Date', '')).split('T')[0]
|
||
try:
|
||
date_n = datetime.strptime(date_str, '%Y-%m-%d').date()
|
||
except Exception:
|
||
continue
|
||
|
||
info = 'کد قرنطینه: {0} - حجم: {1} قطعه-مرغدار:{2} - مقصد بار: {3} - تاریخ بار: ({4})'.format(
|
||
data.get('TrackingCode', ''),
|
||
to_locale_str(int(data.get('GoodAmount', 0))),
|
||
data.get('hatching', {}).get('poultry', {}).get('UnitName', ''),
|
||
data.get('DesUnitName', ''),
|
||
shamsi_date(date_n),
|
||
)
|
||
vets_for_part = breeding_to_vets.get(part_code, set())
|
||
for v in vets_for_part:
|
||
if data.get('Out') is False:
|
||
diffrent_rsi_by_vet[v]['in'].append(info)
|
||
else:
|
||
diffrent_rsi_by_vet[v]['out'].append(info)
|
||
|
||
for vet_mobile in vet_tokens:
|
||
vet_specific_farms_qs = vet_farms_qs.filter(vet__user__mobile=vet_mobile)
|
||
if not vet_specific_farms_qs.exists():
|
||
continue
|
||
|
||
vet_poultry_ids = list(vet_specific_farms_qs.values_list('poultry__id', flat=True).distinct())
|
||
|
||
vet_kill_request = kill_request_qs.filter(
|
||
province_request__poultry_request__poultry__in=vet_poultry_ids
|
||
)
|
||
vet_poultry_request_out = poultry_request_out_qs.filter(poultry__in=vet_poultry_ids)
|
||
|
||
base_message = (
|
||
'🗓📢❗ سامانه رصدیار، زنجیره تامین،تولید و توزیع مرغ گوشتی📢❗\n'
|
||
f'❗{date_time_jalali}❗\n'
|
||
f' #گزارش_بارهای_فاقد_مجوز_از_تاریخ_{date_shamsi}_تا_تاریخ_{date_shamsi2} #\n\n'
|
||
f'➖➖➖➖➖➖➖➖➖➖\n'
|
||
)
|
||
current_message = base_message
|
||
messages = []
|
||
|
||
def _add_text(txt):
|
||
nonlocal current_message, messages, base_message
|
||
if not txt:
|
||
return
|
||
if len(current_message) + len(txt) > 4000:
|
||
messages.append(current_message)
|
||
current_message = base_message
|
||
current_message += txt
|
||
|
||
in_has_code_qs = vet_kill_request.filter(clearance_code__isnull=False)
|
||
in_no_code_qs = vet_kill_request.filter(clearance_code__isnull=True)
|
||
in_has_code_count = in_has_code_qs.count()
|
||
in_no_code_count = in_no_code_qs.count()
|
||
|
||
base_vet_message = 'دامپزشک محترم فارم({0}) گزارش عملکرد بارها به شرح زیر میباشد:\n'.format(
|
||
vet_specific_farms_qs.first()
|
||
.vet.user.fullname if vet_specific_farms_qs.first() else '-')
|
||
_add_text(base_vet_message)
|
||
bars_info = []
|
||
for kill_req in in_no_code_qs:
|
||
try:
|
||
unit_name = kill_req.province_request.poultry_request.poultry.unit_name
|
||
except Exception:
|
||
unit_name = ''
|
||
bars_info.append(
|
||
'کد بار: {0} - حجم: {1} قطعه-مرغدار:{4} - مقصد بار: {2} - تاریخ بار: ({3})'.format(
|
||
kill_req.bar_code,
|
||
to_locale_str(int(kill_req.accepted_real_quantity or 0)),
|
||
getattr(kill_req.killhouse_user, 'name', ''),
|
||
shamsi_date(kill_req.kill_request.recive_date) if getattr(kill_req.kill_request, 'recive_date',
|
||
None) else '',
|
||
unit_name
|
||
)
|
||
)
|
||
bars_details = "\n".join([f"{i + 1}. {info}" for i, info in enumerate(bars_info)])
|
||
|
||
diffrent_bars_info = []
|
||
diffrent_qs = in_has_code_qs.filter(~Q(quarantine_quantity=F('quantity')))
|
||
for kill_req in diffrent_qs:
|
||
if kill_req.quarantine_quantity:
|
||
quarantine_quantity = to_locale_str(int(kill_req.quarantine_quantity))
|
||
diffrent_quantity = to_locale_str(
|
||
int(kill_req.quarantine_quantity) - int(kill_req.accepted_real_quantity))
|
||
else:
|
||
state = getattr(kill_req, 'quarantine_code_state', None)
|
||
if state == 'contradiction':
|
||
quarantine_quantity = 'مغایرت کد رهگیری'
|
||
elif state == 'noclearance':
|
||
quarantine_quantity = 'فاقد کد رهگیری'
|
||
elif state == 'notconfirmed':
|
||
quarantine_quantity = 'عدم تایید راهداری'
|
||
else:
|
||
quarantine_quantity = 'ادغام'
|
||
diffrent_quantity = 0
|
||
diffrent_bars_info.append(
|
||
'کد بار: {0} - حجم: {1} قطعه-مرغدار:{4} - کد قرنطینه: {2} - استعلام از قرنطینه: ({3})-اختلاف:{6}- تاریخ بار: ({5})'.format(
|
||
kill_req.bar_code,
|
||
to_locale_str(int(kill_req.accepted_real_quantity or 0)),
|
||
kill_req.clearance_code or '',
|
||
quarantine_quantity,
|
||
getattr(kill_req.province_request.poultry_request.poultry, 'unit_name', ''),
|
||
shamsi_date(kill_req.kill_request.recive_date) if getattr(kill_req.kill_request, 'recive_date',
|
||
None) else '',
|
||
diffrent_quantity
|
||
)
|
||
)
|
||
diffrent_bars_details = "\n".join([f"{i + 1}. {info}" for i, info in enumerate(diffrent_bars_info)])
|
||
|
||
new_message_part_in = '❗❗ - تعداد بارهای داخل استان دارای مجوز قرنطینه {0} عدد و تعداد بار های فاقد مجوز {1} عدد میباشد.\n\n'.format(
|
||
in_has_code_count, in_no_code_count
|
||
)
|
||
if bars_info:
|
||
new_message_part_in += "بارهای داخل استان فاقد قرنطینه به شرح زیر میباشد:\n"
|
||
new_message_part_in += f"{bars_details}\n"
|
||
new_message_part_in += "--------------------------------\n"
|
||
if diffrent_bars_info:
|
||
new_message_part_in += "از بارهای داخل استان دارای مجوز تعداد {} بار دارای مغایرت در داده هستند:\n".format(
|
||
diffrent_qs.count())
|
||
new_message_part_in += f"{diffrent_bars_details}\n"
|
||
new_message_part_in += "--------------------------------\n"
|
||
|
||
rsi_in_list = diffrent_rsi_by_vet.get(vet_mobile, {}).get('in', [])
|
||
if rsi_in_list:
|
||
new_message_part_in += "با توجه به رصد هوش مصنوعی سامانه تعداد {} بار داخل استان در سامانه رصدیار ثبت نشده است:\n".format(
|
||
len(rsi_in_list))
|
||
new_message_part_in += "\n".join([f"{i + 1}. {it}" for i, it in enumerate(rsi_in_list)])
|
||
new_message_part_in += "\n--------------------------------\n"
|
||
|
||
new_message_part_in += "\n➖➖➖➖➖➖➖➖➖➖\n"
|
||
|
||
_add_text(new_message_part_in)
|
||
|
||
out_has_code_count = vet_poultry_request_out.filter(quarantine_code__isnull=False).count()
|
||
out_no_code_qs = vet_poultry_request_out.filter(quarantine_code__isnull=True)
|
||
out_no_code_count = out_no_code_qs.count()
|
||
|
||
bars_info_out = []
|
||
for poultry_req in out_no_code_qs:
|
||
bars_info_out.append(
|
||
'کد سفارش: {0} - حجم: {1} قطعه-مرغدار:{4} - خریدار: {2} - استان خریدار:{5} - شهر خریدار:{6} - تاریخ بار: ({3})'.format(
|
||
poultry_req.order_code,
|
||
to_locale_str(int(poultry_req.quantity or 0)),
|
||
poultry_req.buyer_fullname or '',
|
||
shamsi_date(poultry_req.send_date) if getattr(poultry_req, 'send_date', None) else '',
|
||
getattr(poultry_req.poultry, 'unit_name', ''),
|
||
poultry_req.buyer_province or '',
|
||
poultry_req.buyer_city or '',
|
||
)
|
||
)
|
||
bars_details_out = "\n".join([f"{i + 1}. {info}" for i, info in enumerate(bars_info_out)])
|
||
|
||
new_message_part_out = '❗❗ - تعداد بارهای خارج استان دارای مجوز قرنطینه {0} عدد و تعداد بار های فاقد مجوز {1} عدد میباشد.\n\n'.format(
|
||
out_has_code_count, out_no_code_count
|
||
)
|
||
if bars_info_out:
|
||
new_message_part_out += "بارهای خارج استان فاقد قرنطینه به شرح زیر میباشد:\n"
|
||
new_message_part_out += f"{bars_details_out}\n"
|
||
new_message_part_out += "--------------------------------\n"
|
||
|
||
rsi_out_list = diffrent_rsi_by_vet.get(vet_mobile, {}).get('out', [])
|
||
if rsi_out_list:
|
||
new_message_part_out += "با توجه به رصد هوش مصنوعی سامانه تعداد {} بار خارج استان در سامانه رصدیار ثبت نشده است:\n".format(
|
||
len(rsi_out_list))
|
||
new_message_part_out += "\n".join([f"{i + 1}. {it}" for i, it in enumerate(rsi_out_list)])
|
||
new_message_part_out += "\n--------------------------------\n"
|
||
|
||
new_message_part_out += "\n➖➖➖➖➖➖➖➖➖➖\n"
|
||
|
||
_add_text(new_message_part_out)
|
||
|
||
if current_message and current_message != base_message:
|
||
messages.append(current_message)
|
||
|
||
chat_token = TokenEitaaForEachVet.objects.filter(vet_mobile=vet_mobile).values_list('token', flat=True).first()
|
||
if chat_token and messages:
|
||
for message in messages:
|
||
try:
|
||
requests.post(url, data={'chat_id': chat_token, 'text': message}, verify=False)
|
||
except Exception:
|
||
pass
|
||
for message in messages:
|
||
data = {
|
||
'chat_id': chat_id,
|
||
'text': message,
|
||
}
|
||
response = requests.post(url, data=data, verify=False)
|
||
|
||
|
||
def send_all_bar_to_eitaa(request):
|
||
url = f'https://eitaayar.ir/api/{token}/sendMessage'
|
||
date = datetime.now().date()
|
||
|
||
all_kill_house_requests = KillHouseRequest.objects.filter(
|
||
trash=False,
|
||
kill_request__recive_date__date=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 HttpResponse('هیچ دامپزشکی یافت نشد.')
|
||
|
||
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 = '🗓📢❗ سامانه رصدیار، زنجیره تامین،تولید و توزیع مرغ گوشتی📢❗\n'
|
||
base_message += f'❗{date_time_jalali}❗\n'
|
||
base_message += f' #گزارش_بارها #{date_shamsi}\n\n'
|
||
base_message += f'تعداد کل بارها: {vet_kill_requests.count()}\n'
|
||
base_message += f'➖➖➖➖➖➖➖➖➖➖\n'
|
||
|
||
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})\n\n'
|
||
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:
|
||
data = {
|
||
'chat_id': chat_id_eitaa_token,
|
||
'text': message,
|
||
}
|
||
response = requests.post(url, data=data, verify=False)
|
||
except Exception:
|
||
pass
|
||
|
||
return HttpResponse('پیامها ارسال شد.')
|
||
|
||
|
||
def send_all_bar_to_eitaa_cron():
|
||
url = f'https://eitaayar.ir/api/{token}/sendMessage'
|
||
date = datetime.now().date()
|
||
|
||
all_kill_house_requests = KillHouseRequest.objects.filter(
|
||
trash=False,
|
||
kill_request__recive_date__date=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 = '🗓📢❗ سامانه رصدیار، زنجیره تامین،تولید و توزیع مرغ گوشتی📢❗\n'
|
||
base_message += f'❗{date_time_jalali}❗\n'
|
||
base_message += f' #گزارش_بارها #{date_shamsi}\n\n'
|
||
base_message += f'تعداد کل بارها: {vet_kill_requests.count()}\n'
|
||
base_message += f'➖➖➖➖➖➖➖➖➖➖\n'
|
||
|
||
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})\n\n'
|
||
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:
|
||
data = {
|
||
'chat_id': chat_id_eitaa_token,
|
||
'text': message,
|
||
}
|
||
response = requests.post(url, data=data, verify=False)
|
||
except Exception:
|
||
pass
|
||
|
||
return HttpResponse('پیامها ارسال شد.')
|
||
|
||
|
||
def send_single_bar_to_eitaa(kill_house_request):
|
||
url = f'https://eitaayar.ir/api/{token}/sendMessage'
|
||
date = datetime.now().date()
|
||
|
||
if not kill_house_request:
|
||
return
|
||
|
||
poultry = kill_house_request.province_request.poultry_request.poultry
|
||
|
||
vet_farm = VetFarm.objects.filter(
|
||
trash=False,
|
||
poultry=poultry
|
||
).select_related('vet__user').first()
|
||
|
||
if not vet_farm:
|
||
return
|
||
|
||
vet_mobile = vet_farm.vet.user.mobile
|
||
|
||
chat_id_eitaa = TokenEitaaForEachVet.objects.filter(vet_mobile=vet_mobile).first()
|
||
|
||
if not chat_id_eitaa:
|
||
return
|
||
|
||
date_time_jalali = format_datetime_to_shamsi(date)
|
||
date_shamsi = shamsi_date(date).replace('-', '_')
|
||
|
||
base_message = '🗓📢❗ سامانه رصدیار، زنجیره تامین،تولید و توزیع مرغ گوشتی📢❗\n'
|
||
base_message += f'❗{date_time_jalali}❗\n'
|
||
base_message += f' #گزارش_بار_جدید #{date_shamsi}\n\n'
|
||
base_message += f'➖➖➖➖➖➖➖➖➖➖\n'
|
||
|
||
try:
|
||
main_quantity = kill_house_request.accepted_real_quantity
|
||
real_weight = kill_house_request.accepted_real_weight
|
||
poultry_name = kill_house_request.province_request.poultry_request.poultry.unit_name
|
||
poultry_mobile = kill_house_request.province_request.poultry_request.poultry.user.mobile
|
||
|
||
city = kill_house_request.province_request.poultry_request.poultry.user.city.name
|
||
buyer = kill_house_request.kill_request.kill_house.name
|
||
buyer_city = kill_house_request.kill_request.kill_house.system_address.city.name
|
||
buyer_mobile = kill_house_request.kill_request.kill_house.kill_house_operator.user.mobile
|
||
weight = kill_house_request.province_request.poultry_request.Index_weight
|
||
order_code = kill_house_request.bar_code
|
||
main_quantity = "{:,}".format(int(main_quantity))
|
||
real_weight = "{:,}".format(int(real_weight))
|
||
|
||
if kill_house_request.province_request.poultry_request.direct_buying == True:
|
||
province_type = 'خرید مستقیم'
|
||
elif kill_house_request.province_request.poultry_request.export == True:
|
||
province_type = 'فروش به خارج استان'
|
||
else:
|
||
province_type = 'اتحادیه'
|
||
|
||
message = base_message
|
||
message += f"🟢 مرغدار : {poultry_name} ({poultry_mobile})\n"
|
||
message += f"شهر: {city}\n"
|
||
message += f"کد بار: {order_code}\n"
|
||
message += f"نوع فروش: {province_type}\n"
|
||
message += f" حجم بار :{main_quantity}\n"
|
||
message += f" وزن بار :{real_weight}\n"
|
||
message += f"میانگین وزن : {weight}\n"
|
||
message += f"\n"
|
||
message += f"🔴🔴خریدار : {buyer} ({buyer_mobile})\n"
|
||
message += f"شهر خریدار: {buyer_city}\n"
|
||
message += '\n➖➖➖➖➖➖➖➖➖➖\n'
|
||
|
||
chat_id_eitaa_token = chat_id_eitaa.token
|
||
data = {
|
||
'chat_id': chat_id_eitaa_token,
|
||
'text': message,
|
||
}
|
||
response = requests.post(url, data=data, verify=False)
|
||
|
||
except Exception as e:
|
||
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('پیامها ارسال شد.') |