1980 lines
109 KiB
C#
1980 lines
109 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
using Cosmos.Common;
|
|
using Cosmos.BaseFrame;
|
|
using Cosmos.UserFrame;
|
|
using Cosmos.ServiceProvider;
|
|
|
|
using System.Runtime.Serialization.Formatters.Soap;
|
|
using System.Threading;
|
|
using System.Data;
|
|
using System.Data.SqlClient;
|
|
using System.Net;
|
|
using System.IO;
|
|
|
|
using System.Xml;
|
|
using System.Net.Sockets;
|
|
|
|
namespace Cosmos.TranInterfaceOutside
|
|
{
|
|
public class TranInterfaceOutside : lTranInterfaceOutside
|
|
{
|
|
#region 변수선언
|
|
/// <summary>
|
|
/// StateServer Object (StateServer 객체)
|
|
/// </summary>
|
|
private StateServer StateObject = (StateServer)StateServer.GetInstance();
|
|
|
|
/// <summary>
|
|
/// POS Status Value (POS 상태값)
|
|
/// </summary>
|
|
private PosStatus m_cPosStatus = null;
|
|
|
|
/// <summary>
|
|
/// MSSQL DB 관련 객체
|
|
/// </summary>
|
|
private static SqlDB sqlDb = null;
|
|
|
|
/// <summary>
|
|
/// Inteferface Thread
|
|
/// </summary>
|
|
private Thread m_tIFProc = null;
|
|
|
|
/// <summary>
|
|
/// 동작 여부
|
|
/// </summary>
|
|
private bool m_IFProcRunning = false;
|
|
|
|
/// <summary>
|
|
/// 처리중
|
|
/// </summary>
|
|
private bool m_ProcStart = false;
|
|
|
|
/// <summary>
|
|
/// 대기시간
|
|
/// </summary>
|
|
private int nWAIT_TIME = 6000;
|
|
|
|
/// <summary>
|
|
/// 전송할 데이터
|
|
/// </summary>
|
|
private string m_sSendData = string.Empty;
|
|
|
|
/// <summary>
|
|
/// FTP 모듈
|
|
/// </summary>
|
|
private NetworkFtp m_cNetworkFTP = null;
|
|
protected TcpSocket m_cTcpSocket = null;
|
|
|
|
#endregion
|
|
|
|
#region 생성자
|
|
/// <summary>
|
|
/// InterfaceOutside
|
|
/// </summary>
|
|
public TranInterfaceOutside()
|
|
{
|
|
m_cPosStatus = (PosStatus)StateObject.POS;
|
|
m_cNetworkFTP = new NetworkFtp();
|
|
m_cTcpSocket = new TcpSocket();
|
|
}
|
|
#endregion
|
|
|
|
#region 스레드 시작 및 종료
|
|
/// <summary>
|
|
/// 스레드 시작
|
|
/// </summary>
|
|
public void Start()
|
|
{
|
|
try
|
|
{
|
|
// Database Connection
|
|
sqlDb = new SqlDB(m_cPosStatus.Base.LocalDbSource, m_cPosStatus.Base.LocalDbCatalog, m_cPosStatus.Base.LocalDbUserID, m_cPosStatus.Base.LocalDbPassword);
|
|
|
|
m_sSendData = string.Empty;
|
|
|
|
m_tIFProc = new Thread(new ThreadStart(IFExecuteProc));
|
|
m_IFProcRunning = true;
|
|
m_tIFProc.Start();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
UserLog.WriteLogFile(UserCom.LOG_DEBUG,
|
|
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
|
|
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
|
|
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
|
|
ex.Message);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 스레드 종료
|
|
/// </summary>
|
|
public void Stop()
|
|
{
|
|
try
|
|
{
|
|
m_IFProcRunning = false;
|
|
|
|
int count = 0;
|
|
while (count < 10)
|
|
{
|
|
if (m_tIFProc != null && m_tIFProc.IsAlive) m_IFProcRunning = false;
|
|
else break;
|
|
|
|
count++;
|
|
Thread.Sleep(10);
|
|
}
|
|
|
|
if (count == 10)
|
|
{
|
|
UserLog.WriteLogFile(UserCom.LOG_DEBUG,
|
|
UserCom.INFO_LEVEL,
|
|
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
|
|
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
|
|
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
|
|
"Force I/F Agent Stop!!!");
|
|
m_tIFProc.Abort();
|
|
}
|
|
|
|
// DB Close
|
|
sqlDb.DBClose();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
UserLog.WriteLogFile(UserCom.LOG_DEBUG,
|
|
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
|
|
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
|
|
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
|
|
ex.Message);
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region 외부 Interface 처리
|
|
private void IFExecuteProc()
|
|
{
|
|
int nCount = 0;
|
|
string sRet = UserCom.RST_ERR;
|
|
|
|
while (m_IFProcRunning)
|
|
{
|
|
try
|
|
{
|
|
// Set Wait Time
|
|
Thread.Sleep((int)nWAIT_TIME);
|
|
|
|
// 1분 대기후 처리
|
|
if (nCount >= 1)
|
|
{
|
|
// 현재 처리중이면 Skip
|
|
if (m_ProcStart != true)
|
|
{
|
|
m_ProcStart = true;
|
|
|
|
// 생성 처리
|
|
sRet = IF_ExecMake(m_cPosStatus.Mst.ETC_IF_DIV);
|
|
|
|
// 90일전 데이터 삭제
|
|
sRet = IFSendDataDelete();
|
|
|
|
m_ProcStart = false;
|
|
|
|
nCount = 0;
|
|
}
|
|
}
|
|
|
|
nCount++;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
UserLog.WriteLogFile(UserCom.LOG_DEBUG,
|
|
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
|
|
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
|
|
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
|
|
ex.Message);
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region 인터페이스 생성
|
|
/// <summary>
|
|
/// 인터페이스 생성
|
|
/// </summary>
|
|
/// <param name="sIFDiv"></param>
|
|
/// <returns></returns>
|
|
private string IF_ExecMake(string sIFDiv)
|
|
{
|
|
string sRet = UserCom.RST_ERR;
|
|
bool bRet = false;
|
|
DataTable dtData = new DataTable();
|
|
|
|
string sResCD = "99";
|
|
string sResMsg = "Not Send";
|
|
string sResData = "";
|
|
string sSendYn = "0";
|
|
int iRecvTimeOut = 10000;
|
|
string sRecvData = "";
|
|
|
|
try
|
|
{
|
|
// I/F 대상 거래 조회
|
|
sRet = SelTranData(ref dtData, sIFDiv);
|
|
if (sRet == UserCom.RST_OK)
|
|
{
|
|
foreach (DataRow dr in dtData.Rows)
|
|
{
|
|
// 전송상태
|
|
sSendYn = "0";
|
|
|
|
switch (sIFDiv)
|
|
{
|
|
#region 1.무역센터
|
|
case ItemConst.TranInterfaceOutside.IF_CHN_01: // 무역센터
|
|
{
|
|
// 생성
|
|
sRet = CHN_01_Make(dr);
|
|
if (sRet == UserCom.RST_OK)
|
|
{
|
|
// 데이터 전송
|
|
sResCD = "99";
|
|
|
|
//sRet = HttpPOST_SendReceive("http://10.254.10.60/ChiaTai/salestrans.asmx", m_sSendData, ref sResCD, ref sResMsg, ref sResData);
|
|
sRet = HttpPOST_SendReceive(sIFDiv, m_cPosStatus.Mst.ETC_IF_URL1, m_sSendData, ref sResCD, ref sResMsg, ref sResData);
|
|
|
|
if (sRet == UserCom.RST_OK)
|
|
{
|
|
if (sResCD == "0") sSendYn = "1";
|
|
}
|
|
|
|
if (sResCD != "0")
|
|
{
|
|
// 실패시
|
|
string sFileName = "FAIL" + CmUtil.GetDataRowStr(dr, "SALE_DT") + "_" + CmUtil.GetDataRowStr(dr, "TRADE_NO") + ".XML";
|
|
CmUtil.CreateDirectory(BaseCom.NxBinPath + @"TRADE\FAIL\");
|
|
CmUtil.FileDelete(BaseCom.NxBinPath + @"TRADE\FAIL\" + sFileName);
|
|
bRet = WriteFile(BaseCom.NxBinPath + @"TRADE\FAIL\", BaseCom.NxBinPath + @"TRADE\FAIL\" + sFileName, m_sSendData);
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
#endregion
|
|
|
|
#region 2.상해쩡따광장
|
|
case ItemConst.TranInterfaceOutside.IF_CHN_02: // 상해쩡따광장
|
|
{
|
|
// 생성
|
|
sRet = CHN_02_Make(dr);
|
|
if (sRet == UserCom.RST_OK)
|
|
{
|
|
// 파일명
|
|
string sFileName = "C" + m_cPosStatus.Mst.JOIN_STOR_CD + "_" + m_cPosStatus.Mst.JOIN_BRAND_CD + "_" + CmUtil.GetDataRowStr(dr, "SALE_DT") + "_" + CmUtil.GetDataRowStr(dr, "POS_NO") + CmUtil.GetDataRowStr(dr, "TRADE_NO") + ".dat";
|
|
|
|
// 파일저장
|
|
CmUtil.CreateDirectory(BaseCom.NxBinPath + @"FTPDATA\");
|
|
CmUtil.FileDelete(BaseCom.NxBinPath + @"FTPDATA\" + sFileName);
|
|
bRet = WriteFile(BaseCom.NxBinPath + "FTPDATA", BaseCom.NxBinPath + @"FTPDATA\" + sFileName, m_sSendData);
|
|
|
|
if (CmUtil.Exists(sFileName) == true)
|
|
{
|
|
// ftp 전송
|
|
if (m_cNetworkFTP.Connect(m_cPosStatus.Mst.ETC_IF_FTP_IP, m_cPosStatus.Mst.ETC_IF_FTP_ID, m_cPosStatus.Mst.ETC_IF_FTP_PW, 10, CmUtil.IntParse(m_cPosStatus.Mst.ETC_IF_FTP_PORT)) == 0)
|
|
{
|
|
// FTP 다운로드
|
|
int iRet = m_cNetworkFTP.Upload(m_cPosStatus.Mst.ETC_IF_FTP_PATH, BaseCom.NxBinPath + @"FTPDATA\", sFileName);
|
|
if (iRet == 0)
|
|
{
|
|
// 정상
|
|
CmUtil.FileDelete(BaseCom.NxBinPath + @"FTPDATA\" + sFileName);
|
|
|
|
sSendYn = "1";
|
|
sResCD = "00";
|
|
sResMsg = "OK";
|
|
}
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
#endregion
|
|
|
|
#region 3.왕진활현
|
|
case ItemConst.TranInterfaceOutside.IF_CHN_03: // 왕진활현
|
|
{
|
|
// 생성
|
|
sRet = CHN_03_Make(dr);
|
|
if (sRet == UserCom.RST_OK)
|
|
{
|
|
// 파일저장
|
|
//CmUtil.FileDelete(BaseCom.NxBinPath + @"CapitaInterface\possalesdata.txt"); // 개점시 삭제
|
|
bRet = WriteFile(@"C:\HOME\IMPORT\", @"C:\HOME\IMPORT\possalesdata.txt", m_sSendData);
|
|
|
|
// 처리 거래정보 저장
|
|
sRet = SavePOSInfoini(dr);
|
|
|
|
if (bRet == true)
|
|
{
|
|
// 생성후 데몬이 전송처리하여 생성만 되면 전상 처리
|
|
sSendYn = "1";
|
|
sResCD = "00";
|
|
sResMsg = "OK";
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
#endregion
|
|
|
|
#region 4.조양따훼청
|
|
case ItemConst.TranInterfaceOutside.IF_CHN_04: // 조양따훼청
|
|
{
|
|
// 생성
|
|
sRet = CHN_04_Make(dr);
|
|
if (sRet == UserCom.RST_OK)
|
|
{
|
|
// 파일명
|
|
string sFileName = CmUtil.GetDataRowStr(dr, "SALE_DT") + "_" + CmUtil.GetDataRowStr(dr, "POS_NO") + "_" + CmUtil.GetDataRowStr(dr, "TRADE_NO") + ".dat";
|
|
|
|
// 파일저장
|
|
CmUtil.CreateDirectory(@"C:\PosData\import\");
|
|
CmUtil.FileDelete(@"C:\PosData\import\" + sFileName);
|
|
bRet = WriteFile(@"C:\PosData\import\", @"C:\PosData\import\" + sFileName, m_sSendData);
|
|
|
|
if (CmUtil.Exists(@"C:\PosData\import\" + sFileName) == true)
|
|
{
|
|
// 생성후 데몬이 전송처리하여 생성만 되면 전상 처리
|
|
sSendYn = "1";
|
|
sResCD = "00";
|
|
sResMsg = "OK";
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
#endregion
|
|
|
|
#region 5.풍란
|
|
case ItemConst.TranInterfaceOutside.IF_CHN_05: // 풍란
|
|
{
|
|
// 생성
|
|
sRet = CHN_05_Make(dr);
|
|
if (sRet == UserCom.RST_OK)
|
|
{
|
|
// 파일명
|
|
string sFileName = CmUtil.GetDataRowStr(dr, "SALE_DT") + "_" + CmUtil.GetDataRowStr(dr, "TRADE_NO") + ".XML";
|
|
|
|
// 파일저장
|
|
CmUtil.FileDelete(BaseCom.NxBinPath + @"FENGLAN\" + sFileName);
|
|
bRet = WriteFile(BaseCom.NxBinPath + @"FENGLAN\", BaseCom.NxBinPath + @"FENGLAN\" + sFileName, m_sSendData);
|
|
|
|
if (CmUtil.Exists(BaseCom.NxBinPath + @"FENGLAN\" + sFileName) == true)
|
|
{
|
|
sRet = XMLSendSocket(m_cPosStatus.Mst.ETC_IF_FTP_IP, CmUtil.IntParse(m_cPosStatus.Mst.ETC_IF_FTP_PORT), m_sSendData, ref sRecvData);
|
|
|
|
// 생성후 데몬이 전송처리하여 생성만 되면 정상 처리
|
|
sResCD = "99";
|
|
sRet = XmlParser(ItemConst.TranInterfaceOutside.IF_CHN_05, sRecvData, "result", ref sResCD, ref sResMsg);
|
|
if (sRet == UserCom.RST_OK)
|
|
{
|
|
if (sResCD == "0")
|
|
{
|
|
sSendYn = "1";
|
|
|
|
// 정상 처리사 삭제
|
|
CmUtil.FileDelete(BaseCom.NxBinPath + @"FENGLAN\" + sFileName);
|
|
}
|
|
}
|
|
|
|
if (sResCD != "0")
|
|
{
|
|
// 오류시 FIAL 폴더로 이동
|
|
sSendYn = "9";
|
|
CmUtil.CreateDirectory(BaseCom.NxBinPath + @"FENGLAN\FAIL\");
|
|
CmUtil.FileMove(BaseCom.NxBinPath + @"FENGLAN\" + sFileName, BaseCom.NxBinPath + @"FENGLAN\FAIL\" + sFileName);
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
#endregion
|
|
|
|
#region 7.싱가포르-창이공항
|
|
case ItemConst.TranInterfaceOutside.IF_SIN_01: // 창이공항
|
|
{
|
|
// 생성
|
|
sRet = SIN_01_Make(dr);
|
|
if (sRet == UserCom.RST_OK)
|
|
{
|
|
// 파일명
|
|
string sFileName = string.Format("{0:0000}", CmUtil.GetDataRowDouble(dr, "POS_NO")) + "_" + CmUtil.GetDataRowStr(dr, "TRADE_NO");
|
|
|
|
// 파일저장
|
|
CmUtil.FileDelete(BaseCom.NxBinPath + @"FTPDATA\" + sFileName);
|
|
bRet = WriteFile(BaseCom.NxBinPath + "FTPDATA", BaseCom.NxBinPath + @"FTPDATA\" + sFileName, m_sSendData);
|
|
|
|
if (CmUtil.Exists(BaseCom.NxBinPath + @"FTPDATA\" + sFileName) == true)
|
|
{
|
|
// ftp 전송
|
|
if (m_cNetworkFTP.Connect(m_cPosStatus.Mst.ETC_IF_FTP_IP, m_cPosStatus.Mst.ETC_IF_FTP_ID, m_cPosStatus.Mst.ETC_IF_FTP_PW, 10, CmUtil.IntParse(m_cPosStatus.Mst.ETC_IF_FTP_PORT)) == 0)
|
|
{
|
|
// FTP 다운로드
|
|
int iRet = m_cNetworkFTP.Upload(m_cPosStatus.Mst.ETC_IF_FTP_PATH, BaseCom.NxBinPath + @"FTPDATA\", sFileName);
|
|
if (iRet == 0)
|
|
{
|
|
// 정상
|
|
CmUtil.FileDelete(BaseCom.NxBinPath + @"FTPDATA\" + sFileName);
|
|
|
|
sSendYn = "1";
|
|
sResCD = "00";
|
|
sResMsg = "OK";
|
|
}
|
|
else
|
|
{
|
|
sSendYn = "9";
|
|
CmUtil.CreateDirectory(BaseCom.NxBinPath + @"FTPDATA\BackUp\");
|
|
CmUtil.FileMove(BaseCom.NxBinPath + @"FTPDATA\" + sFileName, BaseCom.NxBinPath + @"FTPDATA\BackUp\" + sFileName);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
#endregion
|
|
}
|
|
|
|
// 전송후 상태값 저장
|
|
sRet = IFSendFlgUpdate(dr, sIFDiv, sResCD, sResMsg, m_sSendData, sResData, sSendYn);
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
UserLog.WriteLogFile(UserCom.LOG_DEBUG,
|
|
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
|
|
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
|
|
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
|
|
ex.Message);
|
|
}
|
|
|
|
return sRet;
|
|
}
|
|
#endregion
|
|
|
|
#region I/F 대상 거래 조회
|
|
/// <summary>
|
|
/// I/F 대상 거래 조회
|
|
/// </summary>
|
|
/// <param name="dtData"></param>
|
|
/// <param name="sIFDiv"></param>
|
|
/// <returns></returns>
|
|
private string SelTranData(ref DataTable dtData, string sIFDiv)
|
|
{
|
|
string sQuery = string.Empty;
|
|
string sRet = UserCom.RST_ERR;
|
|
|
|
try
|
|
{
|
|
sQuery = "";
|
|
sQuery += " SELECT \n";
|
|
sQuery += " TSH.CMP_CD \n";
|
|
sQuery += " , TSH.SALE_DT \n";
|
|
sQuery += " , TSH.STOR_CD \n";
|
|
sQuery += " , TSH.POS_NO \n";
|
|
sQuery += " , TSH.TRADE_NO \n";
|
|
sQuery += " , TSH.TRADE_DIV \n";
|
|
sQuery += " , TSH.PAY_TIME \n";
|
|
sQuery += " , TSH.ORG_BILLDT \n";
|
|
sQuery += " , TSH.ORG_BILL_NO \n";
|
|
sQuery += " , TSH.ORG_BILL_POSNO \n";
|
|
sQuery += " , ISNULL(SUM(TSH.QTY), 0) QTY \n";
|
|
sQuery += " , ISNULL(SUM(TSH.NET_SALE_AMT), 0) SALE_AMT \n";
|
|
sQuery += "FROM POSLOG..TR_SALE_HEADER TSH \n";
|
|
sQuery += " LEFT JOIN POSLOG..LOG_SALE_IF LSI \n";
|
|
sQuery += " ON TSH.CMP_CD = LSI.CMP_CD \n";
|
|
sQuery += " AND TSH.SALE_DT = LSI.SALE_DT \n";
|
|
sQuery += " AND TSH.STOR_CD = LSI.STOR_CD \n";
|
|
sQuery += " AND TSH.POS_NO = LSI.POS_NO \n";
|
|
sQuery += " AND TSH.TRADE_NO = LSI.TRADE_NO \n";
|
|
sQuery += " AND LSI.IF_DIV = '" + sIFDiv.Trim() + "' \n";
|
|
sQuery += "WHERE \n";
|
|
sQuery += " TSH.CMP_CD = '" + m_cPosStatus.Base.CmpCd + "' \n";
|
|
sQuery += "AND TSH.SALE_DT >= CONVERT(VARCHAR(8), DATEADD(day, -3, '" + m_cPosStatus.Base.SaleDate + "'), 112) \n"; // 영업일 기준 3일 이전부터 체크
|
|
sQuery += "AND TSH.STOR_CD = '" + m_cPosStatus.Base.StoreNo + "' \n";
|
|
sQuery += "AND TSH.POS_NO = '" + m_cPosStatus.Base.PosNo + "' \n";
|
|
sQuery += "AND TSH.TRAIN_MODE_YN = '0' \n";
|
|
sQuery += "AND TSH.TRADE_KINDPER = '00' \n"; // 거래구분 ('00', '10', '11', '20', '21', '42', '43') -- 일반거래, 미결거래, 대외거래, 선불판매, 상품권판매
|
|
sQuery += "AND LSI.CMP_CD IS NULL \n";
|
|
sQuery += "GROUP BY \n";
|
|
sQuery += " TSH.CMP_CD \n";
|
|
sQuery += " , TSH.SALE_DT \n";
|
|
sQuery += " , TSH.STOR_CD \n";
|
|
sQuery += " , TSH.POS_NO \n";
|
|
sQuery += " , TSH.TRADE_NO \n";
|
|
sQuery += " , TSH.TRADE_DIV \n";
|
|
sQuery += " , TSH.PAY_TIME \n";
|
|
sQuery += " , TSH.ORG_BILLDT \n";
|
|
sQuery += " , TSH.ORG_BILL_NO \n";
|
|
sQuery += " , TSH.ORG_BILL_POSNO \n";
|
|
sQuery += "ORDER BY 1, 2, 3, 4, 5 \n";
|
|
sQuery = sQuery.Replace("\t", " ");
|
|
|
|
// 조회
|
|
if (sqlDb.DBDataTableSelect(sQuery, CommandType.Text, (SqlParameter[])null, out dtData) == UserCom.OK)
|
|
{
|
|
sRet = UserCom.RST_OK;
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
UserLog.WriteLogFile(UserCom.LOG_DEBUG,
|
|
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
|
|
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
|
|
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
|
|
ex.Message);
|
|
}
|
|
return sRet;
|
|
}
|
|
#endregion
|
|
|
|
#region 1.무역센터 - 중국
|
|
#region CHN_01_Make 생성
|
|
/// <summary>
|
|
/// CHN_01_Make 생성
|
|
/// </summary>
|
|
/// <param name="dr"></param>
|
|
/// <returns></returns>
|
|
private string CHN_01_Make(DataRow dr)
|
|
{
|
|
string sRet = UserCom.RST_ERR;
|
|
|
|
try
|
|
{
|
|
// 1.헤더정보
|
|
sRet = CHN_01_Header(dr);
|
|
if(sRet != UserCom.RST_OK ) return sRet;
|
|
|
|
// 2.상품정보
|
|
sRet = CHN_01_iTem(dr);
|
|
if(sRet != UserCom.RST_OK ) return sRet;
|
|
|
|
// 3.결제정보
|
|
sRet = CHN_01_Tender(dr);
|
|
if(sRet != UserCom.RST_OK ) return sRet;
|
|
|
|
// 4.종결
|
|
m_sSendData += "</astr_request>" + PosConst.CRLF;
|
|
m_sSendData += "</postsalescreate>" + PosConst.CRLF;
|
|
m_sSendData += "</soap12:Body>" + PosConst.CRLF;
|
|
m_sSendData += "</soap12:Envelope>" + PosConst.CRLF;
|
|
|
|
sRet = UserCom.RST_OK;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
UserLog.WriteLogFile(UserCom.LOG_DEBUG,
|
|
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
|
|
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
|
|
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
|
|
ex.Message);
|
|
}
|
|
return sRet;
|
|
}
|
|
#endregion
|
|
|
|
#region CHN_01_Header 헤더
|
|
/// <summary>
|
|
/// CHN_01_Header 헤더
|
|
/// </summary>
|
|
/// <param name="dr"></param>
|
|
/// <returns></returns>
|
|
private string CHN_01_Header(DataRow dr)
|
|
{
|
|
string sRet = UserCom.RST_ERR;
|
|
|
|
try
|
|
{
|
|
m_sSendData = "";
|
|
m_sSendData += "<?xml version=\"1.0\" encoding=\"utf-8\"?>" + PosConst.CRLF;
|
|
m_sSendData += "<soap12:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap12=\"http://www.w3.org/2003/05/soap-envelope\">" + PosConst.CRLF;
|
|
m_sSendData += "<soap12:Body>" + PosConst.CRLF;
|
|
m_sSendData += "<postsalescreate xmlns=\"http://tempurl.org\">" + PosConst.CRLF;
|
|
m_sSendData += "<astr_request>" + PosConst.CRLF;
|
|
|
|
// 1. XML 헤더
|
|
m_sSendData += PosConst.CRLF;
|
|
m_sSendData += "<header>" + PosConst.CRLF;
|
|
m_sSendData += "<licensekey></licensekey>" + PosConst.CRLF;
|
|
m_sSendData += "<username>SB124A</username>" + PosConst.CRLF;
|
|
m_sSendData += "<password>SB124A</password>" + PosConst.CRLF;
|
|
m_sSendData += "<lang></lang>" + PosConst.CRLF;
|
|
m_sSendData += "<pagerecords>" + IntParse(CmUtil.GetDataRowStr(dr, "TRADE_NO")) + "</pagerecords>" + PosConst.CRLF; // 거래번호
|
|
m_sSendData += "<pageno>" + IntParse(CmUtil.GetDataRowStr(dr, "TRADE_NO")) + "</pageno>" + PosConst.CRLF; // 거래번호
|
|
m_sSendData += "<updatecount>0</updatecount>" + PosConst.CRLF;
|
|
m_sSendData += "<messagetype>SALESDATA</messagetype>" + PosConst.CRLF;
|
|
m_sSendData += "<messageid>332</messageid>" + PosConst.CRLF;
|
|
m_sSendData += "<version>V332M</version>" + PosConst.CRLF;
|
|
m_sSendData += "</header>" + PosConst.CRLF;
|
|
m_sSendData += "" + PosConst.CRLF;
|
|
m_sSendData += "" + PosConst.CRLF;
|
|
|
|
// 2. XML 합계정보
|
|
m_sSendData += "<salestotal>" + PosConst.CRLF;
|
|
m_sSendData += "<localstorecode>SB124A</localstorecode>" + PosConst.CRLF;
|
|
m_sSendData += "<reservedocno></reservedocno>" + PosConst.CRLF;
|
|
m_sSendData += "<txdate_yyyymmdd>" + CmUtil.GetDataRowStr(dr, "SALE_DT") + "</txdate_yyyymmdd>" + PosConst.CRLF;
|
|
m_sSendData += "<txtime_hhmmss>" + CmUtil.GetDataRowStr(dr, "PAY_TIME") + "</txtime_hhmmss>" + PosConst.CRLF;
|
|
m_sSendData += "<mallid>2037</mallid>" + PosConst.CRLF;
|
|
m_sSendData += "<storecode>SB124A</storecode>" + PosConst.CRLF;
|
|
m_sSendData += "<tillid>" + CmUtil.GetDataRowStr(dr, "POS_NO") + "</tillid>" + PosConst.CRLF;
|
|
|
|
string sTranDiv = "SA";
|
|
if (CmUtil.GetDataRowStr(dr, "TRADE_DIV") == "1") sTranDiv = "SR";
|
|
m_sSendData += "<salestype>" + sTranDiv + "</salestype>" + PosConst.CRLF;
|
|
m_sSendData += "<txdocno>" + CmUtil.GetDataRowStr(dr, "TRADE_NO") + "</txdocno>" + PosConst.CRLF;
|
|
m_sSendData += "<orgtxdate_yyyymmdd>" + CmUtil.GetDataRowStr(dr, "ORG_BILLDT") + "</orgtxdate_yyyymmdd>" + PosConst.CRLF;
|
|
m_sSendData += "<orgstorecode>" + CmUtil.GetDataRowStr(dr, "STOR_CD") + "</orgstorecode>" + PosConst.CRLF;
|
|
m_sSendData += "<orgtillid>" + CmUtil.GetDataRowStr(dr, "ORG_BILL_POSNO") + "</orgtillid>" + PosConst.CRLF;
|
|
m_sSendData += "<txorgdocno></txorgdocno>" + PosConst.CRLF;
|
|
m_sSendData += "<mallitemcode></mallitemcode>" + PosConst.CRLF;
|
|
m_sSendData += "<cashier>SB124A</cashier>" + PosConst.CRLF;
|
|
m_sSendData += "<vipcode></vipcode>" + PosConst.CRLF;
|
|
m_sSendData += "<salesman></salesman>" + PosConst.CRLF;
|
|
m_sSendData += "<demographiccode></demographiccode>" + PosConst.CRLF;
|
|
m_sSendData += "<demographicdata></demographicdata>" + PosConst.CRLF;
|
|
m_sSendData += "<netqty>" + IntParse(CmUtil.GetDataRowStr(dr, "QTY")) + "</netqty>" + PosConst.CRLF;
|
|
m_sSendData += "<originalamount>0.00</originalamount>" + PosConst.CRLF;
|
|
m_sSendData += "<sellingamount>" + DoubleParse(CmUtil.GetDataRowStr(dr, "SALE_AMT")) + "</sellingamount>" + PosConst.CRLF;
|
|
m_sSendData += "<couponnumber></couponnumber>" + PosConst.CRLF;
|
|
m_sSendData += "<coupongroup></coupongroup>" + PosConst.CRLF;
|
|
m_sSendData += "<coupontype></coupontype>" + PosConst.CRLF;
|
|
m_sSendData += "<couponqty>0</couponqty>" + PosConst.CRLF;
|
|
m_sSendData += "<totaldiscount></totaldiscount>" + PosConst.CRLF;
|
|
m_sSendData += "<ttltaxamount1>0</ttltaxamount1>" + PosConst.CRLF;
|
|
m_sSendData += "<ttltaxamount2>0</ttltaxamount2>" + PosConst.CRLF;
|
|
m_sSendData += "<netamount>" + DoubleParse(CmUtil.GetDataRowStr(dr, "SALE_AMT")) + "</netamount>" + PosConst.CRLF;
|
|
m_sSendData += "<paidamount>" + DoubleParse(CmUtil.GetDataRowStr(dr, "SALE_AMT")) + "</paidamount>" + PosConst.CRLF;
|
|
m_sSendData += "<changeamount>0.00</changeamount>" + PosConst.CRLF;
|
|
m_sSendData += "<priceincludetax></priceincludetax>" + PosConst.CRLF;
|
|
m_sSendData += "<shoptaxgroup></shoptaxgroup>" + PosConst.CRLF;
|
|
m_sSendData += "<extendparam></extendparam>" + PosConst.CRLF;
|
|
m_sSendData += "<invoicetitle></invoicetitle>" + PosConst.CRLF;
|
|
m_sSendData += "<invoicecontent></invoicecontent>" + PosConst.CRLF;
|
|
m_sSendData += "<issueby>SB124A</issueby>" + PosConst.CRLF;
|
|
m_sSendData += "<issuedate_yyyymmdd>" + CmUtil.GetDataRowStr(dr, "SALE_DT") + "</issuedate_yyyymmdd>" + PosConst.CRLF;
|
|
m_sSendData += "<issuetime_hhmmss>" + CmUtil.GetDataRowStr(dr, "PAY_TIME") + "</issuetime_hhmmss>" + PosConst.CRLF;
|
|
m_sSendData += "<ecorderno></ecorderno>" + PosConst.CRLF;
|
|
m_sSendData += "<buyerremark></buyerremark>" + PosConst.CRLF;
|
|
m_sSendData += "<orderremark></orderremark>" + PosConst.CRLF;
|
|
m_sSendData += "<status>10</status>" + PosConst.CRLF;
|
|
m_sSendData += "<ttpossalesdocno></ttpossalesdocno>" + PosConst.CRLF;
|
|
m_sSendData += "</salestotal>" + PosConst.CRLF;
|
|
m_sSendData += "" + PosConst.CRLF;
|
|
m_sSendData += "" + PosConst.CRLF;
|
|
|
|
sRet = UserCom.RST_OK;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
UserLog.WriteLogFile(UserCom.LOG_DEBUG,
|
|
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
|
|
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
|
|
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
|
|
ex.Message);
|
|
}
|
|
return sRet;
|
|
}
|
|
#endregion
|
|
|
|
#region CHN_01_iTem 상품정보
|
|
/// <summary>
|
|
/// CHN_01_iTem 상품정보
|
|
/// </summary>
|
|
/// <param name="dr"></param>
|
|
/// <returns></returns>
|
|
private string CHN_01_iTem(DataRow dr)
|
|
{
|
|
string sQuery = string.Empty;
|
|
string sRet = UserCom.RST_ERR;
|
|
DataTable dtData = new DataTable();
|
|
|
|
try
|
|
{
|
|
sQuery = "";
|
|
sQuery += " SELECT \n";
|
|
sQuery += " TSD.SEQ \n";
|
|
sQuery += " , TSD.ITEM_PLU_CD \n";
|
|
sQuery += " , ISNULL(TSD.SALE_QTY, 0) SALE_QTY \n";
|
|
sQuery += " , ISNULL(TSD.BILL_AMT, 0) BILL_AMT \n";
|
|
sQuery += "FROM POSLOG..TR_SALE_DETAIL TSD \n";
|
|
sQuery += "WHERE \n";
|
|
sQuery += " TSD.CMP_CD = '" + CmUtil.GetDataRowStr(dr, "CMP_CD") + "' \n";
|
|
sQuery += "AND TSD.SALE_DT = '" + CmUtil.GetDataRowStr(dr, "SALE_DT") + "' \n";
|
|
sQuery += "AND TSD.STOR_CD = '" + CmUtil.GetDataRowStr(dr, "STOR_CD") + "' \n";
|
|
sQuery += "AND TSD.POS_NO = '" + CmUtil.GetDataRowStr(dr, "POS_NO") + "' \n";
|
|
sQuery += "AND TSD.TRADE_NO = '" + CmUtil.GetDataRowStr(dr, "TRADE_NO") + "' \n";
|
|
sQuery += "AND TSD.CANCEL_DIV = '0' \n";
|
|
sQuery += "ORDER BY TSD.SEQ \n";
|
|
sQuery = sQuery.Replace("\t", " ");
|
|
|
|
// 조회
|
|
if (sqlDb.DBDataTableSelect(sQuery, CommandType.Text, (SqlParameter[])null, out dtData) == UserCom.OK)
|
|
{
|
|
m_sSendData += "<salesitems>" + PosConst.CRLF;
|
|
foreach(DataRow dri in dtData.Rows)
|
|
{
|
|
m_sSendData += "<salesitem>" + PosConst.CRLF;
|
|
m_sSendData += "<iscounteritemcode>1</iscounteritemcode>" + PosConst.CRLF;
|
|
m_sSendData += "<lineno>" + IntParse(CmUtil.GetDataRowStr(dri, "SEQ")) + "</lineno>" + PosConst.CRLF;
|
|
m_sSendData += "<storecode>SB124A</storecode>" + PosConst.CRLF;
|
|
m_sSendData += "<mallitemcode>SB124A1</mallitemcode>" + PosConst.CRLF;
|
|
m_sSendData += "<counteritemcode>SB124A1</counteritemcode> " + PosConst.CRLF;
|
|
m_sSendData += "<itemcode>" + CmUtil.GetDataRowStr(dri, "ITEM_PLU_CD") + "</itemcode>" + PosConst.CRLF;
|
|
m_sSendData += "<plucode>" + CmUtil.GetDataRowStr(dri, "ITEM_PLU_CD") + "</plucode>" + PosConst.CRLF;
|
|
m_sSendData += "<colorcode></colorcode>" + PosConst.CRLF;
|
|
m_sSendData += "<sizecode></sizecode>" + PosConst.CRLF;
|
|
m_sSendData += "<itemlotnum>*</itemlotnum>" + PosConst.CRLF;
|
|
m_sSendData += "<serialnum></serialnum>" + PosConst.CRLF;
|
|
m_sSendData += "<isdeposit>0</isdeposit>" + PosConst.CRLF;
|
|
m_sSendData += "<iswholesale>0</iswholesale>" + PosConst.CRLF;
|
|
m_sSendData += "<invttype>1</invttype>" + PosConst.CRLF;
|
|
m_sSendData += "<qty>" + IntParse(CmUtil.GetDataRowStr(dri, "SALE_QTY")) + "</qty>" + PosConst.CRLF;
|
|
m_sSendData += "<exstk2sales>1.00</exstk2sales>" + PosConst.CRLF;
|
|
m_sSendData += "<originalprice>0.00</originalprice>" + PosConst.CRLF;
|
|
m_sSendData += "<sellingprice>0.00</sellingprice>" + PosConst.CRLF;
|
|
m_sSendData += "<pricemode></pricemode>" + PosConst.CRLF;
|
|
m_sSendData += "<priceapprove></priceapprove>" + PosConst.CRLF;
|
|
m_sSendData += "<couponnumber></couponnumber>" + PosConst.CRLF;
|
|
m_sSendData += "<coupongroup></coupongroup>" + PosConst.CRLF;
|
|
m_sSendData += "<coupontype></coupontype>" + PosConst.CRLF;
|
|
m_sSendData += "<itemdiscount></itemdiscount>" + PosConst.CRLF;
|
|
m_sSendData += "<vipdiscountpercent>0</vipdiscountpercent>" + PosConst.CRLF;
|
|
m_sSendData += "<vipdiscountless>0</vipdiscountless>" + PosConst.CRLF;
|
|
m_sSendData += "<promotion>" + PosConst.CRLF;
|
|
m_sSendData += "</promotion>" + PosConst.CRLF;
|
|
m_sSendData += "<totaldiscountless1>0</totaldiscountless1>" + PosConst.CRLF;
|
|
m_sSendData += "<totaldiscountless2>0</totaldiscountless2>" + PosConst.CRLF;
|
|
m_sSendData += "<totaldiscountless>0</totaldiscountless>" + PosConst.CRLF;
|
|
m_sSendData += "<tax>" + PosConst.CRLF;
|
|
m_sSendData += "</tax>" + PosConst.CRLF;
|
|
m_sSendData += "<netamount>" + DoubleParse(CmUtil.GetDataRowStr(dri, "BILL_AMT")) + "</netamount>" + PosConst.CRLF;
|
|
m_sSendData += "<bonusearn>0</bonusearn>" + PosConst.CRLF;
|
|
m_sSendData += "<salesitemremark></salesitemremark>" + PosConst.CRLF;
|
|
m_sSendData += "<refundreasoncode></refundreasoncode>" + PosConst.CRLF;
|
|
m_sSendData += "<extendparam></extendparam>" + PosConst.CRLF;
|
|
m_sSendData += "</salesitem>" + PosConst.CRLF;
|
|
}
|
|
m_sSendData += "</salesitems>" + PosConst.CRLF;
|
|
m_sSendData += "" + PosConst.CRLF;
|
|
m_sSendData += "" + PosConst.CRLF;
|
|
|
|
sRet = UserCom.RST_OK;
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
UserLog.WriteLogFile(UserCom.LOG_DEBUG,
|
|
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
|
|
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
|
|
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
|
|
ex.Message);
|
|
}
|
|
return sRet;
|
|
}
|
|
#endregion
|
|
|
|
#region CHN_01_Tender 결제정보
|
|
/// <summary>
|
|
/// CHN_01_Tender 결제정보
|
|
/// </summary>
|
|
/// <param name="dr"></param>
|
|
/// <returns></returns>
|
|
private string CHN_01_Tender(DataRow dr)
|
|
{
|
|
string sQuery = string.Empty;
|
|
string sRet = UserCom.RST_ERR;
|
|
DataTable dtData = new DataTable();
|
|
|
|
try
|
|
{
|
|
sQuery = "";
|
|
sQuery += " SELECT \n";
|
|
sQuery += " TSP.SEQ \n";
|
|
sQuery += " , CASE ISNULL(TSP.PAY_WAY_CD, '00') WHEN '00' THEN 'CH' \n";
|
|
sQuery += " WHEN '02' THEN 'CI' \n";
|
|
sQuery += " ELSE 'OH' END PAY_WAY_CD \n";
|
|
sQuery += " , ISNULL(TSP.QTY_ENTRY_01, 0) QTY \n";
|
|
sQuery += " , ISNULL(TSP.PAY_AMT, 0) PAY_AMT \n";
|
|
sQuery += "FROM POSLOG..TR_SALE_PAY TSP \n";
|
|
sQuery += "WHERE \n";
|
|
sQuery += " TSP.CMP_CD = '" + CmUtil.GetDataRowStr(dr, "CMP_CD") + "' \n";
|
|
sQuery += "AND TSP.SALE_DT = '" + CmUtil.GetDataRowStr(dr, "SALE_DT") + "' \n";
|
|
sQuery += "AND TSP.STOR_CD = '" + CmUtil.GetDataRowStr(dr, "STOR_CD") + "' \n";
|
|
sQuery += "AND TSP.POS_NO = '" + CmUtil.GetDataRowStr(dr, "POS_NO") + "' \n";
|
|
sQuery += "AND TSP.TRADE_NO = '" + CmUtil.GetDataRowStr(dr, "TRADE_NO") + "' \n";
|
|
sQuery += "AND TSP.CANCEL_DIV = '0' \n";
|
|
sQuery += "ORDER BY TSP.SEQ \n";
|
|
sQuery = sQuery.Replace("\t", " ");
|
|
|
|
// 조회
|
|
if (sqlDb.DBDataTableSelect(sQuery, CommandType.Text, (SqlParameter[])null, out dtData) == UserCom.OK)
|
|
{
|
|
m_sSendData += "<salestenders> " + PosConst.CRLF;
|
|
foreach(DataRow dri in dtData.Rows)
|
|
{
|
|
m_sSendData += "<salestender>" + PosConst.CRLF;
|
|
m_sSendData += "<lineno>" + IntParse(CmUtil.GetDataRowStr(dri, "SEQ")) + "</lineno>" + PosConst.CRLF;
|
|
m_sSendData += "<tendercode>" + CmUtil.GetDataRowStr(dri, "PAY_WAY_CD") + "</tendercode>" + PosConst.CRLF;
|
|
m_sSendData += "<tendertype>0</tendertype>" + PosConst.CRLF;
|
|
m_sSendData += "<tendercategory>0</tendercategory>" + PosConst.CRLF;
|
|
m_sSendData += "<payamount>" + DoubleParse(CmUtil.GetDataRowStr(dri, "PAY_AMT")) + "</payamount>" + PosConst.CRLF;
|
|
m_sSendData += "<baseamount>" + DoubleParse(CmUtil.GetDataRowStr(dri, "PAY_AMT")) + "</baseamount>" + PosConst.CRLF;
|
|
m_sSendData += "<excessamount>0</excessamount>" + PosConst.CRLF;
|
|
m_sSendData += "<extendparam>-BS2037A00181,-DTSA,-CT99,</extendparam>" + PosConst.CRLF;
|
|
m_sSendData += "<remark></remark>" + PosConst.CRLF;
|
|
m_sSendData += "</salestender>" + PosConst.CRLF;
|
|
}
|
|
m_sSendData += "</salestenders> " + PosConst.CRLF;
|
|
|
|
sRet = UserCom.RST_OK;
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
UserLog.WriteLogFile(UserCom.LOG_DEBUG,
|
|
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
|
|
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
|
|
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
|
|
ex.Message);
|
|
}
|
|
return sRet;
|
|
}
|
|
#endregion
|
|
#endregion
|
|
|
|
#region 2.상해쩡따광장
|
|
#region CHN_02_Make 생성
|
|
/// <summary>
|
|
/// CHN_02_Make 생성
|
|
/// </summary>
|
|
/// <param name="dr"></param>
|
|
/// <returns></returns>
|
|
private string CHN_02_Make(DataRow dr)
|
|
{
|
|
string sRet = UserCom.RST_ERR;
|
|
try
|
|
{
|
|
// 1.헤더정보
|
|
sRet = CHN_02_Header(dr);
|
|
if (sRet != UserCom.RST_OK) return sRet;
|
|
|
|
// 2.상품정보
|
|
sRet = CHN_02_iTem(dr);
|
|
if (sRet != UserCom.RST_OK) return sRet;
|
|
|
|
// 3.결제정보
|
|
sRet = CHN_02_Tender(dr);
|
|
if (sRet != UserCom.RST_OK) return sRet;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
UserLog.WriteLogFile(UserCom.LOG_DEBUG,
|
|
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
|
|
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
|
|
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
|
|
ex.Message);
|
|
}
|
|
return sRet;
|
|
}
|
|
#endregion
|
|
|
|
#region CHN_02_Header 헤더
|
|
/// <summary>
|
|
/// CHN_02_Header 헤더
|
|
/// </summary>
|
|
/// <param name="dr"></param>
|
|
/// <returns></returns>
|
|
private string CHN_02_Header(DataRow dr)
|
|
{
|
|
string sRet = UserCom.RST_ERR;
|
|
try
|
|
{
|
|
m_sSendData = "";
|
|
m_sSendData += "C";
|
|
m_sSendData += m_cPosStatus.Mst.JOIN_BRAND_CD; // 임대번호
|
|
m_sSendData += "~";
|
|
m_sSendData += m_cPosStatus.Mst.JOIN_STOR_CD; // 기계번호
|
|
m_sSendData += "~";
|
|
m_sSendData += "H"; // 기록유형 (H-head)
|
|
m_sSendData += "~";
|
|
m_sSendData += m_cPosStatus.Base.PosNo; // pos번호
|
|
m_sSendData += "~";
|
|
m_sSendData += m_cPosStatus.Base.TradeNo; // 거래번호
|
|
m_sSendData += "~";
|
|
string sTranDiv = "1";
|
|
if (CmUtil.GetDataRowStr(dr, "TRADE_DIV") == "1") sTranDiv = "2";
|
|
m_sSendData += sTranDiv; // 거래유형 (1:매출, 2:환불)
|
|
m_sSendData += "~";
|
|
m_sSendData += DoubleParse(CmUtil.GetDataRowStr(dr, "SALE_AMT")); // 거래총금액
|
|
m_sSendData += "~";
|
|
m_sSendData += ""; // 회원카드번호
|
|
m_sSendData += "~";
|
|
m_sSendData += CmUtil.GetDataRowStr(dr, "SALE_DT") + CmUtil.GetDataRowStr(dr, "PAY_TIME"); // 거래일시
|
|
m_sSendData += PosConst.CRLF;
|
|
|
|
sRet = UserCom.RST_OK;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
UserLog.WriteLogFile(UserCom.LOG_DEBUG,
|
|
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
|
|
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
|
|
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
|
|
ex.Message);
|
|
}
|
|
return sRet;
|
|
}
|
|
#endregion
|
|
|
|
#region CHN_02_iTem 상품정보
|
|
/// <summary>
|
|
/// CHN_02_iTem 상품정보
|
|
/// </summary>
|
|
/// <param name="dr"></param>
|
|
/// <returns></returns>
|
|
private string CHN_02_iTem(DataRow dr)
|
|
{
|
|
string sQuery = string.Empty;
|
|
string sRet = UserCom.RST_ERR;
|
|
DataTable dtData = new DataTable();
|
|
|
|
try
|
|
{
|
|
sQuery = "";
|
|
sQuery += " SELECT \n";
|
|
sQuery += " TSD.SEQ \n";
|
|
sQuery += " , TSD.ITEM_PLU_CD \n";
|
|
sQuery += " , ISNULL(TSD.SALE_QTY, 0) SALE_QTY \n";
|
|
sQuery += " , ISNULL(TSD.BILL_AMT, 0) BILL_AMT \n";
|
|
sQuery += " , ISNULL(MI.SHTCUT_ITEMNM, '') ITEM_NM \n";
|
|
sQuery += "FROM POSLOG..TR_SALE_DETAIL TSD \n";
|
|
sQuery += " LEFT JOIN POSMST..MST_ITEM MI \n";
|
|
sQuery += " ON MI.CMP_CD = TSD.CMP_CD \n";
|
|
sQuery += " AND MI.STOR_CD = TSD.STOR_CD \n";
|
|
sQuery += " AND MI.SUB_STOR_CD = TSD.SUB_SHOP_CD \n";
|
|
sQuery += " AND MI.ITEM_CD = TSD.ITEM_PLU_CD \n";
|
|
sQuery += " AND MI.USE_YN = '" + PosConst.MST_USE_YN.YES + "' \n";
|
|
sQuery += "WHERE \n";
|
|
sQuery += " TSD.CMP_CD = '" + CmUtil.GetDataRowStr(dr, "CMP_CD") + "' \n";
|
|
sQuery += "AND TSD.SALE_DT = '" + CmUtil.GetDataRowStr(dr, "SALE_DT") + "' \n";
|
|
sQuery += "AND TSD.STOR_CD = '" + CmUtil.GetDataRowStr(dr, "STOR_CD") + "' \n";
|
|
sQuery += "AND TSD.POS_NO = '" + CmUtil.GetDataRowStr(dr, "POS_NO") + "' \n";
|
|
sQuery += "AND TSD.TRADE_NO = '" + CmUtil.GetDataRowStr(dr, "TRADE_NO") + "' \n";
|
|
sQuery += "AND TSD.CANCEL_DIV = '0' \n";
|
|
sQuery += "ORDER BY TSD.SEQ \n";
|
|
sQuery = sQuery.Replace("\t", " ");
|
|
|
|
// 조회
|
|
if (sqlDb.DBDataTableSelect(sQuery, CommandType.Text, (SqlParameter[])null, out dtData) == UserCom.OK)
|
|
{
|
|
foreach (DataRow dri in dtData.Rows)
|
|
{
|
|
m_sSendData += "C";
|
|
m_sSendData += m_cPosStatus.Mst.JOIN_BRAND_CD; // 임대번호
|
|
m_sSendData += "~";
|
|
m_sSendData += m_cPosStatus.Mst.JOIN_STOR_CD; // 기계번호
|
|
m_sSendData += "~";
|
|
m_sSendData += "I"; // 기록유형 (I-item)
|
|
m_sSendData += "~";
|
|
m_sSendData += CmUtil.GetDataRowStr(dri, "ITEM_PLU_CD"); // 상품코드
|
|
m_sSendData += "~";
|
|
m_sSendData += IntParse(CmUtil.GetDataRowStr(dri, "SALE_QTY")); // 수량
|
|
m_sSendData += "~";
|
|
m_sSendData += DoubleParse(CmUtil.GetDataRowStr(dri, "BILL_AMT")); // 금액
|
|
m_sSendData += "~";
|
|
m_sSendData += CmUtil.MidH(CmUtil.GetDataRowStr(dri, "ITEM_NM"), 0, 40); // 명칭
|
|
m_sSendData += PosConst.CRLF;
|
|
}
|
|
|
|
sRet = UserCom.RST_OK;
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
UserLog.WriteLogFile(UserCom.LOG_DEBUG,
|
|
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
|
|
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
|
|
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
|
|
ex.Message);
|
|
}
|
|
return sRet;
|
|
}
|
|
#endregion
|
|
|
|
#region CHN_02_Tender 결제정보
|
|
/// <summary>
|
|
/// CHN_02_Tender 결제정보
|
|
/// </summary>
|
|
/// <param name="dr"></param>
|
|
/// <returns></returns>
|
|
private string CHN_02_Tender(DataRow dr)
|
|
{
|
|
string sQuery = string.Empty;
|
|
string sRet = UserCom.RST_ERR;
|
|
DataTable dtData = new DataTable();
|
|
|
|
try
|
|
{
|
|
sQuery = "";
|
|
sQuery += " SELECT \n";
|
|
sQuery += " TSP.SEQ \n";
|
|
sQuery += " , CASE ISNULL(TSP.PAY_WAY_CD, '00') WHEN '00' THEN '1' \n";
|
|
sQuery += " WHEN '02' THEN (CASE ISNULL(TSP.OCCUR_ENTRY_05, '') WHEN 'C' THEN '3' ELSE '2' END) \n";
|
|
sQuery += " WHEN '06' THEN '4' \n";
|
|
sQuery += " ELSE '5' END PAY_WAY_CD \n";
|
|
sQuery += " , ISNULL(TSP.QTY_ENTRY_01, 0) QTY \n";
|
|
sQuery += " , ISNULL(TSP.PAY_AMT, 0) PAY_AMT \n";
|
|
sQuery += "FROM POSLOG..TR_SALE_PAY TSP \n";
|
|
sQuery += "WHERE \n";
|
|
sQuery += " TSP.CMP_CD = '" + CmUtil.GetDataRowStr(dr, "CMP_CD") + "' \n";
|
|
sQuery += "AND TSP.SALE_DT = '" + CmUtil.GetDataRowStr(dr, "SALE_DT") + "' \n";
|
|
sQuery += "AND TSP.STOR_CD = '" + CmUtil.GetDataRowStr(dr, "STOR_CD") + "' \n";
|
|
sQuery += "AND TSP.POS_NO = '" + CmUtil.GetDataRowStr(dr, "POS_NO") + "' \n";
|
|
sQuery += "AND TSP.TRADE_NO = '" + CmUtil.GetDataRowStr(dr, "TRADE_NO") + "' \n";
|
|
sQuery += "AND TSP.CANCEL_DIV = '0' \n";
|
|
sQuery += "ORDER BY TSP.SEQ \n";
|
|
sQuery = sQuery.Replace("\t", " ");
|
|
|
|
// 조회
|
|
if (sqlDb.DBDataTableSelect(sQuery, CommandType.Text, (SqlParameter[])null, out dtData) == UserCom.OK)
|
|
{
|
|
foreach (DataRow dri in dtData.Rows)
|
|
{
|
|
m_sSendData += "C";
|
|
m_sSendData += m_cPosStatus.Mst.JOIN_BRAND_CD; // 임대번호
|
|
m_sSendData += "~";
|
|
m_sSendData += m_cPosStatus.Mst.JOIN_STOR_CD; // 기계번호
|
|
m_sSendData += "~";
|
|
m_sSendData += "T"; // 기록유형 (T-TENDER)
|
|
m_sSendData += "~";
|
|
m_sSendData += CmUtil.GetDataRowStr(dri, "PAY_WAY_CD"); // 지불방식: 1-현금 2-신용카드 3-IC카드 4-상품권 5-기타
|
|
m_sSendData += "~";
|
|
m_sSendData += DoubleParse(CmUtil.GetDataRowStr(dri, "PAY_AMT")); // 금액
|
|
m_sSendData += PosConst.CRLF;
|
|
}
|
|
|
|
sRet = UserCom.RST_OK;
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
UserLog.WriteLogFile(UserCom.LOG_DEBUG,
|
|
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
|
|
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
|
|
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
|
|
ex.Message);
|
|
}
|
|
return sRet;
|
|
}
|
|
#endregion
|
|
#endregion
|
|
|
|
#region 3.왕진활현
|
|
#region CHN_03_Make 생성
|
|
/// <summary>
|
|
/// CHN_03_Make 생성
|
|
/// </summary>
|
|
/// <param name="dr"></param>
|
|
/// <returns></returns>
|
|
private string CHN_03_Make(DataRow dr)
|
|
{
|
|
string sQuery = string.Empty;
|
|
string sRet = UserCom.RST_ERR;
|
|
DataTable dtData = new DataTable();
|
|
|
|
try
|
|
{
|
|
m_sSendData = "";
|
|
|
|
sQuery = "";
|
|
sQuery += " SELECT \n";
|
|
sQuery += " TSH.CMP_CD \n";
|
|
sQuery += " , '2052011401001' STOR_CD \n";
|
|
sQuery += " , TSH.POS_NO \n";
|
|
sQuery += " , TSH.SALE_DT \n";
|
|
sQuery += " , TSH.PAY_TIME \n";
|
|
sQuery += " , TSH.TRADE_NO \n";
|
|
sQuery += " , TSH.TRADE_DIV \n";
|
|
sQuery += " , '2052011401001' ITEM_CD \n";
|
|
sQuery += " , ISNULL(SUM(TSH.NET_SALE_AMT), 0) SALE_AMT \n";
|
|
sQuery += " FROM POSLOG..TR_SALE_HEADER TSH \n";
|
|
sQuery += " WHERE \n";
|
|
sQuery += " TSH.CMP_CD = '" + CmUtil.GetDataRowStr(dr, "CMP_CD") + "' \n";
|
|
sQuery += " AND TSH.SALE_DT = '" + CmUtil.GetDataRowStr(dr, "SALE_DT") + "' \n";
|
|
sQuery += " AND TSH.STOR_CD = '" + CmUtil.GetDataRowStr(dr, "STOR_CD") + "' \n";
|
|
sQuery += " AND TSH.POS_NO = '" + CmUtil.GetDataRowStr(dr, "POS_NO") + "' \n";
|
|
sQuery += " AND TSH.TRADE_NO = '" + CmUtil.GetDataRowStr(dr, "TRADE_NO") + "' \n";
|
|
sQuery += " AND TSH.TRAIN_MODE_YN = '0' \n";
|
|
sQuery += " AND TSH.TRADE_KINDPER = '00' \n";
|
|
sQuery += " GROUP BY \n";
|
|
sQuery += " TSH.CMP_CD \n";
|
|
sQuery += " , TSH.SALE_DT \n";
|
|
sQuery += " , TSH.STOR_CD \n";
|
|
sQuery += " , TSH.POS_NO \n";
|
|
sQuery += " , TSH.TRADE_NO \n";
|
|
sQuery += " , TSH.TRADE_DIV \n";
|
|
sQuery += " , TSH.PAY_TIME \n";
|
|
sQuery = sQuery.Replace("\t", " ");
|
|
|
|
// 조회
|
|
if (sqlDb.DBDataTableSelect(sQuery, CommandType.Text, (SqlParameter[])null, out dtData) == UserCom.OK)
|
|
{
|
|
foreach (DataRow dri in dtData.Rows)
|
|
{
|
|
double nTranDiv = 1;
|
|
if (CmUtil.GetDataRowStr(dri, "TRADE_DIV") == ItemConst.PAY_CANCEL_DIV.CANCEL) nTranDiv = -1;
|
|
|
|
m_sSendData += " "; // 스페이스
|
|
m_sSendData += "\t";
|
|
m_sSendData += m_cPosStatus.Mst.JOIN_STOR_CD; // 점포코드
|
|
m_sSendData += "\t";
|
|
m_sSendData += CmUtil.GetDataRowStr(dri, "POS_NO"); // POS번호
|
|
m_sSendData += "\t";
|
|
m_sSendData += CmUtil.GetDataRowStr(dri, "SALE_DT"); // 거래일자
|
|
m_sSendData += "\t";
|
|
m_sSendData += CmUtil.GetDataRowStr(dri, "PAY_TIME"); // 거래시간
|
|
m_sSendData += "\t";
|
|
m_sSendData += CmUtil.GetDataRowStr(dri, "TRADE_NO"); // 거래번호
|
|
m_sSendData += "\t";
|
|
m_sSendData += m_cPosStatus.Mst.JOIN_ITEM_CD; // 상품코드
|
|
m_sSendData += "\t";
|
|
m_sSendData += CmUtil.DoubleMultiplication(DoubleParse(CmUtil.GetDataRowStr(dri, "SALE_AMT")), nTranDiv); // 결제금액
|
|
m_sSendData += "\t";
|
|
m_sSendData += ""; // TENDER
|
|
m_sSendData += PosConst.CRLF;
|
|
}
|
|
|
|
sRet = UserCom.RST_OK;
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
UserLog.WriteLogFile(UserCom.LOG_DEBUG,
|
|
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
|
|
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
|
|
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
|
|
ex.Message);
|
|
}
|
|
return sRet;
|
|
}
|
|
#endregion
|
|
#endregion
|
|
|
|
#region 4.조양따훼청
|
|
#region CHN_04_Make 생성
|
|
/// <summary>
|
|
/// CHN_04_Make 생성
|
|
/// </summary>
|
|
/// <param name="dr"></param>
|
|
/// <returns></returns>
|
|
private string CHN_04_Make(DataRow dr)
|
|
{
|
|
string sQuery = string.Empty;
|
|
string sRet = UserCom.RST_ERR;
|
|
DataTable dtData = new DataTable();
|
|
|
|
try
|
|
{
|
|
m_sSendData = "";
|
|
|
|
sQuery = "";
|
|
sQuery += " SELECT \n";
|
|
sQuery += " TSH.CMP_CD \n";
|
|
sQuery += " , '1F31A1' STOR_CD \n";
|
|
sQuery += " , TSH.POS_NO \n";
|
|
sQuery += " , TSH.SALE_DT \n";
|
|
sQuery += " , TSH.PAY_TIME \n";
|
|
sQuery += " , TSH.TRADE_NO \n";
|
|
sQuery += " , TSH.TRADE_DIV \n";
|
|
sQuery += " , '1031110' ITEM_CD \n";
|
|
sQuery += " , ISNULL(SUM(CASE ISNULL(TSP.PAY_WAY_CD, '') WHEN '00' THEN ISNULL(TSP.PAY_AMT, 0) ELSE 0 END), 0) CASH_AMT \n";
|
|
sQuery += " , ISNULL(SUM(CASE ISNULL(TSP.PAY_WAY_CD, '') WHEN '02' THEN (CASE WHEN ISNULL(TSP.OCCUR_ENTRY_18, '') = '20' THEN ISNULL(TSP.PAY_AMT, 0) ELSE 0 END) ELSE 0 END), 0) CARD_UN_SUM \n";
|
|
sQuery += " , ISNULL(SUM(CASE ISNULL(TSP.PAY_WAY_CD, '') WHEN '02' THEN (CASE WHEN ISNULL(TSP.OCCUR_ENTRY_18, '') <> '20' THEN ISNULL(TSP.PAY_AMT, 0) ELSE 0 END) ELSE 0 END), 0) CARD_20_SUM \n";
|
|
sQuery += " , ISNULL(SUM(CASE ISNULL(TSP.PAY_WAY_CD, '') WHEN '00' THEN 0 \n";
|
|
sQuery += " WHEN '02' THEN 0 \n";
|
|
sQuery += " ELSE ISNULL(TSP.PAY_AMT, 0) END), 0) ETC_SUM \n";
|
|
sQuery += " , ISNULL(SUM(TSH.NET_SALE_AMT), 0) SALE_AMT \n";
|
|
sQuery += " FROM POSLOG..TR_SALE_HEADER TSH \n";
|
|
sQuery += " LEFT JOIN POSLOG..TR_SALE_PAY TSP \n";
|
|
sQuery += " ON TSP.CMP_CD = TSH.CMP_CD \n";
|
|
sQuery += " AND TSP.SALE_DT = TSH.SALE_DT \n";
|
|
sQuery += " AND TSP.STOR_CD = TSH.STOR_CD \n";
|
|
sQuery += " AND TSP.POS_NO = TSH.POS_NO \n";
|
|
sQuery += " AND TSP.TRADE_NO = TSH.TRADE_NO \n";
|
|
sQuery += " AND TSP.CANCEL_DIV = '0' \n";
|
|
sQuery += " WHERE \n";
|
|
sQuery += " TSH.CMP_CD = '" + CmUtil.GetDataRowStr(dr, "CMP_CD") + "' \n";
|
|
sQuery += " AND TSH.SALE_DT = '" + CmUtil.GetDataRowStr(dr, "SALE_DT") + "' \n";
|
|
sQuery += " AND TSH.STOR_CD = '" + CmUtil.GetDataRowStr(dr, "STOR_CD") + "' \n";
|
|
sQuery += " AND TSH.POS_NO = '" + CmUtil.GetDataRowStr(dr, "POS_NO") + "' \n";
|
|
sQuery += " AND TSH.TRADE_NO = '" + CmUtil.GetDataRowStr(dr, "TRADE_NO") + "' \n";
|
|
sQuery += " AND TSH.TRAIN_MODE_YN = '0' \n";
|
|
sQuery += " AND TSH.TRADE_KINDPER = '00' \n";
|
|
sQuery += " GROUP BY \n";
|
|
sQuery += " TSH.CMP_CD \n";
|
|
sQuery += " , TSH.SALE_DT \n";
|
|
sQuery += " , TSH.STOR_CD \n";
|
|
sQuery += " , TSH.POS_NO \n";
|
|
sQuery += " , TSH.TRADE_NO \n";
|
|
sQuery += " , TSH.TRADE_DIV \n";
|
|
sQuery += " , TSH.PAY_TIME \n";
|
|
sQuery = sQuery.Replace("\t", " ");
|
|
|
|
// 조회
|
|
if (sqlDb.DBDataTableSelect(sQuery, CommandType.Text, (SqlParameter[])null, out dtData) == UserCom.OK)
|
|
{
|
|
foreach (DataRow dri in dtData.Rows)
|
|
{
|
|
double nTranDiv = 1;
|
|
if (CmUtil.GetDataRowStr(dri, "TRADE_DIV") == ItemConst.PAY_CANCEL_DIV.CANCEL) nTranDiv = -1;
|
|
|
|
m_sSendData += " "; // 스페이스
|
|
m_sSendData += "\t";
|
|
m_sSendData += m_cPosStatus.Mst.JOIN_STOR_CD; // 점포코드
|
|
m_sSendData += "\t";
|
|
m_sSendData += CmUtil.GetDataRowStr(dri, "POS_NO"); // POS번호
|
|
m_sSendData += "\t";
|
|
m_sSendData += CmUtil.GetDataRowStr(dri, "SALE_DT"); // 거래일자
|
|
m_sSendData += "\t";
|
|
m_sSendData += CmUtil.GetDataRowStr(dri, "PAY_TIME"); // 거래시간
|
|
m_sSendData += "\t";
|
|
m_sSendData += CmUtil.GetDataRowStr(dri, "TRADE_NO"); // 거래번호
|
|
m_sSendData += "\t";
|
|
m_sSendData += m_cPosStatus.Mst.JOIN_ITEM_CD; // 상품코드
|
|
m_sSendData += "\t";
|
|
m_sSendData += CmUtil.DoubleMultiplication(DoubleParse(CmUtil.GetDataRowStr(dri, "CASH_AMT")), nTranDiv); // 현금
|
|
m_sSendData += "\t";
|
|
m_sSendData += CmUtil.DoubleMultiplication(DoubleParse(CmUtil.GetDataRowStr(dri, "CARD_UN_SUM")), nTranDiv); // 중국은행카드
|
|
m_sSendData += "\t";
|
|
m_sSendData += CmUtil.DoubleMultiplication(DoubleParse(CmUtil.GetDataRowStr(dri, "CARD_20_SUM")), nTranDiv); // 해외은행카드
|
|
m_sSendData += "\t";
|
|
m_sSendData += CmUtil.DoubleMultiplication(DoubleParse(CmUtil.GetDataRowStr(dri, "ETC_SUM")), nTranDiv); // 기타
|
|
m_sSendData += "\t";
|
|
m_sSendData += CmUtil.DoubleMultiplication(DoubleParse(CmUtil.GetDataRowStr(dri, "SALE_AMT")), nTranDiv); // 합계
|
|
m_sSendData += PosConst.CRLF;
|
|
}
|
|
|
|
sRet = UserCom.RST_OK;
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
UserLog.WriteLogFile(UserCom.LOG_DEBUG,
|
|
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
|
|
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
|
|
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
|
|
ex.Message);
|
|
}
|
|
return sRet;
|
|
}
|
|
#endregion
|
|
#endregion
|
|
|
|
#region 5.풍란
|
|
#region CHN_05_Make 생성
|
|
/// <summary>
|
|
/// CHN_05_Make 생성
|
|
/// </summary>
|
|
/// <param name="dr"></param>
|
|
/// <returns></returns>
|
|
private string CHN_05_Make(DataRow dr)
|
|
{
|
|
string sQuery = string.Empty;
|
|
string sRet = UserCom.RST_ERR;
|
|
DataTable dtData = new DataTable();
|
|
string sDocNo = "";
|
|
string sSaleDate = "";
|
|
|
|
try
|
|
{
|
|
sQuery = "";
|
|
sQuery += " SELECT \n";
|
|
sQuery += " TSH.CMP_CD \n";
|
|
sQuery += " , '000984' STOR_CD \n";
|
|
sQuery += " , TSH.POS_NO \n";
|
|
sQuery += " , TSH.SALE_DT \n";
|
|
sQuery += " , TSH.PAY_TIME \n";
|
|
sQuery += " , TSH.TRADE_NO \n";
|
|
sQuery += " , TSH.TRADE_DIV \n";
|
|
sQuery += " , '000984' ITEM_CD \n";
|
|
sQuery += " , ISNULL(SUM(CASE ISNULL(TSP.PAY_WAY_CD, '') WHEN '00' THEN ISNULL(TSP.PAY_AMT, 0) ELSE 0 END), 0) CASH_AMT \n";
|
|
sQuery += " , ISNULL(SUM(CASE ISNULL(TSP.PAY_WAY_CD, '') WHEN '02' THEN (CASE WHEN ISNULL(TSP.OCCUR_ENTRY_18, '') = '20' THEN ISNULL(TSP.PAY_AMT, 0) ELSE 0 END) ELSE 0 END), 0) CARD_UN_SUM \n";
|
|
sQuery += " , ISNULL(SUM(CASE ISNULL(TSP.PAY_WAY_CD, '') WHEN '02' THEN (CASE WHEN ISNULL(TSP.OCCUR_ENTRY_18, '') <> '20' THEN ISNULL(TSP.PAY_AMT, 0) ELSE 0 END) ELSE 0 END), 0) CARD_20_SUM \n";
|
|
sQuery += " , ISNULL(SUM(CASE ISNULL(TSP.PAY_WAY_CD, '') WHEN '00' THEN 0 \n";
|
|
sQuery += " WHEN '02' THEN 0 \n";
|
|
sQuery += " ELSE ISNULL(TSP.PAY_AMT, 0) END), 0) ETC_SUM \n";
|
|
sQuery += " , ISNULL(SUM(TSH.TOTDC_AMT), 0) TOTDC_AMT \n";
|
|
sQuery += " , ISNULL(SUM(TSH.NET_SALE_AMT), 0) SALE_AMT \n";
|
|
sQuery += " FROM POSLOG..TR_SALE_HEADER TSH \n";
|
|
sQuery += " LEFT JOIN POSLOG..TR_SALE_PAY TSP \n";
|
|
sQuery += " ON TSP.CMP_CD = TSH.CMP_CD \n";
|
|
sQuery += " AND TSP.SALE_DT = TSH.SALE_DT \n";
|
|
sQuery += " AND TSP.STOR_CD = TSH.STOR_CD \n";
|
|
sQuery += " AND TSP.POS_NO = TSH.POS_NO \n";
|
|
sQuery += " AND TSP.TRADE_NO = TSH.TRADE_NO \n";
|
|
sQuery += " AND TSP.CANCEL_DIV = '0' \n";
|
|
sQuery += " WHERE \n";
|
|
sQuery += " TSH.CMP_CD = '" + CmUtil.GetDataRowStr(dr, "CMP_CD") + "' \n";
|
|
sQuery += " AND TSH.SALE_DT = '" + CmUtil.GetDataRowStr(dr, "SALE_DT") + "' \n";
|
|
sQuery += " AND TSH.STOR_CD = '" + CmUtil.GetDataRowStr(dr, "STOR_CD") + "' \n";
|
|
sQuery += " AND TSH.POS_NO = '" + CmUtil.GetDataRowStr(dr, "POS_NO") + "' \n";
|
|
sQuery += " AND TSH.TRADE_NO = '" + CmUtil.GetDataRowStr(dr, "TRADE_NO") + "' \n";
|
|
sQuery += " AND TSH.TRAIN_MODE_YN = '0' \n";
|
|
sQuery += " AND TSH.TRADE_KINDPER = '00' \n";
|
|
sQuery += " GROUP BY \n";
|
|
sQuery += " TSH.CMP_CD \n";
|
|
sQuery += " , TSH.SALE_DT \n";
|
|
sQuery += " , TSH.STOR_CD \n";
|
|
sQuery += " , TSH.POS_NO \n";
|
|
sQuery += " , TSH.TRADE_NO \n";
|
|
sQuery += " , TSH.TRADE_DIV \n";
|
|
sQuery += " , TSH.PAY_TIME \n";
|
|
sQuery = sQuery.Replace("\t", " ");
|
|
|
|
// 조회
|
|
if (sqlDb.DBDataTableSelect(sQuery, CommandType.Text, (SqlParameter[])null, out dtData) == UserCom.OK)
|
|
{
|
|
m_sSendData = "";
|
|
|
|
foreach (DataRow dri in dtData.Rows)
|
|
{
|
|
double nTranDiv = 1;
|
|
if (CmUtil.GetDataRowStr(dri, "TRADE_DIV") == ItemConst.PAY_CANCEL_DIV.CANCEL) nTranDiv = -1;
|
|
|
|
m_sSendData += "<request>";
|
|
m_sSendData += "<cmd>SENDSALE</cmd>"; // doc
|
|
m_sSendData += "<code>" + m_cPosStatus.Mst.JOIN_STOR_CD + "</code>"; // 점포코드
|
|
m_sSendData += "<tillid>" + CmUtil.GetDataRowStr(dri, "POS_NO").PadLeft(3, '0') + "</tillid>"; // POS번호
|
|
sDocNo = "S" + CmUtil.MidH(CmUtil.GetDataRowStr(dri, "SALE_DT"), 2, 6) + CmUtil.MidH(CmUtil.GetDataRowStr(dri, "TRADE_NO"), 2, 3);
|
|
m_sSendData += "<docno>" + sDocNo + "</docno>"; // 증빙서류
|
|
m_sSendData += "<plu>" + m_cPosStatus.Mst.JOIN_ITEM_CD + "</plu>"; // 상품코드
|
|
m_sSendData += "<vipcode>" + "" + "</vipcode>"; // vip 코드
|
|
sSaleDate = string.Format("0:0000/00/00", CmUtil.DoubleParse(CmUtil.GetDataRowStr(dri, "SALE_DT"))) + " " + CmUtil.MidH(CmUtil.GetDataRowStr(dri, "PAY_TIME"), 0, 4);
|
|
m_sSendData += "<txdate>" + sSaleDate + "</txdate>"; // 매출일시
|
|
m_sSendData += "<ch>" + CmUtil.DoubleMultiplication(DoubleParse(CmUtil.GetDataRowStr(dri, "CASH_AMT")), nTranDiv) + "</ch>"; // 현금
|
|
m_sSendData += "<ci>" + CmUtil.DoubleMultiplication(DoubleParse(CmUtil.GetDataRowStr(dri, "CARD_UN_SUM")), nTranDiv) + "</ci>"; // 내부카드
|
|
m_sSendData += "<co>" + CmUtil.DoubleMultiplication(DoubleParse(CmUtil.GetDataRowStr(dri, "CARD_20_SUM")), nTranDiv) + "</co>"; // 외부카드
|
|
m_sSendData += "<ot>" + CmUtil.DoubleMultiplication(DoubleParse(CmUtil.GetDataRowStr(dri, "ETC_SUM")), nTranDiv) + "</ot>"; // 기타
|
|
m_sSendData += "<ttldiscount>" + CmUtil.DoubleMultiplication(DoubleParse(CmUtil.GetDataRowStr(dri, "TOTDC_AMT")), nTranDiv) + "</ttldiscount>"; // 할인
|
|
m_sSendData += "<netamt>" + CmUtil.DoubleMultiplication(DoubleParse(CmUtil.GetDataRowStr(dri, "SALE_AMT")), nTranDiv) + "</netamt>"; // 총금액
|
|
m_sSendData += "</request>";
|
|
m_sSendData += PosConst.CRLF;
|
|
}
|
|
|
|
|
|
sRet = UserCom.RST_OK;
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
UserLog.WriteLogFile(UserCom.LOG_DEBUG,
|
|
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
|
|
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
|
|
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
|
|
ex.Message);
|
|
}
|
|
return sRet;
|
|
}
|
|
#endregion
|
|
#endregion
|
|
|
|
#region 7.창이공항
|
|
#region SIN_01_Make 생성
|
|
/// <summary>
|
|
/// SIN_01_Make 생성
|
|
/// </summary>
|
|
/// <param name="dr"></param>
|
|
/// <returns></returns>
|
|
private string SIN_01_Make(DataRow dr)
|
|
{
|
|
string sQuery = string.Empty;
|
|
string sRet = UserCom.RST_ERR;
|
|
DataTable dtData = new DataTable();
|
|
|
|
double nTotalAmt = 0;
|
|
double nSubAmt = 0;
|
|
double nSumDCAmt = 0;
|
|
double nSumTax = 0;
|
|
double nDCAmt = 0;
|
|
|
|
try
|
|
{
|
|
m_sSendData = "";
|
|
|
|
sQuery = "";
|
|
sQuery += " SELECT \n";
|
|
sQuery += " TSH.CMP_CD \n";
|
|
sQuery += " , TSH.STOR_CD \n";
|
|
sQuery += " , TSH.POS_NO \n" ;
|
|
sQuery += " , TSH.SALE_DT \n" ;
|
|
sQuery += " , TSH.PAY_TIME \n" ;
|
|
sQuery += " , TSH.TRADE_NO \n" ;
|
|
sQuery += " , TSH.TRADE_DIV \n" ;
|
|
sQuery += " , TSD.ITEM_PLU_CD ITEM_CD \n";
|
|
sQuery += " , ISNULL(MI.SHTCUT_ITEMNM, '') ITEM_NM \n";
|
|
sQuery += " , ISNULL(TSD.SALE_QTY, 0) SALE_QTY \n";
|
|
sQuery += " , ISNULL(TSD.BILL_AMT, 0) BILL_AMT \n";
|
|
sQuery += " , ISNULL(TSD.APPLY_TAX_AMT, 0) APPLY_TAX_AMT \n";
|
|
sQuery += " , ISNULL(TSD.ITEM_DC_AMT, 0) \n";
|
|
sQuery += " + ISNULL(TSD.SUM_DC_AMT, 0) \n";
|
|
sQuery += " + ISNULL(TSD.CPI_DC_AMT, 0) \n";
|
|
sQuery += " + ISNULL(TSD.COOP_CARD_DC_AMT, 0) \n";
|
|
sQuery += " + ISNULL(TSD.POINT_DC_AMT, 0) \n";
|
|
sQuery += " + ISNULL(TSD.CPN_DC_AMT, 0) \n";
|
|
sQuery += " + ISNULL(TSD.EMP_DC_AMT, 0) \n";
|
|
sQuery += " + ISNULL(TSD.SET_DC_AMT, 0) \n";
|
|
sQuery += " + ISNULL(TSD.ETC_DC_AMT, 0) \n";
|
|
sQuery += " + ISNULL(TSD.EXCEP_DC_AMT, 0) ITEM_DC_AMT \n";
|
|
sQuery += " , 0 TAX1 \n";
|
|
sQuery += " , '1' TAX2 \n";
|
|
sQuery += " , 0 TAX3 \n";
|
|
sQuery += " , 0 SERV1 \n";
|
|
sQuery += " , 0 SERV2 \n";
|
|
sQuery += " , (SELECT ISNULL(MIC.ITEM_CLSS_NM, '') ITEM_CLSS_NM \n";
|
|
sQuery += " FROM POSMST..MST_ITEM_CLSS MIC \n";
|
|
sQuery += " WHERE \n";
|
|
sQuery += " MIC.CMP_CD = MI.CMP_CD \n";
|
|
sQuery += " AND MIC.ITEM_CLSS_TYPE_CD = '00' \n";
|
|
sQuery += " AND MIC.ITEM_CLSS_CD = MI.L_CLSS \n";
|
|
sQuery += " AND MIC.ITEM_CLSS_LVL_TYPE = 'L' \n";
|
|
sQuery += " AND MIC.USE_YN = '" + PosConst.MST_USE_YN.YES + "') ITEM_CLSS_NM \n";
|
|
sQuery += " FROM POSLOG..TR_SALE_HEADER TSH \n";
|
|
sQuery += " LEFT JOIN POSLOG..TR_SALE_DETAIL TSD \n";
|
|
sQuery += " ON TSD.CMP_CD = TSH.CMP_CD \n";
|
|
sQuery += " AND TSD.SALE_DT = TSH.SALE_DT \n";
|
|
sQuery += " AND TSD.STOR_CD = TSH.STOR_CD \n";
|
|
sQuery += " AND TSD.POS_NO = TSH.POS_NO \n";
|
|
sQuery += " AND TSD.TRADE_NO = TSH.TRADE_NO \n";
|
|
sQuery += " AND TSD.CANCEL_DIV = '0' \n";
|
|
sQuery += " LEFT JOIN POSMST..MST_ITEM MI \n";
|
|
sQuery += " ON MI.CMP_CD = TSD.CMP_CD \n";
|
|
sQuery += " AND MI.STOR_CD = TSD.STOR_CD \n";
|
|
sQuery += " AND MI.SUB_STOR_CD = TSD.SUB_SHOP_CD \n";
|
|
sQuery += " AND MI.ITEM_CD = TSD.ITEM_PLU_CD \n";
|
|
sQuery += " AND MI.USE_YN = '" + PosConst.MST_USE_YN.YES + "' \n";
|
|
sQuery += " WHERE \n";
|
|
sQuery += " TSH.CMP_CD = '" + CmUtil.GetDataRowStr(dr, "CMP_CD") + "' \n";
|
|
sQuery += " AND TSH.SALE_DT = '" + CmUtil.GetDataRowStr(dr, "SALE_DT") + "' \n";
|
|
sQuery += " AND TSH.STOR_CD = '" + CmUtil.GetDataRowStr(dr, "STOR_CD") + "' \n";
|
|
sQuery += " AND TSH.POS_NO = '" + CmUtil.GetDataRowStr(dr, "POS_NO") + "' \n";
|
|
sQuery += " AND TSH.TRADE_NO = '" + CmUtil.GetDataRowStr(dr, "TRADE_NO") + "' \n";
|
|
sQuery += " AND TSH.TRAIN_MODE_YN = '0' \n";
|
|
sQuery += " AND TSH.TRADE_KINDPER = '00' \n";
|
|
sQuery += " ORDER BY \n";
|
|
sQuery += " TSH.CMP_CD \n";
|
|
sQuery += " , TSH.SALE_DT \n";
|
|
sQuery += " , TSH.STOR_CD \n";
|
|
sQuery += " , TSH.POS_NO \n";
|
|
sQuery += " , TSH.TRADE_NO \n";
|
|
sQuery += " , TSH.TRADE_DIV \n";
|
|
sQuery += " , TSD.SEQ \n";
|
|
|
|
sQuery = sQuery.Replace("\t", " ");
|
|
|
|
// 조회
|
|
if (sqlDb.DBDataTableSelect(sQuery, CommandType.Text, (SqlParameter[])null, out dtData) == UserCom.OK)
|
|
{
|
|
foreach (DataRow dri in dtData.Rows)
|
|
{
|
|
double nTranDiv = 1;
|
|
if (CmUtil.GetDataRowStr(dri, "TRADE_DIV") == ItemConst.PAY_CANCEL_DIV.CANCEL) nTranDiv = -1;
|
|
|
|
nSubAmt = CmUtil.DoubleAdd(nSubAmt, CmUtil.DoubleMultiplication(DoubleParse(CmUtil.GetDataRowStr(dri, "BILL_AMT")), nTranDiv));
|
|
nDCAmt = CmUtil.DoubleMultiplication(DoubleParse(CmUtil.GetDataRowStr(dri, "ITEM_DC_AMT")), nTranDiv);
|
|
nSumDCAmt = CmUtil.DoubleAdd(nSumDCAmt, nDCAmt);
|
|
nSumTax = CmUtil.DoubleAdd(nSumTax, CmUtil.DoubleMultiplication(DoubleParse(CmUtil.GetDataRowStr(dri, "APPLY_TAX_AMT")), nTranDiv));
|
|
|
|
nTotalAmt = CmUtil.DoubleAdd(nTotalAmt, CmUtil.DoubleMultiplication(DoubleParse(CmUtil.GetDataRowStr(dri, "BILL_AMT")), nTranDiv));
|
|
nTotalAmt = CmUtil.DoubleAdd(nTotalAmt, CmUtil.DoubleMultiplication(DoubleParse(CmUtil.GetDataRowStr(dri, "APPLY_TAX_AMT")), nTranDiv));
|
|
|
|
m_sSendData += "I"; // 구분
|
|
m_sSendData += "," + CmUtil.GetDataRowStr(dri, "TRADE_NO"); // 거래번호
|
|
m_sSendData += "," + CmUtil.GetDataRowStr(dri, "ITEM_CD"); // 상품코드
|
|
m_sSendData += "," + CmUtil.GetDataRowStr(dri, "ITEM_NM"); // 상품명
|
|
m_sSendData += "," + IntParse(CmUtil.GetDataRowStr(dri, "SALE_QTY")); // 수량
|
|
m_sSendData += "," + CmUtil.DoubleMultiplication(DoubleParse(CmUtil.GetDataRowStr(dri, "BILL_AMT")), nTranDiv); // 판매금액
|
|
m_sSendData += "," + nDCAmt; // 할인금액
|
|
if (nDCAmt > 0)
|
|
m_sSendData += "," + "1"; // 할인구분 (1:할인, 0:미할인)
|
|
else
|
|
m_sSendData += "," + "0";
|
|
m_sSendData += "," + DoubleParse(CmUtil.GetDataRowStr(dri, "TAX1")); // 봉사료
|
|
m_sSendData += "," + DoubleParse(CmUtil.GetDataRowStr(dri, "TAX2")); // 부가세율
|
|
m_sSendData += "," + DoubleParse(CmUtil.GetDataRowStr(dri, "TAX3")); // 고정
|
|
m_sSendData += "," + DoubleParse(CmUtil.GetDataRowStr(dri, "SERV1")); // 고정
|
|
m_sSendData += "," + DoubleParse(CmUtil.GetDataRowStr(dri, "SERV1")); // 고정
|
|
m_sSendData += "," + CmUtil.GetDataRowStr(dri, "ITEM_CLSS_NM"); // 분류명
|
|
m_sSendData += PosConst.CRLF;
|
|
}
|
|
|
|
// 계
|
|
if (m_sSendData.Trim() != "")
|
|
{
|
|
m_sSendData += "D" + "," + "subtotal" + "," + nSubAmt + PosConst.CRLF; // 순매출
|
|
m_sSendData += "D" + "," + "disc" + "," + nSumDCAmt + PosConst.CRLF; // 할인
|
|
m_sSendData += "D" + "," + "tax2" + "," + nSumTax + PosConst.CRLF; // 부가세
|
|
m_sSendData += "D" + "," + "total" + "," + nTotalAmt; // 총매출
|
|
}
|
|
|
|
sRet = UserCom.RST_OK;
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
UserLog.WriteLogFile(UserCom.LOG_DEBUG,
|
|
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
|
|
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
|
|
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
|
|
ex.Message);
|
|
}
|
|
return sRet;
|
|
}
|
|
#endregion
|
|
#endregion
|
|
|
|
#region I/F POST방식 Request
|
|
/// <summary>
|
|
/// I/F POST방식 Request
|
|
/// </summary>
|
|
/// <param name="sUrl"></param>
|
|
/// <param name="sSendData"></param>
|
|
/// <param name="sResCD"></param>
|
|
/// <param name="sResMsg"></param>
|
|
/// <param name="sResvData"></param>
|
|
/// <returns></returns>
|
|
public string HttpPOST_SendReceive(string sIFDiv, string sUrl, string sSendData, ref string sResCD, ref string sResMsg, ref string sResData)
|
|
{
|
|
string sRet = UserCom.RST_ERR;
|
|
string sRespString = string.Empty;
|
|
|
|
string[] sResponeData = new string[4];
|
|
|
|
try
|
|
{
|
|
if (sIFDiv == ItemConst.TranInterfaceOutside.IF_CHN_01)
|
|
{
|
|
// 무역센터
|
|
sResponeData[0] = "application/soap+xml"; // ContentType
|
|
sResponeData[1] = "postsalescreate"; // SelectNodes
|
|
sResponeData[2] = "responsecode"; // res cd
|
|
sResponeData[3] = "responsemessage"; // res msg
|
|
}
|
|
|
|
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(sUrl);
|
|
|
|
byte[] reqByte = Encoding.UTF8.GetBytes(sSendData);
|
|
|
|
req.Method = "POST";
|
|
req.ContentType = sResponeData[0];
|
|
req.ContentLength = reqByte.Length;
|
|
|
|
// create our stream to send
|
|
Stream webDataStream = req.GetRequestStream();
|
|
webDataStream.Write(reqByte, 0, reqByte.Length);
|
|
|
|
// get thre response from our stream
|
|
WebResponse resp = req.GetResponse();
|
|
webDataStream = resp.GetResponseStream();
|
|
|
|
// convert the result into a string
|
|
StreamReader respStreamReader = new StreamReader(webDataStream);
|
|
string respFromServer = respStreamReader.ReadToEnd();
|
|
respStreamReader.Close();
|
|
|
|
// 파싱
|
|
XmlDocument xmlDoc = new XmlDocument();
|
|
xmlDoc.LoadXml(respFromServer);
|
|
XmlNodeList xnList = xmlDoc.SelectNodes(sResponeData[1]);
|
|
|
|
foreach (XmlNode xn in xnList)
|
|
{
|
|
if (sIFDiv == ItemConst.TranInterfaceOutside.IF_CHN_01)
|
|
{
|
|
sResCD = xn[sResponeData[2]].InnerText;
|
|
sResMsg = xn[sResponeData[3]].InnerText;
|
|
sResData = respFromServer;
|
|
}
|
|
else
|
|
{
|
|
sResData = respFromServer;
|
|
}
|
|
}
|
|
|
|
sRet = UserCom.RST_OK;
|
|
}
|
|
catch(Exception ex)
|
|
{
|
|
UserLog.WriteLogFile(UserCom.LOG_ERROR,
|
|
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
|
|
System.Reflection.MethodBase.GetCurrentMethod().Name + "()",
|
|
ex.ToString());
|
|
}
|
|
|
|
return sRet;
|
|
}
|
|
#endregion
|
|
|
|
#region 전송 상태값 저장
|
|
/// <summary>
|
|
/// 전송 상태값 저장
|
|
/// </summary>
|
|
/// <param name="dr"></param>
|
|
/// <param name="sIFDiv"></param>
|
|
/// <param name="sResCD"></param>
|
|
/// <param name="sResMsg"></param>
|
|
/// <param name="sSData"></param>
|
|
/// <param name="sRData"></param>
|
|
/// <returns></returns>
|
|
private string IFSendFlgUpdate(DataRow dr, string sIFDiv, string sResCD, string sResMsg, string sSData, string sRData, string sSendYn)
|
|
{
|
|
int iRet = UserCom.NG;
|
|
string sRet = UserCom.RST_ERR;
|
|
string sQuery = string.Empty;
|
|
|
|
try
|
|
{
|
|
if (CmUtil.GetDataRowStr(dr, "CMP_CD").Trim() == "") return sRet;
|
|
|
|
sResMsg = sResMsg.Replace("'", "`");
|
|
sSData = sSData.Replace("'", "`");
|
|
sRData = sRData.Replace("'", "`");
|
|
|
|
sQuery = "";
|
|
sQuery += "BEGIN \n";
|
|
sQuery += " UPDATE POSLOG..LOG_SALE_IF \n";
|
|
sQuery += " SET \n";
|
|
sQuery += " RES_CD = '" + sResCD.Trim() + "' \n";
|
|
sQuery += " , RES_MSG = N'" + sResMsg.Trim() + "' \n";
|
|
sQuery += " , SDATA = N'" + sSData.Trim() + "' \n";
|
|
sQuery += " , RDATA = N'" + sRData.Trim() + "' \n";
|
|
sQuery += " , SEND_YN = '" + sSendYn + "' \n";
|
|
sQuery += " , UPD_DATE = CONVERT(VARCHAR(8), GETDATE(), 112) + REPLACE(CONVERT(VARCHAR(8), GETDATE(), 114), ':', '') \n";
|
|
sQuery += " WHERE \n";
|
|
sQuery += " CMP_CD = '" + CmUtil.GetDataRowStr(dr, "CMP_CD") + "' \n";
|
|
sQuery += " AND SALE_DT = '" + CmUtil.GetDataRowStr(dr, "SALE_DT")+ "' \n";
|
|
sQuery += " AND STOR_CD = '" + CmUtil.GetDataRowStr(dr, "STOR_CD") + "' \n";
|
|
sQuery += " AND POS_NO = '" + CmUtil.GetDataRowStr(dr, "POS_NO") + "' \n";
|
|
sQuery += " AND TRADE_NO = '" + CmUtil.GetDataRowStr(dr, "TRADE_NO") + "' \n";
|
|
sQuery += " AND IF_DIV = '" + sIFDiv.Trim() + "' \n";
|
|
sQuery += " \n";
|
|
sQuery += " IF @@ROWCOUNT = 0 \n";
|
|
sQuery += " BEGIN \n";
|
|
sQuery += " INSERT INTO POSLOG..LOG_SALE_IF \n";
|
|
sQuery += " (CMP_CD, SALE_DT, STOR_CD, POS_NO, TRADE_NO, IF_DIV, RES_CD, RES_MSG, SDATA, RDATA, SEND_YN, REG_DATE) \n";
|
|
sQuery += " VALUES( \n";
|
|
sQuery += " '" + CmUtil.GetDataRowStr(dr, "CMP_CD") + "' \n";
|
|
sQuery += " , '" + CmUtil.GetDataRowStr(dr, "SALE_DT") + "' \n";
|
|
sQuery += " , '" + CmUtil.GetDataRowStr(dr, "STOR_CD") + "' \n";
|
|
sQuery += " , '" + CmUtil.GetDataRowStr(dr, "POS_NO") + "' \n";
|
|
sQuery += " , '" + CmUtil.GetDataRowStr(dr, "TRADE_NO") + "' \n";
|
|
sQuery += " , '" + sIFDiv.Trim() + "' \n";
|
|
sQuery += " , '" + sResCD.Trim() + "' \n";
|
|
sQuery += " , N'" + sResMsg.Trim() + "' \n";
|
|
sQuery += " , N'" + sSData.Trim() + "' \n";
|
|
sQuery += " , N'" + sRData.Trim() + "' \n";
|
|
sQuery += " , '" + sSendYn.Trim() + "' \n";
|
|
sQuery += " , CONVERT(VARCHAR(8), GETDATE(), 112) + REPLACE(CONVERT(VARCHAR(8), GETDATE(), 114), ':', '') \n";
|
|
sQuery += " ) \n";
|
|
sQuery += " END \n";
|
|
sQuery += "END \n";
|
|
sQuery = sQuery.Replace("\t", " ");
|
|
|
|
iRet = sqlDb.DBExecuteNonQuery(sQuery, CommandType.Text, (System.Data.SqlClient.SqlParameter[])null);
|
|
|
|
if (iRet > 0 )
|
|
{
|
|
sRet = UserCom.RST_OK;
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
UserLog.WriteLogFile(UserCom.LOG_ERROR,
|
|
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
|
|
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
|
|
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
|
|
ex.Message);
|
|
}
|
|
|
|
return sRet;
|
|
}
|
|
#endregion
|
|
|
|
#region 90일 이전 데이터 삭제
|
|
/// <summary>
|
|
/// 90 이전 데이터 삭제
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
private string IFSendDataDelete()
|
|
{
|
|
int iRet = UserCom.NG;
|
|
string sRet = UserCom.RST_ERR;
|
|
string sQuery = string.Empty;
|
|
try
|
|
{
|
|
sQuery = "";
|
|
sQuery += " DELETE POSLOG..LOG_SALE_IF \n";
|
|
sQuery += " WHERE \n";
|
|
sQuery += " CMP_CD = '" + m_cPosStatus.Base.CmpCd + "' \n";
|
|
sQuery += " AND SALE_DT <= CONVERT(VARCHAR(8), DATEADD(day, -90, GETDATE()), 112) \n";
|
|
sQuery += " AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "' \n";
|
|
sQuery += " AND SEND_YN = '1' \n";
|
|
sQuery = sQuery.Replace("\t", " ");
|
|
|
|
iRet = sqlDb.DBExecuteNonQuery(sQuery, CommandType.Text, (System.Data.SqlClient.SqlParameter[])null);
|
|
|
|
sRet = UserCom.RST_OK;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
UserLog.WriteLogFile(UserCom.LOG_ERROR,
|
|
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
|
|
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
|
|
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
|
|
ex.Message);
|
|
}
|
|
|
|
return sRet;
|
|
}
|
|
#endregion
|
|
|
|
#region 파일 저장
|
|
/// <summary>
|
|
/// 파일 저장
|
|
/// </summary>
|
|
/// <param name="sFullPath"></param>
|
|
/// <param name="sFileName"></param>
|
|
/// <param name="sFileData"></param>
|
|
/// <returns></returns>
|
|
public bool WriteFile(string sFullPath, string sFileName, string sFileData)
|
|
{
|
|
bool bRet = false;
|
|
try
|
|
{
|
|
// 디렉토리 생성
|
|
CmUtil.CreateDirectory(sFullPath);
|
|
|
|
// 파일 저장
|
|
FileStream fs = new FileStream(sFileName, FileMode.Append, FileAccess.Write);
|
|
StreamWriter sw = new StreamWriter(fs, System.Text.Encoding.Default);
|
|
|
|
try
|
|
{
|
|
sw.BaseStream.Seek(0, SeekOrigin.End);
|
|
|
|
sw.WriteLine(sFileData);
|
|
sw.Flush();
|
|
|
|
bRet = true;
|
|
}
|
|
catch
|
|
{
|
|
|
|
}
|
|
finally
|
|
{
|
|
sw.Close();
|
|
fs.Close();
|
|
}
|
|
}
|
|
catch
|
|
{
|
|
return false;
|
|
}
|
|
return bRet;
|
|
}
|
|
#endregion
|
|
|
|
#region xml 소켓통신
|
|
/// <summary>
|
|
/// XMLSendSocket
|
|
/// </summary>
|
|
/// <param name="sHostIp"></param>
|
|
/// <param name="nPort"></param>
|
|
/// <param name="sSendData"></param>
|
|
/// <returns></returns>
|
|
private string XMLSendSocket(String sHostIp, int nPort, String sSendData, ref string sRecvData)
|
|
{
|
|
string sRet = UserCom.RST_ERR;
|
|
|
|
try
|
|
{
|
|
TcpClient client = new TcpClient();
|
|
client.Connect(sHostIp, nPort);
|
|
if (client == null) return sRet;
|
|
|
|
NetworkStream nsStream = client.GetStream();
|
|
|
|
StreamWriter writer = new StreamWriter(nsStream, Encoding.UTF8);
|
|
writer.AutoFlush = false;
|
|
writer.Write(sSendData);
|
|
writer.Flush();
|
|
|
|
StreamReader reader = new StreamReader(nsStream, Encoding.UTF8);
|
|
sRecvData = reader.ReadLine();
|
|
|
|
nsStream.Close();
|
|
|
|
sRet = UserCom.RST_OK;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
UserLog.WriteLogFile(UserCom.LOG_ERROR,
|
|
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
|
|
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
|
|
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
|
|
ex.Message);
|
|
}
|
|
return sRet;
|
|
}
|
|
#endregion
|
|
|
|
#region xml 파싱
|
|
/// <summary>
|
|
/// xml 파싱
|
|
/// </summary>
|
|
/// <param name="sIFDiv"></param>
|
|
/// <param name="sXMLData"></param>
|
|
/// <param name="sSelectNode"></param>
|
|
/// <param name="sResCD"></param>
|
|
/// <param name="sResMsg"></param>
|
|
/// <returns></returns>
|
|
private string XmlParser(string sIFDiv, string sXMLData, string sSelectNode, ref string sResCD, ref string sResMsg)
|
|
{
|
|
string sRet = UserCom.RST_ERR;
|
|
|
|
try
|
|
{
|
|
sResCD = "99";
|
|
sResMsg = "not xml data";
|
|
if (sXMLData.Trim() == "") return sRet;
|
|
|
|
// 파싱
|
|
XmlDocument xmlDoc = new XmlDocument();
|
|
xmlDoc.LoadXml(sXMLData);
|
|
XmlNodeList xnList = xmlDoc.SelectNodes(sSelectNode);
|
|
|
|
foreach (XmlNode xn in xnList)
|
|
{
|
|
if (sIFDiv == ItemConst.TranInterfaceOutside.IF_CHN_05)
|
|
{
|
|
sResCD = xn["code"].InnerText;
|
|
sResMsg = xn["message"].InnerText;
|
|
}
|
|
}
|
|
|
|
sRet = UserCom.RST_OK;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
UserLog.WriteLogFile(UserCom.LOG_ERROR,
|
|
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
|
|
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
|
|
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
|
|
ex.Message);
|
|
}
|
|
|
|
return sRet;
|
|
}
|
|
#endregion
|
|
|
|
#region 처리 거래정보 ini 저장 (왕진활현)
|
|
/// <summary>
|
|
/// 처리정보 ini 저장 (왕진활현)
|
|
/// </summary>
|
|
/// <param name="dr"></param>
|
|
/// <returns></returns>
|
|
private string SavePOSInfoini(DataRow dr)
|
|
{
|
|
string sRet = UserCom.RST_ERR;
|
|
|
|
string sFilePath = @"C:\HOME\IMPORT\";
|
|
string sFileName = "POSINFO.ini";
|
|
|
|
try
|
|
{
|
|
CmUtil.CreateDirectory(sFilePath);
|
|
|
|
WinAPI.WritePrivateProfileString("POSINFO", "StoreCode", m_cPosStatus.Mst.JOIN_STOR_CD, sFilePath + sFileName); // 점포코드
|
|
WinAPI.WritePrivateProfileString("POSINFO", "Tillid", CmUtil.GetDataRowStr(dr, "POS_NO"), sFilePath + sFileName); // POS번호
|
|
WinAPI.WritePrivateProfileString("POSINFO", "ItemCode", m_cPosStatus.Mst.JOIN_ITEM_CD, sFilePath + sFileName); // 상품코드
|
|
WinAPI.WritePrivateProfileString("POSINFO", "PathName", sFilePath, sFilePath + sFileName); // 경로
|
|
WinAPI.WritePrivateProfileString("POSINFO", "FileName", "possalesdata.txt", sFilePath + sFileName); // 상품코드
|
|
|
|
WinAPI.WritePrivateProfileString("DATAINFO", "LASTTXDATE", CmUtil.GetDataRowStr(dr, "SALE_DT"), sFilePath + sFileName); // 거래일자
|
|
WinAPI.WritePrivateProfileString("DATAINFO", "LASTDOCNO", CmUtil.GetDataRowStr(dr, "TRADE_NO"), sFilePath + sFileName); // 최종거래번호
|
|
|
|
// POSINFO.INI 파일을 CapitaInterface.zip 파일로 압축
|
|
bool bRet = CmUtil.ZipFile(sFilePath, sFilePath + "CapitaInterface.zip", "POSINFO.ini");
|
|
|
|
if (bRet == true) sRet = UserCom.RST_OK;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
UserLog.WriteLogFile(UserCom.LOG_ERROR,
|
|
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
|
|
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
|
|
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
|
|
ex.Message);
|
|
}
|
|
return sRet;
|
|
}
|
|
#endregion
|
|
|
|
#region 글로벌 숫자 변환
|
|
/// <summary>
|
|
/// 문자열의 숫자(Int)로 변환
|
|
/// </summary>
|
|
/// <param name="sValue"></param>
|
|
/// <returns></returns>
|
|
public int IntParse(string sValue)
|
|
{
|
|
return (int)DoubleParse(sValue);
|
|
}
|
|
/// <summary>
|
|
/// 문자열의 숫자(Long)로 변환
|
|
/// </summary>
|
|
/// <param name="sValue"></param>
|
|
/// <returns></returns>
|
|
public long LongParse(string sValue)
|
|
{
|
|
return (long)DoubleParse(sValue);
|
|
}
|
|
/// <summary>
|
|
/// 문자열의 숫자(Double)로 변환
|
|
/// </summary>
|
|
/// <param name="sValue"></param>
|
|
/// <returns></returns>
|
|
public double DoubleParse(string sValue)
|
|
{
|
|
double dValue = 0;
|
|
try
|
|
{
|
|
if (sValue.Trim().Length > 0)
|
|
{
|
|
// 화폐 문자열 이면 글로벌 변환 처리
|
|
if (sValue.Trim().Contains(m_cPosStatus.Global.m_stCultureMaster.strGroupingSymbol) == true || sValue.Trim().Contains(m_cPosStatus.Global.m_stCultureMaster.strDecimalSymbol) == true)
|
|
dValue = m_cPosStatus.Global.CurrencyTONumeric(sValue.Trim());
|
|
else
|
|
dValue = double.Parse(sValue.Trim());
|
|
}
|
|
}
|
|
catch { }
|
|
|
|
return dValue;
|
|
}
|
|
#endregion
|
|
}
|
|
}
|