внесено

This commit is contained in:
Nikolai 2022-11-02 14:05:15 +06:00
parent 571ad5731c
commit 6e4ba40bc4

@ -111,10 +111,7 @@ const rowz:Array<PromocodeProps> = [
const DataGridElement: React.FC<MWProps> = ({ openModal }) => { const DataGridElement: React.FC<MWProps> = ({ openModal }) => {
let price = 0; let price = 0;
let prices = 0; let prices = 0;
let percents = 0;
const [ refreshX, setRefreshX ] = React.useState(1);
const refresh = () => { setRefreshX( refreshX + 1 ); }
console.log("RENDER")
const { discountsArray, discountsArraySet } = useStore<StoreState>((state) => state); const { discountsArray, discountsArraySet } = useStore<StoreState>((state) => state);
const { discountsActiveArray, discountsActiveArraySet } = useStore<StoreState>((state) => state); const { discountsActiveArray, discountsActiveArraySet } = useStore<StoreState>((state) => state);
@ -195,6 +192,15 @@ const DataGridElement: React.FC<MWProps> = ({ openModal }) => {
} }
const fieldAdded = React.useRef<HTMLInputElement | null>(null); const fieldAdded = React.useRef<HTMLInputElement | null>(null);
const [ fieldAddedValue, setFieldAddedValue ] = React.useState("");
const changeAdded = () => {
if( fieldAdded.current != null ) {
if( fieldAdded.current.value != null ) {
setFieldAddedValue( fieldAdded.current.value );
}
}
};
return ( return (
<Box style={{ width: "100%" }}> <Box style={{ width: "100%" }}>
@ -262,7 +268,7 @@ const DataGridElement: React.FC<MWProps> = ({ openModal }) => {
height: "42px", height: "42px",
fontWeight: "normal", fontWeight: "normal",
fontSize: "17px", fontSize: "17px",
marginBottom: "45px", marginBottom: "95px",
"&:hover": { "&:hover": {
backgroundColor: theme.palette.grayMedium.main backgroundColor: theme.palette.grayMedium.main
} }
@ -412,7 +418,7 @@ const DataGridElement: React.FC<MWProps> = ({ openModal }) => {
color: theme.palette.secondary.main color: theme.palette.secondary.main
} }} } }}
inputRef={ fieldAdded } inputRef={ fieldAdded }
onChange={ () => refresh() } onChange={ () => changeAdded() }
/> />
</Box> </Box>
@ -452,12 +458,13 @@ const DataGridElement: React.FC<MWProps> = ({ openModal }) => {
if( item.tariffs ) { if( item.tariffs ) {
item.tariffs.forEach( (tariff) => { item.tariffs.forEach( (tariff) => {
let tariffPrice = tariff.price; let tariffPrice = tariff.price;
percents = 0;
// применяем скидки по промокоду // применяем скидки по промокоду
if( selectedPromocode >= 0 && checkboxStates == 1 ) { if( selectedPromocode >= 0 && checkboxStates == 1 ) {
promocodeArray[ selectedPromocode ].privileges.forEach( (privilege) => { promocodeArray[ selectedPromocode ].privileges.forEach( (privilege) => {
if( tariff.service == privilege.good ) { if( tariff.service == privilege.good ) {
tariffPrice = tariffPrice - (tariffPrice * privilege.discount); percents = percents + privilege.discount;
} }
} ) } )
} }
@ -470,7 +477,34 @@ const DataGridElement: React.FC<MWProps> = ({ openModal }) => {
discount.privileges.forEach( (privilege) => { discount.privileges.forEach( (privilege) => {
if( tariff.service == privilege.good ) { if( tariff.service == privilege.good ) {
if( privilege.discount != 0 ) { 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<MWProps> = ({ openModal }) => {
}); });
} }
tariffPrice = tariffPrice - (tariffPrice * percents);
price += tariffPrice; price += tariffPrice;
} ); } );
} }
} else { } else {
// считаем цену в тарифах // считаем цену в тарифах
price = item.price; price = item.price;
percents = 0;
// применяем скидки по промокоду // применяем скидки по промокоду
if( selectedPromocode >= 0 && checkboxStates == 1 ) { if( selectedPromocode >= 0 && checkboxStates == 1 ) {
@ -500,40 +535,39 @@ const DataGridElement: React.FC<MWProps> = ({ openModal }) => {
if( discountsActiveArray.length >= 0 && checkboxStates == 1 && selectedPromocode < 0 ) { if( discountsActiveArray.length >= 0 && checkboxStates == 1 && selectedPromocode < 0 ) {
discountsActiveArray.forEach( (activeDiscount) => { discountsActiveArray.forEach( (activeDiscount) => {
discountsArray.forEach( (discount, i) => { discountsArray.forEach( (discount, i) => {
if( i == activeDiscount ) { if( i == activeDiscount ) {
discount.privileges.forEach( (privilege) => { discount.privileges.forEach( (privilege) => {
if( item.service == privilege.good ) { if( item.service == privilege.good ) {
if( privilege.discount != 0 ) { if( privilege.discount != 0 ) {
if( fieldAdded.current != null ) { // внесено if( fieldAddedValue ) { // внесено
if( fieldAdded.current.value ) { const f = Number(fieldAddedValue);
const f = Number(fieldAdded.current.value); let minDiscount = 100;
let minDiscount = 0;
let minI = -1; let minI = -1;
discountsArray.forEach( (x, ii) => { discountsArray.forEach( (x, ii) => {
discount.privileges.forEach( (y) => { x.privileges.forEach( (y) => {
if( item.service == y.good ) { //if( item.service == y.good ) {
if( x.active && f - y.discount * 100 >= minDiscount ) { if( x.active && f - y.discount * 100 < minDiscount
minDiscount = y.discount; && f - y.discount * 100 > 0 ) {
minI = ii; minDiscount = f - y.discount * 100;
minI = ii;
} }
} //}
}); });
}); });
discountsArray[ minI ].privileges.forEach( (y) => { if( minI >= 0 ) {
price = price - (price * y.discount); discountsArray[ minI ].privileges.forEach( (y) => {
}); percents = percents + y.discount / 2; // костыль
});
} else { }
price = price - (price * privilege.discount);
}
} else { // не внесено } else { // не внесено
price = price - (price * privilege.discount); percents = percents + privilege.discount;
} }
} }
} }
}); });
@ -541,7 +575,8 @@ const DataGridElement: React.FC<MWProps> = ({ openModal }) => {
}); });
}); });
} }
price = price - (price * percents);
} }
prices += price; prices += price;