diff --git a/kfet/static/kfet/js/kpsul.js b/kfet/static/kfet/js/kpsul.js index 6441907a..64508ed6 100644 --- a/kfet/static/kfet/js/kpsul.js +++ b/kfet/static/kfet/js/kpsul.js @@ -298,6 +298,8 @@ class CheckoutManager { read: template``, statement_create: template``, }; + + OperationWebSocket.add_handler(data => this.update_data(data)); } update(id) { @@ -326,6 +328,14 @@ class CheckoutManager { } + update_data(ws_data) { + let data = ws_data["checkouts"].find(o => o.id === this.checkout.id); + if (!data) + return; + this.checkout.update(data); + this._update_on_success(data); + } + is_empty() { return this.checkout.is_empty(); } display() { diff --git a/kfet/views.py b/kfet/views.py index 5856aae1..94f38ec9 100644 --- a/kfet/views.py +++ b/kfet/views.py @@ -765,7 +765,24 @@ class CheckoutStatementCreate(SuccessMessageMixin, CreateView): form.instance.balance_new = getAmountBalance(form.cleaned_data) form.instance.checkout_id = self.kwargs['pk_checkout'] form.instance.by = self.request.user.profile.account_kfet - return super(CheckoutStatementCreate, self).form_valid(form) + res = super(CheckoutStatementCreate, self).form_valid(form) + + ws_data = { + 'id': self.object.id, + 'at': self.object.at, + 'balance_new': self.object.balance_new, + 'balance_old': self.object.balance_old, + 'by': str(self.object.by), + } + consumers.KPsul.group_send('kfet.kpsul', { + 'checkouts': [{ + 'id': self.object.checkout.id, + 'laststatement': ws_data, + }], + }) + + return res + class CheckoutStatementUpdate(SuccessMessageMixin, UpdateView): model = CheckoutStatement