внесено

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 }) => {
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<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 [ fieldAddedValue, setFieldAddedValue ] = React.useState("");
const changeAdded = () => {
if( fieldAdded.current != null ) {
if( fieldAdded.current.value != null ) {
setFieldAddedValue( fieldAdded.current.value );
}
}
};
return (
<Box style={{ width: "100%" }}>
@ -262,7 +268,7 @@ const DataGridElement: React.FC<MWProps> = ({ 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<MWProps> = ({ openModal }) => {
color: theme.palette.secondary.main
} }}
inputRef={ fieldAdded }
onChange={ () => refresh() }
onChange={ () => changeAdded() }
/>
</Box>
@ -452,12 +458,13 @@ const DataGridElement: React.FC<MWProps> = ({ 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<MWProps> = ({ 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<MWProps> = ({ openModal }) => {
});
}
tariffPrice = tariffPrice - (tariffPrice * percents);
price += tariffPrice;
} );
}
} else {
// считаем цену в тарифах
price = item.price;
percents = 0;
// применяем скидки по промокоду
if( selectedPromocode >= 0 && checkboxStates == 1 ) {
@ -500,38 +535,37 @@ const DataGridElement: React.FC<MWProps> = ({ 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( 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;
}
}
@ -542,6 +576,7 @@ const DataGridElement: React.FC<MWProps> = ({ openModal }) => {
});
}
price = price - (price * percents);
}
prices += price;