| 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 Требуется проверка]") |
| |
| |
|
|