Actually issue giftcards

This commit is contained in:
Raphael Michel
2019-10-17 16:04:22 +02:00
parent 8c50b7409f
commit 73dd94fe73
3 changed files with 1708 additions and 18 deletions
+17 -2
View File
@@ -44,8 +44,8 @@ from pretix.base.services.pricing import get_price
from pretix.base.services.tasks import ProfiledEventTask, ProfiledTask from pretix.base.services.tasks import ProfiledEventTask, ProfiledTask
from pretix.base.signals import ( from pretix.base.signals import (
allow_ticket_download, order_approved, order_canceled, order_changed, allow_ticket_download, order_approved, order_canceled, order_changed,
order_denied, order_expired, order_fee_calculation, order_placed, order_denied, order_expired, order_fee_calculation, order_paid,
order_split, periodic_task, validate_order, order_placed, order_split, periodic_task, validate_order,
) )
from pretix.celery_app import app from pretix.celery_app import app
from pretix.helpers.models import modelcopy from pretix.helpers.models import modelcopy
@@ -1627,6 +1627,7 @@ def change_payment_provider(order: Order, payment_provider, amount=None, new_pay
order.total = (order.positions.aggregate(sum=Sum('price'))['sum'] or 0) + (order.fees.aggregate(sum=Sum('value'))['sum'] or 0) order.total = (order.positions.aggregate(sum=Sum('price'))['sum'] or 0) + (order.fees.aggregate(sum=Sum('value'))['sum'] or 0)
order.save(update_fields=['total']) order.save(update_fields=['total'])
<<<<<<< HEAD
if not new_payment: if not new_payment:
new_payment = order.payments.create( new_payment = order.payments.create(
@@ -1654,3 +1655,17 @@ def change_payment_provider(order: Order, payment_provider, amount=None, new_pay
generate_invoice(order) generate_invoice(order)
return old_fee, new_fee, fee, new_payment return old_fee, new_fee, fee, new_payment
=======
return old_fee, new_fee, fee
@receiver(order_paid, dispatch_uid="pretixbase_order_paid_giftcards")
@transaction.atomic()
def signal_listener_issue_giftcards(sender: Event, order: Order, **kwargs):
for p in order.positions.all():
if p.item.issue_giftcard:
gc = sender.organizer.issued_gift_cards.create(
currency=sender.currency, issued_in=p
)
gc.transactions.create(value=p.price, order=order)
>>>>>>> 1c09d226e... Actually issue giftcards
File diff suppressed because it is too large Load Diff
@@ -24,6 +24,13 @@
<dd>{{ card.value|money:card.currency }}</dd> <dd>{{ card.value|money:card.currency }}</dd>
<dt>{% trans "Currency" %}</dt> <dt>{% trans "Currency" %}</dt>
<dd>{{ card.currency }}</dd> <dd>{{ card.currency }}</dd>
{% if card.issued_in %}
<dt>{% trans "Issued through sale" %}</dt>
<dd>
<a href="{% url "control:event.order" event=card.issued_in.order.event.slug organizer=card.issued_in.order.event.organizer.slug code=card.issued_in.order.code %}">
{{ card.issued_in.order.full_code }}</a>-{{ card.issued_in.positionid }}
</dd>
{% endif %}
</dl> </dl>
</div> </div>
</div> </div>
@@ -48,7 +55,8 @@
<td> <td>
{% if t.order %} {% if t.order %}
<a href="{% url "control:event.order" event=t.order.event.slug organizer=t.order.event.organizer.slug code=t.order.code %}"> <a href="{% url "control:event.order" event=t.order.event.slug organizer=t.order.event.organizer.slug code=t.order.code %}">
{{ t.order.full_code }} {{ t.order.full_code }}
</a>
{% else %} {% else %}
<em>{% trans "Manual transaction" %}</em> <em>{% trans "Manual transaction" %}</em>
{% endif %} {% endif %}
@@ -59,22 +67,22 @@
</tr> </tr>
{% endfor %} {% endfor %}
</tbody> </tbody>
<tfoot> <tfoot>
<tr> <tr>
<td></td> <td></td>
<td></td> <td></td>
<td class="text-right"> <td class="text-right">
<form class="helper-display-inline form-inline" method="post" action=""> <form class="helper-display-inline form-inline" method="post" action="">
{% csrf_token %} {% csrf_token %}
<input type="text" class="form-control input-sm" placeholder="{% trans "Value" %}" name="value"> <input type="text" class="form-control input-sm" placeholder="{% trans "Value" %}" name="value">
<button class="btn btn-primary"> <button class="btn btn-primary">
<span class="fa fa-plus"></span> <span class="fa fa-plus"></span>
</button> </button>
</form> </form>
</td> </td>
</tr> </tr>
</tfoot> </tfoot>
</table> </table>
</div> </div>
{% endblock %} {% endblock %}