57 lines
2.0 KiB
Python
57 lines
2.0 KiB
Python
"""Phase 18 Automatic Source Driven Stock Item Voucher Engine.
|
|
|
|
Revision ID: 20260823_auto_stock_voucher_p18
|
|
Revises: 20260823_native_voucher_engine_p17
|
|
"""
|
|
from alembic import op
|
|
import sqlalchemy as sa
|
|
|
|
|
|
revision = "20260823_auto_stock_voucher_p18"
|
|
down_revision = "20260823_native_voucher_engine_p17"
|
|
branch_labels = None
|
|
depends_on = None
|
|
|
|
|
|
def upgrade():
|
|
op.create_table(
|
|
"accounting_voucher_item_lines",
|
|
sa.Column("id", sa.Integer(), primary_key=True),
|
|
sa.Column(
|
|
"draft_id",
|
|
sa.Integer(),
|
|
sa.ForeignKey("accounting_voucher_drafts.id", ondelete="CASCADE"),
|
|
nullable=False,
|
|
),
|
|
sa.Column("line_no", sa.Integer(), nullable=False, server_default="1"),
|
|
sa.Column("stock_item_name", sa.String(255), nullable=False),
|
|
sa.Column("hsn_sac", sa.String(30), nullable=False, server_default=""),
|
|
sa.Column("quantity", sa.Float(), nullable=False, server_default="0"),
|
|
sa.Column("unit", sa.String(40), nullable=False, server_default=""),
|
|
sa.Column("rate", sa.Float(), nullable=False, server_default="0"),
|
|
sa.Column("amount", sa.Float(), nullable=False, server_default="0"),
|
|
sa.Column("dr_cr", sa.String(2), nullable=False),
|
|
sa.Column("accounting_ledger_name", sa.String(255), nullable=False, server_default=""),
|
|
sa.Column("godown_name", sa.String(255), nullable=False, server_default=""),
|
|
sa.Column("source_item_json", sa.Text(), nullable=False, server_default="{}"),
|
|
)
|
|
op.create_index(
|
|
"ix_accounting_voucher_item_lines_draft_id",
|
|
"accounting_voucher_item_lines",
|
|
["draft_id"],
|
|
)
|
|
op.create_index(
|
|
"ix_accounting_voucher_item_lines_stock_item_name",
|
|
"accounting_voucher_item_lines",
|
|
["stock_item_name"],
|
|
)
|
|
op.create_index(
|
|
"ix_accounting_voucher_item_lines_hsn_sac",
|
|
"accounting_voucher_item_lines",
|
|
["hsn_sac"],
|
|
)
|
|
|
|
|
|
def downgrade():
|
|
op.drop_table("accounting_voucher_item_lines")
|