|
|
@@ -0,0 +1,394 @@
|
|
|
1
|
+# -*- coding: utf-8 -*-
|
|
|
2
|
+from __future__ import unicode_literals
|
|
|
3
|
+
|
|
|
4
|
+from django.db import models, migrations
|
|
|
5
|
+import oscar.models.fields.autoslugfield
|
|
|
6
|
+import oscar.models.fields
|
|
|
7
|
+import django.db.models.deletion
|
|
|
8
|
+from django.conf import settings
|
|
|
9
|
+
|
|
|
10
|
+
|
|
|
11
|
+class Migration(migrations.Migration):
|
|
|
12
|
+
|
|
|
13
|
+ dependencies = [
|
|
|
14
|
+ migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
|
|
15
|
+ ('address', '0001_initial'),
|
|
|
16
|
+ ('sites', '__latest__'),
|
|
|
17
|
+ ('partner', '0001_initial'),
|
|
|
18
|
+ ('customer', '0001_initial'),
|
|
|
19
|
+ ('catalogue', '0001_initial'),
|
|
|
20
|
+ ('basket', '0001_initial'),
|
|
|
21
|
+ ]
|
|
|
22
|
+
|
|
|
23
|
+ operations = [
|
|
|
24
|
+ migrations.CreateModel(
|
|
|
25
|
+ name='BillingAddress',
|
|
|
26
|
+ fields=[
|
|
|
27
|
+ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
|
|
|
28
|
+ ('title', models.CharField(blank=True, max_length=64, verbose_name='Title', choices=[(b'Mr', 'Mr'), (b'Miss', 'Miss'), (b'Mrs', 'Mrs'), (b'Ms', 'Ms'), (b'Dr', 'Dr')])),
|
|
|
29
|
+ ('first_name', models.CharField(max_length=255, verbose_name='First name', blank=True)),
|
|
|
30
|
+ ('last_name', models.CharField(max_length=255, verbose_name='Last name', blank=True)),
|
|
|
31
|
+ ('line1', models.CharField(max_length=255, verbose_name='First line of address')),
|
|
|
32
|
+ ('line2', models.CharField(max_length=255, verbose_name='Second line of address', blank=True)),
|
|
|
33
|
+ ('line3', models.CharField(max_length=255, verbose_name='Third line of address', blank=True)),
|
|
|
34
|
+ ('line4', models.CharField(max_length=255, verbose_name='City', blank=True)),
|
|
|
35
|
+ ('state', models.CharField(max_length=255, verbose_name='State/County', blank=True)),
|
|
|
36
|
+ ('postcode', oscar.models.fields.UppercaseCharField(max_length=64, verbose_name='Post/Zip-code', blank=True)),
|
|
|
37
|
+ ('search_text', models.TextField(verbose_name='Search text - used only for searching addresses', editable=False)),
|
|
|
38
|
+ ('country', models.ForeignKey(verbose_name='Country', to='address.Country')),
|
|
|
39
|
+ ],
|
|
|
40
|
+ options={
|
|
|
41
|
+ 'abstract': False,
|
|
|
42
|
+ 'verbose_name': 'Billing address',
|
|
|
43
|
+ 'verbose_name_plural': 'Billing addresses',
|
|
|
44
|
+ },
|
|
|
45
|
+ bases=(models.Model,),
|
|
|
46
|
+ ),
|
|
|
47
|
+ migrations.CreateModel(
|
|
|
48
|
+ name='CommunicationEvent',
|
|
|
49
|
+ fields=[
|
|
|
50
|
+ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
|
|
|
51
|
+ ('date_created', models.DateTimeField(auto_now_add=True, verbose_name='Date')),
|
|
|
52
|
+ ('event_type', models.ForeignKey(verbose_name='Event Type', to='customer.CommunicationEventType')),
|
|
|
53
|
+ ],
|
|
|
54
|
+ options={
|
|
|
55
|
+ 'ordering': [b'-date_created'],
|
|
|
56
|
+ 'abstract': False,
|
|
|
57
|
+ 'verbose_name': 'Communication Event',
|
|
|
58
|
+ 'verbose_name_plural': 'Communication Events',
|
|
|
59
|
+ },
|
|
|
60
|
+ bases=(models.Model,),
|
|
|
61
|
+ ),
|
|
|
62
|
+ migrations.CreateModel(
|
|
|
63
|
+ name='Line',
|
|
|
64
|
+ fields=[
|
|
|
65
|
+ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
|
|
|
66
|
+ ('partner_name', models.CharField(max_length=128, verbose_name='Partner name', blank=True)),
|
|
|
67
|
+ ('partner_sku', models.CharField(max_length=128, verbose_name='Partner SKU')),
|
|
|
68
|
+ ('partner_line_reference', models.CharField(help_text='This is the item number that the partner uses within their system', max_length=128, verbose_name='Partner reference', blank=True)),
|
|
|
69
|
+ ('partner_line_notes', models.TextField(verbose_name='Partner Notes', blank=True)),
|
|
|
70
|
+ ('title', models.CharField(max_length=255, verbose_name='Title')),
|
|
|
71
|
+ ('upc', models.CharField(max_length=128, null=True, verbose_name='UPC', blank=True)),
|
|
|
72
|
+ ('quantity', models.PositiveIntegerField(default=1, verbose_name='Quantity')),
|
|
|
73
|
+ ('line_price_incl_tax', models.DecimalField(verbose_name='Price (inc. tax)', max_digits=12, decimal_places=2)),
|
|
|
74
|
+ ('line_price_excl_tax', models.DecimalField(verbose_name='Price (excl. tax)', max_digits=12, decimal_places=2)),
|
|
|
75
|
+ ('line_price_before_discounts_incl_tax', models.DecimalField(verbose_name='Price before discounts (inc. tax)', max_digits=12, decimal_places=2)),
|
|
|
76
|
+ ('line_price_before_discounts_excl_tax', models.DecimalField(verbose_name='Price before discounts (excl. tax)', max_digits=12, decimal_places=2)),
|
|
|
77
|
+ ('unit_cost_price', models.DecimalField(null=True, verbose_name='Unit Cost Price', max_digits=12, decimal_places=2, blank=True)),
|
|
|
78
|
+ ('unit_price_incl_tax', models.DecimalField(null=True, verbose_name='Unit Price (inc. tax)', max_digits=12, decimal_places=2, blank=True)),
|
|
|
79
|
+ ('unit_price_excl_tax', models.DecimalField(null=True, verbose_name='Unit Price (excl. tax)', max_digits=12, decimal_places=2, blank=True)),
|
|
|
80
|
+ ('unit_retail_price', models.DecimalField(null=True, verbose_name='Unit Retail Price', max_digits=12, decimal_places=2, blank=True)),
|
|
|
81
|
+ ('status', models.CharField(max_length=255, verbose_name='Status', blank=True)),
|
|
|
82
|
+ ('est_dispatch_date', models.DateField(null=True, verbose_name='Estimated Dispatch Date', blank=True)),
|
|
|
83
|
+ ('partner', models.ForeignKey(on_delete=django.db.models.deletion.SET_NULL, verbose_name='Partner', blank=True, to='partner.Partner', null=True)),
|
|
|
84
|
+ ('product', models.ForeignKey(on_delete=django.db.models.deletion.SET_NULL, verbose_name='Product', blank=True, to='catalogue.Product', null=True)),
|
|
|
85
|
+ ('stockrecord', models.ForeignKey(on_delete=django.db.models.deletion.SET_NULL, verbose_name='Stock record', blank=True, to='partner.StockRecord', null=True)),
|
|
|
86
|
+ ],
|
|
|
87
|
+ options={
|
|
|
88
|
+ 'abstract': False,
|
|
|
89
|
+ 'verbose_name': 'Order Line',
|
|
|
90
|
+ 'verbose_name_plural': 'Order Lines',
|
|
|
91
|
+ },
|
|
|
92
|
+ bases=(models.Model,),
|
|
|
93
|
+ ),
|
|
|
94
|
+ migrations.CreateModel(
|
|
|
95
|
+ name='LineAttribute',
|
|
|
96
|
+ fields=[
|
|
|
97
|
+ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
|
|
|
98
|
+ ('type', models.CharField(max_length=128, verbose_name='Type')),
|
|
|
99
|
+ ('value', models.CharField(max_length=255, verbose_name='Value')),
|
|
|
100
|
+ ('line', models.ForeignKey(verbose_name='Line', to='order.Line')),
|
|
|
101
|
+ ('option', models.ForeignKey(on_delete=django.db.models.deletion.SET_NULL, verbose_name='Option', to='catalogue.Option', null=True)),
|
|
|
102
|
+ ],
|
|
|
103
|
+ options={
|
|
|
104
|
+ 'abstract': False,
|
|
|
105
|
+ 'verbose_name': 'Line Attribute',
|
|
|
106
|
+ 'verbose_name_plural': 'Line Attributes',
|
|
|
107
|
+ },
|
|
|
108
|
+ bases=(models.Model,),
|
|
|
109
|
+ ),
|
|
|
110
|
+ migrations.CreateModel(
|
|
|
111
|
+ name='LinePrice',
|
|
|
112
|
+ fields=[
|
|
|
113
|
+ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
|
|
|
114
|
+ ('quantity', models.PositiveIntegerField(default=1, verbose_name='Quantity')),
|
|
|
115
|
+ ('price_incl_tax', models.DecimalField(verbose_name='Price (inc. tax)', max_digits=12, decimal_places=2)),
|
|
|
116
|
+ ('price_excl_tax', models.DecimalField(verbose_name='Price (excl. tax)', max_digits=12, decimal_places=2)),
|
|
|
117
|
+ ('shipping_incl_tax', models.DecimalField(default=0, verbose_name='Shiping (inc. tax)', max_digits=12, decimal_places=2)),
|
|
|
118
|
+ ('shipping_excl_tax', models.DecimalField(default=0, verbose_name='Shipping (excl. tax)', max_digits=12, decimal_places=2)),
|
|
|
119
|
+ ('line', models.ForeignKey(verbose_name='Line', to='order.Line')),
|
|
|
120
|
+ ],
|
|
|
121
|
+ options={
|
|
|
122
|
+ 'ordering': (b'id',),
|
|
|
123
|
+ 'abstract': False,
|
|
|
124
|
+ 'verbose_name': 'Line Price',
|
|
|
125
|
+ 'verbose_name_plural': 'Line Prices',
|
|
|
126
|
+ },
|
|
|
127
|
+ bases=(models.Model,),
|
|
|
128
|
+ ),
|
|
|
129
|
+ migrations.CreateModel(
|
|
|
130
|
+ name='Order',
|
|
|
131
|
+ fields=[
|
|
|
132
|
+ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
|
|
|
133
|
+ ('number', models.CharField(unique=True, max_length=128, verbose_name='Order number', db_index=True)),
|
|
|
134
|
+ ('currency', models.CharField(default=b'GBP', max_length=12, verbose_name='Currency')),
|
|
|
135
|
+ ('total_incl_tax', models.DecimalField(verbose_name='Order total (inc. tax)', max_digits=12, decimal_places=2)),
|
|
|
136
|
+ ('total_excl_tax', models.DecimalField(verbose_name='Order total (excl. tax)', max_digits=12, decimal_places=2)),
|
|
|
137
|
+ ('shipping_incl_tax', models.DecimalField(default=0, verbose_name='Shipping charge (inc. tax)', max_digits=12, decimal_places=2)),
|
|
|
138
|
+ ('shipping_excl_tax', models.DecimalField(default=0, verbose_name='Shipping charge (excl. tax)', max_digits=12, decimal_places=2)),
|
|
|
139
|
+ ('shipping_method', models.CharField(max_length=128, verbose_name='Shipping method', blank=True)),
|
|
|
140
|
+ ('shipping_code', models.CharField(default=b'', max_length=128, blank=True)),
|
|
|
141
|
+ ('status', models.CharField(max_length=100, verbose_name='Status', blank=True)),
|
|
|
142
|
+ ('guest_email', models.EmailField(max_length=75, verbose_name='Guest email address', blank=True)),
|
|
|
143
|
+ ('date_placed', models.DateTimeField(auto_now_add=True, db_index=True)),
|
|
|
144
|
+ ('basket', models.ForeignKey(on_delete=django.db.models.deletion.SET_NULL, verbose_name='Basket', blank=True, to='basket.Basket', null=True)),
|
|
|
145
|
+ ('billing_address', models.ForeignKey(on_delete=django.db.models.deletion.SET_NULL, verbose_name='Billing Address', blank=True, to='order.BillingAddress', null=True)),
|
|
|
146
|
+ ('site', models.ForeignKey(on_delete=django.db.models.deletion.SET_NULL, verbose_name='Site', to='sites.Site', null=True)),
|
|
|
147
|
+ ('user', models.ForeignKey(on_delete=django.db.models.deletion.SET_NULL, verbose_name='User', blank=True, to=settings.AUTH_USER_MODEL, null=True)),
|
|
|
148
|
+ ],
|
|
|
149
|
+ options={
|
|
|
150
|
+ 'ordering': [b'-date_placed'],
|
|
|
151
|
+ 'abstract': False,
|
|
|
152
|
+ 'verbose_name': 'Order',
|
|
|
153
|
+ 'verbose_name_plural': 'Orders',
|
|
|
154
|
+ },
|
|
|
155
|
+ bases=(models.Model,),
|
|
|
156
|
+ ),
|
|
|
157
|
+ migrations.AddField(
|
|
|
158
|
+ model_name='lineprice',
|
|
|
159
|
+ name='order',
|
|
|
160
|
+ field=models.ForeignKey(verbose_name='Option', to='order.Order'),
|
|
|
161
|
+ preserve_default=True,
|
|
|
162
|
+ ),
|
|
|
163
|
+ migrations.AddField(
|
|
|
164
|
+ model_name='line',
|
|
|
165
|
+ name='order',
|
|
|
166
|
+ field=models.ForeignKey(verbose_name='Order', to='order.Order'),
|
|
|
167
|
+ preserve_default=True,
|
|
|
168
|
+ ),
|
|
|
169
|
+ migrations.AddField(
|
|
|
170
|
+ model_name='communicationevent',
|
|
|
171
|
+ name='order',
|
|
|
172
|
+ field=models.ForeignKey(verbose_name='Order', to='order.Order'),
|
|
|
173
|
+ preserve_default=True,
|
|
|
174
|
+ ),
|
|
|
175
|
+ migrations.CreateModel(
|
|
|
176
|
+ name='OrderDiscount',
|
|
|
177
|
+ fields=[
|
|
|
178
|
+ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
|
|
|
179
|
+ ('category', models.CharField(default=b'Basket', max_length=64, verbose_name='Discount category', choices=[(b'Basket', 'Basket'), (b'Shipping', 'Shipping'), (b'Deferred', 'Deferred')])),
|
|
|
180
|
+ ('offer_id', models.PositiveIntegerField(null=True, verbose_name='Offer ID', blank=True)),
|
|
|
181
|
+ ('offer_name', models.CharField(db_index=True, max_length=128, verbose_name='Offer name', blank=True)),
|
|
|
182
|
+ ('voucher_id', models.PositiveIntegerField(null=True, verbose_name='Voucher ID', blank=True)),
|
|
|
183
|
+ ('voucher_code', models.CharField(db_index=True, max_length=128, verbose_name='Code', blank=True)),
|
|
|
184
|
+ ('frequency', models.PositiveIntegerField(null=True, verbose_name='Frequency')),
|
|
|
185
|
+ ('amount', models.DecimalField(default=0, verbose_name='Amount', max_digits=12, decimal_places=2)),
|
|
|
186
|
+ ('message', models.TextField(blank=True)),
|
|
|
187
|
+ ('order', models.ForeignKey(verbose_name='Order', to='order.Order')),
|
|
|
188
|
+ ],
|
|
|
189
|
+ options={
|
|
|
190
|
+ 'abstract': False,
|
|
|
191
|
+ 'verbose_name': 'Order Discount',
|
|
|
192
|
+ 'verbose_name_plural': 'Order Discounts',
|
|
|
193
|
+ },
|
|
|
194
|
+ bases=(models.Model,),
|
|
|
195
|
+ ),
|
|
|
196
|
+ migrations.CreateModel(
|
|
|
197
|
+ name='OrderNote',
|
|
|
198
|
+ fields=[
|
|
|
199
|
+ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
|
|
|
200
|
+ ('note_type', models.CharField(max_length=128, verbose_name='Note Type', blank=True)),
|
|
|
201
|
+ ('message', models.TextField(verbose_name='Message')),
|
|
|
202
|
+ ('date_created', models.DateTimeField(auto_now_add=True, verbose_name='Date Created')),
|
|
|
203
|
+ ('date_updated', models.DateTimeField(auto_now=True, verbose_name='Date Updated')),
|
|
|
204
|
+ ('order', models.ForeignKey(verbose_name='Order', to='order.Order')),
|
|
|
205
|
+ ('user', models.ForeignKey(verbose_name='User', to=settings.AUTH_USER_MODEL, null=True)),
|
|
|
206
|
+ ],
|
|
|
207
|
+ options={
|
|
|
208
|
+ 'abstract': False,
|
|
|
209
|
+ 'verbose_name': 'Order Note',
|
|
|
210
|
+ 'verbose_name_plural': 'Order Notes',
|
|
|
211
|
+ },
|
|
|
212
|
+ bases=(models.Model,),
|
|
|
213
|
+ ),
|
|
|
214
|
+ migrations.CreateModel(
|
|
|
215
|
+ name='PaymentEvent',
|
|
|
216
|
+ fields=[
|
|
|
217
|
+ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
|
|
|
218
|
+ ('amount', models.DecimalField(verbose_name='Amount', max_digits=12, decimal_places=2)),
|
|
|
219
|
+ ('reference', models.CharField(max_length=128, verbose_name='Reference', blank=True)),
|
|
|
220
|
+ ('date_created', models.DateTimeField(auto_now_add=True, verbose_name='Date created')),
|
|
|
221
|
+ ('order', models.ForeignKey(verbose_name='Order', to='order.Order')),
|
|
|
222
|
+ ],
|
|
|
223
|
+ options={
|
|
|
224
|
+ 'ordering': [b'-date_created'],
|
|
|
225
|
+ 'abstract': False,
|
|
|
226
|
+ 'verbose_name': 'Payment Event',
|
|
|
227
|
+ 'verbose_name_plural': 'Payment Events',
|
|
|
228
|
+ },
|
|
|
229
|
+ bases=(models.Model,),
|
|
|
230
|
+ ),
|
|
|
231
|
+ migrations.CreateModel(
|
|
|
232
|
+ name='PaymentEventQuantity',
|
|
|
233
|
+ fields=[
|
|
|
234
|
+ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
|
|
|
235
|
+ ('quantity', models.PositiveIntegerField(verbose_name='Quantity')),
|
|
|
236
|
+ ],
|
|
|
237
|
+ options={
|
|
|
238
|
+ 'verbose_name': 'Payment Event Quantity',
|
|
|
239
|
+ 'verbose_name_plural': 'Payment Event Quantities',
|
|
|
240
|
+ },
|
|
|
241
|
+ bases=(models.Model,),
|
|
|
242
|
+ ),
|
|
|
243
|
+ migrations.AddField(
|
|
|
244
|
+ model_name='paymentevent',
|
|
|
245
|
+ name='lines',
|
|
|
246
|
+ field=models.ManyToManyField(to='order.Line', verbose_name='Lines', through='order.PaymentEventQuantity'),
|
|
|
247
|
+ preserve_default=True,
|
|
|
248
|
+ ),
|
|
|
249
|
+ migrations.AddField(
|
|
|
250
|
+ model_name='paymenteventquantity',
|
|
|
251
|
+ name='event',
|
|
|
252
|
+ field=models.ForeignKey(verbose_name='Event', to='order.PaymentEvent'),
|
|
|
253
|
+ preserve_default=True,
|
|
|
254
|
+ ),
|
|
|
255
|
+ migrations.AddField(
|
|
|
256
|
+ model_name='paymenteventquantity',
|
|
|
257
|
+ name='line',
|
|
|
258
|
+ field=models.ForeignKey(verbose_name='Line', to='order.Line'),
|
|
|
259
|
+ preserve_default=True,
|
|
|
260
|
+ ),
|
|
|
261
|
+ migrations.AlterUniqueTogether(
|
|
|
262
|
+ name='paymenteventquantity',
|
|
|
263
|
+ unique_together=set([(b'event', b'line')]),
|
|
|
264
|
+ ),
|
|
|
265
|
+ migrations.CreateModel(
|
|
|
266
|
+ name='PaymentEventType',
|
|
|
267
|
+ fields=[
|
|
|
268
|
+ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
|
|
|
269
|
+ ('name', models.CharField(unique=True, max_length=128, verbose_name='Name')),
|
|
|
270
|
+ ('code', oscar.models.fields.autoslugfield.AutoSlugField(populate_from=b'name', editable=False, max_length=128, blank=True, unique=True, verbose_name='Code')),
|
|
|
271
|
+ ],
|
|
|
272
|
+ options={
|
|
|
273
|
+ 'ordering': (b'name',),
|
|
|
274
|
+ 'abstract': False,
|
|
|
275
|
+ 'verbose_name': 'Payment Event Type',
|
|
|
276
|
+ 'verbose_name_plural': 'Payment Event Types',
|
|
|
277
|
+ },
|
|
|
278
|
+ bases=(models.Model,),
|
|
|
279
|
+ ),
|
|
|
280
|
+ migrations.AddField(
|
|
|
281
|
+ model_name='paymentevent',
|
|
|
282
|
+ name='event_type',
|
|
|
283
|
+ field=models.ForeignKey(verbose_name='Event Type', to='order.PaymentEventType'),
|
|
|
284
|
+ preserve_default=True,
|
|
|
285
|
+ ),
|
|
|
286
|
+ migrations.CreateModel(
|
|
|
287
|
+ name='ShippingAddress',
|
|
|
288
|
+ fields=[
|
|
|
289
|
+ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
|
|
|
290
|
+ ('title', models.CharField(blank=True, max_length=64, verbose_name='Title', choices=[(b'Mr', 'Mr'), (b'Miss', 'Miss'), (b'Mrs', 'Mrs'), (b'Ms', 'Ms'), (b'Dr', 'Dr')])),
|
|
|
291
|
+ ('first_name', models.CharField(max_length=255, verbose_name='First name', blank=True)),
|
|
|
292
|
+ ('last_name', models.CharField(max_length=255, verbose_name='Last name', blank=True)),
|
|
|
293
|
+ ('line1', models.CharField(max_length=255, verbose_name='First line of address')),
|
|
|
294
|
+ ('line2', models.CharField(max_length=255, verbose_name='Second line of address', blank=True)),
|
|
|
295
|
+ ('line3', models.CharField(max_length=255, verbose_name='Third line of address', blank=True)),
|
|
|
296
|
+ ('line4', models.CharField(max_length=255, verbose_name='City', blank=True)),
|
|
|
297
|
+ ('state', models.CharField(max_length=255, verbose_name='State/County', blank=True)),
|
|
|
298
|
+ ('postcode', oscar.models.fields.UppercaseCharField(max_length=64, verbose_name='Post/Zip-code', blank=True)),
|
|
|
299
|
+ ('search_text', models.TextField(verbose_name='Search text - used only for searching addresses', editable=False)),
|
|
|
300
|
+ ('phone_number', oscar.models.fields.PhoneNumberField(help_text='In case we need to call you about your order', verbose_name='Phone number', blank=True)),
|
|
|
301
|
+ ('notes', models.TextField(help_text='Tell us anything we should know when delivering your order.', verbose_name='Instructions', blank=True)),
|
|
|
302
|
+ ('country', models.ForeignKey(verbose_name='Country', to='address.Country')),
|
|
|
303
|
+ ],
|
|
|
304
|
+ options={
|
|
|
305
|
+ 'abstract': False,
|
|
|
306
|
+ 'verbose_name': 'Shipping address',
|
|
|
307
|
+ 'verbose_name_plural': 'Shipping addresses',
|
|
|
308
|
+ },
|
|
|
309
|
+ bases=(models.Model,),
|
|
|
310
|
+ ),
|
|
|
311
|
+ migrations.AddField(
|
|
|
312
|
+ model_name='order',
|
|
|
313
|
+ name='shipping_address',
|
|
|
314
|
+ field=models.ForeignKey(on_delete=django.db.models.deletion.SET_NULL, verbose_name='Shipping Address', blank=True, to='order.ShippingAddress', null=True),
|
|
|
315
|
+ preserve_default=True,
|
|
|
316
|
+ ),
|
|
|
317
|
+ migrations.CreateModel(
|
|
|
318
|
+ name='ShippingEvent',
|
|
|
319
|
+ fields=[
|
|
|
320
|
+ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
|
|
|
321
|
+ ('notes', models.TextField(help_text='This could be the dispatch reference, or a tracking number', verbose_name='Event notes', blank=True)),
|
|
|
322
|
+ ('date_created', models.DateTimeField(auto_now_add=True, verbose_name='Date Created')),
|
|
|
323
|
+ ('order', models.ForeignKey(verbose_name='Order', to='order.Order')),
|
|
|
324
|
+ ],
|
|
|
325
|
+ options={
|
|
|
326
|
+ 'ordering': [b'-date_created'],
|
|
|
327
|
+ 'abstract': False,
|
|
|
328
|
+ 'verbose_name': 'Shipping Event',
|
|
|
329
|
+ 'verbose_name_plural': 'Shipping Events',
|
|
|
330
|
+ },
|
|
|
331
|
+ bases=(models.Model,),
|
|
|
332
|
+ ),
|
|
|
333
|
+ migrations.AddField(
|
|
|
334
|
+ model_name='paymentevent',
|
|
|
335
|
+ name='shipping_event',
|
|
|
336
|
+ field=models.ForeignKey(to='order.ShippingEvent', null=True),
|
|
|
337
|
+ preserve_default=True,
|
|
|
338
|
+ ),
|
|
|
339
|
+ migrations.CreateModel(
|
|
|
340
|
+ name='ShippingEventQuantity',
|
|
|
341
|
+ fields=[
|
|
|
342
|
+ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
|
|
|
343
|
+ ('quantity', models.PositiveIntegerField(verbose_name='Quantity')),
|
|
|
344
|
+ ],
|
|
|
345
|
+ options={
|
|
|
346
|
+ 'verbose_name': 'Shipping Event Quantity',
|
|
|
347
|
+ 'verbose_name_plural': 'Shipping Event Quantities',
|
|
|
348
|
+ },
|
|
|
349
|
+ bases=(models.Model,),
|
|
|
350
|
+ ),
|
|
|
351
|
+ migrations.AddField(
|
|
|
352
|
+ model_name='shippingevent',
|
|
|
353
|
+ name='lines',
|
|
|
354
|
+ field=models.ManyToManyField(to='order.Line', verbose_name='Lines', through='order.ShippingEventQuantity'),
|
|
|
355
|
+ preserve_default=True,
|
|
|
356
|
+ ),
|
|
|
357
|
+ migrations.AddField(
|
|
|
358
|
+ model_name='shippingeventquantity',
|
|
|
359
|
+ name='event',
|
|
|
360
|
+ field=models.ForeignKey(verbose_name='Event', to='order.ShippingEvent'),
|
|
|
361
|
+ preserve_default=True,
|
|
|
362
|
+ ),
|
|
|
363
|
+ migrations.AddField(
|
|
|
364
|
+ model_name='shippingeventquantity',
|
|
|
365
|
+ name='line',
|
|
|
366
|
+ field=models.ForeignKey(verbose_name='Line', to='order.Line'),
|
|
|
367
|
+ preserve_default=True,
|
|
|
368
|
+ ),
|
|
|
369
|
+ migrations.AlterUniqueTogether(
|
|
|
370
|
+ name='shippingeventquantity',
|
|
|
371
|
+ unique_together=set([(b'event', b'line')]),
|
|
|
372
|
+ ),
|
|
|
373
|
+ migrations.CreateModel(
|
|
|
374
|
+ name='ShippingEventType',
|
|
|
375
|
+ fields=[
|
|
|
376
|
+ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
|
|
|
377
|
+ ('name', models.CharField(unique=True, max_length=255, verbose_name='Name')),
|
|
|
378
|
+ ('code', oscar.models.fields.autoslugfield.AutoSlugField(populate_from=b'name', editable=False, max_length=128, blank=True, unique=True, verbose_name='Code')),
|
|
|
379
|
+ ],
|
|
|
380
|
+ options={
|
|
|
381
|
+ 'ordering': (b'name',),
|
|
|
382
|
+ 'abstract': False,
|
|
|
383
|
+ 'verbose_name': 'Shipping Event Type',
|
|
|
384
|
+ 'verbose_name_plural': 'Shipping Event Types',
|
|
|
385
|
+ },
|
|
|
386
|
+ bases=(models.Model,),
|
|
|
387
|
+ ),
|
|
|
388
|
+ migrations.AddField(
|
|
|
389
|
+ model_name='shippingevent',
|
|
|
390
|
+ name='event_type',
|
|
|
391
|
+ field=models.ForeignKey(verbose_name='Event Type', to='order.ShippingEventType'),
|
|
|
392
|
+ preserve_default=True,
|
|
|
393
|
+ ),
|
|
|
394
|
+ ]
|