from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable


class ComPharm(UltmarcTable):
    """レイアウト区分102: COM_薬局"""
    dcfhp_id: str                   # DCF コード(ID)
    dcfhp_code: str                 # DCF コード(コード)
    dcfhp_yobi: str                 # DCF コード(予備)
    maint_flag: str                 # 修正区分
    maintdate: str                  # メンテナンス年月日
    pass                            # 予備／転送年月日(未使用)
    unconf_flg: str                 # 未確認フラグ
    del_cd: str                     # 削除予定理由
    duphp_id: str                   # 重複時相手先コード(レコードID)
    duphp_cd: str                   # 重複時相手先コード(施設コード)
    duphp_yobi: str                 # 重複時相手先コード(予備)
    hp_name: str                    # 正式施設名(漢字)
    hp_name_kana: str               # 正式施設名(ｶﾅ)
    hp_ryaku_name: str              # 略式施設名(漢字)
    hp_ryaku_name_kana: str         # 略式施設名(ｶﾅ)
    hp_addr_lost_code: str          # 住所不明
    prefc_cd: str                   # 住所コード(県コード)
    city_cd: str                    # 住所コード(市区町村コード)
    addrcode1: str                  # 住所コード(大字・通称コード)
    addrcode2: str                  # 住所コード(字・丁目コード)
    zip_code: str                   # 郵便番号
    addr: str                       # 住所(漢字)
    addr_kana: str                  # 住所(ｶﾅ)
    addr_number: str                # 住所表示番号
    addrkanjcnt1: str               # 住所文字カウント:漢字(県)
    addrkanjcnt2: str               # 住所文字カウント:漢字(市区町村)
    addrkanjcnt3: str               # 住所文字カウント:漢字(大字・通称)
    addrkanjcnt4: str               # 住所文字カウント:漢字(字・丁目)
    addrkanacnt1: str               # 住所文字カウント:カナ(県)
    addrkanacnt2: str               # 住所文字カウント:カナ(市区町村)
    addrkanacnt3: str               # 住所文字カウント:カナ(大字・通称)
    addrkanacnt4: str               # 住所文字カウント:カナ(字・丁目)
    tel_nothing_flag: str           # 電話番号なしフラグ
    tel_number: str                 # 電話番号
    mgtclass_code: str              # 経営体
    hpclass_code: str               # 施設区分
    president: str                  # 代表者(漢字)
    president_Kana: str             # 代表者(カナ)
    open_flag: str                  # 開業予定(フラグ)
    open_yearmonth: str             # 開業予定(年月)
    close_flg: str                  # 休院(休院フラグ)
    close_yearmonth: str            # 休院(開始年月)
    pharmacist: str                 # 管理薬剤師名(漢字)
    pharmacist_kana: str            # 管理薬剤師名(カナ)
    franchise_hq_id: str            # チェーン店本部コード(レコードID)
    franchise_hq_code: str          # チェーン店本部コード(施設コード)
    franchise_hq_yobi: str          # チェーン店本部コード(予備)

    dcfdsf_inst_cd: str             # 施設コード
    village_code: str               # 町字コード
    addr_count_kana: str            # 住所カウントカナ
    addr_count: str                 # 住所カウント
    dup_opp_cd: str                 # 重複時相手先コード
    franchise_hq_cd: str            # チェーン店本部コード

    def __init__(self, record: list[str]):
        super().__init__(record)

        self.dcfhp_id = record[1]
        self.dcfhp_cd = record[2]
        self.dcfhp_yobi = record[3]
        self.maint_flag = record[4]
        self.maintdate = record[5]
        self.unconf_flg = record[7].strip()
        self.del_cd = record[8].strip()
        self.duphp_id = record[9].strip()
        self.duphp_cd = record[10].strip()
        self.duphp_yobi = record[11].strip()
        self.hp_name = record[12].strip()
        self.hp_name_kana = record[13].strip()
        self.hp_ryaku_name = record[14].strip()
        self.hp_ryaku_name_kana = record[15].strip()
        self.hp_addr_lost_code = record[16].strip()
        self.prefc_cd = record[17].strip()
        self.city_cd = record[18].strip()
        self.addrcode1 = record[19].strip()
        self.addrcode2 = record[20].strip()
        self.zip_code = record[21].strip()
        self.addr = record[22]
        self.addr_kana = record[23]
        self.addr_number = record[24]
        self.addrkanjcnt1 = record[25].strip()
        self.addrkanjcnt2 = record[26].strip()
        self.addrkanjcnt3 = record[27].strip()
        self.addrkanjcnt4 = record[28].strip()
        self.addrkanacnt1 = record[29].strip()
        self.addrkanacnt2 = record[30].strip()
        self.addrkanacnt3 = record[31].strip()
        self.addrkanacnt4 = record[32].strip()
        self.tel_nothing_flag = record[33].strip()
        self.tel_number = record[34].strip()
        self.mgtclass_code = record[35].strip()
        self.hpclass_code = record[36].strip()
        self.president = record[37].strip()
        self.president_Kana = record[38].strip()
        self.open_flag = record[39].strip()
        self.open_yearmonth = record[40].strip()
        self.close_flg = record[41].strip()
        self.close_yearmonth = record[42].strip()
        self.pharmacist = record[43]
        self.pharmacist_kana = record[44]
        self.franchise_hq_id = record[45]
        self.franchise_hq_code = record[46]
        self.franchise_hq_yobi = record[47]

        # 施設コード(2+3+4)
        self.dcfdsf_inst_cd = ''.join([self.dcfhp_id, self.dcfhp_cd, self.dcfhp_yobi])

        # 町字コード(18+19+20+21)
        self.village_code = ''.join([self.prefc_cd, self.city_cd, self.addrcode1, self.addrcode2])

        # 住所カウントカナ(30+31+32+33)
        self.addr_count_kana = ''.join([self.addrkanacnt1, self.addrkanacnt2, self.addrkanacnt3, self.addrkanacnt4])

        # 住所カウント(26+27+28+29)
        self.addr_count = ''.join([self.addrkanjcnt1, self.addrkanjcnt2, self.addrkanjcnt3, self.addrkanjcnt4])

        # 重複時相手先コード(10+11+12)
        self.dup_opp_cd = ''.join([self.duphp_id, self.duphp_cd, self.duphp_yobi])

        # チェーン店本部コード(46+47+48)
        self.franchise_hq_cd = ''.join([self.franchise_hq_id, self.franchise_hq_code, self.franchise_hq_yobi])
