Commit e5cc4264a755aa18aa1f5d0dece8632397501256

Authored by alexdiatlov
Committed by GitHub
2 parents 0c1b798c 978b4c04

Merge pull request #114 from ProzorroUKR/VAT

CS-132 Vat
@@ -20,6 +20,7 @@ Resource resource.robot @@ -20,6 +20,7 @@ Resource resource.robot
20 ... item_meat=${${ITEM_MEAT}} 20 ... item_meat=${${ITEM_MEAT}}
21 ... api_host_url=${API_HOST_URL} 21 ... api_host_url=${API_HOST_URL}
22 ... moz_integration=${${MOZ_INTEGRATION}} 22 ... moz_integration=${${MOZ_INTEGRATION}}
  23 + ... vat_included=${${VAT_INCLUDED}}
23 ${DIALOGUE_TYPE}= Get Variable Value ${DIALOGUE_TYPE} 24 ${DIALOGUE_TYPE}= Get Variable Value ${DIALOGUE_TYPE}
24 ${FUNDING_KIND}= Get Variable Value ${FUNDING_KIND} 25 ${FUNDING_KIND}= Get Variable Value ${FUNDING_KIND}
25 Run keyword if '${DIALOGUE_TYPE}' != '${None}' Set to dictionary ${tender_parameters} dialogue_type=${DIALOGUE_TYPE} 26 Run keyword if '${DIALOGUE_TYPE}' != '${None}' Set to dictionary ${tender_parameters} dialogue_type=${DIALOGUE_TYPE}
@@ -834,7 +835,8 @@ Resource resource.robot @@ -834,7 +835,8 @@ Resource resource.robot
834 835
835 Вказати дійсно оплачену суму 836 Вказати дійсно оплачену суму
836 ${amount}= Get variable value ${USERS.users['${tender_owner}'].contract_data.data.value.amount} 837 ${amount}= Get variable value ${USERS.users['${tender_owner}'].contract_data.data.value.amount}
837 - ${amountPaid}= Create Dictionary amount=${amount} valueAddedTaxIncluded=${True} currency=UAH 838 + ${valueAddedTaxIncluded}= Get variable value ${USERS.users['${tender_owner}'].contract_data.data.value.valueAddedTaxIncluded}
  839 + ${amountPaid}= Create Dictionary amount=${amount} valueAddedTaxIncluded=${valueAddedTaxIncluded} currency=UAH
838 ${data}= Create Dictionary amountPaid=${amountPaid} 840 ${data}= Create Dictionary amountPaid=${amountPaid}
839 ${data}= Create Dictionary data=${data} 841 ${data}= Create Dictionary data=${data}
840 Set to dictionary ${USERS.users['${tender_owner}']} terminating_data=${data} 842 Set to dictionary ${USERS.users['${tender_owner}']} terminating_data=${data}
@@ -6,8 +6,10 @@ Suite Teardown Test Suite Teardown @@ -6,8 +6,10 @@ Suite Teardown Test Suite Teardown
6 *** Variables *** 6 *** Variables ***
7 @{USED_ROLES} tender_owner viewer 7 @{USED_ROLES} tender_owner viewer
8 ${MOZ_INTEGRATION} ${False} 8 ${MOZ_INTEGRATION} ${False}
  9 +${VAT_INCLUDED} ${True}
9 ${NUMBER_OF_MILESTONES} ${0} 10 ${NUMBER_OF_MILESTONES} ${0}
10 11
  12 +
11 *** Test Cases *** 13 *** Test Cases ***
12 Можливість оголосити тендер 14 Можливість оголосити тендер
13 [Tags] ${USERS.users['${tender_owner}'].broker}: Оголошення тендера 15 [Tags] ${USERS.users['${tender_owner}'].broker}: Оголошення тендера
@@ -7,6 +7,7 @@ Suite Teardown Test Suite Teardown @@ -7,6 +7,7 @@ Suite Teardown Test Suite Teardown
7 ${MODE} belowThreshold 7 ${MODE} belowThreshold
8 @{USED_ROLES} tender_owner provider provider1 provider2 viewer 8 @{USED_ROLES} tender_owner provider provider1 provider2 viewer
9 ${MOZ_INTEGRATION} ${False} 9 ${MOZ_INTEGRATION} ${False}
  10 +${VAT_INCLUDED} ${True}
10 11
11 ${NUMBER_OF_ITEMS} ${1} 12 ${NUMBER_OF_ITEMS} ${1}
12 ${NUMBER_OF_LOTS} ${1} 13 ${NUMBER_OF_LOTS} ${1}
@@ -161,15 +161,26 @@ Suite Teardown Test Suite Teardown @@ -161,15 +161,26 @@ Suite Teardown Test Suite Teardown
161 Run As ${tender_owner} Редагувати поле договору ${CONTRACT_UAID} title ${title} 161 Run As ${tender_owner} Редагувати поле договору ${CONTRACT_UAID} title ${title}
162 162
163 163
  164 +Можливість редагувати вартість договору без ПДВ
  165 + [Tags] ${USERS.users['${tender_owner}']}: Редагування договору
  166 + ... tender_owner
  167 + ... ${USERS.users['${tender_owner}']}
  168 + ... modify_contract
  169 + [Teardown] Оновити LAST_MODIFICATION_DATE
  170 + ${amount_net}= create_fake_amount_net ${USERS.users['${tender_owner}'].contract_data.data.value.amount}
  171 + Set to dictionary ${USERS.users['${tender_owner}']} new_amount_net=${amount_net}
  172 + Run As ${tender_owner} Редагувати поле договору ${CONTRACT_UAID} value.amountNet ${amount_net}
  173 +
  174 +
