скидка - "корзина больше"
This commit is contained in:
parent
129edcf29a
commit
29711e5a19
@ -59,6 +59,12 @@ const columns: GridColDef[] = [
|
||||
headerName: "Активна",
|
||||
width: 100,
|
||||
sortable: false,
|
||||
},
|
||||
{
|
||||
field: "basketMore",
|
||||
headerName: "Корзина больше",
|
||||
width: 140,
|
||||
sortable: false,
|
||||
}
|
||||
];
|
||||
|
||||
@ -72,7 +78,7 @@ const rows:Array<DiscountProps> = [
|
||||
good: "Товар 2",
|
||||
discount: 0.2
|
||||
}
|
||||
], active: false },
|
||||
], active: false, basketMore: 10 },
|
||||
{ id: 2, name: "Скидка 2", endless: false, from: "", dueTo: "", privileges: [
|
||||
{
|
||||
good: "Товар 3",
|
||||
@ -82,7 +88,7 @@ const rows:Array<DiscountProps> = [
|
||||
good: "Товар 4",
|
||||
discount: 0.2
|
||||
}
|
||||
], active: true },
|
||||
], active: true, basketMore: 10 },
|
||||
{ id: 3, name: "Скидка 3", endless: false, from: "", dueTo: "", privileges: [
|
||||
{
|
||||
good: "Товар 5",
|
||||
@ -92,7 +98,7 @@ const rows:Array<DiscountProps> = [
|
||||
good: "Товар 6",
|
||||
discount: 0.2
|
||||
}
|
||||
], active: false },
|
||||
], active: false, basketMore: 10 },
|
||||
];
|
||||
|
||||
const Discounts: React.FC = () => {
|
||||
@ -109,7 +115,8 @@ const Discounts: React.FC = () => {
|
||||
|
||||
|
||||
const { discountsArray, discountsArraySet } = useStore<StoreState>((state) => state);
|
||||
|
||||
|
||||
//discountsArraySet( rows );
|
||||
const { discountsActiveArray, discountsActiveArraySet } = useStore<StoreState>((state) => state);
|
||||
let discountsActiveArrayUpdated:Array<number>;
|
||||
|
||||
@ -130,6 +137,8 @@ const Discounts: React.FC = () => {
|
||||
findActiveDiscounts();
|
||||
|
||||
const discountsArrayConverted = discountsArray.map( (item) => {
|
||||
const basketMorePerc = item.basketMore * 100 + "%";
|
||||
|
||||
const dateFrom = item.from ? new Date( Number(item.from) ) : "";
|
||||
const dateDueTo = item.from ? new Date( Number(item.dueTo) ) : "";
|
||||
|
||||
@ -150,13 +159,13 @@ const Discounts: React.FC = () => {
|
||||
return acc;
|
||||
}, "" );
|
||||
|
||||
return { ...item, privileges: result, from: strFrom, dueTo: strDueTo }
|
||||
return { ...item, privileges: result, from: strFrom, dueTo: strDueTo, basketMore: basketMorePerc }
|
||||
} else {
|
||||
return { ...item, from: strFrom, dueTo: strDueTo }
|
||||
return { ...item, from: strFrom, dueTo: strDueTo, basketMore: basketMorePerc }
|
||||
}
|
||||
} );
|
||||
|
||||
const createDiscount = ( name:string, discount: number, addedMore: number ) => {
|
||||
const createDiscount = ( name:string, discount: number, addedMore: number, basketMore: number ) => {
|
||||
const newDiscount = {
|
||||
id: new Date().getTime(),
|
||||
name,
|
||||
@ -167,7 +176,8 @@ const Discounts: React.FC = () => {
|
||||
good: service,
|
||||
discount: discount / 100
|
||||
}],
|
||||
active: false
|
||||
active: false,
|
||||
basketMore: basketMore / 100
|
||||
}
|
||||
|
||||
const discountsArrayUpdated = [ ...discountsArray, newDiscount ];
|
||||
@ -177,15 +187,24 @@ const Discounts: React.FC = () => {
|
||||
const fieldName = React.useRef<HTMLInputElement | null>(null);
|
||||
const fieldDiscount = React.useRef<HTMLInputElement | null>(null);
|
||||
const fieldAddedMore = React.useRef<HTMLInputElement | null>(null);
|
||||
const basketMore = React.useRef<HTMLInputElement | null>(null);
|
||||
|
||||
const cleraAddedMore = () => {
|
||||
if (fieldAddedMore.current) {
|
||||
fieldAddedMore.current.value = "";
|
||||
}
|
||||
}
|
||||
|
||||
const checkFields = () => {
|
||||
if( fieldName.current != null
|
||||
&& fieldDiscount.current != null
|
||||
&& fieldAddedMore.current != null ) {
|
||||
&& fieldAddedMore.current != null
|
||||
&& basketMore.current != null ) {
|
||||
|
||||
createDiscount( fieldName.current.value,
|
||||
Number(fieldDiscount.current.value),
|
||||
Number(fieldAddedMore.current.value) );
|
||||
Number(fieldAddedMore.current.value),
|
||||
Number(basketMore.current.value) );
|
||||
|
||||
}
|
||||
}
|
||||
@ -351,6 +370,28 @@ const Discounts: React.FC = () => {
|
||||
inputRef={ fieldAddedMore }
|
||||
/>
|
||||
|
||||
<TextField
|
||||
id = "standard-basic"
|
||||
label = { "Объем в корзине" }
|
||||
variant = "filled"
|
||||
color = "secondary"
|
||||
type = "number"
|
||||
sx={{
|
||||
marginTop: "15px"
|
||||
}}
|
||||
InputProps={{
|
||||
style: {
|
||||
backgroundColor: theme.palette.content.main,
|
||||
color: theme.palette.secondary.main,
|
||||
} }}
|
||||
InputLabelProps={{
|
||||
style: {
|
||||
color: theme.palette.secondary.main
|
||||
} }}
|
||||
inputRef={ basketMore }
|
||||
onChange={ () => cleraAddedMore() }
|
||||
/>
|
||||
|
||||
<TableContainer component={Paper} sx={{
|
||||
width: "100%",
|
||||
marginTop: "35px",
|
||||
|
@ -11,4 +11,5 @@ export interface DiscountProps {
|
||||
dueTo: string
|
||||
privileges: Array<PrivilegesProps>
|
||||
active: boolean
|
||||
basketMore: number
|
||||
}
|
@ -579,12 +579,33 @@ const DataGridElement: React.FC<MWProps> = ({ openModal }) => {
|
||||
});
|
||||
});
|
||||
}
|
||||
console.log(percents)
|
||||
|
||||
price = price - (price * percents);
|
||||
}
|
||||
|
||||
prices += price;
|
||||
|
||||
// применяем активные скидки за объем корзины
|
||||
let more = 0;
|
||||
let moreI = -1;
|
||||
|
||||
if( discountsActiveArray.length >= 0 && checkboxStates == 1 && selectedPromocode < 0 ) {
|
||||
discountsActiveArray.forEach( (activeDiscount) => {
|
||||
discountsArray.forEach( (discount, i) => {
|
||||
if( i == activeDiscount && discount.basketMore ) {
|
||||
if( more <= discount.basketMore ) {
|
||||
more = discount.basketMore;
|
||||
moreI = i;
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
if( moreI >= 0 ) {
|
||||
price = price - ( price * discountsArray[ moreI ].basketMore );
|
||||
}
|
||||
|
||||
return(
|
||||
<ListItem key={ item.id }>
|
||||
<ListItemAvatar>
|
||||
|
Loading…
Reference in New Issue
Block a user