"""実消化＆アルトマーク実績全件洗替処理"""
from src.batch.batch_functions import get_batch_statuses
from src.error.exceptions import BatchOperationException
from src.logging.get_logger import get_logger
from src.system_var import constants
from src.batch.laundering import (sales_results_laundering,
                                  create_inst_merge_for_laundering)

logger = get_logger('卸販売実績全件洗替')


def exec():
    try:
        logger.info('週次バッチ：開始')
        try:
            # 日次バッチ処置中フラグ、dump処理状態区分、処理日を取得
            batch_processing_flag, dump_status_kbn = get_batch_statuses()
        except BatchOperationException as e:
            logger.exception(f'日付テーブル取得（異常終了）{e}')
            return constants.BATCH_EXIT_CODE_SUCCESS

        # 日次バッチ処理中の場合、後続の処理は行わない
        if batch_processing_flag == constants.BATCH_ACTF_BATCH_IN_PROCESSING:
            logger.warning('日次バッチ処理中のため、実消化＆アルトマーク実績全件洗替処理を終了します。')
            return constants.BATCH_EXIT_CODE_SUCCESS

        # dump取得が正常終了していない場合、後続の処理は行わない
        if dump_status_kbn != constants.DUMP_STATUS_KBN_UNPROCESSED:
            logger.warning('dump取得が正常終了していないため、実消化＆アルトマーク実績全件洗替処理を終了します。')
            return constants.BATCH_EXIT_CODE_SUCCESS

        # 洗替用マスタ作成
        create_inst_merge_for_laundering.exec()
        # 卸販売実績全件洗替
        sales_results_laundering.exec()
        logger.info('週次バッチ：終了')
    except Exception as e:
        logger.exception(f'実消化＆アルトマーク実績全件洗替処理中に想定外のエラーが発生しました {e}')
        return constants.BATCH_EXIT_CODE_SUCCESS