164 Можливість редагувати вартість договору 175 Можливість редагувати вартість договору
165 - [Tags] ${USERS.users['${tender_owner}'].broker}: Редагування договору 176 + [Tags] ${USERS.users['${tender_owner}']}: Редагування договору
166 ... tender_owner 177 ... tender_owner
167 - ... ${USERS.users['${tender_owner}'].broker} 178 + ... ${USERS.users['${tender_owner}']}
168 ... modify_contract 179 ... modify_contract
169 [Teardown] Оновити LAST_MODIFICATION_DATE 180 [Teardown] Оновити LAST_MODIFICATION_DATE
170 - ${value.amount}= create_fake_value_amount  
171 - Set to dictionary ${USERS.users['${tender_owner}']} new_amount=${value.amount}  
172 - Run As ${tender_owner} Редагувати поле договору ${CONTRACT_UAID} value.amount ${value.amount} 181 + ${amount}= create_fake_amount ${USERS.users['${tender_owner}'].contract_data.data.value.amount}
  182 + Set to dictionary ${USERS.users['${tender_owner}']} new_amount=${amount}
  183 + Run As ${tender_owner} Редагувати поле договору ${CONTRACT_UAID} value.amount ${amount}
173 184
174 185
175 Можливість редагувати дату завершення дії договору 186 Можливість редагувати дату завершення дії договору
@@ -245,10 +256,22 @@ Suite Teardown Test Suite Teardown @@ -245,10 +256,22 @@ Suite Teardown Test Suite Teardown
245 ... title 256 ... title
246 257
247 258
  259 +Відображення відредагованої вартості договору без ПДВ
  260 + [Tags] ${USERS.users['${tender_owner}']}: Редагування договору
  261 + ... viewer
  262 + ... ${USERS.users['${tender_owner}']}
  263 + ... modify_contract
  264 + Звірити поле договору із значенням
  265 + ... ${viewer}
  266 + ... ${CONTRACT_UAID}
  267 + ... ${USERS.users['${tender_owner}'].new_amount_net}
  268 + ... value.amountNet
  269 +
  270 +
