Commit fc4d4bbf57eb98edb94db7672960e34f98f9de04
Committed by
GitHub
Merge pull request #110 from ProzorroUKR/VAT
Vat
Showing
24 changed files
with
292 additions
and
37 deletions
| @@ -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} |
| @@ -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,172 @@ Suite Teardown Test Suite Teardown | @@ -44,43 +44,172 @@ 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 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 | + Should Contain ${value} Value amount should be less or equal to awarded amount | ||
| 176 | + | ||
| 177 | + | ||
| 178 | +Неможливість зменшити ціну договору без ПДВ на суму більшу за 20% від ціни договору з ПДВ (закупівля з ПДВ) | ||
| 179 | +# contract:value:amountNet can be <= contract:value:amount but no more than on 20% of contract:value:amount value if valueAddedTaxIncluded=ture | ||
| 180 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Редагування угоди | ||
| 181 | + ... tender_owner | ||
| 182 | + ... ${USERS.users['${tender_owner}'].broker} | ||
| 183 | + ... modify_contract_amountNet_vat_true | ||
| 184 | + ... critical | ||
| 185 | + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner} | ||
| 186 | + ${award}= Отримати останній элемент awards ${tender_owner} ${viewer} | ||
| 187 | + ${contract_index}= Отримати останній індекс contracts ${tender_owner} ${viewer} | ||
| 188 | + ${value}= Require Failure ${tender_owner} Редагувати угоду | ||
| 189 | + ... ${TENDER['TENDER_UAID']} | ||
| 190 | + ... ${contract_index} | ||
| 191 | + ... value.amountNet | ||
| 192 | + ... 0 | ||
| 193 | + Should Contain ${value} for 20.0% | ||
| 194 | + | ||
| 195 | + | ||
| 196 | +Неможливість збільшити ціну договору з ПДВ на суму більшу за 20% від ціни договору без ПДВ (закупівля без ПДВ) | ||
| 197 | +# contract:value:amount can be >= contract:value:amountNet but no more than on 20% of contract:value:amountNet value if valueAddedTaxIncluded=false | ||
| 198 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Редагування угоди | ||
| 199 | + ... tender_owner | ||
| 200 | + ... ${USERS.users['${tender_owner}'].broker} | ||
| 201 | + ... modify_contract_amount_vat_false | ||
| 202 | + ... critical | ||
| 203 | + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner} | ||
| 204 | + ${award}= Отримати останній элемент awards ${tender_owner} ${viewer} | ||
| 81 | ${contract_index}= Отримати останній індекс contracts ${tender_owner} ${viewer} | 205 | ${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} | 206 | + ${amount}= Evaluate ${award.value.amount} * 2 |
| 207 | + ${value}= Require Failure ${tender_owner} Редагувати угоду | ||
| 208 | + ... ${TENDER['TENDER_UAID']} | ||
| 209 | + ... ${contract_index} | ||
| 210 | + ... value.amount | ||
| 211 | + ... ${amount} | ||
| 212 | + Should Contain ${value} Value amount can't be greater than amountNet | ||
| 84 | 213 | ||
| 85 | 214 | ||
| 86 | Можливість встановити дату підписання угоди | 215 | Можливість встановити дату підписання угоди |
| @@ -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 - award_amount * 0.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 | ||
| @@ -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_approve_first_award | ||
| 27 | + | ||
| 28 | +-i contract_view | ||
| 29 | +-i modify_contract_value | ||
| 30 | +-i modify_contract_amountNet_vat_false | ||
| 31 | +-i modify_contract_amount_vat_false | ||
| 32 | +-i modify_contract | ||
| 33 | +-i add_doc_to_contract | ||
| 34 | +-i contract_sign |
| @@ -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