909 lines
53 KiB
Python
909 lines
53 KiB
Python
from __future__ import annotations
|
|
|
|
from sqlalchemy import JSON, BigInteger, Date, DateTime, DECIMAL, ForeignKey, Integer, String, UniqueConstraint, text
|
|
from sqlalchemy.orm import Mapped, mapped_column
|
|
|
|
from app.models.base import Base
|
|
|
|
|
|
class Supplier(Base):
|
|
__tablename__ = "md_supplier"
|
|
|
|
id: Mapped[int] = mapped_column(BigInteger, primary_key=True)
|
|
supplier_code: Mapped[str] = mapped_column(String(50))
|
|
supplier_name: Mapped[str] = mapped_column(String(200))
|
|
short_name: Mapped[str | None] = mapped_column(String(100), nullable=True)
|
|
contact_name: Mapped[str | None] = mapped_column(String(100), nullable=True)
|
|
contact_phone: Mapped[str | None] = mapped_column(String(50), nullable=True)
|
|
address: Mapped[str | None] = mapped_column(String(255), nullable=True)
|
|
lead_time_days: Mapped[int] = mapped_column(Integer, server_default=text("0"))
|
|
default_tax_rate: Mapped[float] = mapped_column(DECIMAL(8, 4), server_default=text("0"))
|
|
status: Mapped[str] = mapped_column(String(32))
|
|
remark: Mapped[str | None] = mapped_column(String(255), nullable=True)
|
|
created_at: Mapped[object] = mapped_column(DateTime)
|
|
updated_at: Mapped[object] = mapped_column(DateTime)
|
|
|
|
|
|
class Process(Base):
|
|
__tablename__ = "md_process"
|
|
|
|
id: Mapped[int] = mapped_column(BigInteger, primary_key=True)
|
|
process_code: Mapped[str] = mapped_column(String(50))
|
|
process_name: Mapped[str] = mapped_column(String(100))
|
|
process_type: Mapped[str] = mapped_column(String(32))
|
|
is_report_required: Mapped[int] = mapped_column(Integer, server_default=text("1"))
|
|
is_quality_gate: Mapped[int] = mapped_column(Integer, server_default=text("0"))
|
|
status: Mapped[str] = mapped_column(String(32))
|
|
remark: Mapped[str | None] = mapped_column(String(255), nullable=True)
|
|
created_at: Mapped[object] = mapped_column(DateTime)
|
|
updated_at: Mapped[object] = mapped_column(DateTime)
|
|
|
|
|
|
class WorkCenter(Base):
|
|
__tablename__ = "md_work_center"
|
|
|
|
id: Mapped[int] = mapped_column(BigInteger, primary_key=True)
|
|
center_code: Mapped[str] = mapped_column(String(50))
|
|
center_name: Mapped[str] = mapped_column(String(100))
|
|
dept_id: Mapped[int] = mapped_column(ForeignKey("sys_department.id"))
|
|
center_type: Mapped[str] = mapped_column(String(50))
|
|
shift_pattern: Mapped[str | None] = mapped_column(String(50), nullable=True)
|
|
capacity_hours_per_day: Mapped[float] = mapped_column(DECIMAL(18, 2), server_default=text("0"))
|
|
status: Mapped[str] = mapped_column(String(32))
|
|
remark: Mapped[str | None] = mapped_column(String(255), nullable=True)
|
|
created_at: Mapped[object] = mapped_column(DateTime)
|
|
updated_at: Mapped[object] = mapped_column(DateTime)
|
|
|
|
|
|
class ProcessRoute(Base):
|
|
__tablename__ = "md_process_route"
|
|
|
|
id: Mapped[int] = mapped_column(BigInteger, primary_key=True)
|
|
route_code: Mapped[str] = mapped_column(String(50))
|
|
route_name: Mapped[str] = mapped_column(String(100))
|
|
product_item_id: Mapped[int] = mapped_column(ForeignKey("md_item.id"))
|
|
version_no: Mapped[str] = mapped_column(String(50))
|
|
is_default: Mapped[int] = mapped_column(Integer, server_default=text("1"))
|
|
status: Mapped[str] = mapped_column(String(32))
|
|
effective_date: Mapped[object | None] = mapped_column(Date, nullable=True)
|
|
expire_date: Mapped[object | None] = mapped_column(Date, nullable=True)
|
|
remark: Mapped[str | None] = mapped_column(String(255), nullable=True)
|
|
created_at: Mapped[object] = mapped_column(DateTime)
|
|
updated_at: Mapped[object] = mapped_column(DateTime)
|
|
|
|
|
|
class ProcessRouteOperation(Base):
|
|
__tablename__ = "md_process_route_operation"
|
|
|
|
id: Mapped[int] = mapped_column(BigInteger, primary_key=True)
|
|
route_id: Mapped[int] = mapped_column(ForeignKey("md_process_route.id"))
|
|
seq_no: Mapped[int] = mapped_column(Integer)
|
|
process_id: Mapped[int] = mapped_column(BigInteger)
|
|
work_center_id: Mapped[int] = mapped_column(ForeignKey("md_work_center.id"))
|
|
operation_name: Mapped[str] = mapped_column(String(100))
|
|
std_setup_minutes: Mapped[float] = mapped_column(DECIMAL(18, 2), server_default=text("0"))
|
|
std_cycle_seconds: Mapped[float] = mapped_column(DECIMAL(18, 2), server_default=text("0"))
|
|
std_labor_cost: Mapped[float] = mapped_column(DECIMAL(18, 4), server_default=text("0"))
|
|
std_machine_cost: Mapped[float] = mapped_column(DECIMAL(18, 4), server_default=text("0"))
|
|
std_outsource_cost: Mapped[float] = mapped_column(DECIMAL(18, 4), server_default=text("0"))
|
|
allowed_scrap_rate: Mapped[float] = mapped_column(DECIMAL(8, 4), server_default=text("0"))
|
|
report_required: Mapped[int] = mapped_column(Integer, server_default=text("1"))
|
|
is_key_operation: Mapped[int] = mapped_column(Integer, server_default=text("0"))
|
|
status: Mapped[str] = mapped_column(String(32))
|
|
remark: Mapped[str | None] = mapped_column(String(255), nullable=True)
|
|
created_at: Mapped[object] = mapped_column(DateTime)
|
|
updated_at: Mapped[object] = mapped_column(DateTime)
|
|
|
|
|
|
class Equipment(Base):
|
|
__tablename__ = "em_equipment"
|
|
|
|
id: Mapped[int] = mapped_column(BigInteger, primary_key=True)
|
|
equipment_code: Mapped[str] = mapped_column(String(50))
|
|
equipment_name: Mapped[str] = mapped_column(String(100))
|
|
category_name: Mapped[str | None] = mapped_column(String(100), nullable=True)
|
|
work_center_id: Mapped[int] = mapped_column(ForeignKey("md_work_center.id"))
|
|
manufacturer: Mapped[str | None] = mapped_column(String(100), nullable=True)
|
|
model_no: Mapped[str | None] = mapped_column(String(100), nullable=True)
|
|
install_date: Mapped[object | None] = mapped_column(Date, nullable=True)
|
|
rated_power_kw: Mapped[float] = mapped_column(DECIMAL(18, 2), server_default=text("0"))
|
|
occupied_area_sqm: Mapped[float] = mapped_column(DECIMAL(18, 2), server_default=text("0"))
|
|
maintenance_cycle_hours: Mapped[float] = mapped_column(DECIMAL(18, 2), server_default=text("0"))
|
|
last_maintenance_at: Mapped[object | None] = mapped_column(DateTime, nullable=True)
|
|
next_maintenance_at: Mapped[object | None] = mapped_column(DateTime, nullable=True)
|
|
status: Mapped[str] = mapped_column(String(32))
|
|
remark: Mapped[str | None] = mapped_column(String(255), nullable=True)
|
|
created_at: Mapped[object] = mapped_column(DateTime)
|
|
updated_at: Mapped[object] = mapped_column(DateTime)
|
|
|
|
|
|
class MaintenancePlan(Base):
|
|
__tablename__ = "em_maintenance_plan"
|
|
|
|
id: Mapped[int] = mapped_column(BigInteger, primary_key=True)
|
|
plan_code: Mapped[str] = mapped_column(String(50))
|
|
equipment_id: Mapped[int] = mapped_column(ForeignKey("em_equipment.id"))
|
|
plan_name: Mapped[str] = mapped_column(String(100))
|
|
maintenance_type: Mapped[str] = mapped_column(String(32))
|
|
cycle_hours: Mapped[float] = mapped_column(DECIMAL(18, 2), server_default=text("0"))
|
|
cycle_days: Mapped[int] = mapped_column(Integer, server_default=text("0"))
|
|
last_execute_at: Mapped[object | None] = mapped_column(DateTime, nullable=True)
|
|
next_execute_at: Mapped[object | None] = mapped_column(DateTime, nullable=True)
|
|
status: Mapped[str] = mapped_column(String(32))
|
|
remark: Mapped[str | None] = mapped_column(String(255), nullable=True)
|
|
created_at: Mapped[object] = mapped_column(DateTime)
|
|
updated_at: Mapped[object] = mapped_column(DateTime)
|
|
|
|
|
|
class MaintenanceOrder(Base):
|
|
__tablename__ = "em_maintenance_order"
|
|
|
|
id: Mapped[int] = mapped_column(BigInteger, primary_key=True)
|
|
order_no: Mapped[str] = mapped_column(String(50))
|
|
equipment_id: Mapped[int] = mapped_column(ForeignKey("em_equipment.id"))
|
|
plan_id: Mapped[int | None] = mapped_column(ForeignKey("em_maintenance_plan.id"), nullable=True)
|
|
maintenance_type: Mapped[str] = mapped_column(String(32))
|
|
start_time: Mapped[object | None] = mapped_column(DateTime, nullable=True)
|
|
end_time: Mapped[object | None] = mapped_column(DateTime, nullable=True)
|
|
downtime_minutes: Mapped[float] = mapped_column(DECIMAL(18, 2), server_default=text("0"))
|
|
owner_employee_id: Mapped[int | None] = mapped_column(ForeignKey("hr_employee.id"), nullable=True)
|
|
result_summary: Mapped[str | None] = mapped_column(String(255), nullable=True)
|
|
cost_amount: Mapped[float] = mapped_column(DECIMAL(18, 2), server_default=text("0"))
|
|
status: Mapped[str] = mapped_column(String(32))
|
|
created_at: Mapped[object] = mapped_column(DateTime)
|
|
updated_at: Mapped[object] = mapped_column(DateTime)
|
|
|
|
|
|
class PurchaseOrder(Base):
|
|
__tablename__ = "po_purchase_order"
|
|
|
|
id: Mapped[int] = mapped_column(BigInteger, primary_key=True)
|
|
po_no: Mapped[str] = mapped_column(String(50))
|
|
supplier_id: Mapped[int] = mapped_column(ForeignKey("md_supplier.id"))
|
|
order_date: Mapped[object] = mapped_column(Date)
|
|
expected_date: Mapped[object | None] = mapped_column(Date, nullable=True)
|
|
warning_lead_days: Mapped[int] = mapped_column(Integer, server_default=text("0"))
|
|
purchaser_employee_id: Mapped[int | None] = mapped_column(ForeignKey("hr_employee.id"), nullable=True)
|
|
target_warehouse_type: Mapped[str] = mapped_column(String(32), server_default=text("'RAW'"))
|
|
tax_rate: Mapped[float] = mapped_column(DECIMAL(8, 4), server_default=text("0"))
|
|
total_amount: Mapped[float] = mapped_column(DECIMAL(18, 2), server_default=text("0"))
|
|
status: Mapped[str] = mapped_column(String(32))
|
|
remark: Mapped[str | None] = mapped_column(String(255), nullable=True)
|
|
created_at: Mapped[object] = mapped_column(DateTime)
|
|
updated_at: Mapped[object] = mapped_column(DateTime)
|
|
|
|
|
|
class PurchaseOrderSalesOrderLink(Base):
|
|
__tablename__ = "po_purchase_order_sales_order"
|
|
|
|
id: Mapped[int] = mapped_column(BigInteger, primary_key=True)
|
|
purchase_order_id: Mapped[int] = mapped_column(ForeignKey("po_purchase_order.id"))
|
|
sales_order_id: Mapped[int] = mapped_column(ForeignKey("so_sales_order.id"))
|
|
created_at: Mapped[object] = mapped_column(DateTime)
|
|
updated_at: Mapped[object] = mapped_column(DateTime)
|
|
|
|
|
|
class PurchaseOrderItem(Base):
|
|
__tablename__ = "po_purchase_order_item"
|
|
|
|
id: Mapped[int] = mapped_column(BigInteger, primary_key=True)
|
|
purchase_order_id: Mapped[int] = mapped_column(ForeignKey("po_purchase_order.id"))
|
|
line_no: Mapped[int] = mapped_column(Integer)
|
|
material_item_id: Mapped[int] = mapped_column(ForeignKey("md_item.id"))
|
|
source_demand_id: Mapped[int | None] = mapped_column(ForeignKey("mrp_material_demand.id"), nullable=True)
|
|
order_qty: Mapped[float] = mapped_column(DECIMAL(18, 6), server_default=text("0"))
|
|
order_weight_kg: Mapped[float] = mapped_column(DECIMAL(18, 6), server_default=text("0"))
|
|
received_qty: Mapped[float] = mapped_column(DECIMAL(18, 6), server_default=text("0"))
|
|
received_weight_kg: Mapped[float] = mapped_column(DECIMAL(18, 6), server_default=text("0"))
|
|
unit_price: Mapped[float] = mapped_column(DECIMAL(18, 4), server_default=text("0"))
|
|
line_amount: Mapped[float] = mapped_column(DECIMAL(18, 2), server_default=text("0"))
|
|
status: Mapped[str] = mapped_column(String(32))
|
|
remark: Mapped[str | None] = mapped_column(String(255), nullable=True)
|
|
created_at: Mapped[object] = mapped_column(DateTime)
|
|
updated_at: Mapped[object] = mapped_column(DateTime)
|
|
|
|
|
|
class WarehouseLocation(Base):
|
|
__tablename__ = "wh_location"
|
|
|
|
id: Mapped[int] = mapped_column(BigInteger, primary_key=True)
|
|
warehouse_id: Mapped[int] = mapped_column(ForeignKey("wh_warehouse.id"))
|
|
location_code: Mapped[str] = mapped_column(String(50))
|
|
location_name: Mapped[str] = mapped_column(String(100))
|
|
zone_name: Mapped[str | None] = mapped_column(String(100), nullable=True)
|
|
is_default: Mapped[int] = mapped_column(Integer, server_default=text("0"))
|
|
is_locked: Mapped[int] = mapped_column(Integer, server_default=text("0"))
|
|
status: Mapped[str] = mapped_column(String(32))
|
|
remark: Mapped[str | None] = mapped_column(String(255), nullable=True)
|
|
created_at: Mapped[object] = mapped_column(DateTime)
|
|
updated_at: Mapped[object] = mapped_column(DateTime)
|
|
|
|
|
|
class PurchaseReceipt(Base):
|
|
__tablename__ = "po_receipt"
|
|
|
|
id: Mapped[int] = mapped_column(BigInteger, primary_key=True)
|
|
receipt_no: Mapped[str] = mapped_column(String(50))
|
|
purchase_order_id: Mapped[int] = mapped_column(ForeignKey("po_purchase_order.id"))
|
|
warehouse_id: Mapped[int] = mapped_column(ForeignKey("wh_warehouse.id"))
|
|
receipt_date: Mapped[object] = mapped_column(DateTime)
|
|
receiver_employee_id: Mapped[int | None] = mapped_column(ForeignKey("hr_employee.id"), nullable=True)
|
|
supplier_delivery_no: Mapped[str | None] = mapped_column(String(100), nullable=True)
|
|
logistics_waybill_no: Mapped[str | None] = mapped_column(String(100), nullable=True)
|
|
logistics_freight_amount: Mapped[float | None] = mapped_column(DECIMAL(18, 2), nullable=True)
|
|
logistics_photo_url: Mapped[str | None] = mapped_column(String(255), nullable=True)
|
|
status: Mapped[str] = mapped_column(String(32))
|
|
remark: Mapped[str | None] = mapped_column(String(255), nullable=True)
|
|
created_at: Mapped[object] = mapped_column(DateTime)
|
|
updated_at: Mapped[object] = mapped_column(DateTime)
|
|
|
|
|
|
class PurchaseReceiptItem(Base):
|
|
__tablename__ = "po_receipt_item"
|
|
|
|
id: Mapped[int] = mapped_column(BigInteger, primary_key=True)
|
|
receipt_id: Mapped[int] = mapped_column(ForeignKey("po_receipt.id"))
|
|
line_no: Mapped[int] = mapped_column(Integer)
|
|
purchase_order_item_id: Mapped[int] = mapped_column(ForeignKey("po_purchase_order_item.id"))
|
|
material_item_id: Mapped[int] = mapped_column(ForeignKey("md_item.id"))
|
|
location_id: Mapped[int | None] = mapped_column(ForeignKey("wh_location.id"), nullable=True)
|
|
lot_no: Mapped[str] = mapped_column(String(50))
|
|
merge_to_lot_id: Mapped[int | None] = mapped_column(BigInteger, nullable=True)
|
|
received_qty: Mapped[float] = mapped_column(DECIMAL(18, 6), server_default=text("0"))
|
|
received_weight_kg: Mapped[float] = mapped_column(DECIMAL(18, 6), server_default=text("0"))
|
|
accepted_qty: Mapped[float] = mapped_column(DECIMAL(18, 6), server_default=text("0"))
|
|
accepted_weight_kg: Mapped[float] = mapped_column(DECIMAL(18, 6), server_default=text("0"))
|
|
unit_cost: Mapped[float] = mapped_column(DECIMAL(18, 4), server_default=text("0"))
|
|
status: Mapped[str] = mapped_column(String(32))
|
|
remark: Mapped[str | None] = mapped_column(String(255), nullable=True)
|
|
created_at: Mapped[object] = mapped_column(DateTime)
|
|
updated_at: Mapped[object] = mapped_column(DateTime)
|
|
|
|
|
|
class PurchaseReturn(Base):
|
|
__tablename__ = "po_purchase_return"
|
|
|
|
id: Mapped[int] = mapped_column(BigInteger, primary_key=True)
|
|
return_no: Mapped[str] = mapped_column(String(50), unique=True)
|
|
purchase_order_id: Mapped[int] = mapped_column(ForeignKey("po_purchase_order.id"))
|
|
warehouse_id: Mapped[int] = mapped_column(ForeignKey("wh_warehouse.id"))
|
|
return_date: Mapped[object] = mapped_column(DateTime)
|
|
operator_user_id: Mapped[int | None] = mapped_column(ForeignKey("sys_user.id"), nullable=True)
|
|
logistics_waybill_no: Mapped[str | None] = mapped_column(String(100), nullable=True)
|
|
logistics_freight_amount: Mapped[float | None] = mapped_column(DECIMAL(18, 2), nullable=True)
|
|
logistics_photo_url: Mapped[str | None] = mapped_column(String(255), nullable=True)
|
|
reason: Mapped[str | None] = mapped_column(String(255), nullable=True)
|
|
status: Mapped[str] = mapped_column(String(32))
|
|
remark: Mapped[str | None] = mapped_column(String(255), nullable=True)
|
|
created_at: Mapped[object] = mapped_column(DateTime)
|
|
updated_at: Mapped[object] = mapped_column(DateTime)
|
|
|
|
|
|
class PurchaseReturnItem(Base):
|
|
__tablename__ = "po_purchase_return_item"
|
|
__table_args__ = (
|
|
UniqueConstraint("purchase_return_id", "line_no", name="uk_po_purchase_return_item_line"),
|
|
)
|
|
|
|
id: Mapped[int] = mapped_column(BigInteger, primary_key=True)
|
|
purchase_return_id: Mapped[int] = mapped_column(ForeignKey("po_purchase_return.id"))
|
|
line_no: Mapped[int] = mapped_column(Integer)
|
|
purchase_order_item_id: Mapped[int] = mapped_column(ForeignKey("po_purchase_order_item.id"))
|
|
material_item_id: Mapped[int] = mapped_column(ForeignKey("md_item.id"))
|
|
lot_id: Mapped[int] = mapped_column(ForeignKey("wh_stock_lot.id"))
|
|
return_weight_kg: Mapped[float] = mapped_column(DECIMAL(18, 6), server_default=text("0"))
|
|
unit_cost: Mapped[float] = mapped_column(DECIMAL(18, 4), server_default=text("0"))
|
|
amount: Mapped[float] = mapped_column(DECIMAL(18, 2), server_default=text("0"))
|
|
reason: Mapped[str | None] = mapped_column(String(255), nullable=True)
|
|
status: Mapped[str] = mapped_column(String(32))
|
|
remark: Mapped[str | None] = mapped_column(String(255), nullable=True)
|
|
created_at: Mapped[object] = mapped_column(DateTime)
|
|
updated_at: Mapped[object] = mapped_column(DateTime)
|
|
|
|
|
|
class StockLot(Base):
|
|
__tablename__ = "wh_stock_lot"
|
|
|
|
id: Mapped[int] = mapped_column(BigInteger, primary_key=True)
|
|
lot_no: Mapped[str] = mapped_column(String(50))
|
|
parent_lot_id: Mapped[int | None] = mapped_column(BigInteger, nullable=True)
|
|
lot_role: Mapped[str] = mapped_column(String(32), server_default=text("'INVENTORY'"))
|
|
material_sub_batch_no: Mapped[str | None] = mapped_column(String(80), nullable=True)
|
|
item_id: Mapped[int] = mapped_column(ForeignKey("md_item.id"))
|
|
warehouse_id: Mapped[int] = mapped_column(ForeignKey("wh_warehouse.id"))
|
|
location_id: Mapped[int | None] = mapped_column(ForeignKey("wh_location.id"), nullable=True)
|
|
source_doc_type: Mapped[str] = mapped_column(String(32))
|
|
source_doc_id: Mapped[int] = mapped_column(BigInteger)
|
|
source_line_id: Mapped[int | None] = mapped_column(BigInteger, nullable=True)
|
|
source_material_lot_id: Mapped[int | None] = mapped_column(BigInteger, nullable=True)
|
|
source_material_sub_batch_no: Mapped[str | None] = mapped_column(String(80), nullable=True)
|
|
source_material_summary: Mapped[str | None] = mapped_column(String(1000), nullable=True)
|
|
logistics_waybill_no: Mapped[str | None] = mapped_column(String(100), nullable=True)
|
|
logistics_freight_amount: Mapped[float | None] = mapped_column(DECIMAL(18, 2), nullable=True)
|
|
logistics_photo_url: Mapped[str | None] = mapped_column(String(255), nullable=True)
|
|
inbound_qty: Mapped[float] = mapped_column(DECIMAL(18, 6), server_default=text("0"))
|
|
inbound_weight_kg: Mapped[float] = mapped_column(DECIMAL(18, 6), server_default=text("0"))
|
|
remaining_qty: Mapped[float] = mapped_column(DECIMAL(18, 6), server_default=text("0"))
|
|
remaining_weight_kg: Mapped[float] = mapped_column(DECIMAL(18, 6), server_default=text("0"))
|
|
locked_qty: Mapped[float] = mapped_column(DECIMAL(18, 6), server_default=text("0"))
|
|
locked_weight_kg: Mapped[float] = mapped_column(DECIMAL(18, 6), server_default=text("0"))
|
|
unit_cost: Mapped[float] = mapped_column(DECIMAL(18, 4), server_default=text("0"))
|
|
production_date: Mapped[object | None] = mapped_column(Date, nullable=True)
|
|
expire_date: Mapped[object | None] = mapped_column(Date, nullable=True)
|
|
quality_status: Mapped[str] = mapped_column(String(32))
|
|
status: Mapped[str] = mapped_column(String(32))
|
|
remark: Mapped[str | None] = mapped_column(String(255), nullable=True)
|
|
created_at: Mapped[object] = mapped_column(DateTime)
|
|
updated_at: Mapped[object] = mapped_column(DateTime)
|
|
|
|
|
|
class InventoryTxn(Base):
|
|
__tablename__ = "wh_inventory_txn"
|
|
|
|
id: Mapped[int] = mapped_column(BigInteger, primary_key=True)
|
|
txn_no: Mapped[str] = mapped_column(String(50))
|
|
txn_type: Mapped[str] = mapped_column(String(32))
|
|
item_id: Mapped[int] = mapped_column(ForeignKey("md_item.id"))
|
|
warehouse_id: Mapped[int] = mapped_column(ForeignKey("wh_warehouse.id"))
|
|
location_id: Mapped[int | None] = mapped_column(ForeignKey("wh_location.id"), nullable=True)
|
|
lot_id: Mapped[int | None] = mapped_column(ForeignKey("wh_stock_lot.id"), nullable=True)
|
|
qty_change: Mapped[float] = mapped_column(DECIMAL(18, 6), server_default=text("0"))
|
|
weight_change_kg: Mapped[float] = mapped_column(DECIMAL(18, 6), server_default=text("0"))
|
|
unit_cost: Mapped[float] = mapped_column(DECIMAL(18, 4), server_default=text("0"))
|
|
amount: Mapped[float] = mapped_column(DECIMAL(18, 2), server_default=text("0"))
|
|
source_doc_type: Mapped[str] = mapped_column(String(32))
|
|
source_doc_id: Mapped[int] = mapped_column(BigInteger)
|
|
source_line_id: Mapped[int | None] = mapped_column(BigInteger, nullable=True)
|
|
logistics_waybill_no: Mapped[str | None] = mapped_column(String(100), nullable=True)
|
|
logistics_freight_amount: Mapped[float | None] = mapped_column(DECIMAL(18, 2), nullable=True)
|
|
logistics_photo_url: Mapped[str | None] = mapped_column(String(255), nullable=True)
|
|
biz_time: Mapped[object] = mapped_column(DateTime)
|
|
operator_user_id: Mapped[int | None] = mapped_column(ForeignKey("sys_user.id"), nullable=True)
|
|
remark: Mapped[str | None] = mapped_column(String(255), nullable=True)
|
|
created_at: Mapped[object] = mapped_column(DateTime)
|
|
updated_at: Mapped[object] = mapped_column(DateTime)
|
|
|
|
|
|
class SpecialWarehouseAdjustment(Base):
|
|
__tablename__ = "wh_special_adjustment"
|
|
|
|
id: Mapped[int] = mapped_column(BigInteger, primary_key=True)
|
|
adjustment_no: Mapped[str] = mapped_column(String(50), unique=True)
|
|
warehouse_id: Mapped[int] = mapped_column(ForeignKey("wh_warehouse.id"))
|
|
warehouse_type: Mapped[str] = mapped_column(String(32))
|
|
direction: Mapped[str] = mapped_column(String(32))
|
|
reason: Mapped[str] = mapped_column(String(1000))
|
|
status: Mapped[str] = mapped_column(String(32))
|
|
operator_user_id: Mapped[int | None] = mapped_column(ForeignKey("sys_user.id"), nullable=True)
|
|
adjusted_at: Mapped[object] = mapped_column(DateTime)
|
|
created_at: Mapped[object] = mapped_column(DateTime)
|
|
updated_at: Mapped[object] = mapped_column(DateTime)
|
|
|
|
|
|
class SpecialWarehouseAdjustmentLine(Base):
|
|
__tablename__ = "wh_special_adjustment_line"
|
|
|
|
id: Mapped[int] = mapped_column(BigInteger, primary_key=True)
|
|
adjustment_id: Mapped[int] = mapped_column(ForeignKey("wh_special_adjustment.id"))
|
|
line_no: Mapped[int] = mapped_column(Integer)
|
|
item_id: Mapped[int] = mapped_column(ForeignKey("md_item.id"))
|
|
warehouse_id: Mapped[int] = mapped_column(ForeignKey("wh_warehouse.id"))
|
|
location_id: Mapped[int | None] = mapped_column(ForeignKey("wh_location.id"), nullable=True)
|
|
lot_id: Mapped[int] = mapped_column(ForeignKey("wh_stock_lot.id"))
|
|
inventory_txn_id: Mapped[int | None] = mapped_column(ForeignKey("wh_inventory_txn.id"), nullable=True)
|
|
before_qty: Mapped[float] = mapped_column(DECIMAL(18, 6), server_default=text("0"))
|
|
change_qty: Mapped[float] = mapped_column(DECIMAL(18, 6), server_default=text("0"))
|
|
after_qty: Mapped[float] = mapped_column(DECIMAL(18, 6), server_default=text("0"))
|
|
before_weight_kg: Mapped[float] = mapped_column(DECIMAL(18, 6), server_default=text("0"))
|
|
change_weight_kg: Mapped[float] = mapped_column(DECIMAL(18, 6), server_default=text("0"))
|
|
after_weight_kg: Mapped[float] = mapped_column(DECIMAL(18, 6), server_default=text("0"))
|
|
unit_cost: Mapped[float] = mapped_column(DECIMAL(18, 4), server_default=text("0"))
|
|
line_reason: Mapped[str | None] = mapped_column(String(1000), nullable=True)
|
|
created_at: Mapped[object] = mapped_column(DateTime)
|
|
updated_at: Mapped[object] = mapped_column(DateTime)
|
|
|
|
|
|
class Stocktake(Base):
|
|
__tablename__ = "wh_stocktake"
|
|
|
|
id: Mapped[int] = mapped_column(BigInteger, primary_key=True)
|
|
stocktake_no: Mapped[str] = mapped_column(String(50))
|
|
status: Mapped[str] = mapped_column(String(32))
|
|
started_by_user_id: Mapped[int | None] = mapped_column(BigInteger, nullable=True)
|
|
imported_by_user_id: Mapped[int | None] = mapped_column(BigInteger, nullable=True)
|
|
confirmed_by_user_id: Mapped[int | None] = mapped_column(BigInteger, nullable=True)
|
|
canceled_by_user_id: Mapped[int | None] = mapped_column(BigInteger, nullable=True)
|
|
started_at: Mapped[object] = mapped_column(DateTime)
|
|
exported_at: Mapped[object | None] = mapped_column(DateTime, nullable=True)
|
|
imported_at: Mapped[object | None] = mapped_column(DateTime, nullable=True)
|
|
confirmed_at: Mapped[object | None] = mapped_column(DateTime, nullable=True)
|
|
canceled_at: Mapped[object | None] = mapped_column(DateTime, nullable=True)
|
|
remark: Mapped[str | None] = mapped_column(String(255), nullable=True)
|
|
created_at: Mapped[object] = mapped_column(DateTime, server_default=text("CURRENT_TIMESTAMP"))
|
|
updated_at: Mapped[object] = mapped_column(DateTime, server_default=text("CURRENT_TIMESTAMP"))
|
|
|
|
|
|
class StocktakeWarehouse(Base):
|
|
__tablename__ = "wh_stocktake_warehouse"
|
|
|
|
id: Mapped[int] = mapped_column(BigInteger, primary_key=True)
|
|
stocktake_id: Mapped[int] = mapped_column(ForeignKey("wh_stocktake.id"))
|
|
warehouse_id: Mapped[int] = mapped_column(ForeignKey("wh_warehouse.id"))
|
|
warehouse_type: Mapped[str] = mapped_column(String(32))
|
|
warehouse_name: Mapped[str] = mapped_column(String(100))
|
|
status: Mapped[str] = mapped_column(String(32))
|
|
created_at: Mapped[object] = mapped_column(DateTime, server_default=text("CURRENT_TIMESTAMP"))
|
|
updated_at: Mapped[object] = mapped_column(DateTime, server_default=text("CURRENT_TIMESTAMP"))
|
|
|
|
|
|
class StocktakeLine(Base):
|
|
__tablename__ = "wh_stocktake_line"
|
|
|
|
id: Mapped[int] = mapped_column(BigInteger, primary_key=True)
|
|
stocktake_id: Mapped[int] = mapped_column(ForeignKey("wh_stocktake.id"))
|
|
stocktake_warehouse_id: Mapped[int | None] = mapped_column(ForeignKey("wh_stocktake_warehouse.id"), nullable=True)
|
|
line_no: Mapped[int] = mapped_column(Integer)
|
|
warehouse_id: Mapped[int] = mapped_column(ForeignKey("wh_warehouse.id"))
|
|
warehouse_name: Mapped[str] = mapped_column(String(100))
|
|
warehouse_type: Mapped[str] = mapped_column(String(32))
|
|
location_id: Mapped[int | None] = mapped_column(ForeignKey("wh_location.id"), nullable=True)
|
|
location_name: Mapped[str | None] = mapped_column(String(100), nullable=True)
|
|
item_id: Mapped[int] = mapped_column(ForeignKey("md_item.id"))
|
|
item_code: Mapped[str] = mapped_column(String(50))
|
|
item_name: Mapped[str] = mapped_column(String(200))
|
|
item_type: Mapped[str] = mapped_column(String(32))
|
|
lot_id: Mapped[int | None] = mapped_column(ForeignKey("wh_stock_lot.id"), nullable=True)
|
|
lot_no: Mapped[str | None] = mapped_column(String(80), nullable=True)
|
|
source_material_sub_batch_no: Mapped[str | None] = mapped_column(String(80), nullable=True)
|
|
snapshot_qty: Mapped[float] = mapped_column(DECIMAL(18, 6), server_default=text("0"))
|
|
snapshot_weight_kg: Mapped[float] = mapped_column(DECIMAL(18, 6), server_default=text("0"))
|
|
snapshot_unit_cost: Mapped[float] = mapped_column(DECIMAL(18, 4), server_default=text("0"))
|
|
counted_qty: Mapped[float | None] = mapped_column(DECIMAL(18, 6), nullable=True)
|
|
counted_weight_kg: Mapped[float | None] = mapped_column(DECIMAL(18, 6), nullable=True)
|
|
diff_qty: Mapped[float] = mapped_column(DECIMAL(18, 6), server_default=text("0"))
|
|
diff_weight_kg: Mapped[float] = mapped_column(DECIMAL(18, 6), server_default=text("0"))
|
|
diff_amount: Mapped[float] = mapped_column(DECIMAL(18, 2), server_default=text("0"))
|
|
diff_type: Mapped[str] = mapped_column(String(32))
|
|
row_status: Mapped[str] = mapped_column(String(32))
|
|
error_message: Mapped[str | None] = mapped_column(String(500), nullable=True)
|
|
remark: Mapped[str | None] = mapped_column(String(255), nullable=True)
|
|
created_at: Mapped[object] = mapped_column(DateTime, server_default=text("CURRENT_TIMESTAMP"))
|
|
updated_at: Mapped[object] = mapped_column(DateTime, server_default=text("CURRENT_TIMESTAMP"))
|
|
|
|
|
|
class StocktakeAdjustment(Base):
|
|
__tablename__ = "wh_stocktake_adjustment"
|
|
|
|
id: Mapped[int] = mapped_column(BigInteger, primary_key=True)
|
|
stocktake_id: Mapped[int] = mapped_column(ForeignKey("wh_stocktake.id"))
|
|
stocktake_line_id: Mapped[int] = mapped_column(ForeignKey("wh_stocktake_line.id"))
|
|
warehouse_id: Mapped[int] = mapped_column(ForeignKey("wh_warehouse.id"))
|
|
item_id: Mapped[int] = mapped_column(ForeignKey("md_item.id"))
|
|
lot_id: Mapped[int | None] = mapped_column(ForeignKey("wh_stock_lot.id"), nullable=True)
|
|
adjustment_lot_id: Mapped[int | None] = mapped_column(ForeignKey("wh_stock_lot.id"), nullable=True)
|
|
inventory_txn_id: Mapped[int | None] = mapped_column(ForeignKey("wh_inventory_txn.id"), nullable=True)
|
|
adjustment_type: Mapped[str] = mapped_column(String(32))
|
|
before_qty: Mapped[float] = mapped_column(DECIMAL(18, 6), server_default=text("0"))
|
|
after_qty: Mapped[float] = mapped_column(DECIMAL(18, 6), server_default=text("0"))
|
|
before_weight_kg: Mapped[float] = mapped_column(DECIMAL(18, 6), server_default=text("0"))
|
|
after_weight_kg: Mapped[float] = mapped_column(DECIMAL(18, 6), server_default=text("0"))
|
|
qty_change: Mapped[float] = mapped_column(DECIMAL(18, 6), server_default=text("0"))
|
|
weight_change_kg: Mapped[float] = mapped_column(DECIMAL(18, 6), server_default=text("0"))
|
|
unit_cost: Mapped[float] = mapped_column(DECIMAL(18, 4), server_default=text("0"))
|
|
amount: Mapped[float] = mapped_column(DECIMAL(18, 2), server_default=text("0"))
|
|
created_at: Mapped[object] = mapped_column(DateTime, server_default=text("CURRENT_TIMESTAMP"))
|
|
updated_at: Mapped[object] = mapped_column(DateTime, server_default=text("CURRENT_TIMESTAMP"))
|
|
|
|
|
|
class WorkOrder(Base):
|
|
__tablename__ = "pp_work_order"
|
|
|
|
id: Mapped[int] = mapped_column(BigInteger, primary_key=True)
|
|
work_order_no: Mapped[str] = mapped_column(String(80))
|
|
work_order_type: Mapped[str] = mapped_column(String(32))
|
|
source_sales_order_item_id: Mapped[int | None] = mapped_column(ForeignKey("so_sales_order_item.id"), nullable=True)
|
|
product_item_id: Mapped[int] = mapped_column(ForeignKey("md_item.id"))
|
|
route_id: Mapped[int] = mapped_column(ForeignKey("md_process_route.id"))
|
|
bom_id: Mapped[int] = mapped_column(ForeignKey("md_bom.id"))
|
|
planned_qty: Mapped[float] = mapped_column(DECIMAL(18, 6), server_default=text("0"))
|
|
released_qty: Mapped[float] = mapped_column(DECIMAL(18, 6), server_default=text("0"))
|
|
finished_qty: Mapped[float] = mapped_column(DECIMAL(18, 6), server_default=text("0"))
|
|
scrap_qty: Mapped[float] = mapped_column(DECIMAL(18, 6), server_default=text("0"))
|
|
planned_start_time: Mapped[object | None] = mapped_column(DateTime, nullable=True)
|
|
planned_end_time: Mapped[object | None] = mapped_column(DateTime, nullable=True)
|
|
actual_start_time: Mapped[object | None] = mapped_column(DateTime, nullable=True)
|
|
actual_end_time: Mapped[object | None] = mapped_column(DateTime, nullable=True)
|
|
priority_level: Mapped[int] = mapped_column(Integer, server_default=text("3"))
|
|
status: Mapped[str] = mapped_column(String(32))
|
|
remark: Mapped[str | None] = mapped_column(String(255), nullable=True)
|
|
created_at: Mapped[object] = mapped_column(DateTime)
|
|
updated_at: Mapped[object] = mapped_column(DateTime)
|
|
|
|
|
|
class WorkOrderMaterial(Base):
|
|
__tablename__ = "pp_work_order_material"
|
|
|
|
id: Mapped[int] = mapped_column(BigInteger, primary_key=True)
|
|
work_order_id: Mapped[int] = mapped_column(ForeignKey("pp_work_order.id"))
|
|
bom_item_id: Mapped[int] = mapped_column(ForeignKey("md_bom_item.id"))
|
|
material_item_id: Mapped[int] = mapped_column(ForeignKey("md_item.id"))
|
|
required_qty: Mapped[float] = mapped_column(DECIMAL(18, 6), server_default=text("0"))
|
|
required_weight_kg: Mapped[float] = mapped_column(DECIMAL(18, 6), server_default=text("0"))
|
|
issued_qty: Mapped[float] = mapped_column(DECIMAL(18, 6), server_default=text("0"))
|
|
issued_weight_kg: Mapped[float] = mapped_column(DECIMAL(18, 6), server_default=text("0"))
|
|
returned_qty: Mapped[float] = mapped_column(DECIMAL(18, 6), server_default=text("0"))
|
|
returned_weight_kg: Mapped[float] = mapped_column(DECIMAL(18, 6), server_default=text("0"))
|
|
status: Mapped[str] = mapped_column(String(32))
|
|
remark: Mapped[str | None] = mapped_column(String(255), nullable=True)
|
|
created_at: Mapped[object] = mapped_column(DateTime)
|
|
updated_at: Mapped[object] = mapped_column(DateTime)
|
|
|
|
|
|
class WorkOrderMaterialIssue(Base):
|
|
__tablename__ = "pp_work_order_material_issue"
|
|
|
|
id: Mapped[int] = mapped_column(BigInteger, primary_key=True)
|
|
work_order_material_id: Mapped[int] = mapped_column(ForeignKey("pp_work_order_material.id"))
|
|
work_order_id: Mapped[int] = mapped_column(ForeignKey("pp_work_order.id"))
|
|
material_item_id: Mapped[int] = mapped_column(ForeignKey("md_item.id"))
|
|
source_lot_id: Mapped[int] = mapped_column(ForeignKey("wh_stock_lot.id"))
|
|
material_sub_batch_no: Mapped[str] = mapped_column(String(80))
|
|
issued_qty: Mapped[float] = mapped_column(DECIMAL(18, 6), server_default=text("0"))
|
|
issued_weight_kg: Mapped[float] = mapped_column(DECIMAL(18, 6), server_default=text("0"))
|
|
unit_cost: Mapped[float] = mapped_column(DECIMAL(18, 4), server_default=text("0"))
|
|
amount: Mapped[float] = mapped_column(DECIMAL(18, 2), server_default=text("0"))
|
|
issue_time: Mapped[object] = mapped_column(DateTime)
|
|
operator_user_id: Mapped[int | None] = mapped_column(BigInteger, nullable=True)
|
|
remark: Mapped[str | None] = mapped_column(String(255), nullable=True)
|
|
created_at: Mapped[object] = mapped_column(DateTime)
|
|
updated_at: Mapped[object] = mapped_column(DateTime)
|
|
|
|
|
|
class MaterialIssue(Base):
|
|
__tablename__ = "pp_material_issue"
|
|
|
|
id: Mapped[int] = mapped_column(BigInteger, primary_key=True)
|
|
issue_no: Mapped[str] = mapped_column(String(50))
|
|
work_order_id: Mapped[int] = mapped_column(ForeignKey("pp_work_order.id"))
|
|
warehouse_id: Mapped[int] = mapped_column(ForeignKey("wh_warehouse.id"))
|
|
issue_time: Mapped[object] = mapped_column(DateTime)
|
|
issuer_employee_id: Mapped[int | None] = mapped_column(ForeignKey("hr_employee.id"), nullable=True)
|
|
status: Mapped[str] = mapped_column(String(32), server_default=text("'CREATED'"))
|
|
remark: Mapped[str | None] = mapped_column(String(255), nullable=True)
|
|
created_at: Mapped[object] = mapped_column(DateTime)
|
|
updated_at: Mapped[object] = mapped_column(DateTime)
|
|
|
|
|
|
class MaterialIssueItem(Base):
|
|
__tablename__ = "pp_material_issue_item"
|
|
|
|
id: Mapped[int] = mapped_column(BigInteger, primary_key=True)
|
|
material_issue_id: Mapped[int] = mapped_column(ForeignKey("pp_material_issue.id"))
|
|
work_order_material_id: Mapped[int] = mapped_column(ForeignKey("pp_work_order_material.id"))
|
|
material_item_id: Mapped[int] = mapped_column(ForeignKey("md_item.id"))
|
|
lot_id: Mapped[int] = mapped_column(ForeignKey("wh_stock_lot.id"))
|
|
location_id: Mapped[int | None] = mapped_column(ForeignKey("wh_location.id"), nullable=True)
|
|
issue_qty: Mapped[float] = mapped_column(DECIMAL(18, 6), server_default=text("0"))
|
|
issue_weight_kg: Mapped[float] = mapped_column(DECIMAL(18, 6), server_default=text("0"))
|
|
unit_cost: Mapped[float] = mapped_column(DECIMAL(18, 4), server_default=text("0"))
|
|
status: Mapped[str] = mapped_column(String(32), server_default=text("'POSTED'"))
|
|
remark: Mapped[str | None] = mapped_column(String(255), nullable=True)
|
|
created_at: Mapped[object] = mapped_column(DateTime)
|
|
updated_at: Mapped[object] = mapped_column(DateTime)
|
|
|
|
|
|
class ProductionBatchLedger(Base):
|
|
__tablename__ = "pp_production_batch_ledger"
|
|
__table_args__ = (
|
|
UniqueConstraint("material_lot_id", "product_item_id", name="uk_production_batch_ledger_lot_product"),
|
|
)
|
|
|
|
id: Mapped[int] = mapped_column(BigInteger, primary_key=True, autoincrement=True)
|
|
material_lot_id: Mapped[int] = mapped_column(ForeignKey("wh_stock_lot.id"))
|
|
material_lot_no: Mapped[str] = mapped_column(String(128))
|
|
material_item_id: Mapped[int] = mapped_column(ForeignKey("md_item.id"))
|
|
product_item_id: Mapped[int] = mapped_column(ForeignKey("md_item.id"))
|
|
status: Mapped[str] = mapped_column(String(32), server_default=text("'在生产'"))
|
|
miniapp_selectable: Mapped[int] = mapped_column(Integer, server_default=text("1"))
|
|
total_issued_weight_kg: Mapped[float] = mapped_column(DECIMAL(18, 6), server_default=text("0"))
|
|
outside_weight_kg: Mapped[float] = mapped_column(DECIMAL(18, 6), server_default=text("0"))
|
|
finished_inbound_qty: Mapped[float] = mapped_column(DECIMAL(18, 6), server_default=text("0"))
|
|
surplus_inbound_weight_kg: Mapped[float] = mapped_column(DECIMAL(18, 6), server_default=text("0"))
|
|
scrap_inbound_weight_kg: Mapped[float] = mapped_column(DECIMAL(18, 6), server_default=text("0"))
|
|
writeoff_weight_kg: Mapped[float] = mapped_column(DECIMAL(18, 6), server_default=text("0"))
|
|
first_issue_time: Mapped[object | None] = mapped_column(DateTime, nullable=True)
|
|
last_issue_time: Mapped[object | None] = mapped_column(DateTime, nullable=True)
|
|
locked_at: Mapped[object | None] = mapped_column(DateTime, nullable=True)
|
|
reopened_at: Mapped[object | None] = mapped_column(DateTime, nullable=True)
|
|
lock_count: Mapped[int] = mapped_column(Integer, server_default=text("0"))
|
|
remark: Mapped[str | None] = mapped_column(String(500), nullable=True)
|
|
created_at: Mapped[object] = mapped_column(DateTime)
|
|
updated_at: Mapped[object] = mapped_column(DateTime)
|
|
|
|
|
|
class ProductionBatchLedgerTxn(Base):
|
|
__tablename__ = "pp_production_batch_ledger_txn"
|
|
|
|
id: Mapped[int] = mapped_column(BigInteger, primary_key=True, autoincrement=True)
|
|
production_ledger_id: Mapped[int] = mapped_column(ForeignKey("pp_production_batch_ledger.id"))
|
|
txn_type: Mapped[str] = mapped_column(String(32))
|
|
qty_delta: Mapped[float] = mapped_column(DECIMAL(18, 6), server_default=text("0"))
|
|
weight_delta_kg: Mapped[float] = mapped_column(DECIMAL(18, 6), server_default=text("0"))
|
|
outside_weight_after_kg: Mapped[float] = mapped_column(DECIMAL(18, 6), server_default=text("0"))
|
|
source_doc_type: Mapped[str | None] = mapped_column(String(64), nullable=True)
|
|
source_doc_id: Mapped[int | None] = mapped_column(BigInteger, nullable=True)
|
|
source_line_id: Mapped[int | None] = mapped_column(BigInteger, nullable=True)
|
|
biz_time: Mapped[object] = mapped_column(DateTime)
|
|
operator_user_id: Mapped[int | None] = mapped_column(BigInteger, nullable=True)
|
|
remark: Mapped[str | None] = mapped_column(String(500), nullable=True)
|
|
created_at: Mapped[object] = mapped_column(DateTime)
|
|
updated_at: Mapped[object] = mapped_column(DateTime)
|
|
|
|
|
|
class WorkOrderOperation(Base):
|
|
__tablename__ = "pp_work_order_operation"
|
|
|
|
id: Mapped[int] = mapped_column(BigInteger, primary_key=True)
|
|
work_order_id: Mapped[int] = mapped_column(ForeignKey("pp_work_order.id"))
|
|
route_operation_id: Mapped[int] = mapped_column(ForeignKey("md_process_route_operation.id"))
|
|
seq_no: Mapped[int] = mapped_column(Integer)
|
|
operation_name: Mapped[str] = mapped_column(String(100))
|
|
work_center_id: Mapped[int] = mapped_column(ForeignKey("md_work_center.id"))
|
|
planned_qty: Mapped[float] = mapped_column(DECIMAL(18, 6), server_default=text("0"))
|
|
report_qty: Mapped[float] = mapped_column(DECIMAL(18, 6), server_default=text("0"))
|
|
good_qty: Mapped[float] = mapped_column(DECIMAL(18, 6), server_default=text("0"))
|
|
scrap_qty: Mapped[float] = mapped_column(DECIMAL(18, 6), server_default=text("0"))
|
|
rework_qty: Mapped[float] = mapped_column(DECIMAL(18, 6), server_default=text("0"))
|
|
std_labor_cost: Mapped[float] = mapped_column(DECIMAL(18, 4), server_default=text("0"))
|
|
std_machine_cost: Mapped[float] = mapped_column(DECIMAL(18, 4), server_default=text("0"))
|
|
std_outsource_cost: Mapped[float] = mapped_column(DECIMAL(18, 4), server_default=text("0"))
|
|
allowed_scrap_rate: Mapped[float] = mapped_column(DECIMAL(8, 4), server_default=text("0"))
|
|
is_abnormal: Mapped[int] = mapped_column(Integer, server_default=text("0"))
|
|
status: Mapped[str] = mapped_column(String(32))
|
|
remark: Mapped[str | None] = mapped_column(String(255), nullable=True)
|
|
created_at: Mapped[object] = mapped_column(DateTime)
|
|
updated_at: Mapped[object] = mapped_column(DateTime)
|
|
|
|
|
|
class OperationReport(Base):
|
|
__tablename__ = "pp_operation_report"
|
|
|
|
id: Mapped[int] = mapped_column(BigInteger, primary_key=True)
|
|
report_no: Mapped[str] = mapped_column(String(50))
|
|
work_order_id: Mapped[int | None] = mapped_column(ForeignKey("pp_work_order.id"), nullable=True)
|
|
work_order_operation_id: Mapped[int | None] = mapped_column(ForeignKey("pp_work_order_operation.id"), nullable=True)
|
|
production_ledger_id: Mapped[int | None] = mapped_column(ForeignKey("pp_production_batch_ledger.id"), nullable=True)
|
|
employee_id: Mapped[int] = mapped_column(ForeignKey("hr_employee.id"))
|
|
equipment_id: Mapped[int | None] = mapped_column(ForeignKey("em_equipment.id"), nullable=True)
|
|
report_source: Mapped[str] = mapped_column(String(32))
|
|
shift_code: Mapped[str | None] = mapped_column(String(32), nullable=True)
|
|
start_time: Mapped[object] = mapped_column(DateTime)
|
|
end_time: Mapped[object] = mapped_column(DateTime)
|
|
report_qty: Mapped[float] = mapped_column(DECIMAL(18, 6), server_default=text("0"))
|
|
good_qty: Mapped[float] = mapped_column(DECIMAL(18, 6), server_default=text("0"))
|
|
scrap_qty: Mapped[float] = mapped_column(DECIMAL(18, 6), server_default=text("0"))
|
|
rework_qty: Mapped[float] = mapped_column(DECIMAL(18, 6), server_default=text("0"))
|
|
scrap_reason: Mapped[str | None] = mapped_column(String(255), nullable=True)
|
|
downtime_minutes: Mapped[float] = mapped_column(DECIMAL(18, 2), server_default=text("0"))
|
|
extra_cost_amount: Mapped[float] = mapped_column(DECIMAL(18, 2), server_default=text("0"))
|
|
is_abnormal: Mapped[int] = mapped_column(Integer, server_default=text("0"))
|
|
approved_by: Mapped[int | None] = mapped_column(ForeignKey("sys_user.id"), nullable=True)
|
|
approved_at: Mapped[object | None] = mapped_column(DateTime, nullable=True)
|
|
remark: Mapped[str | None] = mapped_column(String(255), nullable=True)
|
|
created_at: Mapped[object] = mapped_column(DateTime)
|
|
updated_at: Mapped[object] = mapped_column(DateTime)
|
|
|
|
|
|
class ScrapRecord(Base):
|
|
__tablename__ = "pp_scrap_record"
|
|
|
|
id: Mapped[int] = mapped_column(BigInteger, primary_key=True)
|
|
scrap_no: Mapped[str] = mapped_column(String(50))
|
|
report_id: Mapped[int] = mapped_column(ForeignKey("pp_operation_report.id"))
|
|
work_order_id: Mapped[int] = mapped_column(ForeignKey("pp_work_order.id"))
|
|
work_order_operation_id: Mapped[int] = mapped_column(ForeignKey("pp_work_order_operation.id"))
|
|
item_id: Mapped[int] = mapped_column(ForeignKey("md_item.id"))
|
|
scrap_qty: Mapped[float] = mapped_column(DECIMAL(18, 6), server_default=text("0"))
|
|
scrap_weight_kg: Mapped[float] = mapped_column(DECIMAL(18, 6), server_default=text("0"))
|
|
scrap_reason: Mapped[str | None] = mapped_column(String(255), nullable=True)
|
|
disposal_type: Mapped[str] = mapped_column(String(32))
|
|
saleable_scrap_weight_kg: Mapped[float] = mapped_column(DECIMAL(18, 6), server_default=text("0"))
|
|
scrap_cost_amount: Mapped[float] = mapped_column(DECIMAL(18, 2), server_default=text("0"))
|
|
status: Mapped[str] = mapped_column(String(32))
|
|
created_at: Mapped[object] = mapped_column(DateTime)
|
|
updated_at: Mapped[object] = mapped_column(DateTime)
|
|
|
|
|
|
class CompletionReceipt(Base):
|
|
__tablename__ = "pp_completion_receipt"
|
|
|
|
id: Mapped[int] = mapped_column(BigInteger, primary_key=True)
|
|
receipt_no: Mapped[str] = mapped_column(String(50))
|
|
work_order_id: Mapped[int] = mapped_column(ForeignKey("pp_work_order.id"))
|
|
warehouse_id: Mapped[int] = mapped_column(ForeignKey("wh_warehouse.id"))
|
|
receipt_time: Mapped[object] = mapped_column(DateTime)
|
|
receiver_employee_id: Mapped[int | None] = mapped_column(ForeignKey("hr_employee.id"), nullable=True)
|
|
status: Mapped[str] = mapped_column(String(32))
|
|
remark: Mapped[str | None] = mapped_column(String(255), nullable=True)
|
|
created_at: Mapped[object] = mapped_column(DateTime)
|
|
updated_at: Mapped[object] = mapped_column(DateTime)
|
|
|
|
|
|
class CompletionReceiptItem(Base):
|
|
__tablename__ = "pp_completion_receipt_item"
|
|
|
|
id: Mapped[int] = mapped_column(BigInteger, primary_key=True)
|
|
completion_receipt_id: Mapped[int] = mapped_column(ForeignKey("pp_completion_receipt.id"))
|
|
line_no: Mapped[int] = mapped_column(Integer)
|
|
product_item_id: Mapped[int] = mapped_column(ForeignKey("md_item.id"))
|
|
location_id: Mapped[int | None] = mapped_column(ForeignKey("wh_location.id"), nullable=True)
|
|
lot_no: Mapped[str] = mapped_column(String(50))
|
|
source_material_lot_id: Mapped[int | None] = mapped_column(BigInteger, nullable=True)
|
|
source_material_sub_batch_no: Mapped[str | None] = mapped_column(String(80), nullable=True)
|
|
source_material_summary: Mapped[str | None] = mapped_column(String(1000), nullable=True)
|
|
receipt_qty: Mapped[float] = mapped_column(DECIMAL(18, 6), server_default=text("0"))
|
|
receipt_weight_kg: Mapped[float] = mapped_column(DECIMAL(18, 6), server_default=text("0"))
|
|
unit_cost: Mapped[float] = mapped_column(DECIMAL(18, 4), server_default=text("0"))
|
|
status: Mapped[str] = mapped_column(String(32))
|
|
remark: Mapped[str | None] = mapped_column(String(255), nullable=True)
|
|
created_at: Mapped[object] = mapped_column(DateTime)
|
|
updated_at: Mapped[object] = mapped_column(DateTime)
|
|
|
|
|
|
class Delivery(Base):
|
|
__tablename__ = "so_delivery"
|
|
|
|
id: Mapped[int] = mapped_column(BigInteger, primary_key=True)
|
|
delivery_no: Mapped[str] = mapped_column(String(50))
|
|
sales_order_id: Mapped[int | None] = mapped_column(ForeignKey("so_sales_order.id"), nullable=True)
|
|
customer_id: Mapped[int | None] = mapped_column(ForeignKey("md_customer.id"), nullable=True)
|
|
warehouse_id: Mapped[int] = mapped_column(ForeignKey("wh_warehouse.id"))
|
|
delivery_date: Mapped[object] = mapped_column(DateTime)
|
|
shipper_employee_id: Mapped[int | None] = mapped_column(ForeignKey("hr_employee.id"), nullable=True)
|
|
consignee_name: Mapped[str | None] = mapped_column(String(100), nullable=True)
|
|
consignee_phone: Mapped[str | None] = mapped_column(String(50), nullable=True)
|
|
delivery_address: Mapped[str | None] = mapped_column(String(255), nullable=True)
|
|
logistics_waybill_no: Mapped[str | None] = mapped_column(String(100), nullable=True)
|
|
logistics_freight_amount: Mapped[float | None] = mapped_column(DECIMAL(18, 2), nullable=True)
|
|
logistics_photo_url: Mapped[str | None] = mapped_column(String(255), nullable=True)
|
|
status: Mapped[str] = mapped_column(String(32))
|
|
remark: Mapped[str | None] = mapped_column(String(255), nullable=True)
|
|
created_at: Mapped[object] = mapped_column(DateTime)
|
|
updated_at: Mapped[object] = mapped_column(DateTime)
|
|
|
|
|
|
class DeliveryItem(Base):
|
|
__tablename__ = "so_delivery_item"
|
|
|
|
id: Mapped[int] = mapped_column(BigInteger, primary_key=True)
|
|
delivery_id: Mapped[int] = mapped_column(ForeignKey("so_delivery.id"))
|
|
line_no: Mapped[int] = mapped_column(Integer)
|
|
sales_order_item_id: Mapped[int | None] = mapped_column(ForeignKey("so_sales_order_item.id"), nullable=True)
|
|
product_item_id: Mapped[int] = mapped_column(ForeignKey("md_item.id"))
|
|
lot_id: Mapped[int | None] = mapped_column(ForeignKey("wh_stock_lot.id"), nullable=True)
|
|
delivery_qty: Mapped[float] = mapped_column(DECIMAL(18, 6), server_default=text("0"))
|
|
delivery_weight_kg: Mapped[float] = mapped_column(DECIMAL(18, 6), server_default=text("0"))
|
|
unit_price: Mapped[float] = mapped_column(DECIMAL(18, 4), server_default=text("0"))
|
|
line_amount: Mapped[float] = mapped_column(DECIMAL(18, 2), server_default=text("0"))
|
|
status: Mapped[str] = mapped_column(String(32))
|
|
remark: Mapped[str | None] = mapped_column(String(255), nullable=True)
|
|
created_at: Mapped[object] = mapped_column(DateTime)
|
|
updated_at: Mapped[object] = mapped_column(DateTime)
|
|
|
|
|
|
class ReturnOrder(Base):
|
|
__tablename__ = "rt_return_order"
|
|
|
|
id: Mapped[int] = mapped_column(BigInteger, primary_key=True)
|
|
return_no: Mapped[str] = mapped_column(String(50))
|
|
customer_id: Mapped[int] = mapped_column(ForeignKey("md_customer.id"))
|
|
sales_order_id: Mapped[int | None] = mapped_column(ForeignKey("so_sales_order.id"), nullable=True)
|
|
delivery_id: Mapped[int | None] = mapped_column(ForeignKey("so_delivery.id"), nullable=True)
|
|
return_date: Mapped[object] = mapped_column(DateTime)
|
|
return_reason: Mapped[str | None] = mapped_column(String(255), nullable=True)
|
|
handler_employee_id: Mapped[int | None] = mapped_column(ForeignKey("hr_employee.id"), nullable=True)
|
|
status: Mapped[str] = mapped_column(String(32))
|
|
remark: Mapped[str | None] = mapped_column(String(255), nullable=True)
|
|
created_at: Mapped[object] = mapped_column(DateTime)
|
|
updated_at: Mapped[object] = mapped_column(DateTime)
|
|
|
|
|
|
class ReturnItem(Base):
|
|
__tablename__ = "rt_return_item"
|
|
|
|
id: Mapped[int] = mapped_column(BigInteger, primary_key=True)
|
|
return_order_id: Mapped[int] = mapped_column(ForeignKey("rt_return_order.id"))
|
|
line_no: Mapped[int] = mapped_column(Integer)
|
|
sales_order_item_id: Mapped[int | None] = mapped_column(ForeignKey("so_sales_order_item.id"), nullable=True)
|
|
delivery_item_id: Mapped[int | None] = mapped_column(ForeignKey("so_delivery_item.id"), nullable=True)
|
|
product_item_id: Mapped[int] = mapped_column(ForeignKey("md_item.id"))
|
|
source_lot_id: Mapped[int | None] = mapped_column(ForeignKey("wh_stock_lot.id"), nullable=True)
|
|
return_qty: Mapped[float] = mapped_column(DECIMAL(18, 6), server_default=text("0"))
|
|
return_weight_kg: Mapped[float] = mapped_column(DECIMAL(18, 6), server_default=text("0"))
|
|
disposition_status: Mapped[str] = mapped_column(String(32))
|
|
responsibility_type: Mapped[str | None] = mapped_column(String(32), nullable=True)
|
|
remark: Mapped[str | None] = mapped_column(String(255), nullable=True)
|
|
created_at: Mapped[object] = mapped_column(DateTime)
|
|
updated_at: Mapped[object] = mapped_column(DateTime)
|
|
|
|
|
|
class ReturnDisposition(Base):
|
|
__tablename__ = "rt_return_disposition"
|
|
|
|
id: Mapped[int] = mapped_column(BigInteger, primary_key=True)
|
|
disposition_no: Mapped[str] = mapped_column(String(50))
|
|
return_item_id: Mapped[int] = mapped_column(ForeignKey("rt_return_item.id"))
|
|
disposition_type: Mapped[str] = mapped_column(String(32))
|
|
rework_work_order_id: Mapped[int | None] = mapped_column(ForeignKey("pp_work_order.id"), nullable=True)
|
|
scrap_weight_kg: Mapped[float] = mapped_column(DECIMAL(18, 6), server_default=text("0"))
|
|
extra_cost_amount: Mapped[float] = mapped_column(DECIMAL(18, 2), server_default=text("0"))
|
|
scrap_sale_amount: Mapped[float] = mapped_column(DECIMAL(18, 2), server_default=text("0"))
|
|
closed_at: Mapped[object | None] = mapped_column(DateTime, nullable=True)
|
|
status: Mapped[str] = mapped_column(String(32))
|
|
remark: Mapped[str | None] = mapped_column(String(255), nullable=True)
|
|
created_at: Mapped[object] = mapped_column(DateTime)
|
|
updated_at: Mapped[object] = mapped_column(DateTime)
|
|
|
|
|
|
class AccountingPeriod(Base):
|
|
__tablename__ = "fi_accounting_period"
|
|
|
|
id: Mapped[int] = mapped_column(BigInteger, primary_key=True)
|
|
period_code: Mapped[str] = mapped_column(String(20))
|
|
year_no: Mapped[int] = mapped_column(Integer)
|
|
month_no: Mapped[int] = mapped_column(Integer)
|
|
start_date: Mapped[object] = mapped_column(Date)
|
|
end_date: Mapped[object] = mapped_column(Date)
|
|
close_status: Mapped[str] = mapped_column(String(32))
|
|
closed_at: Mapped[object | None] = mapped_column(DateTime, nullable=True)
|
|
created_at: Mapped[object] = mapped_column(DateTime)
|
|
updated_at: Mapped[object] = mapped_column(DateTime)
|
|
|
|
|
|
class OverheadEntry(Base):
|
|
__tablename__ = "fi_overhead_entry"
|
|
|
|
id: Mapped[int] = mapped_column(BigInteger, primary_key=True)
|
|
period_id: Mapped[int] = mapped_column(ForeignKey("fi_accounting_period.id"))
|
|
overhead_type: Mapped[str] = mapped_column(String(32))
|
|
dept_id: Mapped[int | None] = mapped_column(ForeignKey("sys_department.id"), nullable=True)
|
|
amount: Mapped[float] = mapped_column(DECIMAL(18, 2), server_default=text("0"))
|
|
allocation_basis: Mapped[str] = mapped_column(String(32))
|
|
description: Mapped[str | None] = mapped_column(String(255), nullable=True)
|
|
created_by: Mapped[int | None] = mapped_column(ForeignKey("sys_user.id"), nullable=True)
|
|
created_at: Mapped[object] = mapped_column(DateTime)
|
|
updated_at: Mapped[object] = mapped_column(DateTime)
|
|
|
|
|
|
class CostAllocation(Base):
|
|
__tablename__ = "fi_cost_allocation"
|
|
|
|
id: Mapped[int] = mapped_column(BigInteger, primary_key=True)
|
|
period_id: Mapped[int] = mapped_column(ForeignKey("fi_accounting_period.id"))
|
|
work_order_id: Mapped[int] = mapped_column(ForeignKey("pp_work_order.id"))
|
|
product_item_id: Mapped[int] = mapped_column(ForeignKey("md_item.id"))
|
|
allocation_basis_value: Mapped[float] = mapped_column(DECIMAL(18, 6), server_default=text("0"))
|
|
overhead_amount: Mapped[float] = mapped_column(DECIMAL(18, 2), server_default=text("0"))
|
|
material_amount: Mapped[float] = mapped_column(DECIMAL(18, 2), server_default=text("0"))
|
|
labor_amount: Mapped[float] = mapped_column(DECIMAL(18, 2), server_default=text("0"))
|
|
machine_amount: Mapped[float] = mapped_column(DECIMAL(18, 2), server_default=text("0"))
|
|
abnormal_loss_amount: Mapped[float] = mapped_column(DECIMAL(18, 2), server_default=text("0"))
|
|
total_cost_amount: Mapped[float] = mapped_column(DECIMAL(18, 2), server_default=text("0"))
|
|
unit_cost: Mapped[float] = mapped_column(DECIMAL(18, 6), server_default=text("0"))
|
|
created_at: Mapped[object] = mapped_column(DateTime)
|
|
updated_at: Mapped[object] = mapped_column(DateTime)
|
|
|
|
|
|
class StatementSnapshot(Base):
|
|
__tablename__ = "fi_statement_snapshot"
|
|
|
|
id: Mapped[int] = mapped_column(BigInteger, primary_key=True)
|
|
snapshot_no: Mapped[str] = mapped_column(String(50))
|
|
period_id: Mapped[int] = mapped_column(ForeignKey("fi_accounting_period.id"))
|
|
statement_type: Mapped[str] = mapped_column(String(32))
|
|
report_date: Mapped[object] = mapped_column(Date)
|
|
summary_json: Mapped[dict] = mapped_column(JSON)
|
|
created_by: Mapped[int | None] = mapped_column(ForeignKey("sys_user.id"), nullable=True)
|
|
created_at: Mapped[object] = mapped_column(DateTime)
|
|
updated_at: Mapped[object] = mapped_column(DateTime)
|