248 Відображення відредагованої вартості договору 271 Відображення відредагованої вартості договору
249 - [Tags] ${USERS.users['${viewer}'].broker}: Редагування договору 272 + [Tags] ${USERS.users['${tender_owner}']}: Редагування договору
250 ... viewer 273 ... viewer
251 - ... ${USERS.users['${viewer}'].broker} 274 + ... ${USERS.users['${tender_owner}']}
252 ... modify_contract 275 ... modify_contract
253 Звірити поле договору із значенням 276 Звірити поле договору із значенням
254 ... ${viewer} 277 ... ${viewer}
@@ -44,43 +44,175 @@ Suite Teardown Test Suite Teardown @@ -44,43 +44,175 @@ Suite Teardown Test Suite Teardown
44 Дочекатись дати ${standstillEnd} 44 Дочекатись дати ${standstillEnd}
45 45
46 46
47 -Відображення вартості угоди 47 +Відображення вартості угоди без урахування ПДВ
48 [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних угоди 48 [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних угоди
49 ... viewer 49 ... viewer
50 - ... ${USERS.users['${viewer}'].broker} 50 + ... ${viewer_data.broker}
51 ... contract_view 51 ... contract_view
52 ... non-critical 52 ... non-critical
53 [Setup] Дочекатись синхронізації з майданчиком ${viewer} 53 [Setup] Дочекатись синхронізації з майданчиком ${viewer}
54 ${award_index}= Отримати останній індекс awards ${tender_owner} ${viewer} 54 ${award_index}= Отримати останній індекс awards ${tender_owner} ${viewer}
55 - Отримати дані із поля awards[${award_index}].value.amount тендера для користувача ${viewer} 55 + ${award}= Get From List ${USERS.users['${viewer}'].tender_data.data.awards} ${award_index}
  56 + ${award_amount}= Get From Dictionary ${award.value} amount
  57 + ${contract_index}= Отримати останній індекс contracts ${tender_owner} ${viewer}
  58 + ${amount_net_field}= Set Variable contracts[${contract_index}].value.amountNet
  59 + Звірити відображення поля ${amount_net_field} тендера із ${award_amount} для користувача ${viewer}
56 60
57 61
58 -Можливість редагувати вартість угоди 62 +Можливість редагувати вартість угоди без урахування ПДВ
59 [Tags] ${USERS.users['${tender_owner}'].broker}: Редагування угоди 63 [Tags] ${USERS.users['${tender_owner}'].broker}: Редагування угоди
60 ... tender_owner 64 ... tender_owner
61 ... ${USERS.users['${tender_owner}'].broker} 65 ... ${USERS.users['${tender_owner}'].broker}
  66 + ... modify_contract
  67 + ... critical
  68 + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner}
  69 + [Teardown] Оновити LAST_MODIFICATION_DATE
  70 + ${award}= Отримати останній элемент awards ${tender_owner} ${viewer}
  71 + ${amount_net}= create_fake_amount_net ${award.value.amount} ${award.value.valueAddedTaxIncluded}
  72 + ${contract_index}= Отримати останній індекс contracts ${tender_owner} ${viewer}
  73 + Set to dictionary ${USERS.users['${tender_owner}']} new_amount_net=${amount_net}
  74 + Run As ${tender_owner} Редагувати угоду
  75 + ... ${TENDER['TENDER_UAID']}
  76 + ... ${contract_index}
  77 + ... value.amountNet
  78 + ... ${amount_net}
  79 +
  80 +
  81 +Відображення відредагованої вартості угоди без урахування ПДВ
  82 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних угоди
  83 + ... viewer
  84 + ... ${USERS.users['${viewer}'].broker} ${USERS.users['${tender_owner}'].broker}
  85 + ... contract_view
  86 + ... non-critical
  87 + [Setup] Дочекатись синхронізації з майданчиком ${viewer}
  88 + ${amount_net}= Get Variable Value ${USERS.users['${tender_owner}'].new_amount_net}
  89 + ${contract_index}= Отримати останній індекс contracts ${tender_owner} ${viewer}
  90 + ${amount_net_field}= Set Variable contracts[${contract_index}].value.amountNet
  91 + Звірити відображення поля ${amount_net_field} тендера із ${amount_net} для користувача ${viewer}
  92 +
  93 +
  94 +Відображення вартості угоди
  95 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних угоди
  96 + ... viewer
  97 + ... ${USERS.users['${viewer}'].broker}
  98 + ... contract_view
  99 + ... non-critical
  100 + [Setup] Дочекатись синхронізації з майданчиком ${viewer}
  101 + ${contract_index}= Отримати останній індекс contracts ${tender_owner} ${viewer}
  102 + ${amount_field}= Set Variable contracts[${contract_index}].value.amount
  103 + Отримати дані із поля ${amount_field} тендера для користувача ${viewer}
  104 +
  105 +
  106 +Можливість редагувати вартість угоди
  107 + ${viewer_data}= Get From Dictionary ${USERS.users} ${viewer}
  108 + ${tender_owner_data}= Get From Dictionary ${USERS.users} ${tender_owner}
  109 + [Tags] ${tender_owner_data.broker}: Редагування угоди
  110 + ... tender_owner
  111 + ... ${tender_owner_data.broker}
62 ... modify_contract_value 112 ... modify_contract_value
63 ... critical 113 ... critical
64 [Setup] Дочекатись синхронізації з майданчиком ${tender_owner} 114 [Setup] Дочекатись синхронізації з майданчиком ${tender_owner}
65 [Teardown] Оновити LAST_MODIFICATION_DATE 115 [Teardown] Оновити LAST_MODIFICATION_DATE
66 - ${award_index}= Отримати останній індекс awards ${tender_owner} ${viewer} 116 + ${award}= Отримати останній элемент awards ${tender_owner} ${viewer}
  117 + ${amount}= create_fake_amount ${award.value.amount} ${award.value.valueAddedTaxIncluded}
67 ${contract_index}= Отримати останній індекс contracts ${tender_owner} ${viewer} 118 ${contract_index}= Отримати останній індекс contracts ${tender_owner} ${viewer}
68 - ${award_amount}= Get From Dictionary ${USERS.users['${viewer}'].tender_data.data.awards[${award_index}].value} amount  
69 - ${amount}= create_fake_amount ${award_amount}  
70 Set to dictionary ${USERS.users['${tender_owner}']} new_amount=${amount} 119 Set to dictionary ${USERS.users['${tender_owner}']} new_amount=${amount}
71 - Run As ${tender_owner} Редагувати угоду ${TENDER['TENDER_UAID']} ${contract_index} value.amount ${amount} 120 + Run As ${tender_owner} Редагувати угоду
  121 + ... ${TENDER['TENDER_UAID']}
  122 + ... ${contract_index}
  123 + ... value.amount
  124 + ... ${amount}
72 125
73 126
74 Відображення відредагованої вартості угоди 127 Відображення відредагованої вартості угоди
75 [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних угоди 128 [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних угоди
76 ... viewer 129 ... viewer
77 - ... ${USERS.users['${viewer}'].broker} 130 + ... ${USERS.users['${viewer}'].broker} ${USERS.users['${tender_owner}'].broker}
78 ... modify_contract_value 131 ... modify_contract_value
79 ... non-critical 132 ... non-critical
80 [Setup] Дочекатись синхронізації з майданчиком ${viewer} 133 [Setup] Дочекатись синхронізації з майданчиком ${viewer}
  134 + ${amount}= Get Variable Value ${USERS.users['${tender_owner}'].new_amount}
  135 + ${contract_index}= Отримати останній індекс contracts ${tender_owner} ${viewer}
  136 + ${amount_field}= Set Variable contracts[${contract_index}].value.amount
  137 + Звірити відображення поля ${amount_field} тендера із ${amount} для користувача ${viewer}
  138 +
  139 +
  140 +Неможливість вказати ціну договору без ПДВ більше ніж результат проведення аукціону (закупівля без ПДВ)
  141 +# contract:value:amountNet should be <= award.value.amount if valueAddedTaxIncluded=false
  142 + [Tags] ${USERS.users['${tender_owner}'].broker}: Редагування угоди
  143 + ... tender_owner
  144 + ... ${USERS.users['${tender_owner}'].broker}
  145 + ... modify_contract_amountNet_vat_false
  146 + ... critical
  147 + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner}
  148 + ${award}= Отримати останній элемент awards ${tender_owner} ${viewer}
  149 + ${contract_index}= Отримати останній індекс contracts ${tender_owner} ${viewer}
  150 + ${amount_net}= Evaluate ${award.value.amount} * 2
  151 + ${value}= Require Failure ${tender_owner} Редагувати угоду
  152 + ... ${TENDER['TENDER_UAID']}
  153 + ... ${contract_index}
  154 + ... value.amountNet
  155 + ... ${amount_net}
  156 + Should Contain ${value} Value amountNet should be less or equal to awarded amount
  157 +
  158 +
  159 +Неможливість вказати ціну договору з ПДВ більше ніж результат проведення аукціону (закупівля з ПДВ)
  160 +# contract:value:amount should be <= award.value.amount if valueAddedTaxIncluded=ture
  161 + [Tags] ${USERS.users['${tender_owner}'].broker}: Редагування угоди
  162 + ... tender_owner
  163 + ... ${USERS.users['${tender_owner}'].broker}
  164 + ... modify_contract_amount_vat_true
  165 + ... critical
  166 + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner}
  167 + ${award}= Отримати останній элемент awards ${tender_owner} ${viewer}
  168 + ${contract_index}= Отримати останній індекс contracts ${tender_owner} ${viewer}
  169 + ${amount}= Evaluate ${award.value.amount} * 2
  170 + ${value}= Require Failure ${tender_owner} Редагувати угоду
  171 + ... ${TENDER['TENDER_UAID']}
  172 + ... ${contract_index}
  173 + ... value.amount
  174 + ... ${amount}
  175 + Run Keyword IF '${MODE}' == 'open_esco'
  176 + ... Should Contain ${value} Can't update amount for contract value
  177 + ... ELSE
  178 + ... Should Contain ${value} Value amount should be less or equal to awarded amount
  179 +
  180 +
  181 +Неможливість зменшити ціну договору без ПДВ на суму більшу за 20% від ціни договору з ПДВ (закупівля з ПДВ)
  182 +# contract:value:amountNet can be <= contract:value:amount but no more than on contract:value:amount/1.2 value if valueAddedTaxIncluded=ture
  183 + [Tags] ${USERS.users['${tender_owner}'].broker}: Редагування угоди
  184 + ... tender_owner
  185 + ... ${USERS.users['${tender_owner}'].broker}
  186 + ... modify_contract_amountNet_vat_true
  187 + ... critical
  188 + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner}
  189 + ${award}= Отримати останній элемент awards ${tender_owner} ${viewer}
  190 + ${contract_index}= Отримати останній індекс contracts ${tender_owner} ${viewer}
  191 + ${value}= Require Failure ${tender_owner} Редагувати угоду
  192 + ... ${TENDER['TENDER_UAID']}
  193 + ... ${contract_index}
  194 + ... value.amountNet
  195 + ... 0
  196 + Should Contain ${value} for 20.0%
  197 +
  198 +
  199 +Неможливість збільшити ціну договору з ПДВ на суму більшу за 20% від ціни договору без ПДВ (закупівля без ПДВ)
  200 +# contract:value:amount can be >= contract:value:amountNet but no more than on 20% of contract:value:amountNet value if valueAddedTaxIncluded=false
  201 + [Tags] ${USERS.users['${tender_owner}'].broker}: Редагування угоди
  202 + ... tender_owner
  203 + ... ${USERS.users['${tender_owner}'].broker}
  204 + ... modify_contract_amount_vat_false
  205 + ... critical
  206 + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner}
  207 + ${award}= Отримати останній элемент awards ${tender_owner} ${viewer}
