diff --git a/src/Components/LoggedIn/Content/Discounts/index.tsx b/src/Components/LoggedIn/Content/Discounts/index.tsx index df25e50..da8ff5b 100644 --- a/src/Components/LoggedIn/Content/Discounts/index.tsx +++ b/src/Components/LoggedIn/Content/Discounts/index.tsx @@ -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 = [ 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 = [ 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 = [ 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((state) => state); - + + //discountsArraySet( rows ); const { discountsActiveArray, discountsActiveArraySet } = useStore((state) => state); let discountsActiveArrayUpdated:Array; @@ -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(null); const fieldDiscount = React.useRef(null); const fieldAddedMore = React.useRef(null); + const basketMore = React.useRef(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 } /> + cleraAddedMore() } + /> + active: boolean + basketMore: number } \ No newline at end of file diff --git a/src/Components/LoggedIn/Content/Tariffs/DataGridElement/index.tsx b/src/Components/LoggedIn/Content/Tariffs/DataGridElement/index.tsx index 02b76ef..d6854e5 100644 --- a/src/Components/LoggedIn/Content/Tariffs/DataGridElement/index.tsx +++ b/src/Components/LoggedIn/Content/Tariffs/DataGridElement/index.tsx @@ -579,12 +579,33 @@ const DataGridElement: React.FC = ({ 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(