Patrol / checks.py
Mariia5's picture
Update checks.py
95256d8 verified
import streamlit as st
from termcolor import colored
def check_0th_case(
check_if_3_30_present,
clean_oik_docx,
clean_oik_pdf,
clean_days_docx,
):
print(colored("check_0th_case", 'blue'),
f"\t{check_if_3_30_present = }",
f"\t{clean_oik_docx = }",
f"\t{clean_oik_pdf = }",
f"\t{clean_days_docx = }", sep="\n")
if all([
check_if_3_30_present == True,
clean_oik_docx not in ["не установлены", "не устанавливается"],
clean_oik_pdf != "не требуется"
]):
return clean_days_docx == 15 # (== True if clean_days_docx == 15 else False)
return None
def check_1st_case(
clean_oik_pdf,
clean_oik_docx,
ot_nachalnoi_tseni_kontracta,
ot_tseni_kontracta,
MCKs,
):
print(colored("case1", 'blue'),
f"\t{clean_oik_pdf = }",
f"\t{clean_oik_docx = }",
f"\t{MCKs = }", sep="\n")
print(f"{ot_nachalnoi_tseni_kontracta = }")
print(f"{ot_tseni_kontracta = }")
correct = False
if all([
"Российский рубль" in clean_oik_pdf,
ot_nachalnoi_tseni_kontracta,
"%" in clean_oik_docx,
]):
clean_oik_pdf = float(clean_oik_pdf.removesuffix(" Российский рубль"))
for MCK in MCKs:
price_docx = float(
clean_oik_docx.strip("% ").strip("(десять) ").strip("(пять) ").strip("(тридцать) ")) * MCK / 100
# print("СРАВНЕНИЕ", clean_oik_pdf, "||", price_docx)
# print(clean_oik_pdf)
if abs(clean_oik_pdf - price_docx) < 3:
#print(colored("ВЕРНО", 'green'))
st.write(":green[ВЕРНО]")
#st.write("ВЕРНО")
correct = True
elif all([
"%" in clean_oik_pdf,
ot_nachalnoi_tseni_kontracta,
"%" in clean_oik_docx,
]):
clean_oik_pdf = float(clean_oik_pdf.strip(" %"))
if abs(clean_oik_pdf - float(clean_oik_docx.strip("% ").strip("(десять) ").strip("(пять) ").strip("(тридцать) "))) == 0:
#print(colored("ВЕРНО", 'green'))
st.write(":green[ВЕРНО]")
#st.write("ВЕРНО")
correct = True
if not correct:
#print(colored("ОШИБКА", 'magenta'))
st.write(":red[ОШИБКА]")
#st.write("ОШИБКА")
st.write("Если не указаны ч.24 ст.22 и ч.3 ст.30, то обеспечение исполнения контракта устанавливается от НАЧАЛЬНОЙ (максимальной) цены")
st.write("Условие Извещения (Российский рубль) = Условие ПК % * НМЦК")
st.write("Условие Извещения 'не требуется' = Условие ПК 'не установлено'")
#st.write("Срок возврата обеспечения 30 дней")
def check_2nd_case(
clean_oik_pdf,
clean_oik_docx,
ot_tseni_kontracta,
MCKs,
clean_days_docx,
check_if_3_30_present,
):
print(colored("case2", 'blue'),
f"\t{clean_oik_pdf = }",
f"\t{clean_oik_docx = }",
f"\t{MCKs = }", sep="\n")
correct = False
if all([
"%" in clean_oik_pdf,
"%" in clean_oik_docx,
]):
print("СРАВНЕНИЕ", clean_oik_pdf, "||", float(clean_oik_docx.strip("% ")))
clean_oik_pdf = float(
clean_oik_pdf.removesuffix(" Российский рубль").strip(" %"))
print(clean_oik_pdf)
if abs(clean_oik_pdf - float(clean_oik_docx.strip("% ").strip("(десять) ").strip("(пять) ").strip(
"(тридцать) "))) < 3:
if ot_tseni_kontracta:
check0 = check_0th_case(
check_if_3_30_present,
clean_oik_docx,
clean_oik_pdf,
clean_days_docx,
)
if check0 == True:
# print(colored("ВЕРНО", 'green'))
st.write(":green[ВЕРНО]")
# st.write("ВЕРНО")
correct = True
elif check0 == False:
#print(colored("ОШИБКА в днях OIK", 'magenta'))
st.write(":red[ОШИБКА в днях]")
#st.write("ОШИБКА в днях")
st.write("При выборе ч.3.ст.30 возврат обеспечения исполнения контракта - 15 дней")
if not correct:
# print(colored("ОШИБКА", 'magenta'))
st.write(":red[ОШИБКА]")
# st.write("ОШИБКА")
st.write("Условие Извещения % = Условие ПК %")
st.write("При указании ч.3 ст.30 и ч.24 ст.22 обеспечение исполнения контракта устанавливается от ЦЕНЫ КОНТРАКТА")
st.write("Условие Извещения 'не требуется' = Условие ПК 'не установлено'")
def check_3rd_case(
clean_oik_pdf,
clean_oik_docx,
ot_nachalnoi_tseni_kontracta,
ot_max_znacenia_tseni_kontracta,
MCKs,
):
print(colored("case3", 'blue'),
f"\t{clean_oik_pdf = }",
f"\t{clean_oik_docx = }",
f"\t{MCKs = }", sep="\n")
correct = False
if all([
"Российский рубль" in clean_oik_pdf,
"%" in clean_oik_docx,
]):
clean_oik_pdf = float(clean_oik_pdf.removesuffix(" Российский рубль"))
print(f"clean_oik_pdf: {clean_oik_pdf}")
for MCK in MCKs:
if abs(clean_oik_pdf - (float(clean_oik_docx.strip("% ").strip("(десять) ").strip("(пять) ").strip("(тридцать) ")) * MCK / 100)) < 3:
if ot_nachalnoi_tseni_kontracta or ot_max_znacenia_tseni_kontracta:
# print(colored("ВЕРНО",'green'))
st.write(":green[ВЕРНО]")
# st.write("ВЕРНО")
correct = True
if not correct:
# print(colored("ОШИБКА",'magenta'))
st.write(":red[ОШИБКА]")
#st.write("ОШИБКА")
st.write("При указании ч.24 ст.22 и отсутствии ч.3 ст.30 обеспечение исполнения контракта устанавливается от МАКСИМАЛЬНОГО ЗНАЧЕНИЯ ЦЕНЫ КОНТРАКТА")
st.write("Условие Извещения (Российский рубль) = Условие ПК % * НМЦК")
st.write("Условие Извещения 'не требуется' = Условие ПК 'не установлено'")
def check_4th_case(
clean_oik_pdf,
clean_oik_docx,
ot_nachalnoi_tseni_kontracta,
ot_tseni_kontracta,
MCKs,
clean_days_docx,
check_if_3_30_present,
percent_before_price
):
print(colored("case4", 'blue'),
f"\t{clean_oik_pdf = }",
f"\t{clean_oik_docx = }",
f"\t{MCKs = }",
f"\t{ot_nachalnoi_tseni_kontracta = }",
f"\t{ot_tseni_kontracta = }",
sep="\n")
correct = False
if all([
percent_before_price == False,
"%" in clean_oik_pdf,
"%" in clean_oik_docx,
]):
if float(clean_oik_pdf.strip("% ")) == float(clean_oik_docx.strip("% ").strip("(десять) ").strip("(пять) ").strip("(тридцать) ")):
if ot_tseni_kontracta and not ot_nachalnoi_tseni_kontracta:
check0 = check_0th_case(
check_if_3_30_present,
clean_oik_docx,
clean_oik_pdf,
clean_days_docx,
)
print("check0", check0)
if check0 == True:
# print(colored("ВЕРНО",'green'))
st.write(":green[ВЕРНО]")
# st.write("ВЕРНО")
correct = True
elif check0 == False:
# print(colored("ОШИБКА в днях OIK",'magenta'))
st.write(":red[ОШИБКА в днях]")
# st.write("ОШИБКА в днях")
st.write("При выборе ч.3.ст.30 возврат обеспечения исполнения контракта - 15 дней")
if not correct:
# print(colored("ОШИБКА",'magenta'))
# st.write("ОШИБКА")
st.write(":red[ОШИБКА]")
st.write("При указании ч.3 ст.30 обеспечение исполнения контракта устанавливается от ЦЕНЫ КОНТРАКТА")
st.write("Условие Извещения % = Условие ПК %")
st.write("Условие Извещения 'не требуется' = Условие ПК 'не установлено'")
def check_correctness(
check_if_3_30_present,
check_if_24_22_present,
clean_oik_pdf,
clean_oik_docx,
ot_nachalnoi_tseni_kontracta,
ot_tseni_kontracta,
ot_max_znacenia_tseni_kontracta,
MCKs,
clean_days_docx,
percent_before_price
):
# """
# === case5 ===
# elif 'Обеспечение исполнения контракта не требуется' in pdf and "Требования к обеспечению исполнению Контракта не установлены" in docx:
# if "не требуется"="не установлены":
# print("ВЕРНО")
# else:
# print ("ОШИБКА")
# break
# """
if clean_oik_pdf == "не требуется" and clean_oik_docx == "не установлены" or \
clean_oik_pdf == "не требуется" and clean_oik_docx == "не устанавливается":
print(
colored("case5", 'blue'),
f"\t{clean_oik_pdf = }",
f"\t{clean_oik_docx = }", sep="\n")
#print(colored("ВЕРНО", 'green'))
st.write(":green[ВЕРНО]")
# st.write("ВЕРНО")
check0 = check_0th_case(
check_if_3_30_present=check_if_3_30_present,
clean_oik_docx=clean_oik_docx,
clean_oik_pdf=clean_oik_pdf,
clean_days_docx=clean_days_docx,
)
if check0 == True:
# print(colored("ВЕРНО", 'green'))
st.write(":green[ВЕРНО]")
# st.write("ВЕРНО")
correct = True
elif check0 == False:
# print(colored("ОШИБКА в днях OIK", 'magenta'))
st.write(":red[ОШИБКА в днях]")
# st.write("ОШИБКА в днях")
st.write("При выборе ч.3 ст.30 возврат обеспечения - 15 дней")
# """
# === case1 ===
# if "ч. 24 ст. 22" and "ч. 3 ст. 30" not in pdf:
# if oik.pdf Российский рубль = oik.docx %|процент(ов,а) от НАЧАЛЬНОЙ МАКСИМАЛЬНОЙ (НМЦ) docx *"Начальная (максимальная) цена ".pdf Российский рубль:
# print("ВЕРНО")
# else:
# print ("ОШИБКА")
# break
# """
elif not check_if_3_30_present and not check_if_24_22_present:
check_1st_case(
clean_oik_pdf=clean_oik_pdf,
clean_oik_docx=clean_oik_docx,
ot_nachalnoi_tseni_kontracta=ot_nachalnoi_tseni_kontracta,
ot_tseni_kontracta=ot_tseni_kontracta,
MCKs=MCKs,
)
# """
# === case2 ===
# elif "ч. 3 ст. 30" and "ч. 24 ст. 22" in pdf :
# if oik.pdf % = oik.docx %|процент(ов,а) от ЦЕНЫ КОНТРАКТА:
# print("ВЕРНО")
# else:
# print ("ОШИБКА")
# break
# """
elif check_if_3_30_present and check_if_24_22_present:
check_2nd_case(
clean_oik_pdf=clean_oik_pdf,
clean_oik_docx=clean_oik_docx,
# ot_nachalnoi_tseni_kontracta,
ot_tseni_kontracta=ot_tseni_kontracta,
MCKs=MCKs,
clean_days_docx=clean_days_docx,
check_if_3_30_present=check_if_3_30_present,
)
# """
# === case3 ===
# elif "ч. 24 ст. 22" in pdf and "ч. 3 ст. 30" not in pdf:
# if oik.pdf Российский рубль = "Максимальное значение цены контракта".pdf * %|процент(ов,а) от ЦЕНЫ контракта.docx:
# print("ВЕРНО")
# else:
# print ("ОШИБКА")
# break
# """
elif check_if_24_22_present and not check_if_3_30_present:
check_3rd_case(
clean_oik_pdf=clean_oik_pdf,
clean_oik_docx=clean_oik_docx,
ot_nachalnoi_tseni_kontracta=ot_nachalnoi_tseni_kontracta,
ot_max_znacenia_tseni_kontracta=ot_max_znacenia_tseni_kontracta,
# ot_tseni_kontracta,
MCKs=MCKs,
)
# """
# === case4 ===
# elif "ч. 3 ст. 30" in pdf and "ч. 24 ст. 22" not in pdf:
# if oik.pdf % = oik.docx %|процент(ов,а) от ЦЕНЫ контракта:
# print("ВЕРНО")
# else:
# print ("ОШИБКА")
# break
# """
elif check_if_3_30_present and not check_if_24_22_present:
check_4th_case(
clean_oik_pdf=clean_oik_pdf,
clean_oik_docx=clean_oik_docx,
ot_nachalnoi_tseni_kontracta=ot_nachalnoi_tseni_kontracta,
ot_tseni_kontracta=ot_tseni_kontracta,
MCKs=MCKs,
clean_days_docx=clean_days_docx,
check_if_3_30_present=check_if_3_30_present,
percent_before_price=percent_before_price
)
# """
# === case7 ===
# elif "обеспечение исполнения контракта» приложения 2 к Контракту" in docx:
# print("ERROR Требуется проверка ")
# else:
# print("ERROR Требуется проверка")
# break
# """
else:
# print(colored("ERROR Требуется проверка", 'magenta'))
st.write(":red[ERROR Требуется проверка]")
# st.write("ERROR Требуется проверка")
# break