81 ${contract_index}= Отримати останній індекс contracts ${tender_owner} ${viewer} 208 ${contract_index}= Отримати останній індекс contracts ${tender_owner} ${viewer}
82 - Run Keyword And Ignore Error Remove From Dictionary ${USERS.users['${viewer}'].tender_data.data.contracts[${contract_index}].value} amount  
83 - Звірити відображення поля contracts[${contract_index}].value.amount тендера із ${USERS.users['${tender_owner}'].new_amount} для користувача ${viewer} 209 + ${amount}= Evaluate ${award.value.amount} * 2
  210 + ${value}= Require Failure ${tender_owner} Редагувати угоду
  211 + ... ${TENDER['TENDER_UAID']}
  212 + ... ${contract_index}
  213 + ... value.amount
  214 + ... ${amount}
  215 + Should Contain ${value} Value amount can't be greater than amountNet
84 216
85 217
86 Можливість встановити дату підписання угоди 218 Можливість встановити дату підписання угоди
@@ -44,8 +44,25 @@ def get_fake_funder_scheme(): @@ -44,8 +44,25 @@ def get_fake_funder_scheme():
44 return fake.funder_scheme() 44 return fake.funder_scheme()
45 45
46 46
47 -def create_fake_amount(award_amount):  
48 - return round(random.uniform(1, award_amount), 2) 47 +def create_fake_amount(award_amount, value_added_tax_included=False):
  48 + min_amount_net = award_amount - award_amount * 0.2
  49 + range_amount_net = award_amount - min_amount_net
  50 + half_min_amount_net = min_amount_net + range_amount_net / 2
  51 + half_max_amount_net = half_min_amount_net + range_amount_net
  52 + if value_added_tax_included:
  53 + return round(random.uniform(half_min_amount_net, award_amount), 2)
  54 + else:
  55 + return round(random.uniform(award_amount, half_max_amount_net), 2)
  56 +
  57 +
  58 +def create_fake_amount_net(award_amount, value_added_tax_included=False):
  59 + min_amount_net = award_amount / 1.2
  60 + range_amount_net = award_amount - min_amount_net
  61 + half_min_amount_net = min_amount_net + range_amount_net / 2
  62 + if value_added_tax_included:
  63 + return round(random.uniform(min_amount_net, half_min_amount_net), 2)
  64 + else:
  65 + return round(random.uniform(half_min_amount_net, award_amount), 2)
