3587 lines
186 KiB
C#
3587 lines
186 KiB
C#
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading;
|
|
using System.Threading.Tasks;
|
|
using System.IO;
|
|
using System.Data;
|
|
using System.Windows.Forms;
|
|
|
|
namespace NewPosInstaller
|
|
{
|
|
public class PosDataMigration : Echo, IProcess
|
|
{
|
|
//private bool isStop = false;
|
|
|
|
private bool isExistsKVS = false;
|
|
|
|
public bool Execute()
|
|
{
|
|
bool retValue = false;
|
|
try
|
|
{
|
|
ComLog.InstallResult ret = ComLog.InstallResult.Fail;
|
|
|
|
// PosConfig.INI 정보 이행
|
|
ret = MigrationConfig();
|
|
if (ret != ComLog.InstallResult.Success) return retValue = false;
|
|
|
|
// PosDevice.INI 정보 이행
|
|
ret = MigrationDevice();
|
|
|
|
// PosSale.INI 정보 이행
|
|
retValue = MigrationSaleInfo();
|
|
|
|
// 주방프린터 마스터 이행 (서버전송)
|
|
// 주방모니터 마스터 이행 (서버전송)
|
|
ret = MigrationKPSMaster();
|
|
|
|
// SPCTouchTxt.exe 실행 파라미터는 브랜드코드 점포코드 POS번호
|
|
bool isBackup = true;
|
|
retValue = ExcuteSPCTouchTxt();
|
|
|
|
// 터치키 마스터 이행 (서버전송) => BR만 이행처리
|
|
ret = MigrationTouchKeyMaster();
|
|
if (ret == ComLog.InstallResult.Fail) isBackup = false;
|
|
|
|
// 플레이버 마스터 이행 (서버전송) => BR만 이행처리
|
|
ret = MigrationFlavorMaster();
|
|
if (ret == ComLog.InstallResult.Fail) isBackup = false;
|
|
|
|
// 층/테이블 마스터 이행 (로컬저장, 서버백업) => 후불
|
|
ret = MigrationTableMaster();
|
|
|
|
// 기타코드 이행 (로컬저장)
|
|
ret = MigrationEtcCode();
|
|
|
|
// 테이블예약 이행 (로컬저장, 안하기로 했지만 그냥 )
|
|
ret = MigrationTableResv();
|
|
|
|
// LocalTBL backup
|
|
if (ComLib.ExistDirectory(DirInfo.JinDir) && isBackup)
|
|
{
|
|
string backPath = string.Format(DirInfo.JinDirBck, DateTime.Now.ToString("yyyyMMddHHmm"));
|
|
ComLib.DirectoryCopy(DirInfo.JinDir, backPath);
|
|
ComLog.WriteLog(ComLog.Level.trace
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, string.Format(" => JirDir Backup, BackupDir={0}", backPath));
|
|
}
|
|
else
|
|
{
|
|
ComLog.WriteLog(ComLog.Level.trace
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, string.Format(" => JirDir Backup skip"));
|
|
}
|
|
|
|
BasicInfo.OldPosTransDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
|
|
|
// 기타정보 이행 (파일복사, POS터미널 정보 서버전송)
|
|
ret = MigrationEtcInfo();
|
|
|
|
// 포스옵션정보 이행
|
|
ret = MigratinoPosOption();
|
|
|
|
return true;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
ComLog.WriteLog(ComLog.Level.Exception
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, ex.Message);
|
|
return false;
|
|
}
|
|
}
|
|
|
|
public void Stop()
|
|
{
|
|
//this.isStop = true;
|
|
}
|
|
|
|
/// <summary>
|
|
/// PosConfig.INI 정보 이행
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
private ComLog.InstallResult MigrationConfig()
|
|
{
|
|
string statusMsg = string.Empty;
|
|
ComLog.InstallResult retValue = ComLog.InstallResult.Fail;
|
|
try
|
|
{
|
|
base.OnEcho("Migration POS configuration information.");
|
|
|
|
ComLog.WriteLog(ComLog.Level.trace
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, "Start");
|
|
|
|
string temp = string.Empty;
|
|
string value = string.Empty;
|
|
string posConfigFile = Path.Combine(DirInfo.InstallDir, @"INI\PosConfig.ini");
|
|
|
|
CmMessage cmConfigInfo = CmMessage.MakeMessageFromFile(posConfigFile);
|
|
|
|
cmConfigInfo.GetMessage("POS ").MakeMessageOverWrite("CmpCd ", BasicInfo.CompCd);
|
|
cmConfigInfo.GetMessage("POS ").MakeMessageOverWrite("StoreNo ", BasicInfo.StoreNo);
|
|
cmConfigInfo.GetMessage("POS ").MakeMessageOverWrite("PosNo ", BasicInfo.PosNo);
|
|
|
|
//// 공항공사 관리 공항 입점POS 여부(0:일반, 1:공항공사 관리 공항 입점POS)
|
|
//temp = IniFile.GetValue(BasicInfo.OldStoreINI, "SHOPINFO", "AIRPORT_KIMHAE_DIV", "0");
|
|
//cmConfigINfo.GetMessage("POS ").MakeMessageOverWrite("KacPos ", temp);
|
|
|
|
//// 공항공사 관리 공항 ERP상의 계약번호 (코너번호)
|
|
//temp = IniFile.GetValue(BasicInfo.OldStoreINI, "SHOPINFO", "AIRPORT_KIMHAE_CON_NO", ""); // 0000023884 값으로 추정됨.
|
|
//cmConfigINfo.GetMessage("POS ").MakeMessageOverWrite("KacConNo ", temp);
|
|
|
|
//// 고속도로 휴게소 입점POS 여부(0:일반, 1:고속도록 휴게소 입점POS)
|
|
//string ExPos = IniFile.GetValue(BasicInfo.OldStoreINI, "SHOPINFO", "HIWAY_DIV", "0");
|
|
//cmConfigINfo.GetMessage("POS ").MakeMessageOverWrite("ExPos ", ExPos);
|
|
|
|
// @ 확인필요 => AS-IS 마스터로 관리 했다고 함.
|
|
// 고속도로 휴게소 매장코드 (9 byte)
|
|
//temp = IniFile.GetValue(BasicInfo.OldStoreINI, "SHOPINFO", "", "");
|
|
//if (ExPos == "1" && string.IsNullOrWhiteSpace(temp)) temp = "S00000104"; // S00000104 값으로 추정됨.
|
|
//cmConfigINfo.GetMessage("POS ").MakeMessageOverWrite("ExStoreCd ", temp);
|
|
|
|
// @ 확인필요 => AS-IS 마스터로 관리 했다고 함.
|
|
// 고속도로 휴게소 코너코드 (4 byte)
|
|
//temp = IniFile.GetValue(BasicInfo.OldStoreINI, "SHOPINFO", "", "");
|
|
//if (ExPos == "1" && string.IsNullOrWhiteSpace(temp)) temp = "0008"; // 0008 값으로 추정됨.
|
|
//cmConfigINfo.GetMessage("POS ").MakeMessageOverWrite("ExCornerCd ", temp);
|
|
|
|
// 디지털메뉴보드 I/F 여부 => 초기값 = 0
|
|
cmConfigInfo.GetMessage("POS ").MakeMessageOverWrite("DmbIf ", "0");
|
|
|
|
cmConfigInfo.GetMessage("POS ").MakeMessageOverWrite("BrandCd ", BasicInfo.BrandCd);
|
|
cmConfigInfo.GetMessage("POS ").MakeMessageOverWrite("BrandDiv ", BasicInfo.BrandGb);
|
|
cmConfigInfo.GetMessage("POS ").MakeMessageOverWrite("LogLevel ", "3");
|
|
cmConfigInfo.GetMessage("POS ").MakeMessageOverWrite("LogoUpload ", "0");
|
|
|
|
// 점포정보
|
|
cmConfigInfo.GetMessage("STORE").MakeMessageOverWrite("Name", BasicInfo.StoreNm); // Add, 2017.03.03
|
|
cmConfigInfo.GetMessage("STORE").MakeMessageOverWrite("Address", BasicInfo.StoreAddr); // Add, 2017.03.03
|
|
|
|
// 통신서버 IP
|
|
//cmConfigInfo.GetMessage("SERVER ").MakeMessageOverWrite("CommSvrIp ", ServerInfo.SvrIP); // Mod, 2017.03.21
|
|
cmConfigInfo.GetMessage("SERVER ").MakeMessageOverWrite("CommSvrIp ", ServerInfo.SvrName);
|
|
// 디지털메뉴보드 서버 IP = 기본값 공백
|
|
cmConfigInfo.GetMessage("SERVER ").MakeMessageOverWrite("DmbSvrIp ", "");
|
|
|
|
// Del, 2017.03.01
|
|
//// 도로공사 매출전송URL
|
|
//temp = IniFile.GetValue(BasicInfo.OldStoreINI, "SHOPINFO", "FHIWAY_TRAN_URL", "");
|
|
////if (string.IsNullOrWhiteSpace(temp))
|
|
//// temp = IniFile.GetValue(BasicInfo.OldStoreINI, "SHOPINFO", "HIWAY_TRAN_URL", @"http://skhiway.com/SvrApp/SL000.java");
|
|
//cmConfigINfo.GetMessage("SERVER ").MakeMessageOverWrite("ExTranUrl ", temp);
|
|
|
|
//// 도로공사 마감전송URL
|
|
//temp = IniFile.GetValue(BasicInfo.OldStoreINI, "SHOPINFO", "FHIWAY_CALC_URL", "");
|
|
////if (string.IsNullOrWhiteSpace(temp))
|
|
//// temp = IniFile.GetValue(BasicInfo.OldStoreINI, "SHOPINFO", "HIWAY_CALC_URL", @"http://skhiway.com/SvrApp/PS000.java");
|
|
//cmConfigINfo.GetMessage("SERVER ").MakeMessageOverWrite("ExCalcUrl ", temp);
|
|
|
|
|
|
// Add, 2017.03.01, FTP Mode 0:ActiveMode, 1:PassviceMode(Default)
|
|
// Mod, 2017.04.21, 삼립(국내)은 PassviceMode 모드로 강제 이행처리
|
|
// => 2017.04.21 직)그릭슈바인 양재역점 오픈시 AS-IS POS 설정(ActiveMode)으로 이행 후 FTP 접속오류 발생...
|
|
if (BasicInfo.CompCd == "SLKR")
|
|
{
|
|
value = "1";
|
|
}
|
|
else
|
|
{
|
|
temp = IniFile.GetValue(BasicInfo.OldFtpINI, "FTPINFO", "FTPPASSIVE");
|
|
value = temp.ToUpper() == "N" ? "0" : "1";
|
|
}
|
|
cmConfigInfo.GetMessage("SERVER ").MakeMessageOverWrite("FtpConnType ", value);
|
|
|
|
|
|
// 데이터베이스 정보 (암호화)
|
|
temp = UserAES.StaticKeyEncrypt(DatabaseInfo.DataSource);
|
|
cmConfigInfo.GetMessage("DATABASE ").MakeMessageOverWrite("LocalSource ", temp);
|
|
temp = UserAES.StaticKeyEncrypt("POSMST");
|
|
cmConfigInfo.GetMessage("DATABASE ").MakeMessageOverWrite("LocalCatalog ", temp);
|
|
temp = UserAES.StaticKeyEncrypt(DatabaseInfo.UserId);
|
|
cmConfigInfo.GetMessage("DATABASE ").MakeMessageOverWrite("LocalUserID ", temp);
|
|
temp = UserAES.StaticKeyEncrypt(DatabaseInfo.Password);
|
|
cmConfigInfo.GetMessage("DATABASE ").MakeMessageOverWrite("LocalPassword ", temp);
|
|
|
|
// 글로벌
|
|
//cmConfigINfo.GetMessage("GLOBAL ").MakeMessageOverWrite("Country ", BasicInfo._country);
|
|
//cmConfigINfo.GetMessage("GLOBAL ").MakeMessageOverWrite("CultureID ", BasicInfo._cultureid);
|
|
//cmConfigINfo.GetMessage("GLOBAL ").MakeMessageOverWrite("Font ", BasicInfo._font);
|
|
//cmConfigINfo.GetMessage("GLOBAL ").MakeMessageOverWrite("FontFix ", BasicInfo._fontFix);
|
|
temp = cmConfigInfo.GetMessage("GLOBAL").GetValue("Country ");
|
|
temp = cmConfigInfo.GetMessage("GLOBAL").GetValue("CultureID");
|
|
temp = cmConfigInfo.GetMessage("GLOBAL").GetValue("Font ");
|
|
temp = cmConfigInfo.GetMessage("GLOBAL").GetValue("FontFix ");
|
|
|
|
// 이미지 미출력시 출력할 글씨
|
|
temp = IniFile.GetValue(BasicInfo.OldStoreINI, "SHOPINFO", "PRTHEADER1_PRT", "");
|
|
cmConfigInfo.GetMessage("PRINT ").MakeMessageOverWrite("TextLogoMsg1 ", temp);
|
|
temp = IniFile.GetValue(BasicInfo.OldStoreINI, "SHOPINFO", "PRTHEADER2_PRT", "");
|
|
cmConfigInfo.GetMessage("PRINT ").MakeMessageOverWrite("TextLogoMsg2 ", temp);
|
|
|
|
|
|
// 저장
|
|
cmConfigInfo.MakeFileFromMessage(posConfigFile);
|
|
|
|
|
|
#region ### 기타정보 서버전송
|
|
|
|
// TPay 사용 유무
|
|
temp = IniFile.GetValue(BasicInfo.OldStoreINI, "SHOPINFO", "TPAY_DIV", "");
|
|
temp = string.IsNullOrWhiteSpace(temp) ? "0" : temp;
|
|
value = temp == "1" ? "USED" : "NONE";
|
|
if (CheckInfo.TPayUsed != value)
|
|
{
|
|
if (ComLog.SendStatus(ComLog.CheckStatus.TPAY_USE, value, "TPay Use"))
|
|
CheckInfo.TPayUsed = value;
|
|
}
|
|
|
|
// TPay BLE 사용유무
|
|
temp = IniFile.GetValue(BasicInfo.OldStoreINI, "SHOPINFO", "TPAY_BLE_DIV", "");
|
|
temp = string.IsNullOrWhiteSpace(temp) ? "0" : temp;
|
|
value = temp == "1" ? "USED" : "NONE";
|
|
if (CheckInfo.TPayBleUsed != value)
|
|
{
|
|
if (ComLog.SendStatus(ComLog.CheckStatus.TPAY_BLE_USE, value, "TPay BLE Use"))
|
|
CheckInfo.TPayBleUsed = value;
|
|
}
|
|
|
|
#endregion
|
|
|
|
return retValue = ComLog.InstallResult.Success;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
statusMsg = "Exception : " + ex.Message;
|
|
ComLog.WriteLog(ComLog.Level.Exception
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, " => " + statusMsg);
|
|
return retValue = ComLog.InstallResult.Fail;
|
|
}
|
|
finally
|
|
{
|
|
ComLog.WriteLog(ComLog.Level.trace
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, string.Format("End, Result={0}", ComLog.InstallResultStr[(int)retValue]));
|
|
|
|
// 상태로그 전송 (04:POS Config info migration )
|
|
if (string.IsNullOrWhiteSpace(statusMsg))
|
|
statusMsg = string.Format("POS Config info migration. Result={0}", ComLog.InstallResultStr[(int)retValue]);
|
|
ComLog.SendStatus(ComLog.InstallStatus.ConfigMigration, retValue, statusMsg);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// PosDevice.INI 정보 이행
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
/// <remarks>
|
|
/// _PosDevice.INI.sample 참조
|
|
/// </remarks>
|
|
private ComLog.InstallResult MigrationDevice()
|
|
{
|
|
string statusMsg = string.Empty;
|
|
ComLog.InstallResult retValue = ComLog.InstallResult.Fail;
|
|
try
|
|
{
|
|
base.OnEcho("Migration POS device information.");
|
|
|
|
ComLog.WriteLog(ComLog.Level.trace
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, "Start");
|
|
|
|
|
|
string temp = string.Empty;
|
|
string value = string.Empty;
|
|
string deviceInfoFile = Path.Combine(DirInfo.InstallDir, @"INI\PosDevice.INI");
|
|
|
|
CmMessage cmDeviceInfo = CmMessage.MakeMessageFromFile(deviceInfoFile);
|
|
|
|
#region ### POSPRINTER (PC,SL / BR 다름)
|
|
|
|
// AS-IS PRINT_TYPE=0 PC = 0:사용안함, 1:LPT, 2:SERIAL, 3:OPOS-IBM
|
|
// SL = 0:사용안함, 1:LPT, 2:SERIAL
|
|
// BR = 0:사용안함, 1:EPSON, 2:TOSHIBA
|
|
// TO-BE 1:RS232, 2:OPOS, 3:LPT
|
|
temp = IniFile.GetValue(BasicInfo.OldDeviceINI, "DEVICEINFO", "PRINT_TYPE", "");
|
|
if (BasicInfo.CompCd.StartsWith("BR"))
|
|
{
|
|
switch (temp)
|
|
{
|
|
case "0": value = ""; break;
|
|
default: value = "1"; break;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
switch (temp)
|
|
{
|
|
case "0": value = ""; break;
|
|
case "1": value = "3"; break; // 1:LPT -> 3:LPT
|
|
case "2": value = "1"; break; // 2:SERIAL -> 1:RS232
|
|
case "3": value = "2"; break; // 3:OPOS -> 2:OPOS
|
|
default: value = "1"; break;
|
|
}
|
|
}
|
|
cmDeviceInfo.GetMessage("POSPRINTER").MakeMessageOverWrite("Controller", value);
|
|
|
|
// 프린터 모델
|
|
if (BasicInfo.CompCd.StartsWith("BR"))
|
|
{
|
|
// AS-IS PRINT_TYPE=0 BR = 0:사용안함, 1:EPSON, 2:TOSHIBA
|
|
// TO-BE 1:EPSON, 2:TOSHIBA, 3:IBM, 5:BIXOLON, 6:P2C
|
|
temp = IniFile.GetValue(BasicInfo.OldDeviceINI, "DEVICEINFO", "PRINT_TYPE", "");
|
|
switch (temp)
|
|
{
|
|
case "1": value = "1"; break; // 1:EPSON -> 1:EPSON
|
|
case "2": value = "2"; break; // 2:TOSHIBA -> 2:TOSHIBA
|
|
default: value = ""; break;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
// AS-IS PRINT_KIND=0 PC = 0:EPSON, 1:TOSHIBA, 2:IBM
|
|
// SL = 0:EPSON, 1:TOSHIBA, 2:IBM
|
|
// TO-BE 1:EPSON, 2:TOSHIBA, 3:IBM, 5:BIXOLON, 6:P2C
|
|
temp = IniFile.GetValue(BasicInfo.OldDeviceINI, "DEVICEINFO", "PRINT_KIND", "");
|
|
switch (temp)
|
|
{
|
|
case "0": value = "1"; break; // 0:EPSON -> 1:EPSON
|
|
case "1": value = "2"; break; // 1:TOSHIBA -> 2:TOSHIBA
|
|
case "2": value = "3"; break; // 2:IBM -> 3:IBM
|
|
default: value = temp; break;
|
|
}
|
|
}
|
|
cmDeviceInfo.GetMessage("POSPRINTER").MakeMessageOverWrite("Model", value);
|
|
|
|
value = IniFile.GetValue(BasicInfo.OldDeviceINI, "DEVICEINFO", "PRINT_PORT", "");
|
|
cmDeviceInfo.GetMessage("POSPRINTER").MakeMessageOverWrite("SerialPortNumber", value);
|
|
|
|
value = IniFile.GetValue(BasicInfo.OldDeviceINI, "DEVICEINFO", "PRINT_BUAD", "");
|
|
cmDeviceInfo.GetMessage("POSPRINTER").MakeMessageOverWrite("SerialBaudRate", value);
|
|
|
|
// 0:미사용, 1:사용
|
|
temp = IniFile.GetValue(BasicInfo.OldDeviceINI, "DEVICEINFO", "PRINT_TYPE", "0");
|
|
value = temp == "0" ? "0" : "1";
|
|
cmDeviceInfo.GetMessage("POSPRINTER").MakeMessageOverWrite("UseFlag", value);
|
|
|
|
#endregion
|
|
|
|
#region ### SCANNER (TO-BE 미사용)
|
|
// To-Be 미사용
|
|
|
|
//// SCANNER_TYPE 0:사용안함, 1:USB, 2:SERIAL
|
|
//value = IniFile.GetValue(BasicInfo.OldDeviceINI, "DEVICEINFO", "SCANNER_TYPE", "");
|
|
//cmDeviceInfo.GetMessage("SCANNER").MakeMessageOverWrite("Controller", value);
|
|
|
|
//value = IniFile.GetValue(BasicInfo.OldDeviceINI, "DEVICEINFO", "SCANNER_PORT", "");
|
|
//cmDeviceInfo.GetMessage("SCANNER").MakeMessageOverWrite("SerialPortNumber", value);
|
|
|
|
//value = IniFile.GetValue(BasicInfo.OldDeviceINI, "DEVICEINFO", "SCANNER_PORT", "");
|
|
//cmDeviceInfo.GetMessage("SCANNER").MakeMessageOverWrite("SerialPortNumber", value);
|
|
|
|
#endregion
|
|
|
|
#region ### CDP
|
|
|
|
// CDP_TYPE 1:듀얼모니터, 2:CDP Comport
|
|
// 1:SERIAL
|
|
temp = IniFile.GetValue(BasicInfo.OldDeviceINI, "DEVICEINFO", "CDP_TYPE", "");
|
|
switch (temp)
|
|
{
|
|
case "2": value = "1"; break;
|
|
default: value = ""; break;
|
|
}
|
|
cmDeviceInfo.GetMessage("CDP").MakeMessageOverWrite("Controller", value);
|
|
|
|
// CDP_KIND 0 : Toshiba CDP, 1 : XN CDP
|
|
value = IniFile.GetValue(BasicInfo.OldDeviceINI, "DEVICEINFO", "CDP_KIND", "");
|
|
cmDeviceInfo.GetMessage("CDP").MakeMessageOverWrite("Model", value);
|
|
|
|
value = IniFile.GetValue(BasicInfo.OldDeviceINI, "DEVICEINFO", "CDP_PORT", "");
|
|
cmDeviceInfo.GetMessage("CDP").MakeMessageOverWrite("SerialPortNumber", value);
|
|
|
|
value = IniFile.GetValue(BasicInfo.OldDeviceINI, "DEVICEINFO", "CDP_BAUD", "");
|
|
cmDeviceInfo.GetMessage("CDP").MakeMessageOverWrite("SerialBaudRate", value);
|
|
|
|
// CDP_TYPE 1:듀얼모니터, 2:CDP Comport
|
|
// 0:미사용, 1:사용
|
|
temp = IniFile.GetValue(BasicInfo.OldDeviceINI, "DEVICEINFO", "CDP_TYPE", "");
|
|
switch (temp)
|
|
{
|
|
case "2": value = "1"; break;
|
|
default: value = "0"; break;
|
|
}
|
|
cmDeviceInfo.GetMessage("CDP").MakeMessageOverWrite("UseFlag", value);
|
|
|
|
#endregion
|
|
|
|
#region ### CASHDRAWER
|
|
|
|
// 1. 2016.12.22(목) 확인 사항
|
|
// * 3:DLL-TPS8700, 4:DLL-VPS9700, 5:IBM-본체 제어방식에 대한 개발이 안되어있음
|
|
// * 3:DLL-TPS8700, 4:DLL-VPS9700은 벨크리텍 장비로 추정되고 사용하지 않는다고 함. (안호성C 확인)
|
|
//
|
|
// AS-IS CASHDRAWER_TYPE=0 0:사용안함, 1:프린터, 2:OPOS-IBM, 3:DLL-TPS8700, 4:DLL-VPS9700, 5:IBM-본체
|
|
// TO-BE CashDrawerType 0:OPOS 1:RS232(프린터) 2:IBM본체연결 => 변경됨(2017.02.15)
|
|
// (TO-BE 변경, 2017.02.15)
|
|
// TO-BE CashDrawerType 1:프린터, 2:OPOS-IBM, 3:DLL-TPS8700, 4:DLL-VPS9700, 5:IBM-본체
|
|
|
|
//temp = IniFile.GetValue(BasicInfo.OldDeviceINI, "DEVICEINFO", "CASHDRAWER_TYPE", "");
|
|
//switch (temp)
|
|
//{
|
|
// case "0": value = ""; break; // 0:사용안함
|
|
// case "1": value = "1"; break; // 1:프린터 -> 1:RS232
|
|
// case "2": value = "0"; break; // 2:OPOS-IBM -> 0:OPOS
|
|
// case "5": value = "2"; break; // 5:IBM-본체 -> 2:IBM본체연결
|
|
// default: value = "X" + temp; break;
|
|
//}
|
|
value = IniFile.GetValue(BasicInfo.OldDeviceINI, "DEVICEINFO", "CASHDRAWER_TYPE", ""); // Mod, 2017.02.15
|
|
cmDeviceInfo.GetMessage("CASHDRAWER").MakeMessageOverWrite("CashDrawerType", value);
|
|
|
|
// 0:미사용, 1:사용
|
|
temp = IniFile.GetValue(BasicInfo.OldDeviceINI, "DEVICEINFO", "CASHDRAWER_TYPE", "");
|
|
value = temp == "0" ? "0" : "1";
|
|
cmDeviceInfo.GetMessage("CASHDRAWER").MakeMessageOverWrite("UseFlag", value);
|
|
|
|
// PORT
|
|
value = IniFile.GetValue(BasicInfo.OldDeviceINI, "DEVICEINFO", "CASHDRAWER_PORT", ""); // Add, 2017.02.15
|
|
cmDeviceInfo.GetMessage("CASHDRAWER").MakeMessageOverWrite("SerialPortNumber", value);
|
|
// BaudRate
|
|
value = IniFile.GetValue(BasicInfo.OldDeviceINI, "DEVICEINFO", "CASHDRAWER_BAUD", ""); // Add, 2017.02.15
|
|
cmDeviceInfo.GetMessage("CASHDRAWER").MakeMessageOverWrite("SerialBaudRate", value);
|
|
|
|
#endregion
|
|
|
|
#region ### MSR
|
|
|
|
// AS-IS의 모든 설정값을 이행 한다.
|
|
// Keybord Wedge 방식만 있다고 SPC에서 지랄함.
|
|
// Toshiba pos 는 D:\ST-A20.A00 Program\NEW ST-A20 OPOS WinV1007\TECMCR.exe 시작프로그램으로 구동 OPOS to keybord wedge 변환 처리
|
|
|
|
// AS-IS MSR_TYPE PC = 0:사용안함, 1:USB, 2:SERIAL, 3:OPOS-IBM, 4:IBM-SERIAL, 5:IC-보안
|
|
// SL = 0:사용안함, 1:USB, 2:SERIAL, 3:E70-SERIAL, 4:IC-보안
|
|
// BR = 0:사용안함, 1:USB, 2:SERIAL, 3:SERIAL[FUJITSU], 4:IC, 5:SERIAL[IBM-SERIAL]
|
|
// TO-BE 1:USB(KeybordWedge), 2:Serial(에뮬레이터제어)
|
|
|
|
#region (주석) 2017.04.17, 시리얼 장비가 존재한다.
|
|
//temp = IniFile.GetValue(BasicInfo.OldDeviceINI, "DEVICEINFO", "MSR_TYPE", "");
|
|
|
|
//// MSR 사용구분 0:미사용, 1:사용
|
|
//string msrUse = string.Empty;
|
|
|
|
//// AS-IS MSR_TYPE이 IC-보안이면, TO-BE UseFlag 미사용
|
|
//if (temp == "0")
|
|
// msrUse = "0";
|
|
//else if (BasicInfo.CompCd.StartsWith("PC") && temp == "5")
|
|
// msrUse = "0";
|
|
//else if (BasicInfo.CompCd.StartsWith("SL") && temp == "4")
|
|
// msrUse = "0";
|
|
//else if (BasicInfo.CompCd.StartsWith("BR") && temp == "4")
|
|
// msrUse = "0";
|
|
//else
|
|
// msrUse = "1";
|
|
//cmDeviceInfo.GetMessage("MSR").MakeMessageOverWrite("UseFlag", msrUse);
|
|
|
|
//// 제어방식, TO-BE는 1:USB(KeybordWedge) 방식만 존재함.
|
|
//cmDeviceInfo.GetMessage("MSR").MakeMessageOverWrite("Controller", "1");
|
|
|
|
//value = IniFile.GetValue(BasicInfo.OldDeviceINI, "DEVICEINFO", "MSR_PORT", "");
|
|
//cmDeviceInfo.GetMessage("MSR").MakeMessageOverWrite("SerialPortNumber", value);
|
|
|
|
//value = IniFile.GetValue(BasicInfo.OldDeviceINI, "DEVICEINFO", "MSR_BAUD", "");
|
|
//cmDeviceInfo.GetMessage("MSR").MakeMessageOverWrite("SerialBaudRate", value);
|
|
|
|
//// AS-IS MSR_STYPE 0:NORMAL, 1:TOSHIBA
|
|
//// TO-BE Model 0:NORMAL, 1:TOSHIBA
|
|
//value = IniFile.GetValue(BasicInfo.OldDeviceINI, "DEVICEINFO", "MSR_STYPE", "");
|
|
//cmDeviceInfo.GetMessage("MSR").MakeMessageOverWrite("Model", value);
|
|
|
|
//// 황건일C 요청으로 TrackIIData stx, etx 재정의
|
|
////MSR_TRACK=0 SP = 0: ';' 1 byte 제거, 마지막 BYTE '?' 제거 , 1: '?' 1 byte 제거
|
|
//// SL = 0: ';' 1 byte 제거, 마지막 BYTE '?' 제거 , 1: '?' 1 byte 제거
|
|
//// BR = X
|
|
//temp = IniFile.GetValue(BasicInfo.OldDeviceINI, "DEVICEINFO", "MSR_TRACK", "");
|
|
//string stx = string.Empty;
|
|
//string etx = string.Empty;
|
|
//switch (temp)
|
|
//{
|
|
// case "0": stx = ";"; etx = "?"; break;
|
|
// case "1": stx = "?"; etx = ""; break;
|
|
//}
|
|
//cmDeviceInfo.GetMessage("MSR").MakeMessageOverWrite("STX", stx);
|
|
//cmDeviceInfo.GetMessage("MSR").MakeMessageOverWrite("ETX", etx);
|
|
#endregion
|
|
|
|
#region (주석) 2017.04.24, SPCN요청으로 Serial MSR 장비 정보를 레지스트리에서 확인
|
|
//// MSR 사용구분 0:미사용, 1:사용
|
|
//// MSR 제어구분 1:USB(KeybordWedge), 2:Serial(에뮬레이터제어)
|
|
//// AS-IS MSR_TYPE이 IC-보안이면, TO-BE UseFlag 미사용
|
|
//var msrUse = "0";
|
|
//var msrType = string.Empty;
|
|
//temp = IniFile.GetValue(BasicInfo.OldDeviceINI, "DEVICEINFO", "MSR_TYPE", "0").Trim();
|
|
//if (BasicInfo.CompCd.StartsWith("PC"))
|
|
//{
|
|
// switch (temp)
|
|
// {
|
|
// case "1": msrUse = "1"; msrType = "1"; break; // 1:USB(KeybordWedge)
|
|
// case "2": msrUse = "1"; msrType = "2"; break; // 2:SERIAL
|
|
// case "3": msrUse = "1"; msrType = "2"; break; // 3:OPOS-IBM
|
|
// case "4": msrUse = "1"; msrType = "2"; break; // 4:IBM-SERIAL
|
|
// case "5": msrUse = "0"; msrType = ""; break; // 5:IC-보안
|
|
// default: msrUse = "0"; msrType = ""; break;
|
|
// }
|
|
//}
|
|
//else if (BasicInfo.CompCd.StartsWith("SL"))
|
|
//{
|
|
// switch (temp)
|
|
// {
|
|
// case "1": msrUse = "1"; msrType = "1"; break; // 1:USB(KeybordWedge)
|
|
// case "2": msrUse = "1"; msrType = "2"; break; // 2:SERIAL
|
|
// case "3": msrUse = "1"; msrType = "2"; break; // 3:E70-SERIAL
|
|
// case "4": msrUse = "0"; msrType = ""; break; // 4:IC-보안
|
|
// default: msrUse = "0"; msrType = ""; break;
|
|
// }
|
|
//}
|
|
//else if (BasicInfo.CompCd.StartsWith("BR"))
|
|
//{
|
|
// switch (temp)
|
|
// {
|
|
// case "1": msrUse = "1"; msrType = "1"; break; // 1:USB(KeybordWedge)
|
|
// case "2": msrUse = "1"; msrType = "2"; break; // 2:SERIAL
|
|
// case "3": msrUse = "1"; msrType = "2"; break; // 3:SERIAL[FUJITSU]
|
|
// case "4": msrUse = "0"; msrType = ""; break; // 4:IC
|
|
// case "5": msrUse = "1"; msrType = "2"; break; // 5:SERIAL[IBM-SERIAL]
|
|
// default: msrUse = "0"; msrType = ""; break;
|
|
// }
|
|
//}
|
|
//cmDeviceInfo.GetMessage("MSR").MakeMessageOverWrite("UseFlag", msrUse);
|
|
//cmDeviceInfo.GetMessage("MSR").MakeMessageOverWrite("Controller", msrType);
|
|
|
|
//// MSR Port
|
|
//var msrPort = IniFile.GetValue(BasicInfo.OldDeviceINI, "DEVICEINFO", "MSR_PORT", "").Trim();
|
|
//cmDeviceInfo.GetMessage("MSR").MakeMessageOverWrite("SerialPortNumber", msrPort);
|
|
|
|
//// MSR Baudreate
|
|
//var msrBaud = IniFile.GetValue(BasicInfo.OldDeviceINI, "DEVICEINFO", "MSR_BAUD", "").Trim();
|
|
//cmDeviceInfo.GetMessage("MSR").MakeMessageOverWrite("SerialBaudRate", msrBaud);
|
|
|
|
//// MSR Vendor / Model 추가
|
|
//cmDeviceInfo.GetMessage("MSR").MakeMessageOverWrite("Model", "ETC");
|
|
////cmDeviceInfo.GetMessage("MSR").MakeMessageOverWrite("Vendor", "ETC"); // Del, 2017.04.17, 조충연K 삭제요청
|
|
|
|
//// 황건일C 요청으로 TrackIIData stx, etx 재정의
|
|
////MSR_TRACK=0 SP = 0: ';' 1 byte 제거, 마지막 BYTE '?' 제거 , 1: '?' 1 byte 제거
|
|
//// SL = 0: ';' 1 byte 제거, 마지막 BYTE '?' 제거 , 1: '?' 1 byte 제거
|
|
//// BR = X
|
|
//temp = IniFile.GetValue(BasicInfo.OldDeviceINI, "DEVICEINFO", "MSR_TRACK", "");
|
|
//var stx = string.Empty;
|
|
//var etx = string.Empty;
|
|
//switch (temp)
|
|
//{
|
|
// case "0": stx = ";"; etx = "?"; break;
|
|
// case "1": stx = "?"; etx = ""; break;
|
|
//}
|
|
//cmDeviceInfo.GetMessage("MSR").MakeMessageOverWrite("STX", stx);
|
|
//cmDeviceInfo.GetMessage("MSR").MakeMessageOverWrite("ETX", etx);
|
|
|
|
//// Add, 2017.04.17, O2MSR.Conf 설정
|
|
//// SPCN에서 제공한 MSR 리더기 에뮬레이터(SPCN 제공)한 "O2MSR.exe"의 설정파일("O2MSR.Conf") 설정
|
|
//// POS H/W 밴더와 MSR 모델을 현재 AS-IS INI 파일에서 알수 없다.
|
|
//var confPath = Path.Combine(DirInfo.InstallDir, @"BIN\O2MSR.Conf");
|
|
//IniFile.SetValue(confPath, "MSRINFO", "COMPORT", msrPort);
|
|
//IniFile.SetValue(confPath, "MSRINFO", "BAUDRATE", msrBaud);
|
|
////IniFile.SetValue(confPath, "MSRINFO", "VENDOR", "ETC"); // Del, 2017.04.17, SPCN 삭제요청
|
|
//IniFile.SetValue(confPath, "MSRINFO", "MODEL", "ETC");
|
|
#endregion
|
|
|
|
#region ### 2017.04.24 SPCN MSR 정보 이행 요건 ###
|
|
// ### 2017.04.24 SPCN MSR 정보 이행 요건 ###
|
|
// [차세대]AS-IS ini 이관 추가 요청 사항 입니다
|
|
// 안녕 하세요 진민준 입니다.
|
|
// 금일 그릭슈바인 MSR 리딩 문제 관련 해결 방안입니다.가맹점 배포시 해당내역을 최소할 할수 있을꺼라
|
|
// 생각바 구현 부분에 대한 검토 부탁 드립니다.
|
|
// 1. 문제 발생 원인
|
|
// - AS-IS 이관 내역으로 신규 O2MSR 자동 셋팅해 주는데 AS-IS ini COM 잘못 등록되어 있어서 미구동 되는 현상발생
|
|
// - AS-IS ini 확인한 결과 시리얼에 COM3으로 설정되어 있으나 실제로는 TECMCR.exe 사용 COM5 키보드 엣찌로 처리 하고 있었음
|
|
// 2. 해결 방안
|
|
// - AS-IS ini 파일의 내역을 이관 해서 처리 했으나 AS-IS 등록된 내역이 부정확한 내역이 발생 하는 케이스가 있으니
|
|
// reg 확인을 통해 처리 하시기 바랍니다.
|
|
// AS-IS ini 파일을 이관시 하기 내역 체크후 내역을 갱신 부탁 드립니다.
|
|
// 3. A20 일경우
|
|
// - [HKEY_LOCAL_MACHINE\SOFTWARE\OLEforRetail\ServiceOPOS\MSR\MCRRMS] 확인후
|
|
// ==> 해당 내역으로 포트 갱신 "Port"="COM5"
|
|
// 4. IBM 경우
|
|
// - [HKEY_LOCAL_MACHINE\SOFTWARE\OLEforRetail\ServiceOPOS\MSR\POS_MSR] 확인후
|
|
// ==> 해당 내역으로 포트 갱신 "ComPort"="5"
|
|
// ==> 해당 내역으로 속도 갱신 "BaudRate"="19200"
|
|
// 5. 장비 구분을 할 수 없으니 3번 4번 체크 후 해당 reg 없는 경우 AS-IS ini 기준 으로 처리 해당
|
|
// reg있는 경우는 reg 기준으로 정보 갱신 부탁 드립니다. 3,4 같이 존재 하는 Case 없을 것으로 판단 됩니다.
|
|
#endregion
|
|
|
|
var msrUse = "0";
|
|
var msrType = string.Empty;
|
|
temp = IniFile.GetValue(BasicInfo.OldDeviceINI, "DEVICEINFO", "MSR_TYPE", "0").Trim();
|
|
if (BasicInfo.CompCd.StartsWith("PC"))
|
|
{
|
|
switch (temp)
|
|
{
|
|
case "1": msrUse = "1"; msrType = "1"; break; // 1:USB(KeybordWedge)
|
|
case "2": msrUse = "1"; msrType = "2"; break; // 2:SERIAL
|
|
case "3": msrUse = "1"; msrType = "2"; break; // 3:OPOS-IBM
|
|
case "4": msrUse = "1"; msrType = "2"; break; // 4:IBM-SERIAL
|
|
case "5": msrUse = "0"; msrType = ""; break; // 5:IC-보안
|
|
default: msrUse = "0"; msrType = ""; break;
|
|
}
|
|
}
|
|
else if (BasicInfo.CompCd.StartsWith("SL"))
|
|
{
|
|
switch (temp)
|
|
{
|
|
case "1": msrUse = "1"; msrType = "1"; break; // 1:USB(KeybordWedge)
|
|
case "2": msrUse = "1"; msrType = "2"; break; // 2:SERIAL
|
|
case "3": msrUse = "1"; msrType = "2"; break; // 3:E70-SERIAL
|
|
case "4": msrUse = "0"; msrType = ""; break; // 4:IC-보안
|
|
default: msrUse = "0"; msrType = ""; break;
|
|
}
|
|
}
|
|
else if (BasicInfo.CompCd.StartsWith("BR"))
|
|
{
|
|
switch (temp)
|
|
{
|
|
case "1": msrUse = "1"; msrType = "1"; break; // 1:USB(KeybordWedge)
|
|
case "2": msrUse = "1"; msrType = "2"; break; // 2:SERIAL
|
|
case "3": msrUse = "1"; msrType = "2"; break; // 3:SERIAL[FUJITSU]
|
|
case "4": msrUse = "0"; msrType = ""; break; // 4:IC
|
|
case "5": msrUse = "1"; msrType = "2"; break; // 5:SERIAL[IBM-SERIAL]
|
|
default: msrUse = "0"; msrType = ""; break;
|
|
}
|
|
}
|
|
cmDeviceInfo.GetMessage("MSR").MakeMessageOverWrite("UseFlag", msrUse);
|
|
cmDeviceInfo.GetMessage("MSR").MakeMessageOverWrite("Controller", msrType);
|
|
|
|
var msrPort = string.Empty;
|
|
var msrBaud = string.Empty;
|
|
//var msrModel = "ETC";
|
|
var msrEtc = string.Empty;
|
|
if (string.IsNullOrEmpty(msrPort))
|
|
{
|
|
// HKEY_LOCAL_MACHINE\SOFTWARE\OLEforRetail\ServiceOPOS\MSR\MCRRMS
|
|
var subKey = @"SOFTWARE\OLEforRetail\ServiceOPOS\MSR\MCRRMS";
|
|
var isExsist = Registry.IsExistKey(Microsoft.Win32.Registry.LocalMachine, subKey);
|
|
if (isExsist)
|
|
{
|
|
msrPort = Registry.GetValue(Microsoft.Win32.Registry.LocalMachine, subKey, "Port").Trim();
|
|
msrBaud = "9600";
|
|
msrEtc = "A20";
|
|
}
|
|
}
|
|
if (string.IsNullOrEmpty(msrPort))
|
|
{
|
|
// HKEY_LOCAL_MACHINE\SOFTWARE\OLEforRetail\ServiceOPOS\MSR\POS_MSR
|
|
var subKey = @"HKEY_LOCAL_MACHINE\SOFTWARE\OLEforRetail\ServiceOPOS\MSR\POS_MSR";
|
|
var isExsist = Registry.IsExistKey(Microsoft.Win32.Registry.LocalMachine, subKey);
|
|
if (isExsist)
|
|
{
|
|
msrPort = Registry.GetValue(Microsoft.Win32.Registry.LocalMachine, subKey, "ComPort").Trim();
|
|
msrBaud = Registry.GetValue(Microsoft.Win32.Registry.LocalMachine, subKey, "BaudRate").Trim();
|
|
msrEtc = "IBM";
|
|
}
|
|
}
|
|
if (string.IsNullOrEmpty(msrPort))
|
|
{
|
|
msrPort = IniFile.GetValue(BasicInfo.OldDeviceINI, "DEVICEINFO", "MSR_PORT", "").Trim();
|
|
msrBaud = IniFile.GetValue(BasicInfo.OldDeviceINI, "DEVICEINFO", "MSR_BAUD", "").Trim();
|
|
}
|
|
|
|
if (string.IsNullOrEmpty(msrPort) == false)
|
|
{
|
|
msrPort = "COM" + msrPort.ToUpper().Replace("COM", "").Trim();
|
|
}
|
|
|
|
cmDeviceInfo.GetMessage("MSR").MakeMessageOverWrite("SerialPortNumber", msrPort);
|
|
cmDeviceInfo.GetMessage("MSR").MakeMessageOverWrite("SerialBaudRate", msrBaud);
|
|
cmDeviceInfo.GetMessage("MSR").MakeMessageOverWrite("Model", "ETC");
|
|
|
|
// 황건일C 요청으로 TrackIIData stx, etx 재정의
|
|
//MSR_TRACK=0 SP = 0: ';' 1 byte 제거, 마지막 BYTE '?' 제거 , 1: '?' 1 byte 제거
|
|
// SL = 0: ';' 1 byte 제거, 마지막 BYTE '?' 제거 , 1: '?' 1 byte 제거
|
|
// BR = X
|
|
temp = IniFile.GetValue(BasicInfo.OldDeviceINI, "DEVICEINFO", "MSR_TRACK", "");
|
|
var stx = string.Empty;
|
|
var etx = string.Empty;
|
|
switch (temp)
|
|
{
|
|
case "0": stx = ";"; etx = "?"; break;
|
|
case "1": stx = "?"; etx = ""; break;
|
|
}
|
|
cmDeviceInfo.GetMessage("MSR").MakeMessageOverWrite("STX", stx);
|
|
cmDeviceInfo.GetMessage("MSR").MakeMessageOverWrite("ETX", etx);
|
|
|
|
// O2MSR.Conf 설정
|
|
// SPCN에서 제공한 MSR 리더기 에뮬레이터(SPCN 제공)한 "O2MSR.exe"의 설정파일("O2MSR.Conf") 설정
|
|
// POS H/W 밴더와 MSR 모델을 현재 AS-IS INI 파일에서 알수 없다.
|
|
// NewPosInstaller.exe 에서 O2MSR.conf 관련 손대지말라고 해서 주석 처리(2017.07.24)
|
|
var confPath = Path.Combine(DirInfo.InstallDir, @"BIN\O2MSR.Conf");
|
|
//IniFile.SetValue(confPath, "MSRINFO", "COMPORT", msrPort);
|
|
//IniFile.SetValue(confPath, "MSRINFO", "BAUDRATE", msrBaud);
|
|
//IniFile.SetValue(confPath, "MSRINFO", "MODEL", msrModel);
|
|
|
|
// Add, 2017.04.27, 잠바주스 오픈 시 O2MSR.Conf 파일이 없다고 한다. 그래서 백업받기로 했다.
|
|
// 0014932 삼성타운잠바주스
|
|
// 0016912 도곡잠바주스
|
|
try
|
|
{
|
|
if (File.Exists(confPath) == false)
|
|
{
|
|
var msg = "Error creating O2MSR.Conf file [" + confPath + "], File not found";
|
|
ComLog.WriteLog(ComLog.Level.Error
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, " => " + msg, true);
|
|
}
|
|
else
|
|
{
|
|
File.Copy(Path.Combine(DirInfo.InstallDir, @"BIN\O2MSR.Conf"), Path.Combine(DirInfo.InstallDir, @"BIN\O2MSR.Conf.bck"), true);
|
|
Thread.Sleep(100);
|
|
ComLib.CreateDirectory(DirInfo.BackDir);
|
|
File.Copy(Path.Combine(DirInfo.InstallDir, @"BIN\O2MSR.Conf"), Path.Combine(DirInfo.BackDir, @"O2MSR.Conf." + DateTime.Now.ToString("yyyyMMddHHmmss")), true);
|
|
Thread.Sleep(100);
|
|
|
|
var msg = "Successful migration of O2MSR.Conf";
|
|
ComLog.WriteLog(ComLog.Level.trace
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, " => " + msg, true);
|
|
}
|
|
}
|
|
catch { }
|
|
|
|
#endregion
|
|
|
|
#region ### ICREADER (MSR 항목과 배타적으로 사용됨)
|
|
|
|
// ICReader 사용구분은 MSR과 배타적이다.
|
|
// MSR 사용구분 0:미사용 이면, ==> IC사용
|
|
value = msrUse == "0" ? "1" : "0";
|
|
cmDeviceInfo.GetMessage("ICREADER").MakeMessageOverWrite("UseFlag", value);
|
|
|
|
var icPort = IniFile.GetValue(BasicInfo.OldDeviceINI, "DEVICEINFO", "MSR_PORT", "");
|
|
cmDeviceInfo.GetMessage("ICREADER").MakeMessageOverWrite("SerialPortNumber", icPort);
|
|
|
|
var icBaud = IniFile.GetValue(BasicInfo.OldDeviceINI, "DEVICEINFO", "MSR_BAUD", "");
|
|
cmDeviceInfo.GetMessage("ICREADER").MakeMessageOverWrite("SerialBaudRate", icBaud);
|
|
|
|
#endregion
|
|
|
|
#region ### CATTERMINAL
|
|
|
|
// 2016.12.28 김광오B(진코퍼레이션) 확인 사항
|
|
// CATDEV_* -> 구형 CAT 단말기 (IC불가능) PC,SL
|
|
// EMV_* -> 신형 CAT 단말기 (IC가능) PC,SL
|
|
// FEMV_* -> 신형 CAT 단말기 (IC가능) BRK
|
|
|
|
// 2016.12.28 현재 구형 CAT 단말기 사용 유무 및 용도는 불명확 함.
|
|
// 이행 시 CATTERMINAL Section에 Model 항목을 추가 하여 구분하며, 신형CAT단말기 항목을 우선 한다.
|
|
|
|
var catTermialKind = "1"; // 0:구형(IC불가능), 1:신형(IC가능)
|
|
|
|
if (BasicInfo.CompCd.StartsWith("BR"))
|
|
{
|
|
// 사용여부 0:미사용, 1:사용
|
|
value = IniFile.GetValue(BasicInfo.OldDeviceINI, "DEVICEINFO", "FEMV_TYPE", "0");
|
|
cmDeviceInfo.GetMessage("CATTERMINAL").MakeMessageOverWrite("UseFlag", value);
|
|
|
|
value = IniFile.GetValue(BasicInfo.OldDeviceINI, "DEVICEINFO", "FEMV_PORT", "");
|
|
cmDeviceInfo.GetMessage("CATTERMINAL").MakeMessageOverWrite("SerialPortNumber", value);
|
|
|
|
value = IniFile.GetValue(BasicInfo.OldDeviceINI, "DEVICEINFO", "FEMV_BAUD", "");
|
|
cmDeviceInfo.GetMessage("CATTERMINAL").MakeMessageOverWrite("SerialBaudRate", value);
|
|
|
|
// BR은 무조건 신형단말기, 0:구형(IC불가능), 1:신형(IC가능)
|
|
//cmDeviceInfo.GetMessage("CATTERMINAL").MakeMessageOverWrite("Model", "1");
|
|
catTermialKind = "1";
|
|
}
|
|
else
|
|
{
|
|
// => 일단 신형단말기 항목을 이행하고,
|
|
|
|
// 사용여부 0:미사용, 1:사용
|
|
value = IniFile.GetValue(BasicInfo.OldDeviceINI, "DEVICEINFO", "EMV_TYPE", "0");
|
|
cmDeviceInfo.GetMessage("CATTERMINAL").MakeMessageOverWrite("UseFlag", value);
|
|
|
|
value = IniFile.GetValue(BasicInfo.OldDeviceINI, "DEVICEINFO", "EMV_PORT", "");
|
|
cmDeviceInfo.GetMessage("CATTERMINAL").MakeMessageOverWrite("SerialPortNumber", value);
|
|
|
|
value = IniFile.GetValue(BasicInfo.OldDeviceINI, "DEVICEINFO", "EMV_BAUD", "");
|
|
cmDeviceInfo.GetMessage("CATTERMINAL").MakeMessageOverWrite("SerialBaudRate", value);
|
|
|
|
// Timeout 사용하지 않음.
|
|
cmDeviceInfo.GetMessage("CATTERMINAL").MakeMessageOverWrite("TimeOut", "5");
|
|
|
|
// 0:구형(IC불가능), 1:신형(IC가능)
|
|
//cmDeviceInfo.GetMessage("CATTERMINAL").MakeMessageOverWrite("Model", "1");
|
|
catTermialKind = "1";
|
|
|
|
#region Del, 2017.06.07, 구형단말기(CATDEV_TYPE 항목)은 사용하지 않는다. 안호성B SPCN에 확인 함.
|
|
//// => 신형이 미사용이고 구형단말기가 사용이면 덮어 쓴다.
|
|
//if (IniFile.GetValue(BasicInfo.OldDeviceINI, "DEVICEINFO", "EMV_TYPE", "0") == "0" &&
|
|
// IniFile.GetValue(BasicInfo.OldDeviceINI, "DEVICEINFO", "CATDEV_TYPE", "0") == "1")
|
|
//{
|
|
// value = IniFile.GetValue(BasicInfo.OldDeviceINI, "DEVICEINFO", "CATDEV_TYPE", "0");
|
|
// cmDeviceInfo.GetMessage("CATTERMINAL").MakeMessageOverWrite("UseFlag", value);
|
|
|
|
// value = IniFile.GetValue(BasicInfo.OldDeviceINI, "DEVICEINFO", "CATDEV_PORT", "");
|
|
// cmDeviceInfo.GetMessage("CATTERMINAL").MakeMessageOverWrite("SerialPortNumber", value);
|
|
|
|
// value = IniFile.GetValue(BasicInfo.OldDeviceINI, "DEVICEINFO", "CATDEV_BAUD", "");
|
|
// cmDeviceInfo.GetMessage("CATTERMINAL").MakeMessageOverWrite("SerialBaudRate", value);
|
|
|
|
// // Timeout 사용하지 않음.
|
|
// cmDeviceInfo.GetMessage("CATTERMINAL").MakeMessageOverWrite("TimeOut", "5");
|
|
|
|
// // 0:구형(IC불가능), 1:신형(IC가능)
|
|
// //cmDeviceInfo.GetMessage("CATTERMINAL").MakeMessageOverWrite("Model", "0");
|
|
// catTermialKind = "0";
|
|
//}
|
|
#endregion
|
|
}
|
|
|
|
// Add, 2017.04.25, CAT단말기 모델 추가 요건 => "11:국내", "21:샨더", "22:은련"
|
|
if (BasicInfo.Nation == "CHN")
|
|
{
|
|
// 현재(2017.04.25) "21:샨더", "22:은련" 판단기준이 없음.
|
|
cmDeviceInfo.GetMessage("CATTERMINAL").MakeMessageOverWrite("Model", "21");
|
|
}
|
|
else
|
|
{
|
|
cmDeviceInfo.GetMessage("CATTERMINAL").MakeMessageOverWrite("Model", "11");
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region ### SIGNPAD
|
|
|
|
// 이슈
|
|
// 1. 일반서명패드 / 보안서명패드 구분 안됨. => 안해도 된다고 손부장님이 말했다.
|
|
if (BasicInfo.CompCd.StartsWith("BR"))
|
|
{
|
|
// AS-IS SIGNPAD_KIND=3 0:미사용, 1:SSP-100, 2:SN-350P, 3:SN-150P
|
|
// TO-BE Model 1:OLTMS, 2:OLCSP, 3:SSP-100, 4:SN-350P, 5:SN-150P
|
|
temp = IniFile.GetValue(BasicInfo.OldDeviceINI, "DEVICEINFO", "SIGNPAD_TYPE", "0");
|
|
switch (temp)
|
|
{
|
|
case "1": value = "3"; break;
|
|
case "2": value = "4"; break;
|
|
case "3": value = "5"; break;
|
|
default: value = "0"; break;
|
|
}
|
|
if (string.IsNullOrWhiteSpace(value) || value == "0")
|
|
{
|
|
// UseFlag 0:미사용, 1:사용
|
|
cmDeviceInfo.GetMessage("SIGNPAD").MakeMessageOverWrite("UseFlag", "0");
|
|
}
|
|
else
|
|
{
|
|
// UseFlag 0:미사용, 1:사용
|
|
cmDeviceInfo.GetMessage("SIGNPAD").MakeMessageOverWrite("UseFlag", "1");
|
|
}
|
|
cmDeviceInfo.GetMessage("SIGNPAD").MakeMessageOverWrite("Model", value);
|
|
}
|
|
else
|
|
{
|
|
// SIGNPAD_TYPE=1 0:미사용, 1:사용
|
|
// UseFlag 0:미사용, 1:사용
|
|
value = IniFile.GetValue(BasicInfo.OldDeviceINI, "DEVICEINFO", "SIGNPAD_TYPE", "0");
|
|
cmDeviceInfo.GetMessage("SIGNPAD").MakeMessageOverWrite("UseFlag", value);
|
|
|
|
// AS-IS SIGNPAD_KIND=3 0:OLTMS, 1:OLCSP, 2:SSP-100, 3:SN-350P, 4:SN-150P
|
|
// TO-BE Model 1:OLTMS, 2:OLCSP, 3:SSP-100, 4:SN-350P, 5:SN-150P
|
|
temp = IniFile.GetValue(BasicInfo.OldDeviceINI, "DEVICEINFO", "SIGNPAD_KIND", "0");
|
|
switch (temp)
|
|
{
|
|
case "0": value = "1"; break; // 0:OLTMS -> 1:OLTMS
|
|
case "1": value = "2"; break; // 1:OLCSP -> 2:OLCSP
|
|
case "2": value = "3"; break; // 2:SSP-100 -> 3:SSP-100
|
|
case "3": value = "4"; break; // 3:SN-350P -> 4:SN-350P
|
|
case "4": value = "5"; break; // 4::SN-150P -> 5::SN-150P
|
|
default: value = ""; break;
|
|
}
|
|
cmDeviceInfo.GetMessage("SIGNPAD").MakeMessageOverWrite("Model", value);
|
|
}
|
|
|
|
|
|
value = IniFile.GetValue(BasicInfo.OldDeviceINI, "DEVICEINFO", "SIGNPAD_PORT", "");
|
|
cmDeviceInfo.GetMessage("SIGNPAD").MakeMessageOverWrite("SerialPortNumber", value);
|
|
|
|
value = IniFile.GetValue(BasicInfo.OldDeviceINI, "DEVICEINFO", "SIGNPAD_BAUD", "");
|
|
cmDeviceInfo.GetMessage("SIGNPAD").MakeMessageOverWrite("SerialBaudRate", value);
|
|
|
|
cmDeviceInfo.GetMessage("SIGNPAD").MakeMessageOverWrite("FileDate", "");
|
|
|
|
// 조충연K 기본값 확인 필요 !!! => 2016.12.26 확인완료
|
|
cmDeviceInfo.GetMessage("SIGNPAD").MakeMessageOverWrite("AutoFlag", "1");
|
|
cmDeviceInfo.GetMessage("SIGNPAD").MakeMessageOverWrite("MinCnt", "3");
|
|
cmDeviceInfo.GetMessage("SIGNPAD").MakeMessageOverWrite("TimeOut", "30");
|
|
|
|
#endregion
|
|
|
|
#region ### SCALE
|
|
|
|
if (BasicInfo.CompCd.StartsWith("BR"))
|
|
{
|
|
// SCALE_TYPE=0 0;사용안함 1: SERIAL
|
|
value = IniFile.GetValue(BasicInfo.OldDeviceINI, "DEVICEINFO", "FSCALE_TYPE", "0");
|
|
cmDeviceInfo.GetMessage("SCALE").MakeMessageOverWrite("UseFlag", value);
|
|
|
|
value = IniFile.GetValue(BasicInfo.OldDeviceINI, "DEVICEINFO", "FSCALE_PORT", "");
|
|
cmDeviceInfo.GetMessage("SCALE").MakeMessageOverWrite("SerialPortNumber", value);
|
|
|
|
value = IniFile.GetValue(BasicInfo.OldDeviceINI, "DEVICEINFO", "FSCALE_BAUD", "");
|
|
cmDeviceInfo.GetMessage("SCALE").MakeMessageOverWrite("SerialBaudRate", value);
|
|
}
|
|
else
|
|
{
|
|
// SCALE_TYPE=0 0;사용안함 1: SERIAL
|
|
value = IniFile.GetValue(BasicInfo.OldDeviceINI, "DEVICEINFO", "SCALE_TYPE", "0");
|
|
cmDeviceInfo.GetMessage("SCALE").MakeMessageOverWrite("UseFlag", value);
|
|
|
|
value = IniFile.GetValue(BasicInfo.OldDeviceINI, "DEVICEINFO", "SCALE_PORT", "");
|
|
cmDeviceInfo.GetMessage("SCALE").MakeMessageOverWrite("SerialPortNumber", value);
|
|
|
|
value = IniFile.GetValue(BasicInfo.OldDeviceINI, "DEVICEINFO", "SCALE_BAUD", "");
|
|
cmDeviceInfo.GetMessage("SCALE").MakeMessageOverWrite("SerialBaudRate", value);
|
|
}
|
|
|
|
|
|
#endregion
|
|
|
|
#region ### WIRELESSSCALE (아마도 BR만 사용?, FSCALE_POLE_TYPE 일까??) => 삭제
|
|
|
|
//// FSCALE_POLE_TYPE =0 0;사용안함 1: SERIAL
|
|
//value = IniFile.GetValue(BasicInfo.OldDeviceINI, "DEVICEINFO", "FSCALE_POLE_TYPE", "0");
|
|
//cmDeviceInfo.GetMessage("WIRELESSSCALE").MakeMessageOverWrite("UseFlag", value);
|
|
|
|
//value = IniFile.GetValue(BasicInfo.OldDeviceINI, "DEVICEINFO", "FSCALE_POLE_PORT", "");
|
|
//cmDeviceInfo.GetMessage("WIRELESSSCALE").MakeMessageOverWrite("SerialPortNumber", value);
|
|
|
|
//value = IniFile.GetValue(BasicInfo.OldDeviceINI, "DEVICEINFO", "FSCALE_POLE_BAUD", "");
|
|
//cmDeviceInfo.GetMessage("WIRELESSSCALE").MakeMessageOverWrite("SerialBaudRate", value);
|
|
|
|
#endregion
|
|
|
|
#region ### SCALEPOLEDISP (아마도 BR만 사용)
|
|
|
|
// FSCALE_POLE_TYPE =0 0;사용안함 1: SERIAL
|
|
value = IniFile.GetValue(BasicInfo.OldDeviceINI, "DEVICEINFO", "FSCALE_POLE_TYPE", "0");
|
|
cmDeviceInfo.GetMessage("SCALEPOLEDISP").MakeMessageOverWrite("UseFlag", value);
|
|
|
|
value = IniFile.GetValue(BasicInfo.OldDeviceINI, "DEVICEINFO", "FSCALE_POLE_PORT", "");
|
|
cmDeviceInfo.GetMessage("SCALEPOLEDISP").MakeMessageOverWrite("SerialPortNumber", value);
|
|
|
|
value = IniFile.GetValue(BasicInfo.OldDeviceINI, "DEVICEINFO", "FSCALE_POLE_BAUD", "");
|
|
cmDeviceInfo.GetMessage("SCALEPOLEDISP").MakeMessageOverWrite("SerialBaudRate", value);
|
|
|
|
#endregion
|
|
|
|
#region ### LABELPRINTER ( BR 만 사용)
|
|
|
|
// FLABELPRINT_TYPE=1 0;사용안함 1: SERIAL
|
|
value = IniFile.GetValue(BasicInfo.OldDeviceINI, "DEVICEINFO", "FLABELPRINT_TYPE", "0");
|
|
cmDeviceInfo.GetMessage("LABELPRINTER").MakeMessageOverWrite("UseFlag", value);
|
|
|
|
value = IniFile.GetValue(BasicInfo.OldDeviceINI, "DEVICEINFO", "FLABELPRINT_PORT", "");
|
|
cmDeviceInfo.GetMessage("LABELPRINTER").MakeMessageOverWrite("SerialPortNumber", value);
|
|
|
|
value = IniFile.GetValue(BasicInfo.OldDeviceINI, "DEVICEINFO", "FLABELPRINT_BAUD", "");
|
|
cmDeviceInfo.GetMessage("LABELPRINTER").MakeMessageOverWrite("SerialBaudRate", value);
|
|
|
|
// FLABEL_PAPER_DIV=0 라벨프린터 신규양식지 구분 0; 구양식, 1: 신규양식
|
|
value = IniFile.GetValue(BasicInfo.OldDeviceINI, "DEVICEINFO", "FLABEL_PAPER_DIV", "");
|
|
cmDeviceInfo.GetMessage("LABELPRINTER").MakeMessageOverWrite("Model", value);
|
|
|
|
#endregion
|
|
|
|
#region ### RF DEVICE (LG 사원증 인식용 RF 장비)
|
|
|
|
// FRF_TYPE => LG사원증 인식용 (LG트윈타워 던킨매장에서 만 사용한다고 함)
|
|
// 2016.12.29 김광오B(진코퍼레이션) 확인 사항
|
|
|
|
value = IniFile.GetValue(BasicInfo.OldDeviceINI, "DEVICEINFO", "FRF_TYPE", "0");
|
|
cmDeviceInfo.GetMessage("LGEMPRF").MakeMessageOverWrite("UseFlag", value);
|
|
|
|
value = IniFile.GetValue(BasicInfo.OldDeviceINI, "DEVICEINFO", "FRF_PORT", "");
|
|
cmDeviceInfo.GetMessage("LGEMPRF").MakeMessageOverWrite("SerialPortNumber", value);
|
|
|
|
value = IniFile.GetValue(BasicInfo.OldDeviceINI, "DEVICEINFO", "FRF_BAUD", "");
|
|
cmDeviceInfo.GetMessage("LGEMPRF").MakeMessageOverWrite("SerialBaudRate", value);
|
|
|
|
#endregion
|
|
|
|
|
|
// 저장
|
|
cmDeviceInfo.MakeFileFromMessage(deviceInfoFile);
|
|
|
|
|
|
#region ### 주요장치정보 서버전송
|
|
|
|
// 카드리더기 종류 서버전송 => MSR(USB:KeybordWedge), MSR(Serial:Emulator), IC
|
|
// MSR 사용구분 0:미사용, 1:사용
|
|
string status = string.Empty;
|
|
var remark = string.Empty;
|
|
|
|
temp = cmDeviceInfo.GetMessage("MSR").GetMessageValue("UseFlag");
|
|
temp = temp == null ? string.Empty : temp.Trim();
|
|
//value = temp == "1" ? "MSR" : "IC";
|
|
if (temp == "1")
|
|
{
|
|
temp = cmDeviceInfo.GetMessage("MSR").GetMessageValue("Controller");
|
|
temp = temp == null ? string.Empty : temp.Trim();
|
|
value = temp == "2" ? "MSR(Serial:Emulator)" : "MSR(USB:KeybordWedge)";
|
|
remark = string.Format("Cardreader Type={0}({1}), Port={2}, BoudReate={3} {4}", temp, value, msrPort, msrBaud, msrEtc);
|
|
}
|
|
else
|
|
{
|
|
value = "IC";
|
|
remark = string.Format("Cardreader Type={0}, Port={1}, BoudReate={2}", temp, icPort, icBaud);
|
|
}
|
|
if (CheckInfo.CardReader != value)
|
|
{
|
|
//if (ComLog.SendStatus(ComLog.CheckStatus.CARD_READER_TYPE, value, remark))
|
|
if (ComLog.SendStatus(ComLog.CheckStatus.CARD_READER_TYPE, "MSR", remark))
|
|
CheckInfo.CardReader = value;
|
|
}
|
|
|
|
// CAT단말기 종류 (사용안함, 신형, 구형)
|
|
remark = string.Empty;
|
|
temp = cmDeviceInfo.GetMessage("CATTERMINAL").GetMessageValue("UseFlag");
|
|
temp = temp == null ? "0" : temp.Trim();
|
|
value = "NONE";
|
|
if (temp != "0")
|
|
{
|
|
//temp = cmDeviceInfo.GetMessage("CATTERMINAL").GetMessageValue("Model");
|
|
//temp = temp == null ? "" : temp;
|
|
//if (temp == "0") value = "OLD"; else if (temp == "1") value = "NEW"; else value = "NONE";
|
|
value = catTermialKind == "0" ? "OLD" : "NEW";
|
|
temp = cmDeviceInfo.GetMessage("CATTERMINAL").GetMessageValue("Model");
|
|
remark = string.Format("CatTermianl Type={0} Model={1}", value, temp);
|
|
}
|
|
else
|
|
{
|
|
value = "NONE";
|
|
remark = string.Format("CatTermianl Type={0}", value);
|
|
}
|
|
if (CheckInfo.CatTerminal != value)
|
|
{
|
|
if (ComLog.SendStatus(ComLog.CheckStatus.CAT_TERM_TYPE, value, remark))
|
|
CheckInfo.CatTerminal = value;
|
|
}
|
|
|
|
#endregion
|
|
|
|
return retValue = ComLog.InstallResult.Success;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
statusMsg = "Exception : " + ex.Message;
|
|
ComLog.WriteLog(ComLog.Level.Exception
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, " => " + statusMsg);
|
|
return retValue = ComLog.InstallResult.Fail;
|
|
}
|
|
finally
|
|
{
|
|
ComLog.WriteLog(ComLog.Level.trace
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, string.Format("End, Result={0}", ComLog.InstallResultStr[(int)retValue]));
|
|
|
|
// 상태로그 전송 (05:POS Device info migration)
|
|
if (string.IsNullOrWhiteSpace(statusMsg))
|
|
statusMsg = string.Format("POS Device info migration. Result={0}", ComLog.InstallResultStr[(int)retValue]);
|
|
ComLog.SendStatus(ComLog.InstallStatus.ConfigMigration, retValue, statusMsg);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// SaleInfo, 시스템오픈일자 저장
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
private bool MigrationSaleInfo()
|
|
{
|
|
bool retValue = false;
|
|
try
|
|
{
|
|
base.OnEcho("Migration POS sale information.");
|
|
|
|
ComLog.WriteLog(ComLog.Level.trace
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, "Start");
|
|
|
|
string temp = string.Empty;
|
|
string value = string.Empty;
|
|
string saleInfoFile = Path.Combine(DirInfo.InstallDir, @"INI\PosSaleInfo.INI");
|
|
|
|
CmMessage cmSaleInfo = CmMessage.MakeMessageFromFile(saleInfoFile);
|
|
|
|
cmSaleInfo.GetMessage("POSOPEN").MakeMessageOverWrite("SysOpenDate", BasicInfo.SysOpenDate);
|
|
|
|
// 저장
|
|
cmSaleInfo.MakeFileFromMessage(saleInfoFile);
|
|
|
|
return retValue = true;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
ComLog.WriteLog(ComLog.Level.Exception
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, " => Exception : " + ex.Message);
|
|
return retValue = false;
|
|
}
|
|
finally
|
|
{
|
|
ComLog.WriteLog(ComLog.Level.trace
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, string.Format("End, Result={0}", retValue ? "Success" : "Failed"));
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 주방프린터 마스터 이행 (서버전송처리)
|
|
/// 주방모니터 마스터 이행 (서버전송처리, 2017.04.28 추가)
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
private ComLog.InstallResult MigrationKPSMaster()
|
|
{
|
|
string statusMsg = string.Empty;
|
|
ComLog.InstallResult retValue = ComLog.InstallResult.Fail;
|
|
|
|
// 백업대상 데이터
|
|
Dictionary<string, string> backDataList = new Dictionary<string, string>();
|
|
|
|
try
|
|
{
|
|
base.OnEcho("Migration POS KPS/KVS Master");
|
|
|
|
ComLog.WriteLog(ComLog.Level.trace
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, "Start");
|
|
|
|
// 변경여부
|
|
bool isModify = false;
|
|
// 전송대상목록
|
|
List<string[]> kpsSendList = new List<string[]>();
|
|
|
|
#region ### KPS Master 추출
|
|
for (var i = 1; i <= 15; i++)
|
|
{
|
|
// 0:TYPE, 1:IP, 2:PORT, 3:CONT, 4:KIND, 5:BAUD, 6:KIND
|
|
var kps = new string[7];
|
|
var key = string.Format("KPS{0:D2}", i);
|
|
|
|
// TYPE 0:사용안함, 1:IP, 2:SERIAL
|
|
kps[0] = IniFile.GetValue(BasicInfo.OldDeviceINI, "DEVICEINFO", string.Format("NETPRT{0}_TYPE", i), "");
|
|
// IP
|
|
kps[1] = IniFile.GetValue(BasicInfo.OldDeviceINI, "DEVICEINFO", string.Format("NETPRT{0}_IP", i), "");
|
|
// PORT
|
|
kps[2] = IniFile.GetValue(BasicInfo.OldDeviceINI, "DEVICEINFO", string.Format("NETPRT{0}_PORT", i), "");
|
|
// CONT
|
|
kps[3] = IniFile.GetValue(BasicInfo.OldDeviceINI, "DEVICEINFO", string.Format("NETPRT{0}_CONT", i), "");
|
|
// KIND
|
|
kps[4] = IniFile.GetValue(BasicInfo.OldDeviceINI, "DEVICEINFO", string.Format("NETPRT{0}_KIND", i), "");
|
|
// BAUD
|
|
kps[5] = IniFile.GetValue(BasicInfo.OldDeviceINI, "DEVICEINFO", string.Format("NETPRT{0}_BAUD", i), "");
|
|
// KIND 1:KPS, 2:KVS, 3:KDS
|
|
kps[6] = "1";
|
|
|
|
// 변경여부 확인
|
|
var oldValue = BasicInfo.GetKPSInfo(key).Trim();
|
|
var newValue = string.Join(" ", kps).Trim();
|
|
if (oldValue != newValue) isModify = true;
|
|
|
|
// 전송대상목록
|
|
kpsSendList.Add(kps);
|
|
|
|
|
|
// 여기서 백업하면, 전송실패 시 문제가 된다.
|
|
//BasicInfo.SetKPSInfo(key, newValue);
|
|
backDataList.Add(key, newValue);
|
|
|
|
|
|
ComLog.WriteLog(ComLog.Level.trace
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, string.Format(" => KPS master NewValue=[{0}] BckValue=[{1}]", newValue, oldValue));
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region ### KVS Master 추출
|
|
|
|
var kvsip = string.Empty;
|
|
if (BasicInfo.CompCd.StartsWith("BR"))
|
|
{
|
|
kvsip = IniFile.GetValue(BasicInfo.OldStoreOptINI, "OPTIONINFO", "MONITOR_IP").Trim();
|
|
}
|
|
else
|
|
{
|
|
kvsip = IniFile.GetValue(BasicInfo.OldStoreINI, "SHOPINFO", "MONITORSEND_IP").Trim();
|
|
}
|
|
if (string.IsNullOrWhiteSpace(kvsip) == false)
|
|
{
|
|
// 0:TYPE, 1:IP, 2:PORT, 3:CONT, 4:KIND, 5:BAUD, 6:KIND
|
|
var kvs = new string[7];
|
|
var key = "16";
|
|
|
|
// TYPE 0:사용안함, 1:IP, 2:SERIAL
|
|
kvs[0] = "1";
|
|
// IP
|
|
kvs[1] = kvsip;
|
|
// PORT
|
|
kvs[2] = "9001";
|
|
// CONT
|
|
kvs[3] = "";
|
|
// KIND
|
|
kvs[4] = "";
|
|
// BAUD
|
|
kvs[5] = "";
|
|
// KIND 1:KPS, 2:KVS, 3:KDS
|
|
kvs[6] = "2";
|
|
|
|
this.isExistsKVS = true;
|
|
|
|
// 변경여부 확인
|
|
var oldValue = BasicInfo.GetKPSInfo(key).Trim();
|
|
var newValue = string.Join(" ", kvs).Trim();
|
|
if (oldValue != newValue) isModify = true;
|
|
|
|
// 전송대상목록
|
|
kpsSendList.Add(kvs);
|
|
|
|
ComLog.WriteLog(ComLog.Level.trace
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, string.Format(" => KVS master NewValue=[{0}] BckValue=[{1}]", newValue, oldValue));
|
|
}
|
|
|
|
#endregion
|
|
|
|
|
|
ComLog.WriteLog(ComLog.Level.trace
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, string.Format(" => KPS/KVS master Modify={0} ListCount={1}", isModify.ToString(), kpsSendList.Count.ToString()));
|
|
|
|
|
|
#region ### 데이터 서버 전송
|
|
|
|
if (isModify == false)
|
|
{
|
|
statusMsg = "KPS/KVS Master, No change data, migration skip";
|
|
return retValue = ComLog.InstallResult.Skip;
|
|
}
|
|
|
|
const string ROW_SPLIT = "#~";
|
|
const string COL_SPLIT = "|";
|
|
|
|
List<string> lstData = new List<string>();
|
|
//foreach (string[] kps in kpsSendList)
|
|
for (var i = 0; i < kpsSendList.Count; i++)
|
|
{
|
|
string[] kps = (string[])kpsSendList[i];
|
|
|
|
// 04:KPS 마스터
|
|
// #~장치코드|장치명|장치사용구분(1:Serial, 3:Lan)|ComPort|ComBaudRate|NetIP|NetPort|장치구분
|
|
// 0 1 2 3 4 5 6 7
|
|
|
|
// 데이터가 없으면 전송하지 않는다.
|
|
if (string.IsNullOrWhiteSpace(string.Join("", kps).Trim())) continue;
|
|
|
|
// TYPE 0:사용안함, 1:IP, 2:SERIAL
|
|
if (kps[0] == "0") continue;
|
|
|
|
string[] data = new string[8];
|
|
|
|
// 장치코드
|
|
data[0] = (i + 1).ToString("00");
|
|
// 장치명
|
|
data[1] = data[0];
|
|
// 장치사용구분(1:Serial, 3:Lan)
|
|
switch (kps[0])
|
|
{
|
|
case "1": // Lan
|
|
data[2] = "3"; // 장치사용구분
|
|
data[3] = string.Empty; // 시리얼포트 (COM1...)
|
|
data[4] = "0"; // 시리얼Baudreate
|
|
data[5] = kps[1]; // 네트워크 IP
|
|
data[6] = ComLib.IntParse(kps[2]).ToString(); // 네트워크 PORT
|
|
data[7] = kps[6]; // 장치구분 1:KPS, 2:KVS, 3:KDS
|
|
break;
|
|
case "2": // Serial
|
|
data[2] = "1"; // 장치사용구분
|
|
|
|
// COM 문자 제거요청 김용현R
|
|
//data[3] = kps[2]; // 시리얼포트 (COM1...)
|
|
data[3] = kps[2].ToUpper().Replace("COM", "");
|
|
|
|
data[4] = ComLib.IntParse(kps[5]).ToString(); // 시리얼Baudreate
|
|
data[5] = string.Empty; // 네트워크 IP
|
|
data[6] = "0"; // 네트워크 PORT
|
|
data[7] = kps[6]; // 장치구분 1:KPS, 2:KVS, 3:KDS
|
|
break;
|
|
default: continue;
|
|
}
|
|
|
|
string rowData = string.Join(COL_SPLIT, data);
|
|
lstData.Add(rowData);
|
|
}
|
|
|
|
if (lstData.Count > 0)
|
|
{
|
|
string dataList = string.Join(ROW_SPLIT, lstData.ToArray());
|
|
|
|
Hashtable htSendData = new Hashtable();
|
|
Hashtable htRecvData = new Hashtable();
|
|
|
|
// 통신해더 생성
|
|
string commHead = ItemColumn.MakeCommHeader(0, "06");
|
|
// 전송데이터
|
|
htSendData.Add(Column.IQ_TMP_POSMST_INQ.DATA.INQ_TYPE, Column.IQ_TMP_POSMST_INQ.MSG_ID);
|
|
htSendData.Add(Column.IQ_TMP_POSMST_INQ.DATA.STOR_CD, BasicInfo.StoreNo);
|
|
htSendData.Add(Column.IQ_TMP_POSMST_INQ.DATA.POS_NO, BasicInfo.PosNo);
|
|
htSendData.Add(Column.IQ_TMP_POSMST_INQ.DATA.MST_KIND, Column.IQ_TMP_POSMST_INQ.MSTKIND.KPS);
|
|
htSendData.Add(Column.IQ_TMP_POSMST_INQ.DATA.DATA_LIST, dataList);
|
|
htSendData.Add(Column.IQ_TMP_POSMST_INQ.DATA.RES_CD, "");
|
|
|
|
NetworkJSON irt = new NetworkJSON();
|
|
int ret = irt.IRTSendReceive(ServerInfo.SvrIP, ServerInfo.SvrPort, 1000 * 20, commHead, htSendData, ref htRecvData);
|
|
if (ret != ComLib.OK)
|
|
{
|
|
ComLog.WriteLog(ComLog.Level.Error
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, " => Server communication error");
|
|
statusMsg = "Server communication error";
|
|
return retValue = ComLog.InstallResult.Fail;
|
|
}
|
|
string res = htRecvData[Column.IQ_INSTALL_SCHEDULE_INQ.DATA.RES_CD].ToString().Trim();
|
|
|
|
statusMsg = string.Format("KPS/KVS info upload. Result={0} IQ_TMP_POSMST_INQ.DATA.RES_CD={1}", ComLog.InstallResultStr[(int)retValue], res);
|
|
|
|
ComLog.WriteLog(res == "00" ? ComLog.Level.trace : ComLog.Level.Error
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, statusMsg);
|
|
|
|
return retValue = res == "00" ? ComLog.InstallResult.Success : ComLog.InstallResult.Fail;
|
|
}
|
|
else
|
|
{
|
|
statusMsg = "KPS/KVS Master, Not exist data";
|
|
return retValue = ComLog.InstallResult.Skip;
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
statusMsg = "Exception=" + ex.Message;
|
|
ComLog.WriteLog(ComLog.Level.Exception
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, " => " + statusMsg);
|
|
return retValue = ComLog.InstallResult.Fail;
|
|
}
|
|
finally
|
|
{
|
|
ComLog.WriteLog(ComLog.Level.trace
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, string.Format("End, Result={0}", ComLog.InstallResultStr[(int)retValue]));
|
|
|
|
// 성공시에 데이터 백업
|
|
if (retValue != ComLog.InstallResult.Fail)
|
|
{
|
|
foreach (var data in backDataList)
|
|
{
|
|
BasicInfo.SetKPSInfo(data.Key, data.Value);
|
|
}
|
|
}
|
|
|
|
// 상태로그 전송 (06:KPS info upload)
|
|
if (string.IsNullOrWhiteSpace(statusMsg))
|
|
statusMsg = string.Format("KPS info upload. Result={0}", ComLog.InstallResultStr[(int)retValue]);
|
|
ComLog.SendStatus(ComLog.InstallStatus.KPSInfoUpload, retValue, statusMsg);
|
|
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 진코퍼레이션 제공 마스터 추출 프로그램 실행
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
private bool ExcuteSPCTouchTxt()
|
|
{
|
|
bool retValue = false;
|
|
string exeName = "SPCTouchTxt.exe";
|
|
|
|
try
|
|
{
|
|
|
|
base.OnEcho(string.Format("Execute external program. ({0})", exeName));
|
|
|
|
ComLog.WriteLog(ComLog.Level.trace
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, "Start");
|
|
|
|
string filePath = Path.Combine(Environment.CurrentDirectory, exeName);
|
|
if (File.Exists(filePath) == false)
|
|
{
|
|
ComLog.WriteLog(ComLog.Level.Error
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, string.Format(" => File not found. ({0})", exeName));
|
|
return retValue = false;
|
|
}
|
|
|
|
// SPCTouchTxt.exe 실행 파라미터는 브랜드코드 점포코드 POS번호
|
|
string arg = string.Format("{0} {1} {2}", BasicInfo.BrandCd, BasicInfo.OldStoreNo, BasicInfo.PosNo);
|
|
|
|
ComLog.WriteLog(ComLog.Level.Error
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, string.Format(" => External execute, Path=[{0}], File=[{1}], arg=[{2}]", Environment.CurrentDirectory, exeName, arg));
|
|
|
|
ComLib.ExecuteWaitProcess(exeName, arg, System.Diagnostics.ProcessWindowStyle.Hidden);
|
|
|
|
if (ComLib.ExistDirectory(DirInfo.JinDir) == false)
|
|
{
|
|
ComLog.WriteLog(ComLog.Level.Error
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, string.Format(" => External execution failure ({0})", exeName));
|
|
return retValue = false;
|
|
}
|
|
|
|
DirectoryInfo di = new DirectoryInfo(DirInfo.JinDir);
|
|
FileInfo[] fi = di.GetFiles();
|
|
for (var i = 0; i < fi.Length; i++)
|
|
{
|
|
ComLog.WriteLog(ComLog.Level.Error
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, string.Format(" => Created data file, name={0}", fi[i].FullName));
|
|
}
|
|
if (fi.Length == 0)
|
|
{
|
|
ComLog.WriteLog(ComLog.Level.Error
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, string.Format(" => Created data file failed", ""));
|
|
return retValue = false;
|
|
}
|
|
|
|
|
|
return retValue = true;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
ComLog.WriteLog(ComLog.Level.Exception
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, " => Exception :" + ex.Message);
|
|
return retValue = false;
|
|
}
|
|
finally
|
|
{
|
|
ComLog.WriteLog(ComLog.Level.trace
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, string.Format("End, Result={0}", retValue ? "Success" : "Failed"));
|
|
|
|
ComLog.SendLog(retValue ? ComLog.Level.trace : ComLog.Level.Error
|
|
, string.Format("Execute external program. ({0}) Result={1}", exeName, retValue ? "Success" : "Failed"));
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 터치키 마스터 이행 (서버전송) => BR만 이행처리
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
private ComLog.InstallResult MigrationTouchKeyMaster()
|
|
{
|
|
string statusMsg = string.Empty;
|
|
ComLog.InstallResult retValue = ComLog.InstallResult.Fail;
|
|
try
|
|
{
|
|
if (BasicInfo.CompCd.StartsWith("BR") == false)
|
|
{
|
|
statusMsg = string.Format("This store is not a touch key master migration target. [CompCode={0}]", BasicInfo.CompCd);
|
|
ComLog.WriteLog(ComLog.Level.trace
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, statusMsg, true);
|
|
return retValue = ComLog.InstallResult.Skip;
|
|
}
|
|
|
|
base.OnEcho("Migration POS TouchKey Master");
|
|
|
|
ComLog.WriteLog(ComLog.Level.trace
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, "Start");
|
|
|
|
// 이행 데이터 확인
|
|
string fileName = string.Format("{0}_TOUCH_MST.txt", BasicInfo.OldStoreNo);
|
|
string filePath = Path.Combine(DirInfo.JinDir, fileName);
|
|
if (File.Exists(filePath) == false)
|
|
{
|
|
statusMsg = string.Format("TouchKey Master, File not found [{0}]", filePath);
|
|
ComLog.WriteLog(ComLog.Level.Error
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, " => " + statusMsg, true);
|
|
return retValue = ComLog.InstallResult.Fail;
|
|
}
|
|
|
|
// 백업 데이터 확인
|
|
string backDir = GetJinDirBack();
|
|
string backPath = Path.Combine(backDir, fileName);
|
|
if (string.IsNullOrWhiteSpace(backDir) == false && File.Exists(backPath) == true)
|
|
{
|
|
// 백업파일 존재하면, 비교로 변경 여부 확인
|
|
bool isSame = FileCompare(filePath, backPath);
|
|
if (isSame)
|
|
{
|
|
statusMsg = "TouchKey Master, No change data, migration skip";
|
|
ComLog.WriteLog(ComLog.Level.trace
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, " => " + statusMsg, true);
|
|
return retValue = ComLog.InstallResult.Skip;
|
|
}
|
|
}
|
|
|
|
// 데이터 이행
|
|
const string ROW_SPLIT = "#~";
|
|
const string COL_SPLIT = "|";
|
|
List<string> lstData = new List<string>();
|
|
string[] orgText = File.ReadAllLines(filePath, Encoding.Default);
|
|
if (orgText.Length == 0)
|
|
{
|
|
statusMsg = string.Format("TouchKey Master, No data, File={0}", filePath);
|
|
ComLog.WriteLog(ComLog.Level.Error
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, " => "+ statusMsg, true);
|
|
return retValue = ComLog.InstallResult.Fail;
|
|
}
|
|
foreach (string line in orgText)
|
|
{
|
|
if (string.IsNullOrWhiteSpace(line)) continue;
|
|
|
|
// 0 1 2 3 4 5 6 7 8
|
|
// 브랜드코드#$점포코드#$포스번호#$터치키구분#$터치키TYPE#$터치키그룹코드#$터치키상세코드#$메뉴명#$화면위치
|
|
string[] temp = line.Split(new string[] { "#$" }, StringSplitOptions.None);
|
|
|
|
// 01:터치키 마스터
|
|
// 터치키구분|터치키TYPE|터치키그룹코드|터치키상세코드|메뉴명|화면위치
|
|
string[] data = new string[6];
|
|
data[0] = temp[3].Replace(ROW_SPLIT, " ").Replace(COL_SPLIT, " ").Trim();
|
|
data[1] = temp[4].Replace(ROW_SPLIT, " ").Replace(COL_SPLIT, " ").Trim();
|
|
data[2] = temp[5].Replace(ROW_SPLIT, " ").Replace(COL_SPLIT, " ").Trim();
|
|
data[3] = temp[6].Replace(ROW_SPLIT, " ").Replace(COL_SPLIT, " ").Trim();
|
|
data[4] = temp[7].Replace(ROW_SPLIT, " ").Replace(COL_SPLIT, " ").Trim();
|
|
data[5] = ComLib.IntParse(temp[8]).ToString();
|
|
|
|
string rowData = string.Join(COL_SPLIT, data);
|
|
lstData.Add(rowData);
|
|
}
|
|
string dataList = string.Join(ROW_SPLIT, lstData.ToArray());
|
|
|
|
Hashtable htSendData = new Hashtable();
|
|
Hashtable htRecvData = new Hashtable();
|
|
|
|
// 통신해더 생성
|
|
string commHead = ItemColumn.MakeCommHeader(0, "06");
|
|
// 전송데이터
|
|
htSendData.Add(Column.IQ_TMP_POSMST_INQ.DATA.INQ_TYPE, Column.IQ_TMP_POSMST_INQ.MSG_ID);
|
|
htSendData.Add(Column.IQ_TMP_POSMST_INQ.DATA.STOR_CD, BasicInfo.StoreNo);
|
|
htSendData.Add(Column.IQ_TMP_POSMST_INQ.DATA.POS_NO, BasicInfo.PosNo);
|
|
htSendData.Add(Column.IQ_TMP_POSMST_INQ.DATA.MST_KIND, Column.IQ_TMP_POSMST_INQ.MSTKIND.TOUCHKEY);
|
|
htSendData.Add(Column.IQ_TMP_POSMST_INQ.DATA.DATA_LIST, dataList);
|
|
htSendData.Add(Column.IQ_TMP_POSMST_INQ.DATA.RES_CD, "");
|
|
|
|
NetworkJSON irt = new NetworkJSON();
|
|
int ret = irt.IRTSendReceive(ServerInfo.SvrIP, ServerInfo.SvrPort, 1000 * 20, commHead, htSendData, ref htRecvData);
|
|
if (ret != ComLib.OK)
|
|
{
|
|
statusMsg = "Server communication error";
|
|
ComLog.WriteLog(ComLog.Level.Error
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, " => " + statusMsg, true);
|
|
return retValue = ComLog.InstallResult.Fail;
|
|
}
|
|
string res = htRecvData[Column.IQ_INSTALL_SCHEDULE_INQ.DATA.RES_CD].ToString().Trim();
|
|
|
|
statusMsg = string.Format("POS TouchKey Master upload, RespCode={0}, Result={1}", res, res == "00" ? "Success" : "Failed");
|
|
|
|
ComLog.WriteLog(res != "00" ? ComLog.Level.Error : ComLog.Level.trace
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, " =>" + statusMsg, true);
|
|
|
|
return retValue = res == "00" ? ComLog.InstallResult.Success : ComLog.InstallResult.Fail;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
statusMsg = "Exception : " + ex.Message;
|
|
ComLog.WriteLog(ComLog.Level.Exception
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, " => " + statusMsg);
|
|
return retValue = ComLog.InstallResult.Fail;
|
|
}
|
|
finally
|
|
{
|
|
ComLog.WriteLog(ComLog.Level.trace
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, string.Format("End, Result={0}", ComLog.InstallResultStr[(int)retValue]));
|
|
|
|
// 상태로그 전송 (07:TouchKey info upload )
|
|
if (string.IsNullOrWhiteSpace(statusMsg))
|
|
statusMsg = string.Format("POS TouchKey Master upload. Result={0}", ComLog.InstallResultStr[(int)retValue]);
|
|
ComLog.SendStatus(ComLog.InstallStatus.TouchkeyUpload, retValue, statusMsg);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 플레이버 마스터 이행 (서버전송) => 아이스크림 가게만 이행(BR)
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
private ComLog.InstallResult MigrationFlavorMaster()
|
|
{
|
|
string statusMsg = string.Empty;
|
|
ComLog.InstallResult retValue = ComLog.InstallResult.Fail;
|
|
try
|
|
{
|
|
if (!(BasicInfo.CompCd.StartsWith("BR") && BasicInfo.BrandCd == "3000"))
|
|
{
|
|
statusMsg = string.Format("This store is not a flavor master migration target. [CompCode={0}, StoreCode={1}, BrandCode={2}, BrandGB={3}]"
|
|
, BasicInfo.CompCd, BasicInfo.StoreNo, BasicInfo.BrandCd, BasicInfo.BrandGb);
|
|
ComLog.WriteLog(ComLog.Level.trace
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, statusMsg);
|
|
return retValue = ComLog.InstallResult.Skip;
|
|
}
|
|
|
|
base.OnEcho("Migration POS Flavor Master");
|
|
|
|
ComLog.WriteLog(ComLog.Level.trace
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, "Start");
|
|
|
|
// 이행 데이터 확인
|
|
string fileName = string.Format("{0}_FLAVOR_MST.txt", BasicInfo.OldStoreNo);
|
|
string filePath = Path.Combine(DirInfo.JinDir, fileName);
|
|
if (File.Exists(filePath) == false)
|
|
{
|
|
statusMsg = string.Format("Flavor Master, File not found [{0}]", filePath);
|
|
ComLog.WriteLog(ComLog.Level.trace
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, " => " + statusMsg, true);
|
|
return retValue = ComLog.InstallResult.Fail;
|
|
}
|
|
|
|
// 백업 데이터 확인
|
|
string backDir = GetJinDirBack();
|
|
string backPath = Path.Combine(backDir, fileName);
|
|
if (string.IsNullOrWhiteSpace(backDir) == false && File.Exists(backPath) == true)
|
|
{
|
|
// 백업파일 존재하면, 비교로 변경 여부 확인
|
|
bool isSame = FileCompare(filePath, backPath);
|
|
if (isSame)
|
|
{
|
|
statusMsg = "Flavor Master, No change data, migration skip";
|
|
ComLog.WriteLog(ComLog.Level.trace
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, " => " + statusMsg, true);
|
|
return retValue = ComLog.InstallResult.Skip;
|
|
}
|
|
}
|
|
|
|
// 데이터 이행
|
|
const string ROW_SPLIT = "#~";
|
|
const string COL_SPLIT = "|";
|
|
List<string> lstData = new List<string>();
|
|
string[] orgText = File.ReadAllLines(filePath, Encoding.Default);
|
|
if (orgText.Length == 0)
|
|
{
|
|
statusMsg = string.Format("Flavor Master, No data, File={0}", filePath);
|
|
ComLog.WriteLog(ComLog.Level.Error
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, " => " + statusMsg, true);
|
|
return retValue = ComLog.InstallResult.Fail;
|
|
}
|
|
foreach (string line in orgText)
|
|
{
|
|
if (string.IsNullOrWhiteSpace(line)) continue;
|
|
|
|
// 0 1 2 3 4
|
|
// 브랜드코드#$점포코드#$포스번호#$상품코드#$화면위치
|
|
string[] temp = line.Split(new string[] { "#$" }, StringSplitOptions.None);
|
|
|
|
// 02:플레이버 마스터
|
|
// #~상품코드|화면위치
|
|
string[] data = new string[2];
|
|
data[0] = ComLib.IntParse(temp[4]).ToString();
|
|
data[1] = temp[3].Replace(ROW_SPLIT, " ").Replace(COL_SPLIT, " ").Trim();
|
|
|
|
string rowData = string.Join(COL_SPLIT, data);
|
|
lstData.Add(rowData);
|
|
}
|
|
string dataList = string.Join(ROW_SPLIT, lstData.ToArray());
|
|
|
|
Hashtable htSendData = new Hashtable();
|
|
Hashtable htRecvData = new Hashtable();
|
|
|
|
// 통신해더 생성
|
|
string commHead = ItemColumn.MakeCommHeader(0, "06");
|
|
// 전송데이터
|
|
htSendData.Add(Column.IQ_TMP_POSMST_INQ.DATA.INQ_TYPE, Column.IQ_TMP_POSMST_INQ.MSG_ID);
|
|
htSendData.Add(Column.IQ_TMP_POSMST_INQ.DATA.STOR_CD, BasicInfo.StoreNo);
|
|
htSendData.Add(Column.IQ_TMP_POSMST_INQ.DATA.POS_NO, BasicInfo.PosNo);
|
|
htSendData.Add(Column.IQ_TMP_POSMST_INQ.DATA.MST_KIND, Column.IQ_TMP_POSMST_INQ.MSTKIND.FLAVOR);
|
|
htSendData.Add(Column.IQ_TMP_POSMST_INQ.DATA.DATA_LIST, dataList);
|
|
htSendData.Add(Column.IQ_TMP_POSMST_INQ.DATA.RES_CD, "");
|
|
|
|
NetworkJSON irt = new NetworkJSON();
|
|
int ret = irt.IRTSendReceive(ServerInfo.SvrIP, ServerInfo.SvrPort, 1000 * 20, commHead, htSendData, ref htRecvData);
|
|
if (ret != ComLib.OK)
|
|
{
|
|
statusMsg = "Server communication error";
|
|
ComLog.WriteLog(ComLog.Level.Error
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, " => " + statusMsg, true);
|
|
return retValue = ComLog.InstallResult.Fail;
|
|
}
|
|
string res = htRecvData[Column.IQ_INSTALL_SCHEDULE_INQ.DATA.RES_CD].ToString().Trim();
|
|
|
|
statusMsg = string.Format("POS flavor Master upload, RespCode={0}, Result={1}", res, res == "00" ? "Success" : "Failed");
|
|
|
|
ComLog.WriteLog(res != "00" ? ComLog.Level.Error : ComLog.Level.trace
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, " =>" + statusMsg, true);
|
|
|
|
return retValue = res == "00" ? ComLog.InstallResult.Success : ComLog.InstallResult.Fail;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
statusMsg = "Exception : " + ex.Message;
|
|
ComLog.WriteLog(ComLog.Level.Exception
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, " => " + statusMsg);
|
|
return retValue = ComLog.InstallResult.Fail;
|
|
}
|
|
finally
|
|
{
|
|
ComLog.WriteLog(ComLog.Level.trace
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, string.Format("End, Result={0}", ComLog.InstallResultStr[(int)retValue]));
|
|
|
|
// 상태로그 전송 (07:TouchKey info upload )
|
|
if (string.IsNullOrWhiteSpace(statusMsg))
|
|
statusMsg = string.Format("POS flavor Master upload. Result={0}", ComLog.InstallResultStr[(int)retValue]);
|
|
ComLog.SendStatus(ComLog.InstallStatus.FloavorUpload, retValue, statusMsg);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 층/테이블정보 이행 (로컬저장, 서버전송) => PB,SL 후불매장, MainPos
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
private ComLog.InstallResult MigrationTableMaster()
|
|
{
|
|
string statusMsg = string.Empty;
|
|
ComLog.InstallResult retValue = ComLog.InstallResult.Fail;
|
|
try
|
|
{
|
|
int ret = -99;
|
|
|
|
bool isMigration = true;
|
|
if (BasicInfo.CompCd.StartsWith("BR")) isMigration = false;
|
|
if (BasicInfo.StoreType != "1") isMigration = false;
|
|
if (BasicInfo.OrderType != "0") isMigration = false;
|
|
if (isMigration == false)
|
|
{
|
|
statusMsg = string.Format("This store is not a table master migration target. [CompCode={0}, StoreType={1}, OrderType={2}]"
|
|
, BasicInfo.CompCd, BasicInfo.StoreType, BasicInfo.OrderType);
|
|
ComLog.WriteLog(ComLog.Level.trace
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, statusMsg);
|
|
|
|
return retValue = ComLog.InstallResult.Skip;
|
|
}
|
|
|
|
base.OnEcho("Migration POS Floor/Table Master");
|
|
|
|
ComLog.WriteLog(ComLog.Level.trace
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, "Start");
|
|
|
|
#region ### 기존 이행여부 확인 => 테이블정보가 변경 되었을 수 있기 때문에 무조건 이행 처리 한다.
|
|
//using (SqlDB sqlDb = new SqlDB(DatabaseInfo.DataSource, "POSMST", DatabaseInfo.UserId, DatabaseInfo.Password))
|
|
//{
|
|
// string sql = string.Format("SELECT COUNT(*) CNT FROM POSMST..MST_FLOOR WHERE CMP_CD = '{0}' AND STOR_CD = '{1}'"
|
|
// , BasicInfo.CompCd, BasicInfo.StoreNo);
|
|
// DataTable dt = null;
|
|
// ret = sqlDb.DBDataTableSelect(sql, CommandType.Text, null, out dt);
|
|
// if (ret != ComLib.OK)
|
|
// {
|
|
// statusMsg = "POSMST..MSTFLOOR Table select failed";
|
|
// ComLog.WriteLog(ComLog.Level.Error
|
|
// , System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
// + System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
// , " => " + statusMsg, true);
|
|
// return retValue = ComLog.InstallResult.Fail;
|
|
// }
|
|
|
|
// int cnt = ComLib.IntParse(dt.Rows[0]["CNT"].ToString());
|
|
// if (cnt > 0)
|
|
// {
|
|
// statusMsg = "Floor&Table Master already exists.";
|
|
// ComLog.WriteLog(ComLog.Level.trace
|
|
// , System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
// + System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
// , " => " + statusMsg, true);
|
|
// return retValue = ComLog.InstallResult.Skip;
|
|
// }
|
|
//}
|
|
#endregion
|
|
|
|
#region ### 이행데이터(층/테이블) 확인 및 메모리 로드
|
|
// 이행 데이터 확인
|
|
string fileName = string.Format("{0}_TABLE_INFO.txt", BasicInfo.OldStoreNo);
|
|
string filePath = Path.Combine(DirInfo.JinDir, fileName);
|
|
if (File.Exists(filePath) == false)
|
|
{
|
|
statusMsg = string.Format("Table Master, File not found [{0}]", filePath);
|
|
ComLog.WriteLog(ComLog.Level.trace
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, " => " + statusMsg, true);
|
|
return retValue = ComLog.InstallResult.Fail;
|
|
}
|
|
|
|
// 백업 데이터 확인
|
|
string backDir = GetJinDirBack();
|
|
string backPath = Path.Combine(backDir, fileName);
|
|
if (string.IsNullOrWhiteSpace(backDir) == false && File.Exists(backPath) == true)
|
|
{
|
|
// 백업파일 존재하면, 비교로 변경 여부 확인
|
|
bool isSame = FileCompare(filePath, backPath);
|
|
if (isSame)
|
|
{
|
|
statusMsg = "Table Master, No change data, migration skip";
|
|
ComLog.WriteLog(ComLog.Level.trace
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, " => " + statusMsg, true);
|
|
return retValue = ComLog.InstallResult.Skip;
|
|
}
|
|
}
|
|
|
|
// 데이터 이행
|
|
List<TableInfo> lstData = new List<TableInfo>();
|
|
string[] orgText = File.ReadAllLines(filePath, Encoding.Default);
|
|
if (orgText.Length == 0)
|
|
{
|
|
statusMsg = string.Format("Table Master, No data, File={0}", filePath);
|
|
ComLog.WriteLog(ComLog.Level.Error
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, " => " + statusMsg, true);
|
|
return retValue = ComLog.InstallResult.Fail;
|
|
}
|
|
foreach (string line in orgText)
|
|
{
|
|
if (string.IsNullOrWhiteSpace(line)) continue;
|
|
|
|
// 브랜드코드#$점포코드#$포스번호#$층코드#$층명#$테이블번호#$테이블명#$위치X#$위치Y#$width#$height
|
|
string[] temp = line.Split(new string[] { "#$" }, StringSplitOptions.None);
|
|
|
|
TableInfo tbl = new TableInfo();
|
|
tbl.BrandCode = temp[0];
|
|
tbl.StroeCode = temp[1];
|
|
tbl.PosNo = temp[2];
|
|
tbl.FloorCode = temp[3];
|
|
tbl.FloorName = temp[4];
|
|
tbl.TableNo = temp[5];
|
|
tbl.TableName = temp[6];
|
|
tbl.X = ComLib.IntParse(temp[7]);
|
|
tbl.Y = ComLib.IntParse(temp[8]);
|
|
tbl.W = ComLib.IntParse(temp[9]);
|
|
tbl.H = ComLib.IntParse(temp[10]);
|
|
|
|
lstData.Add(tbl);
|
|
}
|
|
|
|
|
|
// 층마스터 생성
|
|
List<MST_FLOOR.DATA> mstFloors = new List<MST_FLOOR.DATA>();
|
|
foreach (var f in from x in lstData
|
|
group x.FloorCode by new { code = x.FloorCode, name = x.FloorName } into g
|
|
orderby g.Key.code
|
|
select new { code = g.Key.code, name = g.Key.name })
|
|
{
|
|
MST_FLOOR.DATA floor = new MST_FLOOR.DATA();
|
|
|
|
floor.FLOOR_CD = f.code.PadLeft(3,'0');
|
|
floor.FLOOR_NM = string.IsNullOrWhiteSpace(f.name) ? f.code : f.name;
|
|
|
|
mstFloors.Add(floor);
|
|
}
|
|
|
|
// 테이블마스터 생성
|
|
List<MST_TABLE.DATA> mstTables = new List<MST_TABLE.DATA>();
|
|
foreach (var t in from x in lstData
|
|
orderby x.FloorCode, x.TableNo
|
|
select x)
|
|
{
|
|
MST_TABLE.DATA table = new MST_TABLE.DATA();
|
|
table.FLOOR_CD = t.FloorCode.PadLeft(3, '0');
|
|
table.TABLE_NO = t.TableNo.PadLeft(3, '0');
|
|
table.TABLE_NM = string.IsNullOrWhiteSpace(t.TableName) ? t.TableNo : t.TableName;
|
|
table.FONT_NM = BasicInfo._font;
|
|
table.FONT_SIZE = 10;
|
|
table.X_COORD = t.X;
|
|
table.Y_COORD = t.Y;
|
|
table.WIDTH = t.W;
|
|
table.HEIGHT = t.H;
|
|
table.OP_FLAG = "0";
|
|
table.USE_FLAG = "0";
|
|
table.CUST_CNT = 0;
|
|
|
|
// 테이블 데이터 위치 보정 ( TableBackSize=896,550)
|
|
int xw = t.X + t.W;
|
|
int yh = t.Y + t.H;
|
|
if (xw > 986) table.X_COORD = 986 - t.W;
|
|
if (yh > 550) table.Y_COORD = 550 - t.H;
|
|
|
|
mstTables.Add(table);
|
|
}
|
|
#endregion
|
|
|
|
#region ### 층/테이블 마스터 로컬저장
|
|
// 층/테이블 마스터 로컬저장
|
|
using (SqlDB sqlDb = new SqlDB(DatabaseInfo.DataSource, "POSMST", DatabaseInfo.UserId, DatabaseInfo.Password))
|
|
{
|
|
List<string> query = new List<string>();
|
|
string fmt = string.Empty;
|
|
string sql = string.Empty;
|
|
|
|
// 층마스터 삭제
|
|
fmt = "DELETE FROM POSMST..MST_FLOOR WHERE CMP_CD = '{0}' AND STOR_CD = '{1}' ";
|
|
sql = string.Format(fmt, BasicInfo.CompCd, BasicInfo.StoreNo);
|
|
query.Add(sql);
|
|
|
|
// 층마스터 이행
|
|
foreach (var f in mstFloors)
|
|
{
|
|
fmt = "INSERT INTO POSMST..MST_FLOOR (CMP_CD, STOR_CD, FLOOR_CD, FLOOR_NM, UPD_DT, REG_DT, USE_YN) "
|
|
+ "VALUES ('{0}', '{1}', '{2}', '{3}', '{4}', '{5}', '{6}') ";
|
|
sql = string.Format(fmt, BasicInfo.CompCd, BasicInfo.StoreNo
|
|
, f.FLOOR_CD
|
|
, f.FLOOR_NM
|
|
, DateTime.Now.ToString("yyyyMMddHHmmss")
|
|
, DateTime.Now.ToString("yyyyMMddHHmmss")
|
|
, PosConst.MST_USE_YN.YES);
|
|
query.Add(sql);
|
|
}
|
|
|
|
// 테이블마스터 삭제
|
|
fmt = "DELETE FROM POSMST..MST_TBL WHERE CMP_CD = '{0}' AND STOR_CD = '{1}' ";
|
|
sql = string.Format(fmt, BasicInfo.CompCd, BasicInfo.StoreNo);
|
|
query.Add(sql);
|
|
|
|
// 테이블마스터 이행
|
|
foreach (var t in mstTables)
|
|
{
|
|
fmt = "INSERT INTO POSMST..MST_TBL (CMP_CD, STOR_CD, FLOOR_CD, TBL_NO, TBL_NM, FONT_SIZE, X_COORD, Y_COORD, WIDTH, HGT, UPD_DT, REG_DT, USE_YN) "
|
|
+ "VALUES ('{0}', '{1}', '{2}', '{3}', N'{4}', {5}, {6}, {7}, {8}, {9}, '{10}', '{11}', '{12}') ";
|
|
sql = string.Format(fmt, BasicInfo.CompCd, BasicInfo.StoreNo
|
|
, t.FLOOR_CD
|
|
, t.TABLE_NO
|
|
, t.TABLE_NM
|
|
, t.FONT_SIZE
|
|
, t.X_COORD
|
|
, t.Y_COORD
|
|
, t.WIDTH
|
|
, t.HEIGHT
|
|
, DateTime.Now.ToString("yyyyMMddHHmmss")
|
|
, DateTime.Now.ToString("yyyyMMddHHmmss")
|
|
, PosConst.MST_USE_YN.YES);
|
|
query.Add(sql);
|
|
}
|
|
|
|
ret = sqlDb.DBExecuteNonQuery(query.ToArray(), System.Data.CommandType.Text, null, true);
|
|
if (ret != ComLib.OK)
|
|
{
|
|
statusMsg = "Table Master, Local Databse Insert Error";
|
|
ComLog.WriteLog(ComLog.Level.trace
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, " => " + statusMsg);
|
|
return retValue = ComLog.InstallResult.Fail;
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region ### 층/테이블 마스터 서버전송 (실패해도 진행한다.)
|
|
// 층/테이블 마스터 서버전송 (기존 테이블백업 이용)
|
|
const string COL_SPLIT = "|";
|
|
const string ROW_SPLIT = "#~";
|
|
List<string> lstSend = new List<string>();
|
|
|
|
// 층 정보 생성
|
|
foreach (var f in mstFloors)
|
|
{
|
|
#region Oracle Table Schema (SPP.POS_MST_FLOOR)
|
|
//SELECT CMP_CD, STOR_CD, FLOOR_CD, FLOOR_NM, FILLER_1, FILLER_2, FILLER_3, FILLER_4, FILLER_5, USE_YN, REG_USER_ID, REG_DATE, UPD_USER_ID, UPD_DATE
|
|
//FROM SPP.POS_MST_FLOOR
|
|
|
|
//0 , "01" => Floor Master
|
|
//1 , CMP_CD
|
|
//2 , STOR_CD
|
|
//3 , FLOOR_CD
|
|
//4 , FLOOR_NM
|
|
//5 , FILLER_1
|
|
//6 , FILLER_2
|
|
//7 , FILLER_3
|
|
//8 , FILLER_4
|
|
//9 , FILLER_5
|
|
//10, USE_YN
|
|
//11, REG_USER_ID
|
|
//12, REG_DATE
|
|
//13, UPD_USER_ID
|
|
//14, UPD_DATE
|
|
#endregion
|
|
|
|
if (f.UPD_DT.Trim().Length != 14) f.UPD_DT = DateTime.Now.ToString("yyyyMMddhhmmss");
|
|
if (f.REG_DT.Trim().Length != 14) f.REG_DT = DateTime.Now.ToString("yyyyMMddhhmmss");
|
|
|
|
string[] floor = new string[15];
|
|
floor[0] = "01";
|
|
floor[1] = BasicInfo.CompCd;
|
|
floor[2] = BasicInfo.StoreNo;
|
|
floor[3] = f.FLOOR_CD;
|
|
floor[4] = f.FLOOR_NM;
|
|
floor[5] = string.Empty;
|
|
floor[6] = string.Empty;
|
|
floor[7] = string.Empty;
|
|
floor[8] = string.Empty;
|
|
floor[9] = string.Empty;
|
|
floor[10] = PosConst.MST_USE_YN.YES;
|
|
floor[11] = "migration";
|
|
floor[12] = f.REG_DT;
|
|
floor[13] = "migration";
|
|
floor[14] = f.UPD_DT;
|
|
|
|
string rowData = string.Join(COL_SPLIT, floor);
|
|
lstSend.Add(rowData);
|
|
}
|
|
// 테이블 정보 생성
|
|
foreach (var t in mstTables)
|
|
{
|
|
#region Oracle Table Schema (SPP.POS_MST_TBL)
|
|
//SELECT CMP_CD, STOR_CD, FLOOR_CD, TBL_NO, TBL_NM, TBL_TYPE, TBL_SHAPE, BACKGR_COLOR, BACKGR_IMG, FONT_COLOR, FONT_NM, FONT_SIZE, LOC_X, LOC_Y, WIDTH, HGT, DISP_DIV, SEAT_CNT, SEAT_CNT_DISP_DIV, OPERATE_DIV, OPERATE_FLOOR_CD, OPERATE_TBL_NO, ORD_CMPT_COLOR, PAY_CMPT_COLOR, FILLER_1, FILLER_2, FILLER_3, FILLER_4, FILLER_5, USE_YN, REG_USER_ID, REG_DATE, UPD_USER_ID, UPD_DATE
|
|
//FROM SPP.POS_MST_TBL
|
|
|
|
//0 , "02" => Table Master
|
|
//1 , CMP_CD
|
|
//2 , STOR_CD
|
|
//3 , FLOOR_CD
|
|
//4 , TBL_NO
|
|
//5 , TBL_NM
|
|
//6 , TBL_TYPE
|
|
//7 , TBL_SHAPE
|
|
//8 , BACKGR_COLOR
|
|
//9 , BACKGR_IMG
|
|
//10, FONT_COLOR
|
|
//11, FONT_NM
|
|
//12, FONT_SIZE
|
|
//13, LOC_X
|
|
//14, LOC_Y
|
|
//15, WIDTH
|
|
//16, HGT
|
|
//17, DISP_DIV
|
|
//18, SEAT_CNT
|
|
//19, SEAT_CNT_DISP_DIV
|
|
//20, OPERATE_DIV
|
|
//21, OPERATE_FLOOR_CD
|
|
//22, OPERATE_TBL_NO
|
|
//23, ORD_CMPT_COLOR
|
|
//24, PAY_CMPT_COLOR
|
|
//25, FILLER_1
|
|
//26, FILLER_2
|
|
//27, FILLER_3
|
|
//28, FILLER_4
|
|
//29, FILLER_5
|
|
//30, USE_YN
|
|
//31, REG_USER_ID
|
|
//32, REG_DATE
|
|
//33, UPD_USER_ID
|
|
//34, UPD_DATE
|
|
#endregion
|
|
|
|
if (t.UPD_DT.Trim().Length != 14) t.UPD_DT = DateTime.Now.ToString("yyyyMMddhhmmss");
|
|
if (t.REG_DT.Trim().Length != 14) t.REG_DT = DateTime.Now.ToString("yyyyMMddhhmmss");
|
|
t.TABLE_DISP_FLAG = "2";
|
|
|
|
string[] table = new string[35];
|
|
table[0] = "02";
|
|
|
|
table[1] = BasicInfo.CompCd; //1 CMP_CD
|
|
table[2] = BasicInfo.StoreNo; //2 , STOR_CD
|
|
table[3] = t.FLOOR_CD; //3 , FLOOR_CD
|
|
table[4] = t.TABLE_NO; //4 , TBL_NO
|
|
table[5] = t.TABLE_NM; //5 , TBL_NM
|
|
table[6] = ""; //6 , TBL_TYPE (사용안함)
|
|
table[7] = ""; //7 , TBL_SHAPE (사용안함)
|
|
table[8] = ""; //8 , BACKGR_COLOR (사용안함)
|
|
table[9] = ""; //9 , BACKGR_IMG (사용안함)
|
|
table[10] = ""; //10, FONT_COLOR (사용안함)
|
|
table[11] = t.FONT_NM; //11, FONT_NM (Default:나눔스퀘어)
|
|
table[12] = t.FONT_SIZE.ToString(); //12, FONT_SIZE (Default:10)
|
|
table[13] = t.X_COORD.ToString(); //13, LOC_X
|
|
table[14] = t.Y_COORD.ToString(); //14, LOC_Y
|
|
table[15] = t.WIDTH.ToString(); //15, WIDTH
|
|
table[16] = t.HEIGHT.ToString(); //16, HGT
|
|
table[17] = t.TABLE_DISP_FLAG; //17, DISP_DIV (사용안함, 2:테이블명 고정)
|
|
table[18] = ""; //18, SEAT_CNT (사용안함)
|
|
table[19] = ""; //19, SEAT_CNT_DISP_DIV (사용안함)
|
|
table[20] = ""; //20, OPERATE_DIV
|
|
table[21] = ""; //21, OPERATE_FLOOR_CD
|
|
table[22] = ""; //22, OPERATE_TBL_NO
|
|
table[23] = ""; //23, ORD_CMPT_COLOR
|
|
table[24] = ""; //24, PAY_CMPT_COLOR
|
|
table[25] = ""; //25, FILLER_1
|
|
table[26] = ""; //26, FILLER_2
|
|
table[27] = ""; //27, FILLER_3
|
|
table[28] = ""; //28, FILLER_4
|
|
table[29] = ""; //29, FILLER_5
|
|
table[30] = PosConst.MST_USE_YN.YES; ; //30, USE_YN
|
|
table[31] = "migration"; ; //31, REG_USER_ID
|
|
table[32] = t.REG_DT; //32, REG_DATE
|
|
table[33] = "migration"; ; //33, UPD_USER_ID
|
|
table[34] = t.UPD_DT; //34, UPD_DATE
|
|
|
|
string rowData = string.Join(COL_SPLIT, table);
|
|
lstSend.Add(rowData);
|
|
}
|
|
|
|
// 전송데이터
|
|
string dataList = string.Join(ROW_SPLIT, lstSend.ToArray());
|
|
|
|
// 층/테이블 마스터 전송
|
|
Hashtable htSendData = new Hashtable();
|
|
Hashtable htRecvData = new Hashtable();
|
|
|
|
// 통신해더 생성
|
|
string commHead = ItemColumn.MakeCommHeader(0, "06");
|
|
|
|
// 전송데이터
|
|
//htSendData.Add(Column.IQ_TMP_POSMST_INQ.DATA.INQ_TYPE, Column.IQ_TMP_POSMST_INQ.MSG_ID);
|
|
//htSendData.Add(Column.IQ_TMP_POSMST_INQ.DATA.STOR_CD, BasicInfo.StoreNo);
|
|
//htSendData.Add(Column.IQ_TMP_POSMST_INQ.DATA.POS_NO, BasicInfo.PosNo);
|
|
//htSendData.Add(Column.IQ_TMP_POSMST_INQ.DATA.MST_KIND, Column.IQ_TMP_POSMST_INQ.MSTKIND.TABLE);
|
|
//htSendData.Add(Column.IQ_TMP_POSMST_INQ.DATA.DATA_LIST, dataList);
|
|
//htSendData.Add(Column.IQ_TMP_POSMST_INQ.DATA.RES_CD, "");
|
|
|
|
// 층/테이블 이행 데이터 서버 전송은 기존 "55"번 전문형식으로 전송한다.
|
|
htSendData.Add(Column.IQ_POS_TABLE_MST_INQ.DATA.INQ_TYPE, Column.IQ_POS_TABLE_MST_INQ.MSG_ID);
|
|
htSendData.Add(Column.IQ_POS_TABLE_MST_INQ.DATA.STOR_CD, BasicInfo.StoreNo);
|
|
htSendData.Add(Column.IQ_POS_TABLE_MST_INQ.DATA.INQ_DIV, "1");
|
|
htSendData.Add(Column.IQ_POS_TABLE_MST_INQ.DATA.DATA_LIST, dataList);
|
|
htSendData.Add(Column.IQ_POS_TABLE_MST_INQ.DATA.RES_CD, "");
|
|
|
|
|
|
// 층/테이블 벡업 PORT 구하기 => 설치프로그램 통신 포트는 각사별 BizInqPort를 사용한다.
|
|
//CmMessage cmCommPort = CmMessage.MakeMessageFromFile(Path.Combine(DirInfo.InstallDir, @"INI\CommPort.INI"));
|
|
//var commPort = ComLib.IntParse(ComLib.GetConfigInfo(cmCommPort, "SERVER", "BizInqPort", ""));
|
|
//var commAddr = ServerInfo.SvrIP;
|
|
var commPort = ServerInfo.SvrPort;
|
|
var commAddr = ServerInfo.SvrIP;
|
|
|
|
NetworkJSON irt = new NetworkJSON();
|
|
ret = irt.IRTSendReceive(commAddr, commPort, 1000 * 20, commHead, htSendData, ref htRecvData);
|
|
if (ret != ComLib.OK)
|
|
{
|
|
statusMsg = "Server communication error";
|
|
ComLog.WriteLog(ComLog.Level.Error
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, " => " + statusMsg, true);
|
|
return retValue = ComLog.InstallResult.Fail;
|
|
}
|
|
string res = htRecvData[Column.IQ_POS_TABLE_MST_INQ.DATA.RES_CD].ToString().Trim();
|
|
|
|
statusMsg = string.Format("POS Floor/Table Master migratioin & upload, RespCode={0}, Result={1}", res, res == "00" ? "Success" : "Failed");
|
|
|
|
ComLog.WriteLog(res != "00" ? ComLog.Level.Error : ComLog.Level.trace
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, " =>" + statusMsg, true);
|
|
|
|
retValue = res == "00" ? ComLog.InstallResult.Success : ComLog.InstallResult.Fail;
|
|
|
|
#endregion
|
|
|
|
return retValue;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
statusMsg = "Exception : " + ex.Message;
|
|
ComLog.WriteLog(ComLog.Level.Exception
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, " => " + statusMsg);
|
|
return retValue = ComLog.InstallResult.Fail;
|
|
}
|
|
finally
|
|
{
|
|
ComLog.WriteLog(ComLog.Level.trace
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, string.Format("End, Result={0}", ComLog.InstallResultStr[(int)retValue]));
|
|
|
|
// 상태로그 전송 (07:TouchKey info upload )
|
|
if (string.IsNullOrWhiteSpace(statusMsg))
|
|
statusMsg = string.Format("POS Floor/Table Master migratioin & upload. Result={0}", ComLog.InstallResultStr[(int)retValue]);
|
|
ComLog.SendStatus(ComLog.InstallStatus.TableInfoUpload, retValue, statusMsg);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 기타코드 이행 (로컬저장)
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
private ComLog.InstallResult MigrationEtcCode()
|
|
{
|
|
string statusMsg = string.Empty;
|
|
ComLog.InstallResult retValue = ComLog.InstallResult.Fail;
|
|
try
|
|
{
|
|
// 선불매장, 후불매장 MainPOS만 대상 이지만, 구분없이 모두 이행처리 한다.
|
|
|
|
base.OnEcho("Migration ETC Code Master");
|
|
|
|
ComLog.WriteLog(ComLog.Level.trace
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, "Start");
|
|
|
|
#region ### 이행데이터 메모리 로드
|
|
// 이행 데이터 확인
|
|
string fileName = string.Format("{0}_REASON.txt", BasicInfo.OldStoreNo);
|
|
string filePath = Path.Combine(DirInfo.JinDir, fileName);
|
|
if (File.Exists(filePath) == false)
|
|
{
|
|
statusMsg = string.Format("ETC Code Master, File not found [{0}]", filePath);
|
|
ComLog.WriteLog(ComLog.Level.trace
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, " => " + statusMsg);
|
|
return retValue = ComLog.InstallResult.Skip;
|
|
}
|
|
|
|
// 백업 데이터 확인
|
|
string backDir = GetJinDirBack();
|
|
string backPath = Path.Combine(backDir, fileName);
|
|
if (string.IsNullOrWhiteSpace(backDir) == false && File.Exists(backPath) == true)
|
|
{
|
|
// 백업파일 존재하면, 비교로 변경 여부 확인
|
|
bool isSame = FileCompare(filePath, backPath);
|
|
if (isSame)
|
|
{
|
|
statusMsg = "ETC Code Master, No change data, migration skip";
|
|
ComLog.WriteLog(ComLog.Level.trace
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, " => " + statusMsg, true);
|
|
return retValue = ComLog.InstallResult.Skip;
|
|
}
|
|
}
|
|
|
|
// 데이터 이행
|
|
List<EtcCodeInfo> lstData = new List<EtcCodeInfo>();
|
|
string[] orgText = File.ReadAllLines(filePath, Encoding.Default);
|
|
if (orgText.Length == 0)
|
|
{
|
|
statusMsg = string.Format("ETC Code Master, No data, File={0}", filePath);
|
|
ComLog.WriteLog(ComLog.Level.trace
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, " => " + statusMsg, true);
|
|
return retValue = ComLog.InstallResult.Skip;
|
|
}
|
|
foreach (string line in orgText)
|
|
{
|
|
if (string.IsNullOrWhiteSpace(line)) continue;
|
|
|
|
// 코드분류#$코드#$코드명
|
|
string[] temp = line.Split(new string[] { "#$" }, StringSplitOptions.None);
|
|
|
|
EtcCodeInfo etc = new EtcCodeInfo();
|
|
etc.GroupCode = temp[0];
|
|
etc.EtcCode = temp[1];
|
|
|
|
if (etc.GroupCode == "VOID")
|
|
{
|
|
etc.commCode = PosConst.COMMON_CODE_GROUP.Z0008;
|
|
etc.EtcName = temp[2].Trim();
|
|
}
|
|
else if (etc.GroupCode == "MEMO")
|
|
{
|
|
string memo = temp[2].Trim();
|
|
List<string> x = new List<string>();
|
|
for (var i = 0; i < 3; i++)
|
|
{
|
|
if (ComLib.LenH(memo) > 40)
|
|
{
|
|
var v = ComLib.LeftH(memo, 40).TrimEnd();
|
|
x.Add(v);
|
|
memo = memo.Substring(v.Length).Trim();
|
|
}
|
|
else
|
|
{
|
|
x.Add(memo);
|
|
break;
|
|
}
|
|
}
|
|
etc.commCode = PosConst.COMMON_CODE_GROUP.Z0020;
|
|
etc.EtcName = string.Join(Environment.NewLine, x);
|
|
}
|
|
else
|
|
{
|
|
continue;
|
|
}
|
|
|
|
lstData.Add(etc);
|
|
}
|
|
#endregion
|
|
|
|
#region ### 기타코드 마스터 로컬저장
|
|
|
|
if (lstData.Count == 0)
|
|
{
|
|
statusMsg = string.Format("ETC Code Master, No data, File={0}", filePath);
|
|
return retValue = ComLog.InstallResult.Skip;
|
|
}
|
|
|
|
// 기타코드 마스터 로컬저장
|
|
using (SqlDB sqlDb = new SqlDB(DatabaseInfo.DataSource, "POSMST", DatabaseInfo.UserId, DatabaseInfo.Password))
|
|
{
|
|
List<string> query = new List<string>();
|
|
string fmt = string.Empty;
|
|
string sql = string.Empty;
|
|
|
|
// 기타코드 삭제
|
|
fmt = "DELETE FROM POSMST..MST_POS_LOCAL WHERE CMP_CD = '{0}' AND STOR_CD = '{1}' AND GRP_CD IN ('{2}', '{3}') ";
|
|
sql = string.Format(fmt, BasicInfo.CompCd, BasicInfo.StoreNo, PosConst.COMMON_CODE_GROUP.Z0008, PosConst.COMMON_CODE_GROUP.Z0020);
|
|
query.Add(sql);
|
|
|
|
// 기타코드 이행
|
|
foreach (var t in lstData)
|
|
{
|
|
fmt = "INSERT INTO POSMST..MST_POS_LOCAL (CMP_CD, STOR_CD, GRP_CD, ENTRY_CD, ENTRY_NM, DISP_SEQ, USE_YN, UPD_DT, REG_DT) "
|
|
+ "VALUES ('{0}', '{1}', '{2}', '{3}', N'{4}', {5}, '{6}', '{7}', '{8}' ) ";
|
|
sql = string.Format(fmt, BasicInfo.CompCd, BasicInfo.StoreNo
|
|
, t.commCode
|
|
, ComLib.IsNumber(t.EtcCode) ? ComLib.IntParse(t.EtcCode).ToString() : t.EtcCode.Trim()
|
|
, ConvertDBStr(t.EtcName)
|
|
, 0
|
|
, PosConst.MST_USE_YN.YES
|
|
, DateTime.Now.ToString("yyyyMMDDHHmmss")
|
|
, DateTime.Now.ToString("yyyyMMDDHHmmss")
|
|
);
|
|
query.Add(sql);
|
|
}
|
|
|
|
int ret = sqlDb.DBExecuteNonQuery(query.ToArray(), System.Data.CommandType.Text, null, true);
|
|
if (ret != ComLib.OK)
|
|
{
|
|
statusMsg = "ETC Code Master, Local Databse Insert Error";
|
|
ComLog.WriteLog(ComLog.Level.Error
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, " => " + statusMsg);
|
|
return retValue = ComLog.InstallResult.Fail;
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
return retValue = ComLog.InstallResult.Success;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
statusMsg = "Exception : " + ex.Message;
|
|
ComLog.WriteLog(ComLog.Level.Exception
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, " => " + statusMsg);
|
|
return retValue = ComLog.InstallResult.Fail;
|
|
}
|
|
finally
|
|
{
|
|
ComLog.WriteLog(ComLog.Level.trace
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, string.Format("End, Result={0}", ComLog.InstallResultStr[(int)retValue]));
|
|
|
|
// 상태로그 전송 (10:Etc info migration)
|
|
if (string.IsNullOrWhiteSpace(statusMsg))
|
|
statusMsg = string.Format("POS Etc Info migration. Result={0}", ComLog.InstallResultStr[(int)retValue]);
|
|
ComLog.SendStatus(ComLog.InstallStatus.EtcInfoMigration, retValue, statusMsg);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 테이블예약 로컬이행 (후불(MainPOS)일때..)
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
private ComLog.InstallResult MigrationTableResv()
|
|
{
|
|
string statusMsg = string.Empty;
|
|
ComLog.InstallResult retValue = ComLog.InstallResult.Fail;
|
|
|
|
try
|
|
{
|
|
bool isMigration = true;
|
|
if (BasicInfo.StoreType != "1") isMigration = false;
|
|
if (BasicInfo.OrderType != "0") isMigration = false;
|
|
if (isMigration)
|
|
{
|
|
statusMsg = string.Format("This store is not a table master migration target. [CompCode={0}, StoreType={1}, OrderType={2}]"
|
|
, BasicInfo.CompCd, BasicInfo.StoreType, BasicInfo.OrderType);
|
|
ComLog.WriteLog(ComLog.Level.trace
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, statusMsg);
|
|
return retValue = ComLog.InstallResult.Skip;
|
|
}
|
|
|
|
base.OnEcho("Migration POS local table reservation");
|
|
|
|
ComLog.WriteLog(ComLog.Level.trace
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, "Start");
|
|
|
|
#region ### 이행데이터 메모리 로드
|
|
// 이행데이터 확인
|
|
string fileName = string.Format("{0}_TABLE_RESV.txt", BasicInfo.OldStoreNo);
|
|
string filePath = Path.Combine(DirInfo.JinDir, fileName);
|
|
if (File.Exists(filePath) == false)
|
|
{
|
|
statusMsg = string.Format("Table reservation, File not found [{0}]", filePath);
|
|
ComLog.WriteLog(ComLog.Level.trace
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, " => " + statusMsg, true);
|
|
return retValue = ComLog.InstallResult.Skip;
|
|
}
|
|
|
|
// 백업 데이터 확인
|
|
string backDir = GetJinDirBack();
|
|
string backPath = Path.Combine(backDir, fileName);
|
|
if (string.IsNullOrWhiteSpace(backDir) == false && File.Exists(backPath) == true)
|
|
{
|
|
// 백업파일 존재하면, 비교로 변경 여부 확인
|
|
bool isEquals = FileCompare(filePath, backPath);
|
|
if (isEquals)
|
|
{
|
|
statusMsg = "Table reservation, No change data, migration skip";
|
|
ComLog.WriteLog(ComLog.Level.trace
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, " => " + statusMsg, true);
|
|
return retValue = ComLog.InstallResult.Skip;
|
|
}
|
|
}
|
|
|
|
// 데이터 이행
|
|
List<TableReserv> lstData = new List<TableReserv>();
|
|
string[] orgText = File.ReadAllLines(filePath);
|
|
if (orgText.Length == 0)
|
|
{
|
|
statusMsg = string.Format("Table reservation, No data, File={0}", filePath);
|
|
ComLog.WriteLog(ComLog.Level.Error
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, " => " + statusMsg, true);
|
|
return retValue = ComLog.InstallResult.Fail;
|
|
}
|
|
foreach (string line in orgText)
|
|
{
|
|
if (string.IsNullOrWhiteSpace(line)) continue;
|
|
|
|
#region 코드분류#$코드#$코드명
|
|
// 코드분류#$코드#$코드명
|
|
// 8000#$00511#$01#$20161207#$00001#$1930#$MANAGER#$01012341234#$test rest #$00511000#$20161207183425#$00511000#$20161207185042
|
|
// 0 BRAND_CD 8000
|
|
// 1 STOR_CD 00511
|
|
// 2 POSNO01 01
|
|
// 3 예약일자 20161207
|
|
// 4 예약번호 00001
|
|
// 5 예약시간 1930
|
|
// 6 담당자 MANAGER
|
|
// 7 전화번호 01012341234
|
|
// 8 예약내용 test rest
|
|
// 9 등록ID 00511000
|
|
// 10 등록일시 20161207183425
|
|
// 11 수정ID 00511000
|
|
// 12 수정일시 20161207185042
|
|
// 13 알람사용
|
|
// 14 알람시간
|
|
// 15 확인여부
|
|
#endregion
|
|
|
|
string[] temp = line.Split(new string[] { "#$" }, StringSplitOptions.None);
|
|
|
|
TableReserv resv = new TableReserv();
|
|
|
|
// 1612 000001 => Convert 필요함.
|
|
//int seq = ComLib.IntParse(temp[4]);
|
|
//resv.ReservNo = string.Format("{0}{1:4D}", resv.ReservDt.Substring(2, 6), seq);
|
|
resv.ReservNo = temp[4].Trim();
|
|
resv.ReservDt = temp[3].Trim();
|
|
resv.ReservTm = string.Empty;
|
|
if (temp[5].Trim().Length == 4 && ComLib.IsNumber(temp[5].Trim()))
|
|
{
|
|
resv.ReservTm = temp[5].Trim();
|
|
}
|
|
else
|
|
{
|
|
resv.ReservTm = "0000";
|
|
}
|
|
resv.Cashier = temp[6].Trim();
|
|
resv.TelNo = ComLib.LeftH(temp[7], 16).Trim();
|
|
resv.Note = string.Empty;
|
|
if (resv.ReservTm == "0000")
|
|
{
|
|
resv.Note = temp[5].Trim() + Environment.NewLine;
|
|
}
|
|
resv.Note += temp[8].Trim();
|
|
|
|
resv.InsID = temp[9].Trim();
|
|
resv.InsDt = temp[10].Trim();
|
|
resv.UpdID = temp[11].Trim();
|
|
resv.UpdDt = temp[12].Trim();
|
|
|
|
// 이부분은 진과 약속되지 않았다.
|
|
resv.AlarmYn = "N";
|
|
if (temp.Length >= 16)
|
|
{
|
|
resv.AlarmYn = temp[13].Trim();
|
|
resv.AlarmTm = temp[14].Trim();
|
|
resv.Comfirm = temp[15].Trim();
|
|
}
|
|
|
|
lstData.Add(resv);
|
|
}
|
|
#endregion
|
|
|
|
#region ### 테이블예약 마스터 로컬저장
|
|
// 테이블예약 마스터 로컬저장
|
|
using (SqlDB sqlDb = new SqlDB(DatabaseInfo.DataSource, "POSMST", DatabaseInfo.UserId, DatabaseInfo.Password))
|
|
{
|
|
List<string> query = new List<string>();
|
|
string fmt = string.Empty;
|
|
string sql = string.Empty;
|
|
|
|
// 예약정보 삭제
|
|
fmt = "DELETE FROM POSMST..MST_RESERV WHERE CMP_CD = '{0}' AND STOR_CD = '{1}' ";
|
|
sql = string.Format(fmt, BasicInfo.CompCd, BasicInfo.StoreNo);
|
|
query.Add(sql);
|
|
|
|
|
|
// 예약정보 이행
|
|
var dt = string.Empty;
|
|
var seq = 0;
|
|
foreach (var r in from x in lstData
|
|
orderby x.ReservDt, x.ReservNo
|
|
select x)
|
|
{
|
|
seq = dt != r.ReservDt.Substring(2, 4) ? 1 : seq + 1;
|
|
dt = r.ReservDt.Substring(2, 4);
|
|
string resvNo = string.Format("{0}{1:000000}", r.ReservDt.Substring(2, 4), seq);
|
|
|
|
fmt = "INSERT INTO POSMST..MST_RESERV (CMP_CD, STOR_CD, RESERV_NO, RESERV_DT, RESERV_TM, CASHIER_NM, TEL_NO, NOTE, ALARM_YN, ALARM_TM, CONFIRM, UPD_ID, UPD_DT, REG_ID, REG_DT, FILLER1) "
|
|
+ "VALUES ('{0}', '{1}', '{2}' , '{3}', '{4}', N'{5}', '{6}', N'{7}', '{8}', '{9}', '{10}', '{11}', '{12}', '{13}', '{14}', '0') ";
|
|
sql = string.Format(fmt, BasicInfo.CompCd, BasicInfo.StoreNo
|
|
, resvNo, r.ReservDt, r.ReservTm, r.Cashier, r.TelNo, ConvertDBStr(r.Note), r.AlarmYn, r.AlarmTm, r.Comfirm, r.UpdID, r.UpdDt, r.InsID, r.InsDt);
|
|
|
|
query.Add(sql);
|
|
|
|
ComLog.WriteLog(ComLog.Level.trace
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, string.Format("{0}_{1}_{2} => {3}", resvNo, r.ReservDt, r.ReservTm, sql));
|
|
}
|
|
|
|
int ret = sqlDb.DBExecuteNonQuery(query.ToArray(), System.Data.CommandType.Text, null, true);
|
|
if (ret != ComLib.OK)
|
|
{
|
|
statusMsg = "Table reservation, Local Databse Insert Error";
|
|
ComLog.WriteLog(ComLog.Level.trace
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, " => " + statusMsg);
|
|
return retValue = ComLog.InstallResult.Fail;
|
|
}
|
|
|
|
statusMsg = "Migration POS local table reservation success";
|
|
retValue = ComLog.InstallResult.Success;
|
|
}
|
|
#endregion
|
|
|
|
return retValue;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
statusMsg = "Exception : " + ex.Message;
|
|
ComLog.WriteLog(ComLog.Level.Exception
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, " => " + statusMsg);
|
|
return retValue = ComLog.InstallResult.Fail;
|
|
}
|
|
finally
|
|
{
|
|
ComLog.WriteLog(ComLog.Level.trace
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, string.Format("End, Result={0}", ComLog.InstallResultStr[(int)retValue]));
|
|
|
|
ComLog.SendLog(ComLog.Level.trace
|
|
, string.Format("Migration POS local table reservation, Result={0}, Status={1}" , ComLog.InstallResultStr[(int)retValue], statusMsg));
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 기타정보 이행 (파일복사, POS터미널 정보 서버전송)
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
private ComLog.InstallResult MigrationEtcInfo()
|
|
{
|
|
string statusMsg = string.Empty;
|
|
ComLog.InstallResult retValue = ComLog.InstallResult.Fail;
|
|
try
|
|
{
|
|
base.OnEcho("Migration ETC Infomation.");
|
|
|
|
ComLog.WriteLog(ComLog.Level.trace
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, "Start");
|
|
|
|
#region ### TPay 관련 ini 복사
|
|
|
|
// TPay 관련 ini 복사
|
|
string fileName = "PAYGLECFG.INI";
|
|
if (File.Exists(Path.Combine(Environment.CurrentDirectory, fileName)))
|
|
{
|
|
ComLog.WriteLog(ComLog.Level.trace
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, string.Format(" => The file already exists. file={0}", fileName), true);
|
|
}
|
|
else
|
|
{
|
|
bool ret1 = false;
|
|
if (File.Exists(Path.Combine(Environment.CurrentDirectory, fileName)))
|
|
{
|
|
ret1 = ComLib.FileCopy(Path.Combine(Environment.CurrentDirectory, fileName), Path.Combine(DirInfo.InstallDir, fileName), false);
|
|
}
|
|
|
|
ComLog.WriteLog(ret1 ? ComLog.Level.trace : ComLog.Level.Error
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, string.Format(" => Copy result {0}, File={1}", ret1 ? "success" : "failed", fileName), true);
|
|
}
|
|
|
|
#endregion
|
|
|
|
|
|
string checkData = GetPosTerminalInfo();
|
|
if (string.IsNullOrWhiteSpace(checkData))
|
|
{
|
|
statusMsg = "POS Terminal Information Failed to Read";
|
|
ComLog.WriteLog(ComLog.Level.Error
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, " => " + statusMsg, true);
|
|
retValue = ComLog.InstallResult.Fail;
|
|
}
|
|
|
|
// 데이터 서버전송
|
|
Hashtable htSendData = new Hashtable();
|
|
Hashtable htRecvData = new Hashtable();
|
|
|
|
// 통신해더 생성
|
|
string commHead = ItemColumn.MakeCommHeader(0, "06");
|
|
// 전송데이터
|
|
htSendData.Add(Column.IQ_TMP_POSMST_INQ.DATA.INQ_TYPE, Column.IQ_TMP_POSMST_INQ.MSG_ID);
|
|
htSendData.Add(Column.IQ_TMP_POSMST_INQ.DATA.STOR_CD, BasicInfo.StoreNo);
|
|
htSendData.Add(Column.IQ_TMP_POSMST_INQ.DATA.POS_NO, BasicInfo.PosNo);
|
|
htSendData.Add(Column.IQ_TMP_POSMST_INQ.DATA.MST_KIND, Column.IQ_TMP_POSMST_INQ.MSTKIND.POSINFO);
|
|
htSendData.Add(Column.IQ_TMP_POSMST_INQ.DATA.DATA_LIST, checkData);
|
|
htSendData.Add(Column.IQ_TMP_POSMST_INQ.DATA.RES_CD, "");
|
|
|
|
NetworkJSON irt = new NetworkJSON();
|
|
int ret2 = irt.IRTSendReceive(ServerInfo.SvrIP, ServerInfo.SvrPort, 1000 * 20, commHead, htSendData, ref htRecvData);
|
|
if (ret2 != ComLib.OK)
|
|
{
|
|
statusMsg = "Server communication error";
|
|
ComLog.WriteLog(ComLog.Level.Error
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, " => " + statusMsg, true);
|
|
return retValue = ComLog.InstallResult.Fail;
|
|
}
|
|
string res = htRecvData[Column.IQ_INSTALL_SCHEDULE_INQ.DATA.RES_CD].ToString().Trim();
|
|
statusMsg = string.Format("POS Terminal Information upload, RespCode={0}, Result={1}", res, res == "00" ? "Success" : "Failed");
|
|
ComLog.WriteLog(res != "00" ? ComLog.Level.Error : ComLog.Level.trace
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, " =>" + statusMsg, true);
|
|
|
|
return retValue = res == "00" ? ComLog.InstallResult.Success : ComLog.InstallResult.Fail;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
ComLog.WriteLog(ComLog.Level.Exception
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, " => Exception : " + ex.Message);
|
|
return retValue = ComLog.InstallResult.Fail;
|
|
}
|
|
finally
|
|
{
|
|
ComLog.WriteLog(ComLog.Level.trace
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, string.Format("End, Result={0}", ComLog.InstallResultStr[(int)retValue]));
|
|
|
|
ComLog.SendLog(ComLog.Level.trace
|
|
, string.Format("Migration POS ETC Infomation, Result={0}, Status={1}", ComLog.InstallResultStr[(int)retValue], statusMsg));
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 포스터미널 정보 서버전송
|
|
/// </summary>
|
|
/// <returns>POSIP|POS구분|메인여부|화면크기|카드리더기종류|CAT단말기종류</returns>
|
|
private string GetPosTerminalInfo()
|
|
{
|
|
string retValue = string.Empty;
|
|
|
|
try
|
|
{
|
|
// Format => POSIP|POS구분|메인여부|화면크기|카드리더기종류|CAT단말기종류
|
|
|
|
|
|
string[] data = new string[6];
|
|
|
|
// POS IP
|
|
data[0] = ComLib.GetLocalIpAddress();
|
|
|
|
// 선후불 구분 OLD[0:선불, 1:후불] => NEW[1:선불, 2:후불]
|
|
data[1] = BasicInfo.StoreType == "1" ? "2" : "1";
|
|
|
|
// 주문 구분 OLD[0:정산,1:주문] => NEW[0:SUB, 1:MAIN]
|
|
data[2] = BasicInfo.OrderType == "1" ? "0" : "1";
|
|
|
|
data[3] = string.Format("{0}x{1}", Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);
|
|
data[4] = CheckInfo.CardReader;
|
|
data[5] = CheckInfo.CatTerminal;
|
|
|
|
return retValue = string.Join("|", data);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
ComLog.WriteLog(ComLog.Level.Exception
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, " => Exception : " + ex.Message);
|
|
return string.Empty;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 포스옵션정보 서버전송
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
|
|
private ComLog.InstallResult MigratinoPosOption()
|
|
{
|
|
var statusMsg = string.Empty;
|
|
var retValue = ComLog.InstallResult.Fail;
|
|
var dicOptInfo = new Dictionary<string, string>();
|
|
|
|
try
|
|
{
|
|
base.OnEcho("Migration Pos Option Infomation.");
|
|
|
|
ComLog.WriteLog(ComLog.Level.trace
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, "Start");
|
|
|
|
var temp = string.Empty;
|
|
var optValue = string.Empty;
|
|
|
|
#region ### OPT008, OPT042 대기번호사용/대기번호자동채번사용
|
|
// OPT008 대기번호사용여부 (0:미사용, 1:사용)
|
|
// OPT042 대기번호 자동채번 사용 여부 (0:사용안함, 1:사용함)
|
|
|
|
if (BasicInfo.CompCd.StartsWith("BR"))
|
|
{
|
|
// WAIT_DIV 0:미사용, 1:사용(수동), 2:사용(자동)
|
|
temp = IniFile.GetValue(BasicInfo.OldStoreOptINI, "OPTIONINFO", "WAIT_DIV").Trim();
|
|
if (temp == "1")
|
|
{
|
|
dicOptInfo.Add("OPT008", "1");
|
|
dicOptInfo.Add("OPT042", "0");
|
|
}
|
|
else if (temp == "2")
|
|
{
|
|
dicOptInfo.Add("OPT008", "1");
|
|
dicOptInfo.Add("OPT042", "1");
|
|
}
|
|
else
|
|
{
|
|
dicOptInfo.Add("OPT008", "0");
|
|
dicOptInfo.Add("OPT042", "1");
|
|
}
|
|
}
|
|
else if (BasicInfo.CompCd.StartsWith("SL"))
|
|
{
|
|
// SL 이행대상 항목 결정되지 않음
|
|
}
|
|
else if (BasicInfo.CompCd.StartsWith("PC"))
|
|
{
|
|
// STANBYNO_DIV 0:미사용, 1:사용
|
|
temp = IniFile.GetValue(BasicInfo.OldStoreINI, "SHOPINFO", "STANBYNO_DIV").Trim();
|
|
if (string.IsNullOrWhiteSpace(temp)) optValue = "0"; else optValue = temp;
|
|
dicOptInfo.Add("OPT008", optValue);
|
|
|
|
dicOptInfo.Add("OPT042", "1");
|
|
}
|
|
#endregion
|
|
|
|
#region ### OPT105 제품 이미지 DISPLAY 유무
|
|
// OPT105 제품이미지 화면표시여부 0:미사용, 1:사용
|
|
|
|
if (BasicInfo.CompCd.StartsWith("BR"))
|
|
{
|
|
// IMAGE_GB 0:미사용, 1:사용
|
|
temp = IniFile.GetValue(BasicInfo.OldStoreOptINI, "OPTIONINFO", "IMAGE_GB").Trim();
|
|
if (string.IsNullOrWhiteSpace(temp)) optValue = "0"; else optValue = temp;
|
|
dicOptInfo.Add("OPT105", optValue);
|
|
}
|
|
else if (BasicInfo.CompCd.StartsWith("SL"))
|
|
{
|
|
// SL 이행대상 항목 결정되지 않음
|
|
}
|
|
else if (BasicInfo.CompCd.StartsWith("PC"))
|
|
{
|
|
// PC 이행대상 항목 결정되지 않음
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region ### OPT404 신용카드 승인 영수증 매수 설정
|
|
// OPT404 신용카드 영수증 매수 0:미출력 그외 출력매수
|
|
|
|
if (BasicInfo.CompCd.StartsWith("BR"))
|
|
{
|
|
// CARDPRINT_CNT 0 : 1장출력, 1. 2장출력, 2 : 3장출력
|
|
temp = IniFile.GetValue(BasicInfo.OldStoreOptINI, "OPTIONINFO", "CARDPRINT_CNT").Trim();
|
|
switch (temp)
|
|
{
|
|
case "2": optValue = "3"; break;
|
|
case "1": optValue = "2"; break;
|
|
default: optValue = "1"; break;
|
|
}
|
|
dicOptInfo.Add("OPT404", optValue);
|
|
}
|
|
else if (BasicInfo.CompCd.StartsWith("SL"))
|
|
{
|
|
// SL 이행대상 항목 없음
|
|
}
|
|
else if (BasicInfo.CompCd.StartsWith("PC"))
|
|
{
|
|
// CARDPRINT_CNT 0 : 1장출력, 1. 2장출력, 2 : 3장출력
|
|
temp = IniFile.GetValue(BasicInfo.OldSaleINI, "SALEINFO", "CARDPRINT_CNT").Trim();
|
|
switch (temp)
|
|
{
|
|
case "2": optValue = "3"; break;
|
|
case "1": optValue = "2"; break;
|
|
default: optValue = "1"; break;
|
|
}
|
|
dicOptInfo.Add("OPT404", optValue);
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region ### OPT203 담당자 선택 (후불)
|
|
// OPT203 주문 시 담당자 선택(0:미사용, 1:사용)
|
|
|
|
if (BasicInfo.CompCd.StartsWith("BR"))
|
|
{
|
|
// CLERK_CHECK 0 : 사용안함, 1: 사용(담당자선택)후불 ==> 존재하는가?
|
|
temp = IniFile.GetValue(BasicInfo.OldStoreOptINI, "OPTIONINFO", "CLERK_CHECK").Trim();
|
|
if (string.IsNullOrWhiteSpace(temp)) optValue = "0"; else optValue = temp;
|
|
dicOptInfo.Add("OPT203", optValue);
|
|
}
|
|
else if (BasicInfo.CompCd.StartsWith("SL"))
|
|
{
|
|
// SL 이행대상 항목 결정되지 않음
|
|
}
|
|
else if (BasicInfo.CompCd.StartsWith("PC"))
|
|
{
|
|
// CLERK_CHECK 0 : 사용안함, 1: 사용(담당자선택)후불
|
|
temp = IniFile.GetValue(BasicInfo.OldSaleINI, "SALEINFO", "CLERK_CHECK").Trim();
|
|
if (string.IsNullOrWhiteSpace(temp)) optValue = "0"; else optValue = temp;
|
|
dicOptInfo.Add("OPT203", optValue);
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region ### OPT506 주방프린터 사용여부
|
|
// OPT506 주방프린터 0 : 미사용 1:사용
|
|
|
|
optValue = string.Empty;
|
|
if (BasicInfo.CompCd.StartsWith("BR"))
|
|
{
|
|
// ORDERPRINT_DIV 0 : 미사용 1:사용
|
|
temp = IniFile.GetValue(BasicInfo.OldStoreOptINI, "OPTIONINFO", "ORDERPRINT_DIV").Trim();
|
|
if (string.IsNullOrWhiteSpace(temp)) optValue = "1"; else optValue = temp;
|
|
dicOptInfo.Add("OPT506", optValue);
|
|
}
|
|
else if (BasicInfo.CompCd.StartsWith("SL"))
|
|
{
|
|
// SL 이행대상 항목 결정되지 않음
|
|
}
|
|
else if (BasicInfo.CompCd.StartsWith("PC"))
|
|
{
|
|
// ORDERPRINT_DIV 0 : 미사용 1:사용
|
|
temp = IniFile.GetValue(BasicInfo.OldStoreINI, "SHOPINFO", "ORDERPRINT_DIV").Trim();
|
|
if (string.IsNullOrWhiteSpace(temp)) optValue = "1"; else optValue = temp;
|
|
dicOptInfo.Add("OPT506", optValue);
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region ★★★ 대기번호 사용 보정처리
|
|
// 주방프린터를 사용하거나 KVS장치가 존재하면, 대기번호를 사용으로 처리 한다.
|
|
|
|
if (optValue == "1" || this.isExistsKVS)
|
|
{
|
|
if (dicOptInfo.ContainsKey("OPT008"))
|
|
{
|
|
dicOptInfo["OPT008"] = "1";
|
|
}
|
|
else
|
|
{
|
|
dicOptInfo.Add("OPT008", "1");
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region ### OPT016 추후적립
|
|
// OPT016 추후적립 0 : 미사용 1:사용
|
|
|
|
if (BasicInfo.CompCd.StartsWith("BR"))
|
|
{
|
|
// HP_AFTERSAVE_DIV 0 : 사용 안 함, 1 : 사용
|
|
temp = IniFile.GetValue(BasicInfo.OldStoreOptINI, "OPTIONINFO", "HP_AFTERSAVE_DIV").Trim();
|
|
if (string.IsNullOrWhiteSpace(temp)) optValue = "1"; else optValue = temp;
|
|
dicOptInfo.Add("OPT016", optValue);
|
|
}
|
|
else if (BasicInfo.CompCd.StartsWith("SL"))
|
|
{
|
|
// SL 이행대상 항목 결정되지 않음
|
|
}
|
|
else if (BasicInfo.CompCd.StartsWith("PC"))
|
|
{
|
|
// HP_AFTERSAVE_DIV 0 : 사용 안 함, 1 : 사용
|
|
temp = IniFile.GetValue(BasicInfo.OldStoreINI, "SHOPINFO", "HP_AFTERSAVE_DIV").Trim();
|
|
if (string.IsNullOrWhiteSpace(temp)) optValue = "1"; else optValue = temp;
|
|
dicOptInfo.Add("OPT016", optValue);
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region ### OPT040 환율수신여부
|
|
// OPT040 환율수신여부 0 : 미사용 1:사용
|
|
|
|
if (BasicInfo.CompCd.StartsWith("BR"))
|
|
{
|
|
// EXCHANG_RCV 0 : 사용 안 함, 1 : 사용
|
|
temp = IniFile.GetValue(BasicInfo.OldStoreOptINI, "OPTIONINFO", "EXCHANG_RCV").Trim();
|
|
if (string.IsNullOrWhiteSpace(temp)) optValue = "0"; else optValue = temp;
|
|
dicOptInfo.Add("OPT040", optValue);
|
|
}
|
|
else if (BasicInfo.CompCd.StartsWith("SL"))
|
|
{
|
|
// SL 이행대상 항목 결정되지 않음
|
|
}
|
|
else if (BasicInfo.CompCd.StartsWith("PC"))
|
|
{
|
|
// EXCHANG_RCV 0 : 사용 안 함, 1 : 사용
|
|
temp = IniFile.GetValue(BasicInfo.OldStoreINI, "SHOPINFO", "EXCHANG_RCV").Trim();
|
|
if (string.IsNullOrWhiteSpace(temp)) optValue = "0"; else optValue = temp;
|
|
dicOptInfo.Add("OPT040", optValue);
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region ### OPT302 익일개점허용
|
|
// OPT302 익일 개점 허용 0 : 사용 안 함, 1 : 사용
|
|
|
|
if (BasicInfo.CompCd.StartsWith("BR"))
|
|
{
|
|
// ADV_OPEN_DIV 0 : 사용 안 함, 1 : 사용
|
|
temp = IniFile.GetValue(BasicInfo.OldStoreOptINI, "OPTIONINFO", "ADV_OPEN_DIV").Trim();
|
|
if (string.IsNullOrWhiteSpace(temp)) optValue = "0"; else optValue = temp;
|
|
dicOptInfo.Add("OPT302", optValue);
|
|
}
|
|
else if (BasicInfo.CompCd.StartsWith("SL"))
|
|
{
|
|
// SL 이행대상 항목 결정되지 않음
|
|
}
|
|
else if (BasicInfo.CompCd.StartsWith("PC"))
|
|
{
|
|
// ADV_OPEN_DIV 0 : 사용 안 함, 1 : 사용
|
|
temp = IniFile.GetValue(BasicInfo.OldStoreINI, "SHOPINFO", "ADV_OPEN_DIV").Trim();
|
|
if (string.IsNullOrWhiteSpace(temp)) optValue = "0"; else optValue = temp;
|
|
dicOptInfo.Add("OPT302", optValue);
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region ### OPT409 프린터상단이미지출력
|
|
// OPT409 프린터상단이미지출력 0 : 사용 안 함, 1 : 사용
|
|
|
|
if (BasicInfo.CompCd.StartsWith("BR"))
|
|
{
|
|
// PRTHEADERIMG_PRT 0 : 사용 안 함, 1 : 사용
|
|
temp = IniFile.GetValue(BasicInfo.OldStoreOptINI, "OPTIONINFO", "PRTHEADERIMG_PRT").Trim();
|
|
if (string.IsNullOrWhiteSpace(temp)) optValue = "1"; else optValue = temp;
|
|
dicOptInfo.Add("OPT409", optValue);
|
|
}
|
|
else if (BasicInfo.CompCd.StartsWith("SL"))
|
|
{
|
|
// SL 이행대상 항목 결정되지 않음
|
|
}
|
|
else if (BasicInfo.CompCd.StartsWith("PC"))
|
|
{
|
|
// PRTHEADERIMG_PRT 0 : 사용 안 함, 1 : 사용
|
|
temp = IniFile.GetValue(BasicInfo.OldStoreINI, "SHOPINFO", "PRTHEADERIMG_PRT").Trim();
|
|
if (string.IsNullOrWhiteSpace(temp)) optValue = "1"; else optValue = temp;
|
|
dicOptInfo.Add("OPT409", optValue);
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region ### OPT410 프린터하단이미지출력
|
|
// OPT410 프린터하단이미지출력 0 : 사용 안 함, 1 : 사용
|
|
|
|
if (BasicInfo.CompCd.StartsWith("BR"))
|
|
{
|
|
// PRTBOTTOMIMG_PRT 0 : 사용 안 함, 1 : 사용
|
|
temp = IniFile.GetValue(BasicInfo.OldStoreOptINI, "OPTIONINFO", "PRTBOTTOMIMG_PRT").Trim();
|
|
if (string.IsNullOrWhiteSpace(temp)) optValue = "1"; else optValue = temp;
|
|
dicOptInfo.Add("OPT410", optValue);
|
|
}
|
|
else if (BasicInfo.CompCd.StartsWith("SL"))
|
|
{
|
|
// SL 이행대상 항목 결정되지 않음
|
|
}
|
|
else if (BasicInfo.CompCd.StartsWith("PC"))
|
|
{
|
|
// PRTBOTTOMIMG_PRT 0 : 사용 안 함, 1 : 사용
|
|
temp = IniFile.GetValue(BasicInfo.OldStoreINI, "SHOPINFO", "PRTBOTTOMIMG_PRT").Trim();
|
|
if (string.IsNullOrWhiteSpace(temp)) optValue = "1"; else optValue = temp;
|
|
dicOptInfo.Add("OPT410", optValue);
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region ### OPT305 외화결제 사용
|
|
// OPT305 외화결제 사용 0 : 사용 안 함, 1 : 사용
|
|
|
|
if (BasicInfo.CompCd.StartsWith("BR"))
|
|
{
|
|
// EXCHANGE_DIV 0 : 사용 안 함, 1 : 사용
|
|
temp = IniFile.GetValue(BasicInfo.OldStoreOptINI, "OPTIONINFO", "EXCHANGE_DIV").Trim();
|
|
if (string.IsNullOrWhiteSpace(temp)) optValue = "0"; else optValue = temp;
|
|
dicOptInfo.Add("OPT305", optValue);
|
|
}
|
|
else if (BasicInfo.CompCd.StartsWith("SL"))
|
|
{
|
|
// SL 이행대상 항목 결정되지 않음
|
|
}
|
|
else if (BasicInfo.CompCd.StartsWith("PC"))
|
|
{
|
|
// EXCHANGE_DIV 0 : 사용 안 함, 1 : 사용
|
|
temp = IniFile.GetValue(BasicInfo.OldStoreINI, "SHOPINFO", "EXCHANGE_DIV").Trim();
|
|
if (string.IsNullOrWhiteSpace(temp)) optValue = "0"; else optValue = temp;
|
|
dicOptInfo.Add("OPT305", optValue);
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region ### OPT307 직원근태허용유무
|
|
// OPT307 직원근태허용유무 0 : 사용 안 함, 1 : 사용
|
|
|
|
if (BasicInfo.CompCd.StartsWith("BR"))
|
|
{
|
|
// CLERKIO_DIV 0 : 사용 안 함, 1 : 사용
|
|
temp = IniFile.GetValue(BasicInfo.OldStoreOptINI, "OPTIONINFO", "CLERKIO_DIV").Trim();
|
|
if (string.IsNullOrWhiteSpace(temp)) optValue = "0"; else optValue = temp;
|
|
dicOptInfo.Add("OPT307", optValue);
|
|
}
|
|
else if (BasicInfo.CompCd.StartsWith("SL"))
|
|
{
|
|
// SL 이행대상 항목 결정되지 않음
|
|
}
|
|
else if (BasicInfo.CompCd.StartsWith("PC"))
|
|
{
|
|
// PC 이행대상 항목 결정되지 않음
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region ### OPT308 직원방문입력 허용 유무
|
|
// OPT308 직원방문입력 허용 유무 0 : 사용 안 함, 1 : 사용
|
|
|
|
if (BasicInfo.CompCd.StartsWith("BR"))
|
|
{
|
|
// EMPLOYEEIO_DIV 0 : 사용 안 함, 1 : 사용
|
|
temp = IniFile.GetValue(BasicInfo.OldStoreOptINI, "OPTIONINFO", "EMPLOYEEIO_DIV").Trim();
|
|
if (string.IsNullOrWhiteSpace(temp)) optValue = "0"; else optValue = temp;
|
|
dicOptInfo.Add("OPT308", optValue);
|
|
}
|
|
else if (BasicInfo.CompCd.StartsWith("SL"))
|
|
{
|
|
// SL 이행대상 항목 결정되지 않음
|
|
}
|
|
else if (BasicInfo.CompCd.StartsWith("PC"))
|
|
{
|
|
// PC 이행대상 항목 결정되지 않음
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region ### OPT104 메뉴단가표시 ==> 협의/확인
|
|
// OPT104 메뉴단가표시 0:안함 1:표시
|
|
|
|
if (BasicInfo.CompCd.StartsWith("BR"))
|
|
{
|
|
// UNITDISP_GB 0:안함, 1:표시
|
|
temp = IniFile.GetValue(BasicInfo.OldStoreOptINI, "OPTIONINFO", "UNITDISP_GB").Trim();
|
|
if (string.IsNullOrWhiteSpace(temp)) optValue = "0"; else optValue = temp;
|
|
dicOptInfo.Add("OPT104", optValue);
|
|
}
|
|
else if (BasicInfo.CompCd.StartsWith("SL"))
|
|
{
|
|
// SL 이행대상 항목 결정되지 않음
|
|
}
|
|
else if (BasicInfo.CompCd.StartsWith("PC"))
|
|
{
|
|
// PC 이행대상 항목 결정되지 않음
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region ### OPT425 주방프린터 자동/수동 여부
|
|
// OPT425 주방프린터 0:자동 1:수동(프린터선택,BR용) 2:수동(상품선택,SL용)
|
|
|
|
if (BasicInfo.CompCd.StartsWith("BR"))
|
|
{
|
|
// ORDERPRTAUTO_DIV 0 :자동, 1: 수동
|
|
temp = IniFile.GetValue(BasicInfo.OldStoreOptINI, "OPTIONINFO", "ORDERPRTAUTO_DIV").Trim();
|
|
if (string.IsNullOrWhiteSpace(temp)) optValue = "0"; else optValue = "1";
|
|
dicOptInfo.Add("OPT425", optValue);
|
|
}
|
|
else if (BasicInfo.CompCd.StartsWith("SL"))
|
|
{
|
|
// SL 이행대상 항목 결정되지 않음
|
|
}
|
|
else if (BasicInfo.CompCd.StartsWith("PC"))
|
|
{
|
|
// PC 이행대상 항목 결정되지 않음
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region ### OPT427 영수증프린터 분류별 정렬여부 ==> 협의
|
|
// OPT427 영수증프린터 분류별 정렬여부 0 : 사용 안 함, 1 : 사용
|
|
|
|
if (BasicInfo.CompCd.StartsWith("BR"))
|
|
{
|
|
// PRINT_CLASS_DIV 0 : 사용 안 함, 1 : 사용
|
|
temp = IniFile.GetValue(BasicInfo.OldStoreOptINI, "OPTIONINFO", "PRINT_CLASS_DIV").Trim();
|
|
if (string.IsNullOrWhiteSpace(temp)) optValue = "0"; else optValue = temp;
|
|
dicOptInfo.Add("OPT427", optValue);
|
|
}
|
|
else if (BasicInfo.CompCd.StartsWith("SL"))
|
|
{
|
|
// SL 이행대상 항목 결정되지 않음
|
|
}
|
|
else if (BasicInfo.CompCd.StartsWith("PC"))
|
|
{
|
|
// PC 이행대상 항목 결정되지 않음
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region ### OPT009 마감시 권종별 현금시재 입력여부
|
|
// OPT009 마감-권종별 현금 시재 입력 여부(0 : 총액 입력, 1 : 권종별 입력)
|
|
|
|
if (BasicInfo.CompCd.StartsWith("BR"))
|
|
{
|
|
// CLOSE_CASH_DIV 0 : 사용 안 함, 1 : 사용
|
|
temp = IniFile.GetValue(BasicInfo.OldStoreOptINI, "OPTIONINFO", "CLOSE_CASH_DIV").Trim();
|
|
if (string.IsNullOrWhiteSpace(temp)) optValue = "0"; else optValue = temp;
|
|
dicOptInfo.Add("OPT009", optValue);
|
|
}
|
|
else if (BasicInfo.CompCd.StartsWith("SL"))
|
|
{
|
|
// SL 이행대상 항목 결정되지 않음
|
|
}
|
|
else if (BasicInfo.CompCd.StartsWith("PC"))
|
|
{
|
|
// PC 이행대상 항목 결정되지 않음
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region ### OPT109 던킨 이달의 행사 알립 팝업 ==> 협의
|
|
// OPT109 던킨 이달의 행사 알립 팝업 0 : 사용 안 함, 1 : 사용
|
|
|
|
if (BasicInfo.CompCd.StartsWith("BR"))
|
|
{
|
|
// FDDEVENTPOP_DIV 0 : 사용 안 함, 1 : 사용
|
|
temp = IniFile.GetValue(BasicInfo.OldStoreOptINI, "OPTIONINFO", "FDDEVENTPOP_DIV").Trim();
|
|
if (string.IsNullOrWhiteSpace(temp)) optValue = "0"; else optValue = temp;
|
|
dicOptInfo.Add("OPT109", optValue);
|
|
}
|
|
else if (BasicInfo.CompCd.StartsWith("SL"))
|
|
{
|
|
// SL 이행대상 항목 결정되지 않음
|
|
}
|
|
else if (BasicInfo.CompCd.StartsWith("PC"))
|
|
{
|
|
// PC 이행대상 항목 결정되지 않음
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region ### OPT407 EMV 단말기 사용시 출력 유무
|
|
// OPT407 EMV 단말기 사용시 출력 유무 0 : 사용 안 함, 1 : 사용
|
|
|
|
if (BasicInfo.CompCd.StartsWith("BR"))
|
|
{
|
|
// FEMV_PRT_DIV 0 : 사용 안 함, 1 : 사용
|
|
temp = IniFile.GetValue(BasicInfo.OldStoreOptINI, "OPTIONINFO", "FEMV_PRT_DIV").Trim();
|
|
if (string.IsNullOrWhiteSpace(temp)) optValue = "0"; else optValue = temp;
|
|
dicOptInfo.Add("OPT407", optValue);
|
|
}
|
|
else if (BasicInfo.CompCd.StartsWith("SL"))
|
|
{
|
|
// SL 이행대상 항목 결정되지 않음
|
|
}
|
|
else if (BasicInfo.CompCd.StartsWith("PC"))
|
|
{
|
|
// PC 이행대상 항목 결정되지 않음
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region ### OPT422 BR 마감시 재고현황 출력옵션
|
|
// OPT422 BR 마감시 재고현황 출력옵션 0:출력, 1:미출력
|
|
|
|
if (BasicInfo.CompCd.StartsWith("BR"))
|
|
{
|
|
// FINVENTORY_DIV 0:출력, 1:미출력
|
|
temp = IniFile.GetValue(BasicInfo.OldStoreOptINI, "OPTIONINFO", "FINVENTORY_DIV").Trim();
|
|
if (string.IsNullOrWhiteSpace(temp)) optValue = "0"; else optValue = temp;
|
|
dicOptInfo.Add("OPT422", optValue);
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region ### OPT428 DD 영수증 출력옵션
|
|
// OPT428 DD 영수증 출력옵션 0:전체, 1:구매내역 미출력
|
|
|
|
if (BasicInfo.CompCd.StartsWith("BR"))
|
|
{
|
|
// FINVENTORY_DIV 0:전체, 1:구매내역 미출력
|
|
temp = IniFile.GetValue(BasicInfo.OldStoreOptINI, "OPTIONINFO", "FINVENTORY_DIV").Trim();
|
|
if (string.IsNullOrWhiteSpace(temp)) optValue = "0"; else optValue = temp;
|
|
dicOptInfo.Add("OPT428", optValue);
|
|
}
|
|
|
|
#endregion
|
|
|
|
|
|
#region ### 포스옵션 서버전송
|
|
|
|
var isModify = false;
|
|
foreach (var data in dicOptInfo)
|
|
{
|
|
var key = data.Key;
|
|
var newValue = data.Value;
|
|
var oldValue = BasicInfo.GetPosOptionInfo(key);
|
|
|
|
if (oldValue != newValue) isModify = true;
|
|
}
|
|
if (isModify == false)
|
|
{
|
|
statusMsg = "Pos Optoin Master, No change data, migration skip";
|
|
return retValue = ComLog.InstallResult.Skip;
|
|
}
|
|
|
|
const string ROW_SPLIT = "#~";
|
|
const string COL_SPLIT = "|";
|
|
|
|
List<string> lstData = new List<string>();
|
|
foreach (var opt in dicOptInfo)
|
|
{
|
|
//05:포스옵션
|
|
//#~옵션코드|옵션값
|
|
var rowData = string.Join(COL_SPLIT, new string[] { opt.Key.Trim(), opt.Value.Trim() });
|
|
lstData.Add(rowData);
|
|
}
|
|
if (lstData.Count > 0)
|
|
{
|
|
var dataList = string.Join(ROW_SPLIT, lstData.ToArray());
|
|
|
|
Hashtable htSendData = new Hashtable();
|
|
Hashtable htRecvData = new Hashtable();
|
|
|
|
// 통신해더 생성
|
|
string commHead = ItemColumn.MakeCommHeader(0, "06");
|
|
// 전송데이터
|
|
htSendData.Add(Column.IQ_TMP_POSMST_INQ.DATA.INQ_TYPE, Column.IQ_TMP_POSMST_INQ.MSG_ID);
|
|
htSendData.Add(Column.IQ_TMP_POSMST_INQ.DATA.STOR_CD, BasicInfo.StoreNo);
|
|
htSendData.Add(Column.IQ_TMP_POSMST_INQ.DATA.POS_NO, BasicInfo.PosNo);
|
|
htSendData.Add(Column.IQ_TMP_POSMST_INQ.DATA.MST_KIND, Column.IQ_TMP_POSMST_INQ.MSTKIND.POSOPT);
|
|
htSendData.Add(Column.IQ_TMP_POSMST_INQ.DATA.DATA_LIST, dataList);
|
|
htSendData.Add(Column.IQ_TMP_POSMST_INQ.DATA.RES_CD, "");
|
|
|
|
NetworkJSON irt = new NetworkJSON();
|
|
int ret = irt.IRTSendReceive(ServerInfo.SvrIP, ServerInfo.SvrPort, 1000 * 20, commHead, htSendData, ref htRecvData);
|
|
if (ret != ComLib.OK)
|
|
{
|
|
ComLog.WriteLog(ComLog.Level.Error
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, " => Server communication error");
|
|
statusMsg = "Server communication error";
|
|
return retValue = ComLog.InstallResult.Fail;
|
|
}
|
|
|
|
var res = htRecvData[Column.IQ_INSTALL_SCHEDULE_INQ.DATA.RES_CD].ToString().Trim();
|
|
statusMsg = string.Format("Pos Option info upload. Result={0} IQ_TMP_POSMST_INQ.DATA.RES_CD={1}", ComLog.InstallResultStr[(int)retValue], res);
|
|
ComLog.WriteLog(res == "00" ? ComLog.Level.trace : ComLog.Level.Error
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, statusMsg);
|
|
return retValue = res == "00" ? ComLog.InstallResult.Success : ComLog.InstallResult.Fail;
|
|
}
|
|
else
|
|
{
|
|
statusMsg = "Pos Option Master, Not exist data";
|
|
return retValue = ComLog.InstallResult.Skip;
|
|
}
|
|
#endregion
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
statusMsg = "Exception=" + ex.Message;
|
|
ComLog.WriteLog(ComLog.Level.Exception
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, " => " + statusMsg);
|
|
return retValue = ComLog.InstallResult.Fail;
|
|
}
|
|
finally
|
|
{
|
|
ComLog.WriteLog(ComLog.Level.trace
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, string.Format("End, Result={0}", ComLog.InstallResultStr[(int)retValue]));
|
|
|
|
// 성공시에 데이터 백업
|
|
if (retValue != ComLog.InstallResult.Fail)
|
|
{
|
|
foreach (var data in dicOptInfo)
|
|
{
|
|
BasicInfo.SetPosOptionInfo(data.Key, data.Value);
|
|
}
|
|
}
|
|
|
|
|
|
// 상태로그 전송 (12:PosOtion info upload)
|
|
if (string.IsNullOrWhiteSpace(statusMsg))
|
|
statusMsg = string.Format("PosOptoin info upload. Result={0}", ComLog.InstallResultStr[(int)retValue]);
|
|
ComLog.SendStatus(ComLog.InstallStatus.PosOptionUpload, retValue, statusMsg);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 진 마지막 백업디렉토리 찾기
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
private string GetJinDirBack()
|
|
{
|
|
string retValue = string.Empty;
|
|
try
|
|
{
|
|
if (ComLib.ExistDirectory(DirInfo.BackDir) == false) return retValue = string.Empty;
|
|
|
|
DirectoryInfo[] di = new DirectoryInfo(DirInfo.BackDir).GetDirectories();
|
|
foreach(var d in from x in di
|
|
where x.Name.ToUpper().StartsWith("LocalTBL_".ToUpper()) == true
|
|
orderby x.Name descending
|
|
select x)
|
|
{
|
|
retValue = d.FullName;
|
|
break;
|
|
}
|
|
|
|
return retValue;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
ComLog.WriteLog(ComLog.Level.Exception
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, " => Exception : " + ex.Message);
|
|
return retValue = string.Empty;
|
|
}
|
|
finally
|
|
{
|
|
ComLog.WriteLog(ComLog.Level.trace
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, string.Format(" => JinBackDire Find Reuslt={0} BackDir={1}", string.IsNullOrWhiteSpace(retValue) ? "Failed" : "Success", retValue));
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 파일비교 (true=같음, false=다름)
|
|
/// </summary>
|
|
/// <param name="file1"></param>
|
|
/// <param name="file2"></param>
|
|
/// <returns></returns>
|
|
private bool FileCompare(string file1, string file2)
|
|
{
|
|
bool retValue = false;
|
|
try
|
|
{
|
|
int file1byte, file2byte;
|
|
//FileStream fs1, fs2;
|
|
|
|
if (file1 == file2)
|
|
{
|
|
return retValue = true;
|
|
}
|
|
|
|
if (File.Exists(file1) == false || File.Exists(file2) == false)
|
|
{
|
|
return retValue = false;
|
|
}
|
|
|
|
using (FileStream fs1 = new FileStream(file1, FileMode.Open))
|
|
{
|
|
using (FileStream fs2 = new FileStream(file2, FileMode.Open))
|
|
{
|
|
if (fs1.Length != fs2.Length)
|
|
{
|
|
return retValue = false;
|
|
}
|
|
|
|
do
|
|
{
|
|
file1byte = fs1.ReadByte();
|
|
file2byte = fs2.ReadByte();
|
|
}
|
|
while ((file1byte == file2byte) && (file1byte != -1));
|
|
}
|
|
}
|
|
|
|
return retValue = ((file1byte - file2byte) == 0);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
ComLog.WriteLog(ComLog.Level.Exception
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, " => Exception : " + ex.Message);
|
|
return retValue = false;
|
|
}
|
|
finally
|
|
{
|
|
ComLog.WriteLog(ComLog.Level.trace
|
|
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
|
|
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
|
|
, string.Format(" => FileCompare Result={0} File1={1} File2={2}", retValue ? "Success" : "Failed", file1, file2));
|
|
}
|
|
}
|
|
|
|
private string ConvertDBStr(string str)
|
|
{
|
|
return str.Replace("'", "''");
|
|
}
|
|
|
|
|
|
}
|
|
}
|