"""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")