49 66
50 67
51 def create_fake_number(min_number, max_number): 68 def create_fake_number(min_number, max_number):
@@ -135,6 +152,7 @@ def test_tender_data(params, @@ -135,6 +152,7 @@ def test_tender_data(params,
135 if submissionMethodDetails else "quick" 152 if submissionMethodDetails else "quick"
136 now = get_now() 153 now = get_now()
137 value_amount = round(random.uniform(3000, 99999999.99), 2) # max value equals to budget of Ukraine in hryvnias 154 value_amount = round(random.uniform(3000, 99999999.99), 2) # max value equals to budget of Ukraine in hryvnias
  155 + vat_included = params.get('vat_included', True)
138 data = { 156 data = {
139 "mode": "test", 157 "mode": "test",
140 "submissionMethodDetails": submissionMethodDetails, 158 "submissionMethodDetails": submissionMethodDetails,
@@ -149,11 +167,12 @@ def test_tender_data(params, @@ -149,11 +167,12 @@ def test_tender_data(params,
149 "value": { 167 "value": {
150 "amount": value_amount, 168 "amount": value_amount,
151 "currency": u"UAH", 169 "currency": u"UAH",
152 - "valueAddedTaxIncluded": True 170 + "valueAddedTaxIncluded": vat_included
153 }, 171 },
154 "minimalStep": { 172 "minimalStep": {
155 "amount": round(random.uniform(0.005, 0.03) * value_amount, 2), 173 "amount": round(random.uniform(0.005, 0.03) * value_amount, 2),
156 - "currency": u"UAH" 174 + "currency": u"UAH",
  175 + "valueAddedTaxIncluded": vat_included
157 }, 176 },
158 "items": [], 177 "items": [],
159 "features": [] 178 "features": []
@@ -183,7 +202,7 @@ def test_tender_data(params, @@ -183,7 +202,7 @@ def test_tender_data(params,
183 data['lots'] = [] 202 data['lots'] = []
184 for lot_number in range(params['number_of_lots']): 203 for lot_number in range(params['number_of_lots']):
185 lot_id = uuid4().hex 204 lot_id = uuid4().hex
186 - new_lot = test_lot_data(data['value']['amount']) 205 + new_lot = test_lot_data(data['value']['amount'], vat_included)
187 data['lots'].append(new_lot) 206 data['lots'].append(new_lot)
188 data['lots'][lot_number]['id'] = lot_id 207 data['lots'][lot_number]['id'] = lot_id
189 for i in range(params['number_of_items']): 208 for i in range(params['number_of_items']):
@@ -462,12 +481,12 @@ def test_bid_data(): @@ -462,12 +481,12 @@ def test_bid_data():
462 return bid 481 return bid
463 482
464 483
465 -def test_bid_value(max_value_amount): 484 +def test_bid_value(max_value_amount, vat_included):
466 return munchify({ 485 return munchify({
467 "value": { 486 "value": {
468 "currency": "UAH", 487 "currency": "UAH",
469 "amount": round(random.uniform((0.95 * max_value_amount), max_value_amount), 2), 488 "amount": round(random.uniform((0.95 * max_value_amount), max_value_amount), 2),
470 - "valueAddedTaxIncluded": True 489 + "valueAddedTaxIncluded": vat_included
471 } 490 }
472 }) 491 })
473 492
@@ -507,7 +526,7 @@ def test_bid_data_selection(data, index): @@ -507,7 +526,7 @@ def test_bid_data_selection(data, index):
507 }) 526 })
508 bid.data['status'] = 'draft' 527 bid.data['status'] = 'draft'
509 bid.data['parameters'] = data['agreements'][0]['contracts'][index]['parameters'] 528 bid.data['parameters'] = data['agreements'][0]['contracts'][index]['parameters']
510 - bid.data['lotValues'] = [test_bid_value(data['agreements'][0]['contracts'][index]['value']['amount'])] 529 + bid.data['lotValues'] = [test_bid_value(data['agreements'][0]['contracts'][index]['value']['amount'], data['agreements'][0]['contracts'][index]['value']['valueAddedTaxIncluded'])]
511 return bid 530 return bid
512 531
513 532
@@ -564,7 +583,7 @@ def test_invalid_features_data(): @@ -564,7 +583,7 @@ def test_invalid_features_data():
564 ] 583 ]
565 584
566 585
567 -def test_lot_data(max_value_amount): 586 +def test_lot_data(max_value_amount, vat_included=True):
568 value_amount = round(random.uniform(1, max_value_amount), 2) 587 value_amount = round(random.uniform(1, max_value_amount), 2)
569 return munchify( 588 return munchify(
570 { 589 {
@@ -575,12 +594,12 @@ def test_lot_data(max_value_amount): @@ -575,12 +594,12 @@ def test_lot_data(max_value_amount):
575 "value": { 594 "value": {
576 "currency": "UAH", 595 "currency": "UAH",
577 "amount": value_amount, 596 "amount": value_amount,
578 - "valueAddedTaxIncluded": True 597 + "valueAddedTaxIncluded": vat_included
579 }, 598 },
580 "minimalStep": { 599 "minimalStep": {
581 "currency": "UAH", 600 "currency": "UAH",
582 "amount": round(random.uniform(0.005, 0.03) * value_amount, 2), 601 "amount": round(random.uniform(0.005, 0.03) * value_amount, 2),
583 - "valueAddedTaxIncluded": True 602 + "valueAddedTaxIncluded": vat_included
584 }, 603 },
585 "status": "active" 604 "status": "active"
586 }) 605 })
@@ -1189,19 +1189,39 @@ Require Failure @@ -1189,19 +1189,39 @@ Require Failure
1189 Run Keyword If '${status}' == 'PASS' Set To Dictionary ${MONITORING} DASU_LAST_MODIFICATION_DATE=${LAST_MODIFICATION_DATE} 1189 Run Keyword If '${status}' == 'PASS' Set To Dictionary ${MONITORING} DASU_LAST_MODIFICATION_DATE=${LAST_MODIFICATION_DATE}
1190 1190
1191 1191
1192 -Отримати останній індекс  
1193 - [Arguments] ${object} @{username}  
1194 - :FOR ${role} IN @{username} 1192 +Отримати користувача з доступом до поля за пріорітетом
  1193 + [Arguments] ${field} @{usernames}
  1194 + :FOR ${username} IN @{usernames}
  1195 + \ ${user_data}= Get From Dictionary ${USERS.users} ${username}
1195 \ ${status} ${field_value}= Run Keyword And Ignore Error 1196 \ ${status} ${field_value}= Run Keyword And Ignore Error
1196 ... get_from_object 1197 ... get_from_object
1197 - ... ${USERS.users['${role}'].tender_data.data}  
1198 - ... ${object} 1198 + ... ${user_data.tender_data.data}
  1199 + ... ${field}
1199 \ Run Keyword If '${status}' == 'PASS' Exit For Loop 1200 \ Run Keyword If '${status}' == 'PASS' Exit For Loop
1200 - ${len_of_object}= Run Keyword If '${status}' == 'PASS' Get Length ${USERS.users['${role}'].tender_data.data.${object}}  
1201 - ${index}= Run Keyword If '${status}' == 'PASS' subtraction ${len_of_object} 1 1201 + Run Keyword If '${status}' == 'FAIL' Fail ${object} not found for usernames @{usernames}
  1202 + [Return] ${username}
  1203 +
  1204 +
  1205 +Отримати останній індекс
  1206 + [Arguments] ${field} @{usernames}
  1207 + ${username}= Отримати користувача з доступом до поля за пріорітетом ${field} @{usernames}
  1208 + ${user_data}= Get From Dictionary ${USERS.users} ${username}
  1209 + ${object}= Get From Dictionary ${user_data.tender_data.data} ${field}
  1210 + ${len}= Get Length ${object}
  1211 + ${index}= Evaluate ${len} - 1
1202 [Return] ${index} 1212 [Return] ${index}
1203 1213
1204 1214
  1215 +Отримати останній элемент
  1216 + [Arguments] ${field} @{usernames}
  1217 + ${username}= Отримати користувача з доступом до поля за пріорітетом ${field} @{usernames}
  1218 + ${index}= Отримати останній індекс ${field} @{usernames}
  1219 + ${user_data}= Get From Dictionary ${USERS.users} ${username}
  1220 + ${object}= Get From Dictionary ${user_data.tender_data.data} ${field}
  1221 + ${item}= Get From List ${object} ${index}
  1222 + [Return] ${item}
  1223 +
  1224 +
1205 Розрахувати ціну для ${contract_number} контракту 1225 Розрахувати ціну для ${contract_number} контракту
1206 ${contract_data}= Create Dictionary data=${USERS.users['${tender_owner}'].tender_data.data.agreements[0].contracts[${contract_number}]} 1226 ${contract_data}= Create Dictionary data=${USERS.users['${tender_owner}'].tender_data.data.agreements[0].contracts[${contract_number}]}
1207 ${quantity}= Set Variable ${0} 1227 ${quantity}= Set Variable ${0}
@@ -16,6 +16,7 @@ ${TENDER_MEAT} ${True} @@ -16,6 +16,7 @@ ${TENDER_MEAT} ${True}
16 ${LOT_MEAT} ${True} 16 ${LOT_MEAT} ${True}
17 ${ITEM_MEAT} ${True} 17 ${ITEM_MEAT} ${True}
18 ${MOZ_INTEGRATION} ${False} 18 ${MOZ_INTEGRATION} ${False}
  19 +${VAT_INCLUDED} ${True}
19 20
20 *** Test Cases *** 21 *** Test Cases ***
21 Можливість оголосити тендер 22 Можливість оголосити тендер
@@ -15,6 +15,7 @@ ${TENDER_MEAT} ${False} @@ -15,6 +15,7 @@ ${TENDER_MEAT} ${False}
15 ${LOT_MEAT} ${False} 15 ${LOT_MEAT} ${False}
16 ${ITEM_MEAT} ${False} 16 ${ITEM_MEAT} ${False}
17 ${MOZ_INTEGRATION} ${False} 17 ${MOZ_INTEGRATION} ${False}
  18 +${VAT_INCLUDED} ${True}
18 19
19 *** Test Cases *** 20 *** Test Cases ***
20 ############################################################################################## 21 ##############################################################################################
@@ -15,6 +15,7 @@ ${TENDER_MEAT} ${False} @@ -15,6 +15,7 @@ ${TENDER_MEAT} ${False}
15 ${LOT_MEAT} ${False} 15 ${LOT_MEAT} ${False}
16 ${ITEM_MEAT} ${False} 16 ${ITEM_MEAT} ${False}
17 ${MOZ_INTEGRATION} ${False} 17 ${MOZ_INTEGRATION} ${False}
  18 +${VAT_INCLUDED} ${True}
18 19
19 *** Test Cases *** 20 *** Test Cases ***
20 ############################################################################################## 21 ##############################################################################################
@@ -17,6 +17,7 @@ ${TENDER_MEAT} ${True} @@ -17,6 +17,7 @@ ${TENDER_MEAT} ${True}
17 ${LOT_MEAT} ${True} 17 ${LOT_MEAT} ${True}
18 ${ITEM_MEAT} ${True} 18 ${ITEM_MEAT} ${True}
19 ${MOZ_INTEGRATION} ${False} 19 ${MOZ_INTEGRATION} ${False}
  20 +${VAT_INCLUDED} ${True}
20 21
21 *** Test Cases *** 22 *** Test Cases ***
22 Можливість оголосити тендер 23 Можливість оголосити тендер
@@ -15,6 +15,7 @@ ${TENDER_MEAT} ${False} @@ -15,6 +15,7 @@ ${TENDER_MEAT} ${False}
15 ${LOT_MEAT} ${False} 15 ${LOT_MEAT} ${False}
16 ${ITEM_MEAT} ${False} 16 ${ITEM_MEAT} ${False}
17 ${MOZ_INTEGRATION} ${False} 17 ${MOZ_INTEGRATION} ${False}
  18 +${VAT_INCLUDED} ${True}
18 19
19 *** Test Cases *** 20 *** Test Cases ***
20 ############################################################################################## 21 ##############################################################################################
@@ -20,6 +20,7 @@ from .initial_data import ( @@ -20,6 +20,7 @@ from .initial_data import (
20 create_fake_doc, 20 create_fake_doc,
21 create_fake_sentence, 21 create_fake_sentence,
22 create_fake_amount, 22 create_fake_amount,
  23 + create_fake_amount_net,
23 create_fake_number, 24 create_fake_number,
24 create_fake_number_float, 25 create_fake_number_float,
25 create_fake_date, 26 create_fake_date,
@@ -626,7 +627,7 @@ def generate_test_bid_data(tender_data): @@ -626,7 +627,7 @@ def generate_test_bid_data(tender_data):
626 if tender_data.get('procurementMethodType', '') == 'esco': 627 if tender_data.get('procurementMethodType', '') == 'esco':
627 value = test_bid_value_esco(tender_data) 628 value = test_bid_value_esco(tender_data)
628 else: 629 else:
629 - value = test_bid_value(lot['value']['amount']) 630 + value = test_bid_value(lot['value']['amount'], lot['value']['valueAddedTaxIncluded'])
630 value['relatedLot'] = lot.get('id', '') 631 value['relatedLot'] = lot.get('id', '')
631 bid.data.lotValues.append(value) 632 bid.data.lotValues.append(value)
632 else: 633 else:
@@ -634,7 +635,7 @@ def generate_test_bid_data(tender_data): @@ -634,7 +635,7 @@ def generate_test_bid_data(tender_data):
634 value = test_bid_value(tender_data) 635 value = test_bid_value(tender_data)
635 bid.data.update(value) 636 bid.data.update(value)
636 else: 637 else:
637 - bid.data.update(test_bid_value(tender_data['value']['amount'])) 638 + bid.data.update(test_bid_value(tender_data['value']['amount'], tender_data['value']['valueAddedTaxIncluded']))
638 if 'features' in tender_data: 639 if 'features' in tender_data:
639 bid.data.parameters = [] 640 bid.data.parameters = []
640 for feature in tender_data['features']: 641 for feature in tender_data['features']:
@@ -75,6 +75,8 @@ @@ -75,6 +75,8 @@
75 -i qualification_approve_second_award 75 -i qualification_approve_second_award
76 76
77 -i contract_view 77 -i contract_view
  78 +-i modify_contract_amount_vat_true
  79 +-i modify_contract_amountNet_vat_true
78 -i modify_contract 80 -i modify_contract
79 -i modify_contract_value 81 -i modify_contract_value
80 -i add_doc_to_contract 82 -i add_doc_to_contract
  1 +-v MODE:belowThreshold
  2 +
  3 +-v NUMBER_OF_ITEMS:1
  4 +-v NUMBER_OF_LOTS:1
  5 +
  6 +-v TENDER_MEAT:False
  7 +-v ITEM_MEAT:False
  8 +-v LOT_MEAT:False
  9 +
  10 +-v VAT_INCLUDED: False
  11 +
  12 +
  13 +-i create_tender
  14 +-i find_tender
  15 +-i tender_view
  16 +-i tender_view_unit_code
  17 +-i tender_view_coordinates
  18 +-i lot_view
  19 +
  20 +-i make_bid_by_provider
  21 +-i make_bid_by_provider1
  22 +-i modify_bid_by_provider1
  23 +
  24 +-i auction
  25 +
  26 +-i qualification_add_doc_to_first_award
  27 +-i qualification_approve_first_award
  28 +-i qualification_cancel_first_award_qualification
  29 +-i qualification_add_doc_to_second_award
  30 +-i qualification_approve_second_award
  31 +
  32 +-i contract_view
  33 +-i modify_contract_amountNet_vat_false
  34 +-i modify_contract_amount_vat_false
  35 +-i modify_contract
  36 + -i modify_contract_value
  37 +-i add_doc_to_contract
  38 + -i contract_doc_documentOf
  39 +-i contract_sign
  40 +-i contract_stand_still
  41 +
  42 +-i find_contract
  43 +-i access_contract
  44 +-i submit_change
  45 +-i view_change
  46 +-i upload_change_document
  47 +-i modify_change
  48 +-i apply_change
  49 +-i add_contract_doc
  50 +-i termination_reasons
  51 +-i amount_paid
  52 +-i contract_termination
@@ -65,5 +65,7 @@ @@ -65,5 +65,7 @@
65 -i contract_sign 65 -i contract_sign
66 -i contract_stand_still 66 -i contract_stand_still
67 -i contract_view 67 -i contract_view
  68 +-i modify_contract_amount_vat_true
  69 +-i modify_contract_amountNet_vat_true
68 -i modify_contract 70 -i modify_contract
69 -i modify_contract_value 71 -i modify_contract_value
@@ -78,6 +78,8 @@ @@ -78,6 +78,8 @@
78 78
79 -i contract_view 79 -i contract_view
80 -i contract_stand_still 80 -i contract_stand_still
  81 +-i modify_contract_amount_vat_true
  82 +-i modify_contract_amountNet_vat_true
81 -i modify_contract 83 -i modify_contract
82 -i add_doc_to_contract 84 -i add_doc_to_contract
83 -i contract_sign 85 -i contract_sign
@@ -48,6 +48,8 @@ @@ -48,6 +48,8 @@
48 -i qualification_approve_second_award 48 -i qualification_approve_second_award
49 49
50 -i contract_view 50 -i contract_view
  51 +-i modify_contract_amount_vat_true
  52 +-i modify_contract_amountNet_vat_true
51 -i modify_contract 53 -i modify_contract
52 -i add_doc_to_contract 54 -i add_doc_to_contract
53 -i contract_sign 55 -i contract_sign
@@ -81,6 +81,8 @@ @@ -81,6 +81,8 @@
81 -i qualification_approve_second_award 81 -i qualification_approve_second_award
82 82
83 -i contract_view 83 -i contract_view
  84 +-i modify_contract_amount_vat_true
  85 +-i modify_contract_amountNet_vat_true
84 -i modify_contract 86 -i modify_contract
85 -i modify_contract_value 87 -i modify_contract_value
86 -i add_doc_to_contract 88 -i add_doc_to_contract
@@ -81,6 +81,8 @@ @@ -81,6 +81,8 @@
81 -i qualification_approve_second_award 81 -i qualification_approve_second_award
82 82
83 -i contract_view 83 -i contract_view
  84 +-i modify_contract_amount_vat_true
  85 +-i modify_contract_amountNet_vat_true
84 -i modify_contract 86 -i modify_contract
85 -i modify_contract_value 87 -i modify_contract_value
86 -i add_doc_to_contract 88 -i add_doc_to_contract
@@ -75,6 +75,8 @@ @@ -75,6 +75,8 @@
75 -i qualification_approve_second_award 75 -i qualification_approve_second_award
76 76
77 -i contract_view 77 -i contract_view
  78 +-i modify_contract_amount_vat_true
  79 +-i modify_contract_amountNet_vat_true
78 -i modify_contract 80 -i modify_contract
79 -i modify_contract_value 81 -i modify_contract_value
80 -i add_doc_to_contract 82 -i add_doc_to_contract
@@ -66,6 +66,8 @@ @@ -66,6 +66,8 @@
66 66
67 -i contract_sign 67 -i contract_sign
68 -i contract_stand_still 68 -i contract_stand_still
  69 +-i modify_contract_amount_vat_true
  70 +-i modify_contract_amountNet_vat_true
69 -i modify_contract 71 -i modify_contract
70 -i modify_contract_value 72 -i modify_contract_value
71 -i contract_view 73 -i contract_view
@@ -104,6 +104,8 @@ @@ -104,6 +104,8 @@
104 -i qualification_approve_second_award 104 -i qualification_approve_second_award
105 105
106 -i contract_view 106 -i contract_view
  107 +-i modify_contract_amount_vat_true
  108 +-i modify_contract_amountNet_vat_true
107 -i modify_contract 109 -i modify_contract
108 -i modify_contract_value 110 -i modify_contract_value
109 -i add_doc_to_contract 111 -i add_doc_to_contract
@@ -80,6 +80,8 @@ @@ -80,6 +80,8 @@
80 -i qualification_approve_second_award 80 -i qualification_approve_second_award
81 81
82 -i contract_view 82 -i contract_view
  83 +-i modify_contract_amount_vat_true
  84 +-i modify_contract_amountNet_vat_true
83 -i modify_contract 85 -i modify_contract
84 -i modify_contract_value 86 -i modify_contract_value
85 -i add_doc_to_contract 87 -i add_doc_to_contract
Please register or login to post a comment