"""Add penyetoran table.

Revision ID: n0d1e2f3a4b5
Revises: m9c0d1e2f3a4
Create Date: 2026-04-03
"""
from alembic import op
import sqlalchemy as sa

revision = 'n0d1e2f3a4b5'
down_revision = 'm9c0d1e2f3a4'
branch_labels = None
depends_on = None


def upgrade() -> None:
    op.create_table(
        'penyetoran',
        sa.Column('id', sa.Integer(), primary_key=True),
        sa.Column('spbu_id', sa.Integer(), sa.ForeignKey('master_spbu.id', ondelete='CASCADE'), nullable=False, index=True),
        sa.Column('tanggal', sa.Date(), nullable=False),
        sa.Column('total_penjualan', sa.Numeric(15, 3), nullable=False, server_default='0'),
        sa.Column('total_expenses', sa.Numeric(15, 3), nullable=False, server_default='0'),
        sa.Column('jumlah_setor', sa.Numeric(15, 3), nullable=False, server_default='0'),
        sa.Column('catatan', sa.Text(), nullable=True),
        sa.Column('bukti_url', sa.String(500), nullable=True),
        sa.Column('status', sa.String(20), nullable=False, server_default='draft'),
        sa.Column('created_by_id', sa.Integer(), sa.ForeignKey('master_user.id', ondelete='SET NULL'), nullable=True),
        sa.Column('confirmed_by_id', sa.Integer(), sa.ForeignKey('master_user.id', ondelete='SET NULL'), nullable=True),
        sa.Column('confirmed_at', sa.DateTime(timezone=True), nullable=True),
        sa.Column('catatan_konfirmasi', sa.Text(), nullable=True),
        sa.Column('created_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False),
        sa.Column('updated_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False),
        sa.UniqueConstraint('spbu_id', 'tanggal', name='uq_penyetoran_spbu_tanggal'),
    )
    op.create_index('ix_penyetoran_spbu_tanggal', 'penyetoran', ['spbu_id', 'tanggal'])


def downgrade() -> None:
    op.drop_index('ix_penyetoran_spbu_tanggal', table_name='penyetoran')
    op.drop_table('penyetoran')
