Template
## Summary - Closes #5 - Optional `shop`, `pos_sync`, `events`, and `shipping` apps gated by `FEATURE_*` flags - Deps match the catalog: shop/events need email + Stripe; POS/shipping need shop - Portal inventory, POS webhooks, capacity tickets, EasyPost/Pirate Ship shipping ## Test plan - [ ] `manage.py test` (152 passed locally) - [ ] Shop cart + paid order decrements stocked inventory - [ ] POS inbound webhook decrements SKU; paid order queues outbound reserve - [ ] Event capacity blocks overbook; paid order emails ticket codes - [ ] Shipping stub label + Pirate Ship CSV of unshipped paid orders - [ ] `validate-env.sh` rejects shop without email/payments, POS/shipping without shop Reviewed-on: #6
22 lines
852 B
HTML
22 lines
852 B
HTML
{% extends "base.html" %}
|
|
{% block title %}Checkout · {{ SITE_NAME }}{% endblock %}
|
|
{% block content %}
|
|
<section class="section section-lg">
|
|
<div class="container">
|
|
<h1>Checkout</h1>
|
|
<p>Total: {{ total }}</p>
|
|
<form method="post">
|
|
{% csrf_token %}
|
|
<p><label>Email <input name="email" type="email" required></label></p>
|
|
<p><label>Name <input name="customer_name"></label></p>
|
|
<p><label>Address <input name="address_line1"></label></p>
|
|
<p><label>Address 2 <input name="address_line2"></label></p>
|
|
<p><label>City <input name="address_city"></label></p>
|
|
<p><label>State <input name="address_state"></label></p>
|
|
<p><label>ZIP <input name="address_zip"></label></p>
|
|
<button class="button button-primary" type="submit">Pay with Stripe</button>
|
|
</form>
|
|
</div>
|
|
</section>
|
|
{% endblock %}
|