## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["selectSvcNm(webNewInfoBean)"])
    
    START --> INIT["Load Beans: getKeiyakusvcinfo getEonet getEotel getEotv getMobile getKeiyakuinfo getMansioninfo"]
    
    INIT --> LOAD_PARAMS["Load Parameters: tkHoshikiPtnCd mskmKsnSvc mskmMnsType svcNet svcTv svcTel svcMob kshaddCmf"]
    
    LOAD_PARAMS --> CHECK_KYAKU["kshaddCmf equals KEI_OVERWRITE_TRUE Contract change pending?"]
    
    CHECK_KYAKU -->|Yes| KYAKU_PENDING["Append: Contract change pending text + 2 return codes"]
    CHECK_KYAKU -->|No| CHECK_NET["svcNet equals SELECT_SVC_NET_CHOICE = 1 Network selected?"]
    
    KYAKU_PENDING --> CHECK_NET
    
    CHECK_NET -->|Yes| LOAD_NET_PARAMS["Load Net params: netCourse netSokuwari netKosokuwari netChowari netAutoKeizoku tonaiSpeedCd netFamipa netRemote netMeshWiFi netPlc netStb netSmalin netGh netSecurityPack netInetsgwl netNtfmlprm netPremiumPack netPc_pln netPcw_pln netTv_pln"]
    CHECK_NET -->|No| CHECK_TELEPHONE["svcTel equals SELECT_SVC_TEL_CHOICE Telephone selected?"]
    
    LOAD_NET_PARAMS --> CHECK_HOME["mskmKsnSvc equals MSKM_KSN_SVC_HOME = 1 Home type?"]
    
    CHECK_HOME -->|Yes| NET_HOME["mlNetSvcNm = Net Home text"]
    CHECK_HOME -->|No| CHECK_MEZON["mskmKsnSvc equals MSKM_KSN_SVC_MANSION AND mskmMnsType equals MSKM_MNS_TYPE_MEZON = 2 Mansion Mezon?"]
    
    CHECK_MEZON -->|Yes| NET_MEZON["mlNetSvcNm = Net Mansion Mezon text"]
    CHECK_MEZON -->|No| CHECK_MANSION["mskmKsnSvc equals MSKM_KSN_SVC_MANSION AND mskmMnsType equals MSKM_MNS_TYPE_MANSION = 1 Mansion?"]
    
    CHECK_MANSION -->|Yes| NET_MANSION["mlNetSvcNm = Net Mansion text"]
    CHECK_MANSION -->|No| CHECK_TKHOSIKI["isTkHosikiChgSbtCd AND tonaiSpeedCd in MT_CD01214_COURCE_CHANGE Delivery method change?"]
    
    CHECK_TKHOSIKI -->|Yes| COURSE_OVERRIDE["Override netCourse: CD01214_008 to 5G else to 10G"]
    CHECK_TKHOSIKI -->|No| COURSE_SELECT["Course selection"]
    
    COURSE_SELECT --> COURSE_100M["netCourse equals NET_COURSE_100M = 1?"]
    COURSE_100M -->|Yes| ML_100M["mlCourse = 100M display text"]
    COURSE_100M -->|No| COURSE_200M["netCourse equals NET_COURSE_200M = 2?"]
    COURSE_200M -->|Yes| ML_200M["mlCourse = 200M display text"]
    COURSE_200M -->|No| COURSE_1G["netCourse equals NET_COURSE_1G = 3?"]
    COURSE_1G -->|Yes| ML_1G["mlCourse = 1G display text"]
    COURSE_1G -->|No| COURSE_100ML["netCourse equals NET_COURSE_100M_LIGHT = 4?"]
    COURSE_100ML -->|Yes| ML_100ML["mlCourse = 100M Light text"]
    COURSE_100ML -->|No| COURSE_5G["netCourse equals NET_COURSE_5G = 5?"]
    COURSE_5G -->|Yes| ML_5G["mlCourse = 5G display text"]
    COURSE_5G -->|No| COURSE_10G["netCourse equals NET_COURSE_10G = 6?"]
    COURSE_10G -->|Yes| ML_10G["mlCourse = 10G display text"]
    COURSE_10G -->|No| ML_DEFAULT["mlCourse = Dynamic text using netCourse value"]
    
    ML_100M --> BUILD_SVC_NM["serviceName = mlNetSvcNm + mlCourse"]
    ML_200M --> BUILD_SVC_NM
    ML_1G --> BUILD_SVC_NM
    ML_100ML --> BUILD_SVC_NM
    ML_5G --> BUILD_SVC_NM
    ML_10G --> BUILD_SVC_NM
    ML_DEFAULT --> BUILD_SVC_NM
    
    BUILD_SVC_NM --> DISCOUNT_LOOP["Check discounts: Sokuwari Kosokuwari Chowari AutoKeizoku"]
    
    DISCOUNT_LOOP --> FAMIPA_CHECK["netFamipa equals FP_MSKM_MSKM Family Pack?"]
    FAMIPA_CHECK -->|Yes| FAMIPA_YES["Append: RC + Family Pack text Set famipaFlg = true"]
    FAMIPA_CHECK -->|No| SECUPAK_CHECK["netSecurityPack equals SECURITY_PAC_MSKM Security Pack?"]
    
    FAMIPA_YES --> SECUPAK_CHECK
    SECUPAK_CHECK -->|Yes| SECUPAK_YES["Append: RC + Security Pack text Set securityPackFlg = true"]
    SECUPAK_CHECK -->|No| REMOTE_CHECK["netRemote equals RMTSPRT_MSKM_MSKM OR netPremiumPack equals SMALIN_PREMIUM_PACK_MSKM Remote Support or Premium Pack?"]
    
    SECUPAK_YES --> REMOTE_CHECK
    REMOTE_CHECK -->|Yes| REMOTE_YES["Append: RC + Remote Support text"]
    REMOTE_CHECK -->|No| STB_CHECK["netStb equals NET_STICK_STB_MSKM Stick STB?"]
    
    REMOTE_YES --> STB_CHECK
    STB_CHECK -->|Yes| STB_YES["Append: RC + Stick STB text"]
    STB_CHECK -->|No| MESH_CHECK["netMeshWiFi equals MESH_WIFI_MSKM Mesh WiFi?"]
    
    STB_YES --> MESH_CHECK
    MESH_CHECK -->|Yes| MESH_YES["Append: RC + Mesh WiFi text"]
    MESH_CHECK -->|No| PLC_CHECK["netPlc equals PLC_MSKM_MSKM PLC?"]
    
    MESH_YES --> PLC_CHECK
    PLC_CHECK -->|Yes| PLC_YES["Append: RC + PLC text"]
    PLC_CHECK -->|No| SMALIN_CHECK["netSmalin equals SMALIN_TABLET_MSKM Smartlin?"]
    
    PLC_YES --> SMALIN_CHECK
    SMALIN_CHECK -->|Yes| SMALIN_YES["Append: RC + Smartlin text"]
    SMALIN_CHECK -->|No| GH_CHECK["netGh equals GH_TANMT_BUY GH?"]
    
    SMALIN_YES --> GH_CHECK
    GH_CHECK -->|Yes| GH_YES["Append: RC + GH text"]
    GH_CHECK -->|No| INETSGWL_CHECK["netInetsgwl equals INETSGWL_MSKM Internet Gateway?"]
    
    GH_YES --> INETSGWL_CHECK
    INETSGWL_CHECK -->|Yes| INETSGWL_YES["Append: RC + Internet Gateway text"]
    INETSGWL_CHECK -->|No| NTFMLPRM_CHECK["netNtfmlprm equals NTFMLPRM_MSKM Notif Family Premium?"]
    
    INETSGWL_YES --> NTFMLPRM_CHECK
    NTFMLPRM_CHECK -->|Yes| NTFMLPRM_YES["Append: RC + Notif Family Premium text"]
    NTFMLPRM_CHECK -->|No| PC_PLAN_CHECK["netPc_pln equals PC_PLN_MSKM PC Plan?"]
    
    NTFMLPRM_YES --> PC_PLAN_CHECK
    PC_PLAN_CHECK -->|Yes| PC_PLAN_YES["Append: RC + PC Plan text"]
    PC_PLAN_CHECK -->|No| PCW_PLAN_CHECK["netPcw_pln equals PCW_PLN_MSKM PCW Plan?"]
    
    PC_PLAN_YES --> PCW_PLAN_CHECK
    PCW_PLAN_CHECK -->|Yes| PCW_PLAN_YES["Append: RC + PCW Plan text"]
    PCW_PLAN_CHECK -->|No| TV_PLAN_CHECK["netTv_pln equals TV_PLN_MSKM TV Plan?"]
    
    PCW_PLAN_YES --> TV_PLAN_CHECK
    TV_PLAN_CHECK -->|Yes| TV_PLAN_YES["Append: RC + TV Plan text"]
    TV_PLAN_CHECK -->|No| MINEO_CHECK["Mineo Setplan active with phone or contract number?"]
    
    TV_PLAN_YES --> MINEO_CHECK
    MINEO_CHECK -->|Yes| MINEO_YES["Append: RC + Mineo Setplan text + number"]
    MINEO_CHECK -->|No| TEL_TV_MOB_CHECK["svcTel equals SELECT_SVC_TEL_CHOICE OR svcTv equals SELECT_SVC_TV_CHOICE OR mobileFlg true?"]
    
    MINEO_YES --> TEL_TV_MOB_CHECK
    TEL_TV_MOB_CHECK -->|Yes| APPEND_DBL_RC1["Append 2x Return code"]
    TEL_TV_MOB_CHECK -->|No| SKIP_NET["End Network block"]
    
    APPEND_DBL_RC1 --> SKIP_NET
    SKIP_NET --> CHECK_TELEPHONE
    
    CHECK_TELEPHONE -->|Yes| TEL_PROCESSING["Telephone processing"]
    CHECK_TELEPHONE -->|No| CHECK_TV["svcTv equals SELECT_SVC_TV_CHOICE TV selected?"]
    
    TEL_PROCESSING --> TEL_1BANGOU["telCourse equals TEL_COURSE_1BANGOU_SVC 1-line service?"]
    TEL_1BANGOU -->|Yes| TEL1_TEXT["mlTelNm = 1-line service text"]
    TEL_1BANGOU -->|No| TEL_2BANGOU["telCourse equals TEL_COURSE_2BANGOU_SVC 2-line service?"]
    
    TEL1_TEXT --> BMP1_LOAD["Load bmp_um_1 bmp_cancel_1"]
    TEL_2BANGOU -->|Yes| TEL2_TEXT["mlTelNm = 2-line service text Load bmp_um_2 bmp_cancel_2"]
    TEL_2BANGOU -->|No| BMP1_LOAD
    
    BMP1_LOAD --> BMP1_CHECK["bmp_um_1 equals USE_BMP_USE AND bmp_cancel_1 not BMP_CANCEL_FLG_CNL 1st line Number phone active?"]
    BMP1_CHECK -->|Yes| BMP1_USE["mlBnpUm1 = Use"]
    BMP1_CHECK -->|No| BMP1_NOT["mlBnpUm1 = Not use"]
    
    TEL2_TEXT --> BMP2_CHECK["bmp_um_2 equals USE_BMP_USE AND bmp_cancel_2 not BMP_CANCEL_FLG_CNL 2nd line?"]
    BMP2_CHECK -->|Yes| BMP2_USE["mlBnpUm2 = Use"]
    BMP2_CHECK -->|No| BMP2_NOT["mlBnpUm2 = Not use"]
    
    BMP2_USE --> BMP1_LOAD
    BMP2_NOT --> BMP1_LOAD
    
    BMP1_USE --> TEL_FEATURES_1["Load telHashinTch1 telHashinDsp1 telEasepack1 telEohtlPackThree1 telEohtlPackSeven1 telHitsuchiKyohi1"]
    BMP1_NOT --> TEL_FEATURES_1
    
    TEL_FEATURES_1 --> APPEND_TEL_BASE["Append: mlTelNm RC mlBnp1 mlBnpUm1"]
    APPEND_TEL_BASE --> TEL_F1["telHashinTch1 equals HASHINNO_TCH_CHOICE?"]
    TEL_F1 -->|Yes| TEL_F1_A["Append: RC + Notification notify text"]
    TEL_F1 -->|No| TEL_F2
    
    TEL_F1_A --> TEL_F2["telEasepack1 equals EASE_PACK_CHOICE?"]
    TEL_F2 -->|Yes| TEL_F2_A["Append: RC + Anshin Phone Pack text"]
    TEL_F2 -->|No| TEL_F3
    
    TEL_F2_A --> TEL_F3["telEohtlPackThree1 equals EOHTL_PACK3_CHOICE?"]
    TEL_F3 -->|Yes| TEL_F3_A["Append: RC + eoHikari Phone Pack 3 text"]
    TEL_F3 -->|No| TEL_F4
    
    TEL_F3_A --> TEL_F4["telEohtlPackSeven1 equals EOHTL_PACK7_CHOICE?"]
    TEL_F4 -->|Yes| TEL_F4_A["Append: RC + eoHikari Phone Pack 7 text"]
    TEL_F4 -->|No| TEL_F5
    
    TEL_F4_A --> TEL_F5["telHashinDsp1 equals HASHINNO_DSP_CHOICE?"]
    TEL_F5 -->|Yes| TEL_F5_A["Append: RC + Notification display text"]
    TEL_F5 -->|No| TEL_F6
    
    TEL_F5_A --> TEL_F6["telHitsuchiKyohi1 equals HITSUCHI_DNY_CHOICE?"]
    TEL_F6 -->|Yes| TEL_F6_A["Append: RC + Do-not-disturb reject text"]
    TEL_F6 -->|No| CHECK_TEL_2LINE
    
    CHECK_TEL_2LINE -->|No| TEL_TV_CHECK2["svcTv equals SELECT_SVC_TV_CHOICE OR mobileFlg true?"]
    CHECK_TEL_2LINE -->|Yes| LOAD_TEL2["Load tel2 features"]
    
    LOAD_TEL2 --> APPEND_TEL2_BASE["Append: RC mlBnp2 mlBnpUm2"]
    APPEND_TEL2_BASE --> TEL2_F1["telHashinTch2 equals HASHINNO_TCH_CHOICE?"]
    TEL2_F1 -->|Yes| TEL2_F1_A["Append: RC + Notification notify text"]
    TEL2_F1 -->|No| TEL2_F2
    
    TEL2_F1_A --> TEL2_F2["telEasepack2 equals EASE_PACK_CHOICE?"]
    TEL2_F2 -->|Yes| TEL2_F2_A["Append: RC + Anshin Phone Pack text"]
    TEL2_F2 -->|No| TEL2_F3
    
    TEL2_F2_A --> TEL2_F3["telEohtlPackThree2 equals EOHTL_PACK3_CHOICE?"]
    TEL2_F3 -->|Yes| TEL2_F3_A["Append: RC + eoHikari Phone Pack 3 text"]
    TEL2_F3 -->|No| TEL2_F4
    
    TEL2_F3_A --> TEL2_F4["telEohtlPackSeven2 equals EOHTL_PACK7_CHOICE?"]
    TEL2_F4 -->|Yes| TEL2_F4_A["Append: RC + eoHikari Phone Pack 7 text"]
    TEL2_F4 -->|No| TEL2_F5
    
    TEL2_F4_A --> TEL2_F5["telHashinDsp2 equals HASHINNO_DSP_CHOICE?"]
    TEL2_F5 -->|Yes| TEL2_F5_A["Append: RC + Notification display text"]
    TEL2_F5 -->|No| TEL2_F6
    
    TEL2_F5_A --> TEL2_F6["telHitsuchiKyohi2 equals HITSUCHI_DNY_CHOICE?"]
    TEL2_F6 -->|Yes| TEL2_F6_A["Append: RC + Do-not-disturb reject text"]
    TEL2_F6 -->|No| TEL_TV_CHECK2
    
    TEL2_F6_A --> TEL_TV_CHECK2
    
    TEL_TV_CHECK2 -->|Yes| APPEND_DBL_RC2["Append 2x Return code"]
    TEL_TV_CHECK2 -->|No| CHECK_TV
    
    APPEND_DBL_RC2 --> CHECK_TV
    
    CHECK_TV -->|Yes| LOAD_TV_PARAMS["Load mlTvCourse eoTVCourse stbCnt"]
    CHECK_TV -->|No| CHECK_MOBILE["mobileFlg true Mobile selected?"]
    
    LOAD_TV_PARAMS --> APPEND_TV_BASE["Append: mlTvCourse RC"]
    APPEND_TV_BASE --> TV_BASIC["eoTVCourse equals EO_TV_COURSE_BASIC = 2 Basic course?"]
    
    TV_BASIC -->|Yes| TV_STB_LOOP["stbCnt > 0 Loop: for each STB get type hdNm name append"]
    TV_BASIC -->|No| TV_BS_STAR["eoTVCourse equals EO_TV_COURSE_BS_STAR = 3?"]
    
    TV_STB_LOOP --> TV_GUIDE_CHECK["guideCnt not 0 and not empty?"]
    TV_BS_STAR -->|Yes| TV_BS_STAR_A["Append: BS Star channel set text"]
    TV_BS_STAR -->|No| TV_BS["Append: Digital BS text"]
    
    TV_BS_STAR_A --> TV_GUIDE_CHECK
    TV_BS --> TV_GUIDE_CHECK
    
    TV_GUIDE_CHECK -->|Yes| TV_GUIDE_A["Append: RC + Guide count text"]
    TV_GUIDE_CHECK -->|No| TV_MOBILE_CHECK["mobileFlg true?"]
    
    TV_GUIDE_A --> TV_MOBILE_CHECK
    
    TV_MOBILE_CHECK -->|Yes| APPEND_DBL_RC3["Append 2x Return code"]
    TV_MOBILE_CHECK -->|No| CHECK_MOBILE
    
    APPEND_DBL_RC3 --> CHECK_MOBILE
    
    CHECK_MOBILE -->|No| CONTENTS_BLOCK
    CHECK_MOBILE -->|Yes| MOBILE_COURSE["svc_mob course check"]
    
    MOBILE_COURSE --> MOBILE_WIFI["svc_mob equals MOBILE_COURSE_WIFI = 1?"]
    MOBILE_WIFI -->|Yes| MOBILE_WIFI_A["Append: WiFi text"]
    MOBILE_WIFI -->|No| MOBILE_3G72M["svc_mob equals MOBILE_COURSE_3G_7_2M = 3?"]
    
    MOBILE_3G72M -->|Yes| MOBILE_72M_A["Append: 7.2M text + RC + selectmobileKiki"]
    MOBILE_3G72M -->|No| MOBILE_3G21M["svc_mob equals MOBILE_COURSE_3G_21M = 4?"]
    
    MOBILE_3G21M -->|Yes| MOBILE_21M_A["Append: 21M text + RC + selectmobileKiki"]
    MOBILE_3G21M -->|No| MOBILE_WIMAX["svc_mob equals MOBILE_COURSE_WIMAX = 5?"]
    
    MOBILE_WIMAX -->|Yes| MOBILE_WIMAX_A["Append: WiMAX text + RC + selectmobileKiki"]
    MOBILE_WIMAX -->|No| MOBILE_HHB72M["svc_mob equals MOBILE_COURSE_3G_HHB = 6?"]
    
    MOBILE_HHB72M -->|Yes| MOBILE_HHB72M_A["Append: 7.2M text + RC + selectmobileKiki"]
    MOBILE_HHB72M -->|No| MOBILE_HHB21M["svc_mob equals MOBILE_COURSE_3G_21M_HHB = 7?"]
    
    MOBILE_HHB21M -->|Yes| MOBILE_HHB21M_A["Append: 21M text + RC + selectmobileKiki"]
    MOBILE_HHB21M -->|No| MOBILE_END
    
    MOBILE_72M_A --> MOBILE_END
    MOBILE_21M_A --> MOBILE_END
    MOBILE_WIMAX_A --> MOBILE_END
    MOBILE_HHB72M_A --> MOBILE_END
    MOBILE_HHB21M_A --> MOBILE_END
    MOBILE_WIFI_A --> MOBILE_END
    
    MOBILE_END --> CONTENTS_BLOCK
    
    CONTENTS_BLOCK --> HAS_CONTENTS["contentsMskmList size > 0?"]
    HAS_CONTENTS -->|Yes| APPEND_CONTENTS["Append: 2x RC + Content service name"]
    APPEND_CONTENTS --> CONTENTS_LOOP["Loop: Append RC + bullet + contentsNm"]
    CONTENTS_LOOP --> SECUPAK_DTL["securityPackFlg true?"]
    HAS_CONTENTS -->|No| SECUPAK_DTL
    
    SECUPAK_DTL -->|Yes| SECUPAK_MANSION["mskmKsnSvc equals MSKM_KSN_SVC_MANSION AND mskmMnsType equals MSKM_MNS_TYPE_MANSION?"]
    SECUPAK_MANSION -->|Yes| SECUPAK_M["Append: 2x RC + Mansion Security Pack details"]
    SECUPAK_MANSION -->|No| SECUPAK_HOME["Append: 2x RC + Home Security Pack details"]
    
    SECUPAK_M --> FAMIPA_DETAIL["famipaFlg true?"]
    SECUPAK_HOME --> FAMIPA_DETAIL
    
    FAMIPA_DETAIL -->|Yes| FAMIPA_DTL["Append: 2x RC + Family Pack detail + RC + Non-mansion mail + RC + Router title + RC + Wireless detail"]
    FAMIPA_DETAIL -->|No| MULTI_ROUTER_M["TKN_ROUTER_MUSEN_MSKM 11 equals TKN_ROUTER_MUSEN_MSKM_MSKM?"]
    
    FAMIPA_DTL --> MULTI_ROUTER_M
    
    MULTI_ROUTER_M -->|Yes| MULTI_WIRELESS["Append: 2x RC + Router title + RC + Wireless detail"]
    MULTI_ROUTER_M -->|No| MULTI_WIRED_M["TKN_ROUTER_YUSEN_MSKM 11 equals TKN_ROUTER_YUSEN_MSKM_MSKM?"]
    
    MULTI_WIRELESS --> MESH_WIFI_M["MESH_WIFI_11 equals MESH_WIFI_MSKM?"]
    MULTI_WIRED_M -->|Yes| MULTI_WIRED_A["Append: 2x RC + Router title + RC + Wired detail"]
    MULTI_WIRED_M -->|No| MESH_WIFI_M
    
    MULTI_WIRED_A --> MESH_WIFI_M
    
    MESH_WIFI_M -->|Yes| MESH_DTL["Append: 2x RC + Mesh WiFi title + RC + Mesh detail"]
    MESH_WIFI_M -->|No| PLC_M["PLC_MSKM_11 equals PLC_MSKM_MSKM?"]
    
    MESH_DTL --> PLC_M
    
    PLC_M -->|Yes| PLC_DTL_A["Append: 2x RC + Wireless LAN title + RC + Wireless LAN detail"]
    PLC_M -->|No| END_RETURN["Return serviceName"]
    
    PLC_DTL_A --> END_RETURN
    
    END_RETURN --> END_NODE(["END"])
    
    END_NODE

```
