скидка - "корзина больше"
This commit is contained in:
parent
129edcf29a
commit
29711e5a19
@ -59,6 +59,12 @@ const columns: GridColDef[] = [
|
|||||||
headerName: "Активна",
|
headerName: "Активна",
|
||||||
width: 100,
|
width: 100,
|
||||||
sortable: false,
|
sortable: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: "basketMore",
|
||||||
|
headerName: "Корзина больше",
|
||||||
|
width: 140,
|
||||||
|
sortable: false,
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
@ -72,7 +78,7 @@ const rows:Array<DiscountProps> = [
|
|||||||
good: "Товар 2",
|
good: "Товар 2",
|
||||||
discount: 0.2
|
discount: 0.2
|
||||||
}
|
}
|
||||||
], active: false },
|
], active: false, basketMore: 10 },
|
||||||
{ id: 2, name: "Скидка 2", endless: false, from: "", dueTo: "", privileges: [
|
{ id: 2, name: "Скидка 2", endless: false, from: "", dueTo: "", privileges: [
|
||||||
{
|
{
|
||||||
good: "Товар 3",
|
good: "Товар 3",
|
||||||
@ -82,7 +88,7 @@ const rows:Array<DiscountProps> = [
|
|||||||
good: "Товар 4",
|
good: "Товар 4",
|
||||||
discount: 0.2
|
discount: 0.2
|
||||||
}
|
}
|
||||||
], active: true },
|
], active: true, basketMore: 10 },
|
||||||
{ id: 3, name: "Скидка 3", endless: false, from: "", dueTo: "", privileges: [
|
{ id: 3, name: "Скидка 3", endless: false, from: "", dueTo: "", privileges: [
|
||||||
{
|
{
|
||||||
good: "Товар 5",
|
good: "Товар 5",
|
||||||
@ -92,7 +98,7 @@ const rows:Array<DiscountProps> = [
|
|||||||
good: "Товар 6",
|
good: "Товар 6",
|
||||||
discount: 0.2
|
discount: 0.2
|
||||||
}
|
}
|
||||||
], active: false },
|
], active: false, basketMore: 10 },
|
||||||
];
|
];
|
||||||
|
|
||||||
const Discounts: React.FC = () => {
|
const Discounts: React.FC = () => {
|
||||||
@ -110,6 +116,7 @@ const Discounts: React.FC = () => {
|
|||||||
|
|
||||||
const { discountsArray, discountsArraySet } = useStore<StoreState>((state) => state);
|
const { discountsArray, discountsArraySet } = useStore<StoreState>((state) => state);
|
||||||
|
|
||||||
|
//discountsArraySet( rows );
|
||||||
const { discountsActiveArray, discountsActiveArraySet } = useStore<StoreState>((state) => state);
|
const { discountsActiveArray, discountsActiveArraySet } = useStore<StoreState>((state) => state);
|
||||||
let discountsActiveArrayUpdated:Array<number>;
|
let discountsActiveArrayUpdated:Array<number>;
|
||||||
|
|
||||||
@ -130,6 +137,8 @@ const Discounts: React.FC = () => {
|
|||||||
findActiveDiscounts();
|
findActiveDiscounts();
|
||||||
|
|
||||||
const discountsArrayConverted = discountsArray.map( (item) => {
|
const discountsArrayConverted = discountsArray.map( (item) => {
|
||||||
|
const basketMorePerc = item.basketMore * 100 + "%";
|
||||||
|
|
||||||
const dateFrom = item.from ? new Date( Number(item.from) ) : "";
|
const dateFrom = item.from ? new Date( Number(item.from) ) : "";
|
||||||
const dateDueTo = item.from ? new Date( Number(item.dueTo) ) : "";
|
const dateDueTo = item.from ? new Date( Number(item.dueTo) ) : "";
|
||||||
|
|
||||||
@ -150,13 +159,13 @@ const Discounts: React.FC = () => {
|
|||||||
return acc;
|
return acc;
|
||||||
}, "" );
|
}, "" );
|
||||||
|
|
||||||
return { ...item, privileges: result, from: strFrom, dueTo: strDueTo }
|
return { ...item, privileges: result, from: strFrom, dueTo: strDueTo, basketMore: basketMorePerc }
|
||||||
} else {
|
} 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 = {
|
const newDiscount = {
|
||||||
id: new Date().getTime(),
|
id: new Date().getTime(),
|
||||||
name,
|
name,
|
||||||
@ -167,7 +176,8 @@ const Discounts: React.FC = () => {
|
|||||||
good: service,
|
good: service,
|
||||||
discount: discount / 100
|
discount: discount / 100
|
||||||
}],
|
}],
|
||||||
active: false
|
active: false,
|
||||||
|
basketMore: basketMore / 100
|
||||||
}
|
}
|
||||||
|
|
||||||
const discountsArrayUpdated = [ ...discountsArray, newDiscount ];
|
const discountsArrayUpdated = [ ...discountsArray, newDiscount ];
|
||||||
@ -177,15 +187,24 @@ const Discounts: React.FC = () => {
|
|||||||
const fieldName = React.useRef<HTMLInputElement | null>(null);
|
const fieldName = React.useRef<HTMLInputElement | null>(null);
|
||||||
const fieldDiscount = React.useRef<HTMLInputElement | null>(null);
|
const fieldDiscount = React.useRef<HTMLInputElement | null>(null);
|
||||||
const fieldAddedMore = 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 = () => {
|
const checkFields = () => {
|
||||||
if( fieldName.current != null
|
if( fieldName.current != null
|
||||||
&& fieldDiscount.current != null
|
&& fieldDiscount.current != null
|
||||||
&& fieldAddedMore.current != null ) {
|
&& fieldAddedMore.current != null
|
||||||
|
&& basketMore.current != null ) {
|
||||||
|
|
||||||
createDiscount( fieldName.current.value,
|
createDiscount( fieldName.current.value,
|
||||||
Number(fieldDiscount.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 }
|
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={{
|
<TableContainer component={Paper} sx={{
|
||||||
width: "100%",
|
width: "100%",
|
||||||
marginTop: "35px",
|
marginTop: "35px",
|
||||||
|
@ -11,4 +11,5 @@ export interface DiscountProps {
|
|||||||
dueTo: string
|
dueTo: string
|
||||||
privileges: Array<PrivilegesProps>
|
privileges: Array<PrivilegesProps>
|
||||||
active: boolean
|
active: boolean
|
||||||
|
basketMore: number
|
||||||
}
|
}
|
@ -579,12 +579,33 @@ const DataGridElement: React.FC<MWProps> = ({ openModal }) => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
console.log(percents)
|
|
||||||
price = price - (price * percents);
|
price = price - (price * percents);
|
||||||
}
|
}
|
||||||
|
|
||||||
prices += price;
|
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(
|
return(
|
||||||
<ListItem key={ item.id }>
|
<ListItem key={ item.id }>
|
||||||
<ListItemAvatar>
|
<ListItemAvatar>
|
||||||
|
Loading…
Reference in New Issue
Block a user