---
description: 특정 서비스(업체) 식별 방법
---

# Specific Service Identification

## 현재(2020-09-02\~)

* Boolean 타입의 프로퍼티를 정의해서 판단
* 프로퍼티 이름은 아래 예시처럼 업체 이름을 한글로 사용 (ex. Is\[업체명] )

{% tabs %}
{% tab title="좋은 표현" %}
```csharp
public partial class SA400102 : JERPBaseForm
{
    public bool Is비씨태창 { get { return SessionInfo.ServiceID.Equals("20170905004"); } }
    public bool Is남도하이텍 { get { return SessionInfo.ServiceID.Equals("20180807001"); } }
    
    protected override void OnLoad(EventArgs e)
    {
        if (Is비씨태창)
        {
            // ...
        }
        else if (Is남도하이텍)
        {
            // ...
        }
    }
    
    public override void NewClick()
    {
        InitControls(groupPanel);
        InitControls(grdDetail);
        
        if (Is비씨태창) 
            checkEditEx1.EditValue = "Y";
            
        // ...
    }
}

```
{% endtab %}

{% tab title="나쁜 표현" %}
```csharp
public partial class SA400102 : JERPBaseForm
{
    bool bctcChk_ = false; //비씨태창 구분용
    bool ndhtChk_ = false; //남도 구분용
    
    protected override void OnLoad(EventArgs e)
    {
        if (SessionInfo.ServiceID.Equals("20170905004")) // 비씨태창
        {
            bctcChk_ = true;
            // ...
        }
        else if (SessionInfo.ServiceID.Equals("20180807001")) // 남도하이텍
        {
            ndhtChk_ = true;
        }
    }
    
    public override void NewClick()
    {
        InitControls(groupPanel);
        InitControls(grdDetail);
        
        // 비씨태창일때
        if (bctcChk_) 
            checkEditEx1.EditValue = "Y";
            
        // ...
    }
}
```
{% endtab %}
{% endtabs %}



### 프로시저에서

* Service ID 값을 프로시저의 파라미터(@p\_service\_id)로 전달 받고 스칼라 변수(@v\_service\_alias)를 정의하여 업체 이름을 할당해서 판단

```sql
ALTER PROCEDURE [dbo].[P_MA_A2000_S] (
    @p_work_type         varchar(10) = 'Q',
    @p_service_id        varchar(20) = '',
    
    ...
    
    @p_error_code			VARCHAR(100) = ''	OUTPUT,
    @p_row_count			INT = 0				    OUTPUT,
    @p_error_note			NVARCHAR(100) = ''  OUTPUT,
    @p_return_str			NVARCHAR(500) = ''  OUTPUT,
    @p_error_msg			NVARCHAR(1000) = '' OUTPUT,
    @p_error_state		VARCHAR(500) = ''   OUTPUT,
    @p_error_proc			NVARCHAR(200) = ''  OUTPUT 
)
/*[!WITH ENCRYPTION]*/
AS 
SET NOCOUNT ON  
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

DECLARE @v_service_alias nvarchar(200) = ''

BEGIN
    BEGIN TRY
    
        IF @p_service_id = '20170905004'
            SET @v_service_alias = '비씨엔씨'
        ELSE IF @p_service_id = '20180807001'
            SET @v_service_alias = '남도하이텍'
    
        ...
        
        -------------------------------------------------------
        IF @p_work_type = 'N'
        BEGIN
            ...
        END
        -------------------------------------------------------
        
        
    END TRY
    BEGIN CATCH
        ...
    END CATCH
END
```



## \~2020-09-02 까지

* SessionInfo.ServiceId 멤버의 값으로 판단

```csharp
protected override void OnLoad(EventArgs e)
{
    base.OnLoad(e);
    
    // 대동테크
    if (SessionInfo.ServiceId.Equals("20191106002"))
    {
        // ...
    }
    // GST
    else if (SessionInfo.ServiceId.Equals("20191114001"))
    {
        // ...
    }
}
```



## 잘못된 방법

* comCodeMaster 테이블의 group\_code 필드에 'SYS041' 코드로 등록된 sub\_code 필드의 값으로 판단

```csharp
protected override void OnLoad(EventArgs e)
{
    base.OnLoad(e);
    
    // ...
    
    // 블루인더스 구분
    ResultSet rs = CommonExecuteSQL(@"  SELECT *  FROM ComCodeMaster WHERE group_code='SYS041' AND sub_code ='BLUEIND' AND use_yn ='Y'");
    if (rs.ResultDataSet.Tables[0].Rows.Count > 0)
    {
        colp_qty.Caption = "수량";
        b_blue = true;
    }
    
    rs = CommonExecuteSQL(@"  SELECT *  FROM ComCodeMaster WHERE group_code='SYS041' AND sub_code ='HAUTO' AND use_yn ='Y'");
    if (rs.ResultDataSet.Tables[0].Rows.Count > 0)
    {
        grpDetail.CustomHeaderButtons[6].Properties.Visible = true;
        colordkey.Visible = true;
    }
    
    rs = CommonExecuteSQL(@"  SELECT *  FROM ComCodeMaster WHERE group_code='SYS041' AND sub_code ='DAETECK' AND use_yn ='Y'");
    if (rs.ResultDataSet.Tables[0].Rows.Count > 0)
    {
        str_DAETECK = "Y";
        colp_qty.Visible = false;
        colp_qtyunit.Visible = false;
        colp_itemnm.Visible = false;
        colspec.Visible = false;
        coldlramt.Visible = false;
        colpursiz.Width = 180;
        colinsiz.Width = 180;
    } 
    // ...
}
```



