using System.IO;
using System.Net;
using System.Data;
using System.Net.NetworkInformation;
using Cosmos.BaseFrame;
using Cosmos.UserFrame;
using Cosmos.ServiceProvider;
using Cosmos.Common;
using Cosmos.CommonManager;
using System;
/*-----------------------------------------------------------------------------------------------*/
// 설 명 : 기본 마스터 로딩 처리
// 작 성 자 :
// 변경 이력 :
/*-----------------------------------------------------------------------------------------------*/
namespace Cosmos.Service
{
class LoadMasterInfo : IServiceUs
{
private SManager sManager = new SManager(); // 이 객체를 통해 업무 Service 호출
private StateServer StateObject = (StateServer)StateServer.GetInstance(); // StateObject : StateServer Object (객체)
private PosStatus m_cPosStatus; // 기본정보 참조
private TranStatus m_cTrnStatus; // 거래정보 참조
private DeviceStatus m_cDevStatus; // 장치정보 참조
private IDataProcessUs m_cDataSrv = null; // 거래데이터 합계금액 계산 및 관리
private IDataCommonUs m_cDataCommSrv = null; // 거래 공통 함수 관리
private IServiceUs m_cSaveCfgSrv = null; // 설정파일 저장
private IServiceUs m_cReadCfgSrv = null; // 설정파일 읽기
private IMasterUs m_cMstService = null; // 마스터 인터페이스
private IICReaderUs m_cIcReader = null; // IC Reader 관리
private ISignPadUs m_cSignPad = null; // Signpad 관리
public LoadMasterInfo()
{
m_cPosStatus = (PosStatus)StateObject.POS; // POS 기본정보
m_cTrnStatus = (TranStatus)StateObject.TRAN; // POS 거래정보
m_cDevStatus = (DeviceStatus)StateObject.DEVICE; // POS 장치정보
m_cDataSrv = (IDataProcessUs)sManager.InitServiceInstance(ServiceLists.ASV_DATA_PROCESS.DLL, ServiceLists.ASV_DATA_PROCESS.DATA_SERVICE);
m_cDataCommSrv = (IDataCommonUs)sManager.InitServiceInstance(ServiceLists.ASV_DATA_PROCESS.DLL, ServiceLists.ASV_DATA_PROCESS.DATA_COMMON);
m_cSaveCfgSrv = (IServiceUs)sManager.InitServiceInstance(ServiceLists.BSV_OPEN_CLOSE.DLL, ServiceLists.BSV_OPEN_CLOSE.SAVE_CONFIGINFO);
m_cReadCfgSrv = (IServiceUs)sManager.InitServiceInstance(ServiceLists.BSV_OPEN_CLOSE.DLL, ServiceLists.BSV_OPEN_CLOSE.READ_CONFIGINFO);
m_cMstService = (IMasterUs)sManager.InitServiceInstance(ServiceLists.ASV_MASTER.DLL, ServiceLists.ASV_MASTER.POS_MASTER);
m_cIcReader = (IICReaderUs)sManager.InitServiceInstance(ServiceLists.AGENT_OLEDEVICE.DLL, ServiceLists.AGENT_OLEDEVICE.DEVICE_ICREADER);
m_cSignPad = (ISignPadUs)sManager.InitServiceInstance(ServiceLists.AGENT_OLEDEVICE.DLL, ServiceLists.AGENT_OLEDEVICE.DEVICE_SIGNPAD);
}
///
/// 프로그램 시작(환경파일로딩, 기본마스터 로딩, 서비스 시작)
///
///
///
public string Execute(string[] aParam)
{
string sRet = UserCom.RST_ERR;
try
{
if (aParam.Length == 0)
{
// POS 메시지 마스터 로딩
LoadMessageMaster();
// 점포마스터 로딩
LoadStoreMaster();
// 스크린 마스터 로딩
LoadScreenMaster();
// POS마스터 로딩
LoadPosMaster();
//// 외식후불 주문(서브)포스 일때 메인포스 데이터베이스 IP 설정
//SetMainPosInfo();
// 문화마스터 로딩
LoadCultureMaster();
// POS 옵션 마스터 로딩
LoadOptionMaster();
// 할인 결제 마스터 로딩
LoadPayDcMaster();
// 담당자 권한 마스터 로딩
LoadPicAuthMaster();
// 최종거래번호 설정
LoadLastTradeNo();
// 현금 알람 금액
LoadCashAlarm();
// 외부 I/F 정보 조회
LoadJoinStorInfo();
//#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 start, 20180510
//적용시 주석 해제
LoadSendCpnMstInfo();
//#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 end, 20180510
}
else if (aParam.Length > 0 && aParam[0] == "BASIC_MST_LOAD")
{
// POS 메시지 마스터 로딩
LoadMessageMaster();
// 점포마스터 로딩
LoadStoreMaster();
// POS마스터 로딩
LoadPosMaster();
// POS 옵션 마스터 로딩
LoadOptionMaster();
}
else if (aParam.Length > 0 && aParam[0] == "CHANGE_MAINPOS_DB")
{
// 외식후불 주문(서브)포스 일때 메인포스 데이터베이스 IP 설정
SetMainPosInfo();
}
else
{
// POS 메시지 마스터 로딩
LoadMessageMaster();
}
// IC 리더기 초기화
m_cIcReader.InitializeDevice();
// PosDevice.INI --> SpcnPosCfg.ini
m_cSignPad.UpdateIniConfig();
sRet = UserCom.RST_OK;
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return sRet;
}
///
/// 점포 마스터 로딩
///
///
public string LoadStoreMaster()
{
string sQuery = "";
string sRet = UserCom.RST_ERR;
try
{
// 점포 마스터 로딩
sQuery = "SELECT * FROM POSMST..MST_STOR WHERE CMP_CD = '" + m_cPosStatus.Base.CmpCd + "' AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "'";
sQuery += "AND USE_YN = '" + PosConst.MST_USE_YN.YES + "'";
DataTable dtDataInfo = m_cMstService.Select(new string[] { sQuery });
if (dtDataInfo != null && dtDataInfo.Rows.Count > 0)
{
PosMstManager.SetMstStore(dtDataInfo.Rows[0]); // 점포마스터 설정
DataRow dr = dtDataInfo.Rows[0];
m_cPosStatus.Mst.StorOwnName = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.STOR_OWN_NM);
m_cPosStatus.Mst.StorName = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.STORNM);
m_cPosStatus.Mst.StorAddr = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.STOR_ADDR);
m_cPosStatus.Mst.StorBizPsnNo = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.BIZ_PSN_NO);
m_cPosStatus.Mst.StorTelNo = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.TELNO);
m_cPosStatus.Mst.VatRudDwLoc = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.VAT_RUD_DW_LOC);
m_cPosStatus.Mst.VatRudDwLocMethd = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.VAT_RUD_DW_METHD);
m_cPosStatus.Mst.DcRudDwLoc = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.DC_RUD_DW_LOC);
m_cPosStatus.Mst.DcRudDwLocMethd = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.DC_RUD_DW_METHD);
m_cPosStatus.Mst.ItemRudDwLoc = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.ITEM_RUD_DW_LOC);
m_cPosStatus.Mst.ItemRudDwLocMethd = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.DC_RUD_DW_METHD);
m_cPosStatus.Mst.SeriveFreeDiv = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.SVC_FEE_DIV);
m_cPosStatus.Mst.SeriveFreeApplyDiv = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.SVC_FEE_APPLYTRGT_DIV);
m_cPosStatus.Mst.SeriveFreeTaxAmtDiv = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.SVC_FEE_TAX_AMT_APPLYDIV);
m_cPosStatus.Mst.DrtFrcsDiv = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.DRT_FRCS_DIV);
m_cPosStatus.Mst.TaxAmtApplydiv = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.TAX_AMT_APPLY_DIV);
m_cPosStatus.Mst.TaxAmtIncludeYn = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.TAX_AMT_INCLUDE_YN);
m_cPosStatus.Mst.TaxAmtCalcMethd = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.TAX_AMT_CALC_METHD);
m_cPosStatus.Mst.BasicTakeInTaxCd = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.BASIC_TAKE_IN_TAX_CD);
m_cPosStatus.Mst.BasicTakeOutTaxCd = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.BASIC_TAKE_OUT_TAX_CD);
// 마스터의 브랜드코드와 문화코드 필드가 null 이면 ini 값으로 정의(2017/03/23)
//m_cPosStatus.Mst.MltCultCd = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.MLT_CULT_CD);
m_cPosStatus.Mst.MltCultCd = CmUtil.IsNull(CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.MLT_CULT_CD), m_cPosStatus.Base.CultureID);
m_cPosStatus.Mst.HpyOrdAgreeYn = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.HPYORD_AGREEYN);
m_cPosStatus.Mst.GiftSaleYn = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.GIF_SALE_YN);
m_cPosStatus.Mst.BillMsgDupPrmtYn = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.BILL_MSG_DUP_PRMT_YN);
m_cPosStatus.Mst.BillMsgDupPrtRank = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.BILL_MSG_PRT_RANK);
m_cPosStatus.Mst.ReservSaleYn = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.RESERV_SALE_YN);
m_cPosStatus.Mst.ComplexShopType = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.COMPLEX_SHOP_TYPE);
m_cPosStatus.Mst.TestStorYn = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.TEST_STOR_YN);
m_cPosStatus.Mst.ETC_IF_DIV = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.ETC_IF_DIV);
m_cPosStatus.Mst.ETC_IF_FTP_IP = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.ETC_IF_FTP_IP);
m_cPosStatus.Mst.ETC_IF_FTP_PORT = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.ETC_IF_FTP_PORT);
m_cPosStatus.Mst.ETC_IF_FTP_ID = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.ETC_IF_FTP_ID);
m_cPosStatus.Mst.ETC_IF_FTP_PW = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.ETC_IF_FTP_PW);
m_cPosStatus.Mst.ETC_IF_FTP_PASSIVE = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.ETC_IF_FTP_PASSIVE);
m_cPosStatus.Mst.ETC_IF_FTP_PATH = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.ETC_IF_FTP_PATH);
m_cPosStatus.Mst.ETC_IF_URL1 = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.ETC_IF_URL1);
m_cPosStatus.Mst.ETC_IF_URL2 = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.ETC_IF_URL2);
m_cPosStatus.Mst.ETC_IF_POS_DIV = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.ETC_IF_POS_DIV);
m_cPosStatus.Mst.CdpUseYn = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.CDP_USE_YN);
m_cPosStatus.Mst.CdpMessage = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.CDP_MSG);
m_cPosStatus.Mst.LoanLawCertfYn = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.LOAN_LAW_CERTF_YN);
m_cPosStatus.Mst.PayRudDwLocMethd = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.DC_RUD_DW_METHD);
//m_cPosStatus.Mst.PayRudDwLoc = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.DC_RUD_DW_LOC);
m_cPosStatus.Mst.PayRudDwLoc = "2";//CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.DC_RUD_DW_LOC);
// 브랜드코드를 INI로 관리(2016/10/28)
// 마스터의 브랜드코드와 문화코드 필드가 null 이면 ini 값으로 정의(2017/03/23)
//m_cPosStatus.Base.BrandCd = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.BRAND_CD);
m_cPosStatus.Base.BrandCd = CmUtil.IsNull(CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.BRAND_CD), m_cPosStatus.Base.BrandCd);
m_cPosStatus.Base.CultureID = m_cPosStatus.Mst.MltCultCd;
//// 도로공사, 공항공사 관리코드를 DB로 관리(2017/01/11)
//m_cPosStatus.Base.OutSDVendConNo = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.OUT_SD_VEND_CON_NO);
//m_cPosStatus.Base.OutSDVendCrnrCd = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.OUT_SD_VEND_CRNR_CD);
// 해피버즈 사용 여부
m_cPosStatus.Mst.HappyBuzzUseYn = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.HAPPY_BUZZ_USE_YN);
// 브라우저 키
m_cPosStatus.Mst.BrowserKey = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.BROWSER_KEY);
if (m_cPosStatus.Mst.BrowserKey == "") m_cPosStatus.Mst.BrowserKey = "SPCPos";
// 회사 구분
m_cPosStatus.Mst.CorpDiv = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.CORP_DIV).Trim().ToUpper();
// 국가 구분
m_cPosStatus.Mst.CntryDiv = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.CNTRY_DIV).Trim().ToUpper();
// 해피포인트 적립율
m_cPosStatus.Mst.HpyPntAccumRate = CmUtil.GetDataRowDouble(dr, PosMst.MST_STORE.DATA.HPY_PNT_ACCUMRATE);
//#15274 영수증 문구 추가 요청 start
m_cPosStatus.Mst.CompNm = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.COMP_NM);
//#15274 영수증 문구 추가 요청 end
// INI 파일 설정(마스터 데이터를 INI에 저장)
CmMessage m_PosConfig = CmMessage.MakeMessageFromFile(BaseCom.NxIniPath + PosConst.INI_FILE_NAME.PosConfig);
m_PosConfig.GetMessage("POS").MakeMessageOverWrite("BrandCd", m_cPosStatus.Base.BrandCd);
// 원격제어 관리를 위한 필드 추가(20170303-CHOCY)
m_PosConfig.GetMessage("STORE").MakeMessageOverWrite("Name", m_cPosStatus.Mst.StorName);
m_PosConfig.GetMessage("STORE").MakeMessageOverWrite("Address", m_cPosStatus.Mst.StorAddr);
m_PosConfig.GetMessage("STORE").MakeMessageOverWrite("Tel", m_cPosStatus.Mst.StorTelNo);
m_PosConfig.GetMessage("GLOBAL").MakeMessageOverWrite("CultureID", m_cPosStatus.Base.CultureID);
m_PosConfig.MakeFileFromMessage(BaseCom.NxIniPath + PosConst.INI_FILE_NAME.PosConfig);
UserLog.WriteLogFile(UserCom.LOG_IOS, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
, "PayRudDwLoc =>" +m_cPosStatus.Mst.PayRudDwLoc);
}
else
{
PosMstManager.SetMstStore(null);
}
sRet = UserCom.RST_OK;
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return sRet;
}
///
/// 스크린 마스터 로딩
///
///
public string LoadScreenMaster()
{
string sQuery = "";
string sRet = UserCom.RST_ERR;
try
{
// 스크린 마스터 로딩
sQuery = "SELECT * FROM POSMST..MST_ITEM_KEY_COMPNT WHERE CMP_CD = '" + m_cPosStatus.Base.CmpCd + "' AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "'";
sQuery += " AND USE_YN = '" + PosConst.MST_USE_YN.YES + "'";
DataTable dtDataInfo = m_cMstService.Select(new string[] { sQuery });
if (dtDataInfo != null && dtDataInfo.Rows.Count > 0)
{
foreach (DataRow dr in dtDataInfo.Rows)
{
if (m_cPosStatus.Base.StoreNo == CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY_COMPNT.DATA.SUB_STOR_CD))
{
PosMstManager.SetMstScreen(dr); // 스크린 마스터 설정
m_cPosStatus.ScnMst.PosScrnType = CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY_COMPNT.DATA.POS_SCRN_TYPE);
m_cPosStatus.ScnMst.FuncScrollUseYn = CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY_COMPNT.DATA.FUNC_SCROLL_USE_YN);
m_cPosStatus.ScnMst.ThemeColor = CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY_COMPNT.DATA.THEME_COLOR);
m_cPosStatus.ScnMst.LoginImg = CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY_COMPNT.DATA.LOGIN_IMG);
m_cPosStatus.ScnMst.BrandCiImg = CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY_COMPNT.DATA.BRAND_CI_IMG);
m_cPosStatus.ScnMst.MainImg = CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY_COMPNT.DATA.MAIN_IMG);
m_cPosStatus.ScnMst.WaitImg = CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY_COMPNT.DATA.WAIT_IMG);
m_cPosStatus.ScnMst.BookmkUseYn = CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY_COMPNT.DATA.BOOKMK_USE_YN);
m_cPosStatus.ScnMst.BookmkItemKeyArray = CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY_COMPNT.DATA.BOOKMK_ITEM_KEY_ARRAY);
m_cPosStatus.ScnMst.HqItemKeyLayout = CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY_COMPNT.DATA.HQ_ITEMKEY_LAYOUT);
m_cPosStatus.ScnMst.ShopItemkeyLayout = CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY_COMPNT.DATA.SHOP_ITEMKEY_LAYOUT);
m_cPosStatus.ScnMst.LClssKeyBasicColor = CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY_COMPNT.DATA.L_CLSS_KEY_BASIC_COLOR);
m_cPosStatus.ScnMst.LClssKeyBasicFontColor = CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY_COMPNT.DATA.L_CLSS_KEY_BASIC_FONT_COLOR);
m_cPosStatus.ScnMst.LClssKeySelColor = CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY_COMPNT.DATA.L_CLSS_KEY_SEL_COLOR);
m_cPosStatus.ScnMst.LClssKeySelFontColor = CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY_COMPNT.DATA.L_CLSS_KEY_SEL_FONT_COLOR);
m_cPosStatus.ScnMst.ItemKeyBasicColor = CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY_COMPNT.DATA.ITEM_KEY_BASIC_COLOR);
m_cPosStatus.ScnMst.ItemKeyBasicFontColor = CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY_COMPNT.DATA.ITEM_KEY_BASIC_FONT_COLOR);
m_cPosStatus.ScnMst.ItemKeySelColor = CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY_COMPNT.DATA.ITEM_KEY_SEL_COLOR);
m_cPosStatus.ScnMst.ItemKeySelFontColor = CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY_COMPNT.DATA.ITEM_KEY_SEL_FONT_COLOR);
m_cPosStatus.ScnMst.ItemKeySelFontColor = CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY_COMPNT.DATA.ITEM_KEY_SEL_FONT_COLOR);
m_cPosStatus.ScnMst.FixItemClssCnt = CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY_COMPNT.DATA.FIX_ITEM_CLSS_CNT);
m_cPosStatus.Base.DesignType = m_cPosStatus.ScnMst.PosScrnType;
m_cPosStatus.Base.ThemeType = m_cPosStatus.ScnMst.ThemeColor;
break;
}
}
}
else
{
PosMstManager.SetMstScreen(null);
}
sRet = UserCom.RST_OK;
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return sRet;
}
///
/// POS 마스터 로딩
///
///
public string LoadPosMaster()
{
string sQuery = "";
string sRet = UserCom.RST_ERR;
try
{
// POS 마스터 로딩
//sQuery = "SELECT * FROM POSMST..MST_POS WHERE CMP_CD = '" + m_cPosStatus.Base.CmpCd + "' AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "' AND POS_NO = '" + m_cPosStatus.Base.PosNo + "'";
//sQuery += " AND USE_YN = '" + PosConst.MST_USE_YN.YES + "'";
// 2017.02.03, 복합매장 서브매장코드 반영
var fmt = "SELECT A.*, B.COMPLEX_SHOP_STOR_NM AS SUB_STOR_NM \n"
+ " FROM MST_POS A LEFT JOIN MST_COMPLEX_SHOP_STOR B \n"
+ " ON A.CMP_CD = B.CMP_CD AND A.STOR_CD = B.STOR_CD AND A.SUB_STOR_CD = B.COMPLEX_SHOP_STOR_CD \n"
+ " AND A.USE_YN = '{3}' AND (B.USE_YN = '{3}' OR B.USE_YN IS NULL) \n"
+ " WHERE A.CMP_CD = '{0}' AND A.STOR_CD = '{1}' AND A.POS_NO = '{2}' ";
sQuery = string.Format(fmt, m_cPosStatus.Base.CmpCd, m_cPosStatus.Base.StoreNo, m_cPosStatus.Base.PosNo, PosConst.MST_USE_YN.YES);
DataTable dtDataInfo = m_cMstService.Select(new string[] { sQuery });
if (dtDataInfo != null && dtDataInfo.Rows.Count > 0)
{
PosMstManager.SetMstPos(dtDataInfo.Rows[0]); // POS 마스터 설정
DataRow dr = dtDataInfo.Rows[0];
// POS 구분 설정(0:선불, 1:후불)
m_cPosStatus.Base.PosType = CmUtil.GetDataRowStr(dr, PosMst.MST_POS.DATA.POS_TYPE);
// 메인POS 구분 설정(0:서브POS, 1:메인POS)
m_cPosStatus.Base.PosCommunicationType = CmUtil.GetDataRowStr(dr, PosMst.MST_POS.DATA.MAIN_YN);
if (m_cPosStatus.Base.PosType == PosConst.POS_TYPE.PRE_PAYMENT) m_cPosStatus.Base.PosCommunicationType = PosConst.MAIN_POS_DIV.MAIN_POS;
// 여전법 인증 버전
//m_cPosStatus.Base.Auth_POS_SW_Ver = CmUtil.GetDataRowStr(dr, PosMst.MST_POS.DATA.CERTF_VER);
// DB관리에서 하드코딩으로 변경 - 문성진대리 요청 2016.11.08
// 차후 POS 인증버전이 여러개일 경우 해당 부분 수정하시면 됩니다.
//m_cPosStatus.Base.Auth_POS_SW_Ver = "#####SPCPOS11101";
//m_cPosStatus.Base.Auth_POS_SW_Ver = "###SPCPCPOS11101";
m_cPosStatus.Base.Auth_POS_SW_Ver = "###SPCCLHS011101";
// 2017.02.03, 메인포스번호 초기화
// m_cPosStatus.Base.MainPosNo = string.Empty;
// 2017.02.03, 서브매장정보
m_cPosStatus.Base.SubShopNo = CmUtil.GetDataRowStr(dr, PosMst.MST_POS.DATA.SUB_STOR_CD).Trim();
m_cPosStatus.Base.SubShopNm = CmUtil.GetDataRowStr(dr, PosMst.MST_POS.DATA.SUB_STOR_NM).Trim();
// INI 파일 설정(마스터 데이터를 INI에 저장)
// 마스터에서 가져 오기 때문에 INI 저장 안 함(2017.03.24)
//CmMessage m_PosConfig = CmMessage.MakeMessageFromFile(BaseCom.NxIniPath + PosConst.INI_FILE_NAME.PosConfig);
//m_PosConfig.GetMessage("POS").MakeMessageOverWrite("PosType", m_cPosStatus.Base.PosType);
//m_PosConfig.GetMessage("POS").MakeMessageOverWrite("PosCommunicationType", m_cPosStatus.Base.PosCommunicationType);
//m_PosConfig.MakeFileFromMessage(BaseCom.NxIniPath + PosConst.INI_FILE_NAME.PosConfig);
}
else
{
PosMstManager.SetMstPos(null);
}
sRet = UserCom.RST_OK;
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return sRet;
}
///
/// 외식후불 주문(서브)포스 일때 메인포스 데이터베이스 IP 설정
///
///
private bool SetMainPosInfo()
{
try
{
if (m_cPosStatus.Base.PosType != PosConst.POS_TYPE.DEFERRED_PAYMENT) return true;
// 복합매장이고 후불일때는 복합매장구성점포(서브매장코드)가 필수이다.
if (m_cPosStatus.Mst.ComplexShopType == "2")
{
if (string.IsNullOrWhiteSpace(m_cPosStatus.Base.SubShopNo) || string.IsNullOrWhiteSpace(m_cPosStatus.Base.SubShopNm))
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0632);
return true;
}
}
// 메인포스번호 초기화
m_cPosStatus.Base.MainPosNo = m_cPosStatus.Base.PosNo;
if (m_cPosStatus.Base.PosCommunicationType != PosConst.MAIN_POS_DIV.SUB_POS) return true;
var fmt = string.Empty;
var sql = string.Empty;
if (m_cPosStatus.Mst.ComplexShopType == "2")
{
// 복합매장
//#20171026 복합매장 메인포스가 아닌 주문포스인 경우 자기POS번호에 설정된 IP로 메인포스 IP 설정 start
//기존
/*
fmt = "SELECT TOP 1 * FROM POSMST..MST_POS WHERE CMP_CD = '{0}' AND STOR_CD = '{1}' AND POS_TYPE = '{2}' AND MAIN_YN = '{3}' AND USE_YN = '{4}' AND SUB_STOR_CD = '{5}' ORDER BY POS_NO ";
sql = string.Format(fmt, m_cPosStatus.Base.CmpCd
, m_cPosStatus.Base.StoreNo
, PosConst.POS_TYPE.DEFERRED_PAYMENT
, PosConst.MAIN_POS_DIV.MAIN_POS
, PosConst.MST_USE_YN.YES
, m_cPosStatus.Base.SubShopNo
);
*/
//변경
fmt = "SELECT B.POS_NO, A.POS_IP \n"
+ " FROM POSMST..MST_POS A LEFT OUTER JOIN POSMST..MST_POS B ON A.CMP_CD = B.CMP_CD AND A.STOR_CD = B.STOR_CD AND A.POS_IP = B.POS_IP \n"
+ " WHERE A.CMP_CD = '{0}' AND A.STOR_CD = '{1}' AND A.POS_TYPE = '{2}' AND A.USE_YN = '{3}' AND A.POS_NO = '{4}' \n"
+ " AND B.MAIN_YN = '1' \n"
+ " AND B.USE_YN = '1'";
sql = string.Format(fmt, m_cPosStatus.Base.CmpCd
, m_cPosStatus.Base.StoreNo
, PosConst.POS_TYPE.DEFERRED_PAYMENT
, PosConst.MST_USE_YN.YES
, m_cPosStatus.Base.PosNo
);
//#20171026 복합매장 메인포스가 아닌 주문포스인 경우 자기POS번호에 설정된 IP로 메인포스 IP 설정 end
}
else
{
// 단독매장
fmt = "SELECT TOP 1 * FROM POSMST..MST_POS WHERE CMP_CD = '{0}' AND STOR_CD = '{1}' AND POS_TYPE = '{2}' AND MAIN_YN = '{3}' AND USE_YN = '{4}' ORDER BY POS_NO ";
sql = string.Format(fmt, m_cPosStatus.Base.CmpCd
, m_cPosStatus.Base.StoreNo
, PosConst.POS_TYPE.DEFERRED_PAYMENT
, PosConst.MAIN_POS_DIV.MAIN_POS
, PosConst.MST_USE_YN.YES
);
}
DataTable dtData = m_cMstService.Select(new string[] { sql });
if (dtData == null || dtData.Rows.Count == 0)
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0379);
return false;
}
var dr = dtData.Rows[0];
var mainIP = CmUtil.GetDataRowStr(dr, PosMst.MST_POS.DATA.POS_IP).Trim();
if (string.IsNullOrWhiteSpace(mainIP))
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0379);
return false;
}
// 메인포스 데이터베이스 IP 설정
var tmpDbSource = m_cPosStatus.Base.LocalDbSource;
var arg = mainIP.Split('\\');
if (arg.Length > 1)
{
m_cPosStatus.Base.LocalDbSource = mainIP.Trim();
}
else
{
m_cPosStatus.Base.LocalDbSource = mainIP.Trim() + @"\SPCPOS";
}
// 후불 메인POS 번호
m_cPosStatus.Base.MainPosNo = CmUtil.GetDataRowStr(dr, PosMst.MST_POS.DATA.POS_NO).Trim();
// 변경로그
var log = string.Empty;
if (tmpDbSource != m_cPosStatus.Base.LocalDbSource)
{
log = string.Format("Change Database Connection Infomatoin [LocalDatabase:{0}] => [MainPos Database:{1}]"
, tmpDbSource, m_cPosStatus.Base.LocalDbSource);
}
else
{
log = string.Format("Database Connection Infomatoin [LocalDatabase:{0}]]", m_cPosStatus.Base.LocalDbSource);
}
UserLog.WriteLogFile(UserCom.LOG_IOS, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." +
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", log);
// Del, 2017.03.17, 변경된 메인POS DB 정보 저장 안함.
// INI 파일 설정(마스터 데이터를 INI에 저장)
//CmMessage m_PosConfig = CmMessage.MakeMessageFromFile(BaseCom.NxIniPath + PosConst.INI_FILE_NAME.PosConfig);
//m_PosConfig.GetMessage("DATABASE").MakeMessageOverWrite("LocalSource", m_cPosStatus.Base.LocalDbSource);
//m_PosConfig.MakeFileFromMessage(BaseCom.NxIniPath + PosConst.INI_FILE_NAME.PosConfig);
return true;
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
return false;
}
}
///
/// 메시지 마스터 로딩
///
///
public string LoadMessageMaster()
{
string sQuery = "";
string sRet = UserCom.RST_ERR;
try
{
// POS 메시지 마스터 로딩
sQuery = "SELECT * FROM POSMST..MST_MSG WHERE CMP_CD = '" + m_cPosStatus.Base.CmpCd + "' AND LANG_CD = '" + m_cPosStatus.Base.Country + "'";
sQuery += " AND USE_YN = '" + PosConst.MST_USE_YN.YES + "'";
DataTable dtMessageData = m_cMstService.Select(new string[] { sQuery });
MessageManager.Clear();
if (dtMessageData != null && dtMessageData.Rows.Count > 0)
{
//POS 메시지 마스터 --> 메시지매니저 저장
foreach (DataRow dr in dtMessageData.Rows)
{
MessageManager.SetMessage(
CmUtil.GetDataRowStr(dr, PosMst.MST_MSG.DATA.MSG_TYPE),
CmUtil.GetDataRowStr(dr, PosMst.MST_MSG.DATA.MSG_NO),
CmUtil.GetDataRowStr(dr, PosMst.MST_MSG.DATA.MSG1),
CmUtil.GetDataRowStr(dr, PosMst.MST_MSG.DATA.MSG2),
CmUtil.GetDataRowStr(dr, PosMst.MST_MSG.DATA.MSG3),
CmUtil.GetDataRowStr(dr, PosMst.MST_MSG.DATA.MSG4),
CmUtil.GetDataRowStr(dr, PosMst.MST_MSG.DATA.MSG5));
}
sRet = UserCom.RST_OK;
}
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return sRet;
}
///
/// 옵션 마스터 로딩
///
///
public string LoadOptionMaster()
{
string sQuery = "";
string sRet = UserCom.RST_ERR;
try
{
// POS 옵션 마스터 로딩
sQuery = "SELECT * FROM POSMST..MST_POS_OPTN WHERE CMP_CD = '" + m_cPosStatus.Base.CmpCd + "' AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "' AND (POS_NO = '00' OR POS_NO = '" + m_cPosStatus.Base.PosNo + "')";
sQuery += " AND USE_YN = '" + PosConst.MST_USE_YN.YES + "'";
sQuery += " ORDER BY POS_NO ASC ";
DataTable dtOptionData = m_cMstService.Select(new string[] { sQuery });
PosMstManager.OptionClear();
if (dtOptionData != null && dtOptionData.Rows.Count > 0)
{
//POS 옵션 마스터
foreach (DataRow dr in dtOptionData.Rows)
{
PosMstManager.SetPosOption(
CmUtil.GetDataRowStr(dr, PosMst.MST_POS_OPTN.DATA.OPTN_CD),
CmUtil.GetDataRowStr(dr, PosMst.MST_POS_OPTN.DATA.OPTN_VAL),
CmUtil.GetDataRowStr(dr, PosMst.MST_POS_OPTN.DATA.OPTN_NM),
CmUtil.GetDataRowStr(dr, PosMst.MST_POS_OPTN.DATA.OPTN_EXPLN));
}
//sRet = UserCom.RST_OK;
}
// 2017.02.03, 후불 주문POS의 특정옵션(주방출력관련)은 메인포스 옵션 우선
// 2017.03.16, 익일개점여부 는 메인포스 옵션 우선
if (m_cPosStatus.Base.PosType == PosConst.POS_TYPE.DEFERRED_PAYMENT &&
m_cPosStatus.Base.PosCommunicationType == PosConst.MAIN_POS_DIV.SUB_POS)
{
// 메인옵션 대상
// OPT425 주방프린터 자동출력 사용여부 0:자동 1:수동(프린터선택) 2:수동(상품선택)
// OPT506 주방프린터 사용 0 : 사용 안 함/ 1 : 사용 함
// OPT302 익일개점허용여부 0: 미사용, 1:사용
sQuery = "SELECT * FROM POSMST..MST_POS_OPTN \n"
+ " WHERE CMP_CD = '{0}' AND STOR_CD = '{1}' AND POS_NO = '{2}' AND USE_YN = '{3}' \n"
+ " AND OPTN_CD IN ('OPT506','OPT425', 'OPT302') ";
sQuery = string.Format(sQuery, m_cPosStatus.Base.CmpCd
, m_cPosStatus.Base.StoreNo
, m_cPosStatus.Base.MainPosNo
, PosConst.MST_USE_YN.YES
);
dtOptionData = m_cMstService.Select(new string[] { sQuery });
if (dtOptionData != null && dtOptionData.Rows.Count > 0)
{
//POS 옵션 마스터
foreach (DataRow dr in dtOptionData.Rows)
{
PosMstManager.SetPosOption(
CmUtil.GetDataRowStr(dr, PosMst.MST_POS_OPTN.DATA.OPTN_CD),
CmUtil.GetDataRowStr(dr, PosMst.MST_POS_OPTN.DATA.OPTN_VAL),
CmUtil.GetDataRowStr(dr, PosMst.MST_POS_OPTN.DATA.OPTN_NM),
CmUtil.GetDataRowStr(dr, PosMst.MST_POS_OPTN.DATA.OPTN_EXPLN));
}
}
}
sRet = UserCom.RST_OK;
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return sRet;
}
///
/// 문화 마스터 로딩
///
///
public string LoadCultureMaster()
{
string sQuery = "";
string sRet = UserCom.RST_ERR;
try
{
// 문화 마스터 로딩
sQuery = "SELECT * FROM POSMST..MST_CULTURE WHERE CMP_CD = '" + m_cPosStatus.Base.CmpCd + "' AND CULTURE_CD = '" + m_cPosStatus.Base.CultureID + "'";
sQuery += " AND USE_YN = '" + PosConst.MST_USE_YN.YES + "'";
DataTable dtDataInfo = m_cMstService.Select(new string[] { sQuery });
if (dtDataInfo != null && dtDataInfo.Rows.Count > 0)
{
DataRow dr = dtDataInfo.Rows[0];
// 문화마스터 설정
m_cPosStatus.Global.m_stCultureMaster.strCultureName = CmUtil.GetDataRowStr(dr, PosMst.MST_CULTURE.DATA.CULTURE_NM);
m_cPosStatus.Global.m_stCultureMaster.strDatePattern = CmUtil.GetDataRowStr(dr, PosMst.MST_CULTURE.DATA.DT_PATTERN);
m_cPosStatus.Global.m_stCultureMaster.strCurrencySymbol = CmUtil.GetDataRowStr(dr, PosMst.MST_CULTURE.DATA.CURR_SYMBL);
m_cPosStatus.Global.m_stCultureMaster.strCurrencyName = CmUtil.GetDataRowStr(dr, PosMst.MST_CULTURE.DATA.CURR_NM);
m_cPosStatus.Global.m_stCultureMaster.nDecimalDigits = CmUtil.GetDataRowInt(dr, PosMst.MST_CULTURE.DATA.DEC_PNT_DIGITS);
m_cPosStatus.Global.m_stCultureMaster.strDecimalSymbol = CmUtil.GetDataRowStr(dr, PosMst.MST_CULTURE.DATA.DEC_PNT_SYMBL);
m_cPosStatus.Global.m_stCultureMaster.nGroupingDigits = CmUtil.GetDataRowInt(dr, PosMst.MST_CULTURE.DATA.GRP_DIGITS);
m_cPosStatus.Global.m_stCultureMaster.strGroupingSymbol = CmUtil.GetDataRowStr(dr, PosMst.MST_CULTURE.DATA.GRP_SYMBL);
if ( m_cPosStatus.Base.Country != CmUtil.GetDataRowStr(dr, PosMst.MST_CULTURE.DATA.LANG_TYPE))
{
m_cPosStatus.Base.Country = CmUtil.GetDataRowStr(dr, PosMst.MST_CULTURE.DATA.LANG_TYPE);
LoadMessageMaster();
}
else
{
m_cPosStatus.Base.Country = CmUtil.GetDataRowStr(dr, PosMst.MST_CULTURE.DATA.LANG_TYPE);
}
if (System.Threading.Thread.CurrentThread.CurrentCulture.Name == "fr-FR")
{
// 프랑스 문화권 이면 내부처리 문화는 영어 문화권으로 변경
System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");
}
}
sRet = UserCom.RST_OK;
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return sRet;
}
///
/// 결제 할인 마스터 로딩
///
///
public string LoadPayDcMaster()
{
string sQuery = "";
string sRet = UserCom.RST_ERR;
try
{
// 결제 할인 마스터 로딩
{
sQuery = "SELECT * FROM POSMST..MST_PAY_DC WHERE CMP_CD = '" + m_cPosStatus.Base.CmpCd + "' AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "'";
sQuery += " AND USE_YN = '" + PosConst.MST_USE_YN.YES + "'";
sQuery += " ORDER BY SALE_POS_PRT_QUE, PAY_DC_GRP_TYPE, PAY_DC_CD "; // 영수증 출력시 중요.
DataTable dtDataInfo = m_cMstService.Select(new string[] { sQuery });
if (dtDataInfo != null && dtDataInfo.Rows.Count > 0)
{
PosMstManager.SetMstPayDc(dtDataInfo);
}
}
// VAN 마스터 로딩
{
sQuery = "SELECT * FROM POSMST..MST_VAN WHERE CMP_CD = '" + m_cPosStatus.Base.CmpCd + "' AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "'";
sQuery += " AND USE_YN = '" + PosConst.MST_USE_YN.YES + "'";
DataTable dtDataInfo = m_cMstService.Select(new string[] { sQuery });
if (dtDataInfo != null && dtDataInfo.Rows.Count > 0)
{
// VAN마스터의 터미널ID 하드코딩 (2017.05.23)
if (m_cPosStatus.Mst.CorpDiv == ItemConst.CORP_DIV.PC)
{
// 부산역사점(0013096), 08,09번 POS
if (m_cPosStatus.Base.StoreNo == "0013096" && (m_cPosStatus.Base.PosNo == "08" || m_cPosStatus.Base.PosNo == "09"))
{
foreach(DataRow dr in dtDataInfo.Rows)
{
if (CmUtil.GetDataRowStr(dr, PosMst.MST_VAN.DATA.APPR_ID) == "PCR0005121")
{
dr[PosMst.MST_VAN.DATA.APPR_ID] = "PCR0006076";
}
}
}
}
PosMstManager.SetMstVan(dtDataInfo);
// BIN\SpcnPosCfg.ini 설정 변경용 변수 담기
m_cDevStatus.ICReader.VanIP = PosMstManager.GetMstVan(ItemConst.TR_ITEM_ID.CREDITCARD_ITEM, ItemConst.TR_ITEM_ID.CREDITCARD.CREDIT_CARD, PosMst.MST_VAN.DATA.IP);
if (m_cDevStatus.ICReader.UseYn == true) // 여신전문금융업법 적용여부 체크
{
// iC Port
m_cDevStatus.ICReader.VanPort = PosMstManager.GetMstVan(ItemConst.TR_ITEM_ID.CREDITCARD_ITEM, ItemConst.TR_ITEM_ID.CREDITCARD.CREDIT_CARD, PosMst.MST_VAN.DATA.PORT);
}
else
{
// MSR Port
m_cDevStatus.ICReader.VanPort = PosMstManager.GetMstVan(ItemConst.TR_ITEM_ID.CREDITCARD_ITEM, ItemConst.TR_ITEM_ID.CREDITCARD.CREDIT_CARD, PosMst.MST_VAN.DATA.MSR_PORT);
}
m_cIcReader.UpdateIniConfig(m_cDevStatus.ICReader.VanIP, m_cDevStatus.ICReader.VanPort);
}
}
// 터미널 ID 설정
m_cPosStatus.Base.OlePosICReaderSerialNumber = PosMstManager.GetMstVan(ItemConst.TR_ITEM_ID.CREDITCARD_ITEM, ItemConst.TR_ITEM_ID.CREDITCARD.CREDIT_CARD, PosMst.MST_VAN.DATA.APPR_ID);
sRet = UserCom.RST_OK;
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return sRet;
}
///
/// 담당자 권한 마스터 로딩
///
///
public string LoadPicAuthMaster()
{
string sQuery = "";
string sRet = UserCom.RST_ERR;
try
{
// 담당자 권한 마스터 로딩
sQuery = "SELECT * ";
sQuery += " FROM POSMST..MST_PIC_AUTH";
sQuery += " WHERE CMP_CD = '" + m_cPosStatus.Base.CmpCd + "'";
sQuery += " AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "'";
sQuery += " AND USE_YN = '" + PosConst.MST_USE_YN.YES + "'";
DataTable dtDataInfo = m_cMstService.Select(new string[] { sQuery });
if (dtDataInfo != null && dtDataInfo.Rows.Count > 0)
{
PosMstManager.SetMstPicAuth(dtDataInfo);
}
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return sRet;
}
///
/// 최종 거래번호 설정
///
///
public string LoadLastTradeNo()
{
string sQuery = "";
string sRet = UserCom.RST_ERR;
try
{
// 최종등록번호 로딩
sQuery = " SELECT MAX(REG_NO) REG_NO FROM POSLOG..ETC_SALE_HEADER ";
sQuery += " WHERE CMP_CD = '" + m_cPosStatus.Base.CmpCd + "' ";
sQuery += " AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "' ";
sQuery += " AND SALE_DT = '" + m_cPosStatus.Base.SaleDate + "' ";
sQuery += " AND POS_NO = '" + m_cPosStatus.Base.PosNo + "' ";
DataTable dtDataInfo = m_cMstService.Select(new string[] { sQuery });
if (dtDataInfo != null && dtDataInfo.Rows.Count > 0)
{
DataRow dr = dtDataInfo.Rows[0];
int nRegNo = (int)CmUtil.LongParse(CmUtil.GetDataRowStr(dr, "REG_NO"));
if (CmUtil.LongParse(m_cPosStatus.Base.RegNo) <= nRegNo)
{
m_cPosStatus.Base.RegNo = string.Format("{0:D5}", nRegNo + 1);
}
}
// 최종거래번호 로딩
sQuery = " SELECT ISNULL(MAX(TRADE_NO),0) TRADE_NO FROM POSLOG..TR_SALE_HEADER ";
sQuery += " WHERE CMP_CD = '" + m_cPosStatus.Base.CmpCd + "' ";
sQuery += " AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "' ";
sQuery += " AND SALE_DT = '" + m_cPosStatus.Base.SaleDate + "' ";
sQuery += " AND POS_NO = '" + m_cPosStatus.Base.PosNo + "' ";
sQuery += " AND TRADE_KINDPER NOT IN('90','91','92','93') ";
DataTable dtTradeInfo = m_cMstService.Select(new string[] { sQuery });
if (dtTradeInfo != null && dtTradeInfo.Rows.Count > 0)
{
DataRow dr = dtTradeInfo.Rows[0];
int nTradeNo = (int)CmUtil.LongParse(CmUtil.GetDataRowStr(dr, "TRADE_NO"));
if (CmUtil.LongParse(m_cPosStatus.Base.TradeNo) <= nTradeNo)
{
m_cPosStatus.Base.TradeNo = string.Format("{0:D5}", nTradeNo + 1);
}
}
// 최종 중간마감 차수 로딩
sQuery = " SELECT ISNULL(MAX(MID_CLOSE_SEQ),'0') MID_CLOSE_SEQ FROM POSLOG..TR_SALE_HEADER ";
sQuery += " WHERE CMP_CD = '" + m_cPosStatus.Base.CmpCd + "' ";
sQuery += " AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "' ";
sQuery += " AND SALE_DT = '" + m_cPosStatus.Base.SaleDate + "' ";
sQuery += " AND POS_NO = '" + m_cPosStatus.Base.PosNo + "' ";
sQuery += " AND TRADE_KINDPER = '" + ItemConst.TRAN_KIND.STATEMENT.MIDDLE_ADJUSTMENT + "' ";
sQuery += " AND ISNULL(MID_CLOSE_SEQ, '0') <> '99' ";
DataTable dtMidCloseSeqInfo = m_cMstService.Select(new string[] { sQuery });
if (dtMidCloseSeqInfo != null && dtMidCloseSeqInfo.Rows.Count > 0)
{
DataRow dr = dtMidCloseSeqInfo.Rows[0];
int nMidCloseSeq = (int)CmUtil.LongParse(CmUtil.GetDataRowStr(dr, "MID_CLOSE_SEQ"));
if (CmUtil.LongParse(m_cPosStatus.Base.MidCloseSeq) <= nMidCloseSeq)
{
m_cPosStatus.Base.MidCloseSeq = string.Format("{0:00}", nMidCloseSeq + 1);
}
}
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return sRet;
}
///
/// 현금 알람 금액
///
///
public string LoadCashAlarm()
{
string sQuery = "";
string sRet = UserCom.RST_ERR;
DataTable dtDataInfo = null;
try
{
m_cPosStatus.Mst.CashAlarmAmt = 0;
if (CmUtil.IsNull(PosMstManager.GetPosOption(POS_OPTION.OPT310), "0") != "0")
{
//입출금 체크
sQuery = " SELECT ISNULL(SUM(CASE WHEN DPST_WTHDR_CD ='01' THEN DPST_WTHDR_AMT ELSE DPST_WTHDR_AMT * (-1) END),0) AS CASH_AMT ";
sQuery += " FROM POSLOG..ETC_SALE_DPST_WTHDR ";
sQuery += " WHERE CMP_CD = '" + m_cPosStatus.Base.CmpCd + "' ";
sQuery += " AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "' ";
sQuery += " AND SALE_DT = '" + m_cPosStatus.Base.SaleDate + "' ";
sQuery += " AND POS_NO = '" + m_cPosStatus.Base.PosNo + "' ";
dtDataInfo = m_cMstService.Select(new string[] { sQuery });
if (dtDataInfo != null && dtDataInfo.Rows.Count > 0)
{
DataRow dr = dtDataInfo.Rows[0];
m_cPosStatus.Mst.CashAlarmAmt = CmUtil.DoubleParse(CmUtil.GetDataRowStr(dr, "CASH_AMT"));
}
//현금 결제 금액 체크
sQuery = " SELECT ";
sQuery += " ISNULL(SUM(CASE WHEN P.PAY_WAY_CD = '" + ItemConst.TR_ITEM_ID.CASH_ITEM + "' OR P.PAY_WAY_CD = '" + ItemConst.TR_ITEM_ID.CHECK_ITEM + "' THEN ";
sQuery += " CASE WHEN H.TRADE_DIV ='"+ ItemConst.TRAN_DIV.NORMAL +"' THEN P.PAY_AMT ELSE P.PAY_AMT * (-1) END";
sQuery += " ELSE ";
sQuery += " CASE WHEN H.TRADE_DIV ='" + ItemConst.TRAN_DIV.NORMAL + "' THEN P.AMT_ENTRY_02 * (-1) ELSE P.AMT_ENTRY_02 END ";
sQuery += " END ),0) AS CASH_AMT ";
sQuery += " FROM POSLOG.dbo.TR_SALE_HEADER H WITH(NOLOCK) ";
sQuery += " INNER JOIN POSLOG.dbo.TR_SALE_PAY P WITH(NOLOCK) ";
sQuery += " ON H.CMP_CD = P.CMP_CD ";
sQuery += " AND H.SALE_DT = P.SALE_DT ";
sQuery += " AND H.STOR_CD = P.STOR_CD ";
sQuery += " AND H.POS_NO = P.POS_NO ";
sQuery += " AND H.TRADE_NO = P.TRADE_NO ";
sQuery += " WHERE H.CMP_CD = '" + m_cPosStatus.Base.CmpCd + "' ";
sQuery += " AND H.STOR_CD = '" + m_cPosStatus.Base.StoreNo + "' ";
sQuery += " AND H.SALE_DT = '" + m_cPosStatus.Base.SaleDate + "' ";
sQuery += " AND H.POS_NO = '" + m_cPosStatus.Base.PosNo + "' ";
sQuery += " AND H.TRADE_DIV IN ('" + ItemConst.TRAN_DIV.NORMAL + "','" + ItemConst.TRAN_DIV.REFUND + "') "; // 정상, 반품
sQuery += " AND H.TRAIN_MODE_YN = '0' "; // 일반
sQuery += " AND H.TRADE_KINDPER IN ('" + ItemConst.TRAN_KIND.NORMAL.SALE + "','" + ItemConst.TRAN_KIND.UNDECIDED.RESERVATION_REG + "','" + ItemConst.TRAN_KIND.UNDECIDED.RESERVATION_COMPLETE + "') "; // 매출, 예약(등록/완료)
sQuery += " AND ( ";
sQuery += " P.PAY_WAY_CD IN ('" + ItemConst.TR_ITEM_ID.CASH_ITEM + "','" + ItemConst.TR_ITEM_ID.CHECK_ITEM + "','" + ItemConst.TR_ITEM_ID.GIFT_ITEM + "','" + ItemConst.TR_ITEM_ID.FOREIGNEX_ITEM + "') "; // 현금, 수표, 상품권, 외환
sQuery += " OR P.PAY_WAY_CD + P.PAY_DTL_CD_01 IN ('" + ItemConst.TR_ITEM_ID.PAYETC_ITEM + ItemConst.TR_ITEM_ID.PAYETC.MEAL_TIKET + "') "; //식권
sQuery += " ) ";
dtDataInfo = m_cMstService.Select(new string[] { sQuery });
if (dtDataInfo != null && dtDataInfo.Rows.Count > 0)
{
DataRow dr = dtDataInfo.Rows[0];
m_cPosStatus.Mst.CashAlarmAmt = CmUtil.DoubleAdd(m_cPosStatus.Mst.CashAlarmAmt, CmUtil.DoubleParse(CmUtil.GetDataRowStr(dr, "CASH_AMT")));
}
}
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return sRet;
}
#region I/F 점포정보 조회
///
/// I/F 점포정보 조회
///
///
private void LoadJoinStorInfo()
{
string sQuery = string.Empty;
DataTable dtDataInfo = null;
try
{
m_cPosStatus.Mst.JOIN_CMP_CD = "";
m_cPosStatus.Mst.JOIN_BRAND_CD = "";
m_cPosStatus.Mst.JOIN_STOR_CD = "";
m_cPosStatus.Mst.JOIN_ITEM_CD = "";
sQuery = "";
sQuery += "SELECT TOP 1 \n";
sQuery += " CMP_CD \n";
sQuery += " , STOR_CD \n";
sQuery += " , ISNULL(JOIN_CMP_CD, '') JOIN_CMP_CD \n";
sQuery += " , ISNULL(JOIN_BRAND_CD, '') JOIN_BRAND_CD \n";
sQuery += " , ISNULL(JOIN_STOR_CD, '') JOIN_STOR_CD \n";
sQuery += " , ISNULL(JOIN_ITEM_CD, '') JOIN_ITEM_CD \n";
sQuery += "FROM POSMST..MST_OUT_SD_VEND_STOR \n";
sQuery += "WHERE \n";
sQuery += " CMP_CD = '" + m_cPosStatus.Base.CmpCd + "' \n";
sQuery += "AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "' \n";
sQuery += "AND POS_NO IN ('00', '" + m_cPosStatus.Base.PosNo + "') \n";
sQuery += "AND USE_YN = '" + PosConst.MST_USE_YN.YES + "' \n";
sQuery += "ORDER BY POS_NO DESC \n";
// 조회
dtDataInfo = m_cMstService.Select(new string[] { sQuery });
if (dtDataInfo != null && dtDataInfo.Rows.Count > 0)
{
DataRow dr = dtDataInfo.Rows[0];
m_cPosStatus.Mst.JOIN_CMP_CD = CmUtil.GetDataRowStr(dr, "JOIN_CMP_CD");
m_cPosStatus.Mst.JOIN_BRAND_CD = CmUtil.GetDataRowStr(dr, "JOIN_BRAND_CD");
m_cPosStatus.Mst.JOIN_STOR_CD = CmUtil.GetDataRowStr(dr, "JOIN_STOR_CD");
m_cPosStatus.Mst.JOIN_ITEM_CD = CmUtil.GetDataRowStr(dr, "JOIN_ITEM_CD");
}
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return;
}
#endregion
//#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 start, 20180510
#region 고객 구매이력 조회 마스터 조회
///
/// 고객 구매이력 조회 마스터 조회
///
///
private void LoadSendCpnMstInfo()
{
string sQuery = string.Empty;
DataTable dtDataInfo = null;
try
{
m_cPosStatus.Mst.HpyCokStorYn = "0";
m_cPosStatus.Mst.BuyHistShowYn = "0";
m_cPosStatus.Mst.CpnSendYn = "0";
sQuery = "";
sQuery += "SELECT CMP_CD \n";
sQuery += " , STOR_CD \n";
sQuery += " , ISNULL(HAPPY_YN, '0') HAPPY_YN \n";
sQuery += " , ISNULL(PRINT_YN, '0') PRINT_YN \n";
sQuery += " , ISNULL(SEND_YN, '0') SEND_YN \n";
//#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 start, 20180528
//쿠폰 발송 횟수 제한 기능
sQuery += " , ISNULL(CPN_SEND_LIMIT_CNT, '0') CPN_SEND_LIMIT_CNT \n";
//#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 end, 20180528
sQuery += " FROM POSMST..STR_SEND_CPN_MST \n";
sQuery += " WHERE CMP_CD = '" + m_cPosStatus.Base.CmpCd + "' \n";
sQuery += " AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "' \n";
// 조회
dtDataInfo = m_cMstService.Select(new string[] { sQuery });
if (dtDataInfo != null && dtDataInfo.Rows.Count > 0)
{
DataRow dr = dtDataInfo.Rows[0];
m_cPosStatus.Mst.HpyCokStorYn = CmUtil.GetDataRowStr(dr, "HAPPY_YN");
m_cPosStatus.Mst.BuyHistShowYn = CmUtil.GetDataRowStr(dr, "PRINT_YN");
m_cPosStatus.Mst.CpnSendYn = CmUtil.GetDataRowStr(dr, "SEND_YN");
//#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 start, 20180528
//쿠폰 발송 횟수 제한 기능
m_cPosStatus.Mst.CpnSendLimitCnt = CmUtil.GetDataRowStr(dr, "CPN_SEND_LIMIT_CNT");
//#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 end, 20180528
}
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return;
}
#endregion
//#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 end, 20180510
}
}