3204 lines
162 KiB
Python
3204 lines
162 KiB
Python
from datetime import datetime
|
||
import threading
|
||
|
||
import jdatetime
|
||
from django.db.models import Q, Sum, F
|
||
from rest_framework import status, viewsets
|
||
from rest_framework.decorators import permission_classes, api_view
|
||
from rest_framework.permissions import AllowAny
|
||
|
||
from authentication.models import SystemUserProfile, UserMessageSend
|
||
from django.views.decorators.csrf import csrf_exempt
|
||
from oauth2_provider.contrib.rest_framework import (
|
||
TokenHasReadWriteScope,
|
||
)
|
||
from django.http import HttpResponse
|
||
import xml.etree.ElementTree as ET
|
||
|
||
import requests
|
||
|
||
from rest_framework.response import Response
|
||
|
||
from deposit_percent import wage_percent
|
||
from general_urls import base_url_sms, base_url_for_sms_report, base_pos_id
|
||
from panel.KillHouse.helpers import get_finance_info, check_kill_house_remain_limitation_weight
|
||
from panel.helper import UNION_NUMBER, COMPANY_NUMBER, GUILD_NUMBER, UNION_SECOND_NUMBER, SUPPORTER_NUMBER, \
|
||
UNION_THIRD_NUMBER, UNION_FOURTH_NUMBER, UNION_NUMBER_2, COMPANY_NUMBER2, UNION_FIFTH_NUMBER, UNION_SIXTH_NUMBER
|
||
from panel.helper_excel import shamsi_date, to_locale_str
|
||
from panel.models import KillHouseRequest, VetCheckRequest, KillHouseVet, VetCheckAllocations, KillHouse, \
|
||
KillHouseFreeBarInformation, InternalTransaction, ProvinceKillRequest, Poultry, VetFarm, KillHousePurchaseRequest, \
|
||
OutProvincePoultryRequestBuyer, CityOperator, UserReports, ReportsUsers, LastUpdate, PoultryRequest, \
|
||
CompanyBeneficiaryAccount, ManagementSendSms, StewardAllocation, SmsRecipient
|
||
from .sahandsms.sms import USERNAME_SMS, PASSWORD_SMS, USERNAME_SMS_FINANCIAL, PASSWORD_SMS_FINANCIAL, \
|
||
USERNAME_SMS_HAMEDAN, PASSWORD_SMS_HAMEDAN, OUT_SMS_USER, OUT_SMS_PASS
|
||
from panel.helper import check_mobile_number
|
||
from .serializers import ManagementSendSmsSerializer
|
||
|
||
management_sms = ManagementSendSms.objects.all()
|
||
gate_way = management_sms.filter(name='ارسال بدهی').first()
|
||
send_deactivate = management_sms.filter(name='ارسال مسدودی ها').first()
|
||
direct_buying = management_sms.filter(name='خرید مستقیم').first()
|
||
poultry_request = management_sms.filter(name='درخواست کشتار جدید').first()
|
||
poultry_link_out_sale = management_sms.filter(name='ارسال پیامک لینک فروش مرغ به خارج استان').first()
|
||
kill_req_market = management_sms.filter(name='پیامک پنل بورسی').first()
|
||
poultry_req_market = management_sms.filter(name='پیامک به مرغدار درخواست کشتار مرغدار برای پنل بورسی').first()
|
||
steward_allocation = management_sms.filter(name='پیامک کد احراز به مباشر').first()
|
||
guild_register = management_sms.filter(name='پیامک کد احراز برای ثبت صنف/مباشر').first()
|
||
sms_recipient = management_sms.filter(name='پیامک مرغ زنده و لاشه به شماره های خاص').first()
|
||
gate_way_username = gate_way.username
|
||
gate_way_password = gate_way.password
|
||
send_deactivate_username = send_deactivate.username
|
||
send_deactivate_password = send_deactivate.password
|
||
direct_buying_username = direct_buying.username
|
||
direct_buying_password = direct_buying.password
|
||
poultry_request_username = poultry_request.username
|
||
poultry_request_password = poultry_request.password
|
||
poultry_link_out_sale_username = poultry_link_out_sale.username
|
||
poultry_link_out_sale_password = poultry_link_out_sale.password
|
||
kill_req_market_username = kill_req_market.username
|
||
kill_req_market_password = kill_req_market.password
|
||
poultry_req_market_username = poultry_req_market.username
|
||
poultry_req_market_password = poultry_req_market.password
|
||
steward_allocation_username = steward_allocation.username
|
||
steward_allocation_password = steward_allocation.password
|
||
guild_register_username = guild_register.username
|
||
guild_register_password = guild_register.password
|
||
sms_recipient_username = sms_recipient.username
|
||
sms_recipient_password = sms_recipient.password
|
||
|
||
|
||
def sanitize_sms_message(message):
|
||
if not message:
|
||
return message
|
||
forbidden_words = {'شاه': 'ش..ه', 'SHAH': 'SH..AH', 'Shah': 'Sh..ah', 'shah': 'sh..ah'}
|
||
cleaned_message = message
|
||
for forbidden, replacement in forbidden_words.items():
|
||
cleaned_message = cleaned_message.replace(forbidden, replacement)
|
||
return cleaned_message
|
||
|
||
|
||
def send_sms_request(url):
|
||
if 'message=' in url:
|
||
parts = url.split('message=')
|
||
if len(parts) == 2:
|
||
before_message = parts[0] + 'message='
|
||
message_and_after = parts[1]
|
||
if '&' in message_and_after:
|
||
message = message_and_after.split('&')[0]
|
||
after_message = '&' + '&'.join(message_and_after.split('&')[1:])
|
||
else:
|
||
message = message_and_after
|
||
after_message = ''
|
||
cleaned_message = sanitize_sms_message(message)
|
||
url = before_message + cleaned_message + after_message
|
||
return requests.get(url)
|
||
|
||
|
||
def transaction_sms_threading(*mobile):
|
||
percentage = CompanyBeneficiaryAccount.objects.filter(trash=False)
|
||
mother_percent = percentage.filter(unique_code=1).first().percent
|
||
for m in mobile:
|
||
for k, v in m.items():
|
||
if k == 'payer':
|
||
payer = v
|
||
if k == 'date':
|
||
date = v
|
||
if k == 'share':
|
||
share = v
|
||
mother_share = ((int(v) * mother_percent) / 100) if mother_percent > 0 else 0
|
||
|
||
share = "{:,}".format(int(share))
|
||
mother_share = "{:,}".format(int(mother_share))
|
||
|
||
if k == 'mobile':
|
||
phone = v
|
||
if k == 'province':
|
||
province = v
|
||
if k == 'killer':
|
||
killer = v
|
||
check_mobile = check_mobile_number(phone)
|
||
if check_mobile:
|
||
if phone == COMPANY_NUMBER:
|
||
# message = f'تراکنش موفق استان {province} (سهم شرکت)' \
|
||
# f'\n' \
|
||
# f'پرداخت کننده: {killer} {payer} ' \
|
||
# f'\n' \
|
||
# f'تاریخ : {date}' \
|
||
# f'\n' \
|
||
# f' مبلغ سهم شما : {share} ریال '
|
||
# if COMPANY_NUMBER2 is not None:
|
||
# req = send_sms_request(
|
||
# f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={USERNAME_SMS}&password={PASSWORD_SMS}&from=30002501&to={COMPANY_NUMBER2}&message={message}")
|
||
message1 = f'تراکنش موفق استان {province} (سهم شرکت مادر)' \
|
||
f'\n' \
|
||
f'پرداخت کننده: {killer} {payer} ' \
|
||
f'\n' \
|
||
f'تاریخ : {date}' \
|
||
f'\n' \
|
||
f' مبلغ سهم شما : {mother_share} ریال '
|
||
req = send_sms_request(
|
||
f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={OUT_SMS_USER}&password={OUT_SMS_USER}&from=30002501&to=09121355674&message={message1}")
|
||
# message_kiani = f'تراکنش موفق استان {province} (سهم محمد کیانی)' \
|
||
# f'\n' \
|
||
# f'پرداخت کننده: {killer} {payer} ' \
|
||
# f'\n' \
|
||
# f'تاریخ : {date}' \
|
||
# f'\n' \
|
||
# f' مبلغ سهم شما : {kiani_share} ریال '
|
||
# req_kiani = send_sms_request(
|
||
# f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={USERNAME_SMS}&password={PASSWORD_SMS}&from=30002501&to=09364415690&message={message_kiani}")
|
||
# message_momeni = f'تراکنش موفق استان {province} (سهم مومنی)' \
|
||
# f'\n' \
|
||
# f'پرداخت کننده: {killer} {payer} ' \
|
||
# f'\n' \
|
||
# f'تاریخ : {date}' \
|
||
# f'\n' \
|
||
# f' مبلغ سهم شما : {momeni_share} ریال '
|
||
# req_momeni = send_sms_request(
|
||
# f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={USERNAME_SMS}&password={PASSWORD_SMS}&from=30002501&to=09201917727&message={message_momeni}")
|
||
|
||
# req = send_sms_request(
|
||
# f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={USERNAME_SMS}&password={PASSWORD_SMS}&from=30002501&to={COMPANY_NUMBER}&message={message1}")
|
||
# elif phone == UNION_NUMBER:
|
||
# message = f'تراکنش موفق استان {province} (سهم اتحادیه)' \
|
||
# f'\n' \
|
||
# f'پرداخت کننده: {killer} {payer} ' \
|
||
# f'\n' \
|
||
# f'تاریخ : {date}' \
|
||
# f'\n' \
|
||
# f' مبلغ سهم شما : {share} ریال '
|
||
# if UNION_THIRD_NUMBER is not None:
|
||
# req = send_sms_request(
|
||
# f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={USERNAME_SMS}&password={PASSWORD_SMS}&from=30002501&to={UNION_THIRD_NUMBER}&message={message}")
|
||
# req = send_sms_request(
|
||
# f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={USERNAME_SMS}&password={PASSWORD_SMS}&from=30002501&to={COMPANY_NUMBER}&message={message}")
|
||
# elif phone == GUILD_NUMBER:
|
||
# message = f'تراکنش موفق {province} (سهم صنف)' \
|
||
# f'\n' \
|
||
# f'پرداخت کننده: {killer} {payer} ' \
|
||
# f'\n' \
|
||
# f'تاریخ : {date}' \
|
||
# f'\n' \
|
||
# f' مبلغ سهم شما : {share} ریال '
|
||
# if UNION_THIRD_NUMBER is not None:
|
||
# req = send_sms_request(
|
||
# f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={USERNAME_SMS}&password={PASSWORD_SMS}&from=30002501&to={UNION_THIRD_NUMBER}&message={message}")
|
||
# req = send_sms_request(
|
||
# f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={USERNAME_SMS}&password={PASSWORD_SMS}&from=30002501&to={COMPANY_NUMBER}&message={message}")
|
||
# else:
|
||
# message = f'تراکنش موفق' \
|
||
# f'\n' \
|
||
# f'پرداخت کننده: {payer}' \
|
||
# f'\n' \
|
||
# f'تاریخ : {date}' \
|
||
# f'\n' \
|
||
# f' مبلغ سهم شما : {share} ریال '
|
||
# req = send_sms_request(
|
||
# url=f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendFromUrl?username={USERNAME_SMS}&password={PASSWORD_SMS}&message={message}&fromNumber=30002501&toNumber={phone}")
|
||
|
||
|
||
def transaction_sms_threading_in_province(*mobile):
|
||
percentage = CompanyBeneficiaryAccount.objects.filter(trash=False)
|
||
kiani_percent = percentage.filter(unique_code=2).first().percent
|
||
momen_percent = percentage.filter(unique_code=3).first().percent
|
||
for m in mobile:
|
||
for k, v in m.items():
|
||
if k == 'payer':
|
||
payer = v
|
||
if k == 'date':
|
||
date = v
|
||
if k == 'share':
|
||
share = v
|
||
# mother_share=int(v) * 0.06
|
||
kiani_share = ((int(v) * kiani_percent) / 100) if kiani_percent > 0 else 0
|
||
# momeni_share=((int(v) * momen_percent) / 100) if kiani_percent > 0 else 0
|
||
share = "{:,}".format(int(share))
|
||
# mother_share = "{:,}".format(int(mother_share))
|
||
kiani_share = "{:,}".format(int(kiani_share))
|
||
# momeni_share = "{:,}".format(int(momeni_share))
|
||
if k == 'mobile':
|
||
phone = v
|
||
if k == 'province':
|
||
province = v
|
||
if k == 'killer':
|
||
killer = v
|
||
check_mobile = check_mobile_number(phone)
|
||
if check_mobile:
|
||
if phone == COMPANY_NUMBER:
|
||
# message = f'تراکنش موفق استان {province} (سهم شرکت)' \
|
||
# f'\n' \
|
||
# f'پرداخت کننده: {killer} {payer} ' \
|
||
# f'\n' \
|
||
# f'تاریخ : {date}' \
|
||
# f'\n' \
|
||
# f' مبلغ سهم شما : {share} ریال '
|
||
# if COMPANY_NUMBER2 is not None:
|
||
# req = send_sms_request(
|
||
# f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={USERNAME_SMS}&password={PASSWORD_SMS}&from=30002501&to={COMPANY_NUMBER2}&message={message}")
|
||
# message1 = f'تراکنش موفق استان {province} (سهم شرکت مادر)' \
|
||
# f'\n' \
|
||
# f'پرداخت کننده: {killer} {payer} ' \
|
||
# f'\n' \
|
||
# f'تاریخ : {date}' \
|
||
# f'\n' \
|
||
# f' مبلغ سهم شما : {mother_share} ریال '
|
||
# req = send_sms_request(
|
||
# f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={USERNAME_SMS}&password={PASSWORD_SMS}&from=30002501&to=09121355674&message={message1}")
|
||
message_kiani = f'تراکنش موفق استان {province} (سهم محمد کیانی)' \
|
||
f'\n' \
|
||
f'پرداخت کننده: {killer} {payer} ' \
|
||
f'\n' \
|
||
f'تاریخ : {date}' \
|
||
f'\n' \
|
||
f' مبلغ سهم شما : {kiani_share} ریال '
|
||
req_kiani = send_sms_request(
|
||
f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={OUT_SMS_USER}&password={OUT_SMS_PASS}&from=30002501&to=09364415690&message={message_kiani}")
|
||
# message_momeni = f'تراکنش موفق استان {province} (سهم مومنی)' \
|
||
# f'\n' \
|
||
# f'پرداخت کننده: {killer} {payer} ' \
|
||
# f'\n' \
|
||
# f'تاریخ : {date}' \
|
||
# f'\n' \
|
||
# f' مبلغ سهم شما : {momeni_share} ریال '
|
||
req_momeni = send_sms_request(
|
||
f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={OUT_SMS_USER}&password={OUT_SMS_PASS}&from=30002501&to=09201917727&message={message_kiani}")
|
||
|
||
# req = send_sms_request(
|
||
# f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={USERNAME_SMS}&password={PASSWORD_SMS}&from=30002501&to={COMPANY_NUMBER}&message={message1}")
|
||
# elif phone == UNION_NUMBER:
|
||
# message = f'تراکنش موفق استان {province} (سهم اتحادیه)' \
|
||
# f'\n' \
|
||
# f'پرداخت کننده: {killer} {payer} ' \
|
||
# f'\n' \
|
||
# f'تاریخ : {date}' \
|
||
# f'\n' \
|
||
# f' مبلغ سهم شما : {share} ریال '
|
||
# if UNION_THIRD_NUMBER is not None:
|
||
# req = send_sms_request(
|
||
# f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={USERNAME_SMS}&password={PASSWORD_SMS}&from=30002501&to={UNION_THIRD_NUMBER}&message={message}")
|
||
# req = send_sms_request(
|
||
# f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={USERNAME_SMS}&password={PASSWORD_SMS}&from=30002501&to={COMPANY_NUMBER}&message={message}")
|
||
# elif phone == GUILD_NUMBER:
|
||
# message = f'تراکنش موفق {province} (سهم صنف)' \
|
||
# f'\n' \
|
||
# f'پرداخت کننده: {killer} {payer} ' \
|
||
# f'\n' \
|
||
# f'تاریخ : {date}' \
|
||
# f'\n' \
|
||
# f' مبلغ سهم شما : {share} ریال '
|
||
# if UNION_THIRD_NUMBER is not None:
|
||
# req = send_sms_request(
|
||
# f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={USERNAME_SMS}&password={PASSWORD_SMS}&from=30002501&to={UNION_THIRD_NUMBER}&message={message}")
|
||
# req = send_sms_request(
|
||
# f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={USERNAME_SMS}&password={PASSWORD_SMS}&from=30002501&to={COMPANY_NUMBER}&message={message}")
|
||
# else:
|
||
# message = f'تراکنش موفق' \
|
||
# f'\n' \
|
||
# f'پرداخت کننده: {payer}' \
|
||
# f'\n' \
|
||
# f'تاریخ : {date}' \
|
||
# f'\n' \
|
||
# f' مبلغ سهم شما : {share} ریال '
|
||
# req = send_sms_request(
|
||
# url=f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendFromUrl?username={USERNAME_SMS}&password={PASSWORD_SMS}&message={message}&fromNumber=30002501&toNumber={phone}")
|
||
|
||
|
||
def transaction_sms_threading_for_company(*mobile):
|
||
pass
|
||
# for m in mobile:
|
||
# for k, v in m.items():
|
||
# if k == 'payer':
|
||
# payer = v
|
||
# if k == 'date':
|
||
# date = v
|
||
# if k == 'share':
|
||
# share = v
|
||
# share = "{:,}".format(int(share))
|
||
# if k == 'mobile':
|
||
# phone = v
|
||
# if k == 'province':
|
||
# province=v
|
||
# if k == 'killer':
|
||
# killer=v
|
||
# message = f'تراکنش موفق استان {province} (کل سهم)' \
|
||
# f'\n' \
|
||
# f'پرداخت کننده: {killer} {payer} ' \
|
||
# f'\n' \
|
||
# f'تاریخ : {date}' \
|
||
# f'\n' \
|
||
# f' مبلغ کل سهم : {share} ریال '
|
||
# req = send_sms_request(
|
||
# url=f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendFromUrl?username={USERNAME_SMS}&password={PASSWORD_SMS}&message={message}&fromNumber=30002501&toNumber={phone}")
|
||
|
||
|
||
def transaction_sms_threading_appreciation(user, mobile):
|
||
message = f'کاربر گرامی {user}' \
|
||
'\n' \
|
||
'از پرداخت شما سپاسگزاریم.' \
|
||
'\n' \
|
||
'(سامانه رصدیار)'
|
||
check_mobile = check_mobile_number(mobile)
|
||
if check_mobile:
|
||
req = send_sms_request(
|
||
url=f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendFromUrl?username={USERNAME_SMS_FINANCIAL}&password={PASSWORD_SMS_FINANCIAL}&message={message}&fromNumber=30002501&toNumber={mobile}")
|
||
|
||
|
||
def user_sms_threading(mobile, message):
|
||
for i in mobile:
|
||
check_mobile = check_mobile_number(i)
|
||
if check_mobile:
|
||
req = send_sms_request(
|
||
url=f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendFromUrl?username={USERNAME_SMS}&password={PASSWORD_SMS}&message={message}&fromNumber=30002501&toNumber={i}")
|
||
|
||
msg = UserMessageSend(
|
||
|
||
message=str(message),
|
||
)
|
||
msg.save()
|
||
|
||
|
||
@api_view(["POST"])
|
||
@csrf_exempt
|
||
@permission_classes([TokenHasReadWriteScope])
|
||
def user_sms(request):
|
||
operator = SystemUserProfile.objects.get(user=request.user)
|
||
roles = None
|
||
users = None
|
||
message = request.data['message']
|
||
if 'role' in request.data.keys():
|
||
roles = request.data['role']
|
||
if 'user' in request.data.keys():
|
||
users = request.data['user']
|
||
|
||
if roles != None and users != None:
|
||
users = SystemUserProfile.objects.filter(role__name__in=roles, key__in=users,
|
||
province=operator.province).only('mobile').order_by('id').values_list(
|
||
'mobile', flat=True)
|
||
elif roles != None:
|
||
users = SystemUserProfile.objects.filter(role__name__in=roles, province=operator.province).only(
|
||
'mobile').order_by('id').values_list('mobile', flat=True)
|
||
else:
|
||
users = SystemUserProfile.objects.filter(key__in=users, province=operator.province).only('mobile').order_by(
|
||
'id').values_list('mobile', flat=True)
|
||
|
||
send_sms = threading.Thread(target=user_sms_threading, args=(users, message))
|
||
send_sms.start()
|
||
|
||
return Response({'msg': 'send'})
|
||
|
||
|
||
def hatching_sms(mobile, poultry_fullname, quantity, date, chicken_breed, province, city
|
||
):
|
||
message = ' ثبت جوجه ریزی جدید:\n مرغدار:{0}\nتعداد:{1}\nتاریخ:{2}\nنژاد:{3}\nآدرس:استان {4},شهر {5}'.format(
|
||
poultry_fullname, quantity, date, chicken_breed, province, city)
|
||
check_mobile = check_mobile_number(mobile)
|
||
if check_mobile:
|
||
u = "http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={}&password={}&from=30002501&to={}&message={}".format(
|
||
USERNAME_SMS, PASSWORD_SMS,
|
||
mobile, message)
|
||
|
||
url = u.format()
|
||
|
||
payload = {}
|
||
headers = {"Content-Type": "application/x-www-form-urlencoded"}
|
||
|
||
response = requests.request("GET", url, headers=headers, data=payload)
|
||
|
||
print(response.text)
|
||
|
||
|
||
def operator_hatching_sms(mobile, poultry_fullname, quantity, date, chicken_breed, province, city,
|
||
|
||
):
|
||
message = ' ثبت جوجه ریزی جدید:\n مرغدار:{0}\nتعداد:{1}\nتاریخ:{2}\nنژاد:{3}\nآدرس:استان {4},شهر {5}'.format(
|
||
poultry_fullname, quantity, date, chicken_breed, province, city)
|
||
check_mobile = check_mobile_number(mobile)
|
||
if check_mobile:
|
||
u = "http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={}&password={}&from=30002501&to={}&message={}".format(
|
||
USERNAME_SMS, PASSWORD_SMS,
|
||
mobile, message)
|
||
|
||
url = u.format()
|
||
|
||
payload = {}
|
||
headers = {"Content-Type": "application/x-www-form-urlencoded"}
|
||
|
||
response = requests.request("GET", url, headers=headers, data=payload)
|
||
|
||
print(response.text)
|
||
|
||
|
||
# USERNAME_SMS
|
||
def operator_poultry_request_sms(mobile, poultry_fullname, quantity, chicken_breed,
|
||
order_code, send_date, sale_in_province, amount, request_kill_house, poultry_mobile
|
||
|
||
):
|
||
sale_type = 'آزاد' if sale_in_province == True else 'دولتی'
|
||
amount = "{:,}".format(int(amount))
|
||
quantity = "{:,}".format(int(quantity))
|
||
message = 'درخواست کشتار جدید' \
|
||
f'\n' \
|
||
f'تعداد:{quantity}' \
|
||
f'\n' \
|
||
f'نژاد:{chicken_breed}' \
|
||
f'\n' \
|
||
f'تاریخ کشتار:{send_date}' \
|
||
f'\n' \
|
||
f'نوع فروش:{sale_type}' \
|
||
f'\n' \
|
||
f'مرغدار:{poultry_fullname}' \
|
||
f'\n' \
|
||
f'کدسفارش:{order_code}' \
|
||
f'\n' \
|
||
f'قیمت مرغدار:{amount}' \
|
||
f'\n' \
|
||
f'(سامانه رصدیار)' \
|
||
# message = 'درخواست کشتار\n مرغدار:{0}\nتعداد:{1}\nنژاد:{2}\n کدسفارش:{3}\nتاریخ کشتار:{4}'.format(
|
||
# poultry_fullname, quantity, chicken_breed,
|
||
# order_code, send_date)
|
||
check_mobile = check_mobile_number(mobile)
|
||
if check_mobile:
|
||
u = "http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={}&password={}&from=30002501&to={}&message={}".format(
|
||
poultry_request_username, poultry_request_password,
|
||
mobile, message)
|
||
|
||
url = u.format()
|
||
|
||
payload = {}
|
||
headers = {"Content-Type": "application/x-www-form-urlencoded"}
|
||
|
||
response = requests.request("GET", url, headers=headers, data=payload)
|
||
|
||
if UNION_NUMBER_2 is not None:
|
||
req = send_sms_request(
|
||
f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={poultry_request_username}&password={poultry_request_password}&from=30002501&to={UNION_NUMBER_2}&message={message}")
|
||
|
||
message2 = 'درخواست کشتار جدید' \
|
||
f'\n' \
|
||
f'مرغدار:{poultry_fullname}' \
|
||
f'\n' \
|
||
f'تعداد:{quantity}' \
|
||
f'\n' \
|
||
f'نژاد:{chicken_breed}' \
|
||
f'\n' \
|
||
f'تاریخ کشتار:{send_date}' \
|
||
f'\n' \
|
||
f'نوع فروش:{sale_type}' \
|
||
f'\n' \
|
||
f'کشتارگاه:{request_kill_house}' \
|
||
f'\n' \
|
||
f'کدسفارش:{order_code}' \
|
||
f'\n' \
|
||
f'قیمت :{amount} ریال' \
|
||
f'\n' \
|
||
f'(سامانه رصدیار)'
|
||
|
||
req = send_sms_request(
|
||
f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={poultry_request_username}&password={poultry_request_password}&from=30002501&to={poultry_mobile}&message={message2}")
|
||
|
||
|
||
# USERNAME_SMS
|
||
def operator_out_poultry_request_sms(mobile, poultry_fullname, quantity, chicken_breed,
|
||
order_code, send_date, sale_in_province, amount, vet_mobile=None
|
||
|
||
):
|
||
sale_type = 'آزاد' if sale_in_province == True else 'دولتی'
|
||
amount = "{:,}".format(int(amount))
|
||
quantity = "{:,}".format(int(quantity))
|
||
message = 'درخواست کشتار آزاد' \
|
||
f'\n' \
|
||
f'تعداد:{quantity}' \
|
||
f'\n' \
|
||
f'نژاد:{chicken_breed}' \
|
||
f'\n' \
|
||
f'تاریخ کشتار:{send_date}' \
|
||
f'\n' \
|
||
f'نوع فروش:{sale_type}' \
|
||
f'\n' \
|
||
f'مرغدار:{poultry_fullname}' \
|
||
f'\n' \
|
||
f'کدسفارش:{order_code}' \
|
||
f'\n' \
|
||
f'قیمت مرغدار:{amount}' \
|
||
f'\n' \
|
||
f'(سامانه رصدیار)' \
|
||
# message = 'درخواست کشتار آزاد\n مرغدار:{0}\nتعداد:{1}\nنژاد:{2}\n کدسفارش:{3}\nتاریخ کشتار:{4}'.format(
|
||
# poultry_fullname, quantity, chicken_breed,
|
||
# order_code, send_date)
|
||
check_mobile = check_mobile_number(mobile)
|
||
if check_mobile:
|
||
u = "http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={}&password={}&from=30002501&to={}&message={}".format(
|
||
USERNAME_SMS, PASSWORD_SMS,
|
||
mobile, message)
|
||
|
||
url = u.format()
|
||
|
||
payload = {}
|
||
headers = {"Content-Type": "application/x-www-form-urlencoded"}
|
||
|
||
response = requests.request("GET", url, headers=headers, data=payload)
|
||
|
||
if UNION_NUMBER_2 is not None:
|
||
req = send_sms_request(
|
||
f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={USERNAME_SMS}&password={PASSWORD_SMS}&from=30002501&to={UNION_NUMBER_2}&message={message}")
|
||
if vet_mobile is not None:
|
||
req = send_sms_request(
|
||
f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={USERNAME_SMS}&password={PASSWORD_SMS}&from=30002501&to={vet_mobile}&message={message}")
|
||
|
||
|
||
def poultry_request_receive_city_accept_sms(mobile, send_date, order_code, free_sale_in_province
|
||
|
||
):
|
||
sale_type = 'آزاد' if free_sale_in_province == True else 'دولتی'
|
||
message = ' مرغدار گرامی درخواست کشتار شما با نوع:{2} به تاریخ {0} با شماره سفارش:{1} توسط شهرستان تایید شد.'.format(
|
||
send_date, order_code, sale_type)
|
||
check_mobile = check_mobile_number(mobile)
|
||
if check_mobile:
|
||
u = "http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={}&password={}&from=30002501&to={}&message={}".format(
|
||
USERNAME_SMS, PASSWORD_SMS,
|
||
mobile, message)
|
||
|
||
url = u.format()
|
||
|
||
payload = {}
|
||
headers = {"Content-Type": "application/x-www-form-urlencoded"}
|
||
|
||
response = requests.request("GET", url, headers=headers, data=payload)
|
||
|
||
print(response.text)
|
||
|
||
|
||
def poultry_request_receive_province_accept_sms(mobile, order_code
|
||
):
|
||
message = 'درخواست کشتار با کد سفارش:{0} توسط استان تایید شد.'.format(
|
||
order_code)
|
||
check_mobile = check_mobile_number(mobile)
|
||
if check_mobile:
|
||
u = "http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={}&password={}&from=30002501&to={}&message={}".format(
|
||
USERNAME_SMS, PASSWORD_SMS,
|
||
mobile, message)
|
||
|
||
url = u.format()
|
||
|
||
payload = {}
|
||
headers = {"Content-Type": "application/x-www-form-urlencoded"}
|
||
|
||
response = requests.request("GET", url, headers=headers, data=payload)
|
||
|
||
print(response.text)
|
||
|
||
|
||
# USERNAME_SMS
|
||
def confirm_price_poultry_request_sms(mobile, poultry_fullname, quantity, chicken_breed, order_code, send_date,
|
||
free_sale_in_province, amount, request_kill_house, confirm_code):
|
||
sale_type = 'آزاد' if free_sale_in_province == True else 'دولتی'
|
||
|
||
message = 'درخواست کشتار جدید' \
|
||
f'\n' \
|
||
f'مرغدار:{poultry_fullname}' \
|
||
f'\n' \
|
||
f'تعداد:{quantity}' \
|
||
f'\n' \
|
||
f'نژاد:{chicken_breed}' \
|
||
f'\n' \
|
||
f'تاریخ کشتار:{send_date}' \
|
||
f'\n' \
|
||
f'نوع فروش:{sale_type}' \
|
||
f'\n' \
|
||
f'کشتارگاه:{request_kill_house}' \
|
||
f'\n' \
|
||
f'کدسفارش:{order_code}' \
|
||
f'\n' \
|
||
f'قیمت :{amount} ریال' \
|
||
f'\n' \
|
||
f'کداحراز :{confirm_code}' \
|
||
f'\n' \
|
||
f'(سامانه رصدیار)'
|
||
check_mobile = check_mobile_number(mobile)
|
||
if check_mobile:
|
||
u = "http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={}&password={}&from=30002501&to={}&message={}".format(
|
||
poultry_request_username, poultry_request_password,
|
||
mobile, message)
|
||
|
||
url = u.format()
|
||
|
||
payload = {}
|
||
headers = {"Content-Type": "application/x-www-form-urlencoded"}
|
||
|
||
response = requests.request("GET", url, headers=headers, data=payload)
|
||
|
||
print(response.text)
|
||
|
||
|
||
# USERNAME_SMS
|
||
def confirm_price_poultry_request_direct_buying_sms(mobile, poultry_fullname, quantity, chicken_breed, send_date,
|
||
free_sale_in_province, amount, request_kill_house, confirm_code):
|
||
sale_type = 'آزاد' if free_sale_in_province == True else 'دولتی'
|
||
|
||
# message = 'درخواست خرید مستقیم:' \
|
||
# f'\n' \
|
||
# f'تعداد:{quantity}' \
|
||
# f'\n' \
|
||
# f'تاریخ کشتار:{send_date}' \
|
||
# f'\n' \
|
||
# f'نوع فروش:{sale_type}' \
|
||
# f'\n' \
|
||
# f'خریدار:{request_kill_house}' \
|
||
# f'\n' \
|
||
# f'قیمت :{int(amount)} ریال' \
|
||
# f'\n' \
|
||
# f'کداحراز :{confirm_code}' \
|
||
# f'\n' \
|
||
# f'(سامانه رصدیار)'
|
||
|
||
message = 'درخواست خرید مستقیم:' \
|
||
f'\n' \
|
||
f'مرغدار:{poultry_fullname}' \
|
||
f'\n' \
|
||
f'تعداد:{quantity}' \
|
||
f'\n' \
|
||
f'نژاد:{chicken_breed}' \
|
||
f'\n' \
|
||
f'تاریخ کشتار:{send_date}' \
|
||
f'\n' \
|
||
f'نوع فروش:{sale_type}' \
|
||
f'\n' \
|
||
f'خریدار:{request_kill_house}' \
|
||
f'\n' \
|
||
f'قیمت :{int(amount)} ریال' \
|
||
f'\n' \
|
||
f'کداحراز :{confirm_code}' \
|
||
f'\n' \
|
||
f'(سامانه رصدیار)'
|
||
check_mobile = check_mobile_number(mobile)
|
||
if check_mobile:
|
||
u = "http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={}&password={}&from=30002501&to={}&message={}".format(
|
||
direct_buying_username, direct_buying_password,
|
||
mobile, message)
|
||
|
||
url = u.format()
|
||
|
||
payload = {}
|
||
headers = {"Content-Type": "application/x-www-form-urlencoded"}
|
||
|
||
response = requests.request("GET", url, headers=headers, data=payload)
|
||
|
||
|
||
# USERNAME_SMS
|
||
def kill_request_province_sms(mobile, kill_house_name, quantity, chicken_breed, send_date, province, city,
|
||
|
||
):
|
||
message = ' اعلام نیاز جدید کشتارگاه:\n {0}\n تعداد درخواست:{1}\nنژاد:{2}\nتاریخ کشتار:{3}\nآدرس:استان {4}, شهر {5}\n'.format(
|
||
kill_house_name, quantity, chicken_breed, send_date, province, city)
|
||
check_mobile = check_mobile_number(mobile)
|
||
if check_mobile:
|
||
u = "http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={}&password={}&from=30002501&to={}&message={}".format(
|
||
USERNAME_SMS, PASSWORD_SMS,
|
||
mobile, message)
|
||
|
||
url = u.format()
|
||
|
||
payload = {}
|
||
headers = {"Content-Type": "application/x-www-form-urlencoded"}
|
||
|
||
response = requests.request("GET", url, headers=headers, data=payload)
|
||
|
||
print(response.text)
|
||
if UNION_NUMBER_2 is not None:
|
||
req = send_sms_request(
|
||
f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={USERNAME_SMS}&password={PASSWORD_SMS}&from=30002501&to={UNION_NUMBER_2}&message={message}")
|
||
|
||
|
||
def kill_request_delete_province_sms(mobile, kill_house_name, quantity, chicken_breed, send_date, province, city,
|
||
|
||
):
|
||
message = 'لغو درخواست کشتار:\n {0}\n تعداد درخواست:{1}\nنژاد:{2}\nتاریخ کشتار:{3}\nآدرس:استان {4}, شهر {5}'.format(
|
||
kill_house_name, quantity, chicken_breed, send_date, province, city)
|
||
check_mobile = check_mobile_number(mobile)
|
||
if check_mobile:
|
||
u = "http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={}&password={}&from=30002501&to={}&message={}".format(
|
||
USERNAME_SMS, PASSWORD_SMS,
|
||
mobile, message)
|
||
|
||
url = u.format()
|
||
|
||
payload = {}
|
||
headers = {"Content-Type": "application/x-www-form-urlencoded"}
|
||
|
||
response = requests.request("GET", url, headers=headers, data=payload)
|
||
|
||
print(response.text)
|
||
|
||
|
||
def province_kill_request_to_kill_house_sms(mobile, quantity, chicken_breed, send_date, poultry_name,
|
||
poultry_mobile, province, city, sale_in_province, amount, kill_house_name
|
||
|
||
):
|
||
sale_type = 'آزاد' if sale_in_province == True else 'دولتی'
|
||
amount = "{:,}".format(int(amount))
|
||
quantity = "{:,}".format(int(quantity))
|
||
message = 'تخصیص کشتار جدید' \
|
||
f'\n' \
|
||
f'تعداد:{quantity}' \
|
||
f'\n' \
|
||
f'نژاد:{chicken_breed}' \
|
||
f'\n' \
|
||
f'تاریخ کشتار:{send_date}' \
|
||
f'\n' \
|
||
f'نوع فروش:{sale_type}' \
|
||
f'\n' \
|
||
f'خریدار:{kill_house_name}' \
|
||
f'\n' \
|
||
f'مرغدار:{poultry_name}' \
|
||
f'\n' \
|
||
f'تلفن مرغدار:{poultry_mobile}' \
|
||
f'\n' \
|
||
f'آدرس:{province} - {city}' \
|
||
f'\n' \
|
||
f'قیمت مرغدار:{amount}' \
|
||
f'\n' \
|
||
f'(سامانه رصدیار)' \
|
||
# message = 'تخصیص کشتار جدید:\n تعداد:{0}\n نژاد: {1}\nتاریخ کشتار:{2}\nمرغدار:{3}\n تلفن مرغدار:{4}\nآدرس:استان {5}, شهر {6}\n '.format(
|
||
# quantity, chicken_breed, send_date, poultry_name, poultry_mobile, province, city,
|
||
# )
|
||
check_mobile = check_mobile_number(mobile)
|
||
if check_mobile:
|
||
u = "http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={}&password={}&from=30002501&to={}&message={}".format(
|
||
USERNAME_SMS, PASSWORD_SMS,
|
||
mobile, message)
|
||
|
||
url = u.format()
|
||
|
||
payload = {}
|
||
headers = {"Content-Type": "application/x-www-form-urlencoded"}
|
||
|
||
response = requests.request("GET", url, headers=headers, data=payload)
|
||
|
||
print(response.text)
|
||
if UNION_NUMBER_2 is not None:
|
||
req = send_sms_request(
|
||
f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={USERNAME_SMS}&password={PASSWORD_SMS}&from=30002501&to={UNION_NUMBER_2}&message={message}")
|
||
|
||
|
||
def kill_house_province_kill_request_accept_to_province_sms(mobile, provice_operator_name, quantity,
|
||
chicken_breed, send_date, poultry_name,
|
||
poultry_mobile, province, city, kill_house_name,
|
||
|
||
):
|
||
message = ' اپراتور گرامی: {0}\n تعداد {1} مرغ با نژاد: {2}\nدر تاریخ کشتار:{3}\n از مرغدار:{4} با شماره تماس:{5}\nبه آدرس:استان {6}, شهر {7}\n توسط:{8} تایید شد.'.format(
|
||
provice_operator_name, quantity, chicken_breed, send_date, poultry_name, poultry_mobile, province, city,
|
||
kill_house_name
|
||
)
|
||
check_mobile = check_mobile_number(mobile)
|
||
if check_mobile:
|
||
u = "http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={}&password={}&from=30002501&to={}&message={}".format(
|
||
USERNAME_SMS, PASSWORD_SMS,
|
||
mobile, message)
|
||
|
||
url = u.format()
|
||
|
||
payload = {}
|
||
headers = {"Content-Type": "application/x-www-form-urlencoded"}
|
||
|
||
response = requests.request("GET", url, headers=headers, data=payload)
|
||
|
||
print(response.text)
|
||
|
||
|
||
def kill_house_request_to_poultry_sms(mobile, quantity, kill_house_name, send_date, driver_name,
|
||
driver_mobile,
|
||
type_car, pelak
|
||
|
||
):
|
||
message = 'اطلاعات تحویل بار:\n تعداد:{0}\nخریدار:{1}\nتاریخ تحویل:{2}\n راننده:{3}\n تلفن راننده:{4}\n ماشین:{5}\n با پلاک {6}'.format(
|
||
quantity, kill_house_name, send_date, driver_name, driver_mobile, type_car, pelak
|
||
)
|
||
check_mobile = check_mobile_number(mobile)
|
||
if check_mobile:
|
||
u = "http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={}&password={}&from=30002501&to={}&message={}".format(
|
||
USERNAME_SMS, PASSWORD_SMS,
|
||
mobile, message)
|
||
|
||
url = u.format()
|
||
|
||
payload = {}
|
||
headers = {"Content-Type": "application/x-www-form-urlencoded"}
|
||
|
||
response = requests.request("GET", url, headers=headers, data=payload)
|
||
|
||
print(response.text)
|
||
|
||
|
||
def kill_house_request_to_vet_farm_clearnce_sms(mobile, quantity, index_weight, total_weight, poultry_name,
|
||
poultry_mobile, kill_house_user_name, kill_house_user_mobile, send_date,
|
||
driver_name,
|
||
driver_mobile,
|
||
type_car, pelak
|
||
|
||
):
|
||
message = 'اطلاعات بار(کد قرنطینه):\n تعداد:{0}\nمیانگین وزن:{1}\nوزن کل:{2}\nفروشنده:{3}-{4}\nخریدار:{5}-{6}\nتاریخ تحویل:{7}\nراننده:{8}-{9}\nماشین:{10}-{11}'.format(
|
||
quantity, index_weight, total_weight, poultry_name, poultry_mobile, kill_house_user_name,
|
||
kill_house_user_mobile, send_date, driver_name,
|
||
driver_mobile,
|
||
type_car, pelak
|
||
)
|
||
check_mobile = check_mobile_number(mobile)
|
||
if check_mobile:
|
||
u = "http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={}&password={}&from=30002501&to={}&message={}".format(
|
||
USERNAME_SMS, PASSWORD_SMS,
|
||
mobile, message)
|
||
|
||
url = u.format()
|
||
|
||
payload = {}
|
||
headers = {"Content-Type": "application/x-www-form-urlencoded"}
|
||
|
||
response = requests.request("GET", url, headers=headers, data=payload)
|
||
|
||
print(response.text)
|
||
|
||
|
||
def kill_house_request_to_driver_sms(mobile, send_date, receive_time, quantity, chicken_breed, poultry_name,
|
||
poultry_mobile,
|
||
poultry_province, poultry_city, poultry_address,
|
||
kill_house_name,
|
||
kill_house_mobile,
|
||
kill_house_province,
|
||
kill_house_city, kill_house_address
|
||
|
||
):
|
||
message = 'اطلاعات تحویل بار:\nتاریخ:{0}\nازه زمانی:{1}\nتعداد:{2}\nنژاد:{3}\n مبدا:\nمرغدار:{4}\nشماره تماس:{5}\nآدرس:{6},{7},{8}\n مقصد:\nکشتارگاه:{9}\nشماره تماس:{10}\nآدرس:{11},{12},{13}\n'.format(
|
||
send_date, receive_time, quantity, chicken_breed, poultry_name, poultry_mobile,
|
||
poultry_province, poultry_city, poultry_address,
|
||
kill_house_name,
|
||
kill_house_mobile,
|
||
kill_house_province,
|
||
kill_house_city, kill_house_address
|
||
)
|
||
check_mobile = check_mobile_number(mobile)
|
||
if check_mobile:
|
||
u = "http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={}&password={}&from=30002501&to={}&message={}".format(
|
||
USERNAME_SMS, PASSWORD_SMS,
|
||
mobile, message)
|
||
|
||
url = u.format()
|
||
|
||
payload = {}
|
||
headers = {"Content-Type": "application/x-www-form-urlencoded"}
|
||
|
||
response = requests.request("GET", url, headers=headers, data=payload)
|
||
|
||
print(response.text)
|
||
|
||
|
||
def kill_house_request_to_vet_farm_sms(mobile, send_date, receive_time, quantity, chicken_breed, poultry_name,
|
||
poultry_mobile,
|
||
poultry_province, poultry_city, poultry_address,
|
||
kill_house_name,
|
||
kill_house_mobile,
|
||
kill_house_province,
|
||
kill_house_city, kill_house_address,
|
||
driver_name,
|
||
driver_mobile,
|
||
driver_car,
|
||
pelak,
|
||
|
||
):
|
||
message = 'اعلام کد ترخیص:\nتاریخ:{0}\nبازه زمانی:{1}\nتعداد:{2}\nنژاد:{3}\n مبدا:\nمرغدار:{4}\nشماره تماس:{5}\nآدرس:{6},{7},{8}\n مقصد:\nکشتارگاه:{9}\nشماره تماس:{10}\nآدرس:{11},{12},{13}\راننده:{14}\n تلفن راننده:{15}\n ماشین:{16}\n با پلاک {17}'.format(
|
||
send_date, receive_time, quantity, chicken_breed, poultry_name, poultry_mobile,
|
||
poultry_province, poultry_city, poultry_address,
|
||
kill_house_name,
|
||
kill_house_mobile,
|
||
kill_house_province,
|
||
kill_house_city, kill_house_address,
|
||
driver_name,
|
||
driver_mobile,
|
||
driver_car,
|
||
pelak,
|
||
)
|
||
check_mobile = check_mobile_number(mobile)
|
||
if check_mobile:
|
||
u = "http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={}&password={}&from=30002501&to={}&message={}".format(
|
||
USERNAME_SMS, PASSWORD_SMS,
|
||
mobile, message)
|
||
|
||
url = u.format()
|
||
|
||
payload = {}
|
||
headers = {"Content-Type": "application/x-www-form-urlencoded"}
|
||
|
||
response = requests.request("GET", url, headers=headers, data=payload)
|
||
|
||
print(response.text)
|
||
|
||
|
||
def kill_house_request_to_kill_house_vet_sms(mobile, send_date, receive_time, quantity, chicken_breed, poultry_name,
|
||
driver_name,
|
||
driver_car,
|
||
pelak,
|
||
|
||
):
|
||
message = 'اعلام تحویل بار:\nتاریخ:{0}\nبازه زمانی:{1}\nتعداد:{2}\nنژاد:{3}\nاز مرغدار:{4}\nراننده:{5}\nماشین:{6}\nبا پلاک {7}\nتحویل شما داده میشود.'.format(
|
||
send_date, receive_time, quantity, chicken_breed, poultry_name,
|
||
driver_name,
|
||
driver_car,
|
||
pelak,
|
||
)
|
||
check_mobile = check_mobile_number(mobile)
|
||
if check_mobile:
|
||
u = "http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={}&password={}&from=30002501&to={}&message={}".format(
|
||
USERNAME_SMS, PASSWORD_SMS,
|
||
mobile, message)
|
||
|
||
url = u.format()
|
||
|
||
payload = {}
|
||
headers = {"Content-Type": "application/x-www-form-urlencoded"}
|
||
|
||
response = requests.request("GET", url, headers=headers, data=payload)
|
||
|
||
print(response.text)
|
||
|
||
|
||
def kill_house_vet_to_poultry_sms(mobile, send_date, receive_time, quantity, chicken_breed, poultry_name,
|
||
driver_name,
|
||
driver_car,
|
||
pelak,
|
||
|
||
):
|
||
message = 'اعلام تاییدتحویل بار:\nتاریخ:{0}\nبازه زمانی:{1}\nتعداد:{2}\nنژاد:{3}\nاز مرغدار:{4}\nراننده:{5}\nماشین:{6}\nبا پلاک {7}\nتحویل کشتارگاه شد.'.format(
|
||
send_date, receive_time, quantity, chicken_breed, poultry_name,
|
||
driver_name,
|
||
driver_car,
|
||
pelak,
|
||
)
|
||
check_mobile = check_mobile_number(mobile)
|
||
if check_mobile:
|
||
u = "http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={}&password={}&from=30002501&to={}&message={}".format(
|
||
USERNAME_SMS, PASSWORD_SMS,
|
||
mobile, message)
|
||
|
||
url = u.format()
|
||
|
||
payload = {}
|
||
headers = {"Content-Type": "application/x-www-form-urlencoded"}
|
||
|
||
response = requests.request("GET", url, headers=headers, data=payload)
|
||
|
||
print(response.text)
|
||
|
||
|
||
def kill_house_vet_to_province_sms(mobile, send_date, receive_time, quantity, chicken_breed, poultry_name,
|
||
driver_name,
|
||
driver_car,
|
||
pelak,
|
||
|
||
):
|
||
message = 'اعلام تاییدتحویل بار:\nتاریخ:{0}\nبازه زمانی:{1}\nتعداد:{2}\nنژاد:{3}\nاز مرغدار:{4}\nراننده:{5}\nماشین:{6}\nبا پلاک {7}\nتحویل کشتارگاه شد.'.format(
|
||
send_date, receive_time, quantity, chicken_breed, poultry_name,
|
||
driver_name,
|
||
driver_car,
|
||
pelak,
|
||
)
|
||
check_mobile = check_mobile_number(mobile)
|
||
if check_mobile:
|
||
u = "http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={}&password={}&from=30002501&to={}&message={}".format(
|
||
USERNAME_SMS, PASSWORD_SMS,
|
||
mobile, message)
|
||
|
||
url = u.format()
|
||
|
||
payload = {}
|
||
headers = {"Content-Type": "application/x-www-form-urlencoded"}
|
||
|
||
response = requests.request("GET", url, headers=headers, data=payload)
|
||
|
||
print(response.text)
|
||
|
||
|
||
def kill_house_vet_to_kill_house_sms(mobile, send_date, receive_time, quantity, chicken_breed, poultry_name,
|
||
driver_name,
|
||
driver_car,
|
||
pelak,
|
||
|
||
):
|
||
message = 'اعلام تاییدتحویل بار:\nتاریخ:{0}\nبازه زمانی:{1}\nتعداد:{2}\nنژاد:{3}\nاز مرغدار:{4}\nراننده:{5}\nماشین:{6}\nبا پلاک {7}\nتحویل کشتارگاه شد.'.format(
|
||
send_date, receive_time, quantity, chicken_breed, poultry_name,
|
||
driver_name,
|
||
driver_car,
|
||
pelak,
|
||
)
|
||
check_mobile = check_mobile_number(mobile)
|
||
if check_mobile:
|
||
u = "http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={}&password={}&from=30002501&to={}&message={}".format(
|
||
USERNAME_SMS, PASSWORD_SMS,
|
||
mobile, message)
|
||
|
||
url = u.format()
|
||
|
||
payload = {}
|
||
headers = {"Content-Type": "application/x-www-form-urlencoded"}
|
||
|
||
response = requests.request("GET", url, headers=headers, data=payload)
|
||
|
||
print(response.text)
|
||
|
||
|
||
def province_kill_request_reject_sms(mobile, kill_house_name
|
||
):
|
||
message = ' کاربر گرامی: {0}\n درخواست اولیه کشتار شما توسط استان رد شد.'.format(
|
||
kill_house_name
|
||
)
|
||
check_mobile = check_mobile_number(mobile)
|
||
if check_mobile:
|
||
u = "http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={}&password={}&from=30002501&to={}&message={}".format(
|
||
USERNAME_SMS, PASSWORD_SMS,
|
||
mobile, message)
|
||
|
||
url = u.format()
|
||
|
||
payload = {}
|
||
headers = {"Content-Type": "application/x-www-form-urlencoded"}
|
||
|
||
response = requests.request("GET", url, headers=headers, data=payload)
|
||
|
||
print(response.text)
|
||
|
||
|
||
def allow_poultry_city_province_sms(mobile, Poultry_name
|
||
):
|
||
message = ' کاربر گرامی:\nوکالت ثبت درخواست کشتار توسط مرغدار:{} برای شما صادر شد.'.format(
|
||
Poultry_name
|
||
)
|
||
check_mobile = check_mobile_number(mobile)
|
||
if check_mobile:
|
||
u = "http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={}&password={}&from=30002501&to={}&message={}".format(
|
||
USERNAME_SMS, PASSWORD_SMS,
|
||
mobile, message)
|
||
|
||
url = u.format()
|
||
|
||
payload = {}
|
||
headers = {"Content-Type": "application/x-www-form-urlencoded"}
|
||
|
||
response = requests.request("GET", url, headers=headers, data=payload)
|
||
|
||
print(response.text)
|
||
|
||
|
||
def allow_poultry_city_for_poultry_sms(mobile, Poultry_name
|
||
):
|
||
message = ' مرغدار گرامی:{0}\n وکالت ثبت درخواست کشتار توسط شما برای شهرستان ثیت شد.'.format(
|
||
Poultry_name
|
||
)
|
||
check_mobile = check_mobile_number(mobile)
|
||
if check_mobile:
|
||
u = "http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={}&password={}&from=30002501&to={}&message={}".format(
|
||
USERNAME_SMS, PASSWORD_SMS,
|
||
mobile, message)
|
||
|
||
url = u.format()
|
||
|
||
payload = {}
|
||
headers = {"Content-Type": "application/x-www-form-urlencoded"}
|
||
|
||
response = requests.request("GET", url, headers=headers, data=payload)
|
||
|
||
print(response.text)
|
||
|
||
|
||
def allow_poultry_province_for_poultry_sms(mobile, Poultry_name
|
||
):
|
||
message = ' مرغدار گرامی:{0}\n وکالت ثبت درخواست کشتار توسط شما برای استان ثیت شد.'.format(
|
||
Poultry_name
|
||
)
|
||
check_mobile = check_mobile_number(mobile)
|
||
if check_mobile:
|
||
u = "http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={}&password={}&from=30002501&to={}&message={}".format(
|
||
USERNAME_SMS, PASSWORD_SMS,
|
||
mobile, message)
|
||
|
||
url = u.format()
|
||
|
||
payload = {}
|
||
headers = {"Content-Type": "application/x-www-form-urlencoded"}
|
||
|
||
response = requests.request("GET", url, headers=headers, data=payload)
|
||
|
||
print(response.text)
|
||
|
||
|
||
def kill_house_vet_check_receive_sms(request):
|
||
url = 'http://webservice.sahandsms.com/NewSMSWebService.asmx/RecieveSMS'
|
||
params = {'Username': USERNAME_SMS, 'password': PASSWORD_SMS, 'phNo': '30002501', 'startdate': '5/1/2023',
|
||
'enddate': '6/2/2023'}
|
||
response = send_sms_request(url, params=params)
|
||
if response.status_code != 200:
|
||
pass
|
||
else:
|
||
|
||
xml_str = response.content
|
||
root = ET.fromstring(xml_str)
|
||
mobile = root.iter('RcvSmsfrom')
|
||
text = root.iter('RcvSmsText')
|
||
|
||
for m, t in zip(mobile, text):
|
||
kill_house_request = KillHouseRequest.objects.filter(trash=False, bar_code=t.text).first()
|
||
if kill_house_request:
|
||
vet = KillHouseVet.objects.filter(vet__user__mobile=m.text
|
||
, trash=False,
|
||
kill_house=kill_house_request.killhouse_user).first()
|
||
if vet:
|
||
kill_house_request.vet_state = "accepted"
|
||
kill_house_request.save()
|
||
vet_check_request = VetCheckRequest(
|
||
kill_house_vet=vet,
|
||
kill_house_request=kill_house_request,
|
||
state='accepted'
|
||
|
||
)
|
||
vet_check_request.save()
|
||
|
||
|
||
def steward_allocation_sms(mobile, date, weight, seller, number,
|
||
buyer, amount):
|
||
message = 'اطلاعات خرید گوشت مرغ\n' \
|
||
'فروشنده: {0} \n' \
|
||
'تاریخ فروش: {1}\n' \
|
||
'خریدار: {2}\n' \
|
||
'وزن سفارش: {3} (کیلوگرم)\n' \
|
||
'مبلغ هر کیلو: {4} (ریال)\n' \
|
||
'کد احراز: {5}\n' \
|
||
'سامانه رصدیار'.format(seller, date, buyer, to_locale_str(weight), to_locale_str(amount), number)
|
||
|
||
check_mobile = check_mobile_number(mobile)
|
||
if check_mobile:
|
||
u = send_sms_request(
|
||
f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={steward_allocation_username}"
|
||
f"&password={steward_allocation_password}&from=30002501&to={mobile}&message={message}")
|
||
|
||
|
||
def direct_buying_code_sms(mobile, buyer, buyer_mobile, quantity, kill_place, date, code
|
||
):
|
||
message = 'درخواست خرید مستقیم:\nخریدار:{0}-{1}\nتعداد:{2}\nمحل کشتار:{3}\nتاریخ:{4}\nکد احراز:{5}'.format(
|
||
buyer, buyer_mobile, quantity, kill_place, date, code
|
||
)
|
||
check_mobile = check_mobile_number(mobile)
|
||
if check_mobile:
|
||
u = "http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={}&password={}&from=30002501&to={}&message={}".format(
|
||
USERNAME_SMS, PASSWORD_SMS,
|
||
mobile, message)
|
||
|
||
url = u.format()
|
||
|
||
payload = {}
|
||
headers = {"Content-Type": "application/x-www-form-urlencoded"}
|
||
|
||
response = requests.request("GET", url, headers=headers, data=payload)
|
||
|
||
print(response.text)
|
||
|
||
|
||
# USERNAME_SMS
|
||
def export_code_sms(mobile, buyer, buyer_mobile, quantity, kill_place, date, export_country, code
|
||
, poultry_name, province_mobile):
|
||
message = f'درخواست خرید برای صادرات:' \
|
||
f'\n' \
|
||
f'مرغدار:{poultry_name}' \
|
||
f'\n' \
|
||
f'تلفن مرغدار:{mobile}' \
|
||
f'\n' \
|
||
f'خریدار:{buyer}' \
|
||
f'\n' \
|
||
f'تلفن خریدار:{buyer_mobile}' \
|
||
f'\n' \
|
||
f'تعداد:{quantity}' \
|
||
f'\n' \
|
||
f'محل کشتار:{kill_place}' \
|
||
f'\n' \
|
||
f'تاریخ:{date}' \
|
||
f'\n' \
|
||
f'کشور مقصد:{export_country}' \
|
||
f'\n' \
|
||
f'کد احراز:{code}' \
|
||
f'\n' \
|
||
f'(سامانه رصدیار)'
|
||
|
||
check_mobile = check_mobile_number(mobile)
|
||
if check_mobile:
|
||
send_sms_request(
|
||
f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={USERNAME_SMS}&password="
|
||
f"{PASSWORD_SMS}&from=30002501&to={mobile}&message={message}")
|
||
send_sms_request(
|
||
f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={USERNAME_SMS}&password="
|
||
f"{PASSWORD_SMS}&from=30002501&to={province_mobile}&message={message}")
|
||
|
||
|
||
def steward2_allocation_sms(mobile=None):
|
||
message = 'مورخ تعداد با وزن کیلوگرم از طرف کشتارگاه به شما تخصیص داده شد \n کد احراز:'
|
||
check_mobile = check_mobile_number(mobile)
|
||
if check_mobile:
|
||
u = "http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={}&password={}&from=30002501&to={}&message={}".format(
|
||
USERNAME_SMS, PASSWORD_SMS,
|
||
mobile, message)
|
||
|
||
url = u.format()
|
||
|
||
payload = {}
|
||
headers = {"Content-Type": "application/x-www-form-urlencoded"}
|
||
|
||
response = requests.request("GET", url, headers=headers, data=payload)
|
||
|
||
print(response.text)
|
||
|
||
|
||
def send_discharge_bar(text, mobile):
|
||
user_name = USERNAME_SMS
|
||
password = PASSWORD_SMS
|
||
message = f' بار با شماره {text} با موفقیت تایید تخلیه شد.'
|
||
check_mobile = check_mobile_number(mobile)
|
||
if check_mobile:
|
||
u = (f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username="
|
||
f"{user_name}&password={password}&from=30002501&to={mobile}&message={message}")
|
||
|
||
url = u.format()
|
||
|
||
payload = {}
|
||
headers = {"Content-Type": "application/x-www-form-urlencoded"}
|
||
|
||
requests.request("GET", url, headers=headers, data=payload)
|
||
|
||
|
||
def receive_sms_panel():
|
||
now = datetime.now().date()
|
||
user_name = USERNAME_SMS
|
||
password = PASSWORD_SMS
|
||
|
||
url = 'http://webservice.sahandsms.com/NewSMSWebService.asmx/RecieveSMS'
|
||
params = {f'Username': {user_name}, 'password': {password}, 'phNo': '30002501', 'startdate': {now},
|
||
'enddate': {now}}
|
||
|
||
response = send_sms_request(url, params=params)
|
||
|
||
xml_str = response.content
|
||
root = ET.fromstring(xml_str)
|
||
mobile = root.iter('RcvSmsfrom')
|
||
text = root.iter('RcvSmsText')
|
||
|
||
for m, t in zip(mobile, text):
|
||
try:
|
||
kill_house_request = KillHouseRequest.objects.filter(trash=False, bar_code=t.text,
|
||
vet_state='pending').first()
|
||
except:
|
||
continue
|
||
if kill_house_request:
|
||
kill_house_vet = KillHouseVet.objects.filter(vet__user__mobile=m.text,
|
||
kill_house=kill_house_request.killhouse_user).first()
|
||
if kill_house_vet:
|
||
kill_house_request.vet_state = 'complate'
|
||
VetCheckRequest.objects.create(
|
||
kill_house_vet=kill_house_vet,
|
||
kill_house_request=kill_house_request,
|
||
state='complete'
|
||
)
|
||
VetCheckAllocations.objects.create(
|
||
vet=kill_house_vet.vet,
|
||
kill_house_request=kill_house_request
|
||
)
|
||
kill_house_request.save()
|
||
send_sms = threading.Thread(target=send_discharge_bar, args=(t.text, m.text))
|
||
send_sms.start()
|
||
|
||
|
||
def condition_of_sms(request):
|
||
query = UserMessageSend.objects.filter(trash=False).select_related('user')
|
||
list1 = []
|
||
for q in query:
|
||
if len(q.receive_code) > 3:
|
||
req = send_sms_request(
|
||
url=f"http://webservice.sahandsms.com/newsmswebservice.asmx/GetQueueMessageStatus?username={USERNAME_SMS}&password={PASSWORD_SMS}&MessageIds={q.receive_code}"
|
||
)
|
||
root = ET.fromstring(req.content)
|
||
int_value = int(root.find('.//{http://tempuri.org/}int').text)
|
||
else:
|
||
int_value = None
|
||
dict1 = {
|
||
"role": q.user.role.name,
|
||
"user": q.user.fullname,
|
||
"mobile": q.user.mobile,
|
||
"message": q.message,
|
||
"create_date": q.create_date,
|
||
'receive_code': int_value,
|
||
}
|
||
list1.append(dict1)
|
||
return HttpResponse(list1)
|
||
|
||
|
||
def send_gate_way_sms():
|
||
kill_houses = KillHouse.objects.filter(trash=False, out_province=False).select_related('kill_house_operator__user') \
|
||
.only('name', 'killer', 'kill_house_operator__user__user_gate_way_id', 'kill_house_operator__user__mobile')
|
||
for kill_house in kill_houses:
|
||
total_paid_wage = 0
|
||
total_unpaid_wage = get_finance_info(kill_house)['total_price']
|
||
# province_kill_requests = ProvinceKillRequest.objects.filter(killhouse_user=kill_house,
|
||
# state__in=('pending', 'accepted'),
|
||
# trash=False,
|
||
# return_to_province=False,
|
||
# first_car_allocated_quantity=0,
|
||
# archive_wage=False,
|
||
# ).exclude(union_share=0, company_share=0,
|
||
# guilds_share=0).only(
|
||
# 'total_killed_weight', 'union_share', 'company_share',
|
||
# 'guilds_share', 'total_wage_amount', 'total_killed_quantity')
|
||
# freezing_province_kill_requests = province_kill_requests.filter(
|
||
# province_request__poultry_request__freezing=True).only('total_killed_weight', 'union_share',
|
||
# 'company_share',
|
||
# 'guilds_share', 'total_wage_amount',
|
||
# 'total_killed_quantity')
|
||
#
|
||
# kill_house_requests = KillHouseRequest.objects.filter(
|
||
# Q(Q(killer=kill_house) & Q(killhouse_user=kill_house)) | Q(
|
||
# Q(killer__isnull=True) & Q(killhouse_user=kill_house)) | Q(
|
||
# Q(killer__isnull=True) | Q(killer=kill_house)),
|
||
# archive_wage=False,
|
||
# trash=False
|
||
# ).select_related('province_kill_request').only('accepted_real_weight',
|
||
# 'province_kill_request__union_share_percent',
|
||
# 'province_kill_request__wage', 'accepted_real_weight',
|
||
# 'province_kill_request__guilds_share_percent',
|
||
# 'province_kill_request__company_share_percent',
|
||
# 'accepted_real_quantity', 'accepted_real_quantity')
|
||
# kill_house_requests = kill_house_requests.filter(
|
||
# Q(killer=kill_house) | Q(killhouse_user=kill_house)).select_related(
|
||
# 'province_kill_request').only(
|
||
# 'accepted_real_weight', 'province_kill_request__union_share_percent',
|
||
# 'province_kill_request__wage', 'accepted_real_weight', 'province_kill_request__guilds_share_percent',
|
||
# 'province_kill_request__company_share_percent', 'accepted_real_quantity')
|
||
#
|
||
# freezing_kill_house_requests = kill_house_requests.filter(
|
||
# province_kill_request__province_request__poultry_request__freezing=True).select_related(
|
||
# 'province_kill_request').only('accepted_real_weight', 'province_kill_request__union_share_percent',
|
||
# 'province_kill_request__wage', 'accepted_real_weight',
|
||
# 'province_kill_request__guilds_share_percent',
|
||
# 'province_kill_request__company_share_percent', 'accepted_real_quantity')
|
||
#
|
||
# free_bars = KillHouseFreeBarInformation.objects.filter(kill_house=kill_house, archive_wage=False,
|
||
# trash=False).only('live_weight', 'union_share',
|
||
# 'weight_of_carcasses',
|
||
# 'company_share',
|
||
# 'guilds_share',
|
||
# 'total_wage_amount')
|
||
# free_bars_live = free_bars.filter(buy_type='live', trash=False).only('live_weight', 'union_share',
|
||
# 'weight_of_carcasses',
|
||
# 'company_share',
|
||
# 'guilds_share',
|
||
# 'total_wage_amount')
|
||
# free_bars_carcases = free_bars.filter(buy_type='carcass', trash=False).only('live_weight', 'union_share',
|
||
# 'weight_of_carcasses',
|
||
# 'company_share',
|
||
# 'guilds_share',
|
||
# 'total_wage_amount'
|
||
# )
|
||
#
|
||
#
|
||
# province_kill_requests_total_wage = \
|
||
# province_kill_requests.filter(province_request__poultry_request__freezing=False).aggregate(
|
||
# total=Sum('total_wage_amount'))[
|
||
# 'total'] or 0
|
||
# if wage_percent > 0:
|
||
# province_kill_requests_total_wage -= province_kill_requests_total_wage * wage_percent
|
||
# freezing_province_kill_request_total_wage = \
|
||
# freezing_province_kill_requests.aggregate(total=Sum('total_wage_amount'))['total'] or 0
|
||
#
|
||
# kill_house_reqest_total_wage = \
|
||
# kill_house_requests.filter(
|
||
# province_kill_request__province_request__poultry_request__freezing=False).aggregate(
|
||
# total=Sum(F('accepted_real_weight') * F('province_kill_request__wage')))[
|
||
# 'total'] or 0
|
||
# if wage_percent > 0:
|
||
# kill_house_reqest_total_wage -= kill_house_reqest_total_wage * wage_percent
|
||
# freezing_kill_house_reqest_total_wage = \
|
||
# freezing_kill_house_requests.aggregate(
|
||
# total=Sum(F('accepted_real_weight') * F('province_kill_request__wage')))[
|
||
# 'total'] or 0
|
||
#
|
||
# free_bars_live_total_wage = free_bars_live.aggregate(total=Sum('total_wage_amount'))[
|
||
# 'total'] or 0
|
||
#
|
||
# free_bars_carcases_total_wage = free_bars_carcases.aggregate(total=Sum('total_wage_amount'))[
|
||
# 'total'] or 0
|
||
# total_unpaid_wage = free_bars_carcases_total_wage + kill_house_reqest_total_wage + \
|
||
# freezing_kill_house_reqest_total_wage + province_kill_requests_total_wage + \
|
||
# freezing_province_kill_request_total_wage + free_bars_live_total_wage
|
||
slaughter_transactions = InternalTransaction.objects.filter(
|
||
Q(kill_house=kill_house) | Q(parent_kill_house=kill_house), status='completed',
|
||
trash=False).only('union_share', 'company_share', 'guilds_share', 'amount')
|
||
total_paid_wage = slaughter_transactions.aggregate(total=Sum('amount'))[
|
||
'total'] or 0
|
||
|
||
if kill_house.killer == False:
|
||
killer = 'کشتارگاه'
|
||
else:
|
||
killer = 'کشتارکن'
|
||
kill_house_purchase = KillHousePurchaseRequest.objects.filter(kill_house=kill_house).first()
|
||
|
||
total_wage = total_unpaid_wage - (total_paid_wage + kill_house.off)
|
||
unpaid = "{:,}".format(int(total_wage))
|
||
user_token = 'k' + kill_house.kill_house_operator.user.user_gate_way_id
|
||
message = f'کاربر گرامی {killer + "(" + kill_house.name + ")"}' \
|
||
'\n' \
|
||
'باسلام' \
|
||
'\n' \
|
||
f'مبلغ بدهی تعرفه شما {unpaid} ریال می باشدبا توجه به سقف مجاز بدهی تعیین شده، در اسرع وقت اقدام به پرداخت تعرفه خود کنید.' \
|
||
'\n' \
|
||
f'https://rasadyar.net/pay/{base_pos_id}/{user_token}' \
|
||
f'\n' \
|
||
f'(سامانه رصدیار)'
|
||
|
||
if kill_house_purchase and kill_house_purchase.limitation_number <= total_wage and \
|
||
kill_house_purchase.limitation == True:
|
||
continue
|
||
else:
|
||
if int(total_wage) > 0:
|
||
# if kill_house_purchase.limitation_number > total_wage:
|
||
# debt=int(kill_house_purchase.limitation_number*0.5)
|
||
# if int(total_wage >= debt):
|
||
check_mobile = check_mobile_number(kill_house.kill_house_operator.user.mobile)
|
||
if check_mobile:
|
||
req = send_sms_request(
|
||
f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={gate_way_username}&password={gate_way_password}&from=30002501&to={kill_house.kill_house_operator.user.mobile}&message={message}")
|
||
req = send_sms_request(
|
||
f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={gate_way_username}&password={gate_way_password}&from=30002501&to={COMPANY_NUMBER}&message={message}")
|
||
if UNION_THIRD_NUMBER is not None:
|
||
req = send_sms_request(
|
||
f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={gate_way_username}&password={gate_way_password}&from=30002501&to={UNION_THIRD_NUMBER}&message={message}")
|
||
|
||
if UNION_FOURTH_NUMBER is not None:
|
||
req = send_sms_request(
|
||
f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={gate_way_username}&password={gate_way_password}&from=30002501&to={UNION_FOURTH_NUMBER}&message={message}")
|
||
|
||
|
||
# OUT_SMS_PASS
|
||
def send_gate_way_sms_manual(request):
|
||
kill_houses = KillHouse.objects.filter(trash=False, out_province=False).select_related('kill_house_operator__user') \
|
||
.only('name', 'killer', 'kill_house_operator__user__user_gate_way_id', 'kill_house_operator__user__mobile')
|
||
for kill_house in kill_houses:
|
||
total_paid_wage = 0
|
||
total_unpaid_wage = get_finance_info(kill_house)['total_price']
|
||
# province_kill_requests = ProvinceKillRequest.objects.filter(killhouse_user=kill_house,
|
||
# state__in=('pending', 'accepted'),
|
||
# trash=False,
|
||
# return_to_province=False,
|
||
# first_car_allocated_quantity=0,
|
||
# archive_wage=False,
|
||
# ).exclude(union_share=0, company_share=0,
|
||
# guilds_share=0).only(
|
||
# 'total_killed_weight', 'union_share', 'company_share',
|
||
# 'guilds_share', 'total_wage_amount', 'total_killed_quantity')
|
||
# freezing_province_kill_requests = province_kill_requests.filter(
|
||
# province_request__poultry_request__freezing=True).only('total_killed_weight', 'union_share',
|
||
# 'company_share',
|
||
# 'guilds_share', 'total_wage_amount',
|
||
# 'total_killed_quantity')
|
||
#
|
||
# kill_house_requests = KillHouseRequest.objects.filter(
|
||
# Q(Q(killer=kill_house) & Q(killhouse_user=kill_house)) | Q(
|
||
# Q(killer__isnull=True) & Q(killhouse_user=kill_house)) | Q(
|
||
# Q(killer__isnull=True) | Q(killer=kill_house)),
|
||
# archive_wage=False,
|
||
# trash=False
|
||
# ).select_related('province_kill_request').only('accepted_real_weight',
|
||
# 'province_kill_request__union_share_percent',
|
||
# 'province_kill_request__wage', 'accepted_real_weight',
|
||
# 'province_kill_request__guilds_share_percent',
|
||
# 'province_kill_request__company_share_percent',
|
||
# 'accepted_real_quantity', 'accepted_real_quantity')
|
||
# kill_house_requests = kill_house_requests.filter(
|
||
# Q(killer=kill_house) | Q(killhouse_user=kill_house)).select_related(
|
||
# 'province_kill_request').only(
|
||
# 'accepted_real_weight', 'province_kill_request__union_share_percent',
|
||
# 'province_kill_request__wage', 'accepted_real_weight', 'province_kill_request__guilds_share_percent',
|
||
# 'province_kill_request__company_share_percent', 'accepted_real_quantity')
|
||
#
|
||
# freezing_kill_house_requests = kill_house_requests.filter(
|
||
# province_kill_request__province_request__poultry_request__freezing=True).select_related(
|
||
# 'province_kill_request').only('accepted_real_weight', 'province_kill_request__union_share_percent',
|
||
# 'province_kill_request__wage', 'accepted_real_weight',
|
||
# 'province_kill_request__guilds_share_percent',
|
||
# 'province_kill_request__company_share_percent', 'accepted_real_quantity')
|
||
#
|
||
# free_bars = KillHouseFreeBarInformation.objects.filter(kill_house=kill_house, archive_wage=False,
|
||
# trash=False).only('live_weight', 'union_share',
|
||
# 'weight_of_carcasses',
|
||
# 'company_share',
|
||
# 'guilds_share',
|
||
# 'total_wage_amount')
|
||
# free_bars_live = free_bars.filter(buy_type='live', trash=False).only('live_weight', 'union_share',
|
||
# 'weight_of_carcasses',
|
||
# 'company_share',
|
||
# 'guilds_share',
|
||
# 'total_wage_amount')
|
||
# free_bars_carcases = free_bars.filter(buy_type='carcass', trash=False).only('live_weight', 'union_share',
|
||
# 'weight_of_carcasses',
|
||
# 'company_share',
|
||
# 'guilds_share',
|
||
# 'total_wage_amount'
|
||
# )
|
||
#
|
||
#
|
||
# province_kill_requests_total_wage = \
|
||
# province_kill_requests.filter(province_request__poultry_request__freezing=False).aggregate(
|
||
# total=Sum('total_wage_amount'))[
|
||
# 'total'] or 0
|
||
# if wage_percent > 0:
|
||
# province_kill_requests_total_wage -= province_kill_requests_total_wage * wage_percent
|
||
# freezing_province_kill_request_total_wage = \
|
||
# freezing_province_kill_requests.aggregate(total=Sum('total_wage_amount'))['total'] or 0
|
||
#
|
||
# kill_house_reqest_total_wage = \
|
||
# kill_house_requests.filter(
|
||
# province_kill_request__province_request__poultry_request__freezing=False).aggregate(
|
||
# total=Sum(F('accepted_real_weight') * F('province_kill_request__wage')))[
|
||
# 'total'] or 0
|
||
# if wage_percent > 0:
|
||
# kill_house_reqest_total_wage -= kill_house_reqest_total_wage * wage_percent
|
||
# freezing_kill_house_reqest_total_wage = \
|
||
# freezing_kill_house_requests.aggregate(
|
||
# total=Sum(F('accepted_real_weight') * F('province_kill_request__wage')))[
|
||
# 'total'] or 0
|
||
#
|
||
# free_bars_live_total_wage = free_bars_live.aggregate(total=Sum('total_wage_amount'))[
|
||
# 'total'] or 0
|
||
#
|
||
# free_bars_carcases_total_wage = free_bars_carcases.aggregate(total=Sum('total_wage_amount'))[
|
||
# 'total'] or 0
|
||
# total_unpaid_wage = free_bars_carcases_total_wage + kill_house_reqest_total_wage + \
|
||
# freezing_kill_house_reqest_total_wage + province_kill_requests_total_wage + \
|
||
# freezing_province_kill_request_total_wage + free_bars_live_total_wage
|
||
slaughter_transactions = InternalTransaction.objects.filter(
|
||
Q(kill_house=kill_house) | Q(parent_kill_house=kill_house), status='completed',
|
||
trash=False).only('union_share', 'company_share', 'guilds_share', 'amount')
|
||
total_paid_wage = slaughter_transactions.aggregate(total=Sum('amount'))[
|
||
'total'] or 0
|
||
|
||
if kill_house.killer == False:
|
||
killer = 'کشتارگاه'
|
||
else:
|
||
killer = 'کشتارکن'
|
||
kill_house_purchase = KillHousePurchaseRequest.objects.filter(kill_house=kill_house).first()
|
||
|
||
total_wage = total_unpaid_wage - (total_paid_wage + kill_house.off)
|
||
unpaid = "{:,}".format(int(total_wage))
|
||
user_token = 'k' + kill_house.kill_house_operator.user.user_gate_way_id
|
||
message = f'کاربر گرامی {killer + "(" + kill_house.name + ")"}' \
|
||
'\n' \
|
||
'باسلام' \
|
||
'\n' \
|
||
f'مبلغ بدهی تعرفه شما {unpaid} ریال می باشدبا توجه به سقف مجاز بدهی تعیین شده، در اسرع وقت اقدام به پرداخت تعرفه خود کنید.' \
|
||
'\n' \
|
||
f'https://rasadyar.net/pay/{base_pos_id}/{user_token}' \
|
||
f'\n' \
|
||
f'(سامانه رصدیار)'
|
||
|
||
if kill_house_purchase and kill_house_purchase.limitation_number <= total_wage and \
|
||
kill_house_purchase.limitation == True:
|
||
continue
|
||
else:
|
||
if int(total_wage) > 0:
|
||
# if kill_house_purchase.limitation_number > total_wage:
|
||
# debt=int(kill_house_purchase.limitation_number*0.5)
|
||
# if int(total_wage >= debt):
|
||
check_mobile = check_mobile_number(kill_house.kill_house_operator.user.mobile)
|
||
if check_mobile:
|
||
req = send_sms_request(
|
||
f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={gate_way_username}&password={gate_way_password}&from=30002501&to={kill_house.kill_house_operator.user.mobile}&message={message}")
|
||
req = send_sms_request(
|
||
f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={gate_way_username}&password={gate_way_password}&from=30002501&to={COMPANY_NUMBER}&message={message}")
|
||
if UNION_THIRD_NUMBER is not None:
|
||
req = send_sms_request(
|
||
f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={gate_way_username}&password={gate_way_password}&from=30002501&to={UNION_THIRD_NUMBER}&message={message}")
|
||
|
||
if UNION_FOURTH_NUMBER is not None:
|
||
req = send_sms_request(
|
||
f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={gate_way_username}&password={gate_way_password}&from=30002501&to={UNION_FOURTH_NUMBER}&message={message}")
|
||
return HttpResponse('ok')
|
||
|
||
|
||
def send_province_request_pdf_sms():
|
||
mobile = [UNION_NUMBER]
|
||
date = datetime.now().date()
|
||
province_kill_requests = ProvinceKillRequest.objects.filter(kill_request__recive_date__date=date, trash=False,
|
||
state__in=('pending', 'accepted'),
|
||
return_to_province=False)
|
||
poultry = Poultry.objects.filter(
|
||
key__in=province_kill_requests.values_list('province_request__poultry_request__poultry__key', flat=True))
|
||
vat_farm = VetFarm.objects.filter(trash=False, poultry__in=poultry).values_list('vet__user__mobile',
|
||
flat=True).distinct()
|
||
mobile.extend(vat_farm)
|
||
message = 'کاربرگرامی' \
|
||
'\n' \
|
||
'جهت دریافت گزارش روزانه تخصیص مرغ استان بر روی لینک کلیک کنید:' \
|
||
'\n' \
|
||
f'https://{base_url_sms}.rasadyaar.ir/reports/ds'
|
||
for m in mobile:
|
||
check_mobile = check_mobile_number(m)
|
||
if check_mobile:
|
||
req = send_sms_request(
|
||
f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={USERNAME_SMS_FINANCIAL}&password={PASSWORD_SMS_FINANCIAL}&from=30002501&to={m}&message={message}")
|
||
|
||
|
||
def send_deactivate_panel_debt_sms():
|
||
kill_houses = KillHouse.objects.filter(trash=False, out_province=False)
|
||
for kill_house in kill_houses:
|
||
kill_house_purchase = KillHousePurchaseRequest.objects.filter(limitation=True, kill_house=kill_house).first()
|
||
if kill_house_purchase:
|
||
total_unpaid_wage = get_finance_info(kill_house)['total_price']
|
||
total_paid_wage = 0
|
||
# province_kill_requests = ProvinceKillRequest.objects.filter(killhouse_user=kill_house,
|
||
# state__in=('pending', 'accepted'),
|
||
# trash=False,
|
||
# return_to_province=False,
|
||
# first_car_allocated_quantity=0,
|
||
# archive_wage=False,
|
||
# ).exclude(union_share=0, company_share=0,
|
||
# guilds_share=0).only(
|
||
# 'total_killed_weight', 'union_share', 'company_share',
|
||
# 'guilds_share', 'total_wage_amount', 'total_killed_quantity')
|
||
# freezing_province_kill_requests = province_kill_requests.filter(
|
||
# province_request__poultry_request__freezing=True).only('total_killed_weight', 'union_share',
|
||
# 'company_share',
|
||
# 'guilds_share', 'total_wage_amount',
|
||
# 'total_killed_quantity')
|
||
#
|
||
# kill_house_requests = KillHouseRequest.objects.filter(
|
||
# Q(Q(killer=kill_house) & Q(killhouse_user=kill_house)) | Q(
|
||
# Q(killer__isnull=True) & Q(killhouse_user=kill_house)) | Q(
|
||
# Q(killer__isnull=True) | Q(killer=kill_house)),
|
||
# archive_wage=False,
|
||
# trash=False
|
||
# ).select_related('province_kill_request').only('accepted_real_weight',
|
||
# 'province_kill_request__union_share_percent',
|
||
# 'province_kill_request__wage', 'accepted_real_weight',
|
||
# 'province_kill_request__guilds_share_percent',
|
||
# 'province_kill_request__company_share_percent',
|
||
# 'accepted_real_quantity', 'accepted_real_quantity')
|
||
# kill_house_requests = kill_house_requests.filter(Q(killer=kill_house) | Q(killhouse_user=kill_house)).select_related(
|
||
# 'province_kill_request').only(
|
||
# 'accepted_real_weight', 'province_kill_request__union_share_percent',
|
||
# 'province_kill_request__wage', 'accepted_real_weight', 'province_kill_request__guilds_share_percent',
|
||
# 'province_kill_request__company_share_percent', 'accepted_real_quantity')
|
||
#
|
||
# freezing_kill_house_requests = kill_house_requests.filter(
|
||
# province_kill_request__province_request__poultry_request__freezing=True).select_related(
|
||
# 'province_kill_request').only('accepted_real_weight', 'province_kill_request__union_share_percent',
|
||
# 'province_kill_request__wage', 'accepted_real_weight',
|
||
# 'province_kill_request__guilds_share_percent',
|
||
# 'province_kill_request__company_share_percent', 'accepted_real_quantity')
|
||
#
|
||
# free_bars = KillHouseFreeBarInformation.objects.filter(kill_house=kill_house, archive_wage=False,
|
||
# trash=False).only('live_weight', 'union_share',
|
||
# 'weight_of_carcasses',
|
||
# 'company_share',
|
||
# 'guilds_share',
|
||
# 'total_wage_amount')
|
||
# free_bars_live = free_bars.filter(buy_type='live', trash=False).only('live_weight', 'union_share',
|
||
# 'weight_of_carcasses',
|
||
# 'company_share',
|
||
# 'guilds_share',
|
||
# 'total_wage_amount')
|
||
# free_bars_carcases = free_bars.filter(buy_type='carcass', trash=False).only('live_weight', 'union_share',
|
||
# 'weight_of_carcasses',
|
||
# 'company_share',
|
||
# 'guilds_share',
|
||
# 'total_wage_amount'
|
||
# )
|
||
slaughter_transactions = InternalTransaction.objects.filter(
|
||
Q(kill_house=kill_house) | Q(parent_kill_house=kill_house),
|
||
status='completed',
|
||
trash=False).only('union_share', 'company_share', 'guilds_share', 'amount')
|
||
|
||
# province_kill_requests_total_wage = \
|
||
# province_kill_requests.filter(province_request__poultry_request__freezing=False).aggregate(
|
||
# total=Sum('total_wage_amount'))[
|
||
# 'total'] or 0
|
||
# if wage_percent > 0:
|
||
# province_kill_requests_total_wage -= province_kill_requests_total_wage * wage_percent
|
||
# freezing_province_kill_request_total_wage = \
|
||
# freezing_province_kill_requests.aggregate(total=Sum('total_wage_amount'))['total'] or 0
|
||
#
|
||
# kill_house_reqest_total_wage = \
|
||
# kill_house_requests.filter(
|
||
# province_kill_request__province_request__poultry_request__freezing=False).aggregate(
|
||
# total=Sum(F('accepted_real_weight') * F('province_kill_request__wage')))[
|
||
# 'total'] or 0
|
||
# if wage_percent > 0:
|
||
# kill_house_reqest_total_wage -= kill_house_reqest_total_wage * wage_percent
|
||
# freezing_kill_house_reqest_total_wage = \
|
||
# freezing_kill_house_requests.aggregate(
|
||
# total=Sum(F('accepted_real_weight') * F('province_kill_request__wage')))[
|
||
# 'total'] or 0
|
||
#
|
||
# free_bars_live_total_wage = free_bars_live.aggregate(total=Sum('total_wage_amount'))[
|
||
# 'total'] or 0
|
||
#
|
||
# free_bars_carcases_total_wage = free_bars_carcases.aggregate(total=Sum('total_wage_amount'))[
|
||
# 'total'] or 0
|
||
# total_unpaid_wage = free_bars_carcases_total_wage + kill_house_reqest_total_wage + \
|
||
# freezing_kill_house_reqest_total_wage + province_kill_requests_total_wage + \
|
||
# freezing_province_kill_request_total_wage + free_bars_live_total_wage
|
||
|
||
total_paid_wage = slaughter_transactions.aggregate(total=Sum('amount'))[
|
||
'total'] or 0
|
||
total_wage = total_unpaid_wage - (total_paid_wage + kill_house.off)
|
||
if kill_house_purchase.limitation_number <= total_wage:
|
||
unpaid = "{:,}".format(int(total_wage))
|
||
if kill_house.killer == False:
|
||
killer = 'کشتارگاه'
|
||
else:
|
||
killer = 'کشتارکن'
|
||
amount = "{:,}".format(int(kill_house_purchase.limitation_number))
|
||
user_token = 'k' + kill_house.kill_house_operator.user.user_gate_way_id
|
||
message = f'کاربر گرامی {killer + "(" + kill_house.name + ")"}' \
|
||
f'\n' \
|
||
f'باسلام واحترام ' \
|
||
f'\n' \
|
||
f'باتوجه به عدم پرداخت بدهی تعرفه سامانه به مبلغ{unpaid} امکان ثبت کشتار برای شما وجود ندارد.جهت فعال سازی پنل، بدهی شما باید کمتر از {amount} ریال باشد.' \
|
||
f'\n' \
|
||
f'لازم به توضیح است که کشتار خارج از سامانه به عنوان کشتار و عرضه خارج از شبکه محسوب میگردد.' \
|
||
f'\n' \
|
||
f'لینک مشاهده و پرداخت بدهی:' \
|
||
f'\n' \
|
||
f'https://rasadyar.net/pay/{base_pos_id}/{user_token} \n' \
|
||
f'\n' \
|
||
f'(سامانه رصدیار)'
|
||
check_mobile = check_mobile_number(kill_house.kill_house_operator.user.mobile)
|
||
if check_mobile:
|
||
req = send_sms_request(
|
||
f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={send_deactivate_username}&password={send_deactivate_password}&from=30002501&to={kill_house.kill_house_operator.user.mobile}&message={message}")
|
||
req = send_sms_request(
|
||
f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={send_deactivate_username}&password={send_deactivate_password}&from=30002501&to={COMPANY_NUMBER}&message={message}")
|
||
if UNION_SECOND_NUMBER is not None:
|
||
req = send_sms_request(
|
||
f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={send_deactivate_username}&password={send_deactivate_password}&from=30002501&to={UNION_SECOND_NUMBER}&message={message}")
|
||
if UNION_THIRD_NUMBER is not None:
|
||
req = send_sms_request(
|
||
f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={send_deactivate_username}&password={send_deactivate_password}&from=30002501&to={UNION_THIRD_NUMBER}&message={message}")
|
||
if UNION_FIFTH_NUMBER is not None:
|
||
req = send_sms_request(
|
||
f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={send_deactivate_username}&password={send_deactivate_password}&from=30002501&to={UNION_FIFTH_NUMBER}&message={message}")
|
||
if UNION_SIXTH_NUMBER is not None:
|
||
req = send_sms_request(
|
||
f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={send_deactivate_username}&password={send_deactivate_password}&from=30002501&to={UNION_SIXTH_NUMBER}&message={message}")
|
||
|
||
|
||
# OUT_SMS_PASS
|
||
def send_deactivate_panel_debt_sms_manual(request):
|
||
kill_houses = KillHouse.objects.filter(trash=False, out_province=False)
|
||
for kill_house in kill_houses:
|
||
kill_house_purchase = KillHousePurchaseRequest.objects.filter(limitation=True, kill_house=kill_house).first()
|
||
if kill_house_purchase:
|
||
total_unpaid_wage = get_finance_info(kill_house)['total_price']
|
||
total_paid_wage = 0
|
||
# province_kill_requests = ProvinceKillRequest.objects.filter(killhouse_user=kill_house,
|
||
# state__in=('pending', 'accepted'),
|
||
# trash=False,
|
||
# return_to_province=False,
|
||
# first_car_allocated_quantity=0,
|
||
# archive_wage=False,
|
||
# ).exclude(union_share=0, company_share=0,
|
||
# guilds_share=0).only(
|
||
# 'total_killed_weight', 'union_share', 'company_share',
|
||
# 'guilds_share', 'total_wage_amount', 'total_killed_quantity')
|
||
# freezing_province_kill_requests = province_kill_requests.filter(
|
||
# province_request__poultry_request__freezing=True).only('total_killed_weight', 'union_share',
|
||
# 'company_share',
|
||
# 'guilds_share', 'total_wage_amount',
|
||
# 'total_killed_quantity')
|
||
#
|
||
# kill_house_requests = KillHouseRequest.objects.filter(
|
||
# Q(Q(killer=kill_house) & Q(killhouse_user=kill_house)) | Q(
|
||
# Q(killer__isnull=True) & Q(killhouse_user=kill_house)) | Q(
|
||
# Q(killer__isnull=True) | Q(killer=kill_house)),
|
||
# archive_wage=False,
|
||
# trash=False
|
||
# ).select_related('province_kill_request').only('accepted_real_weight',
|
||
# 'province_kill_request__union_share_percent',
|
||
# 'province_kill_request__wage', 'accepted_real_weight',
|
||
# 'province_kill_request__guilds_share_percent',
|
||
# 'province_kill_request__company_share_percent',
|
||
# 'accepted_real_quantity', 'accepted_real_quantity')
|
||
# kill_house_requests = kill_house_requests.filter(Q(killer=kill_house) | Q(killhouse_user=kill_house)).select_related(
|
||
# 'province_kill_request').only(
|
||
# 'accepted_real_weight', 'province_kill_request__union_share_percent',
|
||
# 'province_kill_request__wage', 'accepted_real_weight', 'province_kill_request__guilds_share_percent',
|
||
# 'province_kill_request__company_share_percent', 'accepted_real_quantity')
|
||
#
|
||
# freezing_kill_house_requests = kill_house_requests.filter(
|
||
# province_kill_request__province_request__poultry_request__freezing=True).select_related(
|
||
# 'province_kill_request').only('accepted_real_weight', 'province_kill_request__union_share_percent',
|
||
# 'province_kill_request__wage', 'accepted_real_weight',
|
||
# 'province_kill_request__guilds_share_percent',
|
||
# 'province_kill_request__company_share_percent', 'accepted_real_quantity')
|
||
#
|
||
# free_bars = KillHouseFreeBarInformation.objects.filter(kill_house=kill_house, archive_wage=False,
|
||
# trash=False).only('live_weight', 'union_share',
|
||
# 'weight_of_carcasses',
|
||
# 'company_share',
|
||
# 'guilds_share',
|
||
# 'total_wage_amount')
|
||
# free_bars_live = free_bars.filter(buy_type='live', trash=False).only('live_weight', 'union_share',
|
||
# 'weight_of_carcasses',
|
||
# 'company_share',
|
||
# 'guilds_share',
|
||
# 'total_wage_amount')
|
||
# free_bars_carcases = free_bars.filter(buy_type='carcass', trash=False).only('live_weight', 'union_share',
|
||
# 'weight_of_carcasses',
|
||
# 'company_share',
|
||
# 'guilds_share',
|
||
# 'total_wage_amount'
|
||
# )
|
||
slaughter_transactions = InternalTransaction.objects.filter(
|
||
Q(kill_house=kill_house) | Q(parent_kill_house=kill_house),
|
||
status='completed',
|
||
trash=False).only('union_share', 'company_share', 'guilds_share', 'amount')
|
||
|
||
# province_kill_requests_total_wage = \
|
||
# province_kill_requests.filter(province_request__poultry_request__freezing=False).aggregate(
|
||
# total=Sum('total_wage_amount'))[
|
||
# 'total'] or 0
|
||
# if wage_percent > 0:
|
||
# province_kill_requests_total_wage -= province_kill_requests_total_wage * wage_percent
|
||
# freezing_province_kill_request_total_wage = \
|
||
# freezing_province_kill_requests.aggregate(total=Sum('total_wage_amount'))['total'] or 0
|
||
#
|
||
# kill_house_reqest_total_wage = \
|
||
# kill_house_requests.filter(
|
||
# province_kill_request__province_request__poultry_request__freezing=False).aggregate(
|
||
# total=Sum(F('accepted_real_weight') * F('province_kill_request__wage')))[
|
||
# 'total'] or 0
|
||
# if wage_percent > 0:
|
||
# kill_house_reqest_total_wage -= kill_house_reqest_total_wage * wage_percent
|
||
# freezing_kill_house_reqest_total_wage = \
|
||
# freezing_kill_house_requests.aggregate(
|
||
# total=Sum(F('accepted_real_weight') * F('province_kill_request__wage')))[
|
||
# 'total'] or 0
|
||
#
|
||
# free_bars_live_total_wage = free_bars_live.aggregate(total=Sum('total_wage_amount'))[
|
||
# 'total'] or 0
|
||
#
|
||
# free_bars_carcases_total_wage = free_bars_carcases.aggregate(total=Sum('total_wage_amount'))[
|
||
# 'total'] or 0
|
||
# total_unpaid_wage = free_bars_carcases_total_wage + kill_house_reqest_total_wage + \
|
||
# freezing_kill_house_reqest_total_wage + province_kill_requests_total_wage + \
|
||
# freezing_province_kill_request_total_wage + free_bars_live_total_wage
|
||
|
||
total_paid_wage = slaughter_transactions.aggregate(total=Sum('amount'))[
|
||
'total'] or 0
|
||
total_wage = total_unpaid_wage - (total_paid_wage + kill_house.off)
|
||
if kill_house_purchase.limitation_number <= total_wage:
|
||
unpaid = "{:,}".format(int(total_wage))
|
||
if kill_house.killer == False:
|
||
killer = 'کشتارگاه'
|
||
else:
|
||
killer = 'کشتارکن'
|
||
amount = "{:,}".format(int(kill_house_purchase.limitation_number))
|
||
user_token = 'k' + kill_house.kill_house_operator.user.user_gate_way_id
|
||
message = f'کاربر گرامی {killer + "(" + kill_house.name + ")"}' \
|
||
f'\n' \
|
||
f'باسلام واحترام ' \
|
||
f'\n' \
|
||
f'باتوجه به عدم پرداخت بدهی تعرفه سامانه به مبلغ{unpaid} امکان ثبت کشتار برای شما وجود ندارد.جهت فعال سازی پنل، بدهی شما باید کمتر از {amount} ریال باشد.' \
|
||
f'\n' \
|
||
f'لازم به توضیح است که کشتار خارج از سامانه به عنوان کشتار و عرضه خارج از شبکه محسوب میگردد.' \
|
||
f'\n' \
|
||
f'لینک مشاهده و پرداخت بدهی:' \
|
||
f'\n' \
|
||
f'https://rasadyar.net/pay/{base_pos_id}/{user_token} \n' \
|
||
f'\n' \
|
||
f'(سامانه رصدیار)'
|
||
check_mobile = check_mobile_number(kill_house.kill_house_operator.user.mobile)
|
||
if check_mobile:
|
||
req = send_sms_request(
|
||
f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={send_deactivate_username}&password={send_deactivate_password}&from=30002501&to={kill_house.kill_house_operator.user.mobile}&message={message}")
|
||
req = send_sms_request(
|
||
f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={send_deactivate_username}&password={send_deactivate_password}&from=30002501&to={COMPANY_NUMBER}&message={message}")
|
||
if UNION_SECOND_NUMBER is not None:
|
||
req = send_sms_request(
|
||
f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={send_deactivate_username}&password={send_deactivate_password}&from=30002501&to={UNION_SECOND_NUMBER}&message={message}")
|
||
if UNION_THIRD_NUMBER is not None:
|
||
req = send_sms_request(
|
||
f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={send_deactivate_username}&password={send_deactivate_password}&from=30002501&to={UNION_THIRD_NUMBER}&message={message}")
|
||
if UNION_FIFTH_NUMBER is not None:
|
||
req = send_sms_request(
|
||
f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={send_deactivate_username}&password={send_deactivate_password}&from=30002501&to={UNION_FIFTH_NUMBER}&message={message}")
|
||
if UNION_SIXTH_NUMBER is not None:
|
||
req = send_sms_request(
|
||
f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={send_deactivate_username}&password={send_deactivate_password}&from=30002501&to={UNION_SIXTH_NUMBER}&message={message}")
|
||
return HttpResponse('ok')
|
||
|
||
|
||
# USERNAME_SMS_FINANCIAL
|
||
def province_out_request_transaction_sms(province, buyer, poultry_name, quantity, index_weight, wage, mobile,
|
||
order_code, date, amount, sale_type):
|
||
date1 = datetime.strptime(str(date),
|
||
'%Y-%m-%d').date()
|
||
from_date = jdatetime.date.fromgregorian(
|
||
year=date1.year,
|
||
month=date1.month,
|
||
day=date1.day
|
||
).strftime('%Y-%m-%d')
|
||
reversed_date = reversed(from_date.split("-"))
|
||
separate = "-"
|
||
date = separate.join(reversed_date)
|
||
all_wage = "{:,}".format(int(wage))
|
||
amount = "{:,}".format(int(amount))
|
||
sale_type_free = 'آزاد' if sale_type == False else 'دولتی'
|
||
message = f'سفارش فروش مرغ زنده استان {province}' \
|
||
'\n' \
|
||
f'تاریخ: {date}' \
|
||
f'\n' \
|
||
f'خریدار: {buyer}' \
|
||
'\n' \
|
||
f'مرغدار: {poultry_name}' \
|
||
'\n' \
|
||
f'نوع فروش:{sale_type_free}' \
|
||
'\n' \
|
||
f'تعداد: {quantity}' \
|
||
'\n' \
|
||
f'وزن تقریبی سفارش: {index_weight}' \
|
||
f'\n' \
|
||
f'وزن تقریبی کل سفارش: {int(index_weight * quantity)}' \
|
||
f'\n' \
|
||
f'قیمت مرغدار:{amount}' \
|
||
f'\n' \
|
||
f'مبلغ کل تعرفه:{all_wage} ریال ' \
|
||
f'\n' \
|
||
f'لینک مشاهده و پرداخت تعرفه:' \
|
||
f'\n' \
|
||
f'https://rasadyar.net/pay/{base_pos_id}/{order_code}' \
|
||
f'\n' \
|
||
f'سامانه رصدیار'
|
||
check_mobile = check_mobile_number(mobile)
|
||
if check_mobile:
|
||
req = send_sms_request(
|
||
f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={USERNAME_SMS_FINANCIAL}&password={PASSWORD_SMS_FINANCIAL}&from=30002501&to={mobile}&message={message}")
|
||
req = send_sms_request(
|
||
f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={USERNAME_SMS_FINANCIAL}&password={PASSWORD_SMS_FINANCIAL}&from=30002501&to={COMPANY_NUMBER}&message={message}")
|
||
|
||
|
||
# def daily_report_excel_and_pdf_send_from_sms():
|
||
# message = f'سفارش فروش مرغ زنده استان {province}' \
|
||
# '\n' \
|
||
# f'تاریخ: {date}' \
|
||
# f'\n' \
|
||
# f'خریدار: {buyer}' \
|
||
# '\n' \
|
||
# f'مرغدار: {poultry_name}' \
|
||
# '\n' \
|
||
# f'تعداد: {quantity}' \
|
||
# '\n' \
|
||
# f'وزن تقریبی سفارش: {index_weight}' \
|
||
# f'\n' \
|
||
# f'مبلغ کل تعرفه:{all_wage} ریال ' \
|
||
# f'\n' \
|
||
# f'لینک مشاهده و پرداخت تعرفه:' \
|
||
# f'\n' \
|
||
# f'https://{base_url_sms}.rasadyar.net/pay/{order_code}' \
|
||
# f'\n' \
|
||
# f'سامانه رصدیار'
|
||
# check_mobile = check_mobile_number(mobile)
|
||
# if check_mobile:
|
||
# req = send_sms_request(
|
||
# f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={USERNAME_SMS_FINANCIAL}&password={PASSWORD_SMS_FINANCIAL}&from=30002501&to={mobile}&message={message}")
|
||
|
||
# USERNAME_SMS_FINANCIAL
|
||
|
||
def send_sms_for_final_approval_out_province_threading(buyer_list, poultry_request_list):
|
||
# users = SystemUserProfile.objects.filter(id__in=poultry_list).select_related('province').only('mobile', 'user_gate_way_id','province__name','fullname')
|
||
if base_url_sms == 'ha':
|
||
province_name = 'همدان'
|
||
elif base_url_sms == 'ku':
|
||
province_name = 'کردستان'
|
||
elif base_url_sms == 'ma':
|
||
province_name = 'مرکزی'
|
||
else:
|
||
province_name = 'تست'
|
||
base_url = f'rasadyar.net/pay/{base_pos_id}'
|
||
if poultry_request_list is not None:
|
||
poultry_requests = PoultryRequest.objects.filter(trash=False, id__in=poultry_request_list)
|
||
for poultry_request in poultry_requests:
|
||
if poultry_request.interface_number is not None:
|
||
mobile = poultry_request.interface_number
|
||
else:
|
||
mobile = poultry_request.poultry.user.mobile
|
||
token_user = 'p' + poultry_request.poultry.user.user_gate_way_id
|
||
|
||
message = f' مرغدار محترم {poultry_request.poultry.user.fullname} ' \
|
||
f'\n' \
|
||
f'سفارش خرید مرغ زنده(فروش خارج از استان) با کد سفارش {poultry_request.order_code} برای شما در سامانه رصدیار استان {province_name} ثبت گردید جهت پرداخت تعرفه از طریق لینک زیر اقدام نمایید.' \
|
||
f'\n' \
|
||
f'**لازم به ذکر است: در صورت عدم پرداخت تعرفه تا پایان وقت امروز(16 بعد از ظهر) سفارشات شما لغو میگردد!' \
|
||
f'\n' \
|
||
f'لینک مشاهده و پرداخت تعرفه :' \
|
||
f'\n' \
|
||
f'https://{base_url}/{token_user}{poultry_request.order_code}' \
|
||
f'\n' \
|
||
f'سامانه رصدیار'
|
||
|
||
check_mobile = check_mobile_number(mobile)
|
||
if check_mobile:
|
||
req = send_sms_request(
|
||
f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={poultry_link_out_sale_username}&password={poultry_link_out_sale_password}&from=30002501&to={mobile}&message={message}")
|
||
|
||
users = SystemUserProfile.objects.filter(id__in=buyer_list).select_related('province').only('mobile',
|
||
'user_gate_way_id',
|
||
'province__name',
|
||
'fullname')
|
||
for user in users:
|
||
mobile = user.mobile
|
||
token_user = 'b' + user.user_gate_way_id
|
||
|
||
message = f' خریدار محترم {user.fullname} ' \
|
||
f'\n' \
|
||
f'سفارش خرید مرغ زنده(فروش خارج از استان) برای شما در سامانه رصدیار استان {province_name} ثبت گردید جهت پرداخت تعرفه از طریق لینک زیر اقدام نمایید.' \
|
||
f'\n' \
|
||
f'**لازم به ذکر است: در صورت عدم پرداخت تعرفه تا پایان وقت امروز(16 بعد از ظهر) سفارشات شما لغو میگردد!' \
|
||
f'\n' \
|
||
f'لینک مشاهده و پرداخت تعرفه :' \
|
||
f'\n' \
|
||
f'https://{base_url}/{token_user}' \
|
||
f'\n' \
|
||
f'سامانه رصدیار'
|
||
|
||
check_mobile = check_mobile_number(mobile)
|
||
if check_mobile:
|
||
req = send_sms_request(
|
||
f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={poultry_link_out_sale_username}&password={poultry_link_out_sale_password}&from=30002501&to={mobile}&message={message}")
|
||
|
||
|
||
def send_sms_for_final_approval_out_province_buyer_threading(buyer_list):
|
||
users = SystemUserProfile.objects.filter(id__in=buyer_list).select_related('province').only('mobile',
|
||
'user_gate_way_id',
|
||
'province__name',
|
||
'fullname')
|
||
for user in users:
|
||
mobile = user.mobile
|
||
token_user = 'b' + user.user_gate_way_id
|
||
message = f' خریدار محترم {user.fullname} ' \
|
||
f'\n' \
|
||
f'سفارش خرید مرغ زنده برای شما در سامانه رصدیار استان {user.province.name} ثبت گردید جهت پرداخت تعرفه از طریق لینک زیر اقدام نمایید.' \
|
||
f'\n' \
|
||
f'لازم به ذکر است در صورت عدم پرداخت تعرفه تا پایان وقت امروز(۱۲ شب) سفارشات شما لغو میگردد!' \
|
||
f'\n' \
|
||
f'لینک مشاهده و پرداخت تعرفه :' \
|
||
f'\n' \
|
||
f'https://rasadyar.net/pay/{base_pos_id}/{token_user}' \
|
||
f'\n' \
|
||
f'سامانه رصدیار'
|
||
check_mobile = check_mobile_number(mobile)
|
||
if check_mobile:
|
||
req = send_sms_request(
|
||
f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={USERNAME_SMS_FINANCIAL}&password={PASSWORD_SMS_FINANCIAL}&from=30002501&to={mobile}&message={message}")
|
||
print({"status": req.status_code, "mobile": user.mobile})
|
||
|
||
|
||
def sms_allocation_for_vet_farm(poultry_name, poultry_mobile, quantity, Index_weight, kill_house_name, kill_house_mobile
|
||
, city, send_date, mobile):
|
||
quantity_1 = "{:,}".format(int(quantity))
|
||
message = f'تخصیص مرغ زنده (کشتار داخل استان)' \
|
||
f'\n' \
|
||
f'مرغدار:{poultry_name}' \
|
||
f'\n' \
|
||
f'تلفن:{poultry_mobile}' \
|
||
f'\n' \
|
||
f'تعداد:{quantity_1}' \
|
||
f'\n' \
|
||
f'میانگین وزن: {Index_weight}' \
|
||
f'\n' \
|
||
f'خریدار:{kill_house_name}' \
|
||
f'\n' \
|
||
f'تلفن:{kill_house_mobile}' \
|
||
f'\n' \
|
||
f'ادرس:{city}' \
|
||
f'\n' \
|
||
f'تاریخ کشتار:{send_date}' \
|
||
f'\n' \
|
||
f'توضیحات: قبل از صدور مجوز حمل با مرغدار هماهنگی های لازم انجام دهید و کد قرنطینه در سامانه رصدیار ثبت گردد.(اتحادیه مرغداران گوشتی استان همدان)' \
|
||
f'\n' \
|
||
f'(سامانه رصدیار)'
|
||
check_mobile = check_mobile_number(mobile)
|
||
if check_mobile:
|
||
req = send_sms_request(
|
||
f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={USERNAME_SMS}&password={PASSWORD_SMS}&from=30002501&to={mobile}&message={message}")
|
||
|
||
|
||
def sms_chain_company_for_ver_farm(poultry_name, poultry_mobile, quantity, Index_weight, kill_house_name,
|
||
kill_house_mobile
|
||
, city, send_date, mobile, province):
|
||
quantity_1 = "{:,}".format(int(quantity))
|
||
message = f'تخصیص مرغ زنده (کشتار زنجیره ها)' \
|
||
f'\n' \
|
||
f'مرغدار:{poultry_name}' \
|
||
f'\n' \
|
||
f'تلفن:{poultry_mobile}' \
|
||
f'\n' \
|
||
f'تعداد:{quantity_1}' \
|
||
f'\n' \
|
||
f'میانگین وزن: {Index_weight}' \
|
||
f'\n' \
|
||
f'خریدار:{kill_house_name}' \
|
||
f'\n' \
|
||
f'تلفن:{kill_house_mobile}' \
|
||
f'\n' \
|
||
f'ادرس:{city}' \
|
||
f'\n' \
|
||
f'تاریخ کشتار:{send_date}' \
|
||
f'\n' \
|
||
f'اتحادیه مرغداران گوشتی استان {province}' \
|
||
f'\n' \
|
||
f'(سامانه رصدیار)'
|
||
check_mobile = check_mobile_number(mobile)
|
||
if check_mobile:
|
||
req = send_sms_request(
|
||
f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={USERNAME_SMS_FINANCIAL}&password={PASSWORD_SMS_FINANCIAL}&from=30002501&to={mobile}&message={message}")
|
||
|
||
|
||
def sms_ticket(province, fullname):
|
||
message = f'یک تیکت جدید از استان {province} دارید .' \
|
||
'\n' \
|
||
f'کاربر: {fullname}'
|
||
req = send_sms_request(
|
||
f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={USERNAME_SMS_FINANCIAL}&password={PASSWORD_SMS_FINANCIAL}&from=30002501&to={SUPPORTER_NUMBER}&message={message}")
|
||
|
||
|
||
def document_discrepancy_sms(killer, name, bar_code, doc, mobile, date):
|
||
killer_user = 'کشتارکن' if killer == True else 'کشتارگاه'
|
||
date1 = datetime.strptime(str(date),
|
||
'%Y-%m-%d').date()
|
||
from_date = jdatetime.date.fromgregorian(
|
||
year=date1.year,
|
||
month=date1.month,
|
||
day=date1.day
|
||
).strftime('%Y-%m-%d')
|
||
reversed_date = reversed(from_date.split("-"))
|
||
separate = "-"
|
||
date = separate.join(reversed_date)
|
||
message = f' کاربر گرامی {killer_user} {name}' \
|
||
'\n' \
|
||
f'بار به شماره {bar_code} در تاریخ({date}) به علت وضعیت ({doc}) نیازمند ویرایش میباشد.' \
|
||
f'\n' \
|
||
f'جهت ویرایش اطلاعات به پنل کاربری خود مراجعه فرمایید.' \
|
||
f'\n' \
|
||
f'(سامانه رصدیار)'
|
||
check_mobile = check_mobile_number(mobile)
|
||
if check_mobile:
|
||
req = send_sms_request(
|
||
f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={USERNAME_SMS}&password={PASSWORD_SMS}&from=30002501&to={mobile}&message={message}")
|
||
req = send_sms_request(
|
||
f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={USERNAME_SMS}&password={PASSWORD_SMS}&from=30002501&to={COMPANY_NUMBER}&message={message}")
|
||
|
||
|
||
def confirmation_of_the_need_for_slaughterhouse_sms_threading(name):
|
||
city_operator = CityOperator.objects.filter(trash=False).select_related('user').only('user__mobile')
|
||
mobiles = city_operator.values_list('user__mobile', flat=True).distinct()
|
||
message = f' کاربر گرامی {name}' \
|
||
'\n' \
|
||
'باسلام' \
|
||
'\n' \
|
||
'صرفا جهت اطلاع' \
|
||
'\n' \
|
||
f'درخواست نیاز شما مورد تایید قرار گرفت و امکان ثبت درخواست کشتار را دارید.' \
|
||
f'\n' \
|
||
f'(سامانه رصدیار)'
|
||
for mobile in mobiles:
|
||
check_mobile = check_mobile_number(mobile)
|
||
if check_mobile:
|
||
req = send_sms_request(
|
||
f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={USERNAME_SMS}&password={PASSWORD_SMS}&from=30002501&to={mobile}&message={message}")
|
||
|
||
|
||
# USERNAME_SMS
|
||
def province_kill_request_accept_sms(kill_house_name
|
||
):
|
||
city_operator = CityOperator.objects.filter(trash=False).select_related('user').only('user__mobile')
|
||
mobiles = city_operator.values_list('user__mobile', flat=True).distinct()
|
||
message = f' کاربر گرامی {kill_house_name}' \
|
||
'\n' \
|
||
'باسلام' \
|
||
'\n' \
|
||
'صرفا جهت اطلاع' \
|
||
'\n' \
|
||
f'درخواست نیاز شما مورد تایید قرار گرفت و امکان ثبت درخواست کشتار را دارید.' \
|
||
f'\n' \
|
||
f'(سامانه رصدیار)'
|
||
for mobile in mobiles:
|
||
check_mobile = check_mobile_number(mobile)
|
||
if check_mobile:
|
||
req = send_sms_request(
|
||
f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={USERNAME_SMS}&password={PASSWORD_SMS}&from=30002501&to={mobile}&message={message}")
|
||
|
||
|
||
def reporting_sms():
|
||
now = datetime.now().date()
|
||
from_date = jdatetime.date.fromgregorian(
|
||
year=now.year,
|
||
month=now.month,
|
||
day=now.day
|
||
).strftime('%Y-%m-%d')
|
||
reversed_date = reversed(from_date.split("-"))
|
||
separate = "-"
|
||
date = separate.join(reversed_date)
|
||
reporst = ReportsUsers.objects.filter(active=True)
|
||
for r in reporst:
|
||
user_reporst = UserReports.objects.filter(active=True, user=r).order_by('id')
|
||
|
||
message = f'کاربرگرامی {r.fullname}' \
|
||
'\n' \
|
||
'با سلام' \
|
||
'\n' \
|
||
f'احتراماً لیست گزارشات کشتار و توزیع مرغ گوشتی استان مورخ {date} جهت اطلاع بحضورتان ارسال میگردد.' \
|
||
'\n'
|
||
l = 1
|
||
if user_reporst:
|
||
for user in user_reporst:
|
||
message = message + '\n' \
|
||
f'{l}_{user.report.title}' \
|
||
'\n' \
|
||
f'https://{base_url_for_sms_report}backend.rasadyaar.ir/{user.report.end_point}/?key={r.user_token}' \
|
||
'\n'
|
||
l += 1
|
||
else:
|
||
message = message + '\n' \
|
||
'(سامانه رصدیار)'
|
||
check_mobile = check_mobile_number(r.mobile)
|
||
if check_mobile:
|
||
req = send_sms_request(
|
||
f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={USERNAME_SMS}&password={PASSWORD_SMS}&from=30002501&to={r.mobile}&message={message}")
|
||
|
||
|
||
def car_allocation_vet_farm_sms(date, poultry, age, quantity, car, code, pelak, kill_house, mobile, amount,
|
||
free_sale_in_province):
|
||
date1 = datetime.strptime(str(date),
|
||
'%Y-%m-%d').date()
|
||
date = shamsi_date(date1)
|
||
quantity = "{:,}".format(int(quantity))
|
||
amount = "{:,}".format(int(amount))
|
||
sale_type = 'آزاد' if free_sale_in_province == False else 'دولتی'
|
||
message = f'اطلاعات بار' \
|
||
f'\n' \
|
||
f'تاریخ کشتار: {date}' \
|
||
f'\n' \
|
||
f'نوع کشتار:{sale_type}' \
|
||
f'\n' \
|
||
f'مرغدار: {poultry}' \
|
||
f'\n' \
|
||
f'سن: {age}' \
|
||
f'\n' \
|
||
f'قطعه: {quantity}' \
|
||
f'\n' \
|
||
f'قیمت مرغدار:{amount}' \
|
||
f'\n' \
|
||
f'ماشین: {car}' \
|
||
f'\n' \
|
||
f'کد حمل: {code}' \
|
||
f'\n' \
|
||
f'پلاک: {pelak}' \
|
||
f'\n' \
|
||
f'کشتارگاه: {kill_house}' \
|
||
'\n' \
|
||
'(سامانه رصدیار)'
|
||
check_mobile = check_mobile_number(mobile)
|
||
if check_mobile:
|
||
req = send_sms_request(
|
||
f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={USERNAME_SMS}&password={PASSWORD_SMS}&from=30002501&to={mobile}&message={message}")
|
||
|
||
|
||
def delete_car_allocation_vet_farm_sms(date, poultry, age, quantity, car, code, pelak, kill_house, mobile, amount,
|
||
free_sale_in_province):
|
||
date1 = datetime.strptime(str(date),
|
||
'%Y-%m-%d').date()
|
||
date = shamsi_date(date1)
|
||
quantity = "{:,}".format(int(quantity))
|
||
amount = "{:,}".format(int(amount))
|
||
sale_type = 'آزاد' if free_sale_in_province == False else 'دولتی'
|
||
message = f'اطلاعات بار حذف شده' \
|
||
f'\n' \
|
||
f'تاریخ کشتار: {date}' \
|
||
f'\n' \
|
||
f'نوع کشتار:{sale_type}' \
|
||
f'\n' \
|
||
f'مرغدار: {poultry}' \
|
||
f'\n' \
|
||
f'سن: {age}' \
|
||
f'\n' \
|
||
f'قطعه: {quantity}' \
|
||
f'\n' \
|
||
f'قیمت مرغدار:{amount}' \
|
||
f'\n' \
|
||
f'ماشین: {car}' \
|
||
f'\n' \
|
||
f'کد حمل: {code}' \
|
||
f'\n' \
|
||
f'پلاک: {pelak}' \
|
||
f'\n' \
|
||
f'کشتارگاه: {kill_house}' \
|
||
'\n' \
|
||
'(سامانه رصدیار)'
|
||
check_mobile = check_mobile_number(mobile)
|
||
if check_mobile:
|
||
req = send_sms_request(
|
||
f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={USERNAME_SMS}&password={PASSWORD_SMS}&from=30002501&to={mobile}&message={message}")
|
||
|
||
|
||
def cron_for_update_sms():
|
||
update_date = LastUpdate.objects.first().update_date.date()
|
||
num_list = [SUPPORTER_NUMBER, COMPANY_NUMBER, '09201917727']
|
||
if base_url_for_sms_report == 'ha':
|
||
base = 'همدان'
|
||
elif base_url_for_sms_report == 'ma':
|
||
base = 'مرکزی'
|
||
else:
|
||
base = 'بوشهر'
|
||
if not update_date == datetime.now().date():
|
||
message = f'جوجه ریزی آپدیت نشده است. استان {base}'
|
||
for num in num_list:
|
||
send_sms_request(
|
||
f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={USERNAME_SMS_FINANCIAL}"
|
||
f"&password={PASSWORD_SMS_FINANCIAL}&from=30002501&to={num}&message={message}")
|
||
|
||
|
||
def ticket_answered(mobile):
|
||
message = f'تیکت شما پاسخ داده شد.' \
|
||
'\n' \
|
||
f'(سامانه رصدیار)'
|
||
req = send_sms_request(
|
||
f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={USERNAME_SMS_FINANCIAL}&password={PASSWORD_SMS_FINANCIAL}&from=30002501&to={mobile}&message={message}")
|
||
|
||
|
||
@api_view(["GET"])
|
||
@csrf_exempt
|
||
@permission_classes([AllowAny])
|
||
def send_again_sms_for_final_approval_out_province(request):
|
||
key = request.GET['key']
|
||
poultry_request = PoultryRequest.objects.get(trash=False, key=key)
|
||
if base_url_sms == 'ha':
|
||
province_name = 'همدان'
|
||
elif base_url_sms == 'ku':
|
||
province_name = 'کردستان'
|
||
elif base_url_sms == 'ma':
|
||
province_name = 'مرکزی'
|
||
else:
|
||
|
||
province_name = 'تست'
|
||
base_url = f'rasadyar.net/pay/{base_pos_id}'
|
||
if poultry_request.payer_type == 'poultry':
|
||
if poultry_request.interface_number is not None:
|
||
mobile = poultry_request.interface_number
|
||
else:
|
||
mobile = poultry_request.poultry.user.mobile
|
||
token_user = 'p' + poultry_request.poultry.user.user_gate_way_id
|
||
|
||
message = f' مرغدار محترم {poultry_request.poultry.user.fullname} ' \
|
||
f'\n' \
|
||
f'سفارش خرید مرغ زنده(فروش خارج از استان) با کد سفارش {poultry_request.order_code} برای شما در سامانه رصدیار استان {province_name} ثبت گردید جهت پرداخت تعرفه از طریق لینک زیر اقدام نمایید.' \
|
||
f'\n' \
|
||
f'**لازم به ذکر است: در صورت عدم پرداخت تعرفه تا پایان وقت امروز(16 بعد از ظهر) سفارشات شما لغو میگردد!' \
|
||
f'\n' \
|
||
f'لینک مشاهده و پرداخت تعرفه :' \
|
||
f'\n' \
|
||
f'https://{base_url}/{token_user}{poultry_request.order_code}' \
|
||
f'\n' \
|
||
f'سامانه رصدیار'
|
||
|
||
check_mobile = check_mobile_number(mobile)
|
||
if check_mobile:
|
||
req = send_sms_request(
|
||
f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={poultry_link_out_sale_username}&password={poultry_link_out_sale_password}&from=30002501&to={mobile}&message={message}")
|
||
else:
|
||
mobile = poultry_request.buyer_mobile
|
||
user = SystemUserProfile.objects.filter(mobile=mobile).first()
|
||
token_user = 'b' + user.user_gate_way_id
|
||
|
||
message = f' خریدار محترم {user.fullname} ' \
|
||
f'\n' \
|
||
f'سفارش خرید مرغ زنده(فروش خارج از استان) برای شما در سامانه رصدیار استان {province_name} ثبت گردید جهت پرداخت تعرفه از طریق لینک زیر اقدام نمایید.' \
|
||
f'\n' \
|
||
f'**لازم به ذکر است: در صورت عدم پرداخت تعرفه تا پایان وقت امروز(16 بعد از ظهر) سفارشات شما لغو میگردد!' \
|
||
f'\n' \
|
||
f'لینک مشاهده و پرداخت تعرفه :' \
|
||
f'\n' \
|
||
f'https://{base_url}/{token_user}' \
|
||
f'\n' \
|
||
f'سامانه رصدیار'
|
||
|
||
check_mobile = check_mobile_number(mobile)
|
||
if check_mobile:
|
||
req = send_sms_request(
|
||
f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={poultry_link_out_sale_username}&password={poultry_link_out_sale_password}&from=30002501&to={mobile}&message={message}")
|
||
return HttpResponse('ok', status=status.HTTP_200_OK)
|
||
|
||
|
||
def vet_farm_out_poultry_request_sms(mobile, poultry_fullname, quantity, chicken_breed,
|
||
order_code, send_date, sale_in_province, amount):
|
||
sale_type = 'آزاد' if sale_in_province == True else 'دولتی'
|
||
amount = "{:,}".format(int(amount))
|
||
quantity = "{:,}".format(int(quantity))
|
||
message = 'درخواست فروش به خارج از استان' \
|
||
f'\n' \
|
||
f'تعداد:{quantity}' \
|
||
f'\n' \
|
||
f'نژاد:{chicken_breed}' \
|
||
f'\n' \
|
||
f'تاریخ کشتار:{send_date}' \
|
||
f'\n' \
|
||
f'نوع فروش:{sale_type}' \
|
||
f'\n' \
|
||
f'مرغدار:{poultry_fullname}' \
|
||
f'\n' \
|
||
f'کدسفارش:{order_code}' \
|
||
f'\n' \
|
||
f'قیمت مرغدار:{amount}' \
|
||
f'\n' \
|
||
f'(سامانه رصدیار)'
|
||
|
||
check_mobile = check_mobile_number(mobile)
|
||
if check_mobile:
|
||
u = "http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={}&password={}&from=30002501&to={}&message={}".format(
|
||
USERNAME_SMS, PASSWORD_SMS,
|
||
mobile, message)
|
||
|
||
|
||
def send_sms_for_kill_house_not_add_to_inventory(mobile, quantity):
|
||
quantity = "{:,}".format(int(quantity))
|
||
message = 'درخواست فروش به خارج از استان' \
|
||
f'\n' \
|
||
f'تعداد:{quantity}' \
|
||
f'\n' \
|
||
f'\n' \
|
||
f'(سامانه رصدیار)'
|
||
|
||
check_mobile = check_mobile_number(mobile)
|
||
if check_mobile:
|
||
u = "http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={}&password={}&from=30002501&to={}&message={}".format(
|
||
USERNAME_SMS, PASSWORD_SMS,
|
||
mobile, message)
|
||
|
||
|
||
def send_sms_for_bar_difference_request(mobile, quantity, poultry):
|
||
message = 'با سلام و احترام' \
|
||
'\n' \
|
||
f'کاربر گرامی برای شما حجم {quantity} قطعه اختلاف کشتار از مرغدار {poultry} ثبت گردیده لطفا جهت تعیین تکلیف به بخش مدیریت بار قسمت اختلاف کشتار مراجعه نمایید.باتشکر سامانه رصدیار '
|
||
check_mobile = check_mobile_number(mobile)
|
||
if check_mobile:
|
||
req = send_sms_request(
|
||
f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={USERNAME_SMS_FINANCIAL}&password={PASSWORD_SMS_FINANCIAL}&from=30002501&to={mobile}&message={message}")
|
||
|
||
|
||
class ManagementSendSmsViewSet(viewsets.ModelViewSet):
|
||
queryset = ManagementSendSms.objects.all().order_by('id')
|
||
serializer_class = ManagementSendSmsSerializer
|
||
permission_classes = [TokenHasReadWriteScope]
|
||
|
||
|
||
def send_sms_fro_kill_request_market(kill_req):
|
||
poultry_name = kill_req.poultry.unit_name
|
||
mobile = kill_req.poultry.user.mobile
|
||
kill_house_name = kill_req.kill_house.name
|
||
kill_house_mobile = kill_req.kill_house.kill_house_operator.user.mobile
|
||
message = f' مرغدار محترم {poultry_name} ' \
|
||
f'\n' \
|
||
f'سفارش مرغ زنده در پنل بورسی برای شما ثبت شد:' \
|
||
f'\n' \
|
||
f'خریدار:{kill_house_name}({kill_house_mobile})' \
|
||
f'\n' \
|
||
f'حجم:{to_locale_str(kill_req.kill_capacity)}(قطعه)' \
|
||
f'\n' \
|
||
f'وزن:{to_locale_str(int(kill_req.kill_capacity * kill_req.Index_weight))}(کیلوگرم)' \
|
||
f'\n' \
|
||
f'مبلغ هر کیلو:{to_locale_str(kill_req.amount)}(ریال)' \
|
||
f'\n' \
|
||
f'حداکثر مهلت تسویه:{shamsi_date(kill_req.payment_deadline_date)}' \
|
||
f'\n' \
|
||
f'کد احراز:{kill_req.market_code}' \
|
||
f'\n' \
|
||
f'مهلت وارد کردن کد احراز 30 دقیقه میباشد و پس از آن درخواست لغو خواهد شد و گزارش برای دستگاه نظارتی ارسال میگردد.' \
|
||
f'\n' \
|
||
'سامانه رصدیار'
|
||
|
||
check_mobile = check_mobile_number(mobile)
|
||
if check_mobile:
|
||
u = send_sms_request(
|
||
f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={kill_req_market_username}"
|
||
f"&password={kill_req_market_password}&from=30002501&to={mobile}&message={message}")
|
||
|
||
|
||
def send_sms_for_poultry_market(poultry_req):
|
||
poultry_name = poultry_req.poultry.unit_name
|
||
mobile = poultry_req.poultry.user.mobile
|
||
quantity = to_locale_str(poultry_req.quantity)
|
||
amount = to_locale_str(poultry_req.amount)
|
||
send_date = shamsi_date(poultry_req.send_date)
|
||
message = 'مرغدار محترم {0}' \
|
||
'\n' \
|
||
'تعداد {1} قطعه مرغ گوشتی سهمیه کشتار در تاریخ {3} با قیمت مصوب {2} (ریال) برای شما در پنل بورسی سامانه رصدیار ثبت شده است.' \
|
||
'\n' \
|
||
'درصورت عدم موجوی و یا عدم امکان تحویل تعداد مذکور با تعاونی شهرستان خود یا کاربر سامانه در اتحادیه استان تماس حاصل فرمایید.' \
|
||
'\n' \
|
||
'سامانه رصدیار'.format(poultry_name, quantity, amount, send_date)
|
||
|
||
check_mobile = check_mobile_number(mobile)
|
||
if check_mobile:
|
||
u = send_sms_request(
|
||
f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={poultry_req_market_username}"
|
||
f"&password={poultry_req_market_password}&from=30002501&to={mobile}&message={message}")
|
||
|
||
|
||
def send_sms_for_guild(guilds):
|
||
mobile = guilds.user.mobile
|
||
type_role = 'مباشر' if guilds.steward == True else 'صنف'
|
||
message = 'کاربر گرامی\n' \
|
||
'برای شما کاربری {5} توسط {6}({7}) در سامانه رصدیار ثبت شده است.\n' \
|
||
'نام و نام خانوادگی: {0}\n' \
|
||
'نام واحد صنفی: {1}\n' \
|
||
'شهر: {2}\n' \
|
||
'آدرس: {3}\n' \
|
||
'درصورتی که اطلاعات مورد تایید شما میباشد کد احراز را به ثبت کننده تحویل دهید.\n' \
|
||
'کد احراز: {4}\n' \
|
||
'سامانه رصدیار'.format(guilds.user.fullname, guilds.guilds_name, guilds.address.city.name,
|
||
guilds.address.address, guilds.register_code, type_role,
|
||
guilds.registerar_fullname,
|
||
guilds.registerar_mobile)
|
||
|
||
check_mobile = check_mobile_number(mobile)
|
||
if check_mobile:
|
||
u = send_sms_request(
|
||
f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={guild_register_username}"
|
||
f"&password={guild_register_password}&from=30002501&to={mobile}&message={message}")
|
||
|
||
|
||
def send_sms_for_guild_for_register(guilds):
|
||
mobile = guilds.user.mobile
|
||
type_role = 'مباشر' if guilds.steward == True else 'صنف'
|
||
message = 'کاربر گرامی\n' \
|
||
'برای شما کاربری {5} در سامانه رصدیار ثبت شده است.\n' \
|
||
'نام و نام خانوادگی: {0}\n' \
|
||
'نام واحد صنفی: {1}\n' \
|
||
'شهر: {2}\n' \
|
||
'آدرس: {3}\n' \
|
||
'درصورتی که اطلاعات مورد تایید شما میباشد برای احراز شما در سامانه لطفا کد رو تحویل ثبت کننده دهید.\n' \
|
||
'کد احراز: {4}\n' \
|
||
'سامانه رصدیار'.format(guilds.user.fullname, guilds.guilds_name, guilds.address.city.name,
|
||
guilds.address.address, guilds.register_code, type_role,
|
||
guilds.registerar_fullname if guilds.registerar_fullname else '-',
|
||
guilds.registerar_mobile if guilds.registerar_mobile else '-')
|
||
|
||
check_mobile = check_mobile_number(mobile)
|
||
if check_mobile:
|
||
u = send_sms_request(
|
||
f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={guild_register_username}"
|
||
f"&password={guild_register_password}&from=30002501&to={mobile}&message={message}")
|
||
|
||
|
||
def send_sms_for_sale_bar(bar):
|
||
mobile = bar.buyer_mobile
|
||
date = shamsi_date(bar.date)
|
||
seller = bar.kill_house.name
|
||
weight = bar.weight_of_carcasses
|
||
number = bar.registration_code
|
||
buyer = bar.buyer_name
|
||
quanarntine_code = bar.clearance_code
|
||
provicne = bar.province
|
||
city = bar.city
|
||
|
||
message = 'اطلاعات توزیع لاشه به خارج استان\n' \
|
||
'فروشنده: {0} \n' \
|
||
'تاریخ فروش: {1}\n' \
|
||
'خریدار: {2}\n' \
|
||
'استان: {6}\n' \
|
||
'شهر: {7}\n' \
|
||
'وزن لاشه: {3} (کیلوگرم)\n' \
|
||
'کد قرنطینه: {4} \n' \
|
||
'کد احراز: {5}\n' \
|
||
'سامانه رصدیار'.format(seller, date, buyer, to_locale_str(weight), quanarntine_code, number, provicne,
|
||
city)
|
||
|
||
check_mobile = check_mobile_number(mobile)
|
||
if check_mobile:
|
||
u = send_sms_request(
|
||
f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={steward_allocation_username}"
|
||
f"&password={steward_allocation_password}&from=30002501&to={mobile}&message={message}")
|
||
|
||
|
||
def send_sms_for_sale_bar_for_steward(bar):
|
||
mobile = bar.buyer_mobile
|
||
date = shamsi_date(bar.date)
|
||
seller = bar.steward.guilds_name
|
||
weight = bar.weight_of_carcasses
|
||
number = bar.registration_code
|
||
buyer = bar.buyer_name
|
||
quanarntine_code = bar.clearance_code
|
||
provicne = bar.province
|
||
city = bar.city
|
||
|
||
message = 'اطلاعات توزیع لاشه به خارج استان\n' \
|
||
'فروشنده: {0} \n' \
|
||
'تاریخ فروش: {1}\n' \
|
||
'خریدار: {2}\n' \
|
||
'استان: {6}\n' \
|
||
'شهر: {7}\n' \
|
||
'وزن لاشه: {3} (کیلوگرم)\n' \
|
||
'کد قرنطینه: {4} \n' \
|
||
'کد احراز: {5}\n' \
|
||
'سامانه رصدیار'.format(seller, date, buyer, to_locale_str(weight), quanarntine_code, number, provicne,
|
||
city)
|
||
|
||
check_mobile = check_mobile_number(mobile)
|
||
if check_mobile:
|
||
u = send_sms_request(
|
||
f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={steward_allocation_username}"
|
||
f"&password={steward_allocation_password}&from=30002501&to={mobile}&message={message}")
|
||
|
||
|
||
def send_daily_slaughter_statistics_sms():
|
||
mobile_objects = SmsRecipient.objects.filter(is_active=True)
|
||
mobile_numbers = [obj.phone_number for obj in mobile_objects]
|
||
# mobile_numbers = [
|
||
# '09188176737',
|
||
# '09011110919',
|
||
# '09181112717',
|
||
# '09185914818',
|
||
# '09187040838',
|
||
# '09393946626',
|
||
# '09127687317',
|
||
# '09033073493',
|
||
# ]
|
||
|
||
target_date = datetime.now().date()
|
||
date_shamsi = shamsi_date(target_date)
|
||
|
||
if base_url_for_sms_report == 'ha':
|
||
province_name = 'همدان'
|
||
elif base_url_for_sms_report == 'ku':
|
||
province_name = 'کردستان'
|
||
elif base_url_for_sms_report == 'ma':
|
||
province_name = 'مرکزی'
|
||
else:
|
||
province_name = 'تست'
|
||
|
||
province_kill_requests = ProvinceKillRequest.objects.filter(
|
||
trash=False,
|
||
return_to_province=False,
|
||
archive_wage=False,
|
||
state__in=('pending', 'accepted'),
|
||
kill_request__recive_date__date=target_date
|
||
).aggregate(
|
||
total_orders=Sum('id'),
|
||
total_quantity=Sum('total_killed_quantity'),
|
||
total_live_weight=Sum('total_killed_weight'),
|
||
)
|
||
|
||
orders_count = ProvinceKillRequest.objects.filter(
|
||
trash=False,
|
||
return_to_province=False,
|
||
archive_wage=False,
|
||
state__in=('pending', 'accepted'),
|
||
kill_request__recive_date__date=target_date
|
||
).count()
|
||
|
||
total_quantity = province_kill_requests['total_quantity'] or 0
|
||
total_live_weight = province_kill_requests['total_live_weight'] or 0
|
||
total_carcass_weight = int(total_live_weight * 0.75)
|
||
average_weight = round(total_live_weight / total_quantity, 1) if total_quantity > 0 else 0
|
||
|
||
kill_house_requests = KillHouseRequest.objects.filter(
|
||
kill_request__recive_date__date=target_date,
|
||
trash=False
|
||
).aggregate(
|
||
total_quantity=Sum('accepted_real_quantity'),
|
||
total_weight=Sum('accepted_real_weight')
|
||
)
|
||
|
||
loads_count = KillHouseRequest.objects.filter(
|
||
kill_request__recive_date__date=target_date,
|
||
trash=False
|
||
).count()
|
||
|
||
loads_quantity = kill_house_requests['total_quantity'] or 0
|
||
loads_weight = kill_house_requests['total_weight'] or 0
|
||
|
||
formatted_quantity = to_locale_str(int(total_quantity))
|
||
formatted_live_weight = to_locale_str(int(total_live_weight))
|
||
formatted_carcass_weight = to_locale_str(int(total_carcass_weight))
|
||
formatted_loads_quantity = to_locale_str(int(loads_quantity))
|
||
formatted_loads_weight = to_locale_str(int(loads_weight))
|
||
|
||
message = f'اطلاعات کشتار مرغ گوشتی مورخ {date_shamsi} استان {province_name}\n' \
|
||
f'تعداد سفارشات: {orders_count}\n' \
|
||
f'حجم سفارش کشتار: {formatted_quantity} قطعه\n' \
|
||
f'وزن تقریبی زنده: {formatted_live_weight} کیلوگرم\n' \
|
||
f'وزن تقریبی لاشه: {formatted_carcass_weight} کیلوگرم\n' \
|
||
f'میانگین وزن زنده: {average_weight} کیلوگرم\n' \
|
||
f'اطلاعات بارایجاد شده:\n' \
|
||
f'تعداد بار: {loads_count}\n' \
|
||
f'حجم بارها: {formatted_loads_quantity} قطعه\n' \
|
||
f'وزن بارها(زنده): {formatted_loads_weight} کیلوگرم\n' \
|
||
f'سامانه رصدیار'
|
||
|
||
for mobile in mobile_numbers:
|
||
check_mobile = check_mobile_number(mobile)
|
||
if check_mobile:
|
||
try:
|
||
req = send_sms_request(
|
||
f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={sms_recipient_username}"
|
||
f"&password={sms_recipient_password}&from=30002501&to={mobile}&message={message}")
|
||
except Exception as e:
|
||
print(f"Error sending SMS to {mobile}: {str(e)}")
|
||
|
||
|
||
def send_daily_distribution_report_sms():
|
||
mobile_objects = SmsRecipient.objects.filter(is_active=True)
|
||
mobile_numbers = [obj.phone_number for obj in mobile_objects]
|
||
# mobile_numbers = [
|
||
# '09188176737',
|
||
# '09011110919',
|
||
# '09181112717',
|
||
# '09185914818',
|
||
# '09187040838',
|
||
# '09393946626',
|
||
# '09127687317',
|
||
# '09033073493',
|
||
# ]
|
||
|
||
target_date = datetime.now().date()
|
||
date_shamsi = shamsi_date(target_date)
|
||
|
||
if base_url_for_sms_report == 'ha':
|
||
province_name = 'همدان'
|
||
elif base_url_for_sms_report == 'ku':
|
||
province_name = 'کردستان'
|
||
elif base_url_for_sms_report == 'ma':
|
||
province_name = 'مرکزی'
|
||
else:
|
||
province_name = 'تست'
|
||
|
||
kill_houses = KillHouse.objects.filter(out_province=False, active=True, trash=False).order_by('name')
|
||
|
||
distribution_data = []
|
||
total_distribution_weight = 0
|
||
|
||
for kill_house in kill_houses:
|
||
kill_house_allocations = StewardAllocation.objects.filter(
|
||
kill_house=kill_house,
|
||
trash=False,
|
||
receiver_state__in=('pending', 'accepted'),
|
||
to_cold_house__isnull=True,
|
||
date__date=target_date,
|
||
warehouse=True
|
||
).aggregate(
|
||
total_weight=Sum('real_weight_of_carcasses')
|
||
)
|
||
|
||
allocation_weight = kill_house_allocations['total_weight']
|
||
|
||
if allocation_weight and allocation_weight > 0:
|
||
distribution_data.append({
|
||
'name': kill_house.name,
|
||
'weight': allocation_weight
|
||
})
|
||
total_distribution_weight += allocation_weight
|
||
|
||
if not distribution_data:
|
||
return HttpResponse('هیچ توزیعی برای امروز ثبت نشده است', status=status.HTTP_200_OK)
|
||
|
||
message_lines = [f'گزارش توزیع گوشت مرغ داخل استان']
|
||
message_lines.append(f'مورخ {date_shamsi} استان {province_name}')
|
||
|
||
for item in distribution_data:
|
||
formatted_weight = to_locale_str(int(item['weight']))
|
||
message_lines.append("kg {1}: {0}".format(item['name'], formatted_weight))
|
||
|
||
message_lines.append('-------------------------')
|
||
formatted_total = to_locale_str(int(total_distribution_weight))
|
||
message_lines.append(' مجموع کل توزیع: {} kg'.format(formatted_total))
|
||
message_lines.append('سامانه رصدیار')
|
||
|
||
message = '\n'.join(message_lines)
|
||
|
||
for mobile in mobile_numbers:
|
||
check_mobile = check_mobile_number(mobile)
|
||
if check_mobile:
|
||
try:
|
||
req = send_sms_request(
|
||
f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={sms_recipient_username}"
|
||
f"&password={sms_recipient_password}&from=30002501&to={mobile}&message={message}")
|
||
except Exception as e:
|
||
print(f"Error sending SMS to {mobile}: {str(e)}")
|
||
|
||
|
||
@api_view(["GET"])
|
||
@csrf_exempt
|
||
@permission_classes([AllowAny])
|
||
def send_daily_distribution_report_sms_manual(request):
|
||
mobile_objects = SmsRecipient.objects.filter(is_active=True)
|
||
mobile_numbers = [obj.phone_number for obj in mobile_objects]
|
||
# mobile_numbers = [
|
||
# '09188176737',
|
||
# '09011110919',
|
||
# '09181112717',
|
||
# '09185914818',
|
||
# '09187040838',
|
||
# '09393946626',
|
||
# '09127687317',
|
||
# '09033073493',
|
||
# ]
|
||
|
||
target_date = datetime.now().date()
|
||
date_shamsi = shamsi_date(target_date)
|
||
|
||
if base_url_for_sms_report == 'ha':
|
||
province_name = 'همدان'
|
||
elif base_url_for_sms_report == 'ku':
|
||
province_name = 'کردستان'
|
||
elif base_url_for_sms_report == 'ma':
|
||
province_name = 'مرکزی'
|
||
else:
|
||
province_name = 'تست'
|
||
|
||
kill_houses = KillHouse.objects.filter(out_province=False, active=True, trash=False).order_by('name')
|
||
|
||
distribution_data = []
|
||
total_distribution_weight = 0
|
||
|
||
for kill_house in kill_houses:
|
||
kill_house_allocations = StewardAllocation.objects.filter(
|
||
kill_house=kill_house,
|
||
trash=False,
|
||
receiver_state__in=('pending', 'accepted'),
|
||
to_cold_house__isnull=True,
|
||
date__date=target_date,
|
||
warehouse=True
|
||
).aggregate(
|
||
total_weight=Sum('real_weight_of_carcasses')
|
||
)
|
||
|
||
allocation_weight = kill_house_allocations['total_weight']
|
||
|
||
if allocation_weight and allocation_weight > 0:
|
||
distribution_data.append({
|
||
'name': kill_house.name,
|
||
'weight': allocation_weight
|
||
})
|
||
total_distribution_weight += allocation_weight
|
||
|
||
if not distribution_data:
|
||
return HttpResponse('هیچ توزیعی برای امروز ثبت نشده است', status=status.HTTP_200_OK)
|
||
|
||
message_lines = [f'گزارش توزیع گوشت مرغ داخل استان']
|
||
message_lines.append(f'مورخ {date_shamsi} استان {province_name}')
|
||
|
||
for item in distribution_data:
|
||
formatted_weight = to_locale_str(int(item['weight']))
|
||
message_lines.append("kg {1}: {0}".format(item['name'], formatted_weight))
|
||
|
||
message_lines.append('-------------------------')
|
||
formatted_total = to_locale_str(int(total_distribution_weight))
|
||
message_lines.append(' مجموع کل توزیع: {} kg'.format(formatted_total))
|
||
message_lines.append('سامانه رصدیار')
|
||
|
||
message = '\n'.join(message_lines)
|
||
|
||
success_count = 0
|
||
failed_numbers = []
|
||
|
||
for mobile in mobile_numbers:
|
||
check_mobile = check_mobile_number(mobile)
|
||
if check_mobile:
|
||
try:
|
||
req = send_sms_request(
|
||
f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={sms_recipient_username}"
|
||
f"&password={sms_recipient_password}&from=30002501&to={mobile}&message={message}")
|
||
success_count += 1
|
||
except Exception as e:
|
||
failed_numbers.append(mobile)
|
||
print(f"Error sending SMS to {mobile}: {str(e)}")
|
||
else:
|
||
failed_numbers.append(mobile)
|
||
|
||
return HttpResponse(
|
||
f'گزارش توزیع با موفقیت برای {success_count} شماره ارسال شد. تعداد کشتارگاه: {len(distribution_data)}. شماره های ناموفق: {failed_numbers if failed_numbers else "ندارد"}',
|
||
status=status.HTTP_200_OK)
|
||
|
||
|
||
@api_view(["GET"])
|
||
@csrf_exempt
|
||
@permission_classes([AllowAny])
|
||
def send_daily_slaughter_statistics_sms_manual(request):
|
||
mobile_objects = SmsRecipient.objects.filter(is_active=True)
|
||
mobile_numbers = [obj.phone_number for obj in mobile_objects]
|
||
# mobile_numbers = [
|
||
# '09188176737',
|
||
# '09011110919',
|
||
# '09181112717',
|
||
# '09185914818',
|
||
# '09187040838',
|
||
# '09393946626',
|
||
# '09127687317',
|
||
# '09033073493',
|
||
# ]
|
||
|
||
target_date = datetime.now().date()
|
||
date_shamsi = shamsi_date(target_date)
|
||
|
||
if base_url_for_sms_report == 'ha':
|
||
province_name = 'همدان'
|
||
elif base_url_for_sms_report == 'ku':
|
||
province_name = 'کردستان'
|
||
elif base_url_for_sms_report == 'ma':
|
||
province_name = 'مرکزی'
|
||
else:
|
||
province_name = 'تست'
|
||
|
||
province_kill_requests = ProvinceKillRequest.objects.filter(
|
||
trash=False,
|
||
return_to_province=False,
|
||
archive_wage=False,
|
||
state__in=('pending', 'accepted'),
|
||
kill_request__recive_date__date=target_date
|
||
).aggregate(
|
||
total_orders=Sum('id'),
|
||
total_quantity=Sum('total_killed_quantity'),
|
||
total_live_weight=Sum('total_killed_weight'),
|
||
)
|
||
|
||
orders_count = ProvinceKillRequest.objects.filter(
|
||
trash=False,
|
||
return_to_province=False,
|
||
archive_wage=False,
|
||
state__in=('pending', 'accepted'),
|
||
kill_request__recive_date__date=target_date
|
||
).count()
|
||
|
||
total_quantity = province_kill_requests['total_quantity'] or 0
|
||
total_live_weight = province_kill_requests['total_live_weight'] or 0
|
||
total_carcass_weight = int(total_live_weight * 0.75)
|
||
average_weight = round(total_live_weight / total_quantity, 1) if total_quantity > 0 else 0
|
||
|
||
kill_house_requests = KillHouseRequest.objects.filter(
|
||
kill_request__recive_date__date=target_date,
|
||
trash=False
|
||
).aggregate(
|
||
total_quantity=Sum('accepted_real_quantity'),
|
||
total_weight=Sum('accepted_real_weight')
|
||
)
|
||
|
||
loads_count = KillHouseRequest.objects.filter(
|
||
kill_request__recive_date__date=target_date,
|
||
trash=False
|
||
).count()
|
||
|
||
loads_quantity = kill_house_requests['total_quantity'] or 0
|
||
loads_weight = kill_house_requests['total_weight'] or 0
|
||
|
||
formatted_quantity = to_locale_str(int(total_quantity))
|
||
formatted_live_weight = to_locale_str(int(total_live_weight))
|
||
formatted_carcass_weight = to_locale_str(int(total_carcass_weight))
|
||
formatted_loads_quantity = to_locale_str(int(loads_quantity))
|
||
formatted_loads_weight = to_locale_str(int(loads_weight))
|
||
|
||
message = f'اطلاعات کشتار مرغ گوشتی مورخ {date_shamsi} استان {province_name}\n' \
|
||
f'تعداد سفارشات: {orders_count}\n' \
|
||
f'حجم سفارش کشتار: {formatted_quantity} قطعه\n' \
|
||
f'وزن تقریبی زنده: {formatted_live_weight} کیلوگرم\n' \
|
||
f'وزن تقریبی لاشه: {formatted_carcass_weight} کیلوگرم\n' \
|
||
f'میانگین وزن زنده: {average_weight} کیلوگرم\n' \
|
||
f'اطلاعات بارایجاد شده:\n' \
|
||
f'تعداد بار: {loads_count}\n' \
|
||
f'حجم بارها: {formatted_loads_quantity} قطعه\n' \
|
||
f'وزن بارها(زنده): {formatted_loads_weight} کیلوگرم\n' \
|
||
f'سامانه رصدیار'
|
||
|
||
success_count = 0
|
||
failed_numbers = []
|
||
|
||
for mobile in mobile_numbers:
|
||
check_mobile = check_mobile_number(mobile)
|
||
if check_mobile:
|
||
try:
|
||
req = send_sms_request(
|
||
f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={sms_recipient_username}"
|
||
f"&password={sms_recipient_password}&from=30002501&to={mobile}&message={message}")
|
||
success_count += 1
|
||
except Exception as e:
|
||
failed_numbers.append(mobile)
|
||
print(f"Error sending SMS to {mobile}: {str(e)}")
|
||
else:
|
||
failed_numbers.append(mobile)
|
||
|
||
return HttpResponse(
|
||
f'پیامک با موفقیت برای {success_count} شماره ارسال شد. شماره های ناموفق: {failed_numbers if failed_numbers else "ندارد"}',
|
||
status=status.HTTP_200_OK)
|
||
|
||
|
||
def test_sms_simple():
|
||
"""
|
||
تابع ساده برای تست ارسال پیامک
|
||
"""
|
||
mobile = '09165597588'
|
||
message = 'تست ارسال پیامک از سامانه رصدیار'
|
||
|
||
check_mobile = check_mobile_number(mobile)
|
||
if check_mobile:
|
||
try:
|
||
req = send_sms_request(
|
||
f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={USERNAME_SMS}&password={PASSWORD_SMS}&from=30002501&to={mobile}&message={message}")
|
||
print(f"SMS sent successfully. Status: {req.status_code}")
|
||
return f"پیامک با موفقیت ارسال شد. Status: {req.status_code}"
|
||
except Exception as e:
|
||
print(f"Error sending SMS: {str(e)}")
|
||
return f"خطا در ارسال پیامک: {str(e)}"
|
||
else:
|
||
return "شماره موبایل معتبر نیست"
|
||
|
||
|
||
@api_view(["GET"])
|
||
@csrf_exempt
|
||
@permission_classes([AllowAny])
|
||
def test_sms_endpoint(request):
|
||
print('so')
|
||
"""
|
||
Endpoint برای تست ارسال پیامک
|
||
"""
|
||
result = test_sms_simple()
|
||
return HttpResponse(result, status=status.HTTP_200_OK)
|
||
|
||
|
||
def send_block_panel_sms_for_kill_house(kill_house_list, date):
|
||
if base_url_for_sms_report == 'ha':
|
||
|
||
date_shamsi = shamsi_date(date) if date else shamsi_date(datetime.now().date())
|
||
|
||
for kill_house in kill_house_list:
|
||
kill_house_name = kill_house.name if hasattr(kill_house, 'name') else str(kill_house)
|
||
mobile = kill_house.kill_house_operator.user.mobile
|
||
|
||
if not mobile:
|
||
continue
|
||
|
||
message = f'کاربر گرامی\n' \
|
||
f'\n' \
|
||
f'کشتارگاه {kill_house_name}\n' \
|
||
f'\n' \
|
||
f'باتوجه به عدم توزیع گوشت مرغ و مانده انبار شما در تاریخ {date_shamsi} پنل خرید مرغ زنده شما مسدود میباشد.جهت پیگری و باز شدن پنل خود به مدیریت بازرسی و نظارت بر محصولات کشاورزی استان خود مراجعه فرمائید.\n' \
|
||
f'\n' \
|
||
f'(سامانه رصدیار)'
|
||
|
||
check_mobile = check_mobile_number(mobile)
|
||
if check_mobile:
|
||
try:
|
||
req = send_sms_request(
|
||
f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={gate_way_username}&password={gate_way_password}&from=30002501&to={mobile}&message={message}")
|
||
req1 = send_sms_request(
|
||
f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={gate_way_username}&password={gate_way_password}&from=30002501&to=09011110919&message={message}")
|
||
req2 = send_sms_request(
|
||
f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={gate_way_username}&password={gate_way_password}&from=30002501&to=09185914818&message={message}")
|
||
req3 = send_sms_request(
|
||
f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={gate_way_username}&password={gate_way_password}&from=30002501&to=09188198829&message={message}")
|
||
req4 = send_sms_request(
|
||
f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={gate_way_username}&password={gate_way_password}&from=30002501&to=09187065640&message={message}")
|
||
|
||
except Exception as e:
|
||
print(f"Error sending SMS to {mobile}: {str(e)}")
|
||
|
||
|
||
def send_sms_for_blocked_kill_houses(target_date=None):
|
||
if target_date is None:
|
||
target_date = datetime.now().date()
|
||
|
||
date_shamsi = shamsi_date(target_date)
|
||
|
||
kill_houses = KillHouse.objects.filter(
|
||
trash=False,
|
||
out_province=False
|
||
).select_related('kill_house_operator__user')
|
||
|
||
blocked_kill_houses = []
|
||
|
||
for kill_house in kill_houses:
|
||
ware_house_lock = False
|
||
|
||
if kill_house.ware_house_remaining_weight_limitation_status:
|
||
if kill_house.total_remain_warehouse_governmental_weight > kill_house.ware_house_remaining_weight_limitation:
|
||
ware_house_lock = True
|
||
|
||
if kill_house.ware_house_remaining_percent_limitation_status:
|
||
if not check_kill_house_remain_limitation_weight(kill_house):
|
||
ware_house_lock = True
|
||
|
||
if ware_house_lock:
|
||
blocked_kill_houses.append(kill_house)
|
||
|
||
if blocked_kill_houses:
|
||
send_block_panel_sms_for_kill_house(blocked_kill_houses, target_date)
|
||
|
||
return len(blocked_kill_houses)
|
||
|
||
|
||
@api_view(["GET"])
|
||
@csrf_exempt
|
||
@permission_classes([AllowAny])
|
||
def send_sms_for_blocked_kill_houses_endpoint(request):
|
||
target_date = None
|
||
if 'date' in request.GET:
|
||
try:
|
||
from datetime import datetime as dt
|
||
target_date = dt.strptime(request.GET['date'], '%Y-%m-%d').date()
|
||
except ValueError:
|
||
return HttpResponse('فرمت تاریخ نامعتبر است. فرمت صحیح: YYYY-MM-DD', status=status.HTTP_400_BAD_REQUEST)
|
||
|
||
count = send_sms_for_blocked_kill_houses(target_date)
|
||
return HttpResponse(f'پیامک برای {count} کشتارگاه مسدود شده ارسال شد.', status=status.HTTP_200_OK)
|
||
|
||
|
||
def send_sms_for_blocked_kill_houses_endpoint_cron():
|
||
target_date = None
|
||
send_sms_for_blocked_kill_houses(target_date)
|
||
|
||
|
||
def send_kill_house_debt_report_pdf_sms():
|
||
if base_url_for_sms_report == 'ha':
|
||
"""
|
||
ارسال پیامک با لینک گزارش بدهی کشتارگاه و مباشرین به 4 شماره خاص
|
||
این گزارش شامل اطلاعات کشتارگاهها و مباشرین با مانده انبار است
|
||
"""
|
||
date_shamsi = shamsi_date(datetime.now().date())
|
||
|
||
# ساخت لینک PDF
|
||
pdf_url = f'https://{base_url_for_sms_report}backend.rasadyar.com/kdp/'
|
||
|
||
message = f'گزارش مانده انبار گوشت مرغ کشتارگاه و مباشر' \
|
||
f'\n' \
|
||
f'مورخ: {date_shamsi}' \
|
||
f'\n' \
|
||
f'لینک دریافت گزارش:' \
|
||
f'\n' \
|
||
f'{pdf_url}' \
|
||
f'\n' \
|
||
f'(سامانه رصدیار)'
|
||
|
||
# لیست شمارههای دریافت کننده
|
||
recipient_numbers = [
|
||
'09011110919',
|
||
'09185914818',
|
||
'09188198829',
|
||
'09187065640'
|
||
]
|
||
|
||
# ارسال پیامک به هر شماره
|
||
for mobile in recipient_numbers:
|
||
check_mobile = check_mobile_number(mobile)
|
||
if check_mobile:
|
||
try:
|
||
req = send_sms_request(
|
||
f"http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username={gate_way_username}&password={gate_way_password}&from=30002501&to={mobile}&message={message}")
|
||
except Exception as e:
|
||
print(f"Error sending SMS to {mobile}: {str(e)}") |