""" This module contains the WorksheetTaxCorrection model. The model represents tax corrections. """ from abacus_common_logic.connectors.database import db from abacus_common_logic.models.base import BaseModel from abacus_common_logic.utils.users import get_flask_user_id from sqlalchemy import update class WorksheetTaxCorrection(BaseModel): """Worksheet Tax Correction.""" __tablename__ = 'worksheet_tax_correction' worksheet_tax_correction_id = db.Column(db.Integer, primary_key=True) contract_id = db.Column(db.Integer, nullable=False) account_id = db.Column(db.Integer, nullable=False) correction_statement_period_id = db.Column(db.Integer, nullable=False) payable_detail_type_id = db.Column(db.Integer, nullable=False) amount = db.Column(db.Numeric(20, 2), nullable=True) currency_code = db.Column(db.String(3), nullable=False) note = db.Column(db.String(255), nullable=True) deleted_at = db.Column(db.DateTime) deleted_by = db.Column(db.String(255)) @classmethod def bulk_create(cls, instances: list) -> None: """Bulk create instances using add_all.""" db.session.add_all(instances) db.session.commit() @classmethod def soft_delete_by_ids(cls, ids: list) -> None: """Soft delete by worksheet_tax_correction_ids.""" db.session.execute( update(cls) .where( cls.worksheet_tax_correction_id.in_(ids), cls.deleted_at.is_(None), ) .values( deleted_at=cls.current_timestamp(), deleted_by=get_flask_user_id(), ) .execution_options(synchronize_session=False) ) db.session.commit()