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