From abbb5b8fa3d78eb8739be5ee945c4e0fe44a4eeb Mon Sep 17 00:00:00 2001 From: vchikalkin Date: Thu, 2 Mar 2023 11:11:48 +0300 Subject: [PATCH] merge release/dyn-2505_check_av_by_brand --- .../actions/calculate/validate/elements.ts | 50 ++++++++++++++++++- .../query/options/main_options.graphql | 1 + .../CrmService/graphql/schema.graphql | 1 + .../services/CrmService/types/entities.ts | 1 + 4 files changed, 52 insertions(+), 1 deletion(-) diff --git a/src/client/stores/CalculationStore/Effects/actions/calculate/validate/elements.ts b/src/client/stores/CalculationStore/Effects/actions/calculate/validate/elements.ts index 3ad52e4..5d9d33c 100644 --- a/src/client/stores/CalculationStore/Effects/actions/calculate/validate/elements.ts +++ b/src/client/stores/CalculationStore/Effects/actions/calculate/validate/elements.ts @@ -305,6 +305,54 @@ const customConditions: Partial> = { 'Согласно Агентскому договору с данным Финотделом обязательна выплата АВ. Заложите АВ в расчет', }; }, + + // TODO: для нового калькулятора: валидация не на брэнд, а на агентские вознаграждения + selectBrand: calculationStore => { + const brand = calculationStore.getValue('brand'); + const brand_max_perc = + calculationStore.getOption('selectBrand')?.evo_maximum_percentage_av; + + const dealerRewardSumm = calculationStore.getValue('dealerRewardSumm'); + const dealerBrokerRewardSumm = calculationStore.getValue( + 'dealerBrokerRewardSumm', + ); + const indAgentRewardSumm = calculationStore.getValue('indAgentRewardSumm'); + const calcDoubleAgentRewardSumm = calculationStore.getValue( + 'calcDoubleAgentRewardSumm', + ); + const calcBrokerRewardSum = calculationStore.getValue( + 'calcBrokerRewardSum', + ); + const finDepartmentRewardSumm = calculationStore.getValue( + 'finDepartmentRewardSumm', + ); + + if (!brand) { + return { + isValid: false, + message: 'Марка не заполнена', + }; + } else if ( + brand_max_perc && + indAgentRewardSumm + + calcDoubleAgentRewardSumm + + dealerRewardSumm + + calcBrokerRewardSum + + dealerBrokerRewardSumm + + finDepartmentRewardSumm > + brand_max_perc + ) { + return { + isValid: false, + message: + 'В данном расчете АВ закладывается выше установленного максимума. Уменьшите размер АВ', + }; + } else { + return { + isValid: true, + }; + } + }, }; const elementsValidations: Partial< @@ -314,7 +362,7 @@ const elementsValidations: Partial< selectProduct: CONDITIONS.IS_NULL, selectSupplierCurrency: CONDITIONS.IS_NULL, selectLeaseObjectType: CONDITIONS.IS_NULL, - selectBrand: CONDITIONS.IS_NULL, + // selectBrand: CONDITIONS.IS_NULL, selectModel: CONDITIONS.IS_NULL, selectLeaseObjectUseFor: CONDITIONS.IS_NULL, selectDealer: CONDITIONS.IS_NULL, diff --git a/src/core/services/CrmService/graphql/query/options/main_options.graphql b/src/core/services/CrmService/graphql/query/options/main_options.graphql index f5df37c..09ced7f 100644 --- a/src/core/services/CrmService/graphql/query/options/main_options.graphql +++ b/src/core/services/CrmService/graphql/query/options/main_options.graphql @@ -56,6 +56,7 @@ query GetMainOptions( evo_importer_reward_perc evo_importer_reward_rub evo_vehicle_type + evo_maximum_percentage_av } selectProduct: evo_baseproducts( statecode: $statecode diff --git a/src/core/services/CrmService/graphql/schema.graphql b/src/core/services/CrmService/graphql/schema.graphql index 746957d..ca0eef4 100644 --- a/src/core/services/CrmService/graphql/schema.graphql +++ b/src/core/services/CrmService/graphql/schema.graphql @@ -1432,6 +1432,7 @@ type evo_brand { evo_id: String evo_importer_reward_perc: Decimal evo_importer_reward_rub: Decimal + evo_maximum_percentage_av: Decimal evo_name: String evo_subsidies(statecode: Int): [evo_subsidy] evo_vehicle_type: [Int!] diff --git a/src/core/services/CrmService/types/entities.ts b/src/core/services/CrmService/types/entities.ts index 9184485..20af07c 100644 --- a/src/core/services/CrmService/types/entities.ts +++ b/src/core/services/CrmService/types/entities.ts @@ -244,6 +244,7 @@ export interface IEvoBrand extends BaseEntity { evo_importer_reward_perc?: number; evo_importer_reward_rub?: number; evo_vehicle_type?: number[]; + evo_maximum_percentage_av?: number; } export interface IEvoModel extends BaseEntity {