diff --git a/apps/payment/models.py b/apps/payment/models.py
index 4811f489..b59269c9 100644
--- a/apps/payment/models.py
+++ b/apps/payment/models.py
@@ -131,13 +131,13 @@ class Payment(PolymorphicModel):
if isinstance(payment, SchoolPayment):
user = payment.user
weekdays = payment.weekdays
+ date_start = payment.date_start
price = 0
referral_bonus = 0
referrer_bonus = 0
if hasattr(user, 'referral') and not user.referral.payment:
referral_bonus = user.referral.bonus
referrer_bonus = user.referral.referrer_bonus
- date_start = school_payment.date_start
discount = 0
if course:
price = course.price
@@ -214,7 +214,9 @@ class Payment(PolymorphicModel):
paid = self.status in [Pingback.PINGBACK_TYPE_REGULAR, Pingback.PINGBACK_TYPE_GOODWILL,
Pingback.PINGBACK_TYPE_RISK_REVIEWED_ACCEPTED,]
amount_data = Payment.calc_amount(payment=self)
- if self.status is None:
+ print('amount_data', amount_data)
+ if self.status is None and not self.bonus:
+ print(123)
self.amount = amount_data.get('amount')
if isinstance(self, SchoolPayment):
self.weekdays = amount_data.get('weekdays')
diff --git a/apps/payment/views.py b/apps/payment/views.py
index 3e004a20..5663df39 100644
--- a/apps/payment/views.py
+++ b/apps/payment/views.py
@@ -147,17 +147,17 @@ class SchoolBuyView(TemplateView):
)
if use_bonuses:
if request.user.bonus >= school_payment.amount:
- bonus = UserBonus.objects.create(amount=- school_payment.amount, user=request.user, payment=school_payment)
+ bonus = UserBonus.objects.create(amount= -school_payment.amount, user=request.user, payment=school_payment)
+ school_payment.amount = 0
school_payment.status = Pingback.PINGBACK_TYPE_REGULAR
- school_payment.bonus = bonus
- if not add_days:
- school_payment.date_start = now().date()
- school_payment.date_end = Payment.add_months(school_payment.date_start)
- school_payment.save()
- return redirect(reverse_lazy('payment-success'))
else:
- messages.error(request, 'Недостаточно бонусов для оплаты')
- return redirect(reverse_lazy('school:school'))
+ bonus = UserBonus.objects.create(amount= -request.user.bonus, user=request.user,
+ payment=school_payment)
+ school_payment.amount -= request.user.bonus
+ school_payment.bonus = bonus
+ school_payment.save()
+ if school_payment.status == Pingback.PINGBACK_TYPE_REGULAR:
+ return redirect(reverse_lazy('payment-success'))
product = Product(
f'school_{school_payment.id}',
school_payment.amount,
diff --git a/apps/user/templates/user/bonus-history.html b/apps/user/templates/user/bonus-history.html
index fc671f00..d4f32bcb 100644
--- a/apps/user/templates/user/bonus-history.html
+++ b/apps/user/templates/user/bonus-history.html
@@ -48,7 +48,7 @@
{% else %}
{% if request.user_agent.is_mobile %}
- Школа. {% if payment.date_start and payment.date_end %}{{ payment.date_start|date:"" }} - {{ payment.date_end }}{% endif %}
+ Школа. {% if payment.date_start and payment.date_end %}{{ payment.date_start|date:"j b" }} - {{ payment.date_end|date:"j b" }}{% endif %}
{% else %}
Школа. {% if payment.date_start and payment.date_end %}{{ payment.date_start }} - {{ payment.date_end }}{% endif %}
{% endif %}
diff --git a/project/templates/blocks/popup_buy.html b/project/templates/blocks/popup_buy.html
index b2f81760..093b19ac 100644
--- a/project/templates/blocks/popup_buy.html
+++ b/project/templates/blocks/popup_buy.html
@@ -74,14 +74,17 @@
{% endif %}
diff --git a/web/src/js/modules/popup.js b/web/src/js/modules/popup.js
index b6469075..adfa7510 100644
--- a/web/src/js/modules/popup.js
+++ b/web/src/js/modules/popup.js
@@ -1,6 +1,7 @@
import $ from 'jquery';
import moment from 'moment';
import {api} from './api';
+import {rupluralize} from '../utils';
moment.locale('ru');
@@ -155,13 +156,16 @@ $(document).ready(function () {
function updateCart(){
var link = $('.but_btn_popup').data('link');
+ var $order = $('.order');
var $orderPrice = $('.order_price_text');
var $orderDates = $('.order__dates');
var dateStart = popup.data('date-start');
var days = ['', 'Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота', 'Воскресенье'];
- var weekdays = [], daysText = [];
+ var weekdays = [];
+ var daysText = [];
var $bonuses = $('.buy__bonuses');
var $bonusesCheckbox = $('[data-bonuses]');
+ var $bonusesCount = $('.buy__bonuses-count');
var useBonuses = $bonusesCheckbox.prop('checked');
var bonuses = +$bonusesCheckbox.data('bonuses');
$('[data-day]').each(function() {
@@ -173,15 +177,19 @@ $(document).ready(function () {
});
if(weekdays.length){
+ $order.addClass('order--loading');
+ $orderPrice.html('');
api.getPaymentAmount({ user: window.LIL_STORE.user.id, weekdays: weekdays, date_start: dateStart})
- .then((response) => {
+ .then(response => {
+ $order.removeClass('order--loading');
var text = '';
var amount = +response.data.amount;
- if(bonuses && bonuses >= amount){
- $bonuses.show();
- }
- if(useBonuses){
- amount = 0;
+ if(bonuses){
+ $bonusesCount.text(rupluralize(bonuses > amount ? amount : bonuses, ['бонус', 'бонуса', 'бонусов']));
+ $bonuses.show();
+ if(useBonuses) {
+ amount = bonuses > amount ? 0 : amount - bonuses;
+ }
}
if(response.data.price != amount) {
text = '' + response.data.price+' ' + amount + 'р.';
@@ -191,14 +199,17 @@ $(document).ready(function () {
$orderPrice.html(text);
$orderDates.text(moment(response.data.date_start).format('D MMM') + ' - ' + moment(response.data.date_end).format('D MMM'));
$('.but_btn_popup').attr('href', link+'?'+decodeURIComponent($.param({
- weekdays: weekdays,
- date_start: moment(response.data.date_start).format('YYYY-MM-DD'),
- use_bonuses: useBonuses || '',
+ weekdays: weekdays,
+ date_start: moment(response.data.date_start).format('YYYY-MM-DD'),
+ use_bonuses: useBonuses || '',
}, true)));
+ }).catch(() => {
+ $order.removeClass('order--loading');
});
}
else {
$orderPrice.html('0p.');
+ $bonuses.hide();
}
}
diff --git a/web/src/js/utils.js b/web/src/js/utils.js
new file mode 100644
index 00000000..0039ba47
--- /dev/null
+++ b/web/src/js/utils.js
@@ -0,0 +1,5 @@
+export const rupluralize = (value, args) => {
+ let digit = Math.trunc(value) + '';
+ digit = digit[digit.length - 1];
+ return value + ' ' + args[digit == '1' ? 0 : ('234'.search(digit) > -1 ? 1 : 2)];
+}
diff --git a/web/src/sass/_common.sass b/web/src/sass/_common.sass
index 10a2f713..56747a04 100755
--- a/web/src/sass/_common.sass
+++ b/web/src/sass/_common.sass
@@ -3091,8 +3091,14 @@ a.grey-link
padding: 20px 20px 0
&__total
margin-left: auto
+ position: relative
del
color: #a0a0a0
+ & .loading-loader
+ display: none
+ margin-left: -40px
+ &--loading .loading-loader
+ display: block
.lock
padding: 50px 60px 40px
@@ -3326,7 +3332,7 @@ a.grey-link
&__product
flex: 0 0 60%;
+m
- flex: 0 0 40%;
+ flex: 1 0 40%;
&__amount
flex: 0 0 10%;
&__user