using System; using System.Drawing; using System.Windows.Forms; using System.Data; using Cosmos.BaseFrame; using Cosmos.UserFrame; using Cosmos.ServiceProvider; using Cosmos.Common; using Cosmos.CommonManager; using System.Collections; using System.IO; using System.Diagnostics; using System.Net; /*-----------------------------------------------------------------------------------------------*/ // 설 명 : 프로그램 다운로드 // 작 성 자 : // 변경 이력 : /*-----------------------------------------------------------------------------------------------*/ namespace Cosmos.Win { public partial class frmPGMDownLoad : Form { #region Variable private SManager sManager = new SManager(); // 이 객체를 통해 업무 Service 호출 private StateServer StateObject = (StateServer)StateServer.GetInstance(); // StateObject : StateServer Object (객체) private PosStatus m_cPosStatus = new PosStatus(); // 기본정보 참조 private TranStatus m_cTrnStatus = new TranStatus(); // 거래정보 참조 private DeviceStatus m_cDevStatus = new DeviceStatus(); // 기기정보 참조 private IDataProcessUs m_cDataService = null; private IDataCommonUs m_cDataCommon = null; // POS 공통함수 인터페이스 private ISvr2Tran m_cSvr2Tran = null; private INetworkFTP m_cNetworkFTP = null; private IDatabaseSQL m_cSqlDbService = null; // 데이터베이스 관리 private IICReaderUs m_cDeviceICReader = null; // IC 리더기 private IDeviceUpdate m_SignPadUpdate = null; // 서명패드 업데이트 //#20171016 IC리더기 펌웨어 업데이트 Start, srlee private IICReaderUpdate m_ICReaderUpdate = null; // IC 리더기 업데이트 //#20171016 IC리더기 펌웨어 업데이트 End, srlee private IWatcherBack m_cBackgroundDown = null; private Hashtable m_hRecvData; // 프로그램 업데이트 FTP 서버 정보 private FluentFTP.FtpClient Fcl = null; /// /// 프로그램 업데이트 FTP 서버정보 /// public Hashtable SethRecvData { set { this.m_hRecvData = value; } } private string[] m_sRecvData; // 프로그램 업데이트 목록 /// /// 프로그램 업데이트 목록 /// public string[] SetRecvData { set { this.m_sRecvData = value; } } private string m_sPosMenuKeyIn; public string PosMenuKeyIn { set { m_sPosMenuKeyIn = value; } get { return m_sPosMenuKeyIn; } } private bool bNotDoubleClik = false; // 더블 클릭 방지용 private string m_TagImgFileName = "TagImg_{0}_0{1}.png"; // 이미지 파일 이름 string[] sSignPadFile = null; string m_sFTPDownloadMode = "0"; // FTP 다운로드 모드 (0:Web, 1:TCP/IP) /// /// 자동/수동 모드 /// private string m_sManualMode; public string ManualMode { set { m_sManualMode = value; } get { return m_sManualMode; } } /// /// 강제종료 /// private bool m_bStop = false; /// /// 진행중 /// private bool m_bStart = false; /// /// FTP Download 상태 /// private FTP.DelegateFTP delegateFTP; /// /// Fluent FTP Download 상태 /// private FluentFTP.FtpClient.DelegateFTP delegateFluentFTP; private string m_DownLoadMsg = ""; private string m_PGMUpdateMsg = ""; private DataTable m_dtSignPad = new DataTable(); private string m_cUpDateMode = ""; #endregion #region 생성자 & 소멸자 /// /// 생성자 /// public frmPGMDownLoad() { InitializeComponent(); base.SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint | ControlStyles.ResizeRedraw, true); //this.UpdateStyles(); m_cPosStatus = (PosStatus)StateObject.POS; // POS 기본정보 m_cTrnStatus = (TranStatus)StateObject.TRAN; // POS 거래정보 m_cDevStatus = (DeviceStatus)StateObject.DEVICE; // POS 주변기기정보 m_cDataService = (IDataProcessUs)sManager.InitServiceInstance(ServiceLists.ASV_DATA_PROCESS.DLL, ServiceLists.ASV_DATA_PROCESS.DATA_SERVICE); m_cDataCommon = (IDataCommonUs)sManager.InitServiceInstance(ServiceLists.ASV_DATA_PROCESS.DLL, ServiceLists.ASV_DATA_PROCESS.DATA_COMMON); m_cSvr2Tran = (ISvr2Tran)sManager.InitServiceInstance(ServiceLists.BSV_SALE.DLL, ServiceLists.BSV_SALE.SVR2TRAN); m_cSqlDbService = (IDatabaseSQL)sManager.InitServiceInstance(ServiceLists.AGENT_DATABASE.DLL, ServiceLists.AGENT_DATABASE.DATABASE_MSSQL); m_cNetworkFTP = (INetworkFTP)sManager.InitServiceInstance(ServiceLists.AGENT_NETWORK.DLL, ServiceLists.AGENT_NETWORK.NETWORK_FTP); m_SignPadUpdate = (IDeviceUpdate)sManager.InitServiceInstance(ServiceLists.BSV_BASIC.DLL, ServiceLists.BSV_BASIC.SIGNPAD_UPDATE); m_cDeviceICReader = (IICReaderUs)sManager.InitServiceInstance(ServiceLists.AGENT_OLEDEVICE.DLL, ServiceLists.AGENT_OLEDEVICE.DEVICE_ICREADER); //#20171016 IC리더기 펌웨어 업데이트 Start, srlee m_ICReaderUpdate = (IICReaderUpdate)sManager.InitServiceInstance(ServiceLists.BSV_BASIC.DLL, ServiceLists.BSV_BASIC.ICREADER_UPDATE); //#20171016 IC리더기 펌웨어 업데이트 End, srlee // 백그라운드 다운 데몬 기동 m_cBackgroundDown = (IWatcherBack)sManager.InitServiceInstance(ServiceLists.AGENT_BACKGROUND_DOWN.DLL, ServiceLists.AGENT_BACKGROUND_DOWN.BACKGROUND_DOWN_MAIN); delegateFTP = new FTP.DelegateFTP(OnDownloadProgressChanged); delegateFluentFTP = new FluentFTP.FtpClient.DelegateFTP(OnDownloadProgressChanged); } /// /// 폼로드 /// /// /// private void frmPGMDownLoad_Load(object sender, EventArgs e) { UserLog.WriteLogFile(UserCom.LOG_IOS, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ""); InitControl(); // FTP 다운로드 모드 조회 m_sFTPDownloadMode = GetFTPDownloadMode(); Fcl = new FluentFTP.FtpClient(); FluentFTP.FtpClient.SetEventHandle(delegateFluentFTP); FTP.SetEventHandle(delegateFTP); } /// /// 폼클로즈 /// /// /// private void frmPGMDownLoad_FormClosing(object sender, FormClosingEventArgs e) { FTP.ReleaseEventHandle(); FluentFTP.FtpClient.ReleaseEventHandle(); UserLog.WriteLogFile(UserCom.LOG_IOS, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", lblTitle.Text); } /// /// 폼엑티브 /// /// /// private void frmPGMDownLoad_Activated(object sender, EventArgs e) { //this.TopMost = false; } /// /// 폼디엑티브 /// /// /// private void frmPGMDownLoad_Deactivate(object sender, EventArgs e) { } #endregion 생성자 & 소멸자 #region 폼 컨트롤 초기화 /// /// 폼 컨트롤 초기화 /// private void InitControl() { try { FormManager.SetFormAllControlFont(this, m_cPosStatus.Base.FONT); FormManager.SetTextBoxGlobalInfo(this, m_cPosStatus.Global.m_stCultureMaster.nGroupingDigits, m_cPosStatus.Global.m_stCultureMaster.strGroupingSymbol , m_cPosStatus.Global.m_stCultureMaster.nDecimalDigits, m_cPosStatus.Global.m_stCultureMaster.strDecimalSymbol); FormManager.MovePopUpForm(this, false, m_cPosStatus.Sale.ScreenSizeUser); m_bStop = false; m_bStart = false; bNotDoubleClik = false; lblCount.Visible = false; pbWork.Visible = false; lblTitle.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0447); if (lblTitle.Text.Trim() == "") lblTitle.Text = "Program Update"; lblUpdateInfo.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0455); if (lblUpdateInfo.Text.Trim() == "") lblUpdateInfo.Text = "Checking for program updates . . .\n Please wait a moment."; m_DownLoadMsg = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0440); if (m_DownLoadMsg.Trim() == "") m_DownLoadMsg = "File Downloading . . . ({0}%) "; m_PGMUpdateMsg = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0450); if (m_PGMUpdateMsg.Trim() == "") m_PGMUpdateMsg = "Updating program . . . ({0}%) "; if (m_sManualMode != "K") { // 이미지 전체 재수신 여부 CmMessage m_PosSaleInfo = CmMessage.MakeMessageFromFile(BaseCom.NxIniPath + PosConst.INI_FILE_NAME.PosSaleInfo); string sIMAGE_ALL_REDOWN_YN = CmUtil.StringNullEmpty(GetConfigInfo(m_PosSaleInfo, "POSOPEN", "IMAGE_ALL_REDOWN_YN")); string sMstDownDate = CmUtil.MidH(CmUtil.StringNullEmpty(GetConfigInfo(m_PosSaleInfo, "POSOPEN", "MstDownDate")), 0, 4); if (CmUtil.DoubleParse(sMstDownDate) <= 2010 && sIMAGE_ALL_REDOWN_YN != "0") m_cUpDateMode = PosConst.PGM_UPDATE_DOWN_DIV.TOTAL; // 최초시 else if (sIMAGE_ALL_REDOWN_YN == "1") m_cUpDateMode = PosConst.PGM_UPDATE_DOWN_DIV.TOTAL; // 수동 전체 이미지 수신 요청시 else m_cUpDateMode = PosConst.PGM_UPDATE_DOWN_DIV.ALL; } if (m_sManualMode == "K") { m_cUpDateMode = PosConst.PGM_UPDATE_DOWN_DIV.UPDATE; if (m_cPosStatus.Sale.ScreenSizeUser == 1024) { // 이미지 로딩 처리 picBack.Image = ImageManager.GetImage(BaseCom.NxImgPath, ImageManager.POP_FULL_SIZE); FormManager.SetControlSize(picBack, 0, 0, 1024, 696); FormManager.SetControlSize(this, 0, 50, picBack.Size.Width, picBack.Size.Height); FormManager.SetControlSize(this.lblTitle, 16, 1, 950, 50); FormManager.SetControlSize(this.btnExit, 965, 1, 58, 50); FormManager.SetControlSize(this.lblCount, 84, 579, 175, 14); FormManager.SetControlSize(this.pbWork, 87, 603, 842, 40); FormManager.SetControlSize(this.lblUpdateInfo, 112, 503, 800, 70); FormManager.SetControlSize(this.pnlFunc, 112, 98, 892, 361); } else { // 이미지 로딩 처리 picBack.Image = ImageManager.GetImage(BaseCom.NxImgPath, ImageManager.POP_SIZE_800X600); FormManager.SetControlSize(picBack, 0, 0, 800, 600); FormManager.SetControlSize(this, 0, 0, picBack.Size.Width, picBack.Size.Height); FormManager.SetControlSize(this.lblTitle, 16, 1, 728, 50); FormManager.SetControlSize(this.btnExit, 741, 1, 58, 50); FormManager.SetControlSize(this.lblCount, 50, 519, 175, 14); FormManager.SetControlSize(this.pbWork, 53, 543, 690, 40); FormManager.SetControlSize(this.lblUpdateInfo, 0, 443, 800, 70); FormManager.SetControlSize(this.pnlFunc, 0, 98, 892, 361); } FormManager.MovePopUpForm(this, false, m_cPosStatus.Sale.ScreenSizeUser); FormManager.SetFormAllControlFont(this, m_cPosStatus.Base.FONT); // 수동모드 this.TopMost = false; lblUpdateInfo.Visible = false; btnExit.Visible = true; pnlFunc.Visible = true; //picBack.Image = ImageManager.GetImage(BaseCom.NxImgPath, ImageManager.POP_FULL_SIZE); btnPGM.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0468); btnRcptLogo.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0988); btnContents.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0941); btnCustomer.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0942); btniTem.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0943); btnCampaign.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0944); btnTestMode.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0945); btnMasterAll.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0787); btnMasterUpdate.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0788); btnCampaignMasterAll.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_1026); btnSignUpdateFile.Visible = false; if (m_cDevStatus.SignPad.UseYn == true) { btnSignUpdateFile.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0529); btnSignUpdateFile.Visible = true; } btnICReaderUpdate.Visible = false; if (m_cDevStatus.ICReader.UseYn == true) { btnICReaderUpdate.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_1019); btnICReaderUpdate.Visible = true; } btnExit.Image = ImageManager.GetImage(BaseCom.NxImgPath, ImageManager.BTN_CLOSE); if (btnExit.Image != null) btnExit.Text = ""; //GetTagImg(); // 상단 이미지 GetBtnImg(); // 버튼 이미지 btnMasterAll.Visible = true; btnMasterUpdate.Visible = true; btnCampaignMasterAll.Visible = true; if (m_cPosStatus.Base.PosCommunicationType != PosConst.MAIN_POS_DIV.MAIN_POS) { // Main Pos가 아닌경우 마스터 수신 불가 btnMasterAll.Visible = false; btnMasterUpdate.Visible = false; btnCampaignMasterAll.Visible = false; } tmStart.Enabled = false; } else { // 자동모드 lblUpdateInfo.Visible = true; this.Size = new Size(788, 212); lblUpdateInfo.Visible = true; picBack.Image = ImageManager.GetImage(BaseCom.NxImgPath, ImageManager.MESSAGE_BOX); FormManager.MovePopUpForm(this, false, m_cPosStatus.Sale.ScreenSizeUser); pnlFunc.Visible = false; FormManager.SetControlSize(lblTitle, 16, 1, 762, 50); FormManager.SetControlSize(lblCount, 18, 138, 170, 14); FormManager.SetControlSize(pbWork, 21, 161, 743, 40); FormManager.SetControlSize(lblUpdateInfo, 100, 70, 588, 75); this.TopMost = true; btnExit.Visible = false; tmStart.Enabled = true; } //this.StartPosition = FormStartPosition.CenterParent; } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } #endregion #region 버튼 입력 처리 private void btnExit_Click(object sender, EventArgs e) { string sMsg = ""; try { if (m_bStart != false) { sMsg = MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0277); if (sMsg.Trim() == "") sMsg = "The POS program is being received. \n" + "Are you sure you want to force it?"; if (WinManager.QuestionMessage(sMsg) != true) return; } m_bStop = true; if (m_sManualMode == "K" && m_cPosStatus.Sale.SysShutDown.Trim() != "") { sMsg = MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0281); if (sMsg.Trim() == "") sMsg = "The POS program has been updated. \n" + "Restart the POS program."; WinManager.ConfirmMessage(sMsg); } this.DialogResult = DialogResult.Cancel; this.Close(); } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } #endregion #region 프로그램 다운로드 /// /// 프로그램 다운로드 /// /// private string PGMDownLoad(string sDownDiv, string sFTP_IP, int iFTP_Port, string sFTP_ID, string sFTP_Pwd, string[] sRecvData) { string sRet = UserCom.RST_ERR; string sApplyType = ""; string sLocalPath = BaseCom.NxDownPath; string sGroup = ""; string sKind = ""; string sApplyDate = ""; string sApplyTime = ""; string sFilePath = ""; string sFileNm = ""; string sFileVer = ""; string sFileSeq = ""; string sDeployDate = ""; string sDeployTime = ""; string sMsg = ""; string sDeployDT = ""; string sUseYn = ""; string sBackupFile = ""; int iConnect = -1; int iRet = -1; try { #region 디스크 용량 체크 DriveInfo drv = new DriveInfo(CmUtil.MidH(BaseCom.NxDownPath, 0, 1)); if (drv.TotalFreeSpace < 10000000) { sMsg = MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0659); if (sMsg.Trim() == "") { sMsg = "There is not enough disk space. Please check."; } WinManager.ErrorMessage(sMsg); return sRet; } #endregion pbWork.Value = 0; pbWork.Minimum = 0; CmUtil.CreateDirectory(sLocalPath); if (sRecvData.Length > 0) { // 프로그램 다운로드 m_bStart = true; // Connect // 2019-03-26 - 1997fx11 : FTP 관련 참고 if (m_sFTPDownloadMode == "1") { iConnect = Fluent_Connect(sFTP_IP, iFTP_Port, sFTP_ID, sFTP_Pwd, 3000); } // TCP-IP 모드 else { iConnect = m_cNetworkFTP.Connect(sFTP_IP, sFTP_ID, sFTP_Pwd, 3000, iFTP_Port); } // Web 모드 if (iConnect == 0) { for (int iLoop = 0; iLoop < sRecvData.Length; iLoop++) { if (sRecvData[iLoop].Trim() == "") { continue; } string[] aRecvData = sRecvData[iLoop].Split(new string[] { "|" }, StringSplitOptions.None); aRecvData = sRecvData[iLoop].Split(new string[] { "|" }, StringSplitOptions.None); sGroup = aRecvData[0].ToString(); // 그룹 sKind = sGroup + aRecvData[1].ToString(); // 배포구분 : 01:프로그램, 02:프로그램(기타), 03:객면 컨텐츠, 04:상품이미지 sApplyDate = aRecvData[3].ToString(); // 적용일자 sApplyTime = aRecvData[10].ToString(); // 적용시간 sFilePath = aRecvData[4].ToString(); // 파일위치 if (CmUtil.RightH(sFilePath, 1) != "/") sFilePath += "/"; sFileNm = aRecvData[5].ToString(); // 파일명 sFileVer = aRecvData[6].ToString(); // 파일버전 sFileSeq = aRecvData[7].ToString(); // 파일Seq sDeployDate = aRecvData[8].ToString(); // 다운일자 sDeployTime = aRecvData[9].ToString(); // 다운시간 sDeployDT = aRecvData[11].ToString(); // 배포일자 sUseYn = "1"; // 사용유무 string[] aTempPath = sFilePath.Split(new string[] { "/" }, StringSplitOptions.None); for (int i = 0; aTempPath.Length > i; i++) { if (aTempPath[i] == "nftpparis") { continue; } } // 이전에 받은파일이 있는지 체크 if (sGroup == PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_40 || sGroup == PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_50 || sGroup == PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_60) { // 서명패드 백업 위치 sBackupFile = BaseCom.NxBackPath + PosConst.BACKUP_PATH.SIGNPAD; } //#20171016 IC리더기 펌웨어 업데이트 Start, srlee else if (sGroup == PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_70) { // IC리더기 펌웨어 백업 위치 sBackupFile = BaseCom.NxBackPath + PosConst.BACKUP_PATH.ICREADER; } //#20171016 IC리더기 펌웨어 업데이트 End, srlee // 2019-05-14 - 1997fx11 : KIOSK 백업위치 else if (sGroup == PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_10) { sBackupFile = BaseCom.NxBackPath + PosConst.BACKUP_PATH.KIOSK; } else { // PGM 백업 위치 sBackupFile = BaseCom.NxBackPath + PosConst.BACKUP_PATH.PGM; } if (CmUtil.Exists(sBackupFile + sFileNm) != true) { // FTP 다운로드 CmUtil.FileDelete(sLocalPath + sFileNm); iRet = -1; // DownLoad if (m_sFTPDownloadMode == "1") { iRet = Fluent_Download(sLocalPath, sFilePath, sFileNm); } // TCP-IP 모드 else { iRet = m_cNetworkFTP.Download(sFilePath, sLocalPath, sFileNm, ref sMsg, m_cPosStatus.Base.FtpConnType); // Web 모드 } if (iRet != 0) { sApplyType = ItemConst.PGM_DOWN_STATE.DownLoad_Fail; string sErrMsg = MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0282); if (sErrMsg.Trim() == "") { sErrMsg = "There was an error downloading."; } WinManager.ErrorMessage(sErrMsg + "\n" + sMsg); } else { // 다운로드만 적용 sApplyType = ItemConst.PGM_DOWN_STATE.DownLoad_OK; } } else { // 다운로드만 적용 sApplyType = ItemConst.PGM_DOWN_STATE.DownLoad_OK; // 백업된 파일을 다운로드 폴더에 복사 CmUtil.FileCopy(sFileNm, sBackupFile, sLocalPath, ""); } if (m_sManualMode == "K") { aRecvData[2] = m_cPosStatus.Base.SaleDate; } // 다운로드 이력 저장 sRet = m_cSvr2Tran.PGMUpdate_History_Isert(sKind, sFileSeq, sFileVer, sFileNm, sApplyDate, sApplyTime, sApplyType, sDeployDate, sDeployTime, sFTP_IP, iFTP_Port.ToString(), sFTP_ID, sFTP_Pwd, sFilePath, "1", sDeployDT, sUseYn); // 수신 상태 전송 sRet = m_cSvr2Tran.PGMUpdate_Complete(sKind, sApplyType, sFileNm, sFileSeq, sFileVer, sDownDiv, sDeployDate, sDeployDT); SetProgreeBar(lblCount, pbWork, iLoop + 1, sRecvData.Length, m_DownLoadMsg, sFileNm); if (sApplyType == ItemConst.PGM_DOWN_STATE.DownLoad_Fail && sGroup == PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_20) { m_bStop = true; } if (m_bStop == true) { break; } } } //else // 2019-05-16 - 1997fx11 : Connect가 성공하지 못한 경우 강제로 Disconnect //{ // if (m_sFTPDownloadMode == "1") // { // Fcl.Disconnect(); // //if (Fcl != 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); } finally { if (m_sFTPDownloadMode == "1") Fcl.Disconnect(); else m_cNetworkFTP.Disconnect(); } m_bStart = false; return sRet; } #endregion #region 다운로드 프로그램 적용 /// /// 다운로드 프로그램 적용 /// /// private string PGMUpdate_Apply(string sDownDiv) { string sRet = UserCom.RST_ERR; string sApplyType = ""; int iRet = -1; string sUnzip_RCPTLOGO_Path = BaseCom.NxImgPath + @"RCPTLOGO\"; string sUnzip_SIGNPAD_FIRMWARE_Path = BaseCom.NxDonglePath + @"FIRMWARE\"; string sUnzip_SIGNPAD_AVI_Path = BaseCom.NxDonglePath + @"AVI\"; string sUnzip_SIGNPAD_IMG_Path = BaseCom.NxDonglePath + @"IMG\"; string sUnzip_PGM_Path = BaseCom.NxDownPath + @"PGM\"; string sUnzip_IMG_Path = BaseCom.NxDownPath; string sUnzip_CUSTOMER_Path = BaseCom.NxDownPath + @"CDP\CUSTOMER\"; // 2019-03-29 - 1997fx11 : 기존 POS 상품 경로는 삭제 //string sUnzip_ITEM_Path = BaseCom.NxDownPath + @"CDP\ITEM\"; // 2019-03-29 - 1997fx11 : Kiosk 관련 경로 추가. string sUnzip_ITEM_Path = BaseCom.NxCDPPath; // + @"CDP\ITEM\"; string sUnzip_OPTN_Path = BaseCom.NxCDPPath; // + @"CDP\OPTN\"; string sUnzip_CAMPN_Path = BaseCom.NxCDPPath; // + @"CDP\CAMPN\"; string sUnzip_CATE_Path = BaseCom.NxCDPPath; // + @"CDP\CATE\"; string sUnzip_SCREEN_Path = BaseCom.NxCDPPath; // + @"CDP\SCREEN\"; string sUnzip_PRESENT_Path = BaseCom.NxCDPPath; // + @"CDP\PRESENT\"; string sUnzip_TAG_Path = BaseCom.NxCDPPath; // + @"CDP\TAG\"; string sUnzip_LOGO_Path = BaseCom.NxCDPPath; // + @"CDP\LOGO\"; //#20171016 IC리더기 펌웨어 업데이트 Start, srlee string sUnzip_ICREADER_FIRMWARE_Path = BaseCom.NxDownPath + @"ICREADER\"; //#20171016 IC리더기 펌웨어 업데이트 End, srlee //string sDelete_CAMPAIGN_Path = BaseCom.NxDownPath + @"CDP\CAMPAIGN\"; //string sDelete_CDP_COM_Path = BaseCom.NxDownPath + @"CDP\CDP_COM\"; //string sDelete_CUSTOMER_Path = BaseCom.NxDownPath + @"CDP\CUSTOMER\"; //string sDelete_ITEM_Path = BaseCom.NxDownPath + @"CDP\ITEM\"; //string sDelete_TEST_MODE_Path = BaseCom.NxDownPath + @"CDP\TEST_MODE\"; //string sDelete_ETC_Path = BaseCom.NxDownPath + @"CDP\ETC\"; string sUnzipPath = ""; DataTable dtData = new DataTable(); string sGroup = ""; string sKind = ""; int index = 0; string sFTP_IP = ""; int iFTP_Port = 0; string sFTP_ID = ""; string sFTP_Pwd = ""; string sApplyDate = ""; string sApplyTime = ""; string sFilePath = ""; string sFileNm = ""; string sFileVer = ""; string sFileSeq = ""; string sDeployDate = ""; string sDeployTime = ""; string sDeployDT = ""; string sUseYn = ""; DataRow drRow = null; bool bUnZIp = false; try { // DB Connect m_cSqlDbService.SetDBConnectionString(m_cPosStatus.Base.LocalDbSource, m_cPosStatus.Base.LocalDbCatalog, m_cPosStatus.Base.LocalDbUserID, m_cPosStatus.Base.LocalDbPassword); string sQuery = ""; sQuery = ""; sQuery += "SELECT * \n"; sQuery += " FROM POSMST..MST_PGM_VER_NEW \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 = '" + m_cPosStatus.Base.PosNo + "' \n"; sQuery += " AND APP_TYPE = '1' \n"; // 적용구분(1:다운완료, 2:적용완료, F:다운실패, E:적용실패) //sQuery += " AND ISNULL(APPLY_DATE, '') <= '" + m_cPosStatus.Base.SaleDate + "'\n"; // 영업일로 하게되면 개점 이전에 적용되지 않아 서버에서 받은 시스템 일자로 조회 sQuery += " AND ISNULL(APPLY_DATE, '') + ISNULL(APPLY_TIME, '') <= '" + DateTime.Now.ToString("yyyyMMdd") + DateTime.Now.ToString("HHmm") + "'\n"; // 영업일로 하게되면 개점 이전에 적용되지 않아 서버에서 받은 시스템 일자로 조회 //sQuery += " AND ISNULL(APPLY_DATE, '') + ISNULL(APPLY_TIME, '0000') <= '" + m_cPosStatus.Base.SaleDate + DateTime.Now.ToString("HHmm") + "'\n"; sQuery += " AND ISNULL(USE_YN, '1') = '" + PosConst.MST_USE_YN.YES + "' \n"; sQuery += " ORDER BY APPLY_DATE, APPLY_TIME, FILE_VER, FILE_SEQ, KIND \n"; sQuery = sQuery.Replace("\t", " "); iRet = m_cSqlDbService.DBSelect(sQuery, out dtData); if (dtData != null && dtData.Rows.Count > 0) { lblUpdateInfo.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0722); if (lblUpdateInfo.Text.Trim() == "") lblUpdateInfo.Text = "Applying program update . . .\n Please wait a moment."; lblUpdateInfo.Refresh(); WinManager.ShowSearchMessage(lblUpdateInfo.Text, this); foreach (DataRow dr in dtData.Rows) { sGroup = CmUtil.MidH(CmUtil.GetDataRowStr(dr, PosMst.MST_PGM_VER.DATA.KIND), 0, 2); sKind = CmUtil.GetDataRowStr(dr, PosMst.MST_PGM_VER.DATA.KIND); sFTP_IP = CmUtil.GetDataRowStr(dr, "FTP_IP"); iFTP_Port = CmUtil.IntParse(CmUtil.GetDataRowStr(dr, "FTP_PORT")); sFTP_ID = CmUtil.GetDataRowStr(dr, "FTP_ID"); sFTP_Pwd = CmUtil.GetDataRowStr(dr, "FTP_PWD"); sApplyDate = CmUtil.GetDataRowStr(dr, "APPLY_DATE"); // 적용일자 sApplyTime = CmUtil.GetDataRowStr(dr, "APPLY_TIME"); // 적용시간 sFilePath = CmUtil.GetDataRowStr(dr, "FTP_FILEPATH"); // 파일위치 if (CmUtil.RightH(sFilePath, 1) != "/") sFilePath += "/"; sFileNm = CmUtil.GetDataRowStr(dr, "FILE_NM"); // 파일명 sFileVer = CmUtil.GetDataRowStr(dr, "FILE_VER"); // 파일버전 sFileSeq = CmUtil.GetDataRowStr(dr, "FILE_SEQ"); // 파일Seq sDeployDate = CmUtil.GetDataRowStr(dr, "DEPLOY_DATE"); // 다운로드일자 sDeployTime = CmUtil.GetDataRowStr(dr, "DEPLOY_TIME"); // 다운로드시간 sDeployDT = CmUtil.GetDataRowStr(dr, "DEPLOY_DT"); // 배포일자 sUseYn = "1"; // 사용유무 SetProgreeBar(lblCount, pbWork, ++index, dtData.Rows.Count, m_PGMUpdateMsg, sFileNm); if (CmUtil.IsNull(sFileNm) == true || sFileNm.Trim().Length <= 0) continue; // 적용 폴더 선택 if (sKind == PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_11 + PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_11_DIV.CUSTOMER) { sUnzipPath = sUnzip_CUSTOMER_Path; } // POS 이미지 (고객면) // 2019-03-29 - 1997fx11 : 기존 POS 상품 경로는 삭제 //else if (sKind == PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_11 + PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_11_DIV.ITEM_IMAGE) //{ sUnzipPath = sUnzip_ITEM_Path; } // POS 이미지 (상품) // 2019-03-29 - 1997fx11 : Kiosk 관련 수정,추가. else if (sKind == PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_10 + PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_10_DIV.ITEM) { sUnzipPath = sUnzip_ITEM_Path; } else if (sKind == PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_10 + PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_10_DIV.OPTN) { sUnzipPath = sUnzip_OPTN_Path; } else if (sKind == PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_10 + PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_10_DIV.CAMPN) { sUnzipPath = sUnzip_CAMPN_Path; } else if (sKind == PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_10 + PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_10_DIV.CATE) { sUnzipPath = sUnzip_CATE_Path; } else if (sKind == PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_10 + PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_10_DIV.SCREEN) { sUnzipPath = sUnzip_SCREEN_Path; } else if (sKind == PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_10 + PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_10_DIV.PRESENT) { sUnzipPath = sUnzip_PRESENT_Path; } else if (sKind == PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_10 + PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_10_DIV.TAG) { sUnzipPath = sUnzip_TAG_Path; } else if (sKind == PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_10 + PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_10_DIV.LOGO) { sUnzipPath = sUnzip_LOGO_Path; } else if (sGroup == PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_20) { sUnzipPath = sUnzip_PGM_Path; } // POS 프로그램 else if (sKind == PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_30 + PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_30_DIV.RCPTLOGO_IMAGE) { sUnzipPath = sUnzip_RCPTLOGO_Path; } // 영수증 로고 이미지 else if (sGroup == PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_40) { sUnzipPath = sUnzip_SIGNPAD_FIRMWARE_Path; } // 서명패드 펌웨어 else if (sGroup == PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_50) { sUnzipPath = sUnzip_SIGNPAD_AVI_Path; } // 서명패드 동영상 else if (sGroup == PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_60) { sUnzipPath = sUnzip_SIGNPAD_IMG_Path; } // 서명패드 이미지 //#20171016 IC리더기 펌웨어 업데이트 Start, srlee else if (sGroup == PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_70) { sUnzipPath = sUnzip_ICREADER_FIRMWARE_Path; } // IC리더기 펌웨어 //#20171016 IC리더기 펌웨어 업데이트 End, srlee else sUnzipPath = sUnzip_PGM_Path; // 프로그램 if (CmUtil.RightH(sFileNm, 3).ToUpper() == "ZIP") { // 파일 존재 여부 체크 if (File.Exists(BaseCom.NxDownPath + sFileNm) != true) { // 적용 상태 sApplyType = ItemConst.PGM_DOWN_STATE.Update_Fail; // 다운로드 이력 저장 sRet = m_cSvr2Tran.PGMUpdate_History_Isert(sKind, sFileSeq, sFileVer, sFileNm, sApplyDate, sApplyTime, sApplyType, sDeployDate, sDeployTime, sFTP_IP, iFTP_Port.ToString(), sFTP_ID, sFTP_Pwd, sFilePath, "1", sDeployDT, sUseYn); if (sRet != UserCom.RST_OK) continue; // 수신 상태 전송 sRet = m_cSvr2Tran.PGMUpdate_Complete(sKind, sApplyType, sFileNm, sFileSeq, sFileVer, sDownDiv, sDeployDate, sDeployDT); if (sRet != UserCom.RST_OK) continue; continue; } // 압축 해제 bUnZIp = CmUtil.UnZipFile(sUnzipPath, BaseCom.NxDownPath + sFileNm); //#20171016 IC리더기 펌웨어 업데이트 Start, srlee // 기존 //if (sGroup == PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_30 || sGroup == PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_40 || sGroup == PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_50 || sGroup == PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_60) bUnZIp = false; // 프로그램 재기동 안함 if (sGroup == PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_10 || sGroup == PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_30 || sGroup == PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_40 || sGroup == PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_50 || sGroup == PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_60 || sGroup == PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_70) { bUnZIp = false; } //#20171016 IC리더기 펌웨어 업데이트 End, srlee //#20180919 IC/MSR 폴더 삭제 후 배포받은 파일로 다시 생성해주기 start FolderDelete_ReCreate(sGroup); //#20180919 IC/MSR 폴더 삭제 후 배포받은 파일로 다시 생성해주기 end // 압축 파일 BACKUP으로 이동 if (sGroup == PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_20) { if (!Directory.Exists(BaseCom.NxBackPath + PosConst.BACKUP_PATH.PGM)) Directory.CreateDirectory(BaseCom.NxBackPath + PosConst.BACKUP_PATH.PGM); // PGM인 경우 차후 복구용으로 별도 위치로 이동한다. CmUtil.FileMove(BaseCom.NxDownPath + sFileNm, BaseCom.NxBackPath + PosConst.BACKUP_PATH.PGM + sFileNm); // POSSTART.EXE가 존재하면 BIN폴더에 덮어쓴다. CmUtil.FileCopy("PosStart.exe", sUnzipPath, BaseCom.NxBinPath, ""); } else if (sGroup == PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_40 || sGroup == PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_50 || sGroup == PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_60) { // 차후 복구용으로 별도 위치로 이동한다. if (!Directory.Exists(BaseCom.NxBackPath + PosConst.BACKUP_PATH.SIGNPAD)) Directory.CreateDirectory(BaseCom.NxBackPath + PosConst.BACKUP_PATH.SIGNPAD); CmUtil.FileMove(BaseCom.NxDownPath + sFileNm, BaseCom.NxBackPath + PosConst.BACKUP_PATH.SIGNPAD + sFileNm); } //#20171016 IC리더기 펌웨어 업데이트 Start, srlee else if (sGroup == PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_70) { // 차후 복구용으로 별도 위치로 이동한다. if (!Directory.Exists(BaseCom.NxBackPath + PosConst.BACKUP_PATH.ICREADER)) Directory.CreateDirectory(BaseCom.NxBackPath + PosConst.BACKUP_PATH.ICREADER); CmUtil.FileMove(BaseCom.NxDownPath + sFileNm, BaseCom.NxBackPath + PosConst.BACKUP_PATH.ICREADER + sFileNm); } // 2019-05-16 -1997fx11 : Kiosk용 백업경로 else if (sGroup == PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_10) { if (!Directory.Exists(BaseCom.NxBackPath + PosConst.BACKUP_PATH.KIOSK)) { Directory.CreateDirectory(BaseCom.NxBackPath + PosConst.BACKUP_PATH.KIOSK); } CmUtil.FileMove(BaseCom.NxDownPath + sFileNm, BaseCom.NxBackPath + PosConst.BACKUP_PATH.KIOSK + sFileNm); } //#20171016 IC리더기 펌웨어 업데이트 End, srlee else { // 적용후 zip 파일 삭제 CmUtil.FileDelete(BaseCom.NxDownPath + sFileNm); } } else { // 압축을 풀 대상 폴더가 존재하지 않으면 생성 if (!Directory.Exists(sUnzipPath)) Directory.CreateDirectory(sUnzipPath); // 일반 파일이면 적용폴더로 그대로 이동 CmUtil.FileMove(BaseCom.NxDownPath + sFileNm, sUnzipPath + sFileNm); } //#20171016 IC리더기 펌웨어 업데이트 Start, srlee // 기존 /*if (sGroup == PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_40 || sGroup == PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_50 || sGroup == PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_60)*/ if (sGroup == PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_40 || sGroup == PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_50 || sGroup == PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_60 || sGroup == PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_70) //#20171016 IC리더기 펌웨어 업데이트 End, srlee { // 서명패드 적용상태 체크용 저장 dr["APP_TYPE"] = ItemConst.PGM_DOWN_STATE.Update_Fail; DataTableCopy(dtData, ref m_dtSignPad); } // 적용 상태 sApplyType = ItemConst.PGM_DOWN_STATE.Update_OK; // 다운로드 이력 저장 sRet = m_cSvr2Tran.PGMUpdate_History_Isert(sKind, sFileSeq, sFileVer, sFileNm, sApplyDate, sApplyTime, sApplyType, sDeployDate, sDeployTime, sFTP_IP, iFTP_Port.ToString(), sFTP_ID, sFTP_Pwd, sFilePath, "1", sDeployDT, sUseYn); if (sRet != UserCom.RST_OK) continue; // 수신 상태 전송 sRet = m_cSvr2Tran.PGMUpdate_Complete(sKind, sApplyType, sFileNm, sFileSeq, sFileVer, sDownDiv, sDeployDate, sDeployDT); if (sRet != UserCom.RST_OK) continue; if (sGroup == PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_20) { // 이전 파일 삭제 PGM_FileDelete(sKind, sFileVer, sFileSeq); // 프로그램 버전정보 설정 SetProgramVerIni(sKind, sFileVer, sFileSeq); } else if (sKind == PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_30 + PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_30_DIV.RCPTLOGO_IMAGE) { // 영수증로고 다운로드 후 영수증로고 업로드 함으로 변경 m_cPosStatus.Base.LogoUpload = PosConst.LOGO_UPLOAD_DIV.YES; // PosConfig.INI 저장 IServiceUs cSaveConfigInfo = (IServiceUs)sManager.InitServiceInstance(ServiceLists.BSV_OPEN_CLOSE.DLL, ServiceLists.BSV_OPEN_CLOSE.SAVE_CONFIGINFO); cSaveConfigInfo = (IServiceUs)sManager.InitServiceInstance(ServiceLists.BSV_OPEN_CLOSE.DLL, ServiceLists.BSV_OPEN_CLOSE.SAVE_CONFIGINFO); cSaveConfigInfo.Execute(new string[] { PosConst.INI_FILE_NAME.PosConfig }); } } //if (m_sManualMode == "K") // WinManager.ConfirmMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0621)); if (bUnZIp == true) m_cPosStatus.Sale.SysShutDown = PosConst.SYS_SHUTDOWN.PGMRESTART; } else { // if (m_sManualMode == "K") // { // string sMsg = MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0288); // if (sMsg.Trim() == "") sMsg = "You already have the latest version."; // WinManager.ConfirmMessage(sMsg); // } 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); // 수신 상태 전송 sApplyType = ItemConst.PGM_DOWN_STATE.Update_Fail; sRet = m_cSvr2Tran.PGMUpdate_Complete(sKind, sApplyType, sFileNm, sFileSeq, sFileVer, sDownDiv, sDeployDate, sDeployDT); } return sRet; } #endregion #region 다운로드 프로그램 삭제 (현재 버전과 이전 버전 이외 삭제) /// /// 다운로드 프로그램 삭제 (현재 버전과 이전 버전 이외 삭제) /// /// private string PGM_FileDelete(string sKind, string sFileVer, string sFileSeq) { string sRet = UserCom.RST_ERR; string sUnzipPath = BaseCom.NxBackPath + PosConst.BACKUP_PATH.PGM; int iRet = -1; DataTable dtData = new DataTable(); string sFileNm = ""; try { // DB Connect m_cSqlDbService.SetDBConnectionString(m_cPosStatus.Base.LocalDbSource , m_cPosStatus.Base.LocalDbCatalog , m_cPosStatus.Base.LocalDbUserID , m_cPosStatus.Base.LocalDbPassword); string sQuery = ""; sQuery = ""; sQuery += "SELECT \n"; sQuery += " KIND \n"; sQuery += " , FILE_VER \n"; sQuery += " , FILE_SEQ \n"; sQuery += " , FILE_NM \n"; sQuery += "FROM POSMST..MST_PGM_VER_NEW \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 = '" + m_cPosStatus.Base.PosNo + "'\n"; sQuery += "AND KIND = '" + sKind + "'\n"; sQuery += "AND APP_TYPE <> '1' \n"; // 적용구분(1:다운완료, 2:적용완료, F:다운실패, E:적용실패) sQuery += "AND FILE_VER + CONVERT(VARCHAR(5), FILE_SEQ) < '" + sFileVer + sFileSeq + "'\n"; sQuery += "AND FILE_VER + CONVERT(VARCHAR(5), FILE_SEQ) NOT IN(SELECT ISNULL(MAX(FILE_VER + CONVERT(VARCHAR(5), FILE_SEQ)), 0) \n"; sQuery += " FROM POSMST..MST_PGM_VER_NEW \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 = '" + m_cPosStatus.Base.PosNo + "'\n"; sQuery += " AND KIND = '" + sKind + "'\n"; sQuery += " AND APP_TYPE <> '1' \n"; // 적용구분(1:다운완료, 2:적용완료, F:다운실패, E:적용실패) sQuery += " AND FILE_VER + CONVERT(VARCHAR(5), FILE_SEQ) <> '" + sFileVer + sFileSeq + "'\n"; sQuery += " AND ISNULL(USE_YN, '1') = '" + PosConst.MST_USE_YN.YES + "' \n"; sQuery += " ) \n"; sQuery += " AND ISNULL(USE_YN, '1') = '" + PosConst.MST_USE_YN.YES + "' \n"; sQuery += "ORDER BY 1, 2, 3 \n"; sQuery = sQuery.Replace("\t", " "); iRet = m_cSqlDbService.DBSelect(sQuery, out dtData); if (dtData != null && dtData.Rows.Count > 0) { pbWork.Minimum = 0; pbWork.Maximum = dtData.Rows.Count; foreach (DataRow dr in dtData.Rows) { sKind = CmUtil.GetDataRowStr(dr, PosMst.MST_PGM_VER.DATA.KIND); sFileNm = CmUtil.GetDataRowStr(dr, PosMst.MST_PGM_VER.DATA.FILE_NM); if (sFileNm.Trim() == "") continue; // 이전 파일 삭제 CmUtil.FileDelete(sUnzipPath + sFileNm); } } } 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; } #endregion #region 버튼 입력 처리 /// /// 버튼 입력 처리 /// /// /// private void btnProc_Click(object sender, EventArgs e) { string sRet = UserCom.RST_ERR; string sGroup = PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_ALL; string sKind = PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_ALL_DIV.ALL_PGM; string sSignPadKind = ""; string[] sKind_Param = new string[10]; string sMsg = ""; try { if (bNotDoubleClik) return; bNotDoubleClik = true; // 백그라운드 다운 데몬 중지 if (m_sManualMode == "K") m_cBackgroundDown.Stop(); m_cUpDateMode = (m_sManualMode == "K" ? PosConst.PGM_UPDATE_DOWN_DIV.UPDATE : PosConst.PGM_UPDATE_DOWN_DIV.ALL); lblCount.Text = ""; lblCount.Visible = false; pbWork.Visible = false; this.Update(); if (((Cosmos.UI.CsmButton)sender) == btnPGM) // POS 프로그램 다운로드 { sGroup = PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_20; sKind = PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_20_DIV.ALL_PGM; } else if (((Cosmos.UI.CsmButton)sender) == btnRcptLogo) // 영수증 로고 이미지 다운로드 { sGroup = PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_30; sKind = PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_30_DIV.RCPTLOGO_IMAGE; } else if (((Cosmos.UI.CsmButton)sender) == btnSignUpdateFile) // 서명패드 업데이트 파일 다운로드 { sGroup = PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_40; sKind = PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_40_DIV.ALL_PGM; // 처리상태 m_dtSignPad.Clear(); } else if (((Cosmos.UI.CsmButton)sender) == btnMasterAll) // 마스터 전체 { sKind = ""; // 마스터 DB 수신 string sType = PosConst.MASTER_DOWN_OP.ALL; WinBasic.ShowForm(new string[] { FormManager.FORM_PROGRAM_START, sType, PosConst.POS_PERIPHERAL_CHECK.NO_CHECK, m_sManualMode }); // POS 마스터 로딩 IServiceUs cLoadMstSrv = (IServiceUs)sManager.InitServiceInstance(ServiceLists.BSV_OPEN_CLOSE.DLL, ServiceLists.BSV_OPEN_CLOSE.LOAD_MASTER_INFO); cLoadMstSrv.Execute(new string[] { }); if (m_sManualMode == "K") WinManager.ConfirmMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0621)); } else if (((Cosmos.UI.CsmButton)sender) == btnMasterUpdate) // 마스터 변경분 { sKind = ""; // 마스터 DB 수신 string sType = PosConst.MASTER_DOWN_OP.CHANGED; WinBasic.ShowForm(new string[] { FormManager.FORM_PROGRAM_START, sType, PosConst.POS_PERIPHERAL_CHECK.NO_CHECK, m_sManualMode }); // POS 마스터 로딩 IServiceUs cLoadMstSrv = (IServiceUs)sManager.InitServiceInstance(ServiceLists.BSV_OPEN_CLOSE.DLL, ServiceLists.BSV_OPEN_CLOSE.LOAD_MASTER_INFO); cLoadMstSrv.Execute(new string[] { }); if (m_sManualMode == "K") WinManager.ConfirmMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0621)); } else if(((Cosmos.UI.CsmButton)sender) == btnCampaignMasterAll) // 마스터 캠페인-전체 { sKind = ""; // 캠페인 마스터 수신 string sType = PosConst.MASTER_DOWN_OP.ALL_CAMPAIGN; WinBasic.ShowForm(new string[] { FormManager.FORM_PROGRAM_START, sType, PosConst.POS_PERIPHERAL_CHECK.NO_CHECK, m_sManualMode }); // POS 마스터 로딩 IServiceUs cLoadMstSrv = (IServiceUs)sManager.InitServiceInstance(ServiceLists.BSV_OPEN_CLOSE.DLL, ServiceLists.BSV_OPEN_CLOSE.LOAD_MASTER_INFO); cLoadMstSrv.Execute(new string[] { }); if (m_sManualMode == "K") WinManager.ConfirmMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0621)); } else if (((Cosmos.UI.CsmButton)sender) == btnCustomer) // 고객화면 이미지 다운로드 { //////if (m_sManualMode == "K") //////{ sGroup = PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_11; sKind = PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_11_DIV.CUSTOMER; //////} //////else //////{ ////// // 이미지 전체 재수신 (자동모드이면서 PosSaleInfo의 이미지 재수신이면) ////// sGroup = PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_10; ////// sKind = PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_10_DIV.ALL_PGM; //////} } else if (((Cosmos.UI.CsmButton)sender) == btniTem) // 상품 이미지 다운로드 { sGroup = PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_10; sKind = PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_10_DIV.ITEM_IMAGE; } else if (((Cosmos.UI.CsmButton)sender) == btnTestMode) // TEST 모드 { sGroup = PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_10; sKind = PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_10_DIV.TEST_MODE; } else if (((Cosmos.UI.CsmButton)sender) == btnContents) // 컨텐츠 { sGroup = PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_10; sKind = PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_10_DIV.CONTENTS; } else if (((Cosmos.UI.CsmButton)sender) == btnCampaign) // 캠페인 { sGroup = PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_10; sKind = PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_10_DIV.CAMPAIGN; } else if (((Cosmos.UI.CsmButton)sender) == btnICReaderUpdate) // IC리더기 업데이트 { #region IC리더기 업데이트 //#20171016 IC리더기 펌웨어 업데이트 Start, srlee // 기존 /*sGroup = PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_70; sKind = ""; sMsg = ""; if (m_cDevStatus.ICReader.UseYn == true) { this.TopMost = false; if (m_cDeviceICReader.SetDE_DownloadFW(2, 2, 0, null, ref sMsg) != true) { if (sMsg.Trim() == "") sMsg = "There was an error updating the IC reader firmware."; WinManager.ConfirmMessage(sMsg); } else { if (m_sManualMode == "K") { sMsg = MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0621); if (sMsg.Trim() == "") sMsg = "The download is complete."; WinManager.ConfirmMessage(sMsg); } } }*/ WinManager.ShowSearchMessage(MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0723), this); m_dtSignPad.Clear(); sGroup = PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_70; if (m_cDevStatus.ICReader.UseYn == true) { // IC리더기 모델 SR-440P인 경우만 펌웨어 업데이트 if (m_ICReaderUpdate.ICReaderModelCheck()) { m_dtSignPad = new DataTable(); sKind = PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_70_DIV.IC_READER_01; if (sKind.Trim() != "") { sRet = PGMUpdateCheck_Manual(PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_70 + sKind, m_cUpDateMode, false); } WinManager.HideSearchMessage(this); if (m_dtSignPad.Rows.Count > 0) { if (m_sManualMode == "K") { lblCount.Visible = false; pbWork.Visible = false; } // IC리더기 펌웨어 업데이트 frmICReaderUpdate fForm = (frmICReaderUpdate)FormManager.GetForm(FormManager.FORM_ICREADER_UPDATE); if (fForm == null) { fForm = new frmICReaderUpdate(); FormManager.AddForm(FormManager.FORM_ICREADER_UPDATE, fForm); } fForm.SetDataTable = m_dtSignPad; if (fForm.ShowDialog() == DialogResult.OK) { sRet = UserCom.RST_OK; } else { sRet = UserCom.RST_ERR; } // 처리상태 저장 foreach (DataRow dr in m_dtSignPad.Rows) { // 다운로드 이력 저장 sRet = m_cSvr2Tran.PGMUpdate_History_Isert(dr["KIND"].ToString(), dr["FILE_SEQ"].ToString(), dr["FILE_VER"].ToString(), dr["FILE_NM"].ToString(), dr["APPLY_DATE"].ToString(), dr["APPLY_TIME"].ToString(), dr["APP_TYPE"].ToString(), dr["DEPLOY_DATE"].ToString(), dr["DEPLOY_TIME"].ToString(), dr["FTP_IP"].ToString(), dr["FTP_PORT"].ToString(), dr["FTP_ID"].ToString(), dr["FTP_PWD"].ToString(), dr["FTP_FILEPATH"].ToString(), "1", dr["DEPLOY_DT"].ToString(), "1"); if (sRet != UserCom.RST_OK) continue; // 수신 상태 전송 sRet = m_cSvr2Tran.PGMUpdate_Complete(dr["KIND"].ToString(), dr["APP_TYPE"].ToString(), dr["FILE_NM"].ToString(), dr["FILE_SEQ"].ToString(), dr["FILE_VER"].ToString(), m_cUpDateMode, dr["DEPLOY_DATE"].ToString(), dr["DEPLOY_DT"].ToString()); if (sRet != UserCom.RST_OK) continue; } return; } else { sRet = UserCom.RST_ERR; } } } //#20171016 IC리더기 펌웨어 업데이트 End, srlee #endregion } // 프로그램 업데이트 있는지 조회 요청후 다운로드 if (sKind.Trim() != "") { WinManager.ShowSearchMessage(MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0723), this); #region 서명패드 업데이트 if (sGroup == PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_40 && sKind == PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_40_DIV.ALL_PGM) { if (m_cDevStatus.SignPad.UseYn == true) { // 서명패드일 경우 펌웨어, 동영상, 이미지를 다운 받는다. m_dtSignPad = new DataTable(); // 서명패드 정보 조회 string sSingPadModel = ""; sKind = ""; sSignPadKind = ""; sSingPadModel = m_SignPadUpdate.SignPadModelCheck(); switch (sSingPadModel) { case PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_40_DIV.SIGNPAD_MODEL_SSP_100: if (m_cDevStatus.ICReader.UseYn == true) sKind = PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_40_DIV.SIGNPAD_01; else sKind = PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_40_DIV.SIGNPAD_51; sSignPadKind = PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_40_DIV.SIGNPAD_01; break; case PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_40_DIV.SIGNPAD_MODEL_SN_350P: if (m_cDevStatus.ICReader.UseYn == true) sKind = PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_40_DIV.SIGNPAD_02; else sKind = PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_40_DIV.SIGNPAD_52; sSignPadKind = PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_40_DIV.SIGNPAD_02; break; case PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_40_DIV.SIGNPAD_MODEL_SN_150P: if (m_cDevStatus.ICReader.UseYn == true) sKind = PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_40_DIV.SIGNPAD_03; else sKind = PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_40_DIV.SIGNPAD_53; sSignPadKind = PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_40_DIV.SIGNPAD_03; break; case PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_40_DIV.SIGNPAD_MODEL_SR_170P: if (m_cDevStatus.ICReader.UseYn == true) sKind = PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_40_DIV.SIGNPAD_04; else sKind = PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_40_DIV.SIGNPAD_54; sSignPadKind = PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_40_DIV.SIGNPAD_04; break; case PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_40_DIV.SIGNPAD_MODEL_OLTMS: if (m_cDevStatus.ICReader.UseYn == true) sKind = PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_40_DIV.SIGNPAD_05; else sKind = PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_40_DIV.SIGNPAD_55; sSignPadKind = PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_40_DIV.SIGNPAD_05; break; case PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_40_DIV.SIGNPAD_MODEL_OLCSP: if (m_cDevStatus.ICReader.UseYn == true) sKind = PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_40_DIV.SIGNPAD_06; else sKind = PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_40_DIV.SIGNPAD_56; sSignPadKind = PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_40_DIV.SIGNPAD_06; break; } if (sKind.Trim() != "") { sKind_Param = new string[] { PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_40 + sKind , PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_50 + sSignPadKind , PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_60 + sSignPadKind }; for (int i = 0; i < sKind_Param.Length; i++) { sRet = PGMUpdateCheck_Manual(sKind_Param[i], m_cUpDateMode, false); } } WinManager.HideSearchMessage(this); //if (m_SignPadUpdate.SignPadUpdateCnt(ref sImgFile, ref sAviFile, ref sFirmFile) > 0) if (m_dtSignPad.Rows.Count > 0) { if (m_sManualMode == "K") { lblCount.Visible = false; pbWork.Visible = false; } // 서명패드 업데이트 frmSignPadUpdate fForm = (frmSignPadUpdate)FormManager.GetForm(FormManager.FORM_SIGNPAD_UPDATE); if (fForm == null) { fForm = new frmSignPadUpdate(); FormManager.AddForm(FormManager.FORM_SIGNPAD_UPDATE, fForm); } fForm.SetDataTable = m_dtSignPad; if (fForm.ShowDialog() == DialogResult.OK) { sRet = UserCom.RST_OK; } else { sRet = UserCom.RST_ERR; } // 처리상태 저장 foreach (DataRow dr in m_dtSignPad.Rows) { // 다운로드 이력 저장 sRet = m_cSvr2Tran.PGMUpdate_History_Isert(dr["KIND"].ToString(), dr["FILE_SEQ"].ToString(), dr["FILE_VER"].ToString(), dr["FILE_NM"].ToString(), dr["APPLY_DATE"].ToString(), dr["APPLY_TIME"].ToString(), dr["APP_TYPE"].ToString(), dr["DEPLOY_DATE"].ToString(), dr["DEPLOY_TIME"].ToString(), dr["FTP_IP"].ToString(), dr["FTP_PORT"].ToString(), dr["FTP_ID"].ToString(), dr["FTP_PWD"].ToString(), dr["FTP_FILEPATH"].ToString(), "1", dr["DEPLOY_DT"].ToString(), "1"); if (sRet != UserCom.RST_OK) continue; // 수신 상태 전송 sRet = m_cSvr2Tran.PGMUpdate_Complete(dr["KIND"].ToString(), dr["APP_TYPE"].ToString(), dr["FILE_NM"].ToString(), dr["FILE_SEQ"].ToString(), dr["FILE_VER"].ToString(), m_cUpDateMode, dr["DEPLOY_DATE"].ToString(), dr["DEPLOY_DT"].ToString()); if (sRet != UserCom.RST_OK) continue; } return; } else { sRet = UserCom.RST_ERR; } } } #endregion 서명패드 업데이트 #region 상품 이미지 업데이트 else if (sGroup == PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_10 && sKind == PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_10_DIV.ITEM_IMAGE) { sKind_Param = new string[] { PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_10 + sKind , PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_11 + sKind }; for (int i = 0; i < sKind_Param.Length; i++) { sRet = PGMUpdateCheck_Manual(sKind_Param[i], m_cUpDateMode, false); } } #endregion //////#region 이미지 재수신요청 //////else if (sGroup == PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_10 && sKind == PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_10_DIV.ALL_PGM) //////{ ////// sKind_Param = new string[] { PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_10 + PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_10_DIV.ITEM_IMAGE ////// , PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_10 + PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_10_DIV.CAMPAIGN ////// , PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_10 + PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_10_DIV.TEST_MODE ////// , PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_10 + PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_10_DIV.ITEM_IMAGE ////// , PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_11 + PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_11_DIV.ITEM_IMAGE ////// , PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_11 + PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_11_DIV.CUSTOMER ////// }; ////// for (int i = 0; i < sKind_Param.Length; i++) ////// { ////// sRet = PGMUpdateCheck_Manual(sKind_Param[i], "U", false); ////// } ////// if (sRet == UserCom.RST_OK) ////// { ////// // PosSaleInfo.INI 저장 ////// CmMessage cmPosSaleInfo = CmMessage.MakeMessageFromFile(BaseCom.NxIniPath + PosConst.INI_FILE_NAME.PosSaleInfo); ////// cmPosSaleInfo.GetMessage("POSOPEN").MakeMessageOverWrite("IMAGE_ALL_REDOWN_YN", "0"); ////// cmPosSaleInfo.MakeFileFromMessage(BaseCom.NxIniPath + PosConst.INI_FILE_NAME.PosSaleInfo); ////// } //////} //////#endregion else { sRet = PGMUpdateCheck_Manual(sGroup + sKind, m_cUpDateMode, false); } WinManager.HideSearchMessage(this); #region 전체 수신후 메시지 표시 // 전체 수신후 메시지 표시 if (sRet == UserCom.RST_OK) { // 영수증 이미지 로고 다운로드 후 영수증프린터에 Uploading if (sGroup == PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_30 && sKind == PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_30_DIV.RCPTLOGO_IMAGE) SetRcptLogo(); if (m_sManualMode == "K") { lblCount.Visible = false; pbWork.Visible = false; sMsg = MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0621); if (sMsg.Trim() == "") sMsg = "The download is complete."; WinManager.ConfirmMessage(sMsg); } } else { if (m_sManualMode == "K") { lblCount.Visible = false; pbWork.Visible = false; sMsg = MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0288); if (sMsg.Trim() == "") sMsg = "You already have the latest version."; WinManager.ConfirmMessage(sMsg); } } #endregion } } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); bNotDoubleClik = false; } finally { WinManager.HideSearchMessage(this); lblCount.Visible = false; pbWork.Visible = false; // 백그라운드 다운 데몬 시작 if (m_sManualMode == "K") m_cBackgroundDown.Start(); bNotDoubleClik = false; } } #endregion #region 프로그램 업데이트 있는지 조회 요청 - 수동 /// /// 프로그램 업데이트 있는지 조회 요청 - 수동 /// /// /// private string PGMUpdateCheck_Manual(string sKind, string sDownDiv, bool bView) { string sRet = UserCom.RST_OK; string sMsg = ""; try { if (m_cSvr2Tran.PGMUpdate(sKind, sDownDiv, ref m_sRecvData, ref m_hRecvData) == UserCom.RST_OK) { // FTP 수신 if (bView == true) WinManager.ShowSearchMessage(MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0723), this); string sFTP_IP = m_hRecvData[Column.IQ_PGMUPDATE_RSP.DATA.FTP_IP].ToString(); int iFTP_Port = CmUtil.IntParse(m_hRecvData[Column.IQ_PGMUPDATE_RSP.DATA.FTP_PORT].ToString()); string sFTP_ID = m_hRecvData[Column.IQ_PGMUPDATE_RSP.DATA.FTP_ID].ToString(); string sFTP_Pwd = m_hRecvData[Column.IQ_PGMUPDATE_RSP.DATA.FTP_PWD].ToString(); PGMDownLoad(sDownDiv, sFTP_IP, iFTP_Port, sFTP_ID, sFTP_Pwd, m_sRecvData); if (bView == true) WinManager.HideSearchMessage(this); } // 프로그램 적용 sMsg = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0722); if (sMsg.Trim() == "") sMsg = "Applying program update."; if (bView == true) WinManager.ShowSearchMessage(sMsg, this); sRet = PGMUpdate_Apply(sDownDiv); if (bView == true) WinManager.HideSearchMessage(this); if (m_sManualMode != "K") { if (m_cPosStatus.Sale.SysShutDown.Trim() != "") { // 수동모드가 아닌경우 화면 닫기 if (sRet == UserCom.RST_OK) { this.DialogResult = DialogResult.OK; } else { this.DialogResult = DialogResult.Cancel; } this.Close(); } } } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); sRet = UserCom.RST_ERR; } finally { if (bView == true) WinManager.HideSearchMessage(this); } return sRet; } #endregion #region 프로그램 업데이트 있는지 조회 요청 /// /// 프로그램 업데이트 있는지 조회 요청 /// /// /// private string PGMUpdateCheck(string sKind, string sDownDiv) { string sRet = UserCom.RST_OK; bool bReDown = false; try { sRet = m_cSvr2Tran.PGMUpdate(sKind, sDownDiv, ref m_sRecvData, ref m_hRecvData); if (sRet != UserCom.RST_OK) { // 최신버전을 받을게 없을 경우 로컬버전과 서버버전 체크 CmMessage m_PosConfig = CmMessage.MakeMessageFromFile(BaseCom.NxIniPath + PosConst.INI_FILE_NAME.PosConfig); sKind = PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_20 + PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_20_DIV.ALL_PGM; sRet = m_cSvr2Tran.PGMUpdate(sKind, "U", ref m_sRecvData, ref m_hRecvData); if (sRet== UserCom.RST_OK) { for (int iLoop = 0; iLoop < m_sRecvData.Length; iLoop++) { if (m_sRecvData[iLoop].Trim() == "") continue; string[] aRecvData = m_sRecvData[iLoop].Split(new string[] { "|" }, StringSplitOptions.None); if (aRecvData.Length <= 0) continue; aRecvData = m_sRecvData[iLoop].Split(new string[] { "|" }, StringSplitOptions.None); string sLocalVer = CmUtil.StringNullEmpty(GetConfigInfo(m_PosConfig, "PGMVER", "ProgramVer" + aRecvData[1].Trim().ToString())); // 서버에서 받은 최종 적용버전과 로컬적용 버전이 다른경우 프로그램 재수신 if (aRecvData[6].Trim().ToString() != sLocalVer.Trim() || sLocalVer.Trim().Length <= 0) { // 재수신 하도록 설정 bReDown = true; } else { // 다시 받지 않아도 되도록 삭제 m_sRecvData[iLoop] = ""; } } } // bReDown이 True가 아니면 Skip sRet = UserCom.RST_ERR; } if (sRet == UserCom.RST_OK || bReDown == true) { // FTP 수신 lblUpdateInfo.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0723); if (lblUpdateInfo.Text.Trim() == "") lblUpdateInfo.Text = "Downloading program updates . . .\n Please wait a moment."; lblUpdateInfo.Refresh(); string sFTP_IP = m_hRecvData[Column.IQ_PGMUPDATE_RSP.DATA.FTP_IP].ToString(); int iFTP_Port = CmUtil.IntParse(m_hRecvData[Column.IQ_PGMUPDATE_RSP.DATA.FTP_PORT].ToString()); string sFTP_ID = m_hRecvData[Column.IQ_PGMUPDATE_RSP.DATA.FTP_ID].ToString(); string sFTP_Pwd = m_hRecvData[Column.IQ_PGMUPDATE_RSP.DATA.FTP_PWD].ToString(); PGMDownLoad(sDownDiv, sFTP_IP, iFTP_Port, sFTP_ID, sFTP_Pwd, m_sRecvData); //WinManager.HideSearchMessage(this); } // 프로그램 적용 lblUpdateInfo.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0455); if (lblUpdateInfo.Text.Trim() == "") lblUpdateInfo.Text = "Checking for program updates . . .\n Please wait a moment."; lblUpdateInfo.Refresh(); WinManager.ShowSearchMessage(lblUpdateInfo.Text, this); sRet = PGMUpdate_Apply(sDownDiv); WinManager.HideSearchMessage(this); //#20171016 IC리더기 펌웨어 업데이트 Start, srlee // IC리더기 펌웨어 업데이트 - 수동만 가능하도록 //btnProc_Click(btnICReaderUpdate, null); // 2019-05-16 - 1997fx11 : 임시로 막음. //btnProc_Click(btnICReaderUpdate, null); //#20171016 IC리더기 펌웨어 업데이트 End, srlee // 서명패드 업데이트 // 2019-05-16 - 1997fx11 : 임시로 막음. //btnProc_Click(btnSignUpdateFile, null); //////// 이미지 전체 재수신 여부 체크 //////try //////{ ////// string sIMAGE_ALL_REDOWN_YN = null; ////// CmMessage cPosSaleInfo = CmMessage.MakeMessageFromFile(BaseCom.NxIniPath + PosConst.INI_FILE_NAME.PosSaleInfo); ////// sIMAGE_ALL_REDOWN_YN = CmUtil.StringNullEmpty(GetConfigInfo(cPosSaleInfo, "POSOPEN", "IMAGE_ALL_REDOWN_YN")); ////// if (sIMAGE_ALL_REDOWN_YN != "0") ////// { ////// // 이미지 전체 재수신 ////// btnProc_Click(btnCustomer, null); ////// } //////} //////catch (Exception ex) //////{ ////// WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, ////// System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); //////} if (m_sManualMode != "K" || m_cPosStatus.Sale.SysShutDown.Trim() != "") { // 수동모드가 아닌경우 화면 닫기 if (sRet == UserCom.RST_OK) { // 이미지 전체 재수신 여부 설정 CmMessage m_PosSaleInfo = CmMessage.MakeMessageFromFile(BaseCom.NxIniPath + PosConst.INI_FILE_NAME.PosSaleInfo); m_PosSaleInfo.GetMessage("POSOPEN").MakeMessageOverWrite("IMAGE_ALL_REDOWN_YN", "0"); m_PosSaleInfo.MakeFileFromMessage(BaseCom.NxIniPath + PosConst.INI_FILE_NAME.PosSaleInfo); this.DialogResult = DialogResult.OK; } else { this.DialogResult = DialogResult.Cancel; } this.Close(); } } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); sRet = UserCom.RST_OK; } finally { WinManager.HideSearchMessage(this); } return sRet; } #endregion #region 태크 이미지 로드 /// /// 태크 이미지 로드 /// private void GetTagImg() { try { string sTmpImg = ""; //bool bImg = false; for (int iRow = 1; iRow <= 3; iRow++) { sTmpImg = string.Format(m_TagImgFileName, PosKey.MENU_KEY.POS_SETTING, iRow); string sPicName = "picTabImg" + iRow.ToString(); Control[] ctrls = pnlFunc.Controls.Find(sPicName, false); if (ctrls != null && ctrls[0] is Cosmos.UI.CsmPictureBox) { ((Cosmos.UI.CsmPictureBox)ctrls[0]).Image = CmUtil.LoadImage(BaseCom.NxImgPath + sTmpImg); } } } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } #endregion #region 버튼이미지 로드 /// /// 버튼이미지 로드 /// private void GetBtnImg() { try { // 다운로드 btnPGM.DefaultImage = CmUtil.LoadImage(BaseCom.NxImgPath + ImageManager.MENU_BTN_BLUE_BASIC); btnPGM.ClickImage = CmUtil.LoadImage(BaseCom.NxImgPath + ImageManager.MENU_BTN_BLUE_PRESS); // 영수증 로고 이미지 btnRcptLogo.DefaultImage = CmUtil.LoadImage(BaseCom.NxImgPath + ImageManager.MENU_BTN_BLUE_BASIC); btnRcptLogo.ClickImage = CmUtil.LoadImage(BaseCom.NxImgPath + ImageManager.MENU_BTN_BLUE_PRESS); // 서명패드 업데이트 파일 btnSignUpdateFile.DefaultImage = CmUtil.LoadImage(BaseCom.NxImgPath + ImageManager.MENU_BTN_BLUE_BASIC); btnSignUpdateFile.ClickImage = CmUtil.LoadImage(BaseCom.NxImgPath + ImageManager.MENU_BTN_BLUE_PRESS); // IC리더기 업데이트 btnICReaderUpdate.DefaultImage = CmUtil.LoadImage(BaseCom.NxImgPath + ImageManager.MENU_BTN_BLUE_BASIC); btnICReaderUpdate.ClickImage = CmUtil.LoadImage(BaseCom.NxImgPath + ImageManager.MENU_BTN_BLUE_PRESS); // POS 운영 이미지 btnContents.DefaultImage = CmUtil.LoadImage(BaseCom.NxImgPath + ImageManager.MENU_BTN_ORANGE_BASIC); btnContents.ClickImage = CmUtil.LoadImage(BaseCom.NxImgPath + ImageManager.MENU_BTN_ORANGE_PRESS); // 고객면 이미지 btnCustomer.DefaultImage = CmUtil.LoadImage(BaseCom.NxImgPath + ImageManager.MENU_BTN_ORANGE_BASIC); btnCustomer.ClickImage = CmUtil.LoadImage(BaseCom.NxImgPath + ImageManager.MENU_BTN_ORANGE_PRESS); // 상품이미지 btniTem.DefaultImage = CmUtil.LoadImage(BaseCom.NxImgPath + ImageManager.MENU_BTN_ORANGE_BASIC); btniTem.ClickImage = CmUtil.LoadImage(BaseCom.NxImgPath + ImageManager.MENU_BTN_ORANGE_PRESS); // 캠페인 이미지 btnCampaign.DefaultImage = CmUtil.LoadImage(BaseCom.NxImgPath + ImageManager.MENU_BTN_ORANGE_BASIC); btnCampaign.ClickImage = CmUtil.LoadImage(BaseCom.NxImgPath + ImageManager.MENU_BTN_ORANGE_PRESS); // 시험모드 이미지 btnTestMode.DefaultImage = CmUtil.LoadImage(BaseCom.NxImgPath + ImageManager.MENU_BTN_ORANGE_BASIC); btnTestMode.ClickImage = CmUtil.LoadImage(BaseCom.NxImgPath + ImageManager.MENU_BTN_ORANGE_PRESS); // 마스터(전체) btnMasterAll.DefaultImage = CmUtil.LoadImage(BaseCom.NxImgPath + ImageManager.MENU_BTN_GREEN_BASIC); btnMasterAll.ClickImage = CmUtil.LoadImage(BaseCom.NxImgPath + ImageManager.MENU_BTN_GREEN_PRESS); // 마스터(변경분) btnMasterUpdate.DefaultImage = CmUtil.LoadImage(BaseCom.NxImgPath + ImageManager.MENU_BTN_GREEN_BASIC); btnMasterUpdate.ClickImage = CmUtil.LoadImage(BaseCom.NxImgPath + ImageManager.MENU_BTN_GREEN_PRESS); // 마스터(캠페인-전체) btnCampaignMasterAll.DefaultImage = CmUtil.LoadImage(BaseCom.NxImgPath + ImageManager.MENU_BTN_GREEN_BASIC); btnCampaignMasterAll.ClickImage = CmUtil.LoadImage(BaseCom.NxImgPath + ImageManager.MENU_BTN_GREEN_PRESS); } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } #endregion #region 상태 진행바 /// /// 상태 진행바 /// /// private void SetProgreeBar(Label lblLabel, ProgressBar pbProgreeBar, long nValue, long nMaxValue, string sMsgCD, string sFileName) { string sViewFileName = sFileName; string[] sData = null; double nPercent = 0; try { if (nMaxValue > 0) { nPercent = CmUtil.DoubleMultiplication(CmUtil.DoubleDivision(nValue, nMaxValue), 100); } pbProgreeBar.Visible = true; pbProgreeBar.Minimum = 0; pbProgreeBar.Maximum = 100; pbProgreeBar.Value = (int)Math.Round(nPercent, 0, MidpointRounding.AwayFromZero); pbProgreeBar.Update(); sData = sFileName.Split(new string[] { @"/" }, StringSplitOptions.None); if (sData.Length > 0) sViewFileName = sData[sData.Length - 1]; lblLabel.Visible = true; lblLabel.Text = string.Format(sMsgCD + " (" + m_cPosStatus.Global.NumericToQuantity(nValue) + " / " + m_cPosStatus.Global.NumericToQuantity(nMaxValue) + ")", Math.Round(nPercent, 0, MidpointRounding.AwayFromZero).ToString()) + " >>> " + sViewFileName; lblLabel.Update(); this.Update(); Application.DoEvents(); } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } #endregion #region FTP DownLoad ProgressBar Event /// /// FTP DownLoad ProgressBar Event /// /// /// /// /// public void OnDownloadProgressChanged(string sFileName, long nDownSize, long nTotalSize) { try { SetProgreeBar(lblCount, pbWork, nDownSize, nTotalSize, m_DownLoadMsg, sFileName); } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } #endregion #region 영수증 로고 파일 관리 /// /// 영수증 로고 파일 관리 /// private void SetRcptLogo() { try { if (m_cPosStatus.Base.OlePosPrinterModel != "99") { string sTopLogoTargetFile = BaseFrame.BaseCom.NxImgPath + @"RCPTLOGO\" + m_cPosStatus.Base.BrandDiv + "_TOP.bmp"; string sBotLogoTargetFile = BaseFrame.BaseCom.NxImgPath + @"RCPTLOGO\" + m_cPosStatus.Base.BrandDiv + "_BOT.bmp"; string sTopLogoFile = BaseFrame.BaseCom.NxImgPath + m_cPosStatus.Base.BrandDiv + "_TOP.bmp"; string sBotLogoFile = BaseFrame.BaseCom.NxImgPath + m_cPosStatus.Base.BrandDiv + "_BOT.bmp"; // 새로 다운 받은 영수증로고 이미지 폴더에서 자기 상단영수증로고를 image 폴더로 copy if (File.Exists(sTopLogoTargetFile)) { foreach (string file in Directory.EnumerateFiles(BaseFrame.BaseCom.NxImgPath, "??_TOP.bmp")) { File.Delete(file); } File.Copy(sTopLogoTargetFile, sTopLogoFile, true); } // 새로 다운 받은 영수증로고 이미지 폴더에서 자기 하단영수증로고를 image 폴더로 copy if (File.Exists(sBotLogoTargetFile)) { foreach (string file in Directory.EnumerateFiles(BaseFrame.BaseCom.NxImgPath, "??_BOT.bmp")) { File.Delete(file); } File.Copy(sBotLogoTargetFile, sBotLogoFile, true); } // 새로 다운 받은 영수증로고 이미지 폴더를 삭제 DirectoryInfo di = new DirectoryInfo(BaseFrame.BaseCom.NxImgPath + @"RCPTLOGO\"); if (di.Exists == true) { di.Delete(true); } // 로고 이미지 Printer Upload if (m_cPosStatus.Base.LogoUpload != PosConst.LOGO_UPLOAD_DIV.NO) { IPosPrinterUs cPosPrinterUs = (IPosPrinterUs)sManager.InitServiceInstance(ServiceLists.AGENT_OLEDEVICE.DLL, ServiceLists.AGENT_OLEDEVICE.DEVICE_POSPRINTER); cPosPrinterUs.OpenDevice(PosConst.OPOS_DEVICE.POSPRINTER, PosConst.OPOS_LDN.POSPRINTER); bool bCheckPrinter = true; //#20171212 프린터 상태 체크 여부 추가 start //0: 체크, 1: 체크안함 //기존 /* if (m_cPosStatus.Base.OlePosPrinterModel == PosConst.POS_DEVICE_LIST.POS_PRINTER._1_EPSON) { bCheckPrinter = cPosPrinterUs.CheckPrinter(); } */ //변경 if (m_cPosStatus.Base.OlePosPrinterModel == PosConst.POS_DEVICE_LIST.POS_PRINTER._1_EPSON && m_cPosStatus.Base.OlePosPrinterCheckYn == "0") { bCheckPrinter = cPosPrinterUs.CheckPrinter(); } //#20171212 프린터 상태 체크 여부 추가 end //if (cPosPrinterUs.CheckPrinter() == true) if(bCheckPrinter == true) { if (cPosPrinterUs.SetLogoBmp() == true) { UserLog.WriteLogFile(UserCom.LOG_ERROR , UserCom.INFO_LEVEL , System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name , System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()" , "BMP Logo update successed!"); // 영수증로고 수정일자 PosSaleInfo.ini 저장 IServiceUs cSaveConfigInfo = (IServiceUs)sManager.InitServiceInstance(ServiceLists.BSV_OPEN_CLOSE.DLL, ServiceLists.BSV_OPEN_CLOSE.SAVE_CONFIGINFO); string sRet = cSaveConfigInfo.Execute(new string[] { PosConst.INI_FILE_NAME.PosSaleInfo }); //DirectoryInfo di = new DirectoryInfo(BaseFrame.BaseCom.NxImgPath + "rcpt_logo\\"); //if (di.Exists == true) //{ // di.Delete(true); //} if (m_cPosStatus.Base.LogoUpload == PosConst.LOGO_UPLOAD_DIV.YES) { // 영수증로고 업로드 후 영수증로고 업로드 안 함으로 변경 m_cPosStatus.Base.LogoUpload = PosConst.LOGO_UPLOAD_DIV.NO; // PosConfig.INI 저장 cSaveConfigInfo = (IServiceUs)sManager.InitServiceInstance(ServiceLists.BSV_OPEN_CLOSE.DLL, ServiceLists.BSV_OPEN_CLOSE.SAVE_CONFIGINFO); cSaveConfigInfo.Execute(new string[] { PosConst.INI_FILE_NAME.PosConfig }); } } else { UserLog.WriteLogFile(UserCom.LOG_ERROR , UserCom.INFO_LEVEL , System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name , System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()" , "BMP Logo update failed..."); } //cPosPrinterUs.CloseDevice(); } cPosPrinterUs.CloseDevice(); } else { // Upload 아니더라도 OPOS는 항상 Upload 후 사용 if (m_cPosStatus.Base.OlePosPrinterController == PosConst.POS_DEVICE_CONTROLLER.OPOS) { IPosPrinterUs cPosPrinterUs = (IPosPrinterUs)sManager.InitServiceInstance(ServiceLists.AGENT_OLEDEVICE.DLL, ServiceLists.AGENT_OLEDEVICE.DEVICE_POSPRINTER); cPosPrinterUs.OpenDevice(PosConst.OPOS_DEVICE.POSPRINTER, PosConst.OPOS_LDN.POSPRINTER); if (cPosPrinterUs.SetLogoBmp() == true) { UserLog.WriteLogFile(UserCom.LOG_ERROR , UserCom.INFO_LEVEL , System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name , System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()" , "(OPOS)BMP Logo update successed!"); // 영수증로고 수정일자 PosSaleInfo.ini 저장 IServiceUs cSaveConfigInfo = (IServiceUs)sManager.InitServiceInstance(ServiceLists.BSV_OPEN_CLOSE.DLL, ServiceLists.BSV_OPEN_CLOSE.SAVE_CONFIGINFO); string sRet = cSaveConfigInfo.Execute(new string[] { PosConst.INI_FILE_NAME.PosSaleInfo }); } else { UserLog.WriteLogFile(UserCom.LOG_ERROR , UserCom.INFO_LEVEL , System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name , System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()" , "(OPOS)BMP Logo update failed..."); } } } } } catch (Exception ex) { UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명) System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명)) System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명)) "영수증로고Upload 실패:" + ex.Message); } } #endregion 영수증 로고 파일 관리 #region 프로그램 버전 ini 저장 private string SetProgramVerIni(string sKind, string sVer, string sSeq) { string sRet = UserCom.RST_ERR; try { CmMessage cmPosConfig = CmMessage.MakeMessageFromFile(BaseCom.NxIniPath + PosConst.INI_FILE_NAME.PosConfig); // 프로그램 버전정보 설정 if (sKind == PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_20 + PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_20_DIV.POS_PGM10) { //m_cPosStatus.Ver.ProgramVer = sVer; //m_cPosStatus.Ver.ProgramVerSeq = sSeq; // 프로그램 버전 INI 파일 설정 cmPosConfig.GetMessage("PGMVER").MakeMessageOverWrite("ProgramVer_Update", sVer); cmPosConfig.GetMessage("PGMVER").MakeMessageOverWrite("ProgramVerSeq_Update", sSeq); // 실제 적용시점 (Start)에 버전적용 } else { // 프로그램 버전 INI 파일 설정 cmPosConfig.GetMessage("PGMVER").MakeMessageOverWrite("ProgramVer" + CmUtil.MidH(sKind, 2, 2), sVer); cmPosConfig.GetMessage("PGMVER").MakeMessageOverWrite("ProgramVerSeq" + CmUtil.MidH(sKind, 2, 2), sSeq); } cmPosConfig.MakeFileFromMessage(BaseCom.NxIniPath + PosConst.INI_FILE_NAME.PosConfig); 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; } #endregion #region 프로그램 버전 ini 읽기 private string GetProgramVerIni(string sKind, bool bVerOnly) { string sRet = ""; try { CmMessage cmPosConfig = CmMessage.MakeMessageFromFile(BaseCom.NxIniPath + PosConst.INI_FILE_NAME.PosConfig); // 프로그램 버전정보 읽기 string sProgramVer = CmUtil.StringNullEmpty(cmPosConfig.GetMessage("PGMVER").GetMessageValue("ProgramVer" + CmUtil.MidH(sKind, 2, 2))); string sProgramVerSeq = CmUtil.StringNullEmpty(cmPosConfig.GetMessage("PGMVER").GetMessageValue("ProgramVerSeq" + CmUtil.MidH(sKind, 2, 2))); sRet = sProgramVer + (bVerOnly == true ? sProgramVerSeq : ""); } 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; } #endregion #region 설정 파일 읽기 /// /// 설정 파일 읽기 /// /// /// /// /// /// private string GetConfigInfo(CmMessage cCfgInfo, string sGroup, string sValueName, string sDefault = "") { try { string sValue = cCfgInfo.GetMessage(sGroup).GetMessageValue(sValueName); //if (sValue == null) if (string.IsNullOrWhiteSpace(sValue)) return sDefault; else return sValue; } catch { } return sDefault; } #endregion #region DataTable 복사 /// /// DataTable 복사 /// /// 소스 테이블 /// 타겟 테이블 public void DataTableCopy(DataTable sourceTable, ref DataTable targetTable) { try { if (targetTable.Rows.Count <= 0) targetTable = sourceTable.Clone(); for (int i = 0; i < sourceTable.Rows.Count; i++) { object array = sourceTable.Rows[i].ItemArray.Clone(); DataRow targetRow = targetTable.NewRow(); targetRow.ItemArray = (object[])array; targetTable.Rows.Add(targetRow); } } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } #endregion #region TCP/IP Mode DownLaod /// /// Fluent_Connect /// /// /// /// /// /// private int Fluent_Connect(string sServerIP, int iServerPort, string sUserID, string sPassword, int nTimeOut) { bool bRet = false; int iRet = -1; try { // 접속정보 설정 Fcl.Host = sServerIP.Trim(); // 2019-05-13 - 1997fx11 : 테스트환경에서는 SFTP, but 모든 POS는 FTP를 사용하기때문에 임시로 적용. //Fcl.Port = iServerPort; Fcl.SslProtocols = System.Security.Authentication.SslProtocols.Default; // 2019-05-13 - 1997fx11 : 테스트환경에서는 SFTP, but 모든 POS는 FTP를 사용하기때문에 임시로 적용. Fcl.Credentials = new NetworkCredential(sUserID.Trim(), sPassword.Trim()); Fcl.ConnectTimeout = nTimeOut; Fcl.ReadTimeout = nTimeOut; Fcl.Connect(); // 접속 불가시 Skip bRet = Fcl.IsConnected; if (bRet == true) { iRet = 0; } else { iRet = -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 iRet; } /// /// Fluent_Download /// /// /// /// /// private int Fluent_Download(string sLocalPath, string sServerPath, string sFileName) { bool bRet = false; int iRet = -1; try { // 로컬 디렉토리 생성 if (Directory.Exists(sLocalPath.Trim()) != true) Directory.CreateDirectory(sLocalPath.Trim()); // 로컬 파일 삭제 if (File.Exists(sLocalPath.Trim() + @"\" + sFileName.Trim()) != true) File.Delete(sLocalPath.Trim() + @"\" + sFileName.Trim()); // 접속정보 설정 if (Fcl.IsConnected != true) { // 재접속 Fcl.Connect(); // 접속 불가시 Skip if (Fcl.IsConnected != true) { return iRet; } } // 다운로드 진행 bRet = Fcl.DownloadFile(sLocalPath.Trim() + @"\" + sFileName.Trim(), sServerPath.Trim() + @"\" + sFileName.Trim()); if (bRet == true) iRet = 0; } 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 iRet; } /// /// FTP 다운로드 유형 (TCP/IP) 조회 /// /// private string GetFTPDownloadMode() { string sRet = ""; try { CmMessage cmPosConfig = CmMessage.MakeMessageFromFile(BaseCom.NxIniPath + PosConst.INI_FILE_NAME.PosConfig); string sFTPDownLoadTCPMode = CmUtil.StringNullEmpty(GetConfigInfo(cmPosConfig, "SERVER", "FTPDownLoadTCPMode")); if (sFTPDownLoadTCPMode == null || sFTPDownLoadTCPMode.Length <= 0) { cmPosConfig.GetMessage("SERVER").MakeMessageOverWrite("FTPDownLoadTCPMode", "0"); cmPosConfig.MakeFileFromMessage(BaseCom.NxIniPath + PosConst.INI_FILE_NAME.PosConfig); sFTPDownLoadTCPMode = "0"; } sRet = sFTPDownLoadTCPMode; } 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; } #endregion #region 타이머 /// /// 프로그램 업데이트 있는지 조회 요청후 다운로드 /// /// /// private void tmStart_Tick(object sender, EventArgs e) { string sRet = UserCom.RST_ERR; try { tmStart.Enabled = false; // 프로그램 업데이트 있는지 조회 요청후 다운로드 sRet = PGMUpdateCheck(PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_ALL + PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_ALL_DIV.ALL_PGM, m_cUpDateMode); } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } #endregion //#20180919 IC/MSR 폴더 삭제 후 배포받은 파일로 다시 생성해주기 start #region IC/MSR 폴더 삭제 후 배포받은 파일로 다시 생성해주기 private void FolderDelete_ReCreate(string sGroup) { try { // 프로그램 파일 다운로드일 때만!! if (sGroup != PosConst.PGM_UPDATE_TYPE.POSDOWN_GROUP_20) return; // 현재 디렉토리 DirectoryInfo dirParent = Directory.GetParent(Directory.GetCurrentDirectory()); string sTargetDirectory = ""; // IC 버전인지 MSR 버전인지 체크 CmMessage cmDeviceInfo = CmMessage.MakeMessageFromFile(dirParent.FullName + @"\INI\PosDevice.INI"); string sICReaderUseYn = cmDeviceInfo.GetMessage("ICREADER").GetMessageValue("UseFlag"); // IC 버전 if (sICReaderUseYn == "1") { // ic폴더 안에있는 파일 삭제 sTargetDirectory = dirParent.FullName + @"\BIN\IC\"; } // MSR 버전 else { // msr폴더 안에있는 파일 삭제 sTargetDirectory = dirParent.FullName + @"\BIN\MSR\"; } // 해당 경로의 하위파일 모두 삭제 string[] fFilePath = Directory.GetFiles(sTargetDirectory); foreach (string fFileName in fFilePath) { File.Delete(fFileName); } } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } #endregion //#20180919 IC/MSR 폴더 삭제 후 배포받은 파일로 다시 생성해주기 end } }