From 6e4ba40bc4d24ed39eac147e87170a65bc083be3 Mon Sep 17 00:00:00 2001 From: Nikolai Date: Wed, 2 Nov 2022 14:05:15 +0600 Subject: [PATCH] =?UTF-8?q?=D0=B2=D0=BD=D0=B5=D1=81=D0=B5=D0=BD=D0=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Content/Tariffs/DataGridElement/index.tsx | 97 +++++++++++++------ 1 file changed, 66 insertions(+), 31 deletions(-) diff --git a/src/Components/LoggedIn/Content/Tariffs/DataGridElement/index.tsx b/src/Components/LoggedIn/Content/Tariffs/DataGridElement/index.tsx index 19e0c92..3b3def3 100644 --- a/src/Components/LoggedIn/Content/Tariffs/DataGridElement/index.tsx +++ b/src/Components/LoggedIn/Content/Tariffs/DataGridElement/index.tsx @@ -111,10 +111,7 @@ const rowz:Array = [ const DataGridElement: React.FC = ({ openModal }) => { let price = 0; let prices = 0; - - const [ refreshX, setRefreshX ] = React.useState(1); - const refresh = () => { setRefreshX( refreshX + 1 ); } - console.log("RENDER") + let percents = 0; const { discountsArray, discountsArraySet } = useStore((state) => state); const { discountsActiveArray, discountsActiveArraySet } = useStore((state) => state); @@ -195,6 +192,15 @@ const DataGridElement: React.FC = ({ openModal }) => { } const fieldAdded = React.useRef(null); + const [ fieldAddedValue, setFieldAddedValue ] = React.useState(""); + + const changeAdded = () => { + if( fieldAdded.current != null ) { + if( fieldAdded.current.value != null ) { + setFieldAddedValue( fieldAdded.current.value ); + } + } + }; return ( @@ -262,7 +268,7 @@ const DataGridElement: React.FC = ({ openModal }) => { height: "42px", fontWeight: "normal", fontSize: "17px", - marginBottom: "45px", + marginBottom: "95px", "&:hover": { backgroundColor: theme.palette.grayMedium.main } @@ -412,7 +418,7 @@ const DataGridElement: React.FC = ({ openModal }) => { color: theme.palette.secondary.main } }} inputRef={ fieldAdded } - onChange={ () => refresh() } + onChange={ () => changeAdded() } /> @@ -452,12 +458,13 @@ const DataGridElement: React.FC = ({ openModal }) => { if( item.tariffs ) { item.tariffs.forEach( (tariff) => { let tariffPrice = tariff.price; + percents = 0; // применяем скидки по промокоду if( selectedPromocode >= 0 && checkboxStates == 1 ) { promocodeArray[ selectedPromocode ].privileges.forEach( (privilege) => { if( tariff.service == privilege.good ) { - tariffPrice = tariffPrice - (tariffPrice * privilege.discount); + percents = percents + privilege.discount; } } ) } @@ -470,7 +477,34 @@ const DataGridElement: React.FC = ({ openModal }) => { discount.privileges.forEach( (privilege) => { if( tariff.service == privilege.good ) { if( privilege.discount != 0 ) { - tariffPrice = tariffPrice - (tariffPrice * privilege.discount); + + if( fieldAddedValue ) { // внесено + const f = Number(fieldAddedValue); + let minDiscount = 100; + let minI = -1; + + discountsArray.forEach( (x, ii) => { + x.privileges.forEach( (y) => { + //if( item.service == y.good ) { + if( x.active && f - y.discount * 100 < minDiscount + && f - y.discount * 100 > 0 ) { + minDiscount = f - y.discount * 100; + minI = ii; + } + //} + }); + }); + + if( minI >= 0 ) { + discountsArray[ minI ].privileges.forEach( (y) => { + percents = percents + y.discount / 2; // костыль + }); + } + + } else { // не внесено + percents = percents + privilege.discount; + } + } } }); @@ -479,13 +513,14 @@ const DataGridElement: React.FC = ({ openModal }) => { }); } + tariffPrice = tariffPrice - (tariffPrice * percents); price += tariffPrice; - } ); } } else { // считаем цену в тарифах price = item.price; + percents = 0; // применяем скидки по промокоду if( selectedPromocode >= 0 && checkboxStates == 1 ) { @@ -500,40 +535,39 @@ const DataGridElement: React.FC = ({ openModal }) => { if( discountsActiveArray.length >= 0 && checkboxStates == 1 && selectedPromocode < 0 ) { discountsActiveArray.forEach( (activeDiscount) => { discountsArray.forEach( (discount, i) => { + if( i == activeDiscount ) { discount.privileges.forEach( (privilege) => { if( item.service == privilege.good ) { - if( privilege.discount != 0 ) { - - if( fieldAdded.current != null ) { // внесено - if( fieldAdded.current.value ) { - const f = Number(fieldAdded.current.value); - let minDiscount = 0; + if( privilege.discount != 0 ) { + + if( fieldAddedValue ) { // внесено + const f = Number(fieldAddedValue); + let minDiscount = 100; let minI = -1; discountsArray.forEach( (x, ii) => { - discount.privileges.forEach( (y) => { - if( item.service == y.good ) { - if( x.active && f - y.discount * 100 >= minDiscount ) { - minDiscount = y.discount; - minI = ii; + x.privileges.forEach( (y) => { + //if( item.service == y.good ) { + if( x.active && f - y.discount * 100 < minDiscount + && f - y.discount * 100 > 0 ) { + minDiscount = f - y.discount * 100; + minI = ii; } - } + //} }); }); - discountsArray[ minI ].privileges.forEach( (y) => { - price = price - (price * y.discount); - }); - - } else { - price = price - (price * privilege.discount); - } + if( minI >= 0 ) { + discountsArray[ minI ].privileges.forEach( (y) => { + percents = percents + y.discount / 2; // костыль + }); + } } else { // не внесено - price = price - (price * privilege.discount); + percents = percents + privilege.discount; } - + } } }); @@ -541,7 +575,8 @@ const DataGridElement: React.FC = ({ openModal }) => { }); }); } - + + price = price - (price * percents); } prices += price;