From 571ad5731c7e5a8e202ae937a2fb1cab2d5ee312 Mon Sep 17 00:00:00 2001 From: Nikolai Date: Tue, 1 Nov 2022 15:59:44 +0600 Subject: [PATCH] =?UTF-8?q?=D0=B2=20=D0=BF=D1=80=D0=BE=D1=86=D0=B5=D1=81?= =?UTF-8?q?=D1=81=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Content/Tariffs/DataGridElement/index.tsx | 46 +++++++++++++++++-- 1 file changed, 41 insertions(+), 5 deletions(-) diff --git a/src/Components/LoggedIn/Content/Tariffs/DataGridElement/index.tsx b/src/Components/LoggedIn/Content/Tariffs/DataGridElement/index.tsx index 61865ee..19e0c92 100644 --- a/src/Components/LoggedIn/Content/Tariffs/DataGridElement/index.tsx +++ b/src/Components/LoggedIn/Content/Tariffs/DataGridElement/index.tsx @@ -112,6 +112,10 @@ 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") + const { discountsArray, discountsArraySet } = useStore((state) => state); const { discountsActiveArray, discountsActiveArraySet } = useStore((state) => state); @@ -190,6 +194,8 @@ const DataGridElement: React.FC = ({ openModal }) => { setSelectedPromocode( codeNumber ); } + const fieldAdded = React.useRef(null); + return ( @@ -405,7 +411,8 @@ const DataGridElement: React.FC = ({ openModal }) => { style: { color: theme.palette.secondary.main } }} - //inputRef={ fieldPromocode } + inputRef={ fieldAdded } + onChange={ () => refresh() } /> @@ -450,7 +457,7 @@ const DataGridElement: React.FC = ({ openModal }) => { if( selectedPromocode >= 0 && checkboxStates == 1 ) { promocodeArray[ selectedPromocode ].privileges.forEach( (privilege) => { if( tariff.service == privilege.good ) { - tariffPrice = tariffPrice * privilege.discount; + tariffPrice = tariffPrice - (tariffPrice * privilege.discount); } } ) } @@ -463,7 +470,7 @@ const DataGridElement: React.FC = ({ openModal }) => { discount.privileges.forEach( (privilege) => { if( tariff.service == privilege.good ) { if( privilege.discount != 0 ) { - tariffPrice = tariffPrice * privilege.discount; + tariffPrice = tariffPrice - (tariffPrice * privilege.discount); } } }); @@ -484,7 +491,7 @@ const DataGridElement: React.FC = ({ openModal }) => { if( selectedPromocode >= 0 && checkboxStates == 1 ) { promocodeArray[ selectedPromocode ].privileges.forEach( (privilege) => { if( item.service == privilege.good ) { - price = price * privilege.discount; + price = price - (price * privilege.discount); } } ) } @@ -497,7 +504,36 @@ const DataGridElement: React.FC = ({ openModal }) => { discount.privileges.forEach( (privilege) => { if( item.service == privilege.good ) { if( privilege.discount != 0 ) { - price = price * privilege.discount; + + if( fieldAdded.current != null ) { // внесено + if( fieldAdded.current.value ) { + const f = Number(fieldAdded.current.value); + let minDiscount = 0; + 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; + } + } + }); + }); + + discountsArray[ minI ].privileges.forEach( (y) => { + price = price - (price * y.discount); + }); + + } else { + price = price - (price * privilege.discount); + } + + } else { // не внесено + price = price - (price * privilege.discount); + } + } } });