0001_initial.py 6.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. from decimal import Decimal
  2. from django.db import migrations, models
  3. import django.db.models.deletion
  4. class Migration(migrations.Migration):
  5. initial = True
  6. dependencies = [
  7. ("container", "0038_wcstasklogmodel_floor_wcstasklogmodel_is_completed_and_more"),
  8. ]
  9. operations = [
  10. migrations.CreateModel(
  11. name="CountReason",
  12. fields=[
  13. ("id", models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
  14. ("code", models.CharField(max_length=32, unique=True, verbose_name="原因编码")),
  15. ("description", models.CharField(max_length=255, verbose_name="原因说明")),
  16. ("is_active", models.BooleanField(default=True, verbose_name="是否启用")),
  17. ("sort", models.IntegerField(default=0, verbose_name="排序")),
  18. ("note", models.CharField(blank=True, max_length=255, verbose_name="备注")),
  19. ("create_time", models.DateTimeField(auto_now_add=True, verbose_name="创建时间")),
  20. ("update_time", models.DateTimeField(auto_now=True, verbose_name="更新时间")),
  21. ],
  22. options={
  23. "verbose_name": "盘点差异原因",
  24. "verbose_name_plural": "盘点差异原因",
  25. "db_table": "cycle_count_reason",
  26. "ordering": ["sort", "code"],
  27. },
  28. ),
  29. migrations.CreateModel(
  30. name="CountTask",
  31. fields=[
  32. ("id", models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
  33. ("doc_no", models.CharField(blank=True, help_text="自动生成,也可手工录入", max_length=40, unique=True, verbose_name="任务单号")),
  34. ("warehouse_code", models.CharField(max_length=64, verbose_name="仓库编码")),
  35. ("warehouse_name", models.CharField(blank=True, max_length=128, verbose_name="仓库名称")),
  36. ("task_type", models.CharField(choices=[("full", "全盘"), ("sample", "抽盘"), ("adhoc", "临盘")], default="full", max_length=16, verbose_name="任务类型")),
  37. ("status", models.CharField(choices=[("draft", "草稿"), ("released", "已下发"), ("in_progress", "进行中"), ("wait_recount", "待复盘"), ("completed", "已完成"), ("closed", "已关闭")], default="draft", max_length=20, verbose_name="状态")),
  38. ("source_batch", models.CharField(blank=True, max_length=64, verbose_name="来源批次")),
  39. ("remark", models.CharField(blank=True, max_length=255, verbose_name="备注")),
  40. ("scheduled_at", models.DateTimeField(blank=True, null=True, verbose_name="计划盘点时间")),
  41. ("created_by", models.CharField(blank=True, max_length=64, verbose_name="创建人")),
  42. ("total_details", models.IntegerField(default=0, verbose_name="明细数量")),
  43. ("counted_details", models.IntegerField(default=0, verbose_name="已盘数量")),
  44. ("variance_details", models.IntegerField(default=0, verbose_name="差异数量")),
  45. ("create_time", models.DateTimeField(auto_now_add=True, verbose_name="创建时间")),
  46. ("update_time", models.DateTimeField(auto_now=True, verbose_name="更新时间")),
  47. ],
  48. options={
  49. "verbose_name": "盘点任务",
  50. "verbose_name_plural": "盘点任务",
  51. "db_table": "cycle_count_task",
  52. "ordering": ["-id"],
  53. },
  54. ),
  55. migrations.CreateModel(
  56. name="CountTaskDetail",
  57. fields=[
  58. ("id", models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
  59. ("container_code", models.CharField(blank=True, max_length=64, verbose_name="托盘编码")),
  60. ("location_code", models.CharField(blank=True, max_length=64, verbose_name="库位")),
  61. ("goods_code", models.CharField(blank=True, max_length=64, verbose_name="物料编码")),
  62. ("goods_desc", models.CharField(blank=True, max_length=255, verbose_name="物料名称")),
  63. ("goods_std", models.CharField(blank=True, max_length=255, verbose_name="规格型号")),
  64. ("goods_unit", models.CharField(blank=True, max_length=32, verbose_name="单位")),
  65. ("batch_number", models.CharField(blank=True, max_length=64, verbose_name="管理批次")),
  66. ("book_qty", models.DecimalField(decimal_places=3, default=Decimal("0"), max_digits=14, verbose_name="账面数量")),
  67. ("initial_count_qty", models.DecimalField(blank=True, decimal_places=3, max_digits=14, null=True, verbose_name="初盘数量")),
  68. ("recount_qty", models.DecimalField(blank=True, decimal_places=3, max_digits=14, null=True, verbose_name="复盘数量")),
  69. ("final_qty", models.DecimalField(decimal_places=3, default=Decimal("0"), max_digits=14, verbose_name="最终数量")),
  70. ("variance_qty", models.DecimalField(decimal_places=3, default=Decimal("0"), max_digits=14, verbose_name="盘差数量")),
  71. ("counter_name", models.CharField(blank=True, max_length=64, verbose_name="初盘人")),
  72. ("recount_counter", models.CharField(blank=True, max_length=64, verbose_name="复盘人")),
  73. ("note", models.CharField(blank=True, max_length=255, verbose_name="备注")),
  74. ("status", models.CharField(choices=[("pending", "待盘点"), ("counted", "已初盘"), ("variance", "待复盘"), ("completed", "已完成")], default="pending", max_length=20, verbose_name="状态")),
  75. ("create_time", models.DateTimeField(auto_now_add=True, verbose_name="创建时间")),
  76. ("update_time", models.DateTimeField(auto_now=True, verbose_name="更新时间")),
  77. ("container", models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="count_details", to="container.containerlistmodel", verbose_name="托盘")),
  78. ("reason", models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="details", to="cyclecount.countreason", verbose_name="差异原因")),
  79. ("task", models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name="details", to="cyclecount.counttask", verbose_name="任务")),
  80. ],
  81. options={
  82. "verbose_name": "盘点任务明细",
  83. "verbose_name_plural": "盘点任务明细",
  84. "db_table": "cycle_count_task_detail",
  85. "ordering": ["id"],
  86. },
  87. ),
  88. ]