File size: 4,372 Bytes
3478195
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
import streamlit as st
from termcolor import colored

def check_garant(
        garant_pdf,
        garant_docx,
        price_doc,
        MCKs
):
    print("-" * 80)
    print(
        f"garant_pdf: {garant_pdf}\n" +
        f"garant_docx: {garant_docx}\n" +
        f"price_doc: {price_doc}\n" +
        f"MCKs: {MCKs}"
    )

    correct = False
    # """
    # случай 1
    # ""
    if all([
        garant_pdf == "не требуется",
        garant_docx == None,
        price_doc == None
    ]) or all([
        garant_pdf == "не требуется",
        garant_docx == "не установлены",
        price_doc == "не установлены"
    ]) or all([
        garant_pdf == "не требуется",
        garant_docx == "не установлены",
        price_doc == "не устанавливается"
    ]) or all([
        garant_pdf == "не требуется",
        garant_docx == "не устанавливается",
        price_doc == "не устанавливается"
    ]):
       # print("ВЕРНО", 'green')
        st.write(":green[ВЕРНО]")
       # st.write("ВЕРНО")
        correct = True
        # """
    # случай 2
    # """
    elif garant_docx and price_doc and all([
        "Российский рубль" in garant_pdf,
        "%" in garant_docx,
        "руб" in price_doc
    ]):
        clean_garant_docx = garant_docx.replace("процент", "%").replace(" ", '')
        clean_price_doc = float(price_doc.replace(" ", "").split(",")[0].replace("руб", ""))
        clean_garant_pdf = float(garant_pdf.removesuffix("Российский рубль").strip())
        for MCK in MCKs:
            procent_garant_docx = float(clean_garant_docx.strip("% ")) * MCK / 100
            print("СРАВНЕНИЕ",
                  f"\tprocent_garant_docx: {procent_garant_docx}",
                  f"\tclean_garant_pdf: {clean_garant_pdf}",
                  f"\tclean_price_doc: {clean_price_doc}",
                  f"\tclean_garant_docx: {clean_garant_docx}", sep="\n")

            if (
                    abs(clean_garant_pdf - procent_garant_docx) < 3 and
                    abs(clean_price_doc - procent_garant_docx) < 3):
                # ( abs(clean_garant_pdf - procent_garant_docx) < 3 and
                # clean_price_doc == None):
              #  print(colored("ВЕРНО", 'green'))
                st.write(":green[ВЕРНО]")
               # st.write("ВЕРНО")
                correct = True
    # """
    # случай 3
    # """
    elif garant_pdf and garant_docx and all([
        "Российский рубль" in garant_pdf,
        "%" in garant_docx,
        price_doc == None
    ]):
        clean_garant_pdf = float(garant_pdf.removesuffix("Российский рубль").strip())
        clean_garant_docx = garant_docx[0].replace(" ", '').replace("процент", "%")
        for MCK in MCKs:
            procent_garant_docx = float(garant_docx.strip("% ")) * MCK / 100
            print(
                "СРАВНЕНИЕ\n" +
                f"\tprocent_garant_docx: {procent_garant_docx}\n" +
                f"\tclean_garant_pdf: {clean_garant_pdf}\n")
            if abs(clean_garant_pdf - procent_garant_docx) < 3:
               # print(colored("ВЕРНО", 'green'))
                st.write(":green[ВЕРНО]")
              #  st.write("ВЕРНО")
                correct = True

    if not correct:
       # print(colored("ERROR Требуется проверка", 'magenta'))
        st.write(":red[ОШИБКА]")
       # st.write("ERROR Требуется проверка")
        st.write("Проверьте блок обеспечения гарантийных обязательств на совпадение требований Извещения и проекта Контракта,"
                 " а также арифметические операции")
        st.write("Условие Извещения (Российский рубль) = Условие ПК % * НМЦК")
        st.write("Условие Извещения (Российский рубль) = Условие ПК (рублей)")
        st.write("Условие Извещения 'не требуется' = Условие ПК 'не установлено'")