|
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 |
|
|
|
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 |
|
|
|
|
|
if abs(clean_oik_pdf - price_docx) < 3: |
|
|
|
st.write(":green[ВЕРНО]") |
|
|
|
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: |
|
|
|
st.write(":green[ВЕРНО]") |
|
|
|
correct = True |
|
|
|
|
|
|
|
|
|
if not correct: |
|
|
|
st.write(":red[ОШИБКА]") |
|
|
|
st.write("Если не указаны ч.24 ст.22 и ч.3 ст.30, то обеспечение исполнения контракта устанавливается от НАЧАЛЬНОЙ (максимальной) цены") |
|
st.write("Условие Извещения (Российский рубль) = Условие ПК % * НМЦК") |
|
st.write("Условие Извещения 'не требуется' = Условие ПК 'не установлено'") |
|
|
|
|
|
|
|
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: |
|
|
|
st.write(":green[ВЕРНО]") |
|
|
|
correct = True |
|
elif check0 == False: |
|
|
|
st.write(":red[ОШИБКА в днях]") |
|
|
|
st.write("При выборе ч.3.ст.30 возврат обеспечения исполнения контракта - 15 дней") |
|
|
|
if not correct: |
|
|
|
st.write(":red[ОШИБКА]") |
|
|
|
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: |
|
|
|
st.write(":green[ВЕРНО]") |
|
|
|
correct = True |
|
if not correct: |
|
|
|
st.write(":red[ОШИБКА]") |
|
|
|
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: |
|
|
|
st.write(":green[ВЕРНО]") |
|
|
|
|
|
correct = True |
|
elif check0 == False: |
|
|
|
st.write(":red[ОШИБКА в днях]") |
|
|
|
st.write("При выборе ч.3.ст.30 возврат обеспечения исполнения контракта - 15 дней") |
|
|
|
if not correct: |
|
|
|
|
|
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 |
|
): |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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") |
|
|
|
st.write(":green[ВЕРНО]") |
|
|
|
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: |
|
|
|
st.write(":green[ВЕРНО]") |
|
|
|
correct = True |
|
elif check0 == False: |
|
|
|
st.write(":red[ОШИБКА в днях]") |
|
|
|
st.write("При выборе ч.3 ст.30 возврат обеспечения - 15 дней") |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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, |
|
) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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_tseni_kontracta=ot_tseni_kontracta, |
|
MCKs=MCKs, |
|
clean_days_docx=clean_days_docx, |
|
check_if_3_30_present=check_if_3_30_present, |
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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, |
|
|
|
MCKs=MCKs, |
|
) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
|
) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
else: |
|
|
|
st.write(":red[ERROR Требуется проверка]") |
|
|
|
|
